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

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

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

128:                                              ; preds = %14
  %129 = load ptr, ptr %15, align 8, !tbaa !5
  %130 = call i32 @lsame_(ptr noundef %129, ptr noundef @.str.2)
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %134, label %132

132:                                              ; preds = %128
  %133 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %133, align 4, !tbaa !9
  br label %214

134:                                              ; preds = %128, %14
  %135 = load i32, ptr %63, align 4, !tbaa !9
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %143, label %137

137:                                              ; preds = %134
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = call i32 @lsame_(ptr noundef %138, ptr noundef @.str.3)
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %143, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %142, align 4, !tbaa !9
  br label %213

143:                                              ; preds = %137, %134
  %144 = load ptr, ptr %17, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp slt i32 %145, 0
  br i1 %146, label %147, label %149

147:                                              ; preds = %143
  %148 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %148, align 4, !tbaa !9
  br label %212

149:                                              ; preds = %143
  %150 = load ptr, ptr %18, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp slt i32 %151, 0
  br i1 %152, label %153, label %155

153:                                              ; preds = %149
  %154 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %154, align 4, !tbaa !9
  br label %211

155:                                              ; preds = %149
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = icmp slt i32 %157, 0
  br i1 %158, label %165, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %19, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp sgt i32 %161, %163
  br i1 %164, label %165, label %167

165:                                              ; preds = %159, %155
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %166, align 4, !tbaa !9
  br label %210

167:                                              ; preds = %159
  %168 = load ptr, ptr %21, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = add nsw i32 %171, 1
  %173 = icmp slt i32 %169, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %167
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %175, align 4, !tbaa !9
  br label %209

176:                                              ; preds = %167
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = add nsw i32 %180, 1
  %182 = icmp slt i32 %178, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %176
  %184 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %184, align 4, !tbaa !9
  br label %208

185:                                              ; preds = %176
  %186 = load ptr, ptr %25, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = icmp slt i32 %187, 1
  br i1 %188, label %205, label %189

189:                                              ; preds = %185
  %190 = load i32, ptr %67, align 4, !tbaa !9
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %192, label %207

192:                                              ; preds = %189
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = load ptr, ptr %17, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = icmp sge i32 1, %196
  br i1 %197, label %198, label %199

198:                                              ; preds = %192
  br label %202

199:                                              ; preds = %192
  %200 = load ptr, ptr %17, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %199, %198
  %203 = phi i32 [ 1, %198 ], [ %201, %199 ]
  %204 = icmp slt i32 %194, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %202, %185
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %206, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %205, %202, %189
  br label %208

208:                                              ; preds = %207, %183
  br label %209

209:                                              ; preds = %208, %174
  br label %210

210:                                              ; preds = %209, %165
  br label %211

211:                                              ; preds = %210, %153
  br label %212

212:                                              ; preds = %211, %147
  br label %213

213:                                              ; preds = %212, %141
  br label %214

214:                                              ; preds = %213, %132
  %215 = load ptr, ptr %28, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %218, label %223

218:                                              ; preds = %214
  %219 = load ptr, ptr %28, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = sub nsw i32 0, %220
  store i32 %221, ptr %35, align 4, !tbaa !9
  %222 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %35, i32 noundef 6)
  store i32 1, ptr %80, align 4
  br label %11061

223:                                              ; preds = %214
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp eq i32 %225, 0
  br i1 %226, label %227, label %228

227:                                              ; preds = %223
  store i32 1, ptr %80, align 4
  br label %11061

228:                                              ; preds = %223
  %229 = load ptr, ptr %21, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = load i32, ptr %72, align 4, !tbaa !9
  %232 = mul nsw i32 %230, %231
  store i32 %232, ptr %54, align 4, !tbaa !9
  %233 = load i32, ptr %67, align 4, !tbaa !9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %243

235:                                              ; preds = %228
  %236 = load ptr, ptr %17, align 8, !tbaa !5
  %237 = load ptr, ptr %17, align 8, !tbaa !5
  %238 = load ptr, ptr %24, align 8, !tbaa !5
  %239 = load i32, ptr %34, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.doublecomplex, ptr %238, i64 %240
  %242 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.5, ptr noundef %236, ptr noundef %237, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %241, ptr noundef %242)
  br label %243

243:                                              ; preds = %235, %228
  %244 = load ptr, ptr %17, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = add nsw i32 %245, %247
  %249 = sdiv i32 %248, 2
  store i32 %249, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  %250 = load ptr, ptr %17, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %55, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %5610, %306, %243
  %254 = load i32, ptr %71, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %308

256:                                              ; preds = %253
  %257 = load i32, ptr %55, align 4, !tbaa !9
  %258 = add nsw i32 %257, -1
  store i32 %258, ptr %55, align 4, !tbaa !9
  %259 = load ptr, ptr %19, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  store i32 %260, ptr %35, align 4, !tbaa !9
  %261 = load i32, ptr %55, align 4, !tbaa !9
  %262 = sub nsw i32 %261, 1
  store i32 %262, ptr %36, align 4, !tbaa !9
  %263 = load i32, ptr %35, align 4, !tbaa !9
  %264 = load i32, ptr %36, align 4, !tbaa !9
  %265 = icmp sle i32 %263, %264
  br i1 %265, label %266, label %268

266:                                              ; preds = %256
  %267 = load i32, ptr %35, align 4, !tbaa !9
  br label %270

268:                                              ; preds = %256
  %269 = load i32, ptr %36, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %268, %266
  %271 = phi i32 [ %267, %266 ], [ %269, %268 ]
  store i32 %271, ptr %78, align 4, !tbaa !9
  %272 = load i32, ptr %55, align 4, !tbaa !9
  %273 = sub nsw i32 %272, 1
  store i32 %273, ptr %61, align 4, !tbaa !9
  %274 = load ptr, ptr %17, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  store i32 %275, ptr %35, align 4, !tbaa !9
  %276 = load i32, ptr %55, align 4, !tbaa !9
  %277 = load ptr, ptr %18, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = add nsw i32 %276, %278
  store i32 %279, ptr %36, align 4, !tbaa !9
  %280 = load i32, ptr %35, align 4, !tbaa !9
  %281 = load i32, ptr %36, align 4, !tbaa !9
  %282 = icmp sle i32 %280, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %270
  %284 = load i32, ptr %35, align 4, !tbaa !9
  br label %287

285:                                              ; preds = %270
  %286 = load i32, ptr %36, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %285, %283
  %288 = phi i32 [ %284, %283 ], [ %286, %285 ]
  store i32 %288, ptr %62, align 4, !tbaa !9
  %289 = load i32, ptr %55, align 4, !tbaa !9
  %290 = load i32, ptr %78, align 4, !tbaa !9
  %291 = sub nsw i32 %289, %290
  %292 = load i32, ptr %72, align 4, !tbaa !9
  %293 = add nsw i32 %291, %292
  store i32 %293, ptr %64, align 4, !tbaa !9
  %294 = load i32, ptr %55, align 4, !tbaa !9
  %295 = load i32, ptr %59, align 4, !tbaa !9
  %296 = add nsw i32 %295, 1
  %297 = icmp slt i32 %294, %296
  br i1 %297, label %298, label %307

298:                                              ; preds = %287
  store i32 0, ptr %71, align 4, !tbaa !9
  %299 = load i32, ptr %55, align 4, !tbaa !9
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %55, align 4, !tbaa !9
  %301 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %301, ptr %61, align 4, !tbaa !9
  %302 = load ptr, ptr %18, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %306

305:                                              ; preds = %298
  br label %5611

306:                                              ; preds = %298
  br label %253

307:                                              ; preds = %287
  br label %320

308:                                              ; preds = %253
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load i32, ptr %55, align 4, !tbaa !9
  %312 = add nsw i32 %311, %310
  store i32 %312, ptr %55, align 4, !tbaa !9
  %313 = load i32, ptr %55, align 4, !tbaa !9
  %314 = load ptr, ptr %17, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = sub nsw i32 %315, 1
  %317 = icmp sgt i32 %313, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %308
  br label %5611

319:                                              ; preds = %308
  br label %320

320:                                              ; preds = %319, %307
  %321 = load i32, ptr %63, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %2979

323:                                              ; preds = %320
  %324 = load i32, ptr %71, align 4, !tbaa !9
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %326, label %1213

326:                                              ; preds = %323
  %327 = load i32, ptr %73, align 4, !tbaa !9
  %328 = load i32, ptr %55, align 4, !tbaa !9
  %329 = load i32, ptr %31, align 4, !tbaa !9
  %330 = mul nsw i32 %328, %329
  %331 = add nsw i32 %327, %330
  store i32 %331, ptr %35, align 4, !tbaa !9
  %332 = load ptr, ptr %22, align 8, !tbaa !5
  %333 = load i32, ptr %35, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %332, i64 %334
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %335, i32 0, i32 0
  %337 = load double, ptr %336, align 8, !tbaa !11
  store double %337, ptr %77, align 8, !tbaa !14
  %338 = load i32, ptr %72, align 4, !tbaa !9
  %339 = load i32, ptr %55, align 4, !tbaa !9
  %340 = load i32, ptr %29, align 4, !tbaa !9
  %341 = mul nsw i32 %339, %340
  %342 = add nsw i32 %338, %341
  store i32 %342, ptr %35, align 4, !tbaa !9
  %343 = load i32, ptr %72, align 4, !tbaa !9
  %344 = load i32, ptr %55, align 4, !tbaa !9
  %345 = load i32, ptr %29, align 4, !tbaa !9
  %346 = mul nsw i32 %344, %345
  %347 = add nsw i32 %343, %346
  store i32 %347, ptr %36, align 4, !tbaa !9
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load i32, ptr %36, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %348, i64 %350
  %352 = getelementptr inbounds %struct.doublecomplex, ptr %351, i32 0, i32 0
  %353 = load double, ptr %352, align 8, !tbaa !11
  %354 = load double, ptr %77, align 8, !tbaa !14
  %355 = fdiv double %353, %354
  %356 = load double, ptr %77, align 8, !tbaa !14
  %357 = fdiv double %355, %356
  store double %357, ptr %43, align 8, !tbaa !14
  %358 = load double, ptr %43, align 8, !tbaa !14
  %359 = load ptr, ptr %20, align 8, !tbaa !5
  %360 = load i32, ptr %35, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds %struct.doublecomplex, ptr %359, i64 %361
  %363 = getelementptr inbounds %struct.doublecomplex, ptr %362, i32 0, i32 0
  store double %358, ptr %363, align 8, !tbaa !11
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = load i32, ptr %35, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds %struct.doublecomplex, ptr %364, i64 %366
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %367, i32 0, i32 1
  store double 0.000000e+00, ptr %368, align 8, !tbaa !15
  %369 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %369, ptr %35, align 4, !tbaa !9
  %370 = load i32, ptr %55, align 4, !tbaa !9
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr %56, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %427, %326
  %373 = load i32, ptr %56, align 4, !tbaa !9
  %374 = load i32, ptr %35, align 4, !tbaa !9
  %375 = icmp sle i32 %373, %374
  br i1 %375, label %376, label %430

376:                                              ; preds = %372
  %377 = load i32, ptr %55, align 4, !tbaa !9
  %378 = load i32, ptr %56, align 4, !tbaa !9
  %379 = sub nsw i32 %377, %378
  %380 = load i32, ptr %72, align 4, !tbaa !9
  %381 = add nsw i32 %379, %380
  %382 = load i32, ptr %56, align 4, !tbaa !9
  %383 = load i32, ptr %29, align 4, !tbaa !9
  %384 = mul nsw i32 %382, %383
  %385 = add nsw i32 %381, %384
  store i32 %385, ptr %36, align 4, !tbaa !9
  %386 = load i32, ptr %55, align 4, !tbaa !9
  %387 = load i32, ptr %56, align 4, !tbaa !9
  %388 = sub nsw i32 %386, %387
  %389 = load i32, ptr %72, align 4, !tbaa !9
  %390 = add nsw i32 %388, %389
  %391 = load i32, ptr %56, align 4, !tbaa !9
  %392 = load i32, ptr %29, align 4, !tbaa !9
  %393 = mul nsw i32 %391, %392
  %394 = add nsw i32 %390, %393
  store i32 %394, ptr %37, align 4, !tbaa !9
  %395 = load ptr, ptr %20, align 8, !tbaa !5
  %396 = load i32, ptr %37, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.doublecomplex, ptr %395, i64 %397
  %399 = getelementptr inbounds %struct.doublecomplex, ptr %398, i32 0, i32 0
  %400 = load double, ptr %399, align 8, !tbaa !11
  %401 = load double, ptr %77, align 8, !tbaa !14
  %402 = fdiv double %400, %401
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %402, ptr %403, align 8, !tbaa !11
  %404 = load ptr, ptr %20, align 8, !tbaa !5
  %405 = load i32, ptr %37, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds %struct.doublecomplex, ptr %404, i64 %406
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %407, i32 0, i32 1
  %409 = load double, ptr %408, align 8, !tbaa !15
  %410 = load double, ptr %77, align 8, !tbaa !14
  %411 = fdiv double %409, %410
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %411, ptr %412, align 8, !tbaa !15
  %413 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %414 = load double, ptr %413, align 8, !tbaa !11
  %415 = load ptr, ptr %20, align 8, !tbaa !5
  %416 = load i32, ptr %36, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %415, i64 %417
  %419 = getelementptr inbounds %struct.doublecomplex, ptr %418, i32 0, i32 0
  store double %414, ptr %419, align 8, !tbaa !11
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %421 = load double, ptr %420, align 8, !tbaa !15
  %422 = load ptr, ptr %20, align 8, !tbaa !5
  %423 = load i32, ptr %36, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.doublecomplex, ptr %425, i32 0, i32 1
  store double %421, ptr %426, align 8, !tbaa !15
  br label %427

427:                                              ; preds = %376
  %428 = load i32, ptr %56, align 4, !tbaa !9
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %56, align 4, !tbaa !9
  br label %372, !llvm.loop !16

430:                                              ; preds = %372
  store i32 1, ptr %35, align 4, !tbaa !9
  %431 = load i32, ptr %55, align 4, !tbaa !9
  %432 = load ptr, ptr %18, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = sub nsw i32 %431, %433
  store i32 %434, ptr %36, align 4, !tbaa !9
  %435 = load i32, ptr %55, align 4, !tbaa !9
  %436 = sub nsw i32 %435, 1
  store i32 %436, ptr %37, align 4, !tbaa !9
  %437 = load i32, ptr %35, align 4, !tbaa !9
  %438 = load i32, ptr %36, align 4, !tbaa !9
  %439 = icmp sge i32 %437, %438
  br i1 %439, label %440, label %442

440:                                              ; preds = %430
  %441 = load i32, ptr %35, align 4, !tbaa !9
  br label %444

442:                                              ; preds = %430
  %443 = load i32, ptr %36, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %442, %440
  %445 = phi i32 [ %441, %440 ], [ %443, %442 ]
  store i32 %445, ptr %56, align 4, !tbaa !9
  br label %446

446:                                              ; preds = %501, %444
  %447 = load i32, ptr %56, align 4, !tbaa !9
  %448 = load i32, ptr %37, align 4, !tbaa !9
  %449 = icmp sle i32 %447, %448
  br i1 %449, label %450, label %504

450:                                              ; preds = %446
  %451 = load i32, ptr %56, align 4, !tbaa !9
  %452 = load i32, ptr %55, align 4, !tbaa !9
  %453 = sub nsw i32 %451, %452
  %454 = load i32, ptr %72, align 4, !tbaa !9
  %455 = add nsw i32 %453, %454
  %456 = load i32, ptr %55, align 4, !tbaa !9
  %457 = load i32, ptr %29, align 4, !tbaa !9
  %458 = mul nsw i32 %456, %457
  %459 = add nsw i32 %455, %458
  store i32 %459, ptr %35, align 4, !tbaa !9
  %460 = load i32, ptr %56, align 4, !tbaa !9
  %461 = load i32, ptr %55, align 4, !tbaa !9
  %462 = sub nsw i32 %460, %461
  %463 = load i32, ptr %72, align 4, !tbaa !9
  %464 = add nsw i32 %462, %463
  %465 = load i32, ptr %55, align 4, !tbaa !9
  %466 = load i32, ptr %29, align 4, !tbaa !9
  %467 = mul nsw i32 %465, %466
  %468 = add nsw i32 %464, %467
  store i32 %468, ptr %36, align 4, !tbaa !9
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = load i32, ptr %36, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %469, i64 %471
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %472, i32 0, i32 0
  %474 = load double, ptr %473, align 8, !tbaa !11
  %475 = load double, ptr %77, align 8, !tbaa !14
  %476 = fdiv double %474, %475
  %477 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %476, ptr %477, align 8, !tbaa !11
  %478 = load ptr, ptr %20, align 8, !tbaa !5
  %479 = load i32, ptr %36, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds %struct.doublecomplex, ptr %478, i64 %480
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %481, i32 0, i32 1
  %483 = load double, ptr %482, align 8, !tbaa !15
  %484 = load double, ptr %77, align 8, !tbaa !14
  %485 = fdiv double %483, %484
  %486 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %485, ptr %486, align 8, !tbaa !15
  %487 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %488 = load double, ptr %487, align 8, !tbaa !11
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = load i32, ptr %35, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %489, i64 %491
  %493 = getelementptr inbounds %struct.doublecomplex, ptr %492, i32 0, i32 0
  store double %488, ptr %493, align 8, !tbaa !11
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %495 = load double, ptr %494, align 8, !tbaa !15
  %496 = load ptr, ptr %20, align 8, !tbaa !5
  %497 = load i32, ptr %35, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %496, i64 %498
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %499, i32 0, i32 1
  store double %495, ptr %500, align 8, !tbaa !15
  br label %501

501:                                              ; preds = %450
  %502 = load i32, ptr %56, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %56, align 4, !tbaa !9
  br label %446, !llvm.loop !18

504:                                              ; preds = %446
  %505 = load i32, ptr %55, align 4, !tbaa !9
  %506 = sub nsw i32 %505, 1
  store i32 %506, ptr %37, align 4, !tbaa !9
  %507 = load i32, ptr %55, align 4, !tbaa !9
  %508 = load i32, ptr %78, align 4, !tbaa !9
  %509 = sub nsw i32 %507, %508
  store i32 %509, ptr %57, align 4, !tbaa !9
  br label %510

510:                                              ; preds = %963, %504
  %511 = load i32, ptr %57, align 4, !tbaa !9
  %512 = load i32, ptr %37, align 4, !tbaa !9
  %513 = icmp sle i32 %511, %512
  br i1 %513, label %514, label %966

514:                                              ; preds = %510
  %515 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %515, ptr %35, align 4, !tbaa !9
  %516 = load i32, ptr %55, align 4, !tbaa !9
  %517 = load i32, ptr %78, align 4, !tbaa !9
  %518 = sub nsw i32 %516, %517
  store i32 %518, ptr %56, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %814, %514
  %520 = load i32, ptr %56, align 4, !tbaa !9
  %521 = load i32, ptr %35, align 4, !tbaa !9
  %522 = icmp sle i32 %520, %521
  br i1 %522, label %523, label %817

523:                                              ; preds = %519
  %524 = load i32, ptr %56, align 4, !tbaa !9
  %525 = load i32, ptr %57, align 4, !tbaa !9
  %526 = sub nsw i32 %524, %525
  %527 = load i32, ptr %72, align 4, !tbaa !9
  %528 = add nsw i32 %526, %527
  %529 = load i32, ptr %57, align 4, !tbaa !9
  %530 = load i32, ptr %29, align 4, !tbaa !9
  %531 = mul nsw i32 %529, %530
  %532 = add nsw i32 %528, %531
  store i32 %532, ptr %36, align 4, !tbaa !9
  %533 = load i32, ptr %56, align 4, !tbaa !9
  %534 = load i32, ptr %57, align 4, !tbaa !9
  %535 = sub nsw i32 %533, %534
  %536 = load i32, ptr %72, align 4, !tbaa !9
  %537 = add nsw i32 %535, %536
  %538 = load i32, ptr %57, align 4, !tbaa !9
  %539 = load i32, ptr %29, align 4, !tbaa !9
  %540 = mul nsw i32 %538, %539
  %541 = add nsw i32 %537, %540
  store i32 %541, ptr %38, align 4, !tbaa !9
  %542 = load i32, ptr %56, align 4, !tbaa !9
  %543 = load i32, ptr %55, align 4, !tbaa !9
  %544 = sub nsw i32 %542, %543
  %545 = load i32, ptr %73, align 4, !tbaa !9
  %546 = add nsw i32 %544, %545
  %547 = load i32, ptr %55, align 4, !tbaa !9
  %548 = load i32, ptr %31, align 4, !tbaa !9
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %546, %549
  store i32 %550, ptr %39, align 4, !tbaa !9
  %551 = load ptr, ptr %20, align 8, !tbaa !5
  %552 = load i32, ptr %57, align 4, !tbaa !9
  %553 = load i32, ptr %55, align 4, !tbaa !9
  %554 = sub nsw i32 %552, %553
  %555 = load i32, ptr %72, align 4, !tbaa !9
  %556 = add nsw i32 %554, %555
  %557 = load i32, ptr %55, align 4, !tbaa !9
  %558 = load i32, ptr %29, align 4, !tbaa !9
  %559 = mul nsw i32 %557, %558
  %560 = add nsw i32 %556, %559
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %551, i64 %561
  %563 = call { double, double } @Cd(ptr noundef %562)
  %564 = extractvalue { double, double } %563, 0
  %565 = extractvalue { double, double } %563, 1
  %566 = fneg double %565
  %567 = call ptr @_pCd(ptr noundef %48)
  %568 = getelementptr inbounds { double, double }, ptr %567, i32 0, i32 0
  %569 = getelementptr inbounds { double, double }, ptr %567, i32 0, i32 1
  store double %564, ptr %568, align 8
  store double %566, ptr %569, align 8
  %570 = load ptr, ptr %22, align 8, !tbaa !5
  %571 = load i32, ptr %39, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.doublecomplex, ptr %573, i32 0, i32 0
  %575 = load double, ptr %574, align 8, !tbaa !11
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %577 = load double, ptr %576, align 8, !tbaa !11
  %578 = load ptr, ptr %22, align 8, !tbaa !5
  %579 = load i32, ptr %39, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %578, i64 %580
  %582 = getelementptr inbounds %struct.doublecomplex, ptr %581, i32 0, i32 1
  %583 = load double, ptr %582, align 8, !tbaa !15
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %585 = load double, ptr %584, align 8, !tbaa !15
  %586 = fmul double %583, %585
  %587 = fneg double %586
  %588 = call double @llvm.fmuladd.f64(double %575, double %577, double %587)
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %588, ptr %589, align 8, !tbaa !11
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = load i32, ptr %39, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %590, i64 %592
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %593, i32 0, i32 0
  %595 = load double, ptr %594, align 8, !tbaa !11
  %596 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %597 = load double, ptr %596, align 8, !tbaa !15
  %598 = load ptr, ptr %22, align 8, !tbaa !5
  %599 = load i32, ptr %39, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds %struct.doublecomplex, ptr %598, i64 %600
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %601, i32 0, i32 1
  %603 = load double, ptr %602, align 8, !tbaa !15
  %604 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %605 = load double, ptr %604, align 8, !tbaa !11
  %606 = fmul double %603, %605
  %607 = call double @llvm.fmuladd.f64(double %595, double %597, double %606)
  %608 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %607, ptr %608, align 8, !tbaa !15
  %609 = load ptr, ptr %20, align 8, !tbaa !5
  %610 = load i32, ptr %38, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %611
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %612, i32 0, i32 0
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %616 = load double, ptr %615, align 8, !tbaa !11
  %617 = fsub double %614, %616
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %617, ptr %618, align 8, !tbaa !11
  %619 = load ptr, ptr %20, align 8, !tbaa !5
  %620 = load i32, ptr %38, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.doublecomplex, ptr %619, i64 %621
  %623 = getelementptr inbounds %struct.doublecomplex, ptr %622, i32 0, i32 1
  %624 = load double, ptr %623, align 8, !tbaa !15
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %626 = load double, ptr %625, align 8, !tbaa !15
  %627 = fsub double %624, %626
  %628 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %627, ptr %628, align 8, !tbaa !15
  %629 = load ptr, ptr %22, align 8, !tbaa !5
  %630 = load i32, ptr %57, align 4, !tbaa !9
  %631 = load i32, ptr %55, align 4, !tbaa !9
  %632 = sub nsw i32 %630, %631
  %633 = load i32, ptr %73, align 4, !tbaa !9
  %634 = add nsw i32 %632, %633
  %635 = load i32, ptr %55, align 4, !tbaa !9
  %636 = load i32, ptr %31, align 4, !tbaa !9
  %637 = mul nsw i32 %635, %636
  %638 = add nsw i32 %634, %637
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.doublecomplex, ptr %629, i64 %639
  %641 = call { double, double } @Cd(ptr noundef %640)
  %642 = extractvalue { double, double } %641, 0
  %643 = extractvalue { double, double } %641, 1
  %644 = fneg double %643
  %645 = call ptr @_pCd(ptr noundef %50)
  %646 = getelementptr inbounds { double, double }, ptr %645, i32 0, i32 0
  %647 = getelementptr inbounds { double, double }, ptr %645, i32 0, i32 1
  store double %642, ptr %646, align 8
  store double %644, ptr %647, align 8
  %648 = load i32, ptr %56, align 4, !tbaa !9
  %649 = load i32, ptr %55, align 4, !tbaa !9
  %650 = sub nsw i32 %648, %649
  %651 = load i32, ptr %72, align 4, !tbaa !9
  %652 = add nsw i32 %650, %651
  %653 = load i32, ptr %55, align 4, !tbaa !9
  %654 = load i32, ptr %29, align 4, !tbaa !9
  %655 = mul nsw i32 %653, %654
  %656 = add nsw i32 %652, %655
  store i32 %656, ptr %40, align 4, !tbaa !9
  %657 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %658 = load double, ptr %657, align 8, !tbaa !11
  %659 = load ptr, ptr %20, align 8, !tbaa !5
  %660 = load i32, ptr %40, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds %struct.doublecomplex, ptr %659, i64 %661
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %662, i32 0, i32 0
  %664 = load double, ptr %663, align 8, !tbaa !11
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %666 = load double, ptr %665, align 8, !tbaa !15
  %667 = load ptr, ptr %20, align 8, !tbaa !5
  %668 = load i32, ptr %40, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds %struct.doublecomplex, ptr %667, i64 %669
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %670, i32 0, i32 1
  %672 = load double, ptr %671, align 8, !tbaa !15
  %673 = fmul double %666, %672
  %674 = fneg double %673
  %675 = call double @llvm.fmuladd.f64(double %658, double %664, double %674)
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %675, ptr %676, align 8, !tbaa !11
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %678 = load double, ptr %677, align 8, !tbaa !11
  %679 = load ptr, ptr %20, align 8, !tbaa !5
  %680 = load i32, ptr %40, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %681
  %683 = getelementptr inbounds %struct.doublecomplex, ptr %682, i32 0, i32 1
  %684 = load double, ptr %683, align 8, !tbaa !15
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %686 = load double, ptr %685, align 8, !tbaa !15
  %687 = load ptr, ptr %20, align 8, !tbaa !5
  %688 = load i32, ptr %40, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %689
  %691 = getelementptr inbounds %struct.doublecomplex, ptr %690, i32 0, i32 0
  %692 = load double, ptr %691, align 8, !tbaa !11
  %693 = fmul double %686, %692
  %694 = call double @llvm.fmuladd.f64(double %678, double %684, double %693)
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %694, ptr %695, align 8, !tbaa !15
  %696 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %697 = load double, ptr %696, align 8, !tbaa !11
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %699 = load double, ptr %698, align 8, !tbaa !11
  %700 = fsub double %697, %699
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %700, ptr %701, align 8, !tbaa !11
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %703 = load double, ptr %702, align 8, !tbaa !15
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %705 = load double, ptr %704, align 8, !tbaa !15
  %706 = fsub double %703, %705
  %707 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %706, ptr %707, align 8, !tbaa !15
  %708 = load i32, ptr %72, align 4, !tbaa !9
  %709 = load i32, ptr %55, align 4, !tbaa !9
  %710 = load i32, ptr %29, align 4, !tbaa !9
  %711 = mul nsw i32 %709, %710
  %712 = add nsw i32 %708, %711
  store i32 %712, ptr %41, align 4, !tbaa !9
  %713 = load ptr, ptr %20, align 8, !tbaa !5
  %714 = load i32, ptr %41, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %715
  %717 = getelementptr inbounds %struct.doublecomplex, ptr %716, i32 0, i32 0
  %718 = load double, ptr %717, align 8, !tbaa !11
  store double %718, ptr %43, align 8, !tbaa !14
  %719 = load i32, ptr %56, align 4, !tbaa !9
  %720 = load i32, ptr %55, align 4, !tbaa !9
  %721 = sub nsw i32 %719, %720
  %722 = load i32, ptr %73, align 4, !tbaa !9
  %723 = add nsw i32 %721, %722
  %724 = load i32, ptr %55, align 4, !tbaa !9
  %725 = load i32, ptr %31, align 4, !tbaa !9
  %726 = mul nsw i32 %724, %725
  %727 = add nsw i32 %723, %726
  store i32 %727, ptr %42, align 4, !tbaa !9
  %728 = load double, ptr %43, align 8, !tbaa !14
  %729 = load ptr, ptr %22, align 8, !tbaa !5
  %730 = load i32, ptr %42, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %struct.doublecomplex, ptr %729, i64 %731
  %733 = getelementptr inbounds %struct.doublecomplex, ptr %732, i32 0, i32 0
  %734 = load double, ptr %733, align 8, !tbaa !11
  %735 = fmul double %728, %734
  %736 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %735, ptr %736, align 8, !tbaa !11
  %737 = load double, ptr %43, align 8, !tbaa !14
  %738 = load ptr, ptr %22, align 8, !tbaa !5
  %739 = load i32, ptr %42, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %738, i64 %740
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %741, i32 0, i32 1
  %743 = load double, ptr %742, align 8, !tbaa !15
  %744 = fmul double %737, %743
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %744, ptr %745, align 8, !tbaa !15
  %746 = load ptr, ptr %22, align 8, !tbaa !5
  %747 = load i32, ptr %57, align 4, !tbaa !9
  %748 = load i32, ptr %55, align 4, !tbaa !9
  %749 = sub nsw i32 %747, %748
  %750 = load i32, ptr %73, align 4, !tbaa !9
  %751 = add nsw i32 %749, %750
  %752 = load i32, ptr %55, align 4, !tbaa !9
  %753 = load i32, ptr %31, align 4, !tbaa !9
  %754 = mul nsw i32 %752, %753
  %755 = add nsw i32 %751, %754
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds %struct.doublecomplex, ptr %746, i64 %756
  %758 = call { double, double } @Cd(ptr noundef %757)
  %759 = extractvalue { double, double } %758, 0
  %760 = extractvalue { double, double } %758, 1
  %761 = fneg double %760
  %762 = call ptr @_pCd(ptr noundef %53)
  %763 = getelementptr inbounds { double, double }, ptr %762, i32 0, i32 0
  %764 = getelementptr inbounds { double, double }, ptr %762, i32 0, i32 1
  store double %759, ptr %763, align 8
  store double %761, ptr %764, align 8
  %765 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %766 = load double, ptr %765, align 8, !tbaa !11
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %768 = load double, ptr %767, align 8, !tbaa !11
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %770 = load double, ptr %769, align 8, !tbaa !15
  %771 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %772 = load double, ptr %771, align 8, !tbaa !15
  %773 = fmul double %770, %772
  %774 = fneg double %773
  %775 = call double @llvm.fmuladd.f64(double %766, double %768, double %774)
  %776 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %775, ptr %776, align 8, !tbaa !11
  %777 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %778 = load double, ptr %777, align 8, !tbaa !11
  %779 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %780 = load double, ptr %779, align 8, !tbaa !15
  %781 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %782 = load double, ptr %781, align 8, !tbaa !15
  %783 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %784 = load double, ptr %783, align 8, !tbaa !11
  %785 = fmul double %782, %784
  %786 = call double @llvm.fmuladd.f64(double %778, double %780, double %785)
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %786, ptr %787, align 8, !tbaa !15
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = fadd double %789, %791
  %793 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %792, ptr %793, align 8, !tbaa !11
  %794 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %795 = load double, ptr %794, align 8, !tbaa !15
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %797 = load double, ptr %796, align 8, !tbaa !15
  %798 = fadd double %795, %797
  %799 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %798, ptr %799, align 8, !tbaa !15
  %800 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %801 = load double, ptr %800, align 8, !tbaa !11
  %802 = load ptr, ptr %20, align 8, !tbaa !5
  %803 = load i32, ptr %36, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds %struct.doublecomplex, ptr %802, i64 %804
  %806 = getelementptr inbounds %struct.doublecomplex, ptr %805, i32 0, i32 0
  store double %801, ptr %806, align 8, !tbaa !11
  %807 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %808 = load double, ptr %807, align 8, !tbaa !15
  %809 = load ptr, ptr %20, align 8, !tbaa !5
  %810 = load i32, ptr %36, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct.doublecomplex, ptr %809, i64 %811
  %813 = getelementptr inbounds %struct.doublecomplex, ptr %812, i32 0, i32 1
  store double %808, ptr %813, align 8, !tbaa !15
  br label %814

814:                                              ; preds = %523
  %815 = load i32, ptr %56, align 4, !tbaa !9
  %816 = add nsw i32 %815, 1
  store i32 %816, ptr %56, align 4, !tbaa !9
  br label %519, !llvm.loop !19

817:                                              ; preds = %519
  store i32 1, ptr %35, align 4, !tbaa !9
  %818 = load i32, ptr %55, align 4, !tbaa !9
  %819 = load ptr, ptr %18, align 8, !tbaa !5
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = sub nsw i32 %818, %820
  store i32 %821, ptr %36, align 4, !tbaa !9
  %822 = load i32, ptr %55, align 4, !tbaa !9
  %823 = load i32, ptr %78, align 4, !tbaa !9
  %824 = sub nsw i32 %822, %823
  %825 = sub nsw i32 %824, 1
  store i32 %825, ptr %38, align 4, !tbaa !9
  %826 = load i32, ptr %35, align 4, !tbaa !9
  %827 = load i32, ptr %36, align 4, !tbaa !9
  %828 = icmp sge i32 %826, %827
  br i1 %828, label %829, label %831

829:                                              ; preds = %817
  %830 = load i32, ptr %35, align 4, !tbaa !9
  br label %833

831:                                              ; preds = %817
  %832 = load i32, ptr %36, align 4, !tbaa !9
  br label %833

833:                                              ; preds = %831, %829
  %834 = phi i32 [ %830, %829 ], [ %832, %831 ]
  store i32 %834, ptr %56, align 4, !tbaa !9
  br label %835

835:                                              ; preds = %959, %833
  %836 = load i32, ptr %56, align 4, !tbaa !9
  %837 = load i32, ptr %38, align 4, !tbaa !9
  %838 = icmp sle i32 %836, %837
  br i1 %838, label %839, label %962

839:                                              ; preds = %835
  %840 = load i32, ptr %56, align 4, !tbaa !9
  %841 = load i32, ptr %57, align 4, !tbaa !9
  %842 = sub nsw i32 %840, %841
  %843 = load i32, ptr %72, align 4, !tbaa !9
  %844 = add nsw i32 %842, %843
  %845 = load i32, ptr %57, align 4, !tbaa !9
  %846 = load i32, ptr %29, align 4, !tbaa !9
  %847 = mul nsw i32 %845, %846
  %848 = add nsw i32 %844, %847
  store i32 %848, ptr %35, align 4, !tbaa !9
  %849 = load i32, ptr %56, align 4, !tbaa !9
  %850 = load i32, ptr %57, align 4, !tbaa !9
  %851 = sub nsw i32 %849, %850
  %852 = load i32, ptr %72, align 4, !tbaa !9
  %853 = add nsw i32 %851, %852
  %854 = load i32, ptr %57, align 4, !tbaa !9
  %855 = load i32, ptr %29, align 4, !tbaa !9
  %856 = mul nsw i32 %854, %855
  %857 = add nsw i32 %853, %856
  store i32 %857, ptr %36, align 4, !tbaa !9
  %858 = load ptr, ptr %22, align 8, !tbaa !5
  %859 = load i32, ptr %57, align 4, !tbaa !9
  %860 = load i32, ptr %55, align 4, !tbaa !9
  %861 = sub nsw i32 %859, %860
  %862 = load i32, ptr %73, align 4, !tbaa !9
  %863 = add nsw i32 %861, %862
  %864 = load i32, ptr %55, align 4, !tbaa !9
  %865 = load i32, ptr %31, align 4, !tbaa !9
  %866 = mul nsw i32 %864, %865
  %867 = add nsw i32 %863, %866
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %858, i64 %868
  %870 = call { double, double } @Cd(ptr noundef %869)
  %871 = extractvalue { double, double } %870, 0
  %872 = extractvalue { double, double } %870, 1
  %873 = fneg double %872
  %874 = call ptr @_pCd(ptr noundef %46)
  %875 = getelementptr inbounds { double, double }, ptr %874, i32 0, i32 0
  %876 = getelementptr inbounds { double, double }, ptr %874, i32 0, i32 1
  store double %871, ptr %875, align 8
  store double %873, ptr %876, align 8
  %877 = load i32, ptr %56, align 4, !tbaa !9
  %878 = load i32, ptr %55, align 4, !tbaa !9
  %879 = sub nsw i32 %877, %878
  %880 = load i32, ptr %72, align 4, !tbaa !9
  %881 = add nsw i32 %879, %880
  %882 = load i32, ptr %55, align 4, !tbaa !9
  %883 = load i32, ptr %29, align 4, !tbaa !9
  %884 = mul nsw i32 %882, %883
  %885 = add nsw i32 %881, %884
  store i32 %885, ptr %39, align 4, !tbaa !9
  %886 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %887 = load double, ptr %886, align 8, !tbaa !11
  %888 = load ptr, ptr %20, align 8, !tbaa !5
  %889 = load i32, ptr %39, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %888, i64 %890
  %892 = getelementptr inbounds %struct.doublecomplex, ptr %891, i32 0, i32 0
  %893 = load double, ptr %892, align 8, !tbaa !11
  %894 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %895 = load double, ptr %894, align 8, !tbaa !15
  %896 = load ptr, ptr %20, align 8, !tbaa !5
  %897 = load i32, ptr %39, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %896, i64 %898
  %900 = getelementptr inbounds %struct.doublecomplex, ptr %899, i32 0, i32 1
  %901 = load double, ptr %900, align 8, !tbaa !15
  %902 = fmul double %895, %901
  %903 = fneg double %902
  %904 = call double @llvm.fmuladd.f64(double %887, double %893, double %903)
  %905 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %904, ptr %905, align 8, !tbaa !11
  %906 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %907 = load double, ptr %906, align 8, !tbaa !11
  %908 = load ptr, ptr %20, align 8, !tbaa !5
  %909 = load i32, ptr %39, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %908, i64 %910
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %911, i32 0, i32 1
  %913 = load double, ptr %912, align 8, !tbaa !15
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %915 = load double, ptr %914, align 8, !tbaa !15
  %916 = load ptr, ptr %20, align 8, !tbaa !5
  %917 = load i32, ptr %39, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.doublecomplex, ptr %916, i64 %918
  %920 = getelementptr inbounds %struct.doublecomplex, ptr %919, i32 0, i32 0
  %921 = load double, ptr %920, align 8, !tbaa !11
  %922 = fmul double %915, %921
  %923 = call double @llvm.fmuladd.f64(double %907, double %913, double %922)
  %924 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %923, ptr %924, align 8, !tbaa !15
  %925 = load ptr, ptr %20, align 8, !tbaa !5
  %926 = load i32, ptr %36, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %925, i64 %927
  %929 = getelementptr inbounds %struct.doublecomplex, ptr %928, i32 0, i32 0
  %930 = load double, ptr %929, align 8, !tbaa !11
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %932 = load double, ptr %931, align 8, !tbaa !11
  %933 = fsub double %930, %932
  %934 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %933, ptr %934, align 8, !tbaa !11
  %935 = load ptr, ptr %20, align 8, !tbaa !5
  %936 = load i32, ptr %36, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %935, i64 %937
  %939 = getelementptr inbounds %struct.doublecomplex, ptr %938, i32 0, i32 1
  %940 = load double, ptr %939, align 8, !tbaa !15
  %941 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %942 = load double, ptr %941, align 8, !tbaa !15
  %943 = fsub double %940, %942
  %944 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %943, ptr %944, align 8, !tbaa !15
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = load ptr, ptr %20, align 8, !tbaa !5
  %948 = load i32, ptr %35, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds %struct.doublecomplex, ptr %947, i64 %949
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %950, i32 0, i32 0
  store double %946, ptr %951, align 8, !tbaa !11
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %953 = load double, ptr %952, align 8, !tbaa !15
  %954 = load ptr, ptr %20, align 8, !tbaa !5
  %955 = load i32, ptr %35, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds %struct.doublecomplex, ptr %954, i64 %956
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %957, i32 0, i32 1
  store double %953, ptr %958, align 8, !tbaa !15
  br label %959

959:                                              ; preds = %839
  %960 = load i32, ptr %56, align 4, !tbaa !9
  %961 = add nsw i32 %960, 1
  store i32 %961, ptr %56, align 4, !tbaa !9
  br label %835, !llvm.loop !20

962:                                              ; preds = %835
  br label %963

963:                                              ; preds = %962
  %964 = load i32, ptr %57, align 4, !tbaa !9
  %965 = add nsw i32 %964, 1
  store i32 %965, ptr %57, align 4, !tbaa !9
  br label %510, !llvm.loop !21

966:                                              ; preds = %510
  %967 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %967, ptr %37, align 4, !tbaa !9
  %968 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %968, ptr %56, align 4, !tbaa !9
  br label %969

969:                                              ; preds = %1126, %966
  %970 = load i32, ptr %56, align 4, !tbaa !9
  %971 = load i32, ptr %37, align 4, !tbaa !9
  %972 = icmp sle i32 %970, %971
  br i1 %972, label %973, label %1129

973:                                              ; preds = %969
  %974 = load i32, ptr %56, align 4, !tbaa !9
  %975 = load ptr, ptr %18, align 8, !tbaa !5
  %976 = load i32, ptr %975, align 4, !tbaa !9
  %977 = sub nsw i32 %974, %976
  store i32 %977, ptr %38, align 4, !tbaa !9
  %978 = load i32, ptr %55, align 4, !tbaa !9
  %979 = load i32, ptr %78, align 4, !tbaa !9
  %980 = sub nsw i32 %978, %979
  store i32 %980, ptr %35, align 4, !tbaa !9
  %981 = load i32, ptr %55, align 4, !tbaa !9
  %982 = sub nsw i32 %981, 1
  store i32 %982, ptr %36, align 4, !tbaa !9
  %983 = load i32, ptr %38, align 4, !tbaa !9
  %984 = load i32, ptr %35, align 4, !tbaa !9
  %985 = icmp sge i32 %983, %984
  br i1 %985, label %986, label %988

986:                                              ; preds = %973
  %987 = load i32, ptr %38, align 4, !tbaa !9
  br label %990

988:                                              ; preds = %973
  %989 = load i32, ptr %35, align 4, !tbaa !9
  br label %990

990:                                              ; preds = %988, %986
  %991 = phi i32 [ %987, %986 ], [ %989, %988 ]
  store i32 %991, ptr %57, align 4, !tbaa !9
  br label %992

992:                                              ; preds = %1122, %990
  %993 = load i32, ptr %57, align 4, !tbaa !9
  %994 = load i32, ptr %36, align 4, !tbaa !9
  %995 = icmp sle i32 %993, %994
  br i1 %995, label %996, label %1125

996:                                              ; preds = %992
  %997 = load i32, ptr %57, align 4, !tbaa !9
  %998 = load i32, ptr %56, align 4, !tbaa !9
  %999 = sub nsw i32 %997, %998
  %1000 = load i32, ptr %72, align 4, !tbaa !9
  %1001 = add nsw i32 %999, %1000
  %1002 = load i32, ptr %56, align 4, !tbaa !9
  %1003 = load i32, ptr %29, align 4, !tbaa !9
  %1004 = mul nsw i32 %1002, %1003
  %1005 = add nsw i32 %1001, %1004
  store i32 %1005, ptr %38, align 4, !tbaa !9
  %1006 = load i32, ptr %57, align 4, !tbaa !9
  %1007 = load i32, ptr %56, align 4, !tbaa !9
  %1008 = sub nsw i32 %1006, %1007
  %1009 = load i32, ptr %72, align 4, !tbaa !9
  %1010 = add nsw i32 %1008, %1009
  %1011 = load i32, ptr %56, align 4, !tbaa !9
  %1012 = load i32, ptr %29, align 4, !tbaa !9
  %1013 = mul nsw i32 %1011, %1012
  %1014 = add nsw i32 %1010, %1013
  store i32 %1014, ptr %35, align 4, !tbaa !9
  %1015 = load i32, ptr %57, align 4, !tbaa !9
  %1016 = load i32, ptr %55, align 4, !tbaa !9
  %1017 = sub nsw i32 %1015, %1016
  %1018 = load i32, ptr %73, align 4, !tbaa !9
  %1019 = add nsw i32 %1017, %1018
  %1020 = load i32, ptr %55, align 4, !tbaa !9
  %1021 = load i32, ptr %31, align 4, !tbaa !9
  %1022 = mul nsw i32 %1020, %1021
  %1023 = add nsw i32 %1019, %1022
  store i32 %1023, ptr %39, align 4, !tbaa !9
  %1024 = load i32, ptr %55, align 4, !tbaa !9
  %1025 = load i32, ptr %56, align 4, !tbaa !9
  %1026 = sub nsw i32 %1024, %1025
  %1027 = load i32, ptr %72, align 4, !tbaa !9
  %1028 = add nsw i32 %1026, %1027
  %1029 = load i32, ptr %56, align 4, !tbaa !9
  %1030 = load i32, ptr %29, align 4, !tbaa !9
  %1031 = mul nsw i32 %1029, %1030
  %1032 = add nsw i32 %1028, %1031
  store i32 %1032, ptr %40, align 4, !tbaa !9
  %1033 = load ptr, ptr %22, align 8, !tbaa !5
  %1034 = load i32, ptr %39, align 4, !tbaa !9
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 %1035
  %1037 = getelementptr inbounds %struct.doublecomplex, ptr %1036, i32 0, i32 0
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = load ptr, ptr %20, align 8, !tbaa !5
  %1040 = load i32, ptr %40, align 4, !tbaa !9
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %1039, i64 %1041
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %1042, i32 0, i32 0
  %1044 = load double, ptr %1043, align 8, !tbaa !11
  %1045 = load ptr, ptr %22, align 8, !tbaa !5
  %1046 = load i32, ptr %39, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1045, i64 %1047
  %1049 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i32 0, i32 1
  %1050 = load double, ptr %1049, align 8, !tbaa !15
  %1051 = load ptr, ptr %20, align 8, !tbaa !5
  %1052 = load i32, ptr %40, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %1051, i64 %1053
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1054, i32 0, i32 1
  %1056 = load double, ptr %1055, align 8, !tbaa !15
  %1057 = fmul double %1050, %1056
  %1058 = fneg double %1057
  %1059 = call double @llvm.fmuladd.f64(double %1038, double %1044, double %1058)
  %1060 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1059, ptr %1060, align 8, !tbaa !11
  %1061 = load ptr, ptr %22, align 8, !tbaa !5
  %1062 = load i32, ptr %39, align 4, !tbaa !9
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i64 %1063
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %1064, i32 0, i32 0
  %1066 = load double, ptr %1065, align 8, !tbaa !11
  %1067 = load ptr, ptr %20, align 8, !tbaa !5
  %1068 = load i32, ptr %40, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %1067, i64 %1069
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i32 0, i32 1
  %1072 = load double, ptr %1071, align 8, !tbaa !15
  %1073 = load ptr, ptr %22, align 8, !tbaa !5
  %1074 = load i32, ptr %39, align 4, !tbaa !9
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %1073, i64 %1075
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %1076, i32 0, i32 1
  %1078 = load double, ptr %1077, align 8, !tbaa !15
  %1079 = load ptr, ptr %20, align 8, !tbaa !5
  %1080 = load i32, ptr %40, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1079, i64 %1081
  %1083 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i32 0, i32 0
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  %1085 = fmul double %1078, %1084
  %1086 = call double @llvm.fmuladd.f64(double %1066, double %1072, double %1085)
  %1087 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1086, ptr %1087, align 8, !tbaa !15
  %1088 = load ptr, ptr %20, align 8, !tbaa !5
  %1089 = load i32, ptr %35, align 4, !tbaa !9
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds %struct.doublecomplex, ptr %1088, i64 %1090
  %1092 = getelementptr inbounds %struct.doublecomplex, ptr %1091, i32 0, i32 0
  %1093 = load double, ptr %1092, align 8, !tbaa !11
  %1094 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1095 = load double, ptr %1094, align 8, !tbaa !11
  %1096 = fsub double %1093, %1095
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1096, ptr %1097, align 8, !tbaa !11
  %1098 = load ptr, ptr %20, align 8, !tbaa !5
  %1099 = load i32, ptr %35, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %1098, i64 %1100
  %1102 = getelementptr inbounds %struct.doublecomplex, ptr %1101, i32 0, i32 1
  %1103 = load double, ptr %1102, align 8, !tbaa !15
  %1104 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1105 = load double, ptr %1104, align 8, !tbaa !15
  %1106 = fsub double %1103, %1105
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1106, ptr %1107, align 8, !tbaa !15
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1109 = load double, ptr %1108, align 8, !tbaa !11
  %1110 = load ptr, ptr %20, align 8, !tbaa !5
  %1111 = load i32, ptr %38, align 4, !tbaa !9
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds %struct.doublecomplex, ptr %1110, i64 %1112
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %1113, i32 0, i32 0
  store double %1109, ptr %1114, align 8, !tbaa !11
  %1115 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1116 = load double, ptr %1115, align 8, !tbaa !15
  %1117 = load ptr, ptr %20, align 8, !tbaa !5
  %1118 = load i32, ptr %38, align 4, !tbaa !9
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %1117, i64 %1119
  %1121 = getelementptr inbounds %struct.doublecomplex, ptr %1120, i32 0, i32 1
  store double %1116, ptr %1121, align 8, !tbaa !15
  br label %1122

1122:                                             ; preds = %996
  %1123 = load i32, ptr %57, align 4, !tbaa !9
  %1124 = add nsw i32 %1123, 1
  store i32 %1124, ptr %57, align 4, !tbaa !9
  br label %992, !llvm.loop !22

1125:                                             ; preds = %992
  br label %1126

1126:                                             ; preds = %1125
  %1127 = load i32, ptr %56, align 4, !tbaa !9
  %1128 = add nsw i32 %1127, 1
  store i32 %1128, ptr %56, align 4, !tbaa !9
  br label %969, !llvm.loop !23

1129:                                             ; preds = %969
  %1130 = load i32, ptr %67, align 4, !tbaa !9
  %1131 = icmp ne i32 %1130, 0
  br i1 %1131, label %1132, label %1189

1132:                                             ; preds = %1129
  %1133 = load ptr, ptr %17, align 8, !tbaa !5
  %1134 = load i32, ptr %1133, align 4, !tbaa !9
  %1135 = load i32, ptr %59, align 4, !tbaa !9
  %1136 = sub nsw i32 %1134, %1135
  store i32 %1136, ptr %37, align 4, !tbaa !9
  %1137 = load double, ptr %77, align 8, !tbaa !14
  %1138 = fdiv double 1.000000e+00, %1137
  store double %1138, ptr %43, align 8, !tbaa !14
  %1139 = load ptr, ptr %24, align 8, !tbaa !5
  %1140 = load i32, ptr %59, align 4, !tbaa !9
  %1141 = add nsw i32 %1140, 1
  %1142 = load i32, ptr %55, align 4, !tbaa !9
  %1143 = load i32, ptr %33, align 4, !tbaa !9
  %1144 = mul nsw i32 %1142, %1143
  %1145 = add nsw i32 %1141, %1144
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds %struct.doublecomplex, ptr %1139, i64 %1146
  call void @zdscal_(ptr noundef %37, ptr noundef %43, ptr noundef %1147, ptr noundef @c__1)
  %1148 = load i32, ptr %78, align 4, !tbaa !9
  %1149 = icmp sgt i32 %1148, 0
  br i1 %1149, label %1150, label %1188

1150:                                             ; preds = %1132
  %1151 = load ptr, ptr %17, align 8, !tbaa !5
  %1152 = load i32, ptr %1151, align 4, !tbaa !9
  %1153 = load i32, ptr %59, align 4, !tbaa !9
  %1154 = sub nsw i32 %1152, %1153
  store i32 %1154, ptr %37, align 4, !tbaa !9
  %1155 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double -1.000000e+00, ptr %1155, align 8, !tbaa !11
  %1156 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double 0.000000e+00, ptr %1156, align 8, !tbaa !15
  %1157 = load ptr, ptr %24, align 8, !tbaa !5
  %1158 = load i32, ptr %59, align 4, !tbaa !9
  %1159 = add nsw i32 %1158, 1
  %1160 = load i32, ptr %55, align 4, !tbaa !9
  %1161 = load i32, ptr %33, align 4, !tbaa !9
  %1162 = mul nsw i32 %1160, %1161
  %1163 = add nsw i32 %1159, %1162
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds %struct.doublecomplex, ptr %1157, i64 %1164
  %1166 = load ptr, ptr %22, align 8, !tbaa !5
  %1167 = load i32, ptr %73, align 4, !tbaa !9
  %1168 = load i32, ptr %78, align 4, !tbaa !9
  %1169 = sub nsw i32 %1167, %1168
  %1170 = load i32, ptr %55, align 4, !tbaa !9
  %1171 = load i32, ptr %31, align 4, !tbaa !9
  %1172 = mul nsw i32 %1170, %1171
  %1173 = add nsw i32 %1169, %1172
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds %struct.doublecomplex, ptr %1166, i64 %1174
  %1176 = load ptr, ptr %24, align 8, !tbaa !5
  %1177 = load i32, ptr %59, align 4, !tbaa !9
  %1178 = add nsw i32 %1177, 1
  %1179 = load i32, ptr %55, align 4, !tbaa !9
  %1180 = load i32, ptr %78, align 4, !tbaa !9
  %1181 = sub nsw i32 %1179, %1180
  %1182 = load i32, ptr %33, align 4, !tbaa !9
  %1183 = mul nsw i32 %1181, %1182
  %1184 = add nsw i32 %1178, %1183
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds %struct.doublecomplex, ptr %1176, i64 %1185
  %1187 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zgerc_(ptr noundef %37, ptr noundef %78, ptr noundef %44, ptr noundef %1165, ptr noundef @c__1, ptr noundef %1175, ptr noundef @c__1, ptr noundef %1186, ptr noundef %1187)
  br label %1188

1188:                                             ; preds = %1150, %1132
  br label %1189

1189:                                             ; preds = %1188, %1129
  %1190 = load i32, ptr %55, align 4, !tbaa !9
  %1191 = load i32, ptr %62, align 4, !tbaa !9
  %1192 = sub nsw i32 %1190, %1191
  %1193 = load i32, ptr %72, align 4, !tbaa !9
  %1194 = add nsw i32 %1192, %1193
  %1195 = load i32, ptr %62, align 4, !tbaa !9
  %1196 = load i32, ptr %29, align 4, !tbaa !9
  %1197 = mul nsw i32 %1195, %1196
  %1198 = add nsw i32 %1194, %1197
  store i32 %1198, ptr %37, align 4, !tbaa !9
  %1199 = load ptr, ptr %20, align 8, !tbaa !5
  %1200 = load i32, ptr %37, align 4, !tbaa !9
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds %struct.doublecomplex, ptr %1199, i64 %1201
  %1203 = getelementptr inbounds %struct.doublecomplex, ptr %1202, i32 0, i32 0
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %1204, ptr %1205, align 8, !tbaa !11
  %1206 = load ptr, ptr %20, align 8, !tbaa !5
  %1207 = load i32, ptr %37, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds %struct.doublecomplex, ptr %1206, i64 %1208
  %1210 = getelementptr inbounds %struct.doublecomplex, ptr %1209, i32 0, i32 1
  %1211 = load double, ptr %1210, align 8, !tbaa !15
  %1212 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %1211, ptr %1212, align 8, !tbaa !15
  br label %1213

1213:                                             ; preds = %1189, %323
  %1214 = load ptr, ptr %19, align 8, !tbaa !5
  %1215 = load i32, ptr %1214, align 4, !tbaa !9
  %1216 = sub nsw i32 %1215, 1
  store i32 %1216, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %1217

1217:                                             ; preds = %2063, %1213
  %1218 = load i32, ptr %57, align 4, !tbaa !9
  %1219 = load i32, ptr %37, align 4, !tbaa !9
  %1220 = icmp sle i32 %1218, %1219
  br i1 %1220, label %1221, label %2066

1221:                                             ; preds = %1217
  %1222 = load i32, ptr %71, align 4, !tbaa !9
  %1223 = icmp ne i32 %1222, 0
  br i1 %1223, label %1224, label %1581

1224:                                             ; preds = %1221
  %1225 = load i32, ptr %55, align 4, !tbaa !9
  %1226 = load i32, ptr %57, align 4, !tbaa !9
  %1227 = sub nsw i32 %1225, %1226
  %1228 = load ptr, ptr %18, align 8, !tbaa !5
  %1229 = load i32, ptr %1228, align 4, !tbaa !9
  %1230 = add nsw i32 %1227, %1229
  %1231 = load ptr, ptr %17, align 8, !tbaa !5
  %1232 = load i32, ptr %1231, align 4, !tbaa !9
  %1233 = icmp slt i32 %1230, %1232
  br i1 %1233, label %1234, label %1580

1234:                                             ; preds = %1224
  %1235 = load i32, ptr %55, align 4, !tbaa !9
  %1236 = load i32, ptr %57, align 4, !tbaa !9
  %1237 = sub nsw i32 %1235, %1236
  %1238 = icmp sgt i32 %1237, 1
  br i1 %1238, label %1239, label %1580

1239:                                             ; preds = %1234
  %1240 = load ptr, ptr %20, align 8, !tbaa !5
  %1241 = load i32, ptr %57, align 4, !tbaa !9
  %1242 = add nsw i32 %1241, 1
  %1243 = load i32, ptr %55, align 4, !tbaa !9
  %1244 = load i32, ptr %57, align 4, !tbaa !9
  %1245 = sub nsw i32 %1243, %1244
  %1246 = load ptr, ptr %18, align 8, !tbaa !5
  %1247 = load i32, ptr %1246, align 4, !tbaa !9
  %1248 = add nsw i32 %1245, %1247
  %1249 = load i32, ptr %29, align 4, !tbaa !9
  %1250 = mul nsw i32 %1248, %1249
  %1251 = add nsw i32 %1242, %1250
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds %struct.doublecomplex, ptr %1240, i64 %1252
  %1254 = load ptr, ptr %27, align 8, !tbaa !5
  %1255 = load i32, ptr %55, align 4, !tbaa !9
  %1256 = load i32, ptr %57, align 4, !tbaa !9
  %1257 = sub nsw i32 %1255, %1256
  %1258 = load ptr, ptr %18, align 8, !tbaa !5
  %1259 = load i32, ptr %1258, align 4, !tbaa !9
  %1260 = add nsw i32 %1257, %1259
  %1261 = load i32, ptr %59, align 4, !tbaa !9
  %1262 = sub nsw i32 %1260, %1261
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds double, ptr %1254, i64 %1263
  %1265 = load ptr, ptr %26, align 8, !tbaa !5
  %1266 = load i32, ptr %55, align 4, !tbaa !9
  %1267 = load i32, ptr %57, align 4, !tbaa !9
  %1268 = sub nsw i32 %1266, %1267
  %1269 = load ptr, ptr %18, align 8, !tbaa !5
  %1270 = load i32, ptr %1269, align 4, !tbaa !9
  %1271 = add nsw i32 %1268, %1270
  %1272 = load i32, ptr %59, align 4, !tbaa !9
  %1273 = sub nsw i32 %1271, %1272
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds %struct.doublecomplex, ptr %1265, i64 %1274
  call void @zlartg_(ptr noundef %1253, ptr noundef %74, ptr noundef %1264, ptr noundef %1275, ptr noundef %68)
  %1276 = load i32, ptr %73, align 4, !tbaa !9
  %1277 = load i32, ptr %57, align 4, !tbaa !9
  %1278 = sub nsw i32 %1276, %1277
  %1279 = load i32, ptr %55, align 4, !tbaa !9
  %1280 = load i32, ptr %31, align 4, !tbaa !9
  %1281 = mul nsw i32 %1279, %1280
  %1282 = add nsw i32 %1278, %1281
  store i32 %1282, ptr %36, align 4, !tbaa !9
  %1283 = load ptr, ptr %22, align 8, !tbaa !5
  %1284 = load i32, ptr %36, align 4, !tbaa !9
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds %struct.doublecomplex, ptr %1283, i64 %1285
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %1286, i32 0, i32 0
  %1288 = load double, ptr %1287, align 8, !tbaa !11
  %1289 = fneg double %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1289, ptr %1290, align 8, !tbaa !11
  %1291 = load ptr, ptr %22, align 8, !tbaa !5
  %1292 = load i32, ptr %36, align 4, !tbaa !9
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds %struct.doublecomplex, ptr %1291, i64 %1293
  %1295 = getelementptr inbounds %struct.doublecomplex, ptr %1294, i32 0, i32 1
  %1296 = load double, ptr %1295, align 8, !tbaa !15
  %1297 = fneg double %1296
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1297, ptr %1298, align 8, !tbaa !15
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1300 = load double, ptr %1299, align 8, !tbaa !11
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  %1303 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1304 = load double, ptr %1303, align 8, !tbaa !15
  %1305 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %1306 = load double, ptr %1305, align 8, !tbaa !15
  %1307 = fmul double %1304, %1306
  %1308 = fneg double %1307
  %1309 = call double @llvm.fmuladd.f64(double %1300, double %1302, double %1308)
  %1310 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1309, ptr %1310, align 8, !tbaa !11
  %1311 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1312 = load double, ptr %1311, align 8, !tbaa !11
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %1314 = load double, ptr %1313, align 8, !tbaa !15
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1316 = load double, ptr %1315, align 8, !tbaa !15
  %1317 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %1318 = load double, ptr %1317, align 8, !tbaa !11
  %1319 = fmul double %1316, %1318
  %1320 = call double @llvm.fmuladd.f64(double %1312, double %1314, double %1319)
  %1321 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1320, ptr %1321, align 8, !tbaa !15
  %1322 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1323 = load double, ptr %1322, align 8, !tbaa !11
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %1323, ptr %1324, align 8, !tbaa !11
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1326 = load double, ptr %1325, align 8, !tbaa !15
  %1327 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %1326, ptr %1327, align 8, !tbaa !15
  %1328 = load i32, ptr %55, align 4, !tbaa !9
  %1329 = load i32, ptr %57, align 4, !tbaa !9
  %1330 = sub nsw i32 %1328, %1329
  store i32 %1330, ptr %36, align 4, !tbaa !9
  %1331 = load i32, ptr %55, align 4, !tbaa !9
  %1332 = load i32, ptr %57, align 4, !tbaa !9
  %1333 = sub nsw i32 %1331, %1332
  %1334 = load ptr, ptr %18, align 8, !tbaa !5
  %1335 = load i32, ptr %1334, align 4, !tbaa !9
  %1336 = add nsw i32 %1333, %1335
  %1337 = load i32, ptr %59, align 4, !tbaa !9
  %1338 = sub nsw i32 %1336, %1337
  store i32 %1338, ptr %38, align 4, !tbaa !9
  %1339 = load ptr, ptr %27, align 8, !tbaa !5
  %1340 = load i32, ptr %38, align 4, !tbaa !9
  %1341 = sext i32 %1340 to i64
  %1342 = getelementptr inbounds double, ptr %1339, i64 %1341
  %1343 = load double, ptr %1342, align 8, !tbaa !14
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = fmul double %1343, %1345
  %1347 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1346, ptr %1347, align 8, !tbaa !11
  %1348 = load ptr, ptr %27, align 8, !tbaa !5
  %1349 = load i32, ptr %38, align 4, !tbaa !9
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds double, ptr %1348, i64 %1350
  %1352 = load double, ptr %1351, align 8, !tbaa !14
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1354 = load double, ptr %1353, align 8, !tbaa !15
  %1355 = fmul double %1352, %1354
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1355, ptr %1356, align 8, !tbaa !15
  %1357 = load ptr, ptr %26, align 8, !tbaa !5
  %1358 = load i32, ptr %55, align 4, !tbaa !9
  %1359 = load i32, ptr %57, align 4, !tbaa !9
  %1360 = sub nsw i32 %1358, %1359
  %1361 = load ptr, ptr %18, align 8, !tbaa !5
  %1362 = load i32, ptr %1361, align 4, !tbaa !9
  %1363 = add nsw i32 %1360, %1362
  %1364 = load i32, ptr %59, align 4, !tbaa !9
  %1365 = sub nsw i32 %1363, %1364
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds %struct.doublecomplex, ptr %1357, i64 %1366
  %1368 = call { double, double } @Cd(ptr noundef %1367)
  %1369 = extractvalue { double, double } %1368, 0
  %1370 = extractvalue { double, double } %1368, 1
  %1371 = fneg double %1370
  %1372 = call ptr @_pCd(ptr noundef %47)
  %1373 = getelementptr inbounds { double, double }, ptr %1372, i32 0, i32 0
  %1374 = getelementptr inbounds { double, double }, ptr %1372, i32 0, i32 1
  store double %1369, ptr %1373, align 8
  store double %1371, ptr %1374, align 8
  %1375 = load i32, ptr %55, align 4, !tbaa !9
  %1376 = load i32, ptr %57, align 4, !tbaa !9
  %1377 = sub nsw i32 %1375, %1376
  %1378 = load ptr, ptr %18, align 8, !tbaa !5
  %1379 = load i32, ptr %1378, align 4, !tbaa !9
  %1380 = add nsw i32 %1377, %1379
  %1381 = load i32, ptr %29, align 4, !tbaa !9
  %1382 = mul nsw i32 %1380, %1381
  %1383 = add nsw i32 %1382, 1
  store i32 %1383, ptr %35, align 4, !tbaa !9
  %1384 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1385 = load double, ptr %1384, align 8, !tbaa !11
  %1386 = load ptr, ptr %20, align 8, !tbaa !5
  %1387 = load i32, ptr %35, align 4, !tbaa !9
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds %struct.doublecomplex, ptr %1386, i64 %1388
  %1390 = getelementptr inbounds %struct.doublecomplex, ptr %1389, i32 0, i32 0
  %1391 = load double, ptr %1390, align 8, !tbaa !11
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1393 = load double, ptr %1392, align 8, !tbaa !15
  %1394 = load ptr, ptr %20, align 8, !tbaa !5
  %1395 = load i32, ptr %35, align 4, !tbaa !9
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds %struct.doublecomplex, ptr %1394, i64 %1396
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %1397, i32 0, i32 1
  %1399 = load double, ptr %1398, align 8, !tbaa !15
  %1400 = fmul double %1393, %1399
  %1401 = fneg double %1400
  %1402 = call double @llvm.fmuladd.f64(double %1385, double %1391, double %1401)
  %1403 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %1402, ptr %1403, align 8, !tbaa !11
  %1404 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1405 = load double, ptr %1404, align 8, !tbaa !11
  %1406 = load ptr, ptr %20, align 8, !tbaa !5
  %1407 = load i32, ptr %35, align 4, !tbaa !9
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds %struct.doublecomplex, ptr %1406, i64 %1408
  %1410 = getelementptr inbounds %struct.doublecomplex, ptr %1409, i32 0, i32 1
  %1411 = load double, ptr %1410, align 8, !tbaa !15
  %1412 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1413 = load double, ptr %1412, align 8, !tbaa !15
  %1414 = load ptr, ptr %20, align 8, !tbaa !5
  %1415 = load i32, ptr %35, align 4, !tbaa !9
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds %struct.doublecomplex, ptr %1414, i64 %1416
  %1418 = getelementptr inbounds %struct.doublecomplex, ptr %1417, i32 0, i32 0
  %1419 = load double, ptr %1418, align 8, !tbaa !11
  %1420 = fmul double %1413, %1419
  %1421 = call double @llvm.fmuladd.f64(double %1405, double %1411, double %1420)
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %1421, ptr %1422, align 8, !tbaa !15
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1426 = load double, ptr %1425, align 8, !tbaa !11
  %1427 = fsub double %1424, %1426
  %1428 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1427, ptr %1428, align 8, !tbaa !11
  %1429 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1430 = load double, ptr %1429, align 8, !tbaa !15
  %1431 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1432 = load double, ptr %1431, align 8, !tbaa !15
  %1433 = fsub double %1430, %1432
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1433, ptr %1434, align 8, !tbaa !15
  %1435 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = load ptr, ptr %26, align 8, !tbaa !5
  %1438 = load i32, ptr %36, align 4, !tbaa !9
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds %struct.doublecomplex, ptr %1437, i64 %1439
  %1441 = getelementptr inbounds %struct.doublecomplex, ptr %1440, i32 0, i32 0
  store double %1436, ptr %1441, align 8, !tbaa !11
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1443 = load double, ptr %1442, align 8, !tbaa !15
  %1444 = load ptr, ptr %26, align 8, !tbaa !5
  %1445 = load i32, ptr %36, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %1444, i64 %1446
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %1447, i32 0, i32 1
  store double %1443, ptr %1448, align 8, !tbaa !15
  %1449 = load i32, ptr %55, align 4, !tbaa !9
  %1450 = load i32, ptr %57, align 4, !tbaa !9
  %1451 = sub nsw i32 %1449, %1450
  %1452 = load ptr, ptr %18, align 8, !tbaa !5
  %1453 = load i32, ptr %1452, align 4, !tbaa !9
  %1454 = add nsw i32 %1451, %1453
  %1455 = load i32, ptr %29, align 4, !tbaa !9
  %1456 = mul nsw i32 %1454, %1455
  %1457 = add nsw i32 %1456, 1
  store i32 %1457, ptr %36, align 4, !tbaa !9
  %1458 = load i32, ptr %55, align 4, !tbaa !9
  %1459 = load i32, ptr %57, align 4, !tbaa !9
  %1460 = sub nsw i32 %1458, %1459
  %1461 = load ptr, ptr %18, align 8, !tbaa !5
  %1462 = load i32, ptr %1461, align 4, !tbaa !9
  %1463 = add nsw i32 %1460, %1462
  %1464 = load i32, ptr %59, align 4, !tbaa !9
  %1465 = sub nsw i32 %1463, %1464
  store i32 %1465, ptr %38, align 4, !tbaa !9
  %1466 = load ptr, ptr %26, align 8, !tbaa !5
  %1467 = load i32, ptr %38, align 4, !tbaa !9
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %1466, i64 %1468
  %1470 = getelementptr inbounds %struct.doublecomplex, ptr %1469, i32 0, i32 0
  %1471 = load double, ptr %1470, align 8, !tbaa !11
  %1472 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1473 = load double, ptr %1472, align 8, !tbaa !11
  %1474 = load ptr, ptr %26, align 8, !tbaa !5
  %1475 = load i32, ptr %38, align 4, !tbaa !9
  %1476 = sext i32 %1475 to i64
  %1477 = getelementptr inbounds %struct.doublecomplex, ptr %1474, i64 %1476
  %1478 = getelementptr inbounds %struct.doublecomplex, ptr %1477, i32 0, i32 1
  %1479 = load double, ptr %1478, align 8, !tbaa !15
  %1480 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1481 = load double, ptr %1480, align 8, !tbaa !15
  %1482 = fmul double %1479, %1481
  %1483 = fneg double %1482
  %1484 = call double @llvm.fmuladd.f64(double %1471, double %1473, double %1483)
  %1485 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1484, ptr %1485, align 8, !tbaa !11
  %1486 = load ptr, ptr %26, align 8, !tbaa !5
  %1487 = load i32, ptr %38, align 4, !tbaa !9
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds %struct.doublecomplex, ptr %1486, i64 %1488
  %1490 = getelementptr inbounds %struct.doublecomplex, ptr %1489, i32 0, i32 0
  %1491 = load double, ptr %1490, align 8, !tbaa !11
  %1492 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1493 = load double, ptr %1492, align 8, !tbaa !15
  %1494 = load ptr, ptr %26, align 8, !tbaa !5
  %1495 = load i32, ptr %38, align 4, !tbaa !9
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds %struct.doublecomplex, ptr %1494, i64 %1496
  %1498 = getelementptr inbounds %struct.doublecomplex, ptr %1497, i32 0, i32 1
  %1499 = load double, ptr %1498, align 8, !tbaa !15
  %1500 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  %1502 = fmul double %1499, %1501
  %1503 = call double @llvm.fmuladd.f64(double %1491, double %1493, double %1502)
  %1504 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1503, ptr %1504, align 8, !tbaa !15
  %1505 = load i32, ptr %55, align 4, !tbaa !9
  %1506 = load i32, ptr %57, align 4, !tbaa !9
  %1507 = sub nsw i32 %1505, %1506
  %1508 = load ptr, ptr %18, align 8, !tbaa !5
  %1509 = load i32, ptr %1508, align 4, !tbaa !9
  %1510 = add nsw i32 %1507, %1509
  %1511 = load i32, ptr %59, align 4, !tbaa !9
  %1512 = sub nsw i32 %1510, %1511
  store i32 %1512, ptr %35, align 4, !tbaa !9
  %1513 = load i32, ptr %55, align 4, !tbaa !9
  %1514 = load i32, ptr %57, align 4, !tbaa !9
  %1515 = sub nsw i32 %1513, %1514
  %1516 = load ptr, ptr %18, align 8, !tbaa !5
  %1517 = load i32, ptr %1516, align 4, !tbaa !9
  %1518 = add nsw i32 %1515, %1517
  %1519 = load i32, ptr %29, align 4, !tbaa !9
  %1520 = mul nsw i32 %1518, %1519
  %1521 = add nsw i32 %1520, 1
  store i32 %1521, ptr %39, align 4, !tbaa !9
  %1522 = load ptr, ptr %27, align 8, !tbaa !5
  %1523 = load i32, ptr %35, align 4, !tbaa !9
  %1524 = sext i32 %1523 to i64
  %1525 = getelementptr inbounds double, ptr %1522, i64 %1524
  %1526 = load double, ptr %1525, align 8, !tbaa !14
  %1527 = load ptr, ptr %20, align 8, !tbaa !5
  %1528 = load i32, ptr %39, align 4, !tbaa !9
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds %struct.doublecomplex, ptr %1527, i64 %1529
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %1530, i32 0, i32 0
  %1532 = load double, ptr %1531, align 8, !tbaa !11
  %1533 = fmul double %1526, %1532
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %1533, ptr %1534, align 8, !tbaa !11
  %1535 = load ptr, ptr %27, align 8, !tbaa !5
  %1536 = load i32, ptr %35, align 4, !tbaa !9
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds double, ptr %1535, i64 %1537
  %1539 = load double, ptr %1538, align 8, !tbaa !14
  %1540 = load ptr, ptr %20, align 8, !tbaa !5
  %1541 = load i32, ptr %39, align 4, !tbaa !9
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr inbounds %struct.doublecomplex, ptr %1540, i64 %1542
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %1543, i32 0, i32 1
  %1545 = load double, ptr %1544, align 8, !tbaa !15
  %1546 = fmul double %1539, %1545
  %1547 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %1546, ptr %1547, align 8, !tbaa !15
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1549 = load double, ptr %1548, align 8, !tbaa !11
  %1550 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1551 = load double, ptr %1550, align 8, !tbaa !11
  %1552 = fadd double %1549, %1551
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1552, ptr %1553, align 8, !tbaa !11
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1555 = load double, ptr %1554, align 8, !tbaa !15
  %1556 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1557 = load double, ptr %1556, align 8, !tbaa !15
  %1558 = fadd double %1555, %1557
  %1559 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1558, ptr %1559, align 8, !tbaa !15
  %1560 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1561 = load double, ptr %1560, align 8, !tbaa !11
  %1562 = load ptr, ptr %20, align 8, !tbaa !5
  %1563 = load i32, ptr %36, align 4, !tbaa !9
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds %struct.doublecomplex, ptr %1562, i64 %1564
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %1565, i32 0, i32 0
  store double %1561, ptr %1566, align 8, !tbaa !11
  %1567 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1568 = load double, ptr %1567, align 8, !tbaa !15
  %1569 = load ptr, ptr %20, align 8, !tbaa !5
  %1570 = load i32, ptr %36, align 4, !tbaa !9
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %1569, i64 %1571
  %1573 = getelementptr inbounds %struct.doublecomplex, ptr %1572, i32 0, i32 1
  store double %1568, ptr %1573, align 8, !tbaa !15
  %1574 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %1575 = load double, ptr %1574, align 8, !tbaa !11
  %1576 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %1575, ptr %1576, align 8, !tbaa !11
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %1578 = load double, ptr %1577, align 8, !tbaa !15
  %1579 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %1578, ptr %1579, align 8, !tbaa !15
  br label %1580

1580:                                             ; preds = %1239, %1234, %1224
  br label %1581

1581:                                             ; preds = %1580, %1221
  store i32 1, ptr %36, align 4, !tbaa !9
  %1582 = load i32, ptr %57, align 4, !tbaa !9
  %1583 = load i32, ptr %61, align 4, !tbaa !9
  %1584 = sub nsw i32 %1582, %1583
  %1585 = add nsw i32 %1584, 2
  store i32 %1585, ptr %38, align 4, !tbaa !9
  %1586 = load i32, ptr %55, align 4, !tbaa !9
  %1587 = load i32, ptr %57, align 4, !tbaa !9
  %1588 = sub nsw i32 %1586, %1587
  %1589 = sub nsw i32 %1588, 1
  %1590 = load i32, ptr %36, align 4, !tbaa !9
  %1591 = load i32, ptr %38, align 4, !tbaa !9
  %1592 = icmp sge i32 %1590, %1591
  br i1 %1592, label %1593, label %1595

1593:                                             ; preds = %1581
  %1594 = load i32, ptr %36, align 4, !tbaa !9
  br label %1597

1595:                                             ; preds = %1581
  %1596 = load i32, ptr %38, align 4, !tbaa !9
  br label %1597

1597:                                             ; preds = %1595, %1593
  %1598 = phi i32 [ %1594, %1593 ], [ %1596, %1595 ]
  %1599 = load i32, ptr %72, align 4, !tbaa !9
  %1600 = mul nsw i32 %1598, %1599
  %1601 = add nsw i32 %1589, %1600
  store i32 %1601, ptr %66, align 4, !tbaa !9
  %1602 = load ptr, ptr %17, align 8, !tbaa !5
  %1603 = load i32, ptr %1602, align 4, !tbaa !9
  %1604 = load i32, ptr %66, align 4, !tbaa !9
  %1605 = sub nsw i32 %1603, %1604
  %1606 = load ptr, ptr %18, align 8, !tbaa !5
  %1607 = load i32, ptr %1606, align 4, !tbaa !9
  %1608 = add nsw i32 %1605, %1607
  %1609 = load i32, ptr %72, align 4, !tbaa !9
  %1610 = sdiv i32 %1608, %1609
  store i32 %1610, ptr %69, align 4, !tbaa !9
  %1611 = load i32, ptr %66, align 4, !tbaa !9
  %1612 = load i32, ptr %69, align 4, !tbaa !9
  %1613 = sub nsw i32 %1612, 1
  %1614 = load i32, ptr %72, align 4, !tbaa !9
  %1615 = mul nsw i32 %1613, %1614
  %1616 = add nsw i32 %1611, %1615
  store i32 %1616, ptr %65, align 4, !tbaa !9
  %1617 = load i32, ptr %71, align 4, !tbaa !9
  %1618 = icmp ne i32 %1617, 0
  br i1 %1618, label %1619, label %1638

1619:                                             ; preds = %1597
  %1620 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1620, ptr %36, align 4, !tbaa !9
  %1621 = load i32, ptr %55, align 4, !tbaa !9
  %1622 = load ptr, ptr %18, align 8, !tbaa !5
  %1623 = load i32, ptr %1622, align 4, !tbaa !9
  %1624 = shl i32 %1623, 1
  %1625 = add nsw i32 %1621, %1624
  %1626 = load i32, ptr %57, align 4, !tbaa !9
  %1627 = sub nsw i32 %1625, %1626
  %1628 = add nsw i32 %1627, 1
  store i32 %1628, ptr %38, align 4, !tbaa !9
  %1629 = load i32, ptr %36, align 4, !tbaa !9
  %1630 = load i32, ptr %38, align 4, !tbaa !9
  %1631 = icmp sge i32 %1629, %1630
  br i1 %1631, label %1632, label %1634

1632:                                             ; preds = %1619
  %1633 = load i32, ptr %36, align 4, !tbaa !9
  br label %1636

1634:                                             ; preds = %1619
  %1635 = load i32, ptr %38, align 4, !tbaa !9
  br label %1636

1636:                                             ; preds = %1634, %1632
  %1637 = phi i32 [ %1633, %1632 ], [ %1635, %1634 ]
  store i32 %1637, ptr %76, align 4, !tbaa !9
  br label %1640

1638:                                             ; preds = %1597
  %1639 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1639, ptr %76, align 4, !tbaa !9
  br label %1640

1640:                                             ; preds = %1638, %1636
  %1641 = load ptr, ptr %17, align 8, !tbaa !5
  %1642 = load i32, ptr %1641, align 4, !tbaa !9
  %1643 = load i32, ptr %76, align 4, !tbaa !9
  %1644 = sub nsw i32 %1642, %1643
  %1645 = load ptr, ptr %18, align 8, !tbaa !5
  %1646 = load i32, ptr %1645, align 4, !tbaa !9
  %1647 = add nsw i32 %1644, %1646
  %1648 = load i32, ptr %72, align 4, !tbaa !9
  %1649 = sdiv i32 %1647, %1648
  store i32 %1649, ptr %79, align 4, !tbaa !9
  %1650 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1650, ptr %36, align 4, !tbaa !9
  %1651 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1651, ptr %38, align 4, !tbaa !9
  %1652 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %1652, ptr %56, align 4, !tbaa !9
  br label %1653

1653:                                             ; preds = %1803, %1640
  %1654 = load i32, ptr %38, align 4, !tbaa !9
  %1655 = icmp slt i32 %1654, 0
  br i1 %1655, label %1656, label %1661

1656:                                             ; preds = %1653
  %1657 = load i32, ptr %56, align 4, !tbaa !9
  %1658 = load i32, ptr %36, align 4, !tbaa !9
  %1659 = icmp sge i32 %1657, %1658
  %1660 = zext i1 %1659 to i32
  br label %1666

1661:                                             ; preds = %1653
  %1662 = load i32, ptr %56, align 4, !tbaa !9
  %1663 = load i32, ptr %36, align 4, !tbaa !9
  %1664 = icmp sle i32 %1662, %1663
  %1665 = zext i1 %1664 to i32
  br label %1666

1666:                                             ; preds = %1661, %1656
  %1667 = phi i32 [ %1660, %1656 ], [ %1665, %1661 ]
  %1668 = icmp ne i32 %1667, 0
  br i1 %1668, label %1669, label %1807

1669:                                             ; preds = %1666
  %1670 = load i32, ptr %56, align 4, !tbaa !9
  %1671 = load i32, ptr %59, align 4, !tbaa !9
  %1672 = sub nsw i32 %1670, %1671
  store i32 %1672, ptr %35, align 4, !tbaa !9
  %1673 = load i32, ptr %56, align 4, !tbaa !9
  %1674 = load i32, ptr %59, align 4, !tbaa !9
  %1675 = sub nsw i32 %1673, %1674
  store i32 %1675, ptr %39, align 4, !tbaa !9
  %1676 = load i32, ptr %56, align 4, !tbaa !9
  %1677 = add nsw i32 %1676, 1
  %1678 = load i32, ptr %29, align 4, !tbaa !9
  %1679 = mul nsw i32 %1677, %1678
  %1680 = add nsw i32 %1679, 1
  store i32 %1680, ptr %40, align 4, !tbaa !9
  %1681 = load ptr, ptr %26, align 8, !tbaa !5
  %1682 = load i32, ptr %39, align 4, !tbaa !9
  %1683 = sext i32 %1682 to i64
  %1684 = getelementptr inbounds %struct.doublecomplex, ptr %1681, i64 %1683
  %1685 = getelementptr inbounds %struct.doublecomplex, ptr %1684, i32 0, i32 0
  %1686 = load double, ptr %1685, align 8, !tbaa !11
  %1687 = load ptr, ptr %20, align 8, !tbaa !5
  %1688 = load i32, ptr %40, align 4, !tbaa !9
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds %struct.doublecomplex, ptr %1687, i64 %1689
  %1691 = getelementptr inbounds %struct.doublecomplex, ptr %1690, i32 0, i32 0
  %1692 = load double, ptr %1691, align 8, !tbaa !11
  %1693 = load ptr, ptr %26, align 8, !tbaa !5
  %1694 = load i32, ptr %39, align 4, !tbaa !9
  %1695 = sext i32 %1694 to i64
  %1696 = getelementptr inbounds %struct.doublecomplex, ptr %1693, i64 %1695
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %1696, i32 0, i32 1
  %1698 = load double, ptr %1697, align 8, !tbaa !15
  %1699 = load ptr, ptr %20, align 8, !tbaa !5
  %1700 = load i32, ptr %40, align 4, !tbaa !9
  %1701 = sext i32 %1700 to i64
  %1702 = getelementptr inbounds %struct.doublecomplex, ptr %1699, i64 %1701
  %1703 = getelementptr inbounds %struct.doublecomplex, ptr %1702, i32 0, i32 1
  %1704 = load double, ptr %1703, align 8, !tbaa !15
  %1705 = fmul double %1698, %1704
  %1706 = fneg double %1705
  %1707 = call double @llvm.fmuladd.f64(double %1686, double %1692, double %1706)
  %1708 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1707, ptr %1708, align 8, !tbaa !11
  %1709 = load ptr, ptr %26, align 8, !tbaa !5
  %1710 = load i32, ptr %39, align 4, !tbaa !9
  %1711 = sext i32 %1710 to i64
  %1712 = getelementptr inbounds %struct.doublecomplex, ptr %1709, i64 %1711
  %1713 = getelementptr inbounds %struct.doublecomplex, ptr %1712, i32 0, i32 0
  %1714 = load double, ptr %1713, align 8, !tbaa !11
  %1715 = load ptr, ptr %20, align 8, !tbaa !5
  %1716 = load i32, ptr %40, align 4, !tbaa !9
  %1717 = sext i32 %1716 to i64
  %1718 = getelementptr inbounds %struct.doublecomplex, ptr %1715, i64 %1717
  %1719 = getelementptr inbounds %struct.doublecomplex, ptr %1718, i32 0, i32 1
  %1720 = load double, ptr %1719, align 8, !tbaa !15
  %1721 = load ptr, ptr %26, align 8, !tbaa !5
  %1722 = load i32, ptr %39, align 4, !tbaa !9
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds %struct.doublecomplex, ptr %1721, i64 %1723
  %1725 = getelementptr inbounds %struct.doublecomplex, ptr %1724, i32 0, i32 1
  %1726 = load double, ptr %1725, align 8, !tbaa !15
  %1727 = load ptr, ptr %20, align 8, !tbaa !5
  %1728 = load i32, ptr %40, align 4, !tbaa !9
  %1729 = sext i32 %1728 to i64
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %1727, i64 %1729
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %1730, i32 0, i32 0
  %1732 = load double, ptr %1731, align 8, !tbaa !11
  %1733 = fmul double %1726, %1732
  %1734 = call double @llvm.fmuladd.f64(double %1714, double %1720, double %1733)
  %1735 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1734, ptr %1735, align 8, !tbaa !15
  %1736 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1737 = load double, ptr %1736, align 8, !tbaa !11
  %1738 = load ptr, ptr %26, align 8, !tbaa !5
  %1739 = load i32, ptr %35, align 4, !tbaa !9
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i64 %1740
  %1742 = getelementptr inbounds %struct.doublecomplex, ptr %1741, i32 0, i32 0
  store double %1737, ptr %1742, align 8, !tbaa !11
  %1743 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1744 = load double, ptr %1743, align 8, !tbaa !15
  %1745 = load ptr, ptr %26, align 8, !tbaa !5
  %1746 = load i32, ptr %35, align 4, !tbaa !9
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr inbounds %struct.doublecomplex, ptr %1745, i64 %1747
  %1749 = getelementptr inbounds %struct.doublecomplex, ptr %1748, i32 0, i32 1
  store double %1744, ptr %1749, align 8, !tbaa !15
  %1750 = load i32, ptr %56, align 4, !tbaa !9
  %1751 = add nsw i32 %1750, 1
  %1752 = load i32, ptr %29, align 4, !tbaa !9
  %1753 = mul nsw i32 %1751, %1752
  %1754 = add nsw i32 %1753, 1
  store i32 %1754, ptr %35, align 4, !tbaa !9
  %1755 = load i32, ptr %56, align 4, !tbaa !9
  %1756 = load i32, ptr %59, align 4, !tbaa !9
  %1757 = sub nsw i32 %1755, %1756
  store i32 %1757, ptr %39, align 4, !tbaa !9
  %1758 = load i32, ptr %56, align 4, !tbaa !9
  %1759 = add nsw i32 %1758, 1
  %1760 = load i32, ptr %29, align 4, !tbaa !9
  %1761 = mul nsw i32 %1759, %1760
  %1762 = add nsw i32 %1761, 1
  store i32 %1762, ptr %40, align 4, !tbaa !9
  %1763 = load ptr, ptr %27, align 8, !tbaa !5
  %1764 = load i32, ptr %39, align 4, !tbaa !9
  %1765 = sext i32 %1764 to i64
  %1766 = getelementptr inbounds double, ptr %1763, i64 %1765
  %1767 = load double, ptr %1766, align 8, !tbaa !14
  %1768 = load ptr, ptr %20, align 8, !tbaa !5
  %1769 = load i32, ptr %40, align 4, !tbaa !9
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds %struct.doublecomplex, ptr %1768, i64 %1770
  %1772 = getelementptr inbounds %struct.doublecomplex, ptr %1771, i32 0, i32 0
  %1773 = load double, ptr %1772, align 8, !tbaa !11
  %1774 = fmul double %1767, %1773
  %1775 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %1774, ptr %1775, align 8, !tbaa !11
  %1776 = load ptr, ptr %27, align 8, !tbaa !5
  %1777 = load i32, ptr %39, align 4, !tbaa !9
  %1778 = sext i32 %1777 to i64
  %1779 = getelementptr inbounds double, ptr %1776, i64 %1778
  %1780 = load double, ptr %1779, align 8, !tbaa !14
  %1781 = load ptr, ptr %20, align 8, !tbaa !5
  %1782 = load i32, ptr %40, align 4, !tbaa !9
  %1783 = sext i32 %1782 to i64
  %1784 = getelementptr inbounds %struct.doublecomplex, ptr %1781, i64 %1783
  %1785 = getelementptr inbounds %struct.doublecomplex, ptr %1784, i32 0, i32 1
  %1786 = load double, ptr %1785, align 8, !tbaa !15
  %1787 = fmul double %1780, %1786
  %1788 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %1787, ptr %1788, align 8, !tbaa !15
  %1789 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %1790 = load double, ptr %1789, align 8, !tbaa !11
  %1791 = load ptr, ptr %20, align 8, !tbaa !5
  %1792 = load i32, ptr %35, align 4, !tbaa !9
  %1793 = sext i32 %1792 to i64
  %1794 = getelementptr inbounds %struct.doublecomplex, ptr %1791, i64 %1793
  %1795 = getelementptr inbounds %struct.doublecomplex, ptr %1794, i32 0, i32 0
  store double %1790, ptr %1795, align 8, !tbaa !11
  %1796 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %1797 = load double, ptr %1796, align 8, !tbaa !15
  %1798 = load ptr, ptr %20, align 8, !tbaa !5
  %1799 = load i32, ptr %35, align 4, !tbaa !9
  %1800 = sext i32 %1799 to i64
  %1801 = getelementptr inbounds %struct.doublecomplex, ptr %1798, i64 %1800
  %1802 = getelementptr inbounds %struct.doublecomplex, ptr %1801, i32 0, i32 1
  store double %1797, ptr %1802, align 8, !tbaa !15
  br label %1803

1803:                                             ; preds = %1669
  %1804 = load i32, ptr %38, align 4, !tbaa !9
  %1805 = load i32, ptr %56, align 4, !tbaa !9
  %1806 = add nsw i32 %1805, %1804
  store i32 %1806, ptr %56, align 4, !tbaa !9
  br label %1653, !llvm.loop !24

1807:                                             ; preds = %1666
  %1808 = load i32, ptr %79, align 4, !tbaa !9
  %1809 = icmp sgt i32 %1808, 0
  br i1 %1809, label %1810, label %1830

1810:                                             ; preds = %1807
  %1811 = load ptr, ptr %20, align 8, !tbaa !5
  %1812 = load i32, ptr %76, align 4, !tbaa !9
  %1813 = load i32, ptr %29, align 4, !tbaa !9
  %1814 = mul nsw i32 %1812, %1813
  %1815 = add nsw i32 %1814, 1
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds %struct.doublecomplex, ptr %1811, i64 %1816
  %1818 = load ptr, ptr %26, align 8, !tbaa !5
  %1819 = load i32, ptr %76, align 4, !tbaa !9
  %1820 = load i32, ptr %59, align 4, !tbaa !9
  %1821 = sub nsw i32 %1819, %1820
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds %struct.doublecomplex, ptr %1818, i64 %1822
  %1824 = load ptr, ptr %27, align 8, !tbaa !5
  %1825 = load i32, ptr %76, align 4, !tbaa !9
  %1826 = load i32, ptr %59, align 4, !tbaa !9
  %1827 = sub nsw i32 %1825, %1826
  %1828 = sext i32 %1827 to i64
  %1829 = getelementptr inbounds double, ptr %1824, i64 %1828
  call void @zlargv_(ptr noundef %79, ptr noundef %1817, ptr noundef %54, ptr noundef %1823, ptr noundef %72, ptr noundef %1829, ptr noundef %72)
  br label %1830

1830:                                             ; preds = %1810, %1807
  %1831 = load i32, ptr %69, align 4, !tbaa !9
  %1832 = icmp sgt i32 %1831, 0
  br i1 %1832, label %1833, label %1925

1833:                                             ; preds = %1830
  %1834 = load ptr, ptr %18, align 8, !tbaa !5
  %1835 = load i32, ptr %1834, align 4, !tbaa !9
  %1836 = sub nsw i32 %1835, 1
  store i32 %1836, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %1837

1837:                                             ; preds = %1876, %1833
  %1838 = load i32, ptr %58, align 4, !tbaa !9
  %1839 = load i32, ptr %38, align 4, !tbaa !9
  %1840 = icmp sle i32 %1838, %1839
  br i1 %1840, label %1841, label %1879

1841:                                             ; preds = %1837
  %1842 = load ptr, ptr %20, align 8, !tbaa !5
  %1843 = load i32, ptr %72, align 4, !tbaa !9
  %1844 = load i32, ptr %58, align 4, !tbaa !9
  %1845 = sub nsw i32 %1843, %1844
  %1846 = load i32, ptr %66, align 4, !tbaa !9
  %1847 = load i32, ptr %29, align 4, !tbaa !9
  %1848 = mul nsw i32 %1846, %1847
  %1849 = add nsw i32 %1845, %1848
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds %struct.doublecomplex, ptr %1842, i64 %1850
  %1852 = load ptr, ptr %20, align 8, !tbaa !5
  %1853 = load ptr, ptr %18, align 8, !tbaa !5
  %1854 = load i32, ptr %1853, align 4, !tbaa !9
  %1855 = load i32, ptr %58, align 4, !tbaa !9
  %1856 = sub nsw i32 %1854, %1855
  %1857 = load i32, ptr %66, align 4, !tbaa !9
  %1858 = add nsw i32 %1857, 1
  %1859 = load i32, ptr %29, align 4, !tbaa !9
  %1860 = mul nsw i32 %1858, %1859
  %1861 = add nsw i32 %1856, %1860
  %1862 = sext i32 %1861 to i64
  %1863 = getelementptr inbounds %struct.doublecomplex, ptr %1852, i64 %1862
  %1864 = load ptr, ptr %27, align 8, !tbaa !5
  %1865 = load i32, ptr %66, align 4, !tbaa !9
  %1866 = load i32, ptr %59, align 4, !tbaa !9
  %1867 = sub nsw i32 %1865, %1866
  %1868 = sext i32 %1867 to i64
  %1869 = getelementptr inbounds double, ptr %1864, i64 %1868
  %1870 = load ptr, ptr %26, align 8, !tbaa !5
  %1871 = load i32, ptr %66, align 4, !tbaa !9
  %1872 = load i32, ptr %59, align 4, !tbaa !9
  %1873 = sub nsw i32 %1871, %1872
  %1874 = sext i32 %1873 to i64
  %1875 = getelementptr inbounds %struct.doublecomplex, ptr %1870, i64 %1874
  call void @zlartv_(ptr noundef %69, ptr noundef %1851, ptr noundef %54, ptr noundef %1863, ptr noundef %54, ptr noundef %1869, ptr noundef %1875, ptr noundef %72)
  br label %1876

1876:                                             ; preds = %1841
  %1877 = load i32, ptr %58, align 4, !tbaa !9
  %1878 = add nsw i32 %1877, 1
  store i32 %1878, ptr %58, align 4, !tbaa !9
  br label %1837, !llvm.loop !25

1879:                                             ; preds = %1837
  %1880 = load ptr, ptr %20, align 8, !tbaa !5
  %1881 = load i32, ptr %72, align 4, !tbaa !9
  %1882 = load i32, ptr %66, align 4, !tbaa !9
  %1883 = load i32, ptr %29, align 4, !tbaa !9
  %1884 = mul nsw i32 %1882, %1883
  %1885 = add nsw i32 %1881, %1884
  %1886 = sext i32 %1885 to i64
  %1887 = getelementptr inbounds %struct.doublecomplex, ptr %1880, i64 %1886
  %1888 = load ptr, ptr %20, align 8, !tbaa !5
  %1889 = load i32, ptr %72, align 4, !tbaa !9
  %1890 = load i32, ptr %66, align 4, !tbaa !9
  %1891 = add nsw i32 %1890, 1
  %1892 = load i32, ptr %29, align 4, !tbaa !9
  %1893 = mul nsw i32 %1891, %1892
  %1894 = add nsw i32 %1889, %1893
  %1895 = sext i32 %1894 to i64
  %1896 = getelementptr inbounds %struct.doublecomplex, ptr %1888, i64 %1895
  %1897 = load ptr, ptr %20, align 8, !tbaa !5
  %1898 = load ptr, ptr %18, align 8, !tbaa !5
  %1899 = load i32, ptr %1898, align 4, !tbaa !9
  %1900 = load i32, ptr %66, align 4, !tbaa !9
  %1901 = add nsw i32 %1900, 1
  %1902 = load i32, ptr %29, align 4, !tbaa !9
  %1903 = mul nsw i32 %1901, %1902
  %1904 = add nsw i32 %1899, %1903
  %1905 = sext i32 %1904 to i64
  %1906 = getelementptr inbounds %struct.doublecomplex, ptr %1897, i64 %1905
  %1907 = load ptr, ptr %27, align 8, !tbaa !5
  %1908 = load i32, ptr %66, align 4, !tbaa !9
  %1909 = load i32, ptr %59, align 4, !tbaa !9
  %1910 = sub nsw i32 %1908, %1909
  %1911 = sext i32 %1910 to i64
  %1912 = getelementptr inbounds double, ptr %1907, i64 %1911
  %1913 = load ptr, ptr %26, align 8, !tbaa !5
  %1914 = load i32, ptr %66, align 4, !tbaa !9
  %1915 = load i32, ptr %59, align 4, !tbaa !9
  %1916 = sub nsw i32 %1914, %1915
  %1917 = sext i32 %1916 to i64
  %1918 = getelementptr inbounds %struct.doublecomplex, ptr %1913, i64 %1917
  call void @zlar2v_(ptr noundef %69, ptr noundef %1887, ptr noundef %1896, ptr noundef %1906, ptr noundef %54, ptr noundef %1912, ptr noundef %1918, ptr noundef %72)
  %1919 = load ptr, ptr %26, align 8, !tbaa !5
  %1920 = load i32, ptr %66, align 4, !tbaa !9
  %1921 = load i32, ptr %59, align 4, !tbaa !9
  %1922 = sub nsw i32 %1920, %1921
  %1923 = sext i32 %1922 to i64
  %1924 = getelementptr inbounds %struct.doublecomplex, ptr %1919, i64 %1923
  call void @zlacgv_(ptr noundef %69, ptr noundef %1924, ptr noundef %72)
  br label %1925

1925:                                             ; preds = %1879, %1830
  %1926 = load ptr, ptr %19, align 8, !tbaa !5
  %1927 = load i32, ptr %1926, align 4, !tbaa !9
  %1928 = load i32, ptr %57, align 4, !tbaa !9
  %1929 = sub nsw i32 %1927, %1928
  %1930 = add nsw i32 %1929, 1
  store i32 %1930, ptr %38, align 4, !tbaa !9
  %1931 = load ptr, ptr %18, align 8, !tbaa !5
  %1932 = load i32, ptr %1931, align 4, !tbaa !9
  %1933 = sub nsw i32 %1932, 1
  store i32 %1933, ptr %58, align 4, !tbaa !9
  br label %1934

1934:                                             ; preds = %1988, %1925
  %1935 = load i32, ptr %58, align 4, !tbaa !9
  %1936 = load i32, ptr %38, align 4, !tbaa !9
  %1937 = icmp sge i32 %1935, %1936
  br i1 %1937, label %1938, label %1991

1938:                                             ; preds = %1934
  %1939 = load ptr, ptr %17, align 8, !tbaa !5
  %1940 = load i32, ptr %1939, align 4, !tbaa !9
  %1941 = load i32, ptr %66, align 4, !tbaa !9
  %1942 = sub nsw i32 %1940, %1941
  %1943 = load i32, ptr %58, align 4, !tbaa !9
  %1944 = add nsw i32 %1942, %1943
  %1945 = load i32, ptr %72, align 4, !tbaa !9
  %1946 = sdiv i32 %1944, %1945
  store i32 %1946, ptr %79, align 4, !tbaa !9
  %1947 = load i32, ptr %79, align 4, !tbaa !9
  %1948 = icmp sgt i32 %1947, 0
  br i1 %1948, label %1949, label %1987

1949:                                             ; preds = %1938
  %1950 = load ptr, ptr %20, align 8, !tbaa !5
  %1951 = load i32, ptr %58, align 4, !tbaa !9
  %1952 = load i32, ptr %66, align 4, !tbaa !9
  %1953 = load i32, ptr %72, align 4, !tbaa !9
  %1954 = add nsw i32 %1952, %1953
  %1955 = load i32, ptr %58, align 4, !tbaa !9
  %1956 = sub nsw i32 %1954, %1955
  %1957 = load i32, ptr %29, align 4, !tbaa !9
  %1958 = mul nsw i32 %1956, %1957
  %1959 = add nsw i32 %1951, %1958
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds %struct.doublecomplex, ptr %1950, i64 %1960
  %1962 = load ptr, ptr %20, align 8, !tbaa !5
  %1963 = load i32, ptr %58, align 4, !tbaa !9
  %1964 = add nsw i32 %1963, 1
  %1965 = load i32, ptr %66, align 4, !tbaa !9
  %1966 = load i32, ptr %72, align 4, !tbaa !9
  %1967 = add nsw i32 %1965, %1966
  %1968 = load i32, ptr %58, align 4, !tbaa !9
  %1969 = sub nsw i32 %1967, %1968
  %1970 = load i32, ptr %29, align 4, !tbaa !9
  %1971 = mul nsw i32 %1969, %1970
  %1972 = add nsw i32 %1964, %1971
  %1973 = sext i32 %1972 to i64
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %1962, i64 %1973
  %1975 = load ptr, ptr %27, align 8, !tbaa !5
  %1976 = load i32, ptr %66, align 4, !tbaa !9
  %1977 = load i32, ptr %59, align 4, !tbaa !9
  %1978 = sub nsw i32 %1976, %1977
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds double, ptr %1975, i64 %1979
  %1981 = load ptr, ptr %26, align 8, !tbaa !5
  %1982 = load i32, ptr %66, align 4, !tbaa !9
  %1983 = load i32, ptr %59, align 4, !tbaa !9
  %1984 = sub nsw i32 %1982, %1983
  %1985 = sext i32 %1984 to i64
  %1986 = getelementptr inbounds %struct.doublecomplex, ptr %1981, i64 %1985
  call void @zlartv_(ptr noundef %79, ptr noundef %1961, ptr noundef %54, ptr noundef %1974, ptr noundef %54, ptr noundef %1980, ptr noundef %1986, ptr noundef %72)
  br label %1987

1987:                                             ; preds = %1949, %1938
  br label %1988

1988:                                             ; preds = %1987
  %1989 = load i32, ptr %58, align 4, !tbaa !9
  %1990 = add nsw i32 %1989, -1
  store i32 %1990, ptr %58, align 4, !tbaa !9
  br label %1934, !llvm.loop !26

1991:                                             ; preds = %1934
  %1992 = load i32, ptr %67, align 4, !tbaa !9
  %1993 = icmp ne i32 %1992, 0
  br i1 %1993, label %1994, label %2062

1994:                                             ; preds = %1991
  %1995 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1995, ptr %38, align 4, !tbaa !9
  %1996 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1996, ptr %36, align 4, !tbaa !9
  %1997 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1997, ptr %56, align 4, !tbaa !9
  br label %1998

1998:                                             ; preds = %2057, %1994
  %1999 = load i32, ptr %36, align 4, !tbaa !9
  %2000 = icmp slt i32 %1999, 0
  br i1 %2000, label %2001, label %2006

2001:                                             ; preds = %1998
  %2002 = load i32, ptr %56, align 4, !tbaa !9
  %2003 = load i32, ptr %38, align 4, !tbaa !9
  %2004 = icmp sge i32 %2002, %2003
  %2005 = zext i1 %2004 to i32
  br label %2011

2006:                                             ; preds = %1998
  %2007 = load i32, ptr %56, align 4, !tbaa !9
  %2008 = load i32, ptr %38, align 4, !tbaa !9
  %2009 = icmp sle i32 %2007, %2008
  %2010 = zext i1 %2009 to i32
  br label %2011

2011:                                             ; preds = %2006, %2001
  %2012 = phi i32 [ %2005, %2001 ], [ %2010, %2006 ]
  %2013 = icmp ne i32 %2012, 0
  br i1 %2013, label %2014, label %2061

2014:                                             ; preds = %2011
  %2015 = load ptr, ptr %17, align 8, !tbaa !5
  %2016 = load i32, ptr %2015, align 4, !tbaa !9
  %2017 = load i32, ptr %59, align 4, !tbaa !9
  %2018 = sub nsw i32 %2016, %2017
  store i32 %2018, ptr %35, align 4, !tbaa !9
  %2019 = load ptr, ptr %26, align 8, !tbaa !5
  %2020 = load i32, ptr %56, align 4, !tbaa !9
  %2021 = load i32, ptr %59, align 4, !tbaa !9
  %2022 = sub nsw i32 %2020, %2021
  %2023 = sext i32 %2022 to i64
  %2024 = getelementptr inbounds %struct.doublecomplex, ptr %2019, i64 %2023
  %2025 = call { double, double } @Cd(ptr noundef %2024)
  %2026 = extractvalue { double, double } %2025, 0
  %2027 = extractvalue { double, double } %2025, 1
  %2028 = fneg double %2027
  %2029 = call ptr @_pCd(ptr noundef %44)
  %2030 = getelementptr inbounds { double, double }, ptr %2029, i32 0, i32 0
  %2031 = getelementptr inbounds { double, double }, ptr %2029, i32 0, i32 1
  store double %2026, ptr %2030, align 8
  store double %2028, ptr %2031, align 8
  %2032 = load ptr, ptr %24, align 8, !tbaa !5
  %2033 = load i32, ptr %59, align 4, !tbaa !9
  %2034 = add nsw i32 %2033, 1
  %2035 = load i32, ptr %56, align 4, !tbaa !9
  %2036 = load i32, ptr %33, align 4, !tbaa !9
  %2037 = mul nsw i32 %2035, %2036
  %2038 = add nsw i32 %2034, %2037
  %2039 = sext i32 %2038 to i64
  %2040 = getelementptr inbounds %struct.doublecomplex, ptr %2032, i64 %2039
  %2041 = load ptr, ptr %24, align 8, !tbaa !5
  %2042 = load i32, ptr %59, align 4, !tbaa !9
  %2043 = add nsw i32 %2042, 1
  %2044 = load i32, ptr %56, align 4, !tbaa !9
  %2045 = add nsw i32 %2044, 1
  %2046 = load i32, ptr %33, align 4, !tbaa !9
  %2047 = mul nsw i32 %2045, %2046
  %2048 = add nsw i32 %2043, %2047
  %2049 = sext i32 %2048 to i64
  %2050 = getelementptr inbounds %struct.doublecomplex, ptr %2041, i64 %2049
  %2051 = load ptr, ptr %27, align 8, !tbaa !5
  %2052 = load i32, ptr %56, align 4, !tbaa !9
  %2053 = load i32, ptr %59, align 4, !tbaa !9
  %2054 = sub nsw i32 %2052, %2053
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds double, ptr %2051, i64 %2055
  call void @zrot_(ptr noundef %35, ptr noundef %2040, ptr noundef @c__1, ptr noundef %2050, ptr noundef @c__1, ptr noundef %2056, ptr noundef %44)
  br label %2057

2057:                                             ; preds = %2014
  %2058 = load i32, ptr %36, align 4, !tbaa !9
  %2059 = load i32, ptr %56, align 4, !tbaa !9
  %2060 = add nsw i32 %2059, %2058
  store i32 %2060, ptr %56, align 4, !tbaa !9
  br label %1998, !llvm.loop !27

2061:                                             ; preds = %2011
  br label %2062

2062:                                             ; preds = %2061, %1991
  br label %2063

2063:                                             ; preds = %2062
  %2064 = load i32, ptr %57, align 4, !tbaa !9
  %2065 = add nsw i32 %2064, 1
  store i32 %2065, ptr %57, align 4, !tbaa !9
  br label %1217, !llvm.loop !28

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

2069:                                             ; preds = %2066
  %2070 = load i32, ptr %64, align 4, !tbaa !9
  %2071 = load ptr, ptr %17, align 8, !tbaa !5
  %2072 = load i32, ptr %2071, align 4, !tbaa !9
  %2073 = icmp sle i32 %2070, %2072
  br i1 %2073, label %2074, label %2141

2074:                                             ; preds = %2069
  %2075 = load i32, ptr %78, align 4, !tbaa !9
  %2076 = icmp sgt i32 %2075, 0
  br i1 %2076, label %2077, label %2141

2077:                                             ; preds = %2074
  %2078 = load i32, ptr %55, align 4, !tbaa !9
  %2079 = load i32, ptr %78, align 4, !tbaa !9
  %2080 = sub nsw i32 %2078, %2079
  store i32 %2080, ptr %37, align 4, !tbaa !9
  %2081 = load i32, ptr %73, align 4, !tbaa !9
  %2082 = load i32, ptr %78, align 4, !tbaa !9
  %2083 = sub nsw i32 %2081, %2082
  %2084 = load i32, ptr %55, align 4, !tbaa !9
  %2085 = load i32, ptr %31, align 4, !tbaa !9
  %2086 = mul nsw i32 %2084, %2085
  %2087 = add nsw i32 %2083, %2086
  store i32 %2087, ptr %36, align 4, !tbaa !9
  %2088 = load ptr, ptr %22, align 8, !tbaa !5
  %2089 = load i32, ptr %36, align 4, !tbaa !9
  %2090 = sext i32 %2089 to i64
  %2091 = getelementptr inbounds %struct.doublecomplex, ptr %2088, i64 %2090
  %2092 = getelementptr inbounds %struct.doublecomplex, ptr %2091, i32 0, i32 0
  %2093 = load double, ptr %2092, align 8, !tbaa !11
  %2094 = fneg double %2093
  %2095 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2094, ptr %2095, align 8, !tbaa !11
  %2096 = load ptr, ptr %22, align 8, !tbaa !5
  %2097 = load i32, ptr %36, align 4, !tbaa !9
  %2098 = sext i32 %2097 to i64
  %2099 = getelementptr inbounds %struct.doublecomplex, ptr %2096, i64 %2098
  %2100 = getelementptr inbounds %struct.doublecomplex, ptr %2099, i32 0, i32 1
  %2101 = load double, ptr %2100, align 8, !tbaa !15
  %2102 = fneg double %2101
  %2103 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2102, ptr %2103, align 8, !tbaa !15
  %2104 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2105 = load double, ptr %2104, align 8, !tbaa !11
  %2106 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %2107 = load double, ptr %2106, align 8, !tbaa !11
  %2108 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2109 = load double, ptr %2108, align 8, !tbaa !15
  %2110 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %2111 = load double, ptr %2110, align 8, !tbaa !15
  %2112 = fmul double %2109, %2111
  %2113 = fneg double %2112
  %2114 = call double @llvm.fmuladd.f64(double %2105, double %2107, double %2113)
  %2115 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %2114, ptr %2115, align 8, !tbaa !11
  %2116 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2117 = load double, ptr %2116, align 8, !tbaa !11
  %2118 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %2119 = load double, ptr %2118, align 8, !tbaa !15
  %2120 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2121 = load double, ptr %2120, align 8, !tbaa !15
  %2122 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %2123 = load double, ptr %2122, align 8, !tbaa !11
  %2124 = fmul double %2121, %2123
  %2125 = call double @llvm.fmuladd.f64(double %2117, double %2119, double %2124)
  %2126 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %2125, ptr %2126, align 8, !tbaa !15
  %2127 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2128 = load double, ptr %2127, align 8, !tbaa !11
  %2129 = load ptr, ptr %26, align 8, !tbaa !5
  %2130 = load i32, ptr %37, align 4, !tbaa !9
  %2131 = sext i32 %2130 to i64
  %2132 = getelementptr inbounds %struct.doublecomplex, ptr %2129, i64 %2131
  %2133 = getelementptr inbounds %struct.doublecomplex, ptr %2132, i32 0, i32 0
  store double %2128, ptr %2133, align 8, !tbaa !11
  %2134 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2135 = load double, ptr %2134, align 8, !tbaa !15
  %2136 = load ptr, ptr %26, align 8, !tbaa !5
  %2137 = load i32, ptr %37, align 4, !tbaa !9
  %2138 = sext i32 %2137 to i64
  %2139 = getelementptr inbounds %struct.doublecomplex, ptr %2136, i64 %2138
  %2140 = getelementptr inbounds %struct.doublecomplex, ptr %2139, i32 0, i32 1
  store double %2135, ptr %2140, align 8, !tbaa !15
  br label %2141

2141:                                             ; preds = %2077, %2074, %2069
  br label %2142

2142:                                             ; preds = %2141, %2066
  %2143 = load ptr, ptr %19, align 8, !tbaa !5
  %2144 = load i32, ptr %2143, align 4, !tbaa !9
  store i32 %2144, ptr %57, align 4, !tbaa !9
  br label %2145

2145:                                             ; preds = %2540, %2142
  %2146 = load i32, ptr %57, align 4, !tbaa !9
  %2147 = icmp sge i32 %2146, 1
  br i1 %2147, label %2148, label %2543

2148:                                             ; preds = %2145
  %2149 = load i32, ptr %71, align 4, !tbaa !9
  %2150 = icmp ne i32 %2149, 0
  br i1 %2150, label %2151, label %2172

2151:                                             ; preds = %2148
  store i32 2, ptr %37, align 4, !tbaa !9
  %2152 = load i32, ptr %57, align 4, !tbaa !9
  %2153 = load i32, ptr %61, align 4, !tbaa !9
  %2154 = sub nsw i32 %2152, %2153
  %2155 = add nsw i32 %2154, 1
  store i32 %2155, ptr %36, align 4, !tbaa !9
  %2156 = load i32, ptr %55, align 4, !tbaa !9
  %2157 = load i32, ptr %57, align 4, !tbaa !9
  %2158 = sub nsw i32 %2156, %2157
  %2159 = sub nsw i32 %2158, 1
  %2160 = load i32, ptr %37, align 4, !tbaa !9
  %2161 = load i32, ptr %36, align 4, !tbaa !9
  %2162 = icmp sge i32 %2160, %2161
  br i1 %2162, label %2163, label %2165

2163:                                             ; preds = %2151
  %2164 = load i32, ptr %37, align 4, !tbaa !9
  br label %2167

2165:                                             ; preds = %2151
  %2166 = load i32, ptr %36, align 4, !tbaa !9
  br label %2167

2167:                                             ; preds = %2165, %2163
  %2168 = phi i32 [ %2164, %2163 ], [ %2166, %2165 ]
  %2169 = load i32, ptr %72, align 4, !tbaa !9
  %2170 = mul nsw i32 %2168, %2169
  %2171 = add nsw i32 %2159, %2170
  store i32 %2171, ptr %66, align 4, !tbaa !9
  br label %2193

2172:                                             ; preds = %2148
  store i32 1, ptr %37, align 4, !tbaa !9
  %2173 = load i32, ptr %57, align 4, !tbaa !9
  %2174 = load i32, ptr %61, align 4, !tbaa !9
  %2175 = sub nsw i32 %2173, %2174
  %2176 = add nsw i32 %2175, 1
  store i32 %2176, ptr %36, align 4, !tbaa !9
  %2177 = load i32, ptr %55, align 4, !tbaa !9
  %2178 = load i32, ptr %57, align 4, !tbaa !9
  %2179 = sub nsw i32 %2177, %2178
  %2180 = sub nsw i32 %2179, 1
  %2181 = load i32, ptr %37, align 4, !tbaa !9
  %2182 = load i32, ptr %36, align 4, !tbaa !9
  %2183 = icmp sge i32 %2181, %2182
  br i1 %2183, label %2184, label %2186

2184:                                             ; preds = %2172
  %2185 = load i32, ptr %37, align 4, !tbaa !9
  br label %2188

2186:                                             ; preds = %2172
  %2187 = load i32, ptr %36, align 4, !tbaa !9
  br label %2188

2188:                                             ; preds = %2186, %2184
  %2189 = phi i32 [ %2185, %2184 ], [ %2187, %2186 ]
  %2190 = load i32, ptr %72, align 4, !tbaa !9
  %2191 = mul nsw i32 %2189, %2190
  %2192 = add nsw i32 %2180, %2191
  store i32 %2192, ptr %66, align 4, !tbaa !9
  br label %2193

2193:                                             ; preds = %2188, %2167
  %2194 = load ptr, ptr %19, align 8, !tbaa !5
  %2195 = load i32, ptr %2194, align 4, !tbaa !9
  %2196 = load i32, ptr %57, align 4, !tbaa !9
  %2197 = sub nsw i32 %2195, %2196
  store i32 %2197, ptr %58, align 4, !tbaa !9
  br label %2198

2198:                                             ; preds = %2254, %2193
  %2199 = load i32, ptr %58, align 4, !tbaa !9
  %2200 = icmp sge i32 %2199, 1
  br i1 %2200, label %2201, label %2257

2201:                                             ; preds = %2198
  %2202 = load ptr, ptr %17, align 8, !tbaa !5
  %2203 = load i32, ptr %2202, align 4, !tbaa !9
  %2204 = load i32, ptr %66, align 4, !tbaa !9
  %2205 = sub nsw i32 %2203, %2204
  %2206 = load ptr, ptr %18, align 8, !tbaa !5
  %2207 = load i32, ptr %2206, align 4, !tbaa !9
  %2208 = add nsw i32 %2205, %2207
  %2209 = load i32, ptr %58, align 4, !tbaa !9
  %2210 = add nsw i32 %2208, %2209
  %2211 = load i32, ptr %72, align 4, !tbaa !9
  %2212 = sdiv i32 %2210, %2211
  store i32 %2212, ptr %79, align 4, !tbaa !9
  %2213 = load i32, ptr %79, align 4, !tbaa !9
  %2214 = icmp sgt i32 %2213, 0
  br i1 %2214, label %2215, label %2253

2215:                                             ; preds = %2201
  %2216 = load ptr, ptr %20, align 8, !tbaa !5
  %2217 = load i32, ptr %58, align 4, !tbaa !9
  %2218 = load i32, ptr %66, align 4, !tbaa !9
  %2219 = load i32, ptr %58, align 4, !tbaa !9
  %2220 = sub nsw i32 %2218, %2219
  %2221 = add nsw i32 %2220, 1
  %2222 = load i32, ptr %29, align 4, !tbaa !9
  %2223 = mul nsw i32 %2221, %2222
  %2224 = add nsw i32 %2217, %2223
  %2225 = sext i32 %2224 to i64
  %2226 = getelementptr inbounds %struct.doublecomplex, ptr %2216, i64 %2225
  %2227 = load ptr, ptr %20, align 8, !tbaa !5
  %2228 = load i32, ptr %58, align 4, !tbaa !9
  %2229 = add nsw i32 %2228, 1
  %2230 = load i32, ptr %66, align 4, !tbaa !9
  %2231 = load i32, ptr %58, align 4, !tbaa !9
  %2232 = sub nsw i32 %2230, %2231
  %2233 = add nsw i32 %2232, 1
  %2234 = load i32, ptr %29, align 4, !tbaa !9
  %2235 = mul nsw i32 %2233, %2234
  %2236 = add nsw i32 %2229, %2235
  %2237 = sext i32 %2236 to i64
  %2238 = getelementptr inbounds %struct.doublecomplex, ptr %2227, i64 %2237
  %2239 = load ptr, ptr %27, align 8, !tbaa !5
  %2240 = load i32, ptr %66, align 4, !tbaa !9
  %2241 = load ptr, ptr %18, align 8, !tbaa !5
  %2242 = load i32, ptr %2241, align 4, !tbaa !9
  %2243 = sub nsw i32 %2240, %2242
  %2244 = sext i32 %2243 to i64
  %2245 = getelementptr inbounds double, ptr %2239, i64 %2244
  %2246 = load ptr, ptr %26, align 8, !tbaa !5
  %2247 = load i32, ptr %66, align 4, !tbaa !9
  %2248 = load ptr, ptr %18, align 8, !tbaa !5
  %2249 = load i32, ptr %2248, align 4, !tbaa !9
  %2250 = sub nsw i32 %2247, %2249
  %2251 = sext i32 %2250 to i64
  %2252 = getelementptr inbounds %struct.doublecomplex, ptr %2246, i64 %2251
  call void @zlartv_(ptr noundef %79, ptr noundef %2226, ptr noundef %54, ptr noundef %2238, ptr noundef %54, ptr noundef %2245, ptr noundef %2252, ptr noundef %72)
  br label %2253

2253:                                             ; preds = %2215, %2201
  br label %2254

2254:                                             ; preds = %2253
  %2255 = load i32, ptr %58, align 4, !tbaa !9
  %2256 = add nsw i32 %2255, -1
  store i32 %2256, ptr %58, align 4, !tbaa !9
  br label %2198, !llvm.loop !29

2257:                                             ; preds = %2198
  %2258 = load ptr, ptr %17, align 8, !tbaa !5
  %2259 = load i32, ptr %2258, align 4, !tbaa !9
  %2260 = load i32, ptr %66, align 4, !tbaa !9
  %2261 = sub nsw i32 %2259, %2260
  %2262 = load ptr, ptr %18, align 8, !tbaa !5
  %2263 = load i32, ptr %2262, align 4, !tbaa !9
  %2264 = add nsw i32 %2261, %2263
  %2265 = load i32, ptr %72, align 4, !tbaa !9
  %2266 = sdiv i32 %2264, %2265
  store i32 %2266, ptr %69, align 4, !tbaa !9
  %2267 = load i32, ptr %66, align 4, !tbaa !9
  %2268 = load i32, ptr %69, align 4, !tbaa !9
  %2269 = sub nsw i32 %2268, 1
  %2270 = load i32, ptr %72, align 4, !tbaa !9
  %2271 = mul nsw i32 %2269, %2270
  %2272 = add nsw i32 %2267, %2271
  store i32 %2272, ptr %65, align 4, !tbaa !9
  %2273 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %2273, ptr %37, align 4, !tbaa !9
  %2274 = load i32, ptr %72, align 4, !tbaa !9
  %2275 = sub nsw i32 0, %2274
  store i32 %2275, ptr %36, align 4, !tbaa !9
  %2276 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %2276, ptr %56, align 4, !tbaa !9
  br label %2277

2277:                                             ; preds = %2333, %2257
  %2278 = load i32, ptr %36, align 4, !tbaa !9
  %2279 = icmp slt i32 %2278, 0
  br i1 %2279, label %2280, label %2285

2280:                                             ; preds = %2277
  %2281 = load i32, ptr %56, align 4, !tbaa !9
  %2282 = load i32, ptr %37, align 4, !tbaa !9
  %2283 = icmp sge i32 %2281, %2282
  %2284 = zext i1 %2283 to i32
  br label %2290

2285:                                             ; preds = %2277
  %2286 = load i32, ptr %56, align 4, !tbaa !9
  %2287 = load i32, ptr %37, align 4, !tbaa !9
  %2288 = icmp sle i32 %2286, %2287
  %2289 = zext i1 %2288 to i32
  br label %2290

2290:                                             ; preds = %2285, %2280
  %2291 = phi i32 [ %2284, %2280 ], [ %2289, %2285 ]
  %2292 = icmp ne i32 %2291, 0
  br i1 %2292, label %2293, label %2337

2293:                                             ; preds = %2290
  %2294 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %2294, ptr %38, align 4, !tbaa !9
  %2295 = load i32, ptr %56, align 4, !tbaa !9
  %2296 = load ptr, ptr %18, align 8, !tbaa !5
  %2297 = load i32, ptr %2296, align 4, !tbaa !9
  %2298 = sub nsw i32 %2295, %2297
  store i32 %2298, ptr %35, align 4, !tbaa !9
  %2299 = load ptr, ptr %26, align 8, !tbaa !5
  %2300 = load i32, ptr %35, align 4, !tbaa !9
  %2301 = sext i32 %2300 to i64
  %2302 = getelementptr inbounds %struct.doublecomplex, ptr %2299, i64 %2301
  %2303 = getelementptr inbounds %struct.doublecomplex, ptr %2302, i32 0, i32 0
  %2304 = load double, ptr %2303, align 8, !tbaa !11
  %2305 = load ptr, ptr %26, align 8, !tbaa !5
  %2306 = load i32, ptr %38, align 4, !tbaa !9
  %2307 = sext i32 %2306 to i64
  %2308 = getelementptr inbounds %struct.doublecomplex, ptr %2305, i64 %2307
  %2309 = getelementptr inbounds %struct.doublecomplex, ptr %2308, i32 0, i32 0
  store double %2304, ptr %2309, align 8, !tbaa !11
  %2310 = load ptr, ptr %26, align 8, !tbaa !5
  %2311 = load i32, ptr %35, align 4, !tbaa !9
  %2312 = sext i32 %2311 to i64
  %2313 = getelementptr inbounds %struct.doublecomplex, ptr %2310, i64 %2312
  %2314 = getelementptr inbounds %struct.doublecomplex, ptr %2313, i32 0, i32 1
  %2315 = load double, ptr %2314, align 8, !tbaa !15
  %2316 = load ptr, ptr %26, align 8, !tbaa !5
  %2317 = load i32, ptr %38, align 4, !tbaa !9
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds %struct.doublecomplex, ptr %2316, i64 %2318
  %2320 = getelementptr inbounds %struct.doublecomplex, ptr %2319, i32 0, i32 1
  store double %2315, ptr %2320, align 8, !tbaa !15
  %2321 = load ptr, ptr %27, align 8, !tbaa !5
  %2322 = load i32, ptr %56, align 4, !tbaa !9
  %2323 = load ptr, ptr %18, align 8, !tbaa !5
  %2324 = load i32, ptr %2323, align 4, !tbaa !9
  %2325 = sub nsw i32 %2322, %2324
  %2326 = sext i32 %2325 to i64
  %2327 = getelementptr inbounds double, ptr %2321, i64 %2326
  %2328 = load double, ptr %2327, align 8, !tbaa !14
  %2329 = load ptr, ptr %27, align 8, !tbaa !5
  %2330 = load i32, ptr %56, align 4, !tbaa !9
  %2331 = sext i32 %2330 to i64
  %2332 = getelementptr inbounds double, ptr %2329, i64 %2331
  store double %2328, ptr %2332, align 8, !tbaa !14
  br label %2333

2333:                                             ; preds = %2293
  %2334 = load i32, ptr %36, align 4, !tbaa !9
  %2335 = load i32, ptr %56, align 4, !tbaa !9
  %2336 = add nsw i32 %2335, %2334
  store i32 %2336, ptr %56, align 4, !tbaa !9
  br label %2277, !llvm.loop !30

2337:                                             ; preds = %2290
  %2338 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %2338, ptr %36, align 4, !tbaa !9
  %2339 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %2339, ptr %37, align 4, !tbaa !9
  %2340 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %2340, ptr %56, align 4, !tbaa !9
  br label %2341

2341:                                             ; preds = %2485, %2337
  %2342 = load i32, ptr %37, align 4, !tbaa !9
  %2343 = icmp slt i32 %2342, 0
  br i1 %2343, label %2344, label %2349

2344:                                             ; preds = %2341
  %2345 = load i32, ptr %56, align 4, !tbaa !9
  %2346 = load i32, ptr %36, align 4, !tbaa !9
  %2347 = icmp sge i32 %2345, %2346
  %2348 = zext i1 %2347 to i32
  br label %2354

2349:                                             ; preds = %2341
  %2350 = load i32, ptr %56, align 4, !tbaa !9
  %2351 = load i32, ptr %36, align 4, !tbaa !9
  %2352 = icmp sle i32 %2350, %2351
  %2353 = zext i1 %2352 to i32
  br label %2354

2354:                                             ; preds = %2349, %2344
  %2355 = phi i32 [ %2348, %2344 ], [ %2353, %2349 ]
  %2356 = icmp ne i32 %2355, 0
  br i1 %2356, label %2357, label %2489

2357:                                             ; preds = %2354
  %2358 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %2358, ptr %38, align 4, !tbaa !9
  %2359 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %2359, ptr %35, align 4, !tbaa !9
  %2360 = load i32, ptr %56, align 4, !tbaa !9
  %2361 = add nsw i32 %2360, 1
  %2362 = load i32, ptr %29, align 4, !tbaa !9
  %2363 = mul nsw i32 %2361, %2362
  %2364 = add nsw i32 %2363, 1
  store i32 %2364, ptr %39, align 4, !tbaa !9
  %2365 = load ptr, ptr %26, align 8, !tbaa !5
  %2366 = load i32, ptr %35, align 4, !tbaa !9
  %2367 = sext i32 %2366 to i64
  %2368 = getelementptr inbounds %struct.doublecomplex, ptr %2365, i64 %2367
  %2369 = getelementptr inbounds %struct.doublecomplex, ptr %2368, i32 0, i32 0
  %2370 = load double, ptr %2369, align 8, !tbaa !11
  %2371 = load ptr, ptr %20, align 8, !tbaa !5
  %2372 = load i32, ptr %39, align 4, !tbaa !9
  %2373 = sext i32 %2372 to i64
  %2374 = getelementptr inbounds %struct.doublecomplex, ptr %2371, i64 %2373
  %2375 = getelementptr inbounds %struct.doublecomplex, ptr %2374, i32 0, i32 0
  %2376 = load double, ptr %2375, align 8, !tbaa !11
  %2377 = load ptr, ptr %26, align 8, !tbaa !5
  %2378 = load i32, ptr %35, align 4, !tbaa !9
  %2379 = sext i32 %2378 to i64
  %2380 = getelementptr inbounds %struct.doublecomplex, ptr %2377, i64 %2379
  %2381 = getelementptr inbounds %struct.doublecomplex, ptr %2380, i32 0, i32 1
  %2382 = load double, ptr %2381, align 8, !tbaa !15
  %2383 = load ptr, ptr %20, align 8, !tbaa !5
  %2384 = load i32, ptr %39, align 4, !tbaa !9
  %2385 = sext i32 %2384 to i64
  %2386 = getelementptr inbounds %struct.doublecomplex, ptr %2383, i64 %2385
  %2387 = getelementptr inbounds %struct.doublecomplex, ptr %2386, i32 0, i32 1
  %2388 = load double, ptr %2387, align 8, !tbaa !15
  %2389 = fmul double %2382, %2388
  %2390 = fneg double %2389
  %2391 = call double @llvm.fmuladd.f64(double %2370, double %2376, double %2390)
  %2392 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %2391, ptr %2392, align 8, !tbaa !11
  %2393 = load ptr, ptr %26, align 8, !tbaa !5
  %2394 = load i32, ptr %35, 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 0
  %2398 = load double, ptr %2397, align 8, !tbaa !11
  %2399 = load ptr, ptr %20, align 8, !tbaa !5
  %2400 = load i32, ptr %39, align 4, !tbaa !9
  %2401 = sext i32 %2400 to i64
  %2402 = getelementptr inbounds %struct.doublecomplex, ptr %2399, i64 %2401
  %2403 = getelementptr inbounds %struct.doublecomplex, ptr %2402, i32 0, i32 1
  %2404 = load double, ptr %2403, align 8, !tbaa !15
  %2405 = load ptr, ptr %26, align 8, !tbaa !5
  %2406 = load i32, ptr %35, align 4, !tbaa !9
  %2407 = sext i32 %2406 to i64
  %2408 = getelementptr inbounds %struct.doublecomplex, ptr %2405, i64 %2407
  %2409 = getelementptr inbounds %struct.doublecomplex, ptr %2408, i32 0, i32 1
  %2410 = load double, ptr %2409, align 8, !tbaa !15
  %2411 = load ptr, ptr %20, align 8, !tbaa !5
  %2412 = load i32, ptr %39, align 4, !tbaa !9
  %2413 = sext i32 %2412 to i64
  %2414 = getelementptr inbounds %struct.doublecomplex, ptr %2411, i64 %2413
  %2415 = getelementptr inbounds %struct.doublecomplex, ptr %2414, i32 0, i32 0
  %2416 = load double, ptr %2415, align 8, !tbaa !11
  %2417 = fmul double %2410, %2416
  %2418 = call double @llvm.fmuladd.f64(double %2398, double %2404, double %2417)
  %2419 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %2418, ptr %2419, align 8, !tbaa !15
  %2420 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2421 = load double, ptr %2420, align 8, !tbaa !11
  %2422 = load ptr, ptr %26, align 8, !tbaa !5
  %2423 = load i32, ptr %38, align 4, !tbaa !9
  %2424 = sext i32 %2423 to i64
  %2425 = getelementptr inbounds %struct.doublecomplex, ptr %2422, i64 %2424
  %2426 = getelementptr inbounds %struct.doublecomplex, ptr %2425, i32 0, i32 0
  store double %2421, ptr %2426, align 8, !tbaa !11
  %2427 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2428 = load double, ptr %2427, align 8, !tbaa !15
  %2429 = load ptr, ptr %26, align 8, !tbaa !5
  %2430 = load i32, ptr %38, align 4, !tbaa !9
  %2431 = sext i32 %2430 to i64
  %2432 = getelementptr inbounds %struct.doublecomplex, ptr %2429, i64 %2431
  %2433 = getelementptr inbounds %struct.doublecomplex, ptr %2432, i32 0, i32 1
  store double %2428, ptr %2433, align 8, !tbaa !15
  %2434 = load i32, ptr %56, align 4, !tbaa !9
  %2435 = add nsw i32 %2434, 1
  %2436 = load i32, ptr %29, align 4, !tbaa !9
  %2437 = mul nsw i32 %2435, %2436
  %2438 = add nsw i32 %2437, 1
  store i32 %2438, ptr %38, align 4, !tbaa !9
  %2439 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %2439, ptr %35, align 4, !tbaa !9
  %2440 = load i32, ptr %56, align 4, !tbaa !9
  %2441 = add nsw i32 %2440, 1
  %2442 = load i32, ptr %29, align 4, !tbaa !9
  %2443 = mul nsw i32 %2441, %2442
  %2444 = add nsw i32 %2443, 1
  store i32 %2444, ptr %39, align 4, !tbaa !9
  %2445 = load ptr, ptr %27, align 8, !tbaa !5
  %2446 = load i32, ptr %35, align 4, !tbaa !9
  %2447 = sext i32 %2446 to i64
  %2448 = getelementptr inbounds double, ptr %2445, i64 %2447
  %2449 = load double, ptr %2448, align 8, !tbaa !14
  %2450 = load ptr, ptr %20, align 8, !tbaa !5
  %2451 = load i32, ptr %39, align 4, !tbaa !9
  %2452 = sext i32 %2451 to i64
  %2453 = getelementptr inbounds %struct.doublecomplex, ptr %2450, i64 %2452
  %2454 = getelementptr inbounds %struct.doublecomplex, ptr %2453, i32 0, i32 0
  %2455 = load double, ptr %2454, align 8, !tbaa !11
  %2456 = fmul double %2449, %2455
  %2457 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %2456, ptr %2457, align 8, !tbaa !11
  %2458 = load ptr, ptr %27, align 8, !tbaa !5
  %2459 = load i32, ptr %35, align 4, !tbaa !9
  %2460 = sext i32 %2459 to i64
  %2461 = getelementptr inbounds double, ptr %2458, i64 %2460
  %2462 = load double, ptr %2461, align 8, !tbaa !14
  %2463 = load ptr, ptr %20, align 8, !tbaa !5
  %2464 = load i32, ptr %39, align 4, !tbaa !9
  %2465 = sext i32 %2464 to i64
  %2466 = getelementptr inbounds %struct.doublecomplex, ptr %2463, i64 %2465
  %2467 = getelementptr inbounds %struct.doublecomplex, ptr %2466, i32 0, i32 1
  %2468 = load double, ptr %2467, align 8, !tbaa !15
  %2469 = fmul double %2462, %2468
  %2470 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %2469, ptr %2470, align 8, !tbaa !15
  %2471 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %2472 = load double, ptr %2471, align 8, !tbaa !11
  %2473 = load ptr, ptr %20, align 8, !tbaa !5
  %2474 = load i32, ptr %38, align 4, !tbaa !9
  %2475 = sext i32 %2474 to i64
  %2476 = getelementptr inbounds %struct.doublecomplex, ptr %2473, i64 %2475
  %2477 = getelementptr inbounds %struct.doublecomplex, ptr %2476, i32 0, i32 0
  store double %2472, ptr %2477, align 8, !tbaa !11
  %2478 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %2479 = load double, ptr %2478, align 8, !tbaa !15
  %2480 = load ptr, ptr %20, align 8, !tbaa !5
  %2481 = load i32, ptr %38, align 4, !tbaa !9
  %2482 = sext i32 %2481 to i64
  %2483 = getelementptr inbounds %struct.doublecomplex, ptr %2480, i64 %2482
  %2484 = getelementptr inbounds %struct.doublecomplex, ptr %2483, i32 0, i32 1
  store double %2479, ptr %2484, align 8, !tbaa !15
  br label %2485

2485:                                             ; preds = %2357
  %2486 = load i32, ptr %37, align 4, !tbaa !9
  %2487 = load i32, ptr %56, align 4, !tbaa !9
  %2488 = add nsw i32 %2487, %2486
  store i32 %2488, ptr %56, align 4, !tbaa !9
  br label %2341, !llvm.loop !31

2489:                                             ; preds = %2354
  %2490 = load i32, ptr %71, align 4, !tbaa !9
  %2491 = icmp ne i32 %2490, 0
  br i1 %2491, label %2492, label %2539

2492:                                             ; preds = %2489
  %2493 = load i32, ptr %55, align 4, !tbaa !9
  %2494 = load i32, ptr %57, align 4, !tbaa !9
  %2495 = sub nsw i32 %2493, %2494
  %2496 = load ptr, ptr %17, align 8, !tbaa !5
  %2497 = load i32, ptr %2496, align 4, !tbaa !9
  %2498 = load ptr, ptr %18, align 8, !tbaa !5
  %2499 = load i32, ptr %2498, align 4, !tbaa !9
  %2500 = sub nsw i32 %2497, %2499
  %2501 = icmp slt i32 %2495, %2500
  br i1 %2501, label %2502, label %2538

2502:                                             ; preds = %2492
  %2503 = load i32, ptr %57, align 4, !tbaa !9
  %2504 = load i32, ptr %78, align 4, !tbaa !9
  %2505 = icmp sle i32 %2503, %2504
  br i1 %2505, label %2506, label %2538

2506:                                             ; preds = %2502
  %2507 = load i32, ptr %55, align 4, !tbaa !9
  %2508 = load i32, ptr %57, align 4, !tbaa !9
  %2509 = sub nsw i32 %2507, %2508
  %2510 = load ptr, ptr %18, align 8, !tbaa !5
  %2511 = load i32, ptr %2510, align 4, !tbaa !9
  %2512 = add nsw i32 %2509, %2511
  store i32 %2512, ptr %37, align 4, !tbaa !9
  %2513 = load i32, ptr %55, align 4, !tbaa !9
  %2514 = load i32, ptr %57, align 4, !tbaa !9
  %2515 = sub nsw i32 %2513, %2514
  store i32 %2515, ptr %36, align 4, !tbaa !9
  %2516 = load ptr, ptr %26, align 8, !tbaa !5
  %2517 = load i32, ptr %36, align 4, !tbaa !9
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds %struct.doublecomplex, ptr %2516, i64 %2518
  %2520 = getelementptr inbounds %struct.doublecomplex, ptr %2519, i32 0, i32 0
  %2521 = load double, ptr %2520, align 8, !tbaa !11
  %2522 = load ptr, ptr %26, align 8, !tbaa !5
  %2523 = load i32, ptr %37, align 4, !tbaa !9
  %2524 = sext i32 %2523 to i64
  %2525 = getelementptr inbounds %struct.doublecomplex, ptr %2522, i64 %2524
  %2526 = getelementptr inbounds %struct.doublecomplex, ptr %2525, i32 0, i32 0
  store double %2521, ptr %2526, align 8, !tbaa !11
  %2527 = load ptr, ptr %26, align 8, !tbaa !5
  %2528 = load i32, ptr %36, align 4, !tbaa !9
  %2529 = sext i32 %2528 to i64
  %2530 = getelementptr inbounds %struct.doublecomplex, ptr %2527, i64 %2529
  %2531 = getelementptr inbounds %struct.doublecomplex, ptr %2530, i32 0, i32 1
  %2532 = load double, ptr %2531, align 8, !tbaa !15
  %2533 = load ptr, ptr %26, align 8, !tbaa !5
  %2534 = load i32, ptr %37, align 4, !tbaa !9
  %2535 = sext i32 %2534 to i64
  %2536 = getelementptr inbounds %struct.doublecomplex, ptr %2533, i64 %2535
  %2537 = getelementptr inbounds %struct.doublecomplex, ptr %2536, i32 0, i32 1
  store double %2532, ptr %2537, align 8, !tbaa !15
  br label %2538

2538:                                             ; preds = %2506, %2502, %2492
  br label %2539

2539:                                             ; preds = %2538, %2489
  br label %2540

2540:                                             ; preds = %2539
  %2541 = load i32, ptr %57, align 4, !tbaa !9
  %2542 = add nsw i32 %2541, -1
  store i32 %2542, ptr %57, align 4, !tbaa !9
  br label %2145, !llvm.loop !32

2543:                                             ; preds = %2145
  %2544 = load ptr, ptr %19, align 8, !tbaa !5
  %2545 = load i32, ptr %2544, align 4, !tbaa !9
  store i32 %2545, ptr %57, align 4, !tbaa !9
  br label %2546

2546:                                             ; preds = %2814, %2543
  %2547 = load i32, ptr %57, align 4, !tbaa !9
  %2548 = icmp sge i32 %2547, 1
  br i1 %2548, label %2549, label %2817

2549:                                             ; preds = %2546
  store i32 1, ptr %37, align 4, !tbaa !9
  %2550 = load i32, ptr %57, align 4, !tbaa !9
  %2551 = load i32, ptr %61, align 4, !tbaa !9
  %2552 = sub nsw i32 %2550, %2551
  %2553 = add nsw i32 %2552, 1
  store i32 %2553, ptr %36, align 4, !tbaa !9
  %2554 = load i32, ptr %55, align 4, !tbaa !9
  %2555 = load i32, ptr %57, align 4, !tbaa !9
  %2556 = sub nsw i32 %2554, %2555
  %2557 = sub nsw i32 %2556, 1
  %2558 = load i32, ptr %37, align 4, !tbaa !9
  %2559 = load i32, ptr %36, align 4, !tbaa !9
  %2560 = icmp sge i32 %2558, %2559
  br i1 %2560, label %2561, label %2563

2561:                                             ; preds = %2549
  %2562 = load i32, ptr %37, align 4, !tbaa !9
  br label %2565

2563:                                             ; preds = %2549
  %2564 = load i32, ptr %36, align 4, !tbaa !9
  br label %2565

2565:                                             ; preds = %2563, %2561
  %2566 = phi i32 [ %2562, %2561 ], [ %2564, %2563 ]
  %2567 = load i32, ptr %72, align 4, !tbaa !9
  %2568 = mul nsw i32 %2566, %2567
  %2569 = add nsw i32 %2557, %2568
  store i32 %2569, ptr %66, align 4, !tbaa !9
  %2570 = load ptr, ptr %17, align 8, !tbaa !5
  %2571 = load i32, ptr %2570, align 4, !tbaa !9
  %2572 = load i32, ptr %66, align 4, !tbaa !9
  %2573 = sub nsw i32 %2571, %2572
  %2574 = load ptr, ptr %18, align 8, !tbaa !5
  %2575 = load i32, ptr %2574, align 4, !tbaa !9
  %2576 = add nsw i32 %2573, %2575
  %2577 = load i32, ptr %72, align 4, !tbaa !9
  %2578 = sdiv i32 %2576, %2577
  store i32 %2578, ptr %69, align 4, !tbaa !9
  %2579 = load i32, ptr %66, align 4, !tbaa !9
  %2580 = load i32, ptr %69, align 4, !tbaa !9
  %2581 = sub nsw i32 %2580, 1
  %2582 = load i32, ptr %72, align 4, !tbaa !9
  %2583 = mul nsw i32 %2581, %2582
  %2584 = add nsw i32 %2579, %2583
  store i32 %2584, ptr %65, align 4, !tbaa !9
  %2585 = load i32, ptr %69, align 4, !tbaa !9
  %2586 = icmp sgt i32 %2585, 0
  br i1 %2586, label %2587, label %2684

2587:                                             ; preds = %2565
  %2588 = load ptr, ptr %20, align 8, !tbaa !5
  %2589 = load i32, ptr %66, align 4, !tbaa !9
  %2590 = load i32, ptr %29, align 4, !tbaa !9
  %2591 = mul nsw i32 %2589, %2590
  %2592 = add nsw i32 %2591, 1
  %2593 = sext i32 %2592 to i64
  %2594 = getelementptr inbounds %struct.doublecomplex, ptr %2588, i64 %2593
  %2595 = load ptr, ptr %26, align 8, !tbaa !5
  %2596 = load i32, ptr %66, align 4, !tbaa !9
  %2597 = sext i32 %2596 to i64
  %2598 = getelementptr inbounds %struct.doublecomplex, ptr %2595, i64 %2597
  %2599 = load ptr, ptr %27, align 8, !tbaa !5
  %2600 = load i32, ptr %66, align 4, !tbaa !9
  %2601 = sext i32 %2600 to i64
  %2602 = getelementptr inbounds double, ptr %2599, i64 %2601
  call void @zlargv_(ptr noundef %69, ptr noundef %2594, ptr noundef %54, ptr noundef %2598, ptr noundef %72, ptr noundef %2602, ptr noundef %72)
  %2603 = load ptr, ptr %18, align 8, !tbaa !5
  %2604 = load i32, ptr %2603, align 4, !tbaa !9
  %2605 = sub nsw i32 %2604, 1
  store i32 %2605, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %2606

2606:                                             ; preds = %2641, %2587
  %2607 = load i32, ptr %58, align 4, !tbaa !9
  %2608 = load i32, ptr %37, align 4, !tbaa !9
  %2609 = icmp sle i32 %2607, %2608
  br i1 %2609, label %2610, label %2644

2610:                                             ; preds = %2606
  %2611 = load ptr, ptr %20, align 8, !tbaa !5
  %2612 = load i32, ptr %72, align 4, !tbaa !9
  %2613 = load i32, ptr %58, align 4, !tbaa !9
  %2614 = sub nsw i32 %2612, %2613
  %2615 = load i32, ptr %66, align 4, !tbaa !9
  %2616 = load i32, ptr %29, align 4, !tbaa !9
  %2617 = mul nsw i32 %2615, %2616
  %2618 = add nsw i32 %2614, %2617
  %2619 = sext i32 %2618 to i64
  %2620 = getelementptr inbounds %struct.doublecomplex, ptr %2611, i64 %2619
  %2621 = load ptr, ptr %20, align 8, !tbaa !5
  %2622 = load ptr, ptr %18, align 8, !tbaa !5
  %2623 = load i32, ptr %2622, align 4, !tbaa !9
  %2624 = load i32, ptr %58, align 4, !tbaa !9
  %2625 = sub nsw i32 %2623, %2624
  %2626 = load i32, ptr %66, align 4, !tbaa !9
  %2627 = add nsw i32 %2626, 1
  %2628 = load i32, ptr %29, align 4, !tbaa !9
  %2629 = mul nsw i32 %2627, %2628
  %2630 = add nsw i32 %2625, %2629
  %2631 = sext i32 %2630 to i64
  %2632 = getelementptr inbounds %struct.doublecomplex, ptr %2621, i64 %2631
  %2633 = load ptr, ptr %27, align 8, !tbaa !5
  %2634 = load i32, ptr %66, align 4, !tbaa !9
  %2635 = sext i32 %2634 to i64
  %2636 = getelementptr inbounds double, ptr %2633, i64 %2635
  %2637 = load ptr, ptr %26, align 8, !tbaa !5
  %2638 = load i32, ptr %66, align 4, !tbaa !9
  %2639 = sext i32 %2638 to i64
  %2640 = getelementptr inbounds %struct.doublecomplex, ptr %2637, i64 %2639
  call void @zlartv_(ptr noundef %69, ptr noundef %2620, ptr noundef %54, ptr noundef %2632, ptr noundef %54, ptr noundef %2636, ptr noundef %2640, ptr noundef %72)
  br label %2641

2641:                                             ; preds = %2610
  %2642 = load i32, ptr %58, align 4, !tbaa !9
  %2643 = add nsw i32 %2642, 1
  store i32 %2643, ptr %58, align 4, !tbaa !9
  br label %2606, !llvm.loop !33

2644:                                             ; preds = %2606
  %2645 = load ptr, ptr %20, align 8, !tbaa !5
  %2646 = load i32, ptr %72, align 4, !tbaa !9
  %2647 = load i32, ptr %66, align 4, !tbaa !9
  %2648 = load i32, ptr %29, align 4, !tbaa !9
  %2649 = mul nsw i32 %2647, %2648
  %2650 = add nsw i32 %2646, %2649
  %2651 = sext i32 %2650 to i64
  %2652 = getelementptr inbounds %struct.doublecomplex, ptr %2645, i64 %2651
  %2653 = load ptr, ptr %20, align 8, !tbaa !5
  %2654 = load i32, ptr %72, align 4, !tbaa !9
  %2655 = load i32, ptr %66, align 4, !tbaa !9
  %2656 = add nsw i32 %2655, 1
  %2657 = load i32, ptr %29, align 4, !tbaa !9
  %2658 = mul nsw i32 %2656, %2657
  %2659 = add nsw i32 %2654, %2658
  %2660 = sext i32 %2659 to i64
  %2661 = getelementptr inbounds %struct.doublecomplex, ptr %2653, i64 %2660
  %2662 = load ptr, ptr %20, align 8, !tbaa !5
  %2663 = load ptr, ptr %18, align 8, !tbaa !5
  %2664 = load i32, ptr %2663, align 4, !tbaa !9
  %2665 = load i32, ptr %66, align 4, !tbaa !9
  %2666 = add nsw i32 %2665, 1
  %2667 = load i32, ptr %29, align 4, !tbaa !9
  %2668 = mul nsw i32 %2666, %2667
  %2669 = add nsw i32 %2664, %2668
  %2670 = sext i32 %2669 to i64
  %2671 = getelementptr inbounds %struct.doublecomplex, ptr %2662, i64 %2670
  %2672 = load ptr, ptr %27, align 8, !tbaa !5
  %2673 = load i32, ptr %66, align 4, !tbaa !9
  %2674 = sext i32 %2673 to i64
  %2675 = getelementptr inbounds double, ptr %2672, i64 %2674
  %2676 = load ptr, ptr %26, align 8, !tbaa !5
  %2677 = load i32, ptr %66, align 4, !tbaa !9
  %2678 = sext i32 %2677 to i64
  %2679 = getelementptr inbounds %struct.doublecomplex, ptr %2676, i64 %2678
  call void @zlar2v_(ptr noundef %69, ptr noundef %2652, ptr noundef %2661, ptr noundef %2671, ptr noundef %54, ptr noundef %2675, ptr noundef %2679, ptr noundef %72)
  %2680 = load ptr, ptr %26, align 8, !tbaa !5
  %2681 = load i32, ptr %66, align 4, !tbaa !9
  %2682 = sext i32 %2681 to i64
  %2683 = getelementptr inbounds %struct.doublecomplex, ptr %2680, i64 %2682
  call void @zlacgv_(ptr noundef %69, ptr noundef %2683, ptr noundef %72)
  br label %2684

2684:                                             ; preds = %2644, %2565
  %2685 = load ptr, ptr %19, align 8, !tbaa !5
  %2686 = load i32, ptr %2685, align 4, !tbaa !9
  %2687 = load i32, ptr %57, align 4, !tbaa !9
  %2688 = sub nsw i32 %2686, %2687
  %2689 = add nsw i32 %2688, 1
  store i32 %2689, ptr %37, align 4, !tbaa !9
  %2690 = load ptr, ptr %18, align 8, !tbaa !5
  %2691 = load i32, ptr %2690, align 4, !tbaa !9
  %2692 = sub nsw i32 %2691, 1
  store i32 %2692, ptr %58, align 4, !tbaa !9
  br label %2693

2693:                                             ; preds = %2743, %2684
  %2694 = load i32, ptr %58, align 4, !tbaa !9
  %2695 = load i32, ptr %37, align 4, !tbaa !9
  %2696 = icmp sge i32 %2694, %2695
  br i1 %2696, label %2697, label %2746

2697:                                             ; preds = %2693
  %2698 = load ptr, ptr %17, align 8, !tbaa !5
  %2699 = load i32, ptr %2698, align 4, !tbaa !9
  %2700 = load i32, ptr %66, align 4, !tbaa !9
  %2701 = sub nsw i32 %2699, %2700
  %2702 = load i32, ptr %58, align 4, !tbaa !9
  %2703 = add nsw i32 %2701, %2702
  %2704 = load i32, ptr %72, align 4, !tbaa !9
  %2705 = sdiv i32 %2703, %2704
  store i32 %2705, ptr %79, align 4, !tbaa !9
  %2706 = load i32, ptr %79, align 4, !tbaa !9
  %2707 = icmp sgt i32 %2706, 0
  br i1 %2707, label %2708, label %2742

2708:                                             ; preds = %2697
  %2709 = load ptr, ptr %20, align 8, !tbaa !5
  %2710 = load i32, ptr %58, align 4, !tbaa !9
  %2711 = load i32, ptr %66, align 4, !tbaa !9
  %2712 = load i32, ptr %72, align 4, !tbaa !9
  %2713 = add nsw i32 %2711, %2712
  %2714 = load i32, ptr %58, align 4, !tbaa !9
  %2715 = sub nsw i32 %2713, %2714
  %2716 = load i32, ptr %29, align 4, !tbaa !9
  %2717 = mul nsw i32 %2715, %2716
  %2718 = add nsw i32 %2710, %2717
  %2719 = sext i32 %2718 to i64
  %2720 = getelementptr inbounds %struct.doublecomplex, ptr %2709, i64 %2719
  %2721 = load ptr, ptr %20, align 8, !tbaa !5
  %2722 = load i32, ptr %58, align 4, !tbaa !9
  %2723 = add nsw i32 %2722, 1
  %2724 = load i32, ptr %66, align 4, !tbaa !9
  %2725 = load i32, ptr %72, align 4, !tbaa !9
  %2726 = add nsw i32 %2724, %2725
  %2727 = load i32, ptr %58, align 4, !tbaa !9
  %2728 = sub nsw i32 %2726, %2727
  %2729 = load i32, ptr %29, align 4, !tbaa !9
  %2730 = mul nsw i32 %2728, %2729
  %2731 = add nsw i32 %2723, %2730
  %2732 = sext i32 %2731 to i64
  %2733 = getelementptr inbounds %struct.doublecomplex, ptr %2721, i64 %2732
  %2734 = load ptr, ptr %27, align 8, !tbaa !5
  %2735 = load i32, ptr %66, align 4, !tbaa !9
  %2736 = sext i32 %2735 to i64
  %2737 = getelementptr inbounds double, ptr %2734, i64 %2736
  %2738 = load ptr, ptr %26, align 8, !tbaa !5
  %2739 = load i32, ptr %66, align 4, !tbaa !9
  %2740 = sext i32 %2739 to i64
  %2741 = getelementptr inbounds %struct.doublecomplex, ptr %2738, i64 %2740
  call void @zlartv_(ptr noundef %79, ptr noundef %2720, ptr noundef %54, ptr noundef %2733, ptr noundef %54, ptr noundef %2737, ptr noundef %2741, ptr noundef %72)
  br label %2742

2742:                                             ; preds = %2708, %2697
  br label %2743

2743:                                             ; preds = %2742
  %2744 = load i32, ptr %58, align 4, !tbaa !9
  %2745 = add nsw i32 %2744, -1
  store i32 %2745, ptr %58, align 4, !tbaa !9
  br label %2693, !llvm.loop !34

2746:                                             ; preds = %2693
  %2747 = load i32, ptr %67, align 4, !tbaa !9
  %2748 = icmp ne i32 %2747, 0
  br i1 %2748, label %2749, label %2813

2749:                                             ; preds = %2746
  %2750 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %2750, ptr %37, align 4, !tbaa !9
  %2751 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %2751, ptr %36, align 4, !tbaa !9
  %2752 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %2752, ptr %56, align 4, !tbaa !9
  br label %2753

2753:                                             ; preds = %2808, %2749
  %2754 = load i32, ptr %36, align 4, !tbaa !9
  %2755 = icmp slt i32 %2754, 0
  br i1 %2755, label %2756, label %2761

2756:                                             ; preds = %2753
  %2757 = load i32, ptr %56, align 4, !tbaa !9
  %2758 = load i32, ptr %37, align 4, !tbaa !9
  %2759 = icmp sge i32 %2757, %2758
  %2760 = zext i1 %2759 to i32
  br label %2766

2761:                                             ; preds = %2753
  %2762 = load i32, ptr %56, align 4, !tbaa !9
  %2763 = load i32, ptr %37, align 4, !tbaa !9
  %2764 = icmp sle i32 %2762, %2763
  %2765 = zext i1 %2764 to i32
  br label %2766

2766:                                             ; preds = %2761, %2756
  %2767 = phi i32 [ %2760, %2756 ], [ %2765, %2761 ]
  %2768 = icmp ne i32 %2767, 0
  br i1 %2768, label %2769, label %2812

2769:                                             ; preds = %2766
  %2770 = load ptr, ptr %17, align 8, !tbaa !5
  %2771 = load i32, ptr %2770, align 4, !tbaa !9
  %2772 = load i32, ptr %59, align 4, !tbaa !9
  %2773 = sub nsw i32 %2771, %2772
  store i32 %2773, ptr %38, align 4, !tbaa !9
  %2774 = load ptr, ptr %26, align 8, !tbaa !5
  %2775 = load i32, ptr %56, align 4, !tbaa !9
  %2776 = sext i32 %2775 to i64
  %2777 = getelementptr inbounds %struct.doublecomplex, ptr %2774, i64 %2776
  %2778 = call { double, double } @Cd(ptr noundef %2777)
  %2779 = extractvalue { double, double } %2778, 0
  %2780 = extractvalue { double, double } %2778, 1
  %2781 = fneg double %2780
  %2782 = call ptr @_pCd(ptr noundef %44)
  %2783 = getelementptr inbounds { double, double }, ptr %2782, i32 0, i32 0
  %2784 = getelementptr inbounds { double, double }, ptr %2782, i32 0, i32 1
  store double %2779, ptr %2783, align 8
  store double %2781, ptr %2784, align 8
  %2785 = load ptr, ptr %24, align 8, !tbaa !5
  %2786 = load i32, ptr %59, align 4, !tbaa !9
  %2787 = add nsw i32 %2786, 1
  %2788 = load i32, ptr %56, align 4, !tbaa !9
  %2789 = load i32, ptr %33, align 4, !tbaa !9
  %2790 = mul nsw i32 %2788, %2789
  %2791 = add nsw i32 %2787, %2790
  %2792 = sext i32 %2791 to i64
  %2793 = getelementptr inbounds %struct.doublecomplex, ptr %2785, i64 %2792
  %2794 = load ptr, ptr %24, align 8, !tbaa !5
  %2795 = load i32, ptr %59, align 4, !tbaa !9
  %2796 = add nsw i32 %2795, 1
  %2797 = load i32, ptr %56, align 4, !tbaa !9
  %2798 = add nsw i32 %2797, 1
  %2799 = load i32, ptr %33, align 4, !tbaa !9
  %2800 = mul nsw i32 %2798, %2799
  %2801 = add nsw i32 %2796, %2800
  %2802 = sext i32 %2801 to i64
  %2803 = getelementptr inbounds %struct.doublecomplex, ptr %2794, i64 %2802
  %2804 = load ptr, ptr %27, align 8, !tbaa !5
  %2805 = load i32, ptr %56, align 4, !tbaa !9
  %2806 = sext i32 %2805 to i64
  %2807 = getelementptr inbounds double, ptr %2804, i64 %2806
  call void @zrot_(ptr noundef %38, ptr noundef %2793, ptr noundef @c__1, ptr noundef %2803, ptr noundef @c__1, ptr noundef %2807, ptr noundef %44)
  br label %2808

2808:                                             ; preds = %2769
  %2809 = load i32, ptr %36, align 4, !tbaa !9
  %2810 = load i32, ptr %56, align 4, !tbaa !9
  %2811 = add nsw i32 %2810, %2809
  store i32 %2811, ptr %56, align 4, !tbaa !9
  br label %2753, !llvm.loop !35

2812:                                             ; preds = %2766
  br label %2813

2813:                                             ; preds = %2812, %2746
  br label %2814

2814:                                             ; preds = %2813
  %2815 = load i32, ptr %57, align 4, !tbaa !9
  %2816 = add nsw i32 %2815, -1
  store i32 %2816, ptr %57, align 4, !tbaa !9
  br label %2546, !llvm.loop !36

2817:                                             ; preds = %2546
  %2818 = load ptr, ptr %19, align 8, !tbaa !5
  %2819 = load i32, ptr %2818, align 4, !tbaa !9
  %2820 = sub nsw i32 %2819, 1
  store i32 %2820, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %2821

2821:                                             ; preds = %2907, %2817
  %2822 = load i32, ptr %57, align 4, !tbaa !9
  %2823 = load i32, ptr %36, align 4, !tbaa !9
  %2824 = icmp sle i32 %2822, %2823
  br i1 %2824, label %2825, label %2910

2825:                                             ; preds = %2821
  store i32 1, ptr %37, align 4, !tbaa !9
  %2826 = load i32, ptr %57, align 4, !tbaa !9
  %2827 = load i32, ptr %61, align 4, !tbaa !9
  %2828 = sub nsw i32 %2826, %2827
  %2829 = add nsw i32 %2828, 2
  store i32 %2829, ptr %38, align 4, !tbaa !9
  %2830 = load i32, ptr %55, align 4, !tbaa !9
  %2831 = load i32, ptr %57, align 4, !tbaa !9
  %2832 = sub nsw i32 %2830, %2831
  %2833 = sub nsw i32 %2832, 1
  %2834 = load i32, ptr %37, align 4, !tbaa !9
  %2835 = load i32, ptr %38, align 4, !tbaa !9
  %2836 = icmp sge i32 %2834, %2835
  br i1 %2836, label %2837, label %2839

2837:                                             ; preds = %2825
  %2838 = load i32, ptr %37, align 4, !tbaa !9
  br label %2841

2839:                                             ; preds = %2825
  %2840 = load i32, ptr %38, align 4, !tbaa !9
  br label %2841

2841:                                             ; preds = %2839, %2837
  %2842 = phi i32 [ %2838, %2837 ], [ %2840, %2839 ]
  %2843 = load i32, ptr %72, align 4, !tbaa !9
  %2844 = mul nsw i32 %2842, %2843
  %2845 = add nsw i32 %2833, %2844
  store i32 %2845, ptr %66, align 4, !tbaa !9
  %2846 = load ptr, ptr %19, align 8, !tbaa !5
  %2847 = load i32, ptr %2846, align 4, !tbaa !9
  %2848 = load i32, ptr %57, align 4, !tbaa !9
  %2849 = sub nsw i32 %2847, %2848
  store i32 %2849, ptr %58, align 4, !tbaa !9
  br label %2850

2850:                                             ; preds = %2903, %2841
  %2851 = load i32, ptr %58, align 4, !tbaa !9
  %2852 = icmp sge i32 %2851, 1
  br i1 %2852, label %2853, label %2906

2853:                                             ; preds = %2850
  %2854 = load ptr, ptr %17, align 8, !tbaa !5
  %2855 = load i32, ptr %2854, align 4, !tbaa !9
  %2856 = load i32, ptr %66, align 4, !tbaa !9
  %2857 = sub nsw i32 %2855, %2856
  %2858 = load i32, ptr %58, align 4, !tbaa !9
  %2859 = add nsw i32 %2857, %2858
  %2860 = load i32, ptr %72, align 4, !tbaa !9
  %2861 = sdiv i32 %2859, %2860
  store i32 %2861, ptr %79, align 4, !tbaa !9
  %2862 = load i32, ptr %79, align 4, !tbaa !9
  %2863 = icmp sgt i32 %2862, 0
  br i1 %2863, label %2864, label %2902

2864:                                             ; preds = %2853
  %2865 = load ptr, ptr %20, align 8, !tbaa !5
  %2866 = load i32, ptr %58, align 4, !tbaa !9
  %2867 = load i32, ptr %66, align 4, !tbaa !9
  %2868 = load i32, ptr %72, align 4, !tbaa !9
  %2869 = add nsw i32 %2867, %2868
  %2870 = load i32, ptr %58, align 4, !tbaa !9
  %2871 = sub nsw i32 %2869, %2870
  %2872 = load i32, ptr %29, align 4, !tbaa !9
  %2873 = mul nsw i32 %2871, %2872
  %2874 = add nsw i32 %2866, %2873
  %2875 = sext i32 %2874 to i64
  %2876 = getelementptr inbounds %struct.doublecomplex, ptr %2865, i64 %2875
  %2877 = load ptr, ptr %20, align 8, !tbaa !5
  %2878 = load i32, ptr %58, align 4, !tbaa !9
  %2879 = add nsw i32 %2878, 1
  %2880 = load i32, ptr %66, align 4, !tbaa !9
  %2881 = load i32, ptr %72, align 4, !tbaa !9
  %2882 = add nsw i32 %2880, %2881
  %2883 = load i32, ptr %58, align 4, !tbaa !9
  %2884 = sub nsw i32 %2882, %2883
  %2885 = load i32, ptr %29, align 4, !tbaa !9
  %2886 = mul nsw i32 %2884, %2885
  %2887 = add nsw i32 %2879, %2886
  %2888 = sext i32 %2887 to i64
  %2889 = getelementptr inbounds %struct.doublecomplex, ptr %2877, i64 %2888
  %2890 = load ptr, ptr %27, align 8, !tbaa !5
  %2891 = load i32, ptr %66, align 4, !tbaa !9
  %2892 = load i32, ptr %59, align 4, !tbaa !9
  %2893 = sub nsw i32 %2891, %2892
  %2894 = sext i32 %2893 to i64
  %2895 = getelementptr inbounds double, ptr %2890, i64 %2894
  %2896 = load ptr, ptr %26, align 8, !tbaa !5
  %2897 = load i32, ptr %66, align 4, !tbaa !9
  %2898 = load i32, ptr %59, align 4, !tbaa !9
  %2899 = sub nsw i32 %2897, %2898
  %2900 = sext i32 %2899 to i64
  %2901 = getelementptr inbounds %struct.doublecomplex, ptr %2896, i64 %2900
  call void @zlartv_(ptr noundef %79, ptr noundef %2876, ptr noundef %54, ptr noundef %2889, ptr noundef %54, ptr noundef %2895, ptr noundef %2901, ptr noundef %72)
  br label %2902

2902:                                             ; preds = %2864, %2853
  br label %2903

2903:                                             ; preds = %2902
  %2904 = load i32, ptr %58, align 4, !tbaa !9
  %2905 = add nsw i32 %2904, -1
  store i32 %2905, ptr %58, align 4, !tbaa !9
  br label %2850, !llvm.loop !37

2906:                                             ; preds = %2850
  br label %2907

2907:                                             ; preds = %2906
  %2908 = load i32, ptr %57, align 4, !tbaa !9
  %2909 = add nsw i32 %2908, 1
  store i32 %2909, ptr %57, align 4, !tbaa !9
  br label %2821, !llvm.loop !38

2910:                                             ; preds = %2821
  %2911 = load ptr, ptr %19, align 8, !tbaa !5
  %2912 = load i32, ptr %2911, align 4, !tbaa !9
  %2913 = icmp sgt i32 %2912, 1
  br i1 %2913, label %2914, label %2978

2914:                                             ; preds = %2910
  %2915 = load i32, ptr %66, align 4, !tbaa !9
  %2916 = load ptr, ptr %18, align 8, !tbaa !5
  %2917 = load i32, ptr %2916, align 4, !tbaa !9
  %2918 = add nsw i32 %2915, %2917
  store i32 %2918, ptr %36, align 4, !tbaa !9
  %2919 = load ptr, ptr %17, align 8, !tbaa !5
  %2920 = load i32, ptr %2919, align 4, !tbaa !9
  %2921 = sub nsw i32 %2920, 1
  store i32 %2921, ptr %56, align 4, !tbaa !9
  br label %2922

2922:                                             ; preds = %2974, %2914
  %2923 = load i32, ptr %56, align 4, !tbaa !9
  %2924 = load i32, ptr %36, align 4, !tbaa !9
  %2925 = icmp sge i32 %2923, %2924
  br i1 %2925, label %2926, label %2977

2926:                                             ; preds = %2922
  %2927 = load ptr, ptr %27, align 8, !tbaa !5
  %2928 = load i32, ptr %56, align 4, !tbaa !9
  %2929 = load ptr, ptr %18, align 8, !tbaa !5
  %2930 = load i32, ptr %2929, align 4, !tbaa !9
  %2931 = sub nsw i32 %2928, %2930
  %2932 = load i32, ptr %59, align 4, !tbaa !9
  %2933 = sub nsw i32 %2931, %2932
  %2934 = sext i32 %2933 to i64
  %2935 = getelementptr inbounds double, ptr %2927, i64 %2934
  %2936 = load double, ptr %2935, align 8, !tbaa !14
  %2937 = load ptr, ptr %27, align 8, !tbaa !5
  %2938 = load i32, ptr %56, align 4, !tbaa !9
  %2939 = load i32, ptr %59, align 4, !tbaa !9
  %2940 = sub nsw i32 %2938, %2939
  %2941 = sext i32 %2940 to i64
  %2942 = getelementptr inbounds double, ptr %2937, i64 %2941
  store double %2936, ptr %2942, align 8, !tbaa !14
  %2943 = load i32, ptr %56, align 4, !tbaa !9
  %2944 = load i32, ptr %59, align 4, !tbaa !9
  %2945 = sub nsw i32 %2943, %2944
  store i32 %2945, ptr %37, align 4, !tbaa !9
  %2946 = load i32, ptr %56, align 4, !tbaa !9
  %2947 = load ptr, ptr %18, align 8, !tbaa !5
  %2948 = load i32, ptr %2947, align 4, !tbaa !9
  %2949 = sub nsw i32 %2946, %2948
  %2950 = load i32, ptr %59, align 4, !tbaa !9
  %2951 = sub nsw i32 %2949, %2950
  store i32 %2951, ptr %38, align 4, !tbaa !9
  %2952 = load ptr, ptr %26, align 8, !tbaa !5
  %2953 = load i32, ptr %38, 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 !11
  %2958 = load ptr, ptr %26, align 8, !tbaa !5
  %2959 = load i32, ptr %37, align 4, !tbaa !9
  %2960 = sext i32 %2959 to i64
  %2961 = getelementptr inbounds %struct.doublecomplex, ptr %2958, i64 %2960
  %2962 = getelementptr inbounds %struct.doublecomplex, ptr %2961, i32 0, i32 0
  store double %2957, ptr %2962, align 8, !tbaa !11
  %2963 = load ptr, ptr %26, align 8, !tbaa !5
  %2964 = load i32, ptr %38, align 4, !tbaa !9
  %2965 = sext i32 %2964 to i64
  %2966 = getelementptr inbounds %struct.doublecomplex, ptr %2963, i64 %2965
  %2967 = getelementptr inbounds %struct.doublecomplex, ptr %2966, i32 0, i32 1
  %2968 = load double, ptr %2967, align 8, !tbaa !15
  %2969 = load ptr, ptr %26, align 8, !tbaa !5
  %2970 = load i32, ptr %37, align 4, !tbaa !9
  %2971 = sext i32 %2970 to i64
  %2972 = getelementptr inbounds %struct.doublecomplex, ptr %2969, i64 %2971
  %2973 = getelementptr inbounds %struct.doublecomplex, ptr %2972, i32 0, i32 1
  store double %2968, ptr %2973, align 8, !tbaa !15
  br label %2974

2974:                                             ; preds = %2926
  %2975 = load i32, ptr %56, align 4, !tbaa !9
  %2976 = add nsw i32 %2975, -1
  store i32 %2976, ptr %56, align 4, !tbaa !9
  br label %2922, !llvm.loop !39

2977:                                             ; preds = %2922
  br label %2978

2978:                                             ; preds = %2977, %2910
  br label %5610

2979:                                             ; preds = %320
  %2980 = load i32, ptr %71, align 4, !tbaa !9
  %2981 = icmp ne i32 %2980, 0
  br i1 %2981, label %2982, label %3848

2982:                                             ; preds = %2979
  %2983 = load i32, ptr %55, align 4, !tbaa !9
  %2984 = load i32, ptr %31, align 4, !tbaa !9
  %2985 = mul nsw i32 %2983, %2984
  %2986 = add nsw i32 %2985, 1
  store i32 %2986, ptr %36, align 4, !tbaa !9
  %2987 = load ptr, ptr %22, align 8, !tbaa !5
  %2988 = load i32, ptr %36, align 4, !tbaa !9
  %2989 = sext i32 %2988 to i64
  %2990 = getelementptr inbounds %struct.doublecomplex, ptr %2987, i64 %2989
  %2991 = getelementptr inbounds %struct.doublecomplex, ptr %2990, i32 0, i32 0
  %2992 = load double, ptr %2991, align 8, !tbaa !11
  store double %2992, ptr %77, align 8, !tbaa !14
  %2993 = load i32, ptr %55, align 4, !tbaa !9
  %2994 = load i32, ptr %29, align 4, !tbaa !9
  %2995 = mul nsw i32 %2993, %2994
  %2996 = add nsw i32 %2995, 1
  store i32 %2996, ptr %36, align 4, !tbaa !9
  %2997 = load i32, ptr %55, align 4, !tbaa !9
  %2998 = load i32, ptr %29, align 4, !tbaa !9
  %2999 = mul nsw i32 %2997, %2998
  %3000 = add nsw i32 %2999, 1
  store i32 %3000, ptr %37, align 4, !tbaa !9
  %3001 = load ptr, ptr %20, align 8, !tbaa !5
  %3002 = load i32, ptr %37, align 4, !tbaa !9
  %3003 = sext i32 %3002 to i64
  %3004 = getelementptr inbounds %struct.doublecomplex, ptr %3001, i64 %3003
  %3005 = getelementptr inbounds %struct.doublecomplex, ptr %3004, i32 0, i32 0
  %3006 = load double, ptr %3005, align 8, !tbaa !11
  %3007 = load double, ptr %77, align 8, !tbaa !14
  %3008 = fdiv double %3006, %3007
  %3009 = load double, ptr %77, align 8, !tbaa !14
  %3010 = fdiv double %3008, %3009
  store double %3010, ptr %43, align 8, !tbaa !14
  %3011 = load double, ptr %43, align 8, !tbaa !14
  %3012 = load ptr, ptr %20, align 8, !tbaa !5
  %3013 = load i32, ptr %36, align 4, !tbaa !9
  %3014 = sext i32 %3013 to i64
  %3015 = getelementptr inbounds %struct.doublecomplex, ptr %3012, i64 %3014
  %3016 = getelementptr inbounds %struct.doublecomplex, ptr %3015, i32 0, i32 0
  store double %3011, ptr %3016, align 8, !tbaa !11
  %3017 = load ptr, ptr %20, align 8, !tbaa !5
  %3018 = load i32, ptr %36, align 4, !tbaa !9
  %3019 = sext i32 %3018 to i64
  %3020 = getelementptr inbounds %struct.doublecomplex, ptr %3017, i64 %3019
  %3021 = getelementptr inbounds %struct.doublecomplex, ptr %3020, i32 0, i32 1
  store double 0.000000e+00, ptr %3021, align 8, !tbaa !15
  %3022 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %3022, ptr %36, align 4, !tbaa !9
  %3023 = load i32, ptr %55, align 4, !tbaa !9
  %3024 = add nsw i32 %3023, 1
  store i32 %3024, ptr %56, align 4, !tbaa !9
  br label %3025

3025:                                             ; preds = %3078, %2982
  %3026 = load i32, ptr %56, align 4, !tbaa !9
  %3027 = load i32, ptr %36, align 4, !tbaa !9
  %3028 = icmp sle i32 %3026, %3027
  br i1 %3028, label %3029, label %3081

3029:                                             ; preds = %3025
  %3030 = load i32, ptr %56, align 4, !tbaa !9
  %3031 = load i32, ptr %55, align 4, !tbaa !9
  %3032 = sub nsw i32 %3030, %3031
  %3033 = add nsw i32 %3032, 1
  %3034 = load i32, ptr %55, align 4, !tbaa !9
  %3035 = load i32, ptr %29, align 4, !tbaa !9
  %3036 = mul nsw i32 %3034, %3035
  %3037 = add nsw i32 %3033, %3036
  store i32 %3037, ptr %37, align 4, !tbaa !9
  %3038 = load i32, ptr %56, align 4, !tbaa !9
  %3039 = load i32, ptr %55, align 4, !tbaa !9
  %3040 = sub nsw i32 %3038, %3039
  %3041 = add nsw i32 %3040, 1
  %3042 = load i32, ptr %55, align 4, !tbaa !9
  %3043 = load i32, ptr %29, align 4, !tbaa !9
  %3044 = mul nsw i32 %3042, %3043
  %3045 = add nsw i32 %3041, %3044
  store i32 %3045, ptr %38, align 4, !tbaa !9
  %3046 = load ptr, ptr %20, align 8, !tbaa !5
  %3047 = load i32, ptr %38, align 4, !tbaa !9
  %3048 = sext i32 %3047 to i64
  %3049 = getelementptr inbounds %struct.doublecomplex, ptr %3046, i64 %3048
  %3050 = getelementptr inbounds %struct.doublecomplex, ptr %3049, i32 0, i32 0
  %3051 = load double, ptr %3050, align 8, !tbaa !11
  %3052 = load double, ptr %77, align 8, !tbaa !14
  %3053 = fdiv double %3051, %3052
  %3054 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %3053, ptr %3054, align 8, !tbaa !11
  %3055 = load ptr, ptr %20, align 8, !tbaa !5
  %3056 = load i32, ptr %38, align 4, !tbaa !9
  %3057 = sext i32 %3056 to i64
  %3058 = getelementptr inbounds %struct.doublecomplex, ptr %3055, i64 %3057
  %3059 = getelementptr inbounds %struct.doublecomplex, ptr %3058, i32 0, i32 1
  %3060 = load double, ptr %3059, align 8, !tbaa !15
  %3061 = load double, ptr %77, align 8, !tbaa !14
  %3062 = fdiv double %3060, %3061
  %3063 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %3062, ptr %3063, align 8, !tbaa !15
  %3064 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %3065 = load double, ptr %3064, align 8, !tbaa !11
  %3066 = load ptr, ptr %20, align 8, !tbaa !5
  %3067 = load i32, ptr %37, 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
  store double %3065, ptr %3070, align 8, !tbaa !11
  %3071 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %3072 = load double, ptr %3071, align 8, !tbaa !15
  %3073 = load ptr, ptr %20, align 8, !tbaa !5
  %3074 = load i32, ptr %37, align 4, !tbaa !9
  %3075 = sext i32 %3074 to i64
  %3076 = getelementptr inbounds %struct.doublecomplex, ptr %3073, i64 %3075
  %3077 = getelementptr inbounds %struct.doublecomplex, ptr %3076, i32 0, i32 1
  store double %3072, ptr %3077, align 8, !tbaa !15
  br label %3078

3078:                                             ; preds = %3029
  %3079 = load i32, ptr %56, align 4, !tbaa !9
  %3080 = add nsw i32 %3079, 1
  store i32 %3080, ptr %56, align 4, !tbaa !9
  br label %3025, !llvm.loop !40

3081:                                             ; preds = %3025
  store i32 1, ptr %36, align 4, !tbaa !9
  %3082 = load i32, ptr %55, align 4, !tbaa !9
  %3083 = load ptr, ptr %18, align 8, !tbaa !5
  %3084 = load i32, ptr %3083, align 4, !tbaa !9
  %3085 = sub nsw i32 %3082, %3084
  store i32 %3085, ptr %37, align 4, !tbaa !9
  %3086 = load i32, ptr %55, align 4, !tbaa !9
  %3087 = sub nsw i32 %3086, 1
  store i32 %3087, ptr %38, align 4, !tbaa !9
  %3088 = load i32, ptr %36, align 4, !tbaa !9
  %3089 = load i32, ptr %37, align 4, !tbaa !9
  %3090 = icmp sge i32 %3088, %3089
  br i1 %3090, label %3091, label %3093

3091:                                             ; preds = %3081
  %3092 = load i32, ptr %36, align 4, !tbaa !9
  br label %3095

3093:                                             ; preds = %3081
  %3094 = load i32, ptr %37, align 4, !tbaa !9
  br label %3095

3095:                                             ; preds = %3093, %3091
  %3096 = phi i32 [ %3092, %3091 ], [ %3094, %3093 ]
  store i32 %3096, ptr %56, align 4, !tbaa !9
  br label %3097

3097:                                             ; preds = %3150, %3095
  %3098 = load i32, ptr %56, align 4, !tbaa !9
  %3099 = load i32, ptr %38, align 4, !tbaa !9
  %3100 = icmp sle i32 %3098, %3099
  br i1 %3100, label %3101, label %3153

3101:                                             ; preds = %3097
  %3102 = load i32, ptr %55, align 4, !tbaa !9
  %3103 = load i32, ptr %56, align 4, !tbaa !9
  %3104 = sub nsw i32 %3102, %3103
  %3105 = add nsw i32 %3104, 1
  %3106 = load i32, ptr %56, align 4, !tbaa !9
  %3107 = load i32, ptr %29, align 4, !tbaa !9
  %3108 = mul nsw i32 %3106, %3107
  %3109 = add nsw i32 %3105, %3108
  store i32 %3109, ptr %36, align 4, !tbaa !9
  %3110 = load i32, ptr %55, align 4, !tbaa !9
  %3111 = load i32, ptr %56, align 4, !tbaa !9
  %3112 = sub nsw i32 %3110, %3111
  %3113 = add nsw i32 %3112, 1
  %3114 = load i32, ptr %56, align 4, !tbaa !9
  %3115 = load i32, ptr %29, align 4, !tbaa !9
  %3116 = mul nsw i32 %3114, %3115
  %3117 = add nsw i32 %3113, %3116
  store i32 %3117, ptr %37, align 4, !tbaa !9
  %3118 = load ptr, ptr %20, align 8, !tbaa !5
  %3119 = load i32, ptr %37, 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 !11
  %3124 = load double, ptr %77, align 8, !tbaa !14
  %3125 = fdiv double %3123, %3124
  %3126 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %3125, ptr %3126, align 8, !tbaa !11
  %3127 = load ptr, ptr %20, align 8, !tbaa !5
  %3128 = load i32, ptr %37, align 4, !tbaa !9
  %3129 = sext i32 %3128 to i64
  %3130 = getelementptr inbounds %struct.doublecomplex, ptr %3127, i64 %3129
  %3131 = getelementptr inbounds %struct.doublecomplex, ptr %3130, i32 0, i32 1
  %3132 = load double, ptr %3131, align 8, !tbaa !15
  %3133 = load double, ptr %77, align 8, !tbaa !14
  %3134 = fdiv double %3132, %3133
  %3135 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %3134, ptr %3135, align 8, !tbaa !15
  %3136 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %3137 = load double, ptr %3136, align 8, !tbaa !11
  %3138 = load ptr, ptr %20, align 8, !tbaa !5
  %3139 = load i32, ptr %36, align 4, !tbaa !9
  %3140 = sext i32 %3139 to i64
  %3141 = getelementptr inbounds %struct.doublecomplex, ptr %3138, i64 %3140
  %3142 = getelementptr inbounds %struct.doublecomplex, ptr %3141, i32 0, i32 0
  store double %3137, ptr %3142, align 8, !tbaa !11
  %3143 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %3144 = load double, ptr %3143, align 8, !tbaa !15
  %3145 = load ptr, ptr %20, align 8, !tbaa !5
  %3146 = load i32, ptr %36, align 4, !tbaa !9
  %3147 = sext i32 %3146 to i64
  %3148 = getelementptr inbounds %struct.doublecomplex, ptr %3145, i64 %3147
  %3149 = getelementptr inbounds %struct.doublecomplex, ptr %3148, i32 0, i32 1
  store double %3144, ptr %3149, align 8, !tbaa !15
  br label %3150

3150:                                             ; preds = %3101
  %3151 = load i32, ptr %56, align 4, !tbaa !9
  %3152 = add nsw i32 %3151, 1
  store i32 %3152, ptr %56, align 4, !tbaa !9
  br label %3097, !llvm.loop !41

3153:                                             ; preds = %3097
  %3154 = load i32, ptr %55, align 4, !tbaa !9
  %3155 = sub nsw i32 %3154, 1
  store i32 %3155, ptr %38, align 4, !tbaa !9
  %3156 = load i32, ptr %55, align 4, !tbaa !9
  %3157 = load i32, ptr %78, align 4, !tbaa !9
  %3158 = sub nsw i32 %3156, %3157
  store i32 %3158, ptr %57, align 4, !tbaa !9
  br label %3159

3159:                                             ; preds = %3599, %3153
  %3160 = load i32, ptr %57, align 4, !tbaa !9
  %3161 = load i32, ptr %38, align 4, !tbaa !9
  %3162 = icmp sle i32 %3160, %3161
  br i1 %3162, label %3163, label %3602

3163:                                             ; preds = %3159
  %3164 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %3164, ptr %36, align 4, !tbaa !9
  %3165 = load i32, ptr %55, align 4, !tbaa !9
  %3166 = load i32, ptr %78, align 4, !tbaa !9
  %3167 = sub nsw i32 %3165, %3166
  store i32 %3167, ptr %56, align 4, !tbaa !9
  br label %3168

3168:                                             ; preds = %3454, %3163
  %3169 = load i32, ptr %56, align 4, !tbaa !9
  %3170 = load i32, ptr %36, align 4, !tbaa !9
  %3171 = icmp sle i32 %3169, %3170
  br i1 %3171, label %3172, label %3457

3172:                                             ; preds = %3168
  %3173 = load i32, ptr %57, align 4, !tbaa !9
  %3174 = load i32, ptr %56, align 4, !tbaa !9
  %3175 = sub nsw i32 %3173, %3174
  %3176 = add nsw i32 %3175, 1
  %3177 = load i32, ptr %56, align 4, !tbaa !9
  %3178 = load i32, ptr %29, align 4, !tbaa !9
  %3179 = mul nsw i32 %3177, %3178
  %3180 = add nsw i32 %3176, %3179
  store i32 %3180, ptr %37, align 4, !tbaa !9
  %3181 = load i32, ptr %57, align 4, !tbaa !9
  %3182 = load i32, ptr %56, align 4, !tbaa !9
  %3183 = sub nsw i32 %3181, %3182
  %3184 = add nsw i32 %3183, 1
  %3185 = load i32, ptr %56, align 4, !tbaa !9
  %3186 = load i32, ptr %29, align 4, !tbaa !9
  %3187 = mul nsw i32 %3185, %3186
  %3188 = add nsw i32 %3184, %3187
  store i32 %3188, ptr %35, align 4, !tbaa !9
  %3189 = load i32, ptr %55, align 4, !tbaa !9
  %3190 = load i32, ptr %56, align 4, !tbaa !9
  %3191 = sub nsw i32 %3189, %3190
  %3192 = add nsw i32 %3191, 1
  %3193 = load i32, ptr %56, align 4, !tbaa !9
  %3194 = load i32, ptr %31, align 4, !tbaa !9
  %3195 = mul nsw i32 %3193, %3194
  %3196 = add nsw i32 %3192, %3195
  store i32 %3196, ptr %39, align 4, !tbaa !9
  %3197 = load ptr, ptr %20, align 8, !tbaa !5
  %3198 = load i32, ptr %55, align 4, !tbaa !9
  %3199 = load i32, ptr %57, align 4, !tbaa !9
  %3200 = sub nsw i32 %3198, %3199
  %3201 = add nsw i32 %3200, 1
  %3202 = load i32, ptr %57, align 4, !tbaa !9
  %3203 = load i32, ptr %29, align 4, !tbaa !9
  %3204 = mul nsw i32 %3202, %3203
  %3205 = add nsw i32 %3201, %3204
  %3206 = sext i32 %3205 to i64
  %3207 = getelementptr inbounds %struct.doublecomplex, ptr %3197, i64 %3206
  %3208 = call { double, double } @Cd(ptr noundef %3207)
  %3209 = extractvalue { double, double } %3208, 0
  %3210 = extractvalue { double, double } %3208, 1
  %3211 = fneg double %3210
  %3212 = call ptr @_pCd(ptr noundef %48)
  %3213 = getelementptr inbounds { double, double }, ptr %3212, i32 0, i32 0
  %3214 = getelementptr inbounds { double, double }, ptr %3212, i32 0, i32 1
  store double %3209, ptr %3213, align 8
  store double %3211, ptr %3214, align 8
  %3215 = load ptr, ptr %22, align 8, !tbaa !5
  %3216 = load i32, ptr %39, align 4, !tbaa !9
  %3217 = sext i32 %3216 to i64
  %3218 = getelementptr inbounds %struct.doublecomplex, ptr %3215, i64 %3217
  %3219 = getelementptr inbounds %struct.doublecomplex, ptr %3218, i32 0, i32 0
  %3220 = load double, ptr %3219, align 8, !tbaa !11
  %3221 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %3222 = load double, ptr %3221, align 8, !tbaa !11
  %3223 = load ptr, ptr %22, align 8, !tbaa !5
  %3224 = load i32, ptr %39, align 4, !tbaa !9
  %3225 = sext i32 %3224 to i64
  %3226 = getelementptr inbounds %struct.doublecomplex, ptr %3223, i64 %3225
  %3227 = getelementptr inbounds %struct.doublecomplex, ptr %3226, i32 0, i32 1
  %3228 = load double, ptr %3227, align 8, !tbaa !15
  %3229 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %3230 = load double, ptr %3229, align 8, !tbaa !15
  %3231 = fmul double %3228, %3230
  %3232 = fneg double %3231
  %3233 = call double @llvm.fmuladd.f64(double %3220, double %3222, double %3232)
  %3234 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %3233, ptr %3234, align 8, !tbaa !11
  %3235 = load ptr, ptr %22, align 8, !tbaa !5
  %3236 = load i32, ptr %39, align 4, !tbaa !9
  %3237 = sext i32 %3236 to i64
  %3238 = getelementptr inbounds %struct.doublecomplex, ptr %3235, i64 %3237
  %3239 = getelementptr inbounds %struct.doublecomplex, ptr %3238, i32 0, i32 0
  %3240 = load double, ptr %3239, align 8, !tbaa !11
  %3241 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %3242 = load double, ptr %3241, align 8, !tbaa !15
  %3243 = load ptr, ptr %22, align 8, !tbaa !5
  %3244 = load i32, ptr %39, align 4, !tbaa !9
  %3245 = sext i32 %3244 to i64
  %3246 = getelementptr inbounds %struct.doublecomplex, ptr %3243, i64 %3245
  %3247 = getelementptr inbounds %struct.doublecomplex, ptr %3246, i32 0, i32 1
  %3248 = load double, ptr %3247, align 8, !tbaa !15
  %3249 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %3250 = load double, ptr %3249, align 8, !tbaa !11
  %3251 = fmul double %3248, %3250
  %3252 = call double @llvm.fmuladd.f64(double %3240, double %3242, double %3251)
  %3253 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %3252, ptr %3253, align 8, !tbaa !15
  %3254 = load ptr, ptr %20, align 8, !tbaa !5
  %3255 = load i32, ptr %35, align 4, !tbaa !9
  %3256 = sext i32 %3255 to i64
  %3257 = getelementptr inbounds %struct.doublecomplex, ptr %3254, i64 %3256
  %3258 = getelementptr inbounds %struct.doublecomplex, ptr %3257, i32 0, i32 0
  %3259 = load double, ptr %3258, align 8, !tbaa !11
  %3260 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %3261 = load double, ptr %3260, align 8, !tbaa !11
  %3262 = fsub double %3259, %3261
  %3263 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %3262, ptr %3263, align 8, !tbaa !11
  %3264 = load ptr, ptr %20, align 8, !tbaa !5
  %3265 = load i32, ptr %35, align 4, !tbaa !9
  %3266 = sext i32 %3265 to i64
  %3267 = getelementptr inbounds %struct.doublecomplex, ptr %3264, i64 %3266
  %3268 = getelementptr inbounds %struct.doublecomplex, ptr %3267, i32 0, i32 1
  %3269 = load double, ptr %3268, align 8, !tbaa !15
  %3270 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %3271 = load double, ptr %3270, align 8, !tbaa !15
  %3272 = fsub double %3269, %3271
  %3273 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %3272, ptr %3273, align 8, !tbaa !15
  %3274 = load ptr, ptr %22, align 8, !tbaa !5
  %3275 = load i32, ptr %55, align 4, !tbaa !9
  %3276 = load i32, ptr %57, align 4, !tbaa !9
  %3277 = sub nsw i32 %3275, %3276
  %3278 = add nsw i32 %3277, 1
  %3279 = load i32, ptr %57, align 4, !tbaa !9
  %3280 = load i32, ptr %31, align 4, !tbaa !9
  %3281 = mul nsw i32 %3279, %3280
  %3282 = add nsw i32 %3278, %3281
  %3283 = sext i32 %3282 to i64
  %3284 = getelementptr inbounds %struct.doublecomplex, ptr %3274, i64 %3283
  %3285 = call { double, double } @Cd(ptr noundef %3284)
  %3286 = extractvalue { double, double } %3285, 0
  %3287 = extractvalue { double, double } %3285, 1
  %3288 = fneg double %3287
  %3289 = call ptr @_pCd(ptr noundef %50)
  %3290 = getelementptr inbounds { double, double }, ptr %3289, i32 0, i32 0
  %3291 = getelementptr inbounds { double, double }, ptr %3289, i32 0, i32 1
  store double %3286, ptr %3290, align 8
  store double %3288, ptr %3291, align 8
  %3292 = load i32, ptr %55, align 4, !tbaa !9
  %3293 = load i32, ptr %56, align 4, !tbaa !9
  %3294 = sub nsw i32 %3292, %3293
  %3295 = add nsw i32 %3294, 1
  %3296 = load i32, ptr %56, align 4, !tbaa !9
  %3297 = load i32, ptr %29, align 4, !tbaa !9
  %3298 = mul nsw i32 %3296, %3297
  %3299 = add nsw i32 %3295, %3298
  store i32 %3299, ptr %40, align 4, !tbaa !9
  %3300 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %3301 = load double, ptr %3300, align 8, !tbaa !11
  %3302 = load ptr, ptr %20, align 8, !tbaa !5
  %3303 = load i32, ptr %40, align 4, !tbaa !9
  %3304 = sext i32 %3303 to i64
  %3305 = getelementptr inbounds %struct.doublecomplex, ptr %3302, i64 %3304
  %3306 = getelementptr inbounds %struct.doublecomplex, ptr %3305, i32 0, i32 0
  %3307 = load double, ptr %3306, align 8, !tbaa !11
  %3308 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %3309 = load double, ptr %3308, align 8, !tbaa !15
  %3310 = load ptr, ptr %20, align 8, !tbaa !5
  %3311 = load i32, ptr %40, align 4, !tbaa !9
  %3312 = sext i32 %3311 to i64
  %3313 = getelementptr inbounds %struct.doublecomplex, ptr %3310, i64 %3312
  %3314 = getelementptr inbounds %struct.doublecomplex, ptr %3313, i32 0, i32 1
  %3315 = load double, ptr %3314, align 8, !tbaa !15
  %3316 = fmul double %3309, %3315
  %3317 = fneg double %3316
  %3318 = call double @llvm.fmuladd.f64(double %3301, double %3307, double %3317)
  %3319 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %3318, ptr %3319, align 8, !tbaa !11
  %3320 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %3321 = load double, ptr %3320, align 8, !tbaa !11
  %3322 = load ptr, ptr %20, align 8, !tbaa !5
  %3323 = load i32, ptr %40, align 4, !tbaa !9
  %3324 = sext i32 %3323 to i64
  %3325 = getelementptr inbounds %struct.doublecomplex, ptr %3322, i64 %3324
  %3326 = getelementptr inbounds %struct.doublecomplex, ptr %3325, i32 0, i32 1
  %3327 = load double, ptr %3326, align 8, !tbaa !15
  %3328 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %3329 = load double, ptr %3328, align 8, !tbaa !15
  %3330 = load ptr, ptr %20, align 8, !tbaa !5
  %3331 = load i32, ptr %40, align 4, !tbaa !9
  %3332 = sext i32 %3331 to i64
  %3333 = getelementptr inbounds %struct.doublecomplex, ptr %3330, i64 %3332
  %3334 = getelementptr inbounds %struct.doublecomplex, ptr %3333, i32 0, i32 0
  %3335 = load double, ptr %3334, align 8, !tbaa !11
  %3336 = fmul double %3329, %3335
  %3337 = call double @llvm.fmuladd.f64(double %3321, double %3327, double %3336)
  %3338 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %3337, ptr %3338, align 8, !tbaa !15
  %3339 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3340 = load double, ptr %3339, align 8, !tbaa !11
  %3341 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %3342 = load double, ptr %3341, align 8, !tbaa !11
  %3343 = fsub double %3340, %3342
  %3344 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3343, ptr %3344, align 8, !tbaa !11
  %3345 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3346 = load double, ptr %3345, align 8, !tbaa !15
  %3347 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %3348 = load double, ptr %3347, align 8, !tbaa !15
  %3349 = fsub double %3346, %3348
  %3350 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3349, ptr %3350, align 8, !tbaa !15
  %3351 = load i32, ptr %55, align 4, !tbaa !9
  %3352 = load i32, ptr %29, align 4, !tbaa !9
  %3353 = mul nsw i32 %3351, %3352
  %3354 = add nsw i32 %3353, 1
  store i32 %3354, ptr %41, align 4, !tbaa !9
  %3355 = load ptr, ptr %20, align 8, !tbaa !5
  %3356 = load i32, ptr %41, align 4, !tbaa !9
  %3357 = sext i32 %3356 to i64
  %3358 = getelementptr inbounds %struct.doublecomplex, ptr %3355, i64 %3357
  %3359 = getelementptr inbounds %struct.doublecomplex, ptr %3358, i32 0, i32 0
  %3360 = load double, ptr %3359, align 8, !tbaa !11
  store double %3360, ptr %43, align 8, !tbaa !14
  %3361 = load i32, ptr %55, align 4, !tbaa !9
  %3362 = load i32, ptr %56, align 4, !tbaa !9
  %3363 = sub nsw i32 %3361, %3362
  %3364 = add nsw i32 %3363, 1
  %3365 = load i32, ptr %56, align 4, !tbaa !9
  %3366 = load i32, ptr %31, align 4, !tbaa !9
  %3367 = mul nsw i32 %3365, %3366
  %3368 = add nsw i32 %3364, %3367
  store i32 %3368, ptr %42, align 4, !tbaa !9
  %3369 = load double, ptr %43, align 8, !tbaa !14
  %3370 = load ptr, ptr %22, align 8, !tbaa !5
  %3371 = load i32, ptr %42, align 4, !tbaa !9
  %3372 = sext i32 %3371 to i64
  %3373 = getelementptr inbounds %struct.doublecomplex, ptr %3370, i64 %3372
  %3374 = getelementptr inbounds %struct.doublecomplex, ptr %3373, i32 0, i32 0
  %3375 = load double, ptr %3374, align 8, !tbaa !11
  %3376 = fmul double %3369, %3375
  %3377 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %3376, ptr %3377, align 8, !tbaa !11
  %3378 = load double, ptr %43, align 8, !tbaa !14
  %3379 = load ptr, ptr %22, align 8, !tbaa !5
  %3380 = load i32, ptr %42, align 4, !tbaa !9
  %3381 = sext i32 %3380 to i64
  %3382 = getelementptr inbounds %struct.doublecomplex, ptr %3379, i64 %3381
  %3383 = getelementptr inbounds %struct.doublecomplex, ptr %3382, i32 0, i32 1
  %3384 = load double, ptr %3383, align 8, !tbaa !15
  %3385 = fmul double %3378, %3384
  %3386 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %3385, ptr %3386, align 8, !tbaa !15
  %3387 = load ptr, ptr %22, align 8, !tbaa !5
  %3388 = load i32, ptr %55, align 4, !tbaa !9
  %3389 = load i32, ptr %57, align 4, !tbaa !9
  %3390 = sub nsw i32 %3388, %3389
  %3391 = add nsw i32 %3390, 1
  %3392 = load i32, ptr %57, align 4, !tbaa !9
  %3393 = load i32, ptr %31, align 4, !tbaa !9
  %3394 = mul nsw i32 %3392, %3393
  %3395 = add nsw i32 %3391, %3394
  %3396 = sext i32 %3395 to i64
  %3397 = getelementptr inbounds %struct.doublecomplex, ptr %3387, i64 %3396
  %3398 = call { double, double } @Cd(ptr noundef %3397)
  %3399 = extractvalue { double, double } %3398, 0
  %3400 = extractvalue { double, double } %3398, 1
  %3401 = fneg double %3400
  %3402 = call ptr @_pCd(ptr noundef %53)
  %3403 = getelementptr inbounds { double, double }, ptr %3402, i32 0, i32 0
  %3404 = getelementptr inbounds { double, double }, ptr %3402, i32 0, i32 1
  store double %3399, ptr %3403, align 8
  store double %3401, ptr %3404, align 8
  %3405 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %3406 = load double, ptr %3405, align 8, !tbaa !11
  %3407 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %3408 = load double, ptr %3407, align 8, !tbaa !11
  %3409 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %3410 = load double, ptr %3409, align 8, !tbaa !15
  %3411 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %3412 = load double, ptr %3411, align 8, !tbaa !15
  %3413 = fmul double %3410, %3412
  %3414 = fneg double %3413
  %3415 = call double @llvm.fmuladd.f64(double %3406, double %3408, double %3414)
  %3416 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %3415, ptr %3416, align 8, !tbaa !11
  %3417 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %3418 = load double, ptr %3417, align 8, !tbaa !11
  %3419 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %3420 = load double, ptr %3419, align 8, !tbaa !15
  %3421 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %3422 = load double, ptr %3421, align 8, !tbaa !15
  %3423 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %3424 = load double, ptr %3423, align 8, !tbaa !11
  %3425 = fmul double %3422, %3424
  %3426 = call double @llvm.fmuladd.f64(double %3418, double %3420, double %3425)
  %3427 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %3426, ptr %3427, align 8, !tbaa !15
  %3428 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3429 = load double, ptr %3428, align 8, !tbaa !11
  %3430 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %3431 = load double, ptr %3430, align 8, !tbaa !11
  %3432 = fadd double %3429, %3431
  %3433 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %3432, ptr %3433, align 8, !tbaa !11
  %3434 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3435 = load double, ptr %3434, align 8, !tbaa !15
  %3436 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %3437 = load double, ptr %3436, align 8, !tbaa !15
  %3438 = fadd double %3435, %3437
  %3439 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %3438, ptr %3439, align 8, !tbaa !15
  %3440 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %3441 = load double, ptr %3440, align 8, !tbaa !11
  %3442 = load ptr, ptr %20, align 8, !tbaa !5
  %3443 = load i32, ptr %37, align 4, !tbaa !9
  %3444 = sext i32 %3443 to i64
  %3445 = getelementptr inbounds %struct.doublecomplex, ptr %3442, i64 %3444
  %3446 = getelementptr inbounds %struct.doublecomplex, ptr %3445, i32 0, i32 0
  store double %3441, ptr %3446, align 8, !tbaa !11
  %3447 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %3448 = load double, ptr %3447, align 8, !tbaa !15
  %3449 = load ptr, ptr %20, align 8, !tbaa !5
  %3450 = load i32, ptr %37, align 4, !tbaa !9
  %3451 = sext i32 %3450 to i64
  %3452 = getelementptr inbounds %struct.doublecomplex, ptr %3449, i64 %3451
  %3453 = getelementptr inbounds %struct.doublecomplex, ptr %3452, i32 0, i32 1
  store double %3448, ptr %3453, align 8, !tbaa !15
  br label %3454

3454:                                             ; preds = %3172
  %3455 = load i32, ptr %56, align 4, !tbaa !9
  %3456 = add nsw i32 %3455, 1
  store i32 %3456, ptr %56, align 4, !tbaa !9
  br label %3168, !llvm.loop !42

3457:                                             ; preds = %3168
  store i32 1, ptr %36, align 4, !tbaa !9
  %3458 = load i32, ptr %55, align 4, !tbaa !9
  %3459 = load ptr, ptr %18, align 8, !tbaa !5
  %3460 = load i32, ptr %3459, align 4, !tbaa !9
  %3461 = sub nsw i32 %3458, %3460
  store i32 %3461, ptr %37, align 4, !tbaa !9
  %3462 = load i32, ptr %55, align 4, !tbaa !9
  %3463 = load i32, ptr %78, align 4, !tbaa !9
  %3464 = sub nsw i32 %3462, %3463
  %3465 = sub nsw i32 %3464, 1
  store i32 %3465, ptr %35, align 4, !tbaa !9
  %3466 = load i32, ptr %36, align 4, !tbaa !9
  %3467 = load i32, ptr %37, align 4, !tbaa !9
  %3468 = icmp sge i32 %3466, %3467
  br i1 %3468, label %3469, label %3471

3469:                                             ; preds = %3457
  %3470 = load i32, ptr %36, align 4, !tbaa !9
  br label %3473

3471:                                             ; preds = %3457
  %3472 = load i32, ptr %37, align 4, !tbaa !9
  br label %3473

3473:                                             ; preds = %3471, %3469
  %3474 = phi i32 [ %3470, %3469 ], [ %3472, %3471 ]
  store i32 %3474, ptr %56, align 4, !tbaa !9
  br label %3475

3475:                                             ; preds = %3595, %3473
  %3476 = load i32, ptr %56, align 4, !tbaa !9
  %3477 = load i32, ptr %35, align 4, !tbaa !9
  %3478 = icmp sle i32 %3476, %3477
  br i1 %3478, label %3479, label %3598

3479:                                             ; preds = %3475
  %3480 = load i32, ptr %57, align 4, !tbaa !9
  %3481 = load i32, ptr %56, align 4, !tbaa !9
  %3482 = sub nsw i32 %3480, %3481
  %3483 = add nsw i32 %3482, 1
  %3484 = load i32, ptr %56, align 4, !tbaa !9
  %3485 = load i32, ptr %29, align 4, !tbaa !9
  %3486 = mul nsw i32 %3484, %3485
  %3487 = add nsw i32 %3483, %3486
  store i32 %3487, ptr %36, align 4, !tbaa !9
  %3488 = load i32, ptr %57, align 4, !tbaa !9
  %3489 = load i32, ptr %56, align 4, !tbaa !9
  %3490 = sub nsw i32 %3488, %3489
  %3491 = add nsw i32 %3490, 1
  %3492 = load i32, ptr %56, align 4, !tbaa !9
  %3493 = load i32, ptr %29, align 4, !tbaa !9
  %3494 = mul nsw i32 %3492, %3493
  %3495 = add nsw i32 %3491, %3494
  store i32 %3495, ptr %37, align 4, !tbaa !9
  %3496 = load ptr, ptr %22, align 8, !tbaa !5
  %3497 = load i32, ptr %55, align 4, !tbaa !9
  %3498 = load i32, ptr %57, align 4, !tbaa !9
  %3499 = sub nsw i32 %3497, %3498
  %3500 = add nsw i32 %3499, 1
  %3501 = load i32, ptr %57, align 4, !tbaa !9
  %3502 = load i32, ptr %31, align 4, !tbaa !9
  %3503 = mul nsw i32 %3501, %3502
  %3504 = add nsw i32 %3500, %3503
  %3505 = sext i32 %3504 to i64
  %3506 = getelementptr inbounds %struct.doublecomplex, ptr %3496, i64 %3505
  %3507 = call { double, double } @Cd(ptr noundef %3506)
  %3508 = extractvalue { double, double } %3507, 0
  %3509 = extractvalue { double, double } %3507, 1
  %3510 = fneg double %3509
  %3511 = call ptr @_pCd(ptr noundef %46)
  %3512 = getelementptr inbounds { double, double }, ptr %3511, i32 0, i32 0
  %3513 = getelementptr inbounds { double, double }, ptr %3511, i32 0, i32 1
  store double %3508, ptr %3512, align 8
  store double %3510, ptr %3513, align 8
  %3514 = load i32, ptr %55, align 4, !tbaa !9
  %3515 = load i32, ptr %56, align 4, !tbaa !9
  %3516 = sub nsw i32 %3514, %3515
  %3517 = add nsw i32 %3516, 1
  %3518 = load i32, ptr %56, align 4, !tbaa !9
  %3519 = load i32, ptr %29, align 4, !tbaa !9
  %3520 = mul nsw i32 %3518, %3519
  %3521 = add nsw i32 %3517, %3520
  store i32 %3521, ptr %39, align 4, !tbaa !9
  %3522 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3523 = load double, ptr %3522, align 8, !tbaa !11
  %3524 = load ptr, ptr %20, align 8, !tbaa !5
  %3525 = load i32, ptr %39, align 4, !tbaa !9
  %3526 = sext i32 %3525 to i64
  %3527 = getelementptr inbounds %struct.doublecomplex, ptr %3524, i64 %3526
  %3528 = getelementptr inbounds %struct.doublecomplex, ptr %3527, i32 0, i32 0
  %3529 = load double, ptr %3528, align 8, !tbaa !11
  %3530 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3531 = load double, ptr %3530, align 8, !tbaa !15
  %3532 = load ptr, ptr %20, align 8, !tbaa !5
  %3533 = load i32, ptr %39, 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 !15
  %3538 = fmul double %3531, %3537
  %3539 = fneg double %3538
  %3540 = call double @llvm.fmuladd.f64(double %3523, double %3529, double %3539)
  %3541 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3540, ptr %3541, align 8, !tbaa !11
  %3542 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3543 = load double, ptr %3542, align 8, !tbaa !11
  %3544 = load ptr, ptr %20, align 8, !tbaa !5
  %3545 = load i32, ptr %39, align 4, !tbaa !9
  %3546 = sext i32 %3545 to i64
  %3547 = getelementptr inbounds %struct.doublecomplex, ptr %3544, i64 %3546
  %3548 = getelementptr inbounds %struct.doublecomplex, ptr %3547, i32 0, i32 1
  %3549 = load double, ptr %3548, align 8, !tbaa !15
  %3550 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3551 = load double, ptr %3550, align 8, !tbaa !15
  %3552 = load ptr, ptr %20, align 8, !tbaa !5
  %3553 = load i32, ptr %39, align 4, !tbaa !9
  %3554 = sext i32 %3553 to i64
  %3555 = getelementptr inbounds %struct.doublecomplex, ptr %3552, i64 %3554
  %3556 = getelementptr inbounds %struct.doublecomplex, ptr %3555, i32 0, i32 0
  %3557 = load double, ptr %3556, align 8, !tbaa !11
  %3558 = fmul double %3551, %3557
  %3559 = call double @llvm.fmuladd.f64(double %3543, double %3549, double %3558)
  %3560 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3559, ptr %3560, align 8, !tbaa !15
  %3561 = load ptr, ptr %20, align 8, !tbaa !5
  %3562 = load i32, ptr %37, align 4, !tbaa !9
  %3563 = sext i32 %3562 to i64
  %3564 = getelementptr inbounds %struct.doublecomplex, ptr %3561, i64 %3563
  %3565 = getelementptr inbounds %struct.doublecomplex, ptr %3564, i32 0, i32 0
  %3566 = load double, ptr %3565, align 8, !tbaa !11
  %3567 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3568 = load double, ptr %3567, align 8, !tbaa !11
  %3569 = fsub double %3566, %3568
  %3570 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %3569, ptr %3570, align 8, !tbaa !11
  %3571 = load ptr, ptr %20, align 8, !tbaa !5
  %3572 = load i32, ptr %37, align 4, !tbaa !9
  %3573 = sext i32 %3572 to i64
  %3574 = getelementptr inbounds %struct.doublecomplex, ptr %3571, i64 %3573
  %3575 = getelementptr inbounds %struct.doublecomplex, ptr %3574, i32 0, i32 1
  %3576 = load double, ptr %3575, align 8, !tbaa !15
  %3577 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3578 = load double, ptr %3577, align 8, !tbaa !15
  %3579 = fsub double %3576, %3578
  %3580 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %3579, ptr %3580, align 8, !tbaa !15
  %3581 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %3582 = load double, ptr %3581, align 8, !tbaa !11
  %3583 = load ptr, ptr %20, align 8, !tbaa !5
  %3584 = load i32, ptr %36, align 4, !tbaa !9
  %3585 = sext i32 %3584 to i64
  %3586 = getelementptr inbounds %struct.doublecomplex, ptr %3583, i64 %3585
  %3587 = getelementptr inbounds %struct.doublecomplex, ptr %3586, i32 0, i32 0
  store double %3582, ptr %3587, align 8, !tbaa !11
  %3588 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %3589 = load double, ptr %3588, align 8, !tbaa !15
  %3590 = load ptr, ptr %20, align 8, !tbaa !5
  %3591 = load i32, ptr %36, align 4, !tbaa !9
  %3592 = sext i32 %3591 to i64
  %3593 = getelementptr inbounds %struct.doublecomplex, ptr %3590, i64 %3592
  %3594 = getelementptr inbounds %struct.doublecomplex, ptr %3593, i32 0, i32 1
  store double %3589, ptr %3594, align 8, !tbaa !15
  br label %3595

3595:                                             ; preds = %3479
  %3596 = load i32, ptr %56, align 4, !tbaa !9
  %3597 = add nsw i32 %3596, 1
  store i32 %3597, ptr %56, align 4, !tbaa !9
  br label %3475, !llvm.loop !43

3598:                                             ; preds = %3475
  br label %3599

3599:                                             ; preds = %3598
  %3600 = load i32, ptr %57, align 4, !tbaa !9
  %3601 = add nsw i32 %3600, 1
  store i32 %3601, ptr %57, align 4, !tbaa !9
  br label %3159, !llvm.loop !44

3602:                                             ; preds = %3159
  %3603 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %3603, ptr %38, align 4, !tbaa !9
  %3604 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %3604, ptr %56, align 4, !tbaa !9
  br label %3605

3605:                                             ; preds = %3758, %3602
  %3606 = load i32, ptr %56, align 4, !tbaa !9
  %3607 = load i32, ptr %38, align 4, !tbaa !9
  %3608 = icmp sle i32 %3606, %3607
  br i1 %3608, label %3609, label %3761

3609:                                             ; preds = %3605
  %3610 = load i32, ptr %56, align 4, !tbaa !9
  %3611 = load ptr, ptr %18, align 8, !tbaa !5
  %3612 = load i32, ptr %3611, align 4, !tbaa !9
  %3613 = sub nsw i32 %3610, %3612
  store i32 %3613, ptr %35, align 4, !tbaa !9
  %3614 = load i32, ptr %55, align 4, !tbaa !9
  %3615 = load i32, ptr %78, align 4, !tbaa !9
  %3616 = sub nsw i32 %3614, %3615
  store i32 %3616, ptr %36, align 4, !tbaa !9
  %3617 = load i32, ptr %55, align 4, !tbaa !9
  %3618 = sub nsw i32 %3617, 1
  store i32 %3618, ptr %37, align 4, !tbaa !9
  %3619 = load i32, ptr %35, align 4, !tbaa !9
  %3620 = load i32, ptr %36, align 4, !tbaa !9
  %3621 = icmp sge i32 %3619, %3620
  br i1 %3621, label %3622, label %3624

3622:                                             ; preds = %3609
  %3623 = load i32, ptr %35, align 4, !tbaa !9
  br label %3626

3624:                                             ; preds = %3609
  %3625 = load i32, ptr %36, align 4, !tbaa !9
  br label %3626

3626:                                             ; preds = %3624, %3622
  %3627 = phi i32 [ %3623, %3622 ], [ %3625, %3624 ]
  store i32 %3627, ptr %57, align 4, !tbaa !9
  br label %3628

3628:                                             ; preds = %3754, %3626
  %3629 = load i32, ptr %57, align 4, !tbaa !9
  %3630 = load i32, ptr %37, align 4, !tbaa !9
  %3631 = icmp sle i32 %3629, %3630
  br i1 %3631, label %3632, label %3757

3632:                                             ; preds = %3628
  %3633 = load i32, ptr %56, align 4, !tbaa !9
  %3634 = load i32, ptr %57, align 4, !tbaa !9
  %3635 = sub nsw i32 %3633, %3634
  %3636 = add nsw i32 %3635, 1
  %3637 = load i32, ptr %57, align 4, !tbaa !9
  %3638 = load i32, ptr %29, align 4, !tbaa !9
  %3639 = mul nsw i32 %3637, %3638
  %3640 = add nsw i32 %3636, %3639
  store i32 %3640, ptr %35, align 4, !tbaa !9
  %3641 = load i32, ptr %56, align 4, !tbaa !9
  %3642 = load i32, ptr %57, align 4, !tbaa !9
  %3643 = sub nsw i32 %3641, %3642
  %3644 = add nsw i32 %3643, 1
  %3645 = load i32, ptr %57, align 4, !tbaa !9
  %3646 = load i32, ptr %29, align 4, !tbaa !9
  %3647 = mul nsw i32 %3645, %3646
  %3648 = add nsw i32 %3644, %3647
  store i32 %3648, ptr %36, align 4, !tbaa !9
  %3649 = load i32, ptr %55, align 4, !tbaa !9
  %3650 = load i32, ptr %57, align 4, !tbaa !9
  %3651 = sub nsw i32 %3649, %3650
  %3652 = add nsw i32 %3651, 1
  %3653 = load i32, ptr %57, align 4, !tbaa !9
  %3654 = load i32, ptr %31, align 4, !tbaa !9
  %3655 = mul nsw i32 %3653, %3654
  %3656 = add nsw i32 %3652, %3655
  store i32 %3656, ptr %39, align 4, !tbaa !9
  %3657 = load i32, ptr %56, align 4, !tbaa !9
  %3658 = load i32, ptr %55, align 4, !tbaa !9
  %3659 = sub nsw i32 %3657, %3658
  %3660 = add nsw i32 %3659, 1
  %3661 = load i32, ptr %55, align 4, !tbaa !9
  %3662 = load i32, ptr %29, align 4, !tbaa !9
  %3663 = mul nsw i32 %3661, %3662
  %3664 = add nsw i32 %3660, %3663
  store i32 %3664, ptr %40, align 4, !tbaa !9
  %3665 = load ptr, ptr %22, align 8, !tbaa !5
  %3666 = load i32, ptr %39, align 4, !tbaa !9
  %3667 = sext i32 %3666 to i64
  %3668 = getelementptr inbounds %struct.doublecomplex, ptr %3665, i64 %3667
  %3669 = getelementptr inbounds %struct.doublecomplex, ptr %3668, i32 0, i32 0
  %3670 = load double, ptr %3669, align 8, !tbaa !11
  %3671 = load ptr, ptr %20, align 8, !tbaa !5
  %3672 = load i32, ptr %40, align 4, !tbaa !9
  %3673 = sext i32 %3672 to i64
  %3674 = getelementptr inbounds %struct.doublecomplex, ptr %3671, i64 %3673
  %3675 = getelementptr inbounds %struct.doublecomplex, ptr %3674, i32 0, i32 0
  %3676 = load double, ptr %3675, align 8, !tbaa !11
  %3677 = load ptr, ptr %22, align 8, !tbaa !5
  %3678 = load i32, ptr %39, align 4, !tbaa !9
  %3679 = sext i32 %3678 to i64
  %3680 = getelementptr inbounds %struct.doublecomplex, ptr %3677, i64 %3679
  %3681 = getelementptr inbounds %struct.doublecomplex, ptr %3680, i32 0, i32 1
  %3682 = load double, ptr %3681, align 8, !tbaa !15
  %3683 = load ptr, ptr %20, align 8, !tbaa !5
  %3684 = load i32, ptr %40, align 4, !tbaa !9
  %3685 = sext i32 %3684 to i64
  %3686 = getelementptr inbounds %struct.doublecomplex, ptr %3683, i64 %3685
  %3687 = getelementptr inbounds %struct.doublecomplex, ptr %3686, i32 0, i32 1
  %3688 = load double, ptr %3687, align 8, !tbaa !15
  %3689 = fmul double %3682, %3688
  %3690 = fneg double %3689
  %3691 = call double @llvm.fmuladd.f64(double %3670, double %3676, double %3690)
  %3692 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3691, ptr %3692, align 8, !tbaa !11
  %3693 = load ptr, ptr %22, align 8, !tbaa !5
  %3694 = load i32, ptr %39, align 4, !tbaa !9
  %3695 = sext i32 %3694 to i64
  %3696 = getelementptr inbounds %struct.doublecomplex, ptr %3693, i64 %3695
  %3697 = getelementptr inbounds %struct.doublecomplex, ptr %3696, i32 0, i32 0
  %3698 = load double, ptr %3697, align 8, !tbaa !11
  %3699 = load ptr, ptr %20, align 8, !tbaa !5
  %3700 = load i32, ptr %40, align 4, !tbaa !9
  %3701 = sext i32 %3700 to i64
  %3702 = getelementptr inbounds %struct.doublecomplex, ptr %3699, i64 %3701
  %3703 = getelementptr inbounds %struct.doublecomplex, ptr %3702, i32 0, i32 1
  %3704 = load double, ptr %3703, align 8, !tbaa !15
  %3705 = load ptr, ptr %22, align 8, !tbaa !5
  %3706 = load i32, ptr %39, align 4, !tbaa !9
  %3707 = sext i32 %3706 to i64
  %3708 = getelementptr inbounds %struct.doublecomplex, ptr %3705, i64 %3707
  %3709 = getelementptr inbounds %struct.doublecomplex, ptr %3708, i32 0, i32 1
  %3710 = load double, ptr %3709, align 8, !tbaa !15
  %3711 = load ptr, ptr %20, align 8, !tbaa !5
  %3712 = load i32, ptr %40, align 4, !tbaa !9
  %3713 = sext i32 %3712 to i64
  %3714 = getelementptr inbounds %struct.doublecomplex, ptr %3711, i64 %3713
  %3715 = getelementptr inbounds %struct.doublecomplex, ptr %3714, i32 0, i32 0
  %3716 = load double, ptr %3715, align 8, !tbaa !11
  %3717 = fmul double %3710, %3716
  %3718 = call double @llvm.fmuladd.f64(double %3698, double %3704, double %3717)
  %3719 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3718, ptr %3719, align 8, !tbaa !15
  %3720 = load ptr, ptr %20, align 8, !tbaa !5
  %3721 = load i32, ptr %36, align 4, !tbaa !9
  %3722 = sext i32 %3721 to i64
  %3723 = getelementptr inbounds %struct.doublecomplex, ptr %3720, i64 %3722
  %3724 = getelementptr inbounds %struct.doublecomplex, ptr %3723, i32 0, i32 0
  %3725 = load double, ptr %3724, align 8, !tbaa !11
  %3726 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3727 = load double, ptr %3726, align 8, !tbaa !11
  %3728 = fsub double %3725, %3727
  %3729 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %3728, ptr %3729, align 8, !tbaa !11
  %3730 = load ptr, ptr %20, align 8, !tbaa !5
  %3731 = load i32, ptr %36, 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
  %3735 = load double, ptr %3734, align 8, !tbaa !15
  %3736 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3737 = load double, ptr %3736, align 8, !tbaa !15
  %3738 = fsub double %3735, %3737
  %3739 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %3738, ptr %3739, align 8, !tbaa !15
  %3740 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %3741 = load double, ptr %3740, align 8, !tbaa !11
  %3742 = load ptr, ptr %20, align 8, !tbaa !5
  %3743 = load i32, ptr %35, align 4, !tbaa !9
  %3744 = sext i32 %3743 to i64
  %3745 = getelementptr inbounds %struct.doublecomplex, ptr %3742, i64 %3744
  %3746 = getelementptr inbounds %struct.doublecomplex, ptr %3745, i32 0, i32 0
  store double %3741, ptr %3746, align 8, !tbaa !11
  %3747 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %3748 = load double, ptr %3747, align 8, !tbaa !15
  %3749 = load ptr, ptr %20, align 8, !tbaa !5
  %3750 = load i32, ptr %35, align 4, !tbaa !9
  %3751 = sext i32 %3750 to i64
  %3752 = getelementptr inbounds %struct.doublecomplex, ptr %3749, i64 %3751
  %3753 = getelementptr inbounds %struct.doublecomplex, ptr %3752, i32 0, i32 1
  store double %3748, ptr %3753, align 8, !tbaa !15
  br label %3754

3754:                                             ; preds = %3632
  %3755 = load i32, ptr %57, align 4, !tbaa !9
  %3756 = add nsw i32 %3755, 1
  store i32 %3756, ptr %57, align 4, !tbaa !9
  br label %3628, !llvm.loop !45

3757:                                             ; preds = %3628
  br label %3758

3758:                                             ; preds = %3757
  %3759 = load i32, ptr %56, align 4, !tbaa !9
  %3760 = add nsw i32 %3759, 1
  store i32 %3760, ptr %56, align 4, !tbaa !9
  br label %3605, !llvm.loop !46

3761:                                             ; preds = %3605
  %3762 = load i32, ptr %67, align 4, !tbaa !9
  %3763 = icmp ne i32 %3762, 0
  br i1 %3763, label %3764, label %3825

3764:                                             ; preds = %3761
  %3765 = load ptr, ptr %17, align 8, !tbaa !5
  %3766 = load i32, ptr %3765, align 4, !tbaa !9
  %3767 = load i32, ptr %59, align 4, !tbaa !9
  %3768 = sub nsw i32 %3766, %3767
  store i32 %3768, ptr %38, align 4, !tbaa !9
  %3769 = load double, ptr %77, align 8, !tbaa !14
  %3770 = fdiv double 1.000000e+00, %3769
  store double %3770, ptr %43, align 8, !tbaa !14
  %3771 = load ptr, ptr %24, align 8, !tbaa !5
  %3772 = load i32, ptr %59, align 4, !tbaa !9
  %3773 = add nsw i32 %3772, 1
  %3774 = load i32, ptr %55, align 4, !tbaa !9
  %3775 = load i32, ptr %33, align 4, !tbaa !9
  %3776 = mul nsw i32 %3774, %3775
  %3777 = add nsw i32 %3773, %3776
  %3778 = sext i32 %3777 to i64
  %3779 = getelementptr inbounds %struct.doublecomplex, ptr %3771, i64 %3778
  call void @zdscal_(ptr noundef %38, ptr noundef %43, ptr noundef %3779, ptr noundef @c__1)
  %3780 = load i32, ptr %78, align 4, !tbaa !9
  %3781 = icmp sgt i32 %3780, 0
  br i1 %3781, label %3782, label %3824

3782:                                             ; preds = %3764
  %3783 = load ptr, ptr %17, align 8, !tbaa !5
  %3784 = load i32, ptr %3783, align 4, !tbaa !9
  %3785 = load i32, ptr %59, align 4, !tbaa !9
  %3786 = sub nsw i32 %3784, %3785
  store i32 %3786, ptr %38, align 4, !tbaa !9
  %3787 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double -1.000000e+00, ptr %3787, align 8, !tbaa !11
  %3788 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double 0.000000e+00, ptr %3788, align 8, !tbaa !15
  %3789 = load ptr, ptr %23, align 8, !tbaa !5
  %3790 = load i32, ptr %3789, align 4, !tbaa !9
  %3791 = sub nsw i32 %3790, 1
  store i32 %3791, ptr %37, align 4, !tbaa !9
  %3792 = load ptr, ptr %24, align 8, !tbaa !5
  %3793 = load i32, ptr %59, align 4, !tbaa !9
  %3794 = add nsw i32 %3793, 1
  %3795 = load i32, ptr %55, align 4, !tbaa !9
  %3796 = load i32, ptr %33, align 4, !tbaa !9
  %3797 = mul nsw i32 %3795, %3796
  %3798 = add nsw i32 %3794, %3797
  %3799 = sext i32 %3798 to i64
  %3800 = getelementptr inbounds %struct.doublecomplex, ptr %3792, i64 %3799
  %3801 = load ptr, ptr %22, align 8, !tbaa !5
  %3802 = load i32, ptr %78, align 4, !tbaa !9
  %3803 = add nsw i32 %3802, 1
  %3804 = load i32, ptr %55, align 4, !tbaa !9
  %3805 = load i32, ptr %78, align 4, !tbaa !9
  %3806 = sub nsw i32 %3804, %3805
  %3807 = load i32, ptr %31, align 4, !tbaa !9
  %3808 = mul nsw i32 %3806, %3807
  %3809 = add nsw i32 %3803, %3808
  %3810 = sext i32 %3809 to i64
  %3811 = getelementptr inbounds %struct.doublecomplex, ptr %3801, i64 %3810
  %3812 = load ptr, ptr %24, align 8, !tbaa !5
  %3813 = load i32, ptr %59, align 4, !tbaa !9
  %3814 = add nsw i32 %3813, 1
  %3815 = load i32, ptr %55, align 4, !tbaa !9
  %3816 = load i32, ptr %78, align 4, !tbaa !9
  %3817 = sub nsw i32 %3815, %3816
  %3818 = load i32, ptr %33, align 4, !tbaa !9
  %3819 = mul nsw i32 %3817, %3818
  %3820 = add nsw i32 %3814, %3819
  %3821 = sext i32 %3820 to i64
  %3822 = getelementptr inbounds %struct.doublecomplex, ptr %3812, i64 %3821
  %3823 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zgeru_(ptr noundef %38, ptr noundef %78, ptr noundef %44, ptr noundef %3800, ptr noundef @c__1, ptr noundef %3811, ptr noundef %37, ptr noundef %3822, ptr noundef %3823)
  br label %3824

3824:                                             ; preds = %3782, %3764
  br label %3825

3825:                                             ; preds = %3824, %3761
  %3826 = load i32, ptr %62, align 4, !tbaa !9
  %3827 = load i32, ptr %55, align 4, !tbaa !9
  %3828 = sub nsw i32 %3826, %3827
  %3829 = add nsw i32 %3828, 1
  %3830 = load i32, ptr %55, align 4, !tbaa !9
  %3831 = load i32, ptr %29, align 4, !tbaa !9
  %3832 = mul nsw i32 %3830, %3831
  %3833 = add nsw i32 %3829, %3832
  store i32 %3833, ptr %38, align 4, !tbaa !9
  %3834 = load ptr, ptr %20, align 8, !tbaa !5
  %3835 = load i32, ptr %38, align 4, !tbaa !9
  %3836 = sext i32 %3835 to i64
  %3837 = getelementptr inbounds %struct.doublecomplex, ptr %3834, i64 %3836
  %3838 = getelementptr inbounds %struct.doublecomplex, ptr %3837, i32 0, i32 0
  %3839 = load double, ptr %3838, align 8, !tbaa !11
  %3840 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %3839, ptr %3840, align 8, !tbaa !11
  %3841 = load ptr, ptr %20, align 8, !tbaa !5
  %3842 = load i32, ptr %38, align 4, !tbaa !9
  %3843 = sext i32 %3842 to i64
  %3844 = getelementptr inbounds %struct.doublecomplex, ptr %3841, i64 %3843
  %3845 = getelementptr inbounds %struct.doublecomplex, ptr %3844, i32 0, i32 1
  %3846 = load double, ptr %3845, align 8, !tbaa !15
  %3847 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %3846, ptr %3847, align 8, !tbaa !15
  br label %3848

3848:                                             ; preds = %3825, %2979
  %3849 = load ptr, ptr %19, align 8, !tbaa !5
  %3850 = load i32, ptr %3849, align 4, !tbaa !9
  %3851 = sub nsw i32 %3850, 1
  store i32 %3851, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %3852

3852:                                             ; preds = %4690, %3848
  %3853 = load i32, ptr %57, align 4, !tbaa !9
  %3854 = load i32, ptr %38, align 4, !tbaa !9
  %3855 = icmp sle i32 %3853, %3854
  br i1 %3855, label %3856, label %4693

3856:                                             ; preds = %3852
  %3857 = load i32, ptr %71, align 4, !tbaa !9
  %3858 = icmp ne i32 %3857, 0
  br i1 %3858, label %3859, label %4207

3859:                                             ; preds = %3856
  %3860 = load i32, ptr %55, align 4, !tbaa !9
  %3861 = load i32, ptr %57, align 4, !tbaa !9
  %3862 = sub nsw i32 %3860, %3861
  %3863 = load ptr, ptr %18, align 8, !tbaa !5
  %3864 = load i32, ptr %3863, align 4, !tbaa !9
  %3865 = add nsw i32 %3862, %3864
  %3866 = load ptr, ptr %17, align 8, !tbaa !5
  %3867 = load i32, ptr %3866, align 4, !tbaa !9
  %3868 = icmp slt i32 %3865, %3867
  br i1 %3868, label %3869, label %4206

3869:                                             ; preds = %3859
  %3870 = load i32, ptr %55, align 4, !tbaa !9
  %3871 = load i32, ptr %57, align 4, !tbaa !9
  %3872 = sub nsw i32 %3870, %3871
  %3873 = icmp sgt i32 %3872, 1
  br i1 %3873, label %3874, label %4206

3874:                                             ; preds = %3869
  %3875 = load ptr, ptr %20, align 8, !tbaa !5
  %3876 = load i32, ptr %72, align 4, !tbaa !9
  %3877 = load i32, ptr %57, align 4, !tbaa !9
  %3878 = sub nsw i32 %3876, %3877
  %3879 = load i32, ptr %55, align 4, !tbaa !9
  %3880 = load i32, ptr %29, align 4, !tbaa !9
  %3881 = mul nsw i32 %3879, %3880
  %3882 = add nsw i32 %3878, %3881
  %3883 = sext i32 %3882 to i64
  %3884 = getelementptr inbounds %struct.doublecomplex, ptr %3875, i64 %3883
  %3885 = load ptr, ptr %27, align 8, !tbaa !5
  %3886 = load i32, ptr %55, align 4, !tbaa !9
  %3887 = load i32, ptr %57, align 4, !tbaa !9
  %3888 = sub nsw i32 %3886, %3887
  %3889 = load ptr, ptr %18, align 8, !tbaa !5
  %3890 = load i32, ptr %3889, align 4, !tbaa !9
  %3891 = add nsw i32 %3888, %3890
  %3892 = load i32, ptr %59, align 4, !tbaa !9
  %3893 = sub nsw i32 %3891, %3892
  %3894 = sext i32 %3893 to i64
  %3895 = getelementptr inbounds double, ptr %3885, i64 %3894
  %3896 = load ptr, ptr %26, align 8, !tbaa !5
  %3897 = load i32, ptr %55, align 4, !tbaa !9
  %3898 = load i32, ptr %57, align 4, !tbaa !9
  %3899 = sub nsw i32 %3897, %3898
  %3900 = load ptr, ptr %18, align 8, !tbaa !5
  %3901 = load i32, ptr %3900, align 4, !tbaa !9
  %3902 = add nsw i32 %3899, %3901
  %3903 = load i32, ptr %59, align 4, !tbaa !9
  %3904 = sub nsw i32 %3902, %3903
  %3905 = sext i32 %3904 to i64
  %3906 = getelementptr inbounds %struct.doublecomplex, ptr %3896, i64 %3905
  call void @zlartg_(ptr noundef %3884, ptr noundef %74, ptr noundef %3895, ptr noundef %3906, ptr noundef %68)
  %3907 = load i32, ptr %57, align 4, !tbaa !9
  %3908 = add nsw i32 %3907, 1
  %3909 = load i32, ptr %55, align 4, !tbaa !9
  %3910 = load i32, ptr %57, align 4, !tbaa !9
  %3911 = sub nsw i32 %3909, %3910
  %3912 = load i32, ptr %31, align 4, !tbaa !9
  %3913 = mul nsw i32 %3911, %3912
  %3914 = add nsw i32 %3908, %3913
  store i32 %3914, ptr %37, align 4, !tbaa !9
  %3915 = load ptr, ptr %22, align 8, !tbaa !5
  %3916 = load i32, ptr %37, align 4, !tbaa !9
  %3917 = sext i32 %3916 to i64
  %3918 = getelementptr inbounds %struct.doublecomplex, ptr %3915, i64 %3917
  %3919 = getelementptr inbounds %struct.doublecomplex, ptr %3918, i32 0, i32 0
  %3920 = load double, ptr %3919, align 8, !tbaa !11
  %3921 = fneg double %3920
  %3922 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3921, ptr %3922, align 8, !tbaa !11
  %3923 = load ptr, ptr %22, align 8, !tbaa !5
  %3924 = load i32, ptr %37, align 4, !tbaa !9
  %3925 = sext i32 %3924 to i64
  %3926 = getelementptr inbounds %struct.doublecomplex, ptr %3923, i64 %3925
  %3927 = getelementptr inbounds %struct.doublecomplex, ptr %3926, i32 0, i32 1
  %3928 = load double, ptr %3927, align 8, !tbaa !15
  %3929 = fneg double %3928
  %3930 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3929, ptr %3930, align 8, !tbaa !15
  %3931 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3932 = load double, ptr %3931, align 8, !tbaa !11
  %3933 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %3934 = load double, ptr %3933, align 8, !tbaa !11
  %3935 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3936 = load double, ptr %3935, align 8, !tbaa !15
  %3937 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %3938 = load double, ptr %3937, align 8, !tbaa !15
  %3939 = fmul double %3936, %3938
  %3940 = fneg double %3939
  %3941 = call double @llvm.fmuladd.f64(double %3932, double %3934, double %3940)
  %3942 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %3941, ptr %3942, align 8, !tbaa !11
  %3943 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3944 = load double, ptr %3943, align 8, !tbaa !11
  %3945 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %3946 = load double, ptr %3945, align 8, !tbaa !15
  %3947 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3948 = load double, ptr %3947, align 8, !tbaa !15
  %3949 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %3950 = load double, ptr %3949, align 8, !tbaa !11
  %3951 = fmul double %3948, %3950
  %3952 = call double @llvm.fmuladd.f64(double %3944, double %3946, double %3951)
  %3953 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %3952, ptr %3953, align 8, !tbaa !15
  %3954 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %3955 = load double, ptr %3954, align 8, !tbaa !11
  %3956 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %3955, ptr %3956, align 8, !tbaa !11
  %3957 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %3958 = load double, ptr %3957, align 8, !tbaa !15
  %3959 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %3958, ptr %3959, align 8, !tbaa !15
  %3960 = load i32, ptr %55, align 4, !tbaa !9
  %3961 = load i32, ptr %57, align 4, !tbaa !9
  %3962 = sub nsw i32 %3960, %3961
  store i32 %3962, ptr %37, align 4, !tbaa !9
  %3963 = load i32, ptr %55, align 4, !tbaa !9
  %3964 = load i32, ptr %57, align 4, !tbaa !9
  %3965 = sub nsw i32 %3963, %3964
  %3966 = load ptr, ptr %18, align 8, !tbaa !5
  %3967 = load i32, ptr %3966, align 4, !tbaa !9
  %3968 = add nsw i32 %3965, %3967
  %3969 = load i32, ptr %59, align 4, !tbaa !9
  %3970 = sub nsw i32 %3968, %3969
  store i32 %3970, ptr %35, align 4, !tbaa !9
  %3971 = load ptr, ptr %27, align 8, !tbaa !5
  %3972 = load i32, ptr %35, align 4, !tbaa !9
  %3973 = sext i32 %3972 to i64
  %3974 = getelementptr inbounds double, ptr %3971, i64 %3973
  %3975 = load double, ptr %3974, align 8, !tbaa !14
  %3976 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %3977 = load double, ptr %3976, align 8, !tbaa !11
  %3978 = fmul double %3975, %3977
  %3979 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3978, ptr %3979, align 8, !tbaa !11
  %3980 = load ptr, ptr %27, align 8, !tbaa !5
  %3981 = load i32, ptr %35, align 4, !tbaa !9
  %3982 = sext i32 %3981 to i64
  %3983 = getelementptr inbounds double, ptr %3980, i64 %3982
  %3984 = load double, ptr %3983, align 8, !tbaa !14
  %3985 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %3986 = load double, ptr %3985, align 8, !tbaa !15
  %3987 = fmul double %3984, %3986
  %3988 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3987, ptr %3988, align 8, !tbaa !15
  %3989 = load ptr, ptr %26, align 8, !tbaa !5
  %3990 = load i32, ptr %55, align 4, !tbaa !9
  %3991 = load i32, ptr %57, align 4, !tbaa !9
  %3992 = sub nsw i32 %3990, %3991
  %3993 = load ptr, ptr %18, align 8, !tbaa !5
  %3994 = load i32, ptr %3993, align 4, !tbaa !9
  %3995 = add nsw i32 %3992, %3994
  %3996 = load i32, ptr %59, align 4, !tbaa !9
  %3997 = sub nsw i32 %3995, %3996
  %3998 = sext i32 %3997 to i64
  %3999 = getelementptr inbounds %struct.doublecomplex, ptr %3989, i64 %3998
  %4000 = call { double, double } @Cd(ptr noundef %3999)
  %4001 = extractvalue { double, double } %4000, 0
  %4002 = extractvalue { double, double } %4000, 1
  %4003 = fneg double %4002
  %4004 = call ptr @_pCd(ptr noundef %47)
  %4005 = getelementptr inbounds { double, double }, ptr %4004, i32 0, i32 0
  %4006 = getelementptr inbounds { double, double }, ptr %4004, i32 0, i32 1
  store double %4001, ptr %4005, align 8
  store double %4003, ptr %4006, align 8
  %4007 = load i32, ptr %72, align 4, !tbaa !9
  %4008 = load i32, ptr %55, align 4, !tbaa !9
  %4009 = load i32, ptr %57, align 4, !tbaa !9
  %4010 = sub nsw i32 %4008, %4009
  %4011 = load i32, ptr %29, align 4, !tbaa !9
  %4012 = mul nsw i32 %4010, %4011
  %4013 = add nsw i32 %4007, %4012
  store i32 %4013, ptr %36, align 4, !tbaa !9
  %4014 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %4015 = load double, ptr %4014, align 8, !tbaa !11
  %4016 = load ptr, ptr %20, align 8, !tbaa !5
  %4017 = load i32, ptr %36, align 4, !tbaa !9
  %4018 = sext i32 %4017 to i64
  %4019 = getelementptr inbounds %struct.doublecomplex, ptr %4016, i64 %4018
  %4020 = getelementptr inbounds %struct.doublecomplex, ptr %4019, i32 0, i32 0
  %4021 = load double, ptr %4020, align 8, !tbaa !11
  %4022 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %4023 = load double, ptr %4022, align 8, !tbaa !15
  %4024 = load ptr, ptr %20, align 8, !tbaa !5
  %4025 = load i32, ptr %36, align 4, !tbaa !9
  %4026 = sext i32 %4025 to i64
  %4027 = getelementptr inbounds %struct.doublecomplex, ptr %4024, i64 %4026
  %4028 = getelementptr inbounds %struct.doublecomplex, ptr %4027, i32 0, i32 1
  %4029 = load double, ptr %4028, align 8, !tbaa !15
  %4030 = fmul double %4023, %4029
  %4031 = fneg double %4030
  %4032 = call double @llvm.fmuladd.f64(double %4015, double %4021, double %4031)
  %4033 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %4032, ptr %4033, align 8, !tbaa !11
  %4034 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %4035 = load double, ptr %4034, align 8, !tbaa !11
  %4036 = load ptr, ptr %20, align 8, !tbaa !5
  %4037 = load i32, ptr %36, align 4, !tbaa !9
  %4038 = sext i32 %4037 to i64
  %4039 = getelementptr inbounds %struct.doublecomplex, ptr %4036, i64 %4038
  %4040 = getelementptr inbounds %struct.doublecomplex, ptr %4039, i32 0, i32 1
  %4041 = load double, ptr %4040, align 8, !tbaa !15
  %4042 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %4043 = load double, ptr %4042, align 8, !tbaa !15
  %4044 = load ptr, ptr %20, align 8, !tbaa !5
  %4045 = load i32, ptr %36, align 4, !tbaa !9
  %4046 = sext i32 %4045 to i64
  %4047 = getelementptr inbounds %struct.doublecomplex, ptr %4044, i64 %4046
  %4048 = getelementptr inbounds %struct.doublecomplex, ptr %4047, i32 0, i32 0
  %4049 = load double, ptr %4048, align 8, !tbaa !11
  %4050 = fmul double %4043, %4049
  %4051 = call double @llvm.fmuladd.f64(double %4035, double %4041, double %4050)
  %4052 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %4051, ptr %4052, align 8, !tbaa !15
  %4053 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %4054 = load double, ptr %4053, align 8, !tbaa !11
  %4055 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %4056 = load double, ptr %4055, align 8, !tbaa !11
  %4057 = fsub double %4054, %4056
  %4058 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %4057, ptr %4058, align 8, !tbaa !11
  %4059 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %4060 = load double, ptr %4059, align 8, !tbaa !15
  %4061 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %4062 = load double, ptr %4061, align 8, !tbaa !15
  %4063 = fsub double %4060, %4062
  %4064 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %4063, ptr %4064, align 8, !tbaa !15
  %4065 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %4066 = load double, ptr %4065, align 8, !tbaa !11
  %4067 = load ptr, ptr %26, align 8, !tbaa !5
  %4068 = load i32, ptr %37, align 4, !tbaa !9
  %4069 = sext i32 %4068 to i64
  %4070 = getelementptr inbounds %struct.doublecomplex, ptr %4067, i64 %4069
  %4071 = getelementptr inbounds %struct.doublecomplex, ptr %4070, i32 0, i32 0
  store double %4066, ptr %4071, align 8, !tbaa !11
  %4072 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %4073 = load double, ptr %4072, align 8, !tbaa !15
  %4074 = load ptr, ptr %26, align 8, !tbaa !5
  %4075 = load i32, ptr %37, align 4, !tbaa !9
  %4076 = sext i32 %4075 to i64
  %4077 = getelementptr inbounds %struct.doublecomplex, ptr %4074, i64 %4076
  %4078 = getelementptr inbounds %struct.doublecomplex, ptr %4077, i32 0, i32 1
  store double %4073, ptr %4078, align 8, !tbaa !15
  %4079 = load i32, ptr %72, align 4, !tbaa !9
  %4080 = load i32, ptr %55, align 4, !tbaa !9
  %4081 = load i32, ptr %57, align 4, !tbaa !9
  %4082 = sub nsw i32 %4080, %4081
  %4083 = load i32, ptr %29, align 4, !tbaa !9
  %4084 = mul nsw i32 %4082, %4083
  %4085 = add nsw i32 %4079, %4084
  store i32 %4085, ptr %37, align 4, !tbaa !9
  %4086 = load i32, ptr %55, align 4, !tbaa !9
  %4087 = load i32, ptr %57, align 4, !tbaa !9
  %4088 = sub nsw i32 %4086, %4087
  %4089 = load ptr, ptr %18, align 8, !tbaa !5
  %4090 = load i32, ptr %4089, align 4, !tbaa !9
  %4091 = add nsw i32 %4088, %4090
  %4092 = load i32, ptr %59, align 4, !tbaa !9
  %4093 = sub nsw i32 %4091, %4092
  store i32 %4093, ptr %35, align 4, !tbaa !9
  %4094 = load ptr, ptr %26, align 8, !tbaa !5
  %4095 = load i32, ptr %35, align 4, !tbaa !9
  %4096 = sext i32 %4095 to i64
  %4097 = getelementptr inbounds %struct.doublecomplex, ptr %4094, i64 %4096
  %4098 = getelementptr inbounds %struct.doublecomplex, ptr %4097, i32 0, i32 0
  %4099 = load double, ptr %4098, align 8, !tbaa !11
  %4100 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %4101 = load double, ptr %4100, align 8, !tbaa !11
  %4102 = load ptr, ptr %26, align 8, !tbaa !5
  %4103 = load i32, ptr %35, align 4, !tbaa !9
  %4104 = sext i32 %4103 to i64
  %4105 = getelementptr inbounds %struct.doublecomplex, ptr %4102, i64 %4104
  %4106 = getelementptr inbounds %struct.doublecomplex, ptr %4105, i32 0, i32 1
  %4107 = load double, ptr %4106, align 8, !tbaa !15
  %4108 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %4109 = load double, ptr %4108, align 8, !tbaa !15
  %4110 = fmul double %4107, %4109
  %4111 = fneg double %4110
  %4112 = call double @llvm.fmuladd.f64(double %4099, double %4101, double %4111)
  %4113 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %4112, ptr %4113, align 8, !tbaa !11
  %4114 = load ptr, ptr %26, align 8, !tbaa !5
  %4115 = load i32, ptr %35, align 4, !tbaa !9
  %4116 = sext i32 %4115 to i64
  %4117 = getelementptr inbounds %struct.doublecomplex, ptr %4114, i64 %4116
  %4118 = getelementptr inbounds %struct.doublecomplex, ptr %4117, i32 0, i32 0
  %4119 = load double, ptr %4118, align 8, !tbaa !11
  %4120 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %4121 = load double, ptr %4120, align 8, !tbaa !15
  %4122 = load ptr, ptr %26, align 8, !tbaa !5
  %4123 = load i32, ptr %35, align 4, !tbaa !9
  %4124 = sext i32 %4123 to i64
  %4125 = getelementptr inbounds %struct.doublecomplex, ptr %4122, i64 %4124
  %4126 = getelementptr inbounds %struct.doublecomplex, ptr %4125, i32 0, i32 1
  %4127 = load double, ptr %4126, align 8, !tbaa !15
  %4128 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %4129 = load double, ptr %4128, align 8, !tbaa !11
  %4130 = fmul double %4127, %4129
  %4131 = call double @llvm.fmuladd.f64(double %4119, double %4121, double %4130)
  %4132 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %4131, ptr %4132, align 8, !tbaa !15
  %4133 = load i32, ptr %55, align 4, !tbaa !9
  %4134 = load i32, ptr %57, align 4, !tbaa !9
  %4135 = sub nsw i32 %4133, %4134
  %4136 = load ptr, ptr %18, align 8, !tbaa !5
  %4137 = load i32, ptr %4136, align 4, !tbaa !9
  %4138 = add nsw i32 %4135, %4137
  %4139 = load i32, ptr %59, align 4, !tbaa !9
  %4140 = sub nsw i32 %4138, %4139
  store i32 %4140, ptr %36, align 4, !tbaa !9
  %4141 = load i32, ptr %72, align 4, !tbaa !9
  %4142 = load i32, ptr %55, align 4, !tbaa !9
  %4143 = load i32, ptr %57, align 4, !tbaa !9
  %4144 = sub nsw i32 %4142, %4143
  %4145 = load i32, ptr %29, align 4, !tbaa !9
  %4146 = mul nsw i32 %4144, %4145
  %4147 = add nsw i32 %4141, %4146
  store i32 %4147, ptr %39, align 4, !tbaa !9
  %4148 = load ptr, ptr %27, align 8, !tbaa !5
  %4149 = load i32, ptr %36, align 4, !tbaa !9
  %4150 = sext i32 %4149 to i64
  %4151 = getelementptr inbounds double, ptr %4148, i64 %4150
  %4152 = load double, ptr %4151, align 8, !tbaa !14
  %4153 = load ptr, ptr %20, align 8, !tbaa !5
  %4154 = load i32, ptr %39, align 4, !tbaa !9
  %4155 = sext i32 %4154 to i64
  %4156 = getelementptr inbounds %struct.doublecomplex, ptr %4153, i64 %4155
  %4157 = getelementptr inbounds %struct.doublecomplex, ptr %4156, i32 0, i32 0
  %4158 = load double, ptr %4157, align 8, !tbaa !11
  %4159 = fmul double %4152, %4158
  %4160 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %4159, ptr %4160, align 8, !tbaa !11
  %4161 = load ptr, ptr %27, align 8, !tbaa !5
  %4162 = load i32, ptr %36, align 4, !tbaa !9
  %4163 = sext i32 %4162 to i64
  %4164 = getelementptr inbounds double, ptr %4161, i64 %4163
  %4165 = load double, ptr %4164, align 8, !tbaa !14
  %4166 = load ptr, ptr %20, align 8, !tbaa !5
  %4167 = load i32, ptr %39, align 4, !tbaa !9
  %4168 = sext i32 %4167 to i64
  %4169 = getelementptr inbounds %struct.doublecomplex, ptr %4166, i64 %4168
  %4170 = getelementptr inbounds %struct.doublecomplex, ptr %4169, i32 0, i32 1
  %4171 = load double, ptr %4170, align 8, !tbaa !15
  %4172 = fmul double %4165, %4171
  %4173 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %4172, ptr %4173, align 8, !tbaa !15
  %4174 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %4175 = load double, ptr %4174, align 8, !tbaa !11
  %4176 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %4177 = load double, ptr %4176, align 8, !tbaa !11
  %4178 = fadd double %4175, %4177
  %4179 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %4178, ptr %4179, align 8, !tbaa !11
  %4180 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %4181 = load double, ptr %4180, align 8, !tbaa !15
  %4182 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %4183 = load double, ptr %4182, align 8, !tbaa !15
  %4184 = fadd double %4181, %4183
  %4185 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %4184, ptr %4185, align 8, !tbaa !15
  %4186 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %4187 = load double, ptr %4186, align 8, !tbaa !11
  %4188 = load ptr, ptr %20, align 8, !tbaa !5
  %4189 = load i32, ptr %37, align 4, !tbaa !9
  %4190 = sext i32 %4189 to i64
  %4191 = getelementptr inbounds %struct.doublecomplex, ptr %4188, i64 %4190
  %4192 = getelementptr inbounds %struct.doublecomplex, ptr %4191, i32 0, i32 0
  store double %4187, ptr %4192, align 8, !tbaa !11
  %4193 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %4194 = load double, ptr %4193, align 8, !tbaa !15
  %4195 = load ptr, ptr %20, align 8, !tbaa !5
  %4196 = load i32, ptr %37, align 4, !tbaa !9
  %4197 = sext i32 %4196 to i64
  %4198 = getelementptr inbounds %struct.doublecomplex, ptr %4195, i64 %4197
  %4199 = getelementptr inbounds %struct.doublecomplex, ptr %4198, i32 0, i32 1
  store double %4194, ptr %4199, align 8, !tbaa !15
  %4200 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %4201 = load double, ptr %4200, align 8, !tbaa !11
  %4202 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %4201, ptr %4202, align 8, !tbaa !11
  %4203 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %4204 = load double, ptr %4203, align 8, !tbaa !15
  %4205 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %4204, ptr %4205, align 8, !tbaa !15
  br label %4206

4206:                                             ; preds = %3874, %3869, %3859
  br label %4207

4207:                                             ; preds = %4206, %3856
  store i32 1, ptr %37, align 4, !tbaa !9
  %4208 = load i32, ptr %57, align 4, !tbaa !9
  %4209 = load i32, ptr %61, align 4, !tbaa !9
  %4210 = sub nsw i32 %4208, %4209
  %4211 = add nsw i32 %4210, 2
  store i32 %4211, ptr %35, align 4, !tbaa !9
  %4212 = load i32, ptr %55, align 4, !tbaa !9
  %4213 = load i32, ptr %57, align 4, !tbaa !9
  %4214 = sub nsw i32 %4212, %4213
  %4215 = sub nsw i32 %4214, 1
  %4216 = load i32, ptr %37, align 4, !tbaa !9
  %4217 = load i32, ptr %35, align 4, !tbaa !9
  %4218 = icmp sge i32 %4216, %4217
  br i1 %4218, label %4219, label %4221

4219:                                             ; preds = %4207
  %4220 = load i32, ptr %37, align 4, !tbaa !9
  br label %4223

4221:                                             ; preds = %4207
  %4222 = load i32, ptr %35, align 4, !tbaa !9
  br label %4223

4223:                                             ; preds = %4221, %4219
  %4224 = phi i32 [ %4220, %4219 ], [ %4222, %4221 ]
  %4225 = load i32, ptr %72, align 4, !tbaa !9
  %4226 = mul nsw i32 %4224, %4225
  %4227 = add nsw i32 %4215, %4226
  store i32 %4227, ptr %66, align 4, !tbaa !9
  %4228 = load ptr, ptr %17, align 8, !tbaa !5
  %4229 = load i32, ptr %4228, align 4, !tbaa !9
  %4230 = load i32, ptr %66, align 4, !tbaa !9
  %4231 = sub nsw i32 %4229, %4230
  %4232 = load ptr, ptr %18, align 8, !tbaa !5
  %4233 = load i32, ptr %4232, align 4, !tbaa !9
  %4234 = add nsw i32 %4231, %4233
  %4235 = load i32, ptr %72, align 4, !tbaa !9
  %4236 = sdiv i32 %4234, %4235
  store i32 %4236, ptr %69, align 4, !tbaa !9
  %4237 = load i32, ptr %66, align 4, !tbaa !9
  %4238 = load i32, ptr %69, align 4, !tbaa !9
  %4239 = sub nsw i32 %4238, 1
  %4240 = load i32, ptr %72, align 4, !tbaa !9
  %4241 = mul nsw i32 %4239, %4240
  %4242 = add nsw i32 %4237, %4241
  store i32 %4242, ptr %65, align 4, !tbaa !9
  %4243 = load i32, ptr %71, align 4, !tbaa !9
  %4244 = icmp ne i32 %4243, 0
  br i1 %4244, label %4245, label %4264

4245:                                             ; preds = %4223
  %4246 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %4246, ptr %37, align 4, !tbaa !9
  %4247 = load i32, ptr %55, align 4, !tbaa !9
  %4248 = load ptr, ptr %18, align 8, !tbaa !5
  %4249 = load i32, ptr %4248, align 4, !tbaa !9
  %4250 = shl i32 %4249, 1
  %4251 = add nsw i32 %4247, %4250
  %4252 = load i32, ptr %57, align 4, !tbaa !9
  %4253 = sub nsw i32 %4251, %4252
  %4254 = add nsw i32 %4253, 1
  store i32 %4254, ptr %35, align 4, !tbaa !9
  %4255 = load i32, ptr %37, align 4, !tbaa !9
  %4256 = load i32, ptr %35, align 4, !tbaa !9
  %4257 = icmp sge i32 %4255, %4256
  br i1 %4257, label %4258, label %4260

4258:                                             ; preds = %4245
  %4259 = load i32, ptr %37, align 4, !tbaa !9
  br label %4262

4260:                                             ; preds = %4245
  %4261 = load i32, ptr %35, align 4, !tbaa !9
  br label %4262

4262:                                             ; preds = %4260, %4258
  %4263 = phi i32 [ %4259, %4258 ], [ %4261, %4260 ]
  store i32 %4263, ptr %76, align 4, !tbaa !9
  br label %4266

4264:                                             ; preds = %4223
  %4265 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %4265, ptr %76, align 4, !tbaa !9
  br label %4266

4266:                                             ; preds = %4264, %4262
  %4267 = load ptr, ptr %17, align 8, !tbaa !5
  %4268 = load i32, ptr %4267, align 4, !tbaa !9
  %4269 = load i32, ptr %76, align 4, !tbaa !9
  %4270 = sub nsw i32 %4268, %4269
  %4271 = load ptr, ptr %18, align 8, !tbaa !5
  %4272 = load i32, ptr %4271, align 4, !tbaa !9
  %4273 = add nsw i32 %4270, %4272
  %4274 = load i32, ptr %72, align 4, !tbaa !9
  %4275 = sdiv i32 %4273, %4274
  store i32 %4275, ptr %79, align 4, !tbaa !9
  %4276 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %4276, ptr %37, align 4, !tbaa !9
  %4277 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %4277, ptr %35, align 4, !tbaa !9
  %4278 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %4278, ptr %56, align 4, !tbaa !9
  br label %4279

4279:                                             ; preds = %4441, %4266
  %4280 = load i32, ptr %35, align 4, !tbaa !9
  %4281 = icmp slt i32 %4280, 0
  br i1 %4281, label %4282, label %4287

4282:                                             ; preds = %4279
  %4283 = load i32, ptr %56, align 4, !tbaa !9
  %4284 = load i32, ptr %37, align 4, !tbaa !9
  %4285 = icmp sge i32 %4283, %4284
  %4286 = zext i1 %4285 to i32
  br label %4292

4287:                                             ; preds = %4279
  %4288 = load i32, ptr %56, align 4, !tbaa !9
  %4289 = load i32, ptr %37, align 4, !tbaa !9
  %4290 = icmp sle i32 %4288, %4289
  %4291 = zext i1 %4290 to i32
  br label %4292

4292:                                             ; preds = %4287, %4282
  %4293 = phi i32 [ %4286, %4282 ], [ %4291, %4287 ]
  %4294 = icmp ne i32 %4293, 0
  br i1 %4294, label %4295, label %4445

4295:                                             ; preds = %4292
  %4296 = load i32, ptr %56, align 4, !tbaa !9
  %4297 = load i32, ptr %59, align 4, !tbaa !9
  %4298 = sub nsw i32 %4296, %4297
  store i32 %4298, ptr %36, align 4, !tbaa !9
  %4299 = load i32, ptr %56, align 4, !tbaa !9
  %4300 = load i32, ptr %59, align 4, !tbaa !9
  %4301 = sub nsw i32 %4299, %4300
  store i32 %4301, ptr %39, align 4, !tbaa !9
  %4302 = load i32, ptr %72, align 4, !tbaa !9
  %4303 = load i32, ptr %56, align 4, !tbaa !9
  %4304 = load ptr, ptr %18, align 8, !tbaa !5
  %4305 = load i32, ptr %4304, align 4, !tbaa !9
  %4306 = sub nsw i32 %4303, %4305
  %4307 = add nsw i32 %4306, 1
  %4308 = load i32, ptr %29, align 4, !tbaa !9
  %4309 = mul nsw i32 %4307, %4308
  %4310 = add nsw i32 %4302, %4309
  store i32 %4310, ptr %40, align 4, !tbaa !9
  %4311 = load ptr, ptr %26, align 8, !tbaa !5
  %4312 = load i32, ptr %39, align 4, !tbaa !9
  %4313 = sext i32 %4312 to i64
  %4314 = getelementptr inbounds %struct.doublecomplex, ptr %4311, i64 %4313
  %4315 = getelementptr inbounds %struct.doublecomplex, ptr %4314, i32 0, i32 0
  %4316 = load double, ptr %4315, align 8, !tbaa !11
  %4317 = load ptr, ptr %20, align 8, !tbaa !5
  %4318 = load i32, ptr %40, align 4, !tbaa !9
  %4319 = sext i32 %4318 to i64
  %4320 = getelementptr inbounds %struct.doublecomplex, ptr %4317, i64 %4319
  %4321 = getelementptr inbounds %struct.doublecomplex, ptr %4320, i32 0, i32 0
  %4322 = load double, ptr %4321, align 8, !tbaa !11
  %4323 = load ptr, ptr %26, align 8, !tbaa !5
  %4324 = load i32, ptr %39, align 4, !tbaa !9
  %4325 = sext i32 %4324 to i64
  %4326 = getelementptr inbounds %struct.doublecomplex, ptr %4323, i64 %4325
  %4327 = getelementptr inbounds %struct.doublecomplex, ptr %4326, i32 0, i32 1
  %4328 = load double, ptr %4327, align 8, !tbaa !15
  %4329 = load ptr, ptr %20, align 8, !tbaa !5
  %4330 = load i32, ptr %40, align 4, !tbaa !9
  %4331 = sext i32 %4330 to i64
  %4332 = getelementptr inbounds %struct.doublecomplex, ptr %4329, i64 %4331
  %4333 = getelementptr inbounds %struct.doublecomplex, ptr %4332, i32 0, i32 1
  %4334 = load double, ptr %4333, align 8, !tbaa !15
  %4335 = fmul double %4328, %4334
  %4336 = fneg double %4335
  %4337 = call double @llvm.fmuladd.f64(double %4316, double %4322, double %4336)
  %4338 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %4337, ptr %4338, align 8, !tbaa !11
  %4339 = load ptr, ptr %26, align 8, !tbaa !5
  %4340 = load i32, ptr %39, align 4, !tbaa !9
  %4341 = sext i32 %4340 to i64
  %4342 = getelementptr inbounds %struct.doublecomplex, ptr %4339, i64 %4341
  %4343 = getelementptr inbounds %struct.doublecomplex, ptr %4342, i32 0, i32 0
  %4344 = load double, ptr %4343, align 8, !tbaa !11
  %4345 = load ptr, ptr %20, align 8, !tbaa !5
  %4346 = load i32, ptr %40, align 4, !tbaa !9
  %4347 = sext i32 %4346 to i64
  %4348 = getelementptr inbounds %struct.doublecomplex, ptr %4345, i64 %4347
  %4349 = getelementptr inbounds %struct.doublecomplex, ptr %4348, i32 0, i32 1
  %4350 = load double, ptr %4349, align 8, !tbaa !15
  %4351 = load ptr, ptr %26, align 8, !tbaa !5
  %4352 = load i32, ptr %39, align 4, !tbaa !9
  %4353 = sext i32 %4352 to i64
  %4354 = getelementptr inbounds %struct.doublecomplex, ptr %4351, i64 %4353
  %4355 = getelementptr inbounds %struct.doublecomplex, ptr %4354, i32 0, i32 1
  %4356 = load double, ptr %4355, align 8, !tbaa !15
  %4357 = load ptr, ptr %20, align 8, !tbaa !5
  %4358 = load i32, ptr %40, align 4, !tbaa !9
  %4359 = sext i32 %4358 to i64
  %4360 = getelementptr inbounds %struct.doublecomplex, ptr %4357, i64 %4359
  %4361 = getelementptr inbounds %struct.doublecomplex, ptr %4360, i32 0, i32 0
  %4362 = load double, ptr %4361, align 8, !tbaa !11
  %4363 = fmul double %4356, %4362
  %4364 = call double @llvm.fmuladd.f64(double %4344, double %4350, double %4363)
  %4365 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %4364, ptr %4365, align 8, !tbaa !15
  %4366 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %4367 = load double, ptr %4366, align 8, !tbaa !11
  %4368 = load ptr, ptr %26, align 8, !tbaa !5
  %4369 = load i32, ptr %36, align 4, !tbaa !9
  %4370 = sext i32 %4369 to i64
  %4371 = getelementptr inbounds %struct.doublecomplex, ptr %4368, i64 %4370
  %4372 = getelementptr inbounds %struct.doublecomplex, ptr %4371, i32 0, i32 0
  store double %4367, ptr %4372, align 8, !tbaa !11
  %4373 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %4374 = load double, ptr %4373, align 8, !tbaa !15
  %4375 = load ptr, ptr %26, align 8, !tbaa !5
  %4376 = load i32, ptr %36, align 4, !tbaa !9
  %4377 = sext i32 %4376 to i64
  %4378 = getelementptr inbounds %struct.doublecomplex, ptr %4375, i64 %4377
  %4379 = getelementptr inbounds %struct.doublecomplex, ptr %4378, i32 0, i32 1
  store double %4374, ptr %4379, align 8, !tbaa !15
  %4380 = load i32, ptr %72, align 4, !tbaa !9
  %4381 = load i32, ptr %56, align 4, !tbaa !9
  %4382 = load ptr, ptr %18, align 8, !tbaa !5
  %4383 = load i32, ptr %4382, align 4, !tbaa !9
  %4384 = sub nsw i32 %4381, %4383
  %4385 = add nsw i32 %4384, 1
  %4386 = load i32, ptr %29, align 4, !tbaa !9
  %4387 = mul nsw i32 %4385, %4386
  %4388 = add nsw i32 %4380, %4387
  store i32 %4388, ptr %36, align 4, !tbaa !9
  %4389 = load i32, ptr %56, align 4, !tbaa !9
  %4390 = load i32, ptr %59, align 4, !tbaa !9
  %4391 = sub nsw i32 %4389, %4390
  store i32 %4391, ptr %39, align 4, !tbaa !9
  %4392 = load i32, ptr %72, align 4, !tbaa !9
  %4393 = load i32, ptr %56, align 4, !tbaa !9
  %4394 = load ptr, ptr %18, align 8, !tbaa !5
  %4395 = load i32, ptr %4394, align 4, !tbaa !9
  %4396 = sub nsw i32 %4393, %4395
  %4397 = add nsw i32 %4396, 1
  %4398 = load i32, ptr %29, align 4, !tbaa !9
  %4399 = mul nsw i32 %4397, %4398
  %4400 = add nsw i32 %4392, %4399
  store i32 %4400, ptr %40, align 4, !tbaa !9
  %4401 = load ptr, ptr %27, align 8, !tbaa !5
  %4402 = load i32, ptr %39, align 4, !tbaa !9
  %4403 = sext i32 %4402 to i64
  %4404 = getelementptr inbounds double, ptr %4401, i64 %4403
  %4405 = load double, ptr %4404, align 8, !tbaa !14
  %4406 = load ptr, ptr %20, align 8, !tbaa !5
  %4407 = load i32, ptr %40, align 4, !tbaa !9
  %4408 = sext i32 %4407 to i64
  %4409 = getelementptr inbounds %struct.doublecomplex, ptr %4406, i64 %4408
  %4410 = getelementptr inbounds %struct.doublecomplex, ptr %4409, i32 0, i32 0
  %4411 = load double, ptr %4410, align 8, !tbaa !11
  %4412 = fmul double %4405, %4411
  %4413 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %4412, ptr %4413, align 8, !tbaa !11
  %4414 = load ptr, ptr %27, align 8, !tbaa !5
  %4415 = load i32, ptr %39, align 4, !tbaa !9
  %4416 = sext i32 %4415 to i64
  %4417 = getelementptr inbounds double, ptr %4414, i64 %4416
  %4418 = load double, ptr %4417, align 8, !tbaa !14
  %4419 = load ptr, ptr %20, align 8, !tbaa !5
  %4420 = load i32, ptr %40, align 4, !tbaa !9
  %4421 = sext i32 %4420 to i64
  %4422 = getelementptr inbounds %struct.doublecomplex, ptr %4419, i64 %4421
  %4423 = getelementptr inbounds %struct.doublecomplex, ptr %4422, i32 0, i32 1
  %4424 = load double, ptr %4423, align 8, !tbaa !15
  %4425 = fmul double %4418, %4424
  %4426 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %4425, ptr %4426, align 8, !tbaa !15
  %4427 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %4428 = load double, ptr %4427, align 8, !tbaa !11
  %4429 = load ptr, ptr %20, align 8, !tbaa !5
  %4430 = load i32, ptr %36, align 4, !tbaa !9
  %4431 = sext i32 %4430 to i64
  %4432 = getelementptr inbounds %struct.doublecomplex, ptr %4429, i64 %4431
  %4433 = getelementptr inbounds %struct.doublecomplex, ptr %4432, i32 0, i32 0
  store double %4428, ptr %4433, align 8, !tbaa !11
  %4434 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %4435 = load double, ptr %4434, align 8, !tbaa !15
  %4436 = load ptr, ptr %20, align 8, !tbaa !5
  %4437 = load i32, ptr %36, align 4, !tbaa !9
  %4438 = sext i32 %4437 to i64
  %4439 = getelementptr inbounds %struct.doublecomplex, ptr %4436, i64 %4438
  %4440 = getelementptr inbounds %struct.doublecomplex, ptr %4439, i32 0, i32 1
  store double %4435, ptr %4440, align 8, !tbaa !15
  br label %4441

4441:                                             ; preds = %4295
  %4442 = load i32, ptr %35, align 4, !tbaa !9
  %4443 = load i32, ptr %56, align 4, !tbaa !9
  %4444 = add nsw i32 %4443, %4442
  store i32 %4444, ptr %56, align 4, !tbaa !9
  br label %4279, !llvm.loop !47

4445:                                             ; preds = %4292
  %4446 = load i32, ptr %79, align 4, !tbaa !9
  %4447 = icmp sgt i32 %4446, 0
  br i1 %4447, label %4448, label %4472

4448:                                             ; preds = %4445
  %4449 = load ptr, ptr %20, align 8, !tbaa !5
  %4450 = load i32, ptr %72, align 4, !tbaa !9
  %4451 = load i32, ptr %76, align 4, !tbaa !9
  %4452 = load ptr, ptr %18, align 8, !tbaa !5
  %4453 = load i32, ptr %4452, align 4, !tbaa !9
  %4454 = sub nsw i32 %4451, %4453
  %4455 = load i32, ptr %29, align 4, !tbaa !9
  %4456 = mul nsw i32 %4454, %4455
  %4457 = add nsw i32 %4450, %4456
  %4458 = sext i32 %4457 to i64
  %4459 = getelementptr inbounds %struct.doublecomplex, ptr %4449, i64 %4458
  %4460 = load ptr, ptr %26, align 8, !tbaa !5
  %4461 = load i32, ptr %76, align 4, !tbaa !9
  %4462 = load i32, ptr %59, align 4, !tbaa !9
  %4463 = sub nsw i32 %4461, %4462
  %4464 = sext i32 %4463 to i64
  %4465 = getelementptr inbounds %struct.doublecomplex, ptr %4460, i64 %4464
  %4466 = load ptr, ptr %27, align 8, !tbaa !5
  %4467 = load i32, ptr %76, align 4, !tbaa !9
  %4468 = load i32, ptr %59, align 4, !tbaa !9
  %4469 = sub nsw i32 %4467, %4468
  %4470 = sext i32 %4469 to i64
  %4471 = getelementptr inbounds double, ptr %4466, i64 %4470
  call void @zlargv_(ptr noundef %79, ptr noundef %4459, ptr noundef %54, ptr noundef %4465, ptr noundef %72, ptr noundef %4471, ptr noundef %72)
  br label %4472

4472:                                             ; preds = %4448, %4445
  %4473 = load i32, ptr %69, align 4, !tbaa !9
  %4474 = icmp sgt i32 %4473, 0
  br i1 %4474, label %4475, label %4562

4475:                                             ; preds = %4472
  %4476 = load ptr, ptr %18, align 8, !tbaa !5
  %4477 = load i32, ptr %4476, align 4, !tbaa !9
  %4478 = sub nsw i32 %4477, 1
  store i32 %4478, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %4479

4479:                                             ; preds = %4518, %4475
  %4480 = load i32, ptr %58, align 4, !tbaa !9
  %4481 = load i32, ptr %35, align 4, !tbaa !9
  %4482 = icmp sle i32 %4480, %4481
  br i1 %4482, label %4483, label %4521

4483:                                             ; preds = %4479
  %4484 = load ptr, ptr %20, align 8, !tbaa !5
  %4485 = load i32, ptr %58, align 4, !tbaa !9
  %4486 = add nsw i32 %4485, 1
  %4487 = load i32, ptr %66, align 4, !tbaa !9
  %4488 = load i32, ptr %58, align 4, !tbaa !9
  %4489 = sub nsw i32 %4487, %4488
  %4490 = load i32, ptr %29, align 4, !tbaa !9
  %4491 = mul nsw i32 %4489, %4490
  %4492 = add nsw i32 %4486, %4491
  %4493 = sext i32 %4492 to i64
  %4494 = getelementptr inbounds %struct.doublecomplex, ptr %4484, i64 %4493
  %4495 = load ptr, ptr %20, align 8, !tbaa !5
  %4496 = load i32, ptr %58, align 4, !tbaa !9
  %4497 = add nsw i32 %4496, 2
  %4498 = load i32, ptr %66, align 4, !tbaa !9
  %4499 = load i32, ptr %58, align 4, !tbaa !9
  %4500 = sub nsw i32 %4498, %4499
  %4501 = load i32, ptr %29, align 4, !tbaa !9
  %4502 = mul nsw i32 %4500, %4501
  %4503 = add nsw i32 %4497, %4502
  %4504 = sext i32 %4503 to i64
  %4505 = getelementptr inbounds %struct.doublecomplex, ptr %4495, i64 %4504
  %4506 = load ptr, ptr %27, align 8, !tbaa !5
  %4507 = load i32, ptr %66, align 4, !tbaa !9
  %4508 = load i32, ptr %59, align 4, !tbaa !9
  %4509 = sub nsw i32 %4507, %4508
  %4510 = sext i32 %4509 to i64
  %4511 = getelementptr inbounds double, ptr %4506, i64 %4510
  %4512 = load ptr, ptr %26, align 8, !tbaa !5
  %4513 = load i32, ptr %66, align 4, !tbaa !9
  %4514 = load i32, ptr %59, align 4, !tbaa !9
  %4515 = sub nsw i32 %4513, %4514
  %4516 = sext i32 %4515 to i64
  %4517 = getelementptr inbounds %struct.doublecomplex, ptr %4512, i64 %4516
  call void @zlartv_(ptr noundef %69, ptr noundef %4494, ptr noundef %54, ptr noundef %4505, ptr noundef %54, ptr noundef %4511, ptr noundef %4517, ptr noundef %72)
  br label %4518

4518:                                             ; preds = %4483
  %4519 = load i32, ptr %58, align 4, !tbaa !9
  %4520 = add nsw i32 %4519, 1
  store i32 %4520, ptr %58, align 4, !tbaa !9
  br label %4479, !llvm.loop !48

4521:                                             ; preds = %4479
  %4522 = load ptr, ptr %20, align 8, !tbaa !5
  %4523 = load i32, ptr %66, align 4, !tbaa !9
  %4524 = load i32, ptr %29, align 4, !tbaa !9
  %4525 = mul nsw i32 %4523, %4524
  %4526 = add nsw i32 %4525, 1
  %4527 = sext i32 %4526 to i64
  %4528 = getelementptr inbounds %struct.doublecomplex, ptr %4522, i64 %4527
  %4529 = load ptr, ptr %20, align 8, !tbaa !5
  %4530 = load i32, ptr %66, align 4, !tbaa !9
  %4531 = add nsw i32 %4530, 1
  %4532 = load i32, ptr %29, align 4, !tbaa !9
  %4533 = mul nsw i32 %4531, %4532
  %4534 = add nsw i32 %4533, 1
  %4535 = sext i32 %4534 to i64
  %4536 = getelementptr inbounds %struct.doublecomplex, ptr %4529, i64 %4535
  %4537 = load ptr, ptr %20, align 8, !tbaa !5
  %4538 = load i32, ptr %66, align 4, !tbaa !9
  %4539 = load i32, ptr %29, align 4, !tbaa !9
  %4540 = mul nsw i32 %4538, %4539
  %4541 = add nsw i32 %4540, 2
  %4542 = sext i32 %4541 to i64
  %4543 = getelementptr inbounds %struct.doublecomplex, ptr %4537, i64 %4542
  %4544 = load ptr, ptr %27, align 8, !tbaa !5
  %4545 = load i32, ptr %66, align 4, !tbaa !9
  %4546 = load i32, ptr %59, align 4, !tbaa !9
  %4547 = sub nsw i32 %4545, %4546
  %4548 = sext i32 %4547 to i64
  %4549 = getelementptr inbounds double, ptr %4544, i64 %4548
  %4550 = load ptr, ptr %26, align 8, !tbaa !5
  %4551 = load i32, ptr %66, align 4, !tbaa !9
  %4552 = load i32, ptr %59, align 4, !tbaa !9
  %4553 = sub nsw i32 %4551, %4552
  %4554 = sext i32 %4553 to i64
  %4555 = getelementptr inbounds %struct.doublecomplex, ptr %4550, i64 %4554
  call void @zlar2v_(ptr noundef %69, ptr noundef %4528, ptr noundef %4536, ptr noundef %4543, ptr noundef %54, ptr noundef %4549, ptr noundef %4555, ptr noundef %72)
  %4556 = load ptr, ptr %26, align 8, !tbaa !5
  %4557 = load i32, ptr %66, align 4, !tbaa !9
  %4558 = load i32, ptr %59, align 4, !tbaa !9
  %4559 = sub nsw i32 %4557, %4558
  %4560 = sext i32 %4559 to i64
  %4561 = getelementptr inbounds %struct.doublecomplex, ptr %4556, i64 %4560
  call void @zlacgv_(ptr noundef %69, ptr noundef %4561, ptr noundef %72)
  br label %4562

4562:                                             ; preds = %4521, %4472
  %4563 = load ptr, ptr %19, align 8, !tbaa !5
  %4564 = load i32, ptr %4563, align 4, !tbaa !9
  %4565 = load i32, ptr %57, align 4, !tbaa !9
  %4566 = sub nsw i32 %4564, %4565
  %4567 = add nsw i32 %4566, 1
  store i32 %4567, ptr %35, align 4, !tbaa !9
  %4568 = load ptr, ptr %18, align 8, !tbaa !5
  %4569 = load i32, ptr %4568, align 4, !tbaa !9
  %4570 = sub nsw i32 %4569, 1
  store i32 %4570, ptr %58, align 4, !tbaa !9
  br label %4571

4571:                                             ; preds = %4622, %4562
  %4572 = load i32, ptr %58, align 4, !tbaa !9
  %4573 = load i32, ptr %35, align 4, !tbaa !9
  %4574 = icmp sge i32 %4572, %4573
  br i1 %4574, label %4575, label %4625

4575:                                             ; preds = %4571
  %4576 = load ptr, ptr %17, align 8, !tbaa !5
  %4577 = load i32, ptr %4576, align 4, !tbaa !9
  %4578 = load i32, ptr %66, align 4, !tbaa !9
  %4579 = sub nsw i32 %4577, %4578
  %4580 = load i32, ptr %58, align 4, !tbaa !9
  %4581 = add nsw i32 %4579, %4580
  %4582 = load i32, ptr %72, align 4, !tbaa !9
  %4583 = sdiv i32 %4581, %4582
  store i32 %4583, ptr %79, align 4, !tbaa !9
  %4584 = load i32, ptr %79, align 4, !tbaa !9
  %4585 = icmp sgt i32 %4584, 0
  br i1 %4585, label %4586, label %4621

4586:                                             ; preds = %4575
  %4587 = load ptr, ptr %20, align 8, !tbaa !5
  %4588 = load i32, ptr %72, align 4, !tbaa !9
  %4589 = load i32, ptr %58, align 4, !tbaa !9
  %4590 = sub nsw i32 %4588, %4589
  %4591 = add nsw i32 %4590, 1
  %4592 = load i32, ptr %66, align 4, !tbaa !9
  %4593 = load i32, ptr %29, align 4, !tbaa !9
  %4594 = mul nsw i32 %4592, %4593
  %4595 = add nsw i32 %4591, %4594
  %4596 = sext i32 %4595 to i64
  %4597 = getelementptr inbounds %struct.doublecomplex, ptr %4587, i64 %4596
  %4598 = load ptr, ptr %20, align 8, !tbaa !5
  %4599 = load i32, ptr %72, align 4, !tbaa !9
  %4600 = load i32, ptr %58, align 4, !tbaa !9
  %4601 = sub nsw i32 %4599, %4600
  %4602 = load i32, ptr %66, align 4, !tbaa !9
  %4603 = add nsw i32 %4602, 1
  %4604 = load i32, ptr %29, align 4, !tbaa !9
  %4605 = mul nsw i32 %4603, %4604
  %4606 = add nsw i32 %4601, %4605
  %4607 = sext i32 %4606 to i64
  %4608 = getelementptr inbounds %struct.doublecomplex, ptr %4598, i64 %4607
  %4609 = load ptr, ptr %27, align 8, !tbaa !5
  %4610 = load i32, ptr %66, align 4, !tbaa !9
  %4611 = load i32, ptr %59, align 4, !tbaa !9
  %4612 = sub nsw i32 %4610, %4611
  %4613 = sext i32 %4612 to i64
  %4614 = getelementptr inbounds double, ptr %4609, i64 %4613
  %4615 = load ptr, ptr %26, align 8, !tbaa !5
  %4616 = load i32, ptr %66, align 4, !tbaa !9
  %4617 = load i32, ptr %59, align 4, !tbaa !9
  %4618 = sub nsw i32 %4616, %4617
  %4619 = sext i32 %4618 to i64
  %4620 = getelementptr inbounds %struct.doublecomplex, ptr %4615, i64 %4619
  call void @zlartv_(ptr noundef %79, ptr noundef %4597, ptr noundef %54, ptr noundef %4608, ptr noundef %54, ptr noundef %4614, ptr noundef %4620, ptr noundef %72)
  br label %4621

4621:                                             ; preds = %4586, %4575
  br label %4622

4622:                                             ; preds = %4621
  %4623 = load i32, ptr %58, align 4, !tbaa !9
  %4624 = add nsw i32 %4623, -1
  store i32 %4624, ptr %58, align 4, !tbaa !9
  br label %4571, !llvm.loop !49

4625:                                             ; preds = %4571
  %4626 = load i32, ptr %67, align 4, !tbaa !9
  %4627 = icmp ne i32 %4626, 0
  br i1 %4627, label %4628, label %4689

4628:                                             ; preds = %4625
  %4629 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %4629, ptr %35, align 4, !tbaa !9
  %4630 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %4630, ptr %37, align 4, !tbaa !9
  %4631 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %4631, ptr %56, align 4, !tbaa !9
  br label %4632

4632:                                             ; preds = %4684, %4628
  %4633 = load i32, ptr %37, align 4, !tbaa !9
  %4634 = icmp slt i32 %4633, 0
  br i1 %4634, label %4635, label %4640

4635:                                             ; preds = %4632
  %4636 = load i32, ptr %56, align 4, !tbaa !9
  %4637 = load i32, ptr %35, align 4, !tbaa !9
  %4638 = icmp sge i32 %4636, %4637
  %4639 = zext i1 %4638 to i32
  br label %4645

4640:                                             ; preds = %4632
  %4641 = load i32, ptr %56, align 4, !tbaa !9
  %4642 = load i32, ptr %35, align 4, !tbaa !9
  %4643 = icmp sle i32 %4641, %4642
  %4644 = zext i1 %4643 to i32
  br label %4645

4645:                                             ; preds = %4640, %4635
  %4646 = phi i32 [ %4639, %4635 ], [ %4644, %4640 ]
  %4647 = icmp ne i32 %4646, 0
  br i1 %4647, label %4648, label %4688

4648:                                             ; preds = %4645
  %4649 = load ptr, ptr %17, align 8, !tbaa !5
  %4650 = load i32, ptr %4649, align 4, !tbaa !9
  %4651 = load i32, ptr %59, align 4, !tbaa !9
  %4652 = sub nsw i32 %4650, %4651
  store i32 %4652, ptr %36, align 4, !tbaa !9
  %4653 = load ptr, ptr %24, align 8, !tbaa !5
  %4654 = load i32, ptr %59, align 4, !tbaa !9
  %4655 = add nsw i32 %4654, 1
  %4656 = load i32, ptr %56, align 4, !tbaa !9
  %4657 = load i32, ptr %33, align 4, !tbaa !9
  %4658 = mul nsw i32 %4656, %4657
  %4659 = add nsw i32 %4655, %4658
  %4660 = sext i32 %4659 to i64
  %4661 = getelementptr inbounds %struct.doublecomplex, ptr %4653, i64 %4660
  %4662 = load ptr, ptr %24, align 8, !tbaa !5
  %4663 = load i32, ptr %59, align 4, !tbaa !9
  %4664 = add nsw i32 %4663, 1
  %4665 = load i32, ptr %56, align 4, !tbaa !9
  %4666 = add nsw i32 %4665, 1
  %4667 = load i32, ptr %33, align 4, !tbaa !9
  %4668 = mul nsw i32 %4666, %4667
  %4669 = add nsw i32 %4664, %4668
  %4670 = sext i32 %4669 to i64
  %4671 = getelementptr inbounds %struct.doublecomplex, ptr %4662, i64 %4670
  %4672 = load ptr, ptr %27, align 8, !tbaa !5
  %4673 = load i32, ptr %56, align 4, !tbaa !9
  %4674 = load i32, ptr %59, align 4, !tbaa !9
  %4675 = sub nsw i32 %4673, %4674
  %4676 = sext i32 %4675 to i64
  %4677 = getelementptr inbounds double, ptr %4672, i64 %4676
  %4678 = load ptr, ptr %26, align 8, !tbaa !5
  %4679 = load i32, ptr %56, align 4, !tbaa !9
  %4680 = load i32, ptr %59, align 4, !tbaa !9
  %4681 = sub nsw i32 %4679, %4680
  %4682 = sext i32 %4681 to i64
  %4683 = getelementptr inbounds %struct.doublecomplex, ptr %4678, i64 %4682
  call void @zrot_(ptr noundef %36, ptr noundef %4661, ptr noundef @c__1, ptr noundef %4671, ptr noundef @c__1, ptr noundef %4677, ptr noundef %4683)
  br label %4684

4684:                                             ; preds = %4648
  %4685 = load i32, ptr %37, align 4, !tbaa !9
  %4686 = load i32, ptr %56, align 4, !tbaa !9
  %4687 = add nsw i32 %4686, %4685
  store i32 %4687, ptr %56, align 4, !tbaa !9
  br label %4632, !llvm.loop !50

4688:                                             ; preds = %4645
  br label %4689

4689:                                             ; preds = %4688, %4625
  br label %4690

4690:                                             ; preds = %4689
  %4691 = load i32, ptr %57, align 4, !tbaa !9
  %4692 = add nsw i32 %4691, 1
  store i32 %4692, ptr %57, align 4, !tbaa !9
  br label %3852, !llvm.loop !51

4693:                                             ; preds = %3852
  %4694 = load i32, ptr %71, align 4, !tbaa !9
  %4695 = icmp ne i32 %4694, 0
  br i1 %4695, label %4696, label %4770

4696:                                             ; preds = %4693
  %4697 = load i32, ptr %64, align 4, !tbaa !9
  %4698 = load ptr, ptr %17, align 8, !tbaa !5
  %4699 = load i32, ptr %4698, align 4, !tbaa !9
  %4700 = icmp sle i32 %4697, %4699
  br i1 %4700, label %4701, label %4769

4701:                                             ; preds = %4696
  %4702 = load i32, ptr %78, align 4, !tbaa !9
  %4703 = icmp sgt i32 %4702, 0
  br i1 %4703, label %4704, label %4769

4704:                                             ; preds = %4701
  %4705 = load i32, ptr %55, align 4, !tbaa !9
  %4706 = load i32, ptr %78, align 4, !tbaa !9
  %4707 = sub nsw i32 %4705, %4706
  store i32 %4707, ptr %38, align 4, !tbaa !9
  %4708 = load i32, ptr %78, align 4, !tbaa !9
  %4709 = add nsw i32 %4708, 1
  %4710 = load i32, ptr %55, align 4, !tbaa !9
  %4711 = load i32, ptr %78, align 4, !tbaa !9
  %4712 = sub nsw i32 %4710, %4711
  %4713 = load i32, ptr %31, align 4, !tbaa !9
  %4714 = mul nsw i32 %4712, %4713
  %4715 = add nsw i32 %4709, %4714
  store i32 %4715, ptr %37, align 4, !tbaa !9
  %4716 = load ptr, ptr %22, align 8, !tbaa !5
  %4717 = load i32, ptr %37, align 4, !tbaa !9
  %4718 = sext i32 %4717 to i64
  %4719 = getelementptr inbounds %struct.doublecomplex, ptr %4716, i64 %4718
  %4720 = getelementptr inbounds %struct.doublecomplex, ptr %4719, i32 0, i32 0
  %4721 = load double, ptr %4720, align 8, !tbaa !11
  %4722 = fneg double %4721
  %4723 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %4722, ptr %4723, align 8, !tbaa !11
  %4724 = load ptr, ptr %22, align 8, !tbaa !5
  %4725 = load i32, ptr %37, align 4, !tbaa !9
  %4726 = sext i32 %4725 to i64
  %4727 = getelementptr inbounds %struct.doublecomplex, ptr %4724, i64 %4726
  %4728 = getelementptr inbounds %struct.doublecomplex, ptr %4727, i32 0, i32 1
  %4729 = load double, ptr %4728, align 8, !tbaa !15
  %4730 = fneg double %4729
  %4731 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %4730, ptr %4731, align 8, !tbaa !15
  %4732 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %4733 = load double, ptr %4732, align 8, !tbaa !11
  %4734 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %4735 = load double, ptr %4734, align 8, !tbaa !11
  %4736 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %4737 = load double, ptr %4736, align 8, !tbaa !15
  %4738 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %4739 = load double, ptr %4738, align 8, !tbaa !15
  %4740 = fmul double %4737, %4739
  %4741 = fneg double %4740
  %4742 = call double @llvm.fmuladd.f64(double %4733, double %4735, double %4741)
  %4743 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %4742, ptr %4743, align 8, !tbaa !11
  %4744 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %4745 = load double, ptr %4744, align 8, !tbaa !11
  %4746 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %4747 = load double, ptr %4746, align 8, !tbaa !15
  %4748 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %4749 = load double, ptr %4748, align 8, !tbaa !15
  %4750 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %4751 = load double, ptr %4750, align 8, !tbaa !11
  %4752 = fmul double %4749, %4751
  %4753 = call double @llvm.fmuladd.f64(double %4745, double %4747, double %4752)
  %4754 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %4753, ptr %4754, align 8, !tbaa !15
  %4755 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %4756 = load double, ptr %4755, align 8, !tbaa !11
  %4757 = load ptr, ptr %26, align 8, !tbaa !5
  %4758 = load i32, ptr %38, align 4, !tbaa !9
  %4759 = sext i32 %4758 to i64
  %4760 = getelementptr inbounds %struct.doublecomplex, ptr %4757, i64 %4759
  %4761 = getelementptr inbounds %struct.doublecomplex, ptr %4760, i32 0, i32 0
  store double %4756, ptr %4761, align 8, !tbaa !11
  %4762 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %4763 = load double, ptr %4762, align 8, !tbaa !15
  %4764 = load ptr, ptr %26, align 8, !tbaa !5
  %4765 = load i32, ptr %38, align 4, !tbaa !9
  %4766 = sext i32 %4765 to i64
  %4767 = getelementptr inbounds %struct.doublecomplex, ptr %4764, i64 %4766
  %4768 = getelementptr inbounds %struct.doublecomplex, ptr %4767, i32 0, i32 1
  store double %4763, ptr %4768, align 8, !tbaa !15
  br label %4769

4769:                                             ; preds = %4704, %4701, %4696
  br label %4770

4770:                                             ; preds = %4769, %4693
  %4771 = load ptr, ptr %19, align 8, !tbaa !5
  %4772 = load i32, ptr %4771, align 4, !tbaa !9
  store i32 %4772, ptr %57, align 4, !tbaa !9
  br label %4773

4773:                                             ; preds = %5185, %4770
  %4774 = load i32, ptr %57, align 4, !tbaa !9
  %4775 = icmp sge i32 %4774, 1
  br i1 %4775, label %4776, label %5188

4776:                                             ; preds = %4773
  %4777 = load i32, ptr %71, align 4, !tbaa !9
  %4778 = icmp ne i32 %4777, 0
  br i1 %4778, label %4779, label %4800

4779:                                             ; preds = %4776
  store i32 2, ptr %38, align 4, !tbaa !9
  %4780 = load i32, ptr %57, align 4, !tbaa !9
  %4781 = load i32, ptr %61, align 4, !tbaa !9
  %4782 = sub nsw i32 %4780, %4781
  %4783 = add nsw i32 %4782, 1
  store i32 %4783, ptr %37, align 4, !tbaa !9
  %4784 = load i32, ptr %55, align 4, !tbaa !9
  %4785 = load i32, ptr %57, align 4, !tbaa !9
  %4786 = sub nsw i32 %4784, %4785
  %4787 = sub nsw i32 %4786, 1
  %4788 = load i32, ptr %38, align 4, !tbaa !9
  %4789 = load i32, ptr %37, align 4, !tbaa !9
  %4790 = icmp sge i32 %4788, %4789
  br i1 %4790, label %4791, label %4793

4791:                                             ; preds = %4779
  %4792 = load i32, ptr %38, align 4, !tbaa !9
  br label %4795

4793:                                             ; preds = %4779
  %4794 = load i32, ptr %37, align 4, !tbaa !9
  br label %4795

4795:                                             ; preds = %4793, %4791
  %4796 = phi i32 [ %4792, %4791 ], [ %4794, %4793 ]
  %4797 = load i32, ptr %72, align 4, !tbaa !9
  %4798 = mul nsw i32 %4796, %4797
  %4799 = add nsw i32 %4787, %4798
  store i32 %4799, ptr %66, align 4, !tbaa !9
  br label %4821

4800:                                             ; preds = %4776
  store i32 1, ptr %38, align 4, !tbaa !9
  %4801 = load i32, ptr %57, align 4, !tbaa !9
  %4802 = load i32, ptr %61, align 4, !tbaa !9
  %4803 = sub nsw i32 %4801, %4802
  %4804 = add nsw i32 %4803, 1
  store i32 %4804, ptr %37, align 4, !tbaa !9
  %4805 = load i32, ptr %55, align 4, !tbaa !9
  %4806 = load i32, ptr %57, align 4, !tbaa !9
  %4807 = sub nsw i32 %4805, %4806
  %4808 = sub nsw i32 %4807, 1
  %4809 = load i32, ptr %38, align 4, !tbaa !9
  %4810 = load i32, ptr %37, align 4, !tbaa !9
  %4811 = icmp sge i32 %4809, %4810
  br i1 %4811, label %4812, label %4814

4812:                                             ; preds = %4800
  %4813 = load i32, ptr %38, align 4, !tbaa !9
  br label %4816

4814:                                             ; preds = %4800
  %4815 = load i32, ptr %37, align 4, !tbaa !9
  br label %4816

4816:                                             ; preds = %4814, %4812
  %4817 = phi i32 [ %4813, %4812 ], [ %4815, %4814 ]
  %4818 = load i32, ptr %72, align 4, !tbaa !9
  %4819 = mul nsw i32 %4817, %4818
  %4820 = add nsw i32 %4808, %4819
  store i32 %4820, ptr %66, align 4, !tbaa !9
  br label %4821

4821:                                             ; preds = %4816, %4795
  %4822 = load ptr, ptr %19, align 8, !tbaa !5
  %4823 = load i32, ptr %4822, align 4, !tbaa !9
  %4824 = load i32, ptr %57, align 4, !tbaa !9
  %4825 = sub nsw i32 %4823, %4824
  store i32 %4825, ptr %58, align 4, !tbaa !9
  br label %4826

4826:                                             ; preds = %4887, %4821
  %4827 = load i32, ptr %58, align 4, !tbaa !9
  %4828 = icmp sge i32 %4827, 1
  br i1 %4828, label %4829, label %4890

4829:                                             ; preds = %4826
  %4830 = load ptr, ptr %17, align 8, !tbaa !5
  %4831 = load i32, ptr %4830, align 4, !tbaa !9
  %4832 = load i32, ptr %66, align 4, !tbaa !9
  %4833 = sub nsw i32 %4831, %4832
  %4834 = load ptr, ptr %18, align 8, !tbaa !5
  %4835 = load i32, ptr %4834, align 4, !tbaa !9
  %4836 = add nsw i32 %4833, %4835
  %4837 = load i32, ptr %58, align 4, !tbaa !9
  %4838 = add nsw i32 %4836, %4837
  %4839 = load i32, ptr %72, align 4, !tbaa !9
  %4840 = sdiv i32 %4838, %4839
  store i32 %4840, ptr %79, align 4, !tbaa !9
  %4841 = load i32, ptr %79, align 4, !tbaa !9
  %4842 = icmp sgt i32 %4841, 0
  br i1 %4842, label %4843, label %4886

4843:                                             ; preds = %4829
  %4844 = load ptr, ptr %20, align 8, !tbaa !5
  %4845 = load i32, ptr %72, align 4, !tbaa !9
  %4846 = load i32, ptr %58, align 4, !tbaa !9
  %4847 = sub nsw i32 %4845, %4846
  %4848 = add nsw i32 %4847, 1
  %4849 = load i32, ptr %66, align 4, !tbaa !9
  %4850 = load ptr, ptr %18, align 8, !tbaa !5
  %4851 = load i32, ptr %4850, align 4, !tbaa !9
  %4852 = sub nsw i32 %4849, %4851
  %4853 = load i32, ptr %29, align 4, !tbaa !9
  %4854 = mul nsw i32 %4852, %4853
  %4855 = add nsw i32 %4848, %4854
  %4856 = sext i32 %4855 to i64
  %4857 = getelementptr inbounds %struct.doublecomplex, ptr %4844, i64 %4856
  %4858 = load ptr, ptr %20, align 8, !tbaa !5
  %4859 = load i32, ptr %72, align 4, !tbaa !9
  %4860 = load i32, ptr %58, align 4, !tbaa !9
  %4861 = sub nsw i32 %4859, %4860
  %4862 = load i32, ptr %66, align 4, !tbaa !9
  %4863 = load ptr, ptr %18, align 8, !tbaa !5
  %4864 = load i32, ptr %4863, align 4, !tbaa !9
  %4865 = sub nsw i32 %4862, %4864
  %4866 = add nsw i32 %4865, 1
  %4867 = load i32, ptr %29, align 4, !tbaa !9
  %4868 = mul nsw i32 %4866, %4867
  %4869 = add nsw i32 %4861, %4868
  %4870 = sext i32 %4869 to i64
  %4871 = getelementptr inbounds %struct.doublecomplex, ptr %4858, i64 %4870
  %4872 = load ptr, ptr %27, align 8, !tbaa !5
  %4873 = load i32, ptr %66, align 4, !tbaa !9
  %4874 = load ptr, ptr %18, align 8, !tbaa !5
  %4875 = load i32, ptr %4874, align 4, !tbaa !9
  %4876 = sub nsw i32 %4873, %4875
  %4877 = sext i32 %4876 to i64
  %4878 = getelementptr inbounds double, ptr %4872, i64 %4877
  %4879 = load ptr, ptr %26, align 8, !tbaa !5
  %4880 = load i32, ptr %66, align 4, !tbaa !9
  %4881 = load ptr, ptr %18, align 8, !tbaa !5
  %4882 = load i32, ptr %4881, align 4, !tbaa !9
  %4883 = sub nsw i32 %4880, %4882
  %4884 = sext i32 %4883 to i64
  %4885 = getelementptr inbounds %struct.doublecomplex, ptr %4879, i64 %4884
  call void @zlartv_(ptr noundef %79, ptr noundef %4857, ptr noundef %54, ptr noundef %4871, ptr noundef %54, ptr noundef %4878, ptr noundef %4885, ptr noundef %72)
  br label %4886

4886:                                             ; preds = %4843, %4829
  br label %4887

4887:                                             ; preds = %4886
  %4888 = load i32, ptr %58, align 4, !tbaa !9
  %4889 = add nsw i32 %4888, -1
  store i32 %4889, ptr %58, align 4, !tbaa !9
  br label %4826, !llvm.loop !52

4890:                                             ; preds = %4826
  %4891 = load ptr, ptr %17, align 8, !tbaa !5
  %4892 = load i32, ptr %4891, align 4, !tbaa !9
  %4893 = load i32, ptr %66, align 4, !tbaa !9
  %4894 = sub nsw i32 %4892, %4893
  %4895 = load ptr, ptr %18, align 8, !tbaa !5
  %4896 = load i32, ptr %4895, align 4, !tbaa !9
  %4897 = add nsw i32 %4894, %4896
  %4898 = load i32, ptr %72, align 4, !tbaa !9
  %4899 = sdiv i32 %4897, %4898
  store i32 %4899, ptr %69, align 4, !tbaa !9
  %4900 = load i32, ptr %66, align 4, !tbaa !9
  %4901 = load i32, ptr %69, align 4, !tbaa !9
  %4902 = sub nsw i32 %4901, 1
  %4903 = load i32, ptr %72, align 4, !tbaa !9
  %4904 = mul nsw i32 %4902, %4903
  %4905 = add nsw i32 %4900, %4904
  store i32 %4905, ptr %65, align 4, !tbaa !9
  %4906 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %4906, ptr %38, align 4, !tbaa !9
  %4907 = load i32, ptr %72, align 4, !tbaa !9
  %4908 = sub nsw i32 0, %4907
  store i32 %4908, ptr %37, align 4, !tbaa !9
  %4909 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %4909, ptr %56, align 4, !tbaa !9
  br label %4910

4910:                                             ; preds = %4966, %4890
  %4911 = load i32, ptr %37, align 4, !tbaa !9
  %4912 = icmp slt i32 %4911, 0
  br i1 %4912, label %4913, label %4918

4913:                                             ; preds = %4910
  %4914 = load i32, ptr %56, align 4, !tbaa !9
  %4915 = load i32, ptr %38, align 4, !tbaa !9
  %4916 = icmp sge i32 %4914, %4915
  %4917 = zext i1 %4916 to i32
  br label %4923

4918:                                             ; preds = %4910
  %4919 = load i32, ptr %56, align 4, !tbaa !9
  %4920 = load i32, ptr %38, align 4, !tbaa !9
  %4921 = icmp sle i32 %4919, %4920
  %4922 = zext i1 %4921 to i32
  br label %4923

4923:                                             ; preds = %4918, %4913
  %4924 = phi i32 [ %4917, %4913 ], [ %4922, %4918 ]
  %4925 = icmp ne i32 %4924, 0
  br i1 %4925, label %4926, label %4970

4926:                                             ; preds = %4923
  %4927 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %4927, ptr %35, align 4, !tbaa !9
  %4928 = load i32, ptr %56, align 4, !tbaa !9
  %4929 = load ptr, ptr %18, align 8, !tbaa !5
  %4930 = load i32, ptr %4929, align 4, !tbaa !9
  %4931 = sub nsw i32 %4928, %4930
  store i32 %4931, ptr %36, align 4, !tbaa !9
  %4932 = load ptr, ptr %26, align 8, !tbaa !5
  %4933 = load i32, ptr %36, align 4, !tbaa !9
  %4934 = sext i32 %4933 to i64
  %4935 = getelementptr inbounds %struct.doublecomplex, ptr %4932, i64 %4934
  %4936 = getelementptr inbounds %struct.doublecomplex, ptr %4935, i32 0, i32 0
  %4937 = load double, ptr %4936, align 8, !tbaa !11
  %4938 = load ptr, ptr %26, align 8, !tbaa !5
  %4939 = load i32, ptr %35, align 4, !tbaa !9
  %4940 = sext i32 %4939 to i64
  %4941 = getelementptr inbounds %struct.doublecomplex, ptr %4938, i64 %4940
  %4942 = getelementptr inbounds %struct.doublecomplex, ptr %4941, i32 0, i32 0
  store double %4937, ptr %4942, align 8, !tbaa !11
  %4943 = load ptr, ptr %26, align 8, !tbaa !5
  %4944 = load i32, ptr %36, align 4, !tbaa !9
  %4945 = sext i32 %4944 to i64
  %4946 = getelementptr inbounds %struct.doublecomplex, ptr %4943, i64 %4945
  %4947 = getelementptr inbounds %struct.doublecomplex, ptr %4946, i32 0, i32 1
  %4948 = load double, ptr %4947, align 8, !tbaa !15
  %4949 = load ptr, ptr %26, align 8, !tbaa !5
  %4950 = load i32, ptr %35, align 4, !tbaa !9
  %4951 = sext i32 %4950 to i64
  %4952 = getelementptr inbounds %struct.doublecomplex, ptr %4949, i64 %4951
  %4953 = getelementptr inbounds %struct.doublecomplex, ptr %4952, i32 0, i32 1
  store double %4948, ptr %4953, align 8, !tbaa !15
  %4954 = load ptr, ptr %27, align 8, !tbaa !5
  %4955 = load i32, ptr %56, align 4, !tbaa !9
  %4956 = load ptr, ptr %18, align 8, !tbaa !5
  %4957 = load i32, ptr %4956, align 4, !tbaa !9
  %4958 = sub nsw i32 %4955, %4957
  %4959 = sext i32 %4958 to i64
  %4960 = getelementptr inbounds double, ptr %4954, i64 %4959
  %4961 = load double, ptr %4960, align 8, !tbaa !14
  %4962 = load ptr, ptr %27, align 8, !tbaa !5
  %4963 = load i32, ptr %56, align 4, !tbaa !9
  %4964 = sext i32 %4963 to i64
  %4965 = getelementptr inbounds double, ptr %4962, i64 %4964
  store double %4961, ptr %4965, align 8, !tbaa !14
  br label %4966

4966:                                             ; preds = %4926
  %4967 = load i32, ptr %37, align 4, !tbaa !9
  %4968 = load i32, ptr %56, align 4, !tbaa !9
  %4969 = add nsw i32 %4968, %4967
  store i32 %4969, ptr %56, align 4, !tbaa !9
  br label %4910, !llvm.loop !53

4970:                                             ; preds = %4923
  %4971 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %4971, ptr %37, align 4, !tbaa !9
  %4972 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %4972, ptr %38, align 4, !tbaa !9
  %4973 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %4973, ptr %56, align 4, !tbaa !9
  br label %4974

4974:                                             ; preds = %5130, %4970
  %4975 = load i32, ptr %38, align 4, !tbaa !9
  %4976 = icmp slt i32 %4975, 0
  br i1 %4976, label %4977, label %4982

4977:                                             ; preds = %4974
  %4978 = load i32, ptr %56, align 4, !tbaa !9
  %4979 = load i32, ptr %37, align 4, !tbaa !9
  %4980 = icmp sge i32 %4978, %4979
  %4981 = zext i1 %4980 to i32
  br label %4987

4982:                                             ; preds = %4974
  %4983 = load i32, ptr %56, align 4, !tbaa !9
  %4984 = load i32, ptr %37, align 4, !tbaa !9
  %4985 = icmp sle i32 %4983, %4984
  %4986 = zext i1 %4985 to i32
  br label %4987

4987:                                             ; preds = %4982, %4977
  %4988 = phi i32 [ %4981, %4977 ], [ %4986, %4982 ]
  %4989 = icmp ne i32 %4988, 0
  br i1 %4989, label %4990, label %5134

4990:                                             ; preds = %4987
  %4991 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %4991, ptr %35, align 4, !tbaa !9
  %4992 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %4992, ptr %36, align 4, !tbaa !9
  %4993 = load i32, ptr %72, align 4, !tbaa !9
  %4994 = load i32, ptr %56, align 4, !tbaa !9
  %4995 = load ptr, ptr %18, align 8, !tbaa !5
  %4996 = load i32, ptr %4995, align 4, !tbaa !9
  %4997 = sub nsw i32 %4994, %4996
  %4998 = add nsw i32 %4997, 1
  %4999 = load i32, ptr %29, align 4, !tbaa !9
  %5000 = mul nsw i32 %4998, %4999
  %5001 = add nsw i32 %4993, %5000
  store i32 %5001, ptr %39, align 4, !tbaa !9
  %5002 = load ptr, ptr %26, align 8, !tbaa !5
  %5003 = load i32, ptr %36, align 4, !tbaa !9
  %5004 = sext i32 %5003 to i64
  %5005 = getelementptr inbounds %struct.doublecomplex, ptr %5002, i64 %5004
  %5006 = getelementptr inbounds %struct.doublecomplex, ptr %5005, i32 0, i32 0
  %5007 = load double, ptr %5006, align 8, !tbaa !11
  %5008 = load ptr, ptr %20, align 8, !tbaa !5
  %5009 = load i32, ptr %39, align 4, !tbaa !9
  %5010 = sext i32 %5009 to i64
  %5011 = getelementptr inbounds %struct.doublecomplex, ptr %5008, i64 %5010
  %5012 = getelementptr inbounds %struct.doublecomplex, ptr %5011, i32 0, i32 0
  %5013 = load double, ptr %5012, align 8, !tbaa !11
  %5014 = load ptr, ptr %26, align 8, !tbaa !5
  %5015 = load i32, ptr %36, align 4, !tbaa !9
  %5016 = sext i32 %5015 to i64
  %5017 = getelementptr inbounds %struct.doublecomplex, ptr %5014, i64 %5016
  %5018 = getelementptr inbounds %struct.doublecomplex, ptr %5017, i32 0, i32 1
  %5019 = load double, ptr %5018, align 8, !tbaa !15
  %5020 = load ptr, ptr %20, align 8, !tbaa !5
  %5021 = load i32, ptr %39, align 4, !tbaa !9
  %5022 = sext i32 %5021 to i64
  %5023 = getelementptr inbounds %struct.doublecomplex, ptr %5020, i64 %5022
  %5024 = getelementptr inbounds %struct.doublecomplex, ptr %5023, i32 0, i32 1
  %5025 = load double, ptr %5024, align 8, !tbaa !15
  %5026 = fmul double %5019, %5025
  %5027 = fneg double %5026
  %5028 = call double @llvm.fmuladd.f64(double %5007, double %5013, double %5027)
  %5029 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %5028, ptr %5029, align 8, !tbaa !11
  %5030 = load ptr, ptr %26, align 8, !tbaa !5
  %5031 = load i32, ptr %36, align 4, !tbaa !9
  %5032 = sext i32 %5031 to i64
  %5033 = getelementptr inbounds %struct.doublecomplex, ptr %5030, i64 %5032
  %5034 = getelementptr inbounds %struct.doublecomplex, ptr %5033, i32 0, i32 0
  %5035 = load double, ptr %5034, align 8, !tbaa !11
  %5036 = load ptr, ptr %20, align 8, !tbaa !5
  %5037 = load i32, ptr %39, align 4, !tbaa !9
  %5038 = sext i32 %5037 to i64
  %5039 = getelementptr inbounds %struct.doublecomplex, ptr %5036, i64 %5038
  %5040 = getelementptr inbounds %struct.doublecomplex, ptr %5039, i32 0, i32 1
  %5041 = load double, ptr %5040, align 8, !tbaa !15
  %5042 = load ptr, ptr %26, align 8, !tbaa !5
  %5043 = load i32, ptr %36, align 4, !tbaa !9
  %5044 = sext i32 %5043 to i64
  %5045 = getelementptr inbounds %struct.doublecomplex, ptr %5042, i64 %5044
  %5046 = getelementptr inbounds %struct.doublecomplex, ptr %5045, i32 0, i32 1
  %5047 = load double, ptr %5046, align 8, !tbaa !15
  %5048 = load ptr, ptr %20, align 8, !tbaa !5
  %5049 = load i32, ptr %39, align 4, !tbaa !9
  %5050 = sext i32 %5049 to i64
  %5051 = getelementptr inbounds %struct.doublecomplex, ptr %5048, i64 %5050
  %5052 = getelementptr inbounds %struct.doublecomplex, ptr %5051, i32 0, i32 0
  %5053 = load double, ptr %5052, align 8, !tbaa !11
  %5054 = fmul double %5047, %5053
  %5055 = call double @llvm.fmuladd.f64(double %5035, double %5041, double %5054)
  %5056 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %5055, ptr %5056, align 8, !tbaa !15
  %5057 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %5058 = load double, ptr %5057, align 8, !tbaa !11
  %5059 = load ptr, ptr %26, align 8, !tbaa !5
  %5060 = load i32, ptr %35, align 4, !tbaa !9
  %5061 = sext i32 %5060 to i64
  %5062 = getelementptr inbounds %struct.doublecomplex, ptr %5059, i64 %5061
  %5063 = getelementptr inbounds %struct.doublecomplex, ptr %5062, i32 0, i32 0
  store double %5058, ptr %5063, align 8, !tbaa !11
  %5064 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %5065 = load double, ptr %5064, align 8, !tbaa !15
  %5066 = load ptr, ptr %26, align 8, !tbaa !5
  %5067 = load i32, ptr %35, align 4, !tbaa !9
  %5068 = sext i32 %5067 to i64
  %5069 = getelementptr inbounds %struct.doublecomplex, ptr %5066, i64 %5068
  %5070 = getelementptr inbounds %struct.doublecomplex, ptr %5069, i32 0, i32 1
  store double %5065, ptr %5070, align 8, !tbaa !15
  %5071 = load i32, ptr %72, align 4, !tbaa !9
  %5072 = load i32, ptr %56, align 4, !tbaa !9
  %5073 = load ptr, ptr %18, align 8, !tbaa !5
  %5074 = load i32, ptr %5073, align 4, !tbaa !9
  %5075 = sub nsw i32 %5072, %5074
  %5076 = add nsw i32 %5075, 1
  %5077 = load i32, ptr %29, align 4, !tbaa !9
  %5078 = mul nsw i32 %5076, %5077
  %5079 = add nsw i32 %5071, %5078
  store i32 %5079, ptr %35, align 4, !tbaa !9
  %5080 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %5080, ptr %36, align 4, !tbaa !9
  %5081 = load i32, ptr %72, align 4, !tbaa !9
  %5082 = load i32, ptr %56, align 4, !tbaa !9
  %5083 = load ptr, ptr %18, align 8, !tbaa !5
  %5084 = load i32, ptr %5083, align 4, !tbaa !9
  %5085 = sub nsw i32 %5082, %5084
  %5086 = add nsw i32 %5085, 1
  %5087 = load i32, ptr %29, align 4, !tbaa !9
  %5088 = mul nsw i32 %5086, %5087
  %5089 = add nsw i32 %5081, %5088
  store i32 %5089, ptr %39, align 4, !tbaa !9
  %5090 = load ptr, ptr %27, align 8, !tbaa !5
  %5091 = load i32, ptr %36, align 4, !tbaa !9
  %5092 = sext i32 %5091 to i64
  %5093 = getelementptr inbounds double, ptr %5090, i64 %5092
  %5094 = load double, ptr %5093, align 8, !tbaa !14
  %5095 = load ptr, ptr %20, align 8, !tbaa !5
  %5096 = load i32, ptr %39, align 4, !tbaa !9
  %5097 = sext i32 %5096 to i64
  %5098 = getelementptr inbounds %struct.doublecomplex, ptr %5095, i64 %5097
  %5099 = getelementptr inbounds %struct.doublecomplex, ptr %5098, i32 0, i32 0
  %5100 = load double, ptr %5099, align 8, !tbaa !11
  %5101 = fmul double %5094, %5100
  %5102 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %5101, ptr %5102, align 8, !tbaa !11
  %5103 = load ptr, ptr %27, align 8, !tbaa !5
  %5104 = load i32, ptr %36, align 4, !tbaa !9
  %5105 = sext i32 %5104 to i64
  %5106 = getelementptr inbounds double, ptr %5103, i64 %5105
  %5107 = load double, ptr %5106, align 8, !tbaa !14
  %5108 = load ptr, ptr %20, align 8, !tbaa !5
  %5109 = load i32, ptr %39, align 4, !tbaa !9
  %5110 = sext i32 %5109 to i64
  %5111 = getelementptr inbounds %struct.doublecomplex, ptr %5108, i64 %5110
  %5112 = getelementptr inbounds %struct.doublecomplex, ptr %5111, i32 0, i32 1
  %5113 = load double, ptr %5112, align 8, !tbaa !15
  %5114 = fmul double %5107, %5113
  %5115 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %5114, ptr %5115, align 8, !tbaa !15
  %5116 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %5117 = load double, ptr %5116, align 8, !tbaa !11
  %5118 = load ptr, ptr %20, align 8, !tbaa !5
  %5119 = load i32, ptr %35, align 4, !tbaa !9
  %5120 = sext i32 %5119 to i64
  %5121 = getelementptr inbounds %struct.doublecomplex, ptr %5118, i64 %5120
  %5122 = getelementptr inbounds %struct.doublecomplex, ptr %5121, i32 0, i32 0
  store double %5117, ptr %5122, align 8, !tbaa !11
  %5123 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %5124 = load double, ptr %5123, align 8, !tbaa !15
  %5125 = load ptr, ptr %20, align 8, !tbaa !5
  %5126 = load i32, ptr %35, align 4, !tbaa !9
  %5127 = sext i32 %5126 to i64
  %5128 = getelementptr inbounds %struct.doublecomplex, ptr %5125, i64 %5127
  %5129 = getelementptr inbounds %struct.doublecomplex, ptr %5128, i32 0, i32 1
  store double %5124, ptr %5129, align 8, !tbaa !15
  br label %5130

5130:                                             ; preds = %4990
  %5131 = load i32, ptr %38, align 4, !tbaa !9
  %5132 = load i32, ptr %56, align 4, !tbaa !9
  %5133 = add nsw i32 %5132, %5131
  store i32 %5133, ptr %56, align 4, !tbaa !9
  br label %4974, !llvm.loop !54

5134:                                             ; preds = %4987
  %5135 = load i32, ptr %71, align 4, !tbaa !9
  %5136 = icmp ne i32 %5135, 0
  br i1 %5136, label %5137, label %5184

5137:                                             ; preds = %5134
  %5138 = load i32, ptr %55, align 4, !tbaa !9
  %5139 = load i32, ptr %57, align 4, !tbaa !9
  %5140 = sub nsw i32 %5138, %5139
  %5141 = load ptr, ptr %17, align 8, !tbaa !5
  %5142 = load i32, ptr %5141, align 4, !tbaa !9
  %5143 = load ptr, ptr %18, align 8, !tbaa !5
  %5144 = load i32, ptr %5143, align 4, !tbaa !9
  %5145 = sub nsw i32 %5142, %5144
  %5146 = icmp slt i32 %5140, %5145
  br i1 %5146, label %5147, label %5183

5147:                                             ; preds = %5137
  %5148 = load i32, ptr %57, align 4, !tbaa !9
  %5149 = load i32, ptr %78, align 4, !tbaa !9
  %5150 = icmp sle i32 %5148, %5149
  br i1 %5150, label %5151, label %5183

5151:                                             ; preds = %5147
  %5152 = load i32, ptr %55, align 4, !tbaa !9
  %5153 = load i32, ptr %57, align 4, !tbaa !9
  %5154 = sub nsw i32 %5152, %5153
  %5155 = load ptr, ptr %18, align 8, !tbaa !5
  %5156 = load i32, ptr %5155, align 4, !tbaa !9
  %5157 = add nsw i32 %5154, %5156
  store i32 %5157, ptr %38, align 4, !tbaa !9
  %5158 = load i32, ptr %55, align 4, !tbaa !9
  %5159 = load i32, ptr %57, align 4, !tbaa !9
  %5160 = sub nsw i32 %5158, %5159
  store i32 %5160, ptr %37, align 4, !tbaa !9
  %5161 = load ptr, ptr %26, align 8, !tbaa !5
  %5162 = load i32, ptr %37, align 4, !tbaa !9
  %5163 = sext i32 %5162 to i64
  %5164 = getelementptr inbounds %struct.doublecomplex, ptr %5161, i64 %5163
  %5165 = getelementptr inbounds %struct.doublecomplex, ptr %5164, i32 0, i32 0
  %5166 = load double, ptr %5165, align 8, !tbaa !11
  %5167 = load ptr, ptr %26, align 8, !tbaa !5
  %5168 = load i32, ptr %38, align 4, !tbaa !9
  %5169 = sext i32 %5168 to i64
  %5170 = getelementptr inbounds %struct.doublecomplex, ptr %5167, i64 %5169
  %5171 = getelementptr inbounds %struct.doublecomplex, ptr %5170, i32 0, i32 0
  store double %5166, ptr %5171, align 8, !tbaa !11
  %5172 = load ptr, ptr %26, align 8, !tbaa !5
  %5173 = load i32, ptr %37, align 4, !tbaa !9
  %5174 = sext i32 %5173 to i64
  %5175 = getelementptr inbounds %struct.doublecomplex, ptr %5172, i64 %5174
  %5176 = getelementptr inbounds %struct.doublecomplex, ptr %5175, i32 0, i32 1
  %5177 = load double, ptr %5176, align 8, !tbaa !15
  %5178 = load ptr, ptr %26, align 8, !tbaa !5
  %5179 = load i32, ptr %38, align 4, !tbaa !9
  %5180 = sext i32 %5179 to i64
  %5181 = getelementptr inbounds %struct.doublecomplex, ptr %5178, i64 %5180
  %5182 = getelementptr inbounds %struct.doublecomplex, ptr %5181, i32 0, i32 1
  store double %5177, ptr %5182, align 8, !tbaa !15
  br label %5183

5183:                                             ; preds = %5151, %5147, %5137
  br label %5184

5184:                                             ; preds = %5183, %5134
  br label %5185

5185:                                             ; preds = %5184
  %5186 = load i32, ptr %57, align 4, !tbaa !9
  %5187 = add nsw i32 %5186, -1
  store i32 %5187, ptr %57, align 4, !tbaa !9
  br label %4773, !llvm.loop !55

5188:                                             ; preds = %4773
  %5189 = load ptr, ptr %19, align 8, !tbaa !5
  %5190 = load i32, ptr %5189, align 4, !tbaa !9
  store i32 %5190, ptr %57, align 4, !tbaa !9
  br label %5191

5191:                                             ; preds = %5448, %5188
  %5192 = load i32, ptr %57, align 4, !tbaa !9
  %5193 = icmp sge i32 %5192, 1
  br i1 %5193, label %5194, label %5451

5194:                                             ; preds = %5191
  store i32 1, ptr %38, align 4, !tbaa !9
  %5195 = load i32, ptr %57, align 4, !tbaa !9
  %5196 = load i32, ptr %61, align 4, !tbaa !9
  %5197 = sub nsw i32 %5195, %5196
  %5198 = add nsw i32 %5197, 1
  store i32 %5198, ptr %37, align 4, !tbaa !9
  %5199 = load i32, ptr %55, align 4, !tbaa !9
  %5200 = load i32, ptr %57, align 4, !tbaa !9
  %5201 = sub nsw i32 %5199, %5200
  %5202 = sub nsw i32 %5201, 1
  %5203 = load i32, ptr %38, align 4, !tbaa !9
  %5204 = load i32, ptr %37, align 4, !tbaa !9
  %5205 = icmp sge i32 %5203, %5204
  br i1 %5205, label %5206, label %5208

5206:                                             ; preds = %5194
  %5207 = load i32, ptr %38, align 4, !tbaa !9
  br label %5210

5208:                                             ; preds = %5194
  %5209 = load i32, ptr %37, align 4, !tbaa !9
  br label %5210

5210:                                             ; preds = %5208, %5206
  %5211 = phi i32 [ %5207, %5206 ], [ %5209, %5208 ]
  %5212 = load i32, ptr %72, align 4, !tbaa !9
  %5213 = mul nsw i32 %5211, %5212
  %5214 = add nsw i32 %5202, %5213
  store i32 %5214, ptr %66, align 4, !tbaa !9
  %5215 = load ptr, ptr %17, align 8, !tbaa !5
  %5216 = load i32, ptr %5215, align 4, !tbaa !9
  %5217 = load i32, ptr %66, align 4, !tbaa !9
  %5218 = sub nsw i32 %5216, %5217
  %5219 = load ptr, ptr %18, align 8, !tbaa !5
  %5220 = load i32, ptr %5219, align 4, !tbaa !9
  %5221 = add nsw i32 %5218, %5220
  %5222 = load i32, ptr %72, align 4, !tbaa !9
  %5223 = sdiv i32 %5221, %5222
  store i32 %5223, ptr %69, align 4, !tbaa !9
  %5224 = load i32, ptr %66, align 4, !tbaa !9
  %5225 = load i32, ptr %69, align 4, !tbaa !9
  %5226 = sub nsw i32 %5225, 1
  %5227 = load i32, ptr %72, align 4, !tbaa !9
  %5228 = mul nsw i32 %5226, %5227
  %5229 = add nsw i32 %5224, %5228
  store i32 %5229, ptr %65, align 4, !tbaa !9
  %5230 = load i32, ptr %69, align 4, !tbaa !9
  %5231 = icmp sgt i32 %5230, 0
  br i1 %5231, label %5232, label %5328

5232:                                             ; preds = %5210
  %5233 = load ptr, ptr %20, align 8, !tbaa !5
  %5234 = load i32, ptr %72, align 4, !tbaa !9
  %5235 = load i32, ptr %66, align 4, !tbaa !9
  %5236 = load ptr, ptr %18, align 8, !tbaa !5
  %5237 = load i32, ptr %5236, align 4, !tbaa !9
  %5238 = sub nsw i32 %5235, %5237
  %5239 = load i32, ptr %29, align 4, !tbaa !9
  %5240 = mul nsw i32 %5238, %5239
  %5241 = add nsw i32 %5234, %5240
  %5242 = sext i32 %5241 to i64
  %5243 = getelementptr inbounds %struct.doublecomplex, ptr %5233, i64 %5242
  %5244 = load ptr, ptr %26, align 8, !tbaa !5
  %5245 = load i32, ptr %66, align 4, !tbaa !9
  %5246 = sext i32 %5245 to i64
  %5247 = getelementptr inbounds %struct.doublecomplex, ptr %5244, i64 %5246
  %5248 = load ptr, ptr %27, align 8, !tbaa !5
  %5249 = load i32, ptr %66, align 4, !tbaa !9
  %5250 = sext i32 %5249 to i64
  %5251 = getelementptr inbounds double, ptr %5248, i64 %5250
  call void @zlargv_(ptr noundef %69, ptr noundef %5243, ptr noundef %54, ptr noundef %5247, ptr noundef %72, ptr noundef %5251, ptr noundef %72)
  %5252 = load ptr, ptr %18, align 8, !tbaa !5
  %5253 = load i32, ptr %5252, align 4, !tbaa !9
  %5254 = sub nsw i32 %5253, 1
  store i32 %5254, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %5255

5255:                                             ; preds = %5290, %5232
  %5256 = load i32, ptr %58, align 4, !tbaa !9
  %5257 = load i32, ptr %38, align 4, !tbaa !9
  %5258 = icmp sle i32 %5256, %5257
  br i1 %5258, label %5259, label %5293

5259:                                             ; preds = %5255
  %5260 = load ptr, ptr %20, align 8, !tbaa !5
  %5261 = load i32, ptr %58, align 4, !tbaa !9
  %5262 = add nsw i32 %5261, 1
  %5263 = load i32, ptr %66, align 4, !tbaa !9
  %5264 = load i32, ptr %58, align 4, !tbaa !9
  %5265 = sub nsw i32 %5263, %5264
  %5266 = load i32, ptr %29, align 4, !tbaa !9
  %5267 = mul nsw i32 %5265, %5266
  %5268 = add nsw i32 %5262, %5267
  %5269 = sext i32 %5268 to i64
  %5270 = getelementptr inbounds %struct.doublecomplex, ptr %5260, i64 %5269
  %5271 = load ptr, ptr %20, align 8, !tbaa !5
  %5272 = load i32, ptr %58, align 4, !tbaa !9
  %5273 = add nsw i32 %5272, 2
  %5274 = load i32, ptr %66, align 4, !tbaa !9
  %5275 = load i32, ptr %58, align 4, !tbaa !9
  %5276 = sub nsw i32 %5274, %5275
  %5277 = load i32, ptr %29, align 4, !tbaa !9
  %5278 = mul nsw i32 %5276, %5277
  %5279 = add nsw i32 %5273, %5278
  %5280 = sext i32 %5279 to i64
  %5281 = getelementptr inbounds %struct.doublecomplex, ptr %5271, i64 %5280
  %5282 = load ptr, ptr %27, align 8, !tbaa !5
  %5283 = load i32, ptr %66, align 4, !tbaa !9
  %5284 = sext i32 %5283 to i64
  %5285 = getelementptr inbounds double, ptr %5282, i64 %5284
  %5286 = load ptr, ptr %26, align 8, !tbaa !5
  %5287 = load i32, ptr %66, align 4, !tbaa !9
  %5288 = sext i32 %5287 to i64
  %5289 = getelementptr inbounds %struct.doublecomplex, ptr %5286, i64 %5288
  call void @zlartv_(ptr noundef %69, ptr noundef %5270, ptr noundef %54, ptr noundef %5281, ptr noundef %54, ptr noundef %5285, ptr noundef %5289, ptr noundef %72)
  br label %5290

5290:                                             ; preds = %5259
  %5291 = load i32, ptr %58, align 4, !tbaa !9
  %5292 = add nsw i32 %5291, 1
  store i32 %5292, ptr %58, align 4, !tbaa !9
  br label %5255, !llvm.loop !56

5293:                                             ; preds = %5255
  %5294 = load ptr, ptr %20, align 8, !tbaa !5
  %5295 = load i32, ptr %66, align 4, !tbaa !9
  %5296 = load i32, ptr %29, align 4, !tbaa !9
  %5297 = mul nsw i32 %5295, %5296
  %5298 = add nsw i32 %5297, 1
  %5299 = sext i32 %5298 to i64
  %5300 = getelementptr inbounds %struct.doublecomplex, ptr %5294, i64 %5299
  %5301 = load ptr, ptr %20, align 8, !tbaa !5
  %5302 = load i32, ptr %66, align 4, !tbaa !9
  %5303 = add nsw i32 %5302, 1
  %5304 = load i32, ptr %29, align 4, !tbaa !9
  %5305 = mul nsw i32 %5303, %5304
  %5306 = add nsw i32 %5305, 1
  %5307 = sext i32 %5306 to i64
  %5308 = getelementptr inbounds %struct.doublecomplex, ptr %5301, i64 %5307
  %5309 = load ptr, ptr %20, align 8, !tbaa !5
  %5310 = load i32, ptr %66, align 4, !tbaa !9
  %5311 = load i32, ptr %29, align 4, !tbaa !9
  %5312 = mul nsw i32 %5310, %5311
  %5313 = add nsw i32 %5312, 2
  %5314 = sext i32 %5313 to i64
  %5315 = getelementptr inbounds %struct.doublecomplex, ptr %5309, i64 %5314
  %5316 = load ptr, ptr %27, align 8, !tbaa !5
  %5317 = load i32, ptr %66, align 4, !tbaa !9
  %5318 = sext i32 %5317 to i64
  %5319 = getelementptr inbounds double, ptr %5316, i64 %5318
  %5320 = load ptr, ptr %26, align 8, !tbaa !5
  %5321 = load i32, ptr %66, align 4, !tbaa !9
  %5322 = sext i32 %5321 to i64
  %5323 = getelementptr inbounds %struct.doublecomplex, ptr %5320, i64 %5322
  call void @zlar2v_(ptr noundef %69, ptr noundef %5300, ptr noundef %5308, ptr noundef %5315, ptr noundef %54, ptr noundef %5319, ptr noundef %5323, ptr noundef %72)
  %5324 = load ptr, ptr %26, align 8, !tbaa !5
  %5325 = load i32, ptr %66, align 4, !tbaa !9
  %5326 = sext i32 %5325 to i64
  %5327 = getelementptr inbounds %struct.doublecomplex, ptr %5324, i64 %5326
  call void @zlacgv_(ptr noundef %69, ptr noundef %5327, ptr noundef %72)
  br label %5328

5328:                                             ; preds = %5293, %5210
  %5329 = load ptr, ptr %19, align 8, !tbaa !5
  %5330 = load i32, ptr %5329, align 4, !tbaa !9
  %5331 = load i32, ptr %57, align 4, !tbaa !9
  %5332 = sub nsw i32 %5330, %5331
  %5333 = add nsw i32 %5332, 1
  store i32 %5333, ptr %38, align 4, !tbaa !9
  %5334 = load ptr, ptr %18, align 8, !tbaa !5
  %5335 = load i32, ptr %5334, align 4, !tbaa !9
  %5336 = sub nsw i32 %5335, 1
  store i32 %5336, ptr %58, align 4, !tbaa !9
  br label %5337

5337:                                             ; preds = %5384, %5328
  %5338 = load i32, ptr %58, align 4, !tbaa !9
  %5339 = load i32, ptr %38, align 4, !tbaa !9
  %5340 = icmp sge i32 %5338, %5339
  br i1 %5340, label %5341, label %5387

5341:                                             ; preds = %5337
  %5342 = load ptr, ptr %17, align 8, !tbaa !5
  %5343 = load i32, ptr %5342, align 4, !tbaa !9
  %5344 = load i32, ptr %66, align 4, !tbaa !9
  %5345 = sub nsw i32 %5343, %5344
  %5346 = load i32, ptr %58, align 4, !tbaa !9
  %5347 = add nsw i32 %5345, %5346
  %5348 = load i32, ptr %72, align 4, !tbaa !9
  %5349 = sdiv i32 %5347, %5348
  store i32 %5349, ptr %79, align 4, !tbaa !9
  %5350 = load i32, ptr %79, align 4, !tbaa !9
  %5351 = icmp sgt i32 %5350, 0
  br i1 %5351, label %5352, label %5383

5352:                                             ; preds = %5341
  %5353 = load ptr, ptr %20, align 8, !tbaa !5
  %5354 = load i32, ptr %72, align 4, !tbaa !9
  %5355 = load i32, ptr %58, align 4, !tbaa !9
  %5356 = sub nsw i32 %5354, %5355
  %5357 = add nsw i32 %5356, 1
  %5358 = load i32, ptr %66, align 4, !tbaa !9
  %5359 = load i32, ptr %29, align 4, !tbaa !9
  %5360 = mul nsw i32 %5358, %5359
  %5361 = add nsw i32 %5357, %5360
  %5362 = sext i32 %5361 to i64
  %5363 = getelementptr inbounds %struct.doublecomplex, ptr %5353, i64 %5362
  %5364 = load ptr, ptr %20, align 8, !tbaa !5
  %5365 = load i32, ptr %72, align 4, !tbaa !9
  %5366 = load i32, ptr %58, align 4, !tbaa !9
  %5367 = sub nsw i32 %5365, %5366
  %5368 = load i32, ptr %66, align 4, !tbaa !9
  %5369 = add nsw i32 %5368, 1
  %5370 = load i32, ptr %29, align 4, !tbaa !9
  %5371 = mul nsw i32 %5369, %5370
  %5372 = add nsw i32 %5367, %5371
  %5373 = sext i32 %5372 to i64
  %5374 = getelementptr inbounds %struct.doublecomplex, ptr %5364, i64 %5373
  %5375 = load ptr, ptr %27, align 8, !tbaa !5
  %5376 = load i32, ptr %66, align 4, !tbaa !9
  %5377 = sext i32 %5376 to i64
  %5378 = getelementptr inbounds double, ptr %5375, i64 %5377
  %5379 = load ptr, ptr %26, align 8, !tbaa !5
  %5380 = load i32, ptr %66, align 4, !tbaa !9
  %5381 = sext i32 %5380 to i64
  %5382 = getelementptr inbounds %struct.doublecomplex, ptr %5379, i64 %5381
  call void @zlartv_(ptr noundef %79, ptr noundef %5363, ptr noundef %54, ptr noundef %5374, ptr noundef %54, ptr noundef %5378, ptr noundef %5382, ptr noundef %72)
  br label %5383

5383:                                             ; preds = %5352, %5341
  br label %5384

5384:                                             ; preds = %5383
  %5385 = load i32, ptr %58, align 4, !tbaa !9
  %5386 = add nsw i32 %5385, -1
  store i32 %5386, ptr %58, align 4, !tbaa !9
  br label %5337, !llvm.loop !57

5387:                                             ; preds = %5337
  %5388 = load i32, ptr %67, align 4, !tbaa !9
  %5389 = icmp ne i32 %5388, 0
  br i1 %5389, label %5390, label %5447

5390:                                             ; preds = %5387
  %5391 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %5391, ptr %38, align 4, !tbaa !9
  %5392 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %5392, ptr %37, align 4, !tbaa !9
  %5393 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %5393, ptr %56, align 4, !tbaa !9
  br label %5394

5394:                                             ; preds = %5442, %5390
  %5395 = load i32, ptr %37, align 4, !tbaa !9
  %5396 = icmp slt i32 %5395, 0
  br i1 %5396, label %5397, label %5402

5397:                                             ; preds = %5394
  %5398 = load i32, ptr %56, align 4, !tbaa !9
  %5399 = load i32, ptr %38, align 4, !tbaa !9
  %5400 = icmp sge i32 %5398, %5399
  %5401 = zext i1 %5400 to i32
  br label %5407

5402:                                             ; preds = %5394
  %5403 = load i32, ptr %56, align 4, !tbaa !9
  %5404 = load i32, ptr %38, align 4, !tbaa !9
  %5405 = icmp sle i32 %5403, %5404
  %5406 = zext i1 %5405 to i32
  br label %5407

5407:                                             ; preds = %5402, %5397
  %5408 = phi i32 [ %5401, %5397 ], [ %5406, %5402 ]
  %5409 = icmp ne i32 %5408, 0
  br i1 %5409, label %5410, label %5446

5410:                                             ; preds = %5407
  %5411 = load ptr, ptr %17, align 8, !tbaa !5
  %5412 = load i32, ptr %5411, align 4, !tbaa !9
  %5413 = load i32, ptr %59, align 4, !tbaa !9
  %5414 = sub nsw i32 %5412, %5413
  store i32 %5414, ptr %35, align 4, !tbaa !9
  %5415 = load ptr, ptr %24, align 8, !tbaa !5
  %5416 = load i32, ptr %59, align 4, !tbaa !9
  %5417 = add nsw i32 %5416, 1
  %5418 = load i32, ptr %56, align 4, !tbaa !9
  %5419 = load i32, ptr %33, align 4, !tbaa !9
  %5420 = mul nsw i32 %5418, %5419
  %5421 = add nsw i32 %5417, %5420
  %5422 = sext i32 %5421 to i64
  %5423 = getelementptr inbounds %struct.doublecomplex, ptr %5415, i64 %5422
  %5424 = load ptr, ptr %24, align 8, !tbaa !5
  %5425 = load i32, ptr %59, align 4, !tbaa !9
  %5426 = add nsw i32 %5425, 1
  %5427 = load i32, ptr %56, align 4, !tbaa !9
  %5428 = add nsw i32 %5427, 1
  %5429 = load i32, ptr %33, align 4, !tbaa !9
  %5430 = mul nsw i32 %5428, %5429
  %5431 = add nsw i32 %5426, %5430
  %5432 = sext i32 %5431 to i64
  %5433 = getelementptr inbounds %struct.doublecomplex, ptr %5424, i64 %5432
  %5434 = load ptr, ptr %27, align 8, !tbaa !5
  %5435 = load i32, ptr %56, align 4, !tbaa !9
  %5436 = sext i32 %5435 to i64
  %5437 = getelementptr inbounds double, ptr %5434, i64 %5436
  %5438 = load ptr, ptr %26, align 8, !tbaa !5
  %5439 = load i32, ptr %56, align 4, !tbaa !9
  %5440 = sext i32 %5439 to i64
  %5441 = getelementptr inbounds %struct.doublecomplex, ptr %5438, i64 %5440
  call void @zrot_(ptr noundef %35, ptr noundef %5423, ptr noundef @c__1, ptr noundef %5433, ptr noundef @c__1, ptr noundef %5437, ptr noundef %5441)
  br label %5442

5442:                                             ; preds = %5410
  %5443 = load i32, ptr %37, align 4, !tbaa !9
  %5444 = load i32, ptr %56, align 4, !tbaa !9
  %5445 = add nsw i32 %5444, %5443
  store i32 %5445, ptr %56, align 4, !tbaa !9
  br label %5394, !llvm.loop !58

5446:                                             ; preds = %5407
  br label %5447

5447:                                             ; preds = %5446, %5387
  br label %5448

5448:                                             ; preds = %5447
  %5449 = load i32, ptr %57, align 4, !tbaa !9
  %5450 = add nsw i32 %5449, -1
  store i32 %5450, ptr %57, align 4, !tbaa !9
  br label %5191, !llvm.loop !59

5451:                                             ; preds = %5191
  %5452 = load ptr, ptr %19, align 8, !tbaa !5
  %5453 = load i32, ptr %5452, align 4, !tbaa !9
  %5454 = sub nsw i32 %5453, 1
  store i32 %5454, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %5455

5455:                                             ; preds = %5538, %5451
  %5456 = load i32, ptr %57, align 4, !tbaa !9
  %5457 = load i32, ptr %37, align 4, !tbaa !9
  %5458 = icmp sle i32 %5456, %5457
  br i1 %5458, label %5459, label %5541

5459:                                             ; preds = %5455
  store i32 1, ptr %38, align 4, !tbaa !9
  %5460 = load i32, ptr %57, align 4, !tbaa !9
  %5461 = load i32, ptr %61, align 4, !tbaa !9
  %5462 = sub nsw i32 %5460, %5461
  %5463 = add nsw i32 %5462, 2
  store i32 %5463, ptr %35, align 4, !tbaa !9
  %5464 = load i32, ptr %55, align 4, !tbaa !9
  %5465 = load i32, ptr %57, align 4, !tbaa !9
  %5466 = sub nsw i32 %5464, %5465
  %5467 = sub nsw i32 %5466, 1
  %5468 = load i32, ptr %38, align 4, !tbaa !9
  %5469 = load i32, ptr %35, align 4, !tbaa !9
  %5470 = icmp sge i32 %5468, %5469
  br i1 %5470, label %5471, label %5473

5471:                                             ; preds = %5459
  %5472 = load i32, ptr %38, align 4, !tbaa !9
  br label %5475

5473:                                             ; preds = %5459
  %5474 = load i32, ptr %35, align 4, !tbaa !9
  br label %5475

5475:                                             ; preds = %5473, %5471
  %5476 = phi i32 [ %5472, %5471 ], [ %5474, %5473 ]
  %5477 = load i32, ptr %72, align 4, !tbaa !9
  %5478 = mul nsw i32 %5476, %5477
  %5479 = add nsw i32 %5467, %5478
  store i32 %5479, ptr %66, align 4, !tbaa !9
  %5480 = load ptr, ptr %19, align 8, !tbaa !5
  %5481 = load i32, ptr %5480, align 4, !tbaa !9
  %5482 = load i32, ptr %57, align 4, !tbaa !9
  %5483 = sub nsw i32 %5481, %5482
  store i32 %5483, ptr %58, align 4, !tbaa !9
  br label %5484

5484:                                             ; preds = %5534, %5475
  %5485 = load i32, ptr %58, align 4, !tbaa !9
  %5486 = icmp sge i32 %5485, 1
  br i1 %5486, label %5487, label %5537

5487:                                             ; preds = %5484
  %5488 = load ptr, ptr %17, align 8, !tbaa !5
  %5489 = load i32, ptr %5488, align 4, !tbaa !9
  %5490 = load i32, ptr %66, align 4, !tbaa !9
  %5491 = sub nsw i32 %5489, %5490
  %5492 = load i32, ptr %58, align 4, !tbaa !9
  %5493 = add nsw i32 %5491, %5492
  %5494 = load i32, ptr %72, align 4, !tbaa !9
  %5495 = sdiv i32 %5493, %5494
  store i32 %5495, ptr %79, align 4, !tbaa !9
  %5496 = load i32, ptr %79, align 4, !tbaa !9
  %5497 = icmp sgt i32 %5496, 0
  br i1 %5497, label %5498, label %5533

5498:                                             ; preds = %5487
  %5499 = load ptr, ptr %20, align 8, !tbaa !5
  %5500 = load i32, ptr %72, align 4, !tbaa !9
  %5501 = load i32, ptr %58, align 4, !tbaa !9
  %5502 = sub nsw i32 %5500, %5501
  %5503 = add nsw i32 %5502, 1
  %5504 = load i32, ptr %66, align 4, !tbaa !9
  %5505 = load i32, ptr %29, align 4, !tbaa !9
  %5506 = mul nsw i32 %5504, %5505
  %5507 = add nsw i32 %5503, %5506
  %5508 = sext i32 %5507 to i64
  %5509 = getelementptr inbounds %struct.doublecomplex, ptr %5499, i64 %5508
  %5510 = load ptr, ptr %20, align 8, !tbaa !5
  %5511 = load i32, ptr %72, align 4, !tbaa !9
  %5512 = load i32, ptr %58, align 4, !tbaa !9
  %5513 = sub nsw i32 %5511, %5512
  %5514 = load i32, ptr %66, align 4, !tbaa !9
  %5515 = add nsw i32 %5514, 1
  %5516 = load i32, ptr %29, align 4, !tbaa !9
  %5517 = mul nsw i32 %5515, %5516
  %5518 = add nsw i32 %5513, %5517
  %5519 = sext i32 %5518 to i64
  %5520 = getelementptr inbounds %struct.doublecomplex, ptr %5510, i64 %5519
  %5521 = load ptr, ptr %27, align 8, !tbaa !5
  %5522 = load i32, ptr %66, align 4, !tbaa !9
  %5523 = load i32, ptr %59, align 4, !tbaa !9
  %5524 = sub nsw i32 %5522, %5523
  %5525 = sext i32 %5524 to i64
  %5526 = getelementptr inbounds double, ptr %5521, i64 %5525
  %5527 = load ptr, ptr %26, align 8, !tbaa !5
  %5528 = load i32, ptr %66, align 4, !tbaa !9
  %5529 = load i32, ptr %59, align 4, !tbaa !9
  %5530 = sub nsw i32 %5528, %5529
  %5531 = sext i32 %5530 to i64
  %5532 = getelementptr inbounds %struct.doublecomplex, ptr %5527, i64 %5531
  call void @zlartv_(ptr noundef %79, ptr noundef %5509, ptr noundef %54, ptr noundef %5520, ptr noundef %54, ptr noundef %5526, ptr noundef %5532, ptr noundef %72)
  br label %5533

5533:                                             ; preds = %5498, %5487
  br label %5534

5534:                                             ; preds = %5533
  %5535 = load i32, ptr %58, align 4, !tbaa !9
  %5536 = add nsw i32 %5535, -1
  store i32 %5536, ptr %58, align 4, !tbaa !9
  br label %5484, !llvm.loop !60

5537:                                             ; preds = %5484
  br label %5538

5538:                                             ; preds = %5537
  %5539 = load i32, ptr %57, align 4, !tbaa !9
  %5540 = add nsw i32 %5539, 1
  store i32 %5540, ptr %57, align 4, !tbaa !9
  br label %5455, !llvm.loop !61

5541:                                             ; preds = %5455
  %5542 = load ptr, ptr %19, align 8, !tbaa !5
  %5543 = load i32, ptr %5542, align 4, !tbaa !9
  %5544 = icmp sgt i32 %5543, 1
  br i1 %5544, label %5545, label %5609

5545:                                             ; preds = %5541
  %5546 = load i32, ptr %66, align 4, !tbaa !9
  %5547 = load ptr, ptr %18, align 8, !tbaa !5
  %5548 = load i32, ptr %5547, align 4, !tbaa !9
  %5549 = add nsw i32 %5546, %5548
  store i32 %5549, ptr %37, align 4, !tbaa !9
  %5550 = load ptr, ptr %17, align 8, !tbaa !5
  %5551 = load i32, ptr %5550, align 4, !tbaa !9
  %5552 = sub nsw i32 %5551, 1
  store i32 %5552, ptr %56, align 4, !tbaa !9
  br label %5553

5553:                                             ; preds = %5605, %5545
  %5554 = load i32, ptr %56, align 4, !tbaa !9
  %5555 = load i32, ptr %37, align 4, !tbaa !9
  %5556 = icmp sge i32 %5554, %5555
  br i1 %5556, label %5557, label %5608

5557:                                             ; preds = %5553
  %5558 = load ptr, ptr %27, align 8, !tbaa !5
  %5559 = load i32, ptr %56, align 4, !tbaa !9
  %5560 = load ptr, ptr %18, align 8, !tbaa !5
  %5561 = load i32, ptr %5560, align 4, !tbaa !9
  %5562 = sub nsw i32 %5559, %5561
  %5563 = load i32, ptr %59, align 4, !tbaa !9
  %5564 = sub nsw i32 %5562, %5563
  %5565 = sext i32 %5564 to i64
  %5566 = getelementptr inbounds double, ptr %5558, i64 %5565
  %5567 = load double, ptr %5566, align 8, !tbaa !14
  %5568 = load ptr, ptr %27, align 8, !tbaa !5
  %5569 = load i32, ptr %56, align 4, !tbaa !9
  %5570 = load i32, ptr %59, align 4, !tbaa !9
  %5571 = sub nsw i32 %5569, %5570
  %5572 = sext i32 %5571 to i64
  %5573 = getelementptr inbounds double, ptr %5568, i64 %5572
  store double %5567, ptr %5573, align 8, !tbaa !14
  %5574 = load i32, ptr %56, align 4, !tbaa !9
  %5575 = load i32, ptr %59, align 4, !tbaa !9
  %5576 = sub nsw i32 %5574, %5575
  store i32 %5576, ptr %38, align 4, !tbaa !9
  %5577 = load i32, ptr %56, align 4, !tbaa !9
  %5578 = load ptr, ptr %18, align 8, !tbaa !5
  %5579 = load i32, ptr %5578, align 4, !tbaa !9
  %5580 = sub nsw i32 %5577, %5579
  %5581 = load i32, ptr %59, align 4, !tbaa !9
  %5582 = sub nsw i32 %5580, %5581
  store i32 %5582, ptr %35, align 4, !tbaa !9
  %5583 = load ptr, ptr %26, align 8, !tbaa !5
  %5584 = load i32, ptr %35, align 4, !tbaa !9
  %5585 = sext i32 %5584 to i64
  %5586 = getelementptr inbounds %struct.doublecomplex, ptr %5583, i64 %5585
  %5587 = getelementptr inbounds %struct.doublecomplex, ptr %5586, i32 0, i32 0
  %5588 = load double, ptr %5587, align 8, !tbaa !11
  %5589 = load ptr, ptr %26, align 8, !tbaa !5
  %5590 = load i32, ptr %38, align 4, !tbaa !9
  %5591 = sext i32 %5590 to i64
  %5592 = getelementptr inbounds %struct.doublecomplex, ptr %5589, i64 %5591
  %5593 = getelementptr inbounds %struct.doublecomplex, ptr %5592, i32 0, i32 0
  store double %5588, ptr %5593, align 8, !tbaa !11
  %5594 = load ptr, ptr %26, align 8, !tbaa !5
  %5595 = load i32, ptr %35, align 4, !tbaa !9
  %5596 = sext i32 %5595 to i64
  %5597 = getelementptr inbounds %struct.doublecomplex, ptr %5594, i64 %5596
  %5598 = getelementptr inbounds %struct.doublecomplex, ptr %5597, i32 0, i32 1
  %5599 = load double, ptr %5598, align 8, !tbaa !15
  %5600 = load ptr, ptr %26, align 8, !tbaa !5
  %5601 = load i32, ptr %38, align 4, !tbaa !9
  %5602 = sext i32 %5601 to i64
  %5603 = getelementptr inbounds %struct.doublecomplex, ptr %5600, i64 %5602
  %5604 = getelementptr inbounds %struct.doublecomplex, ptr %5603, i32 0, i32 1
  store double %5599, ptr %5604, align 8, !tbaa !15
  br label %5605

5605:                                             ; preds = %5557
  %5606 = load i32, ptr %56, align 4, !tbaa !9
  %5607 = add nsw i32 %5606, -1
  store i32 %5607, ptr %56, align 4, !tbaa !9
  br label %5553, !llvm.loop !62

5608:                                             ; preds = %5553
  br label %5609

5609:                                             ; preds = %5608, %5541
  br label %5610

5610:                                             ; preds = %5609, %2978
  br label %253

5611:                                             ; preds = %318, %305
  store i32 1, ptr %71, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %5612

5612:                                             ; preds = %11060, %5664, %5611
  %5613 = load i32, ptr %71, align 4, !tbaa !9
  %5614 = icmp ne i32 %5613, 0
  br i1 %5614, label %5615, label %5666

5615:                                             ; preds = %5612
  %5616 = load i32, ptr %55, align 4, !tbaa !9
  %5617 = add nsw i32 %5616, 1
  store i32 %5617, ptr %55, align 4, !tbaa !9
  %5618 = load ptr, ptr %19, align 8, !tbaa !5
  %5619 = load i32, ptr %5618, align 4, !tbaa !9
  store i32 %5619, ptr %37, align 4, !tbaa !9
  %5620 = load i32, ptr %59, align 4, !tbaa !9
  %5621 = load i32, ptr %55, align 4, !tbaa !9
  %5622 = sub nsw i32 %5620, %5621
  store i32 %5622, ptr %38, align 4, !tbaa !9
  %5623 = load i32, ptr %37, align 4, !tbaa !9
  %5624 = load i32, ptr %38, align 4, !tbaa !9
  %5625 = icmp sle i32 %5623, %5624
  br i1 %5625, label %5626, label %5628

5626:                                             ; preds = %5615
  %5627 = load i32, ptr %37, align 4, !tbaa !9
  br label %5630

5628:                                             ; preds = %5615
  %5629 = load i32, ptr %38, align 4, !tbaa !9
  br label %5630

5630:                                             ; preds = %5628, %5626
  %5631 = phi i32 [ %5627, %5626 ], [ %5629, %5628 ]
  store i32 %5631, ptr %78, align 4, !tbaa !9
  %5632 = load i32, ptr %55, align 4, !tbaa !9
  %5633 = add nsw i32 %5632, 1
  store i32 %5633, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  %5634 = load i32, ptr %55, align 4, !tbaa !9
  %5635 = load ptr, ptr %18, align 8, !tbaa !5
  %5636 = load i32, ptr %5635, align 4, !tbaa !9
  %5637 = sub nsw i32 %5634, %5636
  store i32 %5637, ptr %38, align 4, !tbaa !9
  %5638 = load i32, ptr %37, align 4, !tbaa !9
  %5639 = load i32, ptr %38, align 4, !tbaa !9
  %5640 = icmp sge i32 %5638, %5639
  br i1 %5640, label %5641, label %5643

5641:                                             ; preds = %5630
  %5642 = load i32, ptr %37, align 4, !tbaa !9
  br label %5645

5643:                                             ; preds = %5630
  %5644 = load i32, ptr %38, align 4, !tbaa !9
  br label %5645

5645:                                             ; preds = %5643, %5641
  %5646 = phi i32 [ %5642, %5641 ], [ %5644, %5643 ]
  store i32 %5646, ptr %62, align 4, !tbaa !9
  %5647 = load i32, ptr %55, align 4, !tbaa !9
  %5648 = load i32, ptr %78, align 4, !tbaa !9
  %5649 = add nsw i32 %5647, %5648
  %5650 = load i32, ptr %72, align 4, !tbaa !9
  %5651 = sub nsw i32 %5649, %5650
  store i32 %5651, ptr %64, align 4, !tbaa !9
  %5652 = load i32, ptr %55, align 4, !tbaa !9
  %5653 = load i32, ptr %59, align 4, !tbaa !9
  %5654 = icmp sgt i32 %5652, %5653
  br i1 %5654, label %5655, label %5665

5655:                                             ; preds = %5645
  store i32 0, ptr %71, align 4, !tbaa !9
  %5656 = load i32, ptr %55, align 4, !tbaa !9
  %5657 = add nsw i32 %5656, -1
  store i32 %5657, ptr %55, align 4, !tbaa !9
  %5658 = load i32, ptr %59, align 4, !tbaa !9
  %5659 = add nsw i32 %5658, 1
  store i32 %5659, ptr %61, align 4, !tbaa !9
  %5660 = load ptr, ptr %18, align 8, !tbaa !5
  %5661 = load i32, ptr %5660, align 4, !tbaa !9
  %5662 = icmp eq i32 %5661, 0
  br i1 %5662, label %5663, label %5664

5663:                                             ; preds = %5655
  store i32 1, ptr %80, align 4
  br label %11061

5664:                                             ; preds = %5655
  br label %5612

5665:                                             ; preds = %5645
  br label %5675

5666:                                             ; preds = %5612
  %5667 = load ptr, ptr %18, align 8, !tbaa !5
  %5668 = load i32, ptr %5667, align 4, !tbaa !9
  %5669 = load i32, ptr %55, align 4, !tbaa !9
  %5670 = sub nsw i32 %5669, %5668
  store i32 %5670, ptr %55, align 4, !tbaa !9
  %5671 = load i32, ptr %55, align 4, !tbaa !9
  %5672 = icmp slt i32 %5671, 2
  br i1 %5672, label %5673, label %5674

5673:                                             ; preds = %5666
  store i32 1, ptr %80, align 4
  br label %11061

5674:                                             ; preds = %5666
  br label %5675

5675:                                             ; preds = %5674, %5665
  %5676 = load i32, ptr %55, align 4, !tbaa !9
  %5677 = load i32, ptr %59, align 4, !tbaa !9
  %5678 = load i32, ptr %78, align 4, !tbaa !9
  %5679 = sub nsw i32 %5677, %5678
  %5680 = icmp slt i32 %5676, %5679
  br i1 %5680, label %5681, label %5683

5681:                                             ; preds = %5675
  %5682 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %5682, ptr %70, align 4, !tbaa !9
  br label %5686

5683:                                             ; preds = %5675
  %5684 = load ptr, ptr %17, align 8, !tbaa !5
  %5685 = load i32, ptr %5684, align 4, !tbaa !9
  store i32 %5685, ptr %70, align 4, !tbaa !9
  br label %5686

5686:                                             ; preds = %5683, %5681
  %5687 = load i32, ptr %63, align 4, !tbaa !9
  %5688 = icmp ne i32 %5687, 0
  br i1 %5688, label %5689, label %8376

5689:                                             ; preds = %5686
  %5690 = load i32, ptr %71, align 4, !tbaa !9
  %5691 = icmp ne i32 %5690, 0
  br i1 %5691, label %5692, label %6571

5692:                                             ; preds = %5689
  %5693 = load i32, ptr %73, align 4, !tbaa !9
  %5694 = load i32, ptr %55, align 4, !tbaa !9
  %5695 = load i32, ptr %31, align 4, !tbaa !9
  %5696 = mul nsw i32 %5694, %5695
  %5697 = add nsw i32 %5693, %5696
  store i32 %5697, ptr %37, align 4, !tbaa !9
  %5698 = load ptr, ptr %22, align 8, !tbaa !5
  %5699 = load i32, ptr %37, align 4, !tbaa !9
  %5700 = sext i32 %5699 to i64
  %5701 = getelementptr inbounds %struct.doublecomplex, ptr %5698, i64 %5700
  %5702 = getelementptr inbounds %struct.doublecomplex, ptr %5701, i32 0, i32 0
  %5703 = load double, ptr %5702, align 8, !tbaa !11
  store double %5703, ptr %77, align 8, !tbaa !14
  %5704 = load i32, ptr %72, align 4, !tbaa !9
  %5705 = load i32, ptr %55, align 4, !tbaa !9
  %5706 = load i32, ptr %29, align 4, !tbaa !9
  %5707 = mul nsw i32 %5705, %5706
  %5708 = add nsw i32 %5704, %5707
  store i32 %5708, ptr %37, align 4, !tbaa !9
  %5709 = load i32, ptr %72, align 4, !tbaa !9
  %5710 = load i32, ptr %55, align 4, !tbaa !9
  %5711 = load i32, ptr %29, align 4, !tbaa !9
  %5712 = mul nsw i32 %5710, %5711
  %5713 = add nsw i32 %5709, %5712
  store i32 %5713, ptr %38, align 4, !tbaa !9
  %5714 = load ptr, ptr %20, align 8, !tbaa !5
  %5715 = load i32, ptr %38, align 4, !tbaa !9
  %5716 = sext i32 %5715 to i64
  %5717 = getelementptr inbounds %struct.doublecomplex, ptr %5714, i64 %5716
  %5718 = getelementptr inbounds %struct.doublecomplex, ptr %5717, i32 0, i32 0
  %5719 = load double, ptr %5718, align 8, !tbaa !11
  %5720 = load double, ptr %77, align 8, !tbaa !14
  %5721 = fdiv double %5719, %5720
  %5722 = load double, ptr %77, align 8, !tbaa !14
  %5723 = fdiv double %5721, %5722
  store double %5723, ptr %43, align 8, !tbaa !14
  %5724 = load double, ptr %43, align 8, !tbaa !14
  %5725 = load ptr, ptr %20, align 8, !tbaa !5
  %5726 = load i32, ptr %37, align 4, !tbaa !9
  %5727 = sext i32 %5726 to i64
  %5728 = getelementptr inbounds %struct.doublecomplex, ptr %5725, i64 %5727
  %5729 = getelementptr inbounds %struct.doublecomplex, ptr %5728, i32 0, i32 0
  store double %5724, ptr %5729, align 8, !tbaa !11
  %5730 = load ptr, ptr %20, align 8, !tbaa !5
  %5731 = load i32, ptr %37, align 4, !tbaa !9
  %5732 = sext i32 %5731 to i64
  %5733 = getelementptr inbounds %struct.doublecomplex, ptr %5730, i64 %5732
  %5734 = getelementptr inbounds %struct.doublecomplex, ptr %5733, i32 0, i32 1
  store double 0.000000e+00, ptr %5734, align 8, !tbaa !15
  %5735 = load i32, ptr %55, align 4, !tbaa !9
  %5736 = sub nsw i32 %5735, 1
  store i32 %5736, ptr %37, align 4, !tbaa !9
  %5737 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %5737, ptr %56, align 4, !tbaa !9
  br label %5738

5738:                                             ; preds = %5793, %5692
  %5739 = load i32, ptr %56, align 4, !tbaa !9
  %5740 = load i32, ptr %37, align 4, !tbaa !9
  %5741 = icmp sle i32 %5739, %5740
  br i1 %5741, label %5742, label %5796

5742:                                             ; preds = %5738
  %5743 = load i32, ptr %56, align 4, !tbaa !9
  %5744 = load i32, ptr %55, align 4, !tbaa !9
  %5745 = sub nsw i32 %5743, %5744
  %5746 = load i32, ptr %72, align 4, !tbaa !9
  %5747 = add nsw i32 %5745, %5746
  %5748 = load i32, ptr %55, align 4, !tbaa !9
  %5749 = load i32, ptr %29, align 4, !tbaa !9
  %5750 = mul nsw i32 %5748, %5749
  %5751 = add nsw i32 %5747, %5750
  store i32 %5751, ptr %38, align 4, !tbaa !9
  %5752 = load i32, ptr %56, align 4, !tbaa !9
  %5753 = load i32, ptr %55, align 4, !tbaa !9
  %5754 = sub nsw i32 %5752, %5753
  %5755 = load i32, ptr %72, align 4, !tbaa !9
  %5756 = add nsw i32 %5754, %5755
  %5757 = load i32, ptr %55, align 4, !tbaa !9
  %5758 = load i32, ptr %29, align 4, !tbaa !9
  %5759 = mul nsw i32 %5757, %5758
  %5760 = add nsw i32 %5756, %5759
  store i32 %5760, ptr %35, align 4, !tbaa !9
  %5761 = load ptr, ptr %20, align 8, !tbaa !5
  %5762 = load i32, ptr %35, align 4, !tbaa !9
  %5763 = sext i32 %5762 to i64
  %5764 = getelementptr inbounds %struct.doublecomplex, ptr %5761, i64 %5763
  %5765 = getelementptr inbounds %struct.doublecomplex, ptr %5764, i32 0, i32 0
  %5766 = load double, ptr %5765, align 8, !tbaa !11
  %5767 = load double, ptr %77, align 8, !tbaa !14
  %5768 = fdiv double %5766, %5767
  %5769 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %5768, ptr %5769, align 8, !tbaa !11
  %5770 = load ptr, ptr %20, align 8, !tbaa !5
  %5771 = load i32, ptr %35, align 4, !tbaa !9
  %5772 = sext i32 %5771 to i64
  %5773 = getelementptr inbounds %struct.doublecomplex, ptr %5770, i64 %5772
  %5774 = getelementptr inbounds %struct.doublecomplex, ptr %5773, i32 0, i32 1
  %5775 = load double, ptr %5774, align 8, !tbaa !15
  %5776 = load double, ptr %77, align 8, !tbaa !14
  %5777 = fdiv double %5775, %5776
  %5778 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %5777, ptr %5778, align 8, !tbaa !15
  %5779 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %5780 = load double, ptr %5779, align 8, !tbaa !11
  %5781 = load ptr, ptr %20, align 8, !tbaa !5
  %5782 = load i32, ptr %38, align 4, !tbaa !9
  %5783 = sext i32 %5782 to i64
  %5784 = getelementptr inbounds %struct.doublecomplex, ptr %5781, i64 %5783
  %5785 = getelementptr inbounds %struct.doublecomplex, ptr %5784, i32 0, i32 0
  store double %5780, ptr %5785, align 8, !tbaa !11
  %5786 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %5787 = load double, ptr %5786, align 8, !tbaa !15
  %5788 = load ptr, ptr %20, align 8, !tbaa !5
  %5789 = load i32, ptr %38, align 4, !tbaa !9
  %5790 = sext i32 %5789 to i64
  %5791 = getelementptr inbounds %struct.doublecomplex, ptr %5788, i64 %5790
  %5792 = getelementptr inbounds %struct.doublecomplex, ptr %5791, i32 0, i32 1
  store double %5787, ptr %5792, align 8, !tbaa !15
  br label %5793

5793:                                             ; preds = %5742
  %5794 = load i32, ptr %56, align 4, !tbaa !9
  %5795 = add nsw i32 %5794, 1
  store i32 %5795, ptr %56, align 4, !tbaa !9
  br label %5738, !llvm.loop !63

5796:                                             ; preds = %5738
  %5797 = load ptr, ptr %17, align 8, !tbaa !5
  %5798 = load i32, ptr %5797, align 4, !tbaa !9
  store i32 %5798, ptr %38, align 4, !tbaa !9
  %5799 = load i32, ptr %55, align 4, !tbaa !9
  %5800 = load ptr, ptr %18, align 8, !tbaa !5
  %5801 = load i32, ptr %5800, align 4, !tbaa !9
  %5802 = add nsw i32 %5799, %5801
  store i32 %5802, ptr %35, align 4, !tbaa !9
  %5803 = load i32, ptr %38, align 4, !tbaa !9
  %5804 = load i32, ptr %35, align 4, !tbaa !9
  %5805 = icmp sle i32 %5803, %5804
  br i1 %5805, label %5806, label %5808

5806:                                             ; preds = %5796
  %5807 = load i32, ptr %38, align 4, !tbaa !9
  br label %5810

5808:                                             ; preds = %5796
  %5809 = load i32, ptr %35, align 4, !tbaa !9
  br label %5810

5810:                                             ; preds = %5808, %5806
  %5811 = phi i32 [ %5807, %5806 ], [ %5809, %5808 ]
  store i32 %5811, ptr %37, align 4, !tbaa !9
  %5812 = load i32, ptr %55, align 4, !tbaa !9
  %5813 = add nsw i32 %5812, 1
  store i32 %5813, ptr %56, align 4, !tbaa !9
  br label %5814

5814:                                             ; preds = %5869, %5810
  %5815 = load i32, ptr %56, align 4, !tbaa !9
  %5816 = load i32, ptr %37, align 4, !tbaa !9
  %5817 = icmp sle i32 %5815, %5816
  br i1 %5817, label %5818, label %5872

5818:                                             ; preds = %5814
  %5819 = load i32, ptr %55, align 4, !tbaa !9
  %5820 = load i32, ptr %56, align 4, !tbaa !9
  %5821 = sub nsw i32 %5819, %5820
  %5822 = load i32, ptr %72, align 4, !tbaa !9
  %5823 = add nsw i32 %5821, %5822
  %5824 = load i32, ptr %56, align 4, !tbaa !9
  %5825 = load i32, ptr %29, align 4, !tbaa !9
  %5826 = mul nsw i32 %5824, %5825
  %5827 = add nsw i32 %5823, %5826
  store i32 %5827, ptr %38, align 4, !tbaa !9
  %5828 = load i32, ptr %55, align 4, !tbaa !9
  %5829 = load i32, ptr %56, align 4, !tbaa !9
  %5830 = sub nsw i32 %5828, %5829
  %5831 = load i32, ptr %72, align 4, !tbaa !9
  %5832 = add nsw i32 %5830, %5831
  %5833 = load i32, ptr %56, align 4, !tbaa !9
  %5834 = load i32, ptr %29, align 4, !tbaa !9
  %5835 = mul nsw i32 %5833, %5834
  %5836 = add nsw i32 %5832, %5835
  store i32 %5836, ptr %35, align 4, !tbaa !9
  %5837 = load ptr, ptr %20, align 8, !tbaa !5
  %5838 = load i32, ptr %35, align 4, !tbaa !9
  %5839 = sext i32 %5838 to i64
  %5840 = getelementptr inbounds %struct.doublecomplex, ptr %5837, i64 %5839
  %5841 = getelementptr inbounds %struct.doublecomplex, ptr %5840, i32 0, i32 0
  %5842 = load double, ptr %5841, align 8, !tbaa !11
  %5843 = load double, ptr %77, align 8, !tbaa !14
  %5844 = fdiv double %5842, %5843
  %5845 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %5844, ptr %5845, align 8, !tbaa !11
  %5846 = load ptr, ptr %20, align 8, !tbaa !5
  %5847 = load i32, ptr %35, align 4, !tbaa !9
  %5848 = sext i32 %5847 to i64
  %5849 = getelementptr inbounds %struct.doublecomplex, ptr %5846, i64 %5848
  %5850 = getelementptr inbounds %struct.doublecomplex, ptr %5849, i32 0, i32 1
  %5851 = load double, ptr %5850, align 8, !tbaa !15
  %5852 = load double, ptr %77, align 8, !tbaa !14
  %5853 = fdiv double %5851, %5852
  %5854 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %5853, ptr %5854, align 8, !tbaa !15
  %5855 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %5856 = load double, ptr %5855, align 8, !tbaa !11
  %5857 = load ptr, ptr %20, align 8, !tbaa !5
  %5858 = load i32, ptr %38, align 4, !tbaa !9
  %5859 = sext i32 %5858 to i64
  %5860 = getelementptr inbounds %struct.doublecomplex, ptr %5857, i64 %5859
  %5861 = getelementptr inbounds %struct.doublecomplex, ptr %5860, i32 0, i32 0
  store double %5856, ptr %5861, align 8, !tbaa !11
  %5862 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %5863 = load double, ptr %5862, align 8, !tbaa !15
  %5864 = load ptr, ptr %20, align 8, !tbaa !5
  %5865 = load i32, ptr %38, align 4, !tbaa !9
  %5866 = sext i32 %5865 to i64
  %5867 = getelementptr inbounds %struct.doublecomplex, ptr %5864, i64 %5866
  %5868 = getelementptr inbounds %struct.doublecomplex, ptr %5867, i32 0, i32 1
  store double %5863, ptr %5868, align 8, !tbaa !15
  br label %5869

5869:                                             ; preds = %5818
  %5870 = load i32, ptr %56, align 4, !tbaa !9
  %5871 = add nsw i32 %5870, 1
  store i32 %5871, ptr %56, align 4, !tbaa !9
  br label %5814, !llvm.loop !64

5872:                                             ; preds = %5814
  %5873 = load i32, ptr %55, align 4, !tbaa !9
  %5874 = load i32, ptr %78, align 4, !tbaa !9
  %5875 = add nsw i32 %5873, %5874
  store i32 %5875, ptr %37, align 4, !tbaa !9
  %5876 = load i32, ptr %55, align 4, !tbaa !9
  %5877 = add nsw i32 %5876, 1
  store i32 %5877, ptr %57, align 4, !tbaa !9
  br label %5878

5878:                                             ; preds = %6333, %5872
  %5879 = load i32, ptr %57, align 4, !tbaa !9
  %5880 = load i32, ptr %37, align 4, !tbaa !9
  %5881 = icmp sle i32 %5879, %5880
  br i1 %5881, label %5882, label %6336

5882:                                             ; preds = %5878
  %5883 = load i32, ptr %55, align 4, !tbaa !9
  %5884 = load i32, ptr %78, align 4, !tbaa !9
  %5885 = add nsw i32 %5883, %5884
  store i32 %5885, ptr %38, align 4, !tbaa !9
  %5886 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %5886, ptr %56, align 4, !tbaa !9
  br label %5887

5887:                                             ; preds = %6182, %5882
  %5888 = load i32, ptr %56, align 4, !tbaa !9
  %5889 = load i32, ptr %38, align 4, !tbaa !9
  %5890 = icmp sle i32 %5888, %5889
  br i1 %5890, label %5891, label %6185

5891:                                             ; preds = %5887
  %5892 = load i32, ptr %57, align 4, !tbaa !9
  %5893 = load i32, ptr %56, align 4, !tbaa !9
  %5894 = sub nsw i32 %5892, %5893
  %5895 = load i32, ptr %72, align 4, !tbaa !9
  %5896 = add nsw i32 %5894, %5895
  %5897 = load i32, ptr %56, align 4, !tbaa !9
  %5898 = load i32, ptr %29, align 4, !tbaa !9
  %5899 = mul nsw i32 %5897, %5898
  %5900 = add nsw i32 %5896, %5899
  store i32 %5900, ptr %35, align 4, !tbaa !9
  %5901 = load i32, ptr %57, align 4, !tbaa !9
  %5902 = load i32, ptr %56, align 4, !tbaa !9
  %5903 = sub nsw i32 %5901, %5902
  %5904 = load i32, ptr %72, align 4, !tbaa !9
  %5905 = add nsw i32 %5903, %5904
  %5906 = load i32, ptr %56, align 4, !tbaa !9
  %5907 = load i32, ptr %29, align 4, !tbaa !9
  %5908 = mul nsw i32 %5906, %5907
  %5909 = add nsw i32 %5905, %5908
  store i32 %5909, ptr %36, align 4, !tbaa !9
  %5910 = load i32, ptr %55, align 4, !tbaa !9
  %5911 = load i32, ptr %56, align 4, !tbaa !9
  %5912 = sub nsw i32 %5910, %5911
  %5913 = load i32, ptr %73, align 4, !tbaa !9
  %5914 = add nsw i32 %5912, %5913
  %5915 = load i32, ptr %56, align 4, !tbaa !9
  %5916 = load i32, ptr %31, align 4, !tbaa !9
  %5917 = mul nsw i32 %5915, %5916
  %5918 = add nsw i32 %5914, %5917
  store i32 %5918, ptr %39, align 4, !tbaa !9
  %5919 = load ptr, ptr %20, align 8, !tbaa !5
  %5920 = load i32, ptr %55, align 4, !tbaa !9
  %5921 = load i32, ptr %57, align 4, !tbaa !9
  %5922 = sub nsw i32 %5920, %5921
  %5923 = load i32, ptr %72, align 4, !tbaa !9
  %5924 = add nsw i32 %5922, %5923
  %5925 = load i32, ptr %57, align 4, !tbaa !9
  %5926 = load i32, ptr %29, align 4, !tbaa !9
  %5927 = mul nsw i32 %5925, %5926
  %5928 = add nsw i32 %5924, %5927
  %5929 = sext i32 %5928 to i64
  %5930 = getelementptr inbounds %struct.doublecomplex, ptr %5919, i64 %5929
  %5931 = call { double, double } @Cd(ptr noundef %5930)
  %5932 = extractvalue { double, double } %5931, 0
  %5933 = extractvalue { double, double } %5931, 1
  %5934 = fneg double %5933
  %5935 = call ptr @_pCd(ptr noundef %48)
  %5936 = getelementptr inbounds { double, double }, ptr %5935, i32 0, i32 0
  %5937 = getelementptr inbounds { double, double }, ptr %5935, i32 0, i32 1
  store double %5932, ptr %5936, align 8
  store double %5934, ptr %5937, align 8
  %5938 = load ptr, ptr %22, align 8, !tbaa !5
  %5939 = load i32, ptr %39, align 4, !tbaa !9
  %5940 = sext i32 %5939 to i64
  %5941 = getelementptr inbounds %struct.doublecomplex, ptr %5938, i64 %5940
  %5942 = getelementptr inbounds %struct.doublecomplex, ptr %5941, i32 0, i32 0
  %5943 = load double, ptr %5942, align 8, !tbaa !11
  %5944 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %5945 = load double, ptr %5944, align 8, !tbaa !11
  %5946 = load ptr, ptr %22, align 8, !tbaa !5
  %5947 = load i32, ptr %39, align 4, !tbaa !9
  %5948 = sext i32 %5947 to i64
  %5949 = getelementptr inbounds %struct.doublecomplex, ptr %5946, i64 %5948
  %5950 = getelementptr inbounds %struct.doublecomplex, ptr %5949, i32 0, i32 1
  %5951 = load double, ptr %5950, align 8, !tbaa !15
  %5952 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %5953 = load double, ptr %5952, align 8, !tbaa !15
  %5954 = fmul double %5951, %5953
  %5955 = fneg double %5954
  %5956 = call double @llvm.fmuladd.f64(double %5943, double %5945, double %5955)
  %5957 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %5956, ptr %5957, align 8, !tbaa !11
  %5958 = load ptr, ptr %22, align 8, !tbaa !5
  %5959 = load i32, ptr %39, align 4, !tbaa !9
  %5960 = sext i32 %5959 to i64
  %5961 = getelementptr inbounds %struct.doublecomplex, ptr %5958, i64 %5960
  %5962 = getelementptr inbounds %struct.doublecomplex, ptr %5961, i32 0, i32 0
  %5963 = load double, ptr %5962, align 8, !tbaa !11
  %5964 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %5965 = load double, ptr %5964, align 8, !tbaa !15
  %5966 = load ptr, ptr %22, align 8, !tbaa !5
  %5967 = load i32, ptr %39, align 4, !tbaa !9
  %5968 = sext i32 %5967 to i64
  %5969 = getelementptr inbounds %struct.doublecomplex, ptr %5966, i64 %5968
  %5970 = getelementptr inbounds %struct.doublecomplex, ptr %5969, i32 0, i32 1
  %5971 = load double, ptr %5970, align 8, !tbaa !15
  %5972 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %5973 = load double, ptr %5972, align 8, !tbaa !11
  %5974 = fmul double %5971, %5973
  %5975 = call double @llvm.fmuladd.f64(double %5963, double %5965, double %5974)
  %5976 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %5975, ptr %5976, align 8, !tbaa !15
  %5977 = load ptr, ptr %20, align 8, !tbaa !5
  %5978 = load i32, ptr %36, align 4, !tbaa !9
  %5979 = sext i32 %5978 to i64
  %5980 = getelementptr inbounds %struct.doublecomplex, ptr %5977, i64 %5979
  %5981 = getelementptr inbounds %struct.doublecomplex, ptr %5980, i32 0, i32 0
  %5982 = load double, ptr %5981, align 8, !tbaa !11
  %5983 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %5984 = load double, ptr %5983, align 8, !tbaa !11
  %5985 = fsub double %5982, %5984
  %5986 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %5985, ptr %5986, align 8, !tbaa !11
  %5987 = load ptr, ptr %20, align 8, !tbaa !5
  %5988 = load i32, ptr %36, align 4, !tbaa !9
  %5989 = sext i32 %5988 to i64
  %5990 = getelementptr inbounds %struct.doublecomplex, ptr %5987, i64 %5989
  %5991 = getelementptr inbounds %struct.doublecomplex, ptr %5990, i32 0, i32 1
  %5992 = load double, ptr %5991, align 8, !tbaa !15
  %5993 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %5994 = load double, ptr %5993, align 8, !tbaa !15
  %5995 = fsub double %5992, %5994
  %5996 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %5995, ptr %5996, align 8, !tbaa !15
  %5997 = load ptr, ptr %22, align 8, !tbaa !5
  %5998 = load i32, ptr %55, align 4, !tbaa !9
  %5999 = load i32, ptr %57, align 4, !tbaa !9
  %6000 = sub nsw i32 %5998, %5999
  %6001 = load i32, ptr %73, align 4, !tbaa !9
  %6002 = add nsw i32 %6000, %6001
  %6003 = load i32, ptr %57, align 4, !tbaa !9
  %6004 = load i32, ptr %31, align 4, !tbaa !9
  %6005 = mul nsw i32 %6003, %6004
  %6006 = add nsw i32 %6002, %6005
  %6007 = sext i32 %6006 to i64
  %6008 = getelementptr inbounds %struct.doublecomplex, ptr %5997, i64 %6007
  %6009 = call { double, double } @Cd(ptr noundef %6008)
  %6010 = extractvalue { double, double } %6009, 0
  %6011 = extractvalue { double, double } %6009, 1
  %6012 = fneg double %6011
  %6013 = call ptr @_pCd(ptr noundef %50)
  %6014 = getelementptr inbounds { double, double }, ptr %6013, i32 0, i32 0
  %6015 = getelementptr inbounds { double, double }, ptr %6013, i32 0, i32 1
  store double %6010, ptr %6014, align 8
  store double %6012, ptr %6015, align 8
  %6016 = load i32, ptr %55, align 4, !tbaa !9
  %6017 = load i32, ptr %56, align 4, !tbaa !9
  %6018 = sub nsw i32 %6016, %6017
  %6019 = load i32, ptr %72, align 4, !tbaa !9
  %6020 = add nsw i32 %6018, %6019
  %6021 = load i32, ptr %56, align 4, !tbaa !9
  %6022 = load i32, ptr %29, align 4, !tbaa !9
  %6023 = mul nsw i32 %6021, %6022
  %6024 = add nsw i32 %6020, %6023
  store i32 %6024, ptr %40, align 4, !tbaa !9
  %6025 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %6026 = load double, ptr %6025, align 8, !tbaa !11
  %6027 = load ptr, ptr %20, align 8, !tbaa !5
  %6028 = load i32, ptr %40, align 4, !tbaa !9
  %6029 = sext i32 %6028 to i64
  %6030 = getelementptr inbounds %struct.doublecomplex, ptr %6027, i64 %6029
  %6031 = getelementptr inbounds %struct.doublecomplex, ptr %6030, i32 0, i32 0
  %6032 = load double, ptr %6031, align 8, !tbaa !11
  %6033 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %6034 = load double, ptr %6033, align 8, !tbaa !15
  %6035 = load ptr, ptr %20, align 8, !tbaa !5
  %6036 = load i32, ptr %40, align 4, !tbaa !9
  %6037 = sext i32 %6036 to i64
  %6038 = getelementptr inbounds %struct.doublecomplex, ptr %6035, i64 %6037
  %6039 = getelementptr inbounds %struct.doublecomplex, ptr %6038, i32 0, i32 1
  %6040 = load double, ptr %6039, align 8, !tbaa !15
  %6041 = fmul double %6034, %6040
  %6042 = fneg double %6041
  %6043 = call double @llvm.fmuladd.f64(double %6026, double %6032, double %6042)
  %6044 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %6043, ptr %6044, align 8, !tbaa !11
  %6045 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %6046 = load double, ptr %6045, align 8, !tbaa !11
  %6047 = load ptr, ptr %20, align 8, !tbaa !5
  %6048 = load i32, ptr %40, align 4, !tbaa !9
  %6049 = sext i32 %6048 to i64
  %6050 = getelementptr inbounds %struct.doublecomplex, ptr %6047, i64 %6049
  %6051 = getelementptr inbounds %struct.doublecomplex, ptr %6050, i32 0, i32 1
  %6052 = load double, ptr %6051, align 8, !tbaa !15
  %6053 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %6054 = load double, ptr %6053, align 8, !tbaa !15
  %6055 = load ptr, ptr %20, align 8, !tbaa !5
  %6056 = load i32, ptr %40, align 4, !tbaa !9
  %6057 = sext i32 %6056 to i64
  %6058 = getelementptr inbounds %struct.doublecomplex, ptr %6055, i64 %6057
  %6059 = getelementptr inbounds %struct.doublecomplex, ptr %6058, i32 0, i32 0
  %6060 = load double, ptr %6059, align 8, !tbaa !11
  %6061 = fmul double %6054, %6060
  %6062 = call double @llvm.fmuladd.f64(double %6046, double %6052, double %6061)
  %6063 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %6062, ptr %6063, align 8, !tbaa !15
  %6064 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %6065 = load double, ptr %6064, align 8, !tbaa !11
  %6066 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %6067 = load double, ptr %6066, align 8, !tbaa !11
  %6068 = fsub double %6065, %6067
  %6069 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %6068, ptr %6069, align 8, !tbaa !11
  %6070 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %6071 = load double, ptr %6070, align 8, !tbaa !15
  %6072 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %6073 = load double, ptr %6072, align 8, !tbaa !15
  %6074 = fsub double %6071, %6073
  %6075 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %6074, ptr %6075, align 8, !tbaa !15
  %6076 = load i32, ptr %72, align 4, !tbaa !9
  %6077 = load i32, ptr %55, align 4, !tbaa !9
  %6078 = load i32, ptr %29, align 4, !tbaa !9
  %6079 = mul nsw i32 %6077, %6078
  %6080 = add nsw i32 %6076, %6079
  store i32 %6080, ptr %41, align 4, !tbaa !9
  %6081 = load ptr, ptr %20, align 8, !tbaa !5
  %6082 = load i32, ptr %41, align 4, !tbaa !9
  %6083 = sext i32 %6082 to i64
  %6084 = getelementptr inbounds %struct.doublecomplex, ptr %6081, i64 %6083
  %6085 = getelementptr inbounds %struct.doublecomplex, ptr %6084, i32 0, i32 0
  %6086 = load double, ptr %6085, align 8, !tbaa !11
  store double %6086, ptr %43, align 8, !tbaa !14
  %6087 = load i32, ptr %55, align 4, !tbaa !9
  %6088 = load i32, ptr %56, align 4, !tbaa !9
  %6089 = sub nsw i32 %6087, %6088
  %6090 = load i32, ptr %73, align 4, !tbaa !9
  %6091 = add nsw i32 %6089, %6090
  %6092 = load i32, ptr %56, align 4, !tbaa !9
  %6093 = load i32, ptr %31, align 4, !tbaa !9
  %6094 = mul nsw i32 %6092, %6093
  %6095 = add nsw i32 %6091, %6094
  store i32 %6095, ptr %42, align 4, !tbaa !9
  %6096 = load double, ptr %43, align 8, !tbaa !14
  %6097 = load ptr, ptr %22, align 8, !tbaa !5
  %6098 = load i32, ptr %42, align 4, !tbaa !9
  %6099 = sext i32 %6098 to i64
  %6100 = getelementptr inbounds %struct.doublecomplex, ptr %6097, i64 %6099
  %6101 = getelementptr inbounds %struct.doublecomplex, ptr %6100, i32 0, i32 0
  %6102 = load double, ptr %6101, align 8, !tbaa !11
  %6103 = fmul double %6096, %6102
  %6104 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %6103, ptr %6104, align 8, !tbaa !11
  %6105 = load double, ptr %43, align 8, !tbaa !14
  %6106 = load ptr, ptr %22, align 8, !tbaa !5
  %6107 = load i32, ptr %42, align 4, !tbaa !9
  %6108 = sext i32 %6107 to i64
  %6109 = getelementptr inbounds %struct.doublecomplex, ptr %6106, i64 %6108
  %6110 = getelementptr inbounds %struct.doublecomplex, ptr %6109, i32 0, i32 1
  %6111 = load double, ptr %6110, align 8, !tbaa !15
  %6112 = fmul double %6105, %6111
  %6113 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %6112, ptr %6113, align 8, !tbaa !15
  %6114 = load ptr, ptr %22, align 8, !tbaa !5
  %6115 = load i32, ptr %55, align 4, !tbaa !9
  %6116 = load i32, ptr %57, align 4, !tbaa !9
  %6117 = sub nsw i32 %6115, %6116
  %6118 = load i32, ptr %73, align 4, !tbaa !9
  %6119 = add nsw i32 %6117, %6118
  %6120 = load i32, ptr %57, align 4, !tbaa !9
  %6121 = load i32, ptr %31, align 4, !tbaa !9
  %6122 = mul nsw i32 %6120, %6121
  %6123 = add nsw i32 %6119, %6122
  %6124 = sext i32 %6123 to i64
  %6125 = getelementptr inbounds %struct.doublecomplex, ptr %6114, i64 %6124
  %6126 = call { double, double } @Cd(ptr noundef %6125)
  %6127 = extractvalue { double, double } %6126, 0
  %6128 = extractvalue { double, double } %6126, 1
  %6129 = fneg double %6128
  %6130 = call ptr @_pCd(ptr noundef %53)
  %6131 = getelementptr inbounds { double, double }, ptr %6130, i32 0, i32 0
  %6132 = getelementptr inbounds { double, double }, ptr %6130, i32 0, i32 1
  store double %6127, ptr %6131, align 8
  store double %6129, ptr %6132, align 8
  %6133 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %6134 = load double, ptr %6133, align 8, !tbaa !11
  %6135 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %6136 = load double, ptr %6135, align 8, !tbaa !11
  %6137 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %6138 = load double, ptr %6137, align 8, !tbaa !15
  %6139 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %6140 = load double, ptr %6139, align 8, !tbaa !15
  %6141 = fmul double %6138, %6140
  %6142 = fneg double %6141
  %6143 = call double @llvm.fmuladd.f64(double %6134, double %6136, double %6142)
  %6144 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %6143, ptr %6144, align 8, !tbaa !11
  %6145 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %6146 = load double, ptr %6145, align 8, !tbaa !11
  %6147 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %6148 = load double, ptr %6147, align 8, !tbaa !15
  %6149 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %6150 = load double, ptr %6149, align 8, !tbaa !15
  %6151 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %6152 = load double, ptr %6151, align 8, !tbaa !11
  %6153 = fmul double %6150, %6152
  %6154 = call double @llvm.fmuladd.f64(double %6146, double %6148, double %6153)
  %6155 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %6154, ptr %6155, align 8, !tbaa !15
  %6156 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6157 = load double, ptr %6156, align 8, !tbaa !11
  %6158 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %6159 = load double, ptr %6158, align 8, !tbaa !11
  %6160 = fadd double %6157, %6159
  %6161 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %6160, ptr %6161, align 8, !tbaa !11
  %6162 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6163 = load double, ptr %6162, align 8, !tbaa !15
  %6164 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %6165 = load double, ptr %6164, align 8, !tbaa !15
  %6166 = fadd double %6163, %6165
  %6167 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %6166, ptr %6167, align 8, !tbaa !15
  %6168 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %6169 = load double, ptr %6168, align 8, !tbaa !11
  %6170 = load ptr, ptr %20, align 8, !tbaa !5
  %6171 = load i32, ptr %35, align 4, !tbaa !9
  %6172 = sext i32 %6171 to i64
  %6173 = getelementptr inbounds %struct.doublecomplex, ptr %6170, i64 %6172
  %6174 = getelementptr inbounds %struct.doublecomplex, ptr %6173, i32 0, i32 0
  store double %6169, ptr %6174, align 8, !tbaa !11
  %6175 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %6176 = load double, ptr %6175, align 8, !tbaa !15
  %6177 = load ptr, ptr %20, align 8, !tbaa !5
  %6178 = load i32, ptr %35, align 4, !tbaa !9
  %6179 = sext i32 %6178 to i64
  %6180 = getelementptr inbounds %struct.doublecomplex, ptr %6177, i64 %6179
  %6181 = getelementptr inbounds %struct.doublecomplex, ptr %6180, i32 0, i32 1
  store double %6176, ptr %6181, align 8, !tbaa !15
  br label %6182

6182:                                             ; preds = %5891
  %6183 = load i32, ptr %56, align 4, !tbaa !9
  %6184 = add nsw i32 %6183, 1
  store i32 %6184, ptr %56, align 4, !tbaa !9
  br label %5887, !llvm.loop !65

6185:                                             ; preds = %5887
  %6186 = load ptr, ptr %17, align 8, !tbaa !5
  %6187 = load i32, ptr %6186, align 4, !tbaa !9
  store i32 %6187, ptr %35, align 4, !tbaa !9
  %6188 = load i32, ptr %55, align 4, !tbaa !9
  %6189 = load ptr, ptr %18, align 8, !tbaa !5
  %6190 = load i32, ptr %6189, align 4, !tbaa !9
  %6191 = add nsw i32 %6188, %6190
  store i32 %6191, ptr %36, align 4, !tbaa !9
  %6192 = load i32, ptr %35, align 4, !tbaa !9
  %6193 = load i32, ptr %36, align 4, !tbaa !9
  %6194 = icmp sle i32 %6192, %6193
  br i1 %6194, label %6195, label %6197

6195:                                             ; preds = %6185
  %6196 = load i32, ptr %35, align 4, !tbaa !9
  br label %6199

6197:                                             ; preds = %6185
  %6198 = load i32, ptr %36, align 4, !tbaa !9
  br label %6199

6199:                                             ; preds = %6197, %6195
  %6200 = phi i32 [ %6196, %6195 ], [ %6198, %6197 ]
  store i32 %6200, ptr %38, align 4, !tbaa !9
  %6201 = load i32, ptr %55, align 4, !tbaa !9
  %6202 = load i32, ptr %78, align 4, !tbaa !9
  %6203 = add nsw i32 %6201, %6202
  %6204 = add nsw i32 %6203, 1
  store i32 %6204, ptr %56, align 4, !tbaa !9
  br label %6205

6205:                                             ; preds = %6329, %6199
  %6206 = load i32, ptr %56, align 4, !tbaa !9
  %6207 = load i32, ptr %38, align 4, !tbaa !9
  %6208 = icmp sle i32 %6206, %6207
  br i1 %6208, label %6209, label %6332

6209:                                             ; preds = %6205
  %6210 = load i32, ptr %57, align 4, !tbaa !9
  %6211 = load i32, ptr %56, align 4, !tbaa !9
  %6212 = sub nsw i32 %6210, %6211
  %6213 = load i32, ptr %72, align 4, !tbaa !9
  %6214 = add nsw i32 %6212, %6213
  %6215 = load i32, ptr %56, align 4, !tbaa !9
  %6216 = load i32, ptr %29, align 4, !tbaa !9
  %6217 = mul nsw i32 %6215, %6216
  %6218 = add nsw i32 %6214, %6217
  store i32 %6218, ptr %35, align 4, !tbaa !9
  %6219 = load i32, ptr %57, align 4, !tbaa !9
  %6220 = load i32, ptr %56, align 4, !tbaa !9
  %6221 = sub nsw i32 %6219, %6220
  %6222 = load i32, ptr %72, align 4, !tbaa !9
  %6223 = add nsw i32 %6221, %6222
  %6224 = load i32, ptr %56, align 4, !tbaa !9
  %6225 = load i32, ptr %29, align 4, !tbaa !9
  %6226 = mul nsw i32 %6224, %6225
  %6227 = add nsw i32 %6223, %6226
  store i32 %6227, ptr %36, align 4, !tbaa !9
  %6228 = load ptr, ptr %22, align 8, !tbaa !5
  %6229 = load i32, ptr %55, align 4, !tbaa !9
  %6230 = load i32, ptr %57, align 4, !tbaa !9
  %6231 = sub nsw i32 %6229, %6230
  %6232 = load i32, ptr %73, align 4, !tbaa !9
  %6233 = add nsw i32 %6231, %6232
  %6234 = load i32, ptr %57, align 4, !tbaa !9
  %6235 = load i32, ptr %31, align 4, !tbaa !9
  %6236 = mul nsw i32 %6234, %6235
  %6237 = add nsw i32 %6233, %6236
  %6238 = sext i32 %6237 to i64
  %6239 = getelementptr inbounds %struct.doublecomplex, ptr %6228, i64 %6238
  %6240 = call { double, double } @Cd(ptr noundef %6239)
  %6241 = extractvalue { double, double } %6240, 0
  %6242 = extractvalue { double, double } %6240, 1
  %6243 = fneg double %6242
  %6244 = call ptr @_pCd(ptr noundef %46)
  %6245 = getelementptr inbounds { double, double }, ptr %6244, i32 0, i32 0
  %6246 = getelementptr inbounds { double, double }, ptr %6244, i32 0, i32 1
  store double %6241, ptr %6245, align 8
  store double %6243, ptr %6246, align 8
  %6247 = load i32, ptr %55, align 4, !tbaa !9
  %6248 = load i32, ptr %56, align 4, !tbaa !9
  %6249 = sub nsw i32 %6247, %6248
  %6250 = load i32, ptr %72, align 4, !tbaa !9
  %6251 = add nsw i32 %6249, %6250
  %6252 = load i32, ptr %56, align 4, !tbaa !9
  %6253 = load i32, ptr %29, align 4, !tbaa !9
  %6254 = mul nsw i32 %6252, %6253
  %6255 = add nsw i32 %6251, %6254
  store i32 %6255, ptr %39, align 4, !tbaa !9
  %6256 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %6257 = load double, ptr %6256, align 8, !tbaa !11
  %6258 = load ptr, ptr %20, align 8, !tbaa !5
  %6259 = load i32, ptr %39, align 4, !tbaa !9
  %6260 = sext i32 %6259 to i64
  %6261 = getelementptr inbounds %struct.doublecomplex, ptr %6258, i64 %6260
  %6262 = getelementptr inbounds %struct.doublecomplex, ptr %6261, i32 0, i32 0
  %6263 = load double, ptr %6262, align 8, !tbaa !11
  %6264 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %6265 = load double, ptr %6264, align 8, !tbaa !15
  %6266 = load ptr, ptr %20, align 8, !tbaa !5
  %6267 = load i32, ptr %39, align 4, !tbaa !9
  %6268 = sext i32 %6267 to i64
  %6269 = getelementptr inbounds %struct.doublecomplex, ptr %6266, i64 %6268
  %6270 = getelementptr inbounds %struct.doublecomplex, ptr %6269, i32 0, i32 1
  %6271 = load double, ptr %6270, align 8, !tbaa !15
  %6272 = fmul double %6265, %6271
  %6273 = fneg double %6272
  %6274 = call double @llvm.fmuladd.f64(double %6257, double %6263, double %6273)
  %6275 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %6274, ptr %6275, align 8, !tbaa !11
  %6276 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %6277 = load double, ptr %6276, align 8, !tbaa !11
  %6278 = load ptr, ptr %20, align 8, !tbaa !5
  %6279 = load i32, ptr %39, align 4, !tbaa !9
  %6280 = sext i32 %6279 to i64
  %6281 = getelementptr inbounds %struct.doublecomplex, ptr %6278, i64 %6280
  %6282 = getelementptr inbounds %struct.doublecomplex, ptr %6281, i32 0, i32 1
  %6283 = load double, ptr %6282, align 8, !tbaa !15
  %6284 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %6285 = load double, ptr %6284, align 8, !tbaa !15
  %6286 = load ptr, ptr %20, align 8, !tbaa !5
  %6287 = load i32, ptr %39, align 4, !tbaa !9
  %6288 = sext i32 %6287 to i64
  %6289 = getelementptr inbounds %struct.doublecomplex, ptr %6286, i64 %6288
  %6290 = getelementptr inbounds %struct.doublecomplex, ptr %6289, i32 0, i32 0
  %6291 = load double, ptr %6290, align 8, !tbaa !11
  %6292 = fmul double %6285, %6291
  %6293 = call double @llvm.fmuladd.f64(double %6277, double %6283, double %6292)
  %6294 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %6293, ptr %6294, align 8, !tbaa !15
  %6295 = load ptr, ptr %20, align 8, !tbaa !5
  %6296 = load i32, ptr %36, align 4, !tbaa !9
  %6297 = sext i32 %6296 to i64
  %6298 = getelementptr inbounds %struct.doublecomplex, ptr %6295, i64 %6297
  %6299 = getelementptr inbounds %struct.doublecomplex, ptr %6298, i32 0, i32 0
  %6300 = load double, ptr %6299, align 8, !tbaa !11
  %6301 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6302 = load double, ptr %6301, align 8, !tbaa !11
  %6303 = fsub double %6300, %6302
  %6304 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %6303, ptr %6304, align 8, !tbaa !11
  %6305 = load ptr, ptr %20, align 8, !tbaa !5
  %6306 = load i32, ptr %36, align 4, !tbaa !9
  %6307 = sext i32 %6306 to i64
  %6308 = getelementptr inbounds %struct.doublecomplex, ptr %6305, i64 %6307
  %6309 = getelementptr inbounds %struct.doublecomplex, ptr %6308, i32 0, i32 1
  %6310 = load double, ptr %6309, align 8, !tbaa !15
  %6311 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6312 = load double, ptr %6311, align 8, !tbaa !15
  %6313 = fsub double %6310, %6312
  %6314 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %6313, ptr %6314, align 8, !tbaa !15
  %6315 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %6316 = load double, ptr %6315, align 8, !tbaa !11
  %6317 = load ptr, ptr %20, align 8, !tbaa !5
  %6318 = load i32, ptr %35, align 4, !tbaa !9
  %6319 = sext i32 %6318 to i64
  %6320 = getelementptr inbounds %struct.doublecomplex, ptr %6317, i64 %6319
  %6321 = getelementptr inbounds %struct.doublecomplex, ptr %6320, i32 0, i32 0
  store double %6316, ptr %6321, align 8, !tbaa !11
  %6322 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %6323 = load double, ptr %6322, align 8, !tbaa !15
  %6324 = load ptr, ptr %20, align 8, !tbaa !5
  %6325 = load i32, ptr %35, align 4, !tbaa !9
  %6326 = sext i32 %6325 to i64
  %6327 = getelementptr inbounds %struct.doublecomplex, ptr %6324, i64 %6326
  %6328 = getelementptr inbounds %struct.doublecomplex, ptr %6327, i32 0, i32 1
  store double %6323, ptr %6328, align 8, !tbaa !15
  br label %6329

6329:                                             ; preds = %6209
  %6330 = load i32, ptr %56, align 4, !tbaa !9
  %6331 = add nsw i32 %6330, 1
  store i32 %6331, ptr %56, align 4, !tbaa !9
  br label %6205, !llvm.loop !66

6332:                                             ; preds = %6205
  br label %6333

6333:                                             ; preds = %6332
  %6334 = load i32, ptr %57, align 4, !tbaa !9
  %6335 = add nsw i32 %6334, 1
  store i32 %6335, ptr %57, align 4, !tbaa !9
  br label %5878, !llvm.loop !67

6336:                                             ; preds = %5878
  %6337 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %6337, ptr %37, align 4, !tbaa !9
  %6338 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %6338, ptr %56, align 4, !tbaa !9
  br label %6339

6339:                                             ; preds = %6496, %6336
  %6340 = load i32, ptr %56, align 4, !tbaa !9
  %6341 = load i32, ptr %37, align 4, !tbaa !9
  %6342 = icmp sle i32 %6340, %6341
  br i1 %6342, label %6343, label %6499

6343:                                             ; preds = %6339
  %6344 = load i32, ptr %56, align 4, !tbaa !9
  %6345 = load ptr, ptr %18, align 8, !tbaa !5
  %6346 = load i32, ptr %6345, align 4, !tbaa !9
  %6347 = add nsw i32 %6344, %6346
  store i32 %6347, ptr %35, align 4, !tbaa !9
  %6348 = load i32, ptr %55, align 4, !tbaa !9
  %6349 = load i32, ptr %78, align 4, !tbaa !9
  %6350 = add nsw i32 %6348, %6349
  store i32 %6350, ptr %36, align 4, !tbaa !9
  %6351 = load i32, ptr %35, align 4, !tbaa !9
  %6352 = load i32, ptr %36, align 4, !tbaa !9
  %6353 = icmp sle i32 %6351, %6352
  br i1 %6353, label %6354, label %6356

6354:                                             ; preds = %6343
  %6355 = load i32, ptr %35, align 4, !tbaa !9
  br label %6358

6356:                                             ; preds = %6343
  %6357 = load i32, ptr %36, align 4, !tbaa !9
  br label %6358

6358:                                             ; preds = %6356, %6354
  %6359 = phi i32 [ %6355, %6354 ], [ %6357, %6356 ]
  store i32 %6359, ptr %38, align 4, !tbaa !9
  %6360 = load i32, ptr %55, align 4, !tbaa !9
  %6361 = add nsw i32 %6360, 1
  store i32 %6361, ptr %57, align 4, !tbaa !9
  br label %6362

6362:                                             ; preds = %6492, %6358
  %6363 = load i32, ptr %57, align 4, !tbaa !9
  %6364 = load i32, ptr %38, align 4, !tbaa !9
  %6365 = icmp sle i32 %6363, %6364
  br i1 %6365, label %6366, label %6495

6366:                                             ; preds = %6362
  %6367 = load i32, ptr %56, align 4, !tbaa !9
  %6368 = load i32, ptr %57, align 4, !tbaa !9
  %6369 = sub nsw i32 %6367, %6368
  %6370 = load i32, ptr %72, align 4, !tbaa !9
  %6371 = add nsw i32 %6369, %6370
  %6372 = load i32, ptr %57, align 4, !tbaa !9
  %6373 = load i32, ptr %29, align 4, !tbaa !9
  %6374 = mul nsw i32 %6372, %6373
  %6375 = add nsw i32 %6371, %6374
  store i32 %6375, ptr %35, align 4, !tbaa !9
  %6376 = load i32, ptr %56, align 4, !tbaa !9
  %6377 = load i32, ptr %57, align 4, !tbaa !9
  %6378 = sub nsw i32 %6376, %6377
  %6379 = load i32, ptr %72, align 4, !tbaa !9
  %6380 = add nsw i32 %6378, %6379
  %6381 = load i32, ptr %57, align 4, !tbaa !9
  %6382 = load i32, ptr %29, align 4, !tbaa !9
  %6383 = mul nsw i32 %6381, %6382
  %6384 = add nsw i32 %6380, %6383
  store i32 %6384, ptr %36, align 4, !tbaa !9
  %6385 = load i32, ptr %55, align 4, !tbaa !9
  %6386 = load i32, ptr %57, align 4, !tbaa !9
  %6387 = sub nsw i32 %6385, %6386
  %6388 = load i32, ptr %73, align 4, !tbaa !9
  %6389 = add nsw i32 %6387, %6388
  %6390 = load i32, ptr %57, align 4, !tbaa !9
  %6391 = load i32, ptr %31, align 4, !tbaa !9
  %6392 = mul nsw i32 %6390, %6391
  %6393 = add nsw i32 %6389, %6392
  store i32 %6393, ptr %39, align 4, !tbaa !9
  %6394 = load i32, ptr %56, align 4, !tbaa !9
  %6395 = load i32, ptr %55, align 4, !tbaa !9
  %6396 = sub nsw i32 %6394, %6395
  %6397 = load i32, ptr %72, align 4, !tbaa !9
  %6398 = add nsw i32 %6396, %6397
  %6399 = load i32, ptr %55, align 4, !tbaa !9
  %6400 = load i32, ptr %29, align 4, !tbaa !9
  %6401 = mul nsw i32 %6399, %6400
  %6402 = add nsw i32 %6398, %6401
  store i32 %6402, ptr %40, align 4, !tbaa !9
  %6403 = load ptr, ptr %22, align 8, !tbaa !5
  %6404 = load i32, ptr %39, align 4, !tbaa !9
  %6405 = sext i32 %6404 to i64
  %6406 = getelementptr inbounds %struct.doublecomplex, ptr %6403, i64 %6405
  %6407 = getelementptr inbounds %struct.doublecomplex, ptr %6406, i32 0, i32 0
  %6408 = load double, ptr %6407, align 8, !tbaa !11
  %6409 = load ptr, ptr %20, align 8, !tbaa !5
  %6410 = load i32, ptr %40, align 4, !tbaa !9
  %6411 = sext i32 %6410 to i64
  %6412 = getelementptr inbounds %struct.doublecomplex, ptr %6409, i64 %6411
  %6413 = getelementptr inbounds %struct.doublecomplex, ptr %6412, i32 0, i32 0
  %6414 = load double, ptr %6413, align 8, !tbaa !11
  %6415 = load ptr, ptr %22, align 8, !tbaa !5
  %6416 = load i32, ptr %39, align 4, !tbaa !9
  %6417 = sext i32 %6416 to i64
  %6418 = getelementptr inbounds %struct.doublecomplex, ptr %6415, i64 %6417
  %6419 = getelementptr inbounds %struct.doublecomplex, ptr %6418, i32 0, i32 1
  %6420 = load double, ptr %6419, align 8, !tbaa !15
  %6421 = load ptr, ptr %20, align 8, !tbaa !5
  %6422 = load i32, ptr %40, align 4, !tbaa !9
  %6423 = sext i32 %6422 to i64
  %6424 = getelementptr inbounds %struct.doublecomplex, ptr %6421, i64 %6423
  %6425 = getelementptr inbounds %struct.doublecomplex, ptr %6424, i32 0, i32 1
  %6426 = load double, ptr %6425, align 8, !tbaa !15
  %6427 = fmul double %6420, %6426
  %6428 = fneg double %6427
  %6429 = call double @llvm.fmuladd.f64(double %6408, double %6414, double %6428)
  %6430 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %6429, ptr %6430, align 8, !tbaa !11
  %6431 = load ptr, ptr %22, align 8, !tbaa !5
  %6432 = load i32, ptr %39, align 4, !tbaa !9
  %6433 = sext i32 %6432 to i64
  %6434 = getelementptr inbounds %struct.doublecomplex, ptr %6431, i64 %6433
  %6435 = getelementptr inbounds %struct.doublecomplex, ptr %6434, i32 0, i32 0
  %6436 = load double, ptr %6435, align 8, !tbaa !11
  %6437 = load ptr, ptr %20, align 8, !tbaa !5
  %6438 = load i32, ptr %40, align 4, !tbaa !9
  %6439 = sext i32 %6438 to i64
  %6440 = getelementptr inbounds %struct.doublecomplex, ptr %6437, i64 %6439
  %6441 = getelementptr inbounds %struct.doublecomplex, ptr %6440, i32 0, i32 1
  %6442 = load double, ptr %6441, align 8, !tbaa !15
  %6443 = load ptr, ptr %22, align 8, !tbaa !5
  %6444 = load i32, ptr %39, align 4, !tbaa !9
  %6445 = sext i32 %6444 to i64
  %6446 = getelementptr inbounds %struct.doublecomplex, ptr %6443, i64 %6445
  %6447 = getelementptr inbounds %struct.doublecomplex, ptr %6446, i32 0, i32 1
  %6448 = load double, ptr %6447, align 8, !tbaa !15
  %6449 = load ptr, ptr %20, align 8, !tbaa !5
  %6450 = load i32, ptr %40, align 4, !tbaa !9
  %6451 = sext i32 %6450 to i64
  %6452 = getelementptr inbounds %struct.doublecomplex, ptr %6449, i64 %6451
  %6453 = getelementptr inbounds %struct.doublecomplex, ptr %6452, i32 0, i32 0
  %6454 = load double, ptr %6453, align 8, !tbaa !11
  %6455 = fmul double %6448, %6454
  %6456 = call double @llvm.fmuladd.f64(double %6436, double %6442, double %6455)
  %6457 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %6456, ptr %6457, align 8, !tbaa !15
  %6458 = load ptr, ptr %20, align 8, !tbaa !5
  %6459 = load i32, ptr %36, align 4, !tbaa !9
  %6460 = sext i32 %6459 to i64
  %6461 = getelementptr inbounds %struct.doublecomplex, ptr %6458, i64 %6460
  %6462 = getelementptr inbounds %struct.doublecomplex, ptr %6461, i32 0, i32 0
  %6463 = load double, ptr %6462, align 8, !tbaa !11
  %6464 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6465 = load double, ptr %6464, align 8, !tbaa !11
  %6466 = fsub double %6463, %6465
  %6467 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %6466, ptr %6467, align 8, !tbaa !11
  %6468 = load ptr, ptr %20, align 8, !tbaa !5
  %6469 = load i32, ptr %36, align 4, !tbaa !9
  %6470 = sext i32 %6469 to i64
  %6471 = getelementptr inbounds %struct.doublecomplex, ptr %6468, i64 %6470
  %6472 = getelementptr inbounds %struct.doublecomplex, ptr %6471, i32 0, i32 1
  %6473 = load double, ptr %6472, align 8, !tbaa !15
  %6474 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6475 = load double, ptr %6474, align 8, !tbaa !15
  %6476 = fsub double %6473, %6475
  %6477 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %6476, ptr %6477, align 8, !tbaa !15
  %6478 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %6479 = load double, ptr %6478, align 8, !tbaa !11
  %6480 = load ptr, ptr %20, align 8, !tbaa !5
  %6481 = load i32, ptr %35, align 4, !tbaa !9
  %6482 = sext i32 %6481 to i64
  %6483 = getelementptr inbounds %struct.doublecomplex, ptr %6480, i64 %6482
  %6484 = getelementptr inbounds %struct.doublecomplex, ptr %6483, i32 0, i32 0
  store double %6479, ptr %6484, align 8, !tbaa !11
  %6485 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %6486 = load double, ptr %6485, align 8, !tbaa !15
  %6487 = load ptr, ptr %20, align 8, !tbaa !5
  %6488 = load i32, ptr %35, align 4, !tbaa !9
  %6489 = sext i32 %6488 to i64
  %6490 = getelementptr inbounds %struct.doublecomplex, ptr %6487, i64 %6489
  %6491 = getelementptr inbounds %struct.doublecomplex, ptr %6490, i32 0, i32 1
  store double %6486, ptr %6491, align 8, !tbaa !15
  br label %6492

6492:                                             ; preds = %6366
  %6493 = load i32, ptr %57, align 4, !tbaa !9
  %6494 = add nsw i32 %6493, 1
  store i32 %6494, ptr %57, align 4, !tbaa !9
  br label %6362, !llvm.loop !68

6495:                                             ; preds = %6362
  br label %6496

6496:                                             ; preds = %6495
  %6497 = load i32, ptr %56, align 4, !tbaa !9
  %6498 = add nsw i32 %6497, 1
  store i32 %6498, ptr %56, align 4, !tbaa !9
  br label %6339, !llvm.loop !69

6499:                                             ; preds = %6339
  %6500 = load i32, ptr %67, align 4, !tbaa !9
  %6501 = icmp ne i32 %6500, 0
  br i1 %6501, label %6502, label %6547

6502:                                             ; preds = %6499
  %6503 = load double, ptr %77, align 8, !tbaa !14
  %6504 = fdiv double 1.000000e+00, %6503
  store double %6504, ptr %43, align 8, !tbaa !14
  %6505 = load ptr, ptr %24, align 8, !tbaa !5
  %6506 = load i32, ptr %55, align 4, !tbaa !9
  %6507 = load i32, ptr %33, align 4, !tbaa !9
  %6508 = mul nsw i32 %6506, %6507
  %6509 = add nsw i32 %6508, 1
  %6510 = sext i32 %6509 to i64
  %6511 = getelementptr inbounds %struct.doublecomplex, ptr %6505, i64 %6510
  call void @zdscal_(ptr noundef %70, ptr noundef %43, ptr noundef %6511, ptr noundef @c__1)
  %6512 = load i32, ptr %78, align 4, !tbaa !9
  %6513 = icmp sgt i32 %6512, 0
  br i1 %6513, label %6514, label %6546

6514:                                             ; preds = %6502
  %6515 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double -1.000000e+00, ptr %6515, align 8, !tbaa !11
  %6516 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double 0.000000e+00, ptr %6516, align 8, !tbaa !15
  %6517 = load ptr, ptr %23, align 8, !tbaa !5
  %6518 = load i32, ptr %6517, align 4, !tbaa !9
  %6519 = sub nsw i32 %6518, 1
  store i32 %6519, ptr %37, align 4, !tbaa !9
  %6520 = load ptr, ptr %24, align 8, !tbaa !5
  %6521 = load i32, ptr %55, align 4, !tbaa !9
  %6522 = load i32, ptr %33, align 4, !tbaa !9
  %6523 = mul nsw i32 %6521, %6522
  %6524 = add nsw i32 %6523, 1
  %6525 = sext i32 %6524 to i64
  %6526 = getelementptr inbounds %struct.doublecomplex, ptr %6520, i64 %6525
  %6527 = load ptr, ptr %22, align 8, !tbaa !5
  %6528 = load ptr, ptr %19, align 8, !tbaa !5
  %6529 = load i32, ptr %6528, align 4, !tbaa !9
  %6530 = load i32, ptr %55, align 4, !tbaa !9
  %6531 = add nsw i32 %6530, 1
  %6532 = load i32, ptr %31, align 4, !tbaa !9
  %6533 = mul nsw i32 %6531, %6532
  %6534 = add nsw i32 %6529, %6533
  %6535 = sext i32 %6534 to i64
  %6536 = getelementptr inbounds %struct.doublecomplex, ptr %6527, i64 %6535
  %6537 = load ptr, ptr %24, align 8, !tbaa !5
  %6538 = load i32, ptr %55, align 4, !tbaa !9
  %6539 = add nsw i32 %6538, 1
  %6540 = load i32, ptr %33, align 4, !tbaa !9
  %6541 = mul nsw i32 %6539, %6540
  %6542 = add nsw i32 %6541, 1
  %6543 = sext i32 %6542 to i64
  %6544 = getelementptr inbounds %struct.doublecomplex, ptr %6537, i64 %6543
  %6545 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zgeru_(ptr noundef %70, ptr noundef %78, ptr noundef %44, ptr noundef %6526, ptr noundef @c__1, ptr noundef %6536, ptr noundef %37, ptr noundef %6544, ptr noundef %6545)
  br label %6546

6546:                                             ; preds = %6514, %6502
  br label %6547

6547:                                             ; preds = %6546, %6499
  %6548 = load i32, ptr %62, align 4, !tbaa !9
  %6549 = load i32, ptr %55, align 4, !tbaa !9
  %6550 = sub nsw i32 %6548, %6549
  %6551 = load i32, ptr %72, align 4, !tbaa !9
  %6552 = add nsw i32 %6550, %6551
  %6553 = load i32, ptr %55, align 4, !tbaa !9
  %6554 = load i32, ptr %29, align 4, !tbaa !9
  %6555 = mul nsw i32 %6553, %6554
  %6556 = add nsw i32 %6552, %6555
  store i32 %6556, ptr %37, align 4, !tbaa !9
  %6557 = load ptr, ptr %20, align 8, !tbaa !5
  %6558 = load i32, ptr %37, align 4, !tbaa !9
  %6559 = sext i32 %6558 to i64
  %6560 = getelementptr inbounds %struct.doublecomplex, ptr %6557, i64 %6559
  %6561 = getelementptr inbounds %struct.doublecomplex, ptr %6560, i32 0, i32 0
  %6562 = load double, ptr %6561, align 8, !tbaa !11
  %6563 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %6562, ptr %6563, align 8, !tbaa !11
  %6564 = load ptr, ptr %20, align 8, !tbaa !5
  %6565 = load i32, ptr %37, align 4, !tbaa !9
  %6566 = sext i32 %6565 to i64
  %6567 = getelementptr inbounds %struct.doublecomplex, ptr %6564, i64 %6566
  %6568 = getelementptr inbounds %struct.doublecomplex, ptr %6567, i32 0, i32 1
  %6569 = load double, ptr %6568, align 8, !tbaa !15
  %6570 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %6569, ptr %6570, align 8, !tbaa !15
  br label %6571

6571:                                             ; preds = %6547, %5689
  %6572 = load ptr, ptr %19, align 8, !tbaa !5
  %6573 = load i32, ptr %6572, align 4, !tbaa !9
  %6574 = sub nsw i32 %6573, 1
  store i32 %6574, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %6575

6575:                                             ; preds = %7366, %6571
  %6576 = load i32, ptr %57, align 4, !tbaa !9
  %6577 = load i32, ptr %37, align 4, !tbaa !9
  %6578 = icmp sle i32 %6576, %6577
  br i1 %6578, label %6579, label %7369

6579:                                             ; preds = %6575
  %6580 = load i32, ptr %71, align 4, !tbaa !9
  %6581 = icmp ne i32 %6580, 0
  br i1 %6581, label %6582, label %6918

6582:                                             ; preds = %6579
  %6583 = load i32, ptr %55, align 4, !tbaa !9
  %6584 = load i32, ptr %57, align 4, !tbaa !9
  %6585 = add nsw i32 %6583, %6584
  %6586 = load i32, ptr %72, align 4, !tbaa !9
  %6587 = sub nsw i32 %6585, %6586
  %6588 = icmp sgt i32 %6587, 0
  br i1 %6588, label %6589, label %6917

6589:                                             ; preds = %6582
  %6590 = load i32, ptr %55, align 4, !tbaa !9
  %6591 = load i32, ptr %57, align 4, !tbaa !9
  %6592 = add nsw i32 %6590, %6591
  %6593 = load i32, ptr %59, align 4, !tbaa !9
  %6594 = icmp slt i32 %6592, %6593
  br i1 %6594, label %6595, label %6917

6595:                                             ; preds = %6589
  %6596 = load ptr, ptr %20, align 8, !tbaa !5
  %6597 = load i32, ptr %57, align 4, !tbaa !9
  %6598 = add nsw i32 %6597, 1
  %6599 = load i32, ptr %55, align 4, !tbaa !9
  %6600 = load i32, ptr %29, align 4, !tbaa !9
  %6601 = mul nsw i32 %6599, %6600
  %6602 = add nsw i32 %6598, %6601
  %6603 = sext i32 %6602 to i64
  %6604 = getelementptr inbounds %struct.doublecomplex, ptr %6596, i64 %6603
  %6605 = load ptr, ptr %27, align 8, !tbaa !5
  %6606 = load i32, ptr %55, align 4, !tbaa !9
  %6607 = load i32, ptr %57, align 4, !tbaa !9
  %6608 = add nsw i32 %6606, %6607
  %6609 = load ptr, ptr %18, align 8, !tbaa !5
  %6610 = load i32, ptr %6609, align 4, !tbaa !9
  %6611 = sub nsw i32 %6608, %6610
  %6612 = sext i32 %6611 to i64
  %6613 = getelementptr inbounds double, ptr %6605, i64 %6612
  %6614 = load ptr, ptr %26, align 8, !tbaa !5
  %6615 = load i32, ptr %55, align 4, !tbaa !9
  %6616 = load i32, ptr %57, align 4, !tbaa !9
  %6617 = add nsw i32 %6615, %6616
  %6618 = load ptr, ptr %18, align 8, !tbaa !5
  %6619 = load i32, ptr %6618, align 4, !tbaa !9
  %6620 = sub nsw i32 %6617, %6619
  %6621 = sext i32 %6620 to i64
  %6622 = getelementptr inbounds %struct.doublecomplex, ptr %6614, i64 %6621
  call void @zlartg_(ptr noundef %6604, ptr noundef %74, ptr noundef %6613, ptr noundef %6622, ptr noundef %68)
  %6623 = load i32, ptr %73, align 4, !tbaa !9
  %6624 = load i32, ptr %57, align 4, !tbaa !9
  %6625 = sub nsw i32 %6623, %6624
  %6626 = load i32, ptr %55, align 4, !tbaa !9
  %6627 = load i32, ptr %57, align 4, !tbaa !9
  %6628 = add nsw i32 %6626, %6627
  %6629 = load i32, ptr %31, align 4, !tbaa !9
  %6630 = mul nsw i32 %6628, %6629
  %6631 = add nsw i32 %6625, %6630
  store i32 %6631, ptr %38, align 4, !tbaa !9
  %6632 = load ptr, ptr %22, align 8, !tbaa !5
  %6633 = load i32, ptr %38, align 4, !tbaa !9
  %6634 = sext i32 %6633 to i64
  %6635 = getelementptr inbounds %struct.doublecomplex, ptr %6632, i64 %6634
  %6636 = getelementptr inbounds %struct.doublecomplex, ptr %6635, i32 0, i32 0
  %6637 = load double, ptr %6636, align 8, !tbaa !11
  %6638 = fneg double %6637
  %6639 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %6638, ptr %6639, align 8, !tbaa !11
  %6640 = load ptr, ptr %22, align 8, !tbaa !5
  %6641 = load i32, ptr %38, align 4, !tbaa !9
  %6642 = sext i32 %6641 to i64
  %6643 = getelementptr inbounds %struct.doublecomplex, ptr %6640, i64 %6642
  %6644 = getelementptr inbounds %struct.doublecomplex, ptr %6643, i32 0, i32 1
  %6645 = load double, ptr %6644, align 8, !tbaa !15
  %6646 = fneg double %6645
  %6647 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %6646, ptr %6647, align 8, !tbaa !15
  %6648 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6649 = load double, ptr %6648, align 8, !tbaa !11
  %6650 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %6651 = load double, ptr %6650, align 8, !tbaa !11
  %6652 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6653 = load double, ptr %6652, align 8, !tbaa !15
  %6654 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %6655 = load double, ptr %6654, align 8, !tbaa !15
  %6656 = fmul double %6653, %6655
  %6657 = fneg double %6656
  %6658 = call double @llvm.fmuladd.f64(double %6649, double %6651, double %6657)
  %6659 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %6658, ptr %6659, align 8, !tbaa !11
  %6660 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6661 = load double, ptr %6660, align 8, !tbaa !11
  %6662 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %6663 = load double, ptr %6662, align 8, !tbaa !15
  %6664 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6665 = load double, ptr %6664, align 8, !tbaa !15
  %6666 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %6667 = load double, ptr %6666, align 8, !tbaa !11
  %6668 = fmul double %6665, %6667
  %6669 = call double @llvm.fmuladd.f64(double %6661, double %6663, double %6668)
  %6670 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %6669, ptr %6670, align 8, !tbaa !15
  %6671 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %6672 = load double, ptr %6671, align 8, !tbaa !11
  %6673 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %6672, ptr %6673, align 8, !tbaa !11
  %6674 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %6675 = load double, ptr %6674, align 8, !tbaa !15
  %6676 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %6675, ptr %6676, align 8, !tbaa !15
  %6677 = load i32, ptr %59, align 4, !tbaa !9
  %6678 = load ptr, ptr %19, align 8, !tbaa !5
  %6679 = load i32, ptr %6678, align 4, !tbaa !9
  %6680 = sub nsw i32 %6677, %6679
  %6681 = load i32, ptr %55, align 4, !tbaa !9
  %6682 = add nsw i32 %6680, %6681
  %6683 = load i32, ptr %57, align 4, !tbaa !9
  %6684 = add nsw i32 %6682, %6683
  store i32 %6684, ptr %38, align 4, !tbaa !9
  %6685 = load i32, ptr %55, align 4, !tbaa !9
  %6686 = load i32, ptr %57, align 4, !tbaa !9
  %6687 = add nsw i32 %6685, %6686
  %6688 = load ptr, ptr %18, align 8, !tbaa !5
  %6689 = load i32, ptr %6688, align 4, !tbaa !9
  %6690 = sub nsw i32 %6687, %6689
  store i32 %6690, ptr %35, align 4, !tbaa !9
  %6691 = load ptr, ptr %27, align 8, !tbaa !5
  %6692 = load i32, ptr %35, align 4, !tbaa !9
  %6693 = sext i32 %6692 to i64
  %6694 = getelementptr inbounds double, ptr %6691, i64 %6693
  %6695 = load double, ptr %6694, align 8, !tbaa !14
  %6696 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %6697 = load double, ptr %6696, align 8, !tbaa !11
  %6698 = fmul double %6695, %6697
  %6699 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %6698, ptr %6699, align 8, !tbaa !11
  %6700 = load ptr, ptr %27, align 8, !tbaa !5
  %6701 = load i32, ptr %35, align 4, !tbaa !9
  %6702 = sext i32 %6701 to i64
  %6703 = getelementptr inbounds double, ptr %6700, i64 %6702
  %6704 = load double, ptr %6703, align 8, !tbaa !14
  %6705 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %6706 = load double, ptr %6705, align 8, !tbaa !15
  %6707 = fmul double %6704, %6706
  %6708 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %6707, ptr %6708, align 8, !tbaa !15
  %6709 = load ptr, ptr %26, align 8, !tbaa !5
  %6710 = load i32, ptr %55, align 4, !tbaa !9
  %6711 = load i32, ptr %57, align 4, !tbaa !9
  %6712 = add nsw i32 %6710, %6711
  %6713 = load ptr, ptr %18, align 8, !tbaa !5
  %6714 = load i32, ptr %6713, align 4, !tbaa !9
  %6715 = sub nsw i32 %6712, %6714
  %6716 = sext i32 %6715 to i64
  %6717 = getelementptr inbounds %struct.doublecomplex, ptr %6709, i64 %6716
  %6718 = call { double, double } @Cd(ptr noundef %6717)
  %6719 = extractvalue { double, double } %6718, 0
  %6720 = extractvalue { double, double } %6718, 1
  %6721 = fneg double %6720
  %6722 = call ptr @_pCd(ptr noundef %47)
  %6723 = getelementptr inbounds { double, double }, ptr %6722, i32 0, i32 0
  %6724 = getelementptr inbounds { double, double }, ptr %6722, i32 0, i32 1
  store double %6719, ptr %6723, align 8
  store double %6721, ptr %6724, align 8
  %6725 = load i32, ptr %55, align 4, !tbaa !9
  %6726 = load i32, ptr %57, align 4, !tbaa !9
  %6727 = add nsw i32 %6725, %6726
  %6728 = load i32, ptr %29, align 4, !tbaa !9
  %6729 = mul nsw i32 %6727, %6728
  %6730 = add nsw i32 %6729, 1
  store i32 %6730, ptr %36, align 4, !tbaa !9
  %6731 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %6732 = load double, ptr %6731, align 8, !tbaa !11
  %6733 = load ptr, ptr %20, align 8, !tbaa !5
  %6734 = load i32, ptr %36, align 4, !tbaa !9
  %6735 = sext i32 %6734 to i64
  %6736 = getelementptr inbounds %struct.doublecomplex, ptr %6733, i64 %6735
  %6737 = getelementptr inbounds %struct.doublecomplex, ptr %6736, i32 0, i32 0
  %6738 = load double, ptr %6737, align 8, !tbaa !11
  %6739 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %6740 = load double, ptr %6739, align 8, !tbaa !15
  %6741 = load ptr, ptr %20, align 8, !tbaa !5
  %6742 = load i32, ptr %36, align 4, !tbaa !9
  %6743 = sext i32 %6742 to i64
  %6744 = getelementptr inbounds %struct.doublecomplex, ptr %6741, i64 %6743
  %6745 = getelementptr inbounds %struct.doublecomplex, ptr %6744, i32 0, i32 1
  %6746 = load double, ptr %6745, align 8, !tbaa !15
  %6747 = fmul double %6740, %6746
  %6748 = fneg double %6747
  %6749 = call double @llvm.fmuladd.f64(double %6732, double %6738, double %6748)
  %6750 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %6749, ptr %6750, align 8, !tbaa !11
  %6751 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %6752 = load double, ptr %6751, align 8, !tbaa !11
  %6753 = load ptr, ptr %20, align 8, !tbaa !5
  %6754 = load i32, ptr %36, align 4, !tbaa !9
  %6755 = sext i32 %6754 to i64
  %6756 = getelementptr inbounds %struct.doublecomplex, ptr %6753, i64 %6755
  %6757 = getelementptr inbounds %struct.doublecomplex, ptr %6756, i32 0, i32 1
  %6758 = load double, ptr %6757, align 8, !tbaa !15
  %6759 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %6760 = load double, ptr %6759, align 8, !tbaa !15
  %6761 = load ptr, ptr %20, align 8, !tbaa !5
  %6762 = load i32, ptr %36, align 4, !tbaa !9
  %6763 = sext i32 %6762 to i64
  %6764 = getelementptr inbounds %struct.doublecomplex, ptr %6761, i64 %6763
  %6765 = getelementptr inbounds %struct.doublecomplex, ptr %6764, i32 0, i32 0
  %6766 = load double, ptr %6765, align 8, !tbaa !11
  %6767 = fmul double %6760, %6766
  %6768 = call double @llvm.fmuladd.f64(double %6752, double %6758, double %6767)
  %6769 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %6768, ptr %6769, align 8, !tbaa !15
  %6770 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6771 = load double, ptr %6770, align 8, !tbaa !11
  %6772 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %6773 = load double, ptr %6772, align 8, !tbaa !11
  %6774 = fsub double %6771, %6773
  %6775 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %6774, ptr %6775, align 8, !tbaa !11
  %6776 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6777 = load double, ptr %6776, align 8, !tbaa !15
  %6778 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %6779 = load double, ptr %6778, align 8, !tbaa !15
  %6780 = fsub double %6777, %6779
  %6781 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %6780, ptr %6781, align 8, !tbaa !15
  %6782 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %6783 = load double, ptr %6782, align 8, !tbaa !11
  %6784 = load ptr, ptr %26, align 8, !tbaa !5
  %6785 = load i32, ptr %38, align 4, !tbaa !9
  %6786 = sext i32 %6785 to i64
  %6787 = getelementptr inbounds %struct.doublecomplex, ptr %6784, i64 %6786
  %6788 = getelementptr inbounds %struct.doublecomplex, ptr %6787, i32 0, i32 0
  store double %6783, ptr %6788, align 8, !tbaa !11
  %6789 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %6790 = load double, ptr %6789, align 8, !tbaa !15
  %6791 = load ptr, ptr %26, align 8, !tbaa !5
  %6792 = load i32, ptr %38, align 4, !tbaa !9
  %6793 = sext i32 %6792 to i64
  %6794 = getelementptr inbounds %struct.doublecomplex, ptr %6791, i64 %6793
  %6795 = getelementptr inbounds %struct.doublecomplex, ptr %6794, i32 0, i32 1
  store double %6790, ptr %6795, align 8, !tbaa !15
  %6796 = load i32, ptr %55, align 4, !tbaa !9
  %6797 = load i32, ptr %57, align 4, !tbaa !9
  %6798 = add nsw i32 %6796, %6797
  %6799 = load i32, ptr %29, align 4, !tbaa !9
  %6800 = mul nsw i32 %6798, %6799
  %6801 = add nsw i32 %6800, 1
  store i32 %6801, ptr %38, align 4, !tbaa !9
  %6802 = load i32, ptr %55, align 4, !tbaa !9
  %6803 = load i32, ptr %57, align 4, !tbaa !9
  %6804 = add nsw i32 %6802, %6803
  %6805 = load ptr, ptr %18, align 8, !tbaa !5
  %6806 = load i32, ptr %6805, align 4, !tbaa !9
  %6807 = sub nsw i32 %6804, %6806
  store i32 %6807, ptr %35, align 4, !tbaa !9
  %6808 = load ptr, ptr %26, align 8, !tbaa !5
  %6809 = load i32, ptr %35, align 4, !tbaa !9
  %6810 = sext i32 %6809 to i64
  %6811 = getelementptr inbounds %struct.doublecomplex, ptr %6808, i64 %6810
  %6812 = getelementptr inbounds %struct.doublecomplex, ptr %6811, i32 0, i32 0
  %6813 = load double, ptr %6812, align 8, !tbaa !11
  %6814 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %6815 = load double, ptr %6814, align 8, !tbaa !11
  %6816 = load ptr, ptr %26, align 8, !tbaa !5
  %6817 = load i32, ptr %35, align 4, !tbaa !9
  %6818 = sext i32 %6817 to i64
  %6819 = getelementptr inbounds %struct.doublecomplex, ptr %6816, i64 %6818
  %6820 = getelementptr inbounds %struct.doublecomplex, ptr %6819, i32 0, i32 1
  %6821 = load double, ptr %6820, align 8, !tbaa !15
  %6822 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %6823 = load double, ptr %6822, align 8, !tbaa !15
  %6824 = fmul double %6821, %6823
  %6825 = fneg double %6824
  %6826 = call double @llvm.fmuladd.f64(double %6813, double %6815, double %6825)
  %6827 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %6826, ptr %6827, align 8, !tbaa !11
  %6828 = load ptr, ptr %26, align 8, !tbaa !5
  %6829 = load i32, ptr %35, align 4, !tbaa !9
  %6830 = sext i32 %6829 to i64
  %6831 = getelementptr inbounds %struct.doublecomplex, ptr %6828, i64 %6830
  %6832 = getelementptr inbounds %struct.doublecomplex, ptr %6831, i32 0, i32 0
  %6833 = load double, ptr %6832, align 8, !tbaa !11
  %6834 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %6835 = load double, ptr %6834, align 8, !tbaa !15
  %6836 = load ptr, ptr %26, align 8, !tbaa !5
  %6837 = load i32, ptr %35, align 4, !tbaa !9
  %6838 = sext i32 %6837 to i64
  %6839 = getelementptr inbounds %struct.doublecomplex, ptr %6836, i64 %6838
  %6840 = getelementptr inbounds %struct.doublecomplex, ptr %6839, i32 0, i32 1
  %6841 = load double, ptr %6840, align 8, !tbaa !15
  %6842 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %6843 = load double, ptr %6842, align 8, !tbaa !11
  %6844 = fmul double %6841, %6843
  %6845 = call double @llvm.fmuladd.f64(double %6833, double %6835, double %6844)
  %6846 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %6845, ptr %6846, align 8, !tbaa !15
  %6847 = load i32, ptr %55, align 4, !tbaa !9
  %6848 = load i32, ptr %57, align 4, !tbaa !9
  %6849 = add nsw i32 %6847, %6848
  %6850 = load ptr, ptr %18, align 8, !tbaa !5
  %6851 = load i32, ptr %6850, align 4, !tbaa !9
  %6852 = sub nsw i32 %6849, %6851
  store i32 %6852, ptr %36, align 4, !tbaa !9
  %6853 = load i32, ptr %55, align 4, !tbaa !9
  %6854 = load i32, ptr %57, align 4, !tbaa !9
  %6855 = add nsw i32 %6853, %6854
  %6856 = load i32, ptr %29, align 4, !tbaa !9
  %6857 = mul nsw i32 %6855, %6856
  %6858 = add nsw i32 %6857, 1
  store i32 %6858, ptr %39, align 4, !tbaa !9
  %6859 = load ptr, ptr %27, align 8, !tbaa !5
  %6860 = load i32, ptr %36, align 4, !tbaa !9
  %6861 = sext i32 %6860 to i64
  %6862 = getelementptr inbounds double, ptr %6859, i64 %6861
  %6863 = load double, ptr %6862, align 8, !tbaa !14
  %6864 = load ptr, ptr %20, align 8, !tbaa !5
  %6865 = load i32, ptr %39, align 4, !tbaa !9
  %6866 = sext i32 %6865 to i64
  %6867 = getelementptr inbounds %struct.doublecomplex, ptr %6864, i64 %6866
  %6868 = getelementptr inbounds %struct.doublecomplex, ptr %6867, i32 0, i32 0
  %6869 = load double, ptr %6868, align 8, !tbaa !11
  %6870 = fmul double %6863, %6869
  %6871 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %6870, ptr %6871, align 8, !tbaa !11
  %6872 = load ptr, ptr %27, align 8, !tbaa !5
  %6873 = load i32, ptr %36, align 4, !tbaa !9
  %6874 = sext i32 %6873 to i64
  %6875 = getelementptr inbounds double, ptr %6872, i64 %6874
  %6876 = load double, ptr %6875, align 8, !tbaa !14
  %6877 = load ptr, ptr %20, align 8, !tbaa !5
  %6878 = load i32, ptr %39, align 4, !tbaa !9
  %6879 = sext i32 %6878 to i64
  %6880 = getelementptr inbounds %struct.doublecomplex, ptr %6877, i64 %6879
  %6881 = getelementptr inbounds %struct.doublecomplex, ptr %6880, i32 0, i32 1
  %6882 = load double, ptr %6881, align 8, !tbaa !15
  %6883 = fmul double %6876, %6882
  %6884 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %6883, ptr %6884, align 8, !tbaa !15
  %6885 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %6886 = load double, ptr %6885, align 8, !tbaa !11
  %6887 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %6888 = load double, ptr %6887, align 8, !tbaa !11
  %6889 = fadd double %6886, %6888
  %6890 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %6889, ptr %6890, align 8, !tbaa !11
  %6891 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %6892 = load double, ptr %6891, align 8, !tbaa !15
  %6893 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %6894 = load double, ptr %6893, align 8, !tbaa !15
  %6895 = fadd double %6892, %6894
  %6896 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %6895, ptr %6896, align 8, !tbaa !15
  %6897 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %6898 = load double, ptr %6897, align 8, !tbaa !11
  %6899 = load ptr, ptr %20, align 8, !tbaa !5
  %6900 = load i32, ptr %38, align 4, !tbaa !9
  %6901 = sext i32 %6900 to i64
  %6902 = getelementptr inbounds %struct.doublecomplex, ptr %6899, i64 %6901
  %6903 = getelementptr inbounds %struct.doublecomplex, ptr %6902, i32 0, i32 0
  store double %6898, ptr %6903, align 8, !tbaa !11
  %6904 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %6905 = load double, ptr %6904, align 8, !tbaa !15
  %6906 = load ptr, ptr %20, align 8, !tbaa !5
  %6907 = load i32, ptr %38, align 4, !tbaa !9
  %6908 = sext i32 %6907 to i64
  %6909 = getelementptr inbounds %struct.doublecomplex, ptr %6906, i64 %6908
  %6910 = getelementptr inbounds %struct.doublecomplex, ptr %6909, i32 0, i32 1
  store double %6905, ptr %6910, align 8, !tbaa !15
  %6911 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %6912 = load double, ptr %6911, align 8, !tbaa !11
  %6913 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %6912, ptr %6913, align 8, !tbaa !11
  %6914 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %6915 = load double, ptr %6914, align 8, !tbaa !15
  %6916 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %6915, ptr %6916, align 8, !tbaa !15
  br label %6917

6917:                                             ; preds = %6595, %6589, %6582
  br label %6918

6918:                                             ; preds = %6917, %6579
  store i32 1, ptr %38, align 4, !tbaa !9
  %6919 = load i32, ptr %57, align 4, !tbaa !9
  %6920 = load i32, ptr %61, align 4, !tbaa !9
  %6921 = add nsw i32 %6919, %6920
  %6922 = load i32, ptr %59, align 4, !tbaa !9
  %6923 = sub nsw i32 %6921, %6922
  %6924 = add nsw i32 %6923, 1
  store i32 %6924, ptr %35, align 4, !tbaa !9
  %6925 = load i32, ptr %55, align 4, !tbaa !9
  %6926 = load i32, ptr %57, align 4, !tbaa !9
  %6927 = add nsw i32 %6925, %6926
  %6928 = add nsw i32 %6927, 1
  %6929 = load i32, ptr %38, align 4, !tbaa !9
  %6930 = load i32, ptr %35, align 4, !tbaa !9
  %6931 = icmp sge i32 %6929, %6930
  br i1 %6931, label %6932, label %6934

6932:                                             ; preds = %6918
  %6933 = load i32, ptr %38, align 4, !tbaa !9
  br label %6936

6934:                                             ; preds = %6918
  %6935 = load i32, ptr %35, align 4, !tbaa !9
  br label %6936

6936:                                             ; preds = %6934, %6932
  %6937 = phi i32 [ %6933, %6932 ], [ %6935, %6934 ]
  %6938 = load i32, ptr %72, align 4, !tbaa !9
  %6939 = mul nsw i32 %6937, %6938
  %6940 = sub nsw i32 %6928, %6939
  store i32 %6940, ptr %66, align 4, !tbaa !9
  %6941 = load i32, ptr %66, align 4, !tbaa !9
  %6942 = load ptr, ptr %18, align 8, !tbaa !5
  %6943 = load i32, ptr %6942, align 4, !tbaa !9
  %6944 = add nsw i32 %6941, %6943
  %6945 = sub nsw i32 %6944, 1
  %6946 = load i32, ptr %72, align 4, !tbaa !9
  %6947 = sdiv i32 %6945, %6946
  store i32 %6947, ptr %69, align 4, !tbaa !9
  %6948 = load i32, ptr %66, align 4, !tbaa !9
  %6949 = load i32, ptr %69, align 4, !tbaa !9
  %6950 = sub nsw i32 %6949, 1
  %6951 = load i32, ptr %72, align 4, !tbaa !9
  %6952 = mul nsw i32 %6950, %6951
  %6953 = sub nsw i32 %6948, %6952
  store i32 %6953, ptr %65, align 4, !tbaa !9
  %6954 = load i32, ptr %71, align 4, !tbaa !9
  %6955 = icmp ne i32 %6954, 0
  br i1 %6955, label %6956, label %6975

6956:                                             ; preds = %6936
  %6957 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %6957, ptr %38, align 4, !tbaa !9
  %6958 = load i32, ptr %55, align 4, !tbaa !9
  %6959 = load ptr, ptr %18, align 8, !tbaa !5
  %6960 = load i32, ptr %6959, align 4, !tbaa !9
  %6961 = shl i32 %6960, 1
  %6962 = sub nsw i32 %6958, %6961
  %6963 = load i32, ptr %57, align 4, !tbaa !9
  %6964 = add nsw i32 %6962, %6963
  %6965 = sub nsw i32 %6964, 1
  store i32 %6965, ptr %35, align 4, !tbaa !9
  %6966 = load i32, ptr %38, align 4, !tbaa !9
  %6967 = load i32, ptr %35, align 4, !tbaa !9
  %6968 = icmp sle i32 %6966, %6967
  br i1 %6968, label %6969, label %6971

6969:                                             ; preds = %6956
  %6970 = load i32, ptr %38, align 4, !tbaa !9
  br label %6973

6971:                                             ; preds = %6956
  %6972 = load i32, ptr %35, align 4, !tbaa !9
  br label %6973

6973:                                             ; preds = %6971, %6969
  %6974 = phi i32 [ %6970, %6969 ], [ %6972, %6971 ]
  store i32 %6974, ptr %76, align 4, !tbaa !9
  br label %6977

6975:                                             ; preds = %6936
  %6976 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %6976, ptr %76, align 4, !tbaa !9
  br label %6977

6977:                                             ; preds = %6975, %6973
  %6978 = load i32, ptr %76, align 4, !tbaa !9
  %6979 = load ptr, ptr %18, align 8, !tbaa !5
  %6980 = load i32, ptr %6979, align 4, !tbaa !9
  %6981 = add nsw i32 %6978, %6980
  %6982 = sub nsw i32 %6981, 1
  %6983 = load i32, ptr %72, align 4, !tbaa !9
  %6984 = sdiv i32 %6982, %6983
  store i32 %6984, ptr %79, align 4, !tbaa !9
  %6985 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %6985, ptr %38, align 4, !tbaa !9
  %6986 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %6986, ptr %35, align 4, !tbaa !9
  %6987 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %6987, ptr %56, align 4, !tbaa !9
  br label %6988

6988:                                             ; preds = %7141, %6977
  %6989 = load i32, ptr %35, align 4, !tbaa !9
  %6990 = icmp slt i32 %6989, 0
  br i1 %6990, label %6991, label %6996

6991:                                             ; preds = %6988
  %6992 = load i32, ptr %56, align 4, !tbaa !9
  %6993 = load i32, ptr %38, align 4, !tbaa !9
  %6994 = icmp sge i32 %6992, %6993
  %6995 = zext i1 %6994 to i32
  br label %7001

6996:                                             ; preds = %6988
  %6997 = load i32, ptr %56, align 4, !tbaa !9
  %6998 = load i32, ptr %38, align 4, !tbaa !9
  %6999 = icmp sle i32 %6997, %6998
  %7000 = zext i1 %6999 to i32
  br label %7001

7001:                                             ; preds = %6996, %6991
  %7002 = phi i32 [ %6995, %6991 ], [ %7000, %6996 ]
  %7003 = icmp ne i32 %7002, 0
  br i1 %7003, label %7004, label %7145

7004:                                             ; preds = %7001
  %7005 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %7005, ptr %36, align 4, !tbaa !9
  %7006 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %7006, ptr %39, align 4, !tbaa !9
  %7007 = load i32, ptr %56, align 4, !tbaa !9
  %7008 = load ptr, ptr %18, align 8, !tbaa !5
  %7009 = load i32, ptr %7008, align 4, !tbaa !9
  %7010 = add nsw i32 %7007, %7009
  %7011 = sub nsw i32 %7010, 1
  %7012 = load i32, ptr %29, align 4, !tbaa !9
  %7013 = mul nsw i32 %7011, %7012
  %7014 = add nsw i32 %7013, 1
  store i32 %7014, ptr %40, align 4, !tbaa !9
  %7015 = load ptr, ptr %26, align 8, !tbaa !5
  %7016 = load i32, ptr %39, align 4, !tbaa !9
  %7017 = sext i32 %7016 to i64
  %7018 = getelementptr inbounds %struct.doublecomplex, ptr %7015, i64 %7017
  %7019 = getelementptr inbounds %struct.doublecomplex, ptr %7018, i32 0, i32 0
  %7020 = load double, ptr %7019, align 8, !tbaa !11
  %7021 = load ptr, ptr %20, align 8, !tbaa !5
  %7022 = load i32, ptr %40, align 4, !tbaa !9
  %7023 = sext i32 %7022 to i64
  %7024 = getelementptr inbounds %struct.doublecomplex, ptr %7021, i64 %7023
  %7025 = getelementptr inbounds %struct.doublecomplex, ptr %7024, i32 0, i32 0
  %7026 = load double, ptr %7025, align 8, !tbaa !11
  %7027 = load ptr, ptr %26, align 8, !tbaa !5
  %7028 = load i32, ptr %39, align 4, !tbaa !9
  %7029 = sext i32 %7028 to i64
  %7030 = getelementptr inbounds %struct.doublecomplex, ptr %7027, i64 %7029
  %7031 = getelementptr inbounds %struct.doublecomplex, ptr %7030, i32 0, i32 1
  %7032 = load double, ptr %7031, align 8, !tbaa !15
  %7033 = load ptr, ptr %20, align 8, !tbaa !5
  %7034 = load i32, ptr %40, align 4, !tbaa !9
  %7035 = sext i32 %7034 to i64
  %7036 = getelementptr inbounds %struct.doublecomplex, ptr %7033, i64 %7035
  %7037 = getelementptr inbounds %struct.doublecomplex, ptr %7036, i32 0, i32 1
  %7038 = load double, ptr %7037, align 8, !tbaa !15
  %7039 = fmul double %7032, %7038
  %7040 = fneg double %7039
  %7041 = call double @llvm.fmuladd.f64(double %7020, double %7026, double %7040)
  %7042 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %7041, ptr %7042, align 8, !tbaa !11
  %7043 = load ptr, ptr %26, align 8, !tbaa !5
  %7044 = load i32, ptr %39, align 4, !tbaa !9
  %7045 = sext i32 %7044 to i64
  %7046 = getelementptr inbounds %struct.doublecomplex, ptr %7043, i64 %7045
  %7047 = getelementptr inbounds %struct.doublecomplex, ptr %7046, i32 0, i32 0
  %7048 = load double, ptr %7047, align 8, !tbaa !11
  %7049 = load ptr, ptr %20, align 8, !tbaa !5
  %7050 = load i32, ptr %40, align 4, !tbaa !9
  %7051 = sext i32 %7050 to i64
  %7052 = getelementptr inbounds %struct.doublecomplex, ptr %7049, i64 %7051
  %7053 = getelementptr inbounds %struct.doublecomplex, ptr %7052, i32 0, i32 1
  %7054 = load double, ptr %7053, align 8, !tbaa !15
  %7055 = load ptr, ptr %26, align 8, !tbaa !5
  %7056 = load i32, ptr %39, align 4, !tbaa !9
  %7057 = sext i32 %7056 to i64
  %7058 = getelementptr inbounds %struct.doublecomplex, ptr %7055, i64 %7057
  %7059 = getelementptr inbounds %struct.doublecomplex, ptr %7058, i32 0, i32 1
  %7060 = load double, ptr %7059, align 8, !tbaa !15
  %7061 = load ptr, ptr %20, align 8, !tbaa !5
  %7062 = load i32, ptr %40, align 4, !tbaa !9
  %7063 = sext i32 %7062 to i64
  %7064 = getelementptr inbounds %struct.doublecomplex, ptr %7061, i64 %7063
  %7065 = getelementptr inbounds %struct.doublecomplex, ptr %7064, i32 0, i32 0
  %7066 = load double, ptr %7065, align 8, !tbaa !11
  %7067 = fmul double %7060, %7066
  %7068 = call double @llvm.fmuladd.f64(double %7048, double %7054, double %7067)
  %7069 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %7068, ptr %7069, align 8, !tbaa !15
  %7070 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %7071 = load double, ptr %7070, align 8, !tbaa !11
  %7072 = load ptr, ptr %26, align 8, !tbaa !5
  %7073 = load i32, ptr %36, align 4, !tbaa !9
  %7074 = sext i32 %7073 to i64
  %7075 = getelementptr inbounds %struct.doublecomplex, ptr %7072, i64 %7074
  %7076 = getelementptr inbounds %struct.doublecomplex, ptr %7075, i32 0, i32 0
  store double %7071, ptr %7076, align 8, !tbaa !11
  %7077 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %7078 = load double, ptr %7077, align 8, !tbaa !15
  %7079 = load ptr, ptr %26, align 8, !tbaa !5
  %7080 = load i32, ptr %36, align 4, !tbaa !9
  %7081 = sext i32 %7080 to i64
  %7082 = getelementptr inbounds %struct.doublecomplex, ptr %7079, i64 %7081
  %7083 = getelementptr inbounds %struct.doublecomplex, ptr %7082, i32 0, i32 1
  store double %7078, ptr %7083, align 8, !tbaa !15
  %7084 = load i32, ptr %56, align 4, !tbaa !9
  %7085 = load ptr, ptr %18, align 8, !tbaa !5
  %7086 = load i32, ptr %7085, align 4, !tbaa !9
  %7087 = add nsw i32 %7084, %7086
  %7088 = sub nsw i32 %7087, 1
  %7089 = load i32, ptr %29, align 4, !tbaa !9
  %7090 = mul nsw i32 %7088, %7089
  %7091 = add nsw i32 %7090, 1
  store i32 %7091, ptr %36, align 4, !tbaa !9
  %7092 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %7092, ptr %39, align 4, !tbaa !9
  %7093 = load i32, ptr %56, align 4, !tbaa !9
  %7094 = load ptr, ptr %18, align 8, !tbaa !5
  %7095 = load i32, ptr %7094, align 4, !tbaa !9
  %7096 = add nsw i32 %7093, %7095
  %7097 = sub nsw i32 %7096, 1
  %7098 = load i32, ptr %29, align 4, !tbaa !9
  %7099 = mul nsw i32 %7097, %7098
  %7100 = add nsw i32 %7099, 1
  store i32 %7100, ptr %40, align 4, !tbaa !9
  %7101 = load ptr, ptr %27, align 8, !tbaa !5
  %7102 = load i32, ptr %39, align 4, !tbaa !9
  %7103 = sext i32 %7102 to i64
  %7104 = getelementptr inbounds double, ptr %7101, i64 %7103
  %7105 = load double, ptr %7104, align 8, !tbaa !14
  %7106 = load ptr, ptr %20, align 8, !tbaa !5
  %7107 = load i32, ptr %40, align 4, !tbaa !9
  %7108 = sext i32 %7107 to i64
  %7109 = getelementptr inbounds %struct.doublecomplex, ptr %7106, i64 %7108
  %7110 = getelementptr inbounds %struct.doublecomplex, ptr %7109, i32 0, i32 0
  %7111 = load double, ptr %7110, align 8, !tbaa !11
  %7112 = fmul double %7105, %7111
  %7113 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %7112, ptr %7113, align 8, !tbaa !11
  %7114 = load ptr, ptr %27, align 8, !tbaa !5
  %7115 = load i32, ptr %39, align 4, !tbaa !9
  %7116 = sext i32 %7115 to i64
  %7117 = getelementptr inbounds double, ptr %7114, i64 %7116
  %7118 = load double, ptr %7117, align 8, !tbaa !14
  %7119 = load ptr, ptr %20, align 8, !tbaa !5
  %7120 = load i32, ptr %40, align 4, !tbaa !9
  %7121 = sext i32 %7120 to i64
  %7122 = getelementptr inbounds %struct.doublecomplex, ptr %7119, i64 %7121
  %7123 = getelementptr inbounds %struct.doublecomplex, ptr %7122, i32 0, i32 1
  %7124 = load double, ptr %7123, align 8, !tbaa !15
  %7125 = fmul double %7118, %7124
  %7126 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %7125, ptr %7126, align 8, !tbaa !15
  %7127 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %7128 = load double, ptr %7127, align 8, !tbaa !11
  %7129 = load ptr, ptr %20, align 8, !tbaa !5
  %7130 = load i32, ptr %36, align 4, !tbaa !9
  %7131 = sext i32 %7130 to i64
  %7132 = getelementptr inbounds %struct.doublecomplex, ptr %7129, i64 %7131
  %7133 = getelementptr inbounds %struct.doublecomplex, ptr %7132, i32 0, i32 0
  store double %7128, ptr %7133, align 8, !tbaa !11
  %7134 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %7135 = load double, ptr %7134, align 8, !tbaa !15
  %7136 = load ptr, ptr %20, align 8, !tbaa !5
  %7137 = load i32, ptr %36, align 4, !tbaa !9
  %7138 = sext i32 %7137 to i64
  %7139 = getelementptr inbounds %struct.doublecomplex, ptr %7136, i64 %7138
  %7140 = getelementptr inbounds %struct.doublecomplex, ptr %7139, i32 0, i32 1
  store double %7135, ptr %7140, align 8, !tbaa !15
  br label %7141

7141:                                             ; preds = %7004
  %7142 = load i32, ptr %35, align 4, !tbaa !9
  %7143 = load i32, ptr %56, align 4, !tbaa !9
  %7144 = add nsw i32 %7143, %7142
  store i32 %7144, ptr %56, align 4, !tbaa !9
  br label %6988, !llvm.loop !70

7145:                                             ; preds = %7001
  %7146 = load i32, ptr %79, align 4, !tbaa !9
  %7147 = icmp sgt i32 %7146, 0
  br i1 %7147, label %7148, label %7167

7148:                                             ; preds = %7145
  %7149 = load ptr, ptr %20, align 8, !tbaa !5
  %7150 = load i32, ptr %65, align 4, !tbaa !9
  %7151 = load ptr, ptr %18, align 8, !tbaa !5
  %7152 = load i32, ptr %7151, align 4, !tbaa !9
  %7153 = add nsw i32 %7150, %7152
  %7154 = load i32, ptr %29, align 4, !tbaa !9
  %7155 = mul nsw i32 %7153, %7154
  %7156 = add nsw i32 %7155, 1
  %7157 = sext i32 %7156 to i64
  %7158 = getelementptr inbounds %struct.doublecomplex, ptr %7149, i64 %7157
  %7159 = load ptr, ptr %26, align 8, !tbaa !5
  %7160 = load i32, ptr %65, align 4, !tbaa !9
  %7161 = sext i32 %7160 to i64
  %7162 = getelementptr inbounds %struct.doublecomplex, ptr %7159, i64 %7161
  %7163 = load ptr, ptr %27, align 8, !tbaa !5
  %7164 = load i32, ptr %65, align 4, !tbaa !9
  %7165 = sext i32 %7164 to i64
  %7166 = getelementptr inbounds double, ptr %7163, i64 %7165
  call void @zlargv_(ptr noundef %79, ptr noundef %7158, ptr noundef %54, ptr noundef %7162, ptr noundef %72, ptr noundef %7166, ptr noundef %72)
  br label %7167

7167:                                             ; preds = %7148, %7145
  %7168 = load i32, ptr %69, align 4, !tbaa !9
  %7169 = icmp sgt i32 %7168, 0
  br i1 %7169, label %7170, label %7254

7170:                                             ; preds = %7167
  %7171 = load ptr, ptr %18, align 8, !tbaa !5
  %7172 = load i32, ptr %7171, align 4, !tbaa !9
  %7173 = sub nsw i32 %7172, 1
  store i32 %7173, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %7174

7174:                                             ; preds = %7212, %7170
  %7175 = load i32, ptr %58, align 4, !tbaa !9
  %7176 = load i32, ptr %35, align 4, !tbaa !9
  %7177 = icmp sle i32 %7175, %7176
  br i1 %7177, label %7178, label %7215

7178:                                             ; preds = %7174
  %7179 = load ptr, ptr %20, align 8, !tbaa !5
  %7180 = load i32, ptr %72, align 4, !tbaa !9
  %7181 = load i32, ptr %58, align 4, !tbaa !9
  %7182 = sub nsw i32 %7180, %7181
  %7183 = load i32, ptr %65, align 4, !tbaa !9
  %7184 = load i32, ptr %58, align 4, !tbaa !9
  %7185 = add nsw i32 %7183, %7184
  %7186 = load i32, ptr %29, align 4, !tbaa !9
  %7187 = mul nsw i32 %7185, %7186
  %7188 = add nsw i32 %7182, %7187
  %7189 = sext i32 %7188 to i64
  %7190 = getelementptr inbounds %struct.doublecomplex, ptr %7179, i64 %7189
  %7191 = load ptr, ptr %20, align 8, !tbaa !5
  %7192 = load ptr, ptr %18, align 8, !tbaa !5
  %7193 = load i32, ptr %7192, align 4, !tbaa !9
  %7194 = load i32, ptr %58, align 4, !tbaa !9
  %7195 = sub nsw i32 %7193, %7194
  %7196 = load i32, ptr %65, align 4, !tbaa !9
  %7197 = load i32, ptr %58, align 4, !tbaa !9
  %7198 = add nsw i32 %7196, %7197
  %7199 = load i32, ptr %29, align 4, !tbaa !9
  %7200 = mul nsw i32 %7198, %7199
  %7201 = add nsw i32 %7195, %7200
  %7202 = sext i32 %7201 to i64
  %7203 = getelementptr inbounds %struct.doublecomplex, ptr %7191, i64 %7202
  %7204 = load ptr, ptr %27, align 8, !tbaa !5
  %7205 = load i32, ptr %65, align 4, !tbaa !9
  %7206 = sext i32 %7205 to i64
  %7207 = getelementptr inbounds double, ptr %7204, i64 %7206
  %7208 = load ptr, ptr %26, align 8, !tbaa !5
  %7209 = load i32, ptr %65, align 4, !tbaa !9
  %7210 = sext i32 %7209 to i64
  %7211 = getelementptr inbounds %struct.doublecomplex, ptr %7208, i64 %7210
  call void @zlartv_(ptr noundef %69, ptr noundef %7190, ptr noundef %54, ptr noundef %7203, ptr noundef %54, ptr noundef %7207, ptr noundef %7211, ptr noundef %72)
  br label %7212

7212:                                             ; preds = %7178
  %7213 = load i32, ptr %58, align 4, !tbaa !9
  %7214 = add nsw i32 %7213, 1
  store i32 %7214, ptr %58, align 4, !tbaa !9
  br label %7174, !llvm.loop !71

7215:                                             ; preds = %7174
  %7216 = load ptr, ptr %20, align 8, !tbaa !5
  %7217 = load i32, ptr %72, align 4, !tbaa !9
  %7218 = load i32, ptr %65, align 4, !tbaa !9
  %7219 = load i32, ptr %29, align 4, !tbaa !9
  %7220 = mul nsw i32 %7218, %7219
  %7221 = add nsw i32 %7217, %7220
  %7222 = sext i32 %7221 to i64
  %7223 = getelementptr inbounds %struct.doublecomplex, ptr %7216, i64 %7222
  %7224 = load ptr, ptr %20, align 8, !tbaa !5
  %7225 = load i32, ptr %72, align 4, !tbaa !9
  %7226 = load i32, ptr %65, align 4, !tbaa !9
  %7227 = sub nsw i32 %7226, 1
  %7228 = load i32, ptr %29, align 4, !tbaa !9
  %7229 = mul nsw i32 %7227, %7228
  %7230 = add nsw i32 %7225, %7229
  %7231 = sext i32 %7230 to i64
  %7232 = getelementptr inbounds %struct.doublecomplex, ptr %7224, i64 %7231
  %7233 = load ptr, ptr %20, align 8, !tbaa !5
  %7234 = load ptr, ptr %18, align 8, !tbaa !5
  %7235 = load i32, ptr %7234, align 4, !tbaa !9
  %7236 = load i32, ptr %65, align 4, !tbaa !9
  %7237 = load i32, ptr %29, align 4, !tbaa !9
  %7238 = mul nsw i32 %7236, %7237
  %7239 = add nsw i32 %7235, %7238
  %7240 = sext i32 %7239 to i64
  %7241 = getelementptr inbounds %struct.doublecomplex, ptr %7233, i64 %7240
  %7242 = load ptr, ptr %27, align 8, !tbaa !5
  %7243 = load i32, ptr %65, align 4, !tbaa !9
  %7244 = sext i32 %7243 to i64
  %7245 = getelementptr inbounds double, ptr %7242, i64 %7244
  %7246 = load ptr, ptr %26, align 8, !tbaa !5
  %7247 = load i32, ptr %65, align 4, !tbaa !9
  %7248 = sext i32 %7247 to i64
  %7249 = getelementptr inbounds %struct.doublecomplex, ptr %7246, i64 %7248
  call void @zlar2v_(ptr noundef %69, ptr noundef %7223, ptr noundef %7232, ptr noundef %7241, ptr noundef %54, ptr noundef %7245, ptr noundef %7249, ptr noundef %72)
  %7250 = load ptr, ptr %26, align 8, !tbaa !5
  %7251 = load i32, ptr %65, align 4, !tbaa !9
  %7252 = sext i32 %7251 to i64
  %7253 = getelementptr inbounds %struct.doublecomplex, ptr %7250, i64 %7252
  call void @zlacgv_(ptr noundef %69, ptr noundef %7253, ptr noundef %72)
  br label %7254

7254:                                             ; preds = %7215, %7167
  %7255 = load ptr, ptr %19, align 8, !tbaa !5
  %7256 = load i32, ptr %7255, align 4, !tbaa !9
  %7257 = load i32, ptr %57, align 4, !tbaa !9
  %7258 = sub nsw i32 %7256, %7257
  %7259 = add nsw i32 %7258, 1
  store i32 %7259, ptr %35, align 4, !tbaa !9
  %7260 = load ptr, ptr %18, align 8, !tbaa !5
  %7261 = load i32, ptr %7260, align 4, !tbaa !9
  %7262 = sub nsw i32 %7261, 1
  store i32 %7262, ptr %58, align 4, !tbaa !9
  br label %7263

7263:                                             ; preds = %7310, %7254
  %7264 = load i32, ptr %58, align 4, !tbaa !9
  %7265 = load i32, ptr %35, align 4, !tbaa !9
  %7266 = icmp sge i32 %7264, %7265
  br i1 %7266, label %7267, label %7313

7267:                                             ; preds = %7263
  %7268 = load i32, ptr %66, align 4, !tbaa !9
  %7269 = load i32, ptr %58, align 4, !tbaa !9
  %7270 = add nsw i32 %7268, %7269
  %7271 = sub nsw i32 %7270, 1
  %7272 = load i32, ptr %72, align 4, !tbaa !9
  %7273 = sdiv i32 %7271, %7272
  store i32 %7273, ptr %79, align 4, !tbaa !9
  %7274 = load i32, ptr %66, align 4, !tbaa !9
  %7275 = load i32, ptr %79, align 4, !tbaa !9
  %7276 = sub nsw i32 %7275, 1
  %7277 = load i32, ptr %72, align 4, !tbaa !9
  %7278 = mul nsw i32 %7276, %7277
  %7279 = sub nsw i32 %7274, %7278
  store i32 %7279, ptr %75, align 4, !tbaa !9
  %7280 = load i32, ptr %79, align 4, !tbaa !9
  %7281 = icmp sgt i32 %7280, 0
  br i1 %7281, label %7282, label %7309

7282:                                             ; preds = %7267
  %7283 = load ptr, ptr %20, align 8, !tbaa !5
  %7284 = load i32, ptr %58, align 4, !tbaa !9
  %7285 = load i32, ptr %75, align 4, !tbaa !9
  %7286 = load i32, ptr %29, align 4, !tbaa !9
  %7287 = mul nsw i32 %7285, %7286
  %7288 = add nsw i32 %7284, %7287
  %7289 = sext i32 %7288 to i64
  %7290 = getelementptr inbounds %struct.doublecomplex, ptr %7283, i64 %7289
  %7291 = load ptr, ptr %20, align 8, !tbaa !5
  %7292 = load i32, ptr %58, align 4, !tbaa !9
  %7293 = add nsw i32 %7292, 1
  %7294 = load i32, ptr %75, align 4, !tbaa !9
  %7295 = sub nsw i32 %7294, 1
  %7296 = load i32, ptr %29, align 4, !tbaa !9
  %7297 = mul nsw i32 %7295, %7296
  %7298 = add nsw i32 %7293, %7297
  %7299 = sext i32 %7298 to i64
  %7300 = getelementptr inbounds %struct.doublecomplex, ptr %7291, i64 %7299
  %7301 = load ptr, ptr %27, align 8, !tbaa !5
  %7302 = load i32, ptr %75, align 4, !tbaa !9
  %7303 = sext i32 %7302 to i64
  %7304 = getelementptr inbounds double, ptr %7301, i64 %7303
  %7305 = load ptr, ptr %26, align 8, !tbaa !5
  %7306 = load i32, ptr %75, align 4, !tbaa !9
  %7307 = sext i32 %7306 to i64
  %7308 = getelementptr inbounds %struct.doublecomplex, ptr %7305, i64 %7307
  call void @zlartv_(ptr noundef %79, ptr noundef %7290, ptr noundef %54, ptr noundef %7300, ptr noundef %54, ptr noundef %7304, ptr noundef %7308, ptr noundef %72)
  br label %7309

7309:                                             ; preds = %7282, %7267
  br label %7310

7310:                                             ; preds = %7309
  %7311 = load i32, ptr %58, align 4, !tbaa !9
  %7312 = add nsw i32 %7311, -1
  store i32 %7312, ptr %58, align 4, !tbaa !9
  br label %7263, !llvm.loop !72

7313:                                             ; preds = %7263
  %7314 = load i32, ptr %67, align 4, !tbaa !9
  %7315 = icmp ne i32 %7314, 0
  br i1 %7315, label %7316, label %7365

7316:                                             ; preds = %7313
  %7317 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %7317, ptr %35, align 4, !tbaa !9
  %7318 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %7318, ptr %38, align 4, !tbaa !9
  %7319 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %7319, ptr %56, align 4, !tbaa !9
  br label %7320

7320:                                             ; preds = %7360, %7316
  %7321 = load i32, ptr %38, align 4, !tbaa !9
  %7322 = icmp slt i32 %7321, 0
  br i1 %7322, label %7323, label %7328

7323:                                             ; preds = %7320
  %7324 = load i32, ptr %56, align 4, !tbaa !9
  %7325 = load i32, ptr %35, align 4, !tbaa !9
  %7326 = icmp sge i32 %7324, %7325
  %7327 = zext i1 %7326 to i32
  br label %7333

7328:                                             ; preds = %7320
  %7329 = load i32, ptr %56, align 4, !tbaa !9
  %7330 = load i32, ptr %35, align 4, !tbaa !9
  %7331 = icmp sle i32 %7329, %7330
  %7332 = zext i1 %7331 to i32
  br label %7333

7333:                                             ; preds = %7328, %7323
  %7334 = phi i32 [ %7327, %7323 ], [ %7332, %7328 ]
  %7335 = icmp ne i32 %7334, 0
  br i1 %7335, label %7336, label %7364

7336:                                             ; preds = %7333
  %7337 = load ptr, ptr %24, align 8, !tbaa !5
  %7338 = load i32, ptr %56, align 4, !tbaa !9
  %7339 = load i32, ptr %33, align 4, !tbaa !9
  %7340 = mul nsw i32 %7338, %7339
  %7341 = add nsw i32 %7340, 1
  %7342 = sext i32 %7341 to i64
  %7343 = getelementptr inbounds %struct.doublecomplex, ptr %7337, i64 %7342
  %7344 = load ptr, ptr %24, align 8, !tbaa !5
  %7345 = load i32, ptr %56, align 4, !tbaa !9
  %7346 = sub nsw i32 %7345, 1
  %7347 = load i32, ptr %33, align 4, !tbaa !9
  %7348 = mul nsw i32 %7346, %7347
  %7349 = add nsw i32 %7348, 1
  %7350 = sext i32 %7349 to i64
  %7351 = getelementptr inbounds %struct.doublecomplex, ptr %7344, i64 %7350
  %7352 = load ptr, ptr %27, align 8, !tbaa !5
  %7353 = load i32, ptr %56, align 4, !tbaa !9
  %7354 = sext i32 %7353 to i64
  %7355 = getelementptr inbounds double, ptr %7352, i64 %7354
  %7356 = load ptr, ptr %26, align 8, !tbaa !5
  %7357 = load i32, ptr %56, align 4, !tbaa !9
  %7358 = sext i32 %7357 to i64
  %7359 = getelementptr inbounds %struct.doublecomplex, ptr %7356, i64 %7358
  call void @zrot_(ptr noundef %70, ptr noundef %7343, ptr noundef @c__1, ptr noundef %7351, ptr noundef @c__1, ptr noundef %7355, ptr noundef %7359)
  br label %7360

7360:                                             ; preds = %7336
  %7361 = load i32, ptr %38, align 4, !tbaa !9
  %7362 = load i32, ptr %56, align 4, !tbaa !9
  %7363 = add nsw i32 %7362, %7361
  store i32 %7363, ptr %56, align 4, !tbaa !9
  br label %7320, !llvm.loop !73

7364:                                             ; preds = %7333
  br label %7365

7365:                                             ; preds = %7364, %7313
  br label %7366

7366:                                             ; preds = %7365
  %7367 = load i32, ptr %57, align 4, !tbaa !9
  %7368 = add nsw i32 %7367, 1
  store i32 %7368, ptr %57, align 4, !tbaa !9
  br label %6575, !llvm.loop !74

7369:                                             ; preds = %6575
  %7370 = load i32, ptr %71, align 4, !tbaa !9
  %7371 = icmp ne i32 %7370, 0
  br i1 %7371, label %7372, label %7450

7372:                                             ; preds = %7369
  %7373 = load i32, ptr %64, align 4, !tbaa !9
  %7374 = icmp sgt i32 %7373, 0
  br i1 %7374, label %7375, label %7449

7375:                                             ; preds = %7372
  %7376 = load i32, ptr %78, align 4, !tbaa !9
  %7377 = icmp sgt i32 %7376, 0
  br i1 %7377, label %7378, label %7449

7378:                                             ; preds = %7375
  %7379 = load i32, ptr %59, align 4, !tbaa !9
  %7380 = load ptr, ptr %19, align 8, !tbaa !5
  %7381 = load i32, ptr %7380, align 4, !tbaa !9
  %7382 = sub nsw i32 %7379, %7381
  %7383 = load i32, ptr %55, align 4, !tbaa !9
  %7384 = add nsw i32 %7382, %7383
  %7385 = load i32, ptr %78, align 4, !tbaa !9
  %7386 = add nsw i32 %7384, %7385
  store i32 %7386, ptr %37, align 4, !tbaa !9
  %7387 = load i32, ptr %73, align 4, !tbaa !9
  %7388 = load i32, ptr %78, align 4, !tbaa !9
  %7389 = sub nsw i32 %7387, %7388
  %7390 = load i32, ptr %55, align 4, !tbaa !9
  %7391 = load i32, ptr %78, align 4, !tbaa !9
  %7392 = add nsw i32 %7390, %7391
  %7393 = load i32, ptr %31, align 4, !tbaa !9
  %7394 = mul nsw i32 %7392, %7393
  %7395 = add nsw i32 %7389, %7394
  store i32 %7395, ptr %38, align 4, !tbaa !9
  %7396 = load ptr, ptr %22, align 8, !tbaa !5
  %7397 = load i32, ptr %38, align 4, !tbaa !9
  %7398 = sext i32 %7397 to i64
  %7399 = getelementptr inbounds %struct.doublecomplex, ptr %7396, i64 %7398
  %7400 = getelementptr inbounds %struct.doublecomplex, ptr %7399, i32 0, i32 0
  %7401 = load double, ptr %7400, align 8, !tbaa !11
  %7402 = fneg double %7401
  %7403 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %7402, ptr %7403, align 8, !tbaa !11
  %7404 = load ptr, ptr %22, align 8, !tbaa !5
  %7405 = load i32, ptr %38, align 4, !tbaa !9
  %7406 = sext i32 %7405 to i64
  %7407 = getelementptr inbounds %struct.doublecomplex, ptr %7404, i64 %7406
  %7408 = getelementptr inbounds %struct.doublecomplex, ptr %7407, i32 0, i32 1
  %7409 = load double, ptr %7408, align 8, !tbaa !15
  %7410 = fneg double %7409
  %7411 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %7410, ptr %7411, align 8, !tbaa !15
  %7412 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %7413 = load double, ptr %7412, align 8, !tbaa !11
  %7414 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %7415 = load double, ptr %7414, align 8, !tbaa !11
  %7416 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %7417 = load double, ptr %7416, align 8, !tbaa !15
  %7418 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %7419 = load double, ptr %7418, align 8, !tbaa !15
  %7420 = fmul double %7417, %7419
  %7421 = fneg double %7420
  %7422 = call double @llvm.fmuladd.f64(double %7413, double %7415, double %7421)
  %7423 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %7422, ptr %7423, align 8, !tbaa !11
  %7424 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %7425 = load double, ptr %7424, align 8, !tbaa !11
  %7426 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %7427 = load double, ptr %7426, align 8, !tbaa !15
  %7428 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %7429 = load double, ptr %7428, align 8, !tbaa !15
  %7430 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %7431 = load double, ptr %7430, align 8, !tbaa !11
  %7432 = fmul double %7429, %7431
  %7433 = call double @llvm.fmuladd.f64(double %7425, double %7427, double %7432)
  %7434 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %7433, ptr %7434, align 8, !tbaa !15
  %7435 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %7436 = load double, ptr %7435, align 8, !tbaa !11
  %7437 = load ptr, ptr %26, align 8, !tbaa !5
  %7438 = load i32, ptr %37, align 4, !tbaa !9
  %7439 = sext i32 %7438 to i64
  %7440 = getelementptr inbounds %struct.doublecomplex, ptr %7437, i64 %7439
  %7441 = getelementptr inbounds %struct.doublecomplex, ptr %7440, i32 0, i32 0
  store double %7436, ptr %7441, align 8, !tbaa !11
  %7442 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %7443 = load double, ptr %7442, align 8, !tbaa !15
  %7444 = load ptr, ptr %26, align 8, !tbaa !5
  %7445 = load i32, ptr %37, align 4, !tbaa !9
  %7446 = sext i32 %7445 to i64
  %7447 = getelementptr inbounds %struct.doublecomplex, ptr %7444, i64 %7446
  %7448 = getelementptr inbounds %struct.doublecomplex, ptr %7447, i32 0, i32 1
  store double %7443, ptr %7448, align 8, !tbaa !15
  br label %7449

7449:                                             ; preds = %7378, %7375, %7372
  br label %7450

7450:                                             ; preds = %7449, %7369
  %7451 = load ptr, ptr %19, align 8, !tbaa !5
  %7452 = load i32, ptr %7451, align 4, !tbaa !9
  store i32 %7452, ptr %57, align 4, !tbaa !9
  br label %7453

7453:                                             ; preds = %7912, %7450
  %7454 = load i32, ptr %57, align 4, !tbaa !9
  %7455 = icmp sge i32 %7454, 1
  br i1 %7455, label %7456, label %7915

7456:                                             ; preds = %7453
  %7457 = load i32, ptr %71, align 4, !tbaa !9
  %7458 = icmp ne i32 %7457, 0
  br i1 %7458, label %7459, label %7481

7459:                                             ; preds = %7456
  store i32 2, ptr %37, align 4, !tbaa !9
  %7460 = load i32, ptr %57, align 4, !tbaa !9
  %7461 = load i32, ptr %61, align 4, !tbaa !9
  %7462 = add nsw i32 %7460, %7461
  %7463 = load i32, ptr %59, align 4, !tbaa !9
  %7464 = sub nsw i32 %7462, %7463
  store i32 %7464, ptr %38, align 4, !tbaa !9
  %7465 = load i32, ptr %55, align 4, !tbaa !9
  %7466 = load i32, ptr %57, align 4, !tbaa !9
  %7467 = add nsw i32 %7465, %7466
  %7468 = add nsw i32 %7467, 1
  %7469 = load i32, ptr %37, align 4, !tbaa !9
  %7470 = load i32, ptr %38, align 4, !tbaa !9
  %7471 = icmp sge i32 %7469, %7470
  br i1 %7471, label %7472, label %7474

7472:                                             ; preds = %7459
  %7473 = load i32, ptr %37, align 4, !tbaa !9
  br label %7476

7474:                                             ; preds = %7459
  %7475 = load i32, ptr %38, align 4, !tbaa !9
  br label %7476

7476:                                             ; preds = %7474, %7472
  %7477 = phi i32 [ %7473, %7472 ], [ %7475, %7474 ]
  %7478 = load i32, ptr %72, align 4, !tbaa !9
  %7479 = mul nsw i32 %7477, %7478
  %7480 = sub nsw i32 %7468, %7479
  store i32 %7480, ptr %66, align 4, !tbaa !9
  br label %7503

7481:                                             ; preds = %7456
  store i32 1, ptr %37, align 4, !tbaa !9
  %7482 = load i32, ptr %57, align 4, !tbaa !9
  %7483 = load i32, ptr %61, align 4, !tbaa !9
  %7484 = add nsw i32 %7482, %7483
  %7485 = load i32, ptr %59, align 4, !tbaa !9
  %7486 = sub nsw i32 %7484, %7485
  store i32 %7486, ptr %38, align 4, !tbaa !9
  %7487 = load i32, ptr %55, align 4, !tbaa !9
  %7488 = load i32, ptr %57, align 4, !tbaa !9
  %7489 = add nsw i32 %7487, %7488
  %7490 = add nsw i32 %7489, 1
  %7491 = load i32, ptr %37, align 4, !tbaa !9
  %7492 = load i32, ptr %38, align 4, !tbaa !9
  %7493 = icmp sge i32 %7491, %7492
  br i1 %7493, label %7494, label %7496

7494:                                             ; preds = %7481
  %7495 = load i32, ptr %37, align 4, !tbaa !9
  br label %7498

7496:                                             ; preds = %7481
  %7497 = load i32, ptr %38, align 4, !tbaa !9
  br label %7498

7498:                                             ; preds = %7496, %7494
  %7499 = phi i32 [ %7495, %7494 ], [ %7497, %7496 ]
  %7500 = load i32, ptr %72, align 4, !tbaa !9
  %7501 = mul nsw i32 %7499, %7500
  %7502 = sub nsw i32 %7490, %7501
  store i32 %7502, ptr %66, align 4, !tbaa !9
  br label %7503

7503:                                             ; preds = %7498, %7476
  %7504 = load ptr, ptr %19, align 8, !tbaa !5
  %7505 = load i32, ptr %7504, align 4, !tbaa !9
  %7506 = load i32, ptr %57, align 4, !tbaa !9
  %7507 = sub nsw i32 %7505, %7506
  store i32 %7507, ptr %58, align 4, !tbaa !9
  br label %7508

7508:                                             ; preds = %7579, %7503
  %7509 = load i32, ptr %58, align 4, !tbaa !9
  %7510 = icmp sge i32 %7509, 1
  br i1 %7510, label %7511, label %7582

7511:                                             ; preds = %7508
  %7512 = load i32, ptr %66, align 4, !tbaa !9
  %7513 = load ptr, ptr %18, align 8, !tbaa !5
  %7514 = load i32, ptr %7513, align 4, !tbaa !9
  %7515 = add nsw i32 %7512, %7514
  %7516 = load i32, ptr %58, align 4, !tbaa !9
  %7517 = add nsw i32 %7515, %7516
  %7518 = sub nsw i32 %7517, 1
  %7519 = load i32, ptr %72, align 4, !tbaa !9
  %7520 = sdiv i32 %7518, %7519
  store i32 %7520, ptr %79, align 4, !tbaa !9
  %7521 = load i32, ptr %66, align 4, !tbaa !9
  %7522 = load i32, ptr %79, align 4, !tbaa !9
  %7523 = sub nsw i32 %7522, 1
  %7524 = load i32, ptr %72, align 4, !tbaa !9
  %7525 = mul nsw i32 %7523, %7524
  %7526 = sub nsw i32 %7521, %7525
  store i32 %7526, ptr %75, align 4, !tbaa !9
  %7527 = load i32, ptr %79, align 4, !tbaa !9
  %7528 = icmp sgt i32 %7527, 0
  br i1 %7528, label %7529, label %7578

7529:                                             ; preds = %7511
  %7530 = load ptr, ptr %20, align 8, !tbaa !5
  %7531 = load i32, ptr %58, align 4, !tbaa !9
  %7532 = load i32, ptr %75, align 4, !tbaa !9
  %7533 = load ptr, ptr %18, align 8, !tbaa !5
  %7534 = load i32, ptr %7533, align 4, !tbaa !9
  %7535 = add nsw i32 %7532, %7534
  %7536 = load i32, ptr %29, align 4, !tbaa !9
  %7537 = mul nsw i32 %7535, %7536
  %7538 = add nsw i32 %7531, %7537
  %7539 = sext i32 %7538 to i64
  %7540 = getelementptr inbounds %struct.doublecomplex, ptr %7530, i64 %7539
  %7541 = load ptr, ptr %20, align 8, !tbaa !5
  %7542 = load i32, ptr %58, align 4, !tbaa !9
  %7543 = add nsw i32 %7542, 1
  %7544 = load i32, ptr %75, align 4, !tbaa !9
  %7545 = load ptr, ptr %18, align 8, !tbaa !5
  %7546 = load i32, ptr %7545, align 4, !tbaa !9
  %7547 = add nsw i32 %7544, %7546
  %7548 = sub nsw i32 %7547, 1
  %7549 = load i32, ptr %29, align 4, !tbaa !9
  %7550 = mul nsw i32 %7548, %7549
  %7551 = add nsw i32 %7543, %7550
  %7552 = sext i32 %7551 to i64
  %7553 = getelementptr inbounds %struct.doublecomplex, ptr %7541, i64 %7552
  %7554 = load ptr, ptr %27, align 8, !tbaa !5
  %7555 = load i32, ptr %59, align 4, !tbaa !9
  %7556 = load ptr, ptr %19, align 8, !tbaa !5
  %7557 = load i32, ptr %7556, align 4, !tbaa !9
  %7558 = sub nsw i32 %7555, %7557
  %7559 = load i32, ptr %75, align 4, !tbaa !9
  %7560 = add nsw i32 %7558, %7559
  %7561 = load ptr, ptr %18, align 8, !tbaa !5
  %7562 = load i32, ptr %7561, align 4, !tbaa !9
  %7563 = add nsw i32 %7560, %7562
  %7564 = sext i32 %7563 to i64
  %7565 = getelementptr inbounds double, ptr %7554, i64 %7564
  %7566 = load ptr, ptr %26, align 8, !tbaa !5
  %7567 = load i32, ptr %59, align 4, !tbaa !9
  %7568 = load ptr, ptr %19, align 8, !tbaa !5
  %7569 = load i32, ptr %7568, align 4, !tbaa !9
  %7570 = sub nsw i32 %7567, %7569
  %7571 = load i32, ptr %75, align 4, !tbaa !9
  %7572 = add nsw i32 %7570, %7571
  %7573 = load ptr, ptr %18, align 8, !tbaa !5
  %7574 = load i32, ptr %7573, align 4, !tbaa !9
  %7575 = add nsw i32 %7572, %7574
  %7576 = sext i32 %7575 to i64
  %7577 = getelementptr inbounds %struct.doublecomplex, ptr %7566, i64 %7576
  call void @zlartv_(ptr noundef %79, ptr noundef %7540, ptr noundef %54, ptr noundef %7553, ptr noundef %54, ptr noundef %7565, ptr noundef %7577, ptr noundef %72)
  br label %7578

7578:                                             ; preds = %7529, %7511
  br label %7579

7579:                                             ; preds = %7578
  %7580 = load i32, ptr %58, align 4, !tbaa !9
  %7581 = add nsw i32 %7580, -1
  store i32 %7581, ptr %58, align 4, !tbaa !9
  br label %7508, !llvm.loop !75

7582:                                             ; preds = %7508
  %7583 = load i32, ptr %66, align 4, !tbaa !9
  %7584 = load ptr, ptr %18, align 8, !tbaa !5
  %7585 = load i32, ptr %7584, align 4, !tbaa !9
  %7586 = add nsw i32 %7583, %7585
  %7587 = sub nsw i32 %7586, 1
  %7588 = load i32, ptr %72, align 4, !tbaa !9
  %7589 = sdiv i32 %7587, %7588
  store i32 %7589, ptr %69, align 4, !tbaa !9
  %7590 = load i32, ptr %66, align 4, !tbaa !9
  %7591 = load i32, ptr %69, align 4, !tbaa !9
  %7592 = sub nsw i32 %7591, 1
  %7593 = load i32, ptr %72, align 4, !tbaa !9
  %7594 = mul nsw i32 %7592, %7593
  %7595 = sub nsw i32 %7590, %7594
  store i32 %7595, ptr %65, align 4, !tbaa !9
  %7596 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %7596, ptr %37, align 4, !tbaa !9
  %7597 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %7597, ptr %38, align 4, !tbaa !9
  %7598 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %7598, ptr %56, align 4, !tbaa !9
  br label %7599

7599:                                             ; preds = %7675, %7582
  %7600 = load i32, ptr %38, align 4, !tbaa !9
  %7601 = icmp slt i32 %7600, 0
  br i1 %7601, label %7602, label %7607

7602:                                             ; preds = %7599
  %7603 = load i32, ptr %56, align 4, !tbaa !9
  %7604 = load i32, ptr %37, align 4, !tbaa !9
  %7605 = icmp sge i32 %7603, %7604
  %7606 = zext i1 %7605 to i32
  br label %7612

7607:                                             ; preds = %7599
  %7608 = load i32, ptr %56, align 4, !tbaa !9
  %7609 = load i32, ptr %37, align 4, !tbaa !9
  %7610 = icmp sle i32 %7608, %7609
  %7611 = zext i1 %7610 to i32
  br label %7612

7612:                                             ; preds = %7607, %7602
  %7613 = phi i32 [ %7606, %7602 ], [ %7611, %7607 ]
  %7614 = icmp ne i32 %7613, 0
  br i1 %7614, label %7615, label %7679

7615:                                             ; preds = %7612
  %7616 = load i32, ptr %59, align 4, !tbaa !9
  %7617 = load ptr, ptr %19, align 8, !tbaa !5
  %7618 = load i32, ptr %7617, align 4, !tbaa !9
  %7619 = sub nsw i32 %7616, %7618
  %7620 = load i32, ptr %56, align 4, !tbaa !9
  %7621 = add nsw i32 %7619, %7620
  store i32 %7621, ptr %35, align 4, !tbaa !9
  %7622 = load i32, ptr %59, align 4, !tbaa !9
  %7623 = load ptr, ptr %19, align 8, !tbaa !5
  %7624 = load i32, ptr %7623, align 4, !tbaa !9
  %7625 = sub nsw i32 %7622, %7624
  %7626 = load i32, ptr %56, align 4, !tbaa !9
  %7627 = add nsw i32 %7625, %7626
  %7628 = load ptr, ptr %18, align 8, !tbaa !5
  %7629 = load i32, ptr %7628, align 4, !tbaa !9
  %7630 = add nsw i32 %7627, %7629
  store i32 %7630, ptr %36, align 4, !tbaa !9
  %7631 = load ptr, ptr %26, align 8, !tbaa !5
  %7632 = load i32, ptr %36, align 4, !tbaa !9
  %7633 = sext i32 %7632 to i64
  %7634 = getelementptr inbounds %struct.doublecomplex, ptr %7631, i64 %7633
  %7635 = getelementptr inbounds %struct.doublecomplex, ptr %7634, i32 0, i32 0
  %7636 = load double, ptr %7635, align 8, !tbaa !11
  %7637 = load ptr, ptr %26, align 8, !tbaa !5
  %7638 = load i32, ptr %35, align 4, !tbaa !9
  %7639 = sext i32 %7638 to i64
  %7640 = getelementptr inbounds %struct.doublecomplex, ptr %7637, i64 %7639
  %7641 = getelementptr inbounds %struct.doublecomplex, ptr %7640, i32 0, i32 0
  store double %7636, ptr %7641, align 8, !tbaa !11
  %7642 = load ptr, ptr %26, align 8, !tbaa !5
  %7643 = load i32, ptr %36, align 4, !tbaa !9
  %7644 = sext i32 %7643 to i64
  %7645 = getelementptr inbounds %struct.doublecomplex, ptr %7642, i64 %7644
  %7646 = getelementptr inbounds %struct.doublecomplex, ptr %7645, i32 0, i32 1
  %7647 = load double, ptr %7646, align 8, !tbaa !15
  %7648 = load ptr, ptr %26, align 8, !tbaa !5
  %7649 = load i32, ptr %35, align 4, !tbaa !9
  %7650 = sext i32 %7649 to i64
  %7651 = getelementptr inbounds %struct.doublecomplex, ptr %7648, i64 %7650
  %7652 = getelementptr inbounds %struct.doublecomplex, ptr %7651, i32 0, i32 1
  store double %7647, ptr %7652, align 8, !tbaa !15
  %7653 = load ptr, ptr %27, align 8, !tbaa !5
  %7654 = load i32, ptr %59, align 4, !tbaa !9
  %7655 = load ptr, ptr %19, align 8, !tbaa !5
  %7656 = load i32, ptr %7655, align 4, !tbaa !9
  %7657 = sub nsw i32 %7654, %7656
  %7658 = load i32, ptr %56, align 4, !tbaa !9
  %7659 = add nsw i32 %7657, %7658
  %7660 = load ptr, ptr %18, align 8, !tbaa !5
  %7661 = load i32, ptr %7660, align 4, !tbaa !9
  %7662 = add nsw i32 %7659, %7661
  %7663 = sext i32 %7662 to i64
  %7664 = getelementptr inbounds double, ptr %7653, i64 %7663
  %7665 = load double, ptr %7664, align 8, !tbaa !14
  %7666 = load ptr, ptr %27, align 8, !tbaa !5
  %7667 = load i32, ptr %59, align 4, !tbaa !9
  %7668 = load ptr, ptr %19, align 8, !tbaa !5
  %7669 = load i32, ptr %7668, align 4, !tbaa !9
  %7670 = sub nsw i32 %7667, %7669
  %7671 = load i32, ptr %56, align 4, !tbaa !9
  %7672 = add nsw i32 %7670, %7671
  %7673 = sext i32 %7672 to i64
  %7674 = getelementptr inbounds double, ptr %7666, i64 %7673
  store double %7665, ptr %7674, align 8, !tbaa !14
  br label %7675

7675:                                             ; preds = %7615
  %7676 = load i32, ptr %38, align 4, !tbaa !9
  %7677 = load i32, ptr %56, align 4, !tbaa !9
  %7678 = add nsw i32 %7677, %7676
  store i32 %7678, ptr %56, align 4, !tbaa !9
  br label %7599, !llvm.loop !76

7679:                                             ; preds = %7612
  %7680 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %7680, ptr %38, align 4, !tbaa !9
  %7681 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %7681, ptr %37, align 4, !tbaa !9
  %7682 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %7682, ptr %56, align 4, !tbaa !9
  br label %7683

7683:                                             ; preds = %7851, %7679
  %7684 = load i32, ptr %37, align 4, !tbaa !9
  %7685 = icmp slt i32 %7684, 0
  br i1 %7685, label %7686, label %7691

7686:                                             ; preds = %7683
  %7687 = load i32, ptr %56, align 4, !tbaa !9
  %7688 = load i32, ptr %38, align 4, !tbaa !9
  %7689 = icmp sge i32 %7687, %7688
  %7690 = zext i1 %7689 to i32
  br label %7696

7691:                                             ; preds = %7683
  %7692 = load i32, ptr %56, align 4, !tbaa !9
  %7693 = load i32, ptr %38, align 4, !tbaa !9
  %7694 = icmp sle i32 %7692, %7693
  %7695 = zext i1 %7694 to i32
  br label %7696

7696:                                             ; preds = %7691, %7686
  %7697 = phi i32 [ %7690, %7686 ], [ %7695, %7691 ]
  %7698 = icmp ne i32 %7697, 0
  br i1 %7698, label %7699, label %7855

7699:                                             ; preds = %7696
  %7700 = load i32, ptr %59, align 4, !tbaa !9
  %7701 = load ptr, ptr %19, align 8, !tbaa !5
  %7702 = load i32, ptr %7701, align 4, !tbaa !9
  %7703 = sub nsw i32 %7700, %7702
  %7704 = load i32, ptr %56, align 4, !tbaa !9
  %7705 = add nsw i32 %7703, %7704
  store i32 %7705, ptr %35, align 4, !tbaa !9
  %7706 = load i32, ptr %59, align 4, !tbaa !9
  %7707 = load ptr, ptr %19, align 8, !tbaa !5
  %7708 = load i32, ptr %7707, align 4, !tbaa !9
  %7709 = sub nsw i32 %7706, %7708
  %7710 = load i32, ptr %56, align 4, !tbaa !9
  %7711 = add nsw i32 %7709, %7710
  store i32 %7711, ptr %36, align 4, !tbaa !9
  %7712 = load i32, ptr %56, align 4, !tbaa !9
  %7713 = load ptr, ptr %18, align 8, !tbaa !5
  %7714 = load i32, ptr %7713, align 4, !tbaa !9
  %7715 = add nsw i32 %7712, %7714
  %7716 = sub nsw i32 %7715, 1
  %7717 = load i32, ptr %29, align 4, !tbaa !9
  %7718 = mul nsw i32 %7716, %7717
  %7719 = add nsw i32 %7718, 1
  store i32 %7719, ptr %39, align 4, !tbaa !9
  %7720 = load ptr, ptr %26, align 8, !tbaa !5
  %7721 = load i32, ptr %36, align 4, !tbaa !9
  %7722 = sext i32 %7721 to i64
  %7723 = getelementptr inbounds %struct.doublecomplex, ptr %7720, i64 %7722
  %7724 = getelementptr inbounds %struct.doublecomplex, ptr %7723, i32 0, i32 0
  %7725 = load double, ptr %7724, align 8, !tbaa !11
  %7726 = load ptr, ptr %20, align 8, !tbaa !5
  %7727 = load i32, ptr %39, align 4, !tbaa !9
  %7728 = sext i32 %7727 to i64
  %7729 = getelementptr inbounds %struct.doublecomplex, ptr %7726, i64 %7728
  %7730 = getelementptr inbounds %struct.doublecomplex, ptr %7729, i32 0, i32 0
  %7731 = load double, ptr %7730, align 8, !tbaa !11
  %7732 = load ptr, ptr %26, align 8, !tbaa !5
  %7733 = load i32, ptr %36, align 4, !tbaa !9
  %7734 = sext i32 %7733 to i64
  %7735 = getelementptr inbounds %struct.doublecomplex, ptr %7732, i64 %7734
  %7736 = getelementptr inbounds %struct.doublecomplex, ptr %7735, i32 0, i32 1
  %7737 = load double, ptr %7736, align 8, !tbaa !15
  %7738 = load ptr, ptr %20, align 8, !tbaa !5
  %7739 = load i32, ptr %39, align 4, !tbaa !9
  %7740 = sext i32 %7739 to i64
  %7741 = getelementptr inbounds %struct.doublecomplex, ptr %7738, i64 %7740
  %7742 = getelementptr inbounds %struct.doublecomplex, ptr %7741, i32 0, i32 1
  %7743 = load double, ptr %7742, align 8, !tbaa !15
  %7744 = fmul double %7737, %7743
  %7745 = fneg double %7744
  %7746 = call double @llvm.fmuladd.f64(double %7725, double %7731, double %7745)
  %7747 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %7746, ptr %7747, align 8, !tbaa !11
  %7748 = load ptr, ptr %26, align 8, !tbaa !5
  %7749 = load i32, ptr %36, align 4, !tbaa !9
  %7750 = sext i32 %7749 to i64
  %7751 = getelementptr inbounds %struct.doublecomplex, ptr %7748, i64 %7750
  %7752 = getelementptr inbounds %struct.doublecomplex, ptr %7751, i32 0, i32 0
  %7753 = load double, ptr %7752, align 8, !tbaa !11
  %7754 = load ptr, ptr %20, align 8, !tbaa !5
  %7755 = load i32, ptr %39, align 4, !tbaa !9
  %7756 = sext i32 %7755 to i64
  %7757 = getelementptr inbounds %struct.doublecomplex, ptr %7754, i64 %7756
  %7758 = getelementptr inbounds %struct.doublecomplex, ptr %7757, i32 0, i32 1
  %7759 = load double, ptr %7758, align 8, !tbaa !15
  %7760 = load ptr, ptr %26, align 8, !tbaa !5
  %7761 = load i32, ptr %36, align 4, !tbaa !9
  %7762 = sext i32 %7761 to i64
  %7763 = getelementptr inbounds %struct.doublecomplex, ptr %7760, i64 %7762
  %7764 = getelementptr inbounds %struct.doublecomplex, ptr %7763, i32 0, i32 1
  %7765 = load double, ptr %7764, align 8, !tbaa !15
  %7766 = load ptr, ptr %20, align 8, !tbaa !5
  %7767 = load i32, ptr %39, align 4, !tbaa !9
  %7768 = sext i32 %7767 to i64
  %7769 = getelementptr inbounds %struct.doublecomplex, ptr %7766, i64 %7768
  %7770 = getelementptr inbounds %struct.doublecomplex, ptr %7769, i32 0, i32 0
  %7771 = load double, ptr %7770, align 8, !tbaa !11
  %7772 = fmul double %7765, %7771
  %7773 = call double @llvm.fmuladd.f64(double %7753, double %7759, double %7772)
  %7774 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %7773, ptr %7774, align 8, !tbaa !15
  %7775 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %7776 = load double, ptr %7775, align 8, !tbaa !11
  %7777 = load ptr, ptr %26, align 8, !tbaa !5
  %7778 = load i32, ptr %35, align 4, !tbaa !9
  %7779 = sext i32 %7778 to i64
  %7780 = getelementptr inbounds %struct.doublecomplex, ptr %7777, i64 %7779
  %7781 = getelementptr inbounds %struct.doublecomplex, ptr %7780, i32 0, i32 0
  store double %7776, ptr %7781, align 8, !tbaa !11
  %7782 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %7783 = load double, ptr %7782, align 8, !tbaa !15
  %7784 = load ptr, ptr %26, align 8, !tbaa !5
  %7785 = load i32, ptr %35, align 4, !tbaa !9
  %7786 = sext i32 %7785 to i64
  %7787 = getelementptr inbounds %struct.doublecomplex, ptr %7784, i64 %7786
  %7788 = getelementptr inbounds %struct.doublecomplex, ptr %7787, i32 0, i32 1
  store double %7783, ptr %7788, align 8, !tbaa !15
  %7789 = load i32, ptr %56, align 4, !tbaa !9
  %7790 = load ptr, ptr %18, align 8, !tbaa !5
  %7791 = load i32, ptr %7790, align 4, !tbaa !9
  %7792 = add nsw i32 %7789, %7791
  %7793 = sub nsw i32 %7792, 1
  %7794 = load i32, ptr %29, align 4, !tbaa !9
  %7795 = mul nsw i32 %7793, %7794
  %7796 = add nsw i32 %7795, 1
  store i32 %7796, ptr %35, align 4, !tbaa !9
  %7797 = load i32, ptr %59, align 4, !tbaa !9
  %7798 = load ptr, ptr %19, align 8, !tbaa !5
  %7799 = load i32, ptr %7798, align 4, !tbaa !9
  %7800 = sub nsw i32 %7797, %7799
  %7801 = load i32, ptr %56, align 4, !tbaa !9
  %7802 = add nsw i32 %7800, %7801
  store i32 %7802, ptr %36, align 4, !tbaa !9
  %7803 = load i32, ptr %56, align 4, !tbaa !9
  %7804 = load ptr, ptr %18, align 8, !tbaa !5
  %7805 = load i32, ptr %7804, align 4, !tbaa !9
  %7806 = add nsw i32 %7803, %7805
  %7807 = sub nsw i32 %7806, 1
  %7808 = load i32, ptr %29, align 4, !tbaa !9
  %7809 = mul nsw i32 %7807, %7808
  %7810 = add nsw i32 %7809, 1
  store i32 %7810, ptr %39, align 4, !tbaa !9
  %7811 = load ptr, ptr %27, align 8, !tbaa !5
  %7812 = load i32, ptr %36, align 4, !tbaa !9
  %7813 = sext i32 %7812 to i64
  %7814 = getelementptr inbounds double, ptr %7811, i64 %7813
  %7815 = load double, ptr %7814, align 8, !tbaa !14
  %7816 = load ptr, ptr %20, align 8, !tbaa !5
  %7817 = load i32, ptr %39, align 4, !tbaa !9
  %7818 = sext i32 %7817 to i64
  %7819 = getelementptr inbounds %struct.doublecomplex, ptr %7816, i64 %7818
  %7820 = getelementptr inbounds %struct.doublecomplex, ptr %7819, i32 0, i32 0
  %7821 = load double, ptr %7820, align 8, !tbaa !11
  %7822 = fmul double %7815, %7821
  %7823 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %7822, ptr %7823, align 8, !tbaa !11
  %7824 = load ptr, ptr %27, align 8, !tbaa !5
  %7825 = load i32, ptr %36, align 4, !tbaa !9
  %7826 = sext i32 %7825 to i64
  %7827 = getelementptr inbounds double, ptr %7824, i64 %7826
  %7828 = load double, ptr %7827, align 8, !tbaa !14
  %7829 = load ptr, ptr %20, align 8, !tbaa !5
  %7830 = load i32, ptr %39, align 4, !tbaa !9
  %7831 = sext i32 %7830 to i64
  %7832 = getelementptr inbounds %struct.doublecomplex, ptr %7829, i64 %7831
  %7833 = getelementptr inbounds %struct.doublecomplex, ptr %7832, i32 0, i32 1
  %7834 = load double, ptr %7833, align 8, !tbaa !15
  %7835 = fmul double %7828, %7834
  %7836 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %7835, ptr %7836, align 8, !tbaa !15
  %7837 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %7838 = load double, ptr %7837, align 8, !tbaa !11
  %7839 = load ptr, ptr %20, align 8, !tbaa !5
  %7840 = load i32, ptr %35, align 4, !tbaa !9
  %7841 = sext i32 %7840 to i64
  %7842 = getelementptr inbounds %struct.doublecomplex, ptr %7839, i64 %7841
  %7843 = getelementptr inbounds %struct.doublecomplex, ptr %7842, i32 0, i32 0
  store double %7838, ptr %7843, align 8, !tbaa !11
  %7844 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %7845 = load double, ptr %7844, align 8, !tbaa !15
  %7846 = load ptr, ptr %20, align 8, !tbaa !5
  %7847 = load i32, ptr %35, align 4, !tbaa !9
  %7848 = sext i32 %7847 to i64
  %7849 = getelementptr inbounds %struct.doublecomplex, ptr %7846, i64 %7848
  %7850 = getelementptr inbounds %struct.doublecomplex, ptr %7849, i32 0, i32 1
  store double %7845, ptr %7850, align 8, !tbaa !15
  br label %7851

7851:                                             ; preds = %7699
  %7852 = load i32, ptr %37, align 4, !tbaa !9
  %7853 = load i32, ptr %56, align 4, !tbaa !9
  %7854 = add nsw i32 %7853, %7852
  store i32 %7854, ptr %56, align 4, !tbaa !9
  br label %7683, !llvm.loop !77

7855:                                             ; preds = %7696
  %7856 = load i32, ptr %71, align 4, !tbaa !9
  %7857 = icmp ne i32 %7856, 0
  br i1 %7857, label %7858, label %7911

7858:                                             ; preds = %7855
  %7859 = load i32, ptr %55, align 4, !tbaa !9
  %7860 = load i32, ptr %57, align 4, !tbaa !9
  %7861 = add nsw i32 %7859, %7860
  %7862 = load i32, ptr %72, align 4, !tbaa !9
  %7863 = icmp sgt i32 %7861, %7862
  br i1 %7863, label %7864, label %7910

7864:                                             ; preds = %7858
  %7865 = load i32, ptr %57, align 4, !tbaa !9
  %7866 = load i32, ptr %78, align 4, !tbaa !9
  %7867 = icmp sle i32 %7865, %7866
  br i1 %7867, label %7868, label %7910

7868:                                             ; preds = %7864
  %7869 = load i32, ptr %59, align 4, !tbaa !9
  %7870 = load ptr, ptr %19, align 8, !tbaa !5
  %7871 = load i32, ptr %7870, align 4, !tbaa !9
  %7872 = sub nsw i32 %7869, %7871
  %7873 = load i32, ptr %55, align 4, !tbaa !9
  %7874 = add nsw i32 %7872, %7873
  %7875 = load i32, ptr %57, align 4, !tbaa !9
  %7876 = add nsw i32 %7874, %7875
  %7877 = load ptr, ptr %18, align 8, !tbaa !5
  %7878 = load i32, ptr %7877, align 4, !tbaa !9
  %7879 = sub nsw i32 %7876, %7878
  store i32 %7879, ptr %37, align 4, !tbaa !9
  %7880 = load i32, ptr %59, align 4, !tbaa !9
  %7881 = load ptr, ptr %19, align 8, !tbaa !5
  %7882 = load i32, ptr %7881, align 4, !tbaa !9
  %7883 = sub nsw i32 %7880, %7882
  %7884 = load i32, ptr %55, align 4, !tbaa !9
  %7885 = add nsw i32 %7883, %7884
  %7886 = load i32, ptr %57, align 4, !tbaa !9
  %7887 = add nsw i32 %7885, %7886
  store i32 %7887, ptr %38, align 4, !tbaa !9
  %7888 = load ptr, ptr %26, align 8, !tbaa !5
  %7889 = load i32, ptr %38, align 4, !tbaa !9
  %7890 = sext i32 %7889 to i64
  %7891 = getelementptr inbounds %struct.doublecomplex, ptr %7888, i64 %7890
  %7892 = getelementptr inbounds %struct.doublecomplex, ptr %7891, i32 0, i32 0
  %7893 = load double, ptr %7892, align 8, !tbaa !11
  %7894 = load ptr, ptr %26, align 8, !tbaa !5
  %7895 = load i32, ptr %37, align 4, !tbaa !9
  %7896 = sext i32 %7895 to i64
  %7897 = getelementptr inbounds %struct.doublecomplex, ptr %7894, i64 %7896
  %7898 = getelementptr inbounds %struct.doublecomplex, ptr %7897, i32 0, i32 0
  store double %7893, ptr %7898, align 8, !tbaa !11
  %7899 = load ptr, ptr %26, align 8, !tbaa !5
  %7900 = load i32, ptr %38, align 4, !tbaa !9
  %7901 = sext i32 %7900 to i64
  %7902 = getelementptr inbounds %struct.doublecomplex, ptr %7899, i64 %7901
  %7903 = getelementptr inbounds %struct.doublecomplex, ptr %7902, i32 0, i32 1
  %7904 = load double, ptr %7903, align 8, !tbaa !15
  %7905 = load ptr, ptr %26, align 8, !tbaa !5
  %7906 = load i32, ptr %37, align 4, !tbaa !9
  %7907 = sext i32 %7906 to i64
  %7908 = getelementptr inbounds %struct.doublecomplex, ptr %7905, i64 %7907
  %7909 = getelementptr inbounds %struct.doublecomplex, ptr %7908, i32 0, i32 1
  store double %7904, ptr %7909, align 8, !tbaa !15
  br label %7910

7910:                                             ; preds = %7868, %7864, %7858
  br label %7911

7911:                                             ; preds = %7910, %7855
  br label %7912

7912:                                             ; preds = %7911
  %7913 = load i32, ptr %57, align 4, !tbaa !9
  %7914 = add nsw i32 %7913, -1
  store i32 %7914, ptr %57, align 4, !tbaa !9
  br label %7453, !llvm.loop !78

7915:                                             ; preds = %7453
  %7916 = load ptr, ptr %19, align 8, !tbaa !5
  %7917 = load i32, ptr %7916, align 4, !tbaa !9
  store i32 %7917, ptr %57, align 4, !tbaa !9
  br label %7918

7918:                                             ; preds = %8227, %7915
  %7919 = load i32, ptr %57, align 4, !tbaa !9
  %7920 = icmp sge i32 %7919, 1
  br i1 %7920, label %7921, label %8230

7921:                                             ; preds = %7918
  store i32 1, ptr %37, align 4, !tbaa !9
  %7922 = load i32, ptr %57, align 4, !tbaa !9
  %7923 = load i32, ptr %61, align 4, !tbaa !9
  %7924 = add nsw i32 %7922, %7923
  %7925 = load i32, ptr %59, align 4, !tbaa !9
  %7926 = sub nsw i32 %7924, %7925
  store i32 %7926, ptr %38, align 4, !tbaa !9
  %7927 = load i32, ptr %55, align 4, !tbaa !9
  %7928 = load i32, ptr %57, align 4, !tbaa !9
  %7929 = add nsw i32 %7927, %7928
  %7930 = add nsw i32 %7929, 1
  %7931 = load i32, ptr %37, align 4, !tbaa !9
  %7932 = load i32, ptr %38, align 4, !tbaa !9
  %7933 = icmp sge i32 %7931, %7932
  br i1 %7933, label %7934, label %7936

7934:                                             ; preds = %7921
  %7935 = load i32, ptr %37, align 4, !tbaa !9
  br label %7938

7936:                                             ; preds = %7921
  %7937 = load i32, ptr %38, align 4, !tbaa !9
  br label %7938

7938:                                             ; preds = %7936, %7934
  %7939 = phi i32 [ %7935, %7934 ], [ %7937, %7936 ]
  %7940 = load i32, ptr %72, align 4, !tbaa !9
  %7941 = mul nsw i32 %7939, %7940
  %7942 = sub nsw i32 %7930, %7941
  store i32 %7942, ptr %66, align 4, !tbaa !9
  %7943 = load i32, ptr %66, align 4, !tbaa !9
  %7944 = load ptr, ptr %18, align 8, !tbaa !5
  %7945 = load i32, ptr %7944, align 4, !tbaa !9
  %7946 = add nsw i32 %7943, %7945
  %7947 = sub nsw i32 %7946, 1
  %7948 = load i32, ptr %72, align 4, !tbaa !9
  %7949 = sdiv i32 %7947, %7948
  store i32 %7949, ptr %69, align 4, !tbaa !9
  %7950 = load i32, ptr %66, align 4, !tbaa !9
  %7951 = load i32, ptr %69, align 4, !tbaa !9
  %7952 = sub nsw i32 %7951, 1
  %7953 = load i32, ptr %72, align 4, !tbaa !9
  %7954 = mul nsw i32 %7952, %7953
  %7955 = sub nsw i32 %7950, %7954
  store i32 %7955, ptr %65, align 4, !tbaa !9
  %7956 = load i32, ptr %69, align 4, !tbaa !9
  %7957 = icmp sgt i32 %7956, 0
  br i1 %7957, label %7958, label %8095

7958:                                             ; preds = %7938
  %7959 = load ptr, ptr %20, align 8, !tbaa !5
  %7960 = load i32, ptr %65, align 4, !tbaa !9
  %7961 = load ptr, ptr %18, align 8, !tbaa !5
  %7962 = load i32, ptr %7961, align 4, !tbaa !9
  %7963 = add nsw i32 %7960, %7962
  %7964 = load i32, ptr %29, align 4, !tbaa !9
  %7965 = mul nsw i32 %7963, %7964
  %7966 = add nsw i32 %7965, 1
  %7967 = sext i32 %7966 to i64
  %7968 = getelementptr inbounds %struct.doublecomplex, ptr %7959, i64 %7967
  %7969 = load ptr, ptr %26, align 8, !tbaa !5
  %7970 = load i32, ptr %59, align 4, !tbaa !9
  %7971 = load ptr, ptr %19, align 8, !tbaa !5
  %7972 = load i32, ptr %7971, align 4, !tbaa !9
  %7973 = sub nsw i32 %7970, %7972
  %7974 = load i32, ptr %65, align 4, !tbaa !9
  %7975 = add nsw i32 %7973, %7974
  %7976 = sext i32 %7975 to i64
  %7977 = getelementptr inbounds %struct.doublecomplex, ptr %7969, i64 %7976
  %7978 = load ptr, ptr %27, align 8, !tbaa !5
  %7979 = load i32, ptr %59, align 4, !tbaa !9
  %7980 = load ptr, ptr %19, align 8, !tbaa !5
  %7981 = load i32, ptr %7980, align 4, !tbaa !9
  %7982 = sub nsw i32 %7979, %7981
  %7983 = load i32, ptr %65, align 4, !tbaa !9
  %7984 = add nsw i32 %7982, %7983
  %7985 = sext i32 %7984 to i64
  %7986 = getelementptr inbounds double, ptr %7978, i64 %7985
  call void @zlargv_(ptr noundef %69, ptr noundef %7968, ptr noundef %54, ptr noundef %7977, ptr noundef %72, ptr noundef %7986, ptr noundef %72)
  %7987 = load ptr, ptr %18, align 8, !tbaa !5
  %7988 = load i32, ptr %7987, align 4, !tbaa !9
  %7989 = sub nsw i32 %7988, 1
  store i32 %7989, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %7990

7990:                                             ; preds = %8038, %7958
  %7991 = load i32, ptr %58, align 4, !tbaa !9
  %7992 = load i32, ptr %37, align 4, !tbaa !9
  %7993 = icmp sle i32 %7991, %7992
  br i1 %7993, label %7994, label %8041

7994:                                             ; preds = %7990
  %7995 = load ptr, ptr %20, align 8, !tbaa !5
  %7996 = load i32, ptr %72, align 4, !tbaa !9
  %7997 = load i32, ptr %58, align 4, !tbaa !9
  %7998 = sub nsw i32 %7996, %7997
  %7999 = load i32, ptr %65, align 4, !tbaa !9
  %8000 = load i32, ptr %58, align 4, !tbaa !9
  %8001 = add nsw i32 %7999, %8000
  %8002 = load i32, ptr %29, align 4, !tbaa !9
  %8003 = mul nsw i32 %8001, %8002
  %8004 = add nsw i32 %7998, %8003
  %8005 = sext i32 %8004 to i64
  %8006 = getelementptr inbounds %struct.doublecomplex, ptr %7995, i64 %8005
  %8007 = load ptr, ptr %20, align 8, !tbaa !5
  %8008 = load ptr, ptr %18, align 8, !tbaa !5
  %8009 = load i32, ptr %8008, align 4, !tbaa !9
  %8010 = load i32, ptr %58, align 4, !tbaa !9
  %8011 = sub nsw i32 %8009, %8010
  %8012 = load i32, ptr %65, align 4, !tbaa !9
  %8013 = load i32, ptr %58, align 4, !tbaa !9
  %8014 = add nsw i32 %8012, %8013
  %8015 = load i32, ptr %29, align 4, !tbaa !9
  %8016 = mul nsw i32 %8014, %8015
  %8017 = add nsw i32 %8011, %8016
  %8018 = sext i32 %8017 to i64
  %8019 = getelementptr inbounds %struct.doublecomplex, ptr %8007, i64 %8018
  %8020 = load ptr, ptr %27, align 8, !tbaa !5
  %8021 = load i32, ptr %59, align 4, !tbaa !9
  %8022 = load ptr, ptr %19, align 8, !tbaa !5
  %8023 = load i32, ptr %8022, align 4, !tbaa !9
  %8024 = sub nsw i32 %8021, %8023
  %8025 = load i32, ptr %65, align 4, !tbaa !9
  %8026 = add nsw i32 %8024, %8025
  %8027 = sext i32 %8026 to i64
  %8028 = getelementptr inbounds double, ptr %8020, i64 %8027
  %8029 = load ptr, ptr %26, align 8, !tbaa !5
  %8030 = load i32, ptr %59, align 4, !tbaa !9
  %8031 = load ptr, ptr %19, align 8, !tbaa !5
  %8032 = load i32, ptr %8031, align 4, !tbaa !9
  %8033 = sub nsw i32 %8030, %8032
  %8034 = load i32, ptr %65, align 4, !tbaa !9
  %8035 = add nsw i32 %8033, %8034
  %8036 = sext i32 %8035 to i64
  %8037 = getelementptr inbounds %struct.doublecomplex, ptr %8029, i64 %8036
  call void @zlartv_(ptr noundef %69, ptr noundef %8006, ptr noundef %54, ptr noundef %8019, ptr noundef %54, ptr noundef %8028, ptr noundef %8037, ptr noundef %72)
  br label %8038

8038:                                             ; preds = %7994
  %8039 = load i32, ptr %58, align 4, !tbaa !9
  %8040 = add nsw i32 %8039, 1
  store i32 %8040, ptr %58, align 4, !tbaa !9
  br label %7990, !llvm.loop !79

8041:                                             ; preds = %7990
  %8042 = load ptr, ptr %20, align 8, !tbaa !5
  %8043 = load i32, ptr %72, align 4, !tbaa !9
  %8044 = load i32, ptr %65, align 4, !tbaa !9
  %8045 = load i32, ptr %29, align 4, !tbaa !9
  %8046 = mul nsw i32 %8044, %8045
  %8047 = add nsw i32 %8043, %8046
  %8048 = sext i32 %8047 to i64
  %8049 = getelementptr inbounds %struct.doublecomplex, ptr %8042, i64 %8048
  %8050 = load ptr, ptr %20, align 8, !tbaa !5
  %8051 = load i32, ptr %72, align 4, !tbaa !9
  %8052 = load i32, ptr %65, align 4, !tbaa !9
  %8053 = sub nsw i32 %8052, 1
  %8054 = load i32, ptr %29, align 4, !tbaa !9
  %8055 = mul nsw i32 %8053, %8054
  %8056 = add nsw i32 %8051, %8055
  %8057 = sext i32 %8056 to i64
  %8058 = getelementptr inbounds %struct.doublecomplex, ptr %8050, i64 %8057
  %8059 = load ptr, ptr %20, align 8, !tbaa !5
  %8060 = load ptr, ptr %18, align 8, !tbaa !5
  %8061 = load i32, ptr %8060, align 4, !tbaa !9
  %8062 = load i32, ptr %65, align 4, !tbaa !9
  %8063 = load i32, ptr %29, align 4, !tbaa !9
  %8064 = mul nsw i32 %8062, %8063
  %8065 = add nsw i32 %8061, %8064
  %8066 = sext i32 %8065 to i64
  %8067 = getelementptr inbounds %struct.doublecomplex, ptr %8059, i64 %8066
  %8068 = load ptr, ptr %27, align 8, !tbaa !5
  %8069 = load i32, ptr %59, align 4, !tbaa !9
  %8070 = load ptr, ptr %19, align 8, !tbaa !5
  %8071 = load i32, ptr %8070, align 4, !tbaa !9
  %8072 = sub nsw i32 %8069, %8071
  %8073 = load i32, ptr %65, align 4, !tbaa !9
  %8074 = add nsw i32 %8072, %8073
  %8075 = sext i32 %8074 to i64
  %8076 = getelementptr inbounds double, ptr %8068, i64 %8075
  %8077 = load ptr, ptr %26, align 8, !tbaa !5
  %8078 = load i32, ptr %59, align 4, !tbaa !9
  %8079 = load ptr, ptr %19, align 8, !tbaa !5
  %8080 = load i32, ptr %8079, align 4, !tbaa !9
  %8081 = sub nsw i32 %8078, %8080
  %8082 = load i32, ptr %65, align 4, !tbaa !9
  %8083 = add nsw i32 %8081, %8082
  %8084 = sext i32 %8083 to i64
  %8085 = getelementptr inbounds %struct.doublecomplex, ptr %8077, i64 %8084
  call void @zlar2v_(ptr noundef %69, ptr noundef %8049, ptr noundef %8058, ptr noundef %8067, ptr noundef %54, ptr noundef %8076, ptr noundef %8085, ptr noundef %72)
  %8086 = load ptr, ptr %26, align 8, !tbaa !5
  %8087 = load i32, ptr %59, align 4, !tbaa !9
  %8088 = load ptr, ptr %19, align 8, !tbaa !5
  %8089 = load i32, ptr %8088, align 4, !tbaa !9
  %8090 = sub nsw i32 %8087, %8089
  %8091 = load i32, ptr %65, align 4, !tbaa !9
  %8092 = add nsw i32 %8090, %8091
  %8093 = sext i32 %8092 to i64
  %8094 = getelementptr inbounds %struct.doublecomplex, ptr %8086, i64 %8093
  call void @zlacgv_(ptr noundef %69, ptr noundef %8094, ptr noundef %72)
  br label %8095

8095:                                             ; preds = %8041, %7938
  %8096 = load ptr, ptr %19, align 8, !tbaa !5
  %8097 = load i32, ptr %8096, align 4, !tbaa !9
  %8098 = load i32, ptr %57, align 4, !tbaa !9
  %8099 = sub nsw i32 %8097, %8098
  %8100 = add nsw i32 %8099, 1
  store i32 %8100, ptr %37, align 4, !tbaa !9
  %8101 = load ptr, ptr %18, align 8, !tbaa !5
  %8102 = load i32, ptr %8101, align 4, !tbaa !9
  %8103 = sub nsw i32 %8102, 1
  store i32 %8103, ptr %58, align 4, !tbaa !9
  br label %8104

8104:                                             ; preds = %8161, %8095
  %8105 = load i32, ptr %58, align 4, !tbaa !9
  %8106 = load i32, ptr %37, align 4, !tbaa !9
  %8107 = icmp sge i32 %8105, %8106
  br i1 %8107, label %8108, label %8164

8108:                                             ; preds = %8104
  %8109 = load i32, ptr %66, align 4, !tbaa !9
  %8110 = load i32, ptr %58, align 4, !tbaa !9
  %8111 = add nsw i32 %8109, %8110
  %8112 = sub nsw i32 %8111, 1
  %8113 = load i32, ptr %72, align 4, !tbaa !9
  %8114 = sdiv i32 %8112, %8113
  store i32 %8114, ptr %79, align 4, !tbaa !9
  %8115 = load i32, ptr %66, align 4, !tbaa !9
  %8116 = load i32, ptr %79, align 4, !tbaa !9
  %8117 = sub nsw i32 %8116, 1
  %8118 = load i32, ptr %72, align 4, !tbaa !9
  %8119 = mul nsw i32 %8117, %8118
  %8120 = sub nsw i32 %8115, %8119
  store i32 %8120, ptr %75, align 4, !tbaa !9
  %8121 = load i32, ptr %79, align 4, !tbaa !9
  %8122 = icmp sgt i32 %8121, 0
  br i1 %8122, label %8123, label %8160

8123:                                             ; preds = %8108
  %8124 = load ptr, ptr %20, align 8, !tbaa !5
  %8125 = load i32, ptr %58, align 4, !tbaa !9
  %8126 = load i32, ptr %75, align 4, !tbaa !9
  %8127 = load i32, ptr %29, align 4, !tbaa !9
  %8128 = mul nsw i32 %8126, %8127
  %8129 = add nsw i32 %8125, %8128
  %8130 = sext i32 %8129 to i64
  %8131 = getelementptr inbounds %struct.doublecomplex, ptr %8124, i64 %8130
  %8132 = load ptr, ptr %20, align 8, !tbaa !5
  %8133 = load i32, ptr %58, align 4, !tbaa !9
  %8134 = add nsw i32 %8133, 1
  %8135 = load i32, ptr %75, align 4, !tbaa !9
  %8136 = sub nsw i32 %8135, 1
  %8137 = load i32, ptr %29, align 4, !tbaa !9
  %8138 = mul nsw i32 %8136, %8137
  %8139 = add nsw i32 %8134, %8138
  %8140 = sext i32 %8139 to i64
  %8141 = getelementptr inbounds %struct.doublecomplex, ptr %8132, i64 %8140
  %8142 = load ptr, ptr %27, align 8, !tbaa !5
  %8143 = load i32, ptr %59, align 4, !tbaa !9
  %8144 = load ptr, ptr %19, align 8, !tbaa !5
  %8145 = load i32, ptr %8144, align 4, !tbaa !9
  %8146 = sub nsw i32 %8143, %8145
  %8147 = load i32, ptr %75, align 4, !tbaa !9
  %8148 = add nsw i32 %8146, %8147
  %8149 = sext i32 %8148 to i64
  %8150 = getelementptr inbounds double, ptr %8142, i64 %8149
  %8151 = load ptr, ptr %26, align 8, !tbaa !5
  %8152 = load i32, ptr %59, align 4, !tbaa !9
  %8153 = load ptr, ptr %19, align 8, !tbaa !5
  %8154 = load i32, ptr %8153, align 4, !tbaa !9
  %8155 = sub nsw i32 %8152, %8154
  %8156 = load i32, ptr %75, align 4, !tbaa !9
  %8157 = add nsw i32 %8155, %8156
  %8158 = sext i32 %8157 to i64
  %8159 = getelementptr inbounds %struct.doublecomplex, ptr %8151, i64 %8158
  call void @zlartv_(ptr noundef %79, ptr noundef %8131, ptr noundef %54, ptr noundef %8141, ptr noundef %54, ptr noundef %8150, ptr noundef %8159, ptr noundef %72)
  br label %8160

8160:                                             ; preds = %8123, %8108
  br label %8161

8161:                                             ; preds = %8160
  %8162 = load i32, ptr %58, align 4, !tbaa !9
  %8163 = add nsw i32 %8162, -1
  store i32 %8163, ptr %58, align 4, !tbaa !9
  br label %8104, !llvm.loop !80

8164:                                             ; preds = %8104
  %8165 = load i32, ptr %67, align 4, !tbaa !9
  %8166 = icmp ne i32 %8165, 0
  br i1 %8166, label %8167, label %8226

8167:                                             ; preds = %8164
  %8168 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %8168, ptr %37, align 4, !tbaa !9
  %8169 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %8169, ptr %38, align 4, !tbaa !9
  %8170 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %8170, ptr %56, align 4, !tbaa !9
  br label %8171

8171:                                             ; preds = %8221, %8167
  %8172 = load i32, ptr %38, align 4, !tbaa !9
  %8173 = icmp slt i32 %8172, 0
  br i1 %8173, label %8174, label %8179

8174:                                             ; preds = %8171
  %8175 = load i32, ptr %56, align 4, !tbaa !9
  %8176 = load i32, ptr %37, align 4, !tbaa !9
  %8177 = icmp sge i32 %8175, %8176
  %8178 = zext i1 %8177 to i32
  br label %8184

8179:                                             ; preds = %8171
  %8180 = load i32, ptr %56, align 4, !tbaa !9
  %8181 = load i32, ptr %37, align 4, !tbaa !9
  %8182 = icmp sle i32 %8180, %8181
  %8183 = zext i1 %8182 to i32
  br label %8184

8184:                                             ; preds = %8179, %8174
  %8185 = phi i32 [ %8178, %8174 ], [ %8183, %8179 ]
  %8186 = icmp ne i32 %8185, 0
  br i1 %8186, label %8187, label %8225

8187:                                             ; preds = %8184
  %8188 = load ptr, ptr %24, align 8, !tbaa !5
  %8189 = load i32, ptr %56, align 4, !tbaa !9
  %8190 = load i32, ptr %33, align 4, !tbaa !9
  %8191 = mul nsw i32 %8189, %8190
  %8192 = add nsw i32 %8191, 1
  %8193 = sext i32 %8192 to i64
  %8194 = getelementptr inbounds %struct.doublecomplex, ptr %8188, i64 %8193
  %8195 = load ptr, ptr %24, align 8, !tbaa !5
  %8196 = load i32, ptr %56, align 4, !tbaa !9
  %8197 = sub nsw i32 %8196, 1
  %8198 = load i32, ptr %33, align 4, !tbaa !9
  %8199 = mul nsw i32 %8197, %8198
  %8200 = add nsw i32 %8199, 1
  %8201 = sext i32 %8200 to i64
  %8202 = getelementptr inbounds %struct.doublecomplex, ptr %8195, i64 %8201
  %8203 = load ptr, ptr %27, align 8, !tbaa !5
  %8204 = load i32, ptr %59, align 4, !tbaa !9
  %8205 = load ptr, ptr %19, align 8, !tbaa !5
  %8206 = load i32, ptr %8205, align 4, !tbaa !9
  %8207 = sub nsw i32 %8204, %8206
  %8208 = load i32, ptr %56, align 4, !tbaa !9
  %8209 = add nsw i32 %8207, %8208
  %8210 = sext i32 %8209 to i64
  %8211 = getelementptr inbounds double, ptr %8203, i64 %8210
  %8212 = load ptr, ptr %26, align 8, !tbaa !5
  %8213 = load i32, ptr %59, align 4, !tbaa !9
  %8214 = load ptr, ptr %19, align 8, !tbaa !5
  %8215 = load i32, ptr %8214, align 4, !tbaa !9
  %8216 = sub nsw i32 %8213, %8215
  %8217 = load i32, ptr %56, align 4, !tbaa !9
  %8218 = add nsw i32 %8216, %8217
  %8219 = sext i32 %8218 to i64
  %8220 = getelementptr inbounds %struct.doublecomplex, ptr %8212, i64 %8219
  call void @zrot_(ptr noundef %70, ptr noundef %8194, ptr noundef @c__1, ptr noundef %8202, ptr noundef @c__1, ptr noundef %8211, ptr noundef %8220)
  br label %8221

8221:                                             ; preds = %8187
  %8222 = load i32, ptr %38, align 4, !tbaa !9
  %8223 = load i32, ptr %56, align 4, !tbaa !9
  %8224 = add nsw i32 %8223, %8222
  store i32 %8224, ptr %56, align 4, !tbaa !9
  br label %8171, !llvm.loop !81

8225:                                             ; preds = %8184
  br label %8226

8226:                                             ; preds = %8225, %8164
  br label %8227

8227:                                             ; preds = %8226
  %8228 = load i32, ptr %57, align 4, !tbaa !9
  %8229 = add nsw i32 %8228, -1
  store i32 %8229, ptr %57, align 4, !tbaa !9
  br label %7918, !llvm.loop !82

8230:                                             ; preds = %7918
  %8231 = load ptr, ptr %19, align 8, !tbaa !5
  %8232 = load i32, ptr %8231, align 4, !tbaa !9
  %8233 = sub nsw i32 %8232, 1
  store i32 %8233, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %8234

8234:                                             ; preds = %8315, %8230
  %8235 = load i32, ptr %57, align 4, !tbaa !9
  %8236 = load i32, ptr %38, align 4, !tbaa !9
  %8237 = icmp sle i32 %8235, %8236
  br i1 %8237, label %8238, label %8318

8238:                                             ; preds = %8234
  store i32 1, ptr %37, align 4, !tbaa !9
  %8239 = load i32, ptr %57, align 4, !tbaa !9
  %8240 = load i32, ptr %61, align 4, !tbaa !9
  %8241 = add nsw i32 %8239, %8240
  %8242 = load i32, ptr %59, align 4, !tbaa !9
  %8243 = sub nsw i32 %8241, %8242
  %8244 = add nsw i32 %8243, 1
  store i32 %8244, ptr %35, align 4, !tbaa !9
  %8245 = load i32, ptr %55, align 4, !tbaa !9
  %8246 = load i32, ptr %57, align 4, !tbaa !9
  %8247 = add nsw i32 %8245, %8246
  %8248 = add nsw i32 %8247, 1
  %8249 = load i32, ptr %37, align 4, !tbaa !9
  %8250 = load i32, ptr %35, align 4, !tbaa !9
  %8251 = icmp sge i32 %8249, %8250
  br i1 %8251, label %8252, label %8254

8252:                                             ; preds = %8238
  %8253 = load i32, ptr %37, align 4, !tbaa !9
  br label %8256

8254:                                             ; preds = %8238
  %8255 = load i32, ptr %35, align 4, !tbaa !9
  br label %8256

8256:                                             ; preds = %8254, %8252
  %8257 = phi i32 [ %8253, %8252 ], [ %8255, %8254 ]
  %8258 = load i32, ptr %72, align 4, !tbaa !9
  %8259 = mul nsw i32 %8257, %8258
  %8260 = sub nsw i32 %8248, %8259
  store i32 %8260, ptr %66, align 4, !tbaa !9
  %8261 = load ptr, ptr %19, align 8, !tbaa !5
  %8262 = load i32, ptr %8261, align 4, !tbaa !9
  %8263 = load i32, ptr %57, align 4, !tbaa !9
  %8264 = sub nsw i32 %8262, %8263
  store i32 %8264, ptr %58, align 4, !tbaa !9
  br label %8265

8265:                                             ; preds = %8311, %8256
  %8266 = load i32, ptr %58, align 4, !tbaa !9
  %8267 = icmp sge i32 %8266, 1
  br i1 %8267, label %8268, label %8314

8268:                                             ; preds = %8265
  %8269 = load i32, ptr %66, align 4, !tbaa !9
  %8270 = load i32, ptr %58, align 4, !tbaa !9
  %8271 = add nsw i32 %8269, %8270
  %8272 = sub nsw i32 %8271, 1
  %8273 = load i32, ptr %72, align 4, !tbaa !9
  %8274 = sdiv i32 %8272, %8273
  store i32 %8274, ptr %79, align 4, !tbaa !9
  %8275 = load i32, ptr %66, align 4, !tbaa !9
  %8276 = load i32, ptr %79, align 4, !tbaa !9
  %8277 = sub nsw i32 %8276, 1
  %8278 = load i32, ptr %72, align 4, !tbaa !9
  %8279 = mul nsw i32 %8277, %8278
  %8280 = sub nsw i32 %8275, %8279
  store i32 %8280, ptr %75, align 4, !tbaa !9
  %8281 = load i32, ptr %79, align 4, !tbaa !9
  %8282 = icmp sgt i32 %8281, 0
  br i1 %8282, label %8283, label %8310

8283:                                             ; preds = %8268
  %8284 = load ptr, ptr %20, align 8, !tbaa !5
  %8285 = load i32, ptr %58, align 4, !tbaa !9
  %8286 = load i32, ptr %75, align 4, !tbaa !9
  %8287 = load i32, ptr %29, align 4, !tbaa !9
  %8288 = mul nsw i32 %8286, %8287
  %8289 = add nsw i32 %8285, %8288
  %8290 = sext i32 %8289 to i64
  %8291 = getelementptr inbounds %struct.doublecomplex, ptr %8284, i64 %8290
  %8292 = load ptr, ptr %20, align 8, !tbaa !5
  %8293 = load i32, ptr %58, align 4, !tbaa !9
  %8294 = add nsw i32 %8293, 1
  %8295 = load i32, ptr %75, align 4, !tbaa !9
  %8296 = sub nsw i32 %8295, 1
  %8297 = load i32, ptr %29, align 4, !tbaa !9
  %8298 = mul nsw i32 %8296, %8297
  %8299 = add nsw i32 %8294, %8298
  %8300 = sext i32 %8299 to i64
  %8301 = getelementptr inbounds %struct.doublecomplex, ptr %8292, i64 %8300
  %8302 = load ptr, ptr %27, align 8, !tbaa !5
  %8303 = load i32, ptr %75, align 4, !tbaa !9
  %8304 = sext i32 %8303 to i64
  %8305 = getelementptr inbounds double, ptr %8302, i64 %8304
  %8306 = load ptr, ptr %26, align 8, !tbaa !5
  %8307 = load i32, ptr %75, align 4, !tbaa !9
  %8308 = sext i32 %8307 to i64
  %8309 = getelementptr inbounds %struct.doublecomplex, ptr %8306, i64 %8308
  call void @zlartv_(ptr noundef %79, ptr noundef %8291, ptr noundef %54, ptr noundef %8301, ptr noundef %54, ptr noundef %8305, ptr noundef %8309, ptr noundef %72)
  br label %8310

8310:                                             ; preds = %8283, %8268
  br label %8311

8311:                                             ; preds = %8310
  %8312 = load i32, ptr %58, align 4, !tbaa !9
  %8313 = add nsw i32 %8312, -1
  store i32 %8313, ptr %58, align 4, !tbaa !9
  br label %8265, !llvm.loop !83

8314:                                             ; preds = %8265
  br label %8315

8315:                                             ; preds = %8314
  %8316 = load i32, ptr %57, align 4, !tbaa !9
  %8317 = add nsw i32 %8316, 1
  store i32 %8317, ptr %57, align 4, !tbaa !9
  br label %8234, !llvm.loop !84

8318:                                             ; preds = %8234
  %8319 = load ptr, ptr %19, align 8, !tbaa !5
  %8320 = load i32, ptr %8319, align 4, !tbaa !9
  %8321 = icmp sgt i32 %8320, 1
  br i1 %8321, label %8322, label %8375

8322:                                             ; preds = %8318
  %8323 = load i32, ptr %64, align 4, !tbaa !9
  %8324 = load ptr, ptr %18, align 8, !tbaa !5
  %8325 = load i32, ptr %8324, align 4, !tbaa !9
  %8326 = sub nsw i32 %8323, %8325
  store i32 %8326, ptr %38, align 4, !tbaa !9
  store i32 2, ptr %56, align 4, !tbaa !9
  br label %8327

8327:                                             ; preds = %8371, %8322
  %8328 = load i32, ptr %56, align 4, !tbaa !9
  %8329 = load i32, ptr %38, align 4, !tbaa !9
  %8330 = icmp sle i32 %8328, %8329
  br i1 %8330, label %8331, label %8374

8331:                                             ; preds = %8327
  %8332 = load ptr, ptr %27, align 8, !tbaa !5
  %8333 = load i32, ptr %56, align 4, !tbaa !9
  %8334 = load ptr, ptr %18, align 8, !tbaa !5
  %8335 = load i32, ptr %8334, align 4, !tbaa !9
  %8336 = add nsw i32 %8333, %8335
  %8337 = sext i32 %8336 to i64
  %8338 = getelementptr inbounds double, ptr %8332, i64 %8337
  %8339 = load double, ptr %8338, align 8, !tbaa !14
  %8340 = load ptr, ptr %27, align 8, !tbaa !5
  %8341 = load i32, ptr %56, align 4, !tbaa !9
  %8342 = sext i32 %8341 to i64
  %8343 = getelementptr inbounds double, ptr %8340, i64 %8342
  store double %8339, ptr %8343, align 8, !tbaa !14
  %8344 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %8344, ptr %37, align 4, !tbaa !9
  %8345 = load i32, ptr %56, align 4, !tbaa !9
  %8346 = load ptr, ptr %18, align 8, !tbaa !5
  %8347 = load i32, ptr %8346, align 4, !tbaa !9
  %8348 = add nsw i32 %8345, %8347
  store i32 %8348, ptr %35, align 4, !tbaa !9
  %8349 = load ptr, ptr %26, align 8, !tbaa !5
  %8350 = load i32, ptr %35, align 4, !tbaa !9
  %8351 = sext i32 %8350 to i64
  %8352 = getelementptr inbounds %struct.doublecomplex, ptr %8349, i64 %8351
  %8353 = getelementptr inbounds %struct.doublecomplex, ptr %8352, i32 0, i32 0
  %8354 = load double, ptr %8353, align 8, !tbaa !11
  %8355 = load ptr, ptr %26, align 8, !tbaa !5
  %8356 = load i32, ptr %37, align 4, !tbaa !9
  %8357 = sext i32 %8356 to i64
  %8358 = getelementptr inbounds %struct.doublecomplex, ptr %8355, i64 %8357
  %8359 = getelementptr inbounds %struct.doublecomplex, ptr %8358, i32 0, i32 0
  store double %8354, ptr %8359, align 8, !tbaa !11
  %8360 = load ptr, ptr %26, align 8, !tbaa !5
  %8361 = load i32, ptr %35, align 4, !tbaa !9
  %8362 = sext i32 %8361 to i64
  %8363 = getelementptr inbounds %struct.doublecomplex, ptr %8360, i64 %8362
  %8364 = getelementptr inbounds %struct.doublecomplex, ptr %8363, i32 0, i32 1
  %8365 = load double, ptr %8364, align 8, !tbaa !15
  %8366 = load ptr, ptr %26, align 8, !tbaa !5
  %8367 = load i32, ptr %37, align 4, !tbaa !9
  %8368 = sext i32 %8367 to i64
  %8369 = getelementptr inbounds %struct.doublecomplex, ptr %8366, i64 %8368
  %8370 = getelementptr inbounds %struct.doublecomplex, ptr %8369, i32 0, i32 1
  store double %8365, ptr %8370, align 8, !tbaa !15
  br label %8371

8371:                                             ; preds = %8331
  %8372 = load i32, ptr %56, align 4, !tbaa !9
  %8373 = add nsw i32 %8372, 1
  store i32 %8373, ptr %56, align 4, !tbaa !9
  br label %8327, !llvm.loop !85

8374:                                             ; preds = %8327
  br label %8375

8375:                                             ; preds = %8374, %8318
  br label %11060

8376:                                             ; preds = %5686
  %8377 = load i32, ptr %71, align 4, !tbaa !9
  %8378 = icmp ne i32 %8377, 0
  br i1 %8378, label %8379, label %9227

8379:                                             ; preds = %8376
  %8380 = load i32, ptr %55, align 4, !tbaa !9
  %8381 = load i32, ptr %31, align 4, !tbaa !9
  %8382 = mul nsw i32 %8380, %8381
  %8383 = add nsw i32 %8382, 1
  store i32 %8383, ptr %38, align 4, !tbaa !9
  %8384 = load ptr, ptr %22, align 8, !tbaa !5
  %8385 = load i32, ptr %38, align 4, !tbaa !9
  %8386 = sext i32 %8385 to i64
  %8387 = getelementptr inbounds %struct.doublecomplex, ptr %8384, i64 %8386
  %8388 = getelementptr inbounds %struct.doublecomplex, ptr %8387, i32 0, i32 0
  %8389 = load double, ptr %8388, align 8, !tbaa !11
  store double %8389, ptr %77, align 8, !tbaa !14
  %8390 = load i32, ptr %55, align 4, !tbaa !9
  %8391 = load i32, ptr %29, align 4, !tbaa !9
  %8392 = mul nsw i32 %8390, %8391
  %8393 = add nsw i32 %8392, 1
  store i32 %8393, ptr %38, align 4, !tbaa !9
  %8394 = load i32, ptr %55, align 4, !tbaa !9
  %8395 = load i32, ptr %29, align 4, !tbaa !9
  %8396 = mul nsw i32 %8394, %8395
  %8397 = add nsw i32 %8396, 1
  store i32 %8397, ptr %37, align 4, !tbaa !9
  %8398 = load ptr, ptr %20, align 8, !tbaa !5
  %8399 = load i32, ptr %37, align 4, !tbaa !9
  %8400 = sext i32 %8399 to i64
  %8401 = getelementptr inbounds %struct.doublecomplex, ptr %8398, i64 %8400
  %8402 = getelementptr inbounds %struct.doublecomplex, ptr %8401, i32 0, i32 0
  %8403 = load double, ptr %8402, align 8, !tbaa !11
  %8404 = load double, ptr %77, align 8, !tbaa !14
  %8405 = fdiv double %8403, %8404
  %8406 = load double, ptr %77, align 8, !tbaa !14
  %8407 = fdiv double %8405, %8406
  store double %8407, ptr %43, align 8, !tbaa !14
  %8408 = load double, ptr %43, align 8, !tbaa !14
  %8409 = load ptr, ptr %20, align 8, !tbaa !5
  %8410 = load i32, ptr %38, align 4, !tbaa !9
  %8411 = sext i32 %8410 to i64
  %8412 = getelementptr inbounds %struct.doublecomplex, ptr %8409, i64 %8411
  %8413 = getelementptr inbounds %struct.doublecomplex, ptr %8412, i32 0, i32 0
  store double %8408, ptr %8413, align 8, !tbaa !11
  %8414 = load ptr, ptr %20, align 8, !tbaa !5
  %8415 = load i32, ptr %38, align 4, !tbaa !9
  %8416 = sext i32 %8415 to i64
  %8417 = getelementptr inbounds %struct.doublecomplex, ptr %8414, i64 %8416
  %8418 = getelementptr inbounds %struct.doublecomplex, ptr %8417, i32 0, i32 1
  store double 0.000000e+00, ptr %8418, align 8, !tbaa !15
  %8419 = load i32, ptr %55, align 4, !tbaa !9
  %8420 = sub nsw i32 %8419, 1
  store i32 %8420, ptr %38, align 4, !tbaa !9
  %8421 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %8421, ptr %56, align 4, !tbaa !9
  br label %8422

8422:                                             ; preds = %8475, %8379
  %8423 = load i32, ptr %56, align 4, !tbaa !9
  %8424 = load i32, ptr %38, align 4, !tbaa !9
  %8425 = icmp sle i32 %8423, %8424
  br i1 %8425, label %8426, label %8478

8426:                                             ; preds = %8422
  %8427 = load i32, ptr %55, align 4, !tbaa !9
  %8428 = load i32, ptr %56, align 4, !tbaa !9
  %8429 = sub nsw i32 %8427, %8428
  %8430 = add nsw i32 %8429, 1
  %8431 = load i32, ptr %56, align 4, !tbaa !9
  %8432 = load i32, ptr %29, align 4, !tbaa !9
  %8433 = mul nsw i32 %8431, %8432
  %8434 = add nsw i32 %8430, %8433
  store i32 %8434, ptr %37, align 4, !tbaa !9
  %8435 = load i32, ptr %55, align 4, !tbaa !9
  %8436 = load i32, ptr %56, align 4, !tbaa !9
  %8437 = sub nsw i32 %8435, %8436
  %8438 = add nsw i32 %8437, 1
  %8439 = load i32, ptr %56, align 4, !tbaa !9
  %8440 = load i32, ptr %29, align 4, !tbaa !9
  %8441 = mul nsw i32 %8439, %8440
  %8442 = add nsw i32 %8438, %8441
  store i32 %8442, ptr %35, align 4, !tbaa !9
  %8443 = load ptr, ptr %20, align 8, !tbaa !5
  %8444 = load i32, ptr %35, align 4, !tbaa !9
  %8445 = sext i32 %8444 to i64
  %8446 = getelementptr inbounds %struct.doublecomplex, ptr %8443, i64 %8445
  %8447 = getelementptr inbounds %struct.doublecomplex, ptr %8446, i32 0, i32 0
  %8448 = load double, ptr %8447, align 8, !tbaa !11
  %8449 = load double, ptr %77, align 8, !tbaa !14
  %8450 = fdiv double %8448, %8449
  %8451 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %8450, ptr %8451, align 8, !tbaa !11
  %8452 = load ptr, ptr %20, align 8, !tbaa !5
  %8453 = load i32, ptr %35, align 4, !tbaa !9
  %8454 = sext i32 %8453 to i64
  %8455 = getelementptr inbounds %struct.doublecomplex, ptr %8452, i64 %8454
  %8456 = getelementptr inbounds %struct.doublecomplex, ptr %8455, i32 0, i32 1
  %8457 = load double, ptr %8456, align 8, !tbaa !15
  %8458 = load double, ptr %77, align 8, !tbaa !14
  %8459 = fdiv double %8457, %8458
  %8460 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %8459, ptr %8460, align 8, !tbaa !15
  %8461 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %8462 = load double, ptr %8461, align 8, !tbaa !11
  %8463 = load ptr, ptr %20, align 8, !tbaa !5
  %8464 = load i32, ptr %37, align 4, !tbaa !9
  %8465 = sext i32 %8464 to i64
  %8466 = getelementptr inbounds %struct.doublecomplex, ptr %8463, i64 %8465
  %8467 = getelementptr inbounds %struct.doublecomplex, ptr %8466, i32 0, i32 0
  store double %8462, ptr %8467, align 8, !tbaa !11
  %8468 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %8469 = load double, ptr %8468, align 8, !tbaa !15
  %8470 = load ptr, ptr %20, align 8, !tbaa !5
  %8471 = load i32, ptr %37, align 4, !tbaa !9
  %8472 = sext i32 %8471 to i64
  %8473 = getelementptr inbounds %struct.doublecomplex, ptr %8470, i64 %8472
  %8474 = getelementptr inbounds %struct.doublecomplex, ptr %8473, i32 0, i32 1
  store double %8469, ptr %8474, align 8, !tbaa !15
  br label %8475

8475:                                             ; preds = %8426
  %8476 = load i32, ptr %56, align 4, !tbaa !9
  %8477 = add nsw i32 %8476, 1
  store i32 %8477, ptr %56, align 4, !tbaa !9
  br label %8422, !llvm.loop !86

8478:                                             ; preds = %8422
  %8479 = load ptr, ptr %17, align 8, !tbaa !5
  %8480 = load i32, ptr %8479, align 4, !tbaa !9
  store i32 %8480, ptr %37, align 4, !tbaa !9
  %8481 = load i32, ptr %55, align 4, !tbaa !9
  %8482 = load ptr, ptr %18, align 8, !tbaa !5
  %8483 = load i32, ptr %8482, align 4, !tbaa !9
  %8484 = add nsw i32 %8481, %8483
  store i32 %8484, ptr %35, align 4, !tbaa !9
  %8485 = load i32, ptr %37, align 4, !tbaa !9
  %8486 = load i32, ptr %35, align 4, !tbaa !9
  %8487 = icmp sle i32 %8485, %8486
  br i1 %8487, label %8488, label %8490

8488:                                             ; preds = %8478
  %8489 = load i32, ptr %37, align 4, !tbaa !9
  br label %8492

8490:                                             ; preds = %8478
  %8491 = load i32, ptr %35, align 4, !tbaa !9
  br label %8492

8492:                                             ; preds = %8490, %8488
  %8493 = phi i32 [ %8489, %8488 ], [ %8491, %8490 ]
  store i32 %8493, ptr %38, align 4, !tbaa !9
  %8494 = load i32, ptr %55, align 4, !tbaa !9
  %8495 = add nsw i32 %8494, 1
  store i32 %8495, ptr %56, align 4, !tbaa !9
  br label %8496

8496:                                             ; preds = %8549, %8492
  %8497 = load i32, ptr %56, align 4, !tbaa !9
  %8498 = load i32, ptr %38, align 4, !tbaa !9
  %8499 = icmp sle i32 %8497, %8498
  br i1 %8499, label %8500, label %8552

8500:                                             ; preds = %8496
  %8501 = load i32, ptr %56, align 4, !tbaa !9
  %8502 = load i32, ptr %55, align 4, !tbaa !9
  %8503 = sub nsw i32 %8501, %8502
  %8504 = add nsw i32 %8503, 1
  %8505 = load i32, ptr %55, align 4, !tbaa !9
  %8506 = load i32, ptr %29, align 4, !tbaa !9
  %8507 = mul nsw i32 %8505, %8506
  %8508 = add nsw i32 %8504, %8507
  store i32 %8508, ptr %37, align 4, !tbaa !9
  %8509 = load i32, ptr %56, align 4, !tbaa !9
  %8510 = load i32, ptr %55, align 4, !tbaa !9
  %8511 = sub nsw i32 %8509, %8510
  %8512 = add nsw i32 %8511, 1
  %8513 = load i32, ptr %55, align 4, !tbaa !9
  %8514 = load i32, ptr %29, align 4, !tbaa !9
  %8515 = mul nsw i32 %8513, %8514
  %8516 = add nsw i32 %8512, %8515
  store i32 %8516, ptr %35, align 4, !tbaa !9
  %8517 = load ptr, ptr %20, align 8, !tbaa !5
  %8518 = load i32, ptr %35, align 4, !tbaa !9
  %8519 = sext i32 %8518 to i64
  %8520 = getelementptr inbounds %struct.doublecomplex, ptr %8517, i64 %8519
  %8521 = getelementptr inbounds %struct.doublecomplex, ptr %8520, i32 0, i32 0
  %8522 = load double, ptr %8521, align 8, !tbaa !11
  %8523 = load double, ptr %77, align 8, !tbaa !14
  %8524 = fdiv double %8522, %8523
  %8525 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %8524, ptr %8525, align 8, !tbaa !11
  %8526 = load ptr, ptr %20, align 8, !tbaa !5
  %8527 = load i32, ptr %35, align 4, !tbaa !9
  %8528 = sext i32 %8527 to i64
  %8529 = getelementptr inbounds %struct.doublecomplex, ptr %8526, i64 %8528
  %8530 = getelementptr inbounds %struct.doublecomplex, ptr %8529, i32 0, i32 1
  %8531 = load double, ptr %8530, align 8, !tbaa !15
  %8532 = load double, ptr %77, align 8, !tbaa !14
  %8533 = fdiv double %8531, %8532
  %8534 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %8533, ptr %8534, align 8, !tbaa !15
  %8535 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %8536 = load double, ptr %8535, align 8, !tbaa !11
  %8537 = load ptr, ptr %20, align 8, !tbaa !5
  %8538 = load i32, ptr %37, align 4, !tbaa !9
  %8539 = sext i32 %8538 to i64
  %8540 = getelementptr inbounds %struct.doublecomplex, ptr %8537, i64 %8539
  %8541 = getelementptr inbounds %struct.doublecomplex, ptr %8540, i32 0, i32 0
  store double %8536, ptr %8541, align 8, !tbaa !11
  %8542 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %8543 = load double, ptr %8542, align 8, !tbaa !15
  %8544 = load ptr, ptr %20, align 8, !tbaa !5
  %8545 = load i32, ptr %37, align 4, !tbaa !9
  %8546 = sext i32 %8545 to i64
  %8547 = getelementptr inbounds %struct.doublecomplex, ptr %8544, i64 %8546
  %8548 = getelementptr inbounds %struct.doublecomplex, ptr %8547, i32 0, i32 1
  store double %8543, ptr %8548, align 8, !tbaa !15
  br label %8549

8549:                                             ; preds = %8500
  %8550 = load i32, ptr %56, align 4, !tbaa !9
  %8551 = add nsw i32 %8550, 1
  store i32 %8551, ptr %56, align 4, !tbaa !9
  br label %8496, !llvm.loop !87

8552:                                             ; preds = %8496
  %8553 = load i32, ptr %55, align 4, !tbaa !9
  %8554 = load i32, ptr %78, align 4, !tbaa !9
  %8555 = add nsw i32 %8553, %8554
  store i32 %8555, ptr %38, align 4, !tbaa !9
  %8556 = load i32, ptr %55, align 4, !tbaa !9
  %8557 = add nsw i32 %8556, 1
  store i32 %8557, ptr %57, align 4, !tbaa !9
  br label %8558

8558:                                             ; preds = %9000, %8552
  %8559 = load i32, ptr %57, align 4, !tbaa !9
  %8560 = load i32, ptr %38, align 4, !tbaa !9
  %8561 = icmp sle i32 %8559, %8560
  br i1 %8561, label %8562, label %9003

8562:                                             ; preds = %8558
  %8563 = load i32, ptr %55, align 4, !tbaa !9
  %8564 = load i32, ptr %78, align 4, !tbaa !9
  %8565 = add nsw i32 %8563, %8564
  store i32 %8565, ptr %37, align 4, !tbaa !9
  %8566 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %8566, ptr %56, align 4, !tbaa !9
  br label %8567

8567:                                             ; preds = %8853, %8562
  %8568 = load i32, ptr %56, align 4, !tbaa !9
  %8569 = load i32, ptr %37, align 4, !tbaa !9
  %8570 = icmp sle i32 %8568, %8569
  br i1 %8570, label %8571, label %8856

8571:                                             ; preds = %8567
  %8572 = load i32, ptr %56, align 4, !tbaa !9
  %8573 = load i32, ptr %57, align 4, !tbaa !9
  %8574 = sub nsw i32 %8572, %8573
  %8575 = add nsw i32 %8574, 1
  %8576 = load i32, ptr %57, align 4, !tbaa !9
  %8577 = load i32, ptr %29, align 4, !tbaa !9
  %8578 = mul nsw i32 %8576, %8577
  %8579 = add nsw i32 %8575, %8578
  store i32 %8579, ptr %35, align 4, !tbaa !9
  %8580 = load i32, ptr %56, align 4, !tbaa !9
  %8581 = load i32, ptr %57, align 4, !tbaa !9
  %8582 = sub nsw i32 %8580, %8581
  %8583 = add nsw i32 %8582, 1
  %8584 = load i32, ptr %57, align 4, !tbaa !9
  %8585 = load i32, ptr %29, align 4, !tbaa !9
  %8586 = mul nsw i32 %8584, %8585
  %8587 = add nsw i32 %8583, %8586
  store i32 %8587, ptr %36, align 4, !tbaa !9
  %8588 = load i32, ptr %56, align 4, !tbaa !9
  %8589 = load i32, ptr %55, align 4, !tbaa !9
  %8590 = sub nsw i32 %8588, %8589
  %8591 = add nsw i32 %8590, 1
  %8592 = load i32, ptr %55, align 4, !tbaa !9
  %8593 = load i32, ptr %31, align 4, !tbaa !9
  %8594 = mul nsw i32 %8592, %8593
  %8595 = add nsw i32 %8591, %8594
  store i32 %8595, ptr %39, align 4, !tbaa !9
  %8596 = load ptr, ptr %20, align 8, !tbaa !5
  %8597 = load i32, ptr %57, align 4, !tbaa !9
  %8598 = load i32, ptr %55, align 4, !tbaa !9
  %8599 = sub nsw i32 %8597, %8598
  %8600 = add nsw i32 %8599, 1
  %8601 = load i32, ptr %55, align 4, !tbaa !9
  %8602 = load i32, ptr %29, align 4, !tbaa !9
  %8603 = mul nsw i32 %8601, %8602
  %8604 = add nsw i32 %8600, %8603
  %8605 = sext i32 %8604 to i64
  %8606 = getelementptr inbounds %struct.doublecomplex, ptr %8596, i64 %8605
  %8607 = call { double, double } @Cd(ptr noundef %8606)
  %8608 = extractvalue { double, double } %8607, 0
  %8609 = extractvalue { double, double } %8607, 1
  %8610 = fneg double %8609
  %8611 = call ptr @_pCd(ptr noundef %48)
  %8612 = getelementptr inbounds { double, double }, ptr %8611, i32 0, i32 0
  %8613 = getelementptr inbounds { double, double }, ptr %8611, i32 0, i32 1
  store double %8608, ptr %8612, align 8
  store double %8610, ptr %8613, align 8
  %8614 = load ptr, ptr %22, align 8, !tbaa !5
  %8615 = load i32, ptr %39, align 4, !tbaa !9
  %8616 = sext i32 %8615 to i64
  %8617 = getelementptr inbounds %struct.doublecomplex, ptr %8614, i64 %8616
  %8618 = getelementptr inbounds %struct.doublecomplex, ptr %8617, i32 0, i32 0
  %8619 = load double, ptr %8618, align 8, !tbaa !11
  %8620 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %8621 = load double, ptr %8620, align 8, !tbaa !11
  %8622 = load ptr, ptr %22, align 8, !tbaa !5
  %8623 = load i32, ptr %39, align 4, !tbaa !9
  %8624 = sext i32 %8623 to i64
  %8625 = getelementptr inbounds %struct.doublecomplex, ptr %8622, i64 %8624
  %8626 = getelementptr inbounds %struct.doublecomplex, ptr %8625, i32 0, i32 1
  %8627 = load double, ptr %8626, align 8, !tbaa !15
  %8628 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %8629 = load double, ptr %8628, align 8, !tbaa !15
  %8630 = fmul double %8627, %8629
  %8631 = fneg double %8630
  %8632 = call double @llvm.fmuladd.f64(double %8619, double %8621, double %8631)
  %8633 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %8632, ptr %8633, align 8, !tbaa !11
  %8634 = load ptr, ptr %22, align 8, !tbaa !5
  %8635 = load i32, ptr %39, align 4, !tbaa !9
  %8636 = sext i32 %8635 to i64
  %8637 = getelementptr inbounds %struct.doublecomplex, ptr %8634, i64 %8636
  %8638 = getelementptr inbounds %struct.doublecomplex, ptr %8637, i32 0, i32 0
  %8639 = load double, ptr %8638, align 8, !tbaa !11
  %8640 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %8641 = load double, ptr %8640, align 8, !tbaa !15
  %8642 = load ptr, ptr %22, align 8, !tbaa !5
  %8643 = load i32, ptr %39, align 4, !tbaa !9
  %8644 = sext i32 %8643 to i64
  %8645 = getelementptr inbounds %struct.doublecomplex, ptr %8642, i64 %8644
  %8646 = getelementptr inbounds %struct.doublecomplex, ptr %8645, i32 0, i32 1
  %8647 = load double, ptr %8646, align 8, !tbaa !15
  %8648 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %8649 = load double, ptr %8648, align 8, !tbaa !11
  %8650 = fmul double %8647, %8649
  %8651 = call double @llvm.fmuladd.f64(double %8639, double %8641, double %8650)
  %8652 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %8651, ptr %8652, align 8, !tbaa !15
  %8653 = load ptr, ptr %20, align 8, !tbaa !5
  %8654 = load i32, ptr %36, align 4, !tbaa !9
  %8655 = sext i32 %8654 to i64
  %8656 = getelementptr inbounds %struct.doublecomplex, ptr %8653, i64 %8655
  %8657 = getelementptr inbounds %struct.doublecomplex, ptr %8656, i32 0, i32 0
  %8658 = load double, ptr %8657, align 8, !tbaa !11
  %8659 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %8660 = load double, ptr %8659, align 8, !tbaa !11
  %8661 = fsub double %8658, %8660
  %8662 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %8661, ptr %8662, align 8, !tbaa !11
  %8663 = load ptr, ptr %20, align 8, !tbaa !5
  %8664 = load i32, ptr %36, align 4, !tbaa !9
  %8665 = sext i32 %8664 to i64
  %8666 = getelementptr inbounds %struct.doublecomplex, ptr %8663, i64 %8665
  %8667 = getelementptr inbounds %struct.doublecomplex, ptr %8666, i32 0, i32 1
  %8668 = load double, ptr %8667, align 8, !tbaa !15
  %8669 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %8670 = load double, ptr %8669, align 8, !tbaa !15
  %8671 = fsub double %8668, %8670
  %8672 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %8671, ptr %8672, align 8, !tbaa !15
  %8673 = load ptr, ptr %22, align 8, !tbaa !5
  %8674 = load i32, ptr %57, align 4, !tbaa !9
  %8675 = load i32, ptr %55, align 4, !tbaa !9
  %8676 = sub nsw i32 %8674, %8675
  %8677 = add nsw i32 %8676, 1
  %8678 = load i32, ptr %55, align 4, !tbaa !9
  %8679 = load i32, ptr %31, align 4, !tbaa !9
  %8680 = mul nsw i32 %8678, %8679
  %8681 = add nsw i32 %8677, %8680
  %8682 = sext i32 %8681 to i64
  %8683 = getelementptr inbounds %struct.doublecomplex, ptr %8673, i64 %8682
  %8684 = call { double, double } @Cd(ptr noundef %8683)
  %8685 = extractvalue { double, double } %8684, 0
  %8686 = extractvalue { double, double } %8684, 1
  %8687 = fneg double %8686
  %8688 = call ptr @_pCd(ptr noundef %50)
  %8689 = getelementptr inbounds { double, double }, ptr %8688, i32 0, i32 0
  %8690 = getelementptr inbounds { double, double }, ptr %8688, i32 0, i32 1
  store double %8685, ptr %8689, align 8
  store double %8687, ptr %8690, align 8
  %8691 = load i32, ptr %56, align 4, !tbaa !9
  %8692 = load i32, ptr %55, align 4, !tbaa !9
  %8693 = sub nsw i32 %8691, %8692
  %8694 = add nsw i32 %8693, 1
  %8695 = load i32, ptr %55, align 4, !tbaa !9
  %8696 = load i32, ptr %29, align 4, !tbaa !9
  %8697 = mul nsw i32 %8695, %8696
  %8698 = add nsw i32 %8694, %8697
  store i32 %8698, ptr %40, align 4, !tbaa !9
  %8699 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %8700 = load double, ptr %8699, align 8, !tbaa !11
  %8701 = load ptr, ptr %20, align 8, !tbaa !5
  %8702 = load i32, ptr %40, align 4, !tbaa !9
  %8703 = sext i32 %8702 to i64
  %8704 = getelementptr inbounds %struct.doublecomplex, ptr %8701, i64 %8703
  %8705 = getelementptr inbounds %struct.doublecomplex, ptr %8704, i32 0, i32 0
  %8706 = load double, ptr %8705, align 8, !tbaa !11
  %8707 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %8708 = load double, ptr %8707, align 8, !tbaa !15
  %8709 = load ptr, ptr %20, align 8, !tbaa !5
  %8710 = load i32, ptr %40, align 4, !tbaa !9
  %8711 = sext i32 %8710 to i64
  %8712 = getelementptr inbounds %struct.doublecomplex, ptr %8709, i64 %8711
  %8713 = getelementptr inbounds %struct.doublecomplex, ptr %8712, i32 0, i32 1
  %8714 = load double, ptr %8713, align 8, !tbaa !15
  %8715 = fmul double %8708, %8714
  %8716 = fneg double %8715
  %8717 = call double @llvm.fmuladd.f64(double %8700, double %8706, double %8716)
  %8718 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %8717, ptr %8718, align 8, !tbaa !11
  %8719 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %8720 = load double, ptr %8719, align 8, !tbaa !11
  %8721 = load ptr, ptr %20, align 8, !tbaa !5
  %8722 = load i32, ptr %40, align 4, !tbaa !9
  %8723 = sext i32 %8722 to i64
  %8724 = getelementptr inbounds %struct.doublecomplex, ptr %8721, i64 %8723
  %8725 = getelementptr inbounds %struct.doublecomplex, ptr %8724, i32 0, i32 1
  %8726 = load double, ptr %8725, align 8, !tbaa !15
  %8727 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %8728 = load double, ptr %8727, align 8, !tbaa !15
  %8729 = load ptr, ptr %20, align 8, !tbaa !5
  %8730 = load i32, ptr %40, align 4, !tbaa !9
  %8731 = sext i32 %8730 to i64
  %8732 = getelementptr inbounds %struct.doublecomplex, ptr %8729, i64 %8731
  %8733 = getelementptr inbounds %struct.doublecomplex, ptr %8732, i32 0, i32 0
  %8734 = load double, ptr %8733, align 8, !tbaa !11
  %8735 = fmul double %8728, %8734
  %8736 = call double @llvm.fmuladd.f64(double %8720, double %8726, double %8735)
  %8737 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %8736, ptr %8737, align 8, !tbaa !15
  %8738 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %8739 = load double, ptr %8738, align 8, !tbaa !11
  %8740 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %8741 = load double, ptr %8740, align 8, !tbaa !11
  %8742 = fsub double %8739, %8741
  %8743 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %8742, ptr %8743, align 8, !tbaa !11
  %8744 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %8745 = load double, ptr %8744, align 8, !tbaa !15
  %8746 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %8747 = load double, ptr %8746, align 8, !tbaa !15
  %8748 = fsub double %8745, %8747
  %8749 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %8748, ptr %8749, align 8, !tbaa !15
  %8750 = load i32, ptr %55, align 4, !tbaa !9
  %8751 = load i32, ptr %29, align 4, !tbaa !9
  %8752 = mul nsw i32 %8750, %8751
  %8753 = add nsw i32 %8752, 1
  store i32 %8753, ptr %41, align 4, !tbaa !9
  %8754 = load ptr, ptr %20, align 8, !tbaa !5
  %8755 = load i32, ptr %41, align 4, !tbaa !9
  %8756 = sext i32 %8755 to i64
  %8757 = getelementptr inbounds %struct.doublecomplex, ptr %8754, i64 %8756
  %8758 = getelementptr inbounds %struct.doublecomplex, ptr %8757, i32 0, i32 0
  %8759 = load double, ptr %8758, align 8, !tbaa !11
  store double %8759, ptr %43, align 8, !tbaa !14
  %8760 = load i32, ptr %56, align 4, !tbaa !9
  %8761 = load i32, ptr %55, align 4, !tbaa !9
  %8762 = sub nsw i32 %8760, %8761
  %8763 = add nsw i32 %8762, 1
  %8764 = load i32, ptr %55, align 4, !tbaa !9
  %8765 = load i32, ptr %31, align 4, !tbaa !9
  %8766 = mul nsw i32 %8764, %8765
  %8767 = add nsw i32 %8763, %8766
  store i32 %8767, ptr %42, align 4, !tbaa !9
  %8768 = load double, ptr %43, align 8, !tbaa !14
  %8769 = load ptr, ptr %22, align 8, !tbaa !5
  %8770 = load i32, ptr %42, align 4, !tbaa !9
  %8771 = sext i32 %8770 to i64
  %8772 = getelementptr inbounds %struct.doublecomplex, ptr %8769, i64 %8771
  %8773 = getelementptr inbounds %struct.doublecomplex, ptr %8772, i32 0, i32 0
  %8774 = load double, ptr %8773, align 8, !tbaa !11
  %8775 = fmul double %8768, %8774
  %8776 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %8775, ptr %8776, align 8, !tbaa !11
  %8777 = load double, ptr %43, align 8, !tbaa !14
  %8778 = load ptr, ptr %22, align 8, !tbaa !5
  %8779 = load i32, ptr %42, align 4, !tbaa !9
  %8780 = sext i32 %8779 to i64
  %8781 = getelementptr inbounds %struct.doublecomplex, ptr %8778, i64 %8780
  %8782 = getelementptr inbounds %struct.doublecomplex, ptr %8781, i32 0, i32 1
  %8783 = load double, ptr %8782, align 8, !tbaa !15
  %8784 = fmul double %8777, %8783
  %8785 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %8784, ptr %8785, align 8, !tbaa !15
  %8786 = load ptr, ptr %22, align 8, !tbaa !5
  %8787 = load i32, ptr %57, align 4, !tbaa !9
  %8788 = load i32, ptr %55, align 4, !tbaa !9
  %8789 = sub nsw i32 %8787, %8788
  %8790 = add nsw i32 %8789, 1
  %8791 = load i32, ptr %55, align 4, !tbaa !9
  %8792 = load i32, ptr %31, align 4, !tbaa !9
  %8793 = mul nsw i32 %8791, %8792
  %8794 = add nsw i32 %8790, %8793
  %8795 = sext i32 %8794 to i64
  %8796 = getelementptr inbounds %struct.doublecomplex, ptr %8786, i64 %8795
  %8797 = call { double, double } @Cd(ptr noundef %8796)
  %8798 = extractvalue { double, double } %8797, 0
  %8799 = extractvalue { double, double } %8797, 1
  %8800 = fneg double %8799
  %8801 = call ptr @_pCd(ptr noundef %53)
  %8802 = getelementptr inbounds { double, double }, ptr %8801, i32 0, i32 0
  %8803 = getelementptr inbounds { double, double }, ptr %8801, i32 0, i32 1
  store double %8798, ptr %8802, align 8
  store double %8800, ptr %8803, align 8
  %8804 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %8805 = load double, ptr %8804, align 8, !tbaa !11
  %8806 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %8807 = load double, ptr %8806, align 8, !tbaa !11
  %8808 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %8809 = load double, ptr %8808, align 8, !tbaa !15
  %8810 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %8811 = load double, ptr %8810, align 8, !tbaa !15
  %8812 = fmul double %8809, %8811
  %8813 = fneg double %8812
  %8814 = call double @llvm.fmuladd.f64(double %8805, double %8807, double %8813)
  %8815 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %8814, ptr %8815, align 8, !tbaa !11
  %8816 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %8817 = load double, ptr %8816, align 8, !tbaa !11
  %8818 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %8819 = load double, ptr %8818, align 8, !tbaa !15
  %8820 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %8821 = load double, ptr %8820, align 8, !tbaa !15
  %8822 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %8823 = load double, ptr %8822, align 8, !tbaa !11
  %8824 = fmul double %8821, %8823
  %8825 = call double @llvm.fmuladd.f64(double %8817, double %8819, double %8824)
  %8826 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %8825, ptr %8826, align 8, !tbaa !15
  %8827 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %8828 = load double, ptr %8827, align 8, !tbaa !11
  %8829 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %8830 = load double, ptr %8829, align 8, !tbaa !11
  %8831 = fadd double %8828, %8830
  %8832 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %8831, ptr %8832, align 8, !tbaa !11
  %8833 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %8834 = load double, ptr %8833, align 8, !tbaa !15
  %8835 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %8836 = load double, ptr %8835, align 8, !tbaa !15
  %8837 = fadd double %8834, %8836
  %8838 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %8837, ptr %8838, align 8, !tbaa !15
  %8839 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %8840 = load double, ptr %8839, align 8, !tbaa !11
  %8841 = load ptr, ptr %20, align 8, !tbaa !5
  %8842 = load i32, ptr %35, align 4, !tbaa !9
  %8843 = sext i32 %8842 to i64
  %8844 = getelementptr inbounds %struct.doublecomplex, ptr %8841, i64 %8843
  %8845 = getelementptr inbounds %struct.doublecomplex, ptr %8844, i32 0, i32 0
  store double %8840, ptr %8845, align 8, !tbaa !11
  %8846 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %8847 = load double, ptr %8846, align 8, !tbaa !15
  %8848 = load ptr, ptr %20, align 8, !tbaa !5
  %8849 = load i32, ptr %35, align 4, !tbaa !9
  %8850 = sext i32 %8849 to i64
  %8851 = getelementptr inbounds %struct.doublecomplex, ptr %8848, i64 %8850
  %8852 = getelementptr inbounds %struct.doublecomplex, ptr %8851, i32 0, i32 1
  store double %8847, ptr %8852, align 8, !tbaa !15
  br label %8853

8853:                                             ; preds = %8571
  %8854 = load i32, ptr %56, align 4, !tbaa !9
  %8855 = add nsw i32 %8854, 1
  store i32 %8855, ptr %56, align 4, !tbaa !9
  br label %8567, !llvm.loop !88

8856:                                             ; preds = %8567
  %8857 = load ptr, ptr %17, align 8, !tbaa !5
  %8858 = load i32, ptr %8857, align 4, !tbaa !9
  store i32 %8858, ptr %35, align 4, !tbaa !9
  %8859 = load i32, ptr %55, align 4, !tbaa !9
  %8860 = load ptr, ptr %18, align 8, !tbaa !5
  %8861 = load i32, ptr %8860, align 4, !tbaa !9
  %8862 = add nsw i32 %8859, %8861
  store i32 %8862, ptr %36, align 4, !tbaa !9
  %8863 = load i32, ptr %35, align 4, !tbaa !9
  %8864 = load i32, ptr %36, align 4, !tbaa !9
  %8865 = icmp sle i32 %8863, %8864
  br i1 %8865, label %8866, label %8868

8866:                                             ; preds = %8856
  %8867 = load i32, ptr %35, align 4, !tbaa !9
  br label %8870

8868:                                             ; preds = %8856
  %8869 = load i32, ptr %36, align 4, !tbaa !9
  br label %8870

8870:                                             ; preds = %8868, %8866
  %8871 = phi i32 [ %8867, %8866 ], [ %8869, %8868 ]
  store i32 %8871, ptr %37, align 4, !tbaa !9
  %8872 = load i32, ptr %55, align 4, !tbaa !9
  %8873 = load i32, ptr %78, align 4, !tbaa !9
  %8874 = add nsw i32 %8872, %8873
  %8875 = add nsw i32 %8874, 1
  store i32 %8875, ptr %56, align 4, !tbaa !9
  br label %8876

8876:                                             ; preds = %8996, %8870
  %8877 = load i32, ptr %56, align 4, !tbaa !9
  %8878 = load i32, ptr %37, align 4, !tbaa !9
  %8879 = icmp sle i32 %8877, %8878
  br i1 %8879, label %8880, label %8999

8880:                                             ; preds = %8876
  %8881 = load i32, ptr %56, align 4, !tbaa !9
  %8882 = load i32, ptr %57, align 4, !tbaa !9
  %8883 = sub nsw i32 %8881, %8882
  %8884 = add nsw i32 %8883, 1
  %8885 = load i32, ptr %57, align 4, !tbaa !9
  %8886 = load i32, ptr %29, align 4, !tbaa !9
  %8887 = mul nsw i32 %8885, %8886
  %8888 = add nsw i32 %8884, %8887
  store i32 %8888, ptr %35, align 4, !tbaa !9
  %8889 = load i32, ptr %56, align 4, !tbaa !9
  %8890 = load i32, ptr %57, align 4, !tbaa !9
  %8891 = sub nsw i32 %8889, %8890
  %8892 = add nsw i32 %8891, 1
  %8893 = load i32, ptr %57, align 4, !tbaa !9
  %8894 = load i32, ptr %29, align 4, !tbaa !9
  %8895 = mul nsw i32 %8893, %8894
  %8896 = add nsw i32 %8892, %8895
  store i32 %8896, ptr %36, align 4, !tbaa !9
  %8897 = load ptr, ptr %22, align 8, !tbaa !5
  %8898 = load i32, ptr %57, align 4, !tbaa !9
  %8899 = load i32, ptr %55, align 4, !tbaa !9
  %8900 = sub nsw i32 %8898, %8899
  %8901 = add nsw i32 %8900, 1
  %8902 = load i32, ptr %55, align 4, !tbaa !9
  %8903 = load i32, ptr %31, align 4, !tbaa !9
  %8904 = mul nsw i32 %8902, %8903
  %8905 = add nsw i32 %8901, %8904
  %8906 = sext i32 %8905 to i64
  %8907 = getelementptr inbounds %struct.doublecomplex, ptr %8897, i64 %8906
  %8908 = call { double, double } @Cd(ptr noundef %8907)
  %8909 = extractvalue { double, double } %8908, 0
  %8910 = extractvalue { double, double } %8908, 1
  %8911 = fneg double %8910
  %8912 = call ptr @_pCd(ptr noundef %46)
  %8913 = getelementptr inbounds { double, double }, ptr %8912, i32 0, i32 0
  %8914 = getelementptr inbounds { double, double }, ptr %8912, i32 0, i32 1
  store double %8909, ptr %8913, align 8
  store double %8911, ptr %8914, align 8
  %8915 = load i32, ptr %56, align 4, !tbaa !9
  %8916 = load i32, ptr %55, align 4, !tbaa !9
  %8917 = sub nsw i32 %8915, %8916
  %8918 = add nsw i32 %8917, 1
  %8919 = load i32, ptr %55, align 4, !tbaa !9
  %8920 = load i32, ptr %29, align 4, !tbaa !9
  %8921 = mul nsw i32 %8919, %8920
  %8922 = add nsw i32 %8918, %8921
  store i32 %8922, ptr %39, align 4, !tbaa !9
  %8923 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %8924 = load double, ptr %8923, align 8, !tbaa !11
  %8925 = load ptr, ptr %20, align 8, !tbaa !5
  %8926 = load i32, ptr %39, align 4, !tbaa !9
  %8927 = sext i32 %8926 to i64
  %8928 = getelementptr inbounds %struct.doublecomplex, ptr %8925, i64 %8927
  %8929 = getelementptr inbounds %struct.doublecomplex, ptr %8928, i32 0, i32 0
  %8930 = load double, ptr %8929, align 8, !tbaa !11
  %8931 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %8932 = load double, ptr %8931, align 8, !tbaa !15
  %8933 = load ptr, ptr %20, align 8, !tbaa !5
  %8934 = load i32, ptr %39, align 4, !tbaa !9
  %8935 = sext i32 %8934 to i64
  %8936 = getelementptr inbounds %struct.doublecomplex, ptr %8933, i64 %8935
  %8937 = getelementptr inbounds %struct.doublecomplex, ptr %8936, i32 0, i32 1
  %8938 = load double, ptr %8937, align 8, !tbaa !15
  %8939 = fmul double %8932, %8938
  %8940 = fneg double %8939
  %8941 = call double @llvm.fmuladd.f64(double %8924, double %8930, double %8940)
  %8942 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %8941, ptr %8942, align 8, !tbaa !11
  %8943 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %8944 = load double, ptr %8943, align 8, !tbaa !11
  %8945 = load ptr, ptr %20, align 8, !tbaa !5
  %8946 = load i32, ptr %39, align 4, !tbaa !9
  %8947 = sext i32 %8946 to i64
  %8948 = getelementptr inbounds %struct.doublecomplex, ptr %8945, i64 %8947
  %8949 = getelementptr inbounds %struct.doublecomplex, ptr %8948, i32 0, i32 1
  %8950 = load double, ptr %8949, align 8, !tbaa !15
  %8951 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %8952 = load double, ptr %8951, align 8, !tbaa !15
  %8953 = load ptr, ptr %20, align 8, !tbaa !5
  %8954 = load i32, ptr %39, align 4, !tbaa !9
  %8955 = sext i32 %8954 to i64
  %8956 = getelementptr inbounds %struct.doublecomplex, ptr %8953, i64 %8955
  %8957 = getelementptr inbounds %struct.doublecomplex, ptr %8956, i32 0, i32 0
  %8958 = load double, ptr %8957, align 8, !tbaa !11
  %8959 = fmul double %8952, %8958
  %8960 = call double @llvm.fmuladd.f64(double %8944, double %8950, double %8959)
  %8961 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %8960, ptr %8961, align 8, !tbaa !15
  %8962 = load ptr, ptr %20, align 8, !tbaa !5
  %8963 = load i32, ptr %36, align 4, !tbaa !9
  %8964 = sext i32 %8963 to i64
  %8965 = getelementptr inbounds %struct.doublecomplex, ptr %8962, i64 %8964
  %8966 = getelementptr inbounds %struct.doublecomplex, ptr %8965, i32 0, i32 0
  %8967 = load double, ptr %8966, align 8, !tbaa !11
  %8968 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %8969 = load double, ptr %8968, align 8, !tbaa !11
  %8970 = fsub double %8967, %8969
  %8971 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %8970, ptr %8971, align 8, !tbaa !11
  %8972 = load ptr, ptr %20, align 8, !tbaa !5
  %8973 = load i32, ptr %36, align 4, !tbaa !9
  %8974 = sext i32 %8973 to i64
  %8975 = getelementptr inbounds %struct.doublecomplex, ptr %8972, i64 %8974
  %8976 = getelementptr inbounds %struct.doublecomplex, ptr %8975, i32 0, i32 1
  %8977 = load double, ptr %8976, align 8, !tbaa !15
  %8978 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %8979 = load double, ptr %8978, align 8, !tbaa !15
  %8980 = fsub double %8977, %8979
  %8981 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %8980, ptr %8981, align 8, !tbaa !15
  %8982 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %8983 = load double, ptr %8982, align 8, !tbaa !11
  %8984 = load ptr, ptr %20, align 8, !tbaa !5
  %8985 = load i32, ptr %35, align 4, !tbaa !9
  %8986 = sext i32 %8985 to i64
  %8987 = getelementptr inbounds %struct.doublecomplex, ptr %8984, i64 %8986
  %8988 = getelementptr inbounds %struct.doublecomplex, ptr %8987, i32 0, i32 0
  store double %8983, ptr %8988, align 8, !tbaa !11
  %8989 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %8990 = load double, ptr %8989, align 8, !tbaa !15
  %8991 = load ptr, ptr %20, align 8, !tbaa !5
  %8992 = load i32, ptr %35, align 4, !tbaa !9
  %8993 = sext i32 %8992 to i64
  %8994 = getelementptr inbounds %struct.doublecomplex, ptr %8991, i64 %8993
  %8995 = getelementptr inbounds %struct.doublecomplex, ptr %8994, i32 0, i32 1
  store double %8990, ptr %8995, align 8, !tbaa !15
  br label %8996

8996:                                             ; preds = %8880
  %8997 = load i32, ptr %56, align 4, !tbaa !9
  %8998 = add nsw i32 %8997, 1
  store i32 %8998, ptr %56, align 4, !tbaa !9
  br label %8876, !llvm.loop !89

8999:                                             ; preds = %8876
  br label %9000

9000:                                             ; preds = %8999
  %9001 = load i32, ptr %57, align 4, !tbaa !9
  %9002 = add nsw i32 %9001, 1
  store i32 %9002, ptr %57, align 4, !tbaa !9
  br label %8558, !llvm.loop !90

9003:                                             ; preds = %8558
  %9004 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %9004, ptr %38, align 4, !tbaa !9
  %9005 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %9005, ptr %56, align 4, !tbaa !9
  br label %9006

9006:                                             ; preds = %9159, %9003
  %9007 = load i32, ptr %56, align 4, !tbaa !9
  %9008 = load i32, ptr %38, align 4, !tbaa !9
  %9009 = icmp sle i32 %9007, %9008
  br i1 %9009, label %9010, label %9162

9010:                                             ; preds = %9006
  %9011 = load i32, ptr %56, align 4, !tbaa !9
  %9012 = load ptr, ptr %18, align 8, !tbaa !5
  %9013 = load i32, ptr %9012, align 4, !tbaa !9
  %9014 = add nsw i32 %9011, %9013
  store i32 %9014, ptr %35, align 4, !tbaa !9
  %9015 = load i32, ptr %55, align 4, !tbaa !9
  %9016 = load i32, ptr %78, align 4, !tbaa !9
  %9017 = add nsw i32 %9015, %9016
  store i32 %9017, ptr %36, align 4, !tbaa !9
  %9018 = load i32, ptr %35, align 4, !tbaa !9
  %9019 = load i32, ptr %36, align 4, !tbaa !9
  %9020 = icmp sle i32 %9018, %9019
  br i1 %9020, label %9021, label %9023

9021:                                             ; preds = %9010
  %9022 = load i32, ptr %35, align 4, !tbaa !9
  br label %9025

9023:                                             ; preds = %9010
  %9024 = load i32, ptr %36, align 4, !tbaa !9
  br label %9025

9025:                                             ; preds = %9023, %9021
  %9026 = phi i32 [ %9022, %9021 ], [ %9024, %9023 ]
  store i32 %9026, ptr %37, align 4, !tbaa !9
  %9027 = load i32, ptr %55, align 4, !tbaa !9
  %9028 = add nsw i32 %9027, 1
  store i32 %9028, ptr %57, align 4, !tbaa !9
  br label %9029

9029:                                             ; preds = %9155, %9025
  %9030 = load i32, ptr %57, align 4, !tbaa !9
  %9031 = load i32, ptr %37, align 4, !tbaa !9
  %9032 = icmp sle i32 %9030, %9031
  br i1 %9032, label %9033, label %9158

9033:                                             ; preds = %9029
  %9034 = load i32, ptr %57, align 4, !tbaa !9
  %9035 = load i32, ptr %56, align 4, !tbaa !9
  %9036 = sub nsw i32 %9034, %9035
  %9037 = add nsw i32 %9036, 1
  %9038 = load i32, ptr %56, align 4, !tbaa !9
  %9039 = load i32, ptr %29, align 4, !tbaa !9
  %9040 = mul nsw i32 %9038, %9039
  %9041 = add nsw i32 %9037, %9040
  store i32 %9041, ptr %35, align 4, !tbaa !9
  %9042 = load i32, ptr %57, align 4, !tbaa !9
  %9043 = load i32, ptr %56, align 4, !tbaa !9
  %9044 = sub nsw i32 %9042, %9043
  %9045 = add nsw i32 %9044, 1
  %9046 = load i32, ptr %56, align 4, !tbaa !9
  %9047 = load i32, ptr %29, align 4, !tbaa !9
  %9048 = mul nsw i32 %9046, %9047
  %9049 = add nsw i32 %9045, %9048
  store i32 %9049, ptr %36, align 4, !tbaa !9
  %9050 = load i32, ptr %57, align 4, !tbaa !9
  %9051 = load i32, ptr %55, align 4, !tbaa !9
  %9052 = sub nsw i32 %9050, %9051
  %9053 = add nsw i32 %9052, 1
  %9054 = load i32, ptr %55, align 4, !tbaa !9
  %9055 = load i32, ptr %31, align 4, !tbaa !9
  %9056 = mul nsw i32 %9054, %9055
  %9057 = add nsw i32 %9053, %9056
  store i32 %9057, ptr %39, align 4, !tbaa !9
  %9058 = load i32, ptr %55, align 4, !tbaa !9
  %9059 = load i32, ptr %56, align 4, !tbaa !9
  %9060 = sub nsw i32 %9058, %9059
  %9061 = add nsw i32 %9060, 1
  %9062 = load i32, ptr %56, align 4, !tbaa !9
  %9063 = load i32, ptr %29, align 4, !tbaa !9
  %9064 = mul nsw i32 %9062, %9063
  %9065 = add nsw i32 %9061, %9064
  store i32 %9065, ptr %40, align 4, !tbaa !9
  %9066 = load ptr, ptr %22, align 8, !tbaa !5
  %9067 = load i32, ptr %39, align 4, !tbaa !9
  %9068 = sext i32 %9067 to i64
  %9069 = getelementptr inbounds %struct.doublecomplex, ptr %9066, i64 %9068
  %9070 = getelementptr inbounds %struct.doublecomplex, ptr %9069, i32 0, i32 0
  %9071 = load double, ptr %9070, align 8, !tbaa !11
  %9072 = load ptr, ptr %20, align 8, !tbaa !5
  %9073 = load i32, ptr %40, align 4, !tbaa !9
  %9074 = sext i32 %9073 to i64
  %9075 = getelementptr inbounds %struct.doublecomplex, ptr %9072, i64 %9074
  %9076 = getelementptr inbounds %struct.doublecomplex, ptr %9075, i32 0, i32 0
  %9077 = load double, ptr %9076, align 8, !tbaa !11
  %9078 = load ptr, ptr %22, align 8, !tbaa !5
  %9079 = load i32, ptr %39, align 4, !tbaa !9
  %9080 = sext i32 %9079 to i64
  %9081 = getelementptr inbounds %struct.doublecomplex, ptr %9078, i64 %9080
  %9082 = getelementptr inbounds %struct.doublecomplex, ptr %9081, i32 0, i32 1
  %9083 = load double, ptr %9082, align 8, !tbaa !15
  %9084 = load ptr, ptr %20, align 8, !tbaa !5
  %9085 = load i32, ptr %40, align 4, !tbaa !9
  %9086 = sext i32 %9085 to i64
  %9087 = getelementptr inbounds %struct.doublecomplex, ptr %9084, i64 %9086
  %9088 = getelementptr inbounds %struct.doublecomplex, ptr %9087, i32 0, i32 1
  %9089 = load double, ptr %9088, align 8, !tbaa !15
  %9090 = fmul double %9083, %9089
  %9091 = fneg double %9090
  %9092 = call double @llvm.fmuladd.f64(double %9071, double %9077, double %9091)
  %9093 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %9092, ptr %9093, align 8, !tbaa !11
  %9094 = load ptr, ptr %22, align 8, !tbaa !5
  %9095 = load i32, ptr %39, align 4, !tbaa !9
  %9096 = sext i32 %9095 to i64
  %9097 = getelementptr inbounds %struct.doublecomplex, ptr %9094, i64 %9096
  %9098 = getelementptr inbounds %struct.doublecomplex, ptr %9097, i32 0, i32 0
  %9099 = load double, ptr %9098, align 8, !tbaa !11
  %9100 = load ptr, ptr %20, align 8, !tbaa !5
  %9101 = load i32, ptr %40, align 4, !tbaa !9
  %9102 = sext i32 %9101 to i64
  %9103 = getelementptr inbounds %struct.doublecomplex, ptr %9100, i64 %9102
  %9104 = getelementptr inbounds %struct.doublecomplex, ptr %9103, i32 0, i32 1
  %9105 = load double, ptr %9104, align 8, !tbaa !15
  %9106 = load ptr, ptr %22, align 8, !tbaa !5
  %9107 = load i32, ptr %39, align 4, !tbaa !9
  %9108 = sext i32 %9107 to i64
  %9109 = getelementptr inbounds %struct.doublecomplex, ptr %9106, i64 %9108
  %9110 = getelementptr inbounds %struct.doublecomplex, ptr %9109, i32 0, i32 1
  %9111 = load double, ptr %9110, align 8, !tbaa !15
  %9112 = load ptr, ptr %20, align 8, !tbaa !5
  %9113 = load i32, ptr %40, align 4, !tbaa !9
  %9114 = sext i32 %9113 to i64
  %9115 = getelementptr inbounds %struct.doublecomplex, ptr %9112, i64 %9114
  %9116 = getelementptr inbounds %struct.doublecomplex, ptr %9115, i32 0, i32 0
  %9117 = load double, ptr %9116, align 8, !tbaa !11
  %9118 = fmul double %9111, %9117
  %9119 = call double @llvm.fmuladd.f64(double %9099, double %9105, double %9118)
  %9120 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %9119, ptr %9120, align 8, !tbaa !15
  %9121 = load ptr, ptr %20, align 8, !tbaa !5
  %9122 = load i32, ptr %36, align 4, !tbaa !9
  %9123 = sext i32 %9122 to i64
  %9124 = getelementptr inbounds %struct.doublecomplex, ptr %9121, i64 %9123
  %9125 = getelementptr inbounds %struct.doublecomplex, ptr %9124, i32 0, i32 0
  %9126 = load double, ptr %9125, align 8, !tbaa !11
  %9127 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %9128 = load double, ptr %9127, align 8, !tbaa !11
  %9129 = fsub double %9126, %9128
  %9130 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %9129, ptr %9130, align 8, !tbaa !11
  %9131 = load ptr, ptr %20, align 8, !tbaa !5
  %9132 = load i32, ptr %36, align 4, !tbaa !9
  %9133 = sext i32 %9132 to i64
  %9134 = getelementptr inbounds %struct.doublecomplex, ptr %9131, i64 %9133
  %9135 = getelementptr inbounds %struct.doublecomplex, ptr %9134, i32 0, i32 1
  %9136 = load double, ptr %9135, align 8, !tbaa !15
  %9137 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %9138 = load double, ptr %9137, align 8, !tbaa !15
  %9139 = fsub double %9136, %9138
  %9140 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %9139, ptr %9140, align 8, !tbaa !15
  %9141 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %9142 = load double, ptr %9141, align 8, !tbaa !11
  %9143 = load ptr, ptr %20, align 8, !tbaa !5
  %9144 = load i32, ptr %35, align 4, !tbaa !9
  %9145 = sext i32 %9144 to i64
  %9146 = getelementptr inbounds %struct.doublecomplex, ptr %9143, i64 %9145
  %9147 = getelementptr inbounds %struct.doublecomplex, ptr %9146, i32 0, i32 0
  store double %9142, ptr %9147, align 8, !tbaa !11
  %9148 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %9149 = load double, ptr %9148, align 8, !tbaa !15
  %9150 = load ptr, ptr %20, align 8, !tbaa !5
  %9151 = load i32, ptr %35, align 4, !tbaa !9
  %9152 = sext i32 %9151 to i64
  %9153 = getelementptr inbounds %struct.doublecomplex, ptr %9150, i64 %9152
  %9154 = getelementptr inbounds %struct.doublecomplex, ptr %9153, i32 0, i32 1
  store double %9149, ptr %9154, align 8, !tbaa !15
  br label %9155

9155:                                             ; preds = %9033
  %9156 = load i32, ptr %57, align 4, !tbaa !9
  %9157 = add nsw i32 %9156, 1
  store i32 %9157, ptr %57, align 4, !tbaa !9
  br label %9029, !llvm.loop !91

9158:                                             ; preds = %9029
  br label %9159

9159:                                             ; preds = %9158
  %9160 = load i32, ptr %56, align 4, !tbaa !9
  %9161 = add nsw i32 %9160, 1
  store i32 %9161, ptr %56, align 4, !tbaa !9
  br label %9006, !llvm.loop !92

9162:                                             ; preds = %9006
  %9163 = load i32, ptr %67, align 4, !tbaa !9
  %9164 = icmp ne i32 %9163, 0
  br i1 %9164, label %9165, label %9204

9165:                                             ; preds = %9162
  %9166 = load double, ptr %77, align 8, !tbaa !14
  %9167 = fdiv double 1.000000e+00, %9166
  store double %9167, ptr %43, align 8, !tbaa !14
  %9168 = load ptr, ptr %24, align 8, !tbaa !5
  %9169 = load i32, ptr %55, align 4, !tbaa !9
  %9170 = load i32, ptr %33, align 4, !tbaa !9
  %9171 = mul nsw i32 %9169, %9170
  %9172 = add nsw i32 %9171, 1
  %9173 = sext i32 %9172 to i64
  %9174 = getelementptr inbounds %struct.doublecomplex, ptr %9168, i64 %9173
  call void @zdscal_(ptr noundef %70, ptr noundef %43, ptr noundef %9174, ptr noundef @c__1)
  %9175 = load i32, ptr %78, align 4, !tbaa !9
  %9176 = icmp sgt i32 %9175, 0
  br i1 %9176, label %9177, label %9203

9177:                                             ; preds = %9165
  %9178 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double -1.000000e+00, ptr %9178, align 8, !tbaa !11
  %9179 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double 0.000000e+00, ptr %9179, align 8, !tbaa !15
  %9180 = load ptr, ptr %24, align 8, !tbaa !5
  %9181 = load i32, ptr %55, align 4, !tbaa !9
  %9182 = load i32, ptr %33, align 4, !tbaa !9
  %9183 = mul nsw i32 %9181, %9182
  %9184 = add nsw i32 %9183, 1
  %9185 = sext i32 %9184 to i64
  %9186 = getelementptr inbounds %struct.doublecomplex, ptr %9180, i64 %9185
  %9187 = load ptr, ptr %22, align 8, !tbaa !5
  %9188 = load i32, ptr %55, align 4, !tbaa !9
  %9189 = load i32, ptr %31, align 4, !tbaa !9
  %9190 = mul nsw i32 %9188, %9189
  %9191 = add nsw i32 %9190, 2
  %9192 = sext i32 %9191 to i64
  %9193 = getelementptr inbounds %struct.doublecomplex, ptr %9187, i64 %9192
  %9194 = load ptr, ptr %24, align 8, !tbaa !5
  %9195 = load i32, ptr %55, align 4, !tbaa !9
  %9196 = add nsw i32 %9195, 1
  %9197 = load i32, ptr %33, align 4, !tbaa !9
  %9198 = mul nsw i32 %9196, %9197
  %9199 = add nsw i32 %9198, 1
  %9200 = sext i32 %9199 to i64
  %9201 = getelementptr inbounds %struct.doublecomplex, ptr %9194, i64 %9200
  %9202 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zgerc_(ptr noundef %70, ptr noundef %78, ptr noundef %44, ptr noundef %9186, ptr noundef @c__1, ptr noundef %9193, ptr noundef @c__1, ptr noundef %9201, ptr noundef %9202)
  br label %9203

9203:                                             ; preds = %9177, %9165
  br label %9204

9204:                                             ; preds = %9203, %9162
  %9205 = load i32, ptr %55, align 4, !tbaa !9
  %9206 = load i32, ptr %62, align 4, !tbaa !9
  %9207 = sub nsw i32 %9205, %9206
  %9208 = add nsw i32 %9207, 1
  %9209 = load i32, ptr %62, align 4, !tbaa !9
  %9210 = load i32, ptr %29, align 4, !tbaa !9
  %9211 = mul nsw i32 %9209, %9210
  %9212 = add nsw i32 %9208, %9211
  store i32 %9212, ptr %38, align 4, !tbaa !9
  %9213 = load ptr, ptr %20, align 8, !tbaa !5
  %9214 = load i32, ptr %38, align 4, !tbaa !9
  %9215 = sext i32 %9214 to i64
  %9216 = getelementptr inbounds %struct.doublecomplex, ptr %9213, i64 %9215
  %9217 = getelementptr inbounds %struct.doublecomplex, ptr %9216, i32 0, i32 0
  %9218 = load double, ptr %9217, align 8, !tbaa !11
  %9219 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %9218, ptr %9219, align 8, !tbaa !11
  %9220 = load ptr, ptr %20, align 8, !tbaa !5
  %9221 = load i32, ptr %38, align 4, !tbaa !9
  %9222 = sext i32 %9221 to i64
  %9223 = getelementptr inbounds %struct.doublecomplex, ptr %9220, i64 %9222
  %9224 = getelementptr inbounds %struct.doublecomplex, ptr %9223, i32 0, i32 1
  %9225 = load double, ptr %9224, align 8, !tbaa !15
  %9226 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %9225, ptr %9226, align 8, !tbaa !15
  br label %9227

9227:                                             ; preds = %9204, %8376
  %9228 = load ptr, ptr %19, align 8, !tbaa !5
  %9229 = load i32, ptr %9228, align 4, !tbaa !9
  %9230 = sub nsw i32 %9229, 1
  store i32 %9230, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %9231

9231:                                             ; preds = %10038, %9227
  %9232 = load i32, ptr %57, align 4, !tbaa !9
  %9233 = load i32, ptr %38, align 4, !tbaa !9
  %9234 = icmp sle i32 %9232, %9233
  br i1 %9234, label %9235, label %10041

9235:                                             ; preds = %9231
  %9236 = load i32, ptr %71, align 4, !tbaa !9
  %9237 = icmp ne i32 %9236, 0
  br i1 %9237, label %9238, label %9589

9238:                                             ; preds = %9235
  %9239 = load i32, ptr %55, align 4, !tbaa !9
  %9240 = load i32, ptr %57, align 4, !tbaa !9
  %9241 = add nsw i32 %9239, %9240
  %9242 = load i32, ptr %72, align 4, !tbaa !9
  %9243 = sub nsw i32 %9241, %9242
  %9244 = icmp sgt i32 %9243, 0
  br i1 %9244, label %9245, label %9588

9245:                                             ; preds = %9238
  %9246 = load i32, ptr %55, align 4, !tbaa !9
  %9247 = load i32, ptr %57, align 4, !tbaa !9
  %9248 = add nsw i32 %9246, %9247
  %9249 = load i32, ptr %59, align 4, !tbaa !9
  %9250 = icmp slt i32 %9248, %9249
  br i1 %9250, label %9251, label %9588

9251:                                             ; preds = %9245
  %9252 = load ptr, ptr %20, align 8, !tbaa !5
  %9253 = load i32, ptr %72, align 4, !tbaa !9
  %9254 = load i32, ptr %57, align 4, !tbaa !9
  %9255 = sub nsw i32 %9253, %9254
  %9256 = load i32, ptr %55, align 4, !tbaa !9
  %9257 = load i32, ptr %57, align 4, !tbaa !9
  %9258 = add nsw i32 %9256, %9257
  %9259 = load ptr, ptr %18, align 8, !tbaa !5
  %9260 = load i32, ptr %9259, align 4, !tbaa !9
  %9261 = sub nsw i32 %9258, %9260
  %9262 = load i32, ptr %29, align 4, !tbaa !9
  %9263 = mul nsw i32 %9261, %9262
  %9264 = add nsw i32 %9255, %9263
  %9265 = sext i32 %9264 to i64
  %9266 = getelementptr inbounds %struct.doublecomplex, ptr %9252, i64 %9265
  %9267 = load ptr, ptr %27, align 8, !tbaa !5
  %9268 = load i32, ptr %55, align 4, !tbaa !9
  %9269 = load i32, ptr %57, align 4, !tbaa !9
  %9270 = add nsw i32 %9268, %9269
  %9271 = load ptr, ptr %18, align 8, !tbaa !5
  %9272 = load i32, ptr %9271, align 4, !tbaa !9
  %9273 = sub nsw i32 %9270, %9272
  %9274 = sext i32 %9273 to i64
  %9275 = getelementptr inbounds double, ptr %9267, i64 %9274
  %9276 = load ptr, ptr %26, align 8, !tbaa !5
  %9277 = load i32, ptr %55, align 4, !tbaa !9
  %9278 = load i32, ptr %57, align 4, !tbaa !9
  %9279 = add nsw i32 %9277, %9278
  %9280 = load ptr, ptr %18, align 8, !tbaa !5
  %9281 = load i32, ptr %9280, align 4, !tbaa !9
  %9282 = sub nsw i32 %9279, %9281
  %9283 = sext i32 %9282 to i64
  %9284 = getelementptr inbounds %struct.doublecomplex, ptr %9276, i64 %9283
  call void @zlartg_(ptr noundef %9266, ptr noundef %74, ptr noundef %9275, ptr noundef %9284, ptr noundef %68)
  %9285 = load i32, ptr %57, align 4, !tbaa !9
  %9286 = add nsw i32 %9285, 1
  %9287 = load i32, ptr %55, align 4, !tbaa !9
  %9288 = load i32, ptr %31, align 4, !tbaa !9
  %9289 = mul nsw i32 %9287, %9288
  %9290 = add nsw i32 %9286, %9289
  store i32 %9290, ptr %37, align 4, !tbaa !9
  %9291 = load ptr, ptr %22, align 8, !tbaa !5
  %9292 = load i32, ptr %37, align 4, !tbaa !9
  %9293 = sext i32 %9292 to i64
  %9294 = getelementptr inbounds %struct.doublecomplex, ptr %9291, i64 %9293
  %9295 = getelementptr inbounds %struct.doublecomplex, ptr %9294, i32 0, i32 0
  %9296 = load double, ptr %9295, align 8, !tbaa !11
  %9297 = fneg double %9296
  %9298 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %9297, ptr %9298, align 8, !tbaa !11
  %9299 = load ptr, ptr %22, align 8, !tbaa !5
  %9300 = load i32, ptr %37, align 4, !tbaa !9
  %9301 = sext i32 %9300 to i64
  %9302 = getelementptr inbounds %struct.doublecomplex, ptr %9299, i64 %9301
  %9303 = getelementptr inbounds %struct.doublecomplex, ptr %9302, i32 0, i32 1
  %9304 = load double, ptr %9303, align 8, !tbaa !15
  %9305 = fneg double %9304
  %9306 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %9305, ptr %9306, align 8, !tbaa !15
  %9307 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %9308 = load double, ptr %9307, align 8, !tbaa !11
  %9309 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %9310 = load double, ptr %9309, align 8, !tbaa !11
  %9311 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %9312 = load double, ptr %9311, align 8, !tbaa !15
  %9313 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %9314 = load double, ptr %9313, align 8, !tbaa !15
  %9315 = fmul double %9312, %9314
  %9316 = fneg double %9315
  %9317 = call double @llvm.fmuladd.f64(double %9308, double %9310, double %9316)
  %9318 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %9317, ptr %9318, align 8, !tbaa !11
  %9319 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %9320 = load double, ptr %9319, align 8, !tbaa !11
  %9321 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %9322 = load double, ptr %9321, align 8, !tbaa !15
  %9323 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %9324 = load double, ptr %9323, align 8, !tbaa !15
  %9325 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %9326 = load double, ptr %9325, align 8, !tbaa !11
  %9327 = fmul double %9324, %9326
  %9328 = call double @llvm.fmuladd.f64(double %9320, double %9322, double %9327)
  %9329 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %9328, ptr %9329, align 8, !tbaa !15
  %9330 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %9331 = load double, ptr %9330, align 8, !tbaa !11
  %9332 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %9331, ptr %9332, align 8, !tbaa !11
  %9333 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %9334 = load double, ptr %9333, align 8, !tbaa !15
  %9335 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %9334, ptr %9335, align 8, !tbaa !15
  %9336 = load i32, ptr %59, align 4, !tbaa !9
  %9337 = load ptr, ptr %19, align 8, !tbaa !5
  %9338 = load i32, ptr %9337, align 4, !tbaa !9
  %9339 = sub nsw i32 %9336, %9338
  %9340 = load i32, ptr %55, align 4, !tbaa !9
  %9341 = add nsw i32 %9339, %9340
  %9342 = load i32, ptr %57, align 4, !tbaa !9
  %9343 = add nsw i32 %9341, %9342
  store i32 %9343, ptr %37, align 4, !tbaa !9
  %9344 = load i32, ptr %55, align 4, !tbaa !9
  %9345 = load i32, ptr %57, align 4, !tbaa !9
  %9346 = add nsw i32 %9344, %9345
  %9347 = load ptr, ptr %18, align 8, !tbaa !5
  %9348 = load i32, ptr %9347, align 4, !tbaa !9
  %9349 = sub nsw i32 %9346, %9348
  store i32 %9349, ptr %35, align 4, !tbaa !9
  %9350 = load ptr, ptr %27, align 8, !tbaa !5
  %9351 = load i32, ptr %35, align 4, !tbaa !9
  %9352 = sext i32 %9351 to i64
  %9353 = getelementptr inbounds double, ptr %9350, i64 %9352
  %9354 = load double, ptr %9353, align 8, !tbaa !14
  %9355 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %9356 = load double, ptr %9355, align 8, !tbaa !11
  %9357 = fmul double %9354, %9356
  %9358 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %9357, ptr %9358, align 8, !tbaa !11
  %9359 = load ptr, ptr %27, align 8, !tbaa !5
  %9360 = load i32, ptr %35, align 4, !tbaa !9
  %9361 = sext i32 %9360 to i64
  %9362 = getelementptr inbounds double, ptr %9359, i64 %9361
  %9363 = load double, ptr %9362, align 8, !tbaa !14
  %9364 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %9365 = load double, ptr %9364, align 8, !tbaa !15
  %9366 = fmul double %9363, %9365
  %9367 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %9366, ptr %9367, align 8, !tbaa !15
  %9368 = load ptr, ptr %26, align 8, !tbaa !5
  %9369 = load i32, ptr %55, align 4, !tbaa !9
  %9370 = load i32, ptr %57, align 4, !tbaa !9
  %9371 = add nsw i32 %9369, %9370
  %9372 = load ptr, ptr %18, align 8, !tbaa !5
  %9373 = load i32, ptr %9372, align 4, !tbaa !9
  %9374 = sub nsw i32 %9371, %9373
  %9375 = sext i32 %9374 to i64
  %9376 = getelementptr inbounds %struct.doublecomplex, ptr %9368, i64 %9375
  %9377 = call { double, double } @Cd(ptr noundef %9376)
  %9378 = extractvalue { double, double } %9377, 0
  %9379 = extractvalue { double, double } %9377, 1
  %9380 = fneg double %9379
  %9381 = call ptr @_pCd(ptr noundef %47)
  %9382 = getelementptr inbounds { double, double }, ptr %9381, i32 0, i32 0
  %9383 = getelementptr inbounds { double, double }, ptr %9381, i32 0, i32 1
  store double %9378, ptr %9382, align 8
  store double %9380, ptr %9383, align 8
  %9384 = load i32, ptr %72, align 4, !tbaa !9
  %9385 = load i32, ptr %55, align 4, !tbaa !9
  %9386 = load i32, ptr %57, align 4, !tbaa !9
  %9387 = add nsw i32 %9385, %9386
  %9388 = load ptr, ptr %18, align 8, !tbaa !5
  %9389 = load i32, ptr %9388, align 4, !tbaa !9
  %9390 = sub nsw i32 %9387, %9389
  %9391 = load i32, ptr %29, align 4, !tbaa !9
  %9392 = mul nsw i32 %9390, %9391
  %9393 = add nsw i32 %9384, %9392
  store i32 %9393, ptr %36, align 4, !tbaa !9
  %9394 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %9395 = load double, ptr %9394, align 8, !tbaa !11
  %9396 = load ptr, ptr %20, align 8, !tbaa !5
  %9397 = load i32, ptr %36, align 4, !tbaa !9
  %9398 = sext i32 %9397 to i64
  %9399 = getelementptr inbounds %struct.doublecomplex, ptr %9396, i64 %9398
  %9400 = getelementptr inbounds %struct.doublecomplex, ptr %9399, i32 0, i32 0
  %9401 = load double, ptr %9400, align 8, !tbaa !11
  %9402 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %9403 = load double, ptr %9402, align 8, !tbaa !15
  %9404 = load ptr, ptr %20, align 8, !tbaa !5
  %9405 = load i32, ptr %36, align 4, !tbaa !9
  %9406 = sext i32 %9405 to i64
  %9407 = getelementptr inbounds %struct.doublecomplex, ptr %9404, i64 %9406
  %9408 = getelementptr inbounds %struct.doublecomplex, ptr %9407, i32 0, i32 1
  %9409 = load double, ptr %9408, align 8, !tbaa !15
  %9410 = fmul double %9403, %9409
  %9411 = fneg double %9410
  %9412 = call double @llvm.fmuladd.f64(double %9395, double %9401, double %9411)
  %9413 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %9412, ptr %9413, align 8, !tbaa !11
  %9414 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %9415 = load double, ptr %9414, align 8, !tbaa !11
  %9416 = load ptr, ptr %20, align 8, !tbaa !5
  %9417 = load i32, ptr %36, align 4, !tbaa !9
  %9418 = sext i32 %9417 to i64
  %9419 = getelementptr inbounds %struct.doublecomplex, ptr %9416, i64 %9418
  %9420 = getelementptr inbounds %struct.doublecomplex, ptr %9419, i32 0, i32 1
  %9421 = load double, ptr %9420, align 8, !tbaa !15
  %9422 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %9423 = load double, ptr %9422, align 8, !tbaa !15
  %9424 = load ptr, ptr %20, align 8, !tbaa !5
  %9425 = load i32, ptr %36, align 4, !tbaa !9
  %9426 = sext i32 %9425 to i64
  %9427 = getelementptr inbounds %struct.doublecomplex, ptr %9424, i64 %9426
  %9428 = getelementptr inbounds %struct.doublecomplex, ptr %9427, i32 0, i32 0
  %9429 = load double, ptr %9428, align 8, !tbaa !11
  %9430 = fmul double %9423, %9429
  %9431 = call double @llvm.fmuladd.f64(double %9415, double %9421, double %9430)
  %9432 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %9431, ptr %9432, align 8, !tbaa !15
  %9433 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %9434 = load double, ptr %9433, align 8, !tbaa !11
  %9435 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %9436 = load double, ptr %9435, align 8, !tbaa !11
  %9437 = fsub double %9434, %9436
  %9438 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %9437, ptr %9438, align 8, !tbaa !11
  %9439 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %9440 = load double, ptr %9439, align 8, !tbaa !15
  %9441 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %9442 = load double, ptr %9441, align 8, !tbaa !15
  %9443 = fsub double %9440, %9442
  %9444 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %9443, ptr %9444, align 8, !tbaa !15
  %9445 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %9446 = load double, ptr %9445, align 8, !tbaa !11
  %9447 = load ptr, ptr %26, align 8, !tbaa !5
  %9448 = load i32, ptr %37, align 4, !tbaa !9
  %9449 = sext i32 %9448 to i64
  %9450 = getelementptr inbounds %struct.doublecomplex, ptr %9447, i64 %9449
  %9451 = getelementptr inbounds %struct.doublecomplex, ptr %9450, i32 0, i32 0
  store double %9446, ptr %9451, align 8, !tbaa !11
  %9452 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %9453 = load double, ptr %9452, align 8, !tbaa !15
  %9454 = load ptr, ptr %26, align 8, !tbaa !5
  %9455 = load i32, ptr %37, align 4, !tbaa !9
  %9456 = sext i32 %9455 to i64
  %9457 = getelementptr inbounds %struct.doublecomplex, ptr %9454, i64 %9456
  %9458 = getelementptr inbounds %struct.doublecomplex, ptr %9457, i32 0, i32 1
  store double %9453, ptr %9458, align 8, !tbaa !15
  %9459 = load i32, ptr %72, align 4, !tbaa !9
  %9460 = load i32, ptr %55, align 4, !tbaa !9
  %9461 = load i32, ptr %57, align 4, !tbaa !9
  %9462 = add nsw i32 %9460, %9461
  %9463 = load ptr, ptr %18, align 8, !tbaa !5
  %9464 = load i32, ptr %9463, align 4, !tbaa !9
  %9465 = sub nsw i32 %9462, %9464
  %9466 = load i32, ptr %29, align 4, !tbaa !9
  %9467 = mul nsw i32 %9465, %9466
  %9468 = add nsw i32 %9459, %9467
  store i32 %9468, ptr %37, align 4, !tbaa !9
  %9469 = load i32, ptr %55, align 4, !tbaa !9
  %9470 = load i32, ptr %57, align 4, !tbaa !9
  %9471 = add nsw i32 %9469, %9470
  %9472 = load ptr, ptr %18, align 8, !tbaa !5
  %9473 = load i32, ptr %9472, align 4, !tbaa !9
  %9474 = sub nsw i32 %9471, %9473
  store i32 %9474, ptr %35, align 4, !tbaa !9
  %9475 = load ptr, ptr %26, align 8, !tbaa !5
  %9476 = load i32, ptr %35, align 4, !tbaa !9
  %9477 = sext i32 %9476 to i64
  %9478 = getelementptr inbounds %struct.doublecomplex, ptr %9475, i64 %9477
  %9479 = getelementptr inbounds %struct.doublecomplex, ptr %9478, i32 0, i32 0
  %9480 = load double, ptr %9479, align 8, !tbaa !11
  %9481 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %9482 = load double, ptr %9481, align 8, !tbaa !11
  %9483 = load ptr, ptr %26, align 8, !tbaa !5
  %9484 = load i32, ptr %35, align 4, !tbaa !9
  %9485 = sext i32 %9484 to i64
  %9486 = getelementptr inbounds %struct.doublecomplex, ptr %9483, i64 %9485
  %9487 = getelementptr inbounds %struct.doublecomplex, ptr %9486, i32 0, i32 1
  %9488 = load double, ptr %9487, align 8, !tbaa !15
  %9489 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %9490 = load double, ptr %9489, align 8, !tbaa !15
  %9491 = fmul double %9488, %9490
  %9492 = fneg double %9491
  %9493 = call double @llvm.fmuladd.f64(double %9480, double %9482, double %9492)
  %9494 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %9493, ptr %9494, align 8, !tbaa !11
  %9495 = load ptr, ptr %26, align 8, !tbaa !5
  %9496 = load i32, ptr %35, align 4, !tbaa !9
  %9497 = sext i32 %9496 to i64
  %9498 = getelementptr inbounds %struct.doublecomplex, ptr %9495, i64 %9497
  %9499 = getelementptr inbounds %struct.doublecomplex, ptr %9498, i32 0, i32 0
  %9500 = load double, ptr %9499, align 8, !tbaa !11
  %9501 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %9502 = load double, ptr %9501, align 8, !tbaa !15
  %9503 = load ptr, ptr %26, align 8, !tbaa !5
  %9504 = load i32, ptr %35, align 4, !tbaa !9
  %9505 = sext i32 %9504 to i64
  %9506 = getelementptr inbounds %struct.doublecomplex, ptr %9503, i64 %9505
  %9507 = getelementptr inbounds %struct.doublecomplex, ptr %9506, i32 0, i32 1
  %9508 = load double, ptr %9507, align 8, !tbaa !15
  %9509 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %9510 = load double, ptr %9509, align 8, !tbaa !11
  %9511 = fmul double %9508, %9510
  %9512 = call double @llvm.fmuladd.f64(double %9500, double %9502, double %9511)
  %9513 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %9512, ptr %9513, align 8, !tbaa !15
  %9514 = load i32, ptr %55, align 4, !tbaa !9
  %9515 = load i32, ptr %57, align 4, !tbaa !9
  %9516 = add nsw i32 %9514, %9515
  %9517 = load ptr, ptr %18, align 8, !tbaa !5
  %9518 = load i32, ptr %9517, align 4, !tbaa !9
  %9519 = sub nsw i32 %9516, %9518
  store i32 %9519, ptr %36, align 4, !tbaa !9
  %9520 = load i32, ptr %72, align 4, !tbaa !9
  %9521 = load i32, ptr %55, align 4, !tbaa !9
  %9522 = load i32, ptr %57, align 4, !tbaa !9
  %9523 = add nsw i32 %9521, %9522
  %9524 = load ptr, ptr %18, align 8, !tbaa !5
  %9525 = load i32, ptr %9524, align 4, !tbaa !9
  %9526 = sub nsw i32 %9523, %9525
  %9527 = load i32, ptr %29, align 4, !tbaa !9
  %9528 = mul nsw i32 %9526, %9527
  %9529 = add nsw i32 %9520, %9528
  store i32 %9529, ptr %39, align 4, !tbaa !9
  %9530 = load ptr, ptr %27, align 8, !tbaa !5
  %9531 = load i32, ptr %36, align 4, !tbaa !9
  %9532 = sext i32 %9531 to i64
  %9533 = getelementptr inbounds double, ptr %9530, i64 %9532
  %9534 = load double, ptr %9533, align 8, !tbaa !14
  %9535 = load ptr, ptr %20, align 8, !tbaa !5
  %9536 = load i32, ptr %39, align 4, !tbaa !9
  %9537 = sext i32 %9536 to i64
  %9538 = getelementptr inbounds %struct.doublecomplex, ptr %9535, i64 %9537
  %9539 = getelementptr inbounds %struct.doublecomplex, ptr %9538, i32 0, i32 0
  %9540 = load double, ptr %9539, align 8, !tbaa !11
  %9541 = fmul double %9534, %9540
  %9542 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %9541, ptr %9542, align 8, !tbaa !11
  %9543 = load ptr, ptr %27, align 8, !tbaa !5
  %9544 = load i32, ptr %36, align 4, !tbaa !9
  %9545 = sext i32 %9544 to i64
  %9546 = getelementptr inbounds double, ptr %9543, i64 %9545
  %9547 = load double, ptr %9546, align 8, !tbaa !14
  %9548 = load ptr, ptr %20, align 8, !tbaa !5
  %9549 = load i32, ptr %39, align 4, !tbaa !9
  %9550 = sext i32 %9549 to i64
  %9551 = getelementptr inbounds %struct.doublecomplex, ptr %9548, i64 %9550
  %9552 = getelementptr inbounds %struct.doublecomplex, ptr %9551, i32 0, i32 1
  %9553 = load double, ptr %9552, align 8, !tbaa !15
  %9554 = fmul double %9547, %9553
  %9555 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %9554, ptr %9555, align 8, !tbaa !15
  %9556 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %9557 = load double, ptr %9556, align 8, !tbaa !11
  %9558 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %9559 = load double, ptr %9558, align 8, !tbaa !11
  %9560 = fadd double %9557, %9559
  %9561 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %9560, ptr %9561, align 8, !tbaa !11
  %9562 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %9563 = load double, ptr %9562, align 8, !tbaa !15
  %9564 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %9565 = load double, ptr %9564, align 8, !tbaa !15
  %9566 = fadd double %9563, %9565
  %9567 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %9566, ptr %9567, align 8, !tbaa !15
  %9568 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %9569 = load double, ptr %9568, align 8, !tbaa !11
  %9570 = load ptr, ptr %20, align 8, !tbaa !5
  %9571 = load i32, ptr %37, align 4, !tbaa !9
  %9572 = sext i32 %9571 to i64
  %9573 = getelementptr inbounds %struct.doublecomplex, ptr %9570, i64 %9572
  %9574 = getelementptr inbounds %struct.doublecomplex, ptr %9573, i32 0, i32 0
  store double %9569, ptr %9574, align 8, !tbaa !11
  %9575 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %9576 = load double, ptr %9575, align 8, !tbaa !15
  %9577 = load ptr, ptr %20, align 8, !tbaa !5
  %9578 = load i32, ptr %37, align 4, !tbaa !9
  %9579 = sext i32 %9578 to i64
  %9580 = getelementptr inbounds %struct.doublecomplex, ptr %9577, i64 %9579
  %9581 = getelementptr inbounds %struct.doublecomplex, ptr %9580, i32 0, i32 1
  store double %9576, ptr %9581, align 8, !tbaa !15
  %9582 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %9583 = load double, ptr %9582, align 8, !tbaa !11
  %9584 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %9583, ptr %9584, align 8, !tbaa !11
  %9585 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %9586 = load double, ptr %9585, align 8, !tbaa !15
  %9587 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %9586, ptr %9587, align 8, !tbaa !15
  br label %9588

9588:                                             ; preds = %9251, %9245, %9238
  br label %9589

9589:                                             ; preds = %9588, %9235
  store i32 1, ptr %37, align 4, !tbaa !9
  %9590 = load i32, ptr %57, align 4, !tbaa !9
  %9591 = load i32, ptr %61, align 4, !tbaa !9
  %9592 = add nsw i32 %9590, %9591
  %9593 = load i32, ptr %59, align 4, !tbaa !9
  %9594 = sub nsw i32 %9592, %9593
  %9595 = add nsw i32 %9594, 1
  store i32 %9595, ptr %35, align 4, !tbaa !9
  %9596 = load i32, ptr %55, align 4, !tbaa !9
  %9597 = load i32, ptr %57, align 4, !tbaa !9
  %9598 = add nsw i32 %9596, %9597
  %9599 = add nsw i32 %9598, 1
  %9600 = load i32, ptr %37, align 4, !tbaa !9
  %9601 = load i32, ptr %35, align 4, !tbaa !9
  %9602 = icmp sge i32 %9600, %9601
  br i1 %9602, label %9603, label %9605

9603:                                             ; preds = %9589
  %9604 = load i32, ptr %37, align 4, !tbaa !9
  br label %9607

9605:                                             ; preds = %9589
  %9606 = load i32, ptr %35, align 4, !tbaa !9
  br label %9607

9607:                                             ; preds = %9605, %9603
  %9608 = phi i32 [ %9604, %9603 ], [ %9606, %9605 ]
  %9609 = load i32, ptr %72, align 4, !tbaa !9
  %9610 = mul nsw i32 %9608, %9609
  %9611 = sub nsw i32 %9599, %9610
  store i32 %9611, ptr %66, align 4, !tbaa !9
  %9612 = load i32, ptr %66, align 4, !tbaa !9
  %9613 = load ptr, ptr %18, align 8, !tbaa !5
  %9614 = load i32, ptr %9613, align 4, !tbaa !9
  %9615 = add nsw i32 %9612, %9614
  %9616 = sub nsw i32 %9615, 1
  %9617 = load i32, ptr %72, align 4, !tbaa !9
  %9618 = sdiv i32 %9616, %9617
  store i32 %9618, ptr %69, align 4, !tbaa !9
  %9619 = load i32, ptr %66, align 4, !tbaa !9
  %9620 = load i32, ptr %69, align 4, !tbaa !9
  %9621 = sub nsw i32 %9620, 1
  %9622 = load i32, ptr %72, align 4, !tbaa !9
  %9623 = mul nsw i32 %9621, %9622
  %9624 = sub nsw i32 %9619, %9623
  store i32 %9624, ptr %65, align 4, !tbaa !9
  %9625 = load i32, ptr %71, align 4, !tbaa !9
  %9626 = icmp ne i32 %9625, 0
  br i1 %9626, label %9627, label %9646

9627:                                             ; preds = %9607
  %9628 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %9628, ptr %37, align 4, !tbaa !9
  %9629 = load i32, ptr %55, align 4, !tbaa !9
  %9630 = load ptr, ptr %18, align 8, !tbaa !5
  %9631 = load i32, ptr %9630, align 4, !tbaa !9
  %9632 = shl i32 %9631, 1
  %9633 = sub nsw i32 %9629, %9632
  %9634 = load i32, ptr %57, align 4, !tbaa !9
  %9635 = add nsw i32 %9633, %9634
  %9636 = sub nsw i32 %9635, 1
  store i32 %9636, ptr %35, align 4, !tbaa !9
  %9637 = load i32, ptr %37, align 4, !tbaa !9
  %9638 = load i32, ptr %35, align 4, !tbaa !9
  %9639 = icmp sle i32 %9637, %9638
  br i1 %9639, label %9640, label %9642

9640:                                             ; preds = %9627
  %9641 = load i32, ptr %37, align 4, !tbaa !9
  br label %9644

9642:                                             ; preds = %9627
  %9643 = load i32, ptr %35, align 4, !tbaa !9
  br label %9644

9644:                                             ; preds = %9642, %9640
  %9645 = phi i32 [ %9641, %9640 ], [ %9643, %9642 ]
  store i32 %9645, ptr %76, align 4, !tbaa !9
  br label %9648

9646:                                             ; preds = %9607
  %9647 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %9647, ptr %76, align 4, !tbaa !9
  br label %9648

9648:                                             ; preds = %9646, %9644
  %9649 = load i32, ptr %76, align 4, !tbaa !9
  %9650 = load ptr, ptr %18, align 8, !tbaa !5
  %9651 = load i32, ptr %9650, align 4, !tbaa !9
  %9652 = add nsw i32 %9649, %9651
  %9653 = sub nsw i32 %9652, 1
  %9654 = load i32, ptr %72, align 4, !tbaa !9
  %9655 = sdiv i32 %9653, %9654
  store i32 %9655, ptr %79, align 4, !tbaa !9
  %9656 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %9656, ptr %37, align 4, !tbaa !9
  %9657 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %9657, ptr %35, align 4, !tbaa !9
  %9658 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %9658, ptr %56, align 4, !tbaa !9
  br label %9659

9659:                                             ; preds = %9806, %9648
  %9660 = load i32, ptr %35, align 4, !tbaa !9
  %9661 = icmp slt i32 %9660, 0
  br i1 %9661, label %9662, label %9667

9662:                                             ; preds = %9659
  %9663 = load i32, ptr %56, align 4, !tbaa !9
  %9664 = load i32, ptr %37, align 4, !tbaa !9
  %9665 = icmp sge i32 %9663, %9664
  %9666 = zext i1 %9665 to i32
  br label %9672

9667:                                             ; preds = %9659
  %9668 = load i32, ptr %56, align 4, !tbaa !9
  %9669 = load i32, ptr %37, align 4, !tbaa !9
  %9670 = icmp sle i32 %9668, %9669
  %9671 = zext i1 %9670 to i32
  br label %9672

9672:                                             ; preds = %9667, %9662
  %9673 = phi i32 [ %9666, %9662 ], [ %9671, %9667 ]
  %9674 = icmp ne i32 %9673, 0
  br i1 %9674, label %9675, label %9810

9675:                                             ; preds = %9672
  %9676 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %9676, ptr %36, align 4, !tbaa !9
  %9677 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %9677, ptr %39, align 4, !tbaa !9
  %9678 = load i32, ptr %72, align 4, !tbaa !9
  %9679 = load i32, ptr %56, align 4, !tbaa !9
  %9680 = sub nsw i32 %9679, 1
  %9681 = load i32, ptr %29, align 4, !tbaa !9
  %9682 = mul nsw i32 %9680, %9681
  %9683 = add nsw i32 %9678, %9682
  store i32 %9683, ptr %40, align 4, !tbaa !9
  %9684 = load ptr, ptr %26, align 8, !tbaa !5
  %9685 = load i32, ptr %39, align 4, !tbaa !9
  %9686 = sext i32 %9685 to i64
  %9687 = getelementptr inbounds %struct.doublecomplex, ptr %9684, i64 %9686
  %9688 = getelementptr inbounds %struct.doublecomplex, ptr %9687, i32 0, i32 0
  %9689 = load double, ptr %9688, align 8, !tbaa !11
  %9690 = load ptr, ptr %20, align 8, !tbaa !5
  %9691 = load i32, ptr %40, align 4, !tbaa !9
  %9692 = sext i32 %9691 to i64
  %9693 = getelementptr inbounds %struct.doublecomplex, ptr %9690, i64 %9692
  %9694 = getelementptr inbounds %struct.doublecomplex, ptr %9693, i32 0, i32 0
  %9695 = load double, ptr %9694, align 8, !tbaa !11
  %9696 = load ptr, ptr %26, align 8, !tbaa !5
  %9697 = load i32, ptr %39, align 4, !tbaa !9
  %9698 = sext i32 %9697 to i64
  %9699 = getelementptr inbounds %struct.doublecomplex, ptr %9696, i64 %9698
  %9700 = getelementptr inbounds %struct.doublecomplex, ptr %9699, i32 0, i32 1
  %9701 = load double, ptr %9700, align 8, !tbaa !15
  %9702 = load ptr, ptr %20, align 8, !tbaa !5
  %9703 = load i32, ptr %40, align 4, !tbaa !9
  %9704 = sext i32 %9703 to i64
  %9705 = getelementptr inbounds %struct.doublecomplex, ptr %9702, i64 %9704
  %9706 = getelementptr inbounds %struct.doublecomplex, ptr %9705, i32 0, i32 1
  %9707 = load double, ptr %9706, align 8, !tbaa !15
  %9708 = fmul double %9701, %9707
  %9709 = fneg double %9708
  %9710 = call double @llvm.fmuladd.f64(double %9689, double %9695, double %9709)
  %9711 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %9710, ptr %9711, align 8, !tbaa !11
  %9712 = load ptr, ptr %26, align 8, !tbaa !5
  %9713 = load i32, ptr %39, align 4, !tbaa !9
  %9714 = sext i32 %9713 to i64
  %9715 = getelementptr inbounds %struct.doublecomplex, ptr %9712, i64 %9714
  %9716 = getelementptr inbounds %struct.doublecomplex, ptr %9715, i32 0, i32 0
  %9717 = load double, ptr %9716, align 8, !tbaa !11
  %9718 = load ptr, ptr %20, align 8, !tbaa !5
  %9719 = load i32, ptr %40, align 4, !tbaa !9
  %9720 = sext i32 %9719 to i64
  %9721 = getelementptr inbounds %struct.doublecomplex, ptr %9718, i64 %9720
  %9722 = getelementptr inbounds %struct.doublecomplex, ptr %9721, i32 0, i32 1
  %9723 = load double, ptr %9722, align 8, !tbaa !15
  %9724 = load ptr, ptr %26, align 8, !tbaa !5
  %9725 = load i32, ptr %39, align 4, !tbaa !9
  %9726 = sext i32 %9725 to i64
  %9727 = getelementptr inbounds %struct.doublecomplex, ptr %9724, i64 %9726
  %9728 = getelementptr inbounds %struct.doublecomplex, ptr %9727, i32 0, i32 1
  %9729 = load double, ptr %9728, align 8, !tbaa !15
  %9730 = load ptr, ptr %20, align 8, !tbaa !5
  %9731 = load i32, ptr %40, align 4, !tbaa !9
  %9732 = sext i32 %9731 to i64
  %9733 = getelementptr inbounds %struct.doublecomplex, ptr %9730, i64 %9732
  %9734 = getelementptr inbounds %struct.doublecomplex, ptr %9733, i32 0, i32 0
  %9735 = load double, ptr %9734, align 8, !tbaa !11
  %9736 = fmul double %9729, %9735
  %9737 = call double @llvm.fmuladd.f64(double %9717, double %9723, double %9736)
  %9738 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %9737, ptr %9738, align 8, !tbaa !15
  %9739 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %9740 = load double, ptr %9739, align 8, !tbaa !11
  %9741 = load ptr, ptr %26, align 8, !tbaa !5
  %9742 = load i32, ptr %36, align 4, !tbaa !9
  %9743 = sext i32 %9742 to i64
  %9744 = getelementptr inbounds %struct.doublecomplex, ptr %9741, i64 %9743
  %9745 = getelementptr inbounds %struct.doublecomplex, ptr %9744, i32 0, i32 0
  store double %9740, ptr %9745, align 8, !tbaa !11
  %9746 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %9747 = load double, ptr %9746, align 8, !tbaa !15
  %9748 = load ptr, ptr %26, align 8, !tbaa !5
  %9749 = load i32, ptr %36, align 4, !tbaa !9
  %9750 = sext i32 %9749 to i64
  %9751 = getelementptr inbounds %struct.doublecomplex, ptr %9748, i64 %9750
  %9752 = getelementptr inbounds %struct.doublecomplex, ptr %9751, i32 0, i32 1
  store double %9747, ptr %9752, align 8, !tbaa !15
  %9753 = load i32, ptr %72, align 4, !tbaa !9
  %9754 = load i32, ptr %56, align 4, !tbaa !9
  %9755 = sub nsw i32 %9754, 1
  %9756 = load i32, ptr %29, align 4, !tbaa !9
  %9757 = mul nsw i32 %9755, %9756
  %9758 = add nsw i32 %9753, %9757
  store i32 %9758, ptr %36, align 4, !tbaa !9
  %9759 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %9759, ptr %39, align 4, !tbaa !9
  %9760 = load i32, ptr %72, align 4, !tbaa !9
  %9761 = load i32, ptr %56, align 4, !tbaa !9
  %9762 = sub nsw i32 %9761, 1
  %9763 = load i32, ptr %29, align 4, !tbaa !9
  %9764 = mul nsw i32 %9762, %9763
  %9765 = add nsw i32 %9760, %9764
  store i32 %9765, ptr %40, align 4, !tbaa !9
  %9766 = load ptr, ptr %27, align 8, !tbaa !5
  %9767 = load i32, ptr %39, align 4, !tbaa !9
  %9768 = sext i32 %9767 to i64
  %9769 = getelementptr inbounds double, ptr %9766, i64 %9768
  %9770 = load double, ptr %9769, align 8, !tbaa !14
  %9771 = load ptr, ptr %20, align 8, !tbaa !5
  %9772 = load i32, ptr %40, align 4, !tbaa !9
  %9773 = sext i32 %9772 to i64
  %9774 = getelementptr inbounds %struct.doublecomplex, ptr %9771, i64 %9773
  %9775 = getelementptr inbounds %struct.doublecomplex, ptr %9774, i32 0, i32 0
  %9776 = load double, ptr %9775, align 8, !tbaa !11
  %9777 = fmul double %9770, %9776
  %9778 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %9777, ptr %9778, align 8, !tbaa !11
  %9779 = load ptr, ptr %27, align 8, !tbaa !5
  %9780 = load i32, ptr %39, align 4, !tbaa !9
  %9781 = sext i32 %9780 to i64
  %9782 = getelementptr inbounds double, ptr %9779, i64 %9781
  %9783 = load double, ptr %9782, align 8, !tbaa !14
  %9784 = load ptr, ptr %20, align 8, !tbaa !5
  %9785 = load i32, ptr %40, align 4, !tbaa !9
  %9786 = sext i32 %9785 to i64
  %9787 = getelementptr inbounds %struct.doublecomplex, ptr %9784, i64 %9786
  %9788 = getelementptr inbounds %struct.doublecomplex, ptr %9787, i32 0, i32 1
  %9789 = load double, ptr %9788, align 8, !tbaa !15
  %9790 = fmul double %9783, %9789
  %9791 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %9790, ptr %9791, align 8, !tbaa !15
  %9792 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %9793 = load double, ptr %9792, align 8, !tbaa !11
  %9794 = load ptr, ptr %20, align 8, !tbaa !5
  %9795 = load i32, ptr %36, align 4, !tbaa !9
  %9796 = sext i32 %9795 to i64
  %9797 = getelementptr inbounds %struct.doublecomplex, ptr %9794, i64 %9796
  %9798 = getelementptr inbounds %struct.doublecomplex, ptr %9797, i32 0, i32 0
  store double %9793, ptr %9798, align 8, !tbaa !11
  %9799 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %9800 = load double, ptr %9799, align 8, !tbaa !15
  %9801 = load ptr, ptr %20, align 8, !tbaa !5
  %9802 = load i32, ptr %36, align 4, !tbaa !9
  %9803 = sext i32 %9802 to i64
  %9804 = getelementptr inbounds %struct.doublecomplex, ptr %9801, i64 %9803
  %9805 = getelementptr inbounds %struct.doublecomplex, ptr %9804, i32 0, i32 1
  store double %9800, ptr %9805, align 8, !tbaa !15
  br label %9806

9806:                                             ; preds = %9675
  %9807 = load i32, ptr %35, align 4, !tbaa !9
  %9808 = load i32, ptr %56, align 4, !tbaa !9
  %9809 = add nsw i32 %9808, %9807
  store i32 %9809, ptr %56, align 4, !tbaa !9
  br label %9659, !llvm.loop !93

9810:                                             ; preds = %9672
  %9811 = load i32, ptr %79, align 4, !tbaa !9
  %9812 = icmp sgt i32 %9811, 0
  br i1 %9812, label %9813, label %9830

9813:                                             ; preds = %9810
  %9814 = load ptr, ptr %20, align 8, !tbaa !5
  %9815 = load i32, ptr %72, align 4, !tbaa !9
  %9816 = load i32, ptr %65, align 4, !tbaa !9
  %9817 = load i32, ptr %29, align 4, !tbaa !9
  %9818 = mul nsw i32 %9816, %9817
  %9819 = add nsw i32 %9815, %9818
  %9820 = sext i32 %9819 to i64
  %9821 = getelementptr inbounds %struct.doublecomplex, ptr %9814, i64 %9820
  %9822 = load ptr, ptr %26, align 8, !tbaa !5
  %9823 = load i32, ptr %65, align 4, !tbaa !9
  %9824 = sext i32 %9823 to i64
  %9825 = getelementptr inbounds %struct.doublecomplex, ptr %9822, i64 %9824
  %9826 = load ptr, ptr %27, align 8, !tbaa !5
  %9827 = load i32, ptr %65, align 4, !tbaa !9
  %9828 = sext i32 %9827 to i64
  %9829 = getelementptr inbounds double, ptr %9826, i64 %9828
  call void @zlargv_(ptr noundef %79, ptr noundef %9821, ptr noundef %54, ptr noundef %9825, ptr noundef %72, ptr noundef %9829, ptr noundef %72)
  br label %9830

9830:                                             ; preds = %9813, %9810
  %9831 = load i32, ptr %69, align 4, !tbaa !9
  %9832 = icmp sgt i32 %9831, 0
  br i1 %9832, label %9833, label %9908

9833:                                             ; preds = %9830
  %9834 = load ptr, ptr %18, align 8, !tbaa !5
  %9835 = load i32, ptr %9834, align 4, !tbaa !9
  %9836 = sub nsw i32 %9835, 1
  store i32 %9836, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %9837

9837:                                             ; preds = %9869, %9833
  %9838 = load i32, ptr %58, align 4, !tbaa !9
  %9839 = load i32, ptr %35, align 4, !tbaa !9
  %9840 = icmp sle i32 %9838, %9839
  br i1 %9840, label %9841, label %9872

9841:                                             ; preds = %9837
  %9842 = load ptr, ptr %20, align 8, !tbaa !5
  %9843 = load i32, ptr %58, align 4, !tbaa !9
  %9844 = add nsw i32 %9843, 1
  %9845 = load i32, ptr %65, align 4, !tbaa !9
  %9846 = load i32, ptr %29, align 4, !tbaa !9
  %9847 = mul nsw i32 %9845, %9846
  %9848 = add nsw i32 %9844, %9847
  %9849 = sext i32 %9848 to i64
  %9850 = getelementptr inbounds %struct.doublecomplex, ptr %9842, i64 %9849
  %9851 = load ptr, ptr %20, align 8, !tbaa !5
  %9852 = load i32, ptr %58, align 4, !tbaa !9
  %9853 = add nsw i32 %9852, 2
  %9854 = load i32, ptr %65, align 4, !tbaa !9
  %9855 = sub nsw i32 %9854, 1
  %9856 = load i32, ptr %29, align 4, !tbaa !9
  %9857 = mul nsw i32 %9855, %9856
  %9858 = add nsw i32 %9853, %9857
  %9859 = sext i32 %9858 to i64
  %9860 = getelementptr inbounds %struct.doublecomplex, ptr %9851, i64 %9859
  %9861 = load ptr, ptr %27, align 8, !tbaa !5
  %9862 = load i32, ptr %65, align 4, !tbaa !9
  %9863 = sext i32 %9862 to i64
  %9864 = getelementptr inbounds double, ptr %9861, i64 %9863
  %9865 = load ptr, ptr %26, align 8, !tbaa !5
  %9866 = load i32, ptr %65, align 4, !tbaa !9
  %9867 = sext i32 %9866 to i64
  %9868 = getelementptr inbounds %struct.doublecomplex, ptr %9865, i64 %9867
  call void @zlartv_(ptr noundef %69, ptr noundef %9850, ptr noundef %54, ptr noundef %9860, ptr noundef %54, ptr noundef %9864, ptr noundef %9868, ptr noundef %72)
  br label %9869

9869:                                             ; preds = %9841
  %9870 = load i32, ptr %58, align 4, !tbaa !9
  %9871 = add nsw i32 %9870, 1
  store i32 %9871, ptr %58, align 4, !tbaa !9
  br label %9837, !llvm.loop !94

9872:                                             ; preds = %9837
  %9873 = load ptr, ptr %20, align 8, !tbaa !5
  %9874 = load i32, ptr %65, align 4, !tbaa !9
  %9875 = load i32, ptr %29, align 4, !tbaa !9
  %9876 = mul nsw i32 %9874, %9875
  %9877 = add nsw i32 %9876, 1
  %9878 = sext i32 %9877 to i64
  %9879 = getelementptr inbounds %struct.doublecomplex, ptr %9873, i64 %9878
  %9880 = load ptr, ptr %20, align 8, !tbaa !5
  %9881 = load i32, ptr %65, align 4, !tbaa !9
  %9882 = sub nsw i32 %9881, 1
  %9883 = load i32, ptr %29, align 4, !tbaa !9
  %9884 = mul nsw i32 %9882, %9883
  %9885 = add nsw i32 %9884, 1
  %9886 = sext i32 %9885 to i64
  %9887 = getelementptr inbounds %struct.doublecomplex, ptr %9880, i64 %9886
  %9888 = load ptr, ptr %20, align 8, !tbaa !5
  %9889 = load i32, ptr %65, align 4, !tbaa !9
  %9890 = sub nsw i32 %9889, 1
  %9891 = load i32, ptr %29, align 4, !tbaa !9
  %9892 = mul nsw i32 %9890, %9891
  %9893 = add nsw i32 %9892, 2
  %9894 = sext i32 %9893 to i64
  %9895 = getelementptr inbounds %struct.doublecomplex, ptr %9888, i64 %9894
  %9896 = load ptr, ptr %27, align 8, !tbaa !5
  %9897 = load i32, ptr %65, align 4, !tbaa !9
  %9898 = sext i32 %9897 to i64
  %9899 = getelementptr inbounds double, ptr %9896, i64 %9898
  %9900 = load ptr, ptr %26, align 8, !tbaa !5
  %9901 = load i32, ptr %65, align 4, !tbaa !9
  %9902 = sext i32 %9901 to i64
  %9903 = getelementptr inbounds %struct.doublecomplex, ptr %9900, i64 %9902
  call void @zlar2v_(ptr noundef %69, ptr noundef %9879, ptr noundef %9887, ptr noundef %9895, ptr noundef %54, ptr noundef %9899, ptr noundef %9903, ptr noundef %72)
  %9904 = load ptr, ptr %26, align 8, !tbaa !5
  %9905 = load i32, ptr %65, align 4, !tbaa !9
  %9906 = sext i32 %9905 to i64
  %9907 = getelementptr inbounds %struct.doublecomplex, ptr %9904, i64 %9906
  call void @zlacgv_(ptr noundef %69, ptr noundef %9907, ptr noundef %72)
  br label %9908

9908:                                             ; preds = %9872, %9830
  %9909 = load ptr, ptr %19, align 8, !tbaa !5
  %9910 = load i32, ptr %9909, align 4, !tbaa !9
  %9911 = load i32, ptr %57, align 4, !tbaa !9
  %9912 = sub nsw i32 %9910, %9911
  %9913 = add nsw i32 %9912, 1
  store i32 %9913, ptr %35, align 4, !tbaa !9
  %9914 = load ptr, ptr %18, align 8, !tbaa !5
  %9915 = load i32, ptr %9914, align 4, !tbaa !9
  %9916 = sub nsw i32 %9915, 1
  store i32 %9916, ptr %58, align 4, !tbaa !9
  br label %9917

9917:                                             ; preds = %9975, %9908
  %9918 = load i32, ptr %58, align 4, !tbaa !9
  %9919 = load i32, ptr %35, align 4, !tbaa !9
  %9920 = icmp sge i32 %9918, %9919
  br i1 %9920, label %9921, label %9978

9921:                                             ; preds = %9917
  %9922 = load i32, ptr %66, align 4, !tbaa !9
  %9923 = load i32, ptr %58, align 4, !tbaa !9
  %9924 = add nsw i32 %9922, %9923
  %9925 = sub nsw i32 %9924, 1
  %9926 = load i32, ptr %72, align 4, !tbaa !9
  %9927 = sdiv i32 %9925, %9926
  store i32 %9927, ptr %79, align 4, !tbaa !9
  %9928 = load i32, ptr %66, align 4, !tbaa !9
  %9929 = load i32, ptr %79, align 4, !tbaa !9
  %9930 = sub nsw i32 %9929, 1
  %9931 = load i32, ptr %72, align 4, !tbaa !9
  %9932 = mul nsw i32 %9930, %9931
  %9933 = sub nsw i32 %9928, %9932
  store i32 %9933, ptr %75, align 4, !tbaa !9
  %9934 = load i32, ptr %79, align 4, !tbaa !9
  %9935 = icmp sgt i32 %9934, 0
  br i1 %9935, label %9936, label %9974

9936:                                             ; preds = %9921
  %9937 = load ptr, ptr %20, align 8, !tbaa !5
  %9938 = load i32, ptr %72, align 4, !tbaa !9
  %9939 = load i32, ptr %58, align 4, !tbaa !9
  %9940 = sub nsw i32 %9938, %9939
  %9941 = add nsw i32 %9940, 1
  %9942 = load i32, ptr %75, align 4, !tbaa !9
  %9943 = load i32, ptr %72, align 4, !tbaa !9
  %9944 = sub nsw i32 %9942, %9943
  %9945 = load i32, ptr %58, align 4, !tbaa !9
  %9946 = add nsw i32 %9944, %9945
  %9947 = load i32, ptr %29, align 4, !tbaa !9
  %9948 = mul nsw i32 %9946, %9947
  %9949 = add nsw i32 %9941, %9948
  %9950 = sext i32 %9949 to i64
  %9951 = getelementptr inbounds %struct.doublecomplex, ptr %9937, i64 %9950
  %9952 = load ptr, ptr %20, align 8, !tbaa !5
  %9953 = load i32, ptr %72, align 4, !tbaa !9
  %9954 = load i32, ptr %58, align 4, !tbaa !9
  %9955 = sub nsw i32 %9953, %9954
  %9956 = load i32, ptr %75, align 4, !tbaa !9
  %9957 = load i32, ptr %72, align 4, !tbaa !9
  %9958 = sub nsw i32 %9956, %9957
  %9959 = load i32, ptr %58, align 4, !tbaa !9
  %9960 = add nsw i32 %9958, %9959
  %9961 = load i32, ptr %29, align 4, !tbaa !9
  %9962 = mul nsw i32 %9960, %9961
  %9963 = add nsw i32 %9955, %9962
  %9964 = sext i32 %9963 to i64
  %9965 = getelementptr inbounds %struct.doublecomplex, ptr %9952, i64 %9964
  %9966 = load ptr, ptr %27, align 8, !tbaa !5
  %9967 = load i32, ptr %75, align 4, !tbaa !9
  %9968 = sext i32 %9967 to i64
  %9969 = getelementptr inbounds double, ptr %9966, i64 %9968
  %9970 = load ptr, ptr %26, align 8, !tbaa !5
  %9971 = load i32, ptr %75, align 4, !tbaa !9
  %9972 = sext i32 %9971 to i64
  %9973 = getelementptr inbounds %struct.doublecomplex, ptr %9970, i64 %9972
  call void @zlartv_(ptr noundef %79, ptr noundef %9951, ptr noundef %54, ptr noundef %9965, ptr noundef %54, ptr noundef %9969, ptr noundef %9973, ptr noundef %72)
  br label %9974

9974:                                             ; preds = %9936, %9921
  br label %9975

9975:                                             ; preds = %9974
  %9976 = load i32, ptr %58, align 4, !tbaa !9
  %9977 = add nsw i32 %9976, -1
  store i32 %9977, ptr %58, align 4, !tbaa !9
  br label %9917, !llvm.loop !95

9978:                                             ; preds = %9917
  %9979 = load i32, ptr %67, align 4, !tbaa !9
  %9980 = icmp ne i32 %9979, 0
  br i1 %9980, label %9981, label %10037

9981:                                             ; preds = %9978
  %9982 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %9982, ptr %35, align 4, !tbaa !9
  %9983 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %9983, ptr %37, align 4, !tbaa !9
  %9984 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %9984, ptr %56, align 4, !tbaa !9
  br label %9985

9985:                                             ; preds = %10032, %9981
  %9986 = load i32, ptr %37, align 4, !tbaa !9
  %9987 = icmp slt i32 %9986, 0
  br i1 %9987, label %9988, label %9993

9988:                                             ; preds = %9985
  %9989 = load i32, ptr %56, align 4, !tbaa !9
  %9990 = load i32, ptr %35, align 4, !tbaa !9
  %9991 = icmp sge i32 %9989, %9990
  %9992 = zext i1 %9991 to i32
  br label %9998

9993:                                             ; preds = %9985
  %9994 = load i32, ptr %56, align 4, !tbaa !9
  %9995 = load i32, ptr %35, align 4, !tbaa !9
  %9996 = icmp sle i32 %9994, %9995
  %9997 = zext i1 %9996 to i32
  br label %9998

9998:                                             ; preds = %9993, %9988
  %9999 = phi i32 [ %9992, %9988 ], [ %9997, %9993 ]
  %10000 = icmp ne i32 %9999, 0
  br i1 %10000, label %10001, label %10036

10001:                                            ; preds = %9998
  %10002 = load ptr, ptr %26, align 8, !tbaa !5
  %10003 = load i32, ptr %56, align 4, !tbaa !9
  %10004 = sext i32 %10003 to i64
  %10005 = getelementptr inbounds %struct.doublecomplex, ptr %10002, i64 %10004
  %10006 = call { double, double } @Cd(ptr noundef %10005)
  %10007 = extractvalue { double, double } %10006, 0
  %10008 = extractvalue { double, double } %10006, 1
  %10009 = fneg double %10008
  %10010 = call ptr @_pCd(ptr noundef %44)
  %10011 = getelementptr inbounds { double, double }, ptr %10010, i32 0, i32 0
  %10012 = getelementptr inbounds { double, double }, ptr %10010, i32 0, i32 1
  store double %10007, ptr %10011, align 8
  store double %10009, ptr %10012, align 8
  %10013 = load ptr, ptr %24, align 8, !tbaa !5
  %10014 = load i32, ptr %56, align 4, !tbaa !9
  %10015 = load i32, ptr %33, align 4, !tbaa !9
  %10016 = mul nsw i32 %10014, %10015
  %10017 = add nsw i32 %10016, 1
  %10018 = sext i32 %10017 to i64
  %10019 = getelementptr inbounds %struct.doublecomplex, ptr %10013, i64 %10018
  %10020 = load ptr, ptr %24, align 8, !tbaa !5
  %10021 = load i32, ptr %56, align 4, !tbaa !9
  %10022 = sub nsw i32 %10021, 1
  %10023 = load i32, ptr %33, align 4, !tbaa !9
  %10024 = mul nsw i32 %10022, %10023
  %10025 = add nsw i32 %10024, 1
  %10026 = sext i32 %10025 to i64
  %10027 = getelementptr inbounds %struct.doublecomplex, ptr %10020, i64 %10026
  %10028 = load ptr, ptr %27, align 8, !tbaa !5
  %10029 = load i32, ptr %56, align 4, !tbaa !9
  %10030 = sext i32 %10029 to i64
  %10031 = getelementptr inbounds double, ptr %10028, i64 %10030
  call void @zrot_(ptr noundef %70, ptr noundef %10019, ptr noundef @c__1, ptr noundef %10027, ptr noundef @c__1, ptr noundef %10031, ptr noundef %44)
  br label %10032

10032:                                            ; preds = %10001
  %10033 = load i32, ptr %37, align 4, !tbaa !9
  %10034 = load i32, ptr %56, align 4, !tbaa !9
  %10035 = add nsw i32 %10034, %10033
  store i32 %10035, ptr %56, align 4, !tbaa !9
  br label %9985, !llvm.loop !96

10036:                                            ; preds = %9998
  br label %10037

10037:                                            ; preds = %10036, %9978
  br label %10038

10038:                                            ; preds = %10037
  %10039 = load i32, ptr %57, align 4, !tbaa !9
  %10040 = add nsw i32 %10039, 1
  store i32 %10040, ptr %57, align 4, !tbaa !9
  br label %9231, !llvm.loop !97

10041:                                            ; preds = %9231
  %10042 = load i32, ptr %71, align 4, !tbaa !9
  %10043 = icmp ne i32 %10042, 0
  br i1 %10043, label %10044, label %10119

10044:                                            ; preds = %10041
  %10045 = load i32, ptr %64, align 4, !tbaa !9
  %10046 = icmp sgt i32 %10045, 0
  br i1 %10046, label %10047, label %10118

10047:                                            ; preds = %10044
  %10048 = load i32, ptr %78, align 4, !tbaa !9
  %10049 = icmp sgt i32 %10048, 0
  br i1 %10049, label %10050, label %10118

10050:                                            ; preds = %10047
  %10051 = load i32, ptr %59, align 4, !tbaa !9
  %10052 = load ptr, ptr %19, align 8, !tbaa !5
  %10053 = load i32, ptr %10052, align 4, !tbaa !9
  %10054 = sub nsw i32 %10051, %10053
  %10055 = load i32, ptr %55, align 4, !tbaa !9
  %10056 = add nsw i32 %10054, %10055
  %10057 = load i32, ptr %78, align 4, !tbaa !9
  %10058 = add nsw i32 %10056, %10057
  store i32 %10058, ptr %38, align 4, !tbaa !9
  %10059 = load i32, ptr %78, align 4, !tbaa !9
  %10060 = add nsw i32 %10059, 1
  %10061 = load i32, ptr %55, align 4, !tbaa !9
  %10062 = load i32, ptr %31, align 4, !tbaa !9
  %10063 = mul nsw i32 %10061, %10062
  %10064 = add nsw i32 %10060, %10063
  store i32 %10064, ptr %37, align 4, !tbaa !9
  %10065 = load ptr, ptr %22, align 8, !tbaa !5
  %10066 = load i32, ptr %37, align 4, !tbaa !9
  %10067 = sext i32 %10066 to i64
  %10068 = getelementptr inbounds %struct.doublecomplex, ptr %10065, i64 %10067
  %10069 = getelementptr inbounds %struct.doublecomplex, ptr %10068, i32 0, i32 0
  %10070 = load double, ptr %10069, align 8, !tbaa !11
  %10071 = fneg double %10070
  %10072 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %10071, ptr %10072, align 8, !tbaa !11
  %10073 = load ptr, ptr %22, align 8, !tbaa !5
  %10074 = load i32, ptr %37, align 4, !tbaa !9
  %10075 = sext i32 %10074 to i64
  %10076 = getelementptr inbounds %struct.doublecomplex, ptr %10073, i64 %10075
  %10077 = getelementptr inbounds %struct.doublecomplex, ptr %10076, i32 0, i32 1
  %10078 = load double, ptr %10077, align 8, !tbaa !15
  %10079 = fneg double %10078
  %10080 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %10079, ptr %10080, align 8, !tbaa !15
  %10081 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %10082 = load double, ptr %10081, align 8, !tbaa !11
  %10083 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %10084 = load double, ptr %10083, align 8, !tbaa !11
  %10085 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %10086 = load double, ptr %10085, align 8, !tbaa !15
  %10087 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %10088 = load double, ptr %10087, align 8, !tbaa !15
  %10089 = fmul double %10086, %10088
  %10090 = fneg double %10089
  %10091 = call double @llvm.fmuladd.f64(double %10082, double %10084, double %10090)
  %10092 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %10091, ptr %10092, align 8, !tbaa !11
  %10093 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %10094 = load double, ptr %10093, align 8, !tbaa !11
  %10095 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  %10096 = load double, ptr %10095, align 8, !tbaa !15
  %10097 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %10098 = load double, ptr %10097, align 8, !tbaa !15
  %10099 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  %10100 = load double, ptr %10099, align 8, !tbaa !11
  %10101 = fmul double %10098, %10100
  %10102 = call double @llvm.fmuladd.f64(double %10094, double %10096, double %10101)
  %10103 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %10102, ptr %10103, align 8, !tbaa !15
  %10104 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %10105 = load double, ptr %10104, align 8, !tbaa !11
  %10106 = load ptr, ptr %26, align 8, !tbaa !5
  %10107 = load i32, ptr %38, align 4, !tbaa !9
  %10108 = sext i32 %10107 to i64
  %10109 = getelementptr inbounds %struct.doublecomplex, ptr %10106, i64 %10108
  %10110 = getelementptr inbounds %struct.doublecomplex, ptr %10109, i32 0, i32 0
  store double %10105, ptr %10110, align 8, !tbaa !11
  %10111 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %10112 = load double, ptr %10111, align 8, !tbaa !15
  %10113 = load ptr, ptr %26, align 8, !tbaa !5
  %10114 = load i32, ptr %38, align 4, !tbaa !9
  %10115 = sext i32 %10114 to i64
  %10116 = getelementptr inbounds %struct.doublecomplex, ptr %10113, i64 %10115
  %10117 = getelementptr inbounds %struct.doublecomplex, ptr %10116, i32 0, i32 1
  store double %10112, ptr %10117, align 8, !tbaa !15
  br label %10118

10118:                                            ; preds = %10050, %10047, %10044
  br label %10119

10119:                                            ; preds = %10118, %10041
  %10120 = load ptr, ptr %19, align 8, !tbaa !5
  %10121 = load i32, ptr %10120, align 4, !tbaa !9
  store i32 %10121, ptr %57, align 4, !tbaa !9
  br label %10122

10122:                                            ; preds = %10578, %10119
  %10123 = load i32, ptr %57, align 4, !tbaa !9
  %10124 = icmp sge i32 %10123, 1
  br i1 %10124, label %10125, label %10581

10125:                                            ; preds = %10122
  %10126 = load i32, ptr %71, align 4, !tbaa !9
  %10127 = icmp ne i32 %10126, 0
  br i1 %10127, label %10128, label %10150

10128:                                            ; preds = %10125
  store i32 2, ptr %38, align 4, !tbaa !9
  %10129 = load i32, ptr %57, align 4, !tbaa !9
  %10130 = load i32, ptr %61, align 4, !tbaa !9
  %10131 = add nsw i32 %10129, %10130
  %10132 = load i32, ptr %59, align 4, !tbaa !9
  %10133 = sub nsw i32 %10131, %10132
  store i32 %10133, ptr %37, align 4, !tbaa !9
  %10134 = load i32, ptr %55, align 4, !tbaa !9
  %10135 = load i32, ptr %57, align 4, !tbaa !9
  %10136 = add nsw i32 %10134, %10135
  %10137 = add nsw i32 %10136, 1
  %10138 = load i32, ptr %38, align 4, !tbaa !9
  %10139 = load i32, ptr %37, align 4, !tbaa !9
  %10140 = icmp sge i32 %10138, %10139
  br i1 %10140, label %10141, label %10143

10141:                                            ; preds = %10128
  %10142 = load i32, ptr %38, align 4, !tbaa !9
  br label %10145

10143:                                            ; preds = %10128
  %10144 = load i32, ptr %37, align 4, !tbaa !9
  br label %10145

10145:                                            ; preds = %10143, %10141
  %10146 = phi i32 [ %10142, %10141 ], [ %10144, %10143 ]
  %10147 = load i32, ptr %72, align 4, !tbaa !9
  %10148 = mul nsw i32 %10146, %10147
  %10149 = sub nsw i32 %10137, %10148
  store i32 %10149, ptr %66, align 4, !tbaa !9
  br label %10172

10150:                                            ; preds = %10125
  store i32 1, ptr %38, align 4, !tbaa !9
  %10151 = load i32, ptr %57, align 4, !tbaa !9
  %10152 = load i32, ptr %61, align 4, !tbaa !9
  %10153 = add nsw i32 %10151, %10152
  %10154 = load i32, ptr %59, align 4, !tbaa !9
  %10155 = sub nsw i32 %10153, %10154
  store i32 %10155, ptr %37, align 4, !tbaa !9
  %10156 = load i32, ptr %55, align 4, !tbaa !9
  %10157 = load i32, ptr %57, align 4, !tbaa !9
  %10158 = add nsw i32 %10156, %10157
  %10159 = add nsw i32 %10158, 1
  %10160 = load i32, ptr %38, align 4, !tbaa !9
  %10161 = load i32, ptr %37, align 4, !tbaa !9
  %10162 = icmp sge i32 %10160, %10161
  br i1 %10162, label %10163, label %10165

10163:                                            ; preds = %10150
  %10164 = load i32, ptr %38, align 4, !tbaa !9
  br label %10167

10165:                                            ; preds = %10150
  %10166 = load i32, ptr %37, align 4, !tbaa !9
  br label %10167

10167:                                            ; preds = %10165, %10163
  %10168 = phi i32 [ %10164, %10163 ], [ %10166, %10165 ]
  %10169 = load i32, ptr %72, align 4, !tbaa !9
  %10170 = mul nsw i32 %10168, %10169
  %10171 = sub nsw i32 %10159, %10170
  store i32 %10171, ptr %66, align 4, !tbaa !9
  br label %10172

10172:                                            ; preds = %10167, %10145
  %10173 = load ptr, ptr %19, align 8, !tbaa !5
  %10174 = load i32, ptr %10173, align 4, !tbaa !9
  %10175 = load i32, ptr %57, align 4, !tbaa !9
  %10176 = sub nsw i32 %10174, %10175
  store i32 %10176, ptr %58, align 4, !tbaa !9
  br label %10177

10177:                                            ; preds = %10251, %10172
  %10178 = load i32, ptr %58, align 4, !tbaa !9
  %10179 = icmp sge i32 %10178, 1
  br i1 %10179, label %10180, label %10254

10180:                                            ; preds = %10177
  %10181 = load i32, ptr %66, align 4, !tbaa !9
  %10182 = load ptr, ptr %18, align 8, !tbaa !5
  %10183 = load i32, ptr %10182, align 4, !tbaa !9
  %10184 = add nsw i32 %10181, %10183
  %10185 = load i32, ptr %58, align 4, !tbaa !9
  %10186 = add nsw i32 %10184, %10185
  %10187 = sub nsw i32 %10186, 1
  %10188 = load i32, ptr %72, align 4, !tbaa !9
  %10189 = sdiv i32 %10187, %10188
  store i32 %10189, ptr %79, align 4, !tbaa !9
  %10190 = load i32, ptr %66, align 4, !tbaa !9
  %10191 = load i32, ptr %79, align 4, !tbaa !9
  %10192 = sub nsw i32 %10191, 1
  %10193 = load i32, ptr %72, align 4, !tbaa !9
  %10194 = mul nsw i32 %10192, %10193
  %10195 = sub nsw i32 %10190, %10194
  store i32 %10195, ptr %75, align 4, !tbaa !9
  %10196 = load i32, ptr %79, align 4, !tbaa !9
  %10197 = icmp sgt i32 %10196, 0
  br i1 %10197, label %10198, label %10250

10198:                                            ; preds = %10180
  %10199 = load ptr, ptr %20, align 8, !tbaa !5
  %10200 = load i32, ptr %72, align 4, !tbaa !9
  %10201 = load i32, ptr %58, align 4, !tbaa !9
  %10202 = sub nsw i32 %10200, %10201
  %10203 = add nsw i32 %10202, 1
  %10204 = load i32, ptr %75, align 4, !tbaa !9
  %10205 = load i32, ptr %58, align 4, !tbaa !9
  %10206 = add nsw i32 %10204, %10205
  %10207 = sub nsw i32 %10206, 1
  %10208 = load i32, ptr %29, align 4, !tbaa !9
  %10209 = mul nsw i32 %10207, %10208
  %10210 = add nsw i32 %10203, %10209
  %10211 = sext i32 %10210 to i64
  %10212 = getelementptr inbounds %struct.doublecomplex, ptr %10199, i64 %10211
  %10213 = load ptr, ptr %20, align 8, !tbaa !5
  %10214 = load i32, ptr %72, align 4, !tbaa !9
  %10215 = load i32, ptr %58, align 4, !tbaa !9
  %10216 = sub nsw i32 %10214, %10215
  %10217 = load i32, ptr %75, align 4, !tbaa !9
  %10218 = load i32, ptr %58, align 4, !tbaa !9
  %10219 = add nsw i32 %10217, %10218
  %10220 = sub nsw i32 %10219, 1
  %10221 = load i32, ptr %29, align 4, !tbaa !9
  %10222 = mul nsw i32 %10220, %10221
  %10223 = add nsw i32 %10216, %10222
  %10224 = sext i32 %10223 to i64
  %10225 = getelementptr inbounds %struct.doublecomplex, ptr %10213, i64 %10224
  %10226 = load ptr, ptr %27, align 8, !tbaa !5
  %10227 = load i32, ptr %59, align 4, !tbaa !9
  %10228 = load ptr, ptr %19, align 8, !tbaa !5
  %10229 = load i32, ptr %10228, align 4, !tbaa !9
  %10230 = sub nsw i32 %10227, %10229
  %10231 = load i32, ptr %75, align 4, !tbaa !9
  %10232 = add nsw i32 %10230, %10231
  %10233 = load ptr, ptr %18, align 8, !tbaa !5
  %10234 = load i32, ptr %10233, align 4, !tbaa !9
  %10235 = add nsw i32 %10232, %10234
  %10236 = sext i32 %10235 to i64
  %10237 = getelementptr inbounds double, ptr %10226, i64 %10236
  %10238 = load ptr, ptr %26, align 8, !tbaa !5
  %10239 = load i32, ptr %59, align 4, !tbaa !9
  %10240 = load ptr, ptr %19, align 8, !tbaa !5
  %10241 = load i32, ptr %10240, align 4, !tbaa !9
  %10242 = sub nsw i32 %10239, %10241
  %10243 = load i32, ptr %75, align 4, !tbaa !9
  %10244 = add nsw i32 %10242, %10243
  %10245 = load ptr, ptr %18, align 8, !tbaa !5
  %10246 = load i32, ptr %10245, align 4, !tbaa !9
  %10247 = add nsw i32 %10244, %10246
  %10248 = sext i32 %10247 to i64
  %10249 = getelementptr inbounds %struct.doublecomplex, ptr %10238, i64 %10248
  call void @zlartv_(ptr noundef %79, ptr noundef %10212, ptr noundef %54, ptr noundef %10225, ptr noundef %54, ptr noundef %10237, ptr noundef %10249, ptr noundef %72)
  br label %10250

10250:                                            ; preds = %10198, %10180
  br label %10251

10251:                                            ; preds = %10250
  %10252 = load i32, ptr %58, align 4, !tbaa !9
  %10253 = add nsw i32 %10252, -1
  store i32 %10253, ptr %58, align 4, !tbaa !9
  br label %10177, !llvm.loop !98

10254:                                            ; preds = %10177
  %10255 = load i32, ptr %66, align 4, !tbaa !9
  %10256 = load ptr, ptr %18, align 8, !tbaa !5
  %10257 = load i32, ptr %10256, align 4, !tbaa !9
  %10258 = add nsw i32 %10255, %10257
  %10259 = sub nsw i32 %10258, 1
  %10260 = load i32, ptr %72, align 4, !tbaa !9
  %10261 = sdiv i32 %10259, %10260
  store i32 %10261, ptr %69, align 4, !tbaa !9
  %10262 = load i32, ptr %66, align 4, !tbaa !9
  %10263 = load i32, ptr %69, align 4, !tbaa !9
  %10264 = sub nsw i32 %10263, 1
  %10265 = load i32, ptr %72, align 4, !tbaa !9
  %10266 = mul nsw i32 %10264, %10265
  %10267 = sub nsw i32 %10262, %10266
  store i32 %10267, ptr %65, align 4, !tbaa !9
  %10268 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %10268, ptr %38, align 4, !tbaa !9
  %10269 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %10269, ptr %37, align 4, !tbaa !9
  %10270 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %10270, ptr %56, align 4, !tbaa !9
  br label %10271

10271:                                            ; preds = %10347, %10254
  %10272 = load i32, ptr %37, align 4, !tbaa !9
  %10273 = icmp slt i32 %10272, 0
  br i1 %10273, label %10274, label %10279

10274:                                            ; preds = %10271
  %10275 = load i32, ptr %56, align 4, !tbaa !9
  %10276 = load i32, ptr %38, align 4, !tbaa !9
  %10277 = icmp sge i32 %10275, %10276
  %10278 = zext i1 %10277 to i32
  br label %10284

10279:                                            ; preds = %10271
  %10280 = load i32, ptr %56, align 4, !tbaa !9
  %10281 = load i32, ptr %38, align 4, !tbaa !9
  %10282 = icmp sle i32 %10280, %10281
  %10283 = zext i1 %10282 to i32
  br label %10284

10284:                                            ; preds = %10279, %10274
  %10285 = phi i32 [ %10278, %10274 ], [ %10283, %10279 ]
  %10286 = icmp ne i32 %10285, 0
  br i1 %10286, label %10287, label %10351

10287:                                            ; preds = %10284
  %10288 = load i32, ptr %59, align 4, !tbaa !9
  %10289 = load ptr, ptr %19, align 8, !tbaa !5
  %10290 = load i32, ptr %10289, align 4, !tbaa !9
  %10291 = sub nsw i32 %10288, %10290
  %10292 = load i32, ptr %56, align 4, !tbaa !9
  %10293 = add nsw i32 %10291, %10292
  store i32 %10293, ptr %35, align 4, !tbaa !9
  %10294 = load i32, ptr %59, align 4, !tbaa !9
  %10295 = load ptr, ptr %19, align 8, !tbaa !5
  %10296 = load i32, ptr %10295, align 4, !tbaa !9
  %10297 = sub nsw i32 %10294, %10296
  %10298 = load i32, ptr %56, align 4, !tbaa !9
  %10299 = add nsw i32 %10297, %10298
  %10300 = load ptr, ptr %18, align 8, !tbaa !5
  %10301 = load i32, ptr %10300, align 4, !tbaa !9
  %10302 = add nsw i32 %10299, %10301
  store i32 %10302, ptr %36, align 4, !tbaa !9
  %10303 = load ptr, ptr %26, align 8, !tbaa !5
  %10304 = load i32, ptr %36, align 4, !tbaa !9
  %10305 = sext i32 %10304 to i64
  %10306 = getelementptr inbounds %struct.doublecomplex, ptr %10303, i64 %10305
  %10307 = getelementptr inbounds %struct.doublecomplex, ptr %10306, i32 0, i32 0
  %10308 = load double, ptr %10307, align 8, !tbaa !11
  %10309 = load ptr, ptr %26, align 8, !tbaa !5
  %10310 = load i32, ptr %35, align 4, !tbaa !9
  %10311 = sext i32 %10310 to i64
  %10312 = getelementptr inbounds %struct.doublecomplex, ptr %10309, i64 %10311
  %10313 = getelementptr inbounds %struct.doublecomplex, ptr %10312, i32 0, i32 0
  store double %10308, ptr %10313, align 8, !tbaa !11
  %10314 = load ptr, ptr %26, align 8, !tbaa !5
  %10315 = load i32, ptr %36, align 4, !tbaa !9
  %10316 = sext i32 %10315 to i64
  %10317 = getelementptr inbounds %struct.doublecomplex, ptr %10314, i64 %10316
  %10318 = getelementptr inbounds %struct.doublecomplex, ptr %10317, i32 0, i32 1
  %10319 = load double, ptr %10318, align 8, !tbaa !15
  %10320 = load ptr, ptr %26, align 8, !tbaa !5
  %10321 = load i32, ptr %35, align 4, !tbaa !9
  %10322 = sext i32 %10321 to i64
  %10323 = getelementptr inbounds %struct.doublecomplex, ptr %10320, i64 %10322
  %10324 = getelementptr inbounds %struct.doublecomplex, ptr %10323, i32 0, i32 1
  store double %10319, ptr %10324, align 8, !tbaa !15
  %10325 = load ptr, ptr %27, align 8, !tbaa !5
  %10326 = load i32, ptr %59, align 4, !tbaa !9
  %10327 = load ptr, ptr %19, align 8, !tbaa !5
  %10328 = load i32, ptr %10327, align 4, !tbaa !9
  %10329 = sub nsw i32 %10326, %10328
  %10330 = load i32, ptr %56, align 4, !tbaa !9
  %10331 = add nsw i32 %10329, %10330
  %10332 = load ptr, ptr %18, align 8, !tbaa !5
  %10333 = load i32, ptr %10332, align 4, !tbaa !9
  %10334 = add nsw i32 %10331, %10333
  %10335 = sext i32 %10334 to i64
  %10336 = getelementptr inbounds double, ptr %10325, i64 %10335
  %10337 = load double, ptr %10336, align 8, !tbaa !14
  %10338 = load ptr, ptr %27, align 8, !tbaa !5
  %10339 = load i32, ptr %59, align 4, !tbaa !9
  %10340 = load ptr, ptr %19, align 8, !tbaa !5
  %10341 = load i32, ptr %10340, align 4, !tbaa !9
  %10342 = sub nsw i32 %10339, %10341
  %10343 = load i32, ptr %56, align 4, !tbaa !9
  %10344 = add nsw i32 %10342, %10343
  %10345 = sext i32 %10344 to i64
  %10346 = getelementptr inbounds double, ptr %10338, i64 %10345
  store double %10337, ptr %10346, align 8, !tbaa !14
  br label %10347

10347:                                            ; preds = %10287
  %10348 = load i32, ptr %37, align 4, !tbaa !9
  %10349 = load i32, ptr %56, align 4, !tbaa !9
  %10350 = add nsw i32 %10349, %10348
  store i32 %10350, ptr %56, align 4, !tbaa !9
  br label %10271, !llvm.loop !99

10351:                                            ; preds = %10284
  %10352 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %10352, ptr %37, align 4, !tbaa !9
  %10353 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %10353, ptr %38, align 4, !tbaa !9
  %10354 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %10354, ptr %56, align 4, !tbaa !9
  br label %10355

10355:                                            ; preds = %10517, %10351
  %10356 = load i32, ptr %38, align 4, !tbaa !9
  %10357 = icmp slt i32 %10356, 0
  br i1 %10357, label %10358, label %10363

10358:                                            ; preds = %10355
  %10359 = load i32, ptr %56, align 4, !tbaa !9
  %10360 = load i32, ptr %37, align 4, !tbaa !9
  %10361 = icmp sge i32 %10359, %10360
  %10362 = zext i1 %10361 to i32
  br label %10368

10363:                                            ; preds = %10355
  %10364 = load i32, ptr %56, align 4, !tbaa !9
  %10365 = load i32, ptr %37, align 4, !tbaa !9
  %10366 = icmp sle i32 %10364, %10365
  %10367 = zext i1 %10366 to i32
  br label %10368

10368:                                            ; preds = %10363, %10358
  %10369 = phi i32 [ %10362, %10358 ], [ %10367, %10363 ]
  %10370 = icmp ne i32 %10369, 0
  br i1 %10370, label %10371, label %10521

10371:                                            ; preds = %10368
  %10372 = load i32, ptr %59, align 4, !tbaa !9
  %10373 = load ptr, ptr %19, align 8, !tbaa !5
  %10374 = load i32, ptr %10373, align 4, !tbaa !9
  %10375 = sub nsw i32 %10372, %10374
  %10376 = load i32, ptr %56, align 4, !tbaa !9
  %10377 = add nsw i32 %10375, %10376
  store i32 %10377, ptr %35, align 4, !tbaa !9
  %10378 = load i32, ptr %59, align 4, !tbaa !9
  %10379 = load ptr, ptr %19, align 8, !tbaa !5
  %10380 = load i32, ptr %10379, align 4, !tbaa !9
  %10381 = sub nsw i32 %10378, %10380
  %10382 = load i32, ptr %56, align 4, !tbaa !9
  %10383 = add nsw i32 %10381, %10382
  store i32 %10383, ptr %36, align 4, !tbaa !9
  %10384 = load i32, ptr %72, align 4, !tbaa !9
  %10385 = load i32, ptr %56, align 4, !tbaa !9
  %10386 = sub nsw i32 %10385, 1
  %10387 = load i32, ptr %29, align 4, !tbaa !9
  %10388 = mul nsw i32 %10386, %10387
  %10389 = add nsw i32 %10384, %10388
  store i32 %10389, ptr %39, align 4, !tbaa !9
  %10390 = load ptr, ptr %26, align 8, !tbaa !5
  %10391 = load i32, ptr %36, align 4, !tbaa !9
  %10392 = sext i32 %10391 to i64
  %10393 = getelementptr inbounds %struct.doublecomplex, ptr %10390, i64 %10392
  %10394 = getelementptr inbounds %struct.doublecomplex, ptr %10393, i32 0, i32 0
  %10395 = load double, ptr %10394, align 8, !tbaa !11
  %10396 = load ptr, ptr %20, align 8, !tbaa !5
  %10397 = load i32, ptr %39, align 4, !tbaa !9
  %10398 = sext i32 %10397 to i64
  %10399 = getelementptr inbounds %struct.doublecomplex, ptr %10396, i64 %10398
  %10400 = getelementptr inbounds %struct.doublecomplex, ptr %10399, i32 0, i32 0
  %10401 = load double, ptr %10400, align 8, !tbaa !11
  %10402 = load ptr, ptr %26, align 8, !tbaa !5
  %10403 = load i32, ptr %36, align 4, !tbaa !9
  %10404 = sext i32 %10403 to i64
  %10405 = getelementptr inbounds %struct.doublecomplex, ptr %10402, i64 %10404
  %10406 = getelementptr inbounds %struct.doublecomplex, ptr %10405, i32 0, i32 1
  %10407 = load double, ptr %10406, align 8, !tbaa !15
  %10408 = load ptr, ptr %20, align 8, !tbaa !5
  %10409 = load i32, ptr %39, align 4, !tbaa !9
  %10410 = sext i32 %10409 to i64
  %10411 = getelementptr inbounds %struct.doublecomplex, ptr %10408, i64 %10410
  %10412 = getelementptr inbounds %struct.doublecomplex, ptr %10411, i32 0, i32 1
  %10413 = load double, ptr %10412, align 8, !tbaa !15
  %10414 = fmul double %10407, %10413
  %10415 = fneg double %10414
  %10416 = call double @llvm.fmuladd.f64(double %10395, double %10401, double %10415)
  %10417 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %10416, ptr %10417, align 8, !tbaa !11
  %10418 = load ptr, ptr %26, align 8, !tbaa !5
  %10419 = load i32, ptr %36, align 4, !tbaa !9
  %10420 = sext i32 %10419 to i64
  %10421 = getelementptr inbounds %struct.doublecomplex, ptr %10418, i64 %10420
  %10422 = getelementptr inbounds %struct.doublecomplex, ptr %10421, i32 0, i32 0
  %10423 = load double, ptr %10422, align 8, !tbaa !11
  %10424 = load ptr, ptr %20, align 8, !tbaa !5
  %10425 = load i32, ptr %39, align 4, !tbaa !9
  %10426 = sext i32 %10425 to i64
  %10427 = getelementptr inbounds %struct.doublecomplex, ptr %10424, i64 %10426
  %10428 = getelementptr inbounds %struct.doublecomplex, ptr %10427, i32 0, i32 1
  %10429 = load double, ptr %10428, align 8, !tbaa !15
  %10430 = load ptr, ptr %26, align 8, !tbaa !5
  %10431 = load i32, ptr %36, align 4, !tbaa !9
  %10432 = sext i32 %10431 to i64
  %10433 = getelementptr inbounds %struct.doublecomplex, ptr %10430, i64 %10432
  %10434 = getelementptr inbounds %struct.doublecomplex, ptr %10433, i32 0, i32 1
  %10435 = load double, ptr %10434, align 8, !tbaa !15
  %10436 = load ptr, ptr %20, align 8, !tbaa !5
  %10437 = load i32, ptr %39, align 4, !tbaa !9
  %10438 = sext i32 %10437 to i64
  %10439 = getelementptr inbounds %struct.doublecomplex, ptr %10436, i64 %10438
  %10440 = getelementptr inbounds %struct.doublecomplex, ptr %10439, i32 0, i32 0
  %10441 = load double, ptr %10440, align 8, !tbaa !11
  %10442 = fmul double %10435, %10441
  %10443 = call double @llvm.fmuladd.f64(double %10423, double %10429, double %10442)
  %10444 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %10443, ptr %10444, align 8, !tbaa !15
  %10445 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %10446 = load double, ptr %10445, align 8, !tbaa !11
  %10447 = load ptr, ptr %26, align 8, !tbaa !5
  %10448 = load i32, ptr %35, align 4, !tbaa !9
  %10449 = sext i32 %10448 to i64
  %10450 = getelementptr inbounds %struct.doublecomplex, ptr %10447, i64 %10449
  %10451 = getelementptr inbounds %struct.doublecomplex, ptr %10450, i32 0, i32 0
  store double %10446, ptr %10451, align 8, !tbaa !11
  %10452 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %10453 = load double, ptr %10452, align 8, !tbaa !15
  %10454 = load ptr, ptr %26, align 8, !tbaa !5
  %10455 = load i32, ptr %35, align 4, !tbaa !9
  %10456 = sext i32 %10455 to i64
  %10457 = getelementptr inbounds %struct.doublecomplex, ptr %10454, i64 %10456
  %10458 = getelementptr inbounds %struct.doublecomplex, ptr %10457, i32 0, i32 1
  store double %10453, ptr %10458, align 8, !tbaa !15
  %10459 = load i32, ptr %72, align 4, !tbaa !9
  %10460 = load i32, ptr %56, align 4, !tbaa !9
  %10461 = sub nsw i32 %10460, 1
  %10462 = load i32, ptr %29, align 4, !tbaa !9
  %10463 = mul nsw i32 %10461, %10462
  %10464 = add nsw i32 %10459, %10463
  store i32 %10464, ptr %35, align 4, !tbaa !9
  %10465 = load i32, ptr %59, align 4, !tbaa !9
  %10466 = load ptr, ptr %19, align 8, !tbaa !5
  %10467 = load i32, ptr %10466, align 4, !tbaa !9
  %10468 = sub nsw i32 %10465, %10467
  %10469 = load i32, ptr %56, align 4, !tbaa !9
  %10470 = add nsw i32 %10468, %10469
  store i32 %10470, ptr %36, align 4, !tbaa !9
  %10471 = load i32, ptr %72, align 4, !tbaa !9
  %10472 = load i32, ptr %56, align 4, !tbaa !9
  %10473 = sub nsw i32 %10472, 1
  %10474 = load i32, ptr %29, align 4, !tbaa !9
  %10475 = mul nsw i32 %10473, %10474
  %10476 = add nsw i32 %10471, %10475
  store i32 %10476, ptr %39, align 4, !tbaa !9
  %10477 = load ptr, ptr %27, align 8, !tbaa !5
  %10478 = load i32, ptr %36, align 4, !tbaa !9
  %10479 = sext i32 %10478 to i64
  %10480 = getelementptr inbounds double, ptr %10477, i64 %10479
  %10481 = load double, ptr %10480, align 8, !tbaa !14
  %10482 = load ptr, ptr %20, align 8, !tbaa !5
  %10483 = load i32, ptr %39, align 4, !tbaa !9
  %10484 = sext i32 %10483 to i64
  %10485 = getelementptr inbounds %struct.doublecomplex, ptr %10482, i64 %10484
  %10486 = getelementptr inbounds %struct.doublecomplex, ptr %10485, i32 0, i32 0
  %10487 = load double, ptr %10486, align 8, !tbaa !11
  %10488 = fmul double %10481, %10487
  %10489 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  store double %10488, ptr %10489, align 8, !tbaa !11
  %10490 = load ptr, ptr %27, align 8, !tbaa !5
  %10491 = load i32, ptr %36, align 4, !tbaa !9
  %10492 = sext i32 %10491 to i64
  %10493 = getelementptr inbounds double, ptr %10490, i64 %10492
  %10494 = load double, ptr %10493, align 8, !tbaa !14
  %10495 = load ptr, ptr %20, align 8, !tbaa !5
  %10496 = load i32, ptr %39, align 4, !tbaa !9
  %10497 = sext i32 %10496 to i64
  %10498 = getelementptr inbounds %struct.doublecomplex, ptr %10495, i64 %10497
  %10499 = getelementptr inbounds %struct.doublecomplex, ptr %10498, i32 0, i32 1
  %10500 = load double, ptr %10499, align 8, !tbaa !15
  %10501 = fmul double %10494, %10500
  %10502 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  store double %10501, ptr %10502, align 8, !tbaa !15
  %10503 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 0
  %10504 = load double, ptr %10503, align 8, !tbaa !11
  %10505 = load ptr, ptr %20, align 8, !tbaa !5
  %10506 = load i32, ptr %35, align 4, !tbaa !9
  %10507 = sext i32 %10506 to i64
  %10508 = getelementptr inbounds %struct.doublecomplex, ptr %10505, i64 %10507
  %10509 = getelementptr inbounds %struct.doublecomplex, ptr %10508, i32 0, i32 0
  store double %10504, ptr %10509, align 8, !tbaa !11
  %10510 = getelementptr inbounds %struct.doublecomplex, ptr %44, i32 0, i32 1
  %10511 = load double, ptr %10510, align 8, !tbaa !15
  %10512 = load ptr, ptr %20, align 8, !tbaa !5
  %10513 = load i32, ptr %35, align 4, !tbaa !9
  %10514 = sext i32 %10513 to i64
  %10515 = getelementptr inbounds %struct.doublecomplex, ptr %10512, i64 %10514
  %10516 = getelementptr inbounds %struct.doublecomplex, ptr %10515, i32 0, i32 1
  store double %10511, ptr %10516, align 8, !tbaa !15
  br label %10517

10517:                                            ; preds = %10371
  %10518 = load i32, ptr %38, align 4, !tbaa !9
  %10519 = load i32, ptr %56, align 4, !tbaa !9
  %10520 = add nsw i32 %10519, %10518
  store i32 %10520, ptr %56, align 4, !tbaa !9
  br label %10355, !llvm.loop !100

10521:                                            ; preds = %10368
  %10522 = load i32, ptr %71, align 4, !tbaa !9
  %10523 = icmp ne i32 %10522, 0
  br i1 %10523, label %10524, label %10577

10524:                                            ; preds = %10521
  %10525 = load i32, ptr %55, align 4, !tbaa !9
  %10526 = load i32, ptr %57, align 4, !tbaa !9
  %10527 = add nsw i32 %10525, %10526
  %10528 = load i32, ptr %72, align 4, !tbaa !9
  %10529 = icmp sgt i32 %10527, %10528
  br i1 %10529, label %10530, label %10576

10530:                                            ; preds = %10524
  %10531 = load i32, ptr %57, align 4, !tbaa !9
  %10532 = load i32, ptr %78, align 4, !tbaa !9
  %10533 = icmp sle i32 %10531, %10532
  br i1 %10533, label %10534, label %10576

10534:                                            ; preds = %10530
  %10535 = load i32, ptr %59, align 4, !tbaa !9
  %10536 = load ptr, ptr %19, align 8, !tbaa !5
  %10537 = load i32, ptr %10536, align 4, !tbaa !9
  %10538 = sub nsw i32 %10535, %10537
  %10539 = load i32, ptr %55, align 4, !tbaa !9
  %10540 = add nsw i32 %10538, %10539
  %10541 = load i32, ptr %57, align 4, !tbaa !9
  %10542 = add nsw i32 %10540, %10541
  %10543 = load ptr, ptr %18, align 8, !tbaa !5
  %10544 = load i32, ptr %10543, align 4, !tbaa !9
  %10545 = sub nsw i32 %10542, %10544
  store i32 %10545, ptr %38, align 4, !tbaa !9
  %10546 = load i32, ptr %59, align 4, !tbaa !9
  %10547 = load ptr, ptr %19, align 8, !tbaa !5
  %10548 = load i32, ptr %10547, align 4, !tbaa !9
  %10549 = sub nsw i32 %10546, %10548
  %10550 = load i32, ptr %55, align 4, !tbaa !9
  %10551 = add nsw i32 %10549, %10550
  %10552 = load i32, ptr %57, align 4, !tbaa !9
  %10553 = add nsw i32 %10551, %10552
  store i32 %10553, ptr %37, align 4, !tbaa !9
  %10554 = load ptr, ptr %26, align 8, !tbaa !5
  %10555 = load i32, ptr %37, align 4, !tbaa !9
  %10556 = sext i32 %10555 to i64
  %10557 = getelementptr inbounds %struct.doublecomplex, ptr %10554, i64 %10556
  %10558 = getelementptr inbounds %struct.doublecomplex, ptr %10557, i32 0, i32 0
  %10559 = load double, ptr %10558, align 8, !tbaa !11
  %10560 = load ptr, ptr %26, align 8, !tbaa !5
  %10561 = load i32, ptr %38, align 4, !tbaa !9
  %10562 = sext i32 %10561 to i64
  %10563 = getelementptr inbounds %struct.doublecomplex, ptr %10560, i64 %10562
  %10564 = getelementptr inbounds %struct.doublecomplex, ptr %10563, i32 0, i32 0
  store double %10559, ptr %10564, align 8, !tbaa !11
  %10565 = load ptr, ptr %26, align 8, !tbaa !5
  %10566 = load i32, ptr %37, align 4, !tbaa !9
  %10567 = sext i32 %10566 to i64
  %10568 = getelementptr inbounds %struct.doublecomplex, ptr %10565, i64 %10567
  %10569 = getelementptr inbounds %struct.doublecomplex, ptr %10568, i32 0, i32 1
  %10570 = load double, ptr %10569, align 8, !tbaa !15
  %10571 = load ptr, ptr %26, align 8, !tbaa !5
  %10572 = load i32, ptr %38, align 4, !tbaa !9
  %10573 = sext i32 %10572 to i64
  %10574 = getelementptr inbounds %struct.doublecomplex, ptr %10571, i64 %10573
  %10575 = getelementptr inbounds %struct.doublecomplex, ptr %10574, i32 0, i32 1
  store double %10570, ptr %10575, align 8, !tbaa !15
  br label %10576

10576:                                            ; preds = %10534, %10530, %10524
  br label %10577

10577:                                            ; preds = %10576, %10521
  br label %10578

10578:                                            ; preds = %10577
  %10579 = load i32, ptr %57, align 4, !tbaa !9
  %10580 = add nsw i32 %10579, -1
  store i32 %10580, ptr %57, align 4, !tbaa !9
  br label %10122, !llvm.loop !101

10581:                                            ; preds = %10122
  %10582 = load ptr, ptr %19, align 8, !tbaa !5
  %10583 = load i32, ptr %10582, align 4, !tbaa !9
  store i32 %10583, ptr %57, align 4, !tbaa !9
  br label %10584

10584:                                            ; preds = %10900, %10581
  %10585 = load i32, ptr %57, align 4, !tbaa !9
  %10586 = icmp sge i32 %10585, 1
  br i1 %10586, label %10587, label %10903

10587:                                            ; preds = %10584
  store i32 1, ptr %38, align 4, !tbaa !9
  %10588 = load i32, ptr %57, align 4, !tbaa !9
  %10589 = load i32, ptr %61, align 4, !tbaa !9
  %10590 = add nsw i32 %10588, %10589
  %10591 = load i32, ptr %59, align 4, !tbaa !9
  %10592 = sub nsw i32 %10590, %10591
  store i32 %10592, ptr %37, align 4, !tbaa !9
  %10593 = load i32, ptr %55, align 4, !tbaa !9
  %10594 = load i32, ptr %57, align 4, !tbaa !9
  %10595 = add nsw i32 %10593, %10594
  %10596 = add nsw i32 %10595, 1
  %10597 = load i32, ptr %38, align 4, !tbaa !9
  %10598 = load i32, ptr %37, align 4, !tbaa !9
  %10599 = icmp sge i32 %10597, %10598
  br i1 %10599, label %10600, label %10602

10600:                                            ; preds = %10587
  %10601 = load i32, ptr %38, align 4, !tbaa !9
  br label %10604

10602:                                            ; preds = %10587
  %10603 = load i32, ptr %37, align 4, !tbaa !9
  br label %10604

10604:                                            ; preds = %10602, %10600
  %10605 = phi i32 [ %10601, %10600 ], [ %10603, %10602 ]
  %10606 = load i32, ptr %72, align 4, !tbaa !9
  %10607 = mul nsw i32 %10605, %10606
  %10608 = sub nsw i32 %10596, %10607
  store i32 %10608, ptr %66, align 4, !tbaa !9
  %10609 = load i32, ptr %66, align 4, !tbaa !9
  %10610 = load ptr, ptr %18, align 8, !tbaa !5
  %10611 = load i32, ptr %10610, align 4, !tbaa !9
  %10612 = add nsw i32 %10609, %10611
  %10613 = sub nsw i32 %10612, 1
  %10614 = load i32, ptr %72, align 4, !tbaa !9
  %10615 = sdiv i32 %10613, %10614
  store i32 %10615, ptr %69, align 4, !tbaa !9
  %10616 = load i32, ptr %66, align 4, !tbaa !9
  %10617 = load i32, ptr %69, align 4, !tbaa !9
  %10618 = sub nsw i32 %10617, 1
  %10619 = load i32, ptr %72, align 4, !tbaa !9
  %10620 = mul nsw i32 %10618, %10619
  %10621 = sub nsw i32 %10616, %10620
  store i32 %10621, ptr %65, align 4, !tbaa !9
  %10622 = load i32, ptr %69, align 4, !tbaa !9
  %10623 = icmp sgt i32 %10622, 0
  br i1 %10623, label %10624, label %10750

10624:                                            ; preds = %10604
  %10625 = load ptr, ptr %20, align 8, !tbaa !5
  %10626 = load i32, ptr %72, align 4, !tbaa !9
  %10627 = load i32, ptr %65, align 4, !tbaa !9
  %10628 = load i32, ptr %29, align 4, !tbaa !9
  %10629 = mul nsw i32 %10627, %10628
  %10630 = add nsw i32 %10626, %10629
  %10631 = sext i32 %10630 to i64
  %10632 = getelementptr inbounds %struct.doublecomplex, ptr %10625, i64 %10631
  %10633 = load ptr, ptr %26, align 8, !tbaa !5
  %10634 = load i32, ptr %59, align 4, !tbaa !9
  %10635 = load ptr, ptr %19, align 8, !tbaa !5
  %10636 = load i32, ptr %10635, align 4, !tbaa !9
  %10637 = sub nsw i32 %10634, %10636
  %10638 = load i32, ptr %65, align 4, !tbaa !9
  %10639 = add nsw i32 %10637, %10638
  %10640 = sext i32 %10639 to i64
  %10641 = getelementptr inbounds %struct.doublecomplex, ptr %10633, i64 %10640
  %10642 = load ptr, ptr %27, align 8, !tbaa !5
  %10643 = load i32, ptr %59, align 4, !tbaa !9
  %10644 = load ptr, ptr %19, align 8, !tbaa !5
  %10645 = load i32, ptr %10644, align 4, !tbaa !9
  %10646 = sub nsw i32 %10643, %10645
  %10647 = load i32, ptr %65, align 4, !tbaa !9
  %10648 = add nsw i32 %10646, %10647
  %10649 = sext i32 %10648 to i64
  %10650 = getelementptr inbounds double, ptr %10642, i64 %10649
  call void @zlargv_(ptr noundef %69, ptr noundef %10632, ptr noundef %54, ptr noundef %10641, ptr noundef %72, ptr noundef %10650, ptr noundef %72)
  %10651 = load ptr, ptr %18, align 8, !tbaa !5
  %10652 = load i32, ptr %10651, align 4, !tbaa !9
  %10653 = sub nsw i32 %10652, 1
  store i32 %10653, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %10654

10654:                                            ; preds = %10696, %10624
  %10655 = load i32, ptr %58, align 4, !tbaa !9
  %10656 = load i32, ptr %38, align 4, !tbaa !9
  %10657 = icmp sle i32 %10655, %10656
  br i1 %10657, label %10658, label %10699

10658:                                            ; preds = %10654
  %10659 = load ptr, ptr %20, align 8, !tbaa !5
  %10660 = load i32, ptr %58, align 4, !tbaa !9
  %10661 = add nsw i32 %10660, 1
  %10662 = load i32, ptr %65, align 4, !tbaa !9
  %10663 = load i32, ptr %29, align 4, !tbaa !9
  %10664 = mul nsw i32 %10662, %10663
  %10665 = add nsw i32 %10661, %10664
  %10666 = sext i32 %10665 to i64
  %10667 = getelementptr inbounds %struct.doublecomplex, ptr %10659, i64 %10666
  %10668 = load ptr, ptr %20, align 8, !tbaa !5
  %10669 = load i32, ptr %58, align 4, !tbaa !9
  %10670 = add nsw i32 %10669, 2
  %10671 = load i32, ptr %65, align 4, !tbaa !9
  %10672 = sub nsw i32 %10671, 1
  %10673 = load i32, ptr %29, align 4, !tbaa !9
  %10674 = mul nsw i32 %10672, %10673
  %10675 = add nsw i32 %10670, %10674
  %10676 = sext i32 %10675 to i64
  %10677 = getelementptr inbounds %struct.doublecomplex, ptr %10668, i64 %10676
  %10678 = load ptr, ptr %27, align 8, !tbaa !5
  %10679 = load i32, ptr %59, align 4, !tbaa !9
  %10680 = load ptr, ptr %19, align 8, !tbaa !5
  %10681 = load i32, ptr %10680, align 4, !tbaa !9
  %10682 = sub nsw i32 %10679, %10681
  %10683 = load i32, ptr %65, align 4, !tbaa !9
  %10684 = add nsw i32 %10682, %10683
  %10685 = sext i32 %10684 to i64
  %10686 = getelementptr inbounds double, ptr %10678, i64 %10685
  %10687 = load ptr, ptr %26, align 8, !tbaa !5
  %10688 = load i32, ptr %59, align 4, !tbaa !9
  %10689 = load ptr, ptr %19, align 8, !tbaa !5
  %10690 = load i32, ptr %10689, align 4, !tbaa !9
  %10691 = sub nsw i32 %10688, %10690
  %10692 = load i32, ptr %65, align 4, !tbaa !9
  %10693 = add nsw i32 %10691, %10692
  %10694 = sext i32 %10693 to i64
  %10695 = getelementptr inbounds %struct.doublecomplex, ptr %10687, i64 %10694
  call void @zlartv_(ptr noundef %69, ptr noundef %10667, ptr noundef %54, ptr noundef %10677, ptr noundef %54, ptr noundef %10686, ptr noundef %10695, ptr noundef %72)
  br label %10696

10696:                                            ; preds = %10658
  %10697 = load i32, ptr %58, align 4, !tbaa !9
  %10698 = add nsw i32 %10697, 1
  store i32 %10698, ptr %58, align 4, !tbaa !9
  br label %10654, !llvm.loop !102

10699:                                            ; preds = %10654
  %10700 = load ptr, ptr %20, align 8, !tbaa !5
  %10701 = load i32, ptr %65, align 4, !tbaa !9
  %10702 = load i32, ptr %29, align 4, !tbaa !9
  %10703 = mul nsw i32 %10701, %10702
  %10704 = add nsw i32 %10703, 1
  %10705 = sext i32 %10704 to i64
  %10706 = getelementptr inbounds %struct.doublecomplex, ptr %10700, i64 %10705
  %10707 = load ptr, ptr %20, align 8, !tbaa !5
  %10708 = load i32, ptr %65, align 4, !tbaa !9
  %10709 = sub nsw i32 %10708, 1
  %10710 = load i32, ptr %29, align 4, !tbaa !9
  %10711 = mul nsw i32 %10709, %10710
  %10712 = add nsw i32 %10711, 1
  %10713 = sext i32 %10712 to i64
  %10714 = getelementptr inbounds %struct.doublecomplex, ptr %10707, i64 %10713
  %10715 = load ptr, ptr %20, align 8, !tbaa !5
  %10716 = load i32, ptr %65, align 4, !tbaa !9
  %10717 = sub nsw i32 %10716, 1
  %10718 = load i32, ptr %29, align 4, !tbaa !9
  %10719 = mul nsw i32 %10717, %10718
  %10720 = add nsw i32 %10719, 2
  %10721 = sext i32 %10720 to i64
  %10722 = getelementptr inbounds %struct.doublecomplex, ptr %10715, i64 %10721
  %10723 = load ptr, ptr %27, align 8, !tbaa !5
  %10724 = load i32, ptr %59, align 4, !tbaa !9
  %10725 = load ptr, ptr %19, align 8, !tbaa !5
  %10726 = load i32, ptr %10725, align 4, !tbaa !9
  %10727 = sub nsw i32 %10724, %10726
  %10728 = load i32, ptr %65, align 4, !tbaa !9
  %10729 = add nsw i32 %10727, %10728
  %10730 = sext i32 %10729 to i64
  %10731 = getelementptr inbounds double, ptr %10723, i64 %10730
  %10732 = load ptr, ptr %26, align 8, !tbaa !5
  %10733 = load i32, ptr %59, align 4, !tbaa !9
  %10734 = load ptr, ptr %19, align 8, !tbaa !5
  %10735 = load i32, ptr %10734, align 4, !tbaa !9
  %10736 = sub nsw i32 %10733, %10735
  %10737 = load i32, ptr %65, align 4, !tbaa !9
  %10738 = add nsw i32 %10736, %10737
  %10739 = sext i32 %10738 to i64
  %10740 = getelementptr inbounds %struct.doublecomplex, ptr %10732, i64 %10739
  call void @zlar2v_(ptr noundef %69, ptr noundef %10706, ptr noundef %10714, ptr noundef %10722, ptr noundef %54, ptr noundef %10731, ptr noundef %10740, ptr noundef %72)
  %10741 = load ptr, ptr %26, align 8, !tbaa !5
  %10742 = load i32, ptr %59, align 4, !tbaa !9
  %10743 = load ptr, ptr %19, align 8, !tbaa !5
  %10744 = load i32, ptr %10743, align 4, !tbaa !9
  %10745 = sub nsw i32 %10742, %10744
  %10746 = load i32, ptr %65, align 4, !tbaa !9
  %10747 = add nsw i32 %10745, %10746
  %10748 = sext i32 %10747 to i64
  %10749 = getelementptr inbounds %struct.doublecomplex, ptr %10741, i64 %10748
  call void @zlacgv_(ptr noundef %69, ptr noundef %10749, ptr noundef %72)
  br label %10750

10750:                                            ; preds = %10699, %10604
  %10751 = load ptr, ptr %19, align 8, !tbaa !5
  %10752 = load i32, ptr %10751, align 4, !tbaa !9
  %10753 = load i32, ptr %57, align 4, !tbaa !9
  %10754 = sub nsw i32 %10752, %10753
  %10755 = add nsw i32 %10754, 1
  store i32 %10755, ptr %38, align 4, !tbaa !9
  %10756 = load ptr, ptr %18, align 8, !tbaa !5
  %10757 = load i32, ptr %10756, align 4, !tbaa !9
  %10758 = sub nsw i32 %10757, 1
  store i32 %10758, ptr %58, align 4, !tbaa !9
  br label %10759

10759:                                            ; preds = %10827, %10750
  %10760 = load i32, ptr %58, align 4, !tbaa !9
  %10761 = load i32, ptr %38, align 4, !tbaa !9
  %10762 = icmp sge i32 %10760, %10761
  br i1 %10762, label %10763, label %10830

10763:                                            ; preds = %10759
  %10764 = load i32, ptr %66, align 4, !tbaa !9
  %10765 = load i32, ptr %58, align 4, !tbaa !9
  %10766 = add nsw i32 %10764, %10765
  %10767 = sub nsw i32 %10766, 1
  %10768 = load i32, ptr %72, align 4, !tbaa !9
  %10769 = sdiv i32 %10767, %10768
  store i32 %10769, ptr %79, align 4, !tbaa !9
  %10770 = load i32, ptr %66, align 4, !tbaa !9
  %10771 = load i32, ptr %79, align 4, !tbaa !9
  %10772 = sub nsw i32 %10771, 1
  %10773 = load i32, ptr %72, align 4, !tbaa !9
  %10774 = mul nsw i32 %10772, %10773
  %10775 = sub nsw i32 %10770, %10774
  store i32 %10775, ptr %75, align 4, !tbaa !9
  %10776 = load i32, ptr %79, align 4, !tbaa !9
  %10777 = icmp sgt i32 %10776, 0
  br i1 %10777, label %10778, label %10826

10778:                                            ; preds = %10763
  %10779 = load ptr, ptr %20, align 8, !tbaa !5
  %10780 = load i32, ptr %72, align 4, !tbaa !9
  %10781 = load i32, ptr %58, align 4, !tbaa !9
  %10782 = sub nsw i32 %10780, %10781
  %10783 = add nsw i32 %10782, 1
  %10784 = load i32, ptr %75, align 4, !tbaa !9
  %10785 = load i32, ptr %72, align 4, !tbaa !9
  %10786 = sub nsw i32 %10784, %10785
  %10787 = load i32, ptr %58, align 4, !tbaa !9
  %10788 = add nsw i32 %10786, %10787
  %10789 = load i32, ptr %29, align 4, !tbaa !9
  %10790 = mul nsw i32 %10788, %10789
  %10791 = add nsw i32 %10783, %10790
  %10792 = sext i32 %10791 to i64
  %10793 = getelementptr inbounds %struct.doublecomplex, ptr %10779, i64 %10792
  %10794 = load ptr, ptr %20, align 8, !tbaa !5
  %10795 = load i32, ptr %72, align 4, !tbaa !9
  %10796 = load i32, ptr %58, align 4, !tbaa !9
  %10797 = sub nsw i32 %10795, %10796
  %10798 = load i32, ptr %75, align 4, !tbaa !9
  %10799 = load i32, ptr %72, align 4, !tbaa !9
  %10800 = sub nsw i32 %10798, %10799
  %10801 = load i32, ptr %58, align 4, !tbaa !9
  %10802 = add nsw i32 %10800, %10801
  %10803 = load i32, ptr %29, align 4, !tbaa !9
  %10804 = mul nsw i32 %10802, %10803
  %10805 = add nsw i32 %10797, %10804
  %10806 = sext i32 %10805 to i64
  %10807 = getelementptr inbounds %struct.doublecomplex, ptr %10794, i64 %10806
  %10808 = load ptr, ptr %27, align 8, !tbaa !5
  %10809 = load i32, ptr %59, align 4, !tbaa !9
  %10810 = load ptr, ptr %19, align 8, !tbaa !5
  %10811 = load i32, ptr %10810, align 4, !tbaa !9
  %10812 = sub nsw i32 %10809, %10811
  %10813 = load i32, ptr %75, align 4, !tbaa !9
  %10814 = add nsw i32 %10812, %10813
  %10815 = sext i32 %10814 to i64
  %10816 = getelementptr inbounds double, ptr %10808, i64 %10815
  %10817 = load ptr, ptr %26, align 8, !tbaa !5
  %10818 = load i32, ptr %59, align 4, !tbaa !9
  %10819 = load ptr, ptr %19, align 8, !tbaa !5
  %10820 = load i32, ptr %10819, align 4, !tbaa !9
  %10821 = sub nsw i32 %10818, %10820
  %10822 = load i32, ptr %75, align 4, !tbaa !9
  %10823 = add nsw i32 %10821, %10822
  %10824 = sext i32 %10823 to i64
  %10825 = getelementptr inbounds %struct.doublecomplex, ptr %10817, i64 %10824
  call void @zlartv_(ptr noundef %79, ptr noundef %10793, ptr noundef %54, ptr noundef %10807, ptr noundef %54, ptr noundef %10816, ptr noundef %10825, ptr noundef %72)
  br label %10826

10826:                                            ; preds = %10778, %10763
  br label %10827

10827:                                            ; preds = %10826
  %10828 = load i32, ptr %58, align 4, !tbaa !9
  %10829 = add nsw i32 %10828, -1
  store i32 %10829, ptr %58, align 4, !tbaa !9
  br label %10759, !llvm.loop !103

10830:                                            ; preds = %10759
  %10831 = load i32, ptr %67, align 4, !tbaa !9
  %10832 = icmp ne i32 %10831, 0
  br i1 %10832, label %10833, label %10899

10833:                                            ; preds = %10830
  %10834 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %10834, ptr %38, align 4, !tbaa !9
  %10835 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %10835, ptr %37, align 4, !tbaa !9
  %10836 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %10836, ptr %56, align 4, !tbaa !9
  br label %10837

10837:                                            ; preds = %10894, %10833
  %10838 = load i32, ptr %37, align 4, !tbaa !9
  %10839 = icmp slt i32 %10838, 0
  br i1 %10839, label %10840, label %10845

10840:                                            ; preds = %10837
  %10841 = load i32, ptr %56, align 4, !tbaa !9
  %10842 = load i32, ptr %38, align 4, !tbaa !9
  %10843 = icmp sge i32 %10841, %10842
  %10844 = zext i1 %10843 to i32
  br label %10850

10845:                                            ; preds = %10837
  %10846 = load i32, ptr %56, align 4, !tbaa !9
  %10847 = load i32, ptr %38, align 4, !tbaa !9
  %10848 = icmp sle i32 %10846, %10847
  %10849 = zext i1 %10848 to i32
  br label %10850

10850:                                            ; preds = %10845, %10840
  %10851 = phi i32 [ %10844, %10840 ], [ %10849, %10845 ]
  %10852 = icmp ne i32 %10851, 0
  br i1 %10852, label %10853, label %10898

10853:                                            ; preds = %10850
  %10854 = load ptr, ptr %26, align 8, !tbaa !5
  %10855 = load i32, ptr %59, align 4, !tbaa !9
  %10856 = load ptr, ptr %19, align 8, !tbaa !5
  %10857 = load i32, ptr %10856, align 4, !tbaa !9
  %10858 = sub nsw i32 %10855, %10857
  %10859 = load i32, ptr %56, align 4, !tbaa !9
  %10860 = add nsw i32 %10858, %10859
  %10861 = sext i32 %10860 to i64
  %10862 = getelementptr inbounds %struct.doublecomplex, ptr %10854, i64 %10861
  %10863 = call { double, double } @Cd(ptr noundef %10862)
  %10864 = extractvalue { double, double } %10863, 0
  %10865 = extractvalue { double, double } %10863, 1
  %10866 = fneg double %10865
  %10867 = call ptr @_pCd(ptr noundef %44)
  %10868 = getelementptr inbounds { double, double }, ptr %10867, i32 0, i32 0
  %10869 = getelementptr inbounds { double, double }, ptr %10867, i32 0, i32 1
  store double %10864, ptr %10868, align 8
  store double %10866, ptr %10869, align 8
  %10870 = load ptr, ptr %24, align 8, !tbaa !5
  %10871 = load i32, ptr %56, align 4, !tbaa !9
  %10872 = load i32, ptr %33, align 4, !tbaa !9
  %10873 = mul nsw i32 %10871, %10872
  %10874 = add nsw i32 %10873, 1
  %10875 = sext i32 %10874 to i64
  %10876 = getelementptr inbounds %struct.doublecomplex, ptr %10870, i64 %10875
  %10877 = load ptr, ptr %24, align 8, !tbaa !5
  %10878 = load i32, ptr %56, align 4, !tbaa !9
  %10879 = sub nsw i32 %10878, 1
  %10880 = load i32, ptr %33, align 4, !tbaa !9
  %10881 = mul nsw i32 %10879, %10880
  %10882 = add nsw i32 %10881, 1
  %10883 = sext i32 %10882 to i64
  %10884 = getelementptr inbounds %struct.doublecomplex, ptr %10877, i64 %10883
  %10885 = load ptr, ptr %27, align 8, !tbaa !5
  %10886 = load i32, ptr %59, align 4, !tbaa !9
  %10887 = load ptr, ptr %19, align 8, !tbaa !5
  %10888 = load i32, ptr %10887, align 4, !tbaa !9
  %10889 = sub nsw i32 %10886, %10888
  %10890 = load i32, ptr %56, align 4, !tbaa !9
  %10891 = add nsw i32 %10889, %10890
  %10892 = sext i32 %10891 to i64
  %10893 = getelementptr inbounds double, ptr %10885, i64 %10892
  call void @zrot_(ptr noundef %70, ptr noundef %10876, ptr noundef @c__1, ptr noundef %10884, ptr noundef @c__1, ptr noundef %10893, ptr noundef %44)
  br label %10894

10894:                                            ; preds = %10853
  %10895 = load i32, ptr %37, align 4, !tbaa !9
  %10896 = load i32, ptr %56, align 4, !tbaa !9
  %10897 = add nsw i32 %10896, %10895
  store i32 %10897, ptr %56, align 4, !tbaa !9
  br label %10837, !llvm.loop !104

10898:                                            ; preds = %10850
  br label %10899

10899:                                            ; preds = %10898, %10830
  br label %10900

10900:                                            ; preds = %10899
  %10901 = load i32, ptr %57, align 4, !tbaa !9
  %10902 = add nsw i32 %10901, -1
  store i32 %10902, ptr %57, align 4, !tbaa !9
  br label %10584, !llvm.loop !105

10903:                                            ; preds = %10584
  %10904 = load ptr, ptr %19, align 8, !tbaa !5
  %10905 = load i32, ptr %10904, align 4, !tbaa !9
  %10906 = sub nsw i32 %10905, 1
  store i32 %10906, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %10907

10907:                                            ; preds = %10999, %10903
  %10908 = load i32, ptr %57, align 4, !tbaa !9
  %10909 = load i32, ptr %37, align 4, !tbaa !9
  %10910 = icmp sle i32 %10908, %10909
  br i1 %10910, label %10911, label %11002

10911:                                            ; preds = %10907
  store i32 1, ptr %38, align 4, !tbaa !9
  %10912 = load i32, ptr %57, align 4, !tbaa !9
  %10913 = load i32, ptr %61, align 4, !tbaa !9
  %10914 = add nsw i32 %10912, %10913
  %10915 = load i32, ptr %59, align 4, !tbaa !9
  %10916 = sub nsw i32 %10914, %10915
  %10917 = add nsw i32 %10916, 1
  store i32 %10917, ptr %35, align 4, !tbaa !9
  %10918 = load i32, ptr %55, align 4, !tbaa !9
  %10919 = load i32, ptr %57, align 4, !tbaa !9
  %10920 = add nsw i32 %10918, %10919
  %10921 = add nsw i32 %10920, 1
  %10922 = load i32, ptr %38, align 4, !tbaa !9
  %10923 = load i32, ptr %35, align 4, !tbaa !9
  %10924 = icmp sge i32 %10922, %10923
  br i1 %10924, label %10925, label %10927

10925:                                            ; preds = %10911
  %10926 = load i32, ptr %38, align 4, !tbaa !9
  br label %10929

10927:                                            ; preds = %10911
  %10928 = load i32, ptr %35, align 4, !tbaa !9
  br label %10929

10929:                                            ; preds = %10927, %10925
  %10930 = phi i32 [ %10926, %10925 ], [ %10928, %10927 ]
  %10931 = load i32, ptr %72, align 4, !tbaa !9
  %10932 = mul nsw i32 %10930, %10931
  %10933 = sub nsw i32 %10921, %10932
  store i32 %10933, ptr %66, align 4, !tbaa !9
  %10934 = load ptr, ptr %19, align 8, !tbaa !5
  %10935 = load i32, ptr %10934, align 4, !tbaa !9
  %10936 = load i32, ptr %57, align 4, !tbaa !9
  %10937 = sub nsw i32 %10935, %10936
  store i32 %10937, ptr %58, align 4, !tbaa !9
  br label %10938

10938:                                            ; preds = %10995, %10929
  %10939 = load i32, ptr %58, align 4, !tbaa !9
  %10940 = icmp sge i32 %10939, 1
  br i1 %10940, label %10941, label %10998

10941:                                            ; preds = %10938
  %10942 = load i32, ptr %66, align 4, !tbaa !9
  %10943 = load i32, ptr %58, align 4, !tbaa !9
  %10944 = add nsw i32 %10942, %10943
  %10945 = sub nsw i32 %10944, 1
  %10946 = load i32, ptr %72, align 4, !tbaa !9
  %10947 = sdiv i32 %10945, %10946
  store i32 %10947, ptr %79, align 4, !tbaa !9
  %10948 = load i32, ptr %66, align 4, !tbaa !9
  %10949 = load i32, ptr %79, align 4, !tbaa !9
  %10950 = sub nsw i32 %10949, 1
  %10951 = load i32, ptr %72, align 4, !tbaa !9
  %10952 = mul nsw i32 %10950, %10951
  %10953 = sub nsw i32 %10948, %10952
  store i32 %10953, ptr %75, align 4, !tbaa !9
  %10954 = load i32, ptr %79, align 4, !tbaa !9
  %10955 = icmp sgt i32 %10954, 0
  br i1 %10955, label %10956, label %10994

10956:                                            ; preds = %10941
  %10957 = load ptr, ptr %20, align 8, !tbaa !5
  %10958 = load i32, ptr %72, align 4, !tbaa !9
  %10959 = load i32, ptr %58, align 4, !tbaa !9
  %10960 = sub nsw i32 %10958, %10959
  %10961 = add nsw i32 %10960, 1
  %10962 = load i32, ptr %75, align 4, !tbaa !9
  %10963 = load i32, ptr %72, align 4, !tbaa !9
  %10964 = sub nsw i32 %10962, %10963
  %10965 = load i32, ptr %58, align 4, !tbaa !9
  %10966 = add nsw i32 %10964, %10965
  %10967 = load i32, ptr %29, align 4, !tbaa !9
  %10968 = mul nsw i32 %10966, %10967
  %10969 = add nsw i32 %10961, %10968
  %10970 = sext i32 %10969 to i64
  %10971 = getelementptr inbounds %struct.doublecomplex, ptr %10957, i64 %10970
  %10972 = load ptr, ptr %20, align 8, !tbaa !5
  %10973 = load i32, ptr %72, align 4, !tbaa !9
  %10974 = load i32, ptr %58, align 4, !tbaa !9
  %10975 = sub nsw i32 %10973, %10974
  %10976 = load i32, ptr %75, align 4, !tbaa !9
  %10977 = load i32, ptr %72, align 4, !tbaa !9
  %10978 = sub nsw i32 %10976, %10977
  %10979 = load i32, ptr %58, align 4, !tbaa !9
  %10980 = add nsw i32 %10978, %10979
  %10981 = load i32, ptr %29, align 4, !tbaa !9
  %10982 = mul nsw i32 %10980, %10981
  %10983 = add nsw i32 %10975, %10982
  %10984 = sext i32 %10983 to i64
  %10985 = getelementptr inbounds %struct.doublecomplex, ptr %10972, i64 %10984
  %10986 = load ptr, ptr %27, align 8, !tbaa !5
  %10987 = load i32, ptr %75, align 4, !tbaa !9
  %10988 = sext i32 %10987 to i64
  %10989 = getelementptr inbounds double, ptr %10986, i64 %10988
  %10990 = load ptr, ptr %26, align 8, !tbaa !5
  %10991 = load i32, ptr %75, align 4, !tbaa !9
  %10992 = sext i32 %10991 to i64
  %10993 = getelementptr inbounds %struct.doublecomplex, ptr %10990, i64 %10992
  call void @zlartv_(ptr noundef %79, ptr noundef %10971, ptr noundef %54, ptr noundef %10985, ptr noundef %54, ptr noundef %10989, ptr noundef %10993, ptr noundef %72)
  br label %10994

10994:                                            ; preds = %10956, %10941
  br label %10995

10995:                                            ; preds = %10994
  %10996 = load i32, ptr %58, align 4, !tbaa !9
  %10997 = add nsw i32 %10996, -1
  store i32 %10997, ptr %58, align 4, !tbaa !9
  br label %10938, !llvm.loop !106

10998:                                            ; preds = %10938
  br label %10999

10999:                                            ; preds = %10998
  %11000 = load i32, ptr %57, align 4, !tbaa !9
  %11001 = add nsw i32 %11000, 1
  store i32 %11001, ptr %57, align 4, !tbaa !9
  br label %10907, !llvm.loop !107

11002:                                            ; preds = %10907
  %11003 = load ptr, ptr %19, align 8, !tbaa !5
  %11004 = load i32, ptr %11003, align 4, !tbaa !9
  %11005 = icmp sgt i32 %11004, 1
  br i1 %11005, label %11006, label %11059

11006:                                            ; preds = %11002
  %11007 = load i32, ptr %64, align 4, !tbaa !9
  %11008 = load ptr, ptr %18, align 8, !tbaa !5
  %11009 = load i32, ptr %11008, align 4, !tbaa !9
  %11010 = sub nsw i32 %11007, %11009
  store i32 %11010, ptr %37, align 4, !tbaa !9
  store i32 2, ptr %56, align 4, !tbaa !9
  br label %11011

11011:                                            ; preds = %11055, %11006
  %11012 = load i32, ptr %56, align 4, !tbaa !9
  %11013 = load i32, ptr %37, align 4, !tbaa !9
  %11014 = icmp sle i32 %11012, %11013
  br i1 %11014, label %11015, label %11058

11015:                                            ; preds = %11011
  %11016 = load ptr, ptr %27, align 8, !tbaa !5
  %11017 = load i32, ptr %56, align 4, !tbaa !9
  %11018 = load ptr, ptr %18, align 8, !tbaa !5
  %11019 = load i32, ptr %11018, align 4, !tbaa !9
  %11020 = add nsw i32 %11017, %11019
  %11021 = sext i32 %11020 to i64
  %11022 = getelementptr inbounds double, ptr %11016, i64 %11021
  %11023 = load double, ptr %11022, align 8, !tbaa !14
  %11024 = load ptr, ptr %27, align 8, !tbaa !5
  %11025 = load i32, ptr %56, align 4, !tbaa !9
  %11026 = sext i32 %11025 to i64
  %11027 = getelementptr inbounds double, ptr %11024, i64 %11026
  store double %11023, ptr %11027, align 8, !tbaa !14
  %11028 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %11028, ptr %38, align 4, !tbaa !9
  %11029 = load i32, ptr %56, align 4, !tbaa !9
  %11030 = load ptr, ptr %18, align 8, !tbaa !5
  %11031 = load i32, ptr %11030, align 4, !tbaa !9
  %11032 = add nsw i32 %11029, %11031
  store i32 %11032, ptr %35, align 4, !tbaa !9
  %11033 = load ptr, ptr %26, align 8, !tbaa !5
  %11034 = load i32, ptr %35, align 4, !tbaa !9
  %11035 = sext i32 %11034 to i64
  %11036 = getelementptr inbounds %struct.doublecomplex, ptr %11033, i64 %11035
  %11037 = getelementptr inbounds %struct.doublecomplex, ptr %11036, i32 0, i32 0
  %11038 = load double, ptr %11037, align 8, !tbaa !11
  %11039 = load ptr, ptr %26, align 8, !tbaa !5
  %11040 = load i32, ptr %38, align 4, !tbaa !9
  %11041 = sext i32 %11040 to i64
  %11042 = getelementptr inbounds %struct.doublecomplex, ptr %11039, i64 %11041
  %11043 = getelementptr inbounds %struct.doublecomplex, ptr %11042, i32 0, i32 0
  store double %11038, ptr %11043, align 8, !tbaa !11
  %11044 = load ptr, ptr %26, align 8, !tbaa !5
  %11045 = load i32, ptr %35, align 4, !tbaa !9
  %11046 = sext i32 %11045 to i64
  %11047 = getelementptr inbounds %struct.doublecomplex, ptr %11044, i64 %11046
  %11048 = getelementptr inbounds %struct.doublecomplex, ptr %11047, i32 0, i32 1
  %11049 = load double, ptr %11048, align 8, !tbaa !15
  %11050 = load ptr, ptr %26, align 8, !tbaa !5
  %11051 = load i32, ptr %38, align 4, !tbaa !9
  %11052 = sext i32 %11051 to i64
  %11053 = getelementptr inbounds %struct.doublecomplex, ptr %11050, i64 %11052
  %11054 = getelementptr inbounds %struct.doublecomplex, ptr %11053, i32 0, i32 1
  store double %11049, ptr %11054, align 8, !tbaa !15
  br label %11055

11055:                                            ; preds = %11015
  %11056 = load i32, ptr %56, align 4, !tbaa !9
  %11057 = add nsw i32 %11056, 1
  store i32 %11057, ptr %56, align 4, !tbaa !9
  br label %11011, !llvm.loop !108

11058:                                            ; preds = %11011
  br label %11059

11059:                                            ; preds = %11058, %11002
  br label %11060

11060:                                            ; preds = %11059, %8375
  br label %5612

11061:                                            ; preds = %5673, %5663, %227, %218
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 16, 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 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @zgeru_(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 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8}
!13 = !{!"double", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!12, !13, i64 8}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = distinct !{!39, !17}
!40 = distinct !{!40, !17}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}
!53 = distinct !{!53, !17}
!54 = distinct !{!54, !17}
!55 = distinct !{!55, !17}
!56 = distinct !{!56, !17}
!57 = distinct !{!57, !17}
!58 = distinct !{!58, !17}
!59 = distinct !{!59, !17}
!60 = distinct !{!60, !17}
!61 = distinct !{!61, !17}
!62 = distinct !{!62, !17}
!63 = distinct !{!63, !17}
!64 = distinct !{!64, !17}
!65 = distinct !{!65, !17}
!66 = distinct !{!66, !17}
!67 = distinct !{!67, !17}
!68 = distinct !{!68, !17}
!69 = distinct !{!69, !17}
!70 = distinct !{!70, !17}
!71 = distinct !{!71, !17}
!72 = distinct !{!72, !17}
!73 = distinct !{!73, !17}
!74 = distinct !{!74, !17}
!75 = distinct !{!75, !17}
!76 = distinct !{!76, !17}
!77 = distinct !{!77, !17}
!78 = distinct !{!78, !17}
!79 = distinct !{!79, !17}
!80 = distinct !{!80, !17}
!81 = distinct !{!81, !17}
!82 = distinct !{!82, !17}
!83 = distinct !{!83, !17}
!84 = distinct !{!84, !17}
!85 = distinct !{!85, !17}
!86 = distinct !{!86, !17}
!87 = distinct !{!87, !17}
!88 = distinct !{!88, !17}
!89 = distinct !{!89, !17}
!90 = distinct !{!90, !17}
!91 = distinct !{!91, !17}
!92 = distinct !{!92, !17}
!93 = distinct !{!93, !17}
!94 = distinct !{!94, !17}
!95 = distinct !{!95, !17}
!96 = distinct !{!96, !17}
!97 = distinct !{!97, !17}
!98 = distinct !{!98, !17}
!99 = distinct !{!99, !17}
!100 = distinct !{!100, !17}
!101 = distinct !{!101, !17}
!102 = distinct !{!102, !17}
!103 = distinct !{!103, !17}
!104 = distinct !{!104, !17}
!105 = distinct !{!105, !17}
!106 = distinct !{!106, !17}
!107 = distinct !{!107, !17}
!108 = distinct !{!108, !17}


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

%struct.doublecomplex = type { double, double }

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

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

51:                                               ; preds = %14
  %52 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not3276 = icmp eq i32 %52, 0
  br i1 %.not3276, label %.thread.sink.split, label %53

53:                                               ; preds = %51, %14
  %.not3277 = icmp eq i32 %.fr, 0
  br i1 %.not3277, label %54, label %56

54:                                               ; preds = %53
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not3278 = icmp eq i32 %55, 0
  br i1 %.not3278, label %.thread.sink.split, label %56

56:                                               ; preds = %54, %53
  %57 = load i32, ptr %2, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 0
  br i1 %58, label %.thread.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %3, align 4, !tbaa !5
  %61 = icmp slt i32 %60, 0
  br i1 %61, label %.thread.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i32, ptr %4, align 4, !tbaa !5
  %or.cond3390 = icmp ugt i32 %63, %60
  br i1 %or.cond3390, label %.thread.sink.split, label %64

64:                                               ; preds = %62
  %65 = load i32, ptr %6, align 4, !tbaa !5
  %.not3279 = icmp sgt i32 %65, %60
  br i1 %.not3279, label %66, label %.thread.sink.split

66:                                               ; preds = %64
  %67 = load i32, ptr %8, align 4, !tbaa !5
  %.not3280 = icmp sgt i32 %67, %63
  br i1 %.not3280, label %68, label %.thread.sink.split

68:                                               ; preds = %66
  %69 = load i32, ptr %10, align 4, !tbaa !5
  %70 = icmp slt i32 %69, 1
  %71 = icmp ugt i32 %57, %69
  %or.cond3444 = and i1 %.not, %71
  %or.cond4799 = or i1 %70, %or.cond3444
  br i1 %or.cond4799, label %.thread.sink.split, label %72

72:                                               ; preds = %68
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not3281 = icmp eq i32 %.pr, 0
  br i1 %.not3281, label %76, label %.thread

.thread.sink.split:                               ; preds = %68, %66, %64, %62, %59, %56, %54, %51
  %.sink4801 = phi i32 [ -1, %51 ], [ -2, %54 ], [ -3, %56 ], [ -4, %59 ], [ -5, %62 ], [ -7, %64 ], [ -9, %66 ], [ -11, %68 ]
  store i32 %.sink4801, ptr %13, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %72
  %73 = phi i32 [ %.pr, %72 ], [ %.sink4801, %.thread.sink.split ]
  %74 = sub nsw i32 0, %73
  store i32 %74, ptr %15, align 4, !tbaa !5
  %75 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15, i32 noundef 6) #5
  br label %.loopexit3504

76:                                               ; preds = %72
  %77 = icmp eq i32 %57, 0
  br i1 %77, label %.loopexit3504, label %78

78:                                               ; preds = %76
  %79 = mul nsw i32 %48, %65
  store i32 %79, ptr %26, align 4, !tbaa !5
  br i1 %.not, label %80, label %81

80:                                               ; preds = %78
  tail call void @zlaset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %9, ptr noundef nonnull %10) #5
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %.pre4518 = load i32, ptr %4, align 4, !tbaa !5
  br label %81

81:                                               ; preds = %80, %78
  %82 = phi i32 [ %.pre4518, %80 ], [ %63, %78 ]
  %83 = phi i32 [ %.pre, %80 ], [ %57, %78 ]
  %84 = add nsw i32 %82, %83
  %85 = sdiv i32 %84, 2
  %86 = add nsw i32 %83, 1
  %87 = add nsw i32 %85, 1
  %88 = getelementptr inbounds i8, ptr %22, i64 8
  %89 = getelementptr inbounds i8, ptr %21, i64 8
  %90 = getelementptr inbounds i8, ptr %24, i64 8
  %invariant.gep = getelementptr i8, ptr %36, i64 16
  %91 = sext i32 %34 to i64
  %92 = sext i32 %37 to i64
  %93 = sext i32 %85 to i64
  %94 = sext i32 %50 to i64
  %.0319936064200 = add i32 %34, -1
  %.0319936064201 = add i32 %34, -1
  %invariant.gep4775 = getelementptr i8, ptr %36, i64 16
  %invariant.gep4777 = getelementptr i8, ptr %36, i64 16
  %invariant.gep4779 = getelementptr i8, ptr %36, i64 32
  %invariant.gep4781 = getelementptr i8, ptr %36, i64 32
  %95 = shl nsw i64 %35, 4
  %scevgep = getelementptr i8, ptr %5, i64 %95
  %96 = or disjoint i64 %95, 8
  %scevgep4903 = getelementptr i8, ptr %5, i64 %96
  %97 = shl nsw i64 %35, 4
  %scevgep4910 = getelementptr i8, ptr %5, i64 %97
  %98 = or disjoint i64 %97, 8
  %scevgep4915 = getelementptr i8, ptr %5, i64 %98
  %invariant.gep5376 = getelementptr i8, ptr %39, i64 16
  %invariant.gep5374 = getelementptr i8, ptr %36, i64 16
  br label %.outer3513

.outer3513:                                       ; preds = %.loopexit3511, %81
  %.pre4523 = phi i32 [ %.pre4523.pre, %.loopexit3511 ], [ %83, %81 ]
  %99 = phi i32 [ %1980, %.loopexit3511 ], [ %82, %81 ]
  %.03247.ph = phi i32 [ %.132483407, %.loopexit3511 ], [ %86, %81 ]
  %.03180.ph = phi i32 [ %.131813410, %.loopexit3511 ], [ undef, %81 ]
  %.03175.ph = phi i32 [ %.131763413, %.loopexit3511 ], [ undef, %81 ]
  %.03170.ph = phi i32 [ %.131713416, %.loopexit3511 ], [ undef, %81 ]
  %.03164.ph = phi i32 [ %.031643542, %.loopexit3511 ], [ 1, %81 ]
  %.not32833561 = icmp eq i32 %.03164.ph, 0
  %.pre4522 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not32833561, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.outer3513
  %100 = add i32 %.03247.ph, -1
  %101 = add nsw i32 %.03247.ph, -2
  %102 = call i32 @llvm.smin.i32(i32 %99, i32 %101)
  store i32 %102, ptr %32, align 4, !tbaa !5
  %103 = add i32 %.pre4522, %100
  %104 = call i32 @llvm.smin.i32(i32 %.pre4523, i32 %103)
  %105 = sub nsw i32 %100, %102
  %106 = load i32, ptr %30, align 4, !tbaa !5
  %107 = add nsw i32 %105, %106
  %.not3287 = icmp sgt i32 %.03247.ph, %87
  br i1 %.not3287, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph
  store i32 %.pre4523, ptr %15, align 4, !tbaa !5
  %.neg.le = sub i32 1, %.03247.ph
  %108 = mul nsw i32 %100, %37
  %109 = mul i32 %100, %34
  %.not3289.not3629.not = icmp sgt i32 %.03247.ph, %104
  br i1 %.not3277, label %1053, label %113

.lr.ph.split:                                     ; preds = %.lr.ph
  %110 = icmp eq i32 %.pre4522, 0
  store i32 %.pre4523, ptr %15, align 4, !tbaa !5
  store i32 %103, ptr %16, align 4, !tbaa !5
  br i1 %110, label %.loopexit3515, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.split, %.outer3513
  %.03180.lcssa = phi i32 [ %.03180.ph, %.outer3513 ], [ %85, %.lr.ph.split ]
  %.03175.lcssa = phi i32 [ %.03175.ph, %.outer3513 ], [ %104, %.lr.ph.split ]
  %.03170.lcssa = phi i32 [ %.03170.ph, %.outer3513 ], [ %107, %.lr.ph.split ]
  %111 = add nsw i32 %.pre4522, %.03247.ph
  %.not3284 = icmp slt i32 %111, %.pre4523
  br i1 %.not3284, label %112, label %.loopexit3515

112:                                              ; preds = %._crit_edge
  br i1 %.not3277, label %1382, label %452

113:                                              ; preds = %.lr.ph.split.us
  %114 = add i32 %108, %50
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %115
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = add i32 %106, %109
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !9
  %122 = fdiv double %121, %117
  %123 = fdiv double %122, %117
  store double %123, ptr %19, align 8, !tbaa !12
  store double %123, ptr %120, align 8, !tbaa !9
  %124 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %119, i32 1
  store double 0.000000e+00, ptr %124, align 8, !tbaa !13
  br i1 %.not3289.not3629.not, label %156, label %.lr.ph3579

.lr.ph3579:                                       ; preds = %113
  %125 = add i32 %106, %100
  %126 = sext i32 %100 to i64
  %127 = insertelement <2 x double> poison, double %117, i64 0
  %128 = shufflevector <2 x double> %127, <2 x double> poison, <2 x i32> zeroinitializer
  %129 = add i32 %104, %.03247.ph
  %130 = and i32 %129, 1
  %lcmp.mod.not.not = icmp eq i32 %130, 0
  br i1 %lcmp.mod.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph3579
  %indvars.iv.next.prol = add nsw i64 %126, 1
  %131 = mul nsw i64 %indvars.iv.next.prol, %91
  %132 = add i32 %106, -1
  %133 = sext i32 %132 to i64
  %134 = add nsw i64 %131, %133
  %135 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %134
  %136 = load <2 x double>, ptr %135, align 8, !tbaa !12
  %137 = fdiv <2 x double> %136, %128
  store <2 x double> %137, ptr %135, align 8, !tbaa !12
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph3579
  %.lcssa5239.unr = phi i64 [ poison, %.lr.ph3579 ], [ %134, %.prol.loopexit.unr-lcssa ]
  %.lcssa5238.unr = phi <2 x double> [ poison, %.lr.ph3579 ], [ %137, %.prol.loopexit.unr-lcssa ]
  %indvars.iv.unr = phi i64 [ %126, %.lr.ph3579 ], [ %indvars.iv.next.prol, %.prol.loopexit.unr-lcssa ]
  %138 = icmp eq i32 %104, %.03247.ph
  br i1 %138, label %._crit_edge3580, label %.lr.ph3579.new

.lr.ph3579.new:                                   ; preds = %.prol.loopexit, %.lr.ph3579.new
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph3579.new ], [ %indvars.iv.unr, %.prol.loopexit ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %139 = trunc nsw i64 %indvars.iv to i32
  %.03223.neg = xor i32 %139, -1
  %140 = mul nsw i64 %indvars.iv.next, %91
  %141 = add i32 %125, %.03223.neg
  %142 = sext i32 %141 to i64
  %143 = getelementptr %struct.doublecomplex, ptr %36, i64 %140
  %144 = getelementptr %struct.doublecomplex, ptr %143, i64 %142
  %145 = load <2 x double>, ptr %144, align 8, !tbaa !12
  %146 = fdiv <2 x double> %145, %128
  store <2 x double> %146, ptr %144, align 8, !tbaa !12
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %147 = trunc nsw i64 %indvars.iv.next to i32
  %.03223.neg.1 = xor i32 %147, -1
  %148 = mul nsw i64 %indvars.iv.next.1, %91
  %149 = add i32 %125, %.03223.neg.1
  %150 = sext i32 %149 to i64
  %151 = add nsw i64 %148, %150
  %152 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %151
  %153 = load <2 x double>, ptr %152, align 8, !tbaa !12
  %154 = fdiv <2 x double> %153, %128
  store <2 x double> %154, ptr %152, align 8, !tbaa !12
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next.1 to i32
  %exitcond.not.1 = icmp eq i32 %104, %lftr.wideiv.1
  br i1 %exitcond.not.1, label %._crit_edge3580, label %.lr.ph3579.new, !llvm.loop !14

._crit_edge3580:                                  ; preds = %.lr.ph3579.new, %.prol.loopexit
  %.lcssa5239 = phi i64 [ %.lcssa5239.unr, %.prol.loopexit ], [ %151, %.lr.ph3579.new ]
  %.lcssa5238 = phi <2 x double> [ %.lcssa5238.unr, %.prol.loopexit ], [ %154, %.lr.ph3579.new ]
  %155 = trunc i64 %.lcssa5239 to i32
  store i32 %155, ptr %17, align 4, !tbaa !5
  store <2 x double> %.lcssa5238, ptr %20, align 16, !tbaa !12
  br label %156

156:                                              ; preds = %._crit_edge3580, %113
  store i32 1, ptr %15, align 4, !tbaa !5
  %157 = sub nsw i32 %100, %.pre4522
  store i32 %157, ptr %16, align 4, !tbaa !5
  %158 = call i32 @llvm.smax.i32(i32 %157, i32 1)
  %.not33123585 = icmp sgt i32 %158, %101
  br i1 %.not33123585, label %222, label %.lr.ph3588

.lr.ph3588:                                       ; preds = %156
  %159 = add i32 %118, %.neg.le
  %160 = zext nneg i32 %158 to i64
  %wide.trip.count = zext i32 %100 to i64
  %161 = sub nsw i64 %wide.trip.count, %160
  %min.iters.check4922 = icmp ult i64 %161, 4
  br i1 %min.iters.check4922, label %scalar.ph4921.preheader, label %vector.scevcheck4909

vector.scevcheck4909:                             ; preds = %.lr.ph3588
  %162 = xor i64 %160, -1
  %163 = add nsw i64 %162, %wide.trip.count
  %164 = add i32 %106, 1
  %165 = add i32 %164, %158
  %166 = add i32 %165, %109
  %167 = sub i32 %166, %.03247.ph
  %168 = trunc i64 %163 to i32
  %169 = add i32 %167, %168
  %170 = icmp slt i32 %169, %167
  %171 = icmp ugt i64 %163, 4294967295
  %172 = or i1 %170, %171
  %173 = sext i32 %167 to i64
  %174 = shl nsw i64 %173, 4
  %scevgep4911 = getelementptr i8, ptr %scevgep4910, i64 %174
  %mul.result4913 = shl nsw i64 %163, 4
  %175 = getelementptr i8, ptr %scevgep4911, i64 %mul.result4913
  %176 = icmp ult ptr %175, %scevgep4911
  %scevgep4916 = getelementptr i8, ptr %scevgep4915, i64 %174
  %mul.result4918 = shl nsw i64 %163, 4
  %177 = getelementptr i8, ptr %scevgep4916, i64 %mul.result4918
  %178 = icmp ult ptr %177, %scevgep4916
  %179 = or i1 %176, %172
  %180 = or i1 %178, %179
  br i1 %180, label %scalar.ph4921.preheader, label %vector.ph4923

vector.ph4923:                                    ; preds = %vector.scevcheck4909
  %n.vec4925 = and i64 %161, -2
  %ind.end4926 = add nsw i64 %n.vec4925, %160
  %broadcast.splatinsert4934 = insertelement <2 x double> poison, double %117, i64 0
  %broadcast.splat4935 = shufflevector <2 x double> %broadcast.splatinsert4934, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4928

vector.body4928:                                  ; preds = %vector.body4928, %vector.ph4923
  %index4929 = phi i64 [ 0, %vector.ph4923 ], [ %index.next4937, %vector.body4928 ]
  %181 = trunc i64 %index4929 to i32
  %182 = add i32 %158, %181
  %183 = add i32 %159, %182
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %184
  %wide.vec4931 = load <4 x double>, ptr %185, align 8, !tbaa !12
  %strided.vec4932 = shufflevector <4 x double> %wide.vec4931, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec4933 = shufflevector <4 x double> %wide.vec4931, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %186 = fdiv <2 x double> %strided.vec4932, %broadcast.splat4935
  %187 = fdiv <2 x double> %strided.vec4933, %broadcast.splat4935
  %188 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %184
  %interleaved.vec4936 = shufflevector <2 x double> %186, <2 x double> %187, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec4936, ptr %188, align 8, !tbaa !12
  %index.next4937 = add nuw i64 %index4929, 2
  %189 = icmp eq i64 %index.next4937, %n.vec4925
  br i1 %189, label %middle.block4920, label %vector.body4928, !llvm.loop !16

middle.block4920:                                 ; preds = %vector.body4928
  %190 = add i32 %182, 1
  %191 = add i32 %159, %190
  %cmp.n4938 = icmp eq i64 %161, %n.vec4925
  %192 = shufflevector <2 x double> %186, <2 x double> %187, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n4938, label %._crit_edge3589, label %scalar.ph4921.preheader

scalar.ph4921.preheader:                          ; preds = %middle.block4920, %vector.scevcheck4909, %.lr.ph3588
  %indvars.iv4313.ph = phi i64 [ %160, %vector.scevcheck4909 ], [ %160, %.lr.ph3588 ], [ %ind.end4926, %middle.block4920 ]
  %193 = sub nsw i64 %wide.trip.count, %indvars.iv4313.ph
  %xtraiter5273 = and i64 %193, 1
  %lcmp.mod5274.not = icmp eq i64 %xtraiter5273, 0
  br i1 %lcmp.mod5274.not, label %scalar.ph4921.prol.loopexit, label %scalar.ph4921.prol

scalar.ph4921.prol:                               ; preds = %scalar.ph4921.preheader
  %194 = trunc nuw nsw i64 %indvars.iv4313.ph to i32
  %195 = add i32 %159, %194
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %196
  %198 = load <2 x double>, ptr %197, align 8, !tbaa !12
  %199 = insertelement <2 x double> poison, double %117, i64 0
  %200 = shufflevector <2 x double> %199, <2 x double> poison, <2 x i32> zeroinitializer
  %201 = fdiv <2 x double> %198, %200
  store <2 x double> %201, ptr %197, align 8, !tbaa !12
  %indvars.iv.next4314.prol = add nuw nsw i64 %indvars.iv4313.ph, 1
  br label %scalar.ph4921.prol.loopexit

scalar.ph4921.prol.loopexit:                      ; preds = %scalar.ph4921.prol, %scalar.ph4921.preheader
  %.lcssa5244.unr = phi i32 [ poison, %scalar.ph4921.preheader ], [ %195, %scalar.ph4921.prol ]
  %.lcssa5243.unr = phi <2 x double> [ poison, %scalar.ph4921.preheader ], [ %201, %scalar.ph4921.prol ]
  %indvars.iv4313.unr = phi i64 [ %indvars.iv4313.ph, %scalar.ph4921.preheader ], [ %indvars.iv.next4314.prol, %scalar.ph4921.prol ]
  %202 = add nsw i64 %wide.trip.count, -1
  %203 = icmp eq i64 %indvars.iv4313.ph, %202
  br i1 %203, label %._crit_edge3589, label %scalar.ph4921.preheader.new

scalar.ph4921.preheader.new:                      ; preds = %scalar.ph4921.prol.loopexit
  %204 = insertelement <2 x double> poison, double %117, i64 0
  %205 = shufflevector <2 x double> %204, <2 x double> poison, <2 x i32> zeroinitializer
  %206 = insertelement <2 x double> poison, double %117, i64 0
  %207 = shufflevector <2 x double> %206, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph4921

scalar.ph4921:                                    ; preds = %scalar.ph4921, %scalar.ph4921.preheader.new
  %indvars.iv4313 = phi i64 [ %indvars.iv4313.unr, %scalar.ph4921.preheader.new ], [ %indvars.iv.next4314.1, %scalar.ph4921 ]
  %208 = trunc nuw nsw i64 %indvars.iv4313 to i32
  %209 = add i32 %159, %208
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %210
  %212 = load <2 x double>, ptr %211, align 8, !tbaa !12
  %213 = fdiv <2 x double> %212, %205
  store <2 x double> %213, ptr %211, align 8, !tbaa !12
  %214 = trunc i64 %indvars.iv4313 to i32
  %215 = add i32 %214, 1
  %216 = add i32 %159, %215
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %217
  %219 = load <2 x double>, ptr %218, align 8, !tbaa !12
  %220 = fdiv <2 x double> %219, %207
  store <2 x double> %220, ptr %218, align 8, !tbaa !12
  %indvars.iv.next4314.1 = add nuw nsw i64 %indvars.iv4313, 2
  %exitcond4316.not.1 = icmp eq i64 %indvars.iv.next4314.1, %wide.trip.count
  br i1 %exitcond4316.not.1, label %._crit_edge3589, label %scalar.ph4921, !llvm.loop !19

._crit_edge3589:                                  ; preds = %scalar.ph4921.prol.loopexit, %scalar.ph4921, %middle.block4920
  %.lcssa4860 = phi i32 [ %191, %middle.block4920 ], [ %.lcssa5244.unr, %scalar.ph4921.prol.loopexit ], [ %216, %scalar.ph4921 ]
  %221 = phi <2 x double> [ %192, %middle.block4920 ], [ %.lcssa5243.unr, %scalar.ph4921.prol.loopexit ], [ %220, %scalar.ph4921 ]
  store i32 %.lcssa4860, ptr %15, align 4, !tbaa !5
  store i32 %.lcssa4860, ptr %16, align 4, !tbaa !5
  store <2 x double> %221, ptr %20, align 16, !tbaa !12
  br label %222

222:                                              ; preds = %._crit_edge3589, %156
  store i32 %101, ptr %17, align 4, !tbaa !5
  %.not33133605 = icmp sgt i32 %105, %101
  br i1 %.not33133605, label %._crit_edge3610, label %.lr.ph3609

.lr.ph3609:                                       ; preds = %222
  %223 = add i32 %.neg.le, %50
  %224 = add i32 %223, %108
  %225 = add i32 %109, %.neg.le
  %226 = sext i32 %105 to i64
  br label %227

227:                                              ; preds = %.lr.ph3609, %._crit_edge3603
  %indvars.iv4320 = phi i64 [ %226, %.lr.ph3609 ], [ %indvars.iv.next4321, %._crit_edge3603 ]
  %228 = trunc nsw i64 %indvars.iv4320 to i32
  store i32 %228, ptr %15, align 4, !tbaa !5
  %229 = load i32, ptr %32, align 4, !tbaa !5
  %230 = sub nsw i32 %100, %229
  %231 = sext i32 %230 to i64
  %.not33313594 = icmp slt i64 %indvars.iv4320, %231
  br i1 %.not33313594, label %._crit_edge3598, label %.lr.ph3597

.lr.ph3597:                                       ; preds = %227
  %232 = mul i32 %.0319936064200, %228
  %233 = trunc i64 %indvars.iv4320 to i32
  %234 = sub i32 %233, %100
  %235 = add i32 %234, %109
  %236 = add i32 %114, %234
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %237
  br label %239

239:                                              ; preds = %.lr.ph3597, %239
  %indvars.iv4317 = phi i64 [ %231, %.lr.ph3597 ], [ %indvars.iv.next4318, %239 ]
  %240 = load i32, ptr %30, align 4, !tbaa !5
  %241 = trunc nsw i64 %indvars.iv4317 to i32
  %242 = add i32 %232, %241
  %243 = add i32 %242, %240
  store i32 %243, ptr %16, align 4, !tbaa !5
  store i32 %243, ptr %18, align 4, !tbaa !5
  %244 = trunc i64 %indvars.iv4317 to i32
  %245 = sub i32 %244, %100
  %246 = add i32 %114, %245
  %247 = add i32 %235, %240
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %248
  %250 = call { double, double } @Cd(ptr noundef %249)
  %251 = extractvalue { double, double } %250, 0
  %252 = extractvalue { double, double } %250, 1
  %253 = fneg double %252
  %254 = call ptr @_pCd(ptr noundef nonnull %23)
  %255 = getelementptr inbounds i8, ptr %254, i64 8
  store double %251, ptr %254, align 8
  store double %253, ptr %255, align 8
  %256 = sext i32 %246 to i64
  %257 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %256
  %258 = load double, ptr %257, align 8, !tbaa !9
  %259 = getelementptr inbounds i8, ptr %257, i64 8
  %260 = load double, ptr %259, align 8, !tbaa !13
  %261 = fneg double %260
  %262 = load <2 x double>, ptr %23, align 16, !tbaa !12
  %263 = insertelement <2 x double> poison, double %260, i64 0
  %264 = insertelement <2 x double> %263, double %261, i64 1
  %265 = fmul <2 x double> %262, %264
  %266 = shufflevector <2 x double> %265, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %267 = insertelement <2 x double> poison, double %258, i64 0
  %268 = shufflevector <2 x double> %267, <2 x double> poison, <2 x i32> zeroinitializer
  %269 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %268, <2 x double> %262, <2 x double> %266)
  store <2 x double> %269, ptr %22, align 16, !tbaa !12
  %270 = load i32, ptr %18, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %271
  %273 = load <2 x double>, ptr %272, align 8, !tbaa !12
  %274 = fsub <2 x double> %273, %269
  store <2 x double> %274, ptr %21, align 16, !tbaa !12
  %275 = call { double, double } @Cd(ptr noundef %238)
  %276 = extractvalue { double, double } %275, 0
  %277 = extractvalue { double, double } %275, 1
  %278 = fneg double %277
  %279 = call ptr @_pCd(ptr noundef nonnull %24)
  %280 = getelementptr inbounds i8, ptr %279, i64 8
  store double %276, ptr %279, align 8
  store double %278, ptr %280, align 8
  %281 = load i32, ptr %30, align 4, !tbaa !5
  %282 = add i32 %281, %109
  %283 = add i32 %282, %245
  %284 = load <2 x double>, ptr %24, align 16
  %285 = sext i32 %283 to i64
  %286 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %285
  %287 = load double, ptr %90, align 8, !tbaa !13
  %288 = fneg double %287
  %289 = sext i32 %282 to i64
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !9
  store double %291, ptr %19, align 8, !tbaa !12
  %292 = load double, ptr %257, align 8, !tbaa !9
  %293 = fmul double %291, %292
  %294 = load double, ptr %259, align 8, !tbaa !13
  %295 = fmul double %291, %294
  %296 = fneg double %295
  %297 = load <2 x double>, ptr %286, align 8, !tbaa !12
  %298 = insertelement <2 x double> poison, double %287, i64 0
  %299 = insertelement <2 x double> %298, double %288, i64 1
  %300 = fmul <2 x double> %297, %299
  %301 = shufflevector <2 x double> %300, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %302 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> zeroinitializer
  %303 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %302, <2 x double> %297, <2 x double> %301)
  %304 = load <2 x double>, ptr %21, align 16, !tbaa !12
  %305 = fsub <2 x double> %304, %303
  %306 = call { double, double } @Cd(ptr noundef %238)
  %307 = extractvalue { double, double } %306, 0
  %308 = extractvalue { double, double } %306, 1
  %309 = fneg double %308
  %310 = call ptr @_pCd(ptr noundef nonnull %25)
  %311 = getelementptr inbounds i8, ptr %310, i64 8
  store double %307, ptr %310, align 8
  store double %309, ptr %311, align 8
  %312 = load <2 x double>, ptr %25, align 16, !tbaa !12
  %313 = insertelement <2 x double> poison, double %295, i64 0
  %314 = insertelement <2 x double> %313, double %296, i64 1
  %315 = fmul <2 x double> %312, %314
  %316 = shufflevector <2 x double> %315, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %317 = insertelement <2 x double> poison, double %293, i64 0
  %318 = shufflevector <2 x double> %317, <2 x double> poison, <2 x i32> zeroinitializer
  %319 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %318, <2 x double> %312, <2 x double> %316)
  %320 = fadd <2 x double> %305, %319
  store <2 x double> %320, ptr %20, align 16, !tbaa !12
  %321 = load i32, ptr %16, align 4, !tbaa !5
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %322
  store <2 x double> %320, ptr %323, align 8, !tbaa !12
  %indvars.iv.next4318 = add nsw i64 %indvars.iv4317, 1
  %324 = load i32, ptr %15, align 4, !tbaa !5
  %325 = sext i32 %324 to i64
  %.not3331.not = icmp slt i64 %indvars.iv4317, %325
  br i1 %.not3331.not, label %239, label %._crit_edge3598.loopexit, !llvm.loop !20

._crit_edge3598.loopexit:                         ; preds = %239
  %.pre4519 = load i32, ptr %32, align 4, !tbaa !5
  br label %._crit_edge3598

._crit_edge3598:                                  ; preds = %._crit_edge3598.loopexit, %227
  %326 = phi i32 [ %.pre4519, %._crit_edge3598.loopexit ], [ %229, %227 ]
  store i32 1, ptr %15, align 4, !tbaa !5
  %327 = load i32, ptr %3, align 4, !tbaa !5
  %328 = sub nsw i32 %100, %327
  store i32 %328, ptr %16, align 4, !tbaa !5
  %329 = xor i32 %326, -1
  %330 = add i32 %100, %329
  store i32 %330, ptr %18, align 4, !tbaa !5
  %331 = call i32 @llvm.smax.i32(i32 %328, i32 1)
  %.not33333599 = icmp sgt i32 %331, %330
  br i1 %.not33333599, label %._crit_edge3603, label %.lr.ph3602

.lr.ph3602:                                       ; preds = %._crit_edge3598
  %332 = mul i32 %.0319936064201, %228
  %333 = add i32 %224, %228
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %334
  %.pre4520 = load i32, ptr %30, align 4, !tbaa !5
  br label %336

336:                                              ; preds = %.lr.ph3602, %336
  %337 = phi i32 [ %.pre4520, %.lr.ph3602 ], [ %346, %336 ]
  %.332263600 = phi i32 [ %331, %.lr.ph3602 ], [ %369, %336 ]
  %338 = add i32 %332, %.332263600
  %339 = add i32 %338, %337
  store i32 %339, ptr %15, align 4, !tbaa !5
  store i32 %339, ptr %16, align 4, !tbaa !5
  %340 = call { double, double } @Cd(ptr noundef %335)
  %341 = extractvalue { double, double } %340, 0
  %342 = extractvalue { double, double } %340, 1
  %343 = fneg double %342
  %344 = call ptr @_pCd(ptr noundef nonnull %21)
  %345 = getelementptr inbounds i8, ptr %344, i64 8
  store double %341, ptr %344, align 8
  store double %343, ptr %345, align 8
  %346 = load i32, ptr %30, align 4, !tbaa !5
  %347 = add i32 %225, %.332263600
  %348 = add i32 %347, %346
  %349 = load <2 x double>, ptr %21, align 16
  %350 = sext i32 %348 to i64
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %350
  %352 = load double, ptr %89, align 8, !tbaa !13
  %353 = fneg double %352
  %354 = load i32, ptr %16, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %355
  %357 = load <2 x double>, ptr %351, align 8, !tbaa !12
  %358 = insertelement <2 x double> poison, double %352, i64 0
  %359 = insertelement <2 x double> %358, double %353, i64 1
  %360 = fmul <2 x double> %357, %359
  %361 = shufflevector <2 x double> %360, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %362 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> zeroinitializer
  %363 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %362, <2 x double> %357, <2 x double> %361)
  %364 = load <2 x double>, ptr %356, align 8, !tbaa !12
  %365 = fsub <2 x double> %364, %363
  store <2 x double> %365, ptr %20, align 16, !tbaa !12
  %366 = load i32, ptr %15, align 4, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %367
  store <2 x double> %365, ptr %368, align 8, !tbaa !12
  %369 = add nuw nsw i32 %.332263600, 1
  %370 = load i32, ptr %18, align 4, !tbaa !5
  %.not3333.not = icmp slt i32 %.332263600, %370
  br i1 %.not3333.not, label %336, label %._crit_edge3603, !llvm.loop !21

._crit_edge3603:                                  ; preds = %336, %._crit_edge3598
  %indvars.iv.next4321 = add nsw i64 %indvars.iv4320, 1
  %371 = load i32, ptr %17, align 4, !tbaa !5
  %372 = sext i32 %371 to i64
  %.not3313.not = icmp slt i64 %indvars.iv4320, %372
  br i1 %.not3313.not, label %227, label %._crit_edge3610, !llvm.loop !22

._crit_edge3610:                                  ; preds = %._crit_edge3603, %222
  %.not33143621 = icmp sgt i32 %100, %104
  br i1 %.not33143621, label %421, label %.lr.ph3625

.lr.ph3625:                                       ; preds = %._crit_edge3610
  %373 = load i32, ptr %3, align 4, !tbaa !5
  %374 = load i32, ptr %32, align 4, !tbaa !5
  %375 = sub nsw i32 %100, %374
  %376 = load i32, ptr %30, align 4
  %377 = add i32 %.neg.le, %50
  %378 = add i32 %377, %108
  %379 = sub i32 %100, %373
  %380 = sext i32 %101 to i64
  %381 = zext i32 %100 to i64
  %382 = add i32 %104, 1
  br label %383

383:                                              ; preds = %.lr.ph3625, %419
  %indvars.iv4327 = phi i64 [ %381, %.lr.ph3625 ], [ %indvars.iv.next4328, %419 ]
  %indvars.iv4323 = phi i32 [ %379, %.lr.ph3625 ], [ %indvars.iv.next4324, %419 ]
  %.43227.neg3623 = phi i32 [ %.neg.le, %.lr.ph3625 ], [ %.43227.neg, %419 ]
  %384 = trunc i64 %indvars.iv4327 to i32
  %385 = sub i32 %384, %373
  %386 = call i32 @llvm.smax.i32(i32 %385, i32 %375)
  %.not33303611 = icmp sgt i32 %386, %101
  br i1 %.not33303611, label %419, label %.lr.ph3614

.lr.ph3614:                                       ; preds = %383
  %387 = call i32 @llvm.smax.i32(i32 %indvars.iv4323, i32 %375)
  %smax = sext i32 %387 to i64
  %388 = trunc i64 %indvars.iv4327 to i32
  %389 = mul i32 %34, %388
  %390 = add i32 %389, %.43227.neg3623
  %391 = add i32 %.43227.neg3623, %100
  %392 = add i32 %391, %389
  %393 = add i32 %392, %376
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %394
  br label %396

396:                                              ; preds = %.lr.ph3614, %396
  %indvars.iv4325 = phi i64 [ %smax, %.lr.ph3614 ], [ %indvars.iv.next4326, %396 ]
  %397 = trunc nsw i64 %indvars.iv4325 to i32
  %398 = add i32 %390, %397
  %399 = add i32 %398, %376
  %400 = add i32 %378, %397
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %401
  %403 = load double, ptr %402, align 8, !tbaa !9
  %404 = getelementptr inbounds i8, ptr %402, i64 8
  %405 = load double, ptr %404, align 8, !tbaa !13
  %406 = fneg double %405
  %407 = sext i32 %399 to i64
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %407
  %409 = load <2 x double>, ptr %395, align 8, !tbaa !12
  %410 = insertelement <2 x double> poison, double %405, i64 0
  %411 = insertelement <2 x double> %410, double %406, i64 1
  %412 = fmul <2 x double> %409, %411
  %413 = shufflevector <2 x double> %412, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %414 = insertelement <2 x double> poison, double %403, i64 0
  %415 = shufflevector <2 x double> %414, <2 x double> poison, <2 x i32> zeroinitializer
  %416 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %415, <2 x double> %409, <2 x double> %413)
  %417 = load <2 x double>, ptr %408, align 8, !tbaa !12
  %418 = fsub <2 x double> %417, %416
  store <2 x double> %418, ptr %408, align 8, !tbaa !12
  %indvars.iv.next4326 = add nsw i64 %indvars.iv4325, 1
  %.not3330.not = icmp slt i64 %indvars.iv4325, %380
  br i1 %.not3330.not, label %396, label %._crit_edge3615, !llvm.loop !23

._crit_edge3615:                                  ; preds = %396
  store <2 x double> %418, ptr %20, align 16, !tbaa !12
  br label %419

419:                                              ; preds = %._crit_edge3615, %383
  %.lcssa36173628 = phi i32 [ %399, %._crit_edge3615 ], [ %375, %383 ]
  %.lcssa36163627 = phi i32 [ %399, %._crit_edge3615 ], [ %385, %383 ]
  %indvars.iv.next4328 = add i64 %indvars.iv4327, 1
  %420 = trunc i64 %indvars.iv4327 to i32
  %.43227.neg = xor i32 %420, -1
  %indvars.iv.next4324 = add i32 %indvars.iv4323, 1
  %lftr.wideiv4330 = trunc i64 %indvars.iv.next4328 to i32
  %exitcond4331.not = icmp eq i32 %382, %lftr.wideiv4330
  br i1 %exitcond4331.not, label %._crit_edge3626, label %383, !llvm.loop !24

._crit_edge3626:                                  ; preds = %419
  store i32 %.lcssa36163627, ptr %18, align 4, !tbaa !5
  store i32 %.lcssa36173628, ptr %15, align 4, !tbaa !5
  store i32 %101, ptr %16, align 4, !tbaa !5
  br label %421

421:                                              ; preds = %._crit_edge3626, %._crit_edge3610
  br i1 %.not, label %422, label %443

422:                                              ; preds = %421
  %423 = load i32, ptr %2, align 4, !tbaa !5
  %424 = sub nsw i32 %423, %85
  store i32 %424, ptr %17, align 4, !tbaa !5
  %425 = fdiv double 1.000000e+00, %117
  store double %425, ptr %19, align 8, !tbaa !12
  %426 = mul nsw i32 %100, %40
  %427 = add nsw i32 %426, %87
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %428
  call void @zdscal_(ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef %429, ptr noundef nonnull @c__1) #5
  %430 = load i32, ptr %32, align 4, !tbaa !5
  %431 = icmp sgt i32 %430, 0
  br i1 %431, label %432, label %443

432:                                              ; preds = %422
  %433 = load i32, ptr %2, align 4, !tbaa !5
  %434 = sub nsw i32 %433, %85
  store i32 %434, ptr %17, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %20, align 16, !tbaa !12
  %435 = sub i32 %114, %430
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %436
  %438 = sub nsw i32 %100, %430
  %439 = mul nsw i32 %438, %40
  %440 = add nsw i32 %439, %87
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %441
  call void @zgerc_(ptr noundef nonnull %17, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %429, ptr noundef nonnull @c__1, ptr noundef %437, ptr noundef nonnull @c__1, ptr noundef %442, ptr noundef nonnull %10) #5
  br label %443

443:                                              ; preds = %422, %432, %421
  %444 = sub i32 %100, %104
  %445 = load i32, ptr %30, align 4, !tbaa !5
  %446 = mul nsw i32 %104, %34
  %447 = add i32 %444, %446
  %448 = add i32 %447, %445
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %449
  %451 = load <2 x double>, ptr %450, align 8, !tbaa !12
  store <2 x double> %451, ptr %31, align 16, !tbaa !12
  %.pre4572 = load i32, ptr %4, align 4, !tbaa !5
  br label %452

452:                                              ; preds = %112, %443
  %453 = phi i32 [ %.pre4572, %443 ], [ %99, %112 ]
  %.031643543 = phi i32 [ %.03164.ph, %443 ], [ 0, %112 ]
  %.not32833539 = phi i1 [ false, %443 ], [ true, %112 ]
  %.1324834063430 = phi i32 [ %100, %443 ], [ %111, %112 ]
  %.1318134093428 = phi i32 [ %101, %443 ], [ %.03180.lcssa, %112 ]
  %.1317634123426 = phi i32 [ %104, %443 ], [ %.03175.lcssa, %112 ]
  %.1317134153424 = phi i32 [ %107, %443 ], [ %.03170.lcssa, %112 ]
  %454 = add nsw i32 %453, -1
  store i32 %454, ptr %17, align 4, !tbaa !5
  %.not33153707 = icmp slt i32 %453, 2
  br i1 %.not33153707, label %._crit_edge3712, label %.lr.ph3711

.lr.ph3711:                                       ; preds = %452
  %455 = mul nsw i32 %.1324834063430, %37
  %456 = add i32 %.1324834063430, 1
  %457 = sext i32 %.1324834063430 to i64
  %458 = sext i32 %455 to i64
  %459 = sext i32 %.1318134093428 to i64
  %invariant.gep5372 = getelementptr %struct.doublecomplex, ptr %39, i64 %458
  br label %460

460:                                              ; preds = %.lr.ph3711, %.loopexit3510
  %indvars.iv4364 = phi i64 [ 1, %.lr.ph3711 ], [ %indvars.iv.next4365, %.loopexit3510 ]
  %.23201.neg3709 = phi i32 [ -1, %.lr.ph3711 ], [ %555, %.loopexit3510 ]
  %.pre4574 = load i32, ptr %2, align 4, !tbaa !5
  %.pre4575 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not32833539, label %548, label %461

461:                                              ; preds = %460
  %462 = sub nsw i64 %457, %indvars.iv4364
  %463 = trunc nsw i64 %462 to i32
  %464 = add nsw i32 %.pre4575, %463
  %465 = icmp slt i32 %464, %.pre4574
  %466 = icmp sgt i64 %462, 1
  %or.cond3391 = and i1 %466, %465
  br i1 %or.cond3391, label %467, label %548

467:                                              ; preds = %461
  %468 = mul nsw i32 %464, %34
  %469 = sext i32 %468 to i64
  %gep4776 = getelementptr %struct.doublecomplex, ptr %invariant.gep4775, i64 %indvars.iv4364
  %470 = getelementptr %struct.doublecomplex, ptr %gep4776, i64 %469
  %471 = sub nsw i32 %464, %85
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds double, ptr %44, i64 %472
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %472
  call void @zlartg_(ptr noundef %470, ptr noundef nonnull %31, ptr noundef nonnull %473, ptr noundef nonnull %474, ptr noundef nonnull %27) #5
  %475 = sub nsw i64 %94, %indvars.iv4364
  %gep5373 = getelementptr %struct.doublecomplex, ptr %invariant.gep5372, i64 %475
  %476 = load double, ptr %gep5373, align 8, !tbaa !9
  %477 = fneg double %476
  %478 = getelementptr inbounds i8, ptr %gep5373, i64 8
  %479 = load double, ptr %478, align 8, !tbaa !13
  %480 = fneg double %479
  store i32 %463, ptr %16, align 4, !tbaa !5
  %481 = load i32, ptr %3, align 4, !tbaa !5
  %482 = sub i32 %463, %85
  %483 = add i32 %482, %481
  store i32 %483, ptr %18, align 4, !tbaa !5
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %44, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !12
  %487 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %484
  %488 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %489 = insertelement <2 x double> poison, double %480, i64 0
  %490 = insertelement <2 x double> %489, double %479, i64 1
  %491 = fmul <2 x double> %488, %490
  %492 = shufflevector <2 x double> %491, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %493 = insertelement <2 x double> poison, double %477, i64 0
  %494 = shufflevector <2 x double> %493, <2 x double> poison, <2 x i32> zeroinitializer
  %495 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %494, <2 x double> %488, <2 x double> %492)
  store <2 x double> %495, ptr %20, align 16, !tbaa !12
  %496 = call { double, double } @Cd(ptr noundef nonnull %487)
  %497 = extractvalue { double, double } %496, 0
  %498 = extractvalue { double, double } %496, 1
  %499 = fneg double %498
  %500 = call ptr @_pCd(ptr noundef nonnull %22)
  %501 = getelementptr inbounds i8, ptr %500, i64 8
  store double %497, ptr %500, align 8
  store double %499, ptr %501, align 8
  %502 = load i32, ptr %3, align 4, !tbaa !5
  %503 = add nsw i32 %502, %463
  %504 = mul nsw i32 %503, %34
  %505 = add nsw i32 %504, 1
  %506 = load <2 x double>, ptr %22, align 16
  %507 = sext i32 %505 to i64
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %507
  %509 = load double, ptr %88, align 8, !tbaa !13
  %510 = fneg double %509
  %511 = load i32, ptr %16, align 4, !tbaa !5
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %512
  %514 = insertelement <2 x double> poison, double %486, i64 0
  %515 = shufflevector <2 x double> %514, <2 x double> poison, <2 x i32> zeroinitializer
  %516 = fmul <2 x double> %495, %515
  %517 = load <2 x double>, ptr %508, align 8, !tbaa !12
  %518 = insertelement <2 x double> poison, double %509, i64 0
  %519 = insertelement <2 x double> %518, double %510, i64 1
  %520 = fmul <2 x double> %517, %519
  %521 = shufflevector <2 x double> %520, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %522 = shufflevector <2 x double> %506, <2 x double> poison, <2 x i32> zeroinitializer
  %523 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %522, <2 x double> %517, <2 x double> %521)
  %524 = fsub <2 x double> %516, %523
  store <2 x double> %524, ptr %513, align 8, !tbaa !12
  store i32 %505, ptr %16, align 4, !tbaa !5
  %525 = sub nsw i32 %503, %85
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %526
  %528 = load double, ptr %527, align 8, !tbaa !9
  %529 = getelementptr inbounds i8, ptr %527, i64 8
  %530 = load double, ptr %529, align 8, !tbaa !13
  %531 = fneg double %530
  %532 = insertelement <2 x double> poison, double %530, i64 0
  %533 = insertelement <2 x double> %532, double %531, i64 1
  %534 = fmul <2 x double> %495, %533
  %535 = shufflevector <2 x double> %534, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %536 = insertelement <2 x double> poison, double %528, i64 0
  %537 = shufflevector <2 x double> %536, <2 x double> poison, <2 x i32> zeroinitializer
  %538 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %537, <2 x double> %495, <2 x double> %535)
  store i32 %525, ptr %15, align 4, !tbaa !5
  %539 = getelementptr inbounds double, ptr %44, i64 %526
  %540 = load double, ptr %539, align 8, !tbaa !12
  %541 = sext i32 %504 to i64
  %gep5375 = getelementptr %struct.doublecomplex, ptr %invariant.gep5374, i64 %541
  %542 = load <2 x double>, ptr %gep5375, align 8, !tbaa !12
  %543 = insertelement <2 x double> poison, double %540, i64 0
  %544 = shufflevector <2 x double> %543, <2 x double> poison, <2 x i32> zeroinitializer
  %545 = fmul <2 x double> %544, %542
  store <2 x double> %545, ptr %21, align 16, !tbaa !12
  %546 = fadd <2 x double> %538, %545
  store <2 x double> %546, ptr %20, align 16, !tbaa !12
  store <2 x double> %546, ptr %508, align 8, !tbaa !12
  %547 = load <2 x double>, ptr %27, align 16, !tbaa !12
  store <2 x double> %547, ptr %31, align 16, !tbaa !12
  %.pre4573 = load i32, ptr %2, align 4, !tbaa !5
  br label %548

548:                                              ; preds = %461, %467, %460
  %549 = phi i32 [ %.pre4575, %461 ], [ %502, %467 ], [ %.pre4575, %460 ]
  %550 = phi i32 [ %.pre4574, %461 ], [ %.pre4573, %467 ], [ %.pre4574, %460 ]
  %551 = sub nsw i64 %indvars.iv4364, %459
  %552 = trunc i64 %551 to i32
  %553 = add i32 %552, 2
  %554 = trunc i64 %indvars.iv4364 to i32
  %555 = xor i32 %554, -1
  %556 = add i32 %.1324834063430, %555
  %557 = icmp slt i64 %551, 0
  %558 = select i1 %557, i32 1, i32 %553
  %559 = load i32, ptr %30, align 4, !tbaa !5
  %560 = mul nsw i32 %559, %558
  %561 = add nsw i32 %556, %560
  %562 = sub i32 %550, %561
  %563 = add nsw i32 %562, %549
  %564 = sdiv i32 %563, %559
  store i32 %564, ptr %28, align 4, !tbaa !5
  %565 = add nsw i32 %564, -1
  %566 = mul nsw i32 %565, %559
  %567 = add nsw i32 %566, %561
  br i1 %.not32833539, label %573, label %568

568:                                              ; preds = %548
  %569 = shl i32 %549, 1
  %570 = add i32 %456, %.23201.neg3709
  %571 = add i32 %570, %569
  %572 = call i32 @llvm.smax.i32(i32 %561, i32 %571)
  br label %573

573:                                              ; preds = %548, %568
  %.0 = phi i32 [ %572, %568 ], [ %561, %548 ]
  %574 = add i32 %549, %550
  %575 = sub i32 %574, %.0
  %576 = sdiv i32 %575, %559
  store i32 %576, ptr %33, align 4, !tbaa !5
  store i32 %567, ptr %16, align 4, !tbaa !5
  store i32 %559, ptr %18, align 4, !tbaa !5
  %577 = icmp slt i32 %559, 0
  %578 = icmp sge i32 %.0, %567
  %579 = icmp sle i32 %.0, %567
  %.in33253682 = select i1 %577, i1 %578, i1 %579
  br i1 %.in33253682, label %.lr.ph3685.preheader, label %610

.lr.ph3685.preheader:                             ; preds = %573
  %580 = sext i32 %.0 to i64
  %581 = sext i32 %559 to i64
  %582 = sext i32 %567 to i64
  br label %.lr.ph3685

.lr.ph3685:                                       ; preds = %.lr.ph3685.preheader, %.lr.ph3685
  %indvars.iv4361 = phi i64 [ %580, %.lr.ph3685.preheader ], [ %indvars.iv.next4362, %.lr.ph3685 ]
  %583 = sub nsw i64 %indvars.iv4361, %93
  %584 = add nsw i64 %indvars.iv4361, 1
  %585 = mul nsw i64 %584, %91
  %586 = add nsw i64 %585, 1
  %587 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %583
  %588 = load double, ptr %587, align 8, !tbaa !9
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %586
  %590 = getelementptr inbounds i8, ptr %587, i64 8
  %591 = load double, ptr %590, align 8, !tbaa !13
  %592 = fneg double %591
  %593 = load <2 x double>, ptr %589, align 8, !tbaa !12
  %594 = insertelement <2 x double> poison, double %591, i64 0
  %595 = insertelement <2 x double> %594, double %592, i64 1
  %596 = fmul <2 x double> %593, %595
  %597 = shufflevector <2 x double> %596, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %598 = insertelement <2 x double> poison, double %588, i64 0
  %599 = shufflevector <2 x double> %598, <2 x double> poison, <2 x i32> zeroinitializer
  %600 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %599, <2 x double> %593, <2 x double> %597)
  store <2 x double> %600, ptr %587, align 8, !tbaa !12
  %601 = getelementptr inbounds double, ptr %44, i64 %583
  %602 = load double, ptr %601, align 8, !tbaa !12
  %603 = load <2 x double>, ptr %589, align 8, !tbaa !12
  %604 = insertelement <2 x double> poison, double %602, i64 0
  %605 = shufflevector <2 x double> %604, <2 x double> poison, <2 x i32> zeroinitializer
  %606 = fmul <2 x double> %605, %603
  store <2 x double> %606, ptr %589, align 8, !tbaa !12
  %indvars.iv.next4362 = add nsw i64 %indvars.iv4361, %581
  %607 = icmp sge i64 %indvars.iv.next4362, %582
  %608 = icmp sle i64 %indvars.iv.next4362, %582
  %.in3325 = select i1 %577, i1 %607, i1 %608
  br i1 %.in3325, label %.lr.ph3685, label %._crit_edge3686, !llvm.loop !25

._crit_edge3686:                                  ; preds = %.lr.ph3685
  %609 = trunc nsw i64 %586 to i32
  store i32 %609, ptr %15, align 4, !tbaa !5
  store <2 x double> %606, ptr %20, align 16, !tbaa !12
  br label %610

610:                                              ; preds = %._crit_edge3686, %573
  %611 = icmp sgt i32 %576, 0
  br i1 %611, label %612, label %619

612:                                              ; preds = %610
  %613 = mul nsw i32 %.0, %34
  %614 = sext i32 %613 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %614
  %615 = sub nsw i32 %.0, %85
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %616
  %618 = getelementptr inbounds double, ptr %44, i64 %616
  call void @zlargv_(ptr noundef nonnull %33, ptr noundef %gep, ptr noundef nonnull %26, ptr noundef nonnull %617, ptr noundef nonnull %30, ptr noundef nonnull %618, ptr noundef nonnull %30) #5
  %.pre4576 = load i32, ptr %28, align 4, !tbaa !5
  %.pre4579.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %619

619:                                              ; preds = %612, %610
  %.pre4579 = phi i32 [ %.pre4579.pre, %612 ], [ %549, %610 ]
  %620 = phi i32 [ %.pre4576, %612 ], [ %564, %610 ]
  %621 = icmp sgt i32 %620, 0
  br i1 %621, label %622, label %652

622:                                              ; preds = %619
  %623 = add nsw i32 %.pre4579, -1
  store i32 %623, ptr %18, align 4, !tbaa !5
  %.not33263690 = icmp slt i32 %.pre4579, 2
  %.pre4626 = mul nsw i32 %561, %34
  %.pre4628 = add nsw i32 %561, 1
  %.pre4630 = mul nsw i32 %.pre4628, %34
  %.pre4632 = sub nsw i32 %561, %85
  %.pre4634 = sext i32 %.pre4632 to i64
  br i1 %.not33263690, label %._crit_edge3695, label %.lr.ph3694

.lr.ph3694:                                       ; preds = %622
  %624 = getelementptr inbounds double, ptr %44, i64 %.pre4634
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4634
  br label %626

626:                                              ; preds = %.lr.ph3694, %626
  %.03185.neg3692 = phi i32 [ -1, %.lr.ph3694 ], [ %.03185.neg, %626 ]
  %.031853691 = phi i32 [ 1, %.lr.ph3694 ], [ %637, %626 ]
  %627 = load i32, ptr %30, align 4, !tbaa !5
  %628 = add i32 %.03185.neg3692, %.pre4626
  %629 = add i32 %628, %627
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %630
  %632 = load i32, ptr %3, align 4, !tbaa !5
  %633 = add i32 %.03185.neg3692, %.pre4630
  %634 = add i32 %633, %632
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %635
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %631, ptr noundef nonnull %26, ptr noundef %636, ptr noundef nonnull %26, ptr noundef nonnull %624, ptr noundef nonnull %625, ptr noundef nonnull %30) #5
  %637 = add nuw nsw i32 %.031853691, 1
  %.03185.neg = xor i32 %.031853691, -1
  %638 = load i32, ptr %18, align 4, !tbaa !5
  %.not3326.not = icmp slt i32 %.031853691, %638
  br i1 %.not3326.not, label %626, label %._crit_edge3695.loopexit, !llvm.loop !26

._crit_edge3695.loopexit:                         ; preds = %626
  %.pre4577 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge3695

._crit_edge3695:                                  ; preds = %622, %._crit_edge3695.loopexit
  %639 = phi i32 [ %.pre4577, %._crit_edge3695.loopexit ], [ %.pre4579, %622 ]
  %640 = load i32, ptr %30, align 4, !tbaa !5
  %641 = add nsw i32 %640, %.pre4626
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %642
  %644 = add nsw i32 %640, %.pre4630
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %645
  %647 = add nsw i32 %639, %.pre4630
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %648
  %650 = getelementptr inbounds double, ptr %44, i64 %.pre4634
  %651 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4634
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %643, ptr noundef %646, ptr noundef %649, ptr noundef nonnull %26, ptr noundef nonnull %650, ptr noundef nonnull %651, ptr noundef nonnull %30) #5
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %651, ptr noundef nonnull %30) #5
  %.pre4578 = load i32, ptr %3, align 4, !tbaa !5
  br label %652

652:                                              ; preds = %._crit_edge3695, %619
  %653 = phi i32 [ %.pre4578, %._crit_edge3695 ], [ %.pre4579, %619 ]
  %654 = load i32, ptr %4, align 4, !tbaa !5
  %655 = add nsw i32 %.23201.neg3709, 1
  %656 = add i32 %655, %654
  store i32 %656, ptr %18, align 4, !tbaa !5
  %.not3327.not3697 = icmp sgt i32 %653, %656
  br i1 %.not3327.not3697, label %.lr.ph3701, label %._crit_edge3702

.lr.ph3701:                                       ; preds = %652
  %657 = sub nsw i32 %561, %85
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %44, i64 %658
  %660 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %658
  br label %661

661:                                              ; preds = %.lr.ph3701, %679
  %662 = phi i32 [ %656, %.lr.ph3701 ], [ %680, %679 ]
  %.13186.in3698 = phi i32 [ %653, %.lr.ph3701 ], [ %.131863699, %679 ]
  %.131863699 = add nsw i32 %.13186.in3698, -1
  %663 = load i32, ptr %2, align 4, !tbaa !5
  %664 = sub i32 %.131863699, %561
  %665 = add i32 %664, %663
  %666 = load i32, ptr %30, align 4, !tbaa !5
  %667 = sdiv i32 %665, %666
  store i32 %667, ptr %33, align 4, !tbaa !5
  %668 = icmp sgt i32 %667, 0
  br i1 %668, label %669, label %679

669:                                              ; preds = %661
  %reass.sub4216 = sub i32 %561, %.13186.in3698
  %670 = add i32 %reass.sub4216, 1
  %671 = add i32 %670, %666
  %672 = mul nsw i32 %671, %34
  %673 = add nsw i32 %672, %.131863699
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %674
  %676 = add nsw i32 %672, %.13186.in3698
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %677
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %675, ptr noundef nonnull %26, ptr noundef %678, ptr noundef nonnull %26, ptr noundef nonnull %659, ptr noundef nonnull %660, ptr noundef nonnull %30) #5
  %.pre4580 = load i32, ptr %18, align 4, !tbaa !5
  br label %679

679:                                              ; preds = %661, %669
  %680 = phi i32 [ %662, %661 ], [ %.pre4580, %669 ]
  %.not3327.not = icmp sgt i32 %.131863699, %680
  br i1 %.not3327.not, label %661, label %._crit_edge3702, !llvm.loop !27

._crit_edge3702:                                  ; preds = %679, %652
  br i1 %.not, label %681, label %.loopexit3510

681:                                              ; preds = %._crit_edge3702
  store i32 %567, ptr %18, align 4, !tbaa !5
  %682 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %682, ptr %16, align 4, !tbaa !5
  %683 = icmp slt i32 %682, 0
  %684 = icmp slt i32 %566, 1
  %685 = icmp sgt i32 %566, -1
  %.in33283703 = select i1 %683, i1 %684, i1 %685
  br i1 %.in33283703, label %.lr.ph3706, label %.loopexit3510

.lr.ph3706:                                       ; preds = %681, %.lr.ph3706
  %.632293704 = phi i32 [ %708, %.lr.ph3706 ], [ %561, %681 ]
  %686 = load i32, ptr %2, align 4, !tbaa !5
  %687 = sub nsw i32 %686, %85
  store i32 %687, ptr %15, align 4, !tbaa !5
  %688 = sub nsw i32 %.632293704, %85
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %689
  %691 = call { double, double } @Cd(ptr noundef nonnull %690)
  %692 = extractvalue { double, double } %691, 0
  %693 = extractvalue { double, double } %691, 1
  %694 = fneg double %693
  %695 = call ptr @_pCd(ptr noundef nonnull %20)
  %696 = getelementptr inbounds i8, ptr %695, i64 8
  store double %692, ptr %695, align 8
  store double %694, ptr %696, align 8
  %697 = mul nsw i32 %.632293704, %40
  %698 = add nsw i32 %697, %87
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %699
  %701 = add nsw i32 %.632293704, 1
  %702 = mul nsw i32 %701, %40
  %703 = add nsw i32 %702, %87
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %704
  %706 = getelementptr inbounds double, ptr %44, i64 %689
  call void @zrot_(ptr noundef nonnull %15, ptr noundef %700, ptr noundef nonnull @c__1, ptr noundef %705, ptr noundef nonnull @c__1, ptr noundef nonnull %706, ptr noundef nonnull %20) #5
  %707 = load i32, ptr %16, align 4, !tbaa !5
  %708 = add nsw i32 %707, %.632293704
  %709 = icmp slt i32 %707, 0
  %710 = load i32, ptr %18, align 4
  %711 = icmp sge i32 %708, %710
  %712 = icmp sle i32 %708, %710
  %.in3328 = select i1 %709, i1 %711, i1 %712
  br i1 %.in3328, label %.lr.ph3706, label %.loopexit3510, !llvm.loop !28

.loopexit3510:                                    ; preds = %.lr.ph3706, %681, %._crit_edge3702
  %indvars.iv.next4365 = add nuw nsw i64 %indvars.iv4364, 1
  %713 = load i32, ptr %17, align 4, !tbaa !5
  %714 = sext i32 %713 to i64
  %.not3315.not = icmp slt i64 %indvars.iv4364, %714
  br i1 %.not3315.not, label %460, label %._crit_edge3712, !llvm.loop !29

._crit_edge3712:                                  ; preds = %.loopexit3510, %452
  br i1 %.not32833539, label %742, label %715

715:                                              ; preds = %._crit_edge3712
  %716 = load i32, ptr %2, align 4, !tbaa !5
  %717 = icmp sle i32 %.1317134153424, %716
  %718 = load i32, ptr %32, align 4
  %719 = icmp sgt i32 %718, 0
  %or.cond = select i1 %717, i1 %719, i1 false
  br i1 %or.cond, label %720, label %742

720:                                              ; preds = %715
  %721 = sub nsw i32 %.1324834063430, %718
  store i32 %721, ptr %17, align 4, !tbaa !5
  %722 = sub nsw i32 %50, %718
  %723 = mul nsw i32 %.1324834063430, %37
  %724 = add nsw i32 %722, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !9
  %728 = fneg double %727
  %729 = getelementptr inbounds i8, ptr %726, i64 8
  %730 = load double, ptr %729, align 8, !tbaa !13
  %731 = fneg double %730
  %732 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %733 = insertelement <2 x double> poison, double %731, i64 0
  %734 = insertelement <2 x double> %733, double %730, i64 1
  %735 = fmul <2 x double> %732, %734
  %736 = shufflevector <2 x double> %735, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %737 = insertelement <2 x double> poison, double %728, i64 0
  %738 = shufflevector <2 x double> %737, <2 x double> poison, <2 x i32> zeroinitializer
  %739 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %738, <2 x double> %732, <2 x double> %736)
  store <2 x double> %739, ptr %20, align 16, !tbaa !12
  %740 = sext i32 %721 to i64
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %740
  store <2 x double> %739, ptr %741, align 8, !tbaa !12
  br label %742

742:                                              ; preds = %715, %720, %._crit_edge3712
  %743 = load i32, ptr %4, align 4, !tbaa !5
  %744 = icmp sgt i32 %743, 0
  br i1 %744, label %.lr.ph3734.preheader, label %._crit_edge3759.thread

.lr.ph3734.preheader:                             ; preds = %742
  %745 = sub nsw i32 0, %743
  %746 = zext nneg i32 %743 to i64
  %747 = sext i32 %.1318134093428 to i64
  %748 = sext i32 %.1324834063430 to i64
  %. = select i1 %.not32833539, i64 1, i64 2
  %.4816 = select i1 %.not32833539, i32 1, i32 2
  br label %.lr.ph3734

.lr.ph3734:                                       ; preds = %.lr.ph3734.preheader, %858
  %indvars.iv4376 = phi i64 [ %746, %.lr.ph3734.preheader ], [ %indvars.iv.next4377, %858 ]
  %indvars.iv4368 = phi i32 [ %745, %.lr.ph3734.preheader ], [ %indvars.iv.next4369, %858 ]
  %indvars4378 = trunc i64 %indvars.iv4376 to i32
  %749 = sub nsw i64 %indvars.iv4376, %747
  %750 = trunc i64 %749 to i32
  %751 = add i32 %750, 1
  %752 = xor i32 %indvars4378, -1
  %753 = add i32 %.1324834063430, %752
  %754 = load i32, ptr %30, align 4, !tbaa !5
  %755 = icmp slt i64 %749, %.
  %756 = select i1 %755, i32 %.4816, i32 %751
  %757 = mul nsw i32 %754, %756
  %758 = add nsw i32 %753, %757
  store i32 %.4816, ptr %17, align 4
  store i32 %751, ptr %16, align 4
  %759 = load i32, ptr %4, align 4, !tbaa !5
  %760 = icmp sgt i32 %759, %indvars4378
  br i1 %760, label %.lr.ph3716, label %._crit_edge3717

.lr.ph3716:                                       ; preds = %.lr.ph3734
  %761 = add i32 %758, 1
  %762 = add i32 %759, %indvars.iv4368
  %763 = sext i32 %762 to i64
  br label %764

764:                                              ; preds = %.lr.ph3716, %785
  %indvars.iv4370 = phi i64 [ %763, %.lr.ph3716 ], [ %indvars.iv.next4371, %785 ]
  %765 = load i32, ptr %2, align 4, !tbaa !5
  %766 = load i32, ptr %3, align 4, !tbaa !5
  %767 = trunc nsw i64 %indvars.iv4370 to i32
  %768 = sub i32 %767, %758
  %769 = add i32 %768, %765
  %770 = add i32 %769, %766
  %771 = load i32, ptr %30, align 4, !tbaa !5
  %772 = sdiv i32 %770, %771
  store i32 %772, ptr %33, align 4, !tbaa !5
  %773 = icmp sgt i32 %772, 0
  br i1 %773, label %774, label %785

774:                                              ; preds = %764
  %775 = sub i32 %761, %767
  %776 = mul nsw i32 %775, %34
  %777 = sext i32 %776 to i64
  %778 = getelementptr %struct.doublecomplex, ptr %36, i64 %indvars.iv4370
  %779 = getelementptr %struct.doublecomplex, ptr %778, i64 %777
  %gep4778 = getelementptr %struct.doublecomplex, ptr %invariant.gep4777, i64 %indvars.iv4370
  %780 = getelementptr %struct.doublecomplex, ptr %gep4778, i64 %777
  %781 = sub nsw i32 %758, %766
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %44, i64 %782
  %784 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %782
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %779, ptr noundef nonnull %26, ptr noundef %780, ptr noundef nonnull %26, ptr noundef nonnull %783, ptr noundef nonnull %784, ptr noundef nonnull %30) #5
  br label %785

785:                                              ; preds = %764, %774
  %indvars.iv.next4371 = add nsw i64 %indvars.iv4370, -1
  %786 = icmp sgt i64 %indvars.iv4370, 1
  br i1 %786, label %764, label %._crit_edge3717.loopexit, !llvm.loop !30

._crit_edge3717.loopexit:                         ; preds = %785
  %.pre4581 = load i32, ptr %30, align 4, !tbaa !5
  br label %._crit_edge3717

._crit_edge3717:                                  ; preds = %._crit_edge3717.loopexit, %.lr.ph3734
  %787 = phi i32 [ %.pre4581, %._crit_edge3717.loopexit ], [ %754, %.lr.ph3734 ]
  %788 = load i32, ptr %2, align 4, !tbaa !5
  %789 = sub i32 %788, %758
  %790 = load i32, ptr %3, align 4, !tbaa !5
  %791 = add nsw i32 %789, %790
  %792 = sdiv i32 %791, %787
  store i32 %792, ptr %28, align 4, !tbaa !5
  %793 = add nsw i32 %792, -1
  %794 = mul nsw i32 %793, %787
  %795 = add nsw i32 %794, %758
  %796 = icmp sgt i32 %787, 0
  %797 = icmp sgt i32 %794, -1
  %798 = icmp slt i32 %794, 1
  %.in33213718 = select i1 %796, i1 %797, i1 %798
  br i1 %.in33213718, label %.lr.ph3721, label %811

.lr.ph3721:                                       ; preds = %._crit_edge3717, %.lr.ph3721
  %.732303719 = phi i32 [ %808, %.lr.ph3721 ], [ %795, %._crit_edge3717 ]
  %799 = sub nsw i32 %.732303719, %790
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %800
  %802 = sext i32 %.732303719 to i64
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %802
  %804 = load <2 x double>, ptr %801, align 8, !tbaa !12
  store <2 x double> %804, ptr %803, align 8, !tbaa !12
  %805 = getelementptr inbounds double, ptr %44, i64 %800
  %806 = load double, ptr %805, align 8, !tbaa !12
  %807 = getelementptr inbounds double, ptr %44, i64 %802
  store double %806, ptr %807, align 8, !tbaa !12
  %808 = sub i32 %.732303719, %787
  %809 = icmp sge i32 %808, %758
  %810 = icmp sle i32 %808, %758
  %.in3321 = select i1 %796, i1 %809, i1 %810
  br i1 %.in3321, label %.lr.ph3721, label %._crit_edge3722, !llvm.loop !31

._crit_edge3722:                                  ; preds = %.lr.ph3721
  store i32 %.732303719, ptr %18, align 4, !tbaa !5
  store i32 %799, ptr %15, align 4, !tbaa !5
  br label %811

811:                                              ; preds = %._crit_edge3722, %._crit_edge3717
  store i32 %795, ptr %16, align 4, !tbaa !5
  store i32 %787, ptr %17, align 4, !tbaa !5
  %812 = icmp slt i32 %787, 0
  %.in33223724 = select i1 %812, i1 %798, i1 %797
  br i1 %.in33223724, label %.lr.ph3727.preheader, label %843

.lr.ph3727.preheader:                             ; preds = %811
  %813 = sext i32 %758 to i64
  %814 = sext i32 %787 to i64
  %815 = sext i32 %795 to i64
  br label %.lr.ph3727

.lr.ph3727:                                       ; preds = %.lr.ph3727.preheader, %.lr.ph3727
  %indvars.iv4373 = phi i64 [ %813, %.lr.ph3727.preheader ], [ %indvars.iv.next4374, %.lr.ph3727 ]
  %816 = add nsw i64 %indvars.iv4373, 1
  %817 = mul nsw i64 %816, %91
  %818 = add nsw i64 %817, 1
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4373
  %820 = load double, ptr %819, align 8, !tbaa !9
  %821 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %818
  %822 = getelementptr inbounds i8, ptr %819, i64 8
  %823 = load double, ptr %822, align 8, !tbaa !13
  %824 = fneg double %823
  %825 = load <2 x double>, ptr %821, align 8, !tbaa !12
  %826 = insertelement <2 x double> poison, double %823, i64 0
  %827 = insertelement <2 x double> %826, double %824, i64 1
  %828 = fmul <2 x double> %825, %827
  %829 = shufflevector <2 x double> %828, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %830 = insertelement <2 x double> poison, double %820, i64 0
  %831 = shufflevector <2 x double> %830, <2 x double> poison, <2 x i32> zeroinitializer
  %832 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %831, <2 x double> %825, <2 x double> %829)
  store <2 x double> %832, ptr %819, align 8, !tbaa !12
  %833 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4373
  %834 = load double, ptr %833, align 8, !tbaa !12
  %835 = load <2 x double>, ptr %821, align 8, !tbaa !12
  %836 = insertelement <2 x double> poison, double %834, i64 0
  %837 = shufflevector <2 x double> %836, <2 x double> poison, <2 x i32> zeroinitializer
  %838 = fmul <2 x double> %837, %835
  store <2 x double> %838, ptr %821, align 8, !tbaa !12
  %indvars.iv.next4374 = add nsw i64 %indvars.iv4373, %814
  %839 = icmp sge i64 %indvars.iv.next4374, %815
  %840 = icmp sle i64 %indvars.iv.next4374, %815
  %.in3322 = select i1 %812, i1 %839, i1 %840
  br i1 %.in3322, label %.lr.ph3727, label %._crit_edge3728, !llvm.loop !32

._crit_edge3728:                                  ; preds = %.lr.ph3727
  %841 = trunc nsw i64 %indvars.iv4373 to i32
  %842 = trunc nsw i64 %818 to i32
  store i32 %842, ptr %18, align 4, !tbaa !5
  store i32 %841, ptr %15, align 4, !tbaa !5
  store <2 x double> %838, ptr %20, align 16, !tbaa !12
  br label %843

843:                                              ; preds = %._crit_edge3728, %811
  br i1 %.not32833539, label %858, label %844

844:                                              ; preds = %843
  %845 = sub nsw i64 %748, %indvars.iv4376
  %846 = sub nsw i32 %788, %790
  %847 = sext i32 %846 to i64
  %848 = icmp sge i64 %845, %847
  %849 = load i32, ptr %32, align 4
  %850 = sext i32 %849 to i64
  %.not3323 = icmp sgt i64 %indvars.iv4376, %850
  %or.cond3392 = select i1 %848, i1 true, i1 %.not3323
  br i1 %or.cond3392, label %858, label %851

851:                                              ; preds = %844
  %852 = trunc nsw i64 %845 to i32
  %853 = add nsw i32 %790, %852
  store i32 %853, ptr %17, align 4, !tbaa !5
  store i32 %852, ptr %16, align 4, !tbaa !5
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %845
  %855 = sext i32 %853 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %855
  %857 = load <2 x double>, ptr %854, align 8, !tbaa !12
  store <2 x double> %857, ptr %856, align 8, !tbaa !12
  br label %858

858:                                              ; preds = %843, %851, %844
  %indvars.iv.next4377 = add nsw i64 %indvars.iv4376, -1
  %859 = icmp sgt i64 %indvars.iv4376, 1
  %indvars.iv.next4369 = add i32 %indvars.iv4368, 1
  br i1 %859, label %.lr.ph3734, label %._crit_edge3735, !llvm.loop !33

._crit_edge3735:                                  ; preds = %858
  %.pre4582 = load i32, ptr %4, align 4, !tbaa !5
  %860 = icmp sgt i32 %.pre4582, 0
  br i1 %860, label %.lr.ph3758, label %._crit_edge3759.thread

.lr.ph3758:                                       ; preds = %._crit_edge3735, %.loopexit3509
  %.432033756 = phi i32 [ %968, %.loopexit3509 ], [ %.pre4582, %._crit_edge3735 ]
  store i32 1, ptr %17, align 4, !tbaa !5
  %861 = sub nsw i32 %.432033756, %.1318134093428
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr %16, align 4, !tbaa !5
  %863 = xor i32 %.432033756, -1
  %864 = add i32 %.1324834063430, %863
  %865 = icmp slt i32 %861, 1
  %866 = select i1 %865, i32 1, i32 %862
  %867 = load i32, ptr %30, align 4, !tbaa !5
  %868 = mul nsw i32 %867, %866
  %869 = add nsw i32 %864, %868
  %870 = load i32, ptr %2, align 4, !tbaa !5
  %871 = sub i32 %870, %869
  %872 = load i32, ptr %3, align 4, !tbaa !5
  %873 = add nsw i32 %871, %872
  %874 = sdiv i32 %873, %867
  store i32 %874, ptr %28, align 4, !tbaa !5
  %875 = add nsw i32 %874, -1
  %876 = mul nsw i32 %875, %867
  %877 = add nsw i32 %876, %869
  %878 = icmp sgt i32 %874, 0
  br i1 %878, label %879, label %910

879:                                              ; preds = %.lr.ph3758
  %880 = mul nsw i32 %869, %34
  %881 = sext i32 %880 to i64
  %gep3755 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %881
  %882 = sext i32 %869 to i64
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %882
  %884 = getelementptr inbounds double, ptr %44, i64 %882
  call void @zlargv_(ptr noundef nonnull %28, ptr noundef %gep3755, ptr noundef nonnull %26, ptr noundef nonnull %883, ptr noundef nonnull %30, ptr noundef nonnull %884, ptr noundef nonnull %30) #5
  %885 = load i32, ptr %3, align 4, !tbaa !5
  %886 = add nsw i32 %885, -1
  store i32 %886, ptr %17, align 4, !tbaa !5
  %.not33183737 = icmp slt i32 %885, 2
  %.pre4622 = add nsw i32 %869, 1
  %.pre4624 = mul nsw i32 %.pre4622, %34
  br i1 %.not33183737, label %._crit_edge3742, label %.lr.ph3741

.lr.ph3741:                                       ; preds = %879, %.lr.ph3741
  %.33188.neg3739 = phi i32 [ %.33188.neg, %.lr.ph3741 ], [ -1, %879 ]
  %.331883738 = phi i32 [ %897, %.lr.ph3741 ], [ 1, %879 ]
  %887 = load i32, ptr %30, align 4, !tbaa !5
  %888 = add i32 %.33188.neg3739, %880
  %889 = add i32 %888, %887
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %890
  %892 = load i32, ptr %3, align 4, !tbaa !5
  %893 = add i32 %.33188.neg3739, %.pre4624
  %894 = add i32 %893, %892
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %895
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %891, ptr noundef nonnull %26, ptr noundef %896, ptr noundef nonnull %26, ptr noundef nonnull %884, ptr noundef nonnull %883, ptr noundef nonnull %30) #5
  %897 = add nuw nsw i32 %.331883738, 1
  %.33188.neg = xor i32 %.331883738, -1
  %898 = load i32, ptr %17, align 4, !tbaa !5
  %.not3318.not = icmp slt i32 %.331883738, %898
  br i1 %.not3318.not, label %.lr.ph3741, label %._crit_edge3742.loopexit, !llvm.loop !34

._crit_edge3742.loopexit:                         ; preds = %.lr.ph3741
  %.pre4583 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge3742

._crit_edge3742:                                  ; preds = %879, %._crit_edge3742.loopexit
  %899 = phi i32 [ %.pre4583, %._crit_edge3742.loopexit ], [ %885, %879 ]
  %900 = load i32, ptr %30, align 4, !tbaa !5
  %901 = add nsw i32 %900, %880
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %902
  %904 = add nsw i32 %900, %.pre4624
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %905
  %907 = add nsw i32 %899, %.pre4624
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %908
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %903, ptr noundef %906, ptr noundef %909, ptr noundef nonnull %26, ptr noundef nonnull %884, ptr noundef nonnull %883, ptr noundef nonnull %30) #5
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %883, ptr noundef nonnull %30) #5
  %.pre4584 = load i32, ptr %3, align 4, !tbaa !5
  br label %910

910:                                              ; preds = %._crit_edge3742, %.lr.ph3758
  %911 = phi i32 [ %.pre4584, %._crit_edge3742 ], [ %872, %.lr.ph3758 ]
  %912 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub4217 = sub i32 %912, %.432033756
  %913 = add i32 %reass.sub4217, 1
  store i32 %913, ptr %17, align 4, !tbaa !5
  %.not3319.not3744 = icmp sgt i32 %911, %913
  br i1 %.not3319.not3744, label %.lr.ph3748, label %._crit_edge3749

.lr.ph3748:                                       ; preds = %910
  %914 = sext i32 %869 to i64
  %915 = getelementptr inbounds double, ptr %44, i64 %914
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %914
  br label %917

917:                                              ; preds = %.lr.ph3748, %935
  %918 = phi i32 [ %913, %.lr.ph3748 ], [ %936, %935 ]
  %.43189.in3745 = phi i32 [ %911, %.lr.ph3748 ], [ %.431893746, %935 ]
  %.431893746 = add nsw i32 %.43189.in3745, -1
  %919 = load i32, ptr %2, align 4, !tbaa !5
  %920 = sub i32 %.431893746, %869
  %921 = add i32 %920, %919
  %922 = load i32, ptr %30, align 4, !tbaa !5
  %923 = sdiv i32 %921, %922
  store i32 %923, ptr %33, align 4, !tbaa !5
  %924 = icmp sgt i32 %923, 0
  br i1 %924, label %925, label %935

925:                                              ; preds = %917
  %reass.sub4218 = sub i32 %869, %.43189.in3745
  %926 = add i32 %reass.sub4218, 1
  %927 = add i32 %926, %922
  %928 = mul nsw i32 %927, %34
  %929 = add nsw i32 %928, %.431893746
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %930
  %932 = add nsw i32 %928, %.43189.in3745
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %933
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %931, ptr noundef nonnull %26, ptr noundef %934, ptr noundef nonnull %26, ptr noundef nonnull %915, ptr noundef nonnull %916, ptr noundef nonnull %30) #5
  %.pre4585 = load i32, ptr %17, align 4, !tbaa !5
  br label %935

935:                                              ; preds = %917, %925
  %936 = phi i32 [ %918, %917 ], [ %.pre4585, %925 ]
  %.not3319.not = icmp sgt i32 %.431893746, %936
  br i1 %.not3319.not, label %917, label %._crit_edge3749, !llvm.loop !35

._crit_edge3749:                                  ; preds = %935, %910
  br i1 %.not, label %937, label %.loopexit3509

937:                                              ; preds = %._crit_edge3749
  store i32 %877, ptr %17, align 4, !tbaa !5
  %938 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %938, ptr %16, align 4, !tbaa !5
  %939 = icmp slt i32 %938, 0
  %940 = icmp slt i32 %876, 1
  %941 = icmp sgt i32 %876, -1
  %.in33203750 = select i1 %939, i1 %940, i1 %941
  br i1 %.in33203750, label %.lr.ph3753, label %.loopexit3509

.lr.ph3753:                                       ; preds = %937, %.lr.ph3753
  %.932323751 = phi i32 [ %963, %.lr.ph3753 ], [ %869, %937 ]
  %942 = load i32, ptr %2, align 4, !tbaa !5
  %943 = sub nsw i32 %942, %85
  store i32 %943, ptr %18, align 4, !tbaa !5
  %944 = sext i32 %.932323751 to i64
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %944
  %946 = call { double, double } @Cd(ptr noundef nonnull %945)
  %947 = extractvalue { double, double } %946, 0
  %948 = extractvalue { double, double } %946, 1
  %949 = fneg double %948
  %950 = call ptr @_pCd(ptr noundef nonnull %20)
  %951 = getelementptr inbounds i8, ptr %950, i64 8
  store double %947, ptr %950, align 8
  store double %949, ptr %951, align 8
  %952 = mul nsw i32 %.932323751, %40
  %953 = add nsw i32 %952, %87
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %954
  %956 = add nsw i32 %.932323751, 1
  %957 = mul nsw i32 %956, %40
  %958 = add nsw i32 %957, %87
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %959
  %961 = getelementptr inbounds double, ptr %44, i64 %944
  call void @zrot_(ptr noundef nonnull %18, ptr noundef %955, ptr noundef nonnull @c__1, ptr noundef %960, ptr noundef nonnull @c__1, ptr noundef nonnull %961, ptr noundef nonnull %20) #5
  %962 = load i32, ptr %16, align 4, !tbaa !5
  %963 = add nsw i32 %962, %.932323751
  %964 = icmp slt i32 %962, 0
  %965 = load i32, ptr %17, align 4
  %966 = icmp sge i32 %963, %965
  %967 = icmp sle i32 %963, %965
  %.in3320 = select i1 %964, i1 %966, i1 %967
  br i1 %.in3320, label %.lr.ph3753, label %.loopexit3509, !llvm.loop !36

.loopexit3509:                                    ; preds = %.lr.ph3753, %937, %._crit_edge3749
  %968 = add nsw i32 %.432033756, -1
  %969 = icmp sgt i32 %.432033756, 1
  br i1 %969, label %.lr.ph3758, label %._crit_edge3759, !llvm.loop !37

._crit_edge3759.thread:                           ; preds = %._crit_edge3735, %742
  %.ph = phi i32 [ %.pre4582, %._crit_edge3735 ], [ %743, %742 ]
  %970 = add nsw i32 %.ph, -1
  store i32 %970, ptr %16, align 4, !tbaa !5
  br label %.loopexit3511

._crit_edge3759:                                  ; preds = %.loopexit3509
  %.pre4586 = load i32, ptr %4, align 4, !tbaa !5
  %971 = add nsw i32 %.pre4586, -1
  store i32 %971, ptr %16, align 4, !tbaa !5
  %.not33163765 = icmp slt i32 %.pre4586, 2
  br i1 %.not33163765, label %.loopexit3511, label %.lr.ph3768

.lr.ph3768:                                       ; preds = %._crit_edge3759, %._crit_edge3764
  %972 = phi i32 [ %1010, %._crit_edge3764 ], [ %971, %._crit_edge3759 ]
  %.532043766 = phi i32 [ %1011, %._crit_edge3764 ], [ 1, %._crit_edge3759 ]
  store i32 1, ptr %17, align 4, !tbaa !5
  %973 = sub nsw i32 %.532043766, %.1318134093428
  %974 = add nsw i32 %973, 2
  store i32 %974, ptr %18, align 4, !tbaa !5
  %975 = xor i32 %.532043766, -1
  %976 = add i32 %.1324834063430, %975
  %977 = icmp slt i32 %973, 0
  %978 = select i1 %977, i32 1, i32 %974
  %979 = load i32, ptr %30, align 4, !tbaa !5
  %980 = mul nsw i32 %979, %978
  %981 = add nsw i32 %976, %980
  %982 = load i32, ptr %4, align 4, !tbaa !5
  %983 = sub nsw i32 %982, %.532043766
  %984 = icmp sgt i32 %983, 0
  br i1 %984, label %.lr.ph3763, label %._crit_edge3764

.lr.ph3763:                                       ; preds = %.lr.ph3768
  %985 = sub nsw i32 %981, %85
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %44, i64 %986
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %986
  br label %989

989:                                              ; preds = %.lr.ph3763, %1007
  %.531903761 = phi i32 [ %983, %.lr.ph3763 ], [ %1008, %1007 ]
  %990 = load i32, ptr %2, align 4, !tbaa !5
  %991 = sub i32 %.531903761, %981
  %992 = add i32 %991, %990
  %993 = load i32, ptr %30, align 4, !tbaa !5
  %994 = sdiv i32 %992, %993
  store i32 %994, ptr %33, align 4, !tbaa !5
  %995 = icmp sgt i32 %994, 0
  br i1 %995, label %996, label %1007

996:                                              ; preds = %989
  %997 = sub i32 %981, %.531903761
  %998 = add i32 %997, %993
  %999 = mul nsw i32 %998, %34
  %1000 = add nsw i32 %999, %.531903761
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1001
  %1003 = add nuw nsw i32 %.531903761, 1
  %1004 = add nsw i32 %1003, %999
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1005
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %1002, ptr noundef nonnull %26, ptr noundef %1006, ptr noundef nonnull %26, ptr noundef nonnull %987, ptr noundef nonnull %988, ptr noundef nonnull %30) #5
  br label %1007

1007:                                             ; preds = %989, %996
  %1008 = add nsw i32 %.531903761, -1
  %1009 = icmp sgt i32 %.531903761, 1
  br i1 %1009, label %989, label %._crit_edge3764.loopexit, !llvm.loop !38

._crit_edge3764.loopexit:                         ; preds = %1007
  %.pre4587 = load i32, ptr %16, align 4, !tbaa !5
  br label %._crit_edge3764

._crit_edge3764:                                  ; preds = %._crit_edge3764.loopexit, %.lr.ph3768
  %1010 = phi i32 [ %.pre4587, %._crit_edge3764.loopexit ], [ %972, %.lr.ph3768 ]
  %1011 = add nuw nsw i32 %.532043766, 1
  %.not3316.not = icmp slt i32 %.532043766, %1010
  br i1 %.not3316.not, label %.lr.ph3768, label %._crit_edge3769, !llvm.loop !39

._crit_edge3769:                                  ; preds = %._crit_edge3764
  %.pre4588 = load i32, ptr %4, align 4, !tbaa !5
  %1012 = icmp sgt i32 %.pre4588, 1
  br i1 %1012, label %1013, label %.loopexit3511

1013:                                             ; preds = %._crit_edge3769
  %1014 = load i32, ptr %3, align 4, !tbaa !5
  %1015 = add nsw i32 %1014, %981
  store i32 %1015, ptr %16, align 4, !tbaa !5
  %1016 = load i32, ptr %2, align 4, !tbaa !5
  %.not3317.not3771 = icmp sgt i32 %1016, %1015
  br i1 %.not3317.not3771, label %.lr.ph3774, label %.loopexit3511

.lr.ph3774:                                       ; preds = %1013
  %1017 = add i32 %1014, %85
  %1018 = sext i32 %1016 to i64
  %1019 = sext i32 %1015 to i64
  %1020 = sub nsw i64 %1018, %1019
  %xtraiter5281 = and i64 %1020, 1
  %lcmp.mod5282.not = icmp eq i64 %xtraiter5281, 0
  br i1 %lcmp.mod5282.not, label %.prol.loopexit5280, label %.prol.loopexit5280.unr-lcssa

.prol.loopexit5280.unr-lcssa:                     ; preds = %.lr.ph3774
  %indvars.iv.next4380.prol = add nsw i64 %1018, -1
  %1021 = trunc nsw i64 %indvars.iv.next4380.prol to i32
  %1022 = sub i32 %1021, %1017
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds double, ptr %44, i64 %1023
  %1025 = load double, ptr %1024, align 8, !tbaa !12
  %1026 = sub nsw i64 %indvars.iv.next4380.prol, %93
  %1027 = getelementptr inbounds double, ptr %44, i64 %1026
  store double %1025, ptr %1027, align 8, !tbaa !12
  %1028 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1023
  %1029 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1026
  %1030 = load <2 x double>, ptr %1028, align 8, !tbaa !12
  store <2 x double> %1030, ptr %1029, align 8, !tbaa !12
  br label %.prol.loopexit5280

.prol.loopexit5280:                               ; preds = %.prol.loopexit5280.unr-lcssa, %.lr.ph3774
  %indvars.iv4379.unr = phi i64 [ %1018, %.lr.ph3774 ], [ %indvars.iv.next4380.prol, %.prol.loopexit5280.unr-lcssa ]
  %.lcssa5262.unr = phi i32 [ poison, %.lr.ph3774 ], [ %1022, %.prol.loopexit5280.unr-lcssa ]
  %.lcssa5261.unr = phi i64 [ poison, %.lr.ph3774 ], [ %1026, %.prol.loopexit5280.unr-lcssa ]
  %1031 = add nsw i64 %1018, -1
  %1032 = icmp eq i64 %1031, %1019
  br i1 %1032, label %..loopexit3512_crit_edge, label %.lr.ph3774.new

.lr.ph3774.new:                                   ; preds = %.prol.loopexit5280, %.lr.ph3774.new
  %indvars.iv4379 = phi i64 [ %indvars.iv.next4380.1, %.lr.ph3774.new ], [ %indvars.iv4379.unr, %.prol.loopexit5280 ]
  %indvars.iv.next4380 = add nsw i64 %indvars.iv4379, -1
  %1033 = trunc nsw i64 %indvars.iv.next4380 to i32
  %1034 = sub i32 %1033, %1017
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds double, ptr %44, i64 %1035
  %1037 = load double, ptr %1036, align 8, !tbaa !12
  %1038 = sub nsw i64 %indvars.iv.next4380, %93
  %1039 = getelementptr inbounds double, ptr %44, i64 %1038
  store double %1037, ptr %1039, align 8, !tbaa !12
  %1040 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1035
  %1041 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1038
  %1042 = load <2 x double>, ptr %1040, align 8, !tbaa !12
  store <2 x double> %1042, ptr %1041, align 8, !tbaa !12
  %indvars.iv.next4380.1 = add nsw i64 %indvars.iv4379, -2
  %1043 = trunc nsw i64 %indvars.iv.next4380.1 to i32
  %1044 = sub i32 %1043, %1017
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %44, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !12
  %1048 = sub nsw i64 %indvars.iv.next4380.1, %93
  %1049 = getelementptr inbounds double, ptr %44, i64 %1048
  store double %1047, ptr %1049, align 8, !tbaa !12
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1045
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1048
  %1052 = load <2 x double>, ptr %1050, align 8, !tbaa !12
  store <2 x double> %1052, ptr %1051, align 8, !tbaa !12
  %.not3317.not.1 = icmp sgt i64 %indvars.iv.next4380.1, %1019
  br i1 %.not3317.not.1, label %.lr.ph3774.new, label %..loopexit3512_crit_edge, !llvm.loop !40

1053:                                             ; preds = %.lr.ph.split.us
  %1054 = sext i32 %108 to i64
  %gep5377 = getelementptr %struct.doublecomplex, ptr %invariant.gep5376, i64 %1054
  %1055 = load double, ptr %gep5377, align 8, !tbaa !9
  %1056 = add nsw i32 %109, 1
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1057
  %1059 = load double, ptr %1058, align 8, !tbaa !9
  %1060 = fdiv double %1059, %1055
  %1061 = fdiv double %1060, %1055
  store double %1061, ptr %19, align 8, !tbaa !12
  store double %1061, ptr %1058, align 8, !tbaa !9
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1057, i32 1
  store double 0.000000e+00, ptr %1062, align 8, !tbaa !13
  br i1 %.not3289.not3629.not, label %1124, label %.lr.ph3632

.lr.ph3632:                                       ; preds = %1053
  %reass.sub = sub i32 %109, %.03247.ph
  %1063 = add i32 %reass.sub, 2
  %1064 = zext i32 %100 to i64
  %1065 = sub i32 %104, %.03247.ph
  %1066 = zext i32 %1065 to i64
  %1067 = add nuw nsw i64 %1066, 1
  %min.iters.check = icmp ult i32 %1065, 3
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph3632
  %1068 = sub i32 %104, %.03247.ph
  %1069 = add i32 %109, 2
  %1070 = add i32 %1069, %1068
  %1071 = icmp slt i32 %1070, %1069
  %1072 = sext i32 %1069 to i64
  %1073 = shl nsw i64 %1072, 4
  %scevgep4902 = getelementptr i8, ptr %scevgep, i64 %1073
  %1074 = zext i32 %1068 to i64
  %mul = shl nuw nsw i64 %1074, 4
  %1075 = getelementptr i8, ptr %scevgep4902, i64 %mul
  %1076 = icmp ult ptr %1075, %scevgep4902
  %scevgep4904 = getelementptr i8, ptr %scevgep4903, i64 %1073
  %1077 = zext i32 %1068 to i64
  %mul4905 = shl nuw nsw i64 %1077, 4
  %1078 = getelementptr i8, ptr %scevgep4904, i64 %mul4905
  %1079 = icmp ult ptr %1078, %scevgep4904
  %1080 = or i1 %1071, %1076
  %1081 = or i1 %1080, %1079
  br i1 %1081, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.scevcheck
  %n.vec = and i64 %1067, 8589934590
  %ind.end = add nuw nsw i64 %n.vec, %1064
  %broadcast.splatinsert = insertelement <2 x double> poison, double %1055, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %index, %1064
  %1082 = trunc i64 %offset.idx to i32
  %1083 = add i32 %1082, 1
  %1084 = add i32 %1063, %1083
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1085
  %wide.vec = load <4 x double>, ptr %1086, align 8, !tbaa !12
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec4908 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1087 = fdiv <2 x double> %strided.vec, %broadcast.splat
  %1088 = fdiv <2 x double> %strided.vec4908, %broadcast.splat
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1085
  %interleaved.vec = shufflevector <2 x double> %1087, <2 x double> %1088, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %1089, align 8, !tbaa !12
  %index.next = add nuw i64 %index, 2
  %1090 = icmp eq i64 %index.next, %n.vec
  br i1 %1090, label %middle.block, label %vector.body, !llvm.loop !41

middle.block:                                     ; preds = %vector.body
  %1091 = trunc i64 %offset.idx to i32
  %1092 = add i32 %1091, 2
  %1093 = add i32 %1063, %1092
  %cmp.n = icmp eq i64 %1067, %n.vec
  %1094 = shufflevector <2 x double> %1087, <2 x double> %1088, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %._crit_edge3633, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.scevcheck, %.lr.ph3632
  %indvars.iv4332.ph = phi i64 [ %1064, %vector.scevcheck ], [ %1064, %.lr.ph3632 ], [ %ind.end, %middle.block ]
  %1095 = trunc i64 %indvars.iv4332.ph to i32
  %1096 = sub i32 %104, %1095
  %.neg = add i32 %1095, 1
  %xtraiter5275 = and i32 %1096, 1
  %lcmp.mod5276.not = icmp eq i32 %xtraiter5275, 0
  br i1 %lcmp.mod5276.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %indvars.iv.next4333.prol = add nsw i64 %indvars.iv4332.ph, 1
  %1097 = trunc i64 %indvars.iv.next4333.prol to i32
  %1098 = add i32 %1063, %1097
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1099
  %1101 = load <2 x double>, ptr %1100, align 8, !tbaa !12
  %1102 = insertelement <2 x double> poison, double %1055, i64 0
  %1103 = shufflevector <2 x double> %1102, <2 x double> poison, <2 x i32> zeroinitializer
  %1104 = fdiv <2 x double> %1101, %1103
  store <2 x double> %1104, ptr %1100, align 8, !tbaa !12
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa5250.unr = phi i32 [ poison, %scalar.ph.preheader ], [ %1098, %scalar.ph.prol ]
  %.lcssa5249.unr = phi <2 x double> [ poison, %scalar.ph.preheader ], [ %1104, %scalar.ph.prol ]
  %indvars.iv4332.unr = phi i64 [ %indvars.iv4332.ph, %scalar.ph.preheader ], [ %indvars.iv.next4333.prol, %scalar.ph.prol ]
  %1105 = icmp eq i32 %104, %.neg
  br i1 %1105, label %._crit_edge3633, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %1106 = insertelement <2 x double> poison, double %1055, i64 0
  %1107 = shufflevector <2 x double> %1106, <2 x double> poison, <2 x i32> zeroinitializer
  %1108 = insertelement <2 x double> poison, double %1055, i64 0
  %1109 = shufflevector <2 x double> %1108, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv4332 = phi i64 [ %indvars.iv4332.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next4333.1, %scalar.ph ]
  %1110 = trunc i64 %indvars.iv4332 to i32
  %1111 = add i32 %1110, 1
  %1112 = add i32 %1063, %1111
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1113
  %1115 = load <2 x double>, ptr %1114, align 8, !tbaa !12
  %1116 = fdiv <2 x double> %1115, %1107
  store <2 x double> %1116, ptr %1114, align 8, !tbaa !12
  %indvars.iv.next4333.1 = add nuw nsw i64 %indvars.iv4332, 2
  %1117 = trunc i64 %indvars.iv.next4333.1 to i32
  %1118 = add i32 %1063, %1117
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1119
  %1121 = load <2 x double>, ptr %1120, align 8, !tbaa !12
  %1122 = fdiv <2 x double> %1121, %1109
  store <2 x double> %1122, ptr %1120, align 8, !tbaa !12
  %exitcond4336.not.1 = icmp eq i32 %104, %1117
  br i1 %exitcond4336.not.1, label %._crit_edge3633, label %scalar.ph, !llvm.loop !42

._crit_edge3633:                                  ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa4866 = phi i32 [ %1093, %middle.block ], [ %.lcssa5250.unr, %scalar.ph.prol.loopexit ], [ %1118, %scalar.ph ]
  %1123 = phi <2 x double> [ %1094, %middle.block ], [ %.lcssa5249.unr, %scalar.ph.prol.loopexit ], [ %1122, %scalar.ph ]
  store i32 %.lcssa4866, ptr %18, align 4, !tbaa !5
  store <2 x double> %1123, ptr %20, align 16, !tbaa !12
  br label %1124

1124:                                             ; preds = %._crit_edge3633, %1053
  store i32 1, ptr %16, align 4, !tbaa !5
  %1125 = sub nsw i32 %100, %.pre4522
  store i32 %1125, ptr %17, align 4, !tbaa !5
  %1126 = call i32 @llvm.smax.i32(i32 %1125, i32 1)
  %.not32903638 = icmp sgt i32 %1126, %101
  br i1 %.not32903638, label %1157, label %.lr.ph3641.preheader

.lr.ph3641.preheader:                             ; preds = %1124
  %1127 = zext nneg i32 %1126 to i64
  %wide.trip.count4340 = zext i32 %100 to i64
  %1128 = insertelement <2 x double> poison, double %1055, i64 0
  %1129 = shufflevector <2 x double> %1128, <2 x double> poison, <2 x i32> zeroinitializer
  %1130 = sub nsw i64 %wide.trip.count4340, %1127
  %xtraiter5277 = and i64 %1130, 1
  %lcmp.mod5278.not = icmp eq i64 %xtraiter5277, 0
  br i1 %lcmp.mod5278.not, label %.lr.ph3641.prol.loopexit, label %.lr.ph3641.prol

.lr.ph3641.prol:                                  ; preds = %.lr.ph3641.preheader
  %1131 = mul nsw i64 %1127, %91
  %1132 = sub i32 %.03247.ph, %1126
  %1133 = sext i32 %1132 to i64
  %1134 = add nsw i64 %1131, %1133
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1134
  %1136 = load <2 x double>, ptr %1135, align 8, !tbaa !12
  %1137 = fdiv <2 x double> %1136, %1129
  store <2 x double> %1137, ptr %1135, align 8, !tbaa !12
  %indvars.iv.next4338.prol = add nuw nsw i64 %1127, 1
  br label %.lr.ph3641.prol.loopexit

.lr.ph3641.prol.loopexit:                         ; preds = %.lr.ph3641.prol, %.lr.ph3641.preheader
  %.lcssa5252.unr = phi i64 [ poison, %.lr.ph3641.preheader ], [ %1134, %.lr.ph3641.prol ]
  %.lcssa5251.unr = phi <2 x double> [ poison, %.lr.ph3641.preheader ], [ %1137, %.lr.ph3641.prol ]
  %indvars.iv4337.unr = phi i64 [ %1127, %.lr.ph3641.preheader ], [ %indvars.iv.next4338.prol, %.lr.ph3641.prol ]
  %1138 = add nsw i64 %wide.trip.count4340, -1
  %1139 = icmp eq i64 %1138, %1127
  br i1 %1139, label %._crit_edge3642, label %.lr.ph3641

.lr.ph3641:                                       ; preds = %.lr.ph3641.prol.loopexit, %.lr.ph3641
  %indvars.iv4337 = phi i64 [ %indvars.iv.next4338.1, %.lr.ph3641 ], [ %indvars.iv4337.unr, %.lr.ph3641.prol.loopexit ]
  %1140 = mul nsw i64 %indvars.iv4337, %91
  %1141 = trunc nuw nsw i64 %indvars.iv4337 to i32
  %1142 = sub i32 %.03247.ph, %1141
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr %struct.doublecomplex, ptr %36, i64 %1140
  %1145 = getelementptr %struct.doublecomplex, ptr %1144, i64 %1143
  %1146 = load <2 x double>, ptr %1145, align 8, !tbaa !12
  %1147 = fdiv <2 x double> %1146, %1129
  store <2 x double> %1147, ptr %1145, align 8, !tbaa !12
  %indvars.iv.next4338 = add nuw nsw i64 %indvars.iv4337, 1
  %1148 = mul nsw i64 %indvars.iv.next4338, %91
  %1149 = trunc nuw nsw i64 %indvars.iv.next4338 to i32
  %1150 = sub i32 %.03247.ph, %1149
  %1151 = sext i32 %1150 to i64
  %1152 = add nsw i64 %1148, %1151
  %1153 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1152
  %1154 = load <2 x double>, ptr %1153, align 8, !tbaa !12
  %1155 = fdiv <2 x double> %1154, %1129
  store <2 x double> %1155, ptr %1153, align 8, !tbaa !12
  %indvars.iv.next4338.1 = add nuw nsw i64 %indvars.iv4337, 2
  %exitcond4341.not.1 = icmp eq i64 %indvars.iv.next4338.1, %wide.trip.count4340
  br i1 %exitcond4341.not.1, label %._crit_edge3642, label %.lr.ph3641, !llvm.loop !43

._crit_edge3642:                                  ; preds = %.lr.ph3641, %.lr.ph3641.prol.loopexit
  %.lcssa5252 = phi i64 [ %.lcssa5252.unr, %.lr.ph3641.prol.loopexit ], [ %1152, %.lr.ph3641 ]
  %.lcssa5251 = phi <2 x double> [ %.lcssa5251.unr, %.lr.ph3641.prol.loopexit ], [ %1155, %.lr.ph3641 ]
  %1156 = trunc i64 %.lcssa5252 to i32
  store i32 %1156, ptr %16, align 4, !tbaa !5
  store i32 %1156, ptr %17, align 4, !tbaa !5
  store <2 x double> %.lcssa5251, ptr %20, align 16, !tbaa !12
  br label %1157

1157:                                             ; preds = %._crit_edge3642, %1124
  store i32 %101, ptr %18, align 4, !tbaa !5
  %.not32913659 = icmp sgt i32 %105, %101
  br i1 %.not32913659, label %._crit_edge3663, label %.lr.ph3662.preheader

.lr.ph3662.preheader:                             ; preds = %1157
  %1158 = sext i32 %100 to i64
  %1159 = sext i32 %105 to i64
  br label %.lr.ph3662

.lr.ph3662:                                       ; preds = %.lr.ph3662.preheader, %._crit_edge3658
  %indvars.iv4348 = phi i64 [ %1159, %.lr.ph3662.preheader ], [ %indvars.iv.next4349, %._crit_edge3658 ]
  %1160 = trunc nsw i64 %indvars.iv4348 to i32
  store i32 %1160, ptr %16, align 4, !tbaa !5
  %1161 = load i32, ptr %32, align 4, !tbaa !5
  %1162 = sub nsw i32 %100, %1161
  %1163 = sext i32 %1162 to i64
  %.not33083647 = icmp slt i64 %indvars.iv4348, %1163
  br i1 %.not33083647, label %._crit_edge3651, label %.lr.ph3650

.lr.ph3650:                                       ; preds = %.lr.ph3662
  %1164 = add i32 %1160, 1
  %1165 = sub nsw i64 %1158, %indvars.iv4348
  %1166 = add nsw i64 %1165, 1
  %1167 = mul nsw i64 %indvars.iv4348, %91
  %1168 = getelementptr %struct.doublecomplex, ptr %36, i64 %1166
  %1169 = getelementptr %struct.doublecomplex, ptr %1168, i64 %1167
  %1170 = mul nsw i64 %indvars.iv4348, %92
  %1171 = getelementptr %struct.doublecomplex, ptr %39, i64 %1166
  %1172 = getelementptr %struct.doublecomplex, ptr %1171, i64 %1170
  br label %1173

1173:                                             ; preds = %.lr.ph3650, %1173
  %indvars.iv4342 = phi i64 [ %1163, %.lr.ph3650 ], [ %indvars.iv.next4343, %1173 ]
  %1174 = mul nsw i64 %indvars.iv4342, %91
  %1175 = trunc nsw i64 %indvars.iv4342 to i32
  %1176 = sub i32 %1164, %1175
  %1177 = trunc nsw i64 %1174 to i32
  %1178 = add nsw i32 %1176, %1177
  store i32 %1178, ptr %17, align 4, !tbaa !5
  store i32 %1178, ptr %15, align 4, !tbaa !5
  %1179 = sub nsw i64 %1158, %indvars.iv4342
  %1180 = add nsw i64 %1179, 1
  %1181 = mul nsw i64 %indvars.iv4342, %92
  %1182 = call { double, double } @Cd(ptr noundef %1169)
  %1183 = extractvalue { double, double } %1182, 0
  %1184 = extractvalue { double, double } %1182, 1
  %1185 = fneg double %1184
  %1186 = call ptr @_pCd(ptr noundef nonnull %23)
  %1187 = getelementptr inbounds i8, ptr %1186, i64 8
  store double %1183, ptr %1186, align 8
  store double %1185, ptr %1187, align 8
  %1188 = getelementptr %struct.doublecomplex, ptr %39, i64 %1180
  %1189 = getelementptr %struct.doublecomplex, ptr %1188, i64 %1181
  %1190 = load double, ptr %1189, align 8, !tbaa !9
  %1191 = getelementptr inbounds i8, ptr %1189, i64 8
  %1192 = load double, ptr %1191, align 8, !tbaa !13
  %1193 = fneg double %1192
  %1194 = load <2 x double>, ptr %23, align 16, !tbaa !12
  %1195 = insertelement <2 x double> poison, double %1192, i64 0
  %1196 = insertelement <2 x double> %1195, double %1193, i64 1
  %1197 = fmul <2 x double> %1194, %1196
  %1198 = shufflevector <2 x double> %1197, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1199 = insertelement <2 x double> poison, double %1190, i64 0
  %1200 = shufflevector <2 x double> %1199, <2 x double> poison, <2 x i32> zeroinitializer
  %1201 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1200, <2 x double> %1194, <2 x double> %1198)
  store <2 x double> %1201, ptr %22, align 16, !tbaa !12
  %1202 = load i32, ptr %15, align 4, !tbaa !5
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1203
  %1205 = load <2 x double>, ptr %1204, align 8, !tbaa !12
  %1206 = fsub <2 x double> %1205, %1201
  store <2 x double> %1206, ptr %21, align 16, !tbaa !12
  %1207 = call { double, double } @Cd(ptr noundef %1172)
  %1208 = extractvalue { double, double } %1207, 0
  %1209 = extractvalue { double, double } %1207, 1
  %1210 = fneg double %1209
  %1211 = call ptr @_pCd(ptr noundef nonnull %24)
  %1212 = getelementptr inbounds i8, ptr %1211, i64 8
  store double %1208, ptr %1211, align 8
  store double %1210, ptr %1212, align 8
  %1213 = load <2 x double>, ptr %24, align 16
  %1214 = getelementptr %struct.doublecomplex, ptr %36, i64 %1180
  %1215 = getelementptr %struct.doublecomplex, ptr %1214, i64 %1174
  %1216 = load double, ptr %90, align 8, !tbaa !13
  %1217 = fneg double %1216
  %1218 = load double, ptr %1058, align 8, !tbaa !9
  store double %1218, ptr %19, align 8, !tbaa !12
  %1219 = load double, ptr %1189, align 8, !tbaa !9
  %1220 = fmul double %1218, %1219
  %1221 = load double, ptr %1191, align 8, !tbaa !13
  %1222 = fmul double %1218, %1221
  %1223 = fneg double %1222
  %1224 = load <2 x double>, ptr %1215, align 8, !tbaa !12
  %1225 = insertelement <2 x double> poison, double %1216, i64 0
  %1226 = insertelement <2 x double> %1225, double %1217, i64 1
  %1227 = fmul <2 x double> %1224, %1226
  %1228 = shufflevector <2 x double> %1227, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1229 = shufflevector <2 x double> %1213, <2 x double> poison, <2 x i32> zeroinitializer
  %1230 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1229, <2 x double> %1224, <2 x double> %1228)
  %1231 = load <2 x double>, ptr %21, align 16, !tbaa !12
  %1232 = fsub <2 x double> %1231, %1230
  %1233 = call { double, double } @Cd(ptr noundef %1172)
  %1234 = extractvalue { double, double } %1233, 0
  %1235 = extractvalue { double, double } %1233, 1
  %1236 = fneg double %1235
  %1237 = call ptr @_pCd(ptr noundef nonnull %25)
  %1238 = getelementptr inbounds i8, ptr %1237, i64 8
  store double %1234, ptr %1237, align 8
  store double %1236, ptr %1238, align 8
  %1239 = load <2 x double>, ptr %25, align 16, !tbaa !12
  %1240 = insertelement <2 x double> poison, double %1222, i64 0
  %1241 = insertelement <2 x double> %1240, double %1223, i64 1
  %1242 = fmul <2 x double> %1239, %1241
  %1243 = shufflevector <2 x double> %1242, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1244 = insertelement <2 x double> poison, double %1220, i64 0
  %1245 = shufflevector <2 x double> %1244, <2 x double> poison, <2 x i32> zeroinitializer
  %1246 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1245, <2 x double> %1239, <2 x double> %1243)
  %1247 = fadd <2 x double> %1232, %1246
  store <2 x double> %1247, ptr %20, align 16, !tbaa !12
  %1248 = load i32, ptr %17, align 4, !tbaa !5
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1249
  store <2 x double> %1247, ptr %1250, align 8, !tbaa !12
  %indvars.iv.next4343 = add nsw i64 %indvars.iv4342, 1
  %1251 = load i32, ptr %16, align 4, !tbaa !5
  %1252 = sext i32 %1251 to i64
  %.not3308.not = icmp slt i64 %indvars.iv4342, %1252
  br i1 %.not3308.not, label %1173, label %._crit_edge3651.loopexit, !llvm.loop !44

._crit_edge3651.loopexit:                         ; preds = %1173
  %.pre4521 = load i32, ptr %32, align 4, !tbaa !5
  br label %._crit_edge3651

._crit_edge3651:                                  ; preds = %._crit_edge3651.loopexit, %.lr.ph3662
  %1253 = phi i32 [ %.pre4521, %._crit_edge3651.loopexit ], [ %1161, %.lr.ph3662 ]
  store i32 1, ptr %16, align 4, !tbaa !5
  %1254 = load i32, ptr %3, align 4, !tbaa !5
  %1255 = sub nsw i32 %100, %1254
  store i32 %1255, ptr %17, align 4, !tbaa !5
  %1256 = xor i32 %1253, -1
  %1257 = add i32 %100, %1256
  store i32 %1257, ptr %15, align 4, !tbaa !5
  %1258 = call i32 @llvm.smax.i32(i32 %1255, i32 1)
  %.not33103653 = icmp sgt i32 %1258, %1257
  br i1 %.not33103653, label %._crit_edge3658, label %.lr.ph3657

.lr.ph3657:                                       ; preds = %._crit_edge3651
  %1259 = add i32 %1160, 1
  %1260 = mul nsw i64 %indvars.iv4348, %92
  %1261 = sub i32 %.03247.ph, %1160
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr %struct.doublecomplex, ptr %39, i64 %1260
  %1264 = getelementptr %struct.doublecomplex, ptr %1263, i64 %1262
  %1265 = zext nneg i32 %1258 to i64
  br label %1266

1266:                                             ; preds = %.lr.ph3657, %1266
  %indvars.iv4345 = phi i64 [ %1265, %.lr.ph3657 ], [ %indvars.iv.next4346, %1266 ]
  %1267 = mul nsw i64 %indvars.iv4345, %91
  %1268 = trunc nuw nsw i64 %indvars.iv4345 to i32
  %1269 = sub i32 %1259, %1268
  %1270 = trunc nsw i64 %1267 to i32
  %1271 = add nsw i32 %1269, %1270
  store i32 %1271, ptr %16, align 4, !tbaa !5
  store i32 %1271, ptr %17, align 4, !tbaa !5
  %1272 = call { double, double } @Cd(ptr noundef %1264)
  %1273 = extractvalue { double, double } %1272, 0
  %1274 = extractvalue { double, double } %1272, 1
  %1275 = fneg double %1274
  %1276 = call ptr @_pCd(ptr noundef nonnull %21)
  %1277 = getelementptr inbounds i8, ptr %1276, i64 8
  store double %1273, ptr %1276, align 8
  store double %1275, ptr %1277, align 8
  %1278 = sub i32 %.03247.ph, %1268
  %1279 = sext i32 %1278 to i64
  %1280 = load <2 x double>, ptr %21, align 16
  %1281 = getelementptr %struct.doublecomplex, ptr %36, i64 %1267
  %1282 = getelementptr %struct.doublecomplex, ptr %1281, i64 %1279
  %1283 = load double, ptr %89, align 8, !tbaa !13
  %1284 = fneg double %1283
  %1285 = load i32, ptr %17, align 4, !tbaa !5
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1286
  %1288 = load <2 x double>, ptr %1282, align 8, !tbaa !12
  %1289 = insertelement <2 x double> poison, double %1283, i64 0
  %1290 = insertelement <2 x double> %1289, double %1284, i64 1
  %1291 = fmul <2 x double> %1288, %1290
  %1292 = shufflevector <2 x double> %1291, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1293 = shufflevector <2 x double> %1280, <2 x double> poison, <2 x i32> zeroinitializer
  %1294 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1293, <2 x double> %1288, <2 x double> %1292)
  %1295 = load <2 x double>, ptr %1287, align 8, !tbaa !12
  %1296 = fsub <2 x double> %1295, %1294
  store <2 x double> %1296, ptr %20, align 16, !tbaa !12
  %1297 = load i32, ptr %16, align 4, !tbaa !5
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1298
  store <2 x double> %1296, ptr %1299, align 8, !tbaa !12
  %indvars.iv.next4346 = add nuw nsw i64 %indvars.iv4345, 1
  %1300 = load i32, ptr %15, align 4, !tbaa !5
  %1301 = sext i32 %1300 to i64
  %.not3310.not = icmp slt i64 %indvars.iv4345, %1301
  br i1 %.not3310.not, label %1266, label %._crit_edge3658, !llvm.loop !45

._crit_edge3658:                                  ; preds = %1266, %._crit_edge3651
  %indvars.iv.next4349 = add nsw i64 %indvars.iv4348, 1
  %1302 = load i32, ptr %18, align 4, !tbaa !5
  %1303 = sext i32 %1302 to i64
  %.not3291.not = icmp slt i64 %indvars.iv4348, %1303
  br i1 %.not3291.not, label %.lr.ph3662, label %._crit_edge3663, !llvm.loop !46

._crit_edge3663:                                  ; preds = %._crit_edge3658, %1157
  %.not32923675 = icmp sgt i32 %100, %104
  br i1 %.not32923675, label %1350, label %.lr.ph3678

.lr.ph3678:                                       ; preds = %._crit_edge3663
  %1304 = load i32, ptr %3, align 4, !tbaa !5
  %1305 = load i32, ptr %32, align 4, !tbaa !5
  %1306 = sub nsw i32 %100, %1305
  %reass.sub4202 = sub i32 %109, %.03247.ph
  %1307 = add i32 %reass.sub4202, 2
  %1308 = sub i32 %100, %1304
  %1309 = sext i32 %101 to i64
  %1310 = zext i32 %100 to i64
  %1311 = add i32 %104, 1
  br label %1312

1312:                                             ; preds = %.lr.ph3678, %1349
  %indvars.iv4356 = phi i64 [ %1310, %.lr.ph3678 ], [ %indvars.iv.next4357, %1349 ]
  %indvars.iv4351 = phi i32 [ %1308, %.lr.ph3678 ], [ %indvars.iv.next4352, %1349 ]
  %1313 = trunc i64 %indvars.iv4356 to i32
  %1314 = sub i32 %1313, %1304
  %1315 = call i32 @llvm.smax.i32(i32 %1314, i32 %1306)
  %.not33073665 = icmp sgt i32 %1315, %101
  br i1 %.not33073665, label %1349, label %.lr.ph3669

.lr.ph3669:                                       ; preds = %1312
  %1316 = call i32 @llvm.smax.i32(i32 %indvars.iv4351, i32 %1306)
  %smax4353 = sext i32 %1316 to i64
  %1317 = trunc i64 %indvars.iv4356 to i32
  %1318 = add i64 %indvars.iv4356, 1
  %1319 = add i32 %1307, %1317
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1320
  br label %1322

1322:                                             ; preds = %.lr.ph3669, %1322
  %indvars.iv4354 = phi i64 [ %smax4353, %.lr.ph3669 ], [ %indvars.iv.next4355, %1322 ]
  %1323 = mul nsw i64 %indvars.iv4354, %91
  %1324 = trunc nsw i64 %indvars.iv4354 to i32
  %1325 = sub i64 %1318, %indvars.iv4354
  %sext = shl i64 %1325, 32
  %1326 = ashr exact i64 %sext, 32
  %1327 = add nsw i64 %1326, %1323
  %1328 = mul nsw i64 %indvars.iv4354, %92
  %1329 = sub i32 %.03247.ph, %1324
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr %struct.doublecomplex, ptr %39, i64 %1328
  %1332 = getelementptr %struct.doublecomplex, ptr %1331, i64 %1330
  %1333 = load double, ptr %1332, align 8, !tbaa !9
  %1334 = getelementptr inbounds i8, ptr %1332, i64 8
  %1335 = load double, ptr %1334, align 8, !tbaa !13
  %1336 = fneg double %1335
  %1337 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1327
  %1338 = load <2 x double>, ptr %1321, align 8, !tbaa !12
  %1339 = insertelement <2 x double> poison, double %1335, i64 0
  %1340 = insertelement <2 x double> %1339, double %1336, i64 1
  %1341 = fmul <2 x double> %1338, %1340
  %1342 = shufflevector <2 x double> %1341, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1343 = insertelement <2 x double> poison, double %1333, i64 0
  %1344 = shufflevector <2 x double> %1343, <2 x double> poison, <2 x i32> zeroinitializer
  %1345 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1344, <2 x double> %1338, <2 x double> %1342)
  %1346 = load <2 x double>, ptr %1337, align 8, !tbaa !12
  %1347 = fsub <2 x double> %1346, %1345
  store <2 x double> %1347, ptr %1337, align 8, !tbaa !12
  %indvars.iv.next4355 = add nsw i64 %indvars.iv4354, 1
  %.not3307.not = icmp slt i64 %indvars.iv4354, %1309
  br i1 %.not3307.not, label %1322, label %._crit_edge3670, !llvm.loop !47

._crit_edge3670:                                  ; preds = %1322
  %1348 = trunc i64 %1327 to i32
  store <2 x double> %1347, ptr %20, align 16, !tbaa !12
  br label %1349

1349:                                             ; preds = %._crit_edge3670, %1312
  %.lcssa36723681 = phi i32 [ %1348, %._crit_edge3670 ], [ %1306, %1312 ]
  %.lcssa36713680 = phi i32 [ %1348, %._crit_edge3670 ], [ %1314, %1312 ]
  %indvars.iv.next4357 = add i64 %indvars.iv4356, 1
  %indvars.iv.next4352 = add i32 %indvars.iv4351, 1
  %lftr.wideiv4359 = trunc i64 %indvars.iv.next4357 to i32
  %exitcond4360.not = icmp eq i32 %1311, %lftr.wideiv4359
  br i1 %exitcond4360.not, label %._crit_edge3679, label %1312, !llvm.loop !48

._crit_edge3679:                                  ; preds = %1349
  store i32 %.lcssa36713680, ptr %15, align 4, !tbaa !5
  store i32 %.lcssa36723681, ptr %16, align 4, !tbaa !5
  store i32 %101, ptr %17, align 4, !tbaa !5
  br label %1350

1350:                                             ; preds = %._crit_edge3679, %._crit_edge3663
  br i1 %.not, label %1351, label %1376

1351:                                             ; preds = %1350
  %1352 = load i32, ptr %2, align 4, !tbaa !5
  %1353 = sub nsw i32 %1352, %85
  store i32 %1353, ptr %18, align 4, !tbaa !5
  %1354 = fdiv double 1.000000e+00, %1055
  store double %1354, ptr %19, align 8, !tbaa !12
  %1355 = mul nsw i32 %100, %40
  %1356 = add nsw i32 %1355, %87
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %1357
  call void @zdscal_(ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %1358, ptr noundef nonnull @c__1) #5
  %1359 = load i32, ptr %32, align 4, !tbaa !5
  %1360 = icmp sgt i32 %1359, 0
  br i1 %1360, label %1361, label %1376

1361:                                             ; preds = %1351
  %1362 = load i32, ptr %2, align 4, !tbaa !5
  %1363 = sub nsw i32 %1362, %85
  store i32 %1363, ptr %18, align 4, !tbaa !5
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %20, align 16, !tbaa !12
  %1364 = load i32, ptr %8, align 4, !tbaa !5
  %1365 = add nsw i32 %1364, -1
  store i32 %1365, ptr %17, align 4, !tbaa !5
  %1366 = add nuw nsw i32 %1359, 1
  %1367 = sub nsw i32 %100, %1359
  %1368 = mul nsw i32 %1367, %37
  %1369 = add nsw i32 %1366, %1368
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %1370
  %1372 = mul nsw i32 %1367, %40
  %1373 = add nsw i32 %1372, %87
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %1374
  call void @zgeru_(ptr noundef nonnull %18, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %1358, ptr noundef nonnull @c__1, ptr noundef %1371, ptr noundef nonnull %17, ptr noundef %1375, ptr noundef nonnull %10) #5
  br label %1376

1376:                                             ; preds = %1351, %1361, %1350
  %reass.sub4203 = sub i32 %109, %.03247.ph
  %1377 = add i32 %reass.sub4203, 2
  %1378 = add i32 %1377, %104
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1379
  %1381 = load <2 x double>, ptr %1380, align 8, !tbaa !12
  store <2 x double> %1381, ptr %31, align 16, !tbaa !12
  %.pre4589 = load i32, ptr %4, align 4, !tbaa !5
  br label %1382

1382:                                             ; preds = %112, %1376
  %1383 = phi i32 [ %.pre4589, %1376 ], [ %99, %112 ]
  %.031643544 = phi i32 [ %.03164.ph, %1376 ], [ 0, %112 ]
  %.not32833538 = phi i1 [ false, %1376 ], [ true, %112 ]
  %.1324834083443 = phi i32 [ %100, %1376 ], [ %111, %112 ]
  %.1318134113441 = phi i32 [ %101, %1376 ], [ %.03180.lcssa, %112 ]
  %.1317634143439 = phi i32 [ %104, %1376 ], [ %.03175.lcssa, %112 ]
  %.1317134173437 = phi i32 [ %107, %1376 ], [ %.03170.lcssa, %112 ]
  %1384 = add nsw i32 %1383, -1
  store i32 %1384, ptr %18, align 4, !tbaa !5
  %.not32933802 = icmp slt i32 %1383, 2
  br i1 %.not32933802, label %._crit_edge3807, label %.lr.ph3806

.lr.ph3806:                                       ; preds = %1382
  %1385 = mul nsw i32 %.1324834083443, %34
  %1386 = add i32 %.1324834083443, 1
  %1387 = sext i32 %.1324834083443 to i64
  %1388 = sext i32 %.1318134113441 to i64
  br label %1389

1389:                                             ; preds = %.lr.ph3806, %.loopexit3508
  %indvars.iv4388 = phi i64 [ 1, %.lr.ph3806 ], [ %indvars.iv.next4389, %.loopexit3508 ]
  %.83207.neg3804 = phi i32 [ -1, %.lr.ph3806 ], [ %1491, %.loopexit3508 ]
  %indvars4391 = trunc i64 %indvars.iv4388 to i32
  %.pre4593 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not32833538, label %._crit_edge4590, label %1390

._crit_edge4590:                                  ; preds = %1389
  %.pre4591 = load i32, ptr %30, align 4, !tbaa !5
  br label %1484

1390:                                             ; preds = %1389
  %1391 = sub nsw i64 %1387, %indvars.iv4388
  %1392 = trunc nsw i64 %1391 to i32
  %1393 = add nsw i32 %.pre4593, %1392
  %1394 = load i32, ptr %2, align 4, !tbaa !5
  %1395 = icmp slt i32 %1393, %1394
  %1396 = icmp sgt i64 %1391, 1
  %or.cond3393 = and i1 %1396, %1395
  %.pre4592 = load i32, ptr %30, align 4, !tbaa !5
  br i1 %or.cond3393, label %1397, label %1484

1397:                                             ; preds = %1390
  %1398 = add i32 %.83207.neg3804, %1385
  %1399 = add i32 %1398, %.pre4592
  %1400 = sext i32 %1399 to i64
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1400
  %1402 = sub nsw i32 %1393, %85
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds double, ptr %44, i64 %1403
  %1405 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1403
  call void @zlartg_(ptr noundef %1401, ptr noundef nonnull %31, ptr noundef nonnull %1404, ptr noundef nonnull %1405, ptr noundef nonnull %27) #5
  %1406 = add nuw nsw i32 %indvars4391, 1
  %1407 = trunc i64 %1391 to i32
  %1408 = mul i32 %37, %1407
  %1409 = add nsw i32 %1406, %1408
  %1410 = sext i32 %1409 to i64
  %1411 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %1410
  %1412 = load double, ptr %1411, align 8, !tbaa !9
  %1413 = fneg double %1412
  %1414 = getelementptr inbounds i8, ptr %1411, i64 8
  %1415 = load double, ptr %1414, align 8, !tbaa !13
  %1416 = fneg double %1415
  store i32 %1392, ptr %17, align 4, !tbaa !5
  %1417 = load i32, ptr %3, align 4, !tbaa !5
  %1418 = sub i32 %1392, %85
  %1419 = add i32 %1418, %1417
  store i32 %1419, ptr %15, align 4, !tbaa !5
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds double, ptr %44, i64 %1420
  %1422 = load double, ptr %1421, align 8, !tbaa !12
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1420
  %1424 = trunc i64 %1391 to i32
  %1425 = mul i32 %34, %1424
  %1426 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %1427 = insertelement <2 x double> poison, double %1416, i64 0
  %1428 = insertelement <2 x double> %1427, double %1415, i64 1
  %1429 = fmul <2 x double> %1426, %1428
  %1430 = shufflevector <2 x double> %1429, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1431 = insertelement <2 x double> poison, double %1413, i64 0
  %1432 = shufflevector <2 x double> %1431, <2 x double> poison, <2 x i32> zeroinitializer
  %1433 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1432, <2 x double> %1426, <2 x double> %1430)
  store <2 x double> %1433, ptr %20, align 16, !tbaa !12
  %1434 = call { double, double } @Cd(ptr noundef nonnull %1423)
  %1435 = extractvalue { double, double } %1434, 0
  %1436 = extractvalue { double, double } %1434, 1
  %1437 = fneg double %1436
  %1438 = call ptr @_pCd(ptr noundef nonnull %22)
  %1439 = getelementptr inbounds i8, ptr %1438, i64 8
  store double %1435, ptr %1438, align 8
  store double %1437, ptr %1439, align 8
  %1440 = load i32, ptr %30, align 4, !tbaa !5
  %1441 = add nsw i32 %1440, %1425
  %1442 = load <2 x double>, ptr %22, align 16
  %1443 = sext i32 %1441 to i64
  %1444 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1443
  %1445 = load double, ptr %88, align 8, !tbaa !13
  %1446 = fneg double %1445
  %1447 = load i32, ptr %17, align 4, !tbaa !5
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1448
  %1450 = insertelement <2 x double> poison, double %1422, i64 0
  %1451 = shufflevector <2 x double> %1450, <2 x double> poison, <2 x i32> zeroinitializer
  %1452 = fmul <2 x double> %1433, %1451
  %1453 = load <2 x double>, ptr %1444, align 8, !tbaa !12
  %1454 = insertelement <2 x double> poison, double %1445, i64 0
  %1455 = insertelement <2 x double> %1454, double %1446, i64 1
  %1456 = fmul <2 x double> %1453, %1455
  %1457 = shufflevector <2 x double> %1456, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1458 = shufflevector <2 x double> %1442, <2 x double> poison, <2 x i32> zeroinitializer
  %1459 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1458, <2 x double> %1453, <2 x double> %1457)
  %1460 = fsub <2 x double> %1452, %1459
  store <2 x double> %1460, ptr %1449, align 8, !tbaa !12
  store i32 %1441, ptr %17, align 4, !tbaa !5
  %1461 = load i32, ptr %3, align 4, !tbaa !5
  %1462 = add i32 %1418, %1461
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1463
  %1465 = load double, ptr %1464, align 8, !tbaa !9
  %1466 = getelementptr inbounds i8, ptr %1464, i64 8
  %1467 = load double, ptr %1466, align 8, !tbaa !13
  %1468 = fneg double %1467
  %1469 = insertelement <2 x double> poison, double %1467, i64 0
  %1470 = insertelement <2 x double> %1469, double %1468, i64 1
  %1471 = fmul <2 x double> %1433, %1470
  %1472 = shufflevector <2 x double> %1471, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1473 = insertelement <2 x double> poison, double %1465, i64 0
  %1474 = shufflevector <2 x double> %1473, <2 x double> poison, <2 x i32> zeroinitializer
  %1475 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1474, <2 x double> %1433, <2 x double> %1472)
  store i32 %1462, ptr %16, align 4, !tbaa !5
  %1476 = getelementptr inbounds double, ptr %44, i64 %1463
  %1477 = load double, ptr %1476, align 8, !tbaa !12
  %1478 = load <2 x double>, ptr %1444, align 8, !tbaa !12
  %1479 = insertelement <2 x double> poison, double %1477, i64 0
  %1480 = shufflevector <2 x double> %1479, <2 x double> poison, <2 x i32> zeroinitializer
  %1481 = fmul <2 x double> %1480, %1478
  store <2 x double> %1481, ptr %21, align 16, !tbaa !12
  %1482 = fadd <2 x double> %1475, %1481
  store <2 x double> %1482, ptr %20, align 16, !tbaa !12
  store <2 x double> %1482, ptr %1444, align 8, !tbaa !12
  %1483 = load <2 x double>, ptr %27, align 16, !tbaa !12
  store <2 x double> %1483, ptr %31, align 16, !tbaa !12
  br label %1484

1484:                                             ; preds = %._crit_edge4590, %1390, %1397
  %1485 = phi i32 [ %.pre4593, %._crit_edge4590 ], [ %.pre4593, %1390 ], [ %1461, %1397 ]
  %1486 = phi i32 [ %.pre4591, %._crit_edge4590 ], [ %.pre4592, %1390 ], [ %1440, %1397 ]
  %1487 = sub nsw i64 %indvars.iv4388, %1388
  %1488 = trunc i64 %1487 to i32
  %1489 = add i32 %1488, 2
  %1490 = trunc i64 %indvars.iv4388 to i32
  %1491 = xor i32 %1490, -1
  %1492 = add i32 %.1324834083443, %1491
  %1493 = icmp slt i64 %1487, 0
  %1494 = select i1 %1493, i32 1, i32 %1489
  %1495 = mul nsw i32 %1486, %1494
  %1496 = add nsw i32 %1492, %1495
  %1497 = load i32, ptr %2, align 4, !tbaa !5
  %1498 = sub i32 %1497, %1496
  %1499 = add nsw i32 %1498, %1485
  %1500 = sdiv i32 %1499, %1486
  store i32 %1500, ptr %28, align 4, !tbaa !5
  %1501 = add nsw i32 %1500, -1
  %1502 = mul nsw i32 %1501, %1486
  %1503 = add nsw i32 %1502, %1496
  br i1 %.not32833538, label %1509, label %1504

1504:                                             ; preds = %1484
  %1505 = shl i32 %1485, 1
  %1506 = add i32 %1386, %.83207.neg3804
  %1507 = add i32 %1506, %1505
  %1508 = call i32 @llvm.smax.i32(i32 %1496, i32 %1507)
  br label %1509

1509:                                             ; preds = %1484, %1504
  %.1 = phi i32 [ %1508, %1504 ], [ %1496, %1484 ]
  %1510 = add i32 %1485, %1497
  %1511 = sub i32 %1510, %.1
  %1512 = sdiv i32 %1511, %1486
  store i32 %1512, ptr %33, align 4, !tbaa !5
  store i32 %1503, ptr %17, align 4, !tbaa !5
  store i32 %1486, ptr %15, align 4, !tbaa !5
  %1513 = icmp slt i32 %1486, 0
  %1514 = icmp sge i32 %.1, %1503
  %1515 = icmp sle i32 %.1, %1503
  %.in33023777 = select i1 %1513, i1 %1514, i1 %1515
  br i1 %.in33023777, label %.lr.ph3780, label %1548

.lr.ph3780:                                       ; preds = %1509
  %1516 = sext i32 %.1 to i64
  %1517 = sext i32 %1486 to i64
  %1518 = sext i32 %1503 to i64
  br label %1519

1519:                                             ; preds = %.lr.ph3780, %1519
  %indvars.iv4382 = phi i64 [ %1516, %.lr.ph3780 ], [ %indvars.iv.next4383, %1519 ]
  %1520 = sub nsw i64 %indvars.iv4382, %93
  %1521 = trunc nsw i64 %indvars.iv4382 to i32
  %reass.sub4219 = sub i32 %1521, %1485
  %1522 = add i32 %reass.sub4219, 1
  %1523 = mul nsw i32 %1522, %34
  %1524 = add nsw i32 %1523, %1486
  %1525 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1520
  %1526 = load double, ptr %1525, align 8, !tbaa !9
  %1527 = sext i32 %1524 to i64
  %1528 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1527
  %1529 = getelementptr inbounds i8, ptr %1525, i64 8
  %1530 = load double, ptr %1529, align 8, !tbaa !13
  %1531 = fneg double %1530
  %1532 = load <2 x double>, ptr %1528, align 8, !tbaa !12
  %1533 = insertelement <2 x double> poison, double %1530, i64 0
  %1534 = insertelement <2 x double> %1533, double %1531, i64 1
  %1535 = fmul <2 x double> %1532, %1534
  %1536 = shufflevector <2 x double> %1535, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1537 = insertelement <2 x double> poison, double %1526, i64 0
  %1538 = shufflevector <2 x double> %1537, <2 x double> poison, <2 x i32> zeroinitializer
  %1539 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1538, <2 x double> %1532, <2 x double> %1536)
  store <2 x double> %1539, ptr %1525, align 8, !tbaa !12
  %1540 = getelementptr inbounds double, ptr %44, i64 %1520
  %1541 = load double, ptr %1540, align 8, !tbaa !12
  %1542 = load <2 x double>, ptr %1528, align 8, !tbaa !12
  %1543 = insertelement <2 x double> poison, double %1541, i64 0
  %1544 = shufflevector <2 x double> %1543, <2 x double> poison, <2 x i32> zeroinitializer
  %1545 = fmul <2 x double> %1544, %1542
  store <2 x double> %1545, ptr %1528, align 8, !tbaa !12
  %indvars.iv.next4383 = add nsw i64 %indvars.iv4382, %1517
  %1546 = icmp sge i64 %indvars.iv.next4383, %1518
  %1547 = icmp sle i64 %indvars.iv.next4383, %1518
  %.in3302 = select i1 %1513, i1 %1546, i1 %1547
  br i1 %.in3302, label %1519, label %._crit_edge3781, !llvm.loop !49

._crit_edge3781:                                  ; preds = %1519
  store i32 %1524, ptr %16, align 4, !tbaa !5
  store <2 x double> %1545, ptr %20, align 16, !tbaa !12
  br label %1548

1548:                                             ; preds = %._crit_edge3781, %1509
  %1549 = icmp sgt i32 %1512, 0
  br i1 %1549, label %1550, label %1560

1550:                                             ; preds = %1548
  %1551 = sub nsw i32 %.1, %1485
  %1552 = mul nsw i32 %1551, %34
  %1553 = add nsw i32 %1552, %1486
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1554
  %1556 = sub nsw i32 %.1, %85
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1557
  %1559 = getelementptr inbounds double, ptr %44, i64 %1557
  call void @zlargv_(ptr noundef nonnull %33, ptr noundef %1555, ptr noundef nonnull %26, ptr noundef nonnull %1558, ptr noundef nonnull %30, ptr noundef nonnull %1559, ptr noundef nonnull %30) #5
  %.pre4594 = load i32, ptr %28, align 4, !tbaa !5
  %.pre4596.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %1560

1560:                                             ; preds = %1550, %1548
  %.pre4596 = phi i32 [ %.pre4596.pre, %1550 ], [ %1485, %1548 ]
  %1561 = phi i32 [ %.pre4594, %1550 ], [ %1500, %1548 ]
  %1562 = icmp sgt i32 %1561, 0
  br i1 %1562, label %1563, label %1586

1563:                                             ; preds = %1560
  %1564 = add nsw i32 %.pre4596, -1
  store i32 %1564, ptr %15, align 4, !tbaa !5
  %.not33033785 = icmp slt i32 %.pre4596, 2
  %.pre4618 = sub nsw i32 %1496, %85
  %.pre4620 = sext i32 %.pre4618 to i64
  br i1 %.not33033785, label %._crit_edge3789, label %.lr.ph3788

.lr.ph3788:                                       ; preds = %1563
  %1565 = getelementptr inbounds double, ptr %44, i64 %.pre4620
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4620
  %1567 = sext i32 %1496 to i64
  br label %1568

1568:                                             ; preds = %.lr.ph3788, %1568
  %indvars.iv4385 = phi i64 [ 1, %.lr.ph3788 ], [ %indvars.iv.next4386, %1568 ]
  %indvars.iv.next4386 = add nuw nsw i64 %indvars.iv4385, 1
  %1569 = sub nsw i64 %1567, %indvars.iv4385
  %1570 = mul nsw i64 %1569, %91
  %1571 = getelementptr %struct.doublecomplex, ptr %36, i64 %1570
  %1572 = getelementptr %struct.doublecomplex, ptr %1571, i64 %indvars.iv.next4386
  %gep4780 = getelementptr %struct.doublecomplex, ptr %invariant.gep4779, i64 %indvars.iv4385
  %1573 = getelementptr %struct.doublecomplex, ptr %gep4780, i64 %1570
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %1572, ptr noundef nonnull %26, ptr noundef %1573, ptr noundef nonnull %26, ptr noundef nonnull %1565, ptr noundef nonnull %1566, ptr noundef nonnull %30) #5
  %1574 = load i32, ptr %15, align 4, !tbaa !5
  %1575 = sext i32 %1574 to i64
  %.not3303.not = icmp slt i64 %indvars.iv4385, %1575
  br i1 %.not3303.not, label %1568, label %._crit_edge3789, !llvm.loop !50

._crit_edge3789:                                  ; preds = %1568, %1563
  %1576 = mul nsw i32 %1496, %34
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr %struct.doublecomplex, ptr %36, i64 %1577
  %1579 = getelementptr i8, ptr %1578, i64 16
  %1580 = add nsw i32 %1496, 1
  %1581 = mul nsw i32 %1580, %34
  %1582 = sext i32 %1581 to i64
  %gep3801 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %1582
  %1583 = getelementptr i8, ptr %1578, i64 32
  %1584 = getelementptr inbounds double, ptr %44, i64 %.pre4620
  %1585 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4620
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %1579, ptr noundef %gep3801, ptr noundef %1583, ptr noundef nonnull %26, ptr noundef nonnull %1584, ptr noundef nonnull %1585, ptr noundef nonnull %30) #5
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %1585, ptr noundef nonnull %30) #5
  %.pre4595 = load i32, ptr %3, align 4, !tbaa !5
  br label %1586

1586:                                             ; preds = %._crit_edge3789, %1560
  %1587 = phi i32 [ %.pre4595, %._crit_edge3789 ], [ %.pre4596, %1560 ]
  %1588 = load i32, ptr %4, align 4, !tbaa !5
  %1589 = add nsw i32 %.83207.neg3804, 1
  %1590 = add i32 %1589, %1588
  store i32 %1590, ptr %15, align 4, !tbaa !5
  %.not3304.not3791 = icmp sgt i32 %1587, %1590
  br i1 %.not3304.not3791, label %.lr.ph3794, label %._crit_edge3795

.lr.ph3794:                                       ; preds = %1586
  %1591 = mul nsw i32 %1496, %34
  %1592 = add i32 %1591, 1
  %1593 = add nsw i32 %1496, 1
  %1594 = mul nsw i32 %1593, %34
  %1595 = sub nsw i32 %1496, %85
  %1596 = sext i32 %1595 to i64
  %1597 = getelementptr inbounds double, ptr %44, i64 %1596
  %1598 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1596
  br label %1599

1599:                                             ; preds = %.lr.ph3794, %1615
  %1600 = phi i32 [ %1590, %.lr.ph3794 ], [ %1616, %1615 ]
  %.731923792.in = phi i32 [ %1587, %.lr.ph3794 ], [ %.731923792, %1615 ]
  %.731923792 = add nsw i32 %.731923792.in, -1
  %1601 = load i32, ptr %2, align 4, !tbaa !5
  %1602 = sub i32 %.731923792, %1496
  %1603 = add i32 %1602, %1601
  %1604 = load i32, ptr %30, align 4, !tbaa !5
  %1605 = sdiv i32 %1603, %1604
  store i32 %1605, ptr %33, align 4, !tbaa !5
  %1606 = icmp sgt i32 %1605, 0
  br i1 %1606, label %1607, label %1615

1607:                                             ; preds = %1599
  %1608 = sub nsw i32 %1604, %.731923792
  %1609 = add i32 %1592, %1608
  %1610 = sext i32 %1609 to i64
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1610
  %1612 = add nsw i32 %1608, %1594
  %1613 = sext i32 %1612 to i64
  %1614 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1613
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %1611, ptr noundef nonnull %26, ptr noundef %1614, ptr noundef nonnull %26, ptr noundef nonnull %1597, ptr noundef nonnull %1598, ptr noundef nonnull %30) #5
  %.pre4597 = load i32, ptr %15, align 4, !tbaa !5
  br label %1615

1615:                                             ; preds = %1599, %1607
  %1616 = phi i32 [ %1600, %1599 ], [ %.pre4597, %1607 ]
  %.not3304.not = icmp sgt i32 %.731923792, %1616
  br i1 %.not3304.not, label %1599, label %._crit_edge3795, !llvm.loop !51

._crit_edge3795:                                  ; preds = %1615, %1586
  br i1 %.not, label %1617, label %.loopexit3508

1617:                                             ; preds = %._crit_edge3795
  store i32 %1503, ptr %15, align 4, !tbaa !5
  %1618 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %1618, ptr %17, align 4, !tbaa !5
  %1619 = icmp slt i32 %1618, 0
  %1620 = icmp slt i32 %1502, 1
  %1621 = icmp sgt i32 %1502, -1
  %.in33053796 = select i1 %1619, i1 %1620, i1 %1621
  br i1 %.in33053796, label %.lr.ph3799, label %.loopexit3508

.lr.ph3799:                                       ; preds = %1617, %.lr.ph3799
  %.1732403797 = phi i32 [ %1638, %.lr.ph3799 ], [ %1496, %1617 ]
  %1622 = load i32, ptr %2, align 4, !tbaa !5
  %1623 = sub nsw i32 %1622, %85
  store i32 %1623, ptr %16, align 4, !tbaa !5
  %1624 = mul nsw i32 %.1732403797, %40
  %1625 = add nsw i32 %1624, %87
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %1626
  %1628 = add nsw i32 %.1732403797, 1
  %1629 = mul nsw i32 %1628, %40
  %1630 = add nsw i32 %1629, %87
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %1631
  %1633 = sub nsw i32 %.1732403797, %85
  %1634 = sext i32 %1633 to i64
  %1635 = getelementptr inbounds double, ptr %44, i64 %1634
  %1636 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1634
  call void @zrot_(ptr noundef nonnull %16, ptr noundef %1627, ptr noundef nonnull @c__1, ptr noundef %1632, ptr noundef nonnull @c__1, ptr noundef nonnull %1635, ptr noundef nonnull %1636) #5
  %1637 = load i32, ptr %17, align 4, !tbaa !5
  %1638 = add nsw i32 %1637, %.1732403797
  %1639 = icmp slt i32 %1637, 0
  %1640 = load i32, ptr %15, align 4
  %1641 = icmp sge i32 %1638, %1640
  %1642 = icmp sle i32 %1638, %1640
  %.in3305 = select i1 %1639, i1 %1641, i1 %1642
  br i1 %.in3305, label %.lr.ph3799, label %.loopexit3508, !llvm.loop !52

.loopexit3508:                                    ; preds = %.lr.ph3799, %1617, %._crit_edge3795
  %indvars.iv.next4389 = add nuw nsw i64 %indvars.iv4388, 1
  %1643 = load i32, ptr %18, align 4, !tbaa !5
  %1644 = sext i32 %1643 to i64
  %.not3293.not = icmp slt i64 %indvars.iv4388, %1644
  br i1 %.not3293.not, label %1389, label %._crit_edge3807, !llvm.loop !53

._crit_edge3807:                                  ; preds = %.loopexit3508, %1382
  br i1 %.not32833538, label %1672, label %1645

1645:                                             ; preds = %._crit_edge3807
  %1646 = load i32, ptr %2, align 4, !tbaa !5
  %1647 = icmp sle i32 %.1317134173437, %1646
  %1648 = load i32, ptr %32, align 4
  %1649 = icmp sgt i32 %1648, 0
  %or.cond3 = select i1 %1647, i1 %1649, i1 false
  br i1 %or.cond3, label %1650, label %1672

1650:                                             ; preds = %1645
  %1651 = sub nsw i32 %.1324834083443, %1648
  store i32 %1651, ptr %18, align 4, !tbaa !5
  %1652 = add nuw nsw i32 %1648, 1
  %1653 = mul nsw i32 %1651, %37
  %1654 = add nsw i32 %1652, %1653
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %1655
  %1657 = load double, ptr %1656, align 8, !tbaa !9
  %1658 = fneg double %1657
  %1659 = getelementptr inbounds i8, ptr %1656, i64 8
  %1660 = load double, ptr %1659, align 8, !tbaa !13
  %1661 = fneg double %1660
  %1662 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %1663 = insertelement <2 x double> poison, double %1661, i64 0
  %1664 = insertelement <2 x double> %1663, double %1660, i64 1
  %1665 = fmul <2 x double> %1662, %1664
  %1666 = shufflevector <2 x double> %1665, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1667 = insertelement <2 x double> poison, double %1658, i64 0
  %1668 = shufflevector <2 x double> %1667, <2 x double> poison, <2 x i32> zeroinitializer
  %1669 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1668, <2 x double> %1662, <2 x double> %1666)
  store <2 x double> %1669, ptr %20, align 16, !tbaa !12
  %1670 = sext i32 %1651 to i64
  %1671 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1670
  store <2 x double> %1669, ptr %1671, align 8, !tbaa !12
  br label %1672

1672:                                             ; preds = %1645, %1650, %._crit_edge3807
  %1673 = load i32, ptr %4, align 4, !tbaa !5
  %1674 = icmp sgt i32 %1673, 0
  br i1 %1674, label %.lr.ph3829.preheader, label %._crit_edge3852.thread

.lr.ph3829.preheader:                             ; preds = %1672
  %1675 = zext nneg i32 %1673 to i64
  %1676 = sext i32 %.1318134113441 to i64
  %1677 = sext i32 %.1324834083443 to i64
  %.4817 = select i1 %.not32833538, i64 1, i64 2
  %.4818 = select i1 %.not32833538, i32 1, i32 2
  br label %.lr.ph3829

.lr.ph3829:                                       ; preds = %.lr.ph3829.preheader, %1791
  %indvars.iv4395 = phi i64 [ %1675, %.lr.ph3829.preheader ], [ %indvars.iv.next4396, %1791 ]
  %1678 = sub nsw i64 %indvars.iv4395, %1676
  %1679 = trunc i64 %1678 to i32
  %1680 = add i32 %1679, 1
  %1681 = trunc nuw nsw i64 %indvars.iv4395 to i32
  %1682 = xor i32 %1681, -1
  %1683 = add i32 %.1324834083443, %1682
  %1684 = load i32, ptr %30, align 4, !tbaa !5
  %1685 = icmp slt i64 %1678, %.4817
  %1686 = select i1 %1685, i32 %.4818, i32 %1680
  %1687 = mul nsw i32 %1684, %1686
  %1688 = add nsw i32 %1683, %1687
  store i32 %.4818, ptr %18, align 4
  store i32 %1680, ptr %17, align 4
  %1689 = load i32, ptr %4, align 4, !tbaa !5
  %1690 = sub nsw i32 %1689, %1681
  %1691 = icmp sgt i32 %1690, 0
  br i1 %1691, label %.lr.ph3811, label %._crit_edge3812

.lr.ph3811:                                       ; preds = %.lr.ph3829, %1716
  %.831933809 = phi i32 [ %1717, %1716 ], [ %1690, %.lr.ph3829 ]
  %1692 = load i32, ptr %2, align 4, !tbaa !5
  %1693 = load i32, ptr %3, align 4, !tbaa !5
  %1694 = sub i32 %.831933809, %1688
  %1695 = add i32 %1694, %1692
  %1696 = add i32 %1695, %1693
  %1697 = load i32, ptr %30, align 4, !tbaa !5
  %1698 = sdiv i32 %1696, %1697
  store i32 %1698, ptr %33, align 4, !tbaa !5
  %1699 = icmp sgt i32 %1698, 0
  br i1 %1699, label %1700, label %1716

1700:                                             ; preds = %.lr.ph3811
  %1701 = sub nsw i32 %1697, %.831933809
  %1702 = add nsw i32 %1701, 1
  %1703 = sub nsw i32 %1688, %1693
  %1704 = mul nsw i32 %1703, %34
  %1705 = add nsw i32 %1702, %1704
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1706
  %1708 = add nsw i32 %1703, 1
  %1709 = mul nsw i32 %1708, %34
  %1710 = add nsw i32 %1709, %1701
  %1711 = sext i32 %1710 to i64
  %1712 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1711
  %1713 = sext i32 %1703 to i64
  %1714 = getelementptr inbounds double, ptr %44, i64 %1713
  %1715 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1713
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %1707, ptr noundef nonnull %26, ptr noundef %1712, ptr noundef nonnull %26, ptr noundef nonnull %1714, ptr noundef nonnull %1715, ptr noundef nonnull %30) #5
  br label %1716

1716:                                             ; preds = %.lr.ph3811, %1700
  %1717 = add nsw i32 %.831933809, -1
  %1718 = icmp sgt i32 %.831933809, 1
  br i1 %1718, label %.lr.ph3811, label %._crit_edge3812.loopexit, !llvm.loop !54

._crit_edge3812.loopexit:                         ; preds = %1716
  %.pre4598 = load i32, ptr %30, align 4, !tbaa !5
  br label %._crit_edge3812

._crit_edge3812:                                  ; preds = %._crit_edge3812.loopexit, %.lr.ph3829
  %1719 = phi i32 [ %.pre4598, %._crit_edge3812.loopexit ], [ %1684, %.lr.ph3829 ]
  %1720 = load i32, ptr %2, align 4, !tbaa !5
  %1721 = sub i32 %1720, %1688
  %1722 = load i32, ptr %3, align 4, !tbaa !5
  %1723 = add nsw i32 %1721, %1722
  %1724 = sdiv i32 %1723, %1719
  store i32 %1724, ptr %28, align 4, !tbaa !5
  %1725 = add nsw i32 %1724, -1
  %1726 = mul nsw i32 %1725, %1719
  %1727 = add nsw i32 %1726, %1688
  %1728 = icmp sgt i32 %1719, 0
  %1729 = icmp sgt i32 %1726, -1
  %1730 = icmp slt i32 %1726, 1
  %.in32983813 = select i1 %1728, i1 %1729, i1 %1730
  br i1 %.in32983813, label %.lr.ph3816, label %1743

.lr.ph3816:                                       ; preds = %._crit_edge3812, %.lr.ph3816
  %.1832413814 = phi i32 [ %1740, %.lr.ph3816 ], [ %1727, %._crit_edge3812 ]
  %1731 = sub nsw i32 %.1832413814, %1722
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1732
  %1734 = sext i32 %.1832413814 to i64
  %1735 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1734
  %1736 = load <2 x double>, ptr %1733, align 8, !tbaa !12
  store <2 x double> %1736, ptr %1735, align 8, !tbaa !12
  %1737 = getelementptr inbounds double, ptr %44, i64 %1732
  %1738 = load double, ptr %1737, align 8, !tbaa !12
  %1739 = getelementptr inbounds double, ptr %44, i64 %1734
  store double %1738, ptr %1739, align 8, !tbaa !12
  %1740 = sub i32 %.1832413814, %1719
  %1741 = icmp sge i32 %1740, %1688
  %1742 = icmp sle i32 %1740, %1688
  %.in3298 = select i1 %1728, i1 %1741, i1 %1742
  br i1 %.in3298, label %.lr.ph3816, label %._crit_edge3817, !llvm.loop !55

._crit_edge3817:                                  ; preds = %.lr.ph3816
  store i32 %.1832413814, ptr %15, align 4, !tbaa !5
  store i32 %1731, ptr %16, align 4, !tbaa !5
  br label %1743

1743:                                             ; preds = %._crit_edge3817, %._crit_edge3812
  store i32 %1727, ptr %17, align 4, !tbaa !5
  store i32 %1719, ptr %18, align 4, !tbaa !5
  %1744 = icmp slt i32 %1719, 0
  %.in32993819 = select i1 %1744, i1 %1730, i1 %1729
  br i1 %.in32993819, label %.lr.ph3822, label %1776

.lr.ph3822:                                       ; preds = %1743
  %1745 = sext i32 %1688 to i64
  %1746 = sext i32 %1719 to i64
  %1747 = sext i32 %1727 to i64
  br label %1748

1748:                                             ; preds = %.lr.ph3822, %1748
  %indvars.iv4392 = phi i64 [ %1745, %.lr.ph3822 ], [ %indvars.iv.next4393, %1748 ]
  %1749 = trunc nsw i64 %indvars.iv4392 to i32
  %reass.sub4220 = sub i32 %1749, %1722
  %1750 = add i32 %reass.sub4220, 1
  %1751 = mul nsw i32 %1750, %34
  %1752 = add nsw i32 %1751, %1719
  %1753 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4392
  %1754 = load double, ptr %1753, align 8, !tbaa !9
  %1755 = sext i32 %1752 to i64
  %1756 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1755
  %1757 = getelementptr inbounds i8, ptr %1753, i64 8
  %1758 = load double, ptr %1757, align 8, !tbaa !13
  %1759 = fneg double %1758
  %1760 = load <2 x double>, ptr %1756, align 8, !tbaa !12
  %1761 = insertelement <2 x double> poison, double %1758, i64 0
  %1762 = insertelement <2 x double> %1761, double %1759, i64 1
  %1763 = fmul <2 x double> %1760, %1762
  %1764 = shufflevector <2 x double> %1763, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1765 = insertelement <2 x double> poison, double %1754, i64 0
  %1766 = shufflevector <2 x double> %1765, <2 x double> poison, <2 x i32> zeroinitializer
  %1767 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1766, <2 x double> %1760, <2 x double> %1764)
  store <2 x double> %1767, ptr %1753, align 8, !tbaa !12
  %1768 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4392
  %1769 = load double, ptr %1768, align 8, !tbaa !12
  %1770 = load <2 x double>, ptr %1756, align 8, !tbaa !12
  %1771 = insertelement <2 x double> poison, double %1769, i64 0
  %1772 = shufflevector <2 x double> %1771, <2 x double> poison, <2 x i32> zeroinitializer
  %1773 = fmul <2 x double> %1772, %1770
  store <2 x double> %1773, ptr %1756, align 8, !tbaa !12
  %indvars.iv.next4393 = add nsw i64 %indvars.iv4392, %1746
  %1774 = icmp sge i64 %indvars.iv.next4393, %1747
  %1775 = icmp sle i64 %indvars.iv.next4393, %1747
  %.in3299 = select i1 %1744, i1 %1774, i1 %1775
  br i1 %.in3299, label %1748, label %._crit_edge3823, !llvm.loop !56

._crit_edge3823:                                  ; preds = %1748
  store i32 %1752, ptr %15, align 4, !tbaa !5
  store i32 %1749, ptr %16, align 4, !tbaa !5
  store <2 x double> %1773, ptr %20, align 16, !tbaa !12
  br label %1776

1776:                                             ; preds = %._crit_edge3823, %1743
  br i1 %.not32833538, label %1791, label %1777

1777:                                             ; preds = %1776
  %1778 = sub nsw i64 %1677, %indvars.iv4395
  %1779 = sub nsw i32 %1720, %1722
  %1780 = sext i32 %1779 to i64
  %1781 = icmp sge i64 %1778, %1780
  %1782 = load i32, ptr %32, align 4
  %1783 = sext i32 %1782 to i64
  %.not3300 = icmp sgt i64 %indvars.iv4395, %1783
  %or.cond3394 = select i1 %1781, i1 true, i1 %.not3300
  br i1 %or.cond3394, label %1791, label %1784

1784:                                             ; preds = %1777
  %1785 = trunc nsw i64 %1778 to i32
  %1786 = add nsw i32 %1722, %1785
  store i32 %1786, ptr %18, align 4, !tbaa !5
  store i32 %1785, ptr %17, align 4, !tbaa !5
  %1787 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1778
  %1788 = sext i32 %1786 to i64
  %1789 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1788
  %1790 = load <2 x double>, ptr %1787, align 8, !tbaa !12
  store <2 x double> %1790, ptr %1789, align 8, !tbaa !12
  br label %1791

1791:                                             ; preds = %1776, %1784, %1777
  %indvars.iv.next4396 = add nsw i64 %indvars.iv4395, -1
  %1792 = icmp sgt i64 %indvars.iv4395, 1
  br i1 %1792, label %.lr.ph3829, label %._crit_edge3830, !llvm.loop !57

._crit_edge3830:                                  ; preds = %1791
  %.pre4599 = load i32, ptr %4, align 4, !tbaa !5
  %1793 = icmp sgt i32 %.pre4599, 0
  br i1 %1793, label %.lr.ph3851, label %._crit_edge3852.thread

.lr.ph3851:                                       ; preds = %._crit_edge3830, %.loopexit3507
  %.1032093849 = phi i32 [ %1892, %.loopexit3507 ], [ %.pre4599, %._crit_edge3830 ]
  store i32 1, ptr %18, align 4, !tbaa !5
  %1794 = sub nsw i32 %.1032093849, %.1318134113441
  %1795 = add nsw i32 %1794, 1
  store i32 %1795, ptr %17, align 4, !tbaa !5
  %1796 = xor i32 %.1032093849, -1
  %1797 = add i32 %.1324834083443, %1796
  %1798 = icmp slt i32 %1794, 1
  %1799 = select i1 %1798, i32 1, i32 %1795
  %1800 = load i32, ptr %30, align 4, !tbaa !5
  %1801 = mul nsw i32 %1800, %1799
  %1802 = add nsw i32 %1797, %1801
  %1803 = load i32, ptr %2, align 4, !tbaa !5
  %1804 = sub i32 %1803, %1802
  %1805 = load i32, ptr %3, align 4, !tbaa !5
  %1806 = add nsw i32 %1804, %1805
  %1807 = sdiv i32 %1806, %1800
  store i32 %1807, ptr %28, align 4, !tbaa !5
  %1808 = add nsw i32 %1807, -1
  %1809 = mul nsw i32 %1808, %1800
  %1810 = add nsw i32 %1809, %1802
  %1811 = icmp sgt i32 %1807, 0
  br i1 %1811, label %1812, label %1838

1812:                                             ; preds = %.lr.ph3851
  %1813 = sub nsw i32 %1802, %1805
  %1814 = mul nsw i32 %1813, %34
  %1815 = add nsw i32 %1814, %1800
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1816
  %1818 = sext i32 %1802 to i64
  %1819 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1818
  %1820 = getelementptr inbounds double, ptr %44, i64 %1818
  call void @zlargv_(ptr noundef nonnull %28, ptr noundef %1817, ptr noundef nonnull %26, ptr noundef nonnull %1819, ptr noundef nonnull %30, ptr noundef nonnull %1820, ptr noundef nonnull %30) #5
  %1821 = load i32, ptr %3, align 4, !tbaa !5
  %1822 = add nsw i32 %1821, -1
  store i32 %1822, ptr %18, align 4, !tbaa !5
  %.not32963832 = icmp slt i32 %1821, 2
  br i1 %.not32963832, label %._crit_edge3836, label %.lr.ph3835

.lr.ph3835:                                       ; preds = %1812, %.lr.ph3835
  %indvars.iv4398 = phi i64 [ %indvars.iv.next4399, %.lr.ph3835 ], [ 1, %1812 ]
  %indvars.iv.next4399 = add nuw nsw i64 %indvars.iv4398, 1
  %1823 = sub nsw i64 %1818, %indvars.iv4398
  %1824 = mul nsw i64 %1823, %91
  %1825 = getelementptr %struct.doublecomplex, ptr %36, i64 %1824
  %1826 = getelementptr %struct.doublecomplex, ptr %1825, i64 %indvars.iv.next4399
  %gep4782 = getelementptr %struct.doublecomplex, ptr %invariant.gep4781, i64 %indvars.iv4398
  %1827 = getelementptr %struct.doublecomplex, ptr %gep4782, i64 %1824
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %1826, ptr noundef nonnull %26, ptr noundef %1827, ptr noundef nonnull %26, ptr noundef nonnull %1820, ptr noundef nonnull %1819, ptr noundef nonnull %30) #5
  %1828 = load i32, ptr %18, align 4, !tbaa !5
  %1829 = sext i32 %1828 to i64
  %.not3296.not = icmp slt i64 %indvars.iv4398, %1829
  br i1 %.not3296.not, label %.lr.ph3835, label %._crit_edge3836, !llvm.loop !58

._crit_edge3836:                                  ; preds = %.lr.ph3835, %1812
  %1830 = mul nsw i32 %1802, %34
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr %struct.doublecomplex, ptr %36, i64 %1831
  %1833 = getelementptr i8, ptr %1832, i64 16
  %1834 = add nsw i32 %1802, 1
  %1835 = mul nsw i32 %1834, %34
  %1836 = sext i32 %1835 to i64
  %gep3848 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %1836
  %1837 = getelementptr i8, ptr %1832, i64 32
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %1833, ptr noundef %gep3848, ptr noundef %1837, ptr noundef nonnull %26, ptr noundef nonnull %1820, ptr noundef nonnull %1819, ptr noundef nonnull %30) #5
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %1819, ptr noundef nonnull %30) #5
  %.pre4600 = load i32, ptr %3, align 4, !tbaa !5
  br label %1838

1838:                                             ; preds = %._crit_edge3836, %.lr.ph3851
  %1839 = phi i32 [ %.pre4600, %._crit_edge3836 ], [ %1805, %.lr.ph3851 ]
  %1840 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub4221 = sub i32 %1840, %.1032093849
  %1841 = add i32 %reass.sub4221, 1
  store i32 %1841, ptr %18, align 4, !tbaa !5
  %.not3297.not3838 = icmp sgt i32 %1839, %1841
  br i1 %.not3297.not3838, label %.lr.ph3841, label %._crit_edge3842

.lr.ph3841:                                       ; preds = %1838
  %1842 = mul nsw i32 %1802, %34
  %1843 = add i32 %1842, 1
  %1844 = add nsw i32 %1802, 1
  %1845 = mul nsw i32 %1844, %34
  %1846 = sext i32 %1802 to i64
  %1847 = getelementptr inbounds double, ptr %44, i64 %1846
  %1848 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1846
  br label %1849

1849:                                             ; preds = %.lr.ph3841, %1865
  %1850 = phi i32 [ %1841, %.lr.ph3841 ], [ %1866, %1865 ]
  %.1031953839.in = phi i32 [ %1839, %.lr.ph3841 ], [ %.1031953839, %1865 ]
  %.1031953839 = add nsw i32 %.1031953839.in, -1
  %1851 = load i32, ptr %2, align 4, !tbaa !5
  %1852 = sub i32 %.1031953839, %1802
  %1853 = add i32 %1852, %1851
  %1854 = load i32, ptr %30, align 4, !tbaa !5
  %1855 = sdiv i32 %1853, %1854
  store i32 %1855, ptr %33, align 4, !tbaa !5
  %1856 = icmp sgt i32 %1855, 0
  br i1 %1856, label %1857, label %1865

1857:                                             ; preds = %1849
  %1858 = sub nsw i32 %1854, %.1031953839
  %1859 = add i32 %1843, %1858
  %1860 = sext i32 %1859 to i64
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1860
  %1862 = add nsw i32 %1858, %1845
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1863
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %1861, ptr noundef nonnull %26, ptr noundef %1864, ptr noundef nonnull %26, ptr noundef nonnull %1847, ptr noundef nonnull %1848, ptr noundef nonnull %30) #5
  %.pre4601 = load i32, ptr %18, align 4, !tbaa !5
  br label %1865

1865:                                             ; preds = %1849, %1857
  %1866 = phi i32 [ %1850, %1849 ], [ %.pre4601, %1857 ]
  %.not3297.not = icmp sgt i32 %.1031953839, %1866
  br i1 %.not3297.not, label %1849, label %._crit_edge3842, !llvm.loop !59

._crit_edge3842:                                  ; preds = %1865, %1838
  br i1 %.not, label %1867, label %.loopexit3507

1867:                                             ; preds = %._crit_edge3842
  store i32 %1810, ptr %18, align 4, !tbaa !5
  %1868 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %1868, ptr %17, align 4, !tbaa !5
  %1869 = icmp slt i32 %1868, 0
  %1870 = icmp slt i32 %1809, 1
  %1871 = icmp sgt i32 %1809, -1
  %.in3843 = select i1 %1869, i1 %1870, i1 %1871
  br i1 %.in3843, label %.lr.ph3846, label %.loopexit3507

.lr.ph3846:                                       ; preds = %1867, %.lr.ph3846
  %.2032433844 = phi i32 [ %1887, %.lr.ph3846 ], [ %1802, %1867 ]
  %1872 = load i32, ptr %2, align 4, !tbaa !5
  %1873 = sub nsw i32 %1872, %85
  store i32 %1873, ptr %15, align 4, !tbaa !5
  %1874 = mul nsw i32 %.2032433844, %40
  %1875 = add nsw i32 %1874, %87
  %1876 = sext i32 %1875 to i64
  %1877 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %1876
  %1878 = add nsw i32 %.2032433844, 1
  %1879 = mul nsw i32 %1878, %40
  %1880 = add nsw i32 %1879, %87
  %1881 = sext i32 %1880 to i64
  %1882 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %1881
  %1883 = sext i32 %.2032433844 to i64
  %1884 = getelementptr inbounds double, ptr %44, i64 %1883
  %1885 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1883
  call void @zrot_(ptr noundef nonnull %15, ptr noundef %1877, ptr noundef nonnull @c__1, ptr noundef %1882, ptr noundef nonnull @c__1, ptr noundef nonnull %1884, ptr noundef nonnull %1885) #5
  %1886 = load i32, ptr %17, align 4, !tbaa !5
  %1887 = add nsw i32 %1886, %.2032433844
  %1888 = icmp slt i32 %1886, 0
  %1889 = load i32, ptr %18, align 4
  %1890 = icmp sge i32 %1887, %1889
  %1891 = icmp sle i32 %1887, %1889
  %.in = select i1 %1888, i1 %1890, i1 %1891
  br i1 %.in, label %.lr.ph3846, label %.loopexit3507, !llvm.loop !60

.loopexit3507:                                    ; preds = %.lr.ph3846, %1867, %._crit_edge3842
  %1892 = add nsw i32 %.1032093849, -1
  %1893 = icmp sgt i32 %.1032093849, 1
  br i1 %1893, label %.lr.ph3851, label %._crit_edge3852, !llvm.loop !61

._crit_edge3852.thread:                           ; preds = %._crit_edge3830, %1672
  %.ph4673 = phi i32 [ %.pre4599, %._crit_edge3830 ], [ %1673, %1672 ]
  %1894 = add nsw i32 %.ph4673, -1
  store i32 %1894, ptr %17, align 4, !tbaa !5
  br label %.loopexit3511

._crit_edge3852:                                  ; preds = %.loopexit3507
  %.pre4602 = load i32, ptr %4, align 4, !tbaa !5
  %1895 = add nsw i32 %.pre4602, -1
  store i32 %1895, ptr %17, align 4, !tbaa !5
  %.not32943858 = icmp slt i32 %.pre4602, 2
  br i1 %.not32943858, label %.loopexit3511, label %.lr.ph3861

.lr.ph3861:                                       ; preds = %._crit_edge3852, %._crit_edge3857
  %1896 = phi i32 [ %1935, %._crit_edge3857 ], [ %1895, %._crit_edge3852 ]
  %.1132103859 = phi i32 [ %1936, %._crit_edge3857 ], [ 1, %._crit_edge3852 ]
  store i32 1, ptr %18, align 4, !tbaa !5
  %1897 = sub nsw i32 %.1132103859, %.1318134113441
  %1898 = add nsw i32 %1897, 2
  store i32 %1898, ptr %15, align 4, !tbaa !5
  %1899 = xor i32 %.1132103859, -1
  %1900 = add i32 %.1324834083443, %1899
  %1901 = icmp slt i32 %1897, 0
  %1902 = select i1 %1901, i32 1, i32 %1898
  %1903 = load i32, ptr %30, align 4, !tbaa !5
  %1904 = mul nsw i32 %1903, %1902
  %1905 = add nsw i32 %1900, %1904
  %1906 = load i32, ptr %4, align 4, !tbaa !5
  %1907 = sub nsw i32 %1906, %.1132103859
  %1908 = icmp sgt i32 %1907, 0
  br i1 %1908, label %.lr.ph3856, label %._crit_edge3857

.lr.ph3856:                                       ; preds = %.lr.ph3861
  %1909 = mul nsw i32 %1905, %34
  %1910 = add i32 %1909, 1
  %1911 = add nsw i32 %1905, 1
  %1912 = mul nsw i32 %1911, %34
  %1913 = sub nsw i32 %1905, %85
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds double, ptr %44, i64 %1914
  %1916 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1914
  br label %1917

1917:                                             ; preds = %.lr.ph3856, %1932
  %.1131963854 = phi i32 [ %1907, %.lr.ph3856 ], [ %1933, %1932 ]
  %1918 = load i32, ptr %2, align 4, !tbaa !5
  %1919 = sub i32 %.1131963854, %1905
  %1920 = add i32 %1919, %1918
  %1921 = load i32, ptr %30, align 4, !tbaa !5
  %1922 = sdiv i32 %1920, %1921
  store i32 %1922, ptr %33, align 4, !tbaa !5
  %1923 = icmp sgt i32 %1922, 0
  br i1 %1923, label %1924, label %1932

1924:                                             ; preds = %1917
  %1925 = sub nsw i32 %1921, %.1131963854
  %1926 = add i32 %1910, %1925
  %1927 = sext i32 %1926 to i64
  %1928 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1927
  %1929 = add nsw i32 %1925, %1912
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %1930
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %1928, ptr noundef nonnull %26, ptr noundef %1931, ptr noundef nonnull %26, ptr noundef nonnull %1915, ptr noundef nonnull %1916, ptr noundef nonnull %30) #5
  br label %1932

1932:                                             ; preds = %1917, %1924
  %1933 = add nsw i32 %.1131963854, -1
  %1934 = icmp sgt i32 %.1131963854, 1
  br i1 %1934, label %1917, label %._crit_edge3857.loopexit, !llvm.loop !62

._crit_edge3857.loopexit:                         ; preds = %1932
  %.pre4603 = load i32, ptr %17, align 4, !tbaa !5
  br label %._crit_edge3857

._crit_edge3857:                                  ; preds = %._crit_edge3857.loopexit, %.lr.ph3861
  %1935 = phi i32 [ %.pre4603, %._crit_edge3857.loopexit ], [ %1896, %.lr.ph3861 ]
  %1936 = add nuw nsw i32 %.1132103859, 1
  %.not3294.not = icmp slt i32 %.1132103859, %1935
  br i1 %.not3294.not, label %.lr.ph3861, label %._crit_edge3862, !llvm.loop !63

._crit_edge3862:                                  ; preds = %._crit_edge3857
  %.pre4604 = load i32, ptr %4, align 4, !tbaa !5
  %1937 = icmp sgt i32 %.pre4604, 1
  br i1 %1937, label %1938, label %.loopexit3511

1938:                                             ; preds = %._crit_edge3862
  %1939 = load i32, ptr %3, align 4, !tbaa !5
  %1940 = add nsw i32 %1939, %1905
  store i32 %1940, ptr %17, align 4, !tbaa !5
  %1941 = load i32, ptr %2, align 4, !tbaa !5
  %.not3295.not3864 = icmp sgt i32 %1941, %1940
  br i1 %.not3295.not3864, label %.lr.ph3867, label %.loopexit3511

.lr.ph3867:                                       ; preds = %1938
  %1942 = add i32 %1939, %85
  %1943 = sext i32 %1941 to i64
  %1944 = sext i32 %1940 to i64
  %1945 = sub nsw i64 %1943, %1944
  %xtraiter5285 = and i64 %1945, 1
  %lcmp.mod5286.not = icmp eq i64 %xtraiter5285, 0
  br i1 %lcmp.mod5286.not, label %.prol.loopexit5284, label %.prol.loopexit5284.unr-lcssa

.prol.loopexit5284.unr-lcssa:                     ; preds = %.lr.ph3867
  %indvars.iv.next4402.prol = add nsw i64 %1943, -1
  %1946 = trunc nsw i64 %indvars.iv.next4402.prol to i32
  %1947 = sub i32 %1946, %1942
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds double, ptr %44, i64 %1948
  %1950 = load double, ptr %1949, align 8, !tbaa !12
  %1951 = sub nsw i64 %indvars.iv.next4402.prol, %93
  %1952 = getelementptr inbounds double, ptr %44, i64 %1951
  store double %1950, ptr %1952, align 8, !tbaa !12
  %1953 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1948
  %1954 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1951
  %1955 = load <2 x double>, ptr %1953, align 8, !tbaa !12
  store <2 x double> %1955, ptr %1954, align 8, !tbaa !12
  br label %.prol.loopexit5284

.prol.loopexit5284:                               ; preds = %.prol.loopexit5284.unr-lcssa, %.lr.ph3867
  %indvars.iv4401.unr = phi i64 [ %1943, %.lr.ph3867 ], [ %indvars.iv.next4402.prol, %.prol.loopexit5284.unr-lcssa ]
  %.lcssa5271.unr = phi i32 [ poison, %.lr.ph3867 ], [ %1947, %.prol.loopexit5284.unr-lcssa ]
  %.lcssa5270.unr = phi i64 [ poison, %.lr.ph3867 ], [ %1951, %.prol.loopexit5284.unr-lcssa ]
  %1956 = add nsw i64 %1943, -1
  %1957 = icmp eq i64 %1956, %1944
  br i1 %1957, label %..loopexit3511_crit_edge, label %.lr.ph3867.new

.lr.ph3867.new:                                   ; preds = %.prol.loopexit5284, %.lr.ph3867.new
  %indvars.iv4401 = phi i64 [ %indvars.iv.next4402.1, %.lr.ph3867.new ], [ %indvars.iv4401.unr, %.prol.loopexit5284 ]
  %indvars.iv.next4402 = add nsw i64 %indvars.iv4401, -1
  %1958 = trunc nsw i64 %indvars.iv.next4402 to i32
  %1959 = sub i32 %1958, %1942
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds double, ptr %44, i64 %1960
  %1962 = load double, ptr %1961, align 8, !tbaa !12
  %1963 = sub nsw i64 %indvars.iv.next4402, %93
  %1964 = getelementptr inbounds double, ptr %44, i64 %1963
  store double %1962, ptr %1964, align 8, !tbaa !12
  %1965 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1960
  %1966 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1963
  %1967 = load <2 x double>, ptr %1965, align 8, !tbaa !12
  store <2 x double> %1967, ptr %1966, align 8, !tbaa !12
  %indvars.iv.next4402.1 = add nsw i64 %indvars.iv4401, -2
  %1968 = trunc nsw i64 %indvars.iv.next4402.1 to i32
  %1969 = sub i32 %1968, %1942
  %1970 = sext i32 %1969 to i64
  %1971 = getelementptr inbounds double, ptr %44, i64 %1970
  %1972 = load double, ptr %1971, align 8, !tbaa !12
  %1973 = sub nsw i64 %indvars.iv.next4402.1, %93
  %1974 = getelementptr inbounds double, ptr %44, i64 %1973
  store double %1972, ptr %1974, align 8, !tbaa !12
  %1975 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1970
  %1976 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1973
  %1977 = load <2 x double>, ptr %1975, align 8, !tbaa !12
  store <2 x double> %1977, ptr %1976, align 8, !tbaa !12
  %.not3295.not.1 = icmp sgt i64 %indvars.iv.next4402.1, %1944
  br i1 %.not3295.not.1, label %.lr.ph3867.new, label %..loopexit3511_crit_edge, !llvm.loop !64

..loopexit3511_crit_edge:                         ; preds = %.lr.ph3867.new, %.prol.loopexit5284
  %.lcssa5271 = phi i32 [ %.lcssa5271.unr, %.prol.loopexit5284 ], [ %1969, %.lr.ph3867.new ]
  %.lcssa5270 = phi i64 [ %.lcssa5270.unr, %.prol.loopexit5284 ], [ %1973, %.lr.ph3867.new ]
  %1978 = trunc nsw i64 %.lcssa5270 to i32
  store i32 %1978, ptr %18, align 4, !tbaa !5
  store i32 %.lcssa5271, ptr %15, align 4, !tbaa !5
  br label %.loopexit3511

..loopexit3512_crit_edge:                         ; preds = %.lr.ph3774.new, %.prol.loopexit5280
  %.lcssa5262 = phi i32 [ %.lcssa5262.unr, %.prol.loopexit5280 ], [ %1044, %.lr.ph3774.new ]
  %.lcssa5261 = phi i64 [ %.lcssa5261.unr, %.prol.loopexit5280 ], [ %1048, %.lr.ph3774.new ]
  %1979 = trunc nsw i64 %.lcssa5261 to i32
  store i32 %1979, ptr %17, align 4, !tbaa !5
  store i32 %.lcssa5262, ptr %18, align 4, !tbaa !5
  br label %.loopexit3511

.loopexit3511:                                    ; preds = %._crit_edge3852.thread, %._crit_edge3852, %._crit_edge3759.thread, %._crit_edge3759, %1013, %..loopexit3512_crit_edge, %1938, %..loopexit3511_crit_edge, %._crit_edge3862, %._crit_edge3769
  %1980 = phi i32 [ %.pre4588, %._crit_edge3769 ], [ %.pre4604, %._crit_edge3862 ], [ %.pre4604, %..loopexit3511_crit_edge ], [ %.pre4604, %1938 ], [ %.pre4588, %..loopexit3512_crit_edge ], [ %.pre4588, %1013 ], [ %.ph, %._crit_edge3759.thread ], [ %.pre4586, %._crit_edge3759 ], [ %.ph4673, %._crit_edge3852.thread ], [ %.pre4602, %._crit_edge3852 ]
  %.031643542 = phi i32 [ %.031643543, %._crit_edge3769 ], [ %.031643544, %._crit_edge3862 ], [ %.031643544, %..loopexit3511_crit_edge ], [ %.031643544, %1938 ], [ %.031643543, %..loopexit3512_crit_edge ], [ %.031643543, %1013 ], [ %.031643543, %._crit_edge3759.thread ], [ %.031643543, %._crit_edge3759 ], [ %.031643544, %._crit_edge3852.thread ], [ %.031643544, %._crit_edge3852 ]
  %.131713416 = phi i32 [ %.1317134153424, %._crit_edge3769 ], [ %.1317134173437, %._crit_edge3862 ], [ %.1317134173437, %..loopexit3511_crit_edge ], [ %.1317134173437, %1938 ], [ %.1317134153424, %..loopexit3512_crit_edge ], [ %.1317134153424, %1013 ], [ %.1317134153424, %._crit_edge3759.thread ], [ %.1317134153424, %._crit_edge3759 ], [ %.1317134173437, %._crit_edge3852.thread ], [ %.1317134173437, %._crit_edge3852 ]
  %.131763413 = phi i32 [ %.1317634123426, %._crit_edge3769 ], [ %.1317634143439, %._crit_edge3862 ], [ %.1317634143439, %..loopexit3511_crit_edge ], [ %.1317634143439, %1938 ], [ %.1317634123426, %..loopexit3512_crit_edge ], [ %.1317634123426, %1013 ], [ %.1317634123426, %._crit_edge3759.thread ], [ %.1317634123426, %._crit_edge3759 ], [ %.1317634143439, %._crit_edge3852.thread ], [ %.1317634143439, %._crit_edge3852 ]
  %.131813410 = phi i32 [ %.1318134093428, %._crit_edge3769 ], [ %.1318134113441, %._crit_edge3862 ], [ %.1318134113441, %..loopexit3511_crit_edge ], [ %.1318134113441, %1938 ], [ %.1318134093428, %..loopexit3512_crit_edge ], [ %.1318134093428, %1013 ], [ %.1318134093428, %._crit_edge3759.thread ], [ %.1318134093428, %._crit_edge3759 ], [ %.1318134113441, %._crit_edge3852.thread ], [ %.1318134113441, %._crit_edge3852 ]
  %.132483407 = phi i32 [ %.1324834063430, %._crit_edge3769 ], [ %.1324834083443, %._crit_edge3862 ], [ %.1324834083443, %..loopexit3511_crit_edge ], [ %.1324834083443, %1938 ], [ %.1324834063430, %..loopexit3512_crit_edge ], [ %.1324834063430, %1013 ], [ %.1324834063430, %._crit_edge3759.thread ], [ %.1324834063430, %._crit_edge3759 ], [ %.1324834083443, %._crit_edge3852.thread ], [ %.1324834083443, %._crit_edge3852 ]
  %.pre4523.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %.outer3513

.loopexit3515:                                    ; preds = %._crit_edge, %.lr.ph.split
  %.23182 = phi i32 [ %85, %.lr.ph.split ], [ %.03180.lcssa, %._crit_edge ]
  %.23177 = phi i32 [ %104, %.lr.ph.split ], [ %.03175.lcssa, %._crit_edge ]
  %.23172 = phi i32 [ %107, %.lr.ph.split ], [ %.03170.lcssa, %._crit_edge ]
  %invariant.gep4189 = getelementptr i8, ptr %42, i64 16
  %invariant.gep4195 = getelementptr i8, ptr %39, i64 32
  br i1 %.not3277, label %.outer.us.preheader, label %.outer.preheader

.outer.preheader:                                 ; preds = %.loopexit3515
  %invariant.gep4785 = getelementptr %struct.doublecomplex, ptr %39, i64 %94
  %invariant.gep4783 = getelementptr %struct.doublecomplex, ptr %39, i64 %94
  %scevgep4940 = getelementptr i8, ptr %11, i64 16
  %scevgep4944 = getelementptr i8, ptr %11, i64 24
  %scevgep4948 = getelementptr i8, ptr %11, i64 16
  %scevgep4953 = getelementptr i8, ptr %11, i64 24
  %scevgep4958 = getelementptr i8, ptr %12, i64 8
  %scevgep4959 = getelementptr i8, ptr %12, i64 -8
  %scevgep4961 = getelementptr i8, ptr %12, i64 8
  %scevgep4963 = getelementptr i8, ptr %12, i64 -8
  %scevgep4965 = getelementptr i8, ptr %11, i64 -24
  %scevgep4967 = getelementptr i8, ptr %11, i64 -16
  %scevgep4969 = getelementptr i8, ptr %11, i64 16
  %scevgep4971 = getelementptr i8, ptr %11, i64 -24
  %scevgep4973 = getelementptr i8, ptr %11, i64 24
  %scevgep4975 = getelementptr i8, ptr %11, i64 -16
  %1981 = add i32 %34, -1
  %1982 = shl nsw i64 %35, 4
  %scevgep5038 = getelementptr i8, ptr %5, i64 %1982
  %1983 = or disjoint i64 %1982, 8
  %scevgep5043 = getelementptr i8, ptr %5, i64 %1983
  %invariant.gep5378 = getelementptr i8, ptr %36, i64 16
  %invariant.gep5380 = getelementptr i8, ptr %36, i64 16
  br label %.outer

.outer.us.preheader:                              ; preds = %.loopexit3515
  %1984 = add i32 %34, -1
  %scevgep5068 = getelementptr i8, ptr %11, i64 16
  %scevgep5072 = getelementptr i8, ptr %11, i64 24
  %scevgep5076 = getelementptr i8, ptr %11, i64 16
  %scevgep5081 = getelementptr i8, ptr %11, i64 24
  %scevgep5087 = getelementptr i8, ptr %12, i64 8
  %scevgep5088 = getelementptr i8, ptr %12, i64 -8
  %scevgep5090 = getelementptr i8, ptr %12, i64 8
  %scevgep5092 = getelementptr i8, ptr %12, i64 -8
  %scevgep5094 = getelementptr i8, ptr %11, i64 -24
  %scevgep5096 = getelementptr i8, ptr %11, i64 -16
  %scevgep5098 = getelementptr i8, ptr %11, i64 16
  %scevgep5100 = getelementptr i8, ptr %11, i64 -24
  %scevgep5102 = getelementptr i8, ptr %11, i64 24
  %scevgep5104 = getelementptr i8, ptr %11, i64 -16
  %1985 = shl nsw i64 %35, 4
  %scevgep5174 = getelementptr i8, ptr %5, i64 %1985
  %1986 = or disjoint i64 %1985, 8
  %scevgep5179 = getelementptr i8, ptr %5, i64 %1986
  %invariant.gep5382 = getelementptr i8, ptr %39, i64 16
  br label %.outer.us

.outer.us:                                        ; preds = %.outer.us.backedge, %.outer.us.preheader
  %.pre4550 = phi i32 [ %.pre4522, %.outer.us.preheader ], [ %.pre4550.be, %.outer.us.backedge ]
  %1987 = phi i32 [ %99, %.outer.us.preheader ], [ %.be, %.outer.us.backedge ]
  %.23249.ph.us = phi i32 [ 0, %.outer.us.preheader ], [ %.33250.us, %.outer.us.backedge ]
  %.33183.ph.us = phi i32 [ %.23182, %.outer.us.preheader ], [ %.43184.us, %.outer.us.backedge ]
  %.33178.ph.us = phi i32 [ %.23177, %.outer.us.preheader ], [ %.43179.us, %.outer.us.backedge ]
  %.33173.ph.us = phi i32 [ %.23172, %.outer.us.preheader ], [ %.43174.us, %.outer.us.backedge ]
  %.13165.ph.us = phi i32 [ 1, %.outer.us.preheader ], [ %.131653521.us, %.outer.us.backedge ]
  %.not33343870.us = icmp eq i32 %.13165.ph.us, 0
  br i1 %.not33343870.us, label %1988, label %.lr.ph3873.us

1988:                                             ; preds = %.lr.ph3873.split.split.us, %.outer.us
  %.33183.lcssa.us = phi i32 [ %87, %.lr.ph3873.split.split.us ], [ %.33183.ph.us, %.outer.us ]
  %.33178.lcssa.us = phi i32 [ %2812, %.lr.ph3873.split.split.us ], [ %.33178.ph.us, %.outer.us ]
  %.33173.lcssa.us = phi i32 [ %2815, %.lr.ph3873.split.split.us ], [ %.33173.ph.us, %.outer.us ]
  %1989 = sub nsw i32 %.23249.ph.us, %.pre4550
  %1990 = icmp slt i32 %1989, 2
  br i1 %1990, label %.loopexit3504, label %1991

1991:                                             ; preds = %.lr.ph3873.split.us.us, %1988
  %.131653521.us = phi i32 [ 0, %1988 ], [ %.13165.ph.us, %.lr.ph3873.split.us.us ]
  %.not33343518.us = phi i1 [ true, %1988 ], [ false, %.lr.ph3873.split.us.us ]
  %.33250.us = phi i32 [ %1989, %1988 ], [ %2808, %.lr.ph3873.split.us.us ]
  %.43184.us = phi i32 [ %.33183.lcssa.us, %1988 ], [ %2817, %.lr.ph3873.split.us.us ]
  %.43179.us = phi i32 [ %.33178.lcssa.us, %1988 ], [ %2812, %.lr.ph3873.split.us.us ]
  %.43174.us = phi i32 [ %.33173.lcssa.us, %1988 ], [ %2815, %.lr.ph3873.split.us.us ]
  %1992 = load i32, ptr %32, align 4, !tbaa !5
  %1993 = sub nsw i32 %85, %1992
  %1994 = icmp slt i32 %.33250.us, %1993
  br i1 %1994, label %1997, label %1995

1995:                                             ; preds = %1991
  %1996 = load i32, ptr %2, align 4, !tbaa !5
  br label %1997

1997:                                             ; preds = %1995, %1991
  %storemerge.us = phi i32 [ %1996, %1995 ], [ %85, %1991 ]
  store i32 %storemerge.us, ptr %29, align 4, !tbaa !5
  br i1 %.not33343518.us, label %2207, label %1998

1998:                                             ; preds = %1997
  %1999 = mul nsw i32 %.33250.us, %37
  %2000 = sext i32 %1999 to i64
  %gep5383 = getelementptr %struct.doublecomplex, ptr %invariant.gep5382, i64 %2000
  %2001 = load double, ptr %gep5383, align 8, !tbaa !9
  %2002 = mul nsw i32 %.33250.us, %34
  %2003 = add nsw i32 %2002, 1
  %2004 = sext i32 %2003 to i64
  %2005 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2004
  %2006 = load double, ptr %2005, align 8, !tbaa !9
  %2007 = fdiv double %2006, %2001
  %2008 = fdiv double %2007, %2001
  store double %2008, ptr %19, align 8, !tbaa !12
  store double %2008, ptr %2005, align 8, !tbaa !9
  %2009 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2004, i32 1
  store double 0.000000e+00, ptr %2009, align 8, !tbaa !13
  %2010 = add nsw i32 %.33250.us, -1
  store i32 %2010, ptr %18, align 4, !tbaa !5
  %.not33384036.us.not = icmp slt i32 %.43179.us, %.33250.us
  %2011 = add i32 %.33250.us, 1
  br i1 %.not33384036.us.not, label %.lr.ph4039.us, label %._crit_edge4616

.lr.ph4039.us.new:                                ; preds = %.prol.loopexit5296, %.lr.ph4039.us.new
  %indvars.iv4454 = phi i64 [ %indvars.iv.next4455.1, %.lr.ph4039.us.new ], [ %indvars.iv4454.unr, %.prol.loopexit5296 ]
  %2012 = mul nsw i64 %indvars.iv4454, %91
  %2013 = trunc nsw i64 %indvars.iv4454 to i32
  %2014 = sub i32 %2011, %2013
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr %struct.doublecomplex, ptr %36, i64 %2012
  %2017 = getelementptr %struct.doublecomplex, ptr %2016, i64 %2015
  %2018 = load <2 x double>, ptr %2017, align 8, !tbaa !12
  %2019 = fdiv <2 x double> %2018, %2820
  store <2 x double> %2019, ptr %2017, align 8, !tbaa !12
  %indvars.iv.next4455 = add nsw i64 %indvars.iv4454, 1
  %2020 = mul nsw i64 %indvars.iv.next4455, %91
  %2021 = trunc nsw i64 %indvars.iv.next4455 to i32
  %2022 = sub i32 %2011, %2021
  %2023 = sext i32 %2022 to i64
  %2024 = getelementptr %struct.doublecomplex, ptr %36, i64 %2020
  %2025 = getelementptr %struct.doublecomplex, ptr %2024, i64 %2023
  %2026 = load <2 x double>, ptr %2025, align 8, !tbaa !12
  %2027 = fdiv <2 x double> %2026, %2820
  store <2 x double> %2027, ptr %2025, align 8, !tbaa !12
  %indvars.iv.next4455.1 = add nsw i64 %indvars.iv4454, 2
  %lftr.wideiv4457.1 = trunc i64 %indvars.iv.next4455.1 to i32
  %exitcond4458.not.1 = icmp eq i32 %.33250.us, %lftr.wideiv4457.1
  br i1 %exitcond4458.not.1, label %._crit_edge4040.us, label %.lr.ph4039.us.new, !llvm.loop !65

._crit_edge4616:                                  ; preds = %1998, %._crit_edge4040.us
  %2028 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %2028, ptr %17, align 4, !tbaa !5
  %2029 = add nsw i32 %.pre4550, %.33250.us
  store i32 %2029, ptr %15, align 4, !tbaa !5
  %2030 = call i32 @llvm.smin.i32(i32 %2028, i32 %2029)
  %.not33404045.us.not = icmp slt i32 %.33250.us, %2030
  br i1 %.not33404045.us.not, label %.lr.ph4048.us, label %2044

scalar.ph5185:                                    ; preds = %scalar.ph5185, %scalar.ph5185.preheader.new
  %indvars.iv4459 = phi i64 [ %indvars.iv4459.unr, %scalar.ph5185.preheader.new ], [ %indvars.iv.next4460.1, %scalar.ph5185 ]
  %2031 = trunc i64 %indvars.iv4459 to i32
  %2032 = add i32 %2830, %2031
  %2033 = sext i32 %2032 to i64
  %2034 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2033
  %2035 = load <2 x double>, ptr %2034, align 8, !tbaa !12
  %2036 = fdiv <2 x double> %2035, %2851
  store <2 x double> %2036, ptr %2034, align 8, !tbaa !12
  %2037 = trunc i64 %indvars.iv4459 to i32
  %2038 = add i32 %2037, 1
  %2039 = add i32 %2830, %2038
  %2040 = sext i32 %2039 to i64
  %2041 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2040
  %2042 = load <2 x double>, ptr %2041, align 8, !tbaa !12
  %2043 = fdiv <2 x double> %2042, %2853
  store <2 x double> %2043, ptr %2041, align 8, !tbaa !12
  %indvars.iv.next4460.1 = add nuw nsw i64 %indvars.iv4459, 2
  %lftr.wideiv4462.1 = trunc i64 %indvars.iv.next4460.1 to i32
  %exitcond4463.not.1 = icmp eq i32 %2833, %lftr.wideiv4462.1
  br i1 %exitcond4463.not.1, label %._crit_edge4049.us, label %scalar.ph5185, !llvm.loop !66

2044:                                             ; preds = %._crit_edge4049.us, %._crit_edge4616
  %2045 = add nsw i32 %1992, %.33250.us
  store i32 %2045, ptr %18, align 4, !tbaa !5
  %.not33414065.us = icmp slt i32 %1992, 1
  br i1 %.not33414065.us, label %._crit_edge4070.us, label %.lr.ph4069.us

2046:                                             ; preds = %.lr.ph4069.us, %._crit_edge4063.us
  %indvars.iv4464 = phi i64 [ %2896, %.lr.ph4069.us ], [ %indvars.iv.next4465, %._crit_edge4063.us ]
  %.183217.neg4067.us.in = phi i32 [ %.33250.us, %.lr.ph4069.us ], [ %.pre-phi4659, %._crit_edge4063.us ]
  %2047 = load i32, ptr %32, align 4, !tbaa !5
  %2048 = add nsw i32 %2047, %.33250.us
  store i32 %2048, ptr %17, align 4, !tbaa !5
  %2049 = sext i32 %2048 to i64
  %.not33614054.us = icmp sgt i64 %indvars.iv4464, %2049
  br i1 %.not33614054.us, label %._crit_edge4058.us, label %.lr.ph4057.us

2050:                                             ; preds = %.lr.ph4057.us, %2050
  %indvars.iv4466 = phi i64 [ %indvars.iv4464, %.lr.ph4057.us ], [ %indvars.iv.next4467, %2050 ]
  %2051 = trunc nsw i64 %indvars.iv4466 to i32
  %2052 = add i32 %2883, %2051
  store i32 %2052, ptr %15, align 4, !tbaa !5
  store i32 %2052, ptr %16, align 4, !tbaa !5
  %2053 = sub nsw i64 %indvars.iv4466, %2897
  %2054 = add nsw i64 %2053, 1
  %2055 = call { double, double } @Cd(ptr noundef %gep4792)
  %2056 = extractvalue { double, double } %2055, 0
  %2057 = extractvalue { double, double } %2055, 1
  %2058 = fneg double %2057
  %2059 = call ptr @_pCd(ptr noundef nonnull %23)
  %2060 = getelementptr inbounds i8, ptr %2059, i64 8
  store double %2056, ptr %2059, align 8
  store double %2058, ptr %2060, align 8
  %gep4788 = getelementptr %struct.doublecomplex, ptr %invariant.gep4787, i64 %2054
  %2061 = load double, ptr %gep4788, align 8, !tbaa !9
  %2062 = getelementptr inbounds i8, ptr %gep4788, i64 8
  %2063 = load double, ptr %2062, align 8, !tbaa !13
  %2064 = fneg double %2063
  %2065 = load <2 x double>, ptr %23, align 16, !tbaa !12
  %2066 = insertelement <2 x double> poison, double %2063, i64 0
  %2067 = insertelement <2 x double> %2066, double %2064, i64 1
  %2068 = fmul <2 x double> %2065, %2067
  %2069 = shufflevector <2 x double> %2068, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2070 = insertelement <2 x double> poison, double %2061, i64 0
  %2071 = shufflevector <2 x double> %2070, <2 x double> poison, <2 x i32> zeroinitializer
  %2072 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2071, <2 x double> %2065, <2 x double> %2069)
  store <2 x double> %2072, ptr %22, align 16, !tbaa !12
  %2073 = load i32, ptr %16, align 4, !tbaa !5
  %2074 = sext i32 %2073 to i64
  %2075 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2074
  %2076 = load <2 x double>, ptr %2075, align 8, !tbaa !12
  %2077 = fsub <2 x double> %2076, %2072
  store <2 x double> %2077, ptr %21, align 16, !tbaa !12
  %2078 = call { double, double } @Cd(ptr noundef %gep4794)
  %2079 = extractvalue { double, double } %2078, 0
  %2080 = extractvalue { double, double } %2078, 1
  %2081 = fneg double %2080
  %2082 = call ptr @_pCd(ptr noundef nonnull %24)
  %2083 = getelementptr inbounds i8, ptr %2082, i64 8
  store double %2079, ptr %2082, align 8
  store double %2081, ptr %2083, align 8
  %2084 = load <2 x double>, ptr %24, align 16
  %gep4790 = getelementptr %struct.doublecomplex, ptr %invariant.gep4789, i64 %2054
  %2085 = load double, ptr %90, align 8, !tbaa !13
  %2086 = fneg double %2085
  %2087 = load double, ptr %2005, align 8, !tbaa !9
  store double %2087, ptr %19, align 8, !tbaa !12
  %2088 = load double, ptr %gep4788, align 8, !tbaa !9
  %2089 = fmul double %2087, %2088
  %2090 = load double, ptr %2062, align 8, !tbaa !13
  %2091 = fmul double %2087, %2090
  %2092 = fneg double %2091
  %2093 = load <2 x double>, ptr %gep4790, align 8, !tbaa !12
  %2094 = insertelement <2 x double> poison, double %2085, i64 0
  %2095 = insertelement <2 x double> %2094, double %2086, i64 1
  %2096 = fmul <2 x double> %2093, %2095
  %2097 = shufflevector <2 x double> %2096, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2098 = shufflevector <2 x double> %2084, <2 x double> poison, <2 x i32> zeroinitializer
  %2099 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2098, <2 x double> %2093, <2 x double> %2097)
  %2100 = load <2 x double>, ptr %21, align 16, !tbaa !12
  %2101 = fsub <2 x double> %2100, %2099
  %2102 = call { double, double } @Cd(ptr noundef %gep4794)
  %2103 = extractvalue { double, double } %2102, 0
  %2104 = extractvalue { double, double } %2102, 1
  %2105 = fneg double %2104
  %2106 = call ptr @_pCd(ptr noundef nonnull %25)
  %2107 = getelementptr inbounds i8, ptr %2106, i64 8
  store double %2103, ptr %2106, align 8
  store double %2105, ptr %2107, align 8
  %2108 = load <2 x double>, ptr %25, align 16, !tbaa !12
  %2109 = insertelement <2 x double> poison, double %2091, i64 0
  %2110 = insertelement <2 x double> %2109, double %2092, i64 1
  %2111 = fmul <2 x double> %2108, %2110
  %2112 = shufflevector <2 x double> %2111, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2113 = insertelement <2 x double> poison, double %2089, i64 0
  %2114 = shufflevector <2 x double> %2113, <2 x double> poison, <2 x i32> zeroinitializer
  %2115 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2114, <2 x double> %2108, <2 x double> %2112)
  %2116 = fadd <2 x double> %2101, %2115
  store <2 x double> %2116, ptr %20, align 16, !tbaa !12
  %2117 = load i32, ptr %15, align 4, !tbaa !5
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2118
  store <2 x double> %2116, ptr %2119, align 8, !tbaa !12
  %indvars.iv.next4467 = add nsw i64 %indvars.iv4466, 1
  %2120 = load i32, ptr %17, align 4, !tbaa !5
  %2121 = sext i32 %2120 to i64
  %.not3361.us.not = icmp slt i64 %indvars.iv4466, %2121
  br i1 %.not3361.us.not, label %2050, label %._crit_edge4058.us.loopexit, !llvm.loop !67

._crit_edge4058.us.loopexit:                      ; preds = %2050
  %.pre4551 = load i32, ptr %32, align 4, !tbaa !5
  %.pre4612 = add nsw i32 %.pre4551, %.33250.us
  br label %._crit_edge4058.us

._crit_edge4058.us:                               ; preds = %._crit_edge4058.us.loopexit, %2046
  %.pre-phi4613 = phi i32 [ %.pre4612, %._crit_edge4058.us.loopexit ], [ %2048, %2046 ]
  %2122 = phi i32 [ %.pre4551, %._crit_edge4058.us.loopexit ], [ %2047, %2046 ]
  %2123 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %2123, ptr %15, align 4, !tbaa !5
  %2124 = load i32, ptr %3, align 4, !tbaa !5
  %2125 = add nsw i32 %2124, %.33250.us
  store i32 %2125, ptr %16, align 4, !tbaa !5
  %2126 = call i32 @llvm.smin.i32(i32 %2123, i32 %2125)
  store i32 %2126, ptr %17, align 4, !tbaa !5
  %.not3363.not4059.us = icmp slt i32 %.pre-phi4613, %2126
  %2127 = trunc i64 %indvars.iv4464 to i32
  br i1 %.not3363.not4059.us, label %.lr.ph4062.us, label %._crit_edge4063.us

._crit_edge4063.us:                               ; preds = %2130, %._crit_edge4058.us
  %.pre-phi4659 = phi i32 [ %2127, %._crit_edge4058.us ], [ %2888, %2130 ]
  %indvars.iv.next4465 = add nsw i64 %indvars.iv4464, 1
  %2128 = load i32, ptr %18, align 4, !tbaa !5
  %2129 = sext i32 %2128 to i64
  %.not3341.us.not = icmp slt i64 %indvars.iv4464, %2129
  br i1 %.not3341.us.not, label %2046, label %._crit_edge4070.us, !llvm.loop !68

2130:                                             ; preds = %.lr.ph4062.us, %2130
  %indvars.iv4469 = phi i64 [ %2893, %.lr.ph4062.us ], [ %indvars.iv.next4470, %2130 ]
  %indvars.iv.next4470 = add nsw i64 %indvars.iv4469, 1
  %2131 = trunc nsw i64 %indvars.iv.next4470 to i32
  %2132 = add i32 %2887, %2131
  store i32 %2132, ptr %15, align 4, !tbaa !5
  store i32 %2132, ptr %16, align 4, !tbaa !5
  %2133 = call { double, double } @Cd(ptr noundef %2891)
  %2134 = extractvalue { double, double } %2133, 0
  %2135 = extractvalue { double, double } %2133, 1
  %2136 = fneg double %2135
  %2137 = call ptr @_pCd(ptr noundef nonnull %21)
  %2138 = getelementptr inbounds i8, ptr %2137, i64 8
  store double %2134, ptr %2137, align 8
  store double %2136, ptr %2138, align 8
  %2139 = add i32 %2895, %2131
  %2140 = load <2 x double>, ptr %21, align 16
  %2141 = sext i32 %2139 to i64
  %2142 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2141
  %2143 = load double, ptr %89, align 8, !tbaa !13
  %2144 = fneg double %2143
  %2145 = load i32, ptr %16, align 4, !tbaa !5
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2146
  %2148 = load <2 x double>, ptr %2142, align 8, !tbaa !12
  %2149 = insertelement <2 x double> poison, double %2143, i64 0
  %2150 = insertelement <2 x double> %2149, double %2144, i64 1
  %2151 = fmul <2 x double> %2148, %2150
  %2152 = shufflevector <2 x double> %2151, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2153 = shufflevector <2 x double> %2140, <2 x double> poison, <2 x i32> zeroinitializer
  %2154 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2153, <2 x double> %2148, <2 x double> %2152)
  %2155 = load <2 x double>, ptr %2147, align 8, !tbaa !12
  %2156 = fsub <2 x double> %2155, %2154
  store <2 x double> %2156, ptr %20, align 16, !tbaa !12
  %2157 = load i32, ptr %15, align 4, !tbaa !5
  %2158 = sext i32 %2157 to i64
  %2159 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2158
  store <2 x double> %2156, ptr %2159, align 8, !tbaa !12
  %2160 = load i32, ptr %17, align 4, !tbaa !5
  %2161 = sext i32 %2160 to i64
  %.not3363.not.us = icmp slt i64 %indvars.iv.next4470, %2161
  br i1 %.not3363.not.us, label %2130, label %._crit_edge4063.us, !llvm.loop !69

._crit_edge4070.us:                               ; preds = %._crit_edge4063.us, %2044
  store i32 %.33250.us, ptr %18, align 4, !tbaa !5
  %.not33424081.us = icmp sgt i32 %.43179.us, %.33250.us
  br i1 %.not33424081.us, label %2189, label %.lr.ph4085.us

2162:                                             ; preds = %.lr.ph4085.us, %2188
  %indvars.iv4476 = phi i64 [ %2912, %.lr.ph4085.us ], [ %indvars.iv.next4477, %2188 ]
  %2163 = trunc i64 %indvars.iv4476 to i32
  %2164 = add i32 %2907, %2163
  %2165 = call i32 @llvm.smin.i32(i32 %2164, i32 %2909)
  %.not33604071.us.not = icmp slt i32 %.33250.us, %2165
  br i1 %.not33604071.us.not, label %.lr.ph4074.us, label %2188

2166:                                             ; preds = %.lr.ph4074.us, %2166
  %indvars.iv4473.in = phi i64 [ %2911, %.lr.ph4074.us ], [ %indvars.iv4473, %2166 ]
  %indvars.iv4473 = add nsw i64 %indvars.iv4473.in, 1
  %2167 = trunc nsw i64 %indvars.iv4473 to i32
  %2168 = add i32 %2901, %2167
  %2169 = add i32 %2910, %2167
  %2170 = sext i32 %2169 to i64
  %2171 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %2170
  %2172 = load double, ptr %2171, align 8, !tbaa !9
  %2173 = getelementptr inbounds i8, ptr %2171, i64 8
  %2174 = load double, ptr %2173, align 8, !tbaa !13
  %2175 = fneg double %2174
  %2176 = sext i32 %2168 to i64
  %2177 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2176
  %2178 = load <2 x double>, ptr %2905, align 8, !tbaa !12
  %2179 = insertelement <2 x double> poison, double %2174, i64 0
  %2180 = insertelement <2 x double> %2179, double %2175, i64 1
  %2181 = fmul <2 x double> %2178, %2180
  %2182 = shufflevector <2 x double> %2181, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2183 = insertelement <2 x double> poison, double %2172, i64 0
  %2184 = shufflevector <2 x double> %2183, <2 x double> poison, <2 x i32> zeroinitializer
  %2185 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2184, <2 x double> %2178, <2 x double> %2182)
  %2186 = load <2 x double>, ptr %2177, align 8, !tbaa !12
  %2187 = fsub <2 x double> %2186, %2185
  store <2 x double> %2187, ptr %2177, align 8, !tbaa !12
  %.not3360.us.not = icmp slt i64 %indvars.iv4473, %2906
  br i1 %.not3360.us.not, label %2166, label %._crit_edge4075.us, !llvm.loop !70

2188:                                             ; preds = %._crit_edge4075.us, %2162
  %.lcssa40774088.us = phi i32 [ %2168, %._crit_edge4075.us ], [ %2909, %2162 ]
  %.lcssa40764087.us = phi i32 [ %2168, %._crit_edge4075.us ], [ %2164, %2162 ]
  %indvars.iv.next4477 = add nsw i64 %indvars.iv4476, 1
  %lftr.wideiv4480 = trunc i64 %indvars.iv.next4477 to i32
  %exitcond4481.not = icmp eq i32 %2011, %lftr.wideiv4480
  br i1 %exitcond4481.not, label %._crit_edge4086.us, label %2162, !llvm.loop !71

2189:                                             ; preds = %._crit_edge4086.us, %._crit_edge4070.us
  br i1 %.not, label %2190, label %2200

2190:                                             ; preds = %2189
  %2191 = fdiv double 1.000000e+00, %2001
  store double %2191, ptr %19, align 8, !tbaa !12
  %2192 = mul nsw i32 %.33250.us, %40
  %2193 = sext i32 %2192 to i64
  %gep4194.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %2193
  call void @zdscal_(ptr noundef nonnull %29, ptr noundef nonnull %19, ptr noundef %gep4194.us, ptr noundef nonnull @c__1) #5
  %2194 = load i32, ptr %32, align 4, !tbaa !5
  %2195 = icmp sgt i32 %2194, 0
  br i1 %2195, label %2196, label %2200

2196:                                             ; preds = %2190
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %20, align 16, !tbaa !12
  %2197 = sext i32 %1999 to i64
  %gep4196.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4195, i64 %2197
  %2198 = mul nsw i32 %2011, %40
  %2199 = sext i32 %2198 to i64
  %gep4198.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %2199
  call void @zgerc_(ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %gep4194.us, ptr noundef nonnull @c__1, ptr noundef %gep4196.us, ptr noundef nonnull @c__1, ptr noundef %gep4198.us, ptr noundef nonnull %10) #5
  br label %2200

2200:                                             ; preds = %2196, %2190, %2189
  %2201 = mul nsw i32 %.43179.us, %34
  %2202 = sub i32 %2011, %.43179.us
  %2203 = add nsw i32 %2202, %2201
  %2204 = sext i32 %2203 to i64
  %2205 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2204
  %2206 = load <2 x double>, ptr %2205, align 8, !tbaa !12
  store <2 x double> %2206, ptr %31, align 16, !tbaa !12
  %.pre4552 = load i32, ptr %4, align 4, !tbaa !5
  br label %2207

2207:                                             ; preds = %2200, %1997
  %2208 = phi i32 [ %.pre4552, %2200 ], [ %1987, %1997 ]
  %2209 = add nsw i32 %2208, -1
  store i32 %2209, ptr %18, align 4, !tbaa !5
  %.not33434119.us = icmp slt i32 %2208, 2
  br i1 %.not33434119.us, label %._crit_edge4124.us, label %.lr.ph4123.us

2210:                                             ; preds = %.lr.ph4123.us, %.loopexit3499.us
  %indvars.iv4493 = phi i64 [ 1, %.lr.ph4123.us ], [ %indvars.iv.next4494, %.loopexit3499.us ]
  %indvars.iv4484 = phi i32 [ %2935, %.lr.ph4123.us ], [ %indvars.iv.next4485, %.loopexit3499.us ]
  %indvars.iv4482 = phi i32 [ %2934, %.lr.ph4123.us ], [ %indvars.iv.next4483, %.loopexit3499.us ]
  %.203219.neg4121.us = phi i32 [ -1, %.lr.ph4123.us ], [ %2394, %.loopexit3499.us ]
  %smax4486 = call i32 @llvm.smax.i32(i32 %indvars.iv4484, i32 1)
  %.pre4553 = load i32, ptr %30, align 4, !tbaa !5
  br i1 %.not33343518.us, label %._crit_edge4554, label %2211

._crit_edge4554:                                  ; preds = %2210
  %.pre4555 = load i32, ptr %3, align 4, !tbaa !5
  br label %2306

2211:                                             ; preds = %2210
  %2212 = add nsw i64 %indvars.iv4493, %2936
  %2213 = sext i32 %.pre4553 to i64
  %2214 = icmp sgt i64 %2212, %2213
  %2215 = icmp slt i64 %2212, %93
  %or.cond3397.us = select i1 %2214, i1 %2215, i1 false
  %.pre4556 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %or.cond3397.us, label %2216, label %2306

2216:                                             ; preds = %2211
  %2217 = add i32 %.pre4553, %.203219.neg4121.us
  %2218 = trunc nsw i64 %2212 to i32
  %2219 = sub nsw i32 %2218, %.pre4556
  %2220 = mul nsw i32 %2219, %34
  %2221 = add nsw i32 %2217, %2220
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2222
  %2224 = sext i32 %2219 to i64
  %2225 = getelementptr inbounds double, ptr %44, i64 %2224
  %2226 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2224
  call void @zlartg_(ptr noundef %2223, ptr noundef nonnull %31, ptr noundef nonnull %2225, ptr noundef nonnull %2226, ptr noundef nonnull %27) #5
  %2227 = trunc nuw nsw i64 %indvars.iv4493 to i32
  %2228 = add i32 %2929, %2227
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %2229
  %2231 = load double, ptr %2230, align 8, !tbaa !9
  %2232 = fneg double %2231
  %2233 = getelementptr inbounds i8, ptr %2230, i64 8
  %2234 = load double, ptr %2233, align 8, !tbaa !13
  %2235 = fneg double %2234
  %2236 = load i32, ptr %4, align 4, !tbaa !5
  %2237 = add i32 %2930, %2227
  %2238 = sub i32 %2237, %2236
  store i32 %2238, ptr %17, align 4, !tbaa !5
  %2239 = load i32, ptr %3, align 4, !tbaa !5
  %2240 = sub nsw i32 %2218, %2239
  store i32 %2240, ptr %15, align 4, !tbaa !5
  %2241 = sext i32 %2240 to i64
  %2242 = getelementptr inbounds double, ptr %44, i64 %2241
  %2243 = load double, ptr %2242, align 8, !tbaa !12
  %2244 = sext i32 %2239 to i64
  %2245 = sub nsw i64 %2212, %2244
  %2246 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2245
  %2247 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %2248 = insertelement <2 x double> poison, double %2235, i64 0
  %2249 = insertelement <2 x double> %2248, double %2234, i64 1
  %2250 = fmul <2 x double> %2247, %2249
  %2251 = shufflevector <2 x double> %2250, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2252 = insertelement <2 x double> poison, double %2232, i64 0
  %2253 = shufflevector <2 x double> %2252, <2 x double> poison, <2 x i32> zeroinitializer
  %2254 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2253, <2 x double> %2247, <2 x double> %2251)
  store <2 x double> %2254, ptr %20, align 16, !tbaa !12
  %2255 = call { double, double } @Cd(ptr noundef nonnull %2246)
  %2256 = extractvalue { double, double } %2255, 0
  %2257 = extractvalue { double, double } %2255, 1
  %2258 = fneg double %2257
  %2259 = call ptr @_pCd(ptr noundef nonnull %22)
  %2260 = getelementptr inbounds i8, ptr %2259, i64 8
  store double %2256, ptr %2259, align 8
  store double %2258, ptr %2260, align 8
  %2261 = load i32, ptr %30, align 4, !tbaa !5
  %2262 = load i32, ptr %3, align 4, !tbaa !5
  %2263 = sub nsw i32 %2218, %2262
  %2264 = mul nsw i32 %2263, %34
  %2265 = add nsw i32 %2264, %2261
  %2266 = load <2 x double>, ptr %22, align 16
  %2267 = sext i32 %2265 to i64
  %2268 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2267
  %2269 = load double, ptr %88, align 8, !tbaa !13
  %2270 = fneg double %2269
  %2271 = load i32, ptr %17, align 4, !tbaa !5
  %2272 = sext i32 %2271 to i64
  %2273 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2272
  %2274 = insertelement <2 x double> poison, double %2243, i64 0
  %2275 = shufflevector <2 x double> %2274, <2 x double> poison, <2 x i32> zeroinitializer
  %2276 = fmul <2 x double> %2254, %2275
  %2277 = load <2 x double>, ptr %2268, align 8, !tbaa !12
  %2278 = insertelement <2 x double> poison, double %2269, i64 0
  %2279 = insertelement <2 x double> %2278, double %2270, i64 1
  %2280 = fmul <2 x double> %2277, %2279
  %2281 = shufflevector <2 x double> %2280, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2282 = shufflevector <2 x double> %2266, <2 x double> poison, <2 x i32> zeroinitializer
  %2283 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2282, <2 x double> %2277, <2 x double> %2281)
  %2284 = fsub <2 x double> %2276, %2283
  store <2 x double> %2284, ptr %2273, align 8, !tbaa !12
  store i32 %2265, ptr %17, align 4, !tbaa !5
  %2285 = sext i32 %2263 to i64
  %2286 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2285
  %2287 = load double, ptr %2286, align 8, !tbaa !9
  %2288 = getelementptr inbounds i8, ptr %2286, i64 8
  %2289 = load double, ptr %2288, align 8, !tbaa !13
  %2290 = fneg double %2289
  %2291 = insertelement <2 x double> poison, double %2289, i64 0
  %2292 = insertelement <2 x double> %2291, double %2290, i64 1
  %2293 = fmul <2 x double> %2254, %2292
  %2294 = shufflevector <2 x double> %2293, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2295 = insertelement <2 x double> poison, double %2287, i64 0
  %2296 = shufflevector <2 x double> %2295, <2 x double> poison, <2 x i32> zeroinitializer
  %2297 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2296, <2 x double> %2254, <2 x double> %2294)
  store i32 %2263, ptr %16, align 4, !tbaa !5
  %2298 = getelementptr inbounds double, ptr %44, i64 %2285
  %2299 = load double, ptr %2298, align 8, !tbaa !12
  %2300 = load <2 x double>, ptr %2268, align 8, !tbaa !12
  %2301 = insertelement <2 x double> poison, double %2299, i64 0
  %2302 = shufflevector <2 x double> %2301, <2 x double> poison, <2 x i32> zeroinitializer
  %2303 = fmul <2 x double> %2302, %2300
  store <2 x double> %2303, ptr %21, align 16, !tbaa !12
  %2304 = fadd <2 x double> %2297, %2303
  store <2 x double> %2304, ptr %20, align 16, !tbaa !12
  store <2 x double> %2304, ptr %2268, align 8, !tbaa !12
  %2305 = load <2 x double>, ptr %27, align 16, !tbaa !12
  store <2 x double> %2305, ptr %31, align 16, !tbaa !12
  br label %2306

2306:                                             ; preds = %._crit_edge4554, %2216, %2211
  %2307 = phi i32 [ %2262, %2216 ], [ %.pre4556, %2211 ], [ %.pre4555, %._crit_edge4554 ]
  %2308 = phi i32 [ %2261, %2216 ], [ %.pre4553, %2211 ], [ %.pre4553, %._crit_edge4554 ]
  %2309 = trunc nuw nsw i64 %indvars.iv4493 to i32
  %2310 = add i32 %2931, %2309
  %2311 = call i32 @llvm.smax.i32(i32 %2310, i32 1)
  %2312 = mul nsw i32 %2308, %2311
  %2313 = add i32 %2932, %2309
  %2314 = sub i32 %2313, %2312
  %2315 = add i32 %2307, -1
  %2316 = add i32 %2315, %2314
  %2317 = sdiv i32 %2316, %2308
  store i32 %2317, ptr %28, align 4, !tbaa !5
  %2318 = add i32 %2317, -1
  %2319 = mul i32 %2308, %2318
  %2320 = sub nsw i32 %2314, %2319
  br i1 %.not33343518.us, label %2326, label %2321

2321:                                             ; preds = %2306
  %2322 = add i32 %2933, %2309
  %2323 = shl i32 %2307, 1
  %2324 = sub i32 %2322, %2323
  %2325 = call i32 @llvm.smin.i32(i32 %2314, i32 %2324)
  br label %2326

2326:                                             ; preds = %2321, %2306
  %.3.us = phi i32 [ %2325, %2321 ], [ %2314, %2306 ]
  %2327 = add i32 %.3.us, -1
  %2328 = add i32 %2327, %2307
  %2329 = sdiv i32 %2328, %2308
  store i32 %2329, ptr %33, align 4, !tbaa !5
  store i32 %.3.us, ptr %17, align 4, !tbaa !5
  store i32 %2308, ptr %15, align 4, !tbaa !5
  %2330 = icmp slt i32 %2308, 0
  %2331 = icmp sge i32 %2320, %.3.us
  %2332 = icmp sle i32 %2320, %.3.us
  %.in33554090.us = select i1 %2330, i1 %2331, i1 %2332
  br i1 %.in33554090.us, label %.lr.ph4093.us, label %2333

2333:                                             ; preds = %._crit_edge4094.us, %2326
  %2334 = icmp sgt i32 %2329, 0
  br i1 %2334, label %2335, label %2343

2335:                                             ; preds = %2333
  %2336 = mul nsw i32 %2320, %34
  %2337 = add nsw i32 %2308, %2336
  %2338 = sext i32 %2337 to i64
  %2339 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2338
  %2340 = sext i32 %2320 to i64
  %2341 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2340
  %2342 = getelementptr inbounds double, ptr %44, i64 %2340
  call void @zlargv_(ptr noundef nonnull %33, ptr noundef %2339, ptr noundef nonnull %26, ptr noundef nonnull %2341, ptr noundef nonnull %30, ptr noundef nonnull %2342, ptr noundef nonnull %30) #5
  %.pre4557 = load i32, ptr %28, align 4, !tbaa !5
  %.pre4559.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %2343

2343:                                             ; preds = %2335, %2333
  %.pre4559 = phi i32 [ %.pre4559.pre, %2335 ], [ %2307, %2333 ]
  %2344 = phi i32 [ %.pre4557, %2335 ], [ %2317, %2333 ]
  %2345 = icmp sgt i32 %2344, 0
  br i1 %2345, label %2346, label %2361

2346:                                             ; preds = %2343
  %2347 = add nsw i32 %.pre4559, -1
  store i32 %2347, ptr %15, align 4, !tbaa !5
  %.not33564098.us = icmp slt i32 %.pre4559, 2
  %.pre4646 = mul nsw i32 %2320, %34
  %.pre4654 = sext i32 %2320 to i64
  br i1 %.not33564098.us, label %.._crit_edge4102.us_crit_edge, label %.lr.ph4101.us

.._crit_edge4102.us_crit_edge:                    ; preds = %2346
  %.pre4648 = sext i32 %.pre4646 to i64
  %.pre4650 = add nsw i32 %2320, -1
  %.pre4652 = mul nsw i32 %.pre4650, %34
  br label %._crit_edge4102.us

2348:                                             ; preds = %.lr.ph4101.us, %2348
  %indvars.iv4490 = phi i64 [ 1, %.lr.ph4101.us ], [ %indvars.iv.next4491, %2348 ]
  %indvars.iv.next4491 = add nuw nsw i64 %indvars.iv4490, 1
  %gep4796 = getelementptr %struct.doublecomplex, ptr %invariant.gep4795, i64 %indvars.iv.next4491
  %2349 = trunc nuw nsw i64 %indvars.iv4490 to i32
  %2350 = add i32 %2923, %2349
  %2351 = sext i32 %2350 to i64
  %2352 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2351
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %gep4796, ptr noundef nonnull %26, ptr noundef %2352, ptr noundef nonnull %26, ptr noundef nonnull %2924, ptr noundef nonnull %2925, ptr noundef nonnull %30) #5
  %2353 = load i32, ptr %15, align 4, !tbaa !5
  %2354 = sext i32 %2353 to i64
  %.not3356.us.not = icmp slt i64 %indvars.iv4490, %2354
  br i1 %.not3356.us.not, label %2348, label %._crit_edge4102.us, !llvm.loop !72

._crit_edge4102.us:                               ; preds = %2348, %.._crit_edge4102.us_crit_edge
  %.pre-phi4653 = phi i32 [ %.pre4652, %.._crit_edge4102.us_crit_edge ], [ %2922, %2348 ]
  %.pre-phi4649 = phi i64 [ %.pre4648, %.._crit_edge4102.us_crit_edge ], [ %2926, %2348 ]
  %gep4118.us = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.pre-phi4649
  %2355 = sext i32 %.pre-phi4653 to i64
  %2356 = getelementptr %struct.doublecomplex, ptr %36, i64 %2355
  %2357 = getelementptr i8, ptr %2356, i64 16
  %2358 = getelementptr i8, ptr %2356, i64 32
  %2359 = getelementptr inbounds double, ptr %44, i64 %.pre4654
  %2360 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4654
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %gep4118.us, ptr noundef %2357, ptr noundef %2358, ptr noundef nonnull %26, ptr noundef nonnull %2359, ptr noundef nonnull %2360, ptr noundef nonnull %30) #5
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %2360, ptr noundef nonnull %30) #5
  %.pre4558 = load i32, ptr %3, align 4, !tbaa !5
  br label %2361

2361:                                             ; preds = %._crit_edge4102.us, %2343
  %2362 = phi i32 [ %.pre4558, %._crit_edge4102.us ], [ %.pre4559, %2343 ]
  %2363 = load i32, ptr %4, align 4, !tbaa !5
  %2364 = add nsw i32 %.203219.neg4121.us, 1
  %2365 = add i32 %2364, %2363
  store i32 %2365, ptr %15, align 4, !tbaa !5
  %.not3357.not4104.us = icmp sgt i32 %2362, %2365
  br i1 %.not3357.not4104.us, label %.lr.ph4107.us, label %._crit_edge4108.us

._crit_edge4108.us:                               ; preds = %2418, %2361
  br i1 %.not, label %2366, label %.loopexit3499.us

2366:                                             ; preds = %._crit_edge4108.us
  store i32 %2314, ptr %15, align 4, !tbaa !5
  %2367 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %2367, ptr %17, align 4, !tbaa !5
  %2368 = icmp slt i32 %2367, 0
  %2369 = icmp slt i32 %2319, 1
  %2370 = icmp sgt i32 %2319, -1
  %.in33584113.us = select i1 %2368, i1 %2369, i1 %2370
  br i1 %.in33584113.us, label %.lr.ph4116.us, label %.loopexit3499.us

.lr.ph4116.us:                                    ; preds = %2366, %.lr.ph4116.us
  %.394114.us = phi i32 [ %2386, %.lr.ph4116.us ], [ %2320, %2366 ]
  %2371 = sext i32 %.394114.us to i64
  %2372 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2371
  %2373 = call { double, double } @Cd(ptr noundef nonnull %2372)
  %2374 = extractvalue { double, double } %2373, 0
  %2375 = extractvalue { double, double } %2373, 1
  %2376 = fneg double %2375
  %2377 = call ptr @_pCd(ptr noundef nonnull %20)
  %2378 = getelementptr inbounds i8, ptr %2377, i64 8
  store double %2374, ptr %2377, align 8
  store double %2376, ptr %2378, align 8
  %2379 = mul nsw i32 %.394114.us, %40
  %2380 = sext i32 %2379 to i64
  %gep4110.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %2380
  %2381 = add nsw i32 %.394114.us, -1
  %2382 = mul nsw i32 %2381, %40
  %2383 = sext i32 %2382 to i64
  %gep4112.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %2383
  %2384 = getelementptr inbounds double, ptr %44, i64 %2371
  call void @zrot_(ptr noundef nonnull %29, ptr noundef %gep4110.us, ptr noundef nonnull @c__1, ptr noundef %gep4112.us, ptr noundef nonnull @c__1, ptr noundef nonnull %2384, ptr noundef nonnull %20) #5
  %2385 = load i32, ptr %17, align 4, !tbaa !5
  %2386 = add nsw i32 %2385, %.394114.us
  %2387 = icmp slt i32 %2385, 0
  %2388 = load i32, ptr %15, align 4
  %2389 = icmp sge i32 %2386, %2388
  %2390 = icmp sle i32 %2386, %2388
  %.in3358.us = select i1 %2387, i1 %2389, i1 %2390
  br i1 %.in3358.us, label %.lr.ph4116.us, label %.loopexit3499.us, !llvm.loop !73

.loopexit3499.us:                                 ; preds = %.lr.ph4116.us, %2366, %._crit_edge4108.us
  %indvars.iv.next4494 = add nuw nsw i64 %indvars.iv4493, 1
  %2391 = load i32, ptr %18, align 4, !tbaa !5
  %2392 = sext i32 %2391 to i64
  %.not3343.us.not = icmp slt i64 %indvars.iv4493, %2392
  %indvars.iv.next4483 = add i32 %indvars.iv4482, 1
  %indvars.iv.next4485 = add i32 %indvars.iv4484, 1
  %2393 = trunc i64 %indvars.iv4493 to i32
  %2394 = xor i32 %2393, -1
  br i1 %.not3343.us.not, label %2210, label %._crit_edge4124.us, !llvm.loop !74

2395:                                             ; preds = %.lr.ph4107.us, %2418
  %2396 = phi i32 [ %2365, %.lr.ph4107.us ], [ %2419, %2418 ]
  %.194105.us.in = phi i32 [ %2362, %.lr.ph4107.us ], [ %.194105.us, %2418 ]
  %.194105.us = add nsw i32 %.194105.us.in, -1
  %2397 = add i32 %2927, %.194105.us
  %2398 = load i32, ptr %30, align 4, !tbaa !5
  %2399 = sdiv i32 %2397, %2398
  store i32 %2399, ptr %33, align 4, !tbaa !5
  %2400 = icmp sgt i32 %2399, 0
  br i1 %2400, label %2401, label %2418

2401:                                             ; preds = %2395
  %2402 = add nsw i32 %2399, -1
  %2403 = mul nsw i32 %2402, %2398
  %2404 = sub nsw i32 %2314, %2403
  %2405 = sub nsw i32 %2398, %.194105.us
  %2406 = sub i32 %.194105.us, %2398
  %2407 = add i32 %2406, %2404
  %2408 = mul nsw i32 %2407, %34
  %2409 = add i32 %2408, %2405
  %2410 = add i32 %2409, 1
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2411
  %2413 = sext i32 %2409 to i64
  %2414 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2413
  %2415 = sext i32 %2404 to i64
  %2416 = getelementptr inbounds double, ptr %44, i64 %2415
  %2417 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2415
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %2412, ptr noundef nonnull %26, ptr noundef %2414, ptr noundef nonnull %26, ptr noundef nonnull %2416, ptr noundef nonnull %2417, ptr noundef nonnull %30) #5
  %.pre4560 = load i32, ptr %15, align 4, !tbaa !5
  br label %2418

2418:                                             ; preds = %2401, %2395
  %2419 = phi i32 [ %.pre4560, %2401 ], [ %2396, %2395 ]
  %.not3357.not.us = icmp sgt i32 %.194105.us, %2419
  br i1 %.not3357.not.us, label %2395, label %._crit_edge4108.us, !llvm.loop !75

2420:                                             ; preds = %.lr.ph4093.us, %2420
  %indvars.iv4487 = phi i64 [ %2917, %.lr.ph4093.us ], [ %indvars.iv.next4488, %2420 ]
  %2421 = add nsw i64 %indvars.iv4487, -1
  %2422 = mul nsw i64 %2421, %91
  %2423 = add nsw i64 %2422, %2918
  %2424 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4487
  %2425 = load double, ptr %2424, align 8, !tbaa !9
  %2426 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2423
  %2427 = getelementptr inbounds i8, ptr %2424, i64 8
  %2428 = load double, ptr %2427, align 8, !tbaa !13
  %2429 = fneg double %2428
  %2430 = load <2 x double>, ptr %2426, align 8, !tbaa !12
  %2431 = insertelement <2 x double> poison, double %2428, i64 0
  %2432 = insertelement <2 x double> %2431, double %2429, i64 1
  %2433 = fmul <2 x double> %2430, %2432
  %2434 = shufflevector <2 x double> %2433, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2435 = insertelement <2 x double> poison, double %2425, i64 0
  %2436 = shufflevector <2 x double> %2435, <2 x double> poison, <2 x i32> zeroinitializer
  %2437 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2436, <2 x double> %2430, <2 x double> %2434)
  store <2 x double> %2437, ptr %2424, align 8, !tbaa !12
  %2438 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4487
  %2439 = load double, ptr %2438, align 8, !tbaa !12
  %2440 = load <2 x double>, ptr %2426, align 8, !tbaa !12
  %2441 = insertelement <2 x double> poison, double %2439, i64 0
  %2442 = shufflevector <2 x double> %2441, <2 x double> poison, <2 x i32> zeroinitializer
  %2443 = fmul <2 x double> %2442, %2440
  store <2 x double> %2443, ptr %2426, align 8, !tbaa !12
  %indvars.iv.next4488 = add nsw i64 %indvars.iv4487, %2918
  %2444 = icmp sge i64 %indvars.iv.next4488, %2919
  %2445 = icmp sle i64 %indvars.iv.next4488, %2919
  %.in3355.us = select i1 %2330, i1 %2444, i1 %2445
  br i1 %.in3355.us, label %2420, label %._crit_edge4094.us, !llvm.loop !76

._crit_edge4124.us:                               ; preds = %.loopexit3499.us, %2207
  br i1 %.not33343518.us, label %._crit_edge4124.us._crit_edge, label %2446

._crit_edge4124.us._crit_edge:                    ; preds = %._crit_edge4124.us
  %.pre4561 = load i32, ptr %4, align 4, !tbaa !5
  br label %2474

2446:                                             ; preds = %._crit_edge4124.us
  %2447 = icmp sgt i32 %.43174.us, 0
  %2448 = load i32, ptr %32, align 4
  %2449 = icmp sgt i32 %2448, 0
  %or.cond7.us = select i1 %2447, i1 %2449, i1 false
  %.pre4562 = load i32, ptr %4, align 4, !tbaa !5
  br i1 %or.cond7.us, label %2450, label %2474

2450:                                             ; preds = %2446
  %2451 = add i32 %.33250.us, %85
  %2452 = add i32 %2451, %2448
  %2453 = sub i32 %2452, %.pre4562
  store i32 %2453, ptr %18, align 4, !tbaa !5
  %2454 = mul nsw i32 %.33250.us, %37
  %2455 = add i32 %2454, 1
  %2456 = add i32 %2455, %2448
  %2457 = sext i32 %2456 to i64
  %2458 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %2457
  %2459 = load double, ptr %2458, align 8, !tbaa !9
  %2460 = fneg double %2459
  %2461 = getelementptr inbounds i8, ptr %2458, i64 8
  %2462 = load double, ptr %2461, align 8, !tbaa !13
  %2463 = fneg double %2462
  %2464 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %2465 = insertelement <2 x double> poison, double %2463, i64 0
  %2466 = insertelement <2 x double> %2465, double %2462, i64 1
  %2467 = fmul <2 x double> %2464, %2466
  %2468 = shufflevector <2 x double> %2467, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2469 = insertelement <2 x double> poison, double %2460, i64 0
  %2470 = shufflevector <2 x double> %2469, <2 x double> poison, <2 x i32> zeroinitializer
  %2471 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2470, <2 x double> %2464, <2 x double> %2468)
  store <2 x double> %2471, ptr %20, align 16, !tbaa !12
  %2472 = sext i32 %2453 to i64
  %2473 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2472
  store <2 x double> %2471, ptr %2473, align 8, !tbaa !12
  br label %2474

2474:                                             ; preds = %._crit_edge4124.us._crit_edge, %2450, %2446
  %2475 = phi i32 [ %.pre4561, %._crit_edge4124.us._crit_edge ], [ %.pre4562, %2450 ], [ %.pre4562, %2446 ]
  %2476 = icmp sgt i32 %2475, 0
  br i1 %2476, label %.lr.ph4148.us, label %._crit_edge4174.us.thread

._crit_edge4149.us:                               ; preds = %2735
  %.pre4564 = load i32, ptr %4, align 4, !tbaa !5
  %2477 = icmp sgt i32 %.pre4564, 0
  br i1 %2477, label %.lr.ph4173.us, label %._crit_edge4174.us.thread

._crit_edge4174.us.thread:                        ; preds = %._crit_edge4149.us, %2474
  %.ph4678 = phi i32 [ %.pre4564, %._crit_edge4149.us ], [ %2475, %2474 ]
  %2478 = add nsw i32 %.ph4678, -1
  store i32 %2478, ptr %17, align 4, !tbaa !5
  br label %._crit_edge4183.us.thread

._crit_edge4174.us:                               ; preds = %.loopexit.us
  %.pre4569 = load i32, ptr %4, align 4, !tbaa !5
  %2479 = add nsw i32 %.pre4569, -1
  store i32 %2479, ptr %17, align 4, !tbaa !5
  %.not33444179.us = icmp slt i32 %.pre4569, 2
  br i1 %.not33444179.us, label %._crit_edge4183.us.thread, label %.lr.ph4182.us

2480:                                             ; preds = %.lr.ph4182.us, %._crit_edge4178.us
  %2481 = phi i32 [ %2479, %.lr.ph4182.us ], [ %2491, %._crit_edge4178.us ]
  %.2332224180.us = phi i32 [ 1, %.lr.ph4182.us ], [ %2492, %._crit_edge4178.us ]
  store i32 1, ptr %18, align 4, !tbaa !5
  %2482 = add i32 %2961, %.2332224180.us
  store i32 %2482, ptr %15, align 4, !tbaa !5
  %2483 = call i32 @llvm.smax.i32(i32 %2482, i32 1)
  %2484 = load i32, ptr %30, align 4, !tbaa !5
  %2485 = mul nsw i32 %2484, %2483
  %2486 = add i32 %2962, %.2332224180.us
  %2487 = sub i32 %2486, %2485
  %2488 = load i32, ptr %4, align 4, !tbaa !5
  %2489 = sub nsw i32 %2488, %.2332224180.us
  %2490 = icmp sgt i32 %2489, 0
  br i1 %2490, label %.lr.ph4177.us, label %._crit_edge4178.us

._crit_edge4178.us.loopexit:                      ; preds = %2515
  %.pre4570 = load i32, ptr %17, align 4, !tbaa !5
  br label %._crit_edge4178.us

._crit_edge4178.us:                               ; preds = %._crit_edge4178.us.loopexit, %2480
  %2491 = phi i32 [ %.pre4570, %._crit_edge4178.us.loopexit ], [ %2481, %2480 ]
  %2492 = add nuw nsw i32 %.2332224180.us, 1
  %.not3344.us.not = icmp slt i32 %.2332224180.us, %2491
  br i1 %.not3344.us.not, label %2480, label %._crit_edge4183.us, !llvm.loop !77

2493:                                             ; preds = %.lr.ph4177.us, %2515
  %.234175.us = phi i32 [ %2489, %.lr.ph4177.us ], [ %2516, %2515 ]
  %2494 = add i32 %2960, %.234175.us
  %2495 = load i32, ptr %30, align 4, !tbaa !5
  %2496 = sdiv i32 %2494, %2495
  store i32 %2496, ptr %33, align 4, !tbaa !5
  %2497 = icmp sgt i32 %2496, 0
  br i1 %2497, label %2498, label %2515

2498:                                             ; preds = %2493
  %2499 = add nsw i32 %2496, -1
  %2500 = mul nsw i32 %2499, %2495
  %2501 = sub nsw i32 %2487, %2500
  %2502 = sub nsw i32 %2495, %.234175.us
  %2503 = sub i32 %.234175.us, %2495
  %2504 = add i32 %2503, %2501
  %2505 = mul nsw i32 %2504, %34
  %2506 = add i32 %2505, %2502
  %2507 = add i32 %2506, 1
  %2508 = sext i32 %2507 to i64
  %2509 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2508
  %2510 = sext i32 %2506 to i64
  %2511 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2510
  %2512 = sext i32 %2501 to i64
  %2513 = getelementptr inbounds double, ptr %44, i64 %2512
  %2514 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2512
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %2509, ptr noundef nonnull %26, ptr noundef %2511, ptr noundef nonnull %26, ptr noundef nonnull %2513, ptr noundef nonnull %2514, ptr noundef nonnull %30) #5
  br label %2515

2515:                                             ; preds = %2498, %2493
  %2516 = add nsw i32 %.234175.us, -1
  %2517 = icmp sgt i32 %.234175.us, 1
  br i1 %2517, label %2493, label %._crit_edge4178.us.loopexit, !llvm.loop !78

._crit_edge4183.us.thread:                        ; preds = %._crit_edge4174.us, %._crit_edge4174.us.thread
  %.ph4680 = phi i32 [ %.ph4678, %._crit_edge4174.us.thread ], [ %.pre4569, %._crit_edge4174.us ]
  %.pre4550.pre.pre4681 = load i32, ptr %3, align 4, !tbaa !5
  br label %.outer.us.backedge

.outer.us.backedge:                               ; preds = %._crit_edge4183.us.thread, %2519, %..loopexit3502_crit_edge.us, %._crit_edge4183.us
  %.pre4550.be = phi i32 [ %.pre4550.pre.pre4681, %._crit_edge4183.us.thread ], [ %.pre4550.pre.pre, %2519 ], [ %.pre4550.pre.pre, %..loopexit3502_crit_edge.us ], [ %.pre4550.pre.pre, %._crit_edge4183.us ]
  %.be = phi i32 [ %.ph4680, %._crit_edge4183.us.thread ], [ %.pre4571, %2519 ], [ %.pre4571, %..loopexit3502_crit_edge.us ], [ %.pre4571, %._crit_edge4183.us ]
  br label %.outer.us

._crit_edge4183.us:                               ; preds = %._crit_edge4178.us
  %.pre4571 = load i32, ptr %4, align 4, !tbaa !5
  %2518 = icmp sgt i32 %.pre4571, 1
  %.pre4550.pre.pre = load i32, ptr %3, align 4, !tbaa !5
  br i1 %2518, label %2519, label %.outer.us.backedge

2519:                                             ; preds = %._crit_edge4183.us
  %2520 = sub nsw i32 %.43174.us, %.pre4550.pre.pre
  store i32 %2520, ptr %17, align 4, !tbaa !5
  %.not33454184.us = icmp slt i32 %2520, 2
  br i1 %.not33454184.us, label %.outer.us.backedge, label %.lr.ph4187.us.preheader

.lr.ph4187.us.preheader:                          ; preds = %2519
  %2521 = sext i32 %.pre4550.pre.pre to i64
  %2522 = add i32 %.43174.us, 1
  %2523 = sub i32 %2522, %.pre4550.pre.pre
  %wide.trip.count4509 = zext i32 %2523 to i64
  %2524 = add nsw i64 %wide.trip.count4509, -2
  %min.iters.check5155 = icmp ult i64 %2524, 58
  br i1 %min.iters.check5155, label %.lr.ph4187.us.preheader5203, label %vector.scevcheck5067

vector.scevcheck5067:                             ; preds = %.lr.ph4187.us.preheader
  %2525 = add nsw i64 %wide.trip.count4509, -3
  %mul.result5070 = shl nsw i64 %2525, 4
  %2526 = getelementptr i8, ptr %scevgep5068, i64 %mul.result5070
  %2527 = icmp ult ptr %2526, %scevgep5068
  %mul.result5074 = shl nsw i64 %2525, 4
  %mul.overflow5075 = icmp ugt i64 %2525, 1152921504606846975
  %2528 = getelementptr i8, ptr %scevgep5072, i64 %mul.result5074
  %2529 = icmp ult ptr %2528, %scevgep5072
  %2530 = or i1 %2529, %mul.overflow5075
  %2531 = shl nsw i64 %2521, 4
  %scevgep5077 = getelementptr i8, ptr %scevgep5076, i64 %2531
  %mul.result5079 = shl nsw i64 %2525, 4
  %2532 = getelementptr i8, ptr %scevgep5077, i64 %mul.result5079
  %2533 = icmp ult ptr %2532, %scevgep5077
  %scevgep5082 = getelementptr i8, ptr %scevgep5081, i64 %2531
  %mul.result5084 = shl nsw i64 %2525, 4
  %2534 = getelementptr i8, ptr %scevgep5082, i64 %mul.result5084
  %2535 = icmp ult ptr %2534, %scevgep5082
  %2536 = or i1 %2527, %2530
  %2537 = or i1 %2533, %2536
  %2538 = or i1 %2535, %2537
  br i1 %2538, label %.lr.ph4187.us.preheader5203, label %vector.memcheck5086

vector.memcheck5086:                              ; preds = %vector.scevcheck5067
  %2539 = shl nuw nsw i64 %wide.trip.count4509, 3
  %scevgep5089 = getelementptr i8, ptr %scevgep5088, i64 %2539
  %2540 = shl nsw i64 %2521, 3
  %scevgep5091 = getelementptr i8, ptr %scevgep5090, i64 %2540
  %2541 = getelementptr i8, ptr %scevgep5092, i64 %2540
  %scevgep5093 = getelementptr i8, ptr %2541, i64 %2539
  %2542 = shl nuw nsw i64 %wide.trip.count4509, 4
  %scevgep5095 = getelementptr i8, ptr %scevgep5094, i64 %2542
  %scevgep5097 = getelementptr i8, ptr %scevgep5096, i64 %2542
  %2543 = shl nsw i64 %2521, 4
  %scevgep5099 = getelementptr i8, ptr %scevgep5098, i64 %2543
  %2544 = add nsw i64 %2543, %2542
  %scevgep5101 = getelementptr i8, ptr %scevgep5100, i64 %2544
  %scevgep5103 = getelementptr i8, ptr %scevgep5102, i64 %2543
  %scevgep5105 = getelementptr i8, ptr %scevgep5104, i64 %2544
  %bound05106 = icmp ult ptr %scevgep5087, %scevgep5093
  %bound15107 = icmp ult ptr %scevgep5091, %scevgep5089
  %found.conflict5108 = and i1 %bound05106, %bound15107
  %bound05109 = icmp ult ptr %scevgep5087, %scevgep5095
  %bound15110 = icmp ult ptr %scevgep5076, %scevgep5089
  %found.conflict5111 = and i1 %bound05109, %bound15110
  %conflict.rdx5112 = or i1 %found.conflict5108, %found.conflict5111
  %bound05113 = icmp ult ptr %scevgep5087, %scevgep5097
  %bound15114 = icmp ult ptr %scevgep5081, %scevgep5089
  %found.conflict5115 = and i1 %bound05113, %bound15114
  %conflict.rdx5116 = or i1 %conflict.rdx5112, %found.conflict5115
  %bound05117 = icmp ult ptr %scevgep5087, %scevgep5101
  %bound15118 = icmp ult ptr %scevgep5099, %scevgep5089
  %found.conflict5119 = and i1 %bound05117, %bound15118
  %conflict.rdx5120 = or i1 %conflict.rdx5116, %found.conflict5119
  %bound05121 = icmp ult ptr %scevgep5087, %scevgep5105
  %bound15122 = icmp ult ptr %scevgep5103, %scevgep5089
  %found.conflict5123 = and i1 %bound05121, %bound15122
  %conflict.rdx5124 = or i1 %conflict.rdx5120, %found.conflict5123
  %bound05125 = icmp ult ptr %scevgep5091, %scevgep5095
  %bound15126 = icmp ult ptr %scevgep5076, %scevgep5093
  %found.conflict5127 = and i1 %bound05125, %bound15126
  %conflict.rdx5128 = or i1 %conflict.rdx5124, %found.conflict5127
  %bound05129 = icmp ult ptr %scevgep5091, %scevgep5097
  %bound15130 = icmp ult ptr %scevgep5081, %scevgep5093
  %found.conflict5131 = and i1 %bound05129, %bound15130
  %conflict.rdx5132 = or i1 %conflict.rdx5128, %found.conflict5131
  %bound05133 = icmp ult ptr %scevgep5076, %scevgep5097
  %bound15134 = icmp ult ptr %scevgep5081, %scevgep5095
  %found.conflict5135 = and i1 %bound05133, %bound15134
  %conflict.rdx5136 = or i1 %conflict.rdx5132, %found.conflict5135
  %bound05137 = icmp ult ptr %scevgep5076, %scevgep5101
  %bound15138 = icmp ult ptr %scevgep5099, %scevgep5095
  %found.conflict5139 = and i1 %bound05137, %bound15138
  %conflict.rdx5140 = or i1 %conflict.rdx5136, %found.conflict5139
  %bound05141 = icmp ult ptr %scevgep5076, %scevgep5105
  %bound15142 = icmp ult ptr %scevgep5103, %scevgep5095
  %found.conflict5143 = and i1 %bound05141, %bound15142
  %conflict.rdx5144 = or i1 %conflict.rdx5140, %found.conflict5143
  %bound05145 = icmp ult ptr %scevgep5081, %scevgep5101
  %bound15146 = icmp ult ptr %scevgep5099, %scevgep5097
  %found.conflict5147 = and i1 %bound05145, %bound15146
  %conflict.rdx5148 = or i1 %conflict.rdx5144, %found.conflict5147
  %bound05149 = icmp ult ptr %scevgep5081, %scevgep5105
  %bound15150 = icmp ult ptr %scevgep5103, %scevgep5097
  %found.conflict5151 = and i1 %bound05149, %bound15150
  %conflict.rdx5152 = or i1 %conflict.rdx5148, %found.conflict5151
  br i1 %conflict.rdx5152, label %.lr.ph4187.us.preheader5203, label %vector.ph5156

vector.ph5156:                                    ; preds = %vector.memcheck5086
  %n.vec5158 = and i64 %2524, -2
  %ind.end5159 = add nsw i64 %n.vec5158, 2
  br label %vector.body5161

vector.body5161:                                  ; preds = %vector.body5161, %vector.ph5156
  %index5162 = phi i64 [ 0, %vector.ph5156 ], [ %index.next5169, %vector.body5161 ]
  %offset.idx5163 = add i64 %index5162, 2
  %2545 = add nsw i64 %offset.idx5163, %2521
  %2546 = getelementptr inbounds double, ptr %44, i64 %2545
  %wide.load5164 = load <2 x double>, ptr %2546, align 8, !tbaa !12, !alias.scope !79, !noalias !82
  %2547 = getelementptr inbounds double, ptr %44, i64 %offset.idx5163
  store <2 x double> %wide.load5164, ptr %2547, align 8, !tbaa !12, !alias.scope !85, !noalias !87
  %2548 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2545
  %wide.vec5165 = load <4 x double>, ptr %2548, align 8, !tbaa !12
  %2549 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %offset.idx5163
  store <4 x double> %wide.vec5165, ptr %2549, align 8, !tbaa !12
  %index.next5169 = add nuw i64 %index5162, 2
  %2550 = icmp eq i64 %index.next5169, %n.vec5158
  br i1 %2550, label %middle.block5153, label %vector.body5161, !llvm.loop !90

middle.block5153:                                 ; preds = %vector.body5161
  %2551 = add i64 %index5162, 3
  %2552 = add nsw i64 %2551, %2521
  %cmp.n5170 = icmp eq i64 %2524, %n.vec5158
  %ind.escape5172 = or i64 %2524, 1
  br i1 %cmp.n5170, label %..loopexit3502_crit_edge.us, label %.lr.ph4187.us.preheader5203

.lr.ph4187.us.preheader5203:                      ; preds = %middle.block5153, %vector.memcheck5086, %vector.scevcheck5067, %.lr.ph4187.us.preheader
  %indvars.iv4506.ph = phi i64 [ 2, %vector.memcheck5086 ], [ 2, %vector.scevcheck5067 ], [ 2, %.lr.ph4187.us.preheader ], [ %ind.end5159, %middle.block5153 ]
  %2553 = sub nsw i64 %wide.trip.count4509, %indvars.iv4506.ph
  %xtraiter5301 = and i64 %2553, 1
  %lcmp.mod5302.not = icmp eq i64 %xtraiter5301, 0
  br i1 %lcmp.mod5302.not, label %.lr.ph4187.us.prol.loopexit, label %.lr.ph4187.us.prol

.lr.ph4187.us.prol:                               ; preds = %.lr.ph4187.us.preheader5203
  %2554 = add nsw i64 %indvars.iv4506.ph, %2521
  %2555 = getelementptr inbounds double, ptr %44, i64 %2554
  %2556 = load double, ptr %2555, align 8, !tbaa !12
  %2557 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4506.ph
  store double %2556, ptr %2557, align 8, !tbaa !12
  %2558 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2554
  %2559 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4506.ph
  %2560 = load <2 x double>, ptr %2558, align 8, !tbaa !12
  store <2 x double> %2560, ptr %2559, align 8, !tbaa !12
  %indvars.iv.next4507.prol = add nuw nsw i64 %indvars.iv4506.ph, 1
  br label %.lr.ph4187.us.prol.loopexit

.lr.ph4187.us.prol.loopexit:                      ; preds = %.lr.ph4187.us.prol, %.lr.ph4187.us.preheader5203
  %.lcssa5218.unr = phi i64 [ poison, %.lr.ph4187.us.preheader5203 ], [ %2554, %.lr.ph4187.us.prol ]
  %indvars.iv4506.unr = phi i64 [ %indvars.iv4506.ph, %.lr.ph4187.us.preheader5203 ], [ %indvars.iv.next4507.prol, %.lr.ph4187.us.prol ]
  %2561 = add nsw i64 %wide.trip.count4509, -1
  %2562 = icmp eq i64 %indvars.iv4506.ph, %2561
  br i1 %2562, label %..loopexit3502_crit_edge.us, label %.lr.ph4187.us

.lr.ph4187.us:                                    ; preds = %.lr.ph4187.us.prol.loopexit, %.lr.ph4187.us
  %indvars.iv4506 = phi i64 [ %indvars.iv.next4507.1, %.lr.ph4187.us ], [ %indvars.iv4506.unr, %.lr.ph4187.us.prol.loopexit ]
  %2563 = add nsw i64 %indvars.iv4506, %2521
  %2564 = getelementptr inbounds double, ptr %44, i64 %2563
  %2565 = load double, ptr %2564, align 8, !tbaa !12
  %2566 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4506
  store double %2565, ptr %2566, align 8, !tbaa !12
  %2567 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2563
  %2568 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4506
  %2569 = load <2 x double>, ptr %2567, align 8, !tbaa !12
  store <2 x double> %2569, ptr %2568, align 8, !tbaa !12
  %indvars.iv.next4507 = add nuw nsw i64 %indvars.iv4506, 1
  %2570 = add nsw i64 %indvars.iv.next4507, %2521
  %2571 = getelementptr inbounds double, ptr %44, i64 %2570
  %2572 = load double, ptr %2571, align 8, !tbaa !12
  %2573 = getelementptr double, ptr %12, i64 %indvars.iv4506
  store double %2572, ptr %2573, align 8, !tbaa !12
  %2574 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2570
  %2575 = getelementptr %struct.doublecomplex, ptr %11, i64 %indvars.iv4506
  %2576 = load <2 x double>, ptr %2574, align 8, !tbaa !12
  store <2 x double> %2576, ptr %2575, align 8, !tbaa !12
  %indvars.iv.next4507.1 = add nuw nsw i64 %indvars.iv4506, 2
  %exitcond4510.not.1 = icmp eq i64 %indvars.iv.next4507.1, %wide.trip.count4509
  br i1 %exitcond4510.not.1, label %..loopexit3502_crit_edge.us, label %.lr.ph4187.us, !llvm.loop !91

2577:                                             ; preds = %.lr.ph4173.us, %.loopexit.us
  %.2232214171.us = phi i32 [ %.pre4564, %.lr.ph4173.us ], [ %2664, %.loopexit.us ]
  store i32 1, ptr %18, align 4, !tbaa !5
  %2578 = add i32 %2958, %.2232214171.us
  store i32 %2578, ptr %17, align 4, !tbaa !5
  %2579 = call i32 @llvm.smax.i32(i32 %2578, i32 1)
  %2580 = load i32, ptr %30, align 4, !tbaa !5
  %2581 = mul nsw i32 %2580, %2579
  %2582 = add i32 %2959, %.2232214171.us
  %2583 = sub i32 %2582, %2581
  %2584 = load i32, ptr %3, align 4, !tbaa !5
  %2585 = add i32 %2584, -1
  %2586 = add i32 %2585, %2583
  %2587 = sdiv i32 %2586, %2580
  store i32 %2587, ptr %28, align 4, !tbaa !5
  %2588 = add nsw i32 %2587, -1
  %2589 = mul nsw i32 %2588, %2580
  %2590 = sub nsw i32 %2583, %2589
  %2591 = icmp sgt i32 %2587, 0
  %.pre4566 = load i32, ptr %4, align 4, !tbaa !5
  br i1 %2591, label %2592, label %2629

2592:                                             ; preds = %2577
  %2593 = mul nsw i32 %2590, %34
  %2594 = add nsw i32 %2593, %2580
  %2595 = sext i32 %2594 to i64
  %2596 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2595
  %2597 = add i32 %2590, %85
  %2598 = sub i32 %2597, %.pre4566
  %2599 = sext i32 %2598 to i64
  %2600 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2599
  %2601 = getelementptr inbounds double, ptr %44, i64 %2599
  call void @zlargv_(ptr noundef nonnull %28, ptr noundef %2596, ptr noundef nonnull %26, ptr noundef nonnull %2600, ptr noundef nonnull %30, ptr noundef nonnull %2601, ptr noundef nonnull %30) #5
  %2602 = load i32, ptr %3, align 4, !tbaa !5
  %2603 = add nsw i32 %2602, -1
  store i32 %2603, ptr %18, align 4, !tbaa !5
  %.not33474150.us = icmp slt i32 %2602, 2
  br i1 %.not33474150.us, label %.._crit_edge4154.us_crit_edge, label %.lr.ph4153.us

.._crit_edge4154.us_crit_edge:                    ; preds = %2592
  %.pre4640 = sext i32 %2593 to i64
  %.pre4642 = add nsw i32 %2590, -1
  %.pre4644 = mul nsw i32 %.pre4642, %34
  br label %._crit_edge4154.us

2604:                                             ; preds = %.lr.ph4153.us, %2604
  %indvars.iv4503 = phi i64 [ 1, %.lr.ph4153.us ], [ %indvars.iv.next4504, %2604 ]
  %indvars.iv.next4504 = add nuw nsw i64 %indvars.iv4503, 1
  %gep4798 = getelementptr %struct.doublecomplex, ptr %invariant.gep4797, i64 %indvars.iv.next4504
  %2605 = trunc nuw nsw i64 %indvars.iv4503 to i32
  %2606 = add i32 %2955, %2605
  %2607 = sext i32 %2606 to i64
  %2608 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2607
  %2609 = load i32, ptr %4, align 4, !tbaa !5
  %2610 = sub i32 %2597, %2609
  %2611 = sext i32 %2610 to i64
  %2612 = getelementptr inbounds double, ptr %44, i64 %2611
  %2613 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2611
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %gep4798, ptr noundef nonnull %26, ptr noundef %2608, ptr noundef nonnull %26, ptr noundef nonnull %2612, ptr noundef nonnull %2613, ptr noundef nonnull %30) #5
  %2614 = load i32, ptr %18, align 4, !tbaa !5
  %2615 = sext i32 %2614 to i64
  %.not3347.us.not = icmp slt i64 %indvars.iv4503, %2615
  br i1 %.not3347.us.not, label %2604, label %._crit_edge4154.us, !llvm.loop !92

._crit_edge4154.us:                               ; preds = %2604, %.._crit_edge4154.us_crit_edge
  %.pre-phi4645 = phi i32 [ %.pre4644, %.._crit_edge4154.us_crit_edge ], [ %2954, %2604 ]
  %.pre-phi4641 = phi i64 [ %.pre4640, %.._crit_edge4154.us_crit_edge ], [ %2956, %2604 ]
  %gep4170.us = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.pre-phi4641
  %2616 = sext i32 %.pre-phi4645 to i64
  %2617 = getelementptr %struct.doublecomplex, ptr %36, i64 %2616
  %2618 = getelementptr i8, ptr %2617, i64 16
  %2619 = getelementptr i8, ptr %2617, i64 32
  %2620 = load i32, ptr %4, align 4, !tbaa !5
  %2621 = sub i32 %2597, %2620
  %2622 = sext i32 %2621 to i64
  %2623 = getelementptr inbounds double, ptr %44, i64 %2622
  %2624 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2622
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %gep4170.us, ptr noundef %2618, ptr noundef %2619, ptr noundef nonnull %26, ptr noundef nonnull %2623, ptr noundef nonnull %2624, ptr noundef nonnull %30) #5
  %2625 = load i32, ptr %4, align 4, !tbaa !5
  %2626 = sub i32 %2597, %2625
  %2627 = sext i32 %2626 to i64
  %2628 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2627
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %2628, ptr noundef nonnull %30) #5
  %.pre4565 = load i32, ptr %4, align 4, !tbaa !5
  %.pre4567 = load i32, ptr %3, align 4, !tbaa !5
  br label %2629

2629:                                             ; preds = %._crit_edge4154.us, %2577
  %2630 = phi i32 [ %.pre4567, %._crit_edge4154.us ], [ %2584, %2577 ]
  %2631 = phi i32 [ %.pre4565, %._crit_edge4154.us ], [ %.pre4566, %2577 ]
  %reass.sub4214 = sub i32 %2631, %.2232214171.us
  %2632 = add i32 %reass.sub4214, 1
  store i32 %2632, ptr %18, align 4, !tbaa !5
  %.not3348.not4156.us = icmp sgt i32 %2630, %2632
  br i1 %.not3348.not4156.us, label %.lr.ph4159.us, label %._crit_edge4160.us

._crit_edge4160.us:                               ; preds = %2692, %2629
  br i1 %.not, label %2633, label %.loopexit.us

2633:                                             ; preds = %._crit_edge4160.us
  store i32 %2583, ptr %18, align 4, !tbaa !5
  %2634 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %2634, ptr %17, align 4, !tbaa !5
  %2635 = icmp slt i32 %2634, 0
  %2636 = icmp slt i32 %2589, 1
  %2637 = icmp sgt i32 %2589, -1
  %.in33494165.us = select i1 %2635, i1 %2636, i1 %2637
  br i1 %.in33494165.us, label %.lr.ph4168.us, label %.loopexit.us

.lr.ph4168.us:                                    ; preds = %2633, %.lr.ph4168.us
  %.424166.us = phi i32 [ %2659, %.lr.ph4168.us ], [ %2590, %2633 ]
  %2638 = load i32, ptr %4, align 4, !tbaa !5
  %2639 = add i32 %.424166.us, %85
  %2640 = sub i32 %2639, %2638
  %2641 = sext i32 %2640 to i64
  %2642 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2641
  %2643 = call { double, double } @Cd(ptr noundef nonnull %2642)
  %2644 = extractvalue { double, double } %2643, 0
  %2645 = extractvalue { double, double } %2643, 1
  %2646 = fneg double %2645
  %2647 = call ptr @_pCd(ptr noundef nonnull %20)
  %2648 = getelementptr inbounds i8, ptr %2647, i64 8
  store double %2644, ptr %2647, align 8
  store double %2646, ptr %2648, align 8
  %2649 = mul nsw i32 %.424166.us, %40
  %2650 = sext i32 %2649 to i64
  %gep4162.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %2650
  %2651 = add nsw i32 %.424166.us, -1
  %2652 = mul nsw i32 %2651, %40
  %2653 = sext i32 %2652 to i64
  %gep4164.us = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %2653
  %2654 = load i32, ptr %4, align 4, !tbaa !5
  %2655 = sub i32 %2639, %2654
  %2656 = sext i32 %2655 to i64
  %2657 = getelementptr inbounds double, ptr %44, i64 %2656
  call void @zrot_(ptr noundef nonnull %29, ptr noundef %gep4162.us, ptr noundef nonnull @c__1, ptr noundef %gep4164.us, ptr noundef nonnull @c__1, ptr noundef nonnull %2657, ptr noundef nonnull %20) #5
  %2658 = load i32, ptr %17, align 4, !tbaa !5
  %2659 = add nsw i32 %2658, %.424166.us
  %2660 = icmp slt i32 %2658, 0
  %2661 = load i32, ptr %18, align 4
  %2662 = icmp sge i32 %2659, %2661
  %2663 = icmp sle i32 %2659, %2661
  %.in3349.us = select i1 %2660, i1 %2662, i1 %2663
  br i1 %.in3349.us, label %.lr.ph4168.us, label %.loopexit.us, !llvm.loop !93

.loopexit.us:                                     ; preds = %.lr.ph4168.us, %2633, %._crit_edge4160.us
  %2664 = add nsw i32 %.2232214171.us, -1
  %2665 = icmp sgt i32 %.2232214171.us, 1
  br i1 %2665, label %2577, label %._crit_edge4174.us, !llvm.loop !94

2666:                                             ; preds = %.lr.ph4159.us, %2692
  %2667 = phi i32 [ %2632, %.lr.ph4159.us ], [ %2693, %2692 ]
  %.224157.us.in = phi i32 [ %2630, %.lr.ph4159.us ], [ %.224157.us, %2692 ]
  %.224157.us = add nsw i32 %.224157.us.in, -1
  %2668 = add i32 %2957, %.224157.us
  %2669 = load i32, ptr %30, align 4, !tbaa !5
  %2670 = sdiv i32 %2668, %2669
  store i32 %2670, ptr %33, align 4, !tbaa !5
  %2671 = icmp sgt i32 %2670, 0
  br i1 %2671, label %2672, label %2692

2672:                                             ; preds = %2666
  %2673 = add nsw i32 %2670, -1
  %2674 = mul nsw i32 %2673, %2669
  %2675 = sub nsw i32 %2583, %2674
  %2676 = sub nsw i32 %2669, %.224157.us
  %2677 = sub i32 %.224157.us, %2669
  %2678 = add i32 %2677, %2675
  %2679 = mul nsw i32 %2678, %34
  %2680 = add i32 %2679, %2676
  %2681 = add i32 %2680, 1
  %2682 = sext i32 %2681 to i64
  %2683 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2682
  %2684 = sext i32 %2680 to i64
  %2685 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2684
  %2686 = load i32, ptr %4, align 4, !tbaa !5
  %2687 = add i32 %2675, %85
  %2688 = sub i32 %2687, %2686
  %2689 = sext i32 %2688 to i64
  %2690 = getelementptr inbounds double, ptr %44, i64 %2689
  %2691 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2689
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %2683, ptr noundef nonnull %26, ptr noundef %2685, ptr noundef nonnull %26, ptr noundef nonnull %2690, ptr noundef nonnull %2691, ptr noundef nonnull %30) #5
  %.pre4568 = load i32, ptr %18, align 4, !tbaa !5
  br label %2692

2692:                                             ; preds = %2672, %2666
  %2693 = phi i32 [ %.pre4568, %2672 ], [ %2667, %2666 ]
  %.not3348.not.us = icmp sgt i32 %.224157.us, %2693
  br i1 %.not3348.not.us, label %2666, label %._crit_edge4160.us, !llvm.loop !95

2694:                                             ; preds = %.lr.ph4148.us, %2735
  %.2132204146.us = phi i32 [ %2475, %.lr.ph4148.us ], [ %2736, %2735 ]
  %2695 = add i32 %2950, %.2132204146.us
  %2696 = load i32, ptr %30, align 4, !tbaa !5
  %2697 = add i32 %2951, %.2132204146.us
  br i1 %.not33343518.us, label %2700, label %2698

2698:                                             ; preds = %2694
  %2699 = call i32 @llvm.smax.i32(i32 %2695, i32 2)
  br label %2702

2700:                                             ; preds = %2694
  %2701 = call i32 @llvm.smax.i32(i32 %2695, i32 1)
  br label %2702

2702:                                             ; preds = %2700, %2698
  %.sink4813 = phi i32 [ %2701, %2700 ], [ %2699, %2698 ]
  %.sink4515 = phi i32 [ 1, %2700 ], [ 2, %2698 ]
  %2703 = mul nsw i32 %2696, %.sink4813
  %2704 = sub i32 %2697, %2703
  store i32 %.sink4515, ptr %18, align 4
  store i32 %2695, ptr %17, align 4
  %2705 = load i32, ptr %4, align 4, !tbaa !5
  %2706 = sub nsw i32 %2705, %.2132204146.us
  %2707 = icmp sgt i32 %2706, 0
  %2708 = add i32 %2704, -1
  br i1 %2707, label %.lr.ph4127.us, label %._crit_edge4128.us

._crit_edge4128.us.loopexit:                      ; preds = %2806
  %.pre4563 = load i32, ptr %30, align 4, !tbaa !5
  br label %._crit_edge4128.us

._crit_edge4128.us:                               ; preds = %2702, %._crit_edge4128.us.loopexit
  %2709 = phi i32 [ %.pre4563, %._crit_edge4128.us.loopexit ], [ %2696, %2702 ]
  %2710 = load i32, ptr %3, align 4, !tbaa !5
  %2711 = add i32 %2708, %2710
  %2712 = sdiv i32 %2711, %2709
  store i32 %2712, ptr %28, align 4, !tbaa !5
  %2713 = add nsw i32 %2712, -1
  %2714 = mul nsw i32 %2713, %2709
  %2715 = sub i32 %2704, %2714
  %2716 = icmp slt i32 %2709, 0
  %2717 = icmp slt i32 %2714, 1
  %2718 = icmp sgt i32 %2714, -1
  %.in33504129.us = select i1 %2716, i1 %2717, i1 %2718
  br i1 %.in33504129.us, label %.lr.ph4132.us, label %.thread4683

.thread4683:                                      ; preds = %._crit_edge4128.us
  store i32 %2704, ptr %17, align 4, !tbaa !5
  store i32 %2709, ptr %18, align 4, !tbaa !5
  br label %2720

2719:                                             ; preds = %2765
  store i32 %2767, ptr %15, align 4, !tbaa !5
  store i32 %2768, ptr %16, align 4, !tbaa !5
  store i32 %2704, ptr %17, align 4, !tbaa !5
  store i32 %2709, ptr %18, align 4, !tbaa !5
  br i1 %.in33504129.us, label %.lr.ph4140.us, label %2720

2720:                                             ; preds = %.thread4683, %._crit_edge4141.us, %2719
  br i1 %.not33343518.us, label %2735, label %2721

2721:                                             ; preds = %2720
  %2722 = add nsw i32 %.2132204146.us, %.33250.us
  %2723 = icmp sle i32 %2722, %2709
  %2724 = load i32, ptr %32, align 4
  %.not3352.us = icmp sgt i32 %.2132204146.us, %2724
  %or.cond3398.us = select i1 %2723, i1 true, i1 %.not3352.us
  br i1 %or.cond3398.us, label %2735, label %2725

2725:                                             ; preds = %2721
  %2726 = load i32, ptr %4, align 4, !tbaa !5
  %2727 = add i32 %2952, %.2132204146.us
  %2728 = sub i32 %2727, %2726
  %2729 = sub nsw i32 %2728, %2710
  store i32 %2729, ptr %18, align 4, !tbaa !5
  store i32 %2728, ptr %17, align 4, !tbaa !5
  %2730 = sext i32 %2728 to i64
  %2731 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2730
  %2732 = sext i32 %2729 to i64
  %2733 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2732
  %2734 = load <2 x double>, ptr %2731, align 8, !tbaa !12
  store <2 x double> %2734, ptr %2733, align 8, !tbaa !12
  br label %2735

2735:                                             ; preds = %2725, %2721, %2720
  %2736 = add nsw i32 %.2132204146.us, -1
  %2737 = icmp sgt i32 %.2132204146.us, 1
  br i1 %2737, label %2694, label %._crit_edge4149.us, !llvm.loop !96

2738:                                             ; preds = %.lr.ph4140.us, %2738
  %indvars.iv4500 = phi i64 [ %2944, %.lr.ph4140.us ], [ %indvars.iv.next4501, %2738 ]
  %2739 = add nsw i64 %indvars.iv4500, %2946
  %2740 = add nsw i64 %indvars.iv4500, -1
  %2741 = mul nsw i64 %2740, %91
  %2742 = add nsw i64 %2741, %2945
  %2743 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2739
  %2744 = load double, ptr %2743, align 8, !tbaa !9
  %2745 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2742
  %2746 = getelementptr inbounds i8, ptr %2743, i64 8
  %2747 = load double, ptr %2746, align 8, !tbaa !13
  %2748 = fneg double %2747
  %2749 = load <2 x double>, ptr %2745, align 8, !tbaa !12
  %2750 = insertelement <2 x double> poison, double %2747, i64 0
  %2751 = insertelement <2 x double> %2750, double %2748, i64 1
  %2752 = fmul <2 x double> %2749, %2751
  %2753 = shufflevector <2 x double> %2752, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %2754 = insertelement <2 x double> poison, double %2744, i64 0
  %2755 = shufflevector <2 x double> %2754, <2 x double> poison, <2 x i32> zeroinitializer
  %2756 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2755, <2 x double> %2749, <2 x double> %2753)
  store <2 x double> %2756, ptr %2743, align 8, !tbaa !12
  %2757 = getelementptr inbounds double, ptr %44, i64 %2739
  %2758 = load double, ptr %2757, align 8, !tbaa !12
  %2759 = load <2 x double>, ptr %2745, align 8, !tbaa !12
  %2760 = insertelement <2 x double> poison, double %2758, i64 0
  %2761 = shufflevector <2 x double> %2760, <2 x double> poison, <2 x i32> zeroinitializer
  %2762 = fmul <2 x double> %2761, %2759
  store <2 x double> %2762, ptr %2745, align 8, !tbaa !12
  %indvars.iv.next4501 = add nsw i64 %indvars.iv4500, %2945
  %2763 = icmp sge i64 %indvars.iv.next4501, %2947
  %2764 = icmp sle i64 %indvars.iv.next4501, %2947
  %.in3351.us = select i1 %2716, i1 %2763, i1 %2764
  br i1 %.in3351.us, label %2738, label %._crit_edge4141.us, !llvm.loop !97

2765:                                             ; preds = %.lr.ph4132.us, %2765
  %indvars.iv4497 = phi i64 [ %2939, %.lr.ph4132.us ], [ %indvars.iv.next4498, %2765 ]
  %2766 = trunc nsw i64 %indvars.iv4497 to i32
  %2767 = add nsw i32 %2938, %2766
  %2768 = add nsw i32 %2767, %2710
  %2769 = sext i32 %2768 to i64
  %2770 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2769
  %2771 = sext i32 %2767 to i64
  %2772 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2771
  %2773 = load <2 x double>, ptr %2770, align 8, !tbaa !12
  store <2 x double> %2773, ptr %2772, align 8, !tbaa !12
  %2774 = getelementptr inbounds double, ptr %44, i64 %2769
  %2775 = load double, ptr %2774, align 8, !tbaa !12
  %2776 = getelementptr inbounds double, ptr %44, i64 %2771
  store double %2775, ptr %2776, align 8, !tbaa !12
  %indvars.iv.next4498 = add nsw i64 %indvars.iv4497, %2940
  %2777 = icmp sge i64 %indvars.iv.next4498, %2941
  %2778 = icmp sle i64 %indvars.iv.next4498, %2941
  %.in3350.us = select i1 %2716, i1 %2777, i1 %2778
  br i1 %.in3350.us, label %2765, label %2719, !llvm.loop !98

.lr.ph4127.us:                                    ; preds = %2702, %2806
  %.204125.us = phi i32 [ %.pre-phi4637, %2806 ], [ %2706, %2702 ]
  %2779 = load i32, ptr %3, align 4, !tbaa !5
  %2780 = add i32 %2708, %.204125.us
  %2781 = add i32 %2780, %2779
  %2782 = load i32, ptr %30, align 4, !tbaa !5
  %2783 = sdiv i32 %2781, %2782
  store i32 %2783, ptr %33, align 4, !tbaa !5
  %2784 = icmp sgt i32 %2783, 0
  br i1 %2784, label %2785, label %._crit_edge4617

._crit_edge4617:                                  ; preds = %.lr.ph4127.us
  %.pre4636 = add nsw i32 %.204125.us, -1
  br label %2806

2785:                                             ; preds = %.lr.ph4127.us
  %2786 = add nsw i32 %2783, -1
  %2787 = mul nsw i32 %2786, %2782
  %2788 = sub nsw i32 %2704, %2787
  %2789 = sub nsw i32 %2782, %.204125.us
  %2790 = add i32 %.204125.us, -1
  %2791 = add i32 %2790, %2788
  %2792 = mul nsw i32 %2791, %34
  %2793 = add i32 %2792, %2789
  %2794 = add i32 %2793, 1
  %2795 = sext i32 %2794 to i64
  %2796 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2795
  %2797 = sext i32 %2793 to i64
  %2798 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2797
  %2799 = load i32, ptr %4, align 4, !tbaa !5
  %2800 = add i32 %2779, %85
  %2801 = add i32 %2800, %2788
  %2802 = sub i32 %2801, %2799
  %2803 = sext i32 %2802 to i64
  %2804 = getelementptr inbounds double, ptr %44, i64 %2803
  %2805 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %2803
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %2796, ptr noundef nonnull %26, ptr noundef %2798, ptr noundef nonnull %26, ptr noundef nonnull %2804, ptr noundef nonnull %2805, ptr noundef nonnull %30) #5
  br label %2806

2806:                                             ; preds = %._crit_edge4617, %2785
  %.pre-phi4637 = phi i32 [ %.pre4636, %._crit_edge4617 ], [ %2790, %2785 ]
  %2807 = icmp sgt i32 %.204125.us, 1
  br i1 %2807, label %.lr.ph4127.us, label %._crit_edge4128.us.loopexit, !llvm.loop !99

.lr.ph3873.us:                                    ; preds = %.outer.us
  %2808 = add nsw i32 %.23249.ph.us, 1
  %2809 = sub nsw i32 %85, %2808
  %2810 = call i32 @llvm.smin.i32(i32 %1987, i32 %2809)
  store i32 %2810, ptr %32, align 4, !tbaa !5
  %2811 = sub nsw i32 %2808, %.pre4550
  %2812 = call i32 @llvm.smax.i32(i32 %2811, i32 1)
  %2813 = add nsw i32 %2810, %2808
  %2814 = load i32, ptr %30, align 4, !tbaa !5
  %2815 = sub i32 %2813, %2814
  %.not3336.us = icmp slt i32 %.23249.ph.us, %85
  br i1 %.not3336.us, label %.lr.ph3873.split.us.us, label %.lr.ph3873.split.us4199

.lr.ph3873.split.us4199:                          ; preds = %.lr.ph3873.us
  %2816 = icmp eq i32 %.pre4550, 0
  br i1 %2816, label %.loopexit3504, label %.lr.ph3873.split.split.us

.lr.ph3873.split.us.us:                           ; preds = %.lr.ph3873.us
  store i32 1, ptr %17, align 4, !tbaa !5
  %2817 = add nsw i32 %.23249.ph.us, 2
  br label %1991

.lr.ph3873.split.split.us:                        ; preds = %.lr.ph3873.split.us4199
  store i32 1, ptr %17, align 4, !tbaa !5
  br label %1988

.lr.ph4039.us:                                    ; preds = %1998
  %2818 = sext i32 %.43179.us to i64
  %2819 = insertelement <2 x double> poison, double %2001, i64 0
  %2820 = shufflevector <2 x double> %2819, <2 x double> poison, <2 x i32> zeroinitializer
  %2821 = sub i32 %.33250.us, %.43179.us
  %.neg5305 = add i32 %.43179.us, 1
  %xtraiter5297 = and i32 %2821, 1
  %lcmp.mod5298.not = icmp eq i32 %xtraiter5297, 0
  br i1 %lcmp.mod5298.not, label %.prol.loopexit5296, label %.prol.loopexit5296.unr-lcssa

.prol.loopexit5296.unr-lcssa:                     ; preds = %.lr.ph4039.us
  %2822 = mul nsw i64 %2818, %91
  %2823 = sub i32 %2011, %.43179.us
  %2824 = sext i32 %2823 to i64
  %2825 = getelementptr %struct.doublecomplex, ptr %36, i64 %2822
  %2826 = getelementptr %struct.doublecomplex, ptr %2825, i64 %2824
  %2827 = load <2 x double>, ptr %2826, align 8, !tbaa !12
  %2828 = fdiv <2 x double> %2827, %2820
  store <2 x double> %2828, ptr %2826, align 8, !tbaa !12
  %indvars.iv.next4455.prol = add nsw i64 %2818, 1
  br label %.prol.loopexit5296

.prol.loopexit5296:                               ; preds = %.prol.loopexit5296.unr-lcssa, %.lr.ph4039.us
  %.lcssa.unr = phi <2 x double> [ poison, %.lr.ph4039.us ], [ %2828, %.prol.loopexit5296.unr-lcssa ]
  %indvars.iv4454.unr = phi i64 [ %2818, %.lr.ph4039.us ], [ %indvars.iv.next4455.prol, %.prol.loopexit5296.unr-lcssa ]
  %2829 = icmp eq i32 %.33250.us, %.neg5305
  br i1 %2829, label %._crit_edge4040.us, label %.lr.ph4039.us.new

._crit_edge4040.us:                               ; preds = %.lr.ph4039.us.new, %.prol.loopexit5296
  %.lcssa = phi <2 x double> [ %.lcssa.unr, %.prol.loopexit5296 ], [ %2027, %.lr.ph4039.us.new ]
  store <2 x double> %.lcssa, ptr %20, align 16, !tbaa !12
  br label %._crit_edge4616

.lr.ph4048.us:                                    ; preds = %._crit_edge4616
  %reass.sub4208 = sub i32 %2002, %.33250.us
  %2830 = add i32 %reass.sub4208, 1
  %2831 = zext i32 %.33250.us to i64
  %2832 = add nuw nsw i64 %2831, 1
  %2833 = add i32 %2030, 1
  %2834 = xor i32 %.33250.us, -1
  %2835 = add i32 %2030, %2834
  %2836 = zext i32 %2835 to i64
  %2837 = add nuw nsw i64 %2836, 1
  %min.iters.check5186 = icmp ult i32 %2835, 3
  br i1 %min.iters.check5186, label %scalar.ph5185.preheader, label %vector.scevcheck5173

scalar.ph5185.preheader:                          ; preds = %middle.block5184, %vector.scevcheck5173, %.lr.ph4048.us
  %indvars.iv4459.ph = phi i64 [ %2832, %vector.scevcheck5173 ], [ %2832, %.lr.ph4048.us ], [ %ind.end5190, %middle.block5184 ]
  %2838 = trunc i64 %indvars.iv4459.ph to i32
  %2839 = add i32 %2030, %2838
  %2840 = and i32 %2839, 1
  %lcmp.mod5300.not.not = icmp eq i32 %2840, 0
  br i1 %lcmp.mod5300.not.not, label %scalar.ph5185.prol, label %scalar.ph5185.prol.loopexit

scalar.ph5185.prol:                               ; preds = %scalar.ph5185.preheader
  %2841 = trunc i64 %indvars.iv4459.ph to i32
  %2842 = add i32 %2830, %2841
  %2843 = sext i32 %2842 to i64
  %2844 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2843
  %2845 = load <2 x double>, ptr %2844, align 8, !tbaa !12
  %2846 = insertelement <2 x double> poison, double %2001, i64 0
  %2847 = shufflevector <2 x double> %2846, <2 x double> poison, <2 x i32> zeroinitializer
  %2848 = fdiv <2 x double> %2845, %2847
  store <2 x double> %2848, ptr %2844, align 8, !tbaa !12
  %indvars.iv.next4460.prol = add nsw i64 %indvars.iv4459.ph, 1
  br label %scalar.ph5185.prol.loopexit

scalar.ph5185.prol.loopexit:                      ; preds = %scalar.ph5185.prol, %scalar.ph5185.preheader
  %.lcssa5208.unr = phi i32 [ poison, %scalar.ph5185.preheader ], [ %2842, %scalar.ph5185.prol ]
  %.lcssa5207.unr = phi <2 x double> [ poison, %scalar.ph5185.preheader ], [ %2848, %scalar.ph5185.prol ]
  %indvars.iv4459.unr = phi i64 [ %indvars.iv4459.ph, %scalar.ph5185.preheader ], [ %indvars.iv.next4460.prol, %scalar.ph5185.prol ]
  %2849 = icmp eq i32 %2030, %2838
  br i1 %2849, label %._crit_edge4049.us, label %scalar.ph5185.preheader.new

scalar.ph5185.preheader.new:                      ; preds = %scalar.ph5185.prol.loopexit
  %2850 = insertelement <2 x double> poison, double %2001, i64 0
  %2851 = shufflevector <2 x double> %2850, <2 x double> poison, <2 x i32> zeroinitializer
  %2852 = insertelement <2 x double> poison, double %2001, i64 0
  %2853 = shufflevector <2 x double> %2852, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph5185

vector.scevcheck5173:                             ; preds = %.lr.ph4048.us
  %2854 = xor i32 %.33250.us, -1
  %2855 = add i32 %2030, %2854
  %2856 = add i32 %2002, 2
  %2857 = add i32 %2856, %2855
  %2858 = icmp slt i32 %2857, %2856
  %2859 = sext i32 %2856 to i64
  %2860 = shl nsw i64 %2859, 4
  %scevgep5175 = getelementptr i8, ptr %scevgep5174, i64 %2860
  %2861 = zext i32 %2855 to i64
  %mul5176 = shl nuw nsw i64 %2861, 4
  %2862 = getelementptr i8, ptr %scevgep5175, i64 %mul5176
  %2863 = icmp ult ptr %2862, %scevgep5175
  %scevgep5180 = getelementptr i8, ptr %scevgep5179, i64 %2860
  %2864 = zext i32 %2855 to i64
  %mul5181 = shl nuw nsw i64 %2864, 4
  %2865 = getelementptr i8, ptr %scevgep5180, i64 %mul5181
  %2866 = icmp ult ptr %2865, %scevgep5180
  %2867 = or i1 %2858, %2863
  %2868 = or i1 %2867, %2866
  br i1 %2868, label %scalar.ph5185.preheader, label %vector.ph5187

vector.ph5187:                                    ; preds = %vector.scevcheck5173
  %n.vec5189 = and i64 %2837, 8589934590
  %ind.end5190 = add nuw nsw i64 %2832, %n.vec5189
  %broadcast.splatinsert5198 = insertelement <2 x double> poison, double %2001, i64 0
  %broadcast.splat5199 = shufflevector <2 x double> %broadcast.splatinsert5198, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body5192

vector.body5192:                                  ; preds = %vector.body5192, %vector.ph5187
  %index5193 = phi i64 [ 0, %vector.ph5187 ], [ %index.next5201, %vector.body5192 ]
  %offset.idx5194 = add i64 %2832, %index5193
  %2869 = trunc i64 %offset.idx5194 to i32
  %2870 = add i32 %2830, %2869
  %2871 = sext i32 %2870 to i64
  %2872 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2871
  %wide.vec5195 = load <4 x double>, ptr %2872, align 8, !tbaa !12
  %strided.vec5196 = shufflevector <4 x double> %wide.vec5195, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5197 = shufflevector <4 x double> %wide.vec5195, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %2873 = fdiv <2 x double> %strided.vec5196, %broadcast.splat5199
  %2874 = fdiv <2 x double> %strided.vec5197, %broadcast.splat5199
  %2875 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2871
  %interleaved.vec5200 = shufflevector <2 x double> %2873, <2 x double> %2874, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5200, ptr %2875, align 8, !tbaa !12
  %index.next5201 = add nuw i64 %index5193, 2
  %2876 = icmp eq i64 %index.next5201, %n.vec5189
  br i1 %2876, label %middle.block5184, label %vector.body5192, !llvm.loop !100

middle.block5184:                                 ; preds = %vector.body5192
  %2877 = add i32 %2869, 1
  %2878 = add i32 %2830, %2877
  %cmp.n5202 = icmp eq i64 %2837, %n.vec5189
  %2879 = shufflevector <2 x double> %2873, <2 x double> %2874, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n5202, label %._crit_edge4049.us, label %scalar.ph5185.preheader

._crit_edge4049.us:                               ; preds = %scalar.ph5185.prol.loopexit, %scalar.ph5185, %middle.block5184
  %.lcssa4823 = phi i32 [ %2878, %middle.block5184 ], [ %.lcssa5208.unr, %scalar.ph5185.prol.loopexit ], [ %2039, %scalar.ph5185 ]
  %2880 = phi <2 x double> [ %2879, %middle.block5184 ], [ %.lcssa5207.unr, %scalar.ph5185.prol.loopexit ], [ %2043, %scalar.ph5185 ]
  store i32 %.lcssa4823, ptr %17, align 4, !tbaa !5
  store i32 %.lcssa4823, ptr %15, align 4, !tbaa !5
  store <2 x double> %2880, ptr %20, align 16, !tbaa !12
  br label %2044

.lr.ph4057.us:                                    ; preds = %2046
  %2881 = trunc i64 %indvars.iv4464 to i32
  %2882 = mul i32 %34, %2881
  %2883 = sub i32 %2882, %.183217.neg4067.us.in
  %2884 = sub nsw i64 %indvars.iv4464, %2897
  %2885 = add nsw i64 %2884, 1
  %gep4792 = getelementptr %struct.doublecomplex, ptr %invariant.gep4791, i64 %2885
  %gep4794 = getelementptr %struct.doublecomplex, ptr %invariant.gep4793, i64 %2885
  br label %2050

.lr.ph4062.us:                                    ; preds = %._crit_edge4058.us
  %2886 = mul i32 %34, %2127
  %2887 = sub i32 %2886, %.183217.neg4067.us.in
  %2888 = trunc nsw i64 %indvars.iv4464 to i32
  %2889 = add i32 %2894, %2888
  %2890 = sext i32 %2889 to i64
  %2891 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %2890
  %2892 = sext i32 %2122 to i64
  %2893 = add nsw i64 %2897, %2892
  br label %2130

.lr.ph4069.us:                                    ; preds = %2044
  %reass.sub4209 = sub i32 %1999, %.33250.us
  %2894 = add i32 %reass.sub4209, 1
  %reass.sub4210 = sub i32 %2002, %.33250.us
  %2895 = add i32 %reass.sub4210, 1
  %2896 = sext i32 %2011 to i64
  %2897 = sext i32 %.33250.us to i64
  %2898 = sext i32 %1999 to i64
  %2899 = sext i32 %2002 to i64
  %invariant.gep4791 = getelementptr %struct.doublecomplex, ptr %36, i64 %2899
  %invariant.gep4793 = getelementptr %struct.doublecomplex, ptr %39, i64 %2898
  %invariant.gep4787 = getelementptr %struct.doublecomplex, ptr %39, i64 %2898
  %invariant.gep4789 = getelementptr %struct.doublecomplex, ptr %36, i64 %2899
  br label %2046

.lr.ph4074.us:                                    ; preds = %2162
  %indvars4479 = trunc i64 %indvars.iv4476 to i32
  %2900 = mul nsw i64 %indvars.iv4476, %91
  %reass.sub4212 = mul i32 %1984, %indvars4479
  %2901 = add i32 %reass.sub4212, 1
  %2902 = sub i32 %2011, %indvars4479
  %2903 = sext i32 %2902 to i64
  %2904 = getelementptr %struct.doublecomplex, ptr %36, i64 %2900
  %2905 = getelementptr %struct.doublecomplex, ptr %2904, i64 %2903
  %2906 = sext i32 %2165 to i64
  br label %2166

._crit_edge4075.us:                               ; preds = %2166
  store <2 x double> %2187, ptr %20, align 16, !tbaa !12
  br label %2188

.lr.ph4085.us:                                    ; preds = %._crit_edge4070.us
  %2907 = load i32, ptr %3, align 4, !tbaa !5
  %2908 = load i32, ptr %32, align 4, !tbaa !5
  %2909 = add nsw i32 %2908, %.33250.us
  %reass.sub4211 = sub i32 %1999, %.33250.us
  %2910 = add i32 %reass.sub4211, 1
  %2911 = sext i32 %.33250.us to i64
  %2912 = sext i32 %.43179.us to i64
  %2913 = add i32 %.33250.us, %2907
  br label %2162

._crit_edge4086.us:                               ; preds = %2188
  %smin4478 = call i32 @llvm.smin.i32(i32 %2913, i32 %2909)
  store i32 %.lcssa40764087.us, ptr %15, align 4, !tbaa !5
  store i32 %.lcssa40774088.us, ptr %16, align 4, !tbaa !5
  store i32 %smin4478, ptr %17, align 4, !tbaa !5
  br label %2189

.lr.ph4093.us:                                    ; preds = %2326
  %2914 = add i32 %smax4486, %2318
  %2915 = mul i32 %2308, %2914
  %2916 = sub i32 %indvars.iv4482, %2915
  %2917 = sext i32 %2916 to i64
  %2918 = sext i32 %2308 to i64
  %2919 = sext i32 %.3.us to i64
  br label %2420

._crit_edge4094.us:                               ; preds = %2420
  %2920 = trunc nsw i64 %2423 to i32
  store i32 %2920, ptr %16, align 4, !tbaa !5
  store <2 x double> %2443, ptr %20, align 16, !tbaa !12
  br label %2333

.lr.ph4101.us:                                    ; preds = %2346
  %2921 = add nsw i32 %2320, -1
  %2922 = mul nsw i32 %2921, %34
  %2923 = add i32 %2922, 2
  %2924 = getelementptr inbounds double, ptr %44, i64 %.pre4654
  %2925 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4654
  %2926 = sext i32 %.pre4646 to i64
  %invariant.gep4795 = getelementptr %struct.doublecomplex, ptr %36, i64 %2926
  br label %2348

.lr.ph4107.us:                                    ; preds = %2361
  %2927 = add i32 %2314, -1
  br label %2395

.lr.ph4123.us:                                    ; preds = %2207
  %2928 = mul nsw i32 %.33250.us, %37
  %2929 = add i32 %2928, 1
  %2930 = add i32 %.33250.us, %85
  %reass.sub4213 = sub i32 %.43184.us, %85
  %2931 = add i32 %reass.sub4213, 1
  %2932 = add i32 %.33250.us, 1
  %2933 = add i32 %.33250.us, -1
  %2934 = add i32 %.33250.us, 2
  %reass.sub4666 = sub i32 %.43184.us, %85
  %2935 = add i32 %reass.sub4666, 2
  %2936 = sext i32 %.33250.us to i64
  br label %2210

.lr.ph4132.us:                                    ; preds = %._crit_edge4128.us
  %2937 = load i32, ptr %4, align 4, !tbaa !5
  %2938 = sub nsw i32 %85, %2937
  %2939 = sext i32 %2715 to i64
  %2940 = sext i32 %2709 to i64
  %2941 = sext i32 %2704 to i64
  br label %2765

.lr.ph4140.us:                                    ; preds = %2719
  %2942 = load i32, ptr %4, align 4, !tbaa !5
  %2943 = sub nsw i32 %85, %2942
  %2944 = sext i32 %2715 to i64
  %2945 = sext i32 %2709 to i64
  %2946 = sext i32 %2943 to i64
  %2947 = sext i32 %2704 to i64
  br label %2738

._crit_edge4141.us:                               ; preds = %2738
  %2948 = trunc nsw i64 %2742 to i32
  %2949 = trunc i64 %2739 to i32
  store i32 %2948, ptr %15, align 4, !tbaa !5
  store i32 %2949, ptr %16, align 4, !tbaa !5
  store <2 x double> %2762, ptr %20, align 16, !tbaa !12
  br label %2720

.lr.ph4148.us:                                    ; preds = %2474
  %2950 = sub i32 %.43184.us, %85
  %2951 = add i32 %.33250.us, 1
  %2952 = add i32 %.33250.us, %85
  br label %2694

.lr.ph4153.us:                                    ; preds = %2592
  %2953 = add nsw i32 %2590, -1
  %2954 = mul nsw i32 %2953, %34
  %2955 = add i32 %2954, 2
  %2956 = sext i32 %2593 to i64
  %invariant.gep4797 = getelementptr %struct.doublecomplex, ptr %36, i64 %2956
  br label %2604

.lr.ph4159.us:                                    ; preds = %2629
  %2957 = add i32 %2583, -1
  br label %2666

.lr.ph4173.us:                                    ; preds = %._crit_edge4149.us
  %2958 = sub i32 %.43184.us, %85
  %2959 = add i32 %.33250.us, 1
  br label %2577

.lr.ph4177.us:                                    ; preds = %2480
  %2960 = add i32 %2487, -1
  br label %2493

.lr.ph4182.us:                                    ; preds = %._crit_edge4174.us
  %reass.sub4215 = sub i32 %.43184.us, %85
  %2961 = add i32 %reass.sub4215, 1
  %2962 = add i32 %.33250.us, 1
  br label %2480

..loopexit3502_crit_edge.us:                      ; preds = %.lr.ph4187.us.prol.loopexit, %.lr.ph4187.us, %middle.block5153
  %indvars.iv4506.lcssa = phi i64 [ %ind.escape5172, %middle.block5153 ], [ %indvars.iv4506.ph, %.lr.ph4187.us.prol.loopexit ], [ %indvars.iv.next4507, %.lr.ph4187.us ]
  %.lcssa4836 = phi i64 [ %2552, %middle.block5153 ], [ %.lcssa5218.unr, %.lr.ph4187.us.prol.loopexit ], [ %2570, %.lr.ph4187.us ]
  %2963 = trunc nuw nsw i64 %indvars.iv4506.lcssa to i32
  %2964 = trunc nsw i64 %.lcssa4836 to i32
  store i32 %2963, ptr %18, align 4, !tbaa !5
  store i32 %2964, ptr %15, align 4, !tbaa !5
  br label %.outer.us.backedge

.outer:                                           ; preds = %.outer.backedge, %.outer.preheader
  %.pre4524 = phi i32 [ %.pre4522, %.outer.preheader ], [ %.pre4524.be, %.outer.backedge ]
  %2965 = phi i32 [ %99, %.outer.preheader ], [ %.be5221, %.outer.backedge ]
  %.23249.ph = phi i32 [ 0, %.outer.preheader ], [ %.33250, %.outer.backedge ]
  %.33183.ph = phi i32 [ %.23182, %.outer.preheader ], [ %.43184, %.outer.backedge ]
  %.33178.ph = phi i32 [ %.23177, %.outer.preheader ], [ %.43179, %.outer.backedge ]
  %.33173.ph = phi i32 [ %.23172, %.outer.preheader ], [ %.43174, %.outer.backedge ]
  %.13165.ph = phi i32 [ 1, %.outer.preheader ], [ %.131653521, %.outer.backedge ]
  %.not33343870 = icmp eq i32 %.13165.ph, 0
  br i1 %.not33343870, label %2976, label %.lr.ph3873

.lr.ph3873:                                       ; preds = %.outer
  %2966 = add nsw i32 %.23249.ph, 1
  %2967 = sub nsw i32 %85, %2966
  %2968 = call i32 @llvm.smin.i32(i32 %2965, i32 %2967)
  store i32 %2968, ptr %32, align 4, !tbaa !5
  %2969 = sub nsw i32 %2966, %.pre4524
  %2970 = call i32 @llvm.smax.i32(i32 %2969, i32 1)
  %2971 = add nsw i32 %2968, %2966
  %2972 = load i32, ptr %30, align 4, !tbaa !5
  %2973 = sub i32 %2971, %2972
  %.not3336 = icmp slt i32 %.23249.ph, %85
  br i1 %.not3336, label %.lr.ph3873.split.us, label %.lr.ph3873.split

.lr.ph3873.split.us:                              ; preds = %.lr.ph3873
  store i32 %2969, ptr %18, align 4, !tbaa !5
  %2974 = add nsw i32 %.23249.ph, 2
  br label %2979

.lr.ph3873.split:                                 ; preds = %.lr.ph3873
  %2975 = icmp eq i32 %.pre4524, 0
  br i1 %2975, label %.loopexit3504, label %._crit_edge3874

._crit_edge3874:                                  ; preds = %.lr.ph3873.split
  store i32 %2969, ptr %18, align 4, !tbaa !5
  br label %2976

2976:                                             ; preds = %._crit_edge3874, %.outer
  %.33183.lcssa = phi i32 [ %87, %._crit_edge3874 ], [ %.33183.ph, %.outer ]
  %.33178.lcssa = phi i32 [ %2970, %._crit_edge3874 ], [ %.33178.ph, %.outer ]
  %.33173.lcssa = phi i32 [ %2973, %._crit_edge3874 ], [ %.33173.ph, %.outer ]
  %2977 = sub nsw i32 %.23249.ph, %.pre4524
  %2978 = icmp slt i32 %2977, 2
  br i1 %2978, label %.loopexit3504, label %2979

2979:                                             ; preds = %.lr.ph3873.split.us, %2976
  %.131653521 = phi i32 [ 0, %2976 ], [ %.13165.ph, %.lr.ph3873.split.us ]
  %.not33343518 = phi i1 [ true, %2976 ], [ false, %.lr.ph3873.split.us ]
  %.33250 = phi i32 [ %2977, %2976 ], [ %2966, %.lr.ph3873.split.us ]
  %.43184 = phi i32 [ %.33183.lcssa, %2976 ], [ %2974, %.lr.ph3873.split.us ]
  %.43179 = phi i32 [ %.33178.lcssa, %2976 ], [ %2970, %.lr.ph3873.split.us ]
  %.43174 = phi i32 [ %.33173.lcssa, %2976 ], [ %2973, %.lr.ph3873.split.us ]
  %2980 = load i32, ptr %32, align 4, !tbaa !5
  %2981 = sub nsw i32 %85, %2980
  %2982 = icmp slt i32 %.33250, %2981
  br i1 %2982, label %2985, label %2983

2983:                                             ; preds = %2979
  %2984 = load i32, ptr %2, align 4, !tbaa !5
  br label %2985

2985:                                             ; preds = %2979, %2983
  %storemerge = phi i32 [ %2984, %2983 ], [ %85, %2979 ]
  store i32 %storemerge, ptr %29, align 4, !tbaa !5
  br i1 %.not33343518, label %3334, label %2986

2986:                                             ; preds = %2985
  %2987 = mul nsw i32 %.33250, %37
  %2988 = add nsw i32 %2987, %50
  %2989 = sext i32 %2988 to i64
  %2990 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %2989
  %2991 = load double, ptr %2990, align 8, !tbaa !9
  %2992 = load i32, ptr %30, align 4, !tbaa !5
  %2993 = mul nsw i32 %.33250, %34
  %2994 = add nsw i32 %2992, %2993
  store i32 %2994, ptr %17, align 4, !tbaa !5
  %2995 = sext i32 %2994 to i64
  %2996 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2995
  %2997 = load double, ptr %2996, align 8, !tbaa !9
  %2998 = fdiv double %2997, %2991
  %2999 = fdiv double %2998, %2991
  store double %2999, ptr %19, align 8, !tbaa !12
  store double %2999, ptr %2996, align 8, !tbaa !9
  %3000 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %2995, i32 1
  store double 0.000000e+00, ptr %3000, align 8, !tbaa !13
  %.not33643884.not = icmp slt i32 %.43179, %.33250
  br i1 %.not33643884.not, label %.lr.ph3887, label %3067

.lr.ph3887:                                       ; preds = %2986
  %3001 = sub i32 %2993, %.33250
  %3002 = zext i32 %.43179 to i64
  %3003 = xor i32 %.43179, -1
  %3004 = add i32 %.33250, %3003
  %3005 = zext i32 %3004 to i64
  %3006 = add nuw nsw i64 %3005, 1
  %min.iters.check5050 = icmp ult i32 %3004, 3
  br i1 %min.iters.check5050, label %scalar.ph5049.preheader, label %vector.scevcheck5037

vector.scevcheck5037:                             ; preds = %.lr.ph3887
  %3007 = xor i32 %.43179, -1
  %3008 = add i32 %.33250, %3007
  %3009 = add i32 %.43179, %2992
  %3010 = mul i32 %1981, %.33250
  %3011 = add i32 %3009, %3010
  %3012 = add i32 %3011, %3008
  %3013 = icmp slt i32 %3012, %3011
  %3014 = sext i32 %3011 to i64
  %3015 = shl nsw i64 %3014, 4
  %scevgep5039 = getelementptr i8, ptr %scevgep5038, i64 %3015
  %3016 = zext i32 %3008 to i64
  %mul5040 = shl nuw nsw i64 %3016, 4
  %3017 = getelementptr i8, ptr %scevgep5039, i64 %mul5040
  %3018 = icmp ult ptr %3017, %scevgep5039
  %scevgep5044 = getelementptr i8, ptr %scevgep5043, i64 %3015
  %3019 = zext i32 %3008 to i64
  %mul5045 = shl nuw nsw i64 %3019, 4
  %3020 = getelementptr i8, ptr %scevgep5044, i64 %mul5045
  %3021 = icmp ult ptr %3020, %scevgep5044
  %3022 = or i1 %3013, %3018
  %3023 = or i1 %3022, %3021
  br i1 %3023, label %scalar.ph5049.preheader, label %vector.ph5051

vector.ph5051:                                    ; preds = %vector.scevcheck5037
  %n.vec5053 = and i64 %3006, 8589934590
  %ind.end5054 = add nuw nsw i64 %n.vec5053, %3002
  %broadcast.splatinsert5062 = insertelement <2 x double> poison, double %2991, i64 0
  %broadcast.splat5063 = shufflevector <2 x double> %broadcast.splatinsert5062, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body5056

vector.body5056:                                  ; preds = %vector.body5056, %vector.ph5051
  %index5057 = phi i64 [ 0, %vector.ph5051 ], [ %index.next5065, %vector.body5056 ]
  %3024 = trunc i64 %index5057 to i32
  %3025 = add i32 %.43179, %3024
  %3026 = add i32 %3001, %3025
  %3027 = add i32 %3026, %2992
  %3028 = sext i32 %3027 to i64
  %3029 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3028
  %wide.vec5059 = load <4 x double>, ptr %3029, align 8, !tbaa !12
  %strided.vec5060 = shufflevector <4 x double> %wide.vec5059, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec5061 = shufflevector <4 x double> %wide.vec5059, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %3030 = fdiv <2 x double> %strided.vec5060, %broadcast.splat5063
  %3031 = fdiv <2 x double> %strided.vec5061, %broadcast.splat5063
  %3032 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3028
  %interleaved.vec5064 = shufflevector <2 x double> %3030, <2 x double> %3031, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec5064, ptr %3032, align 8, !tbaa !12
  %index.next5065 = add nuw i64 %index5057, 2
  %3033 = icmp eq i64 %index.next5065, %n.vec5053
  br i1 %3033, label %middle.block5048, label %vector.body5056, !llvm.loop !101

middle.block5048:                                 ; preds = %vector.body5056
  %cmp.n5066 = icmp eq i64 %3006, %n.vec5053
  %3034 = shufflevector <2 x double> %3030, <2 x double> %3031, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n5066, label %._crit_edge3888, label %scalar.ph5049.preheader

scalar.ph5049.preheader:                          ; preds = %middle.block5048, %vector.scevcheck5037, %.lr.ph3887
  %indvars.iv4404.ph = phi i64 [ %3002, %vector.scevcheck5037 ], [ %3002, %.lr.ph3887 ], [ %ind.end5054, %middle.block5048 ]
  %3035 = trunc i64 %indvars.iv4404.ph to i32
  %3036 = sub i32 %.33250, %3035
  %.neg5303 = add i32 %3035, 1
  %xtraiter5287 = and i32 %3036, 1
  %lcmp.mod5288.not = icmp eq i32 %xtraiter5287, 0
  br i1 %lcmp.mod5288.not, label %scalar.ph5049.prol.loopexit, label %scalar.ph5049.prol

scalar.ph5049.prol:                               ; preds = %scalar.ph5049.preheader
  %3037 = trunc i64 %indvars.iv4404.ph to i32
  %3038 = add i32 %3001, %3037
  %3039 = add i32 %3038, %2992
  %3040 = sext i32 %3039 to i64
  %3041 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3040
  %3042 = load <2 x double>, ptr %3041, align 8, !tbaa !12
  %3043 = insertelement <2 x double> poison, double %2991, i64 0
  %3044 = shufflevector <2 x double> %3043, <2 x double> poison, <2 x i32> zeroinitializer
  %3045 = fdiv <2 x double> %3042, %3044
  store <2 x double> %3045, ptr %3041, align 8, !tbaa !12
  %indvars.iv.next4405.prol = add nsw i64 %indvars.iv4404.ph, 1
  br label %scalar.ph5049.prol.loopexit

scalar.ph5049.prol.loopexit:                      ; preds = %scalar.ph5049.prol, %scalar.ph5049.preheader
  %.lcssa5224.unr = phi <2 x double> [ poison, %scalar.ph5049.preheader ], [ %3045, %scalar.ph5049.prol ]
  %indvars.iv4404.unr = phi i64 [ %indvars.iv4404.ph, %scalar.ph5049.preheader ], [ %indvars.iv.next4405.prol, %scalar.ph5049.prol ]
  %3046 = icmp eq i32 %.33250, %.neg5303
  br i1 %3046, label %._crit_edge3888, label %scalar.ph5049.preheader.new

scalar.ph5049.preheader.new:                      ; preds = %scalar.ph5049.prol.loopexit
  %3047 = insertelement <2 x double> poison, double %2991, i64 0
  %3048 = shufflevector <2 x double> %3047, <2 x double> poison, <2 x i32> zeroinitializer
  %3049 = insertelement <2 x double> poison, double %2991, i64 0
  %3050 = shufflevector <2 x double> %3049, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph5049

scalar.ph5049:                                    ; preds = %scalar.ph5049, %scalar.ph5049.preheader.new
  %indvars.iv4404 = phi i64 [ %indvars.iv4404.unr, %scalar.ph5049.preheader.new ], [ %indvars.iv.next4405.1, %scalar.ph5049 ]
  %3051 = trunc i64 %indvars.iv4404 to i32
  %3052 = add i32 %3001, %3051
  %3053 = add i32 %3052, %2992
  %3054 = sext i32 %3053 to i64
  %3055 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3054
  %3056 = load <2 x double>, ptr %3055, align 8, !tbaa !12
  %3057 = fdiv <2 x double> %3056, %3048
  store <2 x double> %3057, ptr %3055, align 8, !tbaa !12
  %3058 = trunc i64 %indvars.iv4404 to i32
  %3059 = add i32 %3058, 1
  %3060 = add i32 %3001, %3059
  %3061 = add i32 %3060, %2992
  %3062 = sext i32 %3061 to i64
  %3063 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3062
  %3064 = load <2 x double>, ptr %3063, align 8, !tbaa !12
  %3065 = fdiv <2 x double> %3064, %3050
  store <2 x double> %3065, ptr %3063, align 8, !tbaa !12
  %indvars.iv.next4405.1 = add nuw nsw i64 %indvars.iv4404, 2
  %lftr.wideiv4407.1 = trunc i64 %indvars.iv.next4405.1 to i32
  %exitcond4408.not.1 = icmp eq i32 %.33250, %lftr.wideiv4407.1
  br i1 %exitcond4408.not.1, label %._crit_edge3888, label %scalar.ph5049, !llvm.loop !102

._crit_edge3888:                                  ; preds = %scalar.ph5049.prol.loopexit, %scalar.ph5049, %middle.block5048
  %3066 = phi <2 x double> [ %3034, %middle.block5048 ], [ %.lcssa5224.unr, %scalar.ph5049.prol.loopexit ], [ %3065, %scalar.ph5049 ]
  store <2 x double> %3066, ptr %20, align 16, !tbaa !12
  br label %3067

3067:                                             ; preds = %._crit_edge3888, %2986
  %3068 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %3068, ptr %18, align 4, !tbaa !5
  %3069 = add nsw i32 %.pre4524, %.33250
  store i32 %3069, ptr %15, align 4, !tbaa !5
  %3070 = call i32 @llvm.smin.i32(i32 %3068, i32 %3069)
  %3071 = add i32 %.33250, 1
  %.not33663892.not = icmp slt i32 %.33250, %3070
  br i1 %.not33663892.not, label %.lr.ph3895, label %3109

.lr.ph3895:                                       ; preds = %3067
  %3072 = zext i32 %.33250 to i64
  %3073 = add nuw nsw i64 %3072, 1
  %3074 = add i32 %3070, 1
  %3075 = insertelement <2 x double> poison, double %2991, i64 0
  %3076 = shufflevector <2 x double> %3075, <2 x double> poison, <2 x i32> zeroinitializer
  %3077 = sub i32 %3070, %.33250
  %.neg5304 = add i32 %.33250, 1
  %xtraiter5291 = and i32 %3077, 1
  %lcmp.mod5292.not = icmp eq i32 %xtraiter5291, 0
  br i1 %lcmp.mod5292.not, label %.prol.loopexit5290, label %.prol.loopexit5290.unr-lcssa

.prol.loopexit5290.unr-lcssa:                     ; preds = %.lr.ph3895
  %3078 = trunc i64 %3073 to i32
  %3079 = sub i32 %.33250, %3078
  %3080 = trunc i64 %3073 to i32
  %3081 = mul i32 %34, %3080
  %3082 = add i32 %3079, %3081
  %3083 = add i32 %3082, %2992
  %3084 = sext i32 %3083 to i64
  %3085 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3084
  %3086 = load <2 x double>, ptr %3085, align 8, !tbaa !12
  %3087 = fdiv <2 x double> %3086, %3076
  store <2 x double> %3087, ptr %3085, align 8, !tbaa !12
  %indvars.iv.next4410.prol = add nuw nsw i64 %3072, 2
  br label %.prol.loopexit5290

.prol.loopexit5290:                               ; preds = %.prol.loopexit5290.unr-lcssa, %.lr.ph3895
  %.lcssa5226.unr = phi i32 [ poison, %.lr.ph3895 ], [ %3083, %.prol.loopexit5290.unr-lcssa ]
  %.lcssa5225.unr = phi <2 x double> [ poison, %.lr.ph3895 ], [ %3087, %.prol.loopexit5290.unr-lcssa ]
  %indvars.iv4409.unr = phi i64 [ %3073, %.lr.ph3895 ], [ %indvars.iv.next4410.prol, %.prol.loopexit5290.unr-lcssa ]
  %3088 = icmp eq i32 %3070, %.neg5304
  br i1 %3088, label %._crit_edge3896, label %.lr.ph3895.new

.lr.ph3895.new:                                   ; preds = %.prol.loopexit5290, %.lr.ph3895.new
  %indvars.iv4409 = phi i64 [ %indvars.iv.next4410.1, %.lr.ph3895.new ], [ %indvars.iv4409.unr, %.prol.loopexit5290 ]
  %3089 = trunc i64 %indvars.iv4409 to i32
  %3090 = sub i32 %.33250, %3089
  %3091 = trunc i64 %indvars.iv4409 to i32
  %3092 = mul i32 %34, %3091
  %3093 = add i32 %3090, %3092
  %3094 = add i32 %3093, %2992
  %3095 = sext i32 %3094 to i64
  %3096 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3095
  %3097 = load <2 x double>, ptr %3096, align 8, !tbaa !12
  %3098 = fdiv <2 x double> %3097, %3076
  store <2 x double> %3098, ptr %3096, align 8, !tbaa !12
  %indvars.iv.next4410 = add nuw nsw i64 %indvars.iv4409, 1
  %3099 = trunc i64 %indvars.iv.next4410 to i32
  %3100 = sub i32 %.33250, %3099
  %3101 = trunc i64 %indvars.iv.next4410 to i32
  %3102 = mul i32 %34, %3101
  %3103 = add i32 %3100, %3102
  %3104 = add i32 %3103, %2992
  %3105 = sext i32 %3104 to i64
  %3106 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3105
  %3107 = load <2 x double>, ptr %3106, align 8, !tbaa !12
  %3108 = fdiv <2 x double> %3107, %3076
  store <2 x double> %3108, ptr %3106, align 8, !tbaa !12
  %indvars.iv.next4410.1 = add nuw nsw i64 %indvars.iv4409, 2
  %lftr.wideiv4412.1 = trunc i64 %indvars.iv.next4410.1 to i32
  %exitcond4413.not.1 = icmp eq i32 %3074, %lftr.wideiv4412.1
  br i1 %exitcond4413.not.1, label %._crit_edge3896, label %.lr.ph3895.new, !llvm.loop !103

._crit_edge3896:                                  ; preds = %.lr.ph3895.new, %.prol.loopexit5290
  %.lcssa5226 = phi i32 [ %.lcssa5226.unr, %.prol.loopexit5290 ], [ %3104, %.lr.ph3895.new ]
  %.lcssa5225 = phi <2 x double> [ %.lcssa5225.unr, %.prol.loopexit5290 ], [ %3108, %.lr.ph3895.new ]
  store i32 %.lcssa5226, ptr %18, align 4, !tbaa !5
  store i32 %.lcssa5226, ptr %15, align 4, !tbaa !5
  store <2 x double> %.lcssa5225, ptr %20, align 16, !tbaa !12
  br label %3109

3109:                                             ; preds = %._crit_edge3896, %3067
  %3110 = add nsw i32 %2980, %.33250
  store i32 %3110, ptr %17, align 4, !tbaa !5
  %.not33673911 = icmp slt i32 %2980, 1
  br i1 %.not33673911, label %._crit_edge3915, label %.lr.ph3914

.lr.ph3914:                                       ; preds = %3109
  %3111 = add i32 %.33250, %50
  %3112 = sext i32 %3071 to i64
  %3113 = sext i32 %.33250 to i64
  br label %3114

3114:                                             ; preds = %.lr.ph3914, %._crit_edge3910
  %indvars.iv4414 = phi i64 [ %3112, %.lr.ph3914 ], [ %indvars.iv.next4415, %._crit_edge3910 ]
  %indvars4419 = trunc i64 %indvars.iv4414 to i32
  %3115 = load i32, ptr %32, align 4, !tbaa !5
  %3116 = add nsw i32 %3115, %.33250
  store i32 %3116, ptr %18, align 4, !tbaa !5
  %3117 = sext i32 %3116 to i64
  %.not33873901 = icmp sgt i64 %indvars.iv4414, %3117
  br i1 %.not33873901, label %._crit_edge3905, label %.lr.ph3904

.lr.ph3904:                                       ; preds = %3114
  %3118 = sub nsw i64 %3113, %indvars.iv4414
  %3119 = mul nsw i32 %34, %indvars4419
  %3120 = trunc nsw i64 %3118 to i32
  %3121 = add i32 %3119, %3120
  %3122 = mul nsw i64 %indvars.iv4414, %92
  %gep4786 = getelementptr %struct.doublecomplex, ptr %invariant.gep4785, i64 %3118
  %3123 = getelementptr %struct.doublecomplex, ptr %gep4786, i64 %3122
  br label %3124

3124:                                             ; preds = %.lr.ph3904, %3124
  %indvars.iv4416 = phi i64 [ %indvars.iv4414, %.lr.ph3904 ], [ %indvars.iv.next4417, %3124 ]
  %indvars4418 = trunc i64 %indvars.iv4416 to i32
  %3125 = sub i32 %indvars4419, %indvars4418
  %3126 = load i32, ptr %30, align 4, !tbaa !5
  %3127 = trunc i64 %indvars.iv4416 to i32
  %3128 = mul i32 %34, %3127
  %3129 = add i32 %3125, %3128
  %3130 = add i32 %3129, %3126
  store i32 %3130, ptr %15, align 4, !tbaa !5
  store i32 %3130, ptr %16, align 4, !tbaa !5
  %3131 = sub nsw i64 %3113, %indvars.iv4416
  %3132 = sub nsw i32 %.33250, %indvars4418
  %3133 = mul nsw i64 %indvars.iv4416, %92
  %3134 = add i32 %3121, %3126
  %3135 = sext i32 %3134 to i64
  %3136 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3135
  %3137 = call { double, double } @Cd(ptr noundef %3136)
  %3138 = extractvalue { double, double } %3137, 0
  %3139 = extractvalue { double, double } %3137, 1
  %3140 = fneg double %3139
  %3141 = call ptr @_pCd(ptr noundef nonnull %23)
  %3142 = getelementptr inbounds i8, ptr %3141, i64 8
  store double %3138, ptr %3141, align 8
  store double %3140, ptr %3142, align 8
  %gep4784 = getelementptr %struct.doublecomplex, ptr %invariant.gep4783, i64 %3131
  %3143 = getelementptr %struct.doublecomplex, ptr %gep4784, i64 %3133
  %3144 = load double, ptr %3143, align 8, !tbaa !9
  %3145 = getelementptr inbounds i8, ptr %3143, i64 8
  %3146 = load double, ptr %3145, align 8, !tbaa !13
  %3147 = fneg double %3146
  %3148 = load <2 x double>, ptr %23, align 16, !tbaa !12
  %3149 = insertelement <2 x double> poison, double %3146, i64 0
  %3150 = insertelement <2 x double> %3149, double %3147, i64 1
  %3151 = fmul <2 x double> %3148, %3150
  %3152 = shufflevector <2 x double> %3151, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3153 = insertelement <2 x double> poison, double %3144, i64 0
  %3154 = shufflevector <2 x double> %3153, <2 x double> poison, <2 x i32> zeroinitializer
  %3155 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3154, <2 x double> %3148, <2 x double> %3152)
  store <2 x double> %3155, ptr %22, align 16, !tbaa !12
  %3156 = load i32, ptr %16, align 4, !tbaa !5
  %3157 = sext i32 %3156 to i64
  %3158 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3157
  %3159 = load <2 x double>, ptr %3158, align 8, !tbaa !12
  %3160 = fsub <2 x double> %3159, %3155
  store <2 x double> %3160, ptr %21, align 16, !tbaa !12
  %3161 = call { double, double } @Cd(ptr noundef %3123)
  %3162 = extractvalue { double, double } %3161, 0
  %3163 = extractvalue { double, double } %3161, 1
  %3164 = fneg double %3163
  %3165 = call ptr @_pCd(ptr noundef nonnull %24)
  %3166 = getelementptr inbounds i8, ptr %3165, i64 8
  store double %3162, ptr %3165, align 8
  store double %3164, ptr %3166, align 8
  %3167 = load i32, ptr %30, align 4, !tbaa !5
  %3168 = add i32 %3128, %3132
  %3169 = add i32 %3168, %3167
  %3170 = load <2 x double>, ptr %24, align 16
  %3171 = sext i32 %3169 to i64
  %3172 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3171
  %3173 = load double, ptr %90, align 8, !tbaa !13
  %3174 = fneg double %3173
  %3175 = add nsw i32 %3167, %2993
  %3176 = sext i32 %3175 to i64
  %3177 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3176
  %3178 = load double, ptr %3177, align 8, !tbaa !9
  store double %3178, ptr %19, align 8, !tbaa !12
  %3179 = load double, ptr %3143, align 8, !tbaa !9
  %3180 = fmul double %3178, %3179
  %3181 = load double, ptr %3145, align 8, !tbaa !13
  %3182 = fmul double %3178, %3181
  %3183 = fneg double %3182
  %3184 = load <2 x double>, ptr %3172, align 8, !tbaa !12
  %3185 = insertelement <2 x double> poison, double %3173, i64 0
  %3186 = insertelement <2 x double> %3185, double %3174, i64 1
  %3187 = fmul <2 x double> %3184, %3186
  %3188 = shufflevector <2 x double> %3187, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3189 = shufflevector <2 x double> %3170, <2 x double> poison, <2 x i32> zeroinitializer
  %3190 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3189, <2 x double> %3184, <2 x double> %3188)
  %3191 = load <2 x double>, ptr %21, align 16, !tbaa !12
  %3192 = fsub <2 x double> %3191, %3190
  %3193 = call { double, double } @Cd(ptr noundef %3123)
  %3194 = extractvalue { double, double } %3193, 0
  %3195 = extractvalue { double, double } %3193, 1
  %3196 = fneg double %3195
  %3197 = call ptr @_pCd(ptr noundef nonnull %25)
  %3198 = getelementptr inbounds i8, ptr %3197, i64 8
  store double %3194, ptr %3197, align 8
  store double %3196, ptr %3198, align 8
  %3199 = load <2 x double>, ptr %25, align 16, !tbaa !12
  %3200 = insertelement <2 x double> poison, double %3182, i64 0
  %3201 = insertelement <2 x double> %3200, double %3183, i64 1
  %3202 = fmul <2 x double> %3199, %3201
  %3203 = shufflevector <2 x double> %3202, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3204 = insertelement <2 x double> poison, double %3180, i64 0
  %3205 = shufflevector <2 x double> %3204, <2 x double> poison, <2 x i32> zeroinitializer
  %3206 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3205, <2 x double> %3199, <2 x double> %3203)
  %3207 = fadd <2 x double> %3192, %3206
  store <2 x double> %3207, ptr %20, align 16, !tbaa !12
  %3208 = load i32, ptr %15, align 4, !tbaa !5
  %3209 = sext i32 %3208 to i64
  %3210 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3209
  store <2 x double> %3207, ptr %3210, align 8, !tbaa !12
  %indvars.iv.next4417 = add nsw i64 %indvars.iv4416, 1
  %3211 = load i32, ptr %18, align 4, !tbaa !5
  %3212 = sext i32 %3211 to i64
  %.not3387.not = icmp slt i64 %indvars.iv4416, %3212
  br i1 %.not3387.not, label %3124, label %._crit_edge3905.loopexit, !llvm.loop !104

._crit_edge3905.loopexit:                         ; preds = %3124
  %.pre4525 = load i32, ptr %32, align 4, !tbaa !5
  %.pre4614 = add nsw i32 %.pre4525, %.33250
  br label %._crit_edge3905

._crit_edge3905:                                  ; preds = %._crit_edge3905.loopexit, %3114
  %.pre-phi4615 = phi i32 [ %.pre4614, %._crit_edge3905.loopexit ], [ %3116, %3114 ]
  %3213 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %3213, ptr %15, align 4, !tbaa !5
  %3214 = load i32, ptr %3, align 4, !tbaa !5
  %3215 = add nsw i32 %3214, %.33250
  store i32 %3215, ptr %16, align 4, !tbaa !5
  %3216 = call i32 @llvm.smin.i32(i32 %3213, i32 %3215)
  store i32 %3216, ptr %18, align 4, !tbaa !5
  %.not3389.not3906 = icmp slt i32 %.pre-phi4615, %3216
  br i1 %.not3389.not3906, label %.lr.ph3909, label %._crit_edge3910

.lr.ph3909:                                       ; preds = %._crit_edge3905
  %3217 = mul nsw i64 %indvars.iv4414, %92
  %3218 = sub i32 %3111, %indvars4419
  %3219 = sext i32 %3218 to i64
  %3220 = getelementptr %struct.doublecomplex, ptr %39, i64 %3217
  %3221 = getelementptr %struct.doublecomplex, ptr %3220, i64 %3219
  %.pre4526 = load i32, ptr %30, align 4, !tbaa !5
  br label %3222

3222:                                             ; preds = %.lr.ph3909, %3222
  %3223 = phi i32 [ %.pre4526, %.lr.ph3909 ], [ %3235, %3222 ]
  %.25.in3907 = phi i32 [ %.pre-phi4615, %.lr.ph3909 ], [ %.25, %3222 ]
  %.25 = add nsw i32 %.25.in3907, 1
  %.25.neg = xor i32 %.25.in3907, -1
  %3224 = add i32 %indvars4419, %.25.neg
  %3225 = mul nsw i32 %.25, %34
  %3226 = add i32 %3224, %3225
  %3227 = add i32 %3226, %3223
  store i32 %3227, ptr %15, align 4, !tbaa !5
  store i32 %3227, ptr %16, align 4, !tbaa !5
  %3228 = call { double, double } @Cd(ptr noundef %3221)
  %3229 = extractvalue { double, double } %3228, 0
  %3230 = extractvalue { double, double } %3228, 1
  %3231 = fneg double %3230
  %3232 = call ptr @_pCd(ptr noundef nonnull %21)
  %3233 = getelementptr inbounds i8, ptr %3232, i64 8
  store double %3229, ptr %3232, align 8
  store double %3231, ptr %3233, align 8
  %3234 = add i32 %.33250, %.25.neg
  %3235 = load i32, ptr %30, align 4, !tbaa !5
  %3236 = add i32 %3234, %3225
  %3237 = add i32 %3236, %3235
  %3238 = load <2 x double>, ptr %21, align 16
  %3239 = sext i32 %3237 to i64
  %3240 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3239
  %3241 = load double, ptr %89, align 8, !tbaa !13
  %3242 = fneg double %3241
  %3243 = load i32, ptr %16, align 4, !tbaa !5
  %3244 = sext i32 %3243 to i64
  %3245 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3244
  %3246 = load <2 x double>, ptr %3240, align 8, !tbaa !12
  %3247 = insertelement <2 x double> poison, double %3241, i64 0
  %3248 = insertelement <2 x double> %3247, double %3242, i64 1
  %3249 = fmul <2 x double> %3246, %3248
  %3250 = shufflevector <2 x double> %3249, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3251 = shufflevector <2 x double> %3238, <2 x double> poison, <2 x i32> zeroinitializer
  %3252 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3251, <2 x double> %3246, <2 x double> %3250)
  %3253 = load <2 x double>, ptr %3245, align 8, !tbaa !12
  %3254 = fsub <2 x double> %3253, %3252
  store <2 x double> %3254, ptr %20, align 16, !tbaa !12
  %3255 = load i32, ptr %15, align 4, !tbaa !5
  %3256 = sext i32 %3255 to i64
  %3257 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3256
  store <2 x double> %3254, ptr %3257, align 8, !tbaa !12
  %3258 = load i32, ptr %18, align 4, !tbaa !5
  %.not3389.not = icmp slt i32 %.25, %3258
  br i1 %.not3389.not, label %3222, label %._crit_edge3910, !llvm.loop !105

._crit_edge3910:                                  ; preds = %3222, %._crit_edge3905
  %indvars.iv.next4415 = add nsw i64 %indvars.iv4414, 1
  %3259 = load i32, ptr %17, align 4, !tbaa !5
  %3260 = sext i32 %3259 to i64
  %.not3367.not = icmp slt i64 %indvars.iv4414, %3260
  br i1 %.not3367.not, label %3114, label %._crit_edge3915, !llvm.loop !106

._crit_edge3915:                                  ; preds = %._crit_edge3910, %3109
  store i32 %.33250, ptr %17, align 4, !tbaa !5
  %.not33683927 = icmp sgt i32 %.43179, %.33250
  br i1 %.not33683927, label %3309, label %.lr.ph3930

.lr.ph3930:                                       ; preds = %._crit_edge3915
  %3261 = load i32, ptr %3, align 4, !tbaa !5
  %3262 = load i32, ptr %32, align 4, !tbaa !5
  %3263 = add nsw i32 %3262, %.33250
  %3264 = load i32, ptr %30, align 4
  %3265 = add i32 %.33250, %50
  %3266 = sub i32 %2993, %.33250
  %3267 = sext i32 %.33250 to i64
  %3268 = zext i32 %.43179 to i64
  %3269 = add i32 %.33250, %3261
  br label %3270

3270:                                             ; preds = %.lr.ph3930, %3308
  %indvars.iv4427 = phi i64 [ %3268, %.lr.ph3930 ], [ %indvars.iv.next4428, %3308 ]
  %3271 = trunc i64 %indvars.iv4427 to i32
  %3272 = add i32 %3261, %3271
  %3273 = call i32 @llvm.smin.i32(i32 %3272, i32 %3263)
  %.not33863917.not = icmp slt i32 %.33250, %3273
  br i1 %.not33863917.not, label %.lr.ph3921, label %3308

.lr.ph3921:                                       ; preds = %3270
  %3274 = trunc i64 %indvars.iv4427 to i32
  %3275 = add i32 %3266, %3274
  %3276 = add i32 %3275, %3264
  %3277 = sext i32 %3276 to i64
  %3278 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3277
  %3279 = sext i32 %3273 to i64
  br label %3280

3280:                                             ; preds = %.lr.ph3921, %3280
  %indvars.iv4422.in = phi i64 [ %3267, %.lr.ph3921 ], [ %indvars.iv4422, %3280 ]
  %indvars.iv4420 = phi i64 [ %3267, %.lr.ph3921 ], [ %indvars.iv.next4421, %3280 ]
  %indvars.iv4422 = add nsw i64 %indvars.iv4422.in, 1
  %3281 = trunc nsw i64 %indvars.iv4420 to i32
  %.133212.neg3919 = xor i32 %3281, -1
  %3282 = add i32 %3274, %.133212.neg3919
  %3283 = trunc i64 %indvars.iv4422 to i32
  %3284 = mul i32 %34, %3283
  %3285 = add i32 %3282, %3284
  %3286 = add i32 %3285, %3264
  %3287 = mul nsw i64 %indvars.iv4422, %92
  %3288 = add i32 %3265, %.133212.neg3919
  %3289 = sext i32 %3288 to i64
  %3290 = getelementptr %struct.doublecomplex, ptr %39, i64 %3287
  %3291 = getelementptr %struct.doublecomplex, ptr %3290, i64 %3289
  %3292 = load double, ptr %3291, align 8, !tbaa !9
  %3293 = getelementptr inbounds i8, ptr %3291, i64 8
  %3294 = load double, ptr %3293, align 8, !tbaa !13
  %3295 = fneg double %3294
  %3296 = sext i32 %3286 to i64
  %3297 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3296
  %3298 = load <2 x double>, ptr %3278, align 8, !tbaa !12
  %3299 = insertelement <2 x double> poison, double %3294, i64 0
  %3300 = insertelement <2 x double> %3299, double %3295, i64 1
  %3301 = fmul <2 x double> %3298, %3300
  %3302 = shufflevector <2 x double> %3301, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3303 = insertelement <2 x double> poison, double %3292, i64 0
  %3304 = shufflevector <2 x double> %3303, <2 x double> poison, <2 x i32> zeroinitializer
  %3305 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3304, <2 x double> %3298, <2 x double> %3302)
  %3306 = load <2 x double>, ptr %3297, align 8, !tbaa !12
  %3307 = fsub <2 x double> %3306, %3305
  store <2 x double> %3307, ptr %3297, align 8, !tbaa !12
  %.not3386.not = icmp slt i64 %indvars.iv4422, %3279
  %indvars.iv.next4421 = add nsw i64 %indvars.iv4420, 1
  br i1 %.not3386.not, label %3280, label %._crit_edge3922, !llvm.loop !107

._crit_edge3922:                                  ; preds = %3280
  store <2 x double> %3307, ptr %20, align 16, !tbaa !12
  br label %3308

3308:                                             ; preds = %._crit_edge3922, %3270
  %.lcssa39243933 = phi i32 [ %3286, %._crit_edge3922 ], [ %3263, %3270 ]
  %.lcssa39233932 = phi i32 [ %3286, %._crit_edge3922 ], [ %3272, %3270 ]
  %indvars.iv.next4428 = add i64 %indvars.iv4427, 1
  %lftr.wideiv4430 = trunc i64 %indvars.iv.next4428 to i32
  %exitcond4431.not = icmp eq i32 %3071, %lftr.wideiv4430
  br i1 %exitcond4431.not, label %._crit_edge3931, label %3270, !llvm.loop !108

._crit_edge3931:                                  ; preds = %3308
  %smin = call i32 @llvm.smin.i32(i32 %3269, i32 %3263)
  store i32 %.lcssa39233932, ptr %15, align 4, !tbaa !5
  store i32 %.lcssa39243933, ptr %16, align 4, !tbaa !5
  store i32 %smin, ptr %18, align 4, !tbaa !5
  br label %3309

3309:                                             ; preds = %._crit_edge3931, %._crit_edge3915
  br i1 %.not, label %3310, label %3326

3310:                                             ; preds = %3309
  %3311 = fdiv double 1.000000e+00, %2991
  store double %3311, ptr %19, align 8, !tbaa !12
  %3312 = mul nsw i32 %.33250, %40
  %3313 = sext i32 %3312 to i64
  %gep4190 = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %3313
  call void @zdscal_(ptr noundef nonnull %29, ptr noundef nonnull %19, ptr noundef %gep4190, ptr noundef nonnull @c__1) #5
  %3314 = load i32, ptr %32, align 4, !tbaa !5
  %3315 = icmp sgt i32 %3314, 0
  br i1 %3315, label %3316, label %3326

3316:                                             ; preds = %3310
  store <2 x double> <double -1.000000e+00, double 0.000000e+00>, ptr %20, align 16, !tbaa !12
  %3317 = load i32, ptr %8, align 4, !tbaa !5
  %3318 = add nsw i32 %3317, -1
  store i32 %3318, ptr %17, align 4, !tbaa !5
  %3319 = load i32, ptr %4, align 4, !tbaa !5
  %3320 = mul nsw i32 %3071, %37
  %3321 = add nsw i32 %3319, %3320
  %3322 = sext i32 %3321 to i64
  %3323 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %3322
  %3324 = mul nsw i32 %3071, %40
  %3325 = sext i32 %3324 to i64
  %gep4192 = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %3325
  call void @zgeru_(ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %gep4190, ptr noundef nonnull @c__1, ptr noundef %3323, ptr noundef nonnull %17, ptr noundef %gep4192, ptr noundef nonnull %10) #5
  br label %3326

3326:                                             ; preds = %3310, %3316, %3309
  %3327 = load i32, ptr %30, align 4, !tbaa !5
  %3328 = sub i32 %2993, %.33250
  %3329 = add i32 %3328, %.43179
  %3330 = add i32 %3329, %3327
  %3331 = sext i32 %3330 to i64
  %3332 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3331
  %3333 = load <2 x double>, ptr %3332, align 8, !tbaa !12
  store <2 x double> %3333, ptr %31, align 16, !tbaa !12
  %.pre4527 = load i32, ptr %4, align 4, !tbaa !5
  br label %3334

3334:                                             ; preds = %3326, %2985
  %3335 = phi i32 [ %.pre4527, %3326 ], [ %2965, %2985 ]
  %3336 = add nsw i32 %3335, -1
  store i32 %3336, ptr %17, align 4, !tbaa !5
  %.not33693966 = icmp slt i32 %3335, 2
  br i1 %.not33693966, label %._crit_edge3970, label %.lr.ph3969

.lr.ph3969:                                       ; preds = %3334
  %3337 = mul nsw i32 %.33250, %34
  %3338 = add i32 %3337, 1
  %3339 = add i32 %.33250, %85
  %reass.sub4204 = sub i32 %.43184, %85
  %3340 = add i32 %reass.sub4204, 1
  %3341 = add i32 %.33250, 1
  %3342 = add i32 %.33250, -1
  %3343 = add i32 %.33250, 2
  %reass.sub4664 = sub i32 %.43184, %85
  %3344 = add i32 %reass.sub4664, 2
  %3345 = sext i32 %.33250 to i64
  br label %3346

3346:                                             ; preds = %.lr.ph3969, %.loopexit3501
  %indvars.iv4440 = phi i64 [ 1, %.lr.ph3969 ], [ %indvars.iv.next4441, %.loopexit3501 ]
  %indvars.iv4434 = phi i32 [ %3344, %.lr.ph3969 ], [ %indvars.iv.next4435, %.loopexit3501 ]
  %indvars.iv4432 = phi i32 [ %3343, %.lr.ph3969 ], [ %indvars.iv.next4433, %.loopexit3501 ]
  %indvars4442 = trunc i64 %indvars.iv4440 to i32
  %smax4436 = call i32 @llvm.smax.i32(i32 %indvars.iv4434, i32 1)
  %.pre4529 = load i32, ptr %30, align 4, !tbaa !5
  br i1 %.not33343518, label %._crit_edge4530, label %3347

._crit_edge4530:                                  ; preds = %3346
  %.pre4531 = load i32, ptr %3, align 4, !tbaa !5
  br label %3451

3347:                                             ; preds = %3346
  %3348 = add nsw i64 %indvars.iv4440, %3345
  %3349 = sext i32 %.pre4529 to i64
  %3350 = icmp sgt i64 %3348, %3349
  %3351 = icmp slt i64 %3348, %93
  %or.cond3395 = select i1 %3350, i1 %3351, i1 false
  %.pre4532 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %or.cond3395, label %3352, label %3451

3352:                                             ; preds = %3347
  %3353 = add i32 %3338, %indvars4442
  %3354 = sext i32 %3353 to i64
  %3355 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3354
  %3356 = sext i32 %.pre4532 to i64
  %3357 = sub nsw i64 %3348, %3356
  %3358 = getelementptr inbounds double, ptr %44, i64 %3357
  %3359 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3357
  call void @zlartg_(ptr noundef %3355, ptr noundef nonnull %31, ptr noundef nonnull %3358, ptr noundef nonnull %3359, ptr noundef nonnull %27) #5
  %3360 = sub nsw i32 %50, %indvars4442
  %3361 = trunc i64 %3348 to i32
  %3362 = mul i32 %37, %3361
  %3363 = add nsw i32 %3362, %3360
  %3364 = sext i32 %3363 to i64
  %3365 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %3364
  %3366 = load double, ptr %3365, align 8, !tbaa !9
  %3367 = fneg double %3366
  %3368 = getelementptr inbounds i8, ptr %3365, i64 8
  %3369 = load double, ptr %3368, align 8, !tbaa !13
  %3370 = fneg double %3369
  %3371 = load i32, ptr %4, align 4, !tbaa !5
  %3372 = add i32 %3339, %indvars4442
  %3373 = sub i32 %3372, %3371
  store i32 %3373, ptr %18, align 4, !tbaa !5
  %3374 = load i32, ptr %3, align 4, !tbaa !5
  %3375 = trunc nsw i64 %3348 to i32
  %3376 = sub nsw i32 %3375, %3374
  store i32 %3376, ptr %15, align 4, !tbaa !5
  %3377 = sext i32 %3376 to i64
  %3378 = getelementptr inbounds double, ptr %44, i64 %3377
  %3379 = load double, ptr %3378, align 8, !tbaa !12
  %3380 = sext i32 %3374 to i64
  %3381 = sub nsw i64 %3348, %3380
  %3382 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3381
  %3383 = mul nsw i64 %3348, %91
  %3384 = add nsw i64 %3383, 1
  %3385 = trunc nsw i64 %3384 to i32
  %3386 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3384
  %3387 = getelementptr inbounds i8, ptr %3386, i64 8
  %sext4665 = shl i64 %3384, 32
  %3388 = ashr exact i64 %sext4665, 28
  %3389 = getelementptr inbounds i8, ptr %36, i64 %3388
  %3390 = getelementptr inbounds i8, ptr %3389, i64 8
  %3391 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %3392 = insertelement <2 x double> poison, double %3370, i64 0
  %3393 = insertelement <2 x double> %3392, double %3369, i64 1
  %3394 = fmul <2 x double> %3391, %3393
  %3395 = shufflevector <2 x double> %3394, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3396 = insertelement <2 x double> poison, double %3367, i64 0
  %3397 = shufflevector <2 x double> %3396, <2 x double> poison, <2 x i32> zeroinitializer
  %3398 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3397, <2 x double> %3391, <2 x double> %3395)
  store <2 x double> %3398, ptr %20, align 16, !tbaa !12
  %3399 = call { double, double } @Cd(ptr noundef nonnull %3382)
  %3400 = extractvalue { double, double } %3399, 0
  %3401 = extractvalue { double, double } %3399, 1
  %3402 = fneg double %3401
  %3403 = call ptr @_pCd(ptr noundef nonnull %22)
  %3404 = getelementptr inbounds i8, ptr %3403, i64 8
  store double %3400, ptr %3403, align 8
  store double %3402, ptr %3404, align 8
  %3405 = load <2 x double>, ptr %22, align 16
  %3406 = load double, ptr %3386, align 8, !tbaa !9
  %3407 = load double, ptr %88, align 8, !tbaa !13
  %3408 = load double, ptr %3387, align 8, !tbaa !13
  %3409 = fneg double %3407
  %3410 = load double, ptr %3390, align 8, !tbaa !13
  %3411 = load double, ptr %3389, align 8, !tbaa !9
  %3412 = load i32, ptr %18, align 4, !tbaa !5
  %3413 = sext i32 %3412 to i64
  %3414 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3413
  %3415 = insertelement <2 x double> poison, double %3379, i64 0
  %3416 = shufflevector <2 x double> %3415, <2 x double> poison, <2 x i32> zeroinitializer
  %3417 = fmul <2 x double> %3398, %3416
  %3418 = insertelement <2 x double> poison, double %3408, i64 0
  %3419 = insertelement <2 x double> %3418, double %3407, i64 1
  %3420 = insertelement <2 x double> poison, double %3409, i64 0
  %3421 = insertelement <2 x double> %3420, double %3411, i64 1
  %3422 = fmul <2 x double> %3419, %3421
  %3423 = shufflevector <2 x double> %3405, <2 x double> poison, <2 x i32> zeroinitializer
  %3424 = insertelement <2 x double> poison, double %3406, i64 0
  %3425 = insertelement <2 x double> %3424, double %3410, i64 1
  %3426 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3423, <2 x double> %3425, <2 x double> %3422)
  %3427 = fsub <2 x double> %3417, %3426
  store <2 x double> %3427, ptr %3414, align 8, !tbaa !12
  store i32 %3385, ptr %18, align 4, !tbaa !5
  %3428 = load i32, ptr %3, align 4, !tbaa !5
  %3429 = sub nsw i32 %3375, %3428
  %3430 = sext i32 %3429 to i64
  %3431 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3430
  %3432 = load double, ptr %3431, align 8, !tbaa !9
  %3433 = getelementptr inbounds i8, ptr %3431, i64 8
  %3434 = load double, ptr %3433, align 8, !tbaa !13
  %3435 = fneg double %3434
  %3436 = insertelement <2 x double> poison, double %3434, i64 0
  %3437 = insertelement <2 x double> %3436, double %3435, i64 1
  %3438 = fmul <2 x double> %3398, %3437
  %3439 = shufflevector <2 x double> %3438, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3440 = insertelement <2 x double> poison, double %3432, i64 0
  %3441 = shufflevector <2 x double> %3440, <2 x double> poison, <2 x i32> zeroinitializer
  %3442 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3441, <2 x double> %3398, <2 x double> %3439)
  store i32 %3429, ptr %16, align 4, !tbaa !5
  %3443 = getelementptr inbounds double, ptr %44, i64 %3430
  %3444 = load double, ptr %3443, align 8, !tbaa !12
  %3445 = load <2 x double>, ptr %3386, align 8, !tbaa !12
  %3446 = insertelement <2 x double> poison, double %3444, i64 0
  %3447 = shufflevector <2 x double> %3446, <2 x double> poison, <2 x i32> zeroinitializer
  %3448 = fmul <2 x double> %3447, %3445
  store <2 x double> %3448, ptr %21, align 16, !tbaa !12
  %3449 = fadd <2 x double> %3442, %3448
  store <2 x double> %3449, ptr %20, align 16, !tbaa !12
  store <2 x double> %3449, ptr %3389, align 8, !tbaa !12
  %3450 = load <2 x double>, ptr %27, align 16, !tbaa !12
  store <2 x double> %3450, ptr %31, align 16, !tbaa !12
  %.pre4528 = load i32, ptr %30, align 4, !tbaa !5
  br label %3451

3451:                                             ; preds = %._crit_edge4530, %3347, %3352
  %3452 = phi i32 [ %.pre4532, %3347 ], [ %3428, %3352 ], [ %.pre4531, %._crit_edge4530 ]
  %3453 = phi i32 [ %.pre4529, %3347 ], [ %.pre4528, %3352 ], [ %.pre4529, %._crit_edge4530 ]
  %3454 = add i32 %3340, %indvars4442
  %3455 = call i32 @llvm.smax.i32(i32 %3454, i32 1)
  %3456 = mul nsw i32 %3455, %3453
  %3457 = add i32 %3341, %indvars4442
  %3458 = sub i32 %3457, %3456
  %3459 = add i32 %3452, -1
  %3460 = add i32 %3459, %3458
  %3461 = sdiv i32 %3460, %3453
  store i32 %3461, ptr %28, align 4, !tbaa !5
  %3462 = add i32 %3461, -1
  %3463 = mul i32 %3453, %3462
  %3464 = sub nsw i32 %3458, %3463
  br i1 %.not33343518, label %3470, label %3465

3465:                                             ; preds = %3451
  %3466 = add i32 %3342, %indvars4442
  %3467 = shl i32 %3452, 1
  %3468 = sub i32 %3466, %3467
  %3469 = call i32 @llvm.smin.i32(i32 %3458, i32 %3468)
  br label %3470

3470:                                             ; preds = %3451, %3465
  %.2 = phi i32 [ %3469, %3465 ], [ %3458, %3451 ]
  %3471 = add i32 %.2, -1
  %3472 = add i32 %3471, %3452
  %3473 = sdiv i32 %3472, %3453
  store i32 %3473, ptr %33, align 4, !tbaa !5
  store i32 %.2, ptr %18, align 4, !tbaa !5
  store i32 %3453, ptr %15, align 4, !tbaa !5
  %3474 = icmp slt i32 %3453, 0
  %3475 = icmp sge i32 %3464, %.2
  %3476 = icmp sle i32 %3464, %.2
  %.in33813935 = select i1 %3474, i1 %3475, i1 %3476
  br i1 %.in33813935, label %.lr.ph3938, label %3513

.lr.ph3938:                                       ; preds = %3470
  %3477 = add i32 %smax4436, %3462
  %3478 = mul i32 %3453, %3477
  %3479 = sub i32 %indvars.iv4432, %3478
  %3480 = sext i32 %3479 to i64
  %3481 = sext i32 %3453 to i64
  %3482 = sext i32 %.2 to i64
  br label %3483

3483:                                             ; preds = %.lr.ph3938, %3483
  %indvars.iv4437 = phi i64 [ %3480, %.lr.ph3938 ], [ %indvars.iv.next4438, %3483 ]
  %3484 = trunc nsw i64 %indvars.iv4437 to i32
  %3485 = add i32 %3484, -1
  %3486 = add i32 %3485, %3452
  %3487 = mul nsw i32 %3486, %34
  %3488 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4437
  %3489 = load double, ptr %3488, align 8, !tbaa !9
  %3490 = sext i32 %3487 to i64
  %gep5379 = getelementptr %struct.doublecomplex, ptr %invariant.gep5378, i64 %3490
  %3491 = getelementptr inbounds i8, ptr %3488, i64 8
  %3492 = load double, ptr %3491, align 8, !tbaa !13
  %3493 = fneg double %3492
  %3494 = load <2 x double>, ptr %gep5379, align 8, !tbaa !12
  %3495 = insertelement <2 x double> poison, double %3492, i64 0
  %3496 = insertelement <2 x double> %3495, double %3493, i64 1
  %3497 = fmul <2 x double> %3494, %3496
  %3498 = shufflevector <2 x double> %3497, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3499 = insertelement <2 x double> poison, double %3489, i64 0
  %3500 = shufflevector <2 x double> %3499, <2 x double> poison, <2 x i32> zeroinitializer
  %3501 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3500, <2 x double> %3494, <2 x double> %3498)
  store <2 x double> %3501, ptr %3488, align 8, !tbaa !12
  %3502 = add nsw i32 %3487, 1
  %3503 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4437
  %3504 = load double, ptr %3503, align 8, !tbaa !12
  %3505 = load <2 x double>, ptr %gep5379, align 8, !tbaa !12
  %3506 = insertelement <2 x double> poison, double %3504, i64 0
  %3507 = shufflevector <2 x double> %3506, <2 x double> poison, <2 x i32> zeroinitializer
  %3508 = fmul <2 x double> %3507, %3505
  %3509 = sext i32 %3502 to i64
  %3510 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3509
  store <2 x double> %3508, ptr %3510, align 8, !tbaa !12
  %indvars.iv.next4438 = add nsw i64 %indvars.iv4437, %3481
  %3511 = icmp sge i64 %indvars.iv.next4438, %3482
  %3512 = icmp sle i64 %indvars.iv.next4438, %3482
  %.in3381 = select i1 %3474, i1 %3511, i1 %3512
  br i1 %.in3381, label %3483, label %._crit_edge3939, !llvm.loop !109

._crit_edge3939:                                  ; preds = %3483
  store i32 %3502, ptr %16, align 4, !tbaa !5
  store <2 x double> %3508, ptr %20, align 16, !tbaa !12
  br label %3513

3513:                                             ; preds = %._crit_edge3939, %3470
  %3514 = icmp sgt i32 %3473, 0
  br i1 %3514, label %3515, label %3522

3515:                                             ; preds = %3513
  %3516 = add nsw i32 %3452, %3464
  %3517 = mul nsw i32 %3516, %34
  %3518 = sext i32 %3517 to i64
  %gep3965 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %3518
  %3519 = sext i32 %3464 to i64
  %3520 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3519
  %3521 = getelementptr inbounds double, ptr %44, i64 %3519
  call void @zlargv_(ptr noundef nonnull %33, ptr noundef %gep3965, ptr noundef nonnull %26, ptr noundef nonnull %3520, ptr noundef nonnull %30, ptr noundef nonnull %3521, ptr noundef nonnull %30) #5
  %.pre4533 = load i32, ptr %28, align 4, !tbaa !5
  %.pre4536.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %3522

3522:                                             ; preds = %3515, %3513
  %.pre4536 = phi i32 [ %.pre4536.pre, %3515 ], [ %3452, %3513 ]
  %3523 = phi i32 [ %.pre4533, %3515 ], [ %3461, %3513 ]
  %3524 = icmp sgt i32 %3523, 0
  br i1 %3524, label %3525, label %3559

3525:                                             ; preds = %3522
  %3526 = add nsw i32 %.pre4536, -1
  store i32 %3526, ptr %15, align 4, !tbaa !5
  %.not33823943 = icmp slt i32 %.pre4536, 2
  %.pre4662 = sext i32 %3464 to i64
  br i1 %.not33823943, label %._crit_edge3948, label %.lr.ph3947

.lr.ph3947:                                       ; preds = %3525
  %3527 = getelementptr inbounds double, ptr %44, i64 %.pre4662
  %3528 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4662
  br label %3529

3529:                                             ; preds = %.lr.ph3947, %3529
  %.123197.neg3945 = phi i32 [ -1, %.lr.ph3947 ], [ %.123197.neg, %3529 ]
  %.1231973944 = phi i32 [ 1, %.lr.ph3947 ], [ %3541, %3529 ]
  %3530 = load i32, ptr %30, align 4, !tbaa !5
  %3531 = add nsw i32 %.1231973944, %3464
  %3532 = mul nsw i32 %3531, %34
  %3533 = add i32 %3532, %.123197.neg3945
  %3534 = add i32 %3533, %3530
  %3535 = sext i32 %3534 to i64
  %3536 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3535
  %3537 = load i32, ptr %3, align 4, !tbaa !5
  %3538 = add i32 %3533, %3537
  %3539 = sext i32 %3538 to i64
  %3540 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3539
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %3536, ptr noundef nonnull %26, ptr noundef %3540, ptr noundef nonnull %26, ptr noundef nonnull %3527, ptr noundef nonnull %3528, ptr noundef nonnull %30) #5
  %3541 = add nuw nsw i32 %.1231973944, 1
  %.123197.neg = xor i32 %.1231973944, -1
  %3542 = load i32, ptr %15, align 4, !tbaa !5
  %.not3382.not = icmp slt i32 %.1231973944, %3542
  br i1 %.not3382.not, label %3529, label %._crit_edge3948.loopexit, !llvm.loop !110

._crit_edge3948.loopexit:                         ; preds = %3529
  %.pre4534 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge3948

._crit_edge3948:                                  ; preds = %3525, %._crit_edge3948.loopexit
  %3543 = phi i32 [ %.pre4534, %._crit_edge3948.loopexit ], [ %.pre4536, %3525 ]
  %3544 = load i32, ptr %30, align 4, !tbaa !5
  %3545 = mul nsw i32 %3464, %34
  %3546 = add nsw i32 %3544, %3545
  %3547 = sext i32 %3546 to i64
  %3548 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3547
  %3549 = add nsw i32 %3464, -1
  %3550 = mul nsw i32 %3549, %34
  %3551 = add nsw i32 %3544, %3550
  %3552 = sext i32 %3551 to i64
  %3553 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3552
  %3554 = add nsw i32 %3543, %3545
  %3555 = sext i32 %3554 to i64
  %3556 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3555
  %3557 = getelementptr inbounds double, ptr %44, i64 %.pre4662
  %3558 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %.pre4662
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %3548, ptr noundef %3553, ptr noundef %3556, ptr noundef nonnull %26, ptr noundef nonnull %3557, ptr noundef nonnull %3558, ptr noundef nonnull %30) #5
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %3558, ptr noundef nonnull %30) #5
  %.pre4535 = load i32, ptr %3, align 4, !tbaa !5
  br label %3559

3559:                                             ; preds = %._crit_edge3948, %3522
  %3560 = phi i32 [ %.pre4535, %._crit_edge3948 ], [ %.pre4536, %3522 ]
  %3561 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub4205 = sub i32 %3561, %indvars4442
  %3562 = add i32 %reass.sub4205, 1
  store i32 %3562, ptr %15, align 4, !tbaa !5
  %.not3383.not3950 = icmp sgt i32 %3560, %3562
  br i1 %.not3383.not3950, label %.lr.ph3954, label %._crit_edge3955

.lr.ph3954:                                       ; preds = %3559
  %3563 = add i32 %3458, -1
  br label %3564

3564:                                             ; preds = %.lr.ph3954, %3586
  %3565 = phi i32 [ %3562, %.lr.ph3954 ], [ %3587, %3586 ]
  %.133198.in3951 = phi i32 [ %3560, %.lr.ph3954 ], [ %.1331983952, %3586 ]
  %.1331983952 = add nsw i32 %.133198.in3951, -1
  %3566 = add i32 %3563, %.1331983952
  %3567 = load i32, ptr %30, align 4, !tbaa !5
  %3568 = sdiv i32 %3566, %3567
  store i32 %3568, ptr %33, align 4, !tbaa !5
  %3569 = icmp sgt i32 %3568, 0
  br i1 %3569, label %3570, label %3586

3570:                                             ; preds = %3564
  %3571 = add nsw i32 %3568, -1
  %3572 = mul nsw i32 %3571, %3567
  %3573 = sub nsw i32 %3458, %3572
  %3574 = mul nsw i32 %3573, %34
  %3575 = add nsw i32 %3574, %.1331983952
  %3576 = sext i32 %3575 to i64
  %3577 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3576
  %3578 = add nsw i32 %3573, -1
  %3579 = mul nsw i32 %3578, %34
  %3580 = add nsw i32 %3579, %.133198.in3951
  %3581 = sext i32 %3580 to i64
  %3582 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3581
  %3583 = sext i32 %3573 to i64
  %3584 = getelementptr inbounds double, ptr %44, i64 %3583
  %3585 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3583
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %3577, ptr noundef nonnull %26, ptr noundef %3582, ptr noundef nonnull %26, ptr noundef nonnull %3584, ptr noundef nonnull %3585, ptr noundef nonnull %30) #5
  %.pre4537 = load i32, ptr %15, align 4, !tbaa !5
  br label %3586

3586:                                             ; preds = %3564, %3570
  %3587 = phi i32 [ %3565, %3564 ], [ %.pre4537, %3570 ]
  %.not3383.not = icmp sgt i32 %.1331983952, %3587
  br i1 %.not3383.not, label %3564, label %._crit_edge3955, !llvm.loop !111

._crit_edge3955:                                  ; preds = %3586, %3559
  br i1 %.not, label %3588, label %.loopexit3501

3588:                                             ; preds = %._crit_edge3955
  store i32 %3458, ptr %15, align 4, !tbaa !5
  %3589 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %3589, ptr %18, align 4, !tbaa !5
  %3590 = icmp slt i32 %3589, 0
  %3591 = icmp slt i32 %3463, 1
  %3592 = icmp sgt i32 %3463, -1
  %.in33843960 = select i1 %3590, i1 %3591, i1 %3592
  br i1 %.in33843960, label %.lr.ph3963, label %.loopexit3501

.lr.ph3963:                                       ; preds = %3588, %.lr.ph3963
  %.283961 = phi i32 [ %3602, %.lr.ph3963 ], [ %3464, %3588 ]
  %3593 = mul nsw i32 %.283961, %40
  %3594 = sext i32 %3593 to i64
  %gep3957 = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %3594
  %3595 = add nsw i32 %.283961, -1
  %3596 = mul nsw i32 %3595, %40
  %3597 = sext i32 %3596 to i64
  %gep3959 = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %3597
  %3598 = sext i32 %.283961 to i64
  %3599 = getelementptr inbounds double, ptr %44, i64 %3598
  %3600 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3598
  call void @zrot_(ptr noundef nonnull %29, ptr noundef %gep3957, ptr noundef nonnull @c__1, ptr noundef %gep3959, ptr noundef nonnull @c__1, ptr noundef nonnull %3599, ptr noundef nonnull %3600) #5
  %3601 = load i32, ptr %18, align 4, !tbaa !5
  %3602 = add nsw i32 %3601, %.283961
  %3603 = icmp slt i32 %3601, 0
  %3604 = load i32, ptr %15, align 4
  %3605 = icmp sge i32 %3602, %3604
  %3606 = icmp sle i32 %3602, %3604
  %.in3384 = select i1 %3603, i1 %3605, i1 %3606
  br i1 %.in3384, label %.lr.ph3963, label %.loopexit3501, !llvm.loop !112

.loopexit3501:                                    ; preds = %.lr.ph3963, %3588, %._crit_edge3955
  %indvars.iv.next4441 = add nuw nsw i64 %indvars.iv4440, 1
  %3607 = load i32, ptr %17, align 4, !tbaa !5
  %3608 = sext i32 %3607 to i64
  %.not3369.not = icmp slt i64 %indvars.iv4440, %3608
  %indvars.iv.next4433 = add i32 %indvars.iv4432, 1
  %indvars.iv.next4435 = add i32 %indvars.iv4434, 1
  br i1 %.not3369.not, label %3346, label %._crit_edge3970, !llvm.loop !113

._crit_edge3970:                                  ; preds = %.loopexit3501, %3334
  br i1 %.not33343518, label %._crit_edge3970._crit_edge, label %3609

._crit_edge3970._crit_edge:                       ; preds = %._crit_edge3970
  %.pre4538 = load i32, ptr %4, align 4, !tbaa !5
  br label %3638

3609:                                             ; preds = %._crit_edge3970
  %3610 = icmp sgt i32 %.43174, 0
  %3611 = load i32, ptr %32, align 4
  %3612 = icmp sgt i32 %3611, 0
  %or.cond5 = select i1 %3610, i1 %3612, i1 false
  %.pre4539 = load i32, ptr %4, align 4, !tbaa !5
  br i1 %or.cond5, label %3613, label %3638

3613:                                             ; preds = %3609
  %3614 = add i32 %.33250, %85
  %3615 = add i32 %3614, %3611
  %3616 = sub i32 %3615, %.pre4539
  store i32 %3616, ptr %17, align 4, !tbaa !5
  %3617 = sub nsw i32 %50, %3611
  %3618 = add nsw i32 %3611, %.33250
  %3619 = mul nsw i32 %3618, %37
  %3620 = add nsw i32 %3619, %3617
  %3621 = sext i32 %3620 to i64
  %3622 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %3621
  %3623 = load double, ptr %3622, align 8, !tbaa !9
  %3624 = fneg double %3623
  %3625 = getelementptr inbounds i8, ptr %3622, i64 8
  %3626 = load double, ptr %3625, align 8, !tbaa !13
  %3627 = fneg double %3626
  %3628 = load <2 x double>, ptr %31, align 16, !tbaa !12
  %3629 = insertelement <2 x double> poison, double %3627, i64 0
  %3630 = insertelement <2 x double> %3629, double %3626, i64 1
  %3631 = fmul <2 x double> %3628, %3630
  %3632 = shufflevector <2 x double> %3631, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3633 = insertelement <2 x double> poison, double %3624, i64 0
  %3634 = shufflevector <2 x double> %3633, <2 x double> poison, <2 x i32> zeroinitializer
  %3635 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3634, <2 x double> %3628, <2 x double> %3632)
  store <2 x double> %3635, ptr %20, align 16, !tbaa !12
  %3636 = sext i32 %3616 to i64
  %3637 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3636
  store <2 x double> %3635, ptr %3637, align 8, !tbaa !12
  br label %3638

3638:                                             ; preds = %._crit_edge3970._crit_edge, %3609, %3613
  %3639 = phi i32 [ %.pre4538, %._crit_edge3970._crit_edge ], [ %.pre4539, %3609 ], [ %.pre4539, %3613 ]
  %3640 = icmp sgt i32 %3639, 0
  br i1 %3640, label %.lr.ph3993, label %._crit_edge4021.thread

.lr.ph3993:                                       ; preds = %3638
  %3641 = sub i32 %.43184, %85
  %3642 = add i32 %.33250, 1
  %3643 = add i32 %.33250, %85
  br label %3644

3644:                                             ; preds = %.lr.ph3993, %3773
  %.1532143991 = phi i32 [ %3639, %.lr.ph3993 ], [ %3774, %3773 ]
  %3645 = add i32 %3641, %.1532143991
  %3646 = load i32, ptr %30, align 4, !tbaa !5
  %3647 = add i32 %3642, %.1532143991
  br i1 %.not33343518, label %3650, label %3648

3648:                                             ; preds = %3644
  %3649 = call i32 @llvm.smax.i32(i32 %3645, i32 2)
  br label %3652

3650:                                             ; preds = %3644
  %3651 = call i32 @llvm.smax.i32(i32 %3645, i32 1)
  br label %3652

3652:                                             ; preds = %3650, %3648
  %.sink4815 = phi i32 [ %3651, %3650 ], [ %3649, %3648 ]
  %.sink4517 = phi i32 [ 1, %3650 ], [ 2, %3648 ]
  %3653 = mul nsw i32 %3646, %.sink4815
  %3654 = sub i32 %3647, %3653
  store i32 %.sink4517, ptr %17, align 4
  store i32 %3645, ptr %18, align 4
  %3655 = load i32, ptr %4, align 4, !tbaa !5
  %3656 = sub nsw i32 %3655, %.1532143991
  %3657 = icmp sgt i32 %3656, 0
  %3658 = add i32 %3654, -1
  br i1 %3657, label %.lr.ph3973, label %._crit_edge3974

.lr.ph3973:                                       ; preds = %3652, %3686
  %.143971 = phi i32 [ %3687, %3686 ], [ %3656, %3652 ]
  %3659 = load i32, ptr %3, align 4, !tbaa !5
  %3660 = add i32 %3658, %.143971
  %3661 = add i32 %3660, %3659
  %3662 = load i32, ptr %30, align 4, !tbaa !5
  %3663 = sdiv i32 %3661, %3662
  store i32 %3663, ptr %33, align 4, !tbaa !5
  %3664 = icmp sgt i32 %3663, 0
  br i1 %3664, label %3665, label %3686

3665:                                             ; preds = %.lr.ph3973
  %3666 = add nsw i32 %3663, -1
  %3667 = mul nsw i32 %3666, %3662
  %3668 = sub nsw i32 %3654, %3667
  %3669 = add i32 %3659, %3668
  %3670 = mul nsw i32 %3669, %34
  %3671 = add nsw i32 %3670, %.143971
  %3672 = sext i32 %3671 to i64
  %3673 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3672
  %3674 = add nuw nsw i32 %.143971, 1
  %3675 = add nsw i32 %3669, -1
  %3676 = mul nsw i32 %3675, %34
  %3677 = add nsw i32 %3674, %3676
  %3678 = sext i32 %3677 to i64
  %3679 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3678
  %3680 = load i32, ptr %4, align 4, !tbaa !5
  %3681 = add i32 %3669, %85
  %3682 = sub i32 %3681, %3680
  %3683 = sext i32 %3682 to i64
  %3684 = getelementptr inbounds double, ptr %44, i64 %3683
  %3685 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3683
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %3673, ptr noundef nonnull %26, ptr noundef %3679, ptr noundef nonnull %26, ptr noundef nonnull %3684, ptr noundef nonnull %3685, ptr noundef nonnull %30) #5
  br label %3686

3686:                                             ; preds = %.lr.ph3973, %3665
  %3687 = add nsw i32 %.143971, -1
  %3688 = icmp sgt i32 %.143971, 1
  br i1 %3688, label %.lr.ph3973, label %._crit_edge3974.loopexit, !llvm.loop !114

._crit_edge3974.loopexit:                         ; preds = %3686
  %.pre4540 = load i32, ptr %30, align 4, !tbaa !5
  br label %._crit_edge3974

._crit_edge3974:                                  ; preds = %3652, %._crit_edge3974.loopexit
  %3689 = phi i32 [ %.pre4540, %._crit_edge3974.loopexit ], [ %3646, %3652 ]
  %3690 = load i32, ptr %3, align 4, !tbaa !5
  %3691 = add i32 %3658, %3690
  %3692 = sdiv i32 %3691, %3689
  store i32 %3692, ptr %28, align 4, !tbaa !5
  %3693 = add nsw i32 %3692, -1
  %3694 = mul nsw i32 %3693, %3689
  %3695 = sub i32 %3654, %3694
  %3696 = icmp slt i32 %3689, 0
  %3697 = icmp slt i32 %3694, 1
  %3698 = icmp sgt i32 %3694, -1
  %.in33763975 = select i1 %3696, i1 %3697, i1 %3698
  br i1 %.in33763975, label %.lr.ph3978, label %.thread4684

.thread4684:                                      ; preds = %._crit_edge3974
  store i32 %3654, ptr %18, align 4, !tbaa !5
  store i32 %3689, ptr %17, align 4, !tbaa !5
  br label %3757

.lr.ph3978:                                       ; preds = %._crit_edge3974
  %3699 = load i32, ptr %4, align 4, !tbaa !5
  %3700 = sub nsw i32 %85, %3699
  %3701 = sext i32 %3695 to i64
  %3702 = sext i32 %3689 to i64
  %3703 = sext i32 %3654 to i64
  br label %3704

3704:                                             ; preds = %.lr.ph3978, %3704
  %indvars.iv4443 = phi i64 [ %3701, %.lr.ph3978 ], [ %indvars.iv.next4444, %3704 ]
  %3705 = trunc nsw i64 %indvars.iv4443 to i32
  %3706 = add nsw i32 %3700, %3705
  %3707 = add nsw i32 %3706, %3690
  %3708 = sext i32 %3707 to i64
  %3709 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3708
  %3710 = sext i32 %3706 to i64
  %3711 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3710
  %3712 = load <2 x double>, ptr %3709, align 8, !tbaa !12
  store <2 x double> %3712, ptr %3711, align 8, !tbaa !12
  %3713 = getelementptr inbounds double, ptr %44, i64 %3708
  %3714 = load double, ptr %3713, align 8, !tbaa !12
  %3715 = getelementptr inbounds double, ptr %44, i64 %3710
  store double %3714, ptr %3715, align 8, !tbaa !12
  %indvars.iv.next4444 = add nsw i64 %indvars.iv4443, %3702
  %3716 = icmp sge i64 %indvars.iv.next4444, %3703
  %3717 = icmp sle i64 %indvars.iv.next4444, %3703
  %.in3376 = select i1 %3696, i1 %3716, i1 %3717
  br i1 %.in3376, label %3704, label %3718, !llvm.loop !115

3718:                                             ; preds = %3704
  store i32 %3706, ptr %15, align 4, !tbaa !5
  store i32 %3707, ptr %16, align 4, !tbaa !5
  store i32 %3654, ptr %18, align 4, !tbaa !5
  store i32 %3689, ptr %17, align 4, !tbaa !5
  br i1 %.in33763975, label %.lr.ph3985, label %3757

.lr.ph3985:                                       ; preds = %3718
  %3719 = load i32, ptr %4, align 4, !tbaa !5
  %3720 = sub nsw i32 %85, %3719
  %3721 = sext i32 %3695 to i64
  %3722 = sext i32 %3689 to i64
  %3723 = sext i32 %3654 to i64
  %3724 = sext i32 %3720 to i64
  br label %3725

3725:                                             ; preds = %.lr.ph3985, %3725
  %indvars.iv4446 = phi i64 [ %3721, %.lr.ph3985 ], [ %indvars.iv.next4447, %3725 ]
  %3726 = add nsw i64 %indvars.iv4446, %3724
  %3727 = trunc nsw i64 %indvars.iv4446 to i32
  %3728 = add i32 %3727, -1
  %3729 = add i32 %3728, %3690
  %3730 = mul nsw i32 %3729, %34
  %3731 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3726
  %3732 = load double, ptr %3731, align 8, !tbaa !9
  %3733 = sext i32 %3730 to i64
  %gep5381 = getelementptr %struct.doublecomplex, ptr %invariant.gep5380, i64 %3733
  %3734 = getelementptr inbounds i8, ptr %3731, i64 8
  %3735 = load double, ptr %3734, align 8, !tbaa !13
  %3736 = fneg double %3735
  %3737 = load <2 x double>, ptr %gep5381, align 8, !tbaa !12
  %3738 = insertelement <2 x double> poison, double %3735, i64 0
  %3739 = insertelement <2 x double> %3738, double %3736, i64 1
  %3740 = fmul <2 x double> %3737, %3739
  %3741 = shufflevector <2 x double> %3740, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %3742 = insertelement <2 x double> poison, double %3732, i64 0
  %3743 = shufflevector <2 x double> %3742, <2 x double> poison, <2 x i32> zeroinitializer
  %3744 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %3743, <2 x double> %3737, <2 x double> %3741)
  store <2 x double> %3744, ptr %3731, align 8, !tbaa !12
  %3745 = add nsw i32 %3730, 1
  %3746 = getelementptr inbounds double, ptr %44, i64 %3726
  %3747 = load double, ptr %3746, align 8, !tbaa !12
  %3748 = load <2 x double>, ptr %gep5381, align 8, !tbaa !12
  %3749 = insertelement <2 x double> poison, double %3747, i64 0
  %3750 = shufflevector <2 x double> %3749, <2 x double> poison, <2 x i32> zeroinitializer
  %3751 = fmul <2 x double> %3750, %3748
  %3752 = sext i32 %3745 to i64
  %3753 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3752
  store <2 x double> %3751, ptr %3753, align 8, !tbaa !12
  %indvars.iv.next4447 = add nsw i64 %indvars.iv4446, %3722
  %3754 = icmp sge i64 %indvars.iv.next4447, %3723
  %3755 = icmp sle i64 %indvars.iv.next4447, %3723
  %.in3377 = select i1 %3696, i1 %3754, i1 %3755
  br i1 %.in3377, label %3725, label %._crit_edge3986, !llvm.loop !116

._crit_edge3986:                                  ; preds = %3725
  %3756 = trunc i64 %3726 to i32
  store i32 %3745, ptr %15, align 4, !tbaa !5
  store i32 %3756, ptr %16, align 4, !tbaa !5
  store <2 x double> %3751, ptr %20, align 16, !tbaa !12
  br label %3757

3757:                                             ; preds = %.thread4684, %._crit_edge3986, %3718
  br i1 %.not33343518, label %3773, label %3758

3758:                                             ; preds = %3757
  %3759 = add nsw i32 %.1532143991, %.33250
  %3760 = icmp sle i32 %3759, %3689
  %3761 = load i32, ptr %32, align 4
  %.not3378 = icmp sgt i32 %.1532143991, %3761
  %or.cond3396 = select i1 %3760, i1 true, i1 %.not3378
  br i1 %or.cond3396, label %3773, label %3762

3762:                                             ; preds = %3758
  %3763 = load i32, ptr %4, align 4, !tbaa !5
  %3764 = add i32 %3643, %.1532143991
  %3765 = add i32 %3763, %3690
  %3766 = sub i32 %3764, %3765
  store i32 %3766, ptr %17, align 4, !tbaa !5
  %3767 = sub i32 %3764, %3763
  store i32 %3767, ptr %18, align 4, !tbaa !5
  %3768 = sext i32 %3767 to i64
  %3769 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3768
  %3770 = sext i32 %3766 to i64
  %3771 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3770
  %3772 = load <2 x double>, ptr %3769, align 8, !tbaa !12
  store <2 x double> %3772, ptr %3771, align 8, !tbaa !12
  br label %3773

3773:                                             ; preds = %3757, %3762, %3758
  %3774 = add nsw i32 %.1532143991, -1
  %3775 = icmp sgt i32 %.1532143991, 1
  br i1 %3775, label %3644, label %._crit_edge3994, !llvm.loop !117

._crit_edge3994:                                  ; preds = %3773
  %.pre4541 = load i32, ptr %4, align 4, !tbaa !5
  %3776 = icmp sgt i32 %.pre4541, 0
  br i1 %3776, label %.lr.ph4020, label %._crit_edge4021.thread

.lr.ph4020:                                       ; preds = %._crit_edge3994
  %3777 = sub i32 %.43184, %85
  %3778 = add i32 %.33250, 1
  br label %3779

3779:                                             ; preds = %.lr.ph4020, %.loopexit3500
  %.1632154018 = phi i32 [ %.pre4541, %.lr.ph4020 ], [ %3900, %.loopexit3500 ]
  store i32 1, ptr %17, align 4, !tbaa !5
  %3780 = add i32 %3777, %.1632154018
  store i32 %3780, ptr %18, align 4, !tbaa !5
  %3781 = call i32 @llvm.smax.i32(i32 %3780, i32 1)
  %3782 = load i32, ptr %30, align 4, !tbaa !5
  %3783 = mul nsw i32 %3782, %3781
  %3784 = add i32 %3778, %.1632154018
  %3785 = sub i32 %3784, %3783
  %3786 = load i32, ptr %3, align 4, !tbaa !5
  %3787 = add i32 %3786, -1
  %3788 = add i32 %3787, %3785
  %3789 = sdiv i32 %3788, %3782
  store i32 %3789, ptr %28, align 4, !tbaa !5
  %3790 = add nsw i32 %3789, -1
  %3791 = mul nsw i32 %3782, %3790
  %3792 = sub nsw i32 %3785, %3791
  %3793 = icmp sgt i32 %3789, 0
  %.pre4544 = load i32, ptr %4, align 4, !tbaa !5
  br i1 %3793, label %3794, label %3846

3794:                                             ; preds = %3779
  %3795 = add nsw i32 %3786, %3792
  %3796 = mul nsw i32 %3795, %34
  %3797 = sext i32 %3796 to i64
  %gep4017 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %3797
  %3798 = add i32 %3792, %85
  %3799 = sub i32 %3798, %.pre4544
  %3800 = sext i32 %3799 to i64
  %3801 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3800
  %3802 = getelementptr inbounds double, ptr %44, i64 %3800
  call void @zlargv_(ptr noundef nonnull %28, ptr noundef %gep4017, ptr noundef nonnull %26, ptr noundef nonnull %3801, ptr noundef nonnull %30, ptr noundef nonnull %3802, ptr noundef nonnull %30) #5
  %3803 = load i32, ptr %3, align 4, !tbaa !5
  %3804 = add nsw i32 %3803, -1
  store i32 %3804, ptr %17, align 4, !tbaa !5
  %.not33733995 = icmp slt i32 %3803, 2
  br i1 %.not33733995, label %._crit_edge4000, label %.lr.ph3999

.lr.ph3999:                                       ; preds = %3794, %.lr.ph3999
  %.15.neg3997 = phi i32 [ %.15.neg, %.lr.ph3999 ], [ -1, %3794 ]
  %.153996 = phi i32 [ %3821, %.lr.ph3999 ], [ 1, %3794 ]
  %3805 = load i32, ptr %30, align 4, !tbaa !5
  %3806 = add nsw i32 %.153996, %3792
  %3807 = mul nsw i32 %3806, %34
  %3808 = add i32 %3807, %.15.neg3997
  %3809 = add i32 %3808, %3805
  %3810 = sext i32 %3809 to i64
  %3811 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3810
  %3812 = load i32, ptr %3, align 4, !tbaa !5
  %3813 = add i32 %3808, %3812
  %3814 = sext i32 %3813 to i64
  %3815 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3814
  %3816 = load i32, ptr %4, align 4, !tbaa !5
  %3817 = sub i32 %3798, %3816
  %3818 = sext i32 %3817 to i64
  %3819 = getelementptr inbounds double, ptr %44, i64 %3818
  %3820 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3818
  call void @zlartv_(ptr noundef nonnull %28, ptr noundef %3811, ptr noundef nonnull %26, ptr noundef %3815, ptr noundef nonnull %26, ptr noundef nonnull %3819, ptr noundef nonnull %3820, ptr noundef nonnull %30) #5
  %3821 = add nuw nsw i32 %.153996, 1
  %.15.neg = xor i32 %.153996, -1
  %3822 = load i32, ptr %17, align 4, !tbaa !5
  %.not3373.not = icmp slt i32 %.153996, %3822
  br i1 %.not3373.not, label %.lr.ph3999, label %._crit_edge4000.loopexit, !llvm.loop !118

._crit_edge4000.loopexit:                         ; preds = %.lr.ph3999
  %.pre4542 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge4000

._crit_edge4000:                                  ; preds = %._crit_edge4000.loopexit, %3794
  %3823 = phi i32 [ %.pre4542, %._crit_edge4000.loopexit ], [ %3803, %3794 ]
  %3824 = load i32, ptr %30, align 4, !tbaa !5
  %3825 = mul nsw i32 %3792, %34
  %3826 = add nsw i32 %3824, %3825
  %3827 = sext i32 %3826 to i64
  %3828 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3827
  %3829 = add nsw i32 %3792, -1
  %3830 = mul nsw i32 %3829, %34
  %3831 = add nsw i32 %3824, %3830
  %3832 = sext i32 %3831 to i64
  %3833 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3832
  %3834 = add nsw i32 %3823, %3825
  %3835 = sext i32 %3834 to i64
  %3836 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3835
  %3837 = load i32, ptr %4, align 4, !tbaa !5
  %3838 = sub i32 %3798, %3837
  %3839 = sext i32 %3838 to i64
  %3840 = getelementptr inbounds double, ptr %44, i64 %3839
  %3841 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3839
  call void @zlar2v_(ptr noundef nonnull %28, ptr noundef %3828, ptr noundef %3833, ptr noundef %3836, ptr noundef nonnull %26, ptr noundef nonnull %3840, ptr noundef nonnull %3841, ptr noundef nonnull %30) #5
  %3842 = load i32, ptr %4, align 4, !tbaa !5
  %3843 = sub i32 %3798, %3842
  %3844 = sext i32 %3843 to i64
  %3845 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3844
  call void @zlacgv_(ptr noundef nonnull %28, ptr noundef nonnull %3845, ptr noundef nonnull %30) #5
  %.pre4543 = load i32, ptr %4, align 4, !tbaa !5
  %.pre4545 = load i32, ptr %3, align 4, !tbaa !5
  br label %3846

3846:                                             ; preds = %._crit_edge4000, %3779
  %3847 = phi i32 [ %.pre4545, %._crit_edge4000 ], [ %3786, %3779 ]
  %3848 = phi i32 [ %.pre4543, %._crit_edge4000 ], [ %.pre4544, %3779 ]
  %reass.sub4206 = sub i32 %3848, %.1632154018
  %3849 = add i32 %reass.sub4206, 1
  store i32 %3849, ptr %17, align 4, !tbaa !5
  %.not3374.not4002 = icmp sgt i32 %3847, %3849
  br i1 %.not3374.not4002, label %.lr.ph4006, label %._crit_edge4007

.lr.ph4006:                                       ; preds = %3846
  %3850 = add i32 %3785, -1
  br label %3851

3851:                                             ; preds = %.lr.ph4006, %3876
  %3852 = phi i32 [ %3849, %.lr.ph4006 ], [ %3877, %3876 ]
  %.16.in4003 = phi i32 [ %3847, %.lr.ph4006 ], [ %.164004, %3876 ]
  %.164004 = add nsw i32 %.16.in4003, -1
  %3853 = add i32 %3850, %.164004
  %3854 = load i32, ptr %30, align 4, !tbaa !5
  %3855 = sdiv i32 %3853, %3854
  store i32 %3855, ptr %33, align 4, !tbaa !5
  %3856 = icmp sgt i32 %3855, 0
  br i1 %3856, label %3857, label %3876

3857:                                             ; preds = %3851
  %3858 = add nsw i32 %3855, -1
  %3859 = mul nsw i32 %3858, %3854
  %3860 = sub nsw i32 %3785, %3859
  %3861 = mul nsw i32 %3860, %34
  %3862 = add nsw i32 %3861, %.164004
  %3863 = sext i32 %3862 to i64
  %3864 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3863
  %3865 = add nsw i32 %3860, -1
  %3866 = mul nsw i32 %3865, %34
  %3867 = add nsw i32 %3866, %.16.in4003
  %3868 = sext i32 %3867 to i64
  %3869 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3868
  %3870 = load i32, ptr %4, align 4, !tbaa !5
  %3871 = add i32 %3860, %85
  %3872 = sub i32 %3871, %3870
  %3873 = sext i32 %3872 to i64
  %3874 = getelementptr inbounds double, ptr %44, i64 %3873
  %3875 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3873
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %3864, ptr noundef nonnull %26, ptr noundef %3869, ptr noundef nonnull %26, ptr noundef nonnull %3874, ptr noundef nonnull %3875, ptr noundef nonnull %30) #5
  %.pre4546 = load i32, ptr %17, align 4, !tbaa !5
  br label %3876

3876:                                             ; preds = %3851, %3857
  %3877 = phi i32 [ %3852, %3851 ], [ %.pre4546, %3857 ]
  %.not3374.not = icmp sgt i32 %.164004, %3877
  br i1 %.not3374.not, label %3851, label %._crit_edge4007, !llvm.loop !119

._crit_edge4007:                                  ; preds = %3876, %3846
  br i1 %.not, label %3878, label %.loopexit3500

3878:                                             ; preds = %._crit_edge4007
  store i32 %3785, ptr %17, align 4, !tbaa !5
  %3879 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %3879, ptr %18, align 4, !tbaa !5
  %3880 = icmp slt i32 %3879, 0
  %3881 = icmp slt i32 %3791, 1
  %3882 = icmp sgt i32 %3791, -1
  %.in33754012 = select i1 %3880, i1 %3881, i1 %3882
  br i1 %.in33754012, label %.lr.ph4015, label %.loopexit3500

.lr.ph4015:                                       ; preds = %3878, %.lr.ph4015
  %.314013 = phi i32 [ %3895, %.lr.ph4015 ], [ %3792, %3878 ]
  %3883 = mul nsw i32 %.314013, %40
  %3884 = sext i32 %3883 to i64
  %gep4009 = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %3884
  %3885 = add nsw i32 %.314013, -1
  %3886 = mul nsw i32 %3885, %40
  %3887 = sext i32 %3886 to i64
  %gep4011 = getelementptr %struct.doublecomplex, ptr %invariant.gep4189, i64 %3887
  %3888 = load i32, ptr %4, align 4, !tbaa !5
  %3889 = add i32 %.314013, %85
  %3890 = sub i32 %3889, %3888
  %3891 = sext i32 %3890 to i64
  %3892 = getelementptr inbounds double, ptr %44, i64 %3891
  %3893 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3891
  call void @zrot_(ptr noundef nonnull %29, ptr noundef %gep4009, ptr noundef nonnull @c__1, ptr noundef %gep4011, ptr noundef nonnull @c__1, ptr noundef nonnull %3892, ptr noundef nonnull %3893) #5
  %3894 = load i32, ptr %18, align 4, !tbaa !5
  %3895 = add nsw i32 %3894, %.314013
  %3896 = icmp slt i32 %3894, 0
  %3897 = load i32, ptr %17, align 4
  %3898 = icmp sge i32 %3895, %3897
  %3899 = icmp sle i32 %3895, %3897
  %.in3375 = select i1 %3896, i1 %3898, i1 %3899
  br i1 %.in3375, label %.lr.ph4015, label %.loopexit3500, !llvm.loop !120

.loopexit3500:                                    ; preds = %.lr.ph4015, %3878, %._crit_edge4007
  %3900 = add nsw i32 %.1632154018, -1
  %3901 = icmp sgt i32 %.1632154018, 1
  br i1 %3901, label %3779, label %._crit_edge4021, !llvm.loop !121

._crit_edge4021.thread:                           ; preds = %._crit_edge3994, %3638
  %.ph4685 = phi i32 [ %.pre4541, %._crit_edge3994 ], [ %3639, %3638 ]
  %3902 = add nsw i32 %.ph4685, -1
  store i32 %3902, ptr %18, align 4, !tbaa !5
  br label %._crit_edge4030.thread

._crit_edge4021:                                  ; preds = %.loopexit3500
  %.pre4547 = load i32, ptr %4, align 4, !tbaa !5
  %3903 = add nsw i32 %.pre4547, -1
  store i32 %3903, ptr %18, align 4, !tbaa !5
  %.not33704026 = icmp slt i32 %.pre4547, 2
  br i1 %.not33704026, label %._crit_edge4030.thread, label %.lr.ph4029

.lr.ph4029:                                       ; preds = %._crit_edge4021
  %reass.sub4207 = sub i32 %.43184, %85
  %3904 = add i32 %reass.sub4207, 1
  %3905 = add i32 %.33250, 1
  br label %3906

3906:                                             ; preds = %.lr.ph4029, %._crit_edge4025
  %3907 = phi i32 [ %3903, %.lr.ph4029 ], [ %3943, %._crit_edge4025 ]
  %.1732164027 = phi i32 [ 1, %.lr.ph4029 ], [ %3944, %._crit_edge4025 ]
  store i32 1, ptr %17, align 4, !tbaa !5
  %3908 = add i32 %3904, %.1732164027
  store i32 %3908, ptr %15, align 4, !tbaa !5
  %3909 = call i32 @llvm.smax.i32(i32 %3908, i32 1)
  %3910 = load i32, ptr %30, align 4, !tbaa !5
  %3911 = mul nsw i32 %3909, %3910
  %3912 = add i32 %3905, %.1732164027
  %3913 = sub i32 %3912, %3911
  %3914 = load i32, ptr %4, align 4, !tbaa !5
  %3915 = sub nsw i32 %3914, %.1732164027
  %3916 = icmp sgt i32 %3915, 0
  br i1 %3916, label %.lr.ph4024, label %._crit_edge4025

.lr.ph4024:                                       ; preds = %3906
  %3917 = add i32 %3913, -1
  br label %3918

3918:                                             ; preds = %.lr.ph4024, %3940
  %.174022 = phi i32 [ %3915, %.lr.ph4024 ], [ %3941, %3940 ]
  %3919 = add i32 %3917, %.174022
  %3920 = load i32, ptr %30, align 4, !tbaa !5
  %3921 = sdiv i32 %3919, %3920
  store i32 %3921, ptr %33, align 4, !tbaa !5
  %3922 = icmp sgt i32 %3921, 0
  br i1 %3922, label %3923, label %3940

3923:                                             ; preds = %3918
  %3924 = add nsw i32 %3921, -1
  %3925 = mul nsw i32 %3924, %3920
  %3926 = sub nsw i32 %3913, %3925
  %3927 = mul nsw i32 %3926, %34
  %3928 = add nsw i32 %3927, %.174022
  %3929 = sext i32 %3928 to i64
  %3930 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3929
  %3931 = add nuw nsw i32 %.174022, 1
  %3932 = add nsw i32 %3926, -1
  %3933 = mul nsw i32 %3932, %34
  %3934 = add nsw i32 %3931, %3933
  %3935 = sext i32 %3934 to i64
  %3936 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %3935
  %3937 = sext i32 %3926 to i64
  %3938 = getelementptr inbounds double, ptr %44, i64 %3937
  %3939 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3937
  call void @zlartv_(ptr noundef nonnull %33, ptr noundef %3930, ptr noundef nonnull %26, ptr noundef %3936, ptr noundef nonnull %26, ptr noundef nonnull %3938, ptr noundef nonnull %3939, ptr noundef nonnull %30) #5
  br label %3940

3940:                                             ; preds = %3918, %3923
  %3941 = add nsw i32 %.174022, -1
  %3942 = icmp sgt i32 %.174022, 1
  br i1 %3942, label %3918, label %._crit_edge4025.loopexit, !llvm.loop !122

._crit_edge4025.loopexit:                         ; preds = %3940
  %.pre4548 = load i32, ptr %18, align 4, !tbaa !5
  br label %._crit_edge4025

._crit_edge4025:                                  ; preds = %._crit_edge4025.loopexit, %3906
  %3943 = phi i32 [ %.pre4548, %._crit_edge4025.loopexit ], [ %3907, %3906 ]
  %3944 = add nuw nsw i32 %.1732164027, 1
  %.not3370.not = icmp slt i32 %.1732164027, %3943
  br i1 %.not3370.not, label %3906, label %._crit_edge4030, !llvm.loop !123

._crit_edge4030.thread:                           ; preds = %._crit_edge4021, %._crit_edge4021.thread
  %.ph4687 = phi i32 [ %.ph4685, %._crit_edge4021.thread ], [ %.pre4547, %._crit_edge4021 ]
  %.pre4524.pre.pre4688 = load i32, ptr %3, align 4, !tbaa !5
  br label %.outer.backedge

.outer.backedge:                                  ; preds = %._crit_edge4030.thread, %3946, %..loopexit3503_crit_edge, %._crit_edge4030
  %.pre4524.be = phi i32 [ %.pre4524.pre.pre4688, %._crit_edge4030.thread ], [ %.pre4524.pre.pre, %3946 ], [ %.pre4524.pre.pre, %..loopexit3503_crit_edge ], [ %.pre4524.pre.pre, %._crit_edge4030 ]
  %.be5221 = phi i32 [ %.ph4687, %._crit_edge4030.thread ], [ %.pre4549, %3946 ], [ %.pre4549, %..loopexit3503_crit_edge ], [ %.pre4549, %._crit_edge4030 ]
  br label %.outer

._crit_edge4030:                                  ; preds = %._crit_edge4025
  %.pre4549 = load i32, ptr %4, align 4, !tbaa !5
  %3945 = icmp sgt i32 %.pre4549, 1
  %.pre4524.pre.pre = load i32, ptr %3, align 4, !tbaa !5
  br i1 %3945, label %3946, label %.outer.backedge

3946:                                             ; preds = %._crit_edge4030
  %3947 = sub nsw i32 %.43174, %.pre4524.pre.pre
  store i32 %3947, ptr %18, align 4, !tbaa !5
  %.not33714031 = icmp slt i32 %3947, 2
  br i1 %.not33714031, label %.outer.backedge, label %.lr.ph4034

.lr.ph4034:                                       ; preds = %3946
  %3948 = sext i32 %.pre4524.pre.pre to i64
  %3949 = add i32 %.43174, 1
  %3950 = sub i32 %3949, %.pre4524.pre.pre
  %wide.trip.count4452 = zext i32 %3950 to i64
  %3951 = add nsw i64 %wide.trip.count4452, -2
  %min.iters.check5022 = icmp ult i64 %3951, 58
  br i1 %min.iters.check5022, label %scalar.ph5021.preheader, label %vector.scevcheck4939

vector.scevcheck4939:                             ; preds = %.lr.ph4034
  %3952 = add nsw i64 %wide.trip.count4452, -3
  %mul.result4942 = shl nsw i64 %3952, 4
  %3953 = getelementptr i8, ptr %scevgep4940, i64 %mul.result4942
  %3954 = icmp ult ptr %3953, %scevgep4940
  %mul.result4946 = shl nsw i64 %3952, 4
  %mul.overflow4947 = icmp ugt i64 %3952, 1152921504606846975
  %3955 = getelementptr i8, ptr %scevgep4944, i64 %mul.result4946
  %3956 = icmp ult ptr %3955, %scevgep4944
  %3957 = or i1 %3956, %mul.overflow4947
  %3958 = shl nsw i64 %3948, 4
  %scevgep4949 = getelementptr i8, ptr %scevgep4948, i64 %3958
  %mul.result4951 = shl nsw i64 %3952, 4
  %3959 = getelementptr i8, ptr %scevgep4949, i64 %mul.result4951
  %3960 = icmp ult ptr %3959, %scevgep4949
  %scevgep4954 = getelementptr i8, ptr %scevgep4953, i64 %3958
  %mul.result4956 = shl nsw i64 %3952, 4
  %3961 = getelementptr i8, ptr %scevgep4954, i64 %mul.result4956
  %3962 = icmp ult ptr %3961, %scevgep4954
  %3963 = or i1 %3954, %3957
  %3964 = or i1 %3960, %3963
  %3965 = or i1 %3962, %3964
  br i1 %3965, label %scalar.ph5021.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck4939
  %3966 = shl nuw nsw i64 %wide.trip.count4452, 3
  %scevgep4960 = getelementptr i8, ptr %scevgep4959, i64 %3966
  %3967 = shl nsw i64 %3948, 3
  %scevgep4962 = getelementptr i8, ptr %scevgep4961, i64 %3967
  %3968 = getelementptr i8, ptr %scevgep4963, i64 %3967
  %scevgep4964 = getelementptr i8, ptr %3968, i64 %3966
  %3969 = shl nuw nsw i64 %wide.trip.count4452, 4
  %scevgep4966 = getelementptr i8, ptr %scevgep4965, i64 %3969
  %scevgep4968 = getelementptr i8, ptr %scevgep4967, i64 %3969
  %3970 = shl nsw i64 %3948, 4
  %scevgep4970 = getelementptr i8, ptr %scevgep4969, i64 %3970
  %3971 = add nsw i64 %3970, %3969
  %scevgep4972 = getelementptr i8, ptr %scevgep4971, i64 %3971
  %scevgep4974 = getelementptr i8, ptr %scevgep4973, i64 %3970
  %scevgep4976 = getelementptr i8, ptr %scevgep4975, i64 %3971
  %bound0 = icmp ult ptr %scevgep4958, %scevgep4964
  %bound1 = icmp ult ptr %scevgep4962, %scevgep4960
  %found.conflict = and i1 %bound0, %bound1
  %bound04977 = icmp ult ptr %scevgep4958, %scevgep4966
  %bound14978 = icmp ult ptr %scevgep4948, %scevgep4960
  %found.conflict4979 = and i1 %bound04977, %bound14978
  %conflict.rdx = or i1 %found.conflict, %found.conflict4979
  %bound04980 = icmp ult ptr %scevgep4958, %scevgep4968
  %bound14981 = icmp ult ptr %scevgep4953, %scevgep4960
  %found.conflict4982 = and i1 %bound04980, %bound14981
  %conflict.rdx4983 = or i1 %conflict.rdx, %found.conflict4982
  %bound04984 = icmp ult ptr %scevgep4958, %scevgep4972
  %bound14985 = icmp ult ptr %scevgep4970, %scevgep4960
  %found.conflict4986 = and i1 %bound04984, %bound14985
  %conflict.rdx4987 = or i1 %conflict.rdx4983, %found.conflict4986
  %bound04988 = icmp ult ptr %scevgep4958, %scevgep4976
  %bound14989 = icmp ult ptr %scevgep4974, %scevgep4960
  %found.conflict4990 = and i1 %bound04988, %bound14989
  %conflict.rdx4991 = or i1 %conflict.rdx4987, %found.conflict4990
  %bound04992 = icmp ult ptr %scevgep4962, %scevgep4966
  %bound14993 = icmp ult ptr %scevgep4948, %scevgep4964
  %found.conflict4994 = and i1 %bound04992, %bound14993
  %conflict.rdx4995 = or i1 %conflict.rdx4991, %found.conflict4994
  %bound04996 = icmp ult ptr %scevgep4962, %scevgep4968
  %bound14997 = icmp ult ptr %scevgep4953, %scevgep4964
  %found.conflict4998 = and i1 %bound04996, %bound14997
  %conflict.rdx4999 = or i1 %conflict.rdx4995, %found.conflict4998
  %bound05000 = icmp ult ptr %scevgep4948, %scevgep4968
  %bound15001 = icmp ult ptr %scevgep4953, %scevgep4966
  %found.conflict5002 = and i1 %bound05000, %bound15001
  %conflict.rdx5003 = or i1 %conflict.rdx4999, %found.conflict5002
  %bound05004 = icmp ult ptr %scevgep4948, %scevgep4972
  %bound15005 = icmp ult ptr %scevgep4970, %scevgep4966
  %found.conflict5006 = and i1 %bound05004, %bound15005
  %conflict.rdx5007 = or i1 %conflict.rdx5003, %found.conflict5006
  %bound05008 = icmp ult ptr %scevgep4948, %scevgep4976
  %bound15009 = icmp ult ptr %scevgep4974, %scevgep4966
  %found.conflict5010 = and i1 %bound05008, %bound15009
  %conflict.rdx5011 = or i1 %conflict.rdx5007, %found.conflict5010
  %bound05012 = icmp ult ptr %scevgep4953, %scevgep4972
  %bound15013 = icmp ult ptr %scevgep4970, %scevgep4968
  %found.conflict5014 = and i1 %bound05012, %bound15013
  %conflict.rdx5015 = or i1 %conflict.rdx5011, %found.conflict5014
  %bound05016 = icmp ult ptr %scevgep4953, %scevgep4976
  %bound15017 = icmp ult ptr %scevgep4974, %scevgep4968
  %found.conflict5018 = and i1 %bound05016, %bound15017
  %conflict.rdx5019 = or i1 %conflict.rdx5015, %found.conflict5018
  br i1 %conflict.rdx5019, label %scalar.ph5021.preheader, label %vector.ph5023

vector.ph5023:                                    ; preds = %vector.memcheck
  %n.vec5025 = and i64 %3951, -2
  %ind.end5026 = add nsw i64 %n.vec5025, 2
  br label %vector.body5028

vector.body5028:                                  ; preds = %vector.body5028, %vector.ph5023
  %index5029 = phi i64 [ 0, %vector.ph5023 ], [ %index.next5035, %vector.body5028 ]
  %offset.idx5030 = add i64 %index5029, 2
  %3972 = add nsw i64 %offset.idx5030, %3948
  %3973 = getelementptr inbounds double, ptr %44, i64 %3972
  %wide.load = load <2 x double>, ptr %3973, align 8, !tbaa !12, !alias.scope !124, !noalias !127
  %3974 = getelementptr inbounds double, ptr %44, i64 %offset.idx5030
  store <2 x double> %wide.load, ptr %3974, align 8, !tbaa !12, !alias.scope !130, !noalias !132
  %3975 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3972
  %wide.vec5031 = load <4 x double>, ptr %3975, align 8, !tbaa !12
  %3976 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %offset.idx5030
  store <4 x double> %wide.vec5031, ptr %3976, align 8, !tbaa !12
  %index.next5035 = add nuw i64 %index5029, 2
  %3977 = icmp eq i64 %index.next5035, %n.vec5025
  br i1 %3977, label %middle.block5020, label %vector.body5028, !llvm.loop !135

middle.block5020:                                 ; preds = %vector.body5028
  %3978 = add i64 %index5029, 3
  %3979 = add nsw i64 %3978, %3948
  %cmp.n5036 = icmp eq i64 %3951, %n.vec5025
  %ind.escape = or i64 %3951, 1
  br i1 %cmp.n5036, label %..loopexit3503_crit_edge, label %scalar.ph5021.preheader

scalar.ph5021.preheader:                          ; preds = %middle.block5020, %vector.memcheck, %vector.scevcheck4939, %.lr.ph4034
  %indvars.iv4449.ph = phi i64 [ 2, %vector.memcheck ], [ 2, %vector.scevcheck4939 ], [ 2, %.lr.ph4034 ], [ %ind.end5026, %middle.block5020 ]
  %3980 = sub nsw i64 %wide.trip.count4452, %indvars.iv4449.ph
  %xtraiter5293 = and i64 %3980, 1
  %lcmp.mod5294.not = icmp eq i64 %xtraiter5293, 0
  br i1 %lcmp.mod5294.not, label %scalar.ph5021.prol.loopexit, label %scalar.ph5021.prol

scalar.ph5021.prol:                               ; preds = %scalar.ph5021.preheader
  %3981 = add nsw i64 %indvars.iv4449.ph, %3948
  %3982 = getelementptr inbounds double, ptr %44, i64 %3981
  %3983 = load double, ptr %3982, align 8, !tbaa !12
  %3984 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4449.ph
  store double %3983, ptr %3984, align 8, !tbaa !12
  %3985 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3981
  %3986 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4449.ph
  %3987 = load <2 x double>, ptr %3985, align 8, !tbaa !12
  store <2 x double> %3987, ptr %3986, align 8, !tbaa !12
  %indvars.iv.next4450.prol = add nuw nsw i64 %indvars.iv4449.ph, 1
  br label %scalar.ph5021.prol.loopexit

scalar.ph5021.prol.loopexit:                      ; preds = %scalar.ph5021.prol, %scalar.ph5021.preheader
  %.lcssa5236.unr = phi i64 [ poison, %scalar.ph5021.preheader ], [ %3981, %scalar.ph5021.prol ]
  %indvars.iv4449.unr = phi i64 [ %indvars.iv4449.ph, %scalar.ph5021.preheader ], [ %indvars.iv.next4450.prol, %scalar.ph5021.prol ]
  %3988 = add nsw i64 %wide.trip.count4452, -1
  %3989 = icmp eq i64 %indvars.iv4449.ph, %3988
  br i1 %3989, label %..loopexit3503_crit_edge, label %scalar.ph5021

scalar.ph5021:                                    ; preds = %scalar.ph5021.prol.loopexit, %scalar.ph5021
  %indvars.iv4449 = phi i64 [ %indvars.iv.next4450.1, %scalar.ph5021 ], [ %indvars.iv4449.unr, %scalar.ph5021.prol.loopexit ]
  %3990 = add nsw i64 %indvars.iv4449, %3948
  %3991 = getelementptr inbounds double, ptr %44, i64 %3990
  %3992 = load double, ptr %3991, align 8, !tbaa !12
  %3993 = getelementptr inbounds double, ptr %44, i64 %indvars.iv4449
  store double %3992, ptr %3993, align 8, !tbaa !12
  %3994 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3990
  %3995 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %indvars.iv4449
  %3996 = load <2 x double>, ptr %3994, align 8, !tbaa !12
  store <2 x double> %3996, ptr %3995, align 8, !tbaa !12
  %indvars.iv.next4450 = add nuw nsw i64 %indvars.iv4449, 1
  %3997 = add nsw i64 %indvars.iv.next4450, %3948
  %3998 = getelementptr inbounds double, ptr %44, i64 %3997
  %3999 = load double, ptr %3998, align 8, !tbaa !12
  %4000 = getelementptr double, ptr %12, i64 %indvars.iv4449
  store double %3999, ptr %4000, align 8, !tbaa !12
  %4001 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %3997
  %4002 = getelementptr %struct.doublecomplex, ptr %11, i64 %indvars.iv4449
  %4003 = load <2 x double>, ptr %4001, align 8, !tbaa !12
  store <2 x double> %4003, ptr %4002, align 8, !tbaa !12
  %indvars.iv.next4450.1 = add nuw nsw i64 %indvars.iv4449, 2
  %exitcond4453.not.1 = icmp eq i64 %indvars.iv.next4450.1, %wide.trip.count4452
  br i1 %exitcond4453.not.1, label %..loopexit3503_crit_edge, label %scalar.ph5021, !llvm.loop !136

..loopexit3503_crit_edge:                         ; preds = %scalar.ph5021.prol.loopexit, %scalar.ph5021, %middle.block5020
  %indvars.iv4449.lcssa = phi i64 [ %ind.escape, %middle.block5020 ], [ %indvars.iv4449.ph, %scalar.ph5021.prol.loopexit ], [ %indvars.iv.next4450, %scalar.ph5021 ]
  %.lcssa4854 = phi i64 [ %3979, %middle.block5020 ], [ %.lcssa5236.unr, %scalar.ph5021.prol.loopexit ], [ %3997, %scalar.ph5021 ]
  %4004 = trunc nuw nsw i64 %indvars.iv4449.lcssa to i32
  %4005 = trunc nsw i64 %.lcssa4854 to i32
  store i32 %4004, ptr %17, align 4, !tbaa !5
  store i32 %4005, ptr %15, align 4, !tbaa !5
  br label %.outer.backedge

.loopexit3504:                                    ; preds = %2976, %.lr.ph3873.split, %1988, %.lr.ph3873.split.us4199, %76, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @zgeru_(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.smin.i32(i32, i32) #4

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

; 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>) #4

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 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!10, !11, i64 8}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15, !17, !18}
!17 = !{!"llvm.loop.isvectorized", i32 1}
!18 = !{!"llvm.loop.unroll.runtime.disable"}
!19 = distinct !{!19, !15, !17}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15, !17, !18}
!42 = distinct !{!42, !15, !17}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}
!46 = distinct !{!46, !15}
!47 = distinct !{!47, !15}
!48 = distinct !{!48, !15}
!49 = distinct !{!49, !15}
!50 = distinct !{!50, !15}
!51 = distinct !{!51, !15}
!52 = distinct !{!52, !15}
!53 = distinct !{!53, !15}
!54 = distinct !{!54, !15}
!55 = distinct !{!55, !15}
!56 = distinct !{!56, !15}
!57 = distinct !{!57, !15}
!58 = distinct !{!58, !15}
!59 = distinct !{!59, !15}
!60 = distinct !{!60, !15}
!61 = distinct !{!61, !15}
!62 = distinct !{!62, !15}
!63 = distinct !{!63, !15}
!64 = distinct !{!64, !15}
!65 = distinct !{!65, !15}
!66 = distinct !{!66, !15, !17}
!67 = distinct !{!67, !15}
!68 = distinct !{!68, !15}
!69 = distinct !{!69, !15}
!70 = distinct !{!70, !15}
!71 = distinct !{!71, !15}
!72 = distinct !{!72, !15}
!73 = distinct !{!73, !15}
!74 = distinct !{!74, !15}
!75 = distinct !{!75, !15}
!76 = distinct !{!76, !15}
!77 = distinct !{!77, !15}
!78 = distinct !{!78, !15}
!79 = !{!80}
!80 = distinct !{!80, !81}
!81 = distinct !{!81, !"LVerDomain"}
!82 = !{!83, !84}
!83 = distinct !{!83, !81}
!84 = distinct !{!84, !81}
!85 = !{!86}
!86 = distinct !{!86, !81}
!87 = !{!80, !83, !84, !88, !89}
!88 = distinct !{!88, !81}
!89 = distinct !{!89, !81}
!90 = distinct !{!90, !15, !17, !18}
!91 = distinct !{!91, !15, !17}
!92 = distinct !{!92, !15}
!93 = distinct !{!93, !15}
!94 = distinct !{!94, !15}
!95 = distinct !{!95, !15}
!96 = distinct !{!96, !15}
!97 = distinct !{!97, !15}
!98 = distinct !{!98, !15}
!99 = distinct !{!99, !15}
!100 = distinct !{!100, !15, !17, !18}
!101 = distinct !{!101, !15, !17, !18}
!102 = distinct !{!102, !15, !17}
!103 = distinct !{!103, !15}
!104 = distinct !{!104, !15}
!105 = distinct !{!105, !15}
!106 = distinct !{!106, !15}
!107 = distinct !{!107, !15}
!108 = distinct !{!108, !15}
!109 = distinct !{!109, !15}
!110 = distinct !{!110, !15}
!111 = distinct !{!111, !15}
!112 = distinct !{!112, !15}
!113 = distinct !{!113, !15}
!114 = distinct !{!114, !15}
!115 = distinct !{!115, !15}
!116 = distinct !{!116, !15}
!117 = distinct !{!117, !15}
!118 = distinct !{!118, !15}
!119 = distinct !{!119, !15}
!120 = distinct !{!120, !15}
!121 = distinct !{!121, !15}
!122 = distinct !{!122, !15}
!123 = distinct !{!123, !15}
!124 = !{!125}
!125 = distinct !{!125, !126}
!126 = distinct !{!126, !"LVerDomain"}
!127 = !{!128, !129}
!128 = distinct !{!128, !126}
!129 = distinct !{!129, !126}
!130 = !{!131}
!131 = distinct !{!131, !126}
!132 = !{!125, !128, !129, !133, !134}
!133 = distinct !{!133, !126}
!134 = distinct !{!134, !126}
!135 = distinct !{!135, !15, !17, !18}
!136 = distinct !{!136, !15, !17}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass