; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/BLAS/SRC (cgemm)

; 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.complex = type { float, float }

@.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 [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @f2c_cgemm(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) #0 {
  %14 = alloca i32, align 4
  %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 i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca %struct.complex, align 4
  %41 = alloca %struct.complex, align 4
  %42 = alloca %struct.complex, align 4
  %43 = alloca %struct.complex, align 4
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca %struct.complex, align 4
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  %57 = load ptr, ptr %22, align 8, !tbaa !5
  %58 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %58, ptr %28, align 8, !tbaa !9
  %59 = load i64, ptr %28, align 8, !tbaa !9
  %60 = add nsw i64 1, %59
  store i64 %60, ptr %29, align 8, !tbaa !9
  %61 = load i64, ptr %29, align 8, !tbaa !9
  %62 = load ptr, ptr %21, align 8, !tbaa !5
  %63 = sub i64 0, %61
  %64 = getelementptr inbounds %struct.complex, ptr %62, i64 %63
  store ptr %64, ptr %21, align 8, !tbaa !5
  %65 = load ptr, ptr %24, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %66, ptr %30, align 8, !tbaa !9
  %67 = load i64, ptr %30, align 8, !tbaa !9
  %68 = add nsw i64 1, %67
  store i64 %68, ptr %31, align 8, !tbaa !9
  %69 = load i64, ptr %31, align 8, !tbaa !9
  %70 = load ptr, ptr %23, align 8, !tbaa !5
  %71 = sub i64 0, %69
  %72 = getelementptr inbounds %struct.complex, ptr %70, i64 %71
  store ptr %72, ptr %23, align 8, !tbaa !5
  %73 = load ptr, ptr %27, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %74, ptr %32, align 8, !tbaa !9
  %75 = load i64, ptr %32, align 8, !tbaa !9
  %76 = add nsw i64 1, %75
  store i64 %76, ptr %33, align 8, !tbaa !9
  %77 = load i64, ptr %33, align 8, !tbaa !9
  %78 = load ptr, ptr %26, align 8, !tbaa !5
  %79 = sub i64 0, %77
  %80 = getelementptr inbounds %struct.complex, ptr %78, i64 %79
  store ptr %80, ptr %26, align 8, !tbaa !5
  %81 = load ptr, ptr %15, align 8, !tbaa !5
  %82 = call i64 @lsame_(ptr noundef %81, ptr noundef @.str)
  store i64 %82, ptr %48, align 8, !tbaa !9
  %83 = load ptr, ptr %16, align 8, !tbaa !5
  %84 = call i64 @lsame_(ptr noundef %83, ptr noundef @.str)
  store i64 %84, ptr %49, align 8, !tbaa !9
  %85 = load ptr, ptr %15, align 8, !tbaa !5
  %86 = call i64 @lsame_(ptr noundef %85, ptr noundef @.str.1)
  store i64 %86, ptr %51, align 8, !tbaa !9
  %87 = load ptr, ptr %16, align 8, !tbaa !5
  %88 = call i64 @lsame_(ptr noundef %87, ptr noundef @.str.1)
  store i64 %88, ptr %52, align 8, !tbaa !9
  %89 = load i64, ptr %48, align 8, !tbaa !9
  %90 = icmp ne i64 %89, 0
  br i1 %90, label %91, label %96

91:                                               ; preds = %13
  %92 = load ptr, ptr %17, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %93, ptr %54, align 8, !tbaa !9
  %94 = load ptr, ptr %19, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %95, ptr %53, align 8, !tbaa !9
  br label %101

96:                                               ; preds = %13
  %97 = load ptr, ptr %19, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  store i64 %98, ptr %54, align 8, !tbaa !9
  %99 = load ptr, ptr %17, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %53, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %96, %91
  %102 = load i64, ptr %49, align 8, !tbaa !9
  %103 = icmp ne i64 %102, 0
  br i1 %103, label %104, label %107

104:                                              ; preds = %101
  %105 = load ptr, ptr %19, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %106, ptr %55, align 8, !tbaa !9
  br label %110

107:                                              ; preds = %101
  %108 = load ptr, ptr %18, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %109, ptr %55, align 8, !tbaa !9
  br label %110

110:                                              ; preds = %107, %104
  store i64 0, ptr %47, align 8, !tbaa !9
  %111 = load i64, ptr %48, align 8, !tbaa !9
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %121, label %113

113:                                              ; preds = %110
  %114 = load i64, ptr %51, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %121, label %116

116:                                              ; preds = %113
  %117 = load ptr, ptr %15, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str.2)
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %121, label %120

120:                                              ; preds = %116
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %192

121:                                              ; preds = %116, %113, %110
  %122 = load i64, ptr %49, align 8, !tbaa !9
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %132, label %124

124:                                              ; preds = %121
  %125 = load i64, ptr %52, align 8, !tbaa !9
  %126 = icmp ne i64 %125, 0
  br i1 %126, label %132, label %127

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

131:                                              ; preds = %127
  store i64 2, ptr %47, align 8, !tbaa !9
  br label %191

132:                                              ; preds = %127, %124, %121
  %133 = load ptr, ptr %17, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp slt i64 %134, 0
  br i1 %135, label %136, label %137

136:                                              ; preds = %132
  store i64 3, ptr %47, align 8, !tbaa !9
  br label %190

137:                                              ; preds = %132
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp slt i64 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %137
  store i64 4, ptr %47, align 8, !tbaa !9
  br label %189

142:                                              ; preds = %137
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp slt i64 %144, 0
  br i1 %145, label %146, label %147

146:                                              ; preds = %142
  store i64 5, ptr %47, align 8, !tbaa !9
  br label %188

147:                                              ; preds = %142
  %148 = load ptr, ptr %22, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = load i64, ptr %54, align 8, !tbaa !9
  %151 = icmp sge i64 1, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %147
  br label %155

153:                                              ; preds = %147
  %154 = load i64, ptr %54, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %153, %152
  %156 = phi i64 [ 1, %152 ], [ %154, %153 ]
  %157 = icmp slt i64 %149, %156
  br i1 %157, label %158, label %159

158:                                              ; preds = %155
  store i64 8, ptr %47, align 8, !tbaa !9
  br label %187

159:                                              ; preds = %155
  %160 = load ptr, ptr %24, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load i64, ptr %55, align 8, !tbaa !9
  %163 = icmp sge i64 1, %162
  br i1 %163, label %164, label %165

164:                                              ; preds = %159
  br label %167

165:                                              ; preds = %159
  %166 = load i64, ptr %55, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %165, %164
  %168 = phi i64 [ 1, %164 ], [ %166, %165 ]
  %169 = icmp slt i64 %161, %168
  br i1 %169, label %170, label %171

170:                                              ; preds = %167
  store i64 10, ptr %47, align 8, !tbaa !9
  br label %186

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

177:                                              ; preds = %171
  br label %181

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

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

184:                                              ; preds = %181
  store i64 13, ptr %47, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %184, %181
  br label %186

186:                                              ; preds = %185, %170
  br label %187

187:                                              ; preds = %186, %158
  br label %188

188:                                              ; preds = %187, %146
  br label %189

189:                                              ; preds = %188, %141
  br label %190

190:                                              ; preds = %189, %136
  br label %191

191:                                              ; preds = %190, %131
  br label %192

192:                                              ; preds = %191, %120
  %193 = load i64, ptr %47, align 8, !tbaa !9
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %195, label %197

195:                                              ; preds = %192
  %196 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %47)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %56, align 4
  br label %2854

197:                                              ; preds = %192
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp eq i64 %199, 0
  br i1 %200, label %229, label %201

201:                                              ; preds = %197
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp eq i64 %203, 0
  br i1 %204, label %229, label %205

205:                                              ; preds = %201
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.complex, ptr %206, i32 0, i32 0
  %208 = load float, ptr %207, align 4, !tbaa !11
  %209 = fcmp oeq float %208, 0.000000e+00
  br i1 %209, label %210, label %215

210:                                              ; preds = %205
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.complex, ptr %211, i32 0, i32 1
  %213 = load float, ptr %212, align 4, !tbaa !14
  %214 = fcmp oeq float %213, 0.000000e+00
  br i1 %214, label %219, label %215

215:                                              ; preds = %210, %205
  %216 = load ptr, ptr %19, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp eq i64 %217, 0
  br i1 %218, label %219, label %230

219:                                              ; preds = %215, %210
  %220 = load ptr, ptr %25, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.complex, ptr %220, i32 0, i32 0
  %222 = load float, ptr %221, align 4, !tbaa !11
  %223 = fcmp oeq float %222, 1.000000e+00
  br i1 %223, label %224, label %230

224:                                              ; preds = %219
  %225 = load ptr, ptr %25, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.complex, ptr %225, i32 0, i32 1
  %227 = load float, ptr %226, align 4, !tbaa !14
  %228 = fcmp oeq float %227, 0.000000e+00
  br i1 %228, label %229, label %230

229:                                              ; preds = %224, %201, %197
  store i32 0, ptr %14, align 4
  store i32 1, ptr %56, align 4
  br label %2854

230:                                              ; preds = %224, %219, %215
  %231 = load ptr, ptr %20, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.complex, ptr %231, i32 0, i32 0
  %233 = load float, ptr %232, align 4, !tbaa !11
  %234 = fcmp oeq float %233, 0.000000e+00
  br i1 %234, label %235, label %371

235:                                              ; preds = %230
  %236 = load ptr, ptr %20, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.complex, ptr %236, i32 0, i32 1
  %238 = load float, ptr %237, align 4, !tbaa !14
  %239 = fcmp oeq float %238, 0.000000e+00
  br i1 %239, label %240, label %371

240:                                              ; preds = %235
  %241 = load ptr, ptr %25, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.complex, ptr %241, i32 0, i32 0
  %243 = load float, ptr %242, align 4, !tbaa !11
  %244 = fcmp oeq float %243, 0.000000e+00
  br i1 %244, label %245, label %286

245:                                              ; preds = %240
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.complex, ptr %246, i32 0, i32 1
  %248 = load float, ptr %247, align 4, !tbaa !14
  %249 = fcmp oeq float %248, 0.000000e+00
  br i1 %249, label %250, label %286

250:                                              ; preds = %245
  %251 = load ptr, ptr %18, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  store i64 %252, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %282, %250
  %254 = load i64, ptr %45, align 8, !tbaa !9
  %255 = load i64, ptr %34, align 8, !tbaa !9
  %256 = icmp sle i64 %254, %255
  br i1 %256, label %257, label %285

257:                                              ; preds = %253
  %258 = load ptr, ptr %17, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  store i64 %259, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %278, %257
  %261 = load i64, ptr %44, align 8, !tbaa !9
  %262 = load i64, ptr %35, align 8, !tbaa !9
  %263 = icmp sle i64 %261, %262
  br i1 %263, label %264, label %281

264:                                              ; preds = %260
  %265 = load i64, ptr %44, align 8, !tbaa !9
  %266 = load i64, ptr %45, align 8, !tbaa !9
  %267 = load i64, ptr %32, align 8, !tbaa !9
  %268 = mul nsw i64 %266, %267
  %269 = add nsw i64 %265, %268
  store i64 %269, ptr %36, align 8, !tbaa !9
  %270 = load ptr, ptr %26, align 8, !tbaa !5
  %271 = load i64, ptr %36, align 8, !tbaa !9
  %272 = getelementptr inbounds %struct.complex, ptr %270, i64 %271
  %273 = getelementptr inbounds %struct.complex, ptr %272, i32 0, i32 0
  store float 0.000000e+00, ptr %273, align 4, !tbaa !11
  %274 = load ptr, ptr %26, align 8, !tbaa !5
  %275 = load i64, ptr %36, align 8, !tbaa !9
  %276 = getelementptr inbounds %struct.complex, ptr %274, i64 %275
  %277 = getelementptr inbounds %struct.complex, ptr %276, i32 0, i32 1
  store float 0.000000e+00, ptr %277, align 4, !tbaa !14
  br label %278

278:                                              ; preds = %264
  %279 = load i64, ptr %44, align 8, !tbaa !9
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %44, align 8, !tbaa !9
  br label %260, !llvm.loop !15

281:                                              ; preds = %260
  br label %282

282:                                              ; preds = %281
  %283 = load i64, ptr %45, align 8, !tbaa !9
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %45, align 8, !tbaa !9
  br label %253, !llvm.loop !17

285:                                              ; preds = %253
  br label %370

286:                                              ; preds = %245, %240
  %287 = load ptr, ptr %18, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  store i64 %288, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %289

289:                                              ; preds = %366, %286
  %290 = load i64, ptr %45, align 8, !tbaa !9
  %291 = load i64, ptr %34, align 8, !tbaa !9
  %292 = icmp sle i64 %290, %291
  br i1 %292, label %293, label %369

293:                                              ; preds = %289
  %294 = load ptr, ptr %17, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  store i64 %295, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %362, %293
  %297 = load i64, ptr %44, align 8, !tbaa !9
  %298 = load i64, ptr %35, align 8, !tbaa !9
  %299 = icmp sle i64 %297, %298
  br i1 %299, label %300, label %365

300:                                              ; preds = %296
  %301 = load i64, ptr %44, align 8, !tbaa !9
  %302 = load i64, ptr %45, align 8, !tbaa !9
  %303 = load i64, ptr %32, align 8, !tbaa !9
  %304 = mul nsw i64 %302, %303
  %305 = add nsw i64 %301, %304
  store i64 %305, ptr %36, align 8, !tbaa !9
  %306 = load i64, ptr %44, align 8, !tbaa !9
  %307 = load i64, ptr %45, align 8, !tbaa !9
  %308 = load i64, ptr %32, align 8, !tbaa !9
  %309 = mul nsw i64 %307, %308
  %310 = add nsw i64 %306, %309
  store i64 %310, ptr %37, align 8, !tbaa !9
  %311 = load ptr, ptr %25, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.complex, ptr %311, i32 0, i32 0
  %313 = load float, ptr %312, align 4, !tbaa !11
  %314 = load ptr, ptr %26, align 8, !tbaa !5
  %315 = load i64, ptr %37, align 8, !tbaa !9
  %316 = getelementptr inbounds %struct.complex, ptr %314, i64 %315
  %317 = getelementptr inbounds %struct.complex, ptr %316, i32 0, i32 0
  %318 = load float, ptr %317, align 4, !tbaa !11
  %319 = load ptr, ptr %25, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.complex, ptr %319, i32 0, i32 1
  %321 = load float, ptr %320, align 4, !tbaa !14
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = load i64, ptr %37, align 8, !tbaa !9
  %324 = getelementptr inbounds %struct.complex, ptr %322, i64 %323
  %325 = getelementptr inbounds %struct.complex, ptr %324, i32 0, i32 1
  %326 = load float, ptr %325, align 4, !tbaa !14
  %327 = fmul float %321, %326
  %328 = fneg float %327
  %329 = call float @llvm.fmuladd.f32(float %313, float %318, float %328)
  %330 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %329, ptr %330, align 4, !tbaa !11
  %331 = load ptr, ptr %25, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.complex, ptr %331, i32 0, i32 0
  %333 = load float, ptr %332, align 4, !tbaa !11
  %334 = load ptr, ptr %26, align 8, !tbaa !5
  %335 = load i64, ptr %37, align 8, !tbaa !9
  %336 = getelementptr inbounds %struct.complex, ptr %334, i64 %335
  %337 = getelementptr inbounds %struct.complex, ptr %336, i32 0, i32 1
  %338 = load float, ptr %337, align 4, !tbaa !14
  %339 = load ptr, ptr %25, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.complex, ptr %339, i32 0, i32 1
  %341 = load float, ptr %340, align 4, !tbaa !14
  %342 = load ptr, ptr %26, align 8, !tbaa !5
  %343 = load i64, ptr %37, align 8, !tbaa !9
  %344 = getelementptr inbounds %struct.complex, ptr %342, i64 %343
  %345 = getelementptr inbounds %struct.complex, ptr %344, i32 0, i32 0
  %346 = load float, ptr %345, align 4, !tbaa !11
  %347 = fmul float %341, %346
  %348 = call float @llvm.fmuladd.f32(float %333, float %338, float %347)
  %349 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %348, ptr %349, align 4, !tbaa !14
  %350 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %351 = load float, ptr %350, align 4, !tbaa !11
  %352 = load ptr, ptr %26, align 8, !tbaa !5
  %353 = load i64, ptr %36, align 8, !tbaa !9
  %354 = getelementptr inbounds %struct.complex, ptr %352, i64 %353
  %355 = getelementptr inbounds %struct.complex, ptr %354, i32 0, i32 0
  store float %351, ptr %355, align 4, !tbaa !11
  %356 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %357 = load float, ptr %356, align 4, !tbaa !14
  %358 = load ptr, ptr %26, align 8, !tbaa !5
  %359 = load i64, ptr %36, align 8, !tbaa !9
  %360 = getelementptr inbounds %struct.complex, ptr %358, i64 %359
  %361 = getelementptr inbounds %struct.complex, ptr %360, i32 0, i32 1
  store float %357, ptr %361, align 4, !tbaa !14
  br label %362

362:                                              ; preds = %300
  %363 = load i64, ptr %44, align 8, !tbaa !9
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %44, align 8, !tbaa !9
  br label %296, !llvm.loop !18

365:                                              ; preds = %296
  br label %366

366:                                              ; preds = %365
  %367 = load i64, ptr %45, align 8, !tbaa !9
  %368 = add nsw i64 %367, 1
  store i64 %368, ptr %45, align 8, !tbaa !9
  br label %289, !llvm.loop !19

369:                                              ; preds = %289
  br label %370

370:                                              ; preds = %369, %285
  store i32 0, ptr %14, align 4
  store i32 1, ptr %56, align 4
  br label %2854

371:                                              ; preds = %235, %230
  %372 = load i64, ptr %49, align 8, !tbaa !9
  %373 = icmp ne i64 %372, 0
  br i1 %373, label %374, label %1209

374:                                              ; preds = %371
  %375 = load i64, ptr %48, align 8, !tbaa !9
  %376 = icmp ne i64 %375, 0
  br i1 %376, label %377, label %680

377:                                              ; preds = %374
  %378 = load ptr, ptr %18, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  store i64 %379, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %380

380:                                              ; preds = %676, %377
  %381 = load i64, ptr %45, align 8, !tbaa !9
  %382 = load i64, ptr %34, align 8, !tbaa !9
  %383 = icmp sle i64 %381, %382
  br i1 %383, label %384, label %679

384:                                              ; preds = %380
  %385 = load ptr, ptr %25, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.complex, ptr %385, i32 0, i32 0
  %387 = load float, ptr %386, align 4, !tbaa !11
  %388 = fcmp oeq float %387, 0.000000e+00
  br i1 %388, label %389, label %419

389:                                              ; preds = %384
  %390 = load ptr, ptr %25, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.complex, ptr %390, i32 0, i32 1
  %392 = load float, ptr %391, align 4, !tbaa !14
  %393 = fcmp oeq float %392, 0.000000e+00
  br i1 %393, label %394, label %419

394:                                              ; preds = %389
  %395 = load ptr, ptr %17, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  store i64 %396, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %415, %394
  %398 = load i64, ptr %44, align 8, !tbaa !9
  %399 = load i64, ptr %35, align 8, !tbaa !9
  %400 = icmp sle i64 %398, %399
  br i1 %400, label %401, label %418

401:                                              ; preds = %397
  %402 = load i64, ptr %44, align 8, !tbaa !9
  %403 = load i64, ptr %45, align 8, !tbaa !9
  %404 = load i64, ptr %32, align 8, !tbaa !9
  %405 = mul nsw i64 %403, %404
  %406 = add nsw i64 %402, %405
  store i64 %406, ptr %36, align 8, !tbaa !9
  %407 = load ptr, ptr %26, align 8, !tbaa !5
  %408 = load i64, ptr %36, align 8, !tbaa !9
  %409 = getelementptr inbounds %struct.complex, ptr %407, i64 %408
  %410 = getelementptr inbounds %struct.complex, ptr %409, i32 0, i32 0
  store float 0.000000e+00, ptr %410, align 4, !tbaa !11
  %411 = load ptr, ptr %26, align 8, !tbaa !5
  %412 = load i64, ptr %36, align 8, !tbaa !9
  %413 = getelementptr inbounds %struct.complex, ptr %411, i64 %412
  %414 = getelementptr inbounds %struct.complex, ptr %413, i32 0, i32 1
  store float 0.000000e+00, ptr %414, align 4, !tbaa !14
  br label %415

415:                                              ; preds = %401
  %416 = load i64, ptr %44, align 8, !tbaa !9
  %417 = add nsw i64 %416, 1
  store i64 %417, ptr %44, align 8, !tbaa !9
  br label %397, !llvm.loop !20

418:                                              ; preds = %397
  br label %503

419:                                              ; preds = %389, %384
  %420 = load ptr, ptr %25, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.complex, ptr %420, i32 0, i32 0
  %422 = load float, ptr %421, align 4, !tbaa !11
  %423 = fcmp une float %422, 1.000000e+00
  br i1 %423, label %429, label %424

424:                                              ; preds = %419
  %425 = load ptr, ptr %25, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.complex, ptr %425, i32 0, i32 1
  %427 = load float, ptr %426, align 4, !tbaa !14
  %428 = fcmp une float %427, 0.000000e+00
  br i1 %428, label %429, label %502

429:                                              ; preds = %424, %419
  %430 = load ptr, ptr %17, align 8, !tbaa !5
  %431 = load i64, ptr %430, align 8, !tbaa !9
  store i64 %431, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %432

432:                                              ; preds = %498, %429
  %433 = load i64, ptr %44, align 8, !tbaa !9
  %434 = load i64, ptr %35, align 8, !tbaa !9
  %435 = icmp sle i64 %433, %434
  br i1 %435, label %436, label %501

436:                                              ; preds = %432
  %437 = load i64, ptr %44, align 8, !tbaa !9
  %438 = load i64, ptr %45, align 8, !tbaa !9
  %439 = load i64, ptr %32, align 8, !tbaa !9
  %440 = mul nsw i64 %438, %439
  %441 = add nsw i64 %437, %440
  store i64 %441, ptr %36, align 8, !tbaa !9
  %442 = load i64, ptr %44, align 8, !tbaa !9
  %443 = load i64, ptr %45, align 8, !tbaa !9
  %444 = load i64, ptr %32, align 8, !tbaa !9
  %445 = mul nsw i64 %443, %444
  %446 = add nsw i64 %442, %445
  store i64 %446, ptr %37, align 8, !tbaa !9
  %447 = load ptr, ptr %25, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.complex, ptr %447, i32 0, i32 0
  %449 = load float, ptr %448, align 4, !tbaa !11
  %450 = load ptr, ptr %26, align 8, !tbaa !5
  %451 = load i64, ptr %37, align 8, !tbaa !9
  %452 = getelementptr inbounds %struct.complex, ptr %450, i64 %451
  %453 = getelementptr inbounds %struct.complex, ptr %452, i32 0, i32 0
  %454 = load float, ptr %453, align 4, !tbaa !11
  %455 = load ptr, ptr %25, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.complex, ptr %455, i32 0, i32 1
  %457 = load float, ptr %456, align 4, !tbaa !14
  %458 = load ptr, ptr %26, align 8, !tbaa !5
  %459 = load i64, ptr %37, align 8, !tbaa !9
  %460 = getelementptr inbounds %struct.complex, ptr %458, i64 %459
  %461 = getelementptr inbounds %struct.complex, ptr %460, i32 0, i32 1
  %462 = load float, ptr %461, align 4, !tbaa !14
  %463 = fmul float %457, %462
  %464 = fneg float %463
  %465 = call float @llvm.fmuladd.f32(float %449, float %454, float %464)
  %466 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %465, ptr %466, align 4, !tbaa !11
  %467 = load ptr, ptr %25, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.complex, ptr %467, i32 0, i32 0
  %469 = load float, ptr %468, align 4, !tbaa !11
  %470 = load ptr, ptr %26, align 8, !tbaa !5
  %471 = load i64, ptr %37, align 8, !tbaa !9
  %472 = getelementptr inbounds %struct.complex, ptr %470, i64 %471
  %473 = getelementptr inbounds %struct.complex, ptr %472, i32 0, i32 1
  %474 = load float, ptr %473, align 4, !tbaa !14
  %475 = load ptr, ptr %25, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.complex, ptr %475, i32 0, i32 1
  %477 = load float, ptr %476, align 4, !tbaa !14
  %478 = load ptr, ptr %26, align 8, !tbaa !5
  %479 = load i64, ptr %37, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %478, i64 %479
  %481 = getelementptr inbounds %struct.complex, ptr %480, i32 0, i32 0
  %482 = load float, ptr %481, align 4, !tbaa !11
  %483 = fmul float %477, %482
  %484 = call float @llvm.fmuladd.f32(float %469, float %474, float %483)
  %485 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %484, ptr %485, align 4, !tbaa !14
  %486 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %487 = load float, ptr %486, align 4, !tbaa !11
  %488 = load ptr, ptr %26, align 8, !tbaa !5
  %489 = load i64, ptr %36, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.complex, ptr %488, i64 %489
  %491 = getelementptr inbounds %struct.complex, ptr %490, i32 0, i32 0
  store float %487, ptr %491, align 4, !tbaa !11
  %492 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %493 = load float, ptr %492, align 4, !tbaa !14
  %494 = load ptr, ptr %26, align 8, !tbaa !5
  %495 = load i64, ptr %36, align 8, !tbaa !9
  %496 = getelementptr inbounds %struct.complex, ptr %494, i64 %495
  %497 = getelementptr inbounds %struct.complex, ptr %496, i32 0, i32 1
  store float %493, ptr %497, align 4, !tbaa !14
  br label %498

498:                                              ; preds = %436
  %499 = load i64, ptr %44, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  store i64 %500, ptr %44, align 8, !tbaa !9
  br label %432, !llvm.loop !21

501:                                              ; preds = %432
  br label %502

502:                                              ; preds = %501, %424
  br label %503

503:                                              ; preds = %502, %418
  %504 = load ptr, ptr %19, align 8, !tbaa !5
  %505 = load i64, ptr %504, align 8, !tbaa !9
  store i64 %505, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %506

506:                                              ; preds = %672, %503
  %507 = load i64, ptr %46, align 8, !tbaa !9
  %508 = load i64, ptr %35, align 8, !tbaa !9
  %509 = icmp sle i64 %507, %508
  br i1 %509, label %510, label %675

510:                                              ; preds = %506
  %511 = load i64, ptr %46, align 8, !tbaa !9
  %512 = load i64, ptr %45, align 8, !tbaa !9
  %513 = load i64, ptr %30, align 8, !tbaa !9
  %514 = mul nsw i64 %512, %513
  %515 = add nsw i64 %511, %514
  store i64 %515, ptr %36, align 8, !tbaa !9
  %516 = load ptr, ptr %23, align 8, !tbaa !5
  %517 = load i64, ptr %36, align 8, !tbaa !9
  %518 = getelementptr inbounds %struct.complex, ptr %516, i64 %517
  %519 = getelementptr inbounds %struct.complex, ptr %518, i32 0, i32 0
  %520 = load float, ptr %519, align 4, !tbaa !11
  %521 = fcmp une float %520, 0.000000e+00
  br i1 %521, label %529, label %522

522:                                              ; preds = %510
  %523 = load ptr, ptr %23, align 8, !tbaa !5
  %524 = load i64, ptr %36, align 8, !tbaa !9
  %525 = getelementptr inbounds %struct.complex, ptr %523, i64 %524
  %526 = getelementptr inbounds %struct.complex, ptr %525, i32 0, i32 1
  %527 = load float, ptr %526, align 4, !tbaa !14
  %528 = fcmp une float %527, 0.000000e+00
  br i1 %528, label %529, label %671

529:                                              ; preds = %522, %510
  %530 = load i64, ptr %46, align 8, !tbaa !9
  %531 = load i64, ptr %45, align 8, !tbaa !9
  %532 = load i64, ptr %30, align 8, !tbaa !9
  %533 = mul nsw i64 %531, %532
  %534 = add nsw i64 %530, %533
  store i64 %534, ptr %36, align 8, !tbaa !9
  %535 = load ptr, ptr %20, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.complex, ptr %535, i32 0, i32 0
  %537 = load float, ptr %536, align 4, !tbaa !11
  %538 = load ptr, ptr %23, align 8, !tbaa !5
  %539 = load i64, ptr %36, align 8, !tbaa !9
  %540 = getelementptr inbounds %struct.complex, ptr %538, i64 %539
  %541 = getelementptr inbounds %struct.complex, ptr %540, i32 0, i32 0
  %542 = load float, ptr %541, align 4, !tbaa !11
  %543 = load ptr, ptr %20, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.complex, ptr %543, i32 0, i32 1
  %545 = load float, ptr %544, align 4, !tbaa !14
  %546 = load ptr, ptr %23, align 8, !tbaa !5
  %547 = load i64, ptr %36, align 8, !tbaa !9
  %548 = getelementptr inbounds %struct.complex, ptr %546, i64 %547
  %549 = getelementptr inbounds %struct.complex, ptr %548, i32 0, i32 1
  %550 = load float, ptr %549, align 4, !tbaa !14
  %551 = fmul float %545, %550
  %552 = fneg float %551
  %553 = call float @llvm.fmuladd.f32(float %537, float %542, float %552)
  %554 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %553, ptr %554, align 4, !tbaa !11
  %555 = load ptr, ptr %20, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.complex, ptr %555, i32 0, i32 0
  %557 = load float, ptr %556, align 4, !tbaa !11
  %558 = load ptr, ptr %23, align 8, !tbaa !5
  %559 = load i64, ptr %36, align 8, !tbaa !9
  %560 = getelementptr inbounds %struct.complex, ptr %558, i64 %559
  %561 = getelementptr inbounds %struct.complex, ptr %560, i32 0, i32 1
  %562 = load float, ptr %561, align 4, !tbaa !14
  %563 = load ptr, ptr %20, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.complex, ptr %563, i32 0, i32 1
  %565 = load float, ptr %564, align 4, !tbaa !14
  %566 = load ptr, ptr %23, align 8, !tbaa !5
  %567 = load i64, ptr %36, align 8, !tbaa !9
  %568 = getelementptr inbounds %struct.complex, ptr %566, i64 %567
  %569 = getelementptr inbounds %struct.complex, ptr %568, i32 0, i32 0
  %570 = load float, ptr %569, align 4, !tbaa !11
  %571 = fmul float %565, %570
  %572 = call float @llvm.fmuladd.f32(float %557, float %562, float %571)
  %573 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %572, ptr %573, align 4, !tbaa !14
  %574 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %575 = load float, ptr %574, align 4, !tbaa !11
  %576 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %575, ptr %576, align 4, !tbaa !11
  %577 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %578 = load float, ptr %577, align 4, !tbaa !14
  %579 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %578, ptr %579, align 4, !tbaa !14
  %580 = load ptr, ptr %17, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  store i64 %581, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %582

582:                                              ; preds = %667, %529
  %583 = load i64, ptr %44, align 8, !tbaa !9
  %584 = load i64, ptr %36, align 8, !tbaa !9
  %585 = icmp sle i64 %583, %584
  br i1 %585, label %586, label %670

586:                                              ; preds = %582
  %587 = load i64, ptr %44, align 8, !tbaa !9
  %588 = load i64, ptr %45, align 8, !tbaa !9
  %589 = load i64, ptr %32, align 8, !tbaa !9
  %590 = mul nsw i64 %588, %589
  %591 = add nsw i64 %587, %590
  store i64 %591, ptr %37, align 8, !tbaa !9
  %592 = load i64, ptr %44, align 8, !tbaa !9
  %593 = load i64, ptr %45, align 8, !tbaa !9
  %594 = load i64, ptr %32, align 8, !tbaa !9
  %595 = mul nsw i64 %593, %594
  %596 = add nsw i64 %592, %595
  store i64 %596, ptr %38, align 8, !tbaa !9
  %597 = load i64, ptr %44, align 8, !tbaa !9
  %598 = load i64, ptr %46, align 8, !tbaa !9
  %599 = load i64, ptr %28, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %597, %600
  store i64 %601, ptr %39, align 8, !tbaa !9
  %602 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %603 = load float, ptr %602, align 4, !tbaa !11
  %604 = load ptr, ptr %21, align 8, !tbaa !5
  %605 = load i64, ptr %39, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.complex, ptr %604, i64 %605
  %607 = getelementptr inbounds %struct.complex, ptr %606, i32 0, i32 0
  %608 = load float, ptr %607, align 4, !tbaa !11
  %609 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %610 = load float, ptr %609, align 4, !tbaa !14
  %611 = load ptr, ptr %21, align 8, !tbaa !5
  %612 = load i64, ptr %39, align 8, !tbaa !9
  %613 = getelementptr inbounds %struct.complex, ptr %611, i64 %612
  %614 = getelementptr inbounds %struct.complex, ptr %613, i32 0, i32 1
  %615 = load float, ptr %614, align 4, !tbaa !14
  %616 = fmul float %610, %615
  %617 = fneg float %616
  %618 = call float @llvm.fmuladd.f32(float %603, float %608, float %617)
  %619 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %618, ptr %619, align 4, !tbaa !11
  %620 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %621 = load float, ptr %620, align 4, !tbaa !11
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = load i64, ptr %39, align 8, !tbaa !9
  %624 = getelementptr inbounds %struct.complex, ptr %622, i64 %623
  %625 = getelementptr inbounds %struct.complex, ptr %624, i32 0, i32 1
  %626 = load float, ptr %625, align 4, !tbaa !14
  %627 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %628 = load float, ptr %627, align 4, !tbaa !14
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  %630 = load i64, ptr %39, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.complex, ptr %629, i64 %630
  %632 = getelementptr inbounds %struct.complex, ptr %631, i32 0, i32 0
  %633 = load float, ptr %632, align 4, !tbaa !11
  %634 = fmul float %628, %633
  %635 = call float @llvm.fmuladd.f32(float %621, float %626, float %634)
  %636 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %635, ptr %636, align 4, !tbaa !14
  %637 = load ptr, ptr %26, align 8, !tbaa !5
  %638 = load i64, ptr %38, align 8, !tbaa !9
  %639 = getelementptr inbounds %struct.complex, ptr %637, i64 %638
  %640 = getelementptr inbounds %struct.complex, ptr %639, i32 0, i32 0
  %641 = load float, ptr %640, align 4, !tbaa !11
  %642 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %643 = load float, ptr %642, align 4, !tbaa !11
  %644 = fadd float %641, %643
  %645 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %644, ptr %645, align 4, !tbaa !11
  %646 = load ptr, ptr %26, align 8, !tbaa !5
  %647 = load i64, ptr %38, align 8, !tbaa !9
  %648 = getelementptr inbounds %struct.complex, ptr %646, i64 %647
  %649 = getelementptr inbounds %struct.complex, ptr %648, i32 0, i32 1
  %650 = load float, ptr %649, align 4, !tbaa !14
  %651 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %652 = load float, ptr %651, align 4, !tbaa !14
  %653 = fadd float %650, %652
  %654 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %653, ptr %654, align 4, !tbaa !14
  %655 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %656 = load float, ptr %655, align 4, !tbaa !11
  %657 = load ptr, ptr %26, align 8, !tbaa !5
  %658 = load i64, ptr %37, align 8, !tbaa !9
  %659 = getelementptr inbounds %struct.complex, ptr %657, i64 %658
  %660 = getelementptr inbounds %struct.complex, ptr %659, i32 0, i32 0
  store float %656, ptr %660, align 4, !tbaa !11
  %661 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %662 = load float, ptr %661, align 4, !tbaa !14
  %663 = load ptr, ptr %26, align 8, !tbaa !5
  %664 = load i64, ptr %37, align 8, !tbaa !9
  %665 = getelementptr inbounds %struct.complex, ptr %663, i64 %664
  %666 = getelementptr inbounds %struct.complex, ptr %665, i32 0, i32 1
  store float %662, ptr %666, align 4, !tbaa !14
  br label %667

667:                                              ; preds = %586
  %668 = load i64, ptr %44, align 8, !tbaa !9
  %669 = add nsw i64 %668, 1
  store i64 %669, ptr %44, align 8, !tbaa !9
  br label %582, !llvm.loop !22

670:                                              ; preds = %582
  br label %671

671:                                              ; preds = %670, %522
  br label %672

672:                                              ; preds = %671
  %673 = load i64, ptr %46, align 8, !tbaa !9
  %674 = add nsw i64 %673, 1
  store i64 %674, ptr %46, align 8, !tbaa !9
  br label %506, !llvm.loop !23

675:                                              ; preds = %506
  br label %676

676:                                              ; preds = %675
  %677 = load i64, ptr %45, align 8, !tbaa !9
  %678 = add nsw i64 %677, 1
  store i64 %678, ptr %45, align 8, !tbaa !9
  br label %380, !llvm.loop !24

679:                                              ; preds = %380
  br label %1208

680:                                              ; preds = %374
  %681 = load i64, ptr %51, align 8, !tbaa !9
  %682 = icmp ne i64 %681, 0
  br i1 %682, label %683, label %940

683:                                              ; preds = %680
  %684 = load ptr, ptr %18, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  store i64 %685, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %686

686:                                              ; preds = %936, %683
  %687 = load i64, ptr %45, align 8, !tbaa !9
  %688 = load i64, ptr %34, align 8, !tbaa !9
  %689 = icmp sle i64 %687, %688
  br i1 %689, label %690, label %939

690:                                              ; preds = %686
  %691 = load ptr, ptr %17, align 8, !tbaa !5
  %692 = load i64, ptr %691, align 8, !tbaa !9
  store i64 %692, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %693

693:                                              ; preds = %932, %690
  %694 = load i64, ptr %44, align 8, !tbaa !9
  %695 = load i64, ptr %35, align 8, !tbaa !9
  %696 = icmp sle i64 %694, %695
  br i1 %696, label %697, label %935

697:                                              ; preds = %693
  %698 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float 0.000000e+00, ptr %698, align 4, !tbaa !11
  %699 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float 0.000000e+00, ptr %699, align 4, !tbaa !14
  %700 = load ptr, ptr %19, align 8, !tbaa !5
  %701 = load i64, ptr %700, align 8, !tbaa !9
  store i64 %701, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %702

702:                                              ; preds = %772, %697
  %703 = load i64, ptr %46, align 8, !tbaa !9
  %704 = load i64, ptr %36, align 8, !tbaa !9
  %705 = icmp sle i64 %703, %704
  br i1 %705, label %706, label %775

706:                                              ; preds = %702
  %707 = load ptr, ptr %21, align 8, !tbaa !5
  %708 = load i64, ptr %46, align 8, !tbaa !9
  %709 = load i64, ptr %44, align 8, !tbaa !9
  %710 = load i64, ptr %28, align 8, !tbaa !9
  %711 = mul nsw i64 %709, %710
  %712 = add nsw i64 %708, %711
  %713 = getelementptr inbounds %struct.complex, ptr %707, i64 %712
  call void @r_cnjg(ptr noundef %42, ptr noundef %713)
  %714 = load i64, ptr %46, align 8, !tbaa !9
  %715 = load i64, ptr %45, align 8, !tbaa !9
  %716 = load i64, ptr %30, align 8, !tbaa !9
  %717 = mul nsw i64 %715, %716
  %718 = add nsw i64 %714, %717
  store i64 %718, ptr %37, align 8, !tbaa !9
  %719 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %720 = load float, ptr %719, align 4, !tbaa !11
  %721 = load ptr, ptr %23, align 8, !tbaa !5
  %722 = load i64, ptr %37, align 8, !tbaa !9
  %723 = getelementptr inbounds %struct.complex, ptr %721, i64 %722
  %724 = getelementptr inbounds %struct.complex, ptr %723, i32 0, i32 0
  %725 = load float, ptr %724, align 4, !tbaa !11
  %726 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !14
  %728 = load ptr, ptr %23, align 8, !tbaa !5
  %729 = load i64, ptr %37, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.complex, ptr %728, i64 %729
  %731 = getelementptr inbounds %struct.complex, ptr %730, i32 0, i32 1
  %732 = load float, ptr %731, align 4, !tbaa !14
  %733 = fmul float %727, %732
  %734 = fneg float %733
  %735 = call float @llvm.fmuladd.f32(float %720, float %725, float %734)
  %736 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %735, ptr %736, align 4, !tbaa !11
  %737 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %738 = load float, ptr %737, align 4, !tbaa !11
  %739 = load ptr, ptr %23, align 8, !tbaa !5
  %740 = load i64, ptr %37, align 8, !tbaa !9
  %741 = getelementptr inbounds %struct.complex, ptr %739, i64 %740
  %742 = getelementptr inbounds %struct.complex, ptr %741, i32 0, i32 1
  %743 = load float, ptr %742, align 4, !tbaa !14
  %744 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %745 = load float, ptr %744, align 4, !tbaa !14
  %746 = load ptr, ptr %23, align 8, !tbaa !5
  %747 = load i64, ptr %37, align 8, !tbaa !9
  %748 = getelementptr inbounds %struct.complex, ptr %746, i64 %747
  %749 = getelementptr inbounds %struct.complex, ptr %748, i32 0, i32 0
  %750 = load float, ptr %749, align 4, !tbaa !11
  %751 = fmul float %745, %750
  %752 = call float @llvm.fmuladd.f32(float %738, float %743, float %751)
  %753 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %752, ptr %753, align 4, !tbaa !14
  %754 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %755 = load float, ptr %754, align 4, !tbaa !11
  %756 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %757 = load float, ptr %756, align 4, !tbaa !11
  %758 = fadd float %755, %757
  %759 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %758, ptr %759, align 4, !tbaa !11
  %760 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %761 = load float, ptr %760, align 4, !tbaa !14
  %762 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %763 = load float, ptr %762, align 4, !tbaa !14
  %764 = fadd float %761, %763
  %765 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %764, ptr %765, align 4, !tbaa !14
  %766 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %767 = load float, ptr %766, align 4, !tbaa !11
  %768 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %767, ptr %768, align 4, !tbaa !11
  %769 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %770 = load float, ptr %769, align 4, !tbaa !14
  %771 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %770, ptr %771, align 4, !tbaa !14
  br label %772

772:                                              ; preds = %706
  %773 = load i64, ptr %46, align 8, !tbaa !9
  %774 = add nsw i64 %773, 1
  store i64 %774, ptr %46, align 8, !tbaa !9
  br label %702, !llvm.loop !25

775:                                              ; preds = %702
  %776 = load ptr, ptr %25, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.complex, ptr %776, i32 0, i32 0
  %778 = load float, ptr %777, align 4, !tbaa !11
  %779 = fcmp oeq float %778, 0.000000e+00
  br i1 %779, label %780, label %830

780:                                              ; preds = %775
  %781 = load ptr, ptr %25, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.complex, ptr %781, i32 0, i32 1
  %783 = load float, ptr %782, align 4, !tbaa !14
  %784 = fcmp oeq float %783, 0.000000e+00
  br i1 %784, label %785, label %830

785:                                              ; preds = %780
  %786 = load i64, ptr %44, align 8, !tbaa !9
  %787 = load i64, ptr %45, align 8, !tbaa !9
  %788 = load i64, ptr %32, align 8, !tbaa !9
  %789 = mul nsw i64 %787, %788
  %790 = add nsw i64 %786, %789
  store i64 %790, ptr %36, align 8, !tbaa !9
  %791 = load ptr, ptr %20, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.complex, ptr %791, i32 0, i32 0
  %793 = load float, ptr %792, align 4, !tbaa !11
  %794 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %795 = load float, ptr %794, align 4, !tbaa !11
  %796 = load ptr, ptr %20, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.complex, ptr %796, i32 0, i32 1
  %798 = load float, ptr %797, align 4, !tbaa !14
  %799 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %800 = load float, ptr %799, align 4, !tbaa !14
  %801 = fmul float %798, %800
  %802 = fneg float %801
  %803 = call float @llvm.fmuladd.f32(float %793, float %795, float %802)
  %804 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %803, ptr %804, align 4, !tbaa !11
  %805 = load ptr, ptr %20, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.complex, ptr %805, i32 0, i32 0
  %807 = load float, ptr %806, align 4, !tbaa !11
  %808 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %809 = load float, ptr %808, align 4, !tbaa !14
  %810 = load ptr, ptr %20, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.complex, ptr %810, i32 0, i32 1
  %812 = load float, ptr %811, align 4, !tbaa !14
  %813 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %814 = load float, ptr %813, align 4, !tbaa !11
  %815 = fmul float %812, %814
  %816 = call float @llvm.fmuladd.f32(float %807, float %809, float %815)
  %817 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %816, ptr %817, align 4, !tbaa !14
  %818 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %819 = load float, ptr %818, align 4, !tbaa !11
  %820 = load ptr, ptr %26, align 8, !tbaa !5
  %821 = load i64, ptr %36, align 8, !tbaa !9
  %822 = getelementptr inbounds %struct.complex, ptr %820, i64 %821
  %823 = getelementptr inbounds %struct.complex, ptr %822, i32 0, i32 0
  store float %819, ptr %823, align 4, !tbaa !11
  %824 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %825 = load float, ptr %824, align 4, !tbaa !14
  %826 = load ptr, ptr %26, align 8, !tbaa !5
  %827 = load i64, ptr %36, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.complex, ptr %826, i64 %827
  %829 = getelementptr inbounds %struct.complex, ptr %828, i32 0, i32 1
  store float %825, ptr %829, align 4, !tbaa !14
  br label %931

830:                                              ; preds = %780, %775
  %831 = load i64, ptr %44, align 8, !tbaa !9
  %832 = load i64, ptr %45, align 8, !tbaa !9
  %833 = load i64, ptr %32, align 8, !tbaa !9
  %834 = mul nsw i64 %832, %833
  %835 = add nsw i64 %831, %834
  store i64 %835, ptr %36, align 8, !tbaa !9
  %836 = load ptr, ptr %20, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.complex, ptr %836, i32 0, i32 0
  %838 = load float, ptr %837, align 4, !tbaa !11
  %839 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %840 = load float, ptr %839, align 4, !tbaa !11
  %841 = load ptr, ptr %20, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.complex, ptr %841, i32 0, i32 1
  %843 = load float, ptr %842, align 4, !tbaa !14
  %844 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %845 = load float, ptr %844, align 4, !tbaa !14
  %846 = fmul float %843, %845
  %847 = fneg float %846
  %848 = call float @llvm.fmuladd.f32(float %838, float %840, float %847)
  %849 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %848, ptr %849, align 4, !tbaa !11
  %850 = load ptr, ptr %20, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.complex, ptr %850, i32 0, i32 0
  %852 = load float, ptr %851, align 4, !tbaa !11
  %853 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %854 = load float, ptr %853, align 4, !tbaa !14
  %855 = load ptr, ptr %20, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.complex, ptr %855, i32 0, i32 1
  %857 = load float, ptr %856, align 4, !tbaa !14
  %858 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %859 = load float, ptr %858, align 4, !tbaa !11
  %860 = fmul float %857, %859
  %861 = call float @llvm.fmuladd.f32(float %852, float %854, float %860)
  %862 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %861, ptr %862, align 4, !tbaa !14
  %863 = load i64, ptr %44, align 8, !tbaa !9
  %864 = load i64, ptr %45, align 8, !tbaa !9
  %865 = load i64, ptr %32, align 8, !tbaa !9
  %866 = mul nsw i64 %864, %865
  %867 = add nsw i64 %863, %866
  store i64 %867, ptr %37, align 8, !tbaa !9
  %868 = load ptr, ptr %25, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.complex, ptr %868, i32 0, i32 0
  %870 = load float, ptr %869, align 4, !tbaa !11
  %871 = load ptr, ptr %26, align 8, !tbaa !5
  %872 = load i64, ptr %37, align 8, !tbaa !9
  %873 = getelementptr inbounds %struct.complex, ptr %871, i64 %872
  %874 = getelementptr inbounds %struct.complex, ptr %873, i32 0, i32 0
  %875 = load float, ptr %874, align 4, !tbaa !11
  %876 = load ptr, ptr %25, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.complex, ptr %876, i32 0, i32 1
  %878 = load float, ptr %877, align 4, !tbaa !14
  %879 = load ptr, ptr %26, align 8, !tbaa !5
  %880 = load i64, ptr %37, align 8, !tbaa !9
  %881 = getelementptr inbounds %struct.complex, ptr %879, i64 %880
  %882 = getelementptr inbounds %struct.complex, ptr %881, i32 0, i32 1
  %883 = load float, ptr %882, align 4, !tbaa !14
  %884 = fmul float %878, %883
  %885 = fneg float %884
  %886 = call float @llvm.fmuladd.f32(float %870, float %875, float %885)
  %887 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %886, ptr %887, align 4, !tbaa !11
  %888 = load ptr, ptr %25, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.complex, ptr %888, i32 0, i32 0
  %890 = load float, ptr %889, align 4, !tbaa !11
  %891 = load ptr, ptr %26, align 8, !tbaa !5
  %892 = load i64, ptr %37, align 8, !tbaa !9
  %893 = getelementptr inbounds %struct.complex, ptr %891, i64 %892
  %894 = getelementptr inbounds %struct.complex, ptr %893, i32 0, i32 1
  %895 = load float, ptr %894, align 4, !tbaa !14
  %896 = load ptr, ptr %25, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.complex, ptr %896, i32 0, i32 1
  %898 = load float, ptr %897, align 4, !tbaa !14
  %899 = load ptr, ptr %26, align 8, !tbaa !5
  %900 = load i64, ptr %37, align 8, !tbaa !9
  %901 = getelementptr inbounds %struct.complex, ptr %899, i64 %900
  %902 = getelementptr inbounds %struct.complex, ptr %901, i32 0, i32 0
  %903 = load float, ptr %902, align 4, !tbaa !11
  %904 = fmul float %898, %903
  %905 = call float @llvm.fmuladd.f32(float %890, float %895, float %904)
  %906 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %905, ptr %906, align 4, !tbaa !14
  %907 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %908 = load float, ptr %907, align 4, !tbaa !11
  %909 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %910 = load float, ptr %909, align 4, !tbaa !11
  %911 = fadd float %908, %910
  %912 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %911, ptr %912, align 4, !tbaa !11
  %913 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %914 = load float, ptr %913, align 4, !tbaa !14
  %915 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %916 = load float, ptr %915, align 4, !tbaa !14
  %917 = fadd float %914, %916
  %918 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %917, ptr %918, align 4, !tbaa !14
  %919 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %920 = load float, ptr %919, align 4, !tbaa !11
  %921 = load ptr, ptr %26, align 8, !tbaa !5
  %922 = load i64, ptr %36, align 8, !tbaa !9
  %923 = getelementptr inbounds %struct.complex, ptr %921, i64 %922
  %924 = getelementptr inbounds %struct.complex, ptr %923, i32 0, i32 0
  store float %920, ptr %924, align 4, !tbaa !11
  %925 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %926 = load float, ptr %925, align 4, !tbaa !14
  %927 = load ptr, ptr %26, align 8, !tbaa !5
  %928 = load i64, ptr %36, align 8, !tbaa !9
  %929 = getelementptr inbounds %struct.complex, ptr %927, i64 %928
  %930 = getelementptr inbounds %struct.complex, ptr %929, i32 0, i32 1
  store float %926, ptr %930, align 4, !tbaa !14
  br label %931

931:                                              ; preds = %830, %785
  br label %932

932:                                              ; preds = %931
  %933 = load i64, ptr %44, align 8, !tbaa !9
  %934 = add nsw i64 %933, 1
  store i64 %934, ptr %44, align 8, !tbaa !9
  br label %693, !llvm.loop !26

935:                                              ; preds = %693
  br label %936

936:                                              ; preds = %935
  %937 = load i64, ptr %45, align 8, !tbaa !9
  %938 = add nsw i64 %937, 1
  store i64 %938, ptr %45, align 8, !tbaa !9
  br label %686, !llvm.loop !27

939:                                              ; preds = %686
  br label %1207

940:                                              ; preds = %680
  %941 = load ptr, ptr %18, align 8, !tbaa !5
  %942 = load i64, ptr %941, align 8, !tbaa !9
  store i64 %942, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %943

943:                                              ; preds = %1203, %940
  %944 = load i64, ptr %45, align 8, !tbaa !9
  %945 = load i64, ptr %34, align 8, !tbaa !9
  %946 = icmp sle i64 %944, %945
  br i1 %946, label %947, label %1206

947:                                              ; preds = %943
  %948 = load ptr, ptr %17, align 8, !tbaa !5
  %949 = load i64, ptr %948, align 8, !tbaa !9
  store i64 %949, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %950

950:                                              ; preds = %1199, %947
  %951 = load i64, ptr %44, align 8, !tbaa !9
  %952 = load i64, ptr %35, align 8, !tbaa !9
  %953 = icmp sle i64 %951, %952
  br i1 %953, label %954, label %1202

954:                                              ; preds = %950
  %955 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float 0.000000e+00, ptr %955, align 4, !tbaa !11
  %956 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float 0.000000e+00, ptr %956, align 4, !tbaa !14
  %957 = load ptr, ptr %19, align 8, !tbaa !5
  %958 = load i64, ptr %957, align 8, !tbaa !9
  store i64 %958, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %959

959:                                              ; preds = %1039, %954
  %960 = load i64, ptr %46, align 8, !tbaa !9
  %961 = load i64, ptr %36, align 8, !tbaa !9
  %962 = icmp sle i64 %960, %961
  br i1 %962, label %963, label %1042

963:                                              ; preds = %959
  %964 = load i64, ptr %46, align 8, !tbaa !9
  %965 = load i64, ptr %44, align 8, !tbaa !9
  %966 = load i64, ptr %28, align 8, !tbaa !9
  %967 = mul nsw i64 %965, %966
  %968 = add nsw i64 %964, %967
  store i64 %968, ptr %37, align 8, !tbaa !9
  %969 = load i64, ptr %46, align 8, !tbaa !9
  %970 = load i64, ptr %45, align 8, !tbaa !9
  %971 = load i64, ptr %30, align 8, !tbaa !9
  %972 = mul nsw i64 %970, %971
  %973 = add nsw i64 %969, %972
  store i64 %973, ptr %38, align 8, !tbaa !9
  %974 = load ptr, ptr %21, align 8, !tbaa !5
  %975 = load i64, ptr %37, align 8, !tbaa !9
  %976 = getelementptr inbounds %struct.complex, ptr %974, i64 %975
  %977 = getelementptr inbounds %struct.complex, ptr %976, i32 0, i32 0
  %978 = load float, ptr %977, align 4, !tbaa !11
  %979 = load ptr, ptr %23, align 8, !tbaa !5
  %980 = load i64, ptr %38, align 8, !tbaa !9
  %981 = getelementptr inbounds %struct.complex, ptr %979, i64 %980
  %982 = getelementptr inbounds %struct.complex, ptr %981, i32 0, i32 0
  %983 = load float, ptr %982, align 4, !tbaa !11
  %984 = load ptr, ptr %21, align 8, !tbaa !5
  %985 = load i64, ptr %37, align 8, !tbaa !9
  %986 = getelementptr inbounds %struct.complex, ptr %984, i64 %985
  %987 = getelementptr inbounds %struct.complex, ptr %986, i32 0, i32 1
  %988 = load float, ptr %987, align 4, !tbaa !14
  %989 = load ptr, ptr %23, align 8, !tbaa !5
  %990 = load i64, ptr %38, align 8, !tbaa !9
  %991 = getelementptr inbounds %struct.complex, ptr %989, i64 %990
  %992 = getelementptr inbounds %struct.complex, ptr %991, i32 0, i32 1
  %993 = load float, ptr %992, align 4, !tbaa !14
  %994 = fmul float %988, %993
  %995 = fneg float %994
  %996 = call float @llvm.fmuladd.f32(float %978, float %983, float %995)
  %997 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %996, ptr %997, align 4, !tbaa !11
  %998 = load ptr, ptr %21, align 8, !tbaa !5
  %999 = load i64, ptr %37, align 8, !tbaa !9
  %1000 = getelementptr inbounds %struct.complex, ptr %998, i64 %999
  %1001 = getelementptr inbounds %struct.complex, ptr %1000, i32 0, i32 0
  %1002 = load float, ptr %1001, align 4, !tbaa !11
  %1003 = load ptr, ptr %23, align 8, !tbaa !5
  %1004 = load i64, ptr %38, align 8, !tbaa !9
  %1005 = getelementptr inbounds %struct.complex, ptr %1003, i64 %1004
  %1006 = getelementptr inbounds %struct.complex, ptr %1005, i32 0, i32 1
  %1007 = load float, ptr %1006, align 4, !tbaa !14
  %1008 = load ptr, ptr %21, align 8, !tbaa !5
  %1009 = load i64, ptr %37, align 8, !tbaa !9
  %1010 = getelementptr inbounds %struct.complex, ptr %1008, i64 %1009
  %1011 = getelementptr inbounds %struct.complex, ptr %1010, i32 0, i32 1
  %1012 = load float, ptr %1011, align 4, !tbaa !14
  %1013 = load ptr, ptr %23, align 8, !tbaa !5
  %1014 = load i64, ptr %38, align 8, !tbaa !9
  %1015 = getelementptr inbounds %struct.complex, ptr %1013, i64 %1014
  %1016 = getelementptr inbounds %struct.complex, ptr %1015, i32 0, i32 0
  %1017 = load float, ptr %1016, align 4, !tbaa !11
  %1018 = fmul float %1012, %1017
  %1019 = call float @llvm.fmuladd.f32(float %1002, float %1007, float %1018)
  %1020 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1019, ptr %1020, align 4, !tbaa !14
  %1021 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1022 = load float, ptr %1021, align 4, !tbaa !11
  %1023 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1024 = load float, ptr %1023, align 4, !tbaa !11
  %1025 = fadd float %1022, %1024
  %1026 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1025, ptr %1026, align 4, !tbaa !11
  %1027 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1028 = load float, ptr %1027, align 4, !tbaa !14
  %1029 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1030 = load float, ptr %1029, align 4, !tbaa !14
  %1031 = fadd float %1028, %1030
  %1032 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1031, ptr %1032, align 4, !tbaa !14
  %1033 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1034 = load float, ptr %1033, align 4, !tbaa !11
  %1035 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %1034, ptr %1035, align 4, !tbaa !11
  %1036 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1037 = load float, ptr %1036, align 4, !tbaa !14
  %1038 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %1037, ptr %1038, align 4, !tbaa !14
  br label %1039

1039:                                             ; preds = %963
  %1040 = load i64, ptr %46, align 8, !tbaa !9
  %1041 = add nsw i64 %1040, 1
  store i64 %1041, ptr %46, align 8, !tbaa !9
  br label %959, !llvm.loop !28

1042:                                             ; preds = %959
  %1043 = load ptr, ptr %25, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.complex, ptr %1043, i32 0, i32 0
  %1045 = load float, ptr %1044, align 4, !tbaa !11
  %1046 = fcmp oeq float %1045, 0.000000e+00
  br i1 %1046, label %1047, label %1097

1047:                                             ; preds = %1042
  %1048 = load ptr, ptr %25, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.complex, ptr %1048, i32 0, i32 1
  %1050 = load float, ptr %1049, align 4, !tbaa !14
  %1051 = fcmp oeq float %1050, 0.000000e+00
  br i1 %1051, label %1052, label %1097

1052:                                             ; preds = %1047
  %1053 = load i64, ptr %44, align 8, !tbaa !9
  %1054 = load i64, ptr %45, align 8, !tbaa !9
  %1055 = load i64, ptr %32, align 8, !tbaa !9
  %1056 = mul nsw i64 %1054, %1055
  %1057 = add nsw i64 %1053, %1056
  store i64 %1057, ptr %36, align 8, !tbaa !9
  %1058 = load ptr, ptr %20, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.complex, ptr %1058, i32 0, i32 0
  %1060 = load float, ptr %1059, align 4, !tbaa !11
  %1061 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1062 = load float, ptr %1061, align 4, !tbaa !11
  %1063 = load ptr, ptr %20, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.complex, ptr %1063, i32 0, i32 1
  %1065 = load float, ptr %1064, align 4, !tbaa !14
  %1066 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1067 = load float, ptr %1066, align 4, !tbaa !14
  %1068 = fmul float %1065, %1067
  %1069 = fneg float %1068
  %1070 = call float @llvm.fmuladd.f32(float %1060, float %1062, float %1069)
  %1071 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1070, ptr %1071, align 4, !tbaa !11
  %1072 = load ptr, ptr %20, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.complex, ptr %1072, i32 0, i32 0
  %1074 = load float, ptr %1073, align 4, !tbaa !11
  %1075 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1076 = load float, ptr %1075, align 4, !tbaa !14
  %1077 = load ptr, ptr %20, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.complex, ptr %1077, i32 0, i32 1
  %1079 = load float, ptr %1078, align 4, !tbaa !14
  %1080 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1081 = load float, ptr %1080, align 4, !tbaa !11
  %1082 = fmul float %1079, %1081
  %1083 = call float @llvm.fmuladd.f32(float %1074, float %1076, float %1082)
  %1084 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1083, ptr %1084, align 4, !tbaa !14
  %1085 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1086 = load float, ptr %1085, align 4, !tbaa !11
  %1087 = load ptr, ptr %26, align 8, !tbaa !5
  %1088 = load i64, ptr %36, align 8, !tbaa !9
  %1089 = getelementptr inbounds %struct.complex, ptr %1087, i64 %1088
  %1090 = getelementptr inbounds %struct.complex, ptr %1089, i32 0, i32 0
  store float %1086, ptr %1090, align 4, !tbaa !11
  %1091 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1092 = load float, ptr %1091, align 4, !tbaa !14
  %1093 = load ptr, ptr %26, align 8, !tbaa !5
  %1094 = load i64, ptr %36, align 8, !tbaa !9
  %1095 = getelementptr inbounds %struct.complex, ptr %1093, i64 %1094
  %1096 = getelementptr inbounds %struct.complex, ptr %1095, i32 0, i32 1
  store float %1092, ptr %1096, align 4, !tbaa !14
  br label %1198

1097:                                             ; preds = %1047, %1042
  %1098 = load i64, ptr %44, align 8, !tbaa !9
  %1099 = load i64, ptr %45, align 8, !tbaa !9
  %1100 = load i64, ptr %32, align 8, !tbaa !9
  %1101 = mul nsw i64 %1099, %1100
  %1102 = add nsw i64 %1098, %1101
  store i64 %1102, ptr %36, align 8, !tbaa !9
  %1103 = load ptr, ptr %20, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.complex, ptr %1103, i32 0, i32 0
  %1105 = load float, ptr %1104, align 4, !tbaa !11
  %1106 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1107 = load float, ptr %1106, align 4, !tbaa !11
  %1108 = load ptr, ptr %20, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.complex, ptr %1108, i32 0, i32 1
  %1110 = load float, ptr %1109, align 4, !tbaa !14
  %1111 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1112 = load float, ptr %1111, align 4, !tbaa !14
  %1113 = fmul float %1110, %1112
  %1114 = fneg float %1113
  %1115 = call float @llvm.fmuladd.f32(float %1105, float %1107, float %1114)
  %1116 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1115, ptr %1116, align 4, !tbaa !11
  %1117 = load ptr, ptr %20, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.complex, ptr %1117, i32 0, i32 0
  %1119 = load float, ptr %1118, align 4, !tbaa !11
  %1120 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1121 = load float, ptr %1120, align 4, !tbaa !14
  %1122 = load ptr, ptr %20, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.complex, ptr %1122, i32 0, i32 1
  %1124 = load float, ptr %1123, align 4, !tbaa !14
  %1125 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1126 = load float, ptr %1125, align 4, !tbaa !11
  %1127 = fmul float %1124, %1126
  %1128 = call float @llvm.fmuladd.f32(float %1119, float %1121, float %1127)
  %1129 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1128, ptr %1129, align 4, !tbaa !14
  %1130 = load i64, ptr %44, align 8, !tbaa !9
  %1131 = load i64, ptr %45, align 8, !tbaa !9
  %1132 = load i64, ptr %32, align 8, !tbaa !9
  %1133 = mul nsw i64 %1131, %1132
  %1134 = add nsw i64 %1130, %1133
  store i64 %1134, ptr %37, align 8, !tbaa !9
  %1135 = load ptr, ptr %25, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.complex, ptr %1135, i32 0, i32 0
  %1137 = load float, ptr %1136, align 4, !tbaa !11
  %1138 = load ptr, ptr %26, align 8, !tbaa !5
  %1139 = load i64, ptr %37, align 8, !tbaa !9
  %1140 = getelementptr inbounds %struct.complex, ptr %1138, i64 %1139
  %1141 = getelementptr inbounds %struct.complex, ptr %1140, i32 0, i32 0
  %1142 = load float, ptr %1141, align 4, !tbaa !11
  %1143 = load ptr, ptr %25, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.complex, ptr %1143, i32 0, i32 1
  %1145 = load float, ptr %1144, align 4, !tbaa !14
  %1146 = load ptr, ptr %26, align 8, !tbaa !5
  %1147 = load i64, ptr %37, align 8, !tbaa !9
  %1148 = getelementptr inbounds %struct.complex, ptr %1146, i64 %1147
  %1149 = getelementptr inbounds %struct.complex, ptr %1148, i32 0, i32 1
  %1150 = load float, ptr %1149, align 4, !tbaa !14
  %1151 = fmul float %1145, %1150
  %1152 = fneg float %1151
  %1153 = call float @llvm.fmuladd.f32(float %1137, float %1142, float %1152)
  %1154 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1153, ptr %1154, align 4, !tbaa !11
  %1155 = load ptr, ptr %25, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.complex, ptr %1155, i32 0, i32 0
  %1157 = load float, ptr %1156, align 4, !tbaa !11
  %1158 = load ptr, ptr %26, align 8, !tbaa !5
  %1159 = load i64, ptr %37, align 8, !tbaa !9
  %1160 = getelementptr inbounds %struct.complex, ptr %1158, i64 %1159
  %1161 = getelementptr inbounds %struct.complex, ptr %1160, i32 0, i32 1
  %1162 = load float, ptr %1161, align 4, !tbaa !14
  %1163 = load ptr, ptr %25, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.complex, ptr %1163, i32 0, i32 1
  %1165 = load float, ptr %1164, align 4, !tbaa !14
  %1166 = load ptr, ptr %26, align 8, !tbaa !5
  %1167 = load i64, ptr %37, align 8, !tbaa !9
  %1168 = getelementptr inbounds %struct.complex, ptr %1166, i64 %1167
  %1169 = getelementptr inbounds %struct.complex, ptr %1168, i32 0, i32 0
  %1170 = load float, ptr %1169, align 4, !tbaa !11
  %1171 = fmul float %1165, %1170
  %1172 = call float @llvm.fmuladd.f32(float %1157, float %1162, float %1171)
  %1173 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1172, ptr %1173, align 4, !tbaa !14
  %1174 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1175 = load float, ptr %1174, align 4, !tbaa !11
  %1176 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1177 = load float, ptr %1176, align 4, !tbaa !11
  %1178 = fadd float %1175, %1177
  %1179 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1178, ptr %1179, align 4, !tbaa !11
  %1180 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1181 = load float, ptr %1180, align 4, !tbaa !14
  %1182 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1183 = load float, ptr %1182, align 4, !tbaa !14
  %1184 = fadd float %1181, %1183
  %1185 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1184, ptr %1185, align 4, !tbaa !14
  %1186 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1187 = load float, ptr %1186, align 4, !tbaa !11
  %1188 = load ptr, ptr %26, align 8, !tbaa !5
  %1189 = load i64, ptr %36, align 8, !tbaa !9
  %1190 = getelementptr inbounds %struct.complex, ptr %1188, i64 %1189
  %1191 = getelementptr inbounds %struct.complex, ptr %1190, i32 0, i32 0
  store float %1187, ptr %1191, align 4, !tbaa !11
  %1192 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1193 = load float, ptr %1192, align 4, !tbaa !14
  %1194 = load ptr, ptr %26, align 8, !tbaa !5
  %1195 = load i64, ptr %36, align 8, !tbaa !9
  %1196 = getelementptr inbounds %struct.complex, ptr %1194, i64 %1195
  %1197 = getelementptr inbounds %struct.complex, ptr %1196, i32 0, i32 1
  store float %1193, ptr %1197, align 4, !tbaa !14
  br label %1198

1198:                                             ; preds = %1097, %1052
  br label %1199

1199:                                             ; preds = %1198
  %1200 = load i64, ptr %44, align 8, !tbaa !9
  %1201 = add nsw i64 %1200, 1
  store i64 %1201, ptr %44, align 8, !tbaa !9
  br label %950, !llvm.loop !29

1202:                                             ; preds = %950
  br label %1203

1203:                                             ; preds = %1202
  %1204 = load i64, ptr %45, align 8, !tbaa !9
  %1205 = add nsw i64 %1204, 1
  store i64 %1205, ptr %45, align 8, !tbaa !9
  br label %943, !llvm.loop !30

1206:                                             ; preds = %943
  br label %1207

1207:                                             ; preds = %1206, %939
  br label %1208

1208:                                             ; preds = %1207, %679
  br label %2853

1209:                                             ; preds = %371
  %1210 = load i64, ptr %48, align 8, !tbaa !9
  %1211 = icmp ne i64 %1210, 0
  br i1 %1211, label %1212, label %1812

1212:                                             ; preds = %1209
  %1213 = load i64, ptr %52, align 8, !tbaa !9
  %1214 = icmp ne i64 %1213, 0
  br i1 %1214, label %1215, label %1508

1215:                                             ; preds = %1212
  %1216 = load ptr, ptr %18, align 8, !tbaa !5
  %1217 = load i64, ptr %1216, align 8, !tbaa !9
  store i64 %1217, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1218

1218:                                             ; preds = %1504, %1215
  %1219 = load i64, ptr %45, align 8, !tbaa !9
  %1220 = load i64, ptr %34, align 8, !tbaa !9
  %1221 = icmp sle i64 %1219, %1220
  br i1 %1221, label %1222, label %1507

1222:                                             ; preds = %1218
  %1223 = load ptr, ptr %25, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.complex, ptr %1223, i32 0, i32 0
  %1225 = load float, ptr %1224, align 4, !tbaa !11
  %1226 = fcmp oeq float %1225, 0.000000e+00
  br i1 %1226, label %1227, label %1257

1227:                                             ; preds = %1222
  %1228 = load ptr, ptr %25, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.complex, ptr %1228, i32 0, i32 1
  %1230 = load float, ptr %1229, align 4, !tbaa !14
  %1231 = fcmp oeq float %1230, 0.000000e+00
  br i1 %1231, label %1232, label %1257

1232:                                             ; preds = %1227
  %1233 = load ptr, ptr %17, align 8, !tbaa !5
  %1234 = load i64, ptr %1233, align 8, !tbaa !9
  store i64 %1234, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1235

1235:                                             ; preds = %1253, %1232
  %1236 = load i64, ptr %44, align 8, !tbaa !9
  %1237 = load i64, ptr %35, align 8, !tbaa !9
  %1238 = icmp sle i64 %1236, %1237
  br i1 %1238, label %1239, label %1256

1239:                                             ; preds = %1235
  %1240 = load i64, ptr %44, align 8, !tbaa !9
  %1241 = load i64, ptr %45, align 8, !tbaa !9
  %1242 = load i64, ptr %32, align 8, !tbaa !9
  %1243 = mul nsw i64 %1241, %1242
  %1244 = add nsw i64 %1240, %1243
  store i64 %1244, ptr %36, align 8, !tbaa !9
  %1245 = load ptr, ptr %26, align 8, !tbaa !5
  %1246 = load i64, ptr %36, align 8, !tbaa !9
  %1247 = getelementptr inbounds %struct.complex, ptr %1245, i64 %1246
  %1248 = getelementptr inbounds %struct.complex, ptr %1247, i32 0, i32 0
  store float 0.000000e+00, ptr %1248, align 4, !tbaa !11
  %1249 = load ptr, ptr %26, align 8, !tbaa !5
  %1250 = load i64, ptr %36, align 8, !tbaa !9
  %1251 = getelementptr inbounds %struct.complex, ptr %1249, i64 %1250
  %1252 = getelementptr inbounds %struct.complex, ptr %1251, i32 0, i32 1
  store float 0.000000e+00, ptr %1252, align 4, !tbaa !14
  br label %1253

1253:                                             ; preds = %1239
  %1254 = load i64, ptr %44, align 8, !tbaa !9
  %1255 = add nsw i64 %1254, 1
  store i64 %1255, ptr %44, align 8, !tbaa !9
  br label %1235, !llvm.loop !31

1256:                                             ; preds = %1235
  br label %1341

1257:                                             ; preds = %1227, %1222
  %1258 = load ptr, ptr %25, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.complex, ptr %1258, i32 0, i32 0
  %1260 = load float, ptr %1259, align 4, !tbaa !11
  %1261 = fcmp une float %1260, 1.000000e+00
  br i1 %1261, label %1267, label %1262

1262:                                             ; preds = %1257
  %1263 = load ptr, ptr %25, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.complex, ptr %1263, i32 0, i32 1
  %1265 = load float, ptr %1264, align 4, !tbaa !14
  %1266 = fcmp une float %1265, 0.000000e+00
  br i1 %1266, label %1267, label %1340

1267:                                             ; preds = %1262, %1257
  %1268 = load ptr, ptr %17, align 8, !tbaa !5
  %1269 = load i64, ptr %1268, align 8, !tbaa !9
  store i64 %1269, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1270

1270:                                             ; preds = %1336, %1267
  %1271 = load i64, ptr %44, align 8, !tbaa !9
  %1272 = load i64, ptr %35, align 8, !tbaa !9
  %1273 = icmp sle i64 %1271, %1272
  br i1 %1273, label %1274, label %1339

1274:                                             ; preds = %1270
  %1275 = load i64, ptr %44, align 8, !tbaa !9
  %1276 = load i64, ptr %45, align 8, !tbaa !9
  %1277 = load i64, ptr %32, align 8, !tbaa !9
  %1278 = mul nsw i64 %1276, %1277
  %1279 = add nsw i64 %1275, %1278
  store i64 %1279, ptr %36, align 8, !tbaa !9
  %1280 = load i64, ptr %44, align 8, !tbaa !9
  %1281 = load i64, ptr %45, align 8, !tbaa !9
  %1282 = load i64, ptr %32, align 8, !tbaa !9
  %1283 = mul nsw i64 %1281, %1282
  %1284 = add nsw i64 %1280, %1283
  store i64 %1284, ptr %37, align 8, !tbaa !9
  %1285 = load ptr, ptr %25, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.complex, ptr %1285, i32 0, i32 0
  %1287 = load float, ptr %1286, align 4, !tbaa !11
  %1288 = load ptr, ptr %26, align 8, !tbaa !5
  %1289 = load i64, ptr %37, align 8, !tbaa !9
  %1290 = getelementptr inbounds %struct.complex, ptr %1288, i64 %1289
  %1291 = getelementptr inbounds %struct.complex, ptr %1290, i32 0, i32 0
  %1292 = load float, ptr %1291, align 4, !tbaa !11
  %1293 = load ptr, ptr %25, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.complex, ptr %1293, i32 0, i32 1
  %1295 = load float, ptr %1294, align 4, !tbaa !14
  %1296 = load ptr, ptr %26, align 8, !tbaa !5
  %1297 = load i64, ptr %37, align 8, !tbaa !9
  %1298 = getelementptr inbounds %struct.complex, ptr %1296, i64 %1297
  %1299 = getelementptr inbounds %struct.complex, ptr %1298, i32 0, i32 1
  %1300 = load float, ptr %1299, align 4, !tbaa !14
  %1301 = fmul float %1295, %1300
  %1302 = fneg float %1301
  %1303 = call float @llvm.fmuladd.f32(float %1287, float %1292, float %1302)
  %1304 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1303, ptr %1304, align 4, !tbaa !11
  %1305 = load ptr, ptr %25, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.complex, ptr %1305, i32 0, i32 0
  %1307 = load float, ptr %1306, align 4, !tbaa !11
  %1308 = load ptr, ptr %26, align 8, !tbaa !5
  %1309 = load i64, ptr %37, align 8, !tbaa !9
  %1310 = getelementptr inbounds %struct.complex, ptr %1308, i64 %1309
  %1311 = getelementptr inbounds %struct.complex, ptr %1310, i32 0, i32 1
  %1312 = load float, ptr %1311, align 4, !tbaa !14
  %1313 = load ptr, ptr %25, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.complex, ptr %1313, i32 0, i32 1
  %1315 = load float, ptr %1314, align 4, !tbaa !14
  %1316 = load ptr, ptr %26, align 8, !tbaa !5
  %1317 = load i64, ptr %37, align 8, !tbaa !9
  %1318 = getelementptr inbounds %struct.complex, ptr %1316, i64 %1317
  %1319 = getelementptr inbounds %struct.complex, ptr %1318, i32 0, i32 0
  %1320 = load float, ptr %1319, align 4, !tbaa !11
  %1321 = fmul float %1315, %1320
  %1322 = call float @llvm.fmuladd.f32(float %1307, float %1312, float %1321)
  %1323 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1322, ptr %1323, align 4, !tbaa !14
  %1324 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1325 = load float, ptr %1324, align 4, !tbaa !11
  %1326 = load ptr, ptr %26, align 8, !tbaa !5
  %1327 = load i64, ptr %36, align 8, !tbaa !9
  %1328 = getelementptr inbounds %struct.complex, ptr %1326, i64 %1327
  %1329 = getelementptr inbounds %struct.complex, ptr %1328, i32 0, i32 0
  store float %1325, ptr %1329, align 4, !tbaa !11
  %1330 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1331 = load float, ptr %1330, align 4, !tbaa !14
  %1332 = load ptr, ptr %26, align 8, !tbaa !5
  %1333 = load i64, ptr %36, align 8, !tbaa !9
  %1334 = getelementptr inbounds %struct.complex, ptr %1332, i64 %1333
  %1335 = getelementptr inbounds %struct.complex, ptr %1334, i32 0, i32 1
  store float %1331, ptr %1335, align 4, !tbaa !14
  br label %1336

1336:                                             ; preds = %1274
  %1337 = load i64, ptr %44, align 8, !tbaa !9
  %1338 = add nsw i64 %1337, 1
  store i64 %1338, ptr %44, align 8, !tbaa !9
  br label %1270, !llvm.loop !32

1339:                                             ; preds = %1270
  br label %1340

1340:                                             ; preds = %1339, %1262
  br label %1341

1341:                                             ; preds = %1340, %1256
  %1342 = load ptr, ptr %19, align 8, !tbaa !5
  %1343 = load i64, ptr %1342, align 8, !tbaa !9
  store i64 %1343, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %1344

1344:                                             ; preds = %1500, %1341
  %1345 = load i64, ptr %46, align 8, !tbaa !9
  %1346 = load i64, ptr %35, align 8, !tbaa !9
  %1347 = icmp sle i64 %1345, %1346
  br i1 %1347, label %1348, label %1503

1348:                                             ; preds = %1344
  %1349 = load i64, ptr %45, align 8, !tbaa !9
  %1350 = load i64, ptr %46, align 8, !tbaa !9
  %1351 = load i64, ptr %30, align 8, !tbaa !9
  %1352 = mul nsw i64 %1350, %1351
  %1353 = add nsw i64 %1349, %1352
  store i64 %1353, ptr %36, align 8, !tbaa !9
  %1354 = load ptr, ptr %23, align 8, !tbaa !5
  %1355 = load i64, ptr %36, align 8, !tbaa !9
  %1356 = getelementptr inbounds %struct.complex, ptr %1354, i64 %1355
  %1357 = getelementptr inbounds %struct.complex, ptr %1356, i32 0, i32 0
  %1358 = load float, ptr %1357, align 4, !tbaa !11
  %1359 = fcmp une float %1358, 0.000000e+00
  br i1 %1359, label %1367, label %1360

1360:                                             ; preds = %1348
  %1361 = load ptr, ptr %23, align 8, !tbaa !5
  %1362 = load i64, ptr %36, align 8, !tbaa !9
  %1363 = getelementptr inbounds %struct.complex, ptr %1361, i64 %1362
  %1364 = getelementptr inbounds %struct.complex, ptr %1363, i32 0, i32 1
  %1365 = load float, ptr %1364, align 4, !tbaa !14
  %1366 = fcmp une float %1365, 0.000000e+00
  br i1 %1366, label %1367, label %1499

1367:                                             ; preds = %1360, %1348
  %1368 = load ptr, ptr %23, align 8, !tbaa !5
  %1369 = load i64, ptr %45, align 8, !tbaa !9
  %1370 = load i64, ptr %46, align 8, !tbaa !9
  %1371 = load i64, ptr %30, align 8, !tbaa !9
  %1372 = mul nsw i64 %1370, %1371
  %1373 = add nsw i64 %1369, %1372
  %1374 = getelementptr inbounds %struct.complex, ptr %1368, i64 %1373
  call void @r_cnjg(ptr noundef %41, ptr noundef %1374)
  %1375 = load ptr, ptr %20, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.complex, ptr %1375, i32 0, i32 0
  %1377 = load float, ptr %1376, align 4, !tbaa !11
  %1378 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1379 = load float, ptr %1378, align 4, !tbaa !11
  %1380 = load ptr, ptr %20, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.complex, ptr %1380, i32 0, i32 1
  %1382 = load float, ptr %1381, align 4, !tbaa !14
  %1383 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1384 = load float, ptr %1383, align 4, !tbaa !14
  %1385 = fmul float %1382, %1384
  %1386 = fneg float %1385
  %1387 = call float @llvm.fmuladd.f32(float %1377, float %1379, float %1386)
  %1388 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1387, ptr %1388, align 4, !tbaa !11
  %1389 = load ptr, ptr %20, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.complex, ptr %1389, i32 0, i32 0
  %1391 = load float, ptr %1390, align 4, !tbaa !11
  %1392 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1393 = load float, ptr %1392, align 4, !tbaa !14
  %1394 = load ptr, ptr %20, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.complex, ptr %1394, i32 0, i32 1
  %1396 = load float, ptr %1395, align 4, !tbaa !14
  %1397 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1398 = load float, ptr %1397, align 4, !tbaa !11
  %1399 = fmul float %1396, %1398
  %1400 = call float @llvm.fmuladd.f32(float %1391, float %1393, float %1399)
  %1401 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1400, ptr %1401, align 4, !tbaa !14
  %1402 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1403 = load float, ptr %1402, align 4, !tbaa !11
  %1404 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %1403, ptr %1404, align 4, !tbaa !11
  %1405 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1406 = load float, ptr %1405, align 4, !tbaa !14
  %1407 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %1406, ptr %1407, align 4, !tbaa !14
  %1408 = load ptr, ptr %17, align 8, !tbaa !5
  %1409 = load i64, ptr %1408, align 8, !tbaa !9
  store i64 %1409, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1410

1410:                                             ; preds = %1495, %1367
  %1411 = load i64, ptr %44, align 8, !tbaa !9
  %1412 = load i64, ptr %36, align 8, !tbaa !9
  %1413 = icmp sle i64 %1411, %1412
  br i1 %1413, label %1414, label %1498

1414:                                             ; preds = %1410
  %1415 = load i64, ptr %44, align 8, !tbaa !9
  %1416 = load i64, ptr %45, align 8, !tbaa !9
  %1417 = load i64, ptr %32, align 8, !tbaa !9
  %1418 = mul nsw i64 %1416, %1417
  %1419 = add nsw i64 %1415, %1418
  store i64 %1419, ptr %37, align 8, !tbaa !9
  %1420 = load i64, ptr %44, align 8, !tbaa !9
  %1421 = load i64, ptr %45, align 8, !tbaa !9
  %1422 = load i64, ptr %32, align 8, !tbaa !9
  %1423 = mul nsw i64 %1421, %1422
  %1424 = add nsw i64 %1420, %1423
  store i64 %1424, ptr %38, align 8, !tbaa !9
  %1425 = load i64, ptr %44, align 8, !tbaa !9
  %1426 = load i64, ptr %46, align 8, !tbaa !9
  %1427 = load i64, ptr %28, align 8, !tbaa !9
  %1428 = mul nsw i64 %1426, %1427
  %1429 = add nsw i64 %1425, %1428
  store i64 %1429, ptr %39, align 8, !tbaa !9
  %1430 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1431 = load float, ptr %1430, align 4, !tbaa !11
  %1432 = load ptr, ptr %21, align 8, !tbaa !5
  %1433 = load i64, ptr %39, align 8, !tbaa !9
  %1434 = getelementptr inbounds %struct.complex, ptr %1432, i64 %1433
  %1435 = getelementptr inbounds %struct.complex, ptr %1434, i32 0, i32 0
  %1436 = load float, ptr %1435, align 4, !tbaa !11
  %1437 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1438 = load float, ptr %1437, align 4, !tbaa !14
  %1439 = load ptr, ptr %21, align 8, !tbaa !5
  %1440 = load i64, ptr %39, align 8, !tbaa !9
  %1441 = getelementptr inbounds %struct.complex, ptr %1439, i64 %1440
  %1442 = getelementptr inbounds %struct.complex, ptr %1441, i32 0, i32 1
  %1443 = load float, ptr %1442, align 4, !tbaa !14
  %1444 = fmul float %1438, %1443
  %1445 = fneg float %1444
  %1446 = call float @llvm.fmuladd.f32(float %1431, float %1436, float %1445)
  %1447 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1446, ptr %1447, align 4, !tbaa !11
  %1448 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1449 = load float, ptr %1448, align 4, !tbaa !11
  %1450 = load ptr, ptr %21, align 8, !tbaa !5
  %1451 = load i64, ptr %39, align 8, !tbaa !9
  %1452 = getelementptr inbounds %struct.complex, ptr %1450, i64 %1451
  %1453 = getelementptr inbounds %struct.complex, ptr %1452, i32 0, i32 1
  %1454 = load float, ptr %1453, align 4, !tbaa !14
  %1455 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1456 = load float, ptr %1455, align 4, !tbaa !14
  %1457 = load ptr, ptr %21, align 8, !tbaa !5
  %1458 = load i64, ptr %39, align 8, !tbaa !9
  %1459 = getelementptr inbounds %struct.complex, ptr %1457, i64 %1458
  %1460 = getelementptr inbounds %struct.complex, ptr %1459, i32 0, i32 0
  %1461 = load float, ptr %1460, align 4, !tbaa !11
  %1462 = fmul float %1456, %1461
  %1463 = call float @llvm.fmuladd.f32(float %1449, float %1454, float %1462)
  %1464 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1463, ptr %1464, align 4, !tbaa !14
  %1465 = load ptr, ptr %26, align 8, !tbaa !5
  %1466 = load i64, ptr %38, align 8, !tbaa !9
  %1467 = getelementptr inbounds %struct.complex, ptr %1465, i64 %1466
  %1468 = getelementptr inbounds %struct.complex, ptr %1467, i32 0, i32 0
  %1469 = load float, ptr %1468, align 4, !tbaa !11
  %1470 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1471 = load float, ptr %1470, align 4, !tbaa !11
  %1472 = fadd float %1469, %1471
  %1473 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1472, ptr %1473, align 4, !tbaa !11
  %1474 = load ptr, ptr %26, align 8, !tbaa !5
  %1475 = load i64, ptr %38, align 8, !tbaa !9
  %1476 = getelementptr inbounds %struct.complex, ptr %1474, i64 %1475
  %1477 = getelementptr inbounds %struct.complex, ptr %1476, i32 0, i32 1
  %1478 = load float, ptr %1477, align 4, !tbaa !14
  %1479 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1480 = load float, ptr %1479, align 4, !tbaa !14
  %1481 = fadd float %1478, %1480
  %1482 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1481, ptr %1482, align 4, !tbaa !14
  %1483 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1484 = load float, ptr %1483, align 4, !tbaa !11
  %1485 = load ptr, ptr %26, align 8, !tbaa !5
  %1486 = load i64, ptr %37, align 8, !tbaa !9
  %1487 = getelementptr inbounds %struct.complex, ptr %1485, i64 %1486
  %1488 = getelementptr inbounds %struct.complex, ptr %1487, i32 0, i32 0
  store float %1484, ptr %1488, align 4, !tbaa !11
  %1489 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1490 = load float, ptr %1489, align 4, !tbaa !14
  %1491 = load ptr, ptr %26, align 8, !tbaa !5
  %1492 = load i64, ptr %37, align 8, !tbaa !9
  %1493 = getelementptr inbounds %struct.complex, ptr %1491, i64 %1492
  %1494 = getelementptr inbounds %struct.complex, ptr %1493, i32 0, i32 1
  store float %1490, ptr %1494, align 4, !tbaa !14
  br label %1495

1495:                                             ; preds = %1414
  %1496 = load i64, ptr %44, align 8, !tbaa !9
  %1497 = add nsw i64 %1496, 1
  store i64 %1497, ptr %44, align 8, !tbaa !9
  br label %1410, !llvm.loop !33

1498:                                             ; preds = %1410
  br label %1499

1499:                                             ; preds = %1498, %1360
  br label %1500

1500:                                             ; preds = %1499
  %1501 = load i64, ptr %46, align 8, !tbaa !9
  %1502 = add nsw i64 %1501, 1
  store i64 %1502, ptr %46, align 8, !tbaa !9
  br label %1344, !llvm.loop !34

1503:                                             ; preds = %1344
  br label %1504

1504:                                             ; preds = %1503
  %1505 = load i64, ptr %45, align 8, !tbaa !9
  %1506 = add nsw i64 %1505, 1
  store i64 %1506, ptr %45, align 8, !tbaa !9
  br label %1218, !llvm.loop !35

1507:                                             ; preds = %1218
  br label %1811

1508:                                             ; preds = %1212
  %1509 = load ptr, ptr %18, align 8, !tbaa !5
  %1510 = load i64, ptr %1509, align 8, !tbaa !9
  store i64 %1510, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1511

1511:                                             ; preds = %1807, %1508
  %1512 = load i64, ptr %45, align 8, !tbaa !9
  %1513 = load i64, ptr %34, align 8, !tbaa !9
  %1514 = icmp sle i64 %1512, %1513
  br i1 %1514, label %1515, label %1810

1515:                                             ; preds = %1511
  %1516 = load ptr, ptr %25, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.complex, ptr %1516, i32 0, i32 0
  %1518 = load float, ptr %1517, align 4, !tbaa !11
  %1519 = fcmp oeq float %1518, 0.000000e+00
  br i1 %1519, label %1520, label %1550

1520:                                             ; preds = %1515
  %1521 = load ptr, ptr %25, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.complex, ptr %1521, i32 0, i32 1
  %1523 = load float, ptr %1522, align 4, !tbaa !14
  %1524 = fcmp oeq float %1523, 0.000000e+00
  br i1 %1524, label %1525, label %1550

1525:                                             ; preds = %1520
  %1526 = load ptr, ptr %17, align 8, !tbaa !5
  %1527 = load i64, ptr %1526, align 8, !tbaa !9
  store i64 %1527, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1528

1528:                                             ; preds = %1546, %1525
  %1529 = load i64, ptr %44, align 8, !tbaa !9
  %1530 = load i64, ptr %35, align 8, !tbaa !9
  %1531 = icmp sle i64 %1529, %1530
  br i1 %1531, label %1532, label %1549

1532:                                             ; preds = %1528
  %1533 = load i64, ptr %44, align 8, !tbaa !9
  %1534 = load i64, ptr %45, align 8, !tbaa !9
  %1535 = load i64, ptr %32, align 8, !tbaa !9
  %1536 = mul nsw i64 %1534, %1535
  %1537 = add nsw i64 %1533, %1536
  store i64 %1537, ptr %36, align 8, !tbaa !9
  %1538 = load ptr, ptr %26, align 8, !tbaa !5
  %1539 = load i64, ptr %36, align 8, !tbaa !9
  %1540 = getelementptr inbounds %struct.complex, ptr %1538, i64 %1539
  %1541 = getelementptr inbounds %struct.complex, ptr %1540, i32 0, i32 0
  store float 0.000000e+00, ptr %1541, align 4, !tbaa !11
  %1542 = load ptr, ptr %26, align 8, !tbaa !5
  %1543 = load i64, ptr %36, align 8, !tbaa !9
  %1544 = getelementptr inbounds %struct.complex, ptr %1542, i64 %1543
  %1545 = getelementptr inbounds %struct.complex, ptr %1544, i32 0, i32 1
  store float 0.000000e+00, ptr %1545, align 4, !tbaa !14
  br label %1546

1546:                                             ; preds = %1532
  %1547 = load i64, ptr %44, align 8, !tbaa !9
  %1548 = add nsw i64 %1547, 1
  store i64 %1548, ptr %44, align 8, !tbaa !9
  br label %1528, !llvm.loop !36

1549:                                             ; preds = %1528
  br label %1634

1550:                                             ; preds = %1520, %1515
  %1551 = load ptr, ptr %25, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.complex, ptr %1551, i32 0, i32 0
  %1553 = load float, ptr %1552, align 4, !tbaa !11
  %1554 = fcmp une float %1553, 1.000000e+00
  br i1 %1554, label %1560, label %1555

1555:                                             ; preds = %1550
  %1556 = load ptr, ptr %25, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.complex, ptr %1556, i32 0, i32 1
  %1558 = load float, ptr %1557, align 4, !tbaa !14
  %1559 = fcmp une float %1558, 0.000000e+00
  br i1 %1559, label %1560, label %1633

1560:                                             ; preds = %1555, %1550
  %1561 = load ptr, ptr %17, align 8, !tbaa !5
  %1562 = load i64, ptr %1561, align 8, !tbaa !9
  store i64 %1562, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1563

1563:                                             ; preds = %1629, %1560
  %1564 = load i64, ptr %44, align 8, !tbaa !9
  %1565 = load i64, ptr %35, align 8, !tbaa !9
  %1566 = icmp sle i64 %1564, %1565
  br i1 %1566, label %1567, label %1632

1567:                                             ; preds = %1563
  %1568 = load i64, ptr %44, align 8, !tbaa !9
  %1569 = load i64, ptr %45, align 8, !tbaa !9
  %1570 = load i64, ptr %32, align 8, !tbaa !9
  %1571 = mul nsw i64 %1569, %1570
  %1572 = add nsw i64 %1568, %1571
  store i64 %1572, ptr %36, align 8, !tbaa !9
  %1573 = load i64, ptr %44, align 8, !tbaa !9
  %1574 = load i64, ptr %45, align 8, !tbaa !9
  %1575 = load i64, ptr %32, align 8, !tbaa !9
  %1576 = mul nsw i64 %1574, %1575
  %1577 = add nsw i64 %1573, %1576
  store i64 %1577, ptr %37, align 8, !tbaa !9
  %1578 = load ptr, ptr %25, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.complex, ptr %1578, i32 0, i32 0
  %1580 = load float, ptr %1579, align 4, !tbaa !11
  %1581 = load ptr, ptr %26, align 8, !tbaa !5
  %1582 = load i64, ptr %37, align 8, !tbaa !9
  %1583 = getelementptr inbounds %struct.complex, ptr %1581, i64 %1582
  %1584 = getelementptr inbounds %struct.complex, ptr %1583, i32 0, i32 0
  %1585 = load float, ptr %1584, align 4, !tbaa !11
  %1586 = load ptr, ptr %25, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.complex, ptr %1586, i32 0, i32 1
  %1588 = load float, ptr %1587, align 4, !tbaa !14
  %1589 = load ptr, ptr %26, align 8, !tbaa !5
  %1590 = load i64, ptr %37, align 8, !tbaa !9
  %1591 = getelementptr inbounds %struct.complex, ptr %1589, i64 %1590
  %1592 = getelementptr inbounds %struct.complex, ptr %1591, i32 0, i32 1
  %1593 = load float, ptr %1592, align 4, !tbaa !14
  %1594 = fmul float %1588, %1593
  %1595 = fneg float %1594
  %1596 = call float @llvm.fmuladd.f32(float %1580, float %1585, float %1595)
  %1597 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1596, ptr %1597, align 4, !tbaa !11
  %1598 = load ptr, ptr %25, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.complex, ptr %1598, i32 0, i32 0
  %1600 = load float, ptr %1599, align 4, !tbaa !11
  %1601 = load ptr, ptr %26, align 8, !tbaa !5
  %1602 = load i64, ptr %37, align 8, !tbaa !9
  %1603 = getelementptr inbounds %struct.complex, ptr %1601, i64 %1602
  %1604 = getelementptr inbounds %struct.complex, ptr %1603, i32 0, i32 1
  %1605 = load float, ptr %1604, align 4, !tbaa !14
  %1606 = load ptr, ptr %25, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.complex, ptr %1606, i32 0, i32 1
  %1608 = load float, ptr %1607, align 4, !tbaa !14
  %1609 = load ptr, ptr %26, align 8, !tbaa !5
  %1610 = load i64, ptr %37, align 8, !tbaa !9
  %1611 = getelementptr inbounds %struct.complex, ptr %1609, i64 %1610
  %1612 = getelementptr inbounds %struct.complex, ptr %1611, i32 0, i32 0
  %1613 = load float, ptr %1612, align 4, !tbaa !11
  %1614 = fmul float %1608, %1613
  %1615 = call float @llvm.fmuladd.f32(float %1600, float %1605, float %1614)
  %1616 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1615, ptr %1616, align 4, !tbaa !14
  %1617 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1618 = load float, ptr %1617, align 4, !tbaa !11
  %1619 = load ptr, ptr %26, align 8, !tbaa !5
  %1620 = load i64, ptr %36, align 8, !tbaa !9
  %1621 = getelementptr inbounds %struct.complex, ptr %1619, i64 %1620
  %1622 = getelementptr inbounds %struct.complex, ptr %1621, i32 0, i32 0
  store float %1618, ptr %1622, align 4, !tbaa !11
  %1623 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1624 = load float, ptr %1623, align 4, !tbaa !14
  %1625 = load ptr, ptr %26, align 8, !tbaa !5
  %1626 = load i64, ptr %36, align 8, !tbaa !9
  %1627 = getelementptr inbounds %struct.complex, ptr %1625, i64 %1626
  %1628 = getelementptr inbounds %struct.complex, ptr %1627, i32 0, i32 1
  store float %1624, ptr %1628, align 4, !tbaa !14
  br label %1629

1629:                                             ; preds = %1567
  %1630 = load i64, ptr %44, align 8, !tbaa !9
  %1631 = add nsw i64 %1630, 1
  store i64 %1631, ptr %44, align 8, !tbaa !9
  br label %1563, !llvm.loop !37

1632:                                             ; preds = %1563
  br label %1633

1633:                                             ; preds = %1632, %1555
  br label %1634

1634:                                             ; preds = %1633, %1549
  %1635 = load ptr, ptr %19, align 8, !tbaa !5
  %1636 = load i64, ptr %1635, align 8, !tbaa !9
  store i64 %1636, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %1637

1637:                                             ; preds = %1803, %1634
  %1638 = load i64, ptr %46, align 8, !tbaa !9
  %1639 = load i64, ptr %35, align 8, !tbaa !9
  %1640 = icmp sle i64 %1638, %1639
  br i1 %1640, label %1641, label %1806

1641:                                             ; preds = %1637
  %1642 = load i64, ptr %45, align 8, !tbaa !9
  %1643 = load i64, ptr %46, align 8, !tbaa !9
  %1644 = load i64, ptr %30, align 8, !tbaa !9
  %1645 = mul nsw i64 %1643, %1644
  %1646 = add nsw i64 %1642, %1645
  store i64 %1646, ptr %36, align 8, !tbaa !9
  %1647 = load ptr, ptr %23, align 8, !tbaa !5
  %1648 = load i64, ptr %36, align 8, !tbaa !9
  %1649 = getelementptr inbounds %struct.complex, ptr %1647, i64 %1648
  %1650 = getelementptr inbounds %struct.complex, ptr %1649, i32 0, i32 0
  %1651 = load float, ptr %1650, align 4, !tbaa !11
  %1652 = fcmp une float %1651, 0.000000e+00
  br i1 %1652, label %1660, label %1653

1653:                                             ; preds = %1641
  %1654 = load ptr, ptr %23, align 8, !tbaa !5
  %1655 = load i64, ptr %36, align 8, !tbaa !9
  %1656 = getelementptr inbounds %struct.complex, ptr %1654, i64 %1655
  %1657 = getelementptr inbounds %struct.complex, ptr %1656, i32 0, i32 1
  %1658 = load float, ptr %1657, align 4, !tbaa !14
  %1659 = fcmp une float %1658, 0.000000e+00
  br i1 %1659, label %1660, label %1802

1660:                                             ; preds = %1653, %1641
  %1661 = load i64, ptr %45, align 8, !tbaa !9
  %1662 = load i64, ptr %46, align 8, !tbaa !9
  %1663 = load i64, ptr %30, align 8, !tbaa !9
  %1664 = mul nsw i64 %1662, %1663
  %1665 = add nsw i64 %1661, %1664
  store i64 %1665, ptr %36, align 8, !tbaa !9
  %1666 = load ptr, ptr %20, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.complex, ptr %1666, i32 0, i32 0
  %1668 = load float, ptr %1667, align 4, !tbaa !11
  %1669 = load ptr, ptr %23, align 8, !tbaa !5
  %1670 = load i64, ptr %36, align 8, !tbaa !9
  %1671 = getelementptr inbounds %struct.complex, ptr %1669, i64 %1670
  %1672 = getelementptr inbounds %struct.complex, ptr %1671, i32 0, i32 0
  %1673 = load float, ptr %1672, align 4, !tbaa !11
  %1674 = load ptr, ptr %20, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.complex, ptr %1674, i32 0, i32 1
  %1676 = load float, ptr %1675, align 4, !tbaa !14
  %1677 = load ptr, ptr %23, align 8, !tbaa !5
  %1678 = load i64, ptr %36, align 8, !tbaa !9
  %1679 = getelementptr inbounds %struct.complex, ptr %1677, i64 %1678
  %1680 = getelementptr inbounds %struct.complex, ptr %1679, i32 0, i32 1
  %1681 = load float, ptr %1680, align 4, !tbaa !14
  %1682 = fmul float %1676, %1681
  %1683 = fneg float %1682
  %1684 = call float @llvm.fmuladd.f32(float %1668, float %1673, float %1683)
  %1685 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1684, ptr %1685, align 4, !tbaa !11
  %1686 = load ptr, ptr %20, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.complex, ptr %1686, i32 0, i32 0
  %1688 = load float, ptr %1687, align 4, !tbaa !11
  %1689 = load ptr, ptr %23, align 8, !tbaa !5
  %1690 = load i64, ptr %36, align 8, !tbaa !9
  %1691 = getelementptr inbounds %struct.complex, ptr %1689, i64 %1690
  %1692 = getelementptr inbounds %struct.complex, ptr %1691, i32 0, i32 1
  %1693 = load float, ptr %1692, align 4, !tbaa !14
  %1694 = load ptr, ptr %20, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.complex, ptr %1694, i32 0, i32 1
  %1696 = load float, ptr %1695, align 4, !tbaa !14
  %1697 = load ptr, ptr %23, align 8, !tbaa !5
  %1698 = load i64, ptr %36, align 8, !tbaa !9
  %1699 = getelementptr inbounds %struct.complex, ptr %1697, i64 %1698
  %1700 = getelementptr inbounds %struct.complex, ptr %1699, i32 0, i32 0
  %1701 = load float, ptr %1700, align 4, !tbaa !11
  %1702 = fmul float %1696, %1701
  %1703 = call float @llvm.fmuladd.f32(float %1688, float %1693, float %1702)
  %1704 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1703, ptr %1704, align 4, !tbaa !14
  %1705 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1706 = load float, ptr %1705, align 4, !tbaa !11
  %1707 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %1706, ptr %1707, align 4, !tbaa !11
  %1708 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1709 = load float, ptr %1708, align 4, !tbaa !14
  %1710 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %1709, ptr %1710, align 4, !tbaa !14
  %1711 = load ptr, ptr %17, align 8, !tbaa !5
  %1712 = load i64, ptr %1711, align 8, !tbaa !9
  store i64 %1712, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1713

1713:                                             ; preds = %1798, %1660
  %1714 = load i64, ptr %44, align 8, !tbaa !9
  %1715 = load i64, ptr %36, align 8, !tbaa !9
  %1716 = icmp sle i64 %1714, %1715
  br i1 %1716, label %1717, label %1801

1717:                                             ; preds = %1713
  %1718 = load i64, ptr %44, align 8, !tbaa !9
  %1719 = load i64, ptr %45, align 8, !tbaa !9
  %1720 = load i64, ptr %32, align 8, !tbaa !9
  %1721 = mul nsw i64 %1719, %1720
  %1722 = add nsw i64 %1718, %1721
  store i64 %1722, ptr %37, align 8, !tbaa !9
  %1723 = load i64, ptr %44, align 8, !tbaa !9
  %1724 = load i64, ptr %45, align 8, !tbaa !9
  %1725 = load i64, ptr %32, align 8, !tbaa !9
  %1726 = mul nsw i64 %1724, %1725
  %1727 = add nsw i64 %1723, %1726
  store i64 %1727, ptr %38, align 8, !tbaa !9
  %1728 = load i64, ptr %44, align 8, !tbaa !9
  %1729 = load i64, ptr %46, align 8, !tbaa !9
  %1730 = load i64, ptr %28, align 8, !tbaa !9
  %1731 = mul nsw i64 %1729, %1730
  %1732 = add nsw i64 %1728, %1731
  store i64 %1732, ptr %39, align 8, !tbaa !9
  %1733 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1734 = load float, ptr %1733, align 4, !tbaa !11
  %1735 = load ptr, ptr %21, align 8, !tbaa !5
  %1736 = load i64, ptr %39, align 8, !tbaa !9
  %1737 = getelementptr inbounds %struct.complex, ptr %1735, i64 %1736
  %1738 = getelementptr inbounds %struct.complex, ptr %1737, i32 0, i32 0
  %1739 = load float, ptr %1738, align 4, !tbaa !11
  %1740 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1741 = load float, ptr %1740, align 4, !tbaa !14
  %1742 = load ptr, ptr %21, align 8, !tbaa !5
  %1743 = load i64, ptr %39, align 8, !tbaa !9
  %1744 = getelementptr inbounds %struct.complex, ptr %1742, i64 %1743
  %1745 = getelementptr inbounds %struct.complex, ptr %1744, i32 0, i32 1
  %1746 = load float, ptr %1745, align 4, !tbaa !14
  %1747 = fmul float %1741, %1746
  %1748 = fneg float %1747
  %1749 = call float @llvm.fmuladd.f32(float %1734, float %1739, float %1748)
  %1750 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1749, ptr %1750, align 4, !tbaa !11
  %1751 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1752 = load float, ptr %1751, align 4, !tbaa !11
  %1753 = load ptr, ptr %21, align 8, !tbaa !5
  %1754 = load i64, ptr %39, align 8, !tbaa !9
  %1755 = getelementptr inbounds %struct.complex, ptr %1753, i64 %1754
  %1756 = getelementptr inbounds %struct.complex, ptr %1755, i32 0, i32 1
  %1757 = load float, ptr %1756, align 4, !tbaa !14
  %1758 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1759 = load float, ptr %1758, align 4, !tbaa !14
  %1760 = load ptr, ptr %21, align 8, !tbaa !5
  %1761 = load i64, ptr %39, align 8, !tbaa !9
  %1762 = getelementptr inbounds %struct.complex, ptr %1760, i64 %1761
  %1763 = getelementptr inbounds %struct.complex, ptr %1762, i32 0, i32 0
  %1764 = load float, ptr %1763, align 4, !tbaa !11
  %1765 = fmul float %1759, %1764
  %1766 = call float @llvm.fmuladd.f32(float %1752, float %1757, float %1765)
  %1767 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1766, ptr %1767, align 4, !tbaa !14
  %1768 = load ptr, ptr %26, align 8, !tbaa !5
  %1769 = load i64, ptr %38, align 8, !tbaa !9
  %1770 = getelementptr inbounds %struct.complex, ptr %1768, i64 %1769
  %1771 = getelementptr inbounds %struct.complex, ptr %1770, i32 0, i32 0
  %1772 = load float, ptr %1771, align 4, !tbaa !11
  %1773 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1774 = load float, ptr %1773, align 4, !tbaa !11
  %1775 = fadd float %1772, %1774
  %1776 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1775, ptr %1776, align 4, !tbaa !11
  %1777 = load ptr, ptr %26, align 8, !tbaa !5
  %1778 = load i64, ptr %38, align 8, !tbaa !9
  %1779 = getelementptr inbounds %struct.complex, ptr %1777, i64 %1778
  %1780 = getelementptr inbounds %struct.complex, ptr %1779, i32 0, i32 1
  %1781 = load float, ptr %1780, align 4, !tbaa !14
  %1782 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1783 = load float, ptr %1782, align 4, !tbaa !14
  %1784 = fadd float %1781, %1783
  %1785 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1784, ptr %1785, align 4, !tbaa !14
  %1786 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1787 = load float, ptr %1786, align 4, !tbaa !11
  %1788 = load ptr, ptr %26, align 8, !tbaa !5
  %1789 = load i64, ptr %37, align 8, !tbaa !9
  %1790 = getelementptr inbounds %struct.complex, ptr %1788, i64 %1789
  %1791 = getelementptr inbounds %struct.complex, ptr %1790, i32 0, i32 0
  store float %1787, ptr %1791, align 4, !tbaa !11
  %1792 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1793 = load float, ptr %1792, align 4, !tbaa !14
  %1794 = load ptr, ptr %26, align 8, !tbaa !5
  %1795 = load i64, ptr %37, align 8, !tbaa !9
  %1796 = getelementptr inbounds %struct.complex, ptr %1794, i64 %1795
  %1797 = getelementptr inbounds %struct.complex, ptr %1796, i32 0, i32 1
  store float %1793, ptr %1797, align 4, !tbaa !14
  br label %1798

1798:                                             ; preds = %1717
  %1799 = load i64, ptr %44, align 8, !tbaa !9
  %1800 = add nsw i64 %1799, 1
  store i64 %1800, ptr %44, align 8, !tbaa !9
  br label %1713, !llvm.loop !38

1801:                                             ; preds = %1713
  br label %1802

1802:                                             ; preds = %1801, %1653
  br label %1803

1803:                                             ; preds = %1802
  %1804 = load i64, ptr %46, align 8, !tbaa !9
  %1805 = add nsw i64 %1804, 1
  store i64 %1805, ptr %46, align 8, !tbaa !9
  br label %1637, !llvm.loop !39

1806:                                             ; preds = %1637
  br label %1807

1807:                                             ; preds = %1806
  %1808 = load i64, ptr %45, align 8, !tbaa !9
  %1809 = add nsw i64 %1808, 1
  store i64 %1809, ptr %45, align 8, !tbaa !9
  br label %1511, !llvm.loop !40

1810:                                             ; preds = %1511
  br label %1811

1811:                                             ; preds = %1810, %1507
  br label %2852

1812:                                             ; preds = %1209
  %1813 = load i64, ptr %51, align 8, !tbaa !9
  %1814 = icmp ne i64 %1813, 0
  br i1 %1814, label %1815, label %2323

1815:                                             ; preds = %1812
  %1816 = load i64, ptr %52, align 8, !tbaa !9
  %1817 = icmp ne i64 %1816, 0
  br i1 %1817, label %1818, label %2065

1818:                                             ; preds = %1815
  %1819 = load ptr, ptr %18, align 8, !tbaa !5
  %1820 = load i64, ptr %1819, align 8, !tbaa !9
  store i64 %1820, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1821

1821:                                             ; preds = %2061, %1818
  %1822 = load i64, ptr %45, align 8, !tbaa !9
  %1823 = load i64, ptr %34, align 8, !tbaa !9
  %1824 = icmp sle i64 %1822, %1823
  br i1 %1824, label %1825, label %2064

1825:                                             ; preds = %1821
  %1826 = load ptr, ptr %17, align 8, !tbaa !5
  %1827 = load i64, ptr %1826, align 8, !tbaa !9
  store i64 %1827, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %1828

1828:                                             ; preds = %2057, %1825
  %1829 = load i64, ptr %44, align 8, !tbaa !9
  %1830 = load i64, ptr %35, align 8, !tbaa !9
  %1831 = icmp sle i64 %1829, %1830
  br i1 %1831, label %1832, label %2060

1832:                                             ; preds = %1828
  %1833 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float 0.000000e+00, ptr %1833, align 4, !tbaa !11
  %1834 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float 0.000000e+00, ptr %1834, align 4, !tbaa !14
  %1835 = load ptr, ptr %19, align 8, !tbaa !5
  %1836 = load i64, ptr %1835, align 8, !tbaa !9
  store i64 %1836, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %1837

1837:                                             ; preds = %1897, %1832
  %1838 = load i64, ptr %46, align 8, !tbaa !9
  %1839 = load i64, ptr %36, align 8, !tbaa !9
  %1840 = icmp sle i64 %1838, %1839
  br i1 %1840, label %1841, label %1900

1841:                                             ; preds = %1837
  %1842 = load ptr, ptr %21, align 8, !tbaa !5
  %1843 = load i64, ptr %46, align 8, !tbaa !9
  %1844 = load i64, ptr %44, align 8, !tbaa !9
  %1845 = load i64, ptr %28, align 8, !tbaa !9
  %1846 = mul nsw i64 %1844, %1845
  %1847 = add nsw i64 %1843, %1846
  %1848 = getelementptr inbounds %struct.complex, ptr %1842, i64 %1847
  call void @r_cnjg(ptr noundef %42, ptr noundef %1848)
  %1849 = load ptr, ptr %23, align 8, !tbaa !5
  %1850 = load i64, ptr %45, align 8, !tbaa !9
  %1851 = load i64, ptr %46, align 8, !tbaa !9
  %1852 = load i64, ptr %30, align 8, !tbaa !9
  %1853 = mul nsw i64 %1851, %1852
  %1854 = add nsw i64 %1850, %1853
  %1855 = getelementptr inbounds %struct.complex, ptr %1849, i64 %1854
  call void @r_cnjg(ptr noundef %43, ptr noundef %1855)
  %1856 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1857 = load float, ptr %1856, align 4, !tbaa !11
  %1858 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1859 = load float, ptr %1858, align 4, !tbaa !11
  %1860 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1861 = load float, ptr %1860, align 4, !tbaa !14
  %1862 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1863 = load float, ptr %1862, align 4, !tbaa !14
  %1864 = fmul float %1861, %1863
  %1865 = fneg float %1864
  %1866 = call float @llvm.fmuladd.f32(float %1857, float %1859, float %1865)
  %1867 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1866, ptr %1867, align 4, !tbaa !11
  %1868 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1869 = load float, ptr %1868, align 4, !tbaa !11
  %1870 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1871 = load float, ptr %1870, align 4, !tbaa !14
  %1872 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1873 = load float, ptr %1872, align 4, !tbaa !14
  %1874 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1875 = load float, ptr %1874, align 4, !tbaa !11
  %1876 = fmul float %1873, %1875
  %1877 = call float @llvm.fmuladd.f32(float %1869, float %1871, float %1876)
  %1878 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1877, ptr %1878, align 4, !tbaa !14
  %1879 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1880 = load float, ptr %1879, align 4, !tbaa !11
  %1881 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1882 = load float, ptr %1881, align 4, !tbaa !11
  %1883 = fadd float %1880, %1882
  %1884 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1883, ptr %1884, align 4, !tbaa !11
  %1885 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1886 = load float, ptr %1885, align 4, !tbaa !14
  %1887 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1888 = load float, ptr %1887, align 4, !tbaa !14
  %1889 = fadd float %1886, %1888
  %1890 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1889, ptr %1890, align 4, !tbaa !14
  %1891 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1892 = load float, ptr %1891, align 4, !tbaa !11
  %1893 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %1892, ptr %1893, align 4, !tbaa !11
  %1894 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1895 = load float, ptr %1894, align 4, !tbaa !14
  %1896 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %1895, ptr %1896, align 4, !tbaa !14
  br label %1897

1897:                                             ; preds = %1841
  %1898 = load i64, ptr %46, align 8, !tbaa !9
  %1899 = add nsw i64 %1898, 1
  store i64 %1899, ptr %46, align 8, !tbaa !9
  br label %1837, !llvm.loop !41

1900:                                             ; preds = %1837
  %1901 = load ptr, ptr %25, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.complex, ptr %1901, i32 0, i32 0
  %1903 = load float, ptr %1902, align 4, !tbaa !11
  %1904 = fcmp oeq float %1903, 0.000000e+00
  br i1 %1904, label %1905, label %1955

1905:                                             ; preds = %1900
  %1906 = load ptr, ptr %25, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.complex, ptr %1906, i32 0, i32 1
  %1908 = load float, ptr %1907, align 4, !tbaa !14
  %1909 = fcmp oeq float %1908, 0.000000e+00
  br i1 %1909, label %1910, label %1955

1910:                                             ; preds = %1905
  %1911 = load i64, ptr %44, align 8, !tbaa !9
  %1912 = load i64, ptr %45, align 8, !tbaa !9
  %1913 = load i64, ptr %32, align 8, !tbaa !9
  %1914 = mul nsw i64 %1912, %1913
  %1915 = add nsw i64 %1911, %1914
  store i64 %1915, ptr %36, align 8, !tbaa !9
  %1916 = load ptr, ptr %20, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.complex, ptr %1916, i32 0, i32 0
  %1918 = load float, ptr %1917, align 4, !tbaa !11
  %1919 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1920 = load float, ptr %1919, align 4, !tbaa !11
  %1921 = load ptr, ptr %20, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.complex, ptr %1921, i32 0, i32 1
  %1923 = load float, ptr %1922, align 4, !tbaa !14
  %1924 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1925 = load float, ptr %1924, align 4, !tbaa !14
  %1926 = fmul float %1923, %1925
  %1927 = fneg float %1926
  %1928 = call float @llvm.fmuladd.f32(float %1918, float %1920, float %1927)
  %1929 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1928, ptr %1929, align 4, !tbaa !11
  %1930 = load ptr, ptr %20, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.complex, ptr %1930, i32 0, i32 0
  %1932 = load float, ptr %1931, align 4, !tbaa !11
  %1933 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1934 = load float, ptr %1933, align 4, !tbaa !14
  %1935 = load ptr, ptr %20, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.complex, ptr %1935, i32 0, i32 1
  %1937 = load float, ptr %1936, align 4, !tbaa !14
  %1938 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1939 = load float, ptr %1938, align 4, !tbaa !11
  %1940 = fmul float %1937, %1939
  %1941 = call float @llvm.fmuladd.f32(float %1932, float %1934, float %1940)
  %1942 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %1941, ptr %1942, align 4, !tbaa !14
  %1943 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1944 = load float, ptr %1943, align 4, !tbaa !11
  %1945 = load ptr, ptr %26, align 8, !tbaa !5
  %1946 = load i64, ptr %36, align 8, !tbaa !9
  %1947 = getelementptr inbounds %struct.complex, ptr %1945, i64 %1946
  %1948 = getelementptr inbounds %struct.complex, ptr %1947, i32 0, i32 0
  store float %1944, ptr %1948, align 4, !tbaa !11
  %1949 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1950 = load float, ptr %1949, align 4, !tbaa !14
  %1951 = load ptr, ptr %26, align 8, !tbaa !5
  %1952 = load i64, ptr %36, align 8, !tbaa !9
  %1953 = getelementptr inbounds %struct.complex, ptr %1951, i64 %1952
  %1954 = getelementptr inbounds %struct.complex, ptr %1953, i32 0, i32 1
  store float %1950, ptr %1954, align 4, !tbaa !14
  br label %2056

1955:                                             ; preds = %1905, %1900
  %1956 = load i64, ptr %44, align 8, !tbaa !9
  %1957 = load i64, ptr %45, align 8, !tbaa !9
  %1958 = load i64, ptr %32, align 8, !tbaa !9
  %1959 = mul nsw i64 %1957, %1958
  %1960 = add nsw i64 %1956, %1959
  store i64 %1960, ptr %36, align 8, !tbaa !9
  %1961 = load ptr, ptr %20, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.complex, ptr %1961, i32 0, i32 0
  %1963 = load float, ptr %1962, align 4, !tbaa !11
  %1964 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1965 = load float, ptr %1964, align 4, !tbaa !11
  %1966 = load ptr, ptr %20, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.complex, ptr %1966, i32 0, i32 1
  %1968 = load float, ptr %1967, align 4, !tbaa !14
  %1969 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1970 = load float, ptr %1969, align 4, !tbaa !14
  %1971 = fmul float %1968, %1970
  %1972 = fneg float %1971
  %1973 = call float @llvm.fmuladd.f32(float %1963, float %1965, float %1972)
  %1974 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1973, ptr %1974, align 4, !tbaa !11
  %1975 = load ptr, ptr %20, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.complex, ptr %1975, i32 0, i32 0
  %1977 = load float, ptr %1976, align 4, !tbaa !11
  %1978 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1979 = load float, ptr %1978, align 4, !tbaa !14
  %1980 = load ptr, ptr %20, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.complex, ptr %1980, i32 0, i32 1
  %1982 = load float, ptr %1981, align 4, !tbaa !14
  %1983 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1984 = load float, ptr %1983, align 4, !tbaa !11
  %1985 = fmul float %1982, %1984
  %1986 = call float @llvm.fmuladd.f32(float %1977, float %1979, float %1985)
  %1987 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1986, ptr %1987, align 4, !tbaa !14
  %1988 = load i64, ptr %44, align 8, !tbaa !9
  %1989 = load i64, ptr %45, align 8, !tbaa !9
  %1990 = load i64, ptr %32, align 8, !tbaa !9
  %1991 = mul nsw i64 %1989, %1990
  %1992 = add nsw i64 %1988, %1991
  store i64 %1992, ptr %37, align 8, !tbaa !9
  %1993 = load ptr, ptr %25, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.complex, ptr %1993, i32 0, i32 0
  %1995 = load float, ptr %1994, align 4, !tbaa !11
  %1996 = load ptr, ptr %26, align 8, !tbaa !5
  %1997 = load i64, ptr %37, align 8, !tbaa !9
  %1998 = getelementptr inbounds %struct.complex, ptr %1996, i64 %1997
  %1999 = getelementptr inbounds %struct.complex, ptr %1998, i32 0, i32 0
  %2000 = load float, ptr %1999, align 4, !tbaa !11
  %2001 = load ptr, ptr %25, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.complex, ptr %2001, i32 0, i32 1
  %2003 = load float, ptr %2002, align 4, !tbaa !14
  %2004 = load ptr, ptr %26, align 8, !tbaa !5
  %2005 = load i64, ptr %37, align 8, !tbaa !9
  %2006 = getelementptr inbounds %struct.complex, ptr %2004, i64 %2005
  %2007 = getelementptr inbounds %struct.complex, ptr %2006, i32 0, i32 1
  %2008 = load float, ptr %2007, align 4, !tbaa !14
  %2009 = fmul float %2003, %2008
  %2010 = fneg float %2009
  %2011 = call float @llvm.fmuladd.f32(float %1995, float %2000, float %2010)
  %2012 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2011, ptr %2012, align 4, !tbaa !11
  %2013 = load ptr, ptr %25, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.complex, ptr %2013, i32 0, i32 0
  %2015 = load float, ptr %2014, align 4, !tbaa !11
  %2016 = load ptr, ptr %26, align 8, !tbaa !5
  %2017 = load i64, ptr %37, align 8, !tbaa !9
  %2018 = getelementptr inbounds %struct.complex, ptr %2016, i64 %2017
  %2019 = getelementptr inbounds %struct.complex, ptr %2018, i32 0, i32 1
  %2020 = load float, ptr %2019, align 4, !tbaa !14
  %2021 = load ptr, ptr %25, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.complex, ptr %2021, i32 0, i32 1
  %2023 = load float, ptr %2022, align 4, !tbaa !14
  %2024 = load ptr, ptr %26, align 8, !tbaa !5
  %2025 = load i64, ptr %37, align 8, !tbaa !9
  %2026 = getelementptr inbounds %struct.complex, ptr %2024, i64 %2025
  %2027 = getelementptr inbounds %struct.complex, ptr %2026, i32 0, i32 0
  %2028 = load float, ptr %2027, align 4, !tbaa !11
  %2029 = fmul float %2023, %2028
  %2030 = call float @llvm.fmuladd.f32(float %2015, float %2020, float %2029)
  %2031 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2030, ptr %2031, align 4, !tbaa !14
  %2032 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2033 = load float, ptr %2032, align 4, !tbaa !11
  %2034 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2035 = load float, ptr %2034, align 4, !tbaa !11
  %2036 = fadd float %2033, %2035
  %2037 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2036, ptr %2037, align 4, !tbaa !11
  %2038 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2039 = load float, ptr %2038, align 4, !tbaa !14
  %2040 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2041 = load float, ptr %2040, align 4, !tbaa !14
  %2042 = fadd float %2039, %2041
  %2043 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2042, ptr %2043, align 4, !tbaa !14
  %2044 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2045 = load float, ptr %2044, align 4, !tbaa !11
  %2046 = load ptr, ptr %26, align 8, !tbaa !5
  %2047 = load i64, ptr %36, align 8, !tbaa !9
  %2048 = getelementptr inbounds %struct.complex, ptr %2046, i64 %2047
  %2049 = getelementptr inbounds %struct.complex, ptr %2048, i32 0, i32 0
  store float %2045, ptr %2049, align 4, !tbaa !11
  %2050 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2051 = load float, ptr %2050, align 4, !tbaa !14
  %2052 = load ptr, ptr %26, align 8, !tbaa !5
  %2053 = load i64, ptr %36, align 8, !tbaa !9
  %2054 = getelementptr inbounds %struct.complex, ptr %2052, i64 %2053
  %2055 = getelementptr inbounds %struct.complex, ptr %2054, i32 0, i32 1
  store float %2051, ptr %2055, align 4, !tbaa !14
  br label %2056

2056:                                             ; preds = %1955, %1910
  br label %2057

2057:                                             ; preds = %2056
  %2058 = load i64, ptr %44, align 8, !tbaa !9
  %2059 = add nsw i64 %2058, 1
  store i64 %2059, ptr %44, align 8, !tbaa !9
  br label %1828, !llvm.loop !42

2060:                                             ; preds = %1828
  br label %2061

2061:                                             ; preds = %2060
  %2062 = load i64, ptr %45, align 8, !tbaa !9
  %2063 = add nsw i64 %2062, 1
  store i64 %2063, ptr %45, align 8, !tbaa !9
  br label %1821, !llvm.loop !43

2064:                                             ; preds = %1821
  br label %2322

2065:                                             ; preds = %1815
  %2066 = load ptr, ptr %18, align 8, !tbaa !5
  %2067 = load i64, ptr %2066, align 8, !tbaa !9
  store i64 %2067, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %2068

2068:                                             ; preds = %2318, %2065
  %2069 = load i64, ptr %45, align 8, !tbaa !9
  %2070 = load i64, ptr %34, align 8, !tbaa !9
  %2071 = icmp sle i64 %2069, %2070
  br i1 %2071, label %2072, label %2321

2072:                                             ; preds = %2068
  %2073 = load ptr, ptr %17, align 8, !tbaa !5
  %2074 = load i64, ptr %2073, align 8, !tbaa !9
  store i64 %2074, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %2075

2075:                                             ; preds = %2314, %2072
  %2076 = load i64, ptr %44, align 8, !tbaa !9
  %2077 = load i64, ptr %35, align 8, !tbaa !9
  %2078 = icmp sle i64 %2076, %2077
  br i1 %2078, label %2079, label %2317

2079:                                             ; preds = %2075
  %2080 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float 0.000000e+00, ptr %2080, align 4, !tbaa !11
  %2081 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float 0.000000e+00, ptr %2081, align 4, !tbaa !14
  %2082 = load ptr, ptr %19, align 8, !tbaa !5
  %2083 = load i64, ptr %2082, align 8, !tbaa !9
  store i64 %2083, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %2084

2084:                                             ; preds = %2154, %2079
  %2085 = load i64, ptr %46, align 8, !tbaa !9
  %2086 = load i64, ptr %36, align 8, !tbaa !9
  %2087 = icmp sle i64 %2085, %2086
  br i1 %2087, label %2088, label %2157

2088:                                             ; preds = %2084
  %2089 = load ptr, ptr %21, align 8, !tbaa !5
  %2090 = load i64, ptr %46, align 8, !tbaa !9
  %2091 = load i64, ptr %44, align 8, !tbaa !9
  %2092 = load i64, ptr %28, align 8, !tbaa !9
  %2093 = mul nsw i64 %2091, %2092
  %2094 = add nsw i64 %2090, %2093
  %2095 = getelementptr inbounds %struct.complex, ptr %2089, i64 %2094
  call void @r_cnjg(ptr noundef %42, ptr noundef %2095)
  %2096 = load i64, ptr %45, align 8, !tbaa !9
  %2097 = load i64, ptr %46, align 8, !tbaa !9
  %2098 = load i64, ptr %30, align 8, !tbaa !9
  %2099 = mul nsw i64 %2097, %2098
  %2100 = add nsw i64 %2096, %2099
  store i64 %2100, ptr %37, align 8, !tbaa !9
  %2101 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2102 = load float, ptr %2101, align 4, !tbaa !11
  %2103 = load ptr, ptr %23, align 8, !tbaa !5
  %2104 = load i64, ptr %37, align 8, !tbaa !9
  %2105 = getelementptr inbounds %struct.complex, ptr %2103, i64 %2104
  %2106 = getelementptr inbounds %struct.complex, ptr %2105, i32 0, i32 0
  %2107 = load float, ptr %2106, align 4, !tbaa !11
  %2108 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2109 = load float, ptr %2108, align 4, !tbaa !14
  %2110 = load ptr, ptr %23, align 8, !tbaa !5
  %2111 = load i64, ptr %37, align 8, !tbaa !9
  %2112 = getelementptr inbounds %struct.complex, ptr %2110, i64 %2111
  %2113 = getelementptr inbounds %struct.complex, ptr %2112, i32 0, i32 1
  %2114 = load float, ptr %2113, align 4, !tbaa !14
  %2115 = fmul float %2109, %2114
  %2116 = fneg float %2115
  %2117 = call float @llvm.fmuladd.f32(float %2102, float %2107, float %2116)
  %2118 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2117, ptr %2118, align 4, !tbaa !11
  %2119 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2120 = load float, ptr %2119, align 4, !tbaa !11
  %2121 = load ptr, ptr %23, align 8, !tbaa !5
  %2122 = load i64, ptr %37, align 8, !tbaa !9
  %2123 = getelementptr inbounds %struct.complex, ptr %2121, i64 %2122
  %2124 = getelementptr inbounds %struct.complex, ptr %2123, i32 0, i32 1
  %2125 = load float, ptr %2124, align 4, !tbaa !14
  %2126 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2127 = load float, ptr %2126, align 4, !tbaa !14
  %2128 = load ptr, ptr %23, align 8, !tbaa !5
  %2129 = load i64, ptr %37, align 8, !tbaa !9
  %2130 = getelementptr inbounds %struct.complex, ptr %2128, i64 %2129
  %2131 = getelementptr inbounds %struct.complex, ptr %2130, i32 0, i32 0
  %2132 = load float, ptr %2131, align 4, !tbaa !11
  %2133 = fmul float %2127, %2132
  %2134 = call float @llvm.fmuladd.f32(float %2120, float %2125, float %2133)
  %2135 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2134, ptr %2135, align 4, !tbaa !14
  %2136 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2137 = load float, ptr %2136, align 4, !tbaa !11
  %2138 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2139 = load float, ptr %2138, align 4, !tbaa !11
  %2140 = fadd float %2137, %2139
  %2141 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2140, ptr %2141, align 4, !tbaa !11
  %2142 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2143 = load float, ptr %2142, align 4, !tbaa !14
  %2144 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2145 = load float, ptr %2144, align 4, !tbaa !14
  %2146 = fadd float %2143, %2145
  %2147 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2146, ptr %2147, align 4, !tbaa !14
  %2148 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2149 = load float, ptr %2148, align 4, !tbaa !11
  %2150 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %2149, ptr %2150, align 4, !tbaa !11
  %2151 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2152 = load float, ptr %2151, align 4, !tbaa !14
  %2153 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %2152, ptr %2153, align 4, !tbaa !14
  br label %2154

2154:                                             ; preds = %2088
  %2155 = load i64, ptr %46, align 8, !tbaa !9
  %2156 = add nsw i64 %2155, 1
  store i64 %2156, ptr %46, align 8, !tbaa !9
  br label %2084, !llvm.loop !44

2157:                                             ; preds = %2084
  %2158 = load ptr, ptr %25, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.complex, ptr %2158, i32 0, i32 0
  %2160 = load float, ptr %2159, align 4, !tbaa !11
  %2161 = fcmp oeq float %2160, 0.000000e+00
  br i1 %2161, label %2162, label %2212

2162:                                             ; preds = %2157
  %2163 = load ptr, ptr %25, align 8, !tbaa !5
  %2164 = getelementptr inbounds %struct.complex, ptr %2163, i32 0, i32 1
  %2165 = load float, ptr %2164, align 4, !tbaa !14
  %2166 = fcmp oeq float %2165, 0.000000e+00
  br i1 %2166, label %2167, label %2212

2167:                                             ; preds = %2162
  %2168 = load i64, ptr %44, align 8, !tbaa !9
  %2169 = load i64, ptr %45, align 8, !tbaa !9
  %2170 = load i64, ptr %32, align 8, !tbaa !9
  %2171 = mul nsw i64 %2169, %2170
  %2172 = add nsw i64 %2168, %2171
  store i64 %2172, ptr %36, align 8, !tbaa !9
  %2173 = load ptr, ptr %20, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.complex, ptr %2173, i32 0, i32 0
  %2175 = load float, ptr %2174, align 4, !tbaa !11
  %2176 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2177 = load float, ptr %2176, align 4, !tbaa !11
  %2178 = load ptr, ptr %20, align 8, !tbaa !5
  %2179 = getelementptr inbounds %struct.complex, ptr %2178, i32 0, i32 1
  %2180 = load float, ptr %2179, align 4, !tbaa !14
  %2181 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2182 = load float, ptr %2181, align 4, !tbaa !14
  %2183 = fmul float %2180, %2182
  %2184 = fneg float %2183
  %2185 = call float @llvm.fmuladd.f32(float %2175, float %2177, float %2184)
  %2186 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2185, ptr %2186, align 4, !tbaa !11
  %2187 = load ptr, ptr %20, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.complex, ptr %2187, i32 0, i32 0
  %2189 = load float, ptr %2188, align 4, !tbaa !11
  %2190 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2191 = load float, ptr %2190, align 4, !tbaa !14
  %2192 = load ptr, ptr %20, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.complex, ptr %2192, i32 0, i32 1
  %2194 = load float, ptr %2193, align 4, !tbaa !14
  %2195 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2196 = load float, ptr %2195, align 4, !tbaa !11
  %2197 = fmul float %2194, %2196
  %2198 = call float @llvm.fmuladd.f32(float %2189, float %2191, float %2197)
  %2199 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2198, ptr %2199, align 4, !tbaa !14
  %2200 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2201 = load float, ptr %2200, align 4, !tbaa !11
  %2202 = load ptr, ptr %26, align 8, !tbaa !5
  %2203 = load i64, ptr %36, align 8, !tbaa !9
  %2204 = getelementptr inbounds %struct.complex, ptr %2202, i64 %2203
  %2205 = getelementptr inbounds %struct.complex, ptr %2204, i32 0, i32 0
  store float %2201, ptr %2205, align 4, !tbaa !11
  %2206 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2207 = load float, ptr %2206, align 4, !tbaa !14
  %2208 = load ptr, ptr %26, align 8, !tbaa !5
  %2209 = load i64, ptr %36, align 8, !tbaa !9
  %2210 = getelementptr inbounds %struct.complex, ptr %2208, i64 %2209
  %2211 = getelementptr inbounds %struct.complex, ptr %2210, i32 0, i32 1
  store float %2207, ptr %2211, align 4, !tbaa !14
  br label %2313

2212:                                             ; preds = %2162, %2157
  %2213 = load i64, ptr %44, align 8, !tbaa !9
  %2214 = load i64, ptr %45, align 8, !tbaa !9
  %2215 = load i64, ptr %32, align 8, !tbaa !9
  %2216 = mul nsw i64 %2214, %2215
  %2217 = add nsw i64 %2213, %2216
  store i64 %2217, ptr %36, align 8, !tbaa !9
  %2218 = load ptr, ptr %20, align 8, !tbaa !5
  %2219 = getelementptr inbounds %struct.complex, ptr %2218, i32 0, i32 0
  %2220 = load float, ptr %2219, align 4, !tbaa !11
  %2221 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2222 = load float, ptr %2221, align 4, !tbaa !11
  %2223 = load ptr, ptr %20, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.complex, ptr %2223, i32 0, i32 1
  %2225 = load float, ptr %2224, align 4, !tbaa !14
  %2226 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2227 = load float, ptr %2226, align 4, !tbaa !14
  %2228 = fmul float %2225, %2227
  %2229 = fneg float %2228
  %2230 = call float @llvm.fmuladd.f32(float %2220, float %2222, float %2229)
  %2231 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2230, ptr %2231, align 4, !tbaa !11
  %2232 = load ptr, ptr %20, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.complex, ptr %2232, i32 0, i32 0
  %2234 = load float, ptr %2233, align 4, !tbaa !11
  %2235 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2236 = load float, ptr %2235, align 4, !tbaa !14
  %2237 = load ptr, ptr %20, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.complex, ptr %2237, i32 0, i32 1
  %2239 = load float, ptr %2238, align 4, !tbaa !14
  %2240 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2241 = load float, ptr %2240, align 4, !tbaa !11
  %2242 = fmul float %2239, %2241
  %2243 = call float @llvm.fmuladd.f32(float %2234, float %2236, float %2242)
  %2244 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2243, ptr %2244, align 4, !tbaa !14
  %2245 = load i64, ptr %44, align 8, !tbaa !9
  %2246 = load i64, ptr %45, align 8, !tbaa !9
  %2247 = load i64, ptr %32, align 8, !tbaa !9
  %2248 = mul nsw i64 %2246, %2247
  %2249 = add nsw i64 %2245, %2248
  store i64 %2249, ptr %37, align 8, !tbaa !9
  %2250 = load ptr, ptr %25, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.complex, ptr %2250, i32 0, i32 0
  %2252 = load float, ptr %2251, align 4, !tbaa !11
  %2253 = load ptr, ptr %26, align 8, !tbaa !5
  %2254 = load i64, ptr %37, align 8, !tbaa !9
  %2255 = getelementptr inbounds %struct.complex, ptr %2253, i64 %2254
  %2256 = getelementptr inbounds %struct.complex, ptr %2255, i32 0, i32 0
  %2257 = load float, ptr %2256, align 4, !tbaa !11
  %2258 = load ptr, ptr %25, align 8, !tbaa !5
  %2259 = getelementptr inbounds %struct.complex, ptr %2258, i32 0, i32 1
  %2260 = load float, ptr %2259, align 4, !tbaa !14
  %2261 = load ptr, ptr %26, align 8, !tbaa !5
  %2262 = load i64, ptr %37, align 8, !tbaa !9
  %2263 = getelementptr inbounds %struct.complex, ptr %2261, i64 %2262
  %2264 = getelementptr inbounds %struct.complex, ptr %2263, i32 0, i32 1
  %2265 = load float, ptr %2264, align 4, !tbaa !14
  %2266 = fmul float %2260, %2265
  %2267 = fneg float %2266
  %2268 = call float @llvm.fmuladd.f32(float %2252, float %2257, float %2267)
  %2269 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2268, ptr %2269, align 4, !tbaa !11
  %2270 = load ptr, ptr %25, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.complex, ptr %2270, i32 0, i32 0
  %2272 = load float, ptr %2271, align 4, !tbaa !11
  %2273 = load ptr, ptr %26, align 8, !tbaa !5
  %2274 = load i64, ptr %37, align 8, !tbaa !9
  %2275 = getelementptr inbounds %struct.complex, ptr %2273, i64 %2274
  %2276 = getelementptr inbounds %struct.complex, ptr %2275, i32 0, i32 1
  %2277 = load float, ptr %2276, align 4, !tbaa !14
  %2278 = load ptr, ptr %25, align 8, !tbaa !5
  %2279 = getelementptr inbounds %struct.complex, ptr %2278, i32 0, i32 1
  %2280 = load float, ptr %2279, align 4, !tbaa !14
  %2281 = load ptr, ptr %26, align 8, !tbaa !5
  %2282 = load i64, ptr %37, align 8, !tbaa !9
  %2283 = getelementptr inbounds %struct.complex, ptr %2281, i64 %2282
  %2284 = getelementptr inbounds %struct.complex, ptr %2283, i32 0, i32 0
  %2285 = load float, ptr %2284, align 4, !tbaa !11
  %2286 = fmul float %2280, %2285
  %2287 = call float @llvm.fmuladd.f32(float %2272, float %2277, float %2286)
  %2288 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2287, ptr %2288, align 4, !tbaa !14
  %2289 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2290 = load float, ptr %2289, align 4, !tbaa !11
  %2291 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2292 = load float, ptr %2291, align 4, !tbaa !11
  %2293 = fadd float %2290, %2292
  %2294 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2293, ptr %2294, align 4, !tbaa !11
  %2295 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2296 = load float, ptr %2295, align 4, !tbaa !14
  %2297 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2298 = load float, ptr %2297, align 4, !tbaa !14
  %2299 = fadd float %2296, %2298
  %2300 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2299, ptr %2300, align 4, !tbaa !14
  %2301 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2302 = load float, ptr %2301, align 4, !tbaa !11
  %2303 = load ptr, ptr %26, align 8, !tbaa !5
  %2304 = load i64, ptr %36, align 8, !tbaa !9
  %2305 = getelementptr inbounds %struct.complex, ptr %2303, i64 %2304
  %2306 = getelementptr inbounds %struct.complex, ptr %2305, i32 0, i32 0
  store float %2302, ptr %2306, align 4, !tbaa !11
  %2307 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2308 = load float, ptr %2307, align 4, !tbaa !14
  %2309 = load ptr, ptr %26, align 8, !tbaa !5
  %2310 = load i64, ptr %36, align 8, !tbaa !9
  %2311 = getelementptr inbounds %struct.complex, ptr %2309, i64 %2310
  %2312 = getelementptr inbounds %struct.complex, ptr %2311, i32 0, i32 1
  store float %2308, ptr %2312, align 4, !tbaa !14
  br label %2313

2313:                                             ; preds = %2212, %2167
  br label %2314

2314:                                             ; preds = %2313
  %2315 = load i64, ptr %44, align 8, !tbaa !9
  %2316 = add nsw i64 %2315, 1
  store i64 %2316, ptr %44, align 8, !tbaa !9
  br label %2075, !llvm.loop !45

2317:                                             ; preds = %2075
  br label %2318

2318:                                             ; preds = %2317
  %2319 = load i64, ptr %45, align 8, !tbaa !9
  %2320 = add nsw i64 %2319, 1
  store i64 %2320, ptr %45, align 8, !tbaa !9
  br label %2068, !llvm.loop !46

2321:                                             ; preds = %2068
  br label %2322

2322:                                             ; preds = %2321, %2064
  br label %2851

2323:                                             ; preds = %1812
  %2324 = load i64, ptr %52, align 8, !tbaa !9
  %2325 = icmp ne i64 %2324, 0
  br i1 %2325, label %2326, label %2583

2326:                                             ; preds = %2323
  %2327 = load ptr, ptr %18, align 8, !tbaa !5
  %2328 = load i64, ptr %2327, align 8, !tbaa !9
  store i64 %2328, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %2329

2329:                                             ; preds = %2579, %2326
  %2330 = load i64, ptr %45, align 8, !tbaa !9
  %2331 = load i64, ptr %34, align 8, !tbaa !9
  %2332 = icmp sle i64 %2330, %2331
  br i1 %2332, label %2333, label %2582

2333:                                             ; preds = %2329
  %2334 = load ptr, ptr %17, align 8, !tbaa !5
  %2335 = load i64, ptr %2334, align 8, !tbaa !9
  store i64 %2335, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %2336

2336:                                             ; preds = %2575, %2333
  %2337 = load i64, ptr %44, align 8, !tbaa !9
  %2338 = load i64, ptr %35, align 8, !tbaa !9
  %2339 = icmp sle i64 %2337, %2338
  br i1 %2339, label %2340, label %2578

2340:                                             ; preds = %2336
  %2341 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float 0.000000e+00, ptr %2341, align 4, !tbaa !11
  %2342 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float 0.000000e+00, ptr %2342, align 4, !tbaa !14
  %2343 = load ptr, ptr %19, align 8, !tbaa !5
  %2344 = load i64, ptr %2343, align 8, !tbaa !9
  store i64 %2344, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %2345

2345:                                             ; preds = %2415, %2340
  %2346 = load i64, ptr %46, align 8, !tbaa !9
  %2347 = load i64, ptr %36, align 8, !tbaa !9
  %2348 = icmp sle i64 %2346, %2347
  br i1 %2348, label %2349, label %2418

2349:                                             ; preds = %2345
  %2350 = load i64, ptr %46, align 8, !tbaa !9
  %2351 = load i64, ptr %44, align 8, !tbaa !9
  %2352 = load i64, ptr %28, align 8, !tbaa !9
  %2353 = mul nsw i64 %2351, %2352
  %2354 = add nsw i64 %2350, %2353
  store i64 %2354, ptr %37, align 8, !tbaa !9
  %2355 = load ptr, ptr %23, align 8, !tbaa !5
  %2356 = load i64, ptr %45, align 8, !tbaa !9
  %2357 = load i64, ptr %46, align 8, !tbaa !9
  %2358 = load i64, ptr %30, align 8, !tbaa !9
  %2359 = mul nsw i64 %2357, %2358
  %2360 = add nsw i64 %2356, %2359
  %2361 = getelementptr inbounds %struct.complex, ptr %2355, i64 %2360
  call void @r_cnjg(ptr noundef %42, ptr noundef %2361)
  %2362 = load ptr, ptr %21, align 8, !tbaa !5
  %2363 = load i64, ptr %37, align 8, !tbaa !9
  %2364 = getelementptr inbounds %struct.complex, ptr %2362, i64 %2363
  %2365 = getelementptr inbounds %struct.complex, ptr %2364, i32 0, i32 0
  %2366 = load float, ptr %2365, align 4, !tbaa !11
  %2367 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2368 = load float, ptr %2367, align 4, !tbaa !11
  %2369 = load ptr, ptr %21, align 8, !tbaa !5
  %2370 = load i64, ptr %37, align 8, !tbaa !9
  %2371 = getelementptr inbounds %struct.complex, ptr %2369, i64 %2370
  %2372 = getelementptr inbounds %struct.complex, ptr %2371, i32 0, i32 1
  %2373 = load float, ptr %2372, align 4, !tbaa !14
  %2374 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2375 = load float, ptr %2374, align 4, !tbaa !14
  %2376 = fmul float %2373, %2375
  %2377 = fneg float %2376
  %2378 = call float @llvm.fmuladd.f32(float %2366, float %2368, float %2377)
  %2379 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2378, ptr %2379, align 4, !tbaa !11
  %2380 = load ptr, ptr %21, align 8, !tbaa !5
  %2381 = load i64, ptr %37, align 8, !tbaa !9
  %2382 = getelementptr inbounds %struct.complex, ptr %2380, i64 %2381
  %2383 = getelementptr inbounds %struct.complex, ptr %2382, i32 0, i32 0
  %2384 = load float, ptr %2383, align 4, !tbaa !11
  %2385 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2386 = load float, ptr %2385, align 4, !tbaa !14
  %2387 = load ptr, ptr %21, align 8, !tbaa !5
  %2388 = load i64, ptr %37, align 8, !tbaa !9
  %2389 = getelementptr inbounds %struct.complex, ptr %2387, i64 %2388
  %2390 = getelementptr inbounds %struct.complex, ptr %2389, i32 0, i32 1
  %2391 = load float, ptr %2390, align 4, !tbaa !14
  %2392 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2393 = load float, ptr %2392, align 4, !tbaa !11
  %2394 = fmul float %2391, %2393
  %2395 = call float @llvm.fmuladd.f32(float %2384, float %2386, float %2394)
  %2396 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2395, ptr %2396, align 4, !tbaa !14
  %2397 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2398 = load float, ptr %2397, align 4, !tbaa !11
  %2399 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2400 = load float, ptr %2399, align 4, !tbaa !11
  %2401 = fadd float %2398, %2400
  %2402 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2401, ptr %2402, align 4, !tbaa !11
  %2403 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2404 = load float, ptr %2403, align 4, !tbaa !14
  %2405 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2406 = load float, ptr %2405, align 4, !tbaa !14
  %2407 = fadd float %2404, %2406
  %2408 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2407, ptr %2408, align 4, !tbaa !14
  %2409 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2410 = load float, ptr %2409, align 4, !tbaa !11
  %2411 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %2410, ptr %2411, align 4, !tbaa !11
  %2412 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2413 = load float, ptr %2412, align 4, !tbaa !14
  %2414 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %2413, ptr %2414, align 4, !tbaa !14
  br label %2415

2415:                                             ; preds = %2349
  %2416 = load i64, ptr %46, align 8, !tbaa !9
  %2417 = add nsw i64 %2416, 1
  store i64 %2417, ptr %46, align 8, !tbaa !9
  br label %2345, !llvm.loop !47

2418:                                             ; preds = %2345
  %2419 = load ptr, ptr %25, align 8, !tbaa !5
  %2420 = getelementptr inbounds %struct.complex, ptr %2419, i32 0, i32 0
  %2421 = load float, ptr %2420, align 4, !tbaa !11
  %2422 = fcmp oeq float %2421, 0.000000e+00
  br i1 %2422, label %2423, label %2473

2423:                                             ; preds = %2418
  %2424 = load ptr, ptr %25, align 8, !tbaa !5
  %2425 = getelementptr inbounds %struct.complex, ptr %2424, i32 0, i32 1
  %2426 = load float, ptr %2425, align 4, !tbaa !14
  %2427 = fcmp oeq float %2426, 0.000000e+00
  br i1 %2427, label %2428, label %2473

2428:                                             ; preds = %2423
  %2429 = load i64, ptr %44, align 8, !tbaa !9
  %2430 = load i64, ptr %45, align 8, !tbaa !9
  %2431 = load i64, ptr %32, align 8, !tbaa !9
  %2432 = mul nsw i64 %2430, %2431
  %2433 = add nsw i64 %2429, %2432
  store i64 %2433, ptr %36, align 8, !tbaa !9
  %2434 = load ptr, ptr %20, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.complex, ptr %2434, i32 0, i32 0
  %2436 = load float, ptr %2435, align 4, !tbaa !11
  %2437 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2438 = load float, ptr %2437, align 4, !tbaa !11
  %2439 = load ptr, ptr %20, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.complex, ptr %2439, i32 0, i32 1
  %2441 = load float, ptr %2440, align 4, !tbaa !14
  %2442 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2443 = load float, ptr %2442, align 4, !tbaa !14
  %2444 = fmul float %2441, %2443
  %2445 = fneg float %2444
  %2446 = call float @llvm.fmuladd.f32(float %2436, float %2438, float %2445)
  %2447 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2446, ptr %2447, align 4, !tbaa !11
  %2448 = load ptr, ptr %20, align 8, !tbaa !5
  %2449 = getelementptr inbounds %struct.complex, ptr %2448, i32 0, i32 0
  %2450 = load float, ptr %2449, align 4, !tbaa !11
  %2451 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2452 = load float, ptr %2451, align 4, !tbaa !14
  %2453 = load ptr, ptr %20, align 8, !tbaa !5
  %2454 = getelementptr inbounds %struct.complex, ptr %2453, i32 0, i32 1
  %2455 = load float, ptr %2454, align 4, !tbaa !14
  %2456 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2457 = load float, ptr %2456, align 4, !tbaa !11
  %2458 = fmul float %2455, %2457
  %2459 = call float @llvm.fmuladd.f32(float %2450, float %2452, float %2458)
  %2460 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2459, ptr %2460, align 4, !tbaa !14
  %2461 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2462 = load float, ptr %2461, align 4, !tbaa !11
  %2463 = load ptr, ptr %26, align 8, !tbaa !5
  %2464 = load i64, ptr %36, align 8, !tbaa !9
  %2465 = getelementptr inbounds %struct.complex, ptr %2463, i64 %2464
  %2466 = getelementptr inbounds %struct.complex, ptr %2465, i32 0, i32 0
  store float %2462, ptr %2466, align 4, !tbaa !11
  %2467 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2468 = load float, ptr %2467, align 4, !tbaa !14
  %2469 = load ptr, ptr %26, align 8, !tbaa !5
  %2470 = load i64, ptr %36, align 8, !tbaa !9
  %2471 = getelementptr inbounds %struct.complex, ptr %2469, i64 %2470
  %2472 = getelementptr inbounds %struct.complex, ptr %2471, i32 0, i32 1
  store float %2468, ptr %2472, align 4, !tbaa !14
  br label %2574

2473:                                             ; preds = %2423, %2418
  %2474 = load i64, ptr %44, align 8, !tbaa !9
  %2475 = load i64, ptr %45, align 8, !tbaa !9
  %2476 = load i64, ptr %32, align 8, !tbaa !9
  %2477 = mul nsw i64 %2475, %2476
  %2478 = add nsw i64 %2474, %2477
  store i64 %2478, ptr %36, align 8, !tbaa !9
  %2479 = load ptr, ptr %20, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.complex, ptr %2479, i32 0, i32 0
  %2481 = load float, ptr %2480, align 4, !tbaa !11
  %2482 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2483 = load float, ptr %2482, align 4, !tbaa !11
  %2484 = load ptr, ptr %20, align 8, !tbaa !5
  %2485 = getelementptr inbounds %struct.complex, ptr %2484, i32 0, i32 1
  %2486 = load float, ptr %2485, align 4, !tbaa !14
  %2487 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2488 = load float, ptr %2487, align 4, !tbaa !14
  %2489 = fmul float %2486, %2488
  %2490 = fneg float %2489
  %2491 = call float @llvm.fmuladd.f32(float %2481, float %2483, float %2490)
  %2492 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2491, ptr %2492, align 4, !tbaa !11
  %2493 = load ptr, ptr %20, align 8, !tbaa !5
  %2494 = getelementptr inbounds %struct.complex, ptr %2493, i32 0, i32 0
  %2495 = load float, ptr %2494, align 4, !tbaa !11
  %2496 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2497 = load float, ptr %2496, align 4, !tbaa !14
  %2498 = load ptr, ptr %20, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.complex, ptr %2498, i32 0, i32 1
  %2500 = load float, ptr %2499, align 4, !tbaa !14
  %2501 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2502 = load float, ptr %2501, align 4, !tbaa !11
  %2503 = fmul float %2500, %2502
  %2504 = call float @llvm.fmuladd.f32(float %2495, float %2497, float %2503)
  %2505 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2504, ptr %2505, align 4, !tbaa !14
  %2506 = load i64, ptr %44, align 8, !tbaa !9
  %2507 = load i64, ptr %45, align 8, !tbaa !9
  %2508 = load i64, ptr %32, align 8, !tbaa !9
  %2509 = mul nsw i64 %2507, %2508
  %2510 = add nsw i64 %2506, %2509
  store i64 %2510, ptr %37, align 8, !tbaa !9
  %2511 = load ptr, ptr %25, align 8, !tbaa !5
  %2512 = getelementptr inbounds %struct.complex, ptr %2511, i32 0, i32 0
  %2513 = load float, ptr %2512, align 4, !tbaa !11
  %2514 = load ptr, ptr %26, align 8, !tbaa !5
  %2515 = load i64, ptr %37, align 8, !tbaa !9
  %2516 = getelementptr inbounds %struct.complex, ptr %2514, i64 %2515
  %2517 = getelementptr inbounds %struct.complex, ptr %2516, i32 0, i32 0
  %2518 = load float, ptr %2517, align 4, !tbaa !11
  %2519 = load ptr, ptr %25, align 8, !tbaa !5
  %2520 = getelementptr inbounds %struct.complex, ptr %2519, i32 0, i32 1
  %2521 = load float, ptr %2520, align 4, !tbaa !14
  %2522 = load ptr, ptr %26, align 8, !tbaa !5
  %2523 = load i64, ptr %37, align 8, !tbaa !9
  %2524 = getelementptr inbounds %struct.complex, ptr %2522, i64 %2523
  %2525 = getelementptr inbounds %struct.complex, ptr %2524, i32 0, i32 1
  %2526 = load float, ptr %2525, align 4, !tbaa !14
  %2527 = fmul float %2521, %2526
  %2528 = fneg float %2527
  %2529 = call float @llvm.fmuladd.f32(float %2513, float %2518, float %2528)
  %2530 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2529, ptr %2530, align 4, !tbaa !11
  %2531 = load ptr, ptr %25, align 8, !tbaa !5
  %2532 = getelementptr inbounds %struct.complex, ptr %2531, i32 0, i32 0
  %2533 = load float, ptr %2532, align 4, !tbaa !11
  %2534 = load ptr, ptr %26, align 8, !tbaa !5
  %2535 = load i64, ptr %37, align 8, !tbaa !9
  %2536 = getelementptr inbounds %struct.complex, ptr %2534, i64 %2535
  %2537 = getelementptr inbounds %struct.complex, ptr %2536, i32 0, i32 1
  %2538 = load float, ptr %2537, align 4, !tbaa !14
  %2539 = load ptr, ptr %25, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.complex, ptr %2539, i32 0, i32 1
  %2541 = load float, ptr %2540, align 4, !tbaa !14
  %2542 = load ptr, ptr %26, align 8, !tbaa !5
  %2543 = load i64, ptr %37, align 8, !tbaa !9
  %2544 = getelementptr inbounds %struct.complex, ptr %2542, i64 %2543
  %2545 = getelementptr inbounds %struct.complex, ptr %2544, i32 0, i32 0
  %2546 = load float, ptr %2545, align 4, !tbaa !11
  %2547 = fmul float %2541, %2546
  %2548 = call float @llvm.fmuladd.f32(float %2533, float %2538, float %2547)
  %2549 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2548, ptr %2549, align 4, !tbaa !14
  %2550 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2551 = load float, ptr %2550, align 4, !tbaa !11
  %2552 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2553 = load float, ptr %2552, align 4, !tbaa !11
  %2554 = fadd float %2551, %2553
  %2555 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2554, ptr %2555, align 4, !tbaa !11
  %2556 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2557 = load float, ptr %2556, align 4, !tbaa !14
  %2558 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2559 = load float, ptr %2558, align 4, !tbaa !14
  %2560 = fadd float %2557, %2559
  %2561 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2560, ptr %2561, align 4, !tbaa !14
  %2562 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2563 = load float, ptr %2562, align 4, !tbaa !11
  %2564 = load ptr, ptr %26, align 8, !tbaa !5
  %2565 = load i64, ptr %36, align 8, !tbaa !9
  %2566 = getelementptr inbounds %struct.complex, ptr %2564, i64 %2565
  %2567 = getelementptr inbounds %struct.complex, ptr %2566, i32 0, i32 0
  store float %2563, ptr %2567, align 4, !tbaa !11
  %2568 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2569 = load float, ptr %2568, align 4, !tbaa !14
  %2570 = load ptr, ptr %26, align 8, !tbaa !5
  %2571 = load i64, ptr %36, align 8, !tbaa !9
  %2572 = getelementptr inbounds %struct.complex, ptr %2570, i64 %2571
  %2573 = getelementptr inbounds %struct.complex, ptr %2572, i32 0, i32 1
  store float %2569, ptr %2573, align 4, !tbaa !14
  br label %2574

2574:                                             ; preds = %2473, %2428
  br label %2575

2575:                                             ; preds = %2574
  %2576 = load i64, ptr %44, align 8, !tbaa !9
  %2577 = add nsw i64 %2576, 1
  store i64 %2577, ptr %44, align 8, !tbaa !9
  br label %2336, !llvm.loop !48

2578:                                             ; preds = %2336
  br label %2579

2579:                                             ; preds = %2578
  %2580 = load i64, ptr %45, align 8, !tbaa !9
  %2581 = add nsw i64 %2580, 1
  store i64 %2581, ptr %45, align 8, !tbaa !9
  br label %2329, !llvm.loop !49

2582:                                             ; preds = %2329
  br label %2850

2583:                                             ; preds = %2323
  %2584 = load ptr, ptr %18, align 8, !tbaa !5
  %2585 = load i64, ptr %2584, align 8, !tbaa !9
  store i64 %2585, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %2586

2586:                                             ; preds = %2846, %2583
  %2587 = load i64, ptr %45, align 8, !tbaa !9
  %2588 = load i64, ptr %34, align 8, !tbaa !9
  %2589 = icmp sle i64 %2587, %2588
  br i1 %2589, label %2590, label %2849

2590:                                             ; preds = %2586
  %2591 = load ptr, ptr %17, align 8, !tbaa !5
  %2592 = load i64, ptr %2591, align 8, !tbaa !9
  store i64 %2592, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %2593

2593:                                             ; preds = %2842, %2590
  %2594 = load i64, ptr %44, align 8, !tbaa !9
  %2595 = load i64, ptr %35, align 8, !tbaa !9
  %2596 = icmp sle i64 %2594, %2595
  br i1 %2596, label %2597, label %2845

2597:                                             ; preds = %2593
  %2598 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float 0.000000e+00, ptr %2598, align 4, !tbaa !11
  %2599 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float 0.000000e+00, ptr %2599, align 4, !tbaa !14
  %2600 = load ptr, ptr %19, align 8, !tbaa !5
  %2601 = load i64, ptr %2600, align 8, !tbaa !9
  store i64 %2601, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %2602

2602:                                             ; preds = %2682, %2597
  %2603 = load i64, ptr %46, align 8, !tbaa !9
  %2604 = load i64, ptr %36, align 8, !tbaa !9
  %2605 = icmp sle i64 %2603, %2604
  br i1 %2605, label %2606, label %2685

2606:                                             ; preds = %2602
  %2607 = load i64, ptr %46, align 8, !tbaa !9
  %2608 = load i64, ptr %44, align 8, !tbaa !9
  %2609 = load i64, ptr %28, align 8, !tbaa !9
  %2610 = mul nsw i64 %2608, %2609
  %2611 = add nsw i64 %2607, %2610
  store i64 %2611, ptr %37, align 8, !tbaa !9
  %2612 = load i64, ptr %45, align 8, !tbaa !9
  %2613 = load i64, ptr %46, align 8, !tbaa !9
  %2614 = load i64, ptr %30, align 8, !tbaa !9
  %2615 = mul nsw i64 %2613, %2614
  %2616 = add nsw i64 %2612, %2615
  store i64 %2616, ptr %38, align 8, !tbaa !9
  %2617 = load ptr, ptr %21, align 8, !tbaa !5
  %2618 = load i64, ptr %37, align 8, !tbaa !9
  %2619 = getelementptr inbounds %struct.complex, ptr %2617, i64 %2618
  %2620 = getelementptr inbounds %struct.complex, ptr %2619, i32 0, i32 0
  %2621 = load float, ptr %2620, align 4, !tbaa !11
  %2622 = load ptr, ptr %23, align 8, !tbaa !5
  %2623 = load i64, ptr %38, align 8, !tbaa !9
  %2624 = getelementptr inbounds %struct.complex, ptr %2622, i64 %2623
  %2625 = getelementptr inbounds %struct.complex, ptr %2624, i32 0, i32 0
  %2626 = load float, ptr %2625, align 4, !tbaa !11
  %2627 = load ptr, ptr %21, align 8, !tbaa !5
  %2628 = load i64, ptr %37, align 8, !tbaa !9
  %2629 = getelementptr inbounds %struct.complex, ptr %2627, i64 %2628
  %2630 = getelementptr inbounds %struct.complex, ptr %2629, i32 0, i32 1
  %2631 = load float, ptr %2630, align 4, !tbaa !14
  %2632 = load ptr, ptr %23, align 8, !tbaa !5
  %2633 = load i64, ptr %38, align 8, !tbaa !9
  %2634 = getelementptr inbounds %struct.complex, ptr %2632, i64 %2633
  %2635 = getelementptr inbounds %struct.complex, ptr %2634, i32 0, i32 1
  %2636 = load float, ptr %2635, align 4, !tbaa !14
  %2637 = fmul float %2631, %2636
  %2638 = fneg float %2637
  %2639 = call float @llvm.fmuladd.f32(float %2621, float %2626, float %2638)
  %2640 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2639, ptr %2640, align 4, !tbaa !11
  %2641 = load ptr, ptr %21, align 8, !tbaa !5
  %2642 = load i64, ptr %37, align 8, !tbaa !9
  %2643 = getelementptr inbounds %struct.complex, ptr %2641, i64 %2642
  %2644 = getelementptr inbounds %struct.complex, ptr %2643, i32 0, i32 0
  %2645 = load float, ptr %2644, align 4, !tbaa !11
  %2646 = load ptr, ptr %23, align 8, !tbaa !5
  %2647 = load i64, ptr %38, align 8, !tbaa !9
  %2648 = getelementptr inbounds %struct.complex, ptr %2646, i64 %2647
  %2649 = getelementptr inbounds %struct.complex, ptr %2648, i32 0, i32 1
  %2650 = load float, ptr %2649, align 4, !tbaa !14
  %2651 = load ptr, ptr %21, align 8, !tbaa !5
  %2652 = load i64, ptr %37, align 8, !tbaa !9
  %2653 = getelementptr inbounds %struct.complex, ptr %2651, i64 %2652
  %2654 = getelementptr inbounds %struct.complex, ptr %2653, i32 0, i32 1
  %2655 = load float, ptr %2654, align 4, !tbaa !14
  %2656 = load ptr, ptr %23, align 8, !tbaa !5
  %2657 = load i64, ptr %38, align 8, !tbaa !9
  %2658 = getelementptr inbounds %struct.complex, ptr %2656, i64 %2657
  %2659 = getelementptr inbounds %struct.complex, ptr %2658, i32 0, i32 0
  %2660 = load float, ptr %2659, align 4, !tbaa !11
  %2661 = fmul float %2655, %2660
  %2662 = call float @llvm.fmuladd.f32(float %2645, float %2650, float %2661)
  %2663 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2662, ptr %2663, align 4, !tbaa !14
  %2664 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2665 = load float, ptr %2664, align 4, !tbaa !11
  %2666 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2667 = load float, ptr %2666, align 4, !tbaa !11
  %2668 = fadd float %2665, %2667
  %2669 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2668, ptr %2669, align 4, !tbaa !11
  %2670 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2671 = load float, ptr %2670, align 4, !tbaa !14
  %2672 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2673 = load float, ptr %2672, align 4, !tbaa !14
  %2674 = fadd float %2671, %2673
  %2675 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2674, ptr %2675, align 4, !tbaa !14
  %2676 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2677 = load float, ptr %2676, align 4, !tbaa !11
  %2678 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %2677, ptr %2678, align 4, !tbaa !11
  %2679 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2680 = load float, ptr %2679, align 4, !tbaa !14
  %2681 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %2680, ptr %2681, align 4, !tbaa !14
  br label %2682

2682:                                             ; preds = %2606
  %2683 = load i64, ptr %46, align 8, !tbaa !9
  %2684 = add nsw i64 %2683, 1
  store i64 %2684, ptr %46, align 8, !tbaa !9
  br label %2602, !llvm.loop !50

2685:                                             ; preds = %2602
  %2686 = load ptr, ptr %25, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.complex, ptr %2686, i32 0, i32 0
  %2688 = load float, ptr %2687, align 4, !tbaa !11
  %2689 = fcmp oeq float %2688, 0.000000e+00
  br i1 %2689, label %2690, label %2740

2690:                                             ; preds = %2685
  %2691 = load ptr, ptr %25, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.complex, ptr %2691, i32 0, i32 1
  %2693 = load float, ptr %2692, align 4, !tbaa !14
  %2694 = fcmp oeq float %2693, 0.000000e+00
  br i1 %2694, label %2695, label %2740

2695:                                             ; preds = %2690
  %2696 = load i64, ptr %44, align 8, !tbaa !9
  %2697 = load i64, ptr %45, align 8, !tbaa !9
  %2698 = load i64, ptr %32, align 8, !tbaa !9
  %2699 = mul nsw i64 %2697, %2698
  %2700 = add nsw i64 %2696, %2699
  store i64 %2700, ptr %36, align 8, !tbaa !9
  %2701 = load ptr, ptr %20, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.complex, ptr %2701, i32 0, i32 0
  %2703 = load float, ptr %2702, align 4, !tbaa !11
  %2704 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2705 = load float, ptr %2704, align 4, !tbaa !11
  %2706 = load ptr, ptr %20, align 8, !tbaa !5
  %2707 = getelementptr inbounds %struct.complex, ptr %2706, i32 0, i32 1
  %2708 = load float, ptr %2707, align 4, !tbaa !14
  %2709 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2710 = load float, ptr %2709, align 4, !tbaa !14
  %2711 = fmul float %2708, %2710
  %2712 = fneg float %2711
  %2713 = call float @llvm.fmuladd.f32(float %2703, float %2705, float %2712)
  %2714 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2713, ptr %2714, align 4, !tbaa !11
  %2715 = load ptr, ptr %20, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.complex, ptr %2715, i32 0, i32 0
  %2717 = load float, ptr %2716, align 4, !tbaa !11
  %2718 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2719 = load float, ptr %2718, align 4, !tbaa !14
  %2720 = load ptr, ptr %20, align 8, !tbaa !5
  %2721 = getelementptr inbounds %struct.complex, ptr %2720, i32 0, i32 1
  %2722 = load float, ptr %2721, align 4, !tbaa !14
  %2723 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2724 = load float, ptr %2723, align 4, !tbaa !11
  %2725 = fmul float %2722, %2724
  %2726 = call float @llvm.fmuladd.f32(float %2717, float %2719, float %2725)
  %2727 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2726, ptr %2727, align 4, !tbaa !14
  %2728 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2729 = load float, ptr %2728, align 4, !tbaa !11
  %2730 = load ptr, ptr %26, align 8, !tbaa !5
  %2731 = load i64, ptr %36, align 8, !tbaa !9
  %2732 = getelementptr inbounds %struct.complex, ptr %2730, i64 %2731
  %2733 = getelementptr inbounds %struct.complex, ptr %2732, i32 0, i32 0
  store float %2729, ptr %2733, align 4, !tbaa !11
  %2734 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2735 = load float, ptr %2734, align 4, !tbaa !14
  %2736 = load ptr, ptr %26, align 8, !tbaa !5
  %2737 = load i64, ptr %36, align 8, !tbaa !9
  %2738 = getelementptr inbounds %struct.complex, ptr %2736, i64 %2737
  %2739 = getelementptr inbounds %struct.complex, ptr %2738, i32 0, i32 1
  store float %2735, ptr %2739, align 4, !tbaa !14
  br label %2841

2740:                                             ; preds = %2690, %2685
  %2741 = load i64, ptr %44, align 8, !tbaa !9
  %2742 = load i64, ptr %45, align 8, !tbaa !9
  %2743 = load i64, ptr %32, align 8, !tbaa !9
  %2744 = mul nsw i64 %2742, %2743
  %2745 = add nsw i64 %2741, %2744
  store i64 %2745, ptr %36, align 8, !tbaa !9
  %2746 = load ptr, ptr %20, align 8, !tbaa !5
  %2747 = getelementptr inbounds %struct.complex, ptr %2746, i32 0, i32 0
  %2748 = load float, ptr %2747, align 4, !tbaa !11
  %2749 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2750 = load float, ptr %2749, align 4, !tbaa !11
  %2751 = load ptr, ptr %20, align 8, !tbaa !5
  %2752 = getelementptr inbounds %struct.complex, ptr %2751, i32 0, i32 1
  %2753 = load float, ptr %2752, align 4, !tbaa !14
  %2754 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2755 = load float, ptr %2754, align 4, !tbaa !14
  %2756 = fmul float %2753, %2755
  %2757 = fneg float %2756
  %2758 = call float @llvm.fmuladd.f32(float %2748, float %2750, float %2757)
  %2759 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2758, ptr %2759, align 4, !tbaa !11
  %2760 = load ptr, ptr %20, align 8, !tbaa !5
  %2761 = getelementptr inbounds %struct.complex, ptr %2760, i32 0, i32 0
  %2762 = load float, ptr %2761, align 4, !tbaa !11
  %2763 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %2764 = load float, ptr %2763, align 4, !tbaa !14
  %2765 = load ptr, ptr %20, align 8, !tbaa !5
  %2766 = getelementptr inbounds %struct.complex, ptr %2765, i32 0, i32 1
  %2767 = load float, ptr %2766, align 4, !tbaa !14
  %2768 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %2769 = load float, ptr %2768, align 4, !tbaa !11
  %2770 = fmul float %2767, %2769
  %2771 = call float @llvm.fmuladd.f32(float %2762, float %2764, float %2770)
  %2772 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2771, ptr %2772, align 4, !tbaa !14
  %2773 = load i64, ptr %44, align 8, !tbaa !9
  %2774 = load i64, ptr %45, align 8, !tbaa !9
  %2775 = load i64, ptr %32, align 8, !tbaa !9
  %2776 = mul nsw i64 %2774, %2775
  %2777 = add nsw i64 %2773, %2776
  store i64 %2777, ptr %37, align 8, !tbaa !9
  %2778 = load ptr, ptr %25, align 8, !tbaa !5
  %2779 = getelementptr inbounds %struct.complex, ptr %2778, i32 0, i32 0
  %2780 = load float, ptr %2779, align 4, !tbaa !11
  %2781 = load ptr, ptr %26, align 8, !tbaa !5
  %2782 = load i64, ptr %37, align 8, !tbaa !9
  %2783 = getelementptr inbounds %struct.complex, ptr %2781, i64 %2782
  %2784 = getelementptr inbounds %struct.complex, ptr %2783, i32 0, i32 0
  %2785 = load float, ptr %2784, align 4, !tbaa !11
  %2786 = load ptr, ptr %25, align 8, !tbaa !5
  %2787 = getelementptr inbounds %struct.complex, ptr %2786, i32 0, i32 1
  %2788 = load float, ptr %2787, align 4, !tbaa !14
  %2789 = load ptr, ptr %26, align 8, !tbaa !5
  %2790 = load i64, ptr %37, align 8, !tbaa !9
  %2791 = getelementptr inbounds %struct.complex, ptr %2789, i64 %2790
  %2792 = getelementptr inbounds %struct.complex, ptr %2791, i32 0, i32 1
  %2793 = load float, ptr %2792, align 4, !tbaa !14
  %2794 = fmul float %2788, %2793
  %2795 = fneg float %2794
  %2796 = call float @llvm.fmuladd.f32(float %2780, float %2785, float %2795)
  %2797 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2796, ptr %2797, align 4, !tbaa !11
  %2798 = load ptr, ptr %25, align 8, !tbaa !5
  %2799 = getelementptr inbounds %struct.complex, ptr %2798, i32 0, i32 0
  %2800 = load float, ptr %2799, align 4, !tbaa !11
  %2801 = load ptr, ptr %26, align 8, !tbaa !5
  %2802 = load i64, ptr %37, align 8, !tbaa !9
  %2803 = getelementptr inbounds %struct.complex, ptr %2801, i64 %2802
  %2804 = getelementptr inbounds %struct.complex, ptr %2803, i32 0, i32 1
  %2805 = load float, ptr %2804, align 4, !tbaa !14
  %2806 = load ptr, ptr %25, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.complex, ptr %2806, i32 0, i32 1
  %2808 = load float, ptr %2807, align 4, !tbaa !14
  %2809 = load ptr, ptr %26, align 8, !tbaa !5
  %2810 = load i64, ptr %37, align 8, !tbaa !9
  %2811 = getelementptr inbounds %struct.complex, ptr %2809, i64 %2810
  %2812 = getelementptr inbounds %struct.complex, ptr %2811, i32 0, i32 0
  %2813 = load float, ptr %2812, align 4, !tbaa !11
  %2814 = fmul float %2808, %2813
  %2815 = call float @llvm.fmuladd.f32(float %2800, float %2805, float %2814)
  %2816 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2815, ptr %2816, align 4, !tbaa !14
  %2817 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2818 = load float, ptr %2817, align 4, !tbaa !11
  %2819 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2820 = load float, ptr %2819, align 4, !tbaa !11
  %2821 = fadd float %2818, %2820
  %2822 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %2821, ptr %2822, align 4, !tbaa !11
  %2823 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2824 = load float, ptr %2823, align 4, !tbaa !14
  %2825 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2826 = load float, ptr %2825, align 4, !tbaa !14
  %2827 = fadd float %2824, %2826
  %2828 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %2827, ptr %2828, align 4, !tbaa !14
  %2829 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %2830 = load float, ptr %2829, align 4, !tbaa !11
  %2831 = load ptr, ptr %26, align 8, !tbaa !5
  %2832 = load i64, ptr %36, align 8, !tbaa !9
  %2833 = getelementptr inbounds %struct.complex, ptr %2831, i64 %2832
  %2834 = getelementptr inbounds %struct.complex, ptr %2833, i32 0, i32 0
  store float %2830, ptr %2834, align 4, !tbaa !11
  %2835 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %2836 = load float, ptr %2835, align 4, !tbaa !14
  %2837 = load ptr, ptr %26, align 8, !tbaa !5
  %2838 = load i64, ptr %36, align 8, !tbaa !9
  %2839 = getelementptr inbounds %struct.complex, ptr %2837, i64 %2838
  %2840 = getelementptr inbounds %struct.complex, ptr %2839, i32 0, i32 1
  store float %2836, ptr %2840, align 4, !tbaa !14
  br label %2841

2841:                                             ; preds = %2740, %2695
  br label %2842

2842:                                             ; preds = %2841
  %2843 = load i64, ptr %44, align 8, !tbaa !9
  %2844 = add nsw i64 %2843, 1
  store i64 %2844, ptr %44, align 8, !tbaa !9
  br label %2593, !llvm.loop !51

2845:                                             ; preds = %2593
  br label %2846

2846:                                             ; preds = %2845
  %2847 = load i64, ptr %45, align 8, !tbaa !9
  %2848 = add nsw i64 %2847, 1
  store i64 %2848, ptr %45, align 8, !tbaa !9
  br label %2586, !llvm.loop !52

2849:                                             ; preds = %2586
  br label %2850

2850:                                             ; preds = %2849, %2582
  br label %2851

2851:                                             ; preds = %2850, %2322
  br label %2852

2852:                                             ; preds = %2851, %1811
  br label %2853

2853:                                             ; preds = %2852, %1208
  store i32 0, ptr %14, align 4
  store i32 1, ptr %56, align 4
  br label %2854

2854:                                             ; preds = %2853, %370, %229, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  %2855 = load i32, ptr %14, align 4
  ret i32 %2855
}

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

declare void @r_cnjg(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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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


; 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.complex = type { float, float }

@.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 [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @f2c_cgemm(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr noundef %11, ptr nocapture noundef readonly %12) local_unnamed_addr #0 {
  %14 = alloca %struct.complex, align 8
  %15 = alloca %struct.complex, align 8
  %16 = alloca %struct.complex, align 8
  %17 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %18 = load i64, ptr %7, align 8, !tbaa !5
  %19 = xor i64 %18, -1
  %20 = getelementptr inbounds %struct.complex, ptr %6, i64 %19
  %21 = load i64, ptr %9, align 8, !tbaa !5
  %22 = xor i64 %21, -1
  %23 = getelementptr inbounds %struct.complex, ptr %8, i64 %22
  %24 = load i64, ptr %12, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds %struct.complex, ptr %11, i64 %25
  %27 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %28 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %29 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %30 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %31 = icmp ne i64 %27, 0
  %. = select i1 %31, ptr %2, ptr %4
  %.0930 = load i64, ptr %., align 8, !tbaa !5
  %32 = icmp ne i64 %28, 0
  %.0.in = select i1 %32, ptr %4, ptr %3
  %.0 = load i64, ptr %.0.in, align 8, !tbaa !5
  store i64 0, ptr %17, align 8, !tbaa !5
  %33 = icmp ne i64 %29, 0
  %or.cond = select i1 %31, i1 true, i1 %33
  br i1 %or.cond, label %37, label %34

34:                                               ; preds = %13
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not = icmp eq i64 %35, 0
  br i1 %.not, label %36, label %37

36:                                               ; preds = %34
  store i64 1, ptr %17, align 8, !tbaa !5
  br label %.thread

37:                                               ; preds = %34, %13
  %38 = icmp ne i64 %30, 0
  %or.cond3 = select i1 %32, i1 true, i1 %38
  br i1 %or.cond3, label %42, label %39

39:                                               ; preds = %37
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not954 = icmp eq i64 %40, 0
  br i1 %.not954, label %41, label %42

41:                                               ; preds = %39
  store i64 2, ptr %17, align 8, !tbaa !5
  br label %.thread

42:                                               ; preds = %39, %37
  %43 = load i64, ptr %2, align 8, !tbaa !5
  %44 = icmp slt i64 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %42
  store i64 3, ptr %17, align 8, !tbaa !5
  br label %.thread

46:                                               ; preds = %42
  %47 = load i64, ptr %3, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 0
  br i1 %48, label %49, label %50

49:                                               ; preds = %46
  store i64 4, ptr %17, align 8, !tbaa !5
  br label %.thread

50:                                               ; preds = %46
  %51 = load i64, ptr %4, align 8, !tbaa !5
  %52 = icmp slt i64 %51, 0
  br i1 %52, label %53, label %54

53:                                               ; preds = %50
  store i64 5, ptr %17, align 8, !tbaa !5
  br label %.thread

54:                                               ; preds = %50
  %55 = load i64, ptr %7, align 8, !tbaa !5
  %56 = tail call i64 @llvm.smax.i64(i64 %.0930, i64 1)
  %57 = icmp slt i64 %55, %56
  br i1 %57, label %58, label %59

58:                                               ; preds = %54
  store i64 8, ptr %17, align 8, !tbaa !5
  br label %.thread

59:                                               ; preds = %54
  %60 = load i64, ptr %9, align 8, !tbaa !5
  %61 = tail call i64 @llvm.smax.i64(i64 %.0, i64 1)
  %62 = icmp slt i64 %60, %61
  br i1 %62, label %63, label %64

63:                                               ; preds = %59
  store i64 10, ptr %17, align 8, !tbaa !5
  br label %.thread

64:                                               ; preds = %59
  %65 = load i64, ptr %12, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %43, i64 1)
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %67, label %69

67:                                               ; preds = %64
  store i64 13, ptr %17, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %36, %45, %53, %63, %67, %58, %49, %41
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %17) #6
  br label %.loopexit

69:                                               ; preds = %64
  %70 = icmp eq i64 %43, 0
  %71 = icmp eq i64 %47, 0
  %or.cond1578 = or i1 %70, %71
  br i1 %or.cond1578, label %.loopexit, label %72

72:                                               ; preds = %69
  %73 = load float, ptr %5, align 4, !tbaa !9
  %74 = fcmp oeq float %73, 0.000000e+00
  br i1 %74, label %75, label %80

75:                                               ; preds = %72
  %76 = getelementptr inbounds i8, ptr %5, i64 4
  %77 = load float, ptr %76, align 4, !tbaa !12
  %78 = fcmp oeq float %77, 0.000000e+00
  %79 = icmp eq i64 %51, 0
  %or.cond1579 = or i1 %78, %79
  br i1 %or.cond1579, label %81, label %88

80:                                               ; preds = %72
  %.old = icmp eq i64 %51, 0
  br i1 %.old, label %81, label %88

81:                                               ; preds = %80, %75
  %82 = load float, ptr %10, align 4, !tbaa !9
  %83 = fcmp oeq float %82, 1.000000e+00
  br i1 %83, label %84, label %88

84:                                               ; preds = %81
  %85 = getelementptr inbounds i8, ptr %10, i64 4
  %86 = load float, ptr %85, align 4, !tbaa !12
  %87 = fcmp oeq float %86, 0.000000e+00
  br i1 %87, label %.loopexit, label %88

88:                                               ; preds = %75, %84, %81, %80
  br i1 %74, label %89, label %152

89:                                               ; preds = %88
  %90 = getelementptr inbounds i8, ptr %5, i64 4
  %91 = load float, ptr %90, align 4, !tbaa !12
  %92 = fcmp oeq float %91, 0.000000e+00
  br i1 %92, label %93, label %152

93:                                               ; preds = %89
  %94 = load float, ptr %10, align 4, !tbaa !9
  %95 = fcmp oeq float %94, 0.000000e+00
  br i1 %95, label %96, label %.preheader998.preheader

96:                                               ; preds = %93
  %97 = getelementptr inbounds i8, ptr %10, i64 4
  %98 = load float, ptr %97, align 4, !tbaa !12
  %99 = fcmp oeq float %98, 0.000000e+00
  br i1 %99, label %.preheader.preheader, label %.preheader998.preheader

.preheader.preheader:                             ; preds = %96
  %100 = shl i64 %24, 3
  %101 = shl nuw i64 %43, 3
  %102 = add nsw i64 %47, -1
  %xtraiter1985 = and i64 %47, 7
  %103 = icmp ult i64 %102, 7
  br i1 %103, label %.loopexit.loopexit.unr-lcssa, label %.preheader.preheader.new

.preheader.preheader.new:                         ; preds = %.preheader.preheader
  %unroll_iter1987 = and i64 %47, 9223372036854775800
  br label %.preheader

.preheader:                                       ; preds = %.preheader, %.preheader.preheader.new
  %indvar1489 = phi i64 [ 0, %.preheader.preheader.new ], [ %indvar.next1490.7, %.preheader ]
  %niter1988 = phi i64 [ 0, %.preheader.preheader.new ], [ %niter1988.next.7, %.preheader ]
  %104 = mul i64 %100, %indvar1489
  %scevgep1491 = getelementptr i8, ptr %11, i64 %104
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490 = or disjoint i64 %indvar1489, 1
  %105 = mul i64 %100, %indvar.next1490
  %scevgep1491.1 = getelementptr i8, ptr %11, i64 %105
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.1, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.1 = or disjoint i64 %indvar1489, 2
  %106 = mul i64 %100, %indvar.next1490.1
  %scevgep1491.2 = getelementptr i8, ptr %11, i64 %106
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.2, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.2 = or disjoint i64 %indvar1489, 3
  %107 = mul i64 %100, %indvar.next1490.2
  %scevgep1491.3 = getelementptr i8, ptr %11, i64 %107
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.3, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.3 = or disjoint i64 %indvar1489, 4
  %108 = mul i64 %100, %indvar.next1490.3
  %scevgep1491.4 = getelementptr i8, ptr %11, i64 %108
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.4, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.4 = or disjoint i64 %indvar1489, 5
  %109 = mul i64 %100, %indvar.next1490.4
  %scevgep1491.5 = getelementptr i8, ptr %11, i64 %109
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.5, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.5 = or disjoint i64 %indvar1489, 6
  %110 = mul i64 %100, %indvar.next1490.5
  %scevgep1491.6 = getelementptr i8, ptr %11, i64 %110
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.6, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.6 = or disjoint i64 %indvar1489, 7
  %111 = mul i64 %100, %indvar.next1490.6
  %scevgep1491.7 = getelementptr i8, ptr %11, i64 %111
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.7, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.7 = add nuw nsw i64 %indvar1489, 8
  %niter1988.next.7 = add i64 %niter1988, 8
  %niter1988.ncmp.7 = icmp eq i64 %niter1988.next.7, %unroll_iter1987
  br i1 %niter1988.ncmp.7, label %.loopexit.loopexit.unr-lcssa, label %.preheader, !llvm.loop !14

.preheader998.preheader:                          ; preds = %96, %93
  %112 = getelementptr i8, ptr %10, i64 4
  %113 = add nsw i64 %43, -1
  %114 = shl i64 %24, 3
  %115 = add nuw i64 %47, 2305843009213693951
  %116 = mul i64 %24, %115
  %117 = add i64 %116, %43
  %118 = shl i64 %117, 3
  %119 = getelementptr i8, ptr %11, i64 %118
  %scevgep1904 = getelementptr i8, ptr %119, i64 -4
  %scevgep1905 = getelementptr i8, ptr %11, i64 4
  %scevgep1906 = getelementptr i8, ptr %11, i64 %118
  %scevgep1907 = getelementptr i8, ptr %10, i64 8
  %min.iters.check1919 = icmp ult i64 %43, 8
  %mul.result1897 = shl i64 %113, 3
  %mul.result1901 = shl i64 %113, 3
  %mul.overflow1902 = icmp ugt i64 %113, 2305843009213693951
  %bound01908 = icmp ugt ptr %112, %11
  %bound11909 = icmp ugt ptr %scevgep1904, %10
  %found.conflict1910 = and i1 %bound01908, %bound11909
  %bound01912 = icmp ult ptr %scevgep1905, %scevgep1907
  %bound11913 = icmp ult ptr %112, %scevgep1906
  %found.conflict1914 = and i1 %bound01912, %bound11913
  %.mask1941 = and i64 %24, 1152921504606846976
  %stride.check1915 = icmp ne i64 %.mask1941, 0
  %120 = or i1 %found.conflict1914, %stride.check1915
  %conflict.rdx1916 = or i1 %found.conflict1910, %120
  %n.vec1922 = and i64 %43, 4611686018427387900
  %ind.end1923 = or disjoint i64 %n.vec1922, 1
  %cmp.n1937 = icmp eq i64 %43, %n.vec1922
  br label %.preheader998

.preheader998:                                    ; preds = %.preheader998.preheader, %._crit_edge1380
  %indvar1893 = phi i64 [ 0, %.preheader998.preheader ], [ %indvar.next1894, %._crit_edge1380 ]
  %.19341384 = phi i64 [ 1, %.preheader998.preheader ], [ %151, %._crit_edge1380 ]
  %121 = mul nsw i64 %.19341384, %24
  %invariant.gep1381 = getelementptr %struct.complex, ptr %26, i64 %121
  br i1 %min.iters.check1919, label %scalar.ph1918.preheader, label %vector.scevcheck1892

vector.scevcheck1892:                             ; preds = %.preheader998
  %122 = mul i64 %114, %indvar1893
  %123 = or disjoint i64 %122, 4
  %scevgep1899 = getelementptr i8, ptr %11, i64 %123
  %scevgep1895 = getelementptr i8, ptr %11, i64 %122
  %124 = getelementptr i8, ptr %scevgep1895, i64 %mul.result1897
  %125 = icmp ult ptr %124, %scevgep1895
  %126 = getelementptr i8, ptr %scevgep1899, i64 %mul.result1901
  %127 = icmp ult ptr %126, %scevgep1899
  %128 = or i1 %127, %mul.overflow1902
  %129 = or i1 %125, %128
  %brmerge = select i1 %129, i1 true, i1 %conflict.rdx1916
  br i1 %brmerge, label %scalar.ph1918.preheader, label %vector.body1925

vector.body1925:                                  ; preds = %vector.scevcheck1892, %vector.body1925
  %index1926 = phi i64 [ %index.next1936, %vector.body1925 ], [ 0, %vector.scevcheck1892 ]
  %offset.idx1927 = or disjoint i64 %index1926, 1
  %130 = load float, ptr %10, align 4, !tbaa !9, !alias.scope !16
  %broadcast.splatinsert1933 = insertelement <4 x float> poison, float %130, i64 0
  %broadcast.splat1934 = shufflevector <4 x float> %broadcast.splatinsert1933, <4 x float> poison, <4 x i32> zeroinitializer
  %131 = getelementptr %struct.complex, ptr %invariant.gep1381, i64 %offset.idx1927
  %wide.vec1928 = load <8 x float>, ptr %131, align 4, !tbaa !13
  %strided.vec1929 = shufflevector <8 x float> %wide.vec1928, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1930 = shufflevector <8 x float> %wide.vec1928, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %132 = load float, ptr %112, align 4, !tbaa !12, !alias.scope !19
  %broadcast.splatinsert1931 = insertelement <4 x float> poison, float %132, i64 0
  %broadcast.splat1932 = shufflevector <4 x float> %broadcast.splatinsert1931, <4 x float> poison, <4 x i32> zeroinitializer
  %133 = fneg <4 x float> %broadcast.splat1932
  %134 = fmul <4 x float> %strided.vec1930, %133
  %135 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1934, <4 x float> %strided.vec1929, <4 x float> %134)
  %136 = fmul <4 x float> %strided.vec1929, %broadcast.splat1932
  %137 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1934, <4 x float> %strided.vec1930, <4 x float> %136)
  %interleaved.vec1935 = shufflevector <4 x float> %135, <4 x float> %137, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1935, ptr %131, align 4, !tbaa !13
  %index.next1936 = add nuw i64 %index1926, 4
  %138 = icmp eq i64 %index.next1936, %n.vec1922
  br i1 %138, label %middle.block1917, label %vector.body1925, !llvm.loop !21

middle.block1917:                                 ; preds = %vector.body1925
  br i1 %cmp.n1937, label %._crit_edge1380, label %scalar.ph1918.preheader

scalar.ph1918.preheader:                          ; preds = %vector.scevcheck1892, %middle.block1917, %.preheader998
  %.19431378.ph = phi i64 [ 1, %vector.scevcheck1892 ], [ 1, %.preheader998 ], [ %ind.end1923, %middle.block1917 ]
  br label %scalar.ph1918

scalar.ph1918:                                    ; preds = %scalar.ph1918.preheader, %scalar.ph1918
  %.19431378 = phi i64 [ %150, %scalar.ph1918 ], [ %.19431378.ph, %scalar.ph1918.preheader ]
  %139 = load float, ptr %10, align 4, !tbaa !9
  %gep1382 = getelementptr %struct.complex, ptr %invariant.gep1381, i64 %.19431378
  %140 = load float, ptr %112, align 4, !tbaa !12
  %141 = fneg float %140
  %142 = load <2 x float>, ptr %gep1382, align 4, !tbaa !13
  %143 = insertelement <2 x float> poison, float %140, i64 0
  %144 = insertelement <2 x float> %143, float %141, i64 1
  %145 = fmul <2 x float> %142, %144
  %146 = shufflevector <2 x float> %145, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %147 = insertelement <2 x float> poison, float %139, i64 0
  %148 = shufflevector <2 x float> %147, <2 x float> poison, <2 x i32> zeroinitializer
  %149 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %148, <2 x float> %142, <2 x float> %146)
  store <2 x float> %149, ptr %gep1382, align 4, !tbaa !13
  %150 = add nuw i64 %.19431378, 1
  %exitcond1487.not = icmp eq i64 %.19431378, %43
  br i1 %exitcond1487.not, label %._crit_edge1380, label %scalar.ph1918, !llvm.loop !24

._crit_edge1380:                                  ; preds = %scalar.ph1918, %middle.block1917
  %151 = add nuw i64 %.19341384, 1
  %exitcond1488.not = icmp eq i64 %.19341384, %47
  %indvar.next1894 = add i64 %indvar1893, 1
  br i1 %exitcond1488.not, label %.loopexit, label %.preheader998, !llvm.loop !25

152:                                              ; preds = %89, %88
  br i1 %32, label %153, label %490

153:                                              ; preds = %152
  br i1 %31, label %.lr.ph1372, label %296

.lr.ph1372:                                       ; preds = %153
  %154 = getelementptr i8, ptr %10, i64 4
  %.not9901352 = icmp eq i64 %51, 0
  %155 = getelementptr inbounds i8, ptr %5, i64 4
  %156 = shl i64 %24, 3
  %157 = shl nuw i64 %43, 3
  %158 = add nsw i64 %43, -1
  %159 = shl i64 %24, 3
  %160 = shl i64 %24, 3
  %161 = shl i64 %43, 3
  %162 = add nuw i64 %51, 2305843009213693951
  %163 = mul i64 %18, %162
  %164 = add i64 %163, %43
  %165 = shl i64 %164, 3
  %166 = getelementptr i8, ptr %6, i64 %165
  %scevgep1808 = getelementptr i8, ptr %166, i64 -4
  %scevgep1811 = getelementptr i8, ptr %6, i64 4
  %scevgep1812 = getelementptr i8, ptr %6, i64 %165
  %167 = add nsw i64 %43, -1
  %168 = shl i64 %24, 3
  %169 = add nuw i64 %47, 2305843009213693951
  %170 = mul i64 %24, %169
  %171 = add i64 %170, %43
  %172 = shl i64 %171, 3
  %173 = getelementptr i8, ptr %11, i64 %172
  %scevgep1858 = getelementptr i8, ptr %173, i64 -4
  %scevgep1859 = getelementptr i8, ptr %11, i64 4
  %scevgep1860 = getelementptr i8, ptr %11, i64 %172
  %scevgep1861 = getelementptr i8, ptr %10, i64 8
  %174 = getelementptr i8, ptr %11, i64 %161
  %175 = getelementptr i8, ptr %174, i64 -4
  %176 = getelementptr i8, ptr %11, i64 %161
  %min.iters.check1873 = icmp ult i64 %43, 8
  %mul.result1851 = shl i64 %167, 3
  %mul.result1855 = shl i64 %167, 3
  %mul.overflow1856 = icmp ugt i64 %167, 2305843009213693951
  %bound01862 = icmp ugt ptr %154, %11
  %bound11863 = icmp ugt ptr %scevgep1858, %10
  %found.conflict1864 = and i1 %bound01862, %bound11863
  %bound01866 = icmp ult ptr %scevgep1859, %scevgep1861
  %bound11867 = icmp ult ptr %154, %scevgep1860
  %found.conflict1868 = and i1 %bound01866, %bound11867
  %.mask1939 = and i64 %24, 1152921504606846976
  %stride.check1869 = icmp ne i64 %.mask1939, 0
  %177 = or i1 %found.conflict1868, %stride.check1869
  %conflict.rdx1870 = or i1 %found.conflict1864, %177
  %n.vec1876 = and i64 %43, 4611686018427387900
  %ind.end1877 = or disjoint i64 %n.vec1876, 1
  %cmp.n1891 = icmp eq i64 %43, %n.vec1876
  %min.iters.check1824 = icmp ult i64 %43, 8
  %mul.result1799 = shl i64 %158, 3
  %mul.result1803 = shl i64 %158, 3
  %mul.overflow1804 = icmp ugt i64 %158, 2305843009213693951
  %.mask1940 = and i64 %18, 1152921504606846976
  %stride.check1820 = icmp ne i64 %.mask1940, 0
  %n.vec1827 = and i64 %43, 4611686018427387900
  %ind.end1828 = or disjoint i64 %n.vec1827, 1
  %cmp.n1847 = icmp eq i64 %43, %n.vec1827
  %xtraiter1983 = and i64 %43, 1
  %lcmp.mod1984.not = icmp eq i64 %xtraiter1983, 0
  br label %178

178:                                              ; preds = %.lr.ph1372, %._crit_edge1358
  %indvar1481 = phi i64 [ 0, %.lr.ph1372 ], [ %indvar.next1482, %._crit_edge1358 ]
  %.29351370 = phi i64 [ 1, %.lr.ph1372 ], [ %295, %._crit_edge1358 ]
  %179 = phi <2 x float> [ undef, %.lr.ph1372 ], [ %294, %._crit_edge1358 ]
  %180 = mul i64 %168, %indvar1481
  %scevgep1849 = getelementptr i8, ptr %11, i64 %180
  %181 = or disjoint i64 %180, 4
  %scevgep1853 = getelementptr i8, ptr %11, i64 %181
  %182 = mul i64 %160, %indvar1481
  %scevgep1806 = getelementptr i8, ptr %11, i64 %182
  %scevgep1807 = getelementptr i8, ptr %175, i64 %182
  %183 = or disjoint i64 %182, 4
  %scevgep1809 = getelementptr i8, ptr %11, i64 %183
  %scevgep1810 = getelementptr i8, ptr %176, i64 %182
  %184 = mul i64 %159, %indvar1481
  %scevgep1797 = getelementptr i8, ptr %11, i64 %184
  %185 = or disjoint i64 %184, 4
  %scevgep1801 = getelementptr i8, ptr %11, i64 %185
  %186 = mul i64 %156, %indvar1481
  %scevgep1483 = getelementptr i8, ptr %11, i64 %186
  %187 = load float, ptr %10, align 4, !tbaa !9
  %188 = fcmp oeq float %187, 0.000000e+00
  br i1 %188, label %189, label %192

189:                                              ; preds = %178
  %190 = load float, ptr %154, align 4, !tbaa !12
  %191 = fcmp oeq float %190, 0.000000e+00
  br i1 %191, label %.lr.ph1334, label %192

.lr.ph1334:                                       ; preds = %189
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1483, i8 0, i64 %157, i1 false), !tbaa !13
  br label %.loopexit1002

192:                                              ; preds = %189, %178
  %193 = fcmp une float %187, 1.000000e+00
  br i1 %193, label %.lr.ph1329, label %194

194:                                              ; preds = %192
  %195 = load float, ptr %154, align 4, !tbaa !12
  %196 = fcmp oeq float %195, 0.000000e+00
  br i1 %196, label %.loopexit1002, label %.lr.ph1329

.lr.ph1329:                                       ; preds = %192, %194
  %197 = mul nsw i64 %.29351370, %24
  %invariant.gep1330 = getelementptr %struct.complex, ptr %26, i64 %197
  br i1 %min.iters.check1873, label %scalar.ph1872.preheader, label %vector.scevcheck1848

vector.scevcheck1848:                             ; preds = %.lr.ph1329
  %198 = getelementptr i8, ptr %scevgep1849, i64 %mul.result1851
  %199 = icmp ult ptr %198, %scevgep1849
  %200 = getelementptr i8, ptr %scevgep1853, i64 %mul.result1855
  %201 = icmp ult ptr %200, %scevgep1853
  %202 = or i1 %201, %mul.overflow1856
  %203 = or i1 %199, %202
  %brmerge2019 = select i1 %203, i1 true, i1 %conflict.rdx1870
  br i1 %brmerge2019, label %scalar.ph1872.preheader, label %vector.body1879

vector.body1879:                                  ; preds = %vector.scevcheck1848, %vector.body1879
  %index1880 = phi i64 [ %index.next1890, %vector.body1879 ], [ 0, %vector.scevcheck1848 ]
  %offset.idx1881 = or disjoint i64 %index1880, 1
  %204 = load float, ptr %10, align 4, !tbaa !9, !alias.scope !26
  %broadcast.splatinsert1887 = insertelement <4 x float> poison, float %204, i64 0
  %broadcast.splat1888 = shufflevector <4 x float> %broadcast.splatinsert1887, <4 x float> poison, <4 x i32> zeroinitializer
  %205 = getelementptr %struct.complex, ptr %invariant.gep1330, i64 %offset.idx1881
  %wide.vec1882 = load <8 x float>, ptr %205, align 4, !tbaa !13
  %strided.vec1883 = shufflevector <8 x float> %wide.vec1882, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1884 = shufflevector <8 x float> %wide.vec1882, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %206 = load float, ptr %154, align 4, !tbaa !12, !alias.scope !29
  %broadcast.splatinsert1885 = insertelement <4 x float> poison, float %206, i64 0
  %broadcast.splat1886 = shufflevector <4 x float> %broadcast.splatinsert1885, <4 x float> poison, <4 x i32> zeroinitializer
  %207 = fneg <4 x float> %broadcast.splat1886
  %208 = fmul <4 x float> %strided.vec1884, %207
  %209 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1888, <4 x float> %strided.vec1883, <4 x float> %208)
  %210 = fmul <4 x float> %strided.vec1883, %broadcast.splat1886
  %211 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1888, <4 x float> %strided.vec1884, <4 x float> %210)
  %interleaved.vec1889 = shufflevector <4 x float> %209, <4 x float> %211, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1889, ptr %205, align 4, !tbaa !13
  %index.next1890 = add nuw i64 %index1880, 4
  %212 = icmp eq i64 %index.next1890, %n.vec1876
  br i1 %212, label %middle.block1871, label %vector.body1879, !llvm.loop !31

middle.block1871:                                 ; preds = %vector.body1879
  br i1 %cmp.n1891, label %.loopexit1002, label %scalar.ph1872.preheader

scalar.ph1872.preheader:                          ; preds = %vector.scevcheck1848, %middle.block1871, %.lr.ph1329
  %.39451327.ph = phi i64 [ 1, %vector.scevcheck1848 ], [ 1, %.lr.ph1329 ], [ %ind.end1877, %middle.block1871 ]
  br label %scalar.ph1872

scalar.ph1872:                                    ; preds = %scalar.ph1872.preheader, %scalar.ph1872
  %.39451327 = phi i64 [ %224, %scalar.ph1872 ], [ %.39451327.ph, %scalar.ph1872.preheader ]
  %213 = load float, ptr %10, align 4, !tbaa !9
  %gep1331 = getelementptr %struct.complex, ptr %invariant.gep1330, i64 %.39451327
  %214 = load float, ptr %154, align 4, !tbaa !12
  %215 = fneg float %214
  %216 = load <2 x float>, ptr %gep1331, align 4, !tbaa !13
  %217 = insertelement <2 x float> poison, float %214, i64 0
  %218 = insertelement <2 x float> %217, float %215, i64 1
  %219 = fmul <2 x float> %216, %218
  %220 = shufflevector <2 x float> %219, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %221 = insertelement <2 x float> poison, float %213, i64 0
  %222 = shufflevector <2 x float> %221, <2 x float> poison, <2 x i32> zeroinitializer
  %223 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %222, <2 x float> %216, <2 x float> %220)
  store <2 x float> %223, ptr %gep1331, align 4, !tbaa !13
  %224 = add nuw i64 %.39451327, 1
  %exitcond1480.not = icmp eq i64 %.39451327, %43
  br i1 %exitcond1480.not, label %.loopexit1002, label %scalar.ph1872, !llvm.loop !32

.loopexit1002:                                    ; preds = %scalar.ph1872, %middle.block1871, %.lr.ph1334, %194
  br i1 %.not9901352, label %._crit_edge1358, label %.lr.ph1357

.lr.ph1357:                                       ; preds = %.loopexit1002
  %225 = mul nsw i64 %.29351370, %21
  %invariant.gep1360 = getelementptr %struct.complex, ptr %23, i64 %225
  %226 = mul nsw i64 %.29351370, %24
  %invariant.gep1346 = getelementptr %struct.complex, ptr %26, i64 %226
  %227 = getelementptr i8, ptr %scevgep1797, i64 %mul.result1799
  %228 = icmp ult ptr %227, %scevgep1797
  %229 = getelementptr i8, ptr %scevgep1801, i64 %mul.result1803
  %230 = icmp ult ptr %229, %scevgep1801
  %231 = or i1 %230, %mul.overflow1804
  %232 = or i1 %228, %231
  %bound01813 = icmp ult ptr %scevgep1806, %scevgep1808
  %bound11814 = icmp ugt ptr %scevgep1807, %6
  %found.conflict1815 = and i1 %bound01813, %bound11814
  %bound01817 = icmp ult ptr %scevgep1809, %scevgep1812
  %bound11818 = icmp ult ptr %scevgep1811, %scevgep1810
  %found.conflict1819 = and i1 %bound01817, %bound11818
  %233 = or i1 %found.conflict1819, %stride.check1820
  %conflict.rdx1821 = or i1 %found.conflict1815, %233
  br label %234

234:                                              ; preds = %.lr.ph1357, %.loopexit1000
  %.09321354 = phi i64 [ 1, %.lr.ph1357 ], [ %293, %.loopexit1000 ]
  %235 = phi <2 x float> [ %179, %.lr.ph1357 ], [ %292, %.loopexit1000 ]
  %gep1361 = getelementptr %struct.complex, ptr %invariant.gep1360, i64 %.09321354
  %236 = load float, ptr %gep1361, align 4, !tbaa !9
  %237 = fcmp une float %236, 0.000000e+00
  %.phi.trans.insert1536 = getelementptr inbounds i8, ptr %gep1361, i64 4
  %.pre1537 = load float, ptr %.phi.trans.insert1536, align 4, !tbaa !12
  %238 = fcmp une float %.pre1537, 0.000000e+00
  %or.cond1581 = select i1 %237, i1 true, i1 %238
  br i1 %or.cond1581, label %.lr.ph1342, label %.loopexit1000

.lr.ph1342:                                       ; preds = %234
  %239 = load float, ptr %5, align 4, !tbaa !9
  %240 = load float, ptr %155, align 4, !tbaa !12
  %241 = fneg float %240
  %242 = fmul float %.pre1537, %241
  %243 = tail call float @llvm.fmuladd.f32(float %239, float %236, float %242)
  %244 = fmul float %236, %240
  %245 = tail call float @llvm.fmuladd.f32(float %239, float %.pre1537, float %244)
  %246 = mul nsw i64 %.09321354, %18
  %invariant.gep1344 = getelementptr %struct.complex, ptr %20, i64 %246
  %247 = fneg float %245
  %brmerge2020 = select i1 %min.iters.check1824, i1 true, i1 %232
  %brmerge2021 = select i1 %brmerge2020, i1 true, i1 %conflict.rdx1821
  br i1 %brmerge2021, label %scalar.ph1823.preheader, label %vector.ph1825

vector.ph1825:                                    ; preds = %.lr.ph1342
  %broadcast.splatinsert1836 = insertelement <4 x float> poison, float %247, i64 0
  %broadcast.splat1837 = shufflevector <4 x float> %broadcast.splatinsert1836, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1838 = insertelement <4 x float> poison, float %243, i64 0
  %broadcast.splat1839 = shufflevector <4 x float> %broadcast.splatinsert1838, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1840 = insertelement <4 x float> poison, float %245, i64 0
  %broadcast.splat1841 = shufflevector <4 x float> %broadcast.splatinsert1840, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1830

vector.body1830:                                  ; preds = %vector.body1830, %vector.ph1825
  %index1831 = phi i64 [ 0, %vector.ph1825 ], [ %index.next1846, %vector.body1830 ]
  %offset.idx1832 = or disjoint i64 %index1831, 1
  %248 = getelementptr %struct.complex, ptr %invariant.gep1344, i64 %offset.idx1832
  %wide.vec1833 = load <8 x float>, ptr %248, align 4, !tbaa !13
  %strided.vec1834 = shufflevector <8 x float> %wide.vec1833, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1835 = shufflevector <8 x float> %wide.vec1833, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %249 = fmul <4 x float> %strided.vec1835, %broadcast.splat1837
  %250 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1839, <4 x float> %strided.vec1834, <4 x float> %249)
  %251 = fmul <4 x float> %broadcast.splat1841, %strided.vec1834
  %252 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1839, <4 x float> %strided.vec1835, <4 x float> %251)
  %253 = getelementptr %struct.complex, ptr %invariant.gep1346, i64 %offset.idx1832
  %wide.vec1842 = load <8 x float>, ptr %253, align 4, !tbaa !13
  %strided.vec1843 = shufflevector <8 x float> %wide.vec1842, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1844 = shufflevector <8 x float> %wide.vec1842, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %254 = fadd <4 x float> %250, %strided.vec1843
  %255 = fadd <4 x float> %252, %strided.vec1844
  %interleaved.vec1845 = shufflevector <4 x float> %254, <4 x float> %255, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1845, ptr %253, align 4, !tbaa !13
  %index.next1846 = add nuw i64 %index1831, 4
  %256 = icmp eq i64 %index.next1846, %n.vec1827
  br i1 %256, label %middle.block1822, label %vector.body1830, !llvm.loop !33

middle.block1822:                                 ; preds = %vector.body1830
  %257 = shufflevector <4 x float> %250, <4 x float> %252, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1847, label %.loopexit1000, label %scalar.ph1823.preheader

scalar.ph1823.preheader:                          ; preds = %.lr.ph1342, %middle.block1822
  %.49461340.ph = phi i64 [ 1, %.lr.ph1342 ], [ %ind.end1828, %middle.block1822 ]
  br i1 %lcmp.mod1984.not, label %scalar.ph1823.prol.loopexit, label %scalar.ph1823.prol

scalar.ph1823.prol:                               ; preds = %scalar.ph1823.preheader
  %gep1345.prol = getelementptr %struct.complex, ptr %invariant.gep1344, i64 %.49461340.ph
  %258 = load <2 x float>, ptr %gep1345.prol, align 4, !tbaa !13
  %259 = insertelement <2 x float> poison, float %245, i64 0
  %260 = insertelement <2 x float> %259, float %247, i64 1
  %261 = fmul <2 x float> %260, %258
  %262 = shufflevector <2 x float> %261, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %263 = insertelement <2 x float> poison, float %243, i64 0
  %264 = shufflevector <2 x float> %263, <2 x float> poison, <2 x i32> zeroinitializer
  %265 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %264, <2 x float> %258, <2 x float> %262)
  %gep1347.prol = getelementptr %struct.complex, ptr %invariant.gep1346, i64 %.49461340.ph
  %266 = load <2 x float>, ptr %gep1347.prol, align 4, !tbaa !13
  %267 = fadd <2 x float> %265, %266
  store <2 x float> %267, ptr %gep1347.prol, align 4, !tbaa !13
  %268 = add nuw nsw i64 %.49461340.ph, 1
  br label %scalar.ph1823.prol.loopexit

scalar.ph1823.prol.loopexit:                      ; preds = %scalar.ph1823.prol, %scalar.ph1823.preheader
  %.lcssa1945.unr = phi <2 x float> [ poison, %scalar.ph1823.preheader ], [ %265, %scalar.ph1823.prol ]
  %.49461340.unr = phi i64 [ %.49461340.ph, %scalar.ph1823.preheader ], [ %268, %scalar.ph1823.prol ]
  %269 = icmp eq i64 %43, %.49461340.ph
  br i1 %269, label %.loopexit1000, label %scalar.ph1823.preheader.new

scalar.ph1823.preheader.new:                      ; preds = %scalar.ph1823.prol.loopexit
  %270 = insertelement <2 x float> poison, float %245, i64 0
  %271 = insertelement <2 x float> %270, float %247, i64 1
  %272 = insertelement <2 x float> poison, float %243, i64 0
  %273 = shufflevector <2 x float> %272, <2 x float> poison, <2 x i32> zeroinitializer
  %274 = insertelement <2 x float> poison, float %245, i64 0
  %275 = insertelement <2 x float> %274, float %247, i64 1
  %276 = insertelement <2 x float> poison, float %243, i64 0
  %277 = shufflevector <2 x float> %276, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1823

scalar.ph1823:                                    ; preds = %scalar.ph1823, %scalar.ph1823.preheader.new
  %.49461340 = phi i64 [ %.49461340.unr, %scalar.ph1823.preheader.new ], [ %291, %scalar.ph1823 ]
  %gep1345 = getelementptr %struct.complex, ptr %invariant.gep1344, i64 %.49461340
  %278 = load <2 x float>, ptr %gep1345, align 4, !tbaa !13
  %279 = fmul <2 x float> %271, %278
  %280 = shufflevector <2 x float> %279, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %281 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %273, <2 x float> %278, <2 x float> %280)
  %gep1347 = getelementptr %struct.complex, ptr %invariant.gep1346, i64 %.49461340
  %282 = load <2 x float>, ptr %gep1347, align 4, !tbaa !13
  %283 = fadd <2 x float> %281, %282
  store <2 x float> %283, ptr %gep1347, align 4, !tbaa !13
  %284 = add nuw i64 %.49461340, 1
  %gep1345.1 = getelementptr %struct.complex, ptr %invariant.gep1344, i64 %284
  %285 = load <2 x float>, ptr %gep1345.1, align 4, !tbaa !13
  %286 = fmul <2 x float> %275, %285
  %287 = shufflevector <2 x float> %286, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %288 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %277, <2 x float> %285, <2 x float> %287)
  %gep1347.1 = getelementptr %struct.complex, ptr %invariant.gep1346, i64 %284
  %289 = load <2 x float>, ptr %gep1347.1, align 4, !tbaa !13
  %290 = fadd <2 x float> %288, %289
  store <2 x float> %290, ptr %gep1347.1, align 4, !tbaa !13
  %291 = add nuw i64 %.49461340, 2
  %exitcond1484.not.1 = icmp eq i64 %284, %43
  br i1 %exitcond1484.not.1, label %.loopexit1000, label %scalar.ph1823, !llvm.loop !34

.loopexit1000:                                    ; preds = %scalar.ph1823.prol.loopexit, %scalar.ph1823, %middle.block1822, %234
  %292 = phi <2 x float> [ %235, %234 ], [ %257, %middle.block1822 ], [ %.lcssa1945.unr, %scalar.ph1823.prol.loopexit ], [ %288, %scalar.ph1823 ]
  %293 = add nuw i64 %.09321354, 1
  %exitcond1485.not = icmp eq i64 %.09321354, %51
  br i1 %exitcond1485.not, label %._crit_edge1358, label %234, !llvm.loop !35

._crit_edge1358:                                  ; preds = %.loopexit1000, %.loopexit1002
  %294 = phi <2 x float> [ %179, %.loopexit1002 ], [ %292, %.loopexit1000 ]
  %295 = add nuw nsw i64 %.29351370, 1
  %indvar.next1482 = add nuw nsw i64 %indvar1481, 1
  %exitcond1486.not = icmp eq i64 %indvar.next1482, %47
  br i1 %exitcond1486.not, label %.loopexit, label %178, !llvm.loop !36

296:                                              ; preds = %153
  br i1 %33, label %.lr.ph1325.split.preheader, label %.preheader1008.lr.ph.split

.preheader1008.lr.ph.split:                       ; preds = %296
  %297 = getelementptr inbounds i8, ptr %10, i64 4
  %.not9831243 = icmp eq i64 %51, 0
  %xtraiter1979 = and i64 %51, 1
  %298 = icmp eq i64 %51, 1
  %unroll_iter = and i64 %51, 9223372036854775806
  %lcmp.mod1980.not = icmp eq i64 %xtraiter1979, 0
  br label %.preheader1008

.lr.ph1325.split.preheader:                       ; preds = %296
  %299 = getelementptr inbounds i8, ptr %15, i64 4
  %300 = getelementptr inbounds i8, ptr %10, i64 4
  br label %.lr.ph1325.split

.lr.ph1325.split:                                 ; preds = %.lr.ph1325.split.preheader, %._crit_edge1318
  %.39361324 = phi i64 [ %360, %._crit_edge1318 ], [ 1, %.lr.ph1325.split.preheader ]
  %301 = load i64, ptr %2, align 8, !tbaa !5
  %.not9851314 = icmp slt i64 %301, 1
  br i1 %.not9851314, label %._crit_edge1318, label %.lr.ph1317

.lr.ph1317:                                       ; preds = %.lr.ph1325.split
  %302 = mul nsw i64 %.39361324, %21
  %invariant.gep1312 = getelementptr %struct.complex, ptr %23, i64 %302
  %303 = mul nsw i64 %.39361324, %24
  %invariant.gep1319 = getelementptr %struct.complex, ptr %26, i64 %303
  br label %304

304:                                              ; preds = %.lr.ph1317, %358
  %.59471315 = phi i64 [ 1, %.lr.ph1317 ], [ %359, %358 ]
  %305 = load i64, ptr %4, align 8, !tbaa !5
  %.not9861301 = icmp slt i64 %305, 1
  br i1 %.not9861301, label %._crit_edge1307, label %.lr.ph1306

.lr.ph1306:                                       ; preds = %304
  %306 = mul nsw i64 %.59471315, %18
  %invariant.gep1310 = getelementptr %struct.complex, ptr %20, i64 %306
  br label %307

307:                                              ; preds = %.lr.ph1306, %307
  %.11302 = phi i64 [ 1, %.lr.ph1306 ], [ %321, %307 ]
  %308 = phi <2 x float> [ zeroinitializer, %.lr.ph1306 ], [ %320, %307 ]
  %gep1311 = getelementptr %struct.complex, ptr %invariant.gep1310, i64 %.11302
  call void @r_cnjg(ptr noundef nonnull %15, ptr noundef %gep1311) #6
  %309 = load float, ptr %15, align 8, !tbaa !9
  %gep1313 = getelementptr %struct.complex, ptr %invariant.gep1312, i64 %.11302
  %310 = load float, ptr %299, align 4, !tbaa !12
  %311 = fneg float %310
  %312 = load <2 x float>, ptr %gep1313, align 4, !tbaa !13
  %313 = insertelement <2 x float> poison, float %310, i64 0
  %314 = insertelement <2 x float> %313, float %311, i64 1
  %315 = fmul <2 x float> %312, %314
  %316 = shufflevector <2 x float> %315, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %317 = insertelement <2 x float> poison, float %309, i64 0
  %318 = shufflevector <2 x float> %317, <2 x float> poison, <2 x i32> zeroinitializer
  %319 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %318, <2 x float> %312, <2 x float> %316)
  %320 = fadd <2 x float> %308, %319
  %321 = add nuw i64 %.11302, 1
  %exitcond1476.not = icmp eq i64 %.11302, %305
  br i1 %exitcond1476.not, label %._crit_edge1307, label %307, !llvm.loop !37

._crit_edge1307:                                  ; preds = %307, %304
  %322 = phi <2 x float> [ zeroinitializer, %304 ], [ %320, %307 ]
  %323 = load float, ptr %10, align 4, !tbaa !9
  %324 = fcmp oeq float %323, 0.000000e+00
  br i1 %324, label %326, label %._crit_edge1307._crit_edge

._crit_edge1307._crit_edge:                       ; preds = %._crit_edge1307
  %325 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1534 = load float, ptr %300, align 4, !tbaa !12
  br label %338

326:                                              ; preds = %._crit_edge1307
  %327 = load float, ptr %300, align 4, !tbaa !12
  %328 = fcmp oeq float %327, 0.000000e+00
  %329 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %328, label %330, label %338

330:                                              ; preds = %326
  %gep1322 = getelementptr %struct.complex, ptr %invariant.gep1319, i64 %.59471315
  %331 = shufflevector <2 x float> %329, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %332 = fneg <2 x float> %329
  %333 = shufflevector <2 x float> %331, <2 x float> %332, <2 x i32> <i32 0, i32 3>
  %334 = fmul <2 x float> %322, %333
  %335 = shufflevector <2 x float> %334, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %336 = shufflevector <2 x float> %329, <2 x float> poison, <2 x i32> zeroinitializer
  %337 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %336, <2 x float> %322, <2 x float> %335)
  store <2 x float> %337, ptr %gep1322, align 4, !tbaa !13
  br label %358

338:                                              ; preds = %._crit_edge1307._crit_edge, %326
  %339 = phi float [ %.pre1534, %._crit_edge1307._crit_edge ], [ %327, %326 ]
  %340 = phi <2 x float> [ %325, %._crit_edge1307._crit_edge ], [ %329, %326 ]
  %gep1320 = getelementptr %struct.complex, ptr %invariant.gep1319, i64 %.59471315
  %341 = fneg float %339
  %342 = load <2 x float>, ptr %gep1320, align 4, !tbaa !13
  %343 = insertelement <2 x float> poison, float %339, i64 0
  %344 = insertelement <2 x float> %343, float %341, i64 1
  %345 = fmul <2 x float> %342, %344
  %346 = shufflevector <2 x float> %345, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %347 = insertelement <2 x float> poison, float %323, i64 0
  %348 = shufflevector <2 x float> %347, <2 x float> poison, <2 x i32> zeroinitializer
  %349 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %348, <2 x float> %342, <2 x float> %346)
  store <2 x float> %349, ptr %15, align 8, !tbaa !13
  %350 = shufflevector <2 x float> %340, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %351 = fneg <2 x float> %340
  %352 = shufflevector <2 x float> %350, <2 x float> %351, <2 x i32> <i32 0, i32 3>
  %353 = fmul <2 x float> %322, %352
  %354 = shufflevector <2 x float> %353, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %355 = shufflevector <2 x float> %340, <2 x float> poison, <2 x i32> zeroinitializer
  %356 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %355, <2 x float> %322, <2 x float> %354)
  %357 = fadd <2 x float> %356, %349
  store <2 x float> %357, ptr %gep1320, align 4, !tbaa !13
  br label %358

358:                                              ; preds = %330, %338
  %359 = add nuw i64 %.59471315, 1
  %exitcond1477.not = icmp eq i64 %.59471315, %301
  br i1 %exitcond1477.not, label %._crit_edge1318, label %304, !llvm.loop !38

._crit_edge1318:                                  ; preds = %358, %.lr.ph1325.split
  %360 = add nuw i64 %.39361324, 1
  %exitcond1478.not = icmp eq i64 %.39361324, %47
  br i1 %exitcond1478.not, label %.loopexit, label %.lr.ph1325.split, !llvm.loop !39

.preheader1008:                                   ; preds = %.preheader1008.lr.ph.split, %._crit_edge1267
  %.49371288 = phi i64 [ 1, %.preheader1008.lr.ph.split ], [ %489, %._crit_edge1267 ]
  %361 = phi <4 x float> [ undef, %.preheader1008.lr.ph.split ], [ %488, %._crit_edge1267 ]
  %362 = mul nsw i64 %.49371288, %21
  %invariant.gep1255 = getelementptr %struct.complex, ptr %23, i64 %362
  %363 = mul nsw i64 %.49371288, %24
  %invariant.gep1270 = getelementptr %struct.complex, ptr %26, i64 %363
  br i1 %.not9831243, label %.lr.ph1266.split.us, label %.lr.ph1248.preheader

.lr.ph1248.preheader:                             ; preds = %.preheader1008
  %364 = shufflevector <4 x float> %361, <4 x float> poison, <2 x i32> <i32 2, i32 3>
  br label %.lr.ph1248

.lr.ph1266.split.us:                              ; preds = %.preheader1008, %398
  %.69481265.us = phi i64 [ %400, %398 ], [ 1, %.preheader1008 ]
  %365 = phi <4 x float> [ %399, %398 ], [ %361, %.preheader1008 ]
  %366 = load float, ptr %10, align 4, !tbaa !9
  %367 = fcmp oeq float %366, 0.000000e+00
  br i1 %367, label %369, label %.lr.ph1266.split.us._crit_edge

.lr.ph1266.split.us._crit_edge:                   ; preds = %.lr.ph1266.split.us
  %368 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1529 = load float, ptr %297, align 4, !tbaa !12
  br label %373

369:                                              ; preds = %.lr.ph1266.split.us
  %370 = load float, ptr %297, align 4, !tbaa !12
  %371 = fcmp oeq float %370, 0.000000e+00
  %372 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %371, label %393, label %373

373:                                              ; preds = %.lr.ph1266.split.us._crit_edge, %369
  %374 = phi float [ %.pre1529, %.lr.ph1266.split.us._crit_edge ], [ %370, %369 ]
  %375 = phi <2 x float> [ %368, %.lr.ph1266.split.us._crit_edge ], [ %372, %369 ]
  %gep1271.us = getelementptr %struct.complex, ptr %invariant.gep1270, i64 %.69481265.us
  %376 = load <2 x float>, ptr %gep1271.us, align 4, !tbaa !13
  %377 = fneg float %374
  %378 = shufflevector <2 x float> %375, <2 x float> %376, <4 x i32> <i32 1, i32 poison, i32 2, i32 3>
  %379 = shufflevector <4 x float> %378, <4 x float> poison, <4 x i32> <i32 0, i32 0, i32 2, i32 3>
  %380 = insertelement <4 x float> <float 0.000000e+00, float -0.000000e+00, float poison, float poison>, float %374, i64 2
  %381 = insertelement <4 x float> %380, float %377, i64 3
  %382 = fmul <4 x float> %379, %381
  %383 = insertelement <4 x float> poison, float %366, i64 0
  %384 = shufflevector <2 x float> %375, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
  %385 = shufflevector <4 x float> %383, <4 x float> %384, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison>
  %386 = shufflevector <4 x float> %385, <4 x float> poison, <4 x i32> <i32 1, i32 1, i32 0, i32 0>
  %387 = shufflevector <4 x float> %378, <4 x float> <float 0.000000e+00, float 0.000000e+00, float poison, float poison>, <4 x i32> <i32 4, i32 5, i32 3, i32 2>
  %388 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %386, <4 x float> %387, <4 x float> %382)
  %389 = shufflevector <4 x float> %388, <4 x float> poison, <2 x i32> <i32 0, i32 1>
  %390 = shufflevector <4 x float> %388, <4 x float> poison, <2 x i32> <i32 2, i32 3>
  %391 = fadd <2 x float> %389, %390
  %392 = shufflevector <2 x float> %391, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  store <2 x float> %392, ptr %gep1271.us, align 4, !tbaa !13
  br label %398

393:                                              ; preds = %369
  %394 = shufflevector <2 x float> %372, <2 x float> poison, <2 x i32> <i32 1, i32 1>
  %395 = fmul <2 x float> %394, <float -0.000000e+00, float 0.000000e+00>
  %gep1273.us = getelementptr %struct.complex, ptr %invariant.gep1270, i64 %.69481265.us
  %396 = shufflevector <2 x float> %372, <2 x float> poison, <2 x i32> zeroinitializer
  %397 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %396, <2 x float> zeroinitializer, <2 x float> %395)
  store <2 x float> %397, ptr %gep1273.us, align 4, !tbaa !13
  br label %398

398:                                              ; preds = %393, %373
  %399 = phi <4 x float> [ %365, %393 ], [ %388, %373 ]
  %400 = add nuw i64 %.69481265.us, 1
  %exitcond1474.not = icmp eq i64 %.69481265.us, %43
  br i1 %exitcond1474.not, label %._crit_edge1267, label %.lr.ph1266.split.us, !llvm.loop !41

.lr.ph1248:                                       ; preds = %.lr.ph1248.preheader, %484
  %.69481265 = phi i64 [ %486, %484 ], [ 1, %.lr.ph1248.preheader ]
  %401 = phi <2 x float> [ %487, %484 ], [ %364, %.lr.ph1248.preheader ]
  %402 = mul nsw i64 %.69481265, %18
  %invariant.gep1253 = getelementptr %struct.complex, ptr %20, i64 %402
  br i1 %298, label %._crit_edge1249.unr-lcssa, label %.lr.ph1248.new

.lr.ph1248.new:                                   ; preds = %.lr.ph1248, %.lr.ph1248.new
  %.21244 = phi i64 [ %431, %.lr.ph1248.new ], [ 1, %.lr.ph1248 ]
  %403 = phi <2 x float> [ %430, %.lr.ph1248.new ], [ zeroinitializer, %.lr.ph1248 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph1248.new ], [ 0, %.lr.ph1248 ]
  %gep1254 = getelementptr %struct.complex, ptr %invariant.gep1253, i64 %.21244
  %404 = load float, ptr %gep1254, align 4, !tbaa !9
  %gep1256 = getelementptr %struct.complex, ptr %invariant.gep1255, i64 %.21244
  %405 = getelementptr inbounds i8, ptr %gep1254, i64 4
  %406 = load float, ptr %405, align 4, !tbaa !12
  %407 = fneg float %406
  %408 = load <2 x float>, ptr %gep1256, align 4, !tbaa !13
  %409 = insertelement <2 x float> poison, float %406, i64 0
  %410 = insertelement <2 x float> %409, float %407, i64 1
  %411 = fmul <2 x float> %408, %410
  %412 = shufflevector <2 x float> %411, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %413 = insertelement <2 x float> poison, float %404, i64 0
  %414 = shufflevector <2 x float> %413, <2 x float> poison, <2 x i32> zeroinitializer
  %415 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %414, <2 x float> %408, <2 x float> %412)
  %416 = fadd <2 x float> %403, %415
  %417 = add nuw i64 %.21244, 1
  %gep1254.1 = getelementptr %struct.complex, ptr %invariant.gep1253, i64 %417
  %418 = load float, ptr %gep1254.1, align 4, !tbaa !9
  %gep1256.1 = getelementptr %struct.complex, ptr %invariant.gep1255, i64 %417
  %419 = getelementptr inbounds i8, ptr %gep1254.1, i64 4
  %420 = load float, ptr %419, align 4, !tbaa !12
  %421 = fneg float %420
  %422 = load <2 x float>, ptr %gep1256.1, align 4, !tbaa !13
  %423 = insertelement <2 x float> poison, float %420, i64 0
  %424 = insertelement <2 x float> %423, float %421, i64 1
  %425 = fmul <2 x float> %422, %424
  %426 = shufflevector <2 x float> %425, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %427 = insertelement <2 x float> poison, float %418, i64 0
  %428 = shufflevector <2 x float> %427, <2 x float> poison, <2 x i32> zeroinitializer
  %429 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %428, <2 x float> %422, <2 x float> %426)
  %430 = fadd <2 x float> %416, %429
  %431 = add nuw i64 %.21244, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge1249.unr-lcssa, label %.lr.ph1248.new, !llvm.loop !42

._crit_edge1249.unr-lcssa:                        ; preds = %.lr.ph1248.new, %.lr.ph1248
  %.lcssa1952.ph = phi <2 x float> [ poison, %.lr.ph1248 ], [ %429, %.lr.ph1248.new ]
  %.lcssa1951.ph = phi <2 x float> [ poison, %.lr.ph1248 ], [ %430, %.lr.ph1248.new ]
  %.21244.unr = phi i64 [ 1, %.lr.ph1248 ], [ %431, %.lr.ph1248.new ]
  %.unr = phi <2 x float> [ zeroinitializer, %.lr.ph1248 ], [ %430, %.lr.ph1248.new ]
  br i1 %lcmp.mod1980.not, label %._crit_edge1249, label %._crit_edge1249.epilog-lcssa

._crit_edge1249.epilog-lcssa:                     ; preds = %._crit_edge1249.unr-lcssa
  %gep1254.epil = getelementptr %struct.complex, ptr %invariant.gep1253, i64 %.21244.unr
  %432 = load float, ptr %gep1254.epil, align 4, !tbaa !9
  %gep1256.epil = getelementptr %struct.complex, ptr %invariant.gep1255, i64 %.21244.unr
  %433 = getelementptr inbounds i8, ptr %gep1254.epil, i64 4
  %434 = load float, ptr %433, align 4, !tbaa !12
  %435 = fneg float %434
  %436 = load <2 x float>, ptr %gep1256.epil, align 4, !tbaa !13
  %437 = insertelement <2 x float> poison, float %434, i64 0
  %438 = insertelement <2 x float> %437, float %435, i64 1
  %439 = fmul <2 x float> %436, %438
  %440 = shufflevector <2 x float> %439, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %441 = insertelement <2 x float> poison, float %432, i64 0
  %442 = shufflevector <2 x float> %441, <2 x float> poison, <2 x i32> zeroinitializer
  %443 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %442, <2 x float> %436, <2 x float> %440)
  %444 = fadd <2 x float> %.unr, %443
  br label %._crit_edge1249

._crit_edge1249:                                  ; preds = %._crit_edge1249.unr-lcssa, %._crit_edge1249.epilog-lcssa
  %.lcssa1952 = phi <2 x float> [ %.lcssa1952.ph, %._crit_edge1249.unr-lcssa ], [ %443, %._crit_edge1249.epilog-lcssa ]
  %.lcssa1951 = phi <2 x float> [ %.lcssa1951.ph, %._crit_edge1249.unr-lcssa ], [ %444, %._crit_edge1249.epilog-lcssa ]
  %445 = load float, ptr %10, align 4, !tbaa !9
  %446 = fcmp oeq float %445, 0.000000e+00
  br i1 %446, label %448, label %._crit_edge1249._crit_edge

._crit_edge1249._crit_edge:                       ; preds = %._crit_edge1249
  %447 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1524 = load float, ptr %297, align 4, !tbaa !12
  br label %461

448:                                              ; preds = %._crit_edge1249
  %449 = load float, ptr %297, align 4, !tbaa !12
  %450 = fcmp oeq float %449, 0.000000e+00
  %451 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %450, label %452, label %461

452:                                              ; preds = %448
  %gep1273 = getelementptr %struct.complex, ptr %invariant.gep1270, i64 %.69481265
  %453 = shufflevector <2 x float> %451, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %454 = fneg <2 x float> %451
  %455 = shufflevector <2 x float> %453, <2 x float> %454, <2 x i32> <i32 0, i32 3>
  %456 = fmul <2 x float> %.lcssa1951, %455
  %457 = shufflevector <2 x float> %456, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %458 = shufflevector <2 x float> %451, <2 x float> poison, <2 x i32> zeroinitializer
  %459 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %458, <2 x float> %.lcssa1951, <2 x float> %457)
  store <2 x float> %459, ptr %gep1273, align 4, !tbaa !13
  %460 = shufflevector <2 x float> %.lcssa1952, <2 x float> %401, <4 x i32> <i32 1, i32 0, i32 2, i32 3>
  br label %484

461:                                              ; preds = %._crit_edge1249._crit_edge, %448
  %462 = phi float [ %.pre1524, %._crit_edge1249._crit_edge ], [ %449, %448 ]
  %463 = phi <2 x float> [ %447, %._crit_edge1249._crit_edge ], [ %451, %448 ]
  %464 = extractelement <2 x float> %463, i64 1
  %465 = fneg float %464
  %gep1271 = getelementptr %struct.complex, ptr %invariant.gep1270, i64 %.69481265
  %466 = load <2 x float>, ptr %gep1271, align 4, !tbaa !13
  %467 = fneg float %462
  %468 = shufflevector <2 x float> %.lcssa1951, <2 x float> %466, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %469 = shufflevector <2 x float> %463, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
  %470 = insertelement <4 x float> %469, float %465, i64 1
  %471 = insertelement <4 x float> %470, float %462, i64 2
  %472 = insertelement <4 x float> %471, float %467, i64 3
  %473 = fmul <4 x float> %468, %472
  %474 = insertelement <4 x float> poison, float %445, i64 0
  %475 = shufflevector <2 x float> %463, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
  %476 = shufflevector <4 x float> %474, <4 x float> %475, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison>
  %477 = shufflevector <4 x float> %476, <4 x float> poison, <4 x i32> <i32 1, i32 1, i32 0, i32 0>
  %478 = shufflevector <2 x float> %.lcssa1951, <2 x float> %466, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
  %479 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %477, <4 x float> %478, <4 x float> %473)
  %480 = shufflevector <4 x float> %479, <4 x float> poison, <2 x i32> <i32 0, i32 1>
  %481 = shufflevector <4 x float> %479, <4 x float> poison, <2 x i32> <i32 2, i32 3>
  %482 = fadd <2 x float> %480, %481
  %483 = shufflevector <2 x float> %482, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  store <2 x float> %483, ptr %gep1271, align 4, !tbaa !13
  br label %484

484:                                              ; preds = %452, %461
  %485 = phi <4 x float> [ %460, %452 ], [ %479, %461 ]
  %486 = add nuw i64 %.69481265, 1
  %exitcond1473.not = icmp eq i64 %.69481265, %43
  %487 = shufflevector <4 x float> %485, <4 x float> poison, <2 x i32> <i32 2, i32 3>
  br i1 %exitcond1473.not, label %._crit_edge1267, label %.lr.ph1248, !llvm.loop !41

._crit_edge1267:                                  ; preds = %484, %398
  %488 = phi <4 x float> [ %399, %398 ], [ %485, %484 ]
  %489 = add nuw i64 %.49371288, 1
  %exitcond1475.not = icmp eq i64 %.49371288, %47
  br i1 %exitcond1475.not, label %.loopexit, label %.preheader1008, !llvm.loop !43

490:                                              ; preds = %152
  %.not970 = icmp eq i64 %30, 0
  br i1 %31, label %491, label %786

491:                                              ; preds = %490
  %492 = getelementptr i8, ptr %10, i64 4
  %493 = shl i64 %24, 3
  %494 = shl i64 %24, 3
  br i1 %.not970, label %.lr.ph1236, label %.lr.ph1192

.lr.ph1192:                                       ; preds = %491
  %495 = getelementptr inbounds i8, ptr %5, i64 4
  %496 = getelementptr inbounds i8, ptr %14, i64 4
  %497 = shl i64 %24, 3
  %498 = shl i64 %24, 3
  %499 = shl i64 %18, 3
  %500 = shl i64 %24, 3
  %scevgep1672 = getelementptr i8, ptr %10, i64 8
  %invariant.gep2015 = getelementptr i8, ptr %11, i64 -4
  %invariant.gep2017 = getelementptr i8, ptr %11, i64 -4
  %invariant.gep2013 = getelementptr i8, ptr %6, i64 -4
  br label %522

.lr.ph1236:                                       ; preds = %491
  %.not9741219 = icmp eq i64 %51, 0
  %501 = getelementptr inbounds i8, ptr %5, i64 4
  %502 = shl nuw i64 %43, 3
  %503 = add nsw i64 %43, -1
  %504 = shl i64 %24, 3
  %505 = shl i64 %43, 3
  %506 = add nuw i64 %51, 2305843009213693951
  %507 = mul i64 %18, %506
  %508 = add i64 %507, %43
  %509 = shl i64 %508, 3
  %510 = getelementptr i8, ptr %6, i64 %509
  %scevgep1713 = getelementptr i8, ptr %510, i64 -4
  %scevgep1716 = getelementptr i8, ptr %6, i64 4
  %scevgep1717 = getelementptr i8, ptr %6, i64 %509
  %511 = add nsw i64 %43, -1
  %512 = shl i64 %24, 3
  %513 = add nuw i64 %47, 2305843009213693951
  %514 = mul i64 %24, %513
  %515 = add i64 %514, %43
  %516 = shl i64 %515, 3
  %517 = getelementptr i8, ptr %11, i64 %516
  %scevgep1762 = getelementptr i8, ptr %517, i64 -4
  %scevgep1763 = getelementptr i8, ptr %11, i64 4
  %scevgep1764 = getelementptr i8, ptr %11, i64 %516
  %scevgep1765 = getelementptr i8, ptr %10, i64 8
  %518 = getelementptr i8, ptr %11, i64 %505
  %519 = getelementptr i8, ptr %518, i64 -4
  %520 = getelementptr i8, ptr %11, i64 %505
  %min.iters.check1777 = icmp ult i64 %43, 8
  %mul.result1755 = shl i64 %511, 3
  %mul.result1759 = shl i64 %511, 3
  %mul.overflow1760 = icmp ugt i64 %511, 2305843009213693951
  %bound01766 = icmp ugt ptr %492, %11
  %bound11767 = icmp ugt ptr %scevgep1762, %10
  %found.conflict1768 = and i1 %bound01766, %bound11767
  %bound01770 = icmp ult ptr %scevgep1763, %scevgep1765
  %bound11771 = icmp ult ptr %492, %scevgep1764
  %found.conflict1772 = and i1 %bound01770, %bound11771
  %.mask = and i64 %24, 1152921504606846976
  %stride.check1773 = icmp ne i64 %.mask, 0
  %521 = or i1 %found.conflict1772, %stride.check1773
  %conflict.rdx1774 = or i1 %found.conflict1768, %521
  %n.vec1780 = and i64 %43, 4611686018427387900
  %ind.end1781 = or disjoint i64 %n.vec1780, 1
  %cmp.n1795 = icmp eq i64 %43, %n.vec1780
  %min.iters.check1728 = icmp ult i64 %43, 8
  %mul.result1704 = shl i64 %503, 3
  %mul.result1708 = shl i64 %503, 3
  %mul.overflow1709 = icmp ugt i64 %503, 2305843009213693951
  %.mask1938 = and i64 %18, 1152921504606846976
  %stride.check1724 = icmp ne i64 %.mask1938, 0
  %n.vec1731 = and i64 %43, 4611686018427387900
  %ind.end1732 = or disjoint i64 %n.vec1731, 1
  %cmp.n1751 = icmp eq i64 %43, %n.vec1731
  %xtraiter1977 = and i64 %43, 1
  %lcmp.mod1978.not = icmp eq i64 %xtraiter1977, 0
  br label %666

522:                                              ; preds = %.lr.ph1192, %._crit_edge1189
  %523 = phi i64 [ %43, %.lr.ph1192 ], [ %663, %._crit_edge1189 ]
  %524 = phi i64 [ %43, %.lr.ph1192 ], [ %664, %._crit_edge1189 ]
  %indvar = phi i64 [ 0, %.lr.ph1192 ], [ %indvar.next, %._crit_edge1189 ]
  %.59381191 = phi i64 [ 1, %.lr.ph1192 ], [ %665, %._crit_edge1189 ]
  %525 = mul i64 %500, %indvar
  %scevgep1667 = getelementptr i8, ptr %11, i64 %525
  %gep2016 = getelementptr i8, ptr %invariant.gep2015, i64 %525
  %526 = or disjoint i64 %525, 4
  %scevgep1670 = getelementptr i8, ptr %11, i64 %526
  %527 = mul i64 %494, %indvar
  %scevgep1658 = getelementptr i8, ptr %11, i64 %527
  %528 = or disjoint i64 %527, 4
  %scevgep1662 = getelementptr i8, ptr %11, i64 %528
  %529 = mul i64 %498, %indvar
  %scevgep1634 = getelementptr i8, ptr %11, i64 %529
  %gep2018 = getelementptr i8, ptr %invariant.gep2017, i64 %529
  %530 = or disjoint i64 %529, 4
  %scevgep1642 = getelementptr i8, ptr %11, i64 %530
  %531 = mul i64 %497, %indvar
  %scevgep1629 = getelementptr i8, ptr %11, i64 %531
  %532 = or disjoint i64 %531, 4
  %scevgep1630 = getelementptr i8, ptr %11, i64 %532
  %533 = mul i64 %493, %indvar
  %scevgep = getelementptr i8, ptr %11, i64 %533
  %534 = load float, ptr %10, align 4, !tbaa !9
  %535 = fcmp oeq float %534, 0.000000e+00
  br i1 %535, label %536, label %541

536:                                              ; preds = %522
  %537 = load float, ptr %492, align 4, !tbaa !12
  %538 = fcmp oeq float %537, 0.000000e+00
  br i1 %538, label %539, label %541

539:                                              ; preds = %536
  %.not9781169 = icmp slt i64 %523, 1
  br i1 %.not9781169, label %.loopexit1018, label %.lr.ph1172

.lr.ph1172:                                       ; preds = %539
  %540 = shl nuw i64 %523, 3
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %540, i1 false), !tbaa !13
  br label %.loopexit1018

541:                                              ; preds = %536, %522
  %542 = fcmp une float %534, 1.000000e+00
  br i1 %542, label %546, label %543

543:                                              ; preds = %541
  %544 = load float, ptr %492, align 4, !tbaa !12
  %545 = fcmp oeq float %544, 0.000000e+00
  %.not9771163 = icmp slt i64 %524, 1
  %or.cond1582 = select i1 %545, i1 true, i1 %.not9771163
  br i1 %or.cond1582, label %.loopexit1018, label %.lr.ph1166

546:                                              ; preds = %541
  %.not9771163.old = icmp slt i64 %524, 1
  br i1 %.not9771163.old, label %.loopexit1018, label %.lr.ph1166

.lr.ph1166:                                       ; preds = %543, %546
  %547 = mul nsw i64 %.59381191, %24
  %invariant.gep1167 = getelementptr %struct.complex, ptr %26, i64 %547
  %min.iters.check1682 = icmp ult i64 %524, 8
  br i1 %min.iters.check1682, label %scalar.ph1681.preheader, label %vector.scevcheck1657

vector.scevcheck1657:                             ; preds = %.lr.ph1166
  %548 = add i64 %524, -1
  %mul.result1660 = shl i64 %548, 3
  %549 = getelementptr i8, ptr %scevgep1658, i64 %mul.result1660
  %550 = icmp ult ptr %549, %scevgep1658
  %mul.result1664 = shl i64 %548, 3
  %mul.overflow1665 = icmp ugt i64 %548, 2305843009213693951
  %551 = getelementptr i8, ptr %scevgep1662, i64 %mul.result1664
  %552 = icmp ult ptr %551, %scevgep1662
  %553 = or i1 %552, %mul.overflow1665
  %554 = or i1 %550, %553
  br i1 %554, label %scalar.ph1681.preheader, label %vector.memcheck1666

vector.memcheck1666:                              ; preds = %vector.scevcheck1657
  %555 = shl i64 %524, 3
  %scevgep1669 = getelementptr i8, ptr %gep2016, i64 %555
  %scevgep1671 = getelementptr i8, ptr %scevgep1667, i64 %555
  %bound01673 = icmp ult ptr %scevgep1667, %492
  %bound11674 = icmp ugt ptr %scevgep1669, %10
  %found.conflict1675 = and i1 %bound01673, %bound11674
  %bound01676 = icmp ult ptr %scevgep1670, %scevgep1672
  %bound11677 = icmp ult ptr %492, %scevgep1671
  %found.conflict1678 = and i1 %bound01676, %bound11677
  %conflict.rdx1679 = or i1 %found.conflict1675, %found.conflict1678
  br i1 %conflict.rdx1679, label %scalar.ph1681.preheader, label %vector.ph1683

vector.ph1683:                                    ; preds = %vector.memcheck1666
  %n.vec1685 = and i64 %524, 4611686018427387900
  %ind.end1686 = or disjoint i64 %n.vec1685, 1
  br label %vector.body1688

vector.body1688:                                  ; preds = %vector.body1688, %vector.ph1683
  %index1689 = phi i64 [ 0, %vector.ph1683 ], [ %index.next1699, %vector.body1688 ]
  %offset.idx1690 = or disjoint i64 %index1689, 1
  %556 = load float, ptr %10, align 4, !tbaa !9, !alias.scope !44
  %broadcast.splatinsert1696 = insertelement <4 x float> poison, float %556, i64 0
  %broadcast.splat1697 = shufflevector <4 x float> %broadcast.splatinsert1696, <4 x float> poison, <4 x i32> zeroinitializer
  %557 = getelementptr %struct.complex, ptr %invariant.gep1167, i64 %offset.idx1690
  %wide.vec1691 = load <8 x float>, ptr %557, align 4, !tbaa !13
  %strided.vec1692 = shufflevector <8 x float> %wide.vec1691, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1693 = shufflevector <8 x float> %wide.vec1691, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %558 = load float, ptr %492, align 4, !tbaa !12, !alias.scope !47
  %broadcast.splatinsert1694 = insertelement <4 x float> poison, float %558, i64 0
  %broadcast.splat1695 = shufflevector <4 x float> %broadcast.splatinsert1694, <4 x float> poison, <4 x i32> zeroinitializer
  %559 = fneg <4 x float> %broadcast.splat1695
  %560 = fmul <4 x float> %strided.vec1693, %559
  %561 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1697, <4 x float> %strided.vec1692, <4 x float> %560)
  %562 = fmul <4 x float> %strided.vec1692, %broadcast.splat1695
  %563 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1697, <4 x float> %strided.vec1693, <4 x float> %562)
  %interleaved.vec1698 = shufflevector <4 x float> %561, <4 x float> %563, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1698, ptr %557, align 4, !tbaa !13
  %index.next1699 = add nuw i64 %index1689, 4
  %564 = icmp eq i64 %index.next1699, %n.vec1685
  br i1 %564, label %middle.block1680, label %vector.body1688, !llvm.loop !49

middle.block1680:                                 ; preds = %vector.body1688
  %cmp.n1700 = icmp eq i64 %524, %n.vec1685
  br i1 %cmp.n1700, label %.loopexit1018, label %scalar.ph1681.preheader

scalar.ph1681.preheader:                          ; preds = %middle.block1680, %vector.memcheck1666, %vector.scevcheck1657, %.lr.ph1166
  %.89501164.ph = phi i64 [ 1, %vector.memcheck1666 ], [ 1, %vector.scevcheck1657 ], [ 1, %.lr.ph1166 ], [ %ind.end1686, %middle.block1680 ]
  br label %scalar.ph1681

scalar.ph1681:                                    ; preds = %scalar.ph1681.preheader, %scalar.ph1681
  %.89501164 = phi i64 [ %576, %scalar.ph1681 ], [ %.89501164.ph, %scalar.ph1681.preheader ]
  %565 = load float, ptr %10, align 4, !tbaa !9
  %gep1168 = getelementptr %struct.complex, ptr %invariant.gep1167, i64 %.89501164
  %566 = load float, ptr %492, align 4, !tbaa !12
  %567 = fneg float %566
  %568 = load <2 x float>, ptr %gep1168, align 4, !tbaa !13
  %569 = insertelement <2 x float> poison, float %566, i64 0
  %570 = insertelement <2 x float> %569, float %567, i64 1
  %571 = fmul <2 x float> %568, %570
  %572 = shufflevector <2 x float> %571, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %573 = insertelement <2 x float> poison, float %565, i64 0
  %574 = shufflevector <2 x float> %573, <2 x float> poison, <2 x i32> zeroinitializer
  %575 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %574, <2 x float> %568, <2 x float> %572)
  store <2 x float> %575, ptr %gep1168, align 4, !tbaa !13
  %576 = add nuw i64 %.89501164, 1
  %exitcond1461.not = icmp eq i64 %.89501164, %524
  br i1 %exitcond1461.not, label %.loopexit1018, label %scalar.ph1681, !llvm.loop !50

.loopexit1018:                                    ; preds = %scalar.ph1681, %middle.block1680, %.lr.ph1172, %546, %539, %543
  %577 = phi i64 [ %523, %.lr.ph1172 ], [ %524, %546 ], [ %523, %539 ], [ %524, %543 ], [ %524, %middle.block1680 ], [ %524, %scalar.ph1681 ]
  %578 = load i64, ptr %4, align 8, !tbaa !5
  %.not9791184 = icmp slt i64 %578, 1
  br i1 %.not9791184, label %._crit_edge1189, label %.lr.ph1188

.lr.ph1188:                                       ; preds = %.loopexit1018
  %579 = getelementptr %struct.complex, ptr %23, i64 %.59381191
  %580 = mul nsw i64 %.59381191, %24
  %invariant.gep1181 = getelementptr %struct.complex, ptr %26, i64 %580
  br label %581

581:                                              ; preds = %.lr.ph1188, %.loopexit1017
  %indvar1637 = phi i64 [ 0, %.lr.ph1188 ], [ %indvar.next1638, %.loopexit1017 ]
  %582 = phi i64 [ %523, %.lr.ph1188 ], [ %660, %.loopexit1017 ]
  %583 = phi i64 [ %577, %.lr.ph1188 ], [ %661, %.loopexit1017 ]
  %.31185 = phi i64 [ 1, %.lr.ph1188 ], [ %662, %.loopexit1017 ]
  %584 = mul i64 %499, %indvar1637
  %scevgep1639 = getelementptr i8, ptr %6, i64 %584
  %gep2014 = getelementptr i8, ptr %invariant.gep2013, i64 %584
  %585 = or disjoint i64 %584, 4
  %scevgep1644 = getelementptr i8, ptr %6, i64 %585
  %586 = mul nsw i64 %.31185, %21
  %587 = getelementptr %struct.complex, ptr %579, i64 %586
  %588 = load float, ptr %587, align 4, !tbaa !9
  %589 = fcmp une float %588, 0.000000e+00
  br i1 %589, label %594, label %590

590:                                              ; preds = %581
  %591 = getelementptr inbounds i8, ptr %587, i64 4
  %592 = load float, ptr %591, align 4, !tbaa !12
  %593 = fcmp une float %592, 0.000000e+00
  br i1 %593, label %594, label %.loopexit1017

594:                                              ; preds = %590, %581
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef nonnull %587) #6
  %595 = load float, ptr %5, align 4, !tbaa !9
  %596 = load float, ptr %14, align 8, !tbaa !9
  %597 = load float, ptr %495, align 4, !tbaa !12
  %598 = load float, ptr %496, align 4, !tbaa !12
  %599 = fneg float %597
  %600 = fmul float %598, %599
  %601 = call float @llvm.fmuladd.f32(float %595, float %596, float %600)
  %602 = fmul float %596, %597
  %603 = call float @llvm.fmuladd.f32(float %595, float %598, float %602)
  %604 = load i64, ptr %2, align 8, !tbaa !5
  %.not9801175 = icmp slt i64 %604, 1
  br i1 %.not9801175, label %.loopexit1017, label %.lr.ph1178

.lr.ph1178:                                       ; preds = %594
  %605 = mul nsw i64 %.31185, %18
  %invariant.gep1179 = getelementptr %struct.complex, ptr %20, i64 %605
  %606 = fneg float %603
  %min.iters.check = icmp ult i64 %604, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1178
  %607 = add nsw i64 %604, -1
  %mul.result = shl i64 %607, 3
  %608 = getelementptr i8, ptr %scevgep1629, i64 %mul.result
  %609 = icmp ult ptr %608, %scevgep1629
  %mul.result1632 = shl i64 %607, 3
  %mul.overflow1633 = icmp ugt i64 %607, 2305843009213693951
  %610 = getelementptr i8, ptr %scevgep1630, i64 %mul.result1632
  %611 = icmp ult ptr %610, %scevgep1630
  %612 = or i1 %611, %mul.overflow1633
  %613 = or i1 %609, %612
  br i1 %613, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %614 = shl i64 %604, 3
  %scevgep1636 = getelementptr i8, ptr %gep2018, i64 %614
  %scevgep1641 = getelementptr i8, ptr %gep2014, i64 %614
  %scevgep1643 = getelementptr i8, ptr %scevgep1634, i64 %614
  %scevgep1645 = getelementptr i8, ptr %scevgep1639, i64 %614
  %bound0 = icmp ult ptr %scevgep1634, %scevgep1641
  %bound1 = icmp ult ptr %scevgep1639, %scevgep1636
  %found.conflict = and i1 %bound0, %bound1
  %bound01646 = icmp ult ptr %scevgep1642, %scevgep1645
  %bound11647 = icmp ult ptr %scevgep1644, %scevgep1643
  %found.conflict1648 = and i1 %bound01646, %bound11647
  %conflict.rdx = or i1 %found.conflict, %found.conflict1648
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %604, 4611686018427387900
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %606, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1650 = insertelement <4 x float> poison, float %601, i64 0
  %broadcast.splat1651 = shufflevector <4 x float> %broadcast.splatinsert1650, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1652 = insertelement <4 x float> poison, float %603, i64 0
  %broadcast.splat1653 = shufflevector <4 x float> %broadcast.splatinsert1652, <4 x float> poison, <4 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 = or disjoint i64 %index, 1
  %615 = getelementptr %struct.complex, ptr %invariant.gep1179, i64 %offset.idx
  %wide.vec = load <8 x float>, ptr %615, align 4, !tbaa !13
  %strided.vec = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1649 = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %616 = fmul <4 x float> %strided.vec1649, %broadcast.splat
  %617 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1651, <4 x float> %strided.vec, <4 x float> %616)
  %618 = fmul <4 x float> %broadcast.splat1653, %strided.vec
  %619 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1651, <4 x float> %strided.vec1649, <4 x float> %618)
  %620 = getelementptr %struct.complex, ptr %invariant.gep1181, i64 %offset.idx
  %wide.vec1654 = load <8 x float>, ptr %620, align 4, !tbaa !13
  %strided.vec1655 = shufflevector <8 x float> %wide.vec1654, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1656 = shufflevector <8 x float> %wide.vec1654, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %621 = fadd <4 x float> %617, %strided.vec1655
  %622 = fadd <4 x float> %619, %strided.vec1656
  %interleaved.vec = shufflevector <4 x float> %621, <4 x float> %622, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec, ptr %620, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 4
  %623 = icmp eq i64 %index.next, %n.vec
  br i1 %623, label %middle.block, label %vector.body, !llvm.loop !51

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %604, %n.vec
  %624 = shufflevector <4 x float> %617, <4 x float> %619, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n, label %..loopexit1017_crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph1178
  %.99511176.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph1178 ], [ %ind.end, %middle.block ]
  %xtraiter = and i64 %604, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep1180.prol = getelementptr %struct.complex, ptr %invariant.gep1179, i64 %.99511176.ph
  %625 = load <2 x float>, ptr %gep1180.prol, align 4, !tbaa !13
  %626 = insertelement <2 x float> poison, float %603, i64 0
  %627 = insertelement <2 x float> %626, float %606, i64 1
  %628 = fmul <2 x float> %625, %627
  %629 = shufflevector <2 x float> %628, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %630 = insertelement <2 x float> poison, float %601, i64 0
  %631 = shufflevector <2 x float> %630, <2 x float> poison, <2 x i32> zeroinitializer
  %632 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %631, <2 x float> %625, <2 x float> %629)
  %gep1182.prol = getelementptr %struct.complex, ptr %invariant.gep1181, i64 %.99511176.ph
  %633 = load <2 x float>, ptr %gep1182.prol, align 4, !tbaa !13
  %634 = fadd <2 x float> %632, %633
  store <2 x float> %634, ptr %gep1182.prol, align 4, !tbaa !13
  %635 = add nuw nsw i64 %.99511176.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1963.unr = phi <2 x float> [ poison, %scalar.ph.preheader ], [ %632, %scalar.ph.prol ]
  %.99511176.unr = phi i64 [ %.99511176.ph, %scalar.ph.preheader ], [ %635, %scalar.ph.prol ]
  %636 = icmp eq i64 %604, %.99511176.ph
  br i1 %636, label %..loopexit1017_crit_edge, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %637 = insertelement <2 x float> poison, float %603, i64 0
  %638 = insertelement <2 x float> %637, float %606, i64 1
  %639 = insertelement <2 x float> poison, float %601, i64 0
  %640 = shufflevector <2 x float> %639, <2 x float> poison, <2 x i32> zeroinitializer
  %641 = insertelement <2 x float> poison, float %603, i64 0
  %642 = insertelement <2 x float> %641, float %606, i64 1
  %643 = insertelement <2 x float> poison, float %601, i64 0
  %644 = shufflevector <2 x float> %643, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.99511176 = phi i64 [ %.99511176.unr, %scalar.ph.preheader.new ], [ %658, %scalar.ph ]
  %gep1180 = getelementptr %struct.complex, ptr %invariant.gep1179, i64 %.99511176
  %645 = load <2 x float>, ptr %gep1180, align 4, !tbaa !13
  %646 = fmul <2 x float> %645, %638
  %647 = shufflevector <2 x float> %646, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %648 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %640, <2 x float> %645, <2 x float> %647)
  %gep1182 = getelementptr %struct.complex, ptr %invariant.gep1181, i64 %.99511176
  %649 = load <2 x float>, ptr %gep1182, align 4, !tbaa !13
  %650 = fadd <2 x float> %648, %649
  store <2 x float> %650, ptr %gep1182, align 4, !tbaa !13
  %651 = add nuw i64 %.99511176, 1
  %gep1180.1 = getelementptr %struct.complex, ptr %invariant.gep1179, i64 %651
  %652 = load <2 x float>, ptr %gep1180.1, align 4, !tbaa !13
  %653 = fmul <2 x float> %652, %642
  %654 = shufflevector <2 x float> %653, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %655 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %644, <2 x float> %652, <2 x float> %654)
  %gep1182.1 = getelementptr %struct.complex, ptr %invariant.gep1181, i64 %651
  %656 = load <2 x float>, ptr %gep1182.1, align 4, !tbaa !13
  %657 = fadd <2 x float> %655, %656
  store <2 x float> %657, ptr %gep1182.1, align 4, !tbaa !13
  %658 = add nuw i64 %.99511176, 2
  %exitcond1462.not.1 = icmp eq i64 %651, %604
  br i1 %exitcond1462.not.1, label %..loopexit1017_crit_edge, label %scalar.ph, !llvm.loop !52

..loopexit1017_crit_edge:                         ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %659 = phi <2 x float> [ %624, %middle.block ], [ %.lcssa1963.unr, %scalar.ph.prol.loopexit ], [ %655, %scalar.ph ]
  store <2 x float> %659, ptr %14, align 8, !tbaa !13
  br label %.loopexit1017

.loopexit1017:                                    ; preds = %594, %..loopexit1017_crit_edge, %590
  %660 = phi i64 [ %604, %594 ], [ %604, %..loopexit1017_crit_edge ], [ %582, %590 ]
  %661 = phi i64 [ %604, %594 ], [ %604, %..loopexit1017_crit_edge ], [ %583, %590 ]
  %662 = add nuw i64 %.31185, 1
  %exitcond1463.not = icmp eq i64 %.31185, %578
  %indvar.next1638 = add i64 %indvar1637, 1
  br i1 %exitcond1463.not, label %._crit_edge1189, label %581, !llvm.loop !53

._crit_edge1189:                                  ; preds = %.loopexit1017, %.loopexit1018
  %663 = phi i64 [ %523, %.loopexit1018 ], [ %660, %.loopexit1017 ]
  %664 = phi i64 [ %577, %.loopexit1018 ], [ %661, %.loopexit1017 ]
  %665 = add nuw nsw i64 %.59381191, 1
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond1464.not = icmp eq i64 %indvar.next, %47
  br i1 %exitcond1464.not, label %.loopexit, label %522, !llvm.loop !54

666:                                              ; preds = %.lr.ph1236, %._crit_edge1225
  %indvar1466 = phi i64 [ 0, %.lr.ph1236 ], [ %indvar.next1467, %._crit_edge1225 ]
  %.69391235 = phi i64 [ 1, %.lr.ph1236 ], [ %785, %._crit_edge1225 ]
  %667 = phi <2 x float> [ undef, %.lr.ph1236 ], [ %784, %._crit_edge1225 ]
  %668 = mul i64 %512, %indvar1466
  %scevgep1753 = getelementptr i8, ptr %11, i64 %668
  %669 = or disjoint i64 %668, 4
  %scevgep1757 = getelementptr i8, ptr %11, i64 %669
  %670 = mul i64 %494, %indvar1466
  %scevgep1711 = getelementptr i8, ptr %11, i64 %670
  %scevgep1712 = getelementptr i8, ptr %519, i64 %670
  %671 = or disjoint i64 %670, 4
  %scevgep1714 = getelementptr i8, ptr %11, i64 %671
  %scevgep1715 = getelementptr i8, ptr %520, i64 %670
  %672 = mul i64 %504, %indvar1466
  %scevgep1702 = getelementptr i8, ptr %11, i64 %672
  %673 = or disjoint i64 %672, 4
  %scevgep1706 = getelementptr i8, ptr %11, i64 %673
  %674 = mul i64 %493, %indvar1466
  %scevgep1468 = getelementptr i8, ptr %11, i64 %674
  %675 = load float, ptr %10, align 4, !tbaa !9
  %676 = fcmp oeq float %675, 0.000000e+00
  br i1 %676, label %677, label %680

677:                                              ; preds = %666
  %678 = load float, ptr %492, align 4, !tbaa !12
  %679 = fcmp oeq float %678, 0.000000e+00
  br i1 %679, label %.lr.ph1201, label %680

.lr.ph1201:                                       ; preds = %677
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1468, i8 0, i64 %502, i1 false), !tbaa !13
  br label %.loopexit1013

680:                                              ; preds = %677, %666
  %681 = fcmp une float %675, 1.000000e+00
  br i1 %681, label %.lr.ph1196, label %682

682:                                              ; preds = %680
  %683 = load float, ptr %492, align 4, !tbaa !12
  %684 = fcmp oeq float %683, 0.000000e+00
  br i1 %684, label %.loopexit1013, label %.lr.ph1196

.lr.ph1196:                                       ; preds = %680, %682
  %685 = mul nsw i64 %.69391235, %24
  %invariant.gep1197 = getelementptr %struct.complex, ptr %26, i64 %685
  br i1 %min.iters.check1777, label %scalar.ph1776.preheader, label %vector.scevcheck1752

vector.scevcheck1752:                             ; preds = %.lr.ph1196
  %686 = getelementptr i8, ptr %scevgep1753, i64 %mul.result1755
  %687 = icmp ult ptr %686, %scevgep1753
  %688 = getelementptr i8, ptr %scevgep1757, i64 %mul.result1759
  %689 = icmp ult ptr %688, %scevgep1757
  %690 = or i1 %689, %mul.overflow1760
  %691 = or i1 %687, %690
  %brmerge2022 = select i1 %691, i1 true, i1 %conflict.rdx1774
  br i1 %brmerge2022, label %scalar.ph1776.preheader, label %vector.body1783

vector.body1783:                                  ; preds = %vector.scevcheck1752, %vector.body1783
  %index1784 = phi i64 [ %index.next1794, %vector.body1783 ], [ 0, %vector.scevcheck1752 ]
  %offset.idx1785 = or disjoint i64 %index1784, 1
  %692 = load float, ptr %10, align 4, !tbaa !9, !alias.scope !55
  %broadcast.splatinsert1791 = insertelement <4 x float> poison, float %692, i64 0
  %broadcast.splat1792 = shufflevector <4 x float> %broadcast.splatinsert1791, <4 x float> poison, <4 x i32> zeroinitializer
  %693 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %offset.idx1785
  %wide.vec1786 = load <8 x float>, ptr %693, align 4, !tbaa !13
  %strided.vec1787 = shufflevector <8 x float> %wide.vec1786, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1788 = shufflevector <8 x float> %wide.vec1786, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %694 = load float, ptr %492, align 4, !tbaa !12, !alias.scope !58
  %broadcast.splatinsert1789 = insertelement <4 x float> poison, float %694, i64 0
  %broadcast.splat1790 = shufflevector <4 x float> %broadcast.splatinsert1789, <4 x float> poison, <4 x i32> zeroinitializer
  %695 = fneg <4 x float> %broadcast.splat1790
  %696 = fmul <4 x float> %strided.vec1788, %695
  %697 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1792, <4 x float> %strided.vec1787, <4 x float> %696)
  %698 = fmul <4 x float> %strided.vec1787, %broadcast.splat1790
  %699 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1792, <4 x float> %strided.vec1788, <4 x float> %698)
  %interleaved.vec1793 = shufflevector <4 x float> %697, <4 x float> %699, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1793, ptr %693, align 4, !tbaa !13
  %index.next1794 = add nuw i64 %index1784, 4
  %700 = icmp eq i64 %index.next1794, %n.vec1780
  br i1 %700, label %middle.block1775, label %vector.body1783, !llvm.loop !60

middle.block1775:                                 ; preds = %vector.body1783
  br i1 %cmp.n1795, label %.loopexit1013, label %scalar.ph1776.preheader

scalar.ph1776.preheader:                          ; preds = %vector.scevcheck1752, %middle.block1775, %.lr.ph1196
  %.111194.ph = phi i64 [ 1, %vector.scevcheck1752 ], [ 1, %.lr.ph1196 ], [ %ind.end1781, %middle.block1775 ]
  br label %scalar.ph1776

scalar.ph1776:                                    ; preds = %scalar.ph1776.preheader, %scalar.ph1776
  %.111194 = phi i64 [ %712, %scalar.ph1776 ], [ %.111194.ph, %scalar.ph1776.preheader ]
  %701 = load float, ptr %10, align 4, !tbaa !9
  %gep1198 = getelementptr %struct.complex, ptr %invariant.gep1197, i64 %.111194
  %702 = load float, ptr %492, align 4, !tbaa !12
  %703 = fneg float %702
  %704 = load <2 x float>, ptr %gep1198, align 4, !tbaa !13
  %705 = insertelement <2 x float> poison, float %702, i64 0
  %706 = insertelement <2 x float> %705, float %703, i64 1
  %707 = fmul <2 x float> %704, %706
  %708 = shufflevector <2 x float> %707, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %709 = insertelement <2 x float> poison, float %701, i64 0
  %710 = shufflevector <2 x float> %709, <2 x float> poison, <2 x i32> zeroinitializer
  %711 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %710, <2 x float> %704, <2 x float> %708)
  store <2 x float> %711, ptr %gep1198, align 4, !tbaa !13
  %712 = add nuw i64 %.111194, 1
  %exitcond1465.not = icmp eq i64 %.111194, %43
  br i1 %exitcond1465.not, label %.loopexit1013, label %scalar.ph1776, !llvm.loop !61

.loopexit1013:                                    ; preds = %scalar.ph1776, %middle.block1775, %.lr.ph1201, %682
  br i1 %.not9741219, label %._crit_edge1225, label %.lr.ph1224

.lr.ph1224:                                       ; preds = %.loopexit1013
  %713 = getelementptr %struct.complex, ptr %23, i64 %.69391235
  %714 = mul nsw i64 %.69391235, %24
  %invariant.gep1213 = getelementptr %struct.complex, ptr %26, i64 %714
  %715 = getelementptr i8, ptr %scevgep1702, i64 %mul.result1704
  %716 = icmp ult ptr %715, %scevgep1702
  %717 = getelementptr i8, ptr %scevgep1706, i64 %mul.result1708
  %718 = icmp ult ptr %717, %scevgep1706
  %719 = or i1 %718, %mul.overflow1709
  %720 = or i1 %716, %719
  %bound01718 = icmp ult ptr %scevgep1711, %scevgep1713
  %bound11719 = icmp ugt ptr %scevgep1712, %6
  %found.conflict1720 = and i1 %bound01718, %bound11719
  %bound01721 = icmp ult ptr %scevgep1714, %scevgep1717
  %bound11722 = icmp ult ptr %scevgep1716, %scevgep1715
  %found.conflict1723 = and i1 %bound01721, %bound11722
  %721 = or i1 %found.conflict1723, %stride.check1724
  %conflict.rdx1725 = or i1 %found.conflict1720, %721
  br label %722

722:                                              ; preds = %.lr.ph1224, %.loopexit1011
  %.41221 = phi i64 [ 1, %.lr.ph1224 ], [ %783, %.loopexit1011 ]
  %723 = phi <2 x float> [ %667, %.lr.ph1224 ], [ %782, %.loopexit1011 ]
  %724 = mul nsw i64 %.41221, %21
  %725 = getelementptr %struct.complex, ptr %713, i64 %724
  %726 = load float, ptr %725, align 4, !tbaa !9
  %727 = fcmp une float %726, 0.000000e+00
  %.phi.trans.insert = getelementptr inbounds i8, ptr %725, i64 4
  %.pre1519 = load float, ptr %.phi.trans.insert, align 4, !tbaa !12
  %728 = fcmp une float %.pre1519, 0.000000e+00
  %or.cond1584 = select i1 %727, i1 true, i1 %728
  br i1 %or.cond1584, label %.lr.ph1209, label %.loopexit1011

.lr.ph1209:                                       ; preds = %722
  %729 = load float, ptr %5, align 4, !tbaa !9
  %730 = load float, ptr %501, align 4, !tbaa !12
  %731 = fneg float %730
  %732 = fmul float %.pre1519, %731
  %733 = tail call float @llvm.fmuladd.f32(float %729, float %726, float %732)
  %734 = fmul float %726, %730
  %735 = tail call float @llvm.fmuladd.f32(float %729, float %.pre1519, float %734)
  %736 = mul nsw i64 %.41221, %18
  %invariant.gep1211 = getelementptr %struct.complex, ptr %20, i64 %736
  %737 = fneg float %735
  %brmerge2023 = select i1 %min.iters.check1728, i1 true, i1 %720
  %brmerge2024 = select i1 %brmerge2023, i1 true, i1 %conflict.rdx1725
  br i1 %brmerge2024, label %scalar.ph1727.preheader, label %vector.ph1729

vector.ph1729:                                    ; preds = %.lr.ph1209
  %broadcast.splatinsert1740 = insertelement <4 x float> poison, float %737, i64 0
  %broadcast.splat1741 = shufflevector <4 x float> %broadcast.splatinsert1740, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1742 = insertelement <4 x float> poison, float %733, i64 0
  %broadcast.splat1743 = shufflevector <4 x float> %broadcast.splatinsert1742, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1744 = insertelement <4 x float> poison, float %735, i64 0
  %broadcast.splat1745 = shufflevector <4 x float> %broadcast.splatinsert1744, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1734

vector.body1734:                                  ; preds = %vector.body1734, %vector.ph1729
  %index1735 = phi i64 [ 0, %vector.ph1729 ], [ %index.next1750, %vector.body1734 ]
  %offset.idx1736 = or disjoint i64 %index1735, 1
  %738 = getelementptr %struct.complex, ptr %invariant.gep1211, i64 %offset.idx1736
  %wide.vec1737 = load <8 x float>, ptr %738, align 4, !tbaa !13
  %strided.vec1738 = shufflevector <8 x float> %wide.vec1737, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1739 = shufflevector <8 x float> %wide.vec1737, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %739 = fmul <4 x float> %strided.vec1739, %broadcast.splat1741
  %740 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1743, <4 x float> %strided.vec1738, <4 x float> %739)
  %741 = fmul <4 x float> %broadcast.splat1745, %strided.vec1738
  %742 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1743, <4 x float> %strided.vec1739, <4 x float> %741)
  %743 = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %offset.idx1736
  %wide.vec1746 = load <8 x float>, ptr %743, align 4, !tbaa !13
  %strided.vec1747 = shufflevector <8 x float> %wide.vec1746, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1748 = shufflevector <8 x float> %wide.vec1746, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %744 = fadd <4 x float> %740, %strided.vec1747
  %745 = fadd <4 x float> %742, %strided.vec1748
  %interleaved.vec1749 = shufflevector <4 x float> %744, <4 x float> %745, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1749, ptr %743, align 4, !tbaa !13
  %index.next1750 = add nuw i64 %index1735, 4
  %746 = icmp eq i64 %index.next1750, %n.vec1731
  br i1 %746, label %middle.block1726, label %vector.body1734, !llvm.loop !62

middle.block1726:                                 ; preds = %vector.body1734
  %747 = shufflevector <4 x float> %740, <4 x float> %742, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1751, label %.loopexit1011, label %scalar.ph1727.preheader

scalar.ph1727.preheader:                          ; preds = %.lr.ph1209, %middle.block1726
  %.121207.ph = phi i64 [ 1, %.lr.ph1209 ], [ %ind.end1732, %middle.block1726 ]
  br i1 %lcmp.mod1978.not, label %scalar.ph1727.prol.loopexit, label %scalar.ph1727.prol

scalar.ph1727.prol:                               ; preds = %scalar.ph1727.preheader
  %gep1212.prol = getelementptr %struct.complex, ptr %invariant.gep1211, i64 %.121207.ph
  %748 = load <2 x float>, ptr %gep1212.prol, align 4, !tbaa !13
  %749 = insertelement <2 x float> poison, float %735, i64 0
  %750 = insertelement <2 x float> %749, float %737, i64 1
  %751 = fmul <2 x float> %750, %748
  %752 = shufflevector <2 x float> %751, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %753 = insertelement <2 x float> poison, float %733, i64 0
  %754 = shufflevector <2 x float> %753, <2 x float> poison, <2 x i32> zeroinitializer
  %755 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %754, <2 x float> %748, <2 x float> %752)
  %gep1214.prol = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %.121207.ph
  %756 = load <2 x float>, ptr %gep1214.prol, align 4, !tbaa !13
  %757 = fadd <2 x float> %755, %756
  store <2 x float> %757, ptr %gep1214.prol, align 4, !tbaa !13
  %758 = add nuw nsw i64 %.121207.ph, 1
  br label %scalar.ph1727.prol.loopexit

scalar.ph1727.prol.loopexit:                      ; preds = %scalar.ph1727.prol, %scalar.ph1727.preheader
  %.lcssa1958.unr = phi <2 x float> [ poison, %scalar.ph1727.preheader ], [ %755, %scalar.ph1727.prol ]
  %.121207.unr = phi i64 [ %.121207.ph, %scalar.ph1727.preheader ], [ %758, %scalar.ph1727.prol ]
  %759 = icmp eq i64 %43, %.121207.ph
  br i1 %759, label %.loopexit1011, label %scalar.ph1727.preheader.new

scalar.ph1727.preheader.new:                      ; preds = %scalar.ph1727.prol.loopexit
  %760 = insertelement <2 x float> poison, float %735, i64 0
  %761 = insertelement <2 x float> %760, float %737, i64 1
  %762 = insertelement <2 x float> poison, float %733, i64 0
  %763 = shufflevector <2 x float> %762, <2 x float> poison, <2 x i32> zeroinitializer
  %764 = insertelement <2 x float> poison, float %735, i64 0
  %765 = insertelement <2 x float> %764, float %737, i64 1
  %766 = insertelement <2 x float> poison, float %733, i64 0
  %767 = shufflevector <2 x float> %766, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1727

scalar.ph1727:                                    ; preds = %scalar.ph1727, %scalar.ph1727.preheader.new
  %.121207 = phi i64 [ %.121207.unr, %scalar.ph1727.preheader.new ], [ %781, %scalar.ph1727 ]
  %gep1212 = getelementptr %struct.complex, ptr %invariant.gep1211, i64 %.121207
  %768 = load <2 x float>, ptr %gep1212, align 4, !tbaa !13
  %769 = fmul <2 x float> %761, %768
  %770 = shufflevector <2 x float> %769, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %771 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %763, <2 x float> %768, <2 x float> %770)
  %gep1214 = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %.121207
  %772 = load <2 x float>, ptr %gep1214, align 4, !tbaa !13
  %773 = fadd <2 x float> %771, %772
  store <2 x float> %773, ptr %gep1214, align 4, !tbaa !13
  %774 = add nuw i64 %.121207, 1
  %gep1212.1 = getelementptr %struct.complex, ptr %invariant.gep1211, i64 %774
  %775 = load <2 x float>, ptr %gep1212.1, align 4, !tbaa !13
  %776 = fmul <2 x float> %765, %775
  %777 = shufflevector <2 x float> %776, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %778 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %767, <2 x float> %775, <2 x float> %777)
  %gep1214.1 = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %774
  %779 = load <2 x float>, ptr %gep1214.1, align 4, !tbaa !13
  %780 = fadd <2 x float> %778, %779
  store <2 x float> %780, ptr %gep1214.1, align 4, !tbaa !13
  %781 = add nuw i64 %.121207, 2
  %exitcond1469.not.1 = icmp eq i64 %774, %43
  br i1 %exitcond1469.not.1, label %.loopexit1011, label %scalar.ph1727, !llvm.loop !63

.loopexit1011:                                    ; preds = %scalar.ph1727.prol.loopexit, %scalar.ph1727, %middle.block1726, %722
  %782 = phi <2 x float> [ %723, %722 ], [ %747, %middle.block1726 ], [ %.lcssa1958.unr, %scalar.ph1727.prol.loopexit ], [ %778, %scalar.ph1727 ]
  %783 = add nuw i64 %.41221, 1
  %exitcond1470.not = icmp eq i64 %.41221, %51
  br i1 %exitcond1470.not, label %._crit_edge1225, label %722, !llvm.loop !64

._crit_edge1225:                                  ; preds = %.loopexit1011, %.loopexit1013
  %784 = phi <2 x float> [ %667, %.loopexit1013 ], [ %782, %.loopexit1011 ]
  %785 = add nuw nsw i64 %.69391235, 1
  %indvar.next1467 = add nuw nsw i64 %indvar1466, 1
  %exitcond1471.not = icmp eq i64 %indvar.next1467, %47
  br i1 %exitcond1471.not, label %.loopexit, label %666, !llvm.loop !65

786:                                              ; preds = %490
  br i1 %33, label %787, label %915

787:                                              ; preds = %786
  %788 = getelementptr inbounds i8, ptr %15, i64 4
  br i1 %.not970, label %.lr.ph1162.split.preheader, label %.lr.ph1139.split.preheader

.lr.ph1139.split.preheader:                       ; preds = %787
  %789 = getelementptr inbounds i8, ptr %10, i64 4
  br label %.lr.ph1139.split

.lr.ph1162.split.preheader:                       ; preds = %787
  %790 = getelementptr inbounds i8, ptr %10, i64 4
  br label %.lr.ph1162.split

.lr.ph1139.split:                                 ; preds = %.lr.ph1139.split.preheader, %._crit_edge1132
  %.79401138 = phi i64 [ %852, %._crit_edge1132 ], [ 1, %.lr.ph1139.split.preheader ]
  %791 = load i64, ptr %2, align 8, !tbaa !5
  %.not9681128 = icmp slt i64 %791, 1
  br i1 %.not9681128, label %._crit_edge1132, label %.lr.ph1131

.lr.ph1131:                                       ; preds = %.lr.ph1139.split
  %792 = getelementptr %struct.complex, ptr %23, i64 %.79401138
  %793 = mul nsw i64 %.79401138, %24
  %invariant.gep1133 = getelementptr %struct.complex, ptr %26, i64 %793
  br label %794

794:                                              ; preds = %.lr.ph1131, %850
  %.131129 = phi i64 [ 1, %.lr.ph1131 ], [ %851, %850 ]
  %795 = load i64, ptr %4, align 8, !tbaa !5
  %.not9691117 = icmp slt i64 %795, 1
  br i1 %.not9691117, label %._crit_edge1123, label %.lr.ph1122

.lr.ph1122:                                       ; preds = %794
  %796 = mul nsw i64 %.131129, %18
  %invariant.gep1126 = getelementptr %struct.complex, ptr %20, i64 %796
  br label %797

797:                                              ; preds = %.lr.ph1122, %797
  %.51118 = phi i64 [ 1, %.lr.ph1122 ], [ %813, %797 ]
  %798 = phi <2 x float> [ zeroinitializer, %.lr.ph1122 ], [ %812, %797 ]
  %gep1127 = getelementptr %struct.complex, ptr %invariant.gep1126, i64 %.51118
  call void @r_cnjg(ptr noundef nonnull %15, ptr noundef %gep1127) #6
  %799 = mul nsw i64 %.51118, %21
  %800 = getelementptr %struct.complex, ptr %792, i64 %799
  call void @r_cnjg(ptr noundef nonnull %16, ptr noundef %800) #6
  %801 = load float, ptr %15, align 8, !tbaa !9
  %802 = load float, ptr %788, align 4, !tbaa !12
  %803 = fneg float %802
  %804 = load <2 x float>, ptr %16, align 8, !tbaa !13
  %805 = insertelement <2 x float> poison, float %802, i64 0
  %806 = insertelement <2 x float> %805, float %803, i64 1
  %807 = fmul <2 x float> %804, %806
  %808 = shufflevector <2 x float> %807, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %809 = insertelement <2 x float> poison, float %801, i64 0
  %810 = shufflevector <2 x float> %809, <2 x float> poison, <2 x i32> zeroinitializer
  %811 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %810, <2 x float> %804, <2 x float> %808)
  %812 = fadd <2 x float> %798, %811
  %813 = add nuw i64 %.51118, 1
  %exitcond1455.not = icmp eq i64 %.51118, %795
  br i1 %exitcond1455.not, label %._crit_edge1123, label %797, !llvm.loop !66

._crit_edge1123:                                  ; preds = %797, %794
  %814 = phi <2 x float> [ zeroinitializer, %794 ], [ %812, %797 ]
  %815 = load float, ptr %10, align 4, !tbaa !9
  %816 = fcmp oeq float %815, 0.000000e+00
  br i1 %816, label %818, label %._crit_edge1123._crit_edge

._crit_edge1123._crit_edge:                       ; preds = %._crit_edge1123
  %817 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1512 = load float, ptr %789, align 4, !tbaa !12
  br label %830

818:                                              ; preds = %._crit_edge1123
  %819 = load float, ptr %789, align 4, !tbaa !12
  %820 = fcmp oeq float %819, 0.000000e+00
  %821 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %820, label %822, label %830

822:                                              ; preds = %818
  %gep1136 = getelementptr %struct.complex, ptr %invariant.gep1133, i64 %.131129
  %823 = shufflevector <2 x float> %821, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %824 = fneg <2 x float> %821
  %825 = shufflevector <2 x float> %823, <2 x float> %824, <2 x i32> <i32 0, i32 3>
  %826 = fmul <2 x float> %814, %825
  %827 = shufflevector <2 x float> %826, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %828 = shufflevector <2 x float> %821, <2 x float> poison, <2 x i32> zeroinitializer
  %829 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %828, <2 x float> %814, <2 x float> %827)
  store <2 x float> %829, ptr %gep1136, align 4, !tbaa !13
  br label %850

830:                                              ; preds = %._crit_edge1123._crit_edge, %818
  %831 = phi float [ %.pre1512, %._crit_edge1123._crit_edge ], [ %819, %818 ]
  %832 = phi <2 x float> [ %817, %._crit_edge1123._crit_edge ], [ %821, %818 ]
  %gep1134 = getelementptr %struct.complex, ptr %invariant.gep1133, i64 %.131129
  %833 = fneg float %831
  %834 = load <2 x float>, ptr %gep1134, align 4, !tbaa !13
  %835 = insertelement <2 x float> poison, float %831, i64 0
  %836 = insertelement <2 x float> %835, float %833, i64 1
  %837 = fmul <2 x float> %834, %836
  %838 = shufflevector <2 x float> %837, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %839 = insertelement <2 x float> poison, float %815, i64 0
  %840 = shufflevector <2 x float> %839, <2 x float> poison, <2 x i32> zeroinitializer
  %841 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %840, <2 x float> %834, <2 x float> %838)
  store <2 x float> %841, ptr %15, align 8, !tbaa !13
  %842 = shufflevector <2 x float> %832, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %843 = fneg <2 x float> %832
  %844 = shufflevector <2 x float> %842, <2 x float> %843, <2 x i32> <i32 0, i32 3>
  %845 = fmul <2 x float> %814, %844
  %846 = shufflevector <2 x float> %845, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %847 = shufflevector <2 x float> %832, <2 x float> poison, <2 x i32> zeroinitializer
  %848 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %847, <2 x float> %814, <2 x float> %846)
  %849 = fadd <2 x float> %848, %841
  store <2 x float> %849, ptr %gep1134, align 4, !tbaa !13
  br label %850

850:                                              ; preds = %822, %830
  %851 = add nuw i64 %.131129, 1
  %exitcond1456.not = icmp eq i64 %.131129, %791
  br i1 %exitcond1456.not, label %._crit_edge1132, label %794, !llvm.loop !67

._crit_edge1132:                                  ; preds = %850, %.lr.ph1139.split
  %852 = add nuw i64 %.79401138, 1
  %exitcond1457.not = icmp eq i64 %.79401138, %47
  br i1 %exitcond1457.not, label %.loopexit, label %.lr.ph1139.split, !llvm.loop !68

.lr.ph1162.split:                                 ; preds = %.lr.ph1162.split.preheader, %._crit_edge1155
  %.89411161 = phi i64 [ %914, %._crit_edge1155 ], [ 1, %.lr.ph1162.split.preheader ]
  %853 = load i64, ptr %2, align 8, !tbaa !5
  %.not9651151 = icmp slt i64 %853, 1
  br i1 %.not9651151, label %._crit_edge1155, label %.lr.ph1154

.lr.ph1154:                                       ; preds = %.lr.ph1162.split
  %854 = getelementptr %struct.complex, ptr %23, i64 %.89411161
  %855 = mul nsw i64 %.89411161, %24
  %invariant.gep1156 = getelementptr %struct.complex, ptr %26, i64 %855
  br label %856

856:                                              ; preds = %.lr.ph1154, %912
  %.141152 = phi i64 [ 1, %.lr.ph1154 ], [ %913, %912 ]
  %857 = load i64, ptr %4, align 8, !tbaa !5
  %.not9661140 = icmp slt i64 %857, 1
  br i1 %.not9661140, label %._crit_edge1146, label %.lr.ph1145

.lr.ph1145:                                       ; preds = %856
  %858 = mul nsw i64 %.141152, %18
  %invariant.gep1149 = getelementptr %struct.complex, ptr %20, i64 %858
  br label %859

859:                                              ; preds = %.lr.ph1145, %859
  %.61141 = phi i64 [ 1, %.lr.ph1145 ], [ %875, %859 ]
  %860 = phi <2 x float> [ zeroinitializer, %.lr.ph1145 ], [ %874, %859 ]
  %gep1150 = getelementptr %struct.complex, ptr %invariant.gep1149, i64 %.61141
  call void @r_cnjg(ptr noundef nonnull %15, ptr noundef %gep1150) #6
  %861 = mul nsw i64 %.61141, %21
  %862 = load float, ptr %15, align 8, !tbaa !9
  %863 = getelementptr %struct.complex, ptr %854, i64 %861
  %864 = load float, ptr %788, align 4, !tbaa !12
  %865 = fneg float %864
  %866 = load <2 x float>, ptr %863, align 4, !tbaa !13
  %867 = insertelement <2 x float> poison, float %864, i64 0
  %868 = insertelement <2 x float> %867, float %865, i64 1
  %869 = fmul <2 x float> %866, %868
  %870 = shufflevector <2 x float> %869, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %871 = insertelement <2 x float> poison, float %862, i64 0
  %872 = shufflevector <2 x float> %871, <2 x float> poison, <2 x i32> zeroinitializer
  %873 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %872, <2 x float> %866, <2 x float> %870)
  %874 = fadd <2 x float> %860, %873
  %875 = add nuw i64 %.61141, 1
  %exitcond1458.not = icmp eq i64 %.61141, %857
  br i1 %exitcond1458.not, label %._crit_edge1146, label %859, !llvm.loop !69

._crit_edge1146:                                  ; preds = %859, %856
  %876 = phi <2 x float> [ zeroinitializer, %856 ], [ %874, %859 ]
  %877 = load float, ptr %10, align 4, !tbaa !9
  %878 = fcmp oeq float %877, 0.000000e+00
  br i1 %878, label %880, label %._crit_edge1146._crit_edge

._crit_edge1146._crit_edge:                       ; preds = %._crit_edge1146
  %879 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1517 = load float, ptr %790, align 4, !tbaa !12
  br label %892

880:                                              ; preds = %._crit_edge1146
  %881 = load float, ptr %790, align 4, !tbaa !12
  %882 = fcmp oeq float %881, 0.000000e+00
  %883 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %882, label %884, label %892

884:                                              ; preds = %880
  %gep1159 = getelementptr %struct.complex, ptr %invariant.gep1156, i64 %.141152
  %885 = shufflevector <2 x float> %883, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %886 = fneg <2 x float> %883
  %887 = shufflevector <2 x float> %885, <2 x float> %886, <2 x i32> <i32 0, i32 3>
  %888 = fmul <2 x float> %876, %887
  %889 = shufflevector <2 x float> %888, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %890 = shufflevector <2 x float> %883, <2 x float> poison, <2 x i32> zeroinitializer
  %891 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %890, <2 x float> %876, <2 x float> %889)
  store <2 x float> %891, ptr %gep1159, align 4, !tbaa !13
  br label %912

892:                                              ; preds = %._crit_edge1146._crit_edge, %880
  %893 = phi float [ %.pre1517, %._crit_edge1146._crit_edge ], [ %881, %880 ]
  %894 = phi <2 x float> [ %879, %._crit_edge1146._crit_edge ], [ %883, %880 ]
  %gep1157 = getelementptr %struct.complex, ptr %invariant.gep1156, i64 %.141152
  %895 = fneg float %893
  %896 = load <2 x float>, ptr %gep1157, align 4, !tbaa !13
  %897 = insertelement <2 x float> poison, float %893, i64 0
  %898 = insertelement <2 x float> %897, float %895, i64 1
  %899 = fmul <2 x float> %896, %898
  %900 = shufflevector <2 x float> %899, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %901 = insertelement <2 x float> poison, float %877, i64 0
  %902 = shufflevector <2 x float> %901, <2 x float> poison, <2 x i32> zeroinitializer
  %903 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %902, <2 x float> %896, <2 x float> %900)
  store <2 x float> %903, ptr %15, align 8, !tbaa !13
  %904 = shufflevector <2 x float> %894, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %905 = fneg <2 x float> %894
  %906 = shufflevector <2 x float> %904, <2 x float> %905, <2 x i32> <i32 0, i32 3>
  %907 = fmul <2 x float> %876, %906
  %908 = shufflevector <2 x float> %907, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %909 = shufflevector <2 x float> %894, <2 x float> poison, <2 x i32> zeroinitializer
  %910 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %909, <2 x float> %876, <2 x float> %908)
  %911 = fadd <2 x float> %910, %903
  store <2 x float> %911, ptr %gep1157, align 4, !tbaa !13
  br label %912

912:                                              ; preds = %884, %892
  %913 = add nuw i64 %.141152, 1
  %exitcond1459.not = icmp eq i64 %.141152, %853
  br i1 %exitcond1459.not, label %._crit_edge1155, label %856, !llvm.loop !70

._crit_edge1155:                                  ; preds = %912, %.lr.ph1162.split
  %914 = add nuw i64 %.89411161, 1
  %exitcond1460.not = icmp eq i64 %.89411161, %47
  br i1 %exitcond1460.not, label %.loopexit, label %.lr.ph1162.split, !llvm.loop !71

915:                                              ; preds = %786
  br i1 %.not970, label %.preheader1026.lr.ph.split, label %.lr.ph1047.split.preheader

.lr.ph1047.split.preheader:                       ; preds = %915
  %916 = getelementptr inbounds i8, ptr %10, i64 4
  br label %.lr.ph1047.split

.preheader1026.lr.ph.split:                       ; preds = %915
  %917 = getelementptr inbounds i8, ptr %10, i64 4
  %.not9591048 = icmp eq i64 %51, 0
  br i1 %.not9591048, label %.preheader1026.us1102, label %.preheader1026

.preheader1026.us1102:                            ; preds = %.preheader1026.lr.ph.split, %._crit_edge1069.split.us.us
  %.101090.us1105 = phi i64 [ %959, %._crit_edge1069.split.us.us ], [ 1, %.preheader1026.lr.ph.split ]
  %918 = phi <4 x float> [ %957, %._crit_edge1069.split.us.us ], [ undef, %.preheader1026.lr.ph.split ]
  %919 = mul nsw i64 %.101090.us1105, %24
  %invariant.gep1072.us = getelementptr %struct.complex, ptr %26, i64 %919
  br label %920

920:                                              ; preds = %956, %.preheader1026.us1102
  %.161067.us.us = phi i64 [ 1, %.preheader1026.us1102 ], [ %958, %956 ]
  %921 = phi <4 x float> [ %918, %.preheader1026.us1102 ], [ %957, %956 ]
  %922 = load float, ptr %10, align 4, !tbaa !9
  %923 = fcmp oeq float %922, 0.000000e+00
  br i1 %923, label %925, label %._crit_edge1502

._crit_edge1502:                                  ; preds = %920
  %924 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1507 = load float, ptr %917, align 4, !tbaa !12
  br label %929

925:                                              ; preds = %920
  %926 = load float, ptr %917, align 4, !tbaa !12
  %927 = fcmp oeq float %926, 0.000000e+00
  %928 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %927, label %951, label %929

929:                                              ; preds = %._crit_edge1502, %925
  %930 = phi float [ %.pre1507, %._crit_edge1502 ], [ %926, %925 ]
  %931 = phi <2 x float> [ %924, %._crit_edge1502 ], [ %928, %925 ]
  %gep1073.us.us = getelementptr %struct.complex, ptr %invariant.gep1072.us, i64 %.161067.us.us
  %932 = load <2 x float>, ptr %gep1073.us.us, align 4, !tbaa !13
  %933 = fneg float %930
  %934 = shufflevector <2 x float> %932, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 1, i32 poison>
  %935 = insertelement <4 x float> %934, float 0.000000e+00, i64 1
  %936 = shufflevector <2 x float> %931, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %937 = shufflevector <4 x float> %935, <4 x float> %936, <4 x i32> <i32 0, i32 1, i32 2, i32 5>
  %938 = insertelement <4 x float> <float poison, float poison, float poison, float -0.000000e+00>, float %930, i64 0
  %939 = shufflevector <4 x float> %938, <4 x float> %936, <4 x i32> <i32 0, i32 5, i32 poison, i32 3>
  %940 = insertelement <4 x float> %939, float %933, i64 2
  %941 = fmul <4 x float> %937, %940
  %942 = insertelement <4 x float> poison, float %922, i64 0
  %943 = shufflevector <4 x float> %942, <4 x float> %936, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison>
  %944 = shufflevector <4 x float> %943, <4 x float> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
  %945 = shufflevector <4 x float> %937, <4 x float> <float poison, float 0.000000e+00, float poison, float 0.000000e+00>, <4 x i32> <i32 2, i32 5, i32 0, i32 7>
  %946 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %944, <4 x float> %945, <4 x float> %941)
  %947 = shufflevector <4 x float> %946, <4 x float> poison, <2 x i32> <i32 1, i32 2>
  %948 = shufflevector <4 x float> %946, <4 x float> poison, <2 x i32> <i32 0, i32 3>
  %949 = fadd <2 x float> %947, %948
  %950 = shufflevector <2 x float> %949, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  store <2 x float> %950, ptr %gep1073.us.us, align 4, !tbaa !13
  br label %956

951:                                              ; preds = %925
  %952 = shufflevector <2 x float> %928, <2 x float> poison, <2 x i32> <i32 1, i32 1>
  %953 = fmul <2 x float> %952, <float -0.000000e+00, float 0.000000e+00>
  %gep1075.us.us = getelementptr %struct.complex, ptr %invariant.gep1072.us, i64 %.161067.us.us
  %954 = shufflevector <2 x float> %928, <2 x float> poison, <2 x i32> zeroinitializer
  %955 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %954, <2 x float> zeroinitializer, <2 x float> %953)
  store <2 x float> %955, ptr %gep1075.us.us, align 4, !tbaa !13
  br label %956

956:                                              ; preds = %951, %929
  %957 = phi <4 x float> [ %921, %951 ], [ %946, %929 ]
  %958 = add nuw i64 %.161067.us.us, 1
  %exitcond1453.not = icmp eq i64 %.161067.us.us, %43
  br i1 %exitcond1453.not, label %._crit_edge1069.split.us.us, label %920, !llvm.loop !72

._crit_edge1069.split.us.us:                      ; preds = %956
  %959 = add nuw i64 %.101090.us1105, 1
  %exitcond1454.not = icmp eq i64 %.101090.us1105, %47
  br i1 %exitcond1454.not, label %.loopexit, label %.preheader1026.us1102, !llvm.loop !73

.lr.ph1047.split:                                 ; preds = %.lr.ph1047.split.preheader, %._crit_edge1040
  %.91046 = phi i64 [ %1022, %._crit_edge1040 ], [ 1, %.lr.ph1047.split.preheader ]
  %960 = load i64, ptr %2, align 8, !tbaa !5
  %.not9611036 = icmp slt i64 %960, 1
  br i1 %.not9611036, label %._crit_edge1040, label %.lr.ph1039

.lr.ph1039:                                       ; preds = %.lr.ph1047.split
  %961 = getelementptr %struct.complex, ptr %23, i64 %.91046
  %962 = mul nsw i64 %.91046, %24
  %invariant.gep1041 = getelementptr %struct.complex, ptr %26, i64 %962
  br label %963

963:                                              ; preds = %.lr.ph1039, %1020
  %.151037 = phi i64 [ 1, %.lr.ph1039 ], [ %1021, %1020 ]
  %964 = load i64, ptr %4, align 8, !tbaa !5
  %.not9621031 = icmp slt i64 %964, 1
  br i1 %.not9621031, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %963
  %965 = mul nsw i64 %.151037, %18
  %invariant.gep = getelementptr %struct.complex, ptr %20, i64 %965
  br label %966

966:                                              ; preds = %.lr.ph, %966
  %.71032 = phi i64 [ 1, %.lr.ph ], [ %983, %966 ]
  %967 = phi <2 x float> [ zeroinitializer, %.lr.ph ], [ %982, %966 ]
  %968 = mul nsw i64 %.71032, %21
  %969 = getelementptr %struct.complex, ptr %961, i64 %968
  call void @r_cnjg(ptr noundef nonnull %15, ptr noundef %969) #6
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.71032
  %970 = load float, ptr %gep, align 4, !tbaa !9
  %971 = getelementptr inbounds i8, ptr %gep, i64 4
  %972 = load float, ptr %971, align 4, !tbaa !12
  %973 = fneg float %972
  %974 = load <2 x float>, ptr %15, align 8, !tbaa !13
  %975 = insertelement <2 x float> poison, float %972, i64 0
  %976 = insertelement <2 x float> %975, float %973, i64 1
  %977 = fmul <2 x float> %974, %976
  %978 = shufflevector <2 x float> %977, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %979 = insertelement <2 x float> poison, float %970, i64 0
  %980 = shufflevector <2 x float> %979, <2 x float> poison, <2 x i32> zeroinitializer
  %981 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %980, <2 x float> %974, <2 x float> %978)
  %982 = fadd <2 x float> %967, %981
  %983 = add nuw i64 %.71032, 1
  %exitcond.not = icmp eq i64 %.71032, %964
  br i1 %exitcond.not, label %._crit_edge, label %966, !llvm.loop !74

._crit_edge:                                      ; preds = %966, %963
  %984 = phi <2 x float> [ zeroinitializer, %963 ], [ %982, %966 ]
  %985 = load float, ptr %10, align 4, !tbaa !9
  %986 = fcmp oeq float %985, 0.000000e+00
  br i1 %986, label %988, label %._crit_edge._crit_edge

._crit_edge._crit_edge:                           ; preds = %._crit_edge
  %987 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1496 = load float, ptr %916, align 4, !tbaa !12
  br label %1000

988:                                              ; preds = %._crit_edge
  %989 = load float, ptr %916, align 4, !tbaa !12
  %990 = fcmp oeq float %989, 0.000000e+00
  %991 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %990, label %992, label %1000

992:                                              ; preds = %988
  %gep1044 = getelementptr %struct.complex, ptr %invariant.gep1041, i64 %.151037
  %993 = shufflevector <2 x float> %991, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %994 = fneg <2 x float> %991
  %995 = shufflevector <2 x float> %993, <2 x float> %994, <2 x i32> <i32 0, i32 3>
  %996 = fmul <2 x float> %984, %995
  %997 = shufflevector <2 x float> %996, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %998 = shufflevector <2 x float> %991, <2 x float> poison, <2 x i32> zeroinitializer
  %999 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %998, <2 x float> %984, <2 x float> %997)
  store <2 x float> %999, ptr %gep1044, align 4, !tbaa !13
  br label %1020

1000:                                             ; preds = %._crit_edge._crit_edge, %988
  %1001 = phi float [ %.pre1496, %._crit_edge._crit_edge ], [ %989, %988 ]
  %1002 = phi <2 x float> [ %987, %._crit_edge._crit_edge ], [ %991, %988 ]
  %gep1042 = getelementptr %struct.complex, ptr %invariant.gep1041, i64 %.151037
  %1003 = fneg float %1001
  %1004 = load <2 x float>, ptr %gep1042, align 4, !tbaa !13
  %1005 = insertelement <2 x float> poison, float %1001, i64 0
  %1006 = insertelement <2 x float> %1005, float %1003, i64 1
  %1007 = fmul <2 x float> %1004, %1006
  %1008 = shufflevector <2 x float> %1007, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1009 = insertelement <2 x float> poison, float %985, i64 0
  %1010 = shufflevector <2 x float> %1009, <2 x float> poison, <2 x i32> zeroinitializer
  %1011 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1010, <2 x float> %1004, <2 x float> %1008)
  store <2 x float> %1011, ptr %15, align 8, !tbaa !13
  %1012 = shufflevector <2 x float> %1002, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1013 = fneg <2 x float> %1002
  %1014 = shufflevector <2 x float> %1012, <2 x float> %1013, <2 x i32> <i32 0, i32 3>
  %1015 = fmul <2 x float> %984, %1014
  %1016 = shufflevector <2 x float> %1015, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1017 = shufflevector <2 x float> %1002, <2 x float> poison, <2 x i32> zeroinitializer
  %1018 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1017, <2 x float> %984, <2 x float> %1016)
  %1019 = fadd <2 x float> %1018, %1011
  store <2 x float> %1019, ptr %gep1042, align 4, !tbaa !13
  br label %1020

1020:                                             ; preds = %992, %1000
  %1021 = add nuw i64 %.151037, 1
  %exitcond1448.not = icmp eq i64 %.151037, %960
  br i1 %exitcond1448.not, label %._crit_edge1040, label %963, !llvm.loop !75

._crit_edge1040:                                  ; preds = %1020, %.lr.ph1047.split
  %1022 = add nuw i64 %.91046, 1
  %exitcond1449.not = icmp eq i64 %.91046, %47
  br i1 %exitcond1449.not, label %.loopexit, label %.lr.ph1047.split, !llvm.loop !76

.preheader1026:                                   ; preds = %.preheader1026.lr.ph.split, %._crit_edge1069.split
  %.101090 = phi i64 [ %1084, %._crit_edge1069.split ], [ 1, %.preheader1026.lr.ph.split ]
  %1023 = phi <2 x float> [ %1082, %._crit_edge1069.split ], [ undef, %.preheader1026.lr.ph.split ]
  %1024 = getelementptr %struct.complex, ptr %23, i64 %.101090
  %1025 = mul nsw i64 %.101090, %24
  %invariant.gep1072 = getelementptr %struct.complex, ptr %26, i64 %1025
  br label %.lr.ph1053

.lr.ph1053:                                       ; preds = %.preheader1026, %1081
  %.161067 = phi i64 [ 1, %.preheader1026 ], [ %1083, %1081 ]
  %1026 = phi <2 x float> [ %1023, %.preheader1026 ], [ %1082, %1081 ]
  %1027 = mul nsw i64 %.161067, %18
  %invariant.gep1058 = getelementptr %struct.complex, ptr %20, i64 %1027
  br label %1028

1028:                                             ; preds = %.lr.ph1053, %1028
  %.81049 = phi i64 [ 1, %.lr.ph1053 ], [ %1045, %1028 ]
  %1029 = phi <2 x float> [ zeroinitializer, %.lr.ph1053 ], [ %1044, %1028 ]
  %1030 = mul nsw i64 %.81049, %21
  %gep1059 = getelementptr %struct.complex, ptr %invariant.gep1058, i64 %.81049
  %1031 = load float, ptr %gep1059, align 4, !tbaa !9
  %1032 = getelementptr %struct.complex, ptr %1024, i64 %1030
  %1033 = getelementptr inbounds i8, ptr %gep1059, i64 4
  %1034 = load float, ptr %1033, align 4, !tbaa !12
  %1035 = fneg float %1034
  %1036 = load <2 x float>, ptr %1032, align 4, !tbaa !13
  %1037 = insertelement <2 x float> poison, float %1034, i64 0
  %1038 = insertelement <2 x float> %1037, float %1035, i64 1
  %1039 = fmul <2 x float> %1036, %1038
  %1040 = shufflevector <2 x float> %1039, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1041 = insertelement <2 x float> poison, float %1031, i64 0
  %1042 = shufflevector <2 x float> %1041, <2 x float> poison, <2 x i32> zeroinitializer
  %1043 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1042, <2 x float> %1036, <2 x float> %1040)
  %1044 = fadd <2 x float> %1029, %1043
  %1045 = add nuw i64 %.81049, 1
  %exitcond1450.not = icmp eq i64 %.81049, %51
  br i1 %exitcond1450.not, label %._crit_edge1054, label %1028, !llvm.loop !77

._crit_edge1054:                                  ; preds = %1028
  %1046 = load float, ptr %10, align 4, !tbaa !9
  %1047 = fcmp oeq float %1046, 0.000000e+00
  br i1 %1047, label %1049, label %._crit_edge1054._crit_edge

._crit_edge1054._crit_edge:                       ; preds = %._crit_edge1054
  %1048 = load <2 x float>, ptr %5, align 4, !tbaa !13
  %.pre1501 = load float, ptr %917, align 4, !tbaa !12
  br label %1061

1049:                                             ; preds = %._crit_edge1054
  %1050 = load float, ptr %917, align 4, !tbaa !12
  %1051 = fcmp oeq float %1050, 0.000000e+00
  %1052 = load <2 x float>, ptr %5, align 4, !tbaa !13
  br i1 %1051, label %1053, label %1061

1053:                                             ; preds = %1049
  %gep1075 = getelementptr %struct.complex, ptr %invariant.gep1072, i64 %.161067
  %1054 = shufflevector <2 x float> %1052, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1055 = fneg <2 x float> %1052
  %1056 = shufflevector <2 x float> %1054, <2 x float> %1055, <2 x i32> <i32 0, i32 3>
  %1057 = fmul <2 x float> %1044, %1056
  %1058 = shufflevector <2 x float> %1057, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1059 = shufflevector <2 x float> %1052, <2 x float> poison, <2 x i32> zeroinitializer
  %1060 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1059, <2 x float> %1044, <2 x float> %1058)
  store <2 x float> %1060, ptr %gep1075, align 4, !tbaa !13
  br label %1081

1061:                                             ; preds = %._crit_edge1054._crit_edge, %1049
  %1062 = phi float [ %.pre1501, %._crit_edge1054._crit_edge ], [ %1050, %1049 ]
  %1063 = phi <2 x float> [ %1048, %._crit_edge1054._crit_edge ], [ %1052, %1049 ]
  %gep1073 = getelementptr %struct.complex, ptr %invariant.gep1072, i64 %.161067
  %1064 = fneg float %1062
  %1065 = load <2 x float>, ptr %gep1073, align 4, !tbaa !13
  %1066 = insertelement <2 x float> poison, float %1062, i64 0
  %1067 = insertelement <2 x float> %1066, float %1064, i64 1
  %1068 = fmul <2 x float> %1065, %1067
  %1069 = shufflevector <2 x float> %1068, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1070 = insertelement <2 x float> poison, float %1046, i64 0
  %1071 = shufflevector <2 x float> %1070, <2 x float> poison, <2 x i32> zeroinitializer
  %1072 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1071, <2 x float> %1065, <2 x float> %1069)
  %1073 = shufflevector <2 x float> %1063, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1074 = fneg <2 x float> %1063
  %1075 = shufflevector <2 x float> %1073, <2 x float> %1074, <2 x i32> <i32 0, i32 3>
  %1076 = fmul <2 x float> %1044, %1075
  %1077 = shufflevector <2 x float> %1076, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1078 = shufflevector <2 x float> %1063, <2 x float> poison, <2 x i32> zeroinitializer
  %1079 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1078, <2 x float> %1044, <2 x float> %1077)
  %1080 = fadd <2 x float> %1079, %1072
  store <2 x float> %1080, ptr %gep1073, align 4, !tbaa !13
  br label %1081

1081:                                             ; preds = %1053, %1061
  %1082 = phi <2 x float> [ %1026, %1053 ], [ %1072, %1061 ]
  %1083 = add nuw i64 %.161067, 1
  %exitcond1451.not = icmp eq i64 %.161067, %43
  br i1 %exitcond1451.not, label %._crit_edge1069.split, label %.lr.ph1053, !llvm.loop !72

._crit_edge1069.split:                            ; preds = %1081
  %1084 = add nuw i64 %.101090, 1
  %exitcond1452.not = icmp eq i64 %.101090, %47
  br i1 %exitcond1452.not, label %.loopexit, label %.preheader1026, !llvm.loop !73

.loopexit.loopexit.unr-lcssa:                     ; preds = %.preheader, %.preheader.preheader
  %indvar1489.unr = phi i64 [ 0, %.preheader.preheader ], [ %indvar.next1490.7, %.preheader ]
  %lcmp.mod1986.not = icmp eq i64 %xtraiter1985, 0
  br i1 %lcmp.mod1986.not, label %.loopexit, label %.preheader.epil

.preheader.epil:                                  ; preds = %.loopexit.loopexit.unr-lcssa, %.preheader.epil
  %indvar1489.epil = phi i64 [ %indvar.next1490.epil, %.preheader.epil ], [ %indvar1489.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %1085 = mul i64 %100, %indvar1489.epil
  %scevgep1491.epil = getelementptr i8, ptr %11, i64 %1085
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep1491.epil, i8 0, i64 %101, i1 false), !tbaa !13
  %indvar.next1490.epil = add nuw nsw i64 %indvar1489.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1985
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.preheader.epil, !llvm.loop !78

.loopexit:                                        ; preds = %._crit_edge1040, %._crit_edge1069.split, %._crit_edge1069.split.us.us, %._crit_edge1132, %._crit_edge1155, %._crit_edge1189, %._crit_edge1225, %._crit_edge1267, %._crit_edge1318, %._crit_edge1358, %._crit_edge1380, %.loopexit.loopexit.unr-lcssa, %.preheader.epil, %69, %84, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  ret i32 0
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

declare void @r_cnjg(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 i64 @llvm.smax.i64(i64, i64) #4

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17}
!17 = distinct !{!17, !18}
!18 = distinct !{!18, !"LVerDomain"}
!19 = !{!20}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !15, !22, !23}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !15, !22}
!25 = distinct !{!25, !15}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !15, !22, !23}
!32 = distinct !{!32, !15, !22}
!33 = distinct !{!33, !15, !22, !23}
!34 = distinct !{!34, !15, !22}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15, !40}
!40 = !{!"llvm.loop.unswitch.partial.disable"}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15}
!43 = distinct !{!43, !15}
!44 = !{!45}
!45 = distinct !{!45, !46}
!46 = distinct !{!46, !"LVerDomain"}
!47 = !{!48}
!48 = distinct !{!48, !46}
!49 = distinct !{!49, !15, !22, !23}
!50 = distinct !{!50, !15, !22}
!51 = distinct !{!51, !15, !22, !23}
!52 = distinct !{!52, !15, !22}
!53 = distinct !{!53, !15}
!54 = distinct !{!54, !15}
!55 = !{!56}
!56 = distinct !{!56, !57}
!57 = distinct !{!57, !"LVerDomain"}
!58 = !{!59}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !15, !22, !23}
!61 = distinct !{!61, !15, !22}
!62 = distinct !{!62, !15, !22, !23}
!63 = distinct !{!63, !15, !22}
!64 = distinct !{!64, !15}
!65 = distinct !{!65, !15}
!66 = distinct !{!66, !15}
!67 = distinct !{!67, !15}
!68 = distinct !{!68, !15, !40}
!69 = distinct !{!69, !15}
!70 = distinct !{!70, !15}
!71 = distinct !{!71, !15, !40}
!72 = distinct !{!72, !15}
!73 = distinct !{!73, !15}
!74 = distinct !{!74, !15}
!75 = distinct !{!75, !15}
!76 = distinct !{!76, !15, !40}
!77 = distinct !{!77, !15}
!78 = distinct !{!78, !79}
!79 = !{!"llvm.loop.unroll.disable"}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass