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

; 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 [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @f2c_ctrmm(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) #0 {
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %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 i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, 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 %struct.complex, align 4
  %35 = alloca %struct.complex, align 4
  %36 = alloca %struct.complex, align 4
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca %struct.complex, align 4
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i32, align 4
  store ptr %0, ptr %13, align 8, !tbaa !5
  store ptr %1, ptr %14, align 8, !tbaa !5
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %6, ptr %19, align 8, !tbaa !5
  store ptr %7, ptr %20, align 8, !tbaa !5
  store ptr %8, ptr %21, align 8, !tbaa !5
  store ptr %9, ptr %22, align 8, !tbaa !5
  store ptr %10, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  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
  %48 = load ptr, ptr %21, align 8, !tbaa !5
  %49 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %49, ptr %24, align 8, !tbaa !9
  %50 = load i64, ptr %24, align 8, !tbaa !9
  %51 = add nsw i64 1, %50
  store i64 %51, ptr %25, align 8, !tbaa !9
  %52 = load i64, ptr %25, align 8, !tbaa !9
  %53 = load ptr, ptr %20, align 8, !tbaa !5
  %54 = sub i64 0, %52
  %55 = getelementptr inbounds %struct.complex, ptr %53, i64 %54
  store ptr %55, ptr %20, align 8, !tbaa !5
  %56 = load ptr, ptr %23, align 8, !tbaa !5
  %57 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %57, ptr %26, align 8, !tbaa !9
  %58 = load i64, ptr %26, align 8, !tbaa !9
  %59 = add nsw i64 1, %58
  store i64 %59, ptr %27, align 8, !tbaa !9
  %60 = load i64, ptr %27, align 8, !tbaa !9
  %61 = load ptr, ptr %22, align 8, !tbaa !5
  %62 = sub i64 0, %60
  %63 = getelementptr inbounds %struct.complex, ptr %61, i64 %62
  store ptr %63, ptr %22, align 8, !tbaa !5
  %64 = load ptr, ptr %13, align 8, !tbaa !5
  %65 = call i64 @lsame_(ptr noundef %64, ptr noundef @.str)
  store i64 %65, ptr %42, align 8, !tbaa !9
  %66 = load i64, ptr %42, align 8, !tbaa !9
  %67 = icmp ne i64 %66, 0
  br i1 %67, label %68, label %71

68:                                               ; preds = %11
  %69 = load ptr, ptr %17, align 8, !tbaa !5
  %70 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %70, ptr %43, align 8, !tbaa !9
  br label %74

71:                                               ; preds = %11
  %72 = load ptr, ptr %18, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %73, ptr %43, align 8, !tbaa !9
  br label %74

74:                                               ; preds = %71, %68
  %75 = load ptr, ptr %15, align 8, !tbaa !5
  %76 = call i64 @lsame_(ptr noundef %75, ptr noundef @.str.1)
  store i64 %76, ptr %45, align 8, !tbaa !9
  %77 = load ptr, ptr %16, align 8, !tbaa !5
  %78 = call i64 @lsame_(ptr noundef %77, ptr noundef @.str.2)
  store i64 %78, ptr %46, align 8, !tbaa !9
  %79 = load ptr, ptr %14, align 8, !tbaa !5
  %80 = call i64 @lsame_(ptr noundef %79, ptr noundef @.str.3)
  store i64 %80, ptr %44, align 8, !tbaa !9
  store i64 0, ptr %40, align 8, !tbaa !9
  %81 = load i64, ptr %42, align 8, !tbaa !9
  %82 = icmp ne i64 %81, 0
  br i1 %82, label %88, label %83

83:                                               ; preds = %74
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = call i64 @lsame_(ptr noundef %84, ptr noundef @.str.4)
  %86 = icmp ne i64 %85, 0
  br i1 %86, label %88, label %87

87:                                               ; preds = %83
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %161

88:                                               ; preds = %83, %74
  %89 = load i64, ptr %44, align 8, !tbaa !9
  %90 = icmp ne i64 %89, 0
  br i1 %90, label %96, label %91

91:                                               ; preds = %88
  %92 = load ptr, ptr %14, align 8, !tbaa !5
  %93 = call i64 @lsame_(ptr noundef %92, ptr noundef @.str)
  %94 = icmp ne i64 %93, 0
  br i1 %94, label %96, label %95

95:                                               ; preds = %91
  store i64 2, ptr %40, align 8, !tbaa !9
  br label %160

96:                                               ; preds = %91, %88
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = call i64 @lsame_(ptr noundef %97, ptr noundef @.str.2)
  %99 = icmp ne i64 %98, 0
  br i1 %99, label %109, label %100

100:                                              ; preds = %96
  %101 = load ptr, ptr %15, align 8, !tbaa !5
  %102 = call i64 @lsame_(ptr noundef %101, ptr noundef @.str.1)
  %103 = icmp ne i64 %102, 0
  br i1 %103, label %109, label %104

104:                                              ; preds = %100
  %105 = load ptr, ptr %15, align 8, !tbaa !5
  %106 = call i64 @lsame_(ptr noundef %105, ptr noundef @.str.5)
  %107 = icmp ne i64 %106, 0
  br i1 %107, label %109, label %108

108:                                              ; preds = %104
  store i64 3, ptr %40, align 8, !tbaa !9
  br label %159

109:                                              ; preds = %104, %100, %96
  %110 = load ptr, ptr %16, align 8, !tbaa !5
  %111 = call i64 @lsame_(ptr noundef %110, ptr noundef @.str.3)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %118, label %113

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

117:                                              ; preds = %113
  store i64 4, ptr %40, align 8, !tbaa !9
  br label %158

118:                                              ; preds = %113, %109
  %119 = load ptr, ptr %17, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = icmp slt i64 %120, 0
  br i1 %121, label %122, label %123

122:                                              ; preds = %118
  store i64 5, ptr %40, align 8, !tbaa !9
  br label %157

123:                                              ; preds = %118
  %124 = load ptr, ptr %18, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = icmp slt i64 %125, 0
  br i1 %126, label %127, label %128

127:                                              ; preds = %123
  store i64 6, ptr %40, align 8, !tbaa !9
  br label %156

128:                                              ; preds = %123
  %129 = load ptr, ptr %21, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = load i64, ptr %43, align 8, !tbaa !9
  %132 = icmp sge i64 1, %131
  br i1 %132, label %133, label %134

133:                                              ; preds = %128
  br label %136

134:                                              ; preds = %128
  %135 = load i64, ptr %43, align 8, !tbaa !9
  br label %136

136:                                              ; preds = %134, %133
  %137 = phi i64 [ 1, %133 ], [ %135, %134 ]
  %138 = icmp slt i64 %130, %137
  br i1 %138, label %139, label %140

139:                                              ; preds = %136
  store i64 9, ptr %40, align 8, !tbaa !9
  br label %155

140:                                              ; preds = %136
  %141 = load ptr, ptr %23, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp sge i64 1, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %140
  br label %150

147:                                              ; preds = %140
  %148 = load ptr, ptr %17, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %147, %146
  %151 = phi i64 [ 1, %146 ], [ %149, %147 ]
  %152 = icmp slt i64 %142, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %150
  store i64 11, ptr %40, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %153, %150
  br label %155

155:                                              ; preds = %154, %139
  br label %156

156:                                              ; preds = %155, %127
  br label %157

157:                                              ; preds = %156, %122
  br label %158

158:                                              ; preds = %157, %117
  br label %159

159:                                              ; preds = %158, %108
  br label %160

160:                                              ; preds = %159, %95
  br label %161

161:                                              ; preds = %160, %87
  %162 = load i64, ptr %40, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %161
  %165 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %40)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %47, align 4
  br label %2899

166:                                              ; preds = %161
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = icmp eq i64 %168, 0
  br i1 %169, label %174, label %170

170:                                              ; preds = %166
  %171 = load ptr, ptr %18, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp eq i64 %172, 0
  br i1 %173, label %174, label %175

174:                                              ; preds = %170, %166
  store i32 0, ptr %12, align 4
  store i32 1, ptr %47, align 4
  br label %2899

175:                                              ; preds = %170
  %176 = load ptr, ptr %19, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.complex, ptr %176, i32 0, i32 0
  %178 = load float, ptr %177, align 4, !tbaa !11
  %179 = fcmp oeq float %178, 0.000000e+00
  br i1 %179, label %180, label %221

180:                                              ; preds = %175
  %181 = load ptr, ptr %19, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.complex, ptr %181, i32 0, i32 1
  %183 = load float, ptr %182, align 4, !tbaa !14
  %184 = fcmp oeq float %183, 0.000000e+00
  br i1 %184, label %185, label %221

185:                                              ; preds = %180
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  store i64 %187, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %217, %185
  %189 = load i64, ptr %38, align 8, !tbaa !9
  %190 = load i64, ptr %28, align 8, !tbaa !9
  %191 = icmp sle i64 %189, %190
  br i1 %191, label %192, label %220

192:                                              ; preds = %188
  %193 = load ptr, ptr %17, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  store i64 %194, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %213, %192
  %196 = load i64, ptr %37, align 8, !tbaa !9
  %197 = load i64, ptr %29, align 8, !tbaa !9
  %198 = icmp sle i64 %196, %197
  br i1 %198, label %199, label %216

199:                                              ; preds = %195
  %200 = load i64, ptr %37, align 8, !tbaa !9
  %201 = load i64, ptr %38, align 8, !tbaa !9
  %202 = load i64, ptr %26, align 8, !tbaa !9
  %203 = mul nsw i64 %201, %202
  %204 = add nsw i64 %200, %203
  store i64 %204, ptr %30, align 8, !tbaa !9
  %205 = load ptr, ptr %22, align 8, !tbaa !5
  %206 = load i64, ptr %30, align 8, !tbaa !9
  %207 = getelementptr inbounds %struct.complex, ptr %205, i64 %206
  %208 = getelementptr inbounds %struct.complex, ptr %207, i32 0, i32 0
  store float 0.000000e+00, ptr %208, align 4, !tbaa !11
  %209 = load ptr, ptr %22, align 8, !tbaa !5
  %210 = load i64, ptr %30, align 8, !tbaa !9
  %211 = getelementptr inbounds %struct.complex, ptr %209, i64 %210
  %212 = getelementptr inbounds %struct.complex, ptr %211, i32 0, i32 1
  store float 0.000000e+00, ptr %212, align 4, !tbaa !14
  br label %213

213:                                              ; preds = %199
  %214 = load i64, ptr %37, align 8, !tbaa !9
  %215 = add nsw i64 %214, 1
  store i64 %215, ptr %37, align 8, !tbaa !9
  br label %195, !llvm.loop !15

216:                                              ; preds = %195
  br label %217

217:                                              ; preds = %216
  %218 = load i64, ptr %38, align 8, !tbaa !9
  %219 = add nsw i64 %218, 1
  store i64 %219, ptr %38, align 8, !tbaa !9
  br label %188, !llvm.loop !17

220:                                              ; preds = %188
  store i32 0, ptr %12, align 4
  store i32 1, ptr %47, align 4
  br label %2899

221:                                              ; preds = %180, %175
  %222 = load i64, ptr %42, align 8, !tbaa !9
  %223 = icmp ne i64 %222, 0
  br i1 %223, label %224, label %1453

224:                                              ; preds = %221
  %225 = load ptr, ptr %15, align 8, !tbaa !5
  %226 = call i64 @lsame_(ptr noundef %225, ptr noundef @.str.2)
  %227 = icmp ne i64 %226, 0
  br i1 %227, label %228, label %763

228:                                              ; preds = %224
  %229 = load i64, ptr %44, align 8, !tbaa !9
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %231, label %482

231:                                              ; preds = %228
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  store i64 %233, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %478, %231
  %235 = load i64, ptr %38, align 8, !tbaa !9
  %236 = load i64, ptr %28, align 8, !tbaa !9
  %237 = icmp sle i64 %235, %236
  br i1 %237, label %238, label %481

238:                                              ; preds = %234
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  store i64 %240, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %474, %238
  %242 = load i64, ptr %39, align 8, !tbaa !9
  %243 = load i64, ptr %29, align 8, !tbaa !9
  %244 = icmp sle i64 %242, %243
  br i1 %244, label %245, label %477

245:                                              ; preds = %241
  %246 = load i64, ptr %39, align 8, !tbaa !9
  %247 = load i64, ptr %38, align 8, !tbaa !9
  %248 = load i64, ptr %26, align 8, !tbaa !9
  %249 = mul nsw i64 %247, %248
  %250 = add nsw i64 %246, %249
  store i64 %250, ptr %30, align 8, !tbaa !9
  %251 = load ptr, ptr %22, align 8, !tbaa !5
  %252 = load i64, ptr %30, align 8, !tbaa !9
  %253 = getelementptr inbounds %struct.complex, ptr %251, i64 %252
  %254 = getelementptr inbounds %struct.complex, ptr %253, i32 0, i32 0
  %255 = load float, ptr %254, align 4, !tbaa !11
  %256 = fcmp une float %255, 0.000000e+00
  br i1 %256, label %264, label %257

257:                                              ; preds = %245
  %258 = load ptr, ptr %22, align 8, !tbaa !5
  %259 = load i64, ptr %30, align 8, !tbaa !9
  %260 = getelementptr inbounds %struct.complex, ptr %258, i64 %259
  %261 = getelementptr inbounds %struct.complex, ptr %260, i32 0, i32 1
  %262 = load float, ptr %261, align 4, !tbaa !14
  %263 = fcmp une float %262, 0.000000e+00
  br i1 %263, label %264, label %473

264:                                              ; preds = %257, %245
  %265 = load i64, ptr %39, align 8, !tbaa !9
  %266 = load i64, ptr %38, align 8, !tbaa !9
  %267 = load i64, ptr %26, align 8, !tbaa !9
  %268 = mul nsw i64 %266, %267
  %269 = add nsw i64 %265, %268
  store i64 %269, ptr %30, align 8, !tbaa !9
  %270 = load ptr, ptr %19, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.complex, ptr %270, i32 0, i32 0
  %272 = load float, ptr %271, align 4, !tbaa !11
  %273 = load ptr, ptr %22, align 8, !tbaa !5
  %274 = load i64, ptr %30, align 8, !tbaa !9
  %275 = getelementptr inbounds %struct.complex, ptr %273, i64 %274
  %276 = getelementptr inbounds %struct.complex, ptr %275, i32 0, i32 0
  %277 = load float, ptr %276, align 4, !tbaa !11
  %278 = load ptr, ptr %19, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.complex, ptr %278, i32 0, i32 1
  %280 = load float, ptr %279, align 4, !tbaa !14
  %281 = load ptr, ptr %22, align 8, !tbaa !5
  %282 = load i64, ptr %30, align 8, !tbaa !9
  %283 = getelementptr inbounds %struct.complex, ptr %281, i64 %282
  %284 = getelementptr inbounds %struct.complex, ptr %283, i32 0, i32 1
  %285 = load float, ptr %284, align 4, !tbaa !14
  %286 = fmul float %280, %285
  %287 = fneg float %286
  %288 = call float @llvm.fmuladd.f32(float %272, float %277, float %287)
  %289 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %288, ptr %289, align 4, !tbaa !11
  %290 = load ptr, ptr %19, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.complex, ptr %290, i32 0, i32 0
  %292 = load float, ptr %291, align 4, !tbaa !11
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  %294 = load i64, ptr %30, align 8, !tbaa !9
  %295 = getelementptr inbounds %struct.complex, ptr %293, i64 %294
  %296 = getelementptr inbounds %struct.complex, ptr %295, i32 0, i32 1
  %297 = load float, ptr %296, align 4, !tbaa !14
  %298 = load ptr, ptr %19, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.complex, ptr %298, i32 0, i32 1
  %300 = load float, ptr %299, align 4, !tbaa !14
  %301 = load ptr, ptr %22, align 8, !tbaa !5
  %302 = load i64, ptr %30, align 8, !tbaa !9
  %303 = getelementptr inbounds %struct.complex, ptr %301, i64 %302
  %304 = getelementptr inbounds %struct.complex, ptr %303, i32 0, i32 0
  %305 = load float, ptr %304, align 4, !tbaa !11
  %306 = fmul float %300, %305
  %307 = call float @llvm.fmuladd.f32(float %292, float %297, float %306)
  %308 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %307, ptr %308, align 4, !tbaa !14
  %309 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %310 = load float, ptr %309, align 4, !tbaa !11
  %311 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %310, ptr %311, align 4, !tbaa !11
  %312 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %313 = load float, ptr %312, align 4, !tbaa !14
  %314 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %313, ptr %314, align 4, !tbaa !14
  %315 = load i64, ptr %39, align 8, !tbaa !9
  %316 = sub nsw i64 %315, 1
  store i64 %316, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %402, %264
  %318 = load i64, ptr %37, align 8, !tbaa !9
  %319 = load i64, ptr %30, align 8, !tbaa !9
  %320 = icmp sle i64 %318, %319
  br i1 %320, label %321, label %405

321:                                              ; preds = %317
  %322 = load i64, ptr %37, align 8, !tbaa !9
  %323 = load i64, ptr %38, align 8, !tbaa !9
  %324 = load i64, ptr %26, align 8, !tbaa !9
  %325 = mul nsw i64 %323, %324
  %326 = add nsw i64 %322, %325
  store i64 %326, ptr %31, align 8, !tbaa !9
  %327 = load i64, ptr %37, align 8, !tbaa !9
  %328 = load i64, ptr %38, align 8, !tbaa !9
  %329 = load i64, ptr %26, align 8, !tbaa !9
  %330 = mul nsw i64 %328, %329
  %331 = add nsw i64 %327, %330
  store i64 %331, ptr %32, align 8, !tbaa !9
  %332 = load i64, ptr %37, align 8, !tbaa !9
  %333 = load i64, ptr %39, align 8, !tbaa !9
  %334 = load i64, ptr %24, align 8, !tbaa !9
  %335 = mul nsw i64 %333, %334
  %336 = add nsw i64 %332, %335
  store i64 %336, ptr %33, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %338 = load float, ptr %337, align 4, !tbaa !11
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = load i64, ptr %33, align 8, !tbaa !9
  %341 = getelementptr inbounds %struct.complex, ptr %339, i64 %340
  %342 = getelementptr inbounds %struct.complex, ptr %341, i32 0, i32 0
  %343 = load float, ptr %342, align 4, !tbaa !11
  %344 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %345 = load float, ptr %344, align 4, !tbaa !14
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = load i64, ptr %33, align 8, !tbaa !9
  %348 = getelementptr inbounds %struct.complex, ptr %346, i64 %347
  %349 = getelementptr inbounds %struct.complex, ptr %348, i32 0, i32 1
  %350 = load float, ptr %349, align 4, !tbaa !14
  %351 = fmul float %345, %350
  %352 = fneg float %351
  %353 = call float @llvm.fmuladd.f32(float %338, float %343, float %352)
  %354 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %353, ptr %354, align 4, !tbaa !11
  %355 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %356 = load float, ptr %355, align 4, !tbaa !11
  %357 = load ptr, ptr %20, align 8, !tbaa !5
  %358 = load i64, ptr %33, align 8, !tbaa !9
  %359 = getelementptr inbounds %struct.complex, ptr %357, i64 %358
  %360 = getelementptr inbounds %struct.complex, ptr %359, i32 0, i32 1
  %361 = load float, ptr %360, align 4, !tbaa !14
  %362 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %363 = load float, ptr %362, align 4, !tbaa !14
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = load i64, ptr %33, align 8, !tbaa !9
  %366 = getelementptr inbounds %struct.complex, ptr %364, i64 %365
  %367 = getelementptr inbounds %struct.complex, ptr %366, i32 0, i32 0
  %368 = load float, ptr %367, align 4, !tbaa !11
  %369 = fmul float %363, %368
  %370 = call float @llvm.fmuladd.f32(float %356, float %361, float %369)
  %371 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %370, ptr %371, align 4, !tbaa !14
  %372 = load ptr, ptr %22, align 8, !tbaa !5
  %373 = load i64, ptr %32, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.complex, ptr %372, i64 %373
  %375 = getelementptr inbounds %struct.complex, ptr %374, i32 0, i32 0
  %376 = load float, ptr %375, align 4, !tbaa !11
  %377 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %378 = load float, ptr %377, align 4, !tbaa !11
  %379 = fadd float %376, %378
  %380 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %379, ptr %380, align 4, !tbaa !11
  %381 = load ptr, ptr %22, align 8, !tbaa !5
  %382 = load i64, ptr %32, align 8, !tbaa !9
  %383 = getelementptr inbounds %struct.complex, ptr %381, i64 %382
  %384 = getelementptr inbounds %struct.complex, ptr %383, i32 0, i32 1
  %385 = load float, ptr %384, align 4, !tbaa !14
  %386 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %387 = load float, ptr %386, align 4, !tbaa !14
  %388 = fadd float %385, %387
  %389 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %388, ptr %389, align 4, !tbaa !14
  %390 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %391 = load float, ptr %390, align 4, !tbaa !11
  %392 = load ptr, ptr %22, align 8, !tbaa !5
  %393 = load i64, ptr %31, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.complex, ptr %392, i64 %393
  %395 = getelementptr inbounds %struct.complex, ptr %394, i32 0, i32 0
  store float %391, ptr %395, align 4, !tbaa !11
  %396 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %397 = load float, ptr %396, align 4, !tbaa !14
  %398 = load ptr, ptr %22, align 8, !tbaa !5
  %399 = load i64, ptr %31, align 8, !tbaa !9
  %400 = getelementptr inbounds %struct.complex, ptr %398, i64 %399
  %401 = getelementptr inbounds %struct.complex, ptr %400, i32 0, i32 1
  store float %397, ptr %401, align 4, !tbaa !14
  br label %402

402:                                              ; preds = %321
  %403 = load i64, ptr %37, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %37, align 8, !tbaa !9
  br label %317, !llvm.loop !18

405:                                              ; preds = %317
  %406 = load i64, ptr %46, align 8, !tbaa !9
  %407 = icmp ne i64 %406, 0
  br i1 %407, label %408, label %455

408:                                              ; preds = %405
  %409 = load i64, ptr %39, align 8, !tbaa !9
  %410 = load i64, ptr %39, align 8, !tbaa !9
  %411 = load i64, ptr %24, align 8, !tbaa !9
  %412 = mul nsw i64 %410, %411
  %413 = add nsw i64 %409, %412
  store i64 %413, ptr %30, align 8, !tbaa !9
  %414 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %415 = load float, ptr %414, align 4, !tbaa !11
  %416 = load ptr, ptr %20, align 8, !tbaa !5
  %417 = load i64, ptr %30, align 8, !tbaa !9
  %418 = getelementptr inbounds %struct.complex, ptr %416, i64 %417
  %419 = getelementptr inbounds %struct.complex, ptr %418, i32 0, i32 0
  %420 = load float, ptr %419, align 4, !tbaa !11
  %421 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %422 = load float, ptr %421, align 4, !tbaa !14
  %423 = load ptr, ptr %20, align 8, !tbaa !5
  %424 = load i64, ptr %30, align 8, !tbaa !9
  %425 = getelementptr inbounds %struct.complex, ptr %423, i64 %424
  %426 = getelementptr inbounds %struct.complex, ptr %425, i32 0, i32 1
  %427 = load float, ptr %426, align 4, !tbaa !14
  %428 = fmul float %422, %427
  %429 = fneg float %428
  %430 = call float @llvm.fmuladd.f32(float %415, float %420, float %429)
  %431 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %430, ptr %431, align 4, !tbaa !11
  %432 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %433 = load float, ptr %432, align 4, !tbaa !11
  %434 = load ptr, ptr %20, align 8, !tbaa !5
  %435 = load i64, ptr %30, align 8, !tbaa !9
  %436 = getelementptr inbounds %struct.complex, ptr %434, i64 %435
  %437 = getelementptr inbounds %struct.complex, ptr %436, i32 0, i32 1
  %438 = load float, ptr %437, align 4, !tbaa !14
  %439 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %440 = load float, ptr %439, align 4, !tbaa !14
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = load i64, ptr %30, align 8, !tbaa !9
  %443 = getelementptr inbounds %struct.complex, ptr %441, i64 %442
  %444 = getelementptr inbounds %struct.complex, ptr %443, i32 0, i32 0
  %445 = load float, ptr %444, align 4, !tbaa !11
  %446 = fmul float %440, %445
  %447 = call float @llvm.fmuladd.f32(float %433, float %438, float %446)
  %448 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %447, ptr %448, align 4, !tbaa !14
  %449 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %450 = load float, ptr %449, align 4, !tbaa !11
  %451 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %450, ptr %451, align 4, !tbaa !11
  %452 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %453 = load float, ptr %452, align 4, !tbaa !14
  %454 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %453, ptr %454, align 4, !tbaa !14
  br label %455

455:                                              ; preds = %408, %405
  %456 = load i64, ptr %39, align 8, !tbaa !9
  %457 = load i64, ptr %38, align 8, !tbaa !9
  %458 = load i64, ptr %26, align 8, !tbaa !9
  %459 = mul nsw i64 %457, %458
  %460 = add nsw i64 %456, %459
  store i64 %460, ptr %30, align 8, !tbaa !9
  %461 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %462 = load float, ptr %461, align 4, !tbaa !11
  %463 = load ptr, ptr %22, align 8, !tbaa !5
  %464 = load i64, ptr %30, align 8, !tbaa !9
  %465 = getelementptr inbounds %struct.complex, ptr %463, i64 %464
  %466 = getelementptr inbounds %struct.complex, ptr %465, i32 0, i32 0
  store float %462, ptr %466, align 4, !tbaa !11
  %467 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %468 = load float, ptr %467, align 4, !tbaa !14
  %469 = load ptr, ptr %22, align 8, !tbaa !5
  %470 = load i64, ptr %30, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.complex, ptr %469, i64 %470
  %472 = getelementptr inbounds %struct.complex, ptr %471, i32 0, i32 1
  store float %468, ptr %472, align 4, !tbaa !14
  br label %473

473:                                              ; preds = %455, %257
  br label %474

474:                                              ; preds = %473
  %475 = load i64, ptr %39, align 8, !tbaa !9
  %476 = add nsw i64 %475, 1
  store i64 %476, ptr %39, align 8, !tbaa !9
  br label %241, !llvm.loop !19

477:                                              ; preds = %241
  br label %478

478:                                              ; preds = %477
  %479 = load i64, ptr %38, align 8, !tbaa !9
  %480 = add nsw i64 %479, 1
  store i64 %480, ptr %38, align 8, !tbaa !9
  br label %234, !llvm.loop !20

481:                                              ; preds = %234
  br label %762

482:                                              ; preds = %228
  %483 = load ptr, ptr %18, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  store i64 %484, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %485

485:                                              ; preds = %758, %482
  %486 = load i64, ptr %38, align 8, !tbaa !9
  %487 = load i64, ptr %28, align 8, !tbaa !9
  %488 = icmp sle i64 %486, %487
  br i1 %488, label %489, label %761

489:                                              ; preds = %485
  %490 = load ptr, ptr %17, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  store i64 %491, ptr %39, align 8, !tbaa !9
  br label %492

492:                                              ; preds = %754, %489
  %493 = load i64, ptr %39, align 8, !tbaa !9
  %494 = icmp sge i64 %493, 1
  br i1 %494, label %495, label %757

495:                                              ; preds = %492
  %496 = load i64, ptr %39, align 8, !tbaa !9
  %497 = load i64, ptr %38, align 8, !tbaa !9
  %498 = load i64, ptr %26, align 8, !tbaa !9
  %499 = mul nsw i64 %497, %498
  %500 = add nsw i64 %496, %499
  store i64 %500, ptr %29, align 8, !tbaa !9
  %501 = load ptr, ptr %22, align 8, !tbaa !5
  %502 = load i64, ptr %29, align 8, !tbaa !9
  %503 = getelementptr inbounds %struct.complex, ptr %501, i64 %502
  %504 = getelementptr inbounds %struct.complex, ptr %503, i32 0, i32 0
  %505 = load float, ptr %504, align 4, !tbaa !11
  %506 = fcmp une float %505, 0.000000e+00
  br i1 %506, label %514, label %507

507:                                              ; preds = %495
  %508 = load ptr, ptr %22, align 8, !tbaa !5
  %509 = load i64, ptr %29, align 8, !tbaa !9
  %510 = getelementptr inbounds %struct.complex, ptr %508, i64 %509
  %511 = getelementptr inbounds %struct.complex, ptr %510, i32 0, i32 1
  %512 = load float, ptr %511, align 4, !tbaa !14
  %513 = fcmp une float %512, 0.000000e+00
  br i1 %513, label %514, label %753

514:                                              ; preds = %507, %495
  %515 = load i64, ptr %39, align 8, !tbaa !9
  %516 = load i64, ptr %38, align 8, !tbaa !9
  %517 = load i64, ptr %26, align 8, !tbaa !9
  %518 = mul nsw i64 %516, %517
  %519 = add nsw i64 %515, %518
  store i64 %519, ptr %29, align 8, !tbaa !9
  %520 = load ptr, ptr %19, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.complex, ptr %520, i32 0, i32 0
  %522 = load float, ptr %521, align 4, !tbaa !11
  %523 = load ptr, ptr %22, align 8, !tbaa !5
  %524 = load i64, ptr %29, align 8, !tbaa !9
  %525 = getelementptr inbounds %struct.complex, ptr %523, i64 %524
  %526 = getelementptr inbounds %struct.complex, ptr %525, i32 0, i32 0
  %527 = load float, ptr %526, align 4, !tbaa !11
  %528 = load ptr, ptr %19, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.complex, ptr %528, i32 0, i32 1
  %530 = load float, ptr %529, align 4, !tbaa !14
  %531 = load ptr, ptr %22, align 8, !tbaa !5
  %532 = load i64, ptr %29, align 8, !tbaa !9
  %533 = getelementptr inbounds %struct.complex, ptr %531, i64 %532
  %534 = getelementptr inbounds %struct.complex, ptr %533, i32 0, i32 1
  %535 = load float, ptr %534, align 4, !tbaa !14
  %536 = fmul float %530, %535
  %537 = fneg float %536
  %538 = call float @llvm.fmuladd.f32(float %522, float %527, float %537)
  %539 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %538, ptr %539, align 4, !tbaa !11
  %540 = load ptr, ptr %19, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.complex, ptr %540, i32 0, i32 0
  %542 = load float, ptr %541, align 4, !tbaa !11
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  %544 = load i64, ptr %29, align 8, !tbaa !9
  %545 = getelementptr inbounds %struct.complex, ptr %543, i64 %544
  %546 = getelementptr inbounds %struct.complex, ptr %545, i32 0, i32 1
  %547 = load float, ptr %546, align 4, !tbaa !14
  %548 = load ptr, ptr %19, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.complex, ptr %548, i32 0, i32 1
  %550 = load float, ptr %549, align 4, !tbaa !14
  %551 = load ptr, ptr %22, align 8, !tbaa !5
  %552 = load i64, ptr %29, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.complex, ptr %551, i64 %552
  %554 = getelementptr inbounds %struct.complex, ptr %553, i32 0, i32 0
  %555 = load float, ptr %554, align 4, !tbaa !11
  %556 = fmul float %550, %555
  %557 = call float @llvm.fmuladd.f32(float %542, float %547, float %556)
  %558 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %557, ptr %558, align 4, !tbaa !14
  %559 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %560 = load float, ptr %559, align 4, !tbaa !11
  %561 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %560, ptr %561, align 4, !tbaa !11
  %562 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %563 = load float, ptr %562, align 4, !tbaa !14
  %564 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %563, ptr %564, align 4, !tbaa !14
  %565 = load i64, ptr %39, align 8, !tbaa !9
  %566 = load i64, ptr %38, align 8, !tbaa !9
  %567 = load i64, ptr %26, align 8, !tbaa !9
  %568 = mul nsw i64 %566, %567
  %569 = add nsw i64 %565, %568
  store i64 %569, ptr %29, align 8, !tbaa !9
  %570 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %571 = load float, ptr %570, align 4, !tbaa !11
  %572 = load ptr, ptr %22, align 8, !tbaa !5
  %573 = load i64, ptr %29, align 8, !tbaa !9
  %574 = getelementptr inbounds %struct.complex, ptr %572, i64 %573
  %575 = getelementptr inbounds %struct.complex, ptr %574, i32 0, i32 0
  store float %571, ptr %575, align 4, !tbaa !11
  %576 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %577 = load float, ptr %576, align 4, !tbaa !14
  %578 = load ptr, ptr %22, align 8, !tbaa !5
  %579 = load i64, ptr %29, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.complex, ptr %578, i64 %579
  %581 = getelementptr inbounds %struct.complex, ptr %580, i32 0, i32 1
  store float %577, ptr %581, align 4, !tbaa !14
  %582 = load i64, ptr %46, align 8, !tbaa !9
  %583 = icmp ne i64 %582, 0
  br i1 %583, label %584, label %659

584:                                              ; preds = %514
  %585 = load i64, ptr %39, align 8, !tbaa !9
  %586 = load i64, ptr %38, align 8, !tbaa !9
  %587 = load i64, ptr %26, align 8, !tbaa !9
  %588 = mul nsw i64 %586, %587
  %589 = add nsw i64 %585, %588
  store i64 %589, ptr %29, align 8, !tbaa !9
  %590 = load i64, ptr %39, align 8, !tbaa !9
  %591 = load i64, ptr %38, align 8, !tbaa !9
  %592 = load i64, ptr %26, align 8, !tbaa !9
  %593 = mul nsw i64 %591, %592
  %594 = add nsw i64 %590, %593
  store i64 %594, ptr %30, align 8, !tbaa !9
  %595 = load i64, ptr %39, align 8, !tbaa !9
  %596 = load i64, ptr %39, align 8, !tbaa !9
  %597 = load i64, ptr %24, align 8, !tbaa !9
  %598 = mul nsw i64 %596, %597
  %599 = add nsw i64 %595, %598
  store i64 %599, ptr %31, align 8, !tbaa !9
  %600 = load ptr, ptr %22, align 8, !tbaa !5
  %601 = load i64, ptr %30, align 8, !tbaa !9
  %602 = getelementptr inbounds %struct.complex, ptr %600, i64 %601
  %603 = getelementptr inbounds %struct.complex, ptr %602, i32 0, i32 0
  %604 = load float, ptr %603, align 4, !tbaa !11
  %605 = load ptr, ptr %20, align 8, !tbaa !5
  %606 = load i64, ptr %31, align 8, !tbaa !9
  %607 = getelementptr inbounds %struct.complex, ptr %605, i64 %606
  %608 = getelementptr inbounds %struct.complex, ptr %607, i32 0, i32 0
  %609 = load float, ptr %608, align 4, !tbaa !11
  %610 = load ptr, ptr %22, align 8, !tbaa !5
  %611 = load i64, ptr %30, align 8, !tbaa !9
  %612 = getelementptr inbounds %struct.complex, ptr %610, i64 %611
  %613 = getelementptr inbounds %struct.complex, ptr %612, i32 0, i32 1
  %614 = load float, ptr %613, align 4, !tbaa !14
  %615 = load ptr, ptr %20, align 8, !tbaa !5
  %616 = load i64, ptr %31, align 8, !tbaa !9
  %617 = getelementptr inbounds %struct.complex, ptr %615, i64 %616
  %618 = getelementptr inbounds %struct.complex, ptr %617, i32 0, i32 1
  %619 = load float, ptr %618, align 4, !tbaa !14
  %620 = fmul float %614, %619
  %621 = fneg float %620
  %622 = call float @llvm.fmuladd.f32(float %604, float %609, float %621)
  %623 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %622, ptr %623, align 4, !tbaa !11
  %624 = load ptr, ptr %22, align 8, !tbaa !5
  %625 = load i64, ptr %30, align 8, !tbaa !9
  %626 = getelementptr inbounds %struct.complex, ptr %624, i64 %625
  %627 = getelementptr inbounds %struct.complex, ptr %626, i32 0, i32 0
  %628 = load float, ptr %627, align 4, !tbaa !11
  %629 = load ptr, ptr %20, align 8, !tbaa !5
  %630 = load i64, ptr %31, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.complex, ptr %629, i64 %630
  %632 = getelementptr inbounds %struct.complex, ptr %631, i32 0, i32 1
  %633 = load float, ptr %632, align 4, !tbaa !14
  %634 = load ptr, ptr %22, align 8, !tbaa !5
  %635 = load i64, ptr %30, align 8, !tbaa !9
  %636 = getelementptr inbounds %struct.complex, ptr %634, i64 %635
  %637 = getelementptr inbounds %struct.complex, ptr %636, i32 0, i32 1
  %638 = load float, ptr %637, align 4, !tbaa !14
  %639 = load ptr, ptr %20, align 8, !tbaa !5
  %640 = load i64, ptr %31, align 8, !tbaa !9
  %641 = getelementptr inbounds %struct.complex, ptr %639, i64 %640
  %642 = getelementptr inbounds %struct.complex, ptr %641, i32 0, i32 0
  %643 = load float, ptr %642, align 4, !tbaa !11
  %644 = fmul float %638, %643
  %645 = call float @llvm.fmuladd.f32(float %628, float %633, float %644)
  %646 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %645, ptr %646, align 4, !tbaa !14
  %647 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %648 = load float, ptr %647, align 4, !tbaa !11
  %649 = load ptr, ptr %22, align 8, !tbaa !5
  %650 = load i64, ptr %29, align 8, !tbaa !9
  %651 = getelementptr inbounds %struct.complex, ptr %649, i64 %650
  %652 = getelementptr inbounds %struct.complex, ptr %651, i32 0, i32 0
  store float %648, ptr %652, align 4, !tbaa !11
  %653 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %654 = load float, ptr %653, align 4, !tbaa !14
  %655 = load ptr, ptr %22, align 8, !tbaa !5
  %656 = load i64, ptr %29, align 8, !tbaa !9
  %657 = getelementptr inbounds %struct.complex, ptr %655, i64 %656
  %658 = getelementptr inbounds %struct.complex, ptr %657, i32 0, i32 1
  store float %654, ptr %658, align 4, !tbaa !14
  br label %659

659:                                              ; preds = %584, %514
  %660 = load ptr, ptr %17, align 8, !tbaa !5
  %661 = load i64, ptr %660, align 8, !tbaa !9
  store i64 %661, ptr %29, align 8, !tbaa !9
  %662 = load i64, ptr %39, align 8, !tbaa !9
  %663 = add nsw i64 %662, 1
  store i64 %663, ptr %37, align 8, !tbaa !9
  br label %664

664:                                              ; preds = %749, %659
  %665 = load i64, ptr %37, align 8, !tbaa !9
  %666 = load i64, ptr %29, align 8, !tbaa !9
  %667 = icmp sle i64 %665, %666
  br i1 %667, label %668, label %752

668:                                              ; preds = %664
  %669 = load i64, ptr %37, align 8, !tbaa !9
  %670 = load i64, ptr %38, align 8, !tbaa !9
  %671 = load i64, ptr %26, align 8, !tbaa !9
  %672 = mul nsw i64 %670, %671
  %673 = add nsw i64 %669, %672
  store i64 %673, ptr %30, align 8, !tbaa !9
  %674 = load i64, ptr %37, align 8, !tbaa !9
  %675 = load i64, ptr %38, align 8, !tbaa !9
  %676 = load i64, ptr %26, align 8, !tbaa !9
  %677 = mul nsw i64 %675, %676
  %678 = add nsw i64 %674, %677
  store i64 %678, ptr %31, align 8, !tbaa !9
  %679 = load i64, ptr %37, align 8, !tbaa !9
  %680 = load i64, ptr %39, align 8, !tbaa !9
  %681 = load i64, ptr %24, align 8, !tbaa !9
  %682 = mul nsw i64 %680, %681
  %683 = add nsw i64 %679, %682
  store i64 %683, ptr %32, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %685 = load float, ptr %684, align 4, !tbaa !11
  %686 = load ptr, ptr %20, align 8, !tbaa !5
  %687 = load i64, ptr %32, align 8, !tbaa !9
  %688 = getelementptr inbounds %struct.complex, ptr %686, i64 %687
  %689 = getelementptr inbounds %struct.complex, ptr %688, i32 0, i32 0
  %690 = load float, ptr %689, align 4, !tbaa !11
  %691 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %692 = load float, ptr %691, align 4, !tbaa !14
  %693 = load ptr, ptr %20, align 8, !tbaa !5
  %694 = load i64, ptr %32, align 8, !tbaa !9
  %695 = getelementptr inbounds %struct.complex, ptr %693, i64 %694
  %696 = getelementptr inbounds %struct.complex, ptr %695, i32 0, i32 1
  %697 = load float, ptr %696, align 4, !tbaa !14
  %698 = fmul float %692, %697
  %699 = fneg float %698
  %700 = call float @llvm.fmuladd.f32(float %685, float %690, float %699)
  %701 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %700, ptr %701, align 4, !tbaa !11
  %702 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %703 = load float, ptr %702, align 4, !tbaa !11
  %704 = load ptr, ptr %20, align 8, !tbaa !5
  %705 = load i64, ptr %32, align 8, !tbaa !9
  %706 = getelementptr inbounds %struct.complex, ptr %704, i64 %705
  %707 = getelementptr inbounds %struct.complex, ptr %706, i32 0, i32 1
  %708 = load float, ptr %707, align 4, !tbaa !14
  %709 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %710 = load float, ptr %709, align 4, !tbaa !14
  %711 = load ptr, ptr %20, align 8, !tbaa !5
  %712 = load i64, ptr %32, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.complex, ptr %711, i64 %712
  %714 = getelementptr inbounds %struct.complex, ptr %713, i32 0, i32 0
  %715 = load float, ptr %714, align 4, !tbaa !11
  %716 = fmul float %710, %715
  %717 = call float @llvm.fmuladd.f32(float %703, float %708, float %716)
  %718 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %717, ptr %718, align 4, !tbaa !14
  %719 = load ptr, ptr %22, align 8, !tbaa !5
  %720 = load i64, ptr %31, align 8, !tbaa !9
  %721 = getelementptr inbounds %struct.complex, ptr %719, i64 %720
  %722 = getelementptr inbounds %struct.complex, ptr %721, i32 0, i32 0
  %723 = load float, ptr %722, align 4, !tbaa !11
  %724 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %725 = load float, ptr %724, align 4, !tbaa !11
  %726 = fadd float %723, %725
  %727 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %726, ptr %727, align 4, !tbaa !11
  %728 = load ptr, ptr %22, align 8, !tbaa !5
  %729 = load i64, ptr %31, 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 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %734 = load float, ptr %733, align 4, !tbaa !14
  %735 = fadd float %732, %734
  %736 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %735, ptr %736, align 4, !tbaa !14
  %737 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %738 = load float, ptr %737, align 4, !tbaa !11
  %739 = load ptr, ptr %22, align 8, !tbaa !5
  %740 = load i64, ptr %30, align 8, !tbaa !9
  %741 = getelementptr inbounds %struct.complex, ptr %739, i64 %740
  %742 = getelementptr inbounds %struct.complex, ptr %741, i32 0, i32 0
  store float %738, ptr %742, align 4, !tbaa !11
  %743 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %744 = load float, ptr %743, align 4, !tbaa !14
  %745 = load ptr, ptr %22, align 8, !tbaa !5
  %746 = load i64, ptr %30, align 8, !tbaa !9
  %747 = getelementptr inbounds %struct.complex, ptr %745, i64 %746
  %748 = getelementptr inbounds %struct.complex, ptr %747, i32 0, i32 1
  store float %744, ptr %748, align 4, !tbaa !14
  br label %749

749:                                              ; preds = %668
  %750 = load i64, ptr %37, align 8, !tbaa !9
  %751 = add nsw i64 %750, 1
  store i64 %751, ptr %37, align 8, !tbaa !9
  br label %664, !llvm.loop !21

752:                                              ; preds = %664
  br label %753

753:                                              ; preds = %752, %507
  br label %754

754:                                              ; preds = %753
  %755 = load i64, ptr %39, align 8, !tbaa !9
  %756 = add nsw i64 %755, -1
  store i64 %756, ptr %39, align 8, !tbaa !9
  br label %492, !llvm.loop !22

757:                                              ; preds = %492
  br label %758

758:                                              ; preds = %757
  %759 = load i64, ptr %38, align 8, !tbaa !9
  %760 = add nsw i64 %759, 1
  store i64 %760, ptr %38, align 8, !tbaa !9
  br label %485, !llvm.loop !23

761:                                              ; preds = %485
  br label %762

762:                                              ; preds = %761, %481
  br label %1452

763:                                              ; preds = %224
  %764 = load i64, ptr %44, align 8, !tbaa !9
  %765 = icmp ne i64 %764, 0
  br i1 %765, label %766, label %1106

766:                                              ; preds = %763
  %767 = load ptr, ptr %18, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  store i64 %768, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %769

769:                                              ; preds = %1102, %766
  %770 = load i64, ptr %38, align 8, !tbaa !9
  %771 = load i64, ptr %28, align 8, !tbaa !9
  %772 = icmp sle i64 %770, %771
  br i1 %772, label %773, label %1105

773:                                              ; preds = %769
  %774 = load ptr, ptr %17, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  store i64 %775, ptr %37, align 8, !tbaa !9
  br label %776

776:                                              ; preds = %1098, %773
  %777 = load i64, ptr %37, align 8, !tbaa !9
  %778 = icmp sge i64 %777, 1
  br i1 %778, label %779, label %1101

779:                                              ; preds = %776
  %780 = load i64, ptr %37, align 8, !tbaa !9
  %781 = load i64, ptr %38, align 8, !tbaa !9
  %782 = load i64, ptr %26, align 8, !tbaa !9
  %783 = mul nsw i64 %781, %782
  %784 = add nsw i64 %780, %783
  store i64 %784, ptr %29, align 8, !tbaa !9
  %785 = load ptr, ptr %22, align 8, !tbaa !5
  %786 = load i64, ptr %29, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.complex, ptr %785, i64 %786
  %788 = getelementptr inbounds %struct.complex, ptr %787, i32 0, i32 0
  %789 = load float, ptr %788, align 4, !tbaa !11
  %790 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %789, ptr %790, align 4, !tbaa !11
  %791 = load ptr, ptr %22, align 8, !tbaa !5
  %792 = load i64, ptr %29, align 8, !tbaa !9
  %793 = getelementptr inbounds %struct.complex, ptr %791, i64 %792
  %794 = getelementptr inbounds %struct.complex, ptr %793, i32 0, i32 1
  %795 = load float, ptr %794, align 4, !tbaa !14
  %796 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %795, ptr %796, align 4, !tbaa !14
  %797 = load i64, ptr %45, align 8, !tbaa !9
  %798 = icmp ne i64 %797, 0
  br i1 %798, label %799, label %936

799:                                              ; preds = %779
  %800 = load i64, ptr %46, align 8, !tbaa !9
  %801 = icmp ne i64 %800, 0
  br i1 %801, label %802, label %849

802:                                              ; preds = %799
  %803 = load i64, ptr %37, align 8, !tbaa !9
  %804 = load i64, ptr %37, align 8, !tbaa !9
  %805 = load i64, ptr %24, align 8, !tbaa !9
  %806 = mul nsw i64 %804, %805
  %807 = add nsw i64 %803, %806
  store i64 %807, ptr %29, align 8, !tbaa !9
  %808 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %809 = load float, ptr %808, align 4, !tbaa !11
  %810 = load ptr, ptr %20, align 8, !tbaa !5
  %811 = load i64, ptr %29, align 8, !tbaa !9
  %812 = getelementptr inbounds %struct.complex, ptr %810, i64 %811
  %813 = getelementptr inbounds %struct.complex, ptr %812, i32 0, i32 0
  %814 = load float, ptr %813, align 4, !tbaa !11
  %815 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %816 = load float, ptr %815, align 4, !tbaa !14
  %817 = load ptr, ptr %20, align 8, !tbaa !5
  %818 = load i64, ptr %29, align 8, !tbaa !9
  %819 = getelementptr inbounds %struct.complex, ptr %817, i64 %818
  %820 = getelementptr inbounds %struct.complex, ptr %819, i32 0, i32 1
  %821 = load float, ptr %820, align 4, !tbaa !14
  %822 = fmul float %816, %821
  %823 = fneg float %822
  %824 = call float @llvm.fmuladd.f32(float %809, float %814, float %823)
  %825 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %824, ptr %825, align 4, !tbaa !11
  %826 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %827 = load float, ptr %826, align 4, !tbaa !11
  %828 = load ptr, ptr %20, align 8, !tbaa !5
  %829 = load i64, ptr %29, align 8, !tbaa !9
  %830 = getelementptr inbounds %struct.complex, ptr %828, i64 %829
  %831 = getelementptr inbounds %struct.complex, ptr %830, i32 0, i32 1
  %832 = load float, ptr %831, align 4, !tbaa !14
  %833 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %834 = load float, ptr %833, align 4, !tbaa !14
  %835 = load ptr, ptr %20, align 8, !tbaa !5
  %836 = load i64, ptr %29, align 8, !tbaa !9
  %837 = getelementptr inbounds %struct.complex, ptr %835, i64 %836
  %838 = getelementptr inbounds %struct.complex, ptr %837, i32 0, i32 0
  %839 = load float, ptr %838, align 4, !tbaa !11
  %840 = fmul float %834, %839
  %841 = call float @llvm.fmuladd.f32(float %827, float %832, float %840)
  %842 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %841, ptr %842, align 4, !tbaa !14
  %843 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %844 = load float, ptr %843, align 4, !tbaa !11
  %845 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %844, ptr %845, align 4, !tbaa !11
  %846 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %847 = load float, ptr %846, align 4, !tbaa !14
  %848 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %847, ptr %848, align 4, !tbaa !14
  br label %849

849:                                              ; preds = %802, %799
  %850 = load i64, ptr %37, align 8, !tbaa !9
  %851 = sub nsw i64 %850, 1
  store i64 %851, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %852

852:                                              ; preds = %932, %849
  %853 = load i64, ptr %39, align 8, !tbaa !9
  %854 = load i64, ptr %29, align 8, !tbaa !9
  %855 = icmp sle i64 %853, %854
  br i1 %855, label %856, label %935

856:                                              ; preds = %852
  %857 = load i64, ptr %39, align 8, !tbaa !9
  %858 = load i64, ptr %37, align 8, !tbaa !9
  %859 = load i64, ptr %24, align 8, !tbaa !9
  %860 = mul nsw i64 %858, %859
  %861 = add nsw i64 %857, %860
  store i64 %861, ptr %30, align 8, !tbaa !9
  %862 = load i64, ptr %39, align 8, !tbaa !9
  %863 = load i64, ptr %38, align 8, !tbaa !9
  %864 = load i64, ptr %26, align 8, !tbaa !9
  %865 = mul nsw i64 %863, %864
  %866 = add nsw i64 %862, %865
  store i64 %866, ptr %31, align 8, !tbaa !9
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = load i64, ptr %30, align 8, !tbaa !9
  %869 = getelementptr inbounds %struct.complex, ptr %867, i64 %868
  %870 = getelementptr inbounds %struct.complex, ptr %869, i32 0, i32 0
  %871 = load float, ptr %870, align 4, !tbaa !11
  %872 = load ptr, ptr %22, align 8, !tbaa !5
  %873 = load i64, ptr %31, align 8, !tbaa !9
  %874 = getelementptr inbounds %struct.complex, ptr %872, i64 %873
  %875 = getelementptr inbounds %struct.complex, ptr %874, i32 0, i32 0
  %876 = load float, ptr %875, align 4, !tbaa !11
  %877 = load ptr, ptr %20, align 8, !tbaa !5
  %878 = load i64, ptr %30, align 8, !tbaa !9
  %879 = getelementptr inbounds %struct.complex, ptr %877, i64 %878
  %880 = getelementptr inbounds %struct.complex, ptr %879, i32 0, i32 1
  %881 = load float, ptr %880, align 4, !tbaa !14
  %882 = load ptr, ptr %22, align 8, !tbaa !5
  %883 = load i64, ptr %31, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.complex, ptr %882, i64 %883
  %885 = getelementptr inbounds %struct.complex, ptr %884, i32 0, i32 1
  %886 = load float, ptr %885, align 4, !tbaa !14
  %887 = fmul float %881, %886
  %888 = fneg float %887
  %889 = call float @llvm.fmuladd.f32(float %871, float %876, float %888)
  %890 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %889, ptr %890, align 4, !tbaa !11
  %891 = load ptr, ptr %20, align 8, !tbaa !5
  %892 = load i64, ptr %30, align 8, !tbaa !9
  %893 = getelementptr inbounds %struct.complex, ptr %891, i64 %892
  %894 = getelementptr inbounds %struct.complex, ptr %893, i32 0, i32 0
  %895 = load float, ptr %894, align 4, !tbaa !11
  %896 = load ptr, ptr %22, align 8, !tbaa !5
  %897 = load i64, ptr %31, align 8, !tbaa !9
  %898 = getelementptr inbounds %struct.complex, ptr %896, i64 %897
  %899 = getelementptr inbounds %struct.complex, ptr %898, i32 0, i32 1
  %900 = load float, ptr %899, align 4, !tbaa !14
  %901 = load ptr, ptr %20, align 8, !tbaa !5
  %902 = load i64, ptr %30, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.complex, ptr %901, i64 %902
  %904 = getelementptr inbounds %struct.complex, ptr %903, i32 0, i32 1
  %905 = load float, ptr %904, align 4, !tbaa !14
  %906 = load ptr, ptr %22, align 8, !tbaa !5
  %907 = load i64, ptr %31, align 8, !tbaa !9
  %908 = getelementptr inbounds %struct.complex, ptr %906, i64 %907
  %909 = getelementptr inbounds %struct.complex, ptr %908, i32 0, i32 0
  %910 = load float, ptr %909, align 4, !tbaa !11
  %911 = fmul float %905, %910
  %912 = call float @llvm.fmuladd.f32(float %895, float %900, float %911)
  %913 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %912, ptr %913, align 4, !tbaa !14
  %914 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %915 = load float, ptr %914, align 4, !tbaa !11
  %916 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %917 = load float, ptr %916, align 4, !tbaa !11
  %918 = fadd float %915, %917
  %919 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %918, ptr %919, align 4, !tbaa !11
  %920 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %921 = load float, ptr %920, align 4, !tbaa !14
  %922 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %923 = load float, ptr %922, align 4, !tbaa !14
  %924 = fadd float %921, %923
  %925 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %924, ptr %925, align 4, !tbaa !14
  %926 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %927 = load float, ptr %926, align 4, !tbaa !11
  %928 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %927, ptr %928, align 4, !tbaa !11
  %929 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %930 = load float, ptr %929, align 4, !tbaa !14
  %931 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %930, ptr %931, align 4, !tbaa !14
  br label %932

932:                                              ; preds = %856
  %933 = load i64, ptr %39, align 8, !tbaa !9
  %934 = add nsw i64 %933, 1
  store i64 %934, ptr %39, align 8, !tbaa !9
  br label %852, !llvm.loop !24

935:                                              ; preds = %852
  br label %1053

936:                                              ; preds = %779
  %937 = load i64, ptr %46, align 8, !tbaa !9
  %938 = icmp ne i64 %937, 0
  br i1 %938, label %939, label %976

939:                                              ; preds = %936
  %940 = load ptr, ptr %20, align 8, !tbaa !5
  %941 = load i64, ptr %37, align 8, !tbaa !9
  %942 = load i64, ptr %37, align 8, !tbaa !9
  %943 = load i64, ptr %24, align 8, !tbaa !9
  %944 = mul nsw i64 %942, %943
  %945 = add nsw i64 %941, %944
  %946 = getelementptr inbounds %struct.complex, ptr %940, i64 %945
  call void @r_cnjg(ptr noundef %35, ptr noundef %946)
  %947 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %948 = load float, ptr %947, align 4, !tbaa !11
  %949 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %950 = load float, ptr %949, align 4, !tbaa !11
  %951 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %952 = load float, ptr %951, align 4, !tbaa !14
  %953 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %954 = load float, ptr %953, align 4, !tbaa !14
  %955 = fmul float %952, %954
  %956 = fneg float %955
  %957 = call float @llvm.fmuladd.f32(float %948, float %950, float %956)
  %958 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %957, ptr %958, align 4, !tbaa !11
  %959 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %960 = load float, ptr %959, align 4, !tbaa !11
  %961 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %962 = load float, ptr %961, align 4, !tbaa !14
  %963 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %964 = load float, ptr %963, align 4, !tbaa !14
  %965 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %966 = load float, ptr %965, align 4, !tbaa !11
  %967 = fmul float %964, %966
  %968 = call float @llvm.fmuladd.f32(float %960, float %962, float %967)
  %969 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %968, ptr %969, align 4, !tbaa !14
  %970 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %971 = load float, ptr %970, align 4, !tbaa !11
  %972 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %971, ptr %972, align 4, !tbaa !11
  %973 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %974 = load float, ptr %973, align 4, !tbaa !14
  %975 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %974, ptr %975, align 4, !tbaa !14
  br label %976

976:                                              ; preds = %939, %936
  %977 = load i64, ptr %37, align 8, !tbaa !9
  %978 = sub nsw i64 %977, 1
  store i64 %978, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %979

979:                                              ; preds = %1049, %976
  %980 = load i64, ptr %39, align 8, !tbaa !9
  %981 = load i64, ptr %29, align 8, !tbaa !9
  %982 = icmp sle i64 %980, %981
  br i1 %982, label %983, label %1052

983:                                              ; preds = %979
  %984 = load ptr, ptr %20, align 8, !tbaa !5
  %985 = load i64, ptr %39, align 8, !tbaa !9
  %986 = load i64, ptr %37, align 8, !tbaa !9
  %987 = load i64, ptr %24, align 8, !tbaa !9
  %988 = mul nsw i64 %986, %987
  %989 = add nsw i64 %985, %988
  %990 = getelementptr inbounds %struct.complex, ptr %984, i64 %989
  call void @r_cnjg(ptr noundef %36, ptr noundef %990)
  %991 = load i64, ptr %39, align 8, !tbaa !9
  %992 = load i64, ptr %38, align 8, !tbaa !9
  %993 = load i64, ptr %26, align 8, !tbaa !9
  %994 = mul nsw i64 %992, %993
  %995 = add nsw i64 %991, %994
  store i64 %995, ptr %30, align 8, !tbaa !9
  %996 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %997 = load float, ptr %996, align 4, !tbaa !11
  %998 = load ptr, ptr %22, align 8, !tbaa !5
  %999 = load i64, ptr %30, 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 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1004 = load float, ptr %1003, align 4, !tbaa !14
  %1005 = load ptr, ptr %22, align 8, !tbaa !5
  %1006 = load i64, ptr %30, align 8, !tbaa !9
  %1007 = getelementptr inbounds %struct.complex, ptr %1005, i64 %1006
  %1008 = getelementptr inbounds %struct.complex, ptr %1007, i32 0, i32 1
  %1009 = load float, ptr %1008, align 4, !tbaa !14
  %1010 = fmul float %1004, %1009
  %1011 = fneg float %1010
  %1012 = call float @llvm.fmuladd.f32(float %997, float %1002, float %1011)
  %1013 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1012, ptr %1013, align 4, !tbaa !11
  %1014 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1015 = load float, ptr %1014, align 4, !tbaa !11
  %1016 = load ptr, ptr %22, align 8, !tbaa !5
  %1017 = load i64, ptr %30, align 8, !tbaa !9
  %1018 = getelementptr inbounds %struct.complex, ptr %1016, i64 %1017
  %1019 = getelementptr inbounds %struct.complex, ptr %1018, i32 0, i32 1
  %1020 = load float, ptr %1019, align 4, !tbaa !14
  %1021 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1022 = load float, ptr %1021, align 4, !tbaa !14
  %1023 = load ptr, ptr %22, align 8, !tbaa !5
  %1024 = load i64, ptr %30, align 8, !tbaa !9
  %1025 = getelementptr inbounds %struct.complex, ptr %1023, i64 %1024
  %1026 = getelementptr inbounds %struct.complex, ptr %1025, i32 0, i32 0
  %1027 = load float, ptr %1026, align 4, !tbaa !11
  %1028 = fmul float %1022, %1027
  %1029 = call float @llvm.fmuladd.f32(float %1015, float %1020, float %1028)
  %1030 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1029, ptr %1030, align 4, !tbaa !14
  %1031 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1032 = load float, ptr %1031, align 4, !tbaa !11
  %1033 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1034 = load float, ptr %1033, align 4, !tbaa !11
  %1035 = fadd float %1032, %1034
  %1036 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1035, ptr %1036, align 4, !tbaa !11
  %1037 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1038 = load float, ptr %1037, align 4, !tbaa !14
  %1039 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1040 = load float, ptr %1039, align 4, !tbaa !14
  %1041 = fadd float %1038, %1040
  %1042 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1041, ptr %1042, align 4, !tbaa !14
  %1043 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1044 = load float, ptr %1043, align 4, !tbaa !11
  %1045 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1044, ptr %1045, align 4, !tbaa !11
  %1046 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1047 = load float, ptr %1046, align 4, !tbaa !14
  %1048 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1047, ptr %1048, align 4, !tbaa !14
  br label %1049

1049:                                             ; preds = %983
  %1050 = load i64, ptr %39, align 8, !tbaa !9
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %39, align 8, !tbaa !9
  br label %979, !llvm.loop !25

1052:                                             ; preds = %979
  br label %1053

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

1098:                                             ; preds = %1053
  %1099 = load i64, ptr %37, align 8, !tbaa !9
  %1100 = add nsw i64 %1099, -1
  store i64 %1100, ptr %37, align 8, !tbaa !9
  br label %776, !llvm.loop !26

1101:                                             ; preds = %776
  br label %1102

1102:                                             ; preds = %1101
  %1103 = load i64, ptr %38, align 8, !tbaa !9
  %1104 = add nsw i64 %1103, 1
  store i64 %1104, ptr %38, align 8, !tbaa !9
  br label %769, !llvm.loop !27

1105:                                             ; preds = %769
  br label %1451

1106:                                             ; preds = %763
  %1107 = load ptr, ptr %18, align 8, !tbaa !5
  %1108 = load i64, ptr %1107, align 8, !tbaa !9
  store i64 %1108, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1109

1109:                                             ; preds = %1447, %1106
  %1110 = load i64, ptr %38, align 8, !tbaa !9
  %1111 = load i64, ptr %28, align 8, !tbaa !9
  %1112 = icmp sle i64 %1110, %1111
  br i1 %1112, label %1113, label %1450

1113:                                             ; preds = %1109
  %1114 = load ptr, ptr %17, align 8, !tbaa !5
  %1115 = load i64, ptr %1114, align 8, !tbaa !9
  store i64 %1115, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1116

1116:                                             ; preds = %1443, %1113
  %1117 = load i64, ptr %37, align 8, !tbaa !9
  %1118 = load i64, ptr %29, align 8, !tbaa !9
  %1119 = icmp sle i64 %1117, %1118
  br i1 %1119, label %1120, label %1446

1120:                                             ; preds = %1116
  %1121 = load i64, ptr %37, align 8, !tbaa !9
  %1122 = load i64, ptr %38, align 8, !tbaa !9
  %1123 = load i64, ptr %26, align 8, !tbaa !9
  %1124 = mul nsw i64 %1122, %1123
  %1125 = add nsw i64 %1121, %1124
  store i64 %1125, ptr %30, align 8, !tbaa !9
  %1126 = load ptr, ptr %22, align 8, !tbaa !5
  %1127 = load i64, ptr %30, align 8, !tbaa !9
  %1128 = getelementptr inbounds %struct.complex, ptr %1126, i64 %1127
  %1129 = getelementptr inbounds %struct.complex, ptr %1128, i32 0, i32 0
  %1130 = load float, ptr %1129, align 4, !tbaa !11
  %1131 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1130, ptr %1131, align 4, !tbaa !11
  %1132 = load ptr, ptr %22, align 8, !tbaa !5
  %1133 = load i64, ptr %30, align 8, !tbaa !9
  %1134 = getelementptr inbounds %struct.complex, ptr %1132, i64 %1133
  %1135 = getelementptr inbounds %struct.complex, ptr %1134, i32 0, i32 1
  %1136 = load float, ptr %1135, align 4, !tbaa !14
  %1137 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1136, ptr %1137, align 4, !tbaa !14
  %1138 = load i64, ptr %45, align 8, !tbaa !9
  %1139 = icmp ne i64 %1138, 0
  br i1 %1139, label %1140, label %1279

1140:                                             ; preds = %1120
  %1141 = load i64, ptr %46, align 8, !tbaa !9
  %1142 = icmp ne i64 %1141, 0
  br i1 %1142, label %1143, label %1190

1143:                                             ; preds = %1140
  %1144 = load i64, ptr %37, align 8, !tbaa !9
  %1145 = load i64, ptr %37, align 8, !tbaa !9
  %1146 = load i64, ptr %24, align 8, !tbaa !9
  %1147 = mul nsw i64 %1145, %1146
  %1148 = add nsw i64 %1144, %1147
  store i64 %1148, ptr %30, align 8, !tbaa !9
  %1149 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1150 = load float, ptr %1149, align 4, !tbaa !11
  %1151 = load ptr, ptr %20, align 8, !tbaa !5
  %1152 = load i64, ptr %30, align 8, !tbaa !9
  %1153 = getelementptr inbounds %struct.complex, ptr %1151, i64 %1152
  %1154 = getelementptr inbounds %struct.complex, ptr %1153, i32 0, i32 0
  %1155 = load float, ptr %1154, align 4, !tbaa !11
  %1156 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1157 = load float, ptr %1156, align 4, !tbaa !14
  %1158 = load ptr, ptr %20, align 8, !tbaa !5
  %1159 = load i64, ptr %30, 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 = fmul float %1157, %1162
  %1164 = fneg float %1163
  %1165 = call float @llvm.fmuladd.f32(float %1150, float %1155, float %1164)
  %1166 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1165, ptr %1166, align 4, !tbaa !11
  %1167 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1168 = load float, ptr %1167, align 4, !tbaa !11
  %1169 = load ptr, ptr %20, align 8, !tbaa !5
  %1170 = load i64, ptr %30, align 8, !tbaa !9
  %1171 = getelementptr inbounds %struct.complex, ptr %1169, i64 %1170
  %1172 = getelementptr inbounds %struct.complex, ptr %1171, i32 0, i32 1
  %1173 = load float, ptr %1172, align 4, !tbaa !14
  %1174 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1175 = load float, ptr %1174, align 4, !tbaa !14
  %1176 = load ptr, ptr %20, align 8, !tbaa !5
  %1177 = load i64, ptr %30, align 8, !tbaa !9
  %1178 = getelementptr inbounds %struct.complex, ptr %1176, i64 %1177
  %1179 = getelementptr inbounds %struct.complex, ptr %1178, i32 0, i32 0
  %1180 = load float, ptr %1179, align 4, !tbaa !11
  %1181 = fmul float %1175, %1180
  %1182 = call float @llvm.fmuladd.f32(float %1168, float %1173, float %1181)
  %1183 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1182, ptr %1183, align 4, !tbaa !14
  %1184 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1185 = load float, ptr %1184, align 4, !tbaa !11
  %1186 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1185, ptr %1186, align 4, !tbaa !11
  %1187 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1188 = load float, ptr %1187, align 4, !tbaa !14
  %1189 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1188, ptr %1189, align 4, !tbaa !14
  br label %1190

1190:                                             ; preds = %1143, %1140
  %1191 = load ptr, ptr %17, align 8, !tbaa !5
  %1192 = load i64, ptr %1191, align 8, !tbaa !9
  store i64 %1192, ptr %30, align 8, !tbaa !9
  %1193 = load i64, ptr %37, align 8, !tbaa !9
  %1194 = add nsw i64 %1193, 1
  store i64 %1194, ptr %39, align 8, !tbaa !9
  br label %1195

1195:                                             ; preds = %1275, %1190
  %1196 = load i64, ptr %39, align 8, !tbaa !9
  %1197 = load i64, ptr %30, align 8, !tbaa !9
  %1198 = icmp sle i64 %1196, %1197
  br i1 %1198, label %1199, label %1278

1199:                                             ; preds = %1195
  %1200 = load i64, ptr %39, align 8, !tbaa !9
  %1201 = load i64, ptr %37, align 8, !tbaa !9
  %1202 = load i64, ptr %24, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  store i64 %1204, ptr %31, align 8, !tbaa !9
  %1205 = load i64, ptr %39, align 8, !tbaa !9
  %1206 = load i64, ptr %38, align 8, !tbaa !9
  %1207 = load i64, ptr %26, align 8, !tbaa !9
  %1208 = mul nsw i64 %1206, %1207
  %1209 = add nsw i64 %1205, %1208
  store i64 %1209, ptr %32, align 8, !tbaa !9
  %1210 = load ptr, ptr %20, align 8, !tbaa !5
  %1211 = load i64, ptr %31, align 8, !tbaa !9
  %1212 = getelementptr inbounds %struct.complex, ptr %1210, i64 %1211
  %1213 = getelementptr inbounds %struct.complex, ptr %1212, i32 0, i32 0
  %1214 = load float, ptr %1213, align 4, !tbaa !11
  %1215 = load ptr, ptr %22, align 8, !tbaa !5
  %1216 = load i64, ptr %32, align 8, !tbaa !9
  %1217 = getelementptr inbounds %struct.complex, ptr %1215, i64 %1216
  %1218 = getelementptr inbounds %struct.complex, ptr %1217, i32 0, i32 0
  %1219 = load float, ptr %1218, align 4, !tbaa !11
  %1220 = load ptr, ptr %20, align 8, !tbaa !5
  %1221 = load i64, ptr %31, align 8, !tbaa !9
  %1222 = getelementptr inbounds %struct.complex, ptr %1220, i64 %1221
  %1223 = getelementptr inbounds %struct.complex, ptr %1222, i32 0, i32 1
  %1224 = load float, ptr %1223, align 4, !tbaa !14
  %1225 = load ptr, ptr %22, align 8, !tbaa !5
  %1226 = load i64, ptr %32, align 8, !tbaa !9
  %1227 = getelementptr inbounds %struct.complex, ptr %1225, i64 %1226
  %1228 = getelementptr inbounds %struct.complex, ptr %1227, i32 0, i32 1
  %1229 = load float, ptr %1228, align 4, !tbaa !14
  %1230 = fmul float %1224, %1229
  %1231 = fneg float %1230
  %1232 = call float @llvm.fmuladd.f32(float %1214, float %1219, float %1231)
  %1233 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1232, ptr %1233, align 4, !tbaa !11
  %1234 = load ptr, ptr %20, align 8, !tbaa !5
  %1235 = load i64, ptr %31, align 8, !tbaa !9
  %1236 = getelementptr inbounds %struct.complex, ptr %1234, i64 %1235
  %1237 = getelementptr inbounds %struct.complex, ptr %1236, i32 0, i32 0
  %1238 = load float, ptr %1237, align 4, !tbaa !11
  %1239 = load ptr, ptr %22, align 8, !tbaa !5
  %1240 = load i64, ptr %32, align 8, !tbaa !9
  %1241 = getelementptr inbounds %struct.complex, ptr %1239, i64 %1240
  %1242 = getelementptr inbounds %struct.complex, ptr %1241, i32 0, i32 1
  %1243 = load float, ptr %1242, align 4, !tbaa !14
  %1244 = load ptr, ptr %20, align 8, !tbaa !5
  %1245 = load i64, ptr %31, align 8, !tbaa !9
  %1246 = getelementptr inbounds %struct.complex, ptr %1244, i64 %1245
  %1247 = getelementptr inbounds %struct.complex, ptr %1246, i32 0, i32 1
  %1248 = load float, ptr %1247, align 4, !tbaa !14
  %1249 = load ptr, ptr %22, align 8, !tbaa !5
  %1250 = load i64, ptr %32, align 8, !tbaa !9
  %1251 = getelementptr inbounds %struct.complex, ptr %1249, i64 %1250
  %1252 = getelementptr inbounds %struct.complex, ptr %1251, i32 0, i32 0
  %1253 = load float, ptr %1252, align 4, !tbaa !11
  %1254 = fmul float %1248, %1253
  %1255 = call float @llvm.fmuladd.f32(float %1238, float %1243, float %1254)
  %1256 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1255, ptr %1256, align 4, !tbaa !14
  %1257 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1258 = load float, ptr %1257, align 4, !tbaa !11
  %1259 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1260 = load float, ptr %1259, align 4, !tbaa !11
  %1261 = fadd float %1258, %1260
  %1262 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1261, ptr %1262, align 4, !tbaa !11
  %1263 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1264 = load float, ptr %1263, align 4, !tbaa !14
  %1265 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1266 = load float, ptr %1265, align 4, !tbaa !14
  %1267 = fadd float %1264, %1266
  %1268 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1267, ptr %1268, align 4, !tbaa !14
  %1269 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1270 = load float, ptr %1269, align 4, !tbaa !11
  %1271 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1270, ptr %1271, align 4, !tbaa !11
  %1272 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1273 = load float, ptr %1272, align 4, !tbaa !14
  %1274 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1273, ptr %1274, align 4, !tbaa !14
  br label %1275

1275:                                             ; preds = %1199
  %1276 = load i64, ptr %39, align 8, !tbaa !9
  %1277 = add nsw i64 %1276, 1
  store i64 %1277, ptr %39, align 8, !tbaa !9
  br label %1195, !llvm.loop !28

1278:                                             ; preds = %1195
  br label %1398

1279:                                             ; preds = %1120
  %1280 = load i64, ptr %46, align 8, !tbaa !9
  %1281 = icmp ne i64 %1280, 0
  br i1 %1281, label %1282, label %1319

1282:                                             ; preds = %1279
  %1283 = load ptr, ptr %20, align 8, !tbaa !5
  %1284 = load i64, ptr %37, align 8, !tbaa !9
  %1285 = load i64, ptr %37, align 8, !tbaa !9
  %1286 = load i64, ptr %24, align 8, !tbaa !9
  %1287 = mul nsw i64 %1285, %1286
  %1288 = add nsw i64 %1284, %1287
  %1289 = getelementptr inbounds %struct.complex, ptr %1283, i64 %1288
  call void @r_cnjg(ptr noundef %35, ptr noundef %1289)
  %1290 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1291 = load float, ptr %1290, align 4, !tbaa !11
  %1292 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1293 = load float, ptr %1292, align 4, !tbaa !11
  %1294 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1295 = load float, ptr %1294, align 4, !tbaa !14
  %1296 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1297 = load float, ptr %1296, align 4, !tbaa !14
  %1298 = fmul float %1295, %1297
  %1299 = fneg float %1298
  %1300 = call float @llvm.fmuladd.f32(float %1291, float %1293, float %1299)
  %1301 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1300, ptr %1301, align 4, !tbaa !11
  %1302 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1303 = load float, ptr %1302, align 4, !tbaa !11
  %1304 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1305 = load float, ptr %1304, align 4, !tbaa !14
  %1306 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1307 = load float, ptr %1306, align 4, !tbaa !14
  %1308 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1309 = load float, ptr %1308, align 4, !tbaa !11
  %1310 = fmul float %1307, %1309
  %1311 = call float @llvm.fmuladd.f32(float %1303, float %1305, float %1310)
  %1312 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1311, ptr %1312, align 4, !tbaa !14
  %1313 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1314 = load float, ptr %1313, align 4, !tbaa !11
  %1315 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1314, ptr %1315, align 4, !tbaa !11
  %1316 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1317 = load float, ptr %1316, align 4, !tbaa !14
  %1318 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1317, ptr %1318, align 4, !tbaa !14
  br label %1319

1319:                                             ; preds = %1282, %1279
  %1320 = load ptr, ptr %17, align 8, !tbaa !5
  %1321 = load i64, ptr %1320, align 8, !tbaa !9
  store i64 %1321, ptr %30, align 8, !tbaa !9
  %1322 = load i64, ptr %37, align 8, !tbaa !9
  %1323 = add nsw i64 %1322, 1
  store i64 %1323, ptr %39, align 8, !tbaa !9
  br label %1324

1324:                                             ; preds = %1394, %1319
  %1325 = load i64, ptr %39, align 8, !tbaa !9
  %1326 = load i64, ptr %30, align 8, !tbaa !9
  %1327 = icmp sle i64 %1325, %1326
  br i1 %1327, label %1328, label %1397

1328:                                             ; preds = %1324
  %1329 = load ptr, ptr %20, align 8, !tbaa !5
  %1330 = load i64, ptr %39, align 8, !tbaa !9
  %1331 = load i64, ptr %37, align 8, !tbaa !9
  %1332 = load i64, ptr %24, align 8, !tbaa !9
  %1333 = mul nsw i64 %1331, %1332
  %1334 = add nsw i64 %1330, %1333
  %1335 = getelementptr inbounds %struct.complex, ptr %1329, i64 %1334
  call void @r_cnjg(ptr noundef %36, ptr noundef %1335)
  %1336 = load i64, ptr %39, align 8, !tbaa !9
  %1337 = load i64, ptr %38, align 8, !tbaa !9
  %1338 = load i64, ptr %26, align 8, !tbaa !9
  %1339 = mul nsw i64 %1337, %1338
  %1340 = add nsw i64 %1336, %1339
  store i64 %1340, ptr %31, align 8, !tbaa !9
  %1341 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1342 = load float, ptr %1341, align 4, !tbaa !11
  %1343 = load ptr, ptr %22, align 8, !tbaa !5
  %1344 = load i64, ptr %31, align 8, !tbaa !9
  %1345 = getelementptr inbounds %struct.complex, ptr %1343, i64 %1344
  %1346 = getelementptr inbounds %struct.complex, ptr %1345, i32 0, i32 0
  %1347 = load float, ptr %1346, align 4, !tbaa !11
  %1348 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1349 = load float, ptr %1348, align 4, !tbaa !14
  %1350 = load ptr, ptr %22, align 8, !tbaa !5
  %1351 = load i64, ptr %31, align 8, !tbaa !9
  %1352 = getelementptr inbounds %struct.complex, ptr %1350, i64 %1351
  %1353 = getelementptr inbounds %struct.complex, ptr %1352, i32 0, i32 1
  %1354 = load float, ptr %1353, align 4, !tbaa !14
  %1355 = fmul float %1349, %1354
  %1356 = fneg float %1355
  %1357 = call float @llvm.fmuladd.f32(float %1342, float %1347, float %1356)
  %1358 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1357, ptr %1358, align 4, !tbaa !11
  %1359 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1360 = load float, ptr %1359, align 4, !tbaa !11
  %1361 = load ptr, ptr %22, align 8, !tbaa !5
  %1362 = load i64, ptr %31, 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 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1367 = load float, ptr %1366, align 4, !tbaa !14
  %1368 = load ptr, ptr %22, align 8, !tbaa !5
  %1369 = load i64, ptr %31, align 8, !tbaa !9
  %1370 = getelementptr inbounds %struct.complex, ptr %1368, i64 %1369
  %1371 = getelementptr inbounds %struct.complex, ptr %1370, i32 0, i32 0
  %1372 = load float, ptr %1371, align 4, !tbaa !11
  %1373 = fmul float %1367, %1372
  %1374 = call float @llvm.fmuladd.f32(float %1360, float %1365, float %1373)
  %1375 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1374, ptr %1375, align 4, !tbaa !14
  %1376 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1377 = load float, ptr %1376, align 4, !tbaa !11
  %1378 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1379 = load float, ptr %1378, align 4, !tbaa !11
  %1380 = fadd float %1377, %1379
  %1381 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1380, ptr %1381, align 4, !tbaa !11
  %1382 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1383 = load float, ptr %1382, align 4, !tbaa !14
  %1384 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1385 = load float, ptr %1384, align 4, !tbaa !14
  %1386 = fadd float %1383, %1385
  %1387 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1386, ptr %1387, align 4, !tbaa !14
  %1388 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1389 = load float, ptr %1388, align 4, !tbaa !11
  %1390 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1389, ptr %1390, align 4, !tbaa !11
  %1391 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1392 = load float, ptr %1391, align 4, !tbaa !14
  %1393 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1392, ptr %1393, align 4, !tbaa !14
  br label %1394

1394:                                             ; preds = %1328
  %1395 = load i64, ptr %39, align 8, !tbaa !9
  %1396 = add nsw i64 %1395, 1
  store i64 %1396, ptr %39, align 8, !tbaa !9
  br label %1324, !llvm.loop !29

1397:                                             ; preds = %1324
  br label %1398

1398:                                             ; preds = %1397, %1278
  %1399 = load i64, ptr %37, align 8, !tbaa !9
  %1400 = load i64, ptr %38, align 8, !tbaa !9
  %1401 = load i64, ptr %26, align 8, !tbaa !9
  %1402 = mul nsw i64 %1400, %1401
  %1403 = add nsw i64 %1399, %1402
  store i64 %1403, ptr %30, align 8, !tbaa !9
  %1404 = load ptr, ptr %19, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.complex, ptr %1404, i32 0, i32 0
  %1406 = load float, ptr %1405, align 4, !tbaa !11
  %1407 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1408 = load float, ptr %1407, align 4, !tbaa !11
  %1409 = load ptr, ptr %19, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.complex, ptr %1409, i32 0, i32 1
  %1411 = load float, ptr %1410, align 4, !tbaa !14
  %1412 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1413 = load float, ptr %1412, align 4, !tbaa !14
  %1414 = fmul float %1411, %1413
  %1415 = fneg float %1414
  %1416 = call float @llvm.fmuladd.f32(float %1406, float %1408, float %1415)
  %1417 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1416, ptr %1417, align 4, !tbaa !11
  %1418 = load ptr, ptr %19, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.complex, ptr %1418, i32 0, i32 0
  %1420 = load float, ptr %1419, align 4, !tbaa !11
  %1421 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1422 = load float, ptr %1421, align 4, !tbaa !14
  %1423 = load ptr, ptr %19, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.complex, ptr %1423, i32 0, i32 1
  %1425 = load float, ptr %1424, align 4, !tbaa !14
  %1426 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1427 = load float, ptr %1426, align 4, !tbaa !11
  %1428 = fmul float %1425, %1427
  %1429 = call float @llvm.fmuladd.f32(float %1420, float %1422, float %1428)
  %1430 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1429, ptr %1430, align 4, !tbaa !14
  %1431 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1432 = load float, ptr %1431, align 4, !tbaa !11
  %1433 = load ptr, ptr %22, align 8, !tbaa !5
  %1434 = load i64, ptr %30, align 8, !tbaa !9
  %1435 = getelementptr inbounds %struct.complex, ptr %1433, i64 %1434
  %1436 = getelementptr inbounds %struct.complex, ptr %1435, i32 0, i32 0
  store float %1432, ptr %1436, align 4, !tbaa !11
  %1437 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1438 = load float, ptr %1437, align 4, !tbaa !14
  %1439 = load ptr, ptr %22, align 8, !tbaa !5
  %1440 = load i64, ptr %30, align 8, !tbaa !9
  %1441 = getelementptr inbounds %struct.complex, ptr %1439, i64 %1440
  %1442 = getelementptr inbounds %struct.complex, ptr %1441, i32 0, i32 1
  store float %1438, ptr %1442, align 4, !tbaa !14
  br label %1443

1443:                                             ; preds = %1398
  %1444 = load i64, ptr %37, align 8, !tbaa !9
  %1445 = add nsw i64 %1444, 1
  store i64 %1445, ptr %37, align 8, !tbaa !9
  br label %1116, !llvm.loop !30

1446:                                             ; preds = %1116
  br label %1447

1447:                                             ; preds = %1446
  %1448 = load i64, ptr %38, align 8, !tbaa !9
  %1449 = add nsw i64 %1448, 1
  store i64 %1449, ptr %38, align 8, !tbaa !9
  br label %1109, !llvm.loop !31

1450:                                             ; preds = %1109
  br label %1451

1451:                                             ; preds = %1450, %1105
  br label %1452

1452:                                             ; preds = %1451, %762
  br label %2898

1453:                                             ; preds = %221
  %1454 = load ptr, ptr %15, align 8, !tbaa !5
  %1455 = call i64 @lsame_(ptr noundef %1454, ptr noundef @.str.2)
  %1456 = icmp ne i64 %1455, 0
  br i1 %1456, label %1457, label %2082

1457:                                             ; preds = %1453
  %1458 = load i64, ptr %44, align 8, !tbaa !9
  %1459 = icmp ne i64 %1458, 0
  br i1 %1459, label %1460, label %1769

1460:                                             ; preds = %1457
  %1461 = load ptr, ptr %18, align 8, !tbaa !5
  %1462 = load i64, ptr %1461, align 8, !tbaa !9
  store i64 %1462, ptr %38, align 8, !tbaa !9
  br label %1463

1463:                                             ; preds = %1765, %1460
  %1464 = load i64, ptr %38, align 8, !tbaa !9
  %1465 = icmp sge i64 %1464, 1
  br i1 %1465, label %1466, label %1768

1466:                                             ; preds = %1463
  %1467 = load ptr, ptr %19, align 8, !tbaa !5
  %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
  store float %1469, ptr %1470, align 4, !tbaa !11
  %1471 = load ptr, ptr %19, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.complex, ptr %1471, i32 0, i32 1
  %1473 = load float, ptr %1472, align 4, !tbaa !14
  %1474 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1473, ptr %1474, align 4, !tbaa !14
  %1475 = load i64, ptr %46, align 8, !tbaa !9
  %1476 = icmp ne i64 %1475, 0
  br i1 %1476, label %1477, label %1524

1477:                                             ; preds = %1466
  %1478 = load i64, ptr %38, align 8, !tbaa !9
  %1479 = load i64, ptr %38, align 8, !tbaa !9
  %1480 = load i64, ptr %24, align 8, !tbaa !9
  %1481 = mul nsw i64 %1479, %1480
  %1482 = add nsw i64 %1478, %1481
  store i64 %1482, ptr %28, align 8, !tbaa !9
  %1483 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1484 = load float, ptr %1483, align 4, !tbaa !11
  %1485 = load ptr, ptr %20, align 8, !tbaa !5
  %1486 = load i64, ptr %28, align 8, !tbaa !9
  %1487 = getelementptr inbounds %struct.complex, ptr %1485, i64 %1486
  %1488 = getelementptr inbounds %struct.complex, ptr %1487, i32 0, i32 0
  %1489 = load float, ptr %1488, align 4, !tbaa !11
  %1490 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1491 = load float, ptr %1490, align 4, !tbaa !14
  %1492 = load ptr, ptr %20, align 8, !tbaa !5
  %1493 = load i64, ptr %28, align 8, !tbaa !9
  %1494 = getelementptr inbounds %struct.complex, ptr %1492, i64 %1493
  %1495 = getelementptr inbounds %struct.complex, ptr %1494, i32 0, i32 1
  %1496 = load float, ptr %1495, align 4, !tbaa !14
  %1497 = fmul float %1491, %1496
  %1498 = fneg float %1497
  %1499 = call float @llvm.fmuladd.f32(float %1484, float %1489, float %1498)
  %1500 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1499, ptr %1500, align 4, !tbaa !11
  %1501 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1502 = load float, ptr %1501, align 4, !tbaa !11
  %1503 = load ptr, ptr %20, align 8, !tbaa !5
  %1504 = load i64, ptr %28, align 8, !tbaa !9
  %1505 = getelementptr inbounds %struct.complex, ptr %1503, i64 %1504
  %1506 = getelementptr inbounds %struct.complex, ptr %1505, i32 0, i32 1
  %1507 = load float, ptr %1506, align 4, !tbaa !14
  %1508 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1509 = load float, ptr %1508, align 4, !tbaa !14
  %1510 = load ptr, ptr %20, align 8, !tbaa !5
  %1511 = load i64, ptr %28, align 8, !tbaa !9
  %1512 = getelementptr inbounds %struct.complex, ptr %1510, i64 %1511
  %1513 = getelementptr inbounds %struct.complex, ptr %1512, i32 0, i32 0
  %1514 = load float, ptr %1513, align 4, !tbaa !11
  %1515 = fmul float %1509, %1514
  %1516 = call float @llvm.fmuladd.f32(float %1502, float %1507, float %1515)
  %1517 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1516, ptr %1517, align 4, !tbaa !14
  %1518 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1519 = load float, ptr %1518, align 4, !tbaa !11
  %1520 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1519, ptr %1520, align 4, !tbaa !11
  %1521 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1522 = load float, ptr %1521, align 4, !tbaa !14
  %1523 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1522, ptr %1523, align 4, !tbaa !14
  br label %1524

1524:                                             ; preds = %1477, %1466
  %1525 = load ptr, ptr %17, align 8, !tbaa !5
  %1526 = load i64, ptr %1525, align 8, !tbaa !9
  store i64 %1526, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1527

1527:                                             ; preds = %1589, %1524
  %1528 = load i64, ptr %37, align 8, !tbaa !9
  %1529 = load i64, ptr %28, align 8, !tbaa !9
  %1530 = icmp sle i64 %1528, %1529
  br i1 %1530, label %1531, label %1592

1531:                                             ; preds = %1527
  %1532 = load i64, ptr %37, align 8, !tbaa !9
  %1533 = load i64, ptr %38, align 8, !tbaa !9
  %1534 = load i64, ptr %26, align 8, !tbaa !9
  %1535 = mul nsw i64 %1533, %1534
  %1536 = add nsw i64 %1532, %1535
  store i64 %1536, ptr %29, align 8, !tbaa !9
  %1537 = load i64, ptr %37, align 8, !tbaa !9
  %1538 = load i64, ptr %38, align 8, !tbaa !9
  %1539 = load i64, ptr %26, align 8, !tbaa !9
  %1540 = mul nsw i64 %1538, %1539
  %1541 = add nsw i64 %1537, %1540
  store i64 %1541, ptr %30, align 8, !tbaa !9
  %1542 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1543 = load float, ptr %1542, align 4, !tbaa !11
  %1544 = load ptr, ptr %22, align 8, !tbaa !5
  %1545 = load i64, ptr %30, align 8, !tbaa !9
  %1546 = getelementptr inbounds %struct.complex, ptr %1544, i64 %1545
  %1547 = getelementptr inbounds %struct.complex, ptr %1546, i32 0, i32 0
  %1548 = load float, ptr %1547, align 4, !tbaa !11
  %1549 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1550 = load float, ptr %1549, align 4, !tbaa !14
  %1551 = load ptr, ptr %22, align 8, !tbaa !5
  %1552 = load i64, ptr %30, align 8, !tbaa !9
  %1553 = getelementptr inbounds %struct.complex, ptr %1551, i64 %1552
  %1554 = getelementptr inbounds %struct.complex, ptr %1553, i32 0, i32 1
  %1555 = load float, ptr %1554, align 4, !tbaa !14
  %1556 = fmul float %1550, %1555
  %1557 = fneg float %1556
  %1558 = call float @llvm.fmuladd.f32(float %1543, float %1548, float %1557)
  %1559 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1558, ptr %1559, align 4, !tbaa !11
  %1560 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1561 = load float, ptr %1560, align 4, !tbaa !11
  %1562 = load ptr, ptr %22, align 8, !tbaa !5
  %1563 = load i64, ptr %30, align 8, !tbaa !9
  %1564 = getelementptr inbounds %struct.complex, ptr %1562, i64 %1563
  %1565 = getelementptr inbounds %struct.complex, ptr %1564, i32 0, i32 1
  %1566 = load float, ptr %1565, align 4, !tbaa !14
  %1567 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1568 = load float, ptr %1567, align 4, !tbaa !14
  %1569 = load ptr, ptr %22, align 8, !tbaa !5
  %1570 = load i64, ptr %30, align 8, !tbaa !9
  %1571 = getelementptr inbounds %struct.complex, ptr %1569, i64 %1570
  %1572 = getelementptr inbounds %struct.complex, ptr %1571, i32 0, i32 0
  %1573 = load float, ptr %1572, align 4, !tbaa !11
  %1574 = fmul float %1568, %1573
  %1575 = call float @llvm.fmuladd.f32(float %1561, float %1566, float %1574)
  %1576 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1575, ptr %1576, align 4, !tbaa !14
  %1577 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1578 = load float, ptr %1577, align 4, !tbaa !11
  %1579 = load ptr, ptr %22, align 8, !tbaa !5
  %1580 = load i64, ptr %29, align 8, !tbaa !9
  %1581 = getelementptr inbounds %struct.complex, ptr %1579, i64 %1580
  %1582 = getelementptr inbounds %struct.complex, ptr %1581, i32 0, i32 0
  store float %1578, ptr %1582, align 4, !tbaa !11
  %1583 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1584 = load float, ptr %1583, align 4, !tbaa !14
  %1585 = load ptr, ptr %22, align 8, !tbaa !5
  %1586 = load i64, ptr %29, align 8, !tbaa !9
  %1587 = getelementptr inbounds %struct.complex, ptr %1585, i64 %1586
  %1588 = getelementptr inbounds %struct.complex, ptr %1587, i32 0, i32 1
  store float %1584, ptr %1588, align 4, !tbaa !14
  br label %1589

1589:                                             ; preds = %1531
  %1590 = load i64, ptr %37, align 8, !tbaa !9
  %1591 = add nsw i64 %1590, 1
  store i64 %1591, ptr %37, align 8, !tbaa !9
  br label %1527, !llvm.loop !32

1592:                                             ; preds = %1527
  %1593 = load i64, ptr %38, align 8, !tbaa !9
  %1594 = sub nsw i64 %1593, 1
  store i64 %1594, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %1595

1595:                                             ; preds = %1761, %1592
  %1596 = load i64, ptr %39, align 8, !tbaa !9
  %1597 = load i64, ptr %28, align 8, !tbaa !9
  %1598 = icmp sle i64 %1596, %1597
  br i1 %1598, label %1599, label %1764

1599:                                             ; preds = %1595
  %1600 = load i64, ptr %39, align 8, !tbaa !9
  %1601 = load i64, ptr %38, align 8, !tbaa !9
  %1602 = load i64, ptr %24, align 8, !tbaa !9
  %1603 = mul nsw i64 %1601, %1602
  %1604 = add nsw i64 %1600, %1603
  store i64 %1604, ptr %29, align 8, !tbaa !9
  %1605 = load ptr, ptr %20, align 8, !tbaa !5
  %1606 = load i64, ptr %29, align 8, !tbaa !9
  %1607 = getelementptr inbounds %struct.complex, ptr %1605, i64 %1606
  %1608 = getelementptr inbounds %struct.complex, ptr %1607, i32 0, i32 0
  %1609 = load float, ptr %1608, align 4, !tbaa !11
  %1610 = fcmp une float %1609, 0.000000e+00
  br i1 %1610, label %1618, label %1611

1611:                                             ; preds = %1599
  %1612 = load ptr, ptr %20, align 8, !tbaa !5
  %1613 = load i64, ptr %29, align 8, !tbaa !9
  %1614 = getelementptr inbounds %struct.complex, ptr %1612, i64 %1613
  %1615 = getelementptr inbounds %struct.complex, ptr %1614, i32 0, i32 1
  %1616 = load float, ptr %1615, align 4, !tbaa !14
  %1617 = fcmp une float %1616, 0.000000e+00
  br i1 %1617, label %1618, label %1760

1618:                                             ; preds = %1611, %1599
  %1619 = load i64, ptr %39, align 8, !tbaa !9
  %1620 = load i64, ptr %38, align 8, !tbaa !9
  %1621 = load i64, ptr %24, align 8, !tbaa !9
  %1622 = mul nsw i64 %1620, %1621
  %1623 = add nsw i64 %1619, %1622
  store i64 %1623, ptr %29, align 8, !tbaa !9
  %1624 = load ptr, ptr %19, align 8, !tbaa !5
  %1625 = getelementptr inbounds %struct.complex, ptr %1624, i32 0, i32 0
  %1626 = load float, ptr %1625, align 4, !tbaa !11
  %1627 = load ptr, ptr %20, align 8, !tbaa !5
  %1628 = load i64, ptr %29, align 8, !tbaa !9
  %1629 = getelementptr inbounds %struct.complex, ptr %1627, i64 %1628
  %1630 = getelementptr inbounds %struct.complex, ptr %1629, i32 0, i32 0
  %1631 = load float, ptr %1630, align 4, !tbaa !11
  %1632 = load ptr, ptr %19, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.complex, ptr %1632, i32 0, i32 1
  %1634 = load float, ptr %1633, align 4, !tbaa !14
  %1635 = load ptr, ptr %20, align 8, !tbaa !5
  %1636 = load i64, ptr %29, align 8, !tbaa !9
  %1637 = getelementptr inbounds %struct.complex, ptr %1635, i64 %1636
  %1638 = getelementptr inbounds %struct.complex, ptr %1637, i32 0, i32 1
  %1639 = load float, ptr %1638, align 4, !tbaa !14
  %1640 = fmul float %1634, %1639
  %1641 = fneg float %1640
  %1642 = call float @llvm.fmuladd.f32(float %1626, float %1631, float %1641)
  %1643 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1642, ptr %1643, align 4, !tbaa !11
  %1644 = load ptr, ptr %19, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.complex, ptr %1644, i32 0, i32 0
  %1646 = load float, ptr %1645, align 4, !tbaa !11
  %1647 = load ptr, ptr %20, align 8, !tbaa !5
  %1648 = load i64, ptr %29, align 8, !tbaa !9
  %1649 = getelementptr inbounds %struct.complex, ptr %1647, i64 %1648
  %1650 = getelementptr inbounds %struct.complex, ptr %1649, i32 0, i32 1
  %1651 = load float, ptr %1650, align 4, !tbaa !14
  %1652 = load ptr, ptr %19, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.complex, ptr %1652, i32 0, i32 1
  %1654 = load float, ptr %1653, align 4, !tbaa !14
  %1655 = load ptr, ptr %20, align 8, !tbaa !5
  %1656 = load i64, ptr %29, align 8, !tbaa !9
  %1657 = getelementptr inbounds %struct.complex, ptr %1655, i64 %1656
  %1658 = getelementptr inbounds %struct.complex, ptr %1657, i32 0, i32 0
  %1659 = load float, ptr %1658, align 4, !tbaa !11
  %1660 = fmul float %1654, %1659
  %1661 = call float @llvm.fmuladd.f32(float %1646, float %1651, float %1660)
  %1662 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1661, ptr %1662, align 4, !tbaa !14
  %1663 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1664 = load float, ptr %1663, align 4, !tbaa !11
  %1665 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1664, ptr %1665, align 4, !tbaa !11
  %1666 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1667 = load float, ptr %1666, align 4, !tbaa !14
  %1668 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1667, ptr %1668, align 4, !tbaa !14
  %1669 = load ptr, ptr %17, align 8, !tbaa !5
  %1670 = load i64, ptr %1669, align 8, !tbaa !9
  store i64 %1670, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1671

1671:                                             ; preds = %1756, %1618
  %1672 = load i64, ptr %37, align 8, !tbaa !9
  %1673 = load i64, ptr %29, align 8, !tbaa !9
  %1674 = icmp sle i64 %1672, %1673
  br i1 %1674, label %1675, label %1759

1675:                                             ; preds = %1671
  %1676 = load i64, ptr %37, align 8, !tbaa !9
  %1677 = load i64, ptr %38, align 8, !tbaa !9
  %1678 = load i64, ptr %26, align 8, !tbaa !9
  %1679 = mul nsw i64 %1677, %1678
  %1680 = add nsw i64 %1676, %1679
  store i64 %1680, ptr %30, align 8, !tbaa !9
  %1681 = load i64, ptr %37, align 8, !tbaa !9
  %1682 = load i64, ptr %38, align 8, !tbaa !9
  %1683 = load i64, ptr %26, align 8, !tbaa !9
  %1684 = mul nsw i64 %1682, %1683
  %1685 = add nsw i64 %1681, %1684
  store i64 %1685, ptr %31, align 8, !tbaa !9
  %1686 = load i64, ptr %37, align 8, !tbaa !9
  %1687 = load i64, ptr %39, align 8, !tbaa !9
  %1688 = load i64, ptr %26, align 8, !tbaa !9
  %1689 = mul nsw i64 %1687, %1688
  %1690 = add nsw i64 %1686, %1689
  store i64 %1690, ptr %32, align 8, !tbaa !9
  %1691 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1692 = load float, ptr %1691, align 4, !tbaa !11
  %1693 = load ptr, ptr %22, align 8, !tbaa !5
  %1694 = load i64, ptr %32, align 8, !tbaa !9
  %1695 = getelementptr inbounds %struct.complex, ptr %1693, i64 %1694
  %1696 = getelementptr inbounds %struct.complex, ptr %1695, i32 0, i32 0
  %1697 = load float, ptr %1696, align 4, !tbaa !11
  %1698 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1699 = load float, ptr %1698, align 4, !tbaa !14
  %1700 = load ptr, ptr %22, align 8, !tbaa !5
  %1701 = load i64, ptr %32, align 8, !tbaa !9
  %1702 = getelementptr inbounds %struct.complex, ptr %1700, i64 %1701
  %1703 = getelementptr inbounds %struct.complex, ptr %1702, i32 0, i32 1
  %1704 = load float, ptr %1703, align 4, !tbaa !14
  %1705 = fmul float %1699, %1704
  %1706 = fneg float %1705
  %1707 = call float @llvm.fmuladd.f32(float %1692, float %1697, float %1706)
  %1708 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1707, ptr %1708, align 4, !tbaa !11
  %1709 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1710 = load float, ptr %1709, align 4, !tbaa !11
  %1711 = load ptr, ptr %22, align 8, !tbaa !5
  %1712 = load i64, ptr %32, align 8, !tbaa !9
  %1713 = getelementptr inbounds %struct.complex, ptr %1711, i64 %1712
  %1714 = getelementptr inbounds %struct.complex, ptr %1713, i32 0, i32 1
  %1715 = load float, ptr %1714, align 4, !tbaa !14
  %1716 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1717 = load float, ptr %1716, align 4, !tbaa !14
  %1718 = load ptr, ptr %22, align 8, !tbaa !5
  %1719 = load i64, ptr %32, align 8, !tbaa !9
  %1720 = getelementptr inbounds %struct.complex, ptr %1718, i64 %1719
  %1721 = getelementptr inbounds %struct.complex, ptr %1720, i32 0, i32 0
  %1722 = load float, ptr %1721, align 4, !tbaa !11
  %1723 = fmul float %1717, %1722
  %1724 = call float @llvm.fmuladd.f32(float %1710, float %1715, float %1723)
  %1725 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1724, ptr %1725, align 4, !tbaa !14
  %1726 = load ptr, ptr %22, align 8, !tbaa !5
  %1727 = load i64, ptr %31, align 8, !tbaa !9
  %1728 = getelementptr inbounds %struct.complex, ptr %1726, i64 %1727
  %1729 = getelementptr inbounds %struct.complex, ptr %1728, i32 0, i32 0
  %1730 = load float, ptr %1729, align 4, !tbaa !11
  %1731 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1732 = load float, ptr %1731, align 4, !tbaa !11
  %1733 = fadd float %1730, %1732
  %1734 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1733, ptr %1734, align 4, !tbaa !11
  %1735 = load ptr, ptr %22, align 8, !tbaa !5
  %1736 = load i64, ptr %31, align 8, !tbaa !9
  %1737 = getelementptr inbounds %struct.complex, ptr %1735, i64 %1736
  %1738 = getelementptr inbounds %struct.complex, ptr %1737, i32 0, i32 1
  %1739 = load float, ptr %1738, align 4, !tbaa !14
  %1740 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1741 = load float, ptr %1740, align 4, !tbaa !14
  %1742 = fadd float %1739, %1741
  %1743 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1742, ptr %1743, align 4, !tbaa !14
  %1744 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1745 = load float, ptr %1744, align 4, !tbaa !11
  %1746 = load ptr, ptr %22, align 8, !tbaa !5
  %1747 = load i64, ptr %30, align 8, !tbaa !9
  %1748 = getelementptr inbounds %struct.complex, ptr %1746, i64 %1747
  %1749 = getelementptr inbounds %struct.complex, ptr %1748, i32 0, i32 0
  store float %1745, ptr %1749, align 4, !tbaa !11
  %1750 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1751 = load float, ptr %1750, align 4, !tbaa !14
  %1752 = load ptr, ptr %22, align 8, !tbaa !5
  %1753 = load i64, ptr %30, align 8, !tbaa !9
  %1754 = getelementptr inbounds %struct.complex, ptr %1752, i64 %1753
  %1755 = getelementptr inbounds %struct.complex, ptr %1754, i32 0, i32 1
  store float %1751, ptr %1755, align 4, !tbaa !14
  br label %1756

1756:                                             ; preds = %1675
  %1757 = load i64, ptr %37, align 8, !tbaa !9
  %1758 = add nsw i64 %1757, 1
  store i64 %1758, ptr %37, align 8, !tbaa !9
  br label %1671, !llvm.loop !33

1759:                                             ; preds = %1671
  br label %1760

1760:                                             ; preds = %1759, %1611
  br label %1761

1761:                                             ; preds = %1760
  %1762 = load i64, ptr %39, align 8, !tbaa !9
  %1763 = add nsw i64 %1762, 1
  store i64 %1763, ptr %39, align 8, !tbaa !9
  br label %1595, !llvm.loop !34

1764:                                             ; preds = %1595
  br label %1765

1765:                                             ; preds = %1764
  %1766 = load i64, ptr %38, align 8, !tbaa !9
  %1767 = add nsw i64 %1766, -1
  store i64 %1767, ptr %38, align 8, !tbaa !9
  br label %1463, !llvm.loop !35

1768:                                             ; preds = %1463
  br label %2081

1769:                                             ; preds = %1457
  %1770 = load ptr, ptr %18, align 8, !tbaa !5
  %1771 = load i64, ptr %1770, align 8, !tbaa !9
  store i64 %1771, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1772

1772:                                             ; preds = %2077, %1769
  %1773 = load i64, ptr %38, align 8, !tbaa !9
  %1774 = load i64, ptr %28, align 8, !tbaa !9
  %1775 = icmp sle i64 %1773, %1774
  br i1 %1775, label %1776, label %2080

1776:                                             ; preds = %1772
  %1777 = load ptr, ptr %19, align 8, !tbaa !5
  %1778 = getelementptr inbounds %struct.complex, ptr %1777, i32 0, i32 0
  %1779 = load float, ptr %1778, align 4, !tbaa !11
  %1780 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1779, ptr %1780, align 4, !tbaa !11
  %1781 = load ptr, ptr %19, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.complex, ptr %1781, i32 0, i32 1
  %1783 = load float, ptr %1782, align 4, !tbaa !14
  %1784 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1783, ptr %1784, align 4, !tbaa !14
  %1785 = load i64, ptr %46, align 8, !tbaa !9
  %1786 = icmp ne i64 %1785, 0
  br i1 %1786, label %1787, label %1834

1787:                                             ; preds = %1776
  %1788 = load i64, ptr %38, align 8, !tbaa !9
  %1789 = load i64, ptr %38, align 8, !tbaa !9
  %1790 = load i64, ptr %24, align 8, !tbaa !9
  %1791 = mul nsw i64 %1789, %1790
  %1792 = add nsw i64 %1788, %1791
  store i64 %1792, ptr %29, align 8, !tbaa !9
  %1793 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1794 = load float, ptr %1793, align 4, !tbaa !11
  %1795 = load ptr, ptr %20, align 8, !tbaa !5
  %1796 = load i64, ptr %29, align 8, !tbaa !9
  %1797 = getelementptr inbounds %struct.complex, ptr %1795, i64 %1796
  %1798 = getelementptr inbounds %struct.complex, ptr %1797, i32 0, i32 0
  %1799 = load float, ptr %1798, align 4, !tbaa !11
  %1800 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1801 = load float, ptr %1800, align 4, !tbaa !14
  %1802 = load ptr, ptr %20, align 8, !tbaa !5
  %1803 = load i64, ptr %29, align 8, !tbaa !9
  %1804 = getelementptr inbounds %struct.complex, ptr %1802, i64 %1803
  %1805 = getelementptr inbounds %struct.complex, ptr %1804, i32 0, i32 1
  %1806 = load float, ptr %1805, align 4, !tbaa !14
  %1807 = fmul float %1801, %1806
  %1808 = fneg float %1807
  %1809 = call float @llvm.fmuladd.f32(float %1794, float %1799, float %1808)
  %1810 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1809, ptr %1810, align 4, !tbaa !11
  %1811 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %1812 = load float, ptr %1811, align 4, !tbaa !11
  %1813 = load ptr, ptr %20, align 8, !tbaa !5
  %1814 = load i64, ptr %29, align 8, !tbaa !9
  %1815 = getelementptr inbounds %struct.complex, ptr %1813, i64 %1814
  %1816 = getelementptr inbounds %struct.complex, ptr %1815, i32 0, i32 1
  %1817 = load float, ptr %1816, align 4, !tbaa !14
  %1818 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %1819 = load float, ptr %1818, align 4, !tbaa !14
  %1820 = load ptr, ptr %20, align 8, !tbaa !5
  %1821 = load i64, ptr %29, align 8, !tbaa !9
  %1822 = getelementptr inbounds %struct.complex, ptr %1820, i64 %1821
  %1823 = getelementptr inbounds %struct.complex, ptr %1822, i32 0, i32 0
  %1824 = load float, ptr %1823, align 4, !tbaa !11
  %1825 = fmul float %1819, %1824
  %1826 = call float @llvm.fmuladd.f32(float %1812, float %1817, float %1825)
  %1827 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1826, ptr %1827, align 4, !tbaa !14
  %1828 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1829 = load float, ptr %1828, align 4, !tbaa !11
  %1830 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1829, ptr %1830, align 4, !tbaa !11
  %1831 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1832 = load float, ptr %1831, align 4, !tbaa !14
  %1833 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1832, ptr %1833, align 4, !tbaa !14
  br label %1834

1834:                                             ; preds = %1787, %1776
  %1835 = load ptr, ptr %17, align 8, !tbaa !5
  %1836 = load i64, ptr %1835, align 8, !tbaa !9
  store i64 %1836, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1837

1837:                                             ; preds = %1899, %1834
  %1838 = load i64, ptr %37, align 8, !tbaa !9
  %1839 = load i64, ptr %29, align 8, !tbaa !9
  %1840 = icmp sle i64 %1838, %1839
  br i1 %1840, label %1841, label %1902

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

1899:                                             ; preds = %1841
  %1900 = load i64, ptr %37, align 8, !tbaa !9
  %1901 = add nsw i64 %1900, 1
  store i64 %1901, ptr %37, align 8, !tbaa !9
  br label %1837, !llvm.loop !36

1902:                                             ; preds = %1837
  %1903 = load ptr, ptr %18, align 8, !tbaa !5
  %1904 = load i64, ptr %1903, align 8, !tbaa !9
  store i64 %1904, ptr %29, align 8, !tbaa !9
  %1905 = load i64, ptr %38, align 8, !tbaa !9
  %1906 = add nsw i64 %1905, 1
  store i64 %1906, ptr %39, align 8, !tbaa !9
  br label %1907

1907:                                             ; preds = %2073, %1902
  %1908 = load i64, ptr %39, align 8, !tbaa !9
  %1909 = load i64, ptr %29, align 8, !tbaa !9
  %1910 = icmp sle i64 %1908, %1909
  br i1 %1910, label %1911, label %2076

1911:                                             ; preds = %1907
  %1912 = load i64, ptr %39, align 8, !tbaa !9
  %1913 = load i64, ptr %38, align 8, !tbaa !9
  %1914 = load i64, ptr %24, align 8, !tbaa !9
  %1915 = mul nsw i64 %1913, %1914
  %1916 = add nsw i64 %1912, %1915
  store i64 %1916, ptr %30, align 8, !tbaa !9
  %1917 = load ptr, ptr %20, align 8, !tbaa !5
  %1918 = load i64, ptr %30, align 8, !tbaa !9
  %1919 = getelementptr inbounds %struct.complex, ptr %1917, i64 %1918
  %1920 = getelementptr inbounds %struct.complex, ptr %1919, i32 0, i32 0
  %1921 = load float, ptr %1920, align 4, !tbaa !11
  %1922 = fcmp une float %1921, 0.000000e+00
  br i1 %1922, label %1930, label %1923

1923:                                             ; preds = %1911
  %1924 = load ptr, ptr %20, align 8, !tbaa !5
  %1925 = load i64, ptr %30, align 8, !tbaa !9
  %1926 = getelementptr inbounds %struct.complex, ptr %1924, i64 %1925
  %1927 = getelementptr inbounds %struct.complex, ptr %1926, i32 0, i32 1
  %1928 = load float, ptr %1927, align 4, !tbaa !14
  %1929 = fcmp une float %1928, 0.000000e+00
  br i1 %1929, label %1930, label %2072

1930:                                             ; preds = %1923, %1911
  %1931 = load i64, ptr %39, align 8, !tbaa !9
  %1932 = load i64, ptr %38, align 8, !tbaa !9
  %1933 = load i64, ptr %24, align 8, !tbaa !9
  %1934 = mul nsw i64 %1932, %1933
  %1935 = add nsw i64 %1931, %1934
  store i64 %1935, ptr %30, align 8, !tbaa !9
  %1936 = load ptr, ptr %19, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.complex, ptr %1936, i32 0, i32 0
  %1938 = load float, ptr %1937, align 4, !tbaa !11
  %1939 = load ptr, ptr %20, align 8, !tbaa !5
  %1940 = load i64, ptr %30, align 8, !tbaa !9
  %1941 = getelementptr inbounds %struct.complex, ptr %1939, i64 %1940
  %1942 = getelementptr inbounds %struct.complex, ptr %1941, i32 0, i32 0
  %1943 = load float, ptr %1942, align 4, !tbaa !11
  %1944 = load ptr, ptr %19, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.complex, ptr %1944, i32 0, i32 1
  %1946 = load float, ptr %1945, align 4, !tbaa !14
  %1947 = load ptr, ptr %20, align 8, !tbaa !5
  %1948 = load i64, ptr %30, align 8, !tbaa !9
  %1949 = getelementptr inbounds %struct.complex, ptr %1947, i64 %1948
  %1950 = getelementptr inbounds %struct.complex, ptr %1949, i32 0, i32 1
  %1951 = load float, ptr %1950, align 4, !tbaa !14
  %1952 = fmul float %1946, %1951
  %1953 = fneg float %1952
  %1954 = call float @llvm.fmuladd.f32(float %1938, float %1943, float %1953)
  %1955 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1954, ptr %1955, align 4, !tbaa !11
  %1956 = load ptr, ptr %19, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.complex, ptr %1956, i32 0, i32 0
  %1958 = load float, ptr %1957, align 4, !tbaa !11
  %1959 = load ptr, ptr %20, align 8, !tbaa !5
  %1960 = load i64, ptr %30, align 8, !tbaa !9
  %1961 = getelementptr inbounds %struct.complex, ptr %1959, i64 %1960
  %1962 = getelementptr inbounds %struct.complex, ptr %1961, i32 0, i32 1
  %1963 = load float, ptr %1962, align 4, !tbaa !14
  %1964 = load ptr, ptr %19, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.complex, ptr %1964, i32 0, i32 1
  %1966 = load float, ptr %1965, align 4, !tbaa !14
  %1967 = load ptr, ptr %20, align 8, !tbaa !5
  %1968 = load i64, ptr %30, align 8, !tbaa !9
  %1969 = getelementptr inbounds %struct.complex, ptr %1967, i64 %1968
  %1970 = getelementptr inbounds %struct.complex, ptr %1969, i32 0, i32 0
  %1971 = load float, ptr %1970, align 4, !tbaa !11
  %1972 = fmul float %1966, %1971
  %1973 = call float @llvm.fmuladd.f32(float %1958, float %1963, float %1972)
  %1974 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1973, ptr %1974, align 4, !tbaa !14
  %1975 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1976 = load float, ptr %1975, align 4, !tbaa !11
  %1977 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %1976, ptr %1977, align 4, !tbaa !11
  %1978 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1979 = load float, ptr %1978, align 4, !tbaa !14
  %1980 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %1979, ptr %1980, align 4, !tbaa !14
  %1981 = load ptr, ptr %17, align 8, !tbaa !5
  %1982 = load i64, ptr %1981, align 8, !tbaa !9
  store i64 %1982, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1983

1983:                                             ; preds = %2068, %1930
  %1984 = load i64, ptr %37, align 8, !tbaa !9
  %1985 = load i64, ptr %30, align 8, !tbaa !9
  %1986 = icmp sle i64 %1984, %1985
  br i1 %1986, label %1987, label %2071

1987:                                             ; preds = %1983
  %1988 = load i64, ptr %37, align 8, !tbaa !9
  %1989 = load i64, ptr %38, align 8, !tbaa !9
  %1990 = load i64, ptr %26, align 8, !tbaa !9
  %1991 = mul nsw i64 %1989, %1990
  %1992 = add nsw i64 %1988, %1991
  store i64 %1992, ptr %31, align 8, !tbaa !9
  %1993 = load i64, ptr %37, align 8, !tbaa !9
  %1994 = load i64, ptr %38, align 8, !tbaa !9
  %1995 = load i64, ptr %26, align 8, !tbaa !9
  %1996 = mul nsw i64 %1994, %1995
  %1997 = add nsw i64 %1993, %1996
  store i64 %1997, ptr %32, align 8, !tbaa !9
  %1998 = load i64, ptr %37, align 8, !tbaa !9
  %1999 = load i64, ptr %39, align 8, !tbaa !9
  %2000 = load i64, ptr %26, align 8, !tbaa !9
  %2001 = mul nsw i64 %1999, %2000
  %2002 = add nsw i64 %1998, %2001
  store i64 %2002, ptr %33, align 8, !tbaa !9
  %2003 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2004 = load float, ptr %2003, align 4, !tbaa !11
  %2005 = load ptr, ptr %22, align 8, !tbaa !5
  %2006 = load i64, ptr %33, align 8, !tbaa !9
  %2007 = getelementptr inbounds %struct.complex, ptr %2005, i64 %2006
  %2008 = getelementptr inbounds %struct.complex, ptr %2007, i32 0, i32 0
  %2009 = load float, ptr %2008, align 4, !tbaa !11
  %2010 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2011 = load float, ptr %2010, align 4, !tbaa !14
  %2012 = load ptr, ptr %22, align 8, !tbaa !5
  %2013 = load i64, ptr %33, align 8, !tbaa !9
  %2014 = getelementptr inbounds %struct.complex, ptr %2012, i64 %2013
  %2015 = getelementptr inbounds %struct.complex, ptr %2014, i32 0, i32 1
  %2016 = load float, ptr %2015, align 4, !tbaa !14
  %2017 = fmul float %2011, %2016
  %2018 = fneg float %2017
  %2019 = call float @llvm.fmuladd.f32(float %2004, float %2009, float %2018)
  %2020 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2019, ptr %2020, align 4, !tbaa !11
  %2021 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2022 = load float, ptr %2021, align 4, !tbaa !11
  %2023 = load ptr, ptr %22, align 8, !tbaa !5
  %2024 = load i64, ptr %33, align 8, !tbaa !9
  %2025 = getelementptr inbounds %struct.complex, ptr %2023, i64 %2024
  %2026 = getelementptr inbounds %struct.complex, ptr %2025, i32 0, i32 1
  %2027 = load float, ptr %2026, align 4, !tbaa !14
  %2028 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2029 = load float, ptr %2028, align 4, !tbaa !14
  %2030 = load ptr, ptr %22, align 8, !tbaa !5
  %2031 = load i64, ptr %33, align 8, !tbaa !9
  %2032 = getelementptr inbounds %struct.complex, ptr %2030, i64 %2031
  %2033 = getelementptr inbounds %struct.complex, ptr %2032, i32 0, i32 0
  %2034 = load float, ptr %2033, align 4, !tbaa !11
  %2035 = fmul float %2029, %2034
  %2036 = call float @llvm.fmuladd.f32(float %2022, float %2027, float %2035)
  %2037 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2036, ptr %2037, align 4, !tbaa !14
  %2038 = load ptr, ptr %22, align 8, !tbaa !5
  %2039 = load i64, ptr %32, align 8, !tbaa !9
  %2040 = getelementptr inbounds %struct.complex, ptr %2038, i64 %2039
  %2041 = getelementptr inbounds %struct.complex, ptr %2040, i32 0, i32 0
  %2042 = load float, ptr %2041, align 4, !tbaa !11
  %2043 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2044 = load float, ptr %2043, align 4, !tbaa !11
  %2045 = fadd float %2042, %2044
  %2046 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2045, ptr %2046, align 4, !tbaa !11
  %2047 = load ptr, ptr %22, align 8, !tbaa !5
  %2048 = load i64, ptr %32, align 8, !tbaa !9
  %2049 = getelementptr inbounds %struct.complex, ptr %2047, i64 %2048
  %2050 = getelementptr inbounds %struct.complex, ptr %2049, i32 0, i32 1
  %2051 = load float, ptr %2050, align 4, !tbaa !14
  %2052 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2053 = load float, ptr %2052, align 4, !tbaa !14
  %2054 = fadd float %2051, %2053
  %2055 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2054, ptr %2055, align 4, !tbaa !14
  %2056 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2057 = load float, ptr %2056, align 4, !tbaa !11
  %2058 = load ptr, ptr %22, align 8, !tbaa !5
  %2059 = load i64, ptr %31, align 8, !tbaa !9
  %2060 = getelementptr inbounds %struct.complex, ptr %2058, i64 %2059
  %2061 = getelementptr inbounds %struct.complex, ptr %2060, i32 0, i32 0
  store float %2057, ptr %2061, align 4, !tbaa !11
  %2062 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2063 = load float, ptr %2062, align 4, !tbaa !14
  %2064 = load ptr, ptr %22, align 8, !tbaa !5
  %2065 = load i64, ptr %31, align 8, !tbaa !9
  %2066 = getelementptr inbounds %struct.complex, ptr %2064, i64 %2065
  %2067 = getelementptr inbounds %struct.complex, ptr %2066, i32 0, i32 1
  store float %2063, ptr %2067, align 4, !tbaa !14
  br label %2068

2068:                                             ; preds = %1987
  %2069 = load i64, ptr %37, align 8, !tbaa !9
  %2070 = add nsw i64 %2069, 1
  store i64 %2070, ptr %37, align 8, !tbaa !9
  br label %1983, !llvm.loop !37

2071:                                             ; preds = %1983
  br label %2072

2072:                                             ; preds = %2071, %1923
  br label %2073

2073:                                             ; preds = %2072
  %2074 = load i64, ptr %39, align 8, !tbaa !9
  %2075 = add nsw i64 %2074, 1
  store i64 %2075, ptr %39, align 8, !tbaa !9
  br label %1907, !llvm.loop !38

2076:                                             ; preds = %1907
  br label %2077

2077:                                             ; preds = %2076
  %2078 = load i64, ptr %38, align 8, !tbaa !9
  %2079 = add nsw i64 %2078, 1
  store i64 %2079, ptr %38, align 8, !tbaa !9
  br label %1772, !llvm.loop !39

2080:                                             ; preds = %1772
  br label %2081

2081:                                             ; preds = %2080, %1768
  br label %2897

2082:                                             ; preds = %1453
  %2083 = load i64, ptr %44, align 8, !tbaa !9
  %2084 = icmp ne i64 %2083, 0
  br i1 %2084, label %2085, label %2490

2085:                                             ; preds = %2082
  %2086 = load ptr, ptr %18, align 8, !tbaa !5
  %2087 = load i64, ptr %2086, align 8, !tbaa !9
  store i64 %2087, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %2088

2088:                                             ; preds = %2486, %2085
  %2089 = load i64, ptr %39, align 8, !tbaa !9
  %2090 = load i64, ptr %28, align 8, !tbaa !9
  %2091 = icmp sle i64 %2089, %2090
  br i1 %2091, label %2092, label %2489

2092:                                             ; preds = %2088
  %2093 = load i64, ptr %39, align 8, !tbaa !9
  %2094 = sub nsw i64 %2093, 1
  store i64 %2094, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2095

2095:                                             ; preds = %2306, %2092
  %2096 = load i64, ptr %38, align 8, !tbaa !9
  %2097 = load i64, ptr %29, align 8, !tbaa !9
  %2098 = icmp sle i64 %2096, %2097
  br i1 %2098, label %2099, label %2309

2099:                                             ; preds = %2095
  %2100 = load i64, ptr %38, align 8, !tbaa !9
  %2101 = load i64, ptr %39, align 8, !tbaa !9
  %2102 = load i64, ptr %24, align 8, !tbaa !9
  %2103 = mul nsw i64 %2101, %2102
  %2104 = add nsw i64 %2100, %2103
  store i64 %2104, ptr %30, align 8, !tbaa !9
  %2105 = load ptr, ptr %20, align 8, !tbaa !5
  %2106 = load i64, ptr %30, align 8, !tbaa !9
  %2107 = getelementptr inbounds %struct.complex, ptr %2105, i64 %2106
  %2108 = getelementptr inbounds %struct.complex, ptr %2107, i32 0, i32 0
  %2109 = load float, ptr %2108, align 4, !tbaa !11
  %2110 = fcmp une float %2109, 0.000000e+00
  br i1 %2110, label %2118, label %2111

2111:                                             ; preds = %2099
  %2112 = load ptr, ptr %20, align 8, !tbaa !5
  %2113 = load i64, ptr %30, align 8, !tbaa !9
  %2114 = getelementptr inbounds %struct.complex, ptr %2112, i64 %2113
  %2115 = getelementptr inbounds %struct.complex, ptr %2114, i32 0, i32 1
  %2116 = load float, ptr %2115, align 4, !tbaa !14
  %2117 = fcmp une float %2116, 0.000000e+00
  br i1 %2117, label %2118, label %2305

2118:                                             ; preds = %2111, %2099
  %2119 = load i64, ptr %45, align 8, !tbaa !9
  %2120 = icmp ne i64 %2119, 0
  br i1 %2120, label %2121, label %2172

2121:                                             ; preds = %2118
  %2122 = load i64, ptr %38, align 8, !tbaa !9
  %2123 = load i64, ptr %39, align 8, !tbaa !9
  %2124 = load i64, ptr %24, align 8, !tbaa !9
  %2125 = mul nsw i64 %2123, %2124
  %2126 = add nsw i64 %2122, %2125
  store i64 %2126, ptr %30, align 8, !tbaa !9
  %2127 = load ptr, ptr %19, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.complex, ptr %2127, i32 0, i32 0
  %2129 = load float, ptr %2128, align 4, !tbaa !11
  %2130 = load ptr, ptr %20, align 8, !tbaa !5
  %2131 = load i64, ptr %30, align 8, !tbaa !9
  %2132 = getelementptr inbounds %struct.complex, ptr %2130, i64 %2131
  %2133 = getelementptr inbounds %struct.complex, ptr %2132, i32 0, i32 0
  %2134 = load float, ptr %2133, align 4, !tbaa !11
  %2135 = load ptr, ptr %19, align 8, !tbaa !5
  %2136 = getelementptr inbounds %struct.complex, ptr %2135, i32 0, i32 1
  %2137 = load float, ptr %2136, align 4, !tbaa !14
  %2138 = load ptr, ptr %20, align 8, !tbaa !5
  %2139 = load i64, ptr %30, align 8, !tbaa !9
  %2140 = getelementptr inbounds %struct.complex, ptr %2138, i64 %2139
  %2141 = getelementptr inbounds %struct.complex, ptr %2140, i32 0, i32 1
  %2142 = load float, ptr %2141, align 4, !tbaa !14
  %2143 = fmul float %2137, %2142
  %2144 = fneg float %2143
  %2145 = call float @llvm.fmuladd.f32(float %2129, float %2134, float %2144)
  %2146 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2145, ptr %2146, align 4, !tbaa !11
  %2147 = load ptr, ptr %19, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct.complex, ptr %2147, i32 0, i32 0
  %2149 = load float, ptr %2148, align 4, !tbaa !11
  %2150 = load ptr, ptr %20, align 8, !tbaa !5
  %2151 = load i64, ptr %30, align 8, !tbaa !9
  %2152 = getelementptr inbounds %struct.complex, ptr %2150, i64 %2151
  %2153 = getelementptr inbounds %struct.complex, ptr %2152, i32 0, i32 1
  %2154 = load float, ptr %2153, align 4, !tbaa !14
  %2155 = load ptr, ptr %19, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.complex, ptr %2155, i32 0, i32 1
  %2157 = load float, ptr %2156, align 4, !tbaa !14
  %2158 = load ptr, ptr %20, align 8, !tbaa !5
  %2159 = load i64, ptr %30, align 8, !tbaa !9
  %2160 = getelementptr inbounds %struct.complex, ptr %2158, i64 %2159
  %2161 = getelementptr inbounds %struct.complex, ptr %2160, i32 0, i32 0
  %2162 = load float, ptr %2161, align 4, !tbaa !11
  %2163 = fmul float %2157, %2162
  %2164 = call float @llvm.fmuladd.f32(float %2149, float %2154, float %2163)
  %2165 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2164, ptr %2165, align 4, !tbaa !14
  %2166 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2167 = load float, ptr %2166, align 4, !tbaa !11
  %2168 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2167, ptr %2168, align 4, !tbaa !11
  %2169 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2170 = load float, ptr %2169, align 4, !tbaa !14
  %2171 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2170, ptr %2171, align 4, !tbaa !14
  br label %2213

2172:                                             ; preds = %2118
  %2173 = load ptr, ptr %20, align 8, !tbaa !5
  %2174 = load i64, ptr %38, align 8, !tbaa !9
  %2175 = load i64, ptr %39, align 8, !tbaa !9
  %2176 = load i64, ptr %24, align 8, !tbaa !9
  %2177 = mul nsw i64 %2175, %2176
  %2178 = add nsw i64 %2174, %2177
  %2179 = getelementptr inbounds %struct.complex, ptr %2173, i64 %2178
  call void @r_cnjg(ptr noundef %35, ptr noundef %2179)
  %2180 = load ptr, ptr %19, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.complex, ptr %2180, i32 0, i32 0
  %2182 = load float, ptr %2181, align 4, !tbaa !11
  %2183 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2184 = load float, ptr %2183, align 4, !tbaa !11
  %2185 = load ptr, ptr %19, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.complex, ptr %2185, i32 0, i32 1
  %2187 = load float, ptr %2186, align 4, !tbaa !14
  %2188 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2189 = load float, ptr %2188, align 4, !tbaa !14
  %2190 = fmul float %2187, %2189
  %2191 = fneg float %2190
  %2192 = call float @llvm.fmuladd.f32(float %2182, float %2184, float %2191)
  %2193 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2192, ptr %2193, align 4, !tbaa !11
  %2194 = load ptr, ptr %19, align 8, !tbaa !5
  %2195 = getelementptr inbounds %struct.complex, ptr %2194, i32 0, i32 0
  %2196 = load float, ptr %2195, align 4, !tbaa !11
  %2197 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2198 = load float, ptr %2197, align 4, !tbaa !14
  %2199 = load ptr, ptr %19, align 8, !tbaa !5
  %2200 = getelementptr inbounds %struct.complex, ptr %2199, i32 0, i32 1
  %2201 = load float, ptr %2200, align 4, !tbaa !14
  %2202 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2203 = load float, ptr %2202, align 4, !tbaa !11
  %2204 = fmul float %2201, %2203
  %2205 = call float @llvm.fmuladd.f32(float %2196, float %2198, float %2204)
  %2206 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2205, ptr %2206, align 4, !tbaa !14
  %2207 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2208 = load float, ptr %2207, align 4, !tbaa !11
  %2209 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2208, ptr %2209, align 4, !tbaa !11
  %2210 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2211 = load float, ptr %2210, align 4, !tbaa !14
  %2212 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2211, ptr %2212, align 4, !tbaa !14
  br label %2213

2213:                                             ; preds = %2172, %2121
  %2214 = load ptr, ptr %17, align 8, !tbaa !5
  %2215 = load i64, ptr %2214, align 8, !tbaa !9
  store i64 %2215, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %2216

2216:                                             ; preds = %2301, %2213
  %2217 = load i64, ptr %37, align 8, !tbaa !9
  %2218 = load i64, ptr %30, align 8, !tbaa !9
  %2219 = icmp sle i64 %2217, %2218
  br i1 %2219, label %2220, label %2304

2220:                                             ; preds = %2216
  %2221 = load i64, ptr %37, align 8, !tbaa !9
  %2222 = load i64, ptr %38, align 8, !tbaa !9
  %2223 = load i64, ptr %26, align 8, !tbaa !9
  %2224 = mul nsw i64 %2222, %2223
  %2225 = add nsw i64 %2221, %2224
  store i64 %2225, ptr %31, align 8, !tbaa !9
  %2226 = load i64, ptr %37, align 8, !tbaa !9
  %2227 = load i64, ptr %38, align 8, !tbaa !9
  %2228 = load i64, ptr %26, align 8, !tbaa !9
  %2229 = mul nsw i64 %2227, %2228
  %2230 = add nsw i64 %2226, %2229
  store i64 %2230, ptr %32, align 8, !tbaa !9
  %2231 = load i64, ptr %37, align 8, !tbaa !9
  %2232 = load i64, ptr %39, align 8, !tbaa !9
  %2233 = load i64, ptr %26, align 8, !tbaa !9
  %2234 = mul nsw i64 %2232, %2233
  %2235 = add nsw i64 %2231, %2234
  store i64 %2235, ptr %33, align 8, !tbaa !9
  %2236 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2237 = load float, ptr %2236, align 4, !tbaa !11
  %2238 = load ptr, ptr %22, align 8, !tbaa !5
  %2239 = load i64, ptr %33, align 8, !tbaa !9
  %2240 = getelementptr inbounds %struct.complex, ptr %2238, i64 %2239
  %2241 = getelementptr inbounds %struct.complex, ptr %2240, i32 0, i32 0
  %2242 = load float, ptr %2241, align 4, !tbaa !11
  %2243 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2244 = load float, ptr %2243, align 4, !tbaa !14
  %2245 = load ptr, ptr %22, align 8, !tbaa !5
  %2246 = load i64, ptr %33, align 8, !tbaa !9
  %2247 = getelementptr inbounds %struct.complex, ptr %2245, i64 %2246
  %2248 = getelementptr inbounds %struct.complex, ptr %2247, i32 0, i32 1
  %2249 = load float, ptr %2248, align 4, !tbaa !14
  %2250 = fmul float %2244, %2249
  %2251 = fneg float %2250
  %2252 = call float @llvm.fmuladd.f32(float %2237, float %2242, float %2251)
  %2253 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2252, ptr %2253, align 4, !tbaa !11
  %2254 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2255 = load float, ptr %2254, align 4, !tbaa !11
  %2256 = load ptr, ptr %22, align 8, !tbaa !5
  %2257 = load i64, ptr %33, align 8, !tbaa !9
  %2258 = getelementptr inbounds %struct.complex, ptr %2256, i64 %2257
  %2259 = getelementptr inbounds %struct.complex, ptr %2258, i32 0, i32 1
  %2260 = load float, ptr %2259, align 4, !tbaa !14
  %2261 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2262 = load float, ptr %2261, align 4, !tbaa !14
  %2263 = load ptr, ptr %22, align 8, !tbaa !5
  %2264 = load i64, ptr %33, align 8, !tbaa !9
  %2265 = getelementptr inbounds %struct.complex, ptr %2263, i64 %2264
  %2266 = getelementptr inbounds %struct.complex, ptr %2265, i32 0, i32 0
  %2267 = load float, ptr %2266, align 4, !tbaa !11
  %2268 = fmul float %2262, %2267
  %2269 = call float @llvm.fmuladd.f32(float %2255, float %2260, float %2268)
  %2270 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2269, ptr %2270, align 4, !tbaa !14
  %2271 = load ptr, ptr %22, align 8, !tbaa !5
  %2272 = load i64, ptr %32, align 8, !tbaa !9
  %2273 = getelementptr inbounds %struct.complex, ptr %2271, i64 %2272
  %2274 = getelementptr inbounds %struct.complex, ptr %2273, i32 0, i32 0
  %2275 = load float, ptr %2274, align 4, !tbaa !11
  %2276 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2277 = load float, ptr %2276, align 4, !tbaa !11
  %2278 = fadd float %2275, %2277
  %2279 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2278, ptr %2279, align 4, !tbaa !11
  %2280 = load ptr, ptr %22, align 8, !tbaa !5
  %2281 = load i64, ptr %32, align 8, !tbaa !9
  %2282 = getelementptr inbounds %struct.complex, ptr %2280, i64 %2281
  %2283 = getelementptr inbounds %struct.complex, ptr %2282, i32 0, i32 1
  %2284 = load float, ptr %2283, align 4, !tbaa !14
  %2285 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2286 = load float, ptr %2285, align 4, !tbaa !14
  %2287 = fadd float %2284, %2286
  %2288 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2287, ptr %2288, align 4, !tbaa !14
  %2289 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2290 = load float, ptr %2289, align 4, !tbaa !11
  %2291 = load ptr, ptr %22, align 8, !tbaa !5
  %2292 = load i64, ptr %31, align 8, !tbaa !9
  %2293 = getelementptr inbounds %struct.complex, ptr %2291, i64 %2292
  %2294 = getelementptr inbounds %struct.complex, ptr %2293, i32 0, i32 0
  store float %2290, ptr %2294, align 4, !tbaa !11
  %2295 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2296 = load float, ptr %2295, align 4, !tbaa !14
  %2297 = load ptr, ptr %22, align 8, !tbaa !5
  %2298 = load i64, ptr %31, align 8, !tbaa !9
  %2299 = getelementptr inbounds %struct.complex, ptr %2297, i64 %2298
  %2300 = getelementptr inbounds %struct.complex, ptr %2299, i32 0, i32 1
  store float %2296, ptr %2300, align 4, !tbaa !14
  br label %2301

2301:                                             ; preds = %2220
  %2302 = load i64, ptr %37, align 8, !tbaa !9
  %2303 = add nsw i64 %2302, 1
  store i64 %2303, ptr %37, align 8, !tbaa !9
  br label %2216, !llvm.loop !40

2304:                                             ; preds = %2216
  br label %2305

2305:                                             ; preds = %2304, %2111
  br label %2306

2306:                                             ; preds = %2305
  %2307 = load i64, ptr %38, align 8, !tbaa !9
  %2308 = add nsw i64 %2307, 1
  store i64 %2308, ptr %38, align 8, !tbaa !9
  br label %2095, !llvm.loop !41

2309:                                             ; preds = %2095
  %2310 = load ptr, ptr %19, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.complex, ptr %2310, i32 0, i32 0
  %2312 = load float, ptr %2311, align 4, !tbaa !11
  %2313 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2312, ptr %2313, align 4, !tbaa !11
  %2314 = load ptr, ptr %19, align 8, !tbaa !5
  %2315 = getelementptr inbounds %struct.complex, ptr %2314, i32 0, i32 1
  %2316 = load float, ptr %2315, align 4, !tbaa !14
  %2317 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2316, ptr %2317, align 4, !tbaa !14
  %2318 = load i64, ptr %46, align 8, !tbaa !9
  %2319 = icmp ne i64 %2318, 0
  br i1 %2319, label %2320, label %2408

2320:                                             ; preds = %2309
  %2321 = load i64, ptr %45, align 8, !tbaa !9
  %2322 = icmp ne i64 %2321, 0
  br i1 %2322, label %2323, label %2370

2323:                                             ; preds = %2320
  %2324 = load i64, ptr %39, align 8, !tbaa !9
  %2325 = load i64, ptr %39, align 8, !tbaa !9
  %2326 = load i64, ptr %24, align 8, !tbaa !9
  %2327 = mul nsw i64 %2325, %2326
  %2328 = add nsw i64 %2324, %2327
  store i64 %2328, ptr %29, align 8, !tbaa !9
  %2329 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2330 = load float, ptr %2329, align 4, !tbaa !11
  %2331 = load ptr, ptr %20, align 8, !tbaa !5
  %2332 = load i64, ptr %29, align 8, !tbaa !9
  %2333 = getelementptr inbounds %struct.complex, ptr %2331, i64 %2332
  %2334 = getelementptr inbounds %struct.complex, ptr %2333, i32 0, i32 0
  %2335 = load float, ptr %2334, align 4, !tbaa !11
  %2336 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2337 = load float, ptr %2336, align 4, !tbaa !14
  %2338 = load ptr, ptr %20, align 8, !tbaa !5
  %2339 = load i64, ptr %29, align 8, !tbaa !9
  %2340 = getelementptr inbounds %struct.complex, ptr %2338, i64 %2339
  %2341 = getelementptr inbounds %struct.complex, ptr %2340, i32 0, i32 1
  %2342 = load float, ptr %2341, align 4, !tbaa !14
  %2343 = fmul float %2337, %2342
  %2344 = fneg float %2343
  %2345 = call float @llvm.fmuladd.f32(float %2330, float %2335, float %2344)
  %2346 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2345, ptr %2346, align 4, !tbaa !11
  %2347 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2348 = load float, ptr %2347, align 4, !tbaa !11
  %2349 = load ptr, ptr %20, align 8, !tbaa !5
  %2350 = load i64, ptr %29, align 8, !tbaa !9
  %2351 = getelementptr inbounds %struct.complex, ptr %2349, i64 %2350
  %2352 = getelementptr inbounds %struct.complex, ptr %2351, i32 0, i32 1
  %2353 = load float, ptr %2352, align 4, !tbaa !14
  %2354 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2355 = load float, ptr %2354, align 4, !tbaa !14
  %2356 = load ptr, ptr %20, align 8, !tbaa !5
  %2357 = load i64, ptr %29, align 8, !tbaa !9
  %2358 = getelementptr inbounds %struct.complex, ptr %2356, i64 %2357
  %2359 = getelementptr inbounds %struct.complex, ptr %2358, i32 0, i32 0
  %2360 = load float, ptr %2359, align 4, !tbaa !11
  %2361 = fmul float %2355, %2360
  %2362 = call float @llvm.fmuladd.f32(float %2348, float %2353, float %2361)
  %2363 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2362, ptr %2363, align 4, !tbaa !14
  %2364 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2365 = load float, ptr %2364, align 4, !tbaa !11
  %2366 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2365, ptr %2366, align 4, !tbaa !11
  %2367 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2368 = load float, ptr %2367, align 4, !tbaa !14
  %2369 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2368, ptr %2369, align 4, !tbaa !14
  br label %2407

2370:                                             ; preds = %2320
  %2371 = load ptr, ptr %20, align 8, !tbaa !5
  %2372 = load i64, ptr %39, align 8, !tbaa !9
  %2373 = load i64, ptr %39, align 8, !tbaa !9
  %2374 = load i64, ptr %24, align 8, !tbaa !9
  %2375 = mul nsw i64 %2373, %2374
  %2376 = add nsw i64 %2372, %2375
  %2377 = getelementptr inbounds %struct.complex, ptr %2371, i64 %2376
  call void @r_cnjg(ptr noundef %35, ptr noundef %2377)
  %2378 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2379 = load float, ptr %2378, align 4, !tbaa !11
  %2380 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2381 = load float, ptr %2380, align 4, !tbaa !11
  %2382 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2383 = load float, ptr %2382, align 4, !tbaa !14
  %2384 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2385 = load float, ptr %2384, align 4, !tbaa !14
  %2386 = fmul float %2383, %2385
  %2387 = fneg float %2386
  %2388 = call float @llvm.fmuladd.f32(float %2379, float %2381, float %2387)
  %2389 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2388, ptr %2389, align 4, !tbaa !11
  %2390 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2391 = load float, ptr %2390, align 4, !tbaa !11
  %2392 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2393 = load float, ptr %2392, align 4, !tbaa !14
  %2394 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2395 = load float, ptr %2394, align 4, !tbaa !14
  %2396 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2397 = load float, ptr %2396, align 4, !tbaa !11
  %2398 = fmul float %2395, %2397
  %2399 = call float @llvm.fmuladd.f32(float %2391, float %2393, float %2398)
  %2400 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2399, ptr %2400, align 4, !tbaa !14
  %2401 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2402 = load float, ptr %2401, align 4, !tbaa !11
  %2403 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2402, ptr %2403, align 4, !tbaa !11
  %2404 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2405 = load float, ptr %2404, align 4, !tbaa !14
  %2406 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2405, ptr %2406, align 4, !tbaa !14
  br label %2407

2407:                                             ; preds = %2370, %2323
  br label %2408

2408:                                             ; preds = %2407, %2309
  %2409 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2410 = load float, ptr %2409, align 4, !tbaa !11
  %2411 = fcmp une float %2410, 1.000000e+00
  br i1 %2411, label %2416, label %2412

2412:                                             ; preds = %2408
  %2413 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2414 = load float, ptr %2413, align 4, !tbaa !14
  %2415 = fcmp une float %2414, 0.000000e+00
  br i1 %2415, label %2416, label %2485

2416:                                             ; preds = %2412, %2408
  %2417 = load ptr, ptr %17, align 8, !tbaa !5
  %2418 = load i64, ptr %2417, align 8, !tbaa !9
  store i64 %2418, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %2419

2419:                                             ; preds = %2481, %2416
  %2420 = load i64, ptr %37, align 8, !tbaa !9
  %2421 = load i64, ptr %29, align 8, !tbaa !9
  %2422 = icmp sle i64 %2420, %2421
  br i1 %2422, label %2423, label %2484

2423:                                             ; preds = %2419
  %2424 = load i64, ptr %37, align 8, !tbaa !9
  %2425 = load i64, ptr %39, align 8, !tbaa !9
  %2426 = load i64, ptr %26, align 8, !tbaa !9
  %2427 = mul nsw i64 %2425, %2426
  %2428 = add nsw i64 %2424, %2427
  store i64 %2428, ptr %30, align 8, !tbaa !9
  %2429 = load i64, ptr %37, align 8, !tbaa !9
  %2430 = load i64, ptr %39, align 8, !tbaa !9
  %2431 = load i64, ptr %26, align 8, !tbaa !9
  %2432 = mul nsw i64 %2430, %2431
  %2433 = add nsw i64 %2429, %2432
  store i64 %2433, ptr %31, align 8, !tbaa !9
  %2434 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2435 = load float, ptr %2434, align 4, !tbaa !11
  %2436 = load ptr, ptr %22, align 8, !tbaa !5
  %2437 = load i64, ptr %31, align 8, !tbaa !9
  %2438 = getelementptr inbounds %struct.complex, ptr %2436, i64 %2437
  %2439 = getelementptr inbounds %struct.complex, ptr %2438, i32 0, i32 0
  %2440 = load float, ptr %2439, align 4, !tbaa !11
  %2441 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2442 = load float, ptr %2441, align 4, !tbaa !14
  %2443 = load ptr, ptr %22, align 8, !tbaa !5
  %2444 = load i64, ptr %31, align 8, !tbaa !9
  %2445 = getelementptr inbounds %struct.complex, ptr %2443, i64 %2444
  %2446 = getelementptr inbounds %struct.complex, ptr %2445, i32 0, i32 1
  %2447 = load float, ptr %2446, align 4, !tbaa !14
  %2448 = fmul float %2442, %2447
  %2449 = fneg float %2448
  %2450 = call float @llvm.fmuladd.f32(float %2435, float %2440, float %2449)
  %2451 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2450, ptr %2451, align 4, !tbaa !11
  %2452 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2453 = load float, ptr %2452, align 4, !tbaa !11
  %2454 = load ptr, ptr %22, align 8, !tbaa !5
  %2455 = load i64, ptr %31, align 8, !tbaa !9
  %2456 = getelementptr inbounds %struct.complex, ptr %2454, i64 %2455
  %2457 = getelementptr inbounds %struct.complex, ptr %2456, i32 0, i32 1
  %2458 = load float, ptr %2457, align 4, !tbaa !14
  %2459 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2460 = load float, ptr %2459, align 4, !tbaa !14
  %2461 = load ptr, ptr %22, align 8, !tbaa !5
  %2462 = load i64, ptr %31, align 8, !tbaa !9
  %2463 = getelementptr inbounds %struct.complex, ptr %2461, i64 %2462
  %2464 = getelementptr inbounds %struct.complex, ptr %2463, i32 0, i32 0
  %2465 = load float, ptr %2464, align 4, !tbaa !11
  %2466 = fmul float %2460, %2465
  %2467 = call float @llvm.fmuladd.f32(float %2453, float %2458, float %2466)
  %2468 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2467, ptr %2468, align 4, !tbaa !14
  %2469 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2470 = load float, ptr %2469, align 4, !tbaa !11
  %2471 = load ptr, ptr %22, align 8, !tbaa !5
  %2472 = load i64, ptr %30, align 8, !tbaa !9
  %2473 = getelementptr inbounds %struct.complex, ptr %2471, i64 %2472
  %2474 = getelementptr inbounds %struct.complex, ptr %2473, i32 0, i32 0
  store float %2470, ptr %2474, align 4, !tbaa !11
  %2475 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2476 = load float, ptr %2475, align 4, !tbaa !14
  %2477 = load ptr, ptr %22, align 8, !tbaa !5
  %2478 = load i64, ptr %30, align 8, !tbaa !9
  %2479 = getelementptr inbounds %struct.complex, ptr %2477, i64 %2478
  %2480 = getelementptr inbounds %struct.complex, ptr %2479, i32 0, i32 1
  store float %2476, ptr %2480, align 4, !tbaa !14
  br label %2481

2481:                                             ; preds = %2423
  %2482 = load i64, ptr %37, align 8, !tbaa !9
  %2483 = add nsw i64 %2482, 1
  store i64 %2483, ptr %37, align 8, !tbaa !9
  br label %2419, !llvm.loop !42

2484:                                             ; preds = %2419
  br label %2485

2485:                                             ; preds = %2484, %2412
  br label %2486

2486:                                             ; preds = %2485
  %2487 = load i64, ptr %39, align 8, !tbaa !9
  %2488 = add nsw i64 %2487, 1
  store i64 %2488, ptr %39, align 8, !tbaa !9
  br label %2088, !llvm.loop !43

2489:                                             ; preds = %2088
  br label %2896

2490:                                             ; preds = %2082
  %2491 = load ptr, ptr %18, align 8, !tbaa !5
  %2492 = load i64, ptr %2491, align 8, !tbaa !9
  store i64 %2492, ptr %39, align 8, !tbaa !9
  br label %2493

2493:                                             ; preds = %2892, %2490
  %2494 = load i64, ptr %39, align 8, !tbaa !9
  %2495 = icmp sge i64 %2494, 1
  br i1 %2495, label %2496, label %2895

2496:                                             ; preds = %2493
  %2497 = load ptr, ptr %18, align 8, !tbaa !5
  %2498 = load i64, ptr %2497, align 8, !tbaa !9
  store i64 %2498, ptr %28, align 8, !tbaa !9
  %2499 = load i64, ptr %39, align 8, !tbaa !9
  %2500 = add nsw i64 %2499, 1
  store i64 %2500, ptr %38, align 8, !tbaa !9
  br label %2501

2501:                                             ; preds = %2712, %2496
  %2502 = load i64, ptr %38, align 8, !tbaa !9
  %2503 = load i64, ptr %28, align 8, !tbaa !9
  %2504 = icmp sle i64 %2502, %2503
  br i1 %2504, label %2505, label %2715

2505:                                             ; preds = %2501
  %2506 = load i64, ptr %38, align 8, !tbaa !9
  %2507 = load i64, ptr %39, align 8, !tbaa !9
  %2508 = load i64, ptr %24, align 8, !tbaa !9
  %2509 = mul nsw i64 %2507, %2508
  %2510 = add nsw i64 %2506, %2509
  store i64 %2510, ptr %29, align 8, !tbaa !9
  %2511 = load ptr, ptr %20, align 8, !tbaa !5
  %2512 = load i64, ptr %29, align 8, !tbaa !9
  %2513 = getelementptr inbounds %struct.complex, ptr %2511, i64 %2512
  %2514 = getelementptr inbounds %struct.complex, ptr %2513, i32 0, i32 0
  %2515 = load float, ptr %2514, align 4, !tbaa !11
  %2516 = fcmp une float %2515, 0.000000e+00
  br i1 %2516, label %2524, label %2517

2517:                                             ; preds = %2505
  %2518 = load ptr, ptr %20, align 8, !tbaa !5
  %2519 = load i64, ptr %29, align 8, !tbaa !9
  %2520 = getelementptr inbounds %struct.complex, ptr %2518, i64 %2519
  %2521 = getelementptr inbounds %struct.complex, ptr %2520, i32 0, i32 1
  %2522 = load float, ptr %2521, align 4, !tbaa !14
  %2523 = fcmp une float %2522, 0.000000e+00
  br i1 %2523, label %2524, label %2711

2524:                                             ; preds = %2517, %2505
  %2525 = load i64, ptr %45, align 8, !tbaa !9
  %2526 = icmp ne i64 %2525, 0
  br i1 %2526, label %2527, label %2578

2527:                                             ; preds = %2524
  %2528 = load i64, ptr %38, align 8, !tbaa !9
  %2529 = load i64, ptr %39, align 8, !tbaa !9
  %2530 = load i64, ptr %24, align 8, !tbaa !9
  %2531 = mul nsw i64 %2529, %2530
  %2532 = add nsw i64 %2528, %2531
  store i64 %2532, ptr %29, align 8, !tbaa !9
  %2533 = load ptr, ptr %19, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.complex, ptr %2533, i32 0, i32 0
  %2535 = load float, ptr %2534, align 4, !tbaa !11
  %2536 = load ptr, ptr %20, align 8, !tbaa !5
  %2537 = load i64, ptr %29, align 8, !tbaa !9
  %2538 = getelementptr inbounds %struct.complex, ptr %2536, i64 %2537
  %2539 = getelementptr inbounds %struct.complex, ptr %2538, i32 0, i32 0
  %2540 = load float, ptr %2539, align 4, !tbaa !11
  %2541 = load ptr, ptr %19, align 8, !tbaa !5
  %2542 = getelementptr inbounds %struct.complex, ptr %2541, i32 0, i32 1
  %2543 = load float, ptr %2542, align 4, !tbaa !14
  %2544 = load ptr, ptr %20, align 8, !tbaa !5
  %2545 = load i64, ptr %29, align 8, !tbaa !9
  %2546 = getelementptr inbounds %struct.complex, ptr %2544, i64 %2545
  %2547 = getelementptr inbounds %struct.complex, ptr %2546, i32 0, i32 1
  %2548 = load float, ptr %2547, align 4, !tbaa !14
  %2549 = fmul float %2543, %2548
  %2550 = fneg float %2549
  %2551 = call float @llvm.fmuladd.f32(float %2535, float %2540, float %2550)
  %2552 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2551, ptr %2552, align 4, !tbaa !11
  %2553 = load ptr, ptr %19, align 8, !tbaa !5
  %2554 = getelementptr inbounds %struct.complex, ptr %2553, i32 0, i32 0
  %2555 = load float, ptr %2554, align 4, !tbaa !11
  %2556 = load ptr, ptr %20, align 8, !tbaa !5
  %2557 = load i64, ptr %29, align 8, !tbaa !9
  %2558 = getelementptr inbounds %struct.complex, ptr %2556, i64 %2557
  %2559 = getelementptr inbounds %struct.complex, ptr %2558, i32 0, i32 1
  %2560 = load float, ptr %2559, align 4, !tbaa !14
  %2561 = load ptr, ptr %19, align 8, !tbaa !5
  %2562 = getelementptr inbounds %struct.complex, ptr %2561, i32 0, i32 1
  %2563 = load float, ptr %2562, align 4, !tbaa !14
  %2564 = load ptr, ptr %20, align 8, !tbaa !5
  %2565 = load i64, ptr %29, align 8, !tbaa !9
  %2566 = getelementptr inbounds %struct.complex, ptr %2564, i64 %2565
  %2567 = getelementptr inbounds %struct.complex, ptr %2566, i32 0, i32 0
  %2568 = load float, ptr %2567, align 4, !tbaa !11
  %2569 = fmul float %2563, %2568
  %2570 = call float @llvm.fmuladd.f32(float %2555, float %2560, float %2569)
  %2571 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2570, ptr %2571, align 4, !tbaa !14
  %2572 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2573 = load float, ptr %2572, align 4, !tbaa !11
  %2574 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2573, ptr %2574, align 4, !tbaa !11
  %2575 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2576 = load float, ptr %2575, align 4, !tbaa !14
  %2577 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2576, ptr %2577, align 4, !tbaa !14
  br label %2619

2578:                                             ; preds = %2524
  %2579 = load ptr, ptr %20, align 8, !tbaa !5
  %2580 = load i64, ptr %38, align 8, !tbaa !9
  %2581 = load i64, ptr %39, align 8, !tbaa !9
  %2582 = load i64, ptr %24, align 8, !tbaa !9
  %2583 = mul nsw i64 %2581, %2582
  %2584 = add nsw i64 %2580, %2583
  %2585 = getelementptr inbounds %struct.complex, ptr %2579, i64 %2584
  call void @r_cnjg(ptr noundef %35, ptr noundef %2585)
  %2586 = load ptr, ptr %19, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.complex, ptr %2586, i32 0, i32 0
  %2588 = load float, ptr %2587, align 4, !tbaa !11
  %2589 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2590 = load float, ptr %2589, align 4, !tbaa !11
  %2591 = load ptr, ptr %19, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.complex, ptr %2591, i32 0, i32 1
  %2593 = load float, ptr %2592, align 4, !tbaa !14
  %2594 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2595 = load float, ptr %2594, align 4, !tbaa !14
  %2596 = fmul float %2593, %2595
  %2597 = fneg float %2596
  %2598 = call float @llvm.fmuladd.f32(float %2588, float %2590, float %2597)
  %2599 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2598, ptr %2599, align 4, !tbaa !11
  %2600 = load ptr, ptr %19, align 8, !tbaa !5
  %2601 = getelementptr inbounds %struct.complex, ptr %2600, i32 0, i32 0
  %2602 = load float, ptr %2601, align 4, !tbaa !11
  %2603 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2604 = load float, ptr %2603, align 4, !tbaa !14
  %2605 = load ptr, ptr %19, align 8, !tbaa !5
  %2606 = getelementptr inbounds %struct.complex, ptr %2605, i32 0, i32 1
  %2607 = load float, ptr %2606, align 4, !tbaa !14
  %2608 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2609 = load float, ptr %2608, align 4, !tbaa !11
  %2610 = fmul float %2607, %2609
  %2611 = call float @llvm.fmuladd.f32(float %2602, float %2604, float %2610)
  %2612 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2611, ptr %2612, align 4, !tbaa !14
  %2613 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2614 = load float, ptr %2613, align 4, !tbaa !11
  %2615 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2614, ptr %2615, align 4, !tbaa !11
  %2616 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2617 = load float, ptr %2616, align 4, !tbaa !14
  %2618 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2617, ptr %2618, align 4, !tbaa !14
  br label %2619

2619:                                             ; preds = %2578, %2527
  %2620 = load ptr, ptr %17, align 8, !tbaa !5
  %2621 = load i64, ptr %2620, align 8, !tbaa !9
  store i64 %2621, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %2622

2622:                                             ; preds = %2707, %2619
  %2623 = load i64, ptr %37, align 8, !tbaa !9
  %2624 = load i64, ptr %29, align 8, !tbaa !9
  %2625 = icmp sle i64 %2623, %2624
  br i1 %2625, label %2626, label %2710

2626:                                             ; preds = %2622
  %2627 = load i64, ptr %37, align 8, !tbaa !9
  %2628 = load i64, ptr %38, align 8, !tbaa !9
  %2629 = load i64, ptr %26, align 8, !tbaa !9
  %2630 = mul nsw i64 %2628, %2629
  %2631 = add nsw i64 %2627, %2630
  store i64 %2631, ptr %30, align 8, !tbaa !9
  %2632 = load i64, ptr %37, align 8, !tbaa !9
  %2633 = load i64, ptr %38, align 8, !tbaa !9
  %2634 = load i64, ptr %26, align 8, !tbaa !9
  %2635 = mul nsw i64 %2633, %2634
  %2636 = add nsw i64 %2632, %2635
  store i64 %2636, ptr %31, align 8, !tbaa !9
  %2637 = load i64, ptr %37, align 8, !tbaa !9
  %2638 = load i64, ptr %39, align 8, !tbaa !9
  %2639 = load i64, ptr %26, align 8, !tbaa !9
  %2640 = mul nsw i64 %2638, %2639
  %2641 = add nsw i64 %2637, %2640
  store i64 %2641, ptr %32, align 8, !tbaa !9
  %2642 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2643 = load float, ptr %2642, align 4, !tbaa !11
  %2644 = load ptr, ptr %22, align 8, !tbaa !5
  %2645 = load i64, ptr %32, align 8, !tbaa !9
  %2646 = getelementptr inbounds %struct.complex, ptr %2644, i64 %2645
  %2647 = getelementptr inbounds %struct.complex, ptr %2646, i32 0, i32 0
  %2648 = load float, ptr %2647, align 4, !tbaa !11
  %2649 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2650 = load float, ptr %2649, align 4, !tbaa !14
  %2651 = load ptr, ptr %22, align 8, !tbaa !5
  %2652 = load i64, ptr %32, 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 = fmul float %2650, %2655
  %2657 = fneg float %2656
  %2658 = call float @llvm.fmuladd.f32(float %2643, float %2648, float %2657)
  %2659 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2658, ptr %2659, align 4, !tbaa !11
  %2660 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2661 = load float, ptr %2660, align 4, !tbaa !11
  %2662 = load ptr, ptr %22, align 8, !tbaa !5
  %2663 = load i64, ptr %32, align 8, !tbaa !9
  %2664 = getelementptr inbounds %struct.complex, ptr %2662, i64 %2663
  %2665 = getelementptr inbounds %struct.complex, ptr %2664, i32 0, i32 1
  %2666 = load float, ptr %2665, align 4, !tbaa !14
  %2667 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2668 = load float, ptr %2667, align 4, !tbaa !14
  %2669 = load ptr, ptr %22, align 8, !tbaa !5
  %2670 = load i64, ptr %32, align 8, !tbaa !9
  %2671 = getelementptr inbounds %struct.complex, ptr %2669, i64 %2670
  %2672 = getelementptr inbounds %struct.complex, ptr %2671, i32 0, i32 0
  %2673 = load float, ptr %2672, align 4, !tbaa !11
  %2674 = fmul float %2668, %2673
  %2675 = call float @llvm.fmuladd.f32(float %2661, float %2666, float %2674)
  %2676 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2675, ptr %2676, align 4, !tbaa !14
  %2677 = load ptr, ptr %22, align 8, !tbaa !5
  %2678 = load i64, ptr %31, align 8, !tbaa !9
  %2679 = getelementptr inbounds %struct.complex, ptr %2677, i64 %2678
  %2680 = getelementptr inbounds %struct.complex, ptr %2679, i32 0, i32 0
  %2681 = load float, ptr %2680, align 4, !tbaa !11
  %2682 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2683 = load float, ptr %2682, align 4, !tbaa !11
  %2684 = fadd float %2681, %2683
  %2685 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2684, ptr %2685, align 4, !tbaa !11
  %2686 = load ptr, ptr %22, align 8, !tbaa !5
  %2687 = load i64, ptr %31, align 8, !tbaa !9
  %2688 = getelementptr inbounds %struct.complex, ptr %2686, i64 %2687
  %2689 = getelementptr inbounds %struct.complex, ptr %2688, i32 0, i32 1
  %2690 = load float, ptr %2689, align 4, !tbaa !14
  %2691 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2692 = load float, ptr %2691, align 4, !tbaa !14
  %2693 = fadd float %2690, %2692
  %2694 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2693, ptr %2694, align 4, !tbaa !14
  %2695 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2696 = load float, ptr %2695, align 4, !tbaa !11
  %2697 = load ptr, ptr %22, align 8, !tbaa !5
  %2698 = load i64, ptr %30, align 8, !tbaa !9
  %2699 = getelementptr inbounds %struct.complex, ptr %2697, i64 %2698
  %2700 = getelementptr inbounds %struct.complex, ptr %2699, i32 0, i32 0
  store float %2696, ptr %2700, align 4, !tbaa !11
  %2701 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2702 = load float, ptr %2701, align 4, !tbaa !14
  %2703 = load ptr, ptr %22, align 8, !tbaa !5
  %2704 = load i64, ptr %30, align 8, !tbaa !9
  %2705 = getelementptr inbounds %struct.complex, ptr %2703, i64 %2704
  %2706 = getelementptr inbounds %struct.complex, ptr %2705, i32 0, i32 1
  store float %2702, ptr %2706, align 4, !tbaa !14
  br label %2707

2707:                                             ; preds = %2626
  %2708 = load i64, ptr %37, align 8, !tbaa !9
  %2709 = add nsw i64 %2708, 1
  store i64 %2709, ptr %37, align 8, !tbaa !9
  br label %2622, !llvm.loop !44

2710:                                             ; preds = %2622
  br label %2711

2711:                                             ; preds = %2710, %2517
  br label %2712

2712:                                             ; preds = %2711
  %2713 = load i64, ptr %38, align 8, !tbaa !9
  %2714 = add nsw i64 %2713, 1
  store i64 %2714, ptr %38, align 8, !tbaa !9
  br label %2501, !llvm.loop !45

2715:                                             ; preds = %2501
  %2716 = load ptr, ptr %19, align 8, !tbaa !5
  %2717 = getelementptr inbounds %struct.complex, ptr %2716, i32 0, i32 0
  %2718 = load float, ptr %2717, align 4, !tbaa !11
  %2719 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2718, ptr %2719, align 4, !tbaa !11
  %2720 = load ptr, ptr %19, 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 %41, i32 0, i32 1
  store float %2722, ptr %2723, align 4, !tbaa !14
  %2724 = load i64, ptr %46, align 8, !tbaa !9
  %2725 = icmp ne i64 %2724, 0
  br i1 %2725, label %2726, label %2814

2726:                                             ; preds = %2715
  %2727 = load i64, ptr %45, align 8, !tbaa !9
  %2728 = icmp ne i64 %2727, 0
  br i1 %2728, label %2729, label %2776

2729:                                             ; preds = %2726
  %2730 = load i64, ptr %39, align 8, !tbaa !9
  %2731 = load i64, ptr %39, align 8, !tbaa !9
  %2732 = load i64, ptr %24, align 8, !tbaa !9
  %2733 = mul nsw i64 %2731, %2732
  %2734 = add nsw i64 %2730, %2733
  store i64 %2734, ptr %28, align 8, !tbaa !9
  %2735 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2736 = load float, ptr %2735, align 4, !tbaa !11
  %2737 = load ptr, ptr %20, align 8, !tbaa !5
  %2738 = load i64, ptr %28, align 8, !tbaa !9
  %2739 = getelementptr inbounds %struct.complex, ptr %2737, i64 %2738
  %2740 = getelementptr inbounds %struct.complex, ptr %2739, i32 0, i32 0
  %2741 = load float, ptr %2740, align 4, !tbaa !11
  %2742 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2743 = load float, ptr %2742, align 4, !tbaa !14
  %2744 = load ptr, ptr %20, align 8, !tbaa !5
  %2745 = load i64, ptr %28, align 8, !tbaa !9
  %2746 = getelementptr inbounds %struct.complex, ptr %2744, i64 %2745
  %2747 = getelementptr inbounds %struct.complex, ptr %2746, i32 0, i32 1
  %2748 = load float, ptr %2747, align 4, !tbaa !14
  %2749 = fmul float %2743, %2748
  %2750 = fneg float %2749
  %2751 = call float @llvm.fmuladd.f32(float %2736, float %2741, float %2750)
  %2752 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2751, ptr %2752, align 4, !tbaa !11
  %2753 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2754 = load float, ptr %2753, align 4, !tbaa !11
  %2755 = load ptr, ptr %20, align 8, !tbaa !5
  %2756 = load i64, ptr %28, align 8, !tbaa !9
  %2757 = getelementptr inbounds %struct.complex, ptr %2755, i64 %2756
  %2758 = getelementptr inbounds %struct.complex, ptr %2757, i32 0, i32 1
  %2759 = load float, ptr %2758, align 4, !tbaa !14
  %2760 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2761 = load float, ptr %2760, align 4, !tbaa !14
  %2762 = load ptr, ptr %20, align 8, !tbaa !5
  %2763 = load i64, ptr %28, align 8, !tbaa !9
  %2764 = getelementptr inbounds %struct.complex, ptr %2762, i64 %2763
  %2765 = getelementptr inbounds %struct.complex, ptr %2764, i32 0, i32 0
  %2766 = load float, ptr %2765, align 4, !tbaa !11
  %2767 = fmul float %2761, %2766
  %2768 = call float @llvm.fmuladd.f32(float %2754, float %2759, float %2767)
  %2769 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2768, ptr %2769, align 4, !tbaa !14
  %2770 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2771 = load float, ptr %2770, align 4, !tbaa !11
  %2772 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2771, ptr %2772, align 4, !tbaa !11
  %2773 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2774 = load float, ptr %2773, align 4, !tbaa !14
  %2775 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2774, ptr %2775, align 4, !tbaa !14
  br label %2813

2776:                                             ; preds = %2726
  %2777 = load ptr, ptr %20, align 8, !tbaa !5
  %2778 = load i64, ptr %39, align 8, !tbaa !9
  %2779 = load i64, ptr %39, align 8, !tbaa !9
  %2780 = load i64, ptr %24, align 8, !tbaa !9
  %2781 = mul nsw i64 %2779, %2780
  %2782 = add nsw i64 %2778, %2781
  %2783 = getelementptr inbounds %struct.complex, ptr %2777, i64 %2782
  call void @r_cnjg(ptr noundef %35, ptr noundef %2783)
  %2784 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2785 = load float, ptr %2784, align 4, !tbaa !11
  %2786 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2787 = load float, ptr %2786, align 4, !tbaa !11
  %2788 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2789 = load float, ptr %2788, align 4, !tbaa !14
  %2790 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2791 = load float, ptr %2790, align 4, !tbaa !14
  %2792 = fmul float %2789, %2791
  %2793 = fneg float %2792
  %2794 = call float @llvm.fmuladd.f32(float %2785, float %2787, float %2793)
  %2795 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2794, ptr %2795, align 4, !tbaa !11
  %2796 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2797 = load float, ptr %2796, align 4, !tbaa !11
  %2798 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2799 = load float, ptr %2798, align 4, !tbaa !14
  %2800 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2801 = load float, ptr %2800, align 4, !tbaa !14
  %2802 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2803 = load float, ptr %2802, align 4, !tbaa !11
  %2804 = fmul float %2801, %2803
  %2805 = call float @llvm.fmuladd.f32(float %2797, float %2799, float %2804)
  %2806 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2805, ptr %2806, align 4, !tbaa !14
  %2807 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2808 = load float, ptr %2807, align 4, !tbaa !11
  %2809 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  store float %2808, ptr %2809, align 4, !tbaa !11
  %2810 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2811 = load float, ptr %2810, align 4, !tbaa !14
  %2812 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  store float %2811, ptr %2812, align 4, !tbaa !14
  br label %2813

2813:                                             ; preds = %2776, %2729
  br label %2814

2814:                                             ; preds = %2813, %2715
  %2815 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2816 = load float, ptr %2815, align 4, !tbaa !11
  %2817 = fcmp une float %2816, 1.000000e+00
  br i1 %2817, label %2822, label %2818

2818:                                             ; preds = %2814
  %2819 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2820 = load float, ptr %2819, align 4, !tbaa !14
  %2821 = fcmp une float %2820, 0.000000e+00
  br i1 %2821, label %2822, label %2891

2822:                                             ; preds = %2818, %2814
  %2823 = load ptr, ptr %17, align 8, !tbaa !5
  %2824 = load i64, ptr %2823, align 8, !tbaa !9
  store i64 %2824, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %2825

2825:                                             ; preds = %2887, %2822
  %2826 = load i64, ptr %37, align 8, !tbaa !9
  %2827 = load i64, ptr %28, align 8, !tbaa !9
  %2828 = icmp sle i64 %2826, %2827
  br i1 %2828, label %2829, label %2890

2829:                                             ; preds = %2825
  %2830 = load i64, ptr %37, align 8, !tbaa !9
  %2831 = load i64, ptr %39, align 8, !tbaa !9
  %2832 = load i64, ptr %26, align 8, !tbaa !9
  %2833 = mul nsw i64 %2831, %2832
  %2834 = add nsw i64 %2830, %2833
  store i64 %2834, ptr %29, align 8, !tbaa !9
  %2835 = load i64, ptr %37, align 8, !tbaa !9
  %2836 = load i64, ptr %39, align 8, !tbaa !9
  %2837 = load i64, ptr %26, align 8, !tbaa !9
  %2838 = mul nsw i64 %2836, %2837
  %2839 = add nsw i64 %2835, %2838
  store i64 %2839, ptr %30, align 8, !tbaa !9
  %2840 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2841 = load float, ptr %2840, align 4, !tbaa !11
  %2842 = load ptr, ptr %22, align 8, !tbaa !5
  %2843 = load i64, ptr %30, align 8, !tbaa !9
  %2844 = getelementptr inbounds %struct.complex, ptr %2842, i64 %2843
  %2845 = getelementptr inbounds %struct.complex, ptr %2844, i32 0, i32 0
  %2846 = load float, ptr %2845, align 4, !tbaa !11
  %2847 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2848 = load float, ptr %2847, align 4, !tbaa !14
  %2849 = load ptr, ptr %22, align 8, !tbaa !5
  %2850 = load i64, ptr %30, align 8, !tbaa !9
  %2851 = getelementptr inbounds %struct.complex, ptr %2849, i64 %2850
  %2852 = getelementptr inbounds %struct.complex, ptr %2851, i32 0, i32 1
  %2853 = load float, ptr %2852, align 4, !tbaa !14
  %2854 = fmul float %2848, %2853
  %2855 = fneg float %2854
  %2856 = call float @llvm.fmuladd.f32(float %2841, float %2846, float %2855)
  %2857 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2856, ptr %2857, align 4, !tbaa !11
  %2858 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %2859 = load float, ptr %2858, align 4, !tbaa !11
  %2860 = load ptr, ptr %22, align 8, !tbaa !5
  %2861 = load i64, ptr %30, align 8, !tbaa !9
  %2862 = getelementptr inbounds %struct.complex, ptr %2860, i64 %2861
  %2863 = getelementptr inbounds %struct.complex, ptr %2862, i32 0, i32 1
  %2864 = load float, ptr %2863, align 4, !tbaa !14
  %2865 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %2866 = load float, ptr %2865, align 4, !tbaa !14
  %2867 = load ptr, ptr %22, align 8, !tbaa !5
  %2868 = load i64, ptr %30, align 8, !tbaa !9
  %2869 = getelementptr inbounds %struct.complex, ptr %2867, i64 %2868
  %2870 = getelementptr inbounds %struct.complex, ptr %2869, i32 0, i32 0
  %2871 = load float, ptr %2870, align 4, !tbaa !11
  %2872 = fmul float %2866, %2871
  %2873 = call float @llvm.fmuladd.f32(float %2859, float %2864, float %2872)
  %2874 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2873, ptr %2874, align 4, !tbaa !14
  %2875 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2876 = load float, ptr %2875, align 4, !tbaa !11
  %2877 = load ptr, ptr %22, align 8, !tbaa !5
  %2878 = load i64, ptr %29, align 8, !tbaa !9
  %2879 = getelementptr inbounds %struct.complex, ptr %2877, i64 %2878
  %2880 = getelementptr inbounds %struct.complex, ptr %2879, i32 0, i32 0
  store float %2876, ptr %2880, align 4, !tbaa !11
  %2881 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2882 = load float, ptr %2881, align 4, !tbaa !14
  %2883 = load ptr, ptr %22, align 8, !tbaa !5
  %2884 = load i64, ptr %29, align 8, !tbaa !9
  %2885 = getelementptr inbounds %struct.complex, ptr %2883, i64 %2884
  %2886 = getelementptr inbounds %struct.complex, ptr %2885, i32 0, i32 1
  store float %2882, ptr %2886, align 4, !tbaa !14
  br label %2887

2887:                                             ; preds = %2829
  %2888 = load i64, ptr %37, align 8, !tbaa !9
  %2889 = add nsw i64 %2888, 1
  store i64 %2889, ptr %37, align 8, !tbaa !9
  br label %2825, !llvm.loop !46

2890:                                             ; preds = %2825
  br label %2891

2891:                                             ; preds = %2890, %2818
  br label %2892

2892:                                             ; preds = %2891
  %2893 = load i64, ptr %39, align 8, !tbaa !9
  %2894 = add nsw i64 %2893, -1
  store i64 %2894, ptr %39, align 8, !tbaa !9
  br label %2493, !llvm.loop !47

2895:                                             ; preds = %2493
  br label %2896

2896:                                             ; preds = %2895, %2489
  br label %2897

2897:                                             ; preds = %2896, %2081
  br label %2898

2898:                                             ; preds = %2897, %1452
  store i32 0, ptr %12, align 4
  store i32 1, ptr %47, align 4
  br label %2899

2899:                                             ; preds = %2898, %220, %174, %164
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  %2900 = load i32, ptr %12, align 4
  ret i32 %2900
}

; 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}


; 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 [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @f2c_ctrmm(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr nocapture noundef readonly %10) local_unnamed_addr #0 {
  %12 = alloca %struct.complex, align 8
  %13 = alloca %struct.complex, align 4
  %14 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %15 = load i64, ptr %8, align 8, !tbaa !5
  %16 = xor i64 %15, -1
  %17 = getelementptr inbounds %struct.complex, ptr %7, i64 %16
  %18 = load i64, ptr %10, align 8, !tbaa !5
  %19 = xor i64 %18, -1
  %20 = getelementptr inbounds %struct.complex, ptr %9, i64 %19
  %21 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %21, 0
  %. = select i1 %.not, ptr %5, ptr %4
  %.01001 = load i64, ptr %., align 8, !tbaa !5
  %22 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %23 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.2) #6
  %.fr = freeze i64 %23
  %24 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  store i64 0, ptr %14, align 8, !tbaa !5
  br i1 %.not, label %25, label %28

25:                                               ; preds = %11
  %26 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not1023 = icmp eq i64 %26, 0
  br i1 %.not1023, label %27, label %28

27:                                               ; preds = %25
  store i64 1, ptr %14, align 8, !tbaa !5
  br label %.thread

28:                                               ; preds = %25, %11
  %.not1024 = icmp eq i64 %24, 0
  br i1 %.not1024, label %29, label %32

29:                                               ; preds = %28
  %30 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not1025 = icmp eq i64 %30, 0
  br i1 %.not1025, label %31, label %32

31:                                               ; preds = %29
  store i64 2, ptr %14, align 8, !tbaa !5
  br label %.thread

32:                                               ; preds = %29, %28
  %33 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #6
  %.not1026 = icmp eq i64 %33, 0
  br i1 %.not1026, label %34, label %39

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

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

38:                                               ; preds = %36
  store i64 3, ptr %14, align 8, !tbaa !5
  br label %.thread

39:                                               ; preds = %36, %34, %32
  %40 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #6
  %.not1029 = icmp eq i64 %40, 0
  br i1 %.not1029, label %41, label %44

41:                                               ; preds = %39
  %42 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.2) #6
  %.not1030 = icmp eq i64 %42, 0
  br i1 %.not1030, label %43, label %44

43:                                               ; preds = %41
  store i64 4, ptr %14, align 8, !tbaa !5
  br label %.thread

44:                                               ; preds = %41, %39
  %45 = load i64, ptr %4, align 8, !tbaa !5
  %46 = icmp slt i64 %45, 0
  br i1 %46, label %47, label %48

47:                                               ; preds = %44
  store i64 5, ptr %14, align 8, !tbaa !5
  br label %.thread

48:                                               ; preds = %44
  %49 = load i64, ptr %5, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %51, label %52

51:                                               ; preds = %48
  store i64 6, ptr %14, align 8, !tbaa !5
  br label %.thread

52:                                               ; preds = %48
  %53 = load i64, ptr %8, align 8, !tbaa !5
  %54 = tail call i64 @llvm.smax.i64(i64 %.01001, i64 1)
  %55 = icmp slt i64 %53, %54
  br i1 %55, label %56, label %57

56:                                               ; preds = %52
  store i64 9, ptr %14, align 8, !tbaa !5
  br label %.thread

57:                                               ; preds = %52
  %58 = load i64, ptr %10, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %45, i64 1)
  %59 = icmp slt i64 %58, %spec.select
  br i1 %59, label %60, label %62

60:                                               ; preds = %57
  store i64 11, ptr %14, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %27, %38, %47, %56, %60, %51, %43, %31
  %61 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %14) #6
  br label %.loopexit

62:                                               ; preds = %57
  %63 = icmp eq i64 %45, 0
  %64 = icmp eq i64 %49, 0
  %or.cond1565 = or i1 %63, %64
  br i1 %or.cond1565, label %.loopexit, label %65

65:                                               ; preds = %62
  %66 = load float, ptr %6, align 4, !tbaa !9
  %67 = fcmp oeq float %66, 0.000000e+00
  br i1 %67, label %68, label %84

68:                                               ; preds = %65
  %69 = getelementptr inbounds i8, ptr %6, i64 4
  %70 = load float, ptr %69, align 4, !tbaa !12
  %71 = fcmp oeq float %70, 0.000000e+00
  br i1 %71, label %.preheader.preheader, label %84

.preheader.preheader:                             ; preds = %68
  %72 = shl i64 %18, 3
  %73 = shl nuw i64 %45, 3
  %74 = add nsw i64 %49, -1
  %xtraiter2282 = and i64 %49, 7
  %75 = icmp ult i64 %74, 7
  br i1 %75, label %.loopexit.loopexit.unr-lcssa, label %.preheader.preheader.new

.preheader.preheader.new:                         ; preds = %.preheader.preheader
  %unroll_iter = and i64 %49, 9223372036854775800
  br label %.preheader

.preheader:                                       ; preds = %.preheader, %.preheader.preheader.new
  %indvar = phi i64 [ 0, %.preheader.preheader.new ], [ %indvar.next.7, %.preheader ]
  %niter = phi i64 [ 0, %.preheader.preheader.new ], [ %niter.next.7, %.preheader ]
  %76 = mul i64 %72, %indvar
  %scevgep = getelementptr i8, ptr %9, i64 %76
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next = or disjoint i64 %indvar, 1
  %77 = mul i64 %72, %indvar.next
  %scevgep.1 = getelementptr i8, ptr %9, i64 %77
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.1, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.1 = or disjoint i64 %indvar, 2
  %78 = mul i64 %72, %indvar.next.1
  %scevgep.2 = getelementptr i8, ptr %9, i64 %78
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.2, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.2 = or disjoint i64 %indvar, 3
  %79 = mul i64 %72, %indvar.next.2
  %scevgep.3 = getelementptr i8, ptr %9, i64 %79
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.3, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.3 = or disjoint i64 %indvar, 4
  %80 = mul i64 %72, %indvar.next.3
  %scevgep.4 = getelementptr i8, ptr %9, i64 %80
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.4, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.4 = or disjoint i64 %indvar, 5
  %81 = mul i64 %72, %indvar.next.4
  %scevgep.5 = getelementptr i8, ptr %9, i64 %81
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.5, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.5 = or disjoint i64 %indvar, 6
  %82 = mul i64 %72, %indvar.next.5
  %scevgep.6 = getelementptr i8, ptr %9, i64 %82
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.6, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.6 = or disjoint i64 %indvar, 7
  %83 = mul i64 %72, %indvar.next.6
  %scevgep.7 = getelementptr i8, ptr %9, i64 %83
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.7, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.7 = add nuw nsw i64 %indvar, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %.loopexit.loopexit.unr-lcssa, label %.preheader, !llvm.loop !14

84:                                               ; preds = %68, %65
  %85 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #6
  %.not1032 = icmp eq i64 %85, 0
  %86 = load i64, ptr %5, align 8, !tbaa !5
  br i1 %.not, label %626, label %87

87:                                               ; preds = %84
  %.not10591285 = icmp slt i64 %86, 1
  br i1 %.not1032, label %437, label %88

88:                                               ; preds = %87
  br i1 %.not1024, label %252, label %89

89:                                               ; preds = %88
  br i1 %.not10591285, label %.loopexit, label %.lr.ph1134

.lr.ph1134:                                       ; preds = %89
  %90 = load i64, ptr %4, align 8, !tbaa !5
  %.not10771114 = icmp slt i64 %90, 1
  %91 = getelementptr inbounds i8, ptr %6, i64 4
  %92 = add i64 %15, 1
  br i1 %.not10771114, label %.loopexit, label %.lr.ph1134.split

.lr.ph1134.split:                                 ; preds = %.lr.ph1134
  %.not1079 = icmp eq i64 %.fr, 0
  %93 = shl i64 %18, 3
  %94 = shl i64 %18, 3
  %95 = shl i64 %15, 3
  %96 = add i64 %95, 8
  br i1 %.not1079, label %.lr.ph1119.us.preheader, label %.lr.ph1119.preheader

.lr.ph1119.preheader:                             ; preds = %.lr.ph1134.split
  %invariant.gep2324 = getelementptr i8, ptr %9, i64 -4
  %invariant.gep = getelementptr i8, ptr %7, i64 -4
  br label %.lr.ph1119

.lr.ph1119.us.preheader:                          ; preds = %.lr.ph1134.split
  %invariant.gep2328 = getelementptr i8, ptr %9, i64 -4
  %invariant.gep2326 = getelementptr i8, ptr %7, i64 -4
  br label %.lr.ph1119.us

.lr.ph1119.us:                                    ; preds = %.lr.ph1119.us.preheader, %._crit_edge1120.split.us.us
  %indvar1660 = phi i64 [ %indvar.next1661, %._crit_edge1120.split.us.us ], [ 0, %.lr.ph1119.us.preheader ]
  %.110041132.us1142 = phi i64 [ %159, %._crit_edge1120.split.us.us ], [ 1, %.lr.ph1119.us.preheader ]
  %97 = phi <2 x float> [ %128, %._crit_edge1120.split.us.us ], [ undef, %.lr.ph1119.us.preheader ]
  %98 = mul i64 %94, %indvar1660
  %scevgep1671 = getelementptr i8, ptr %9, i64 %98
  %99 = or disjoint i64 %98, 4
  %scevgep1675 = getelementptr i8, ptr %9, i64 %99
  %100 = mul i64 %93, %indvar1660
  %scevgep1662 = getelementptr i8, ptr %9, i64 %100
  %101 = or disjoint i64 %100, 4
  %scevgep1666 = getelementptr i8, ptr %9, i64 %101
  %102 = mul nsw i64 %.110041132.us1142, %18
  %invariant.gep1122.us = getelementptr %struct.complex, ptr %20, i64 %102
  %gep2329 = getelementptr i8, ptr %invariant.gep2328, i64 %98
  %103 = getelementptr i8, ptr %9, i64 %98
  br label %104

104:                                              ; preds = %127, %.lr.ph1119.us
  %indvar1658 = phi i64 [ %indvar.next1659, %127 ], [ 0, %.lr.ph1119.us ]
  %.010021116.us.us = phi i64 [ %129, %127 ], [ 1, %.lr.ph1119.us ]
  %105 = phi <2 x float> [ %128, %127 ], [ %97, %.lr.ph1119.us ]
  %106 = shl i64 %indvar1658, 3
  %scevgep1672 = getelementptr i8, ptr %gep2329, i64 %106
  %107 = mul i64 %95, %indvar1658
  %scevgep1673 = getelementptr i8, ptr %7, i64 %107
  %108 = mul i64 %96, %indvar1658
  %gep2327 = getelementptr i8, ptr %invariant.gep2326, i64 %108
  %scevgep1676 = getelementptr i8, ptr %103, i64 %106
  %109 = or disjoint i64 %107, 4
  %scevgep1677 = getelementptr i8, ptr %7, i64 %109
  %scevgep1678 = getelementptr i8, ptr %7, i64 %108
  %110 = add i64 %indvar1658, -1
  %gep1123.us.us = getelementptr %struct.complex, ptr %invariant.gep1122.us, i64 %.010021116.us.us
  %111 = load <2 x float>, ptr %gep1123.us.us, align 4, !tbaa !13
  %112 = extractelement <2 x float> %111, i64 0
  %113 = fcmp une float %112, 0.000000e+00
  %114 = extractelement <2 x float> %111, i64 1
  %115 = fcmp une float %114, 0.000000e+00
  %or.cond1566 = select i1 %113, i1 true, i1 %115
  br i1 %or.cond1566, label %._crit_edge1497, label %127

._crit_edge1497:                                  ; preds = %104
  %116 = load float, ptr %6, align 4, !tbaa !9
  %117 = load float, ptr %91, align 4, !tbaa !12
  %118 = fneg float %117
  %119 = insertelement <2 x float> poison, float %117, i64 0
  %120 = insertelement <2 x float> %119, float %118, i64 1
  %121 = fmul <2 x float> %111, %120
  %122 = shufflevector <2 x float> %121, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %123 = insertelement <2 x float> poison, float %116, i64 0
  %124 = shufflevector <2 x float> %123, <2 x float> poison, <2 x i32> zeroinitializer
  %125 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %124, <2 x float> %111, <2 x float> %122)
  %.not1078.not1106.us.us = icmp ugt i64 %.010021116.us.us, 1
  br i1 %.not1078.not1106.us.us, label %.lr.ph.us.us, label %._crit_edge.us.us

._crit_edge.us.us:                                ; preds = %scalar.ph1687, %middle.block1686, %._crit_edge1497
  %126 = phi <2 x float> [ %105, %._crit_edge1497 ], [ %158, %middle.block1686 ], [ %133, %scalar.ph1687 ]
  store <2 x float> %125, ptr %gep1123.us.us, align 4, !tbaa !13
  br label %127

127:                                              ; preds = %104, %._crit_edge.us.us
  %128 = phi <2 x float> [ %126, %._crit_edge.us.us ], [ %105, %104 ]
  %129 = add nuw i64 %.010021116.us.us, 1
  %exitcond1474.not = icmp eq i64 %.010021116.us.us, %90
  %indvar.next1659 = add i64 %indvar1658, 1
  br i1 %exitcond1474.not, label %._crit_edge1120.split.us.us, label %104, !llvm.loop !16

scalar.ph1687:                                    ; preds = %scalar.ph1687.preheader, %scalar.ph1687
  %.110131107.us.us = phi i64 [ %136, %scalar.ph1687 ], [ %.110131107.us.us.ph, %scalar.ph1687.preheader ]
  %gep1109.us.us = getelementptr %struct.complex, ptr %invariant.gep1108.us.us, i64 %.110131107.us.us
  %130 = load <2 x float>, ptr %gep1109.us.us, align 4, !tbaa !13
  %131 = fmul <2 x float> %141, %130
  %132 = shufflevector <2 x float> %131, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %133 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %142, <2 x float> %130, <2 x float> %132)
  %gep.us.us = getelementptr %struct.complex, ptr %invariant.gep1122.us, i64 %.110131107.us.us
  %134 = load <2 x float>, ptr %gep.us.us, align 4, !tbaa !13
  %135 = fadd <2 x float> %133, %134
  store <2 x float> %135, ptr %gep.us.us, align 4, !tbaa !13
  %136 = add nuw nsw i64 %.110131107.us.us, 1
  %exitcond1473.not = icmp eq i64 %136, %.010021116.us.us
  br i1 %exitcond1473.not, label %._crit_edge.us.us, label %scalar.ph1687, !llvm.loop !17

.lr.ph.us.us:                                     ; preds = %._crit_edge1497
  %137 = mul nsw i64 %.010021116.us.us, %15
  %invariant.gep1108.us.us = getelementptr %struct.complex, ptr %17, i64 %137
  %138 = extractelement <2 x float> %125, i64 1
  %139 = fneg float %138
  %min.iters.check1688 = icmp ult i64 %indvar1658, 8
  br i1 %min.iters.check1688, label %scalar.ph1687.preheader, label %vector.scevcheck1657

scalar.ph1687.preheader:                          ; preds = %middle.block1686, %vector.memcheck1670, %vector.scevcheck1657, %.lr.ph.us.us
  %.110131107.us.us.ph = phi i64 [ 1, %vector.memcheck1670 ], [ 1, %vector.scevcheck1657 ], [ 1, %.lr.ph.us.us ], [ %ind.end1692, %middle.block1686 ]
  %140 = shufflevector <2 x float> %125, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %141 = insertelement <2 x float> %140, float %139, i64 1
  %142 = shufflevector <2 x float> %125, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1687

vector.scevcheck1657:                             ; preds = %.lr.ph.us.us
  %mul.result1664 = shl i64 %110, 3
  %143 = getelementptr i8, ptr %scevgep1662, i64 %mul.result1664
  %144 = icmp ult ptr %143, %scevgep1662
  %mul.result1668 = shl i64 %110, 3
  %mul.overflow1669 = icmp ugt i64 %110, 2305843009213693951
  %145 = getelementptr i8, ptr %scevgep1666, i64 %mul.result1668
  %146 = icmp ult ptr %145, %scevgep1666
  %147 = or i1 %146, %mul.overflow1669
  %148 = or i1 %144, %147
  br i1 %148, label %scalar.ph1687.preheader, label %vector.memcheck1670

vector.memcheck1670:                              ; preds = %vector.scevcheck1657
  %bound01679 = icmp ult ptr %scevgep1671, %gep2327
  %bound11680 = icmp ult ptr %scevgep1673, %scevgep1672
  %found.conflict1681 = and i1 %bound01679, %bound11680
  %bound01682 = icmp ult ptr %scevgep1675, %scevgep1678
  %bound11683 = icmp ult ptr %scevgep1677, %scevgep1676
  %found.conflict1684 = and i1 %bound01682, %bound11683
  %conflict.rdx1685 = or i1 %found.conflict1681, %found.conflict1684
  br i1 %conflict.rdx1685, label %scalar.ph1687.preheader, label %vector.ph1689

vector.ph1689:                                    ; preds = %vector.memcheck1670
  %n.vec1691 = and i64 %indvar1658, 4611686018427387900
  %ind.end1692 = or disjoint i64 %n.vec1691, 1
  %broadcast.splatinsert1700 = insertelement <4 x float> poison, float %139, i64 0
  %broadcast.splat1701 = shufflevector <4 x float> %broadcast.splatinsert1700, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1703 = shufflevector <2 x float> %125, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1705 = shufflevector <2 x float> %125, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body1694

vector.body1694:                                  ; preds = %vector.body1694, %vector.ph1689
  %index1695 = phi i64 [ 0, %vector.ph1689 ], [ %index.next1710, %vector.body1694 ]
  %offset.idx1696 = or disjoint i64 %index1695, 1
  %149 = getelementptr %struct.complex, ptr %invariant.gep1108.us.us, i64 %offset.idx1696
  %wide.vec1697 = load <8 x float>, ptr %149, align 4, !tbaa !13
  %strided.vec1698 = shufflevector <8 x float> %wide.vec1697, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1699 = shufflevector <8 x float> %wide.vec1697, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %150 = fmul <4 x float> %strided.vec1699, %broadcast.splat1701
  %151 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1703, <4 x float> %strided.vec1698, <4 x float> %150)
  %152 = fmul <4 x float> %broadcast.splat1705, %strided.vec1698
  %153 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1703, <4 x float> %strided.vec1699, <4 x float> %152)
  %154 = getelementptr %struct.complex, ptr %invariant.gep1122.us, i64 %offset.idx1696
  %wide.vec1706 = load <8 x float>, ptr %154, align 4, !tbaa !13
  %strided.vec1707 = shufflevector <8 x float> %wide.vec1706, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1708 = shufflevector <8 x float> %wide.vec1706, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %155 = fadd <4 x float> %151, %strided.vec1707
  %156 = fadd <4 x float> %153, %strided.vec1708
  %interleaved.vec1709 = shufflevector <4 x float> %155, <4 x float> %156, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1709, ptr %154, align 4, !tbaa !13
  %index.next1710 = add nuw i64 %index1695, 4
  %157 = icmp eq i64 %index.next1710, %n.vec1691
  br i1 %157, label %middle.block1686, label %vector.body1694, !llvm.loop !19

middle.block1686:                                 ; preds = %vector.body1694
  %cmp.n1711 = icmp eq i64 %indvar1658, %n.vec1691
  %158 = shufflevector <4 x float> %151, <4 x float> %153, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1711, label %._crit_edge.us.us, label %scalar.ph1687.preheader

._crit_edge1120.split.us.us:                      ; preds = %127
  %159 = add nuw i64 %.110041132.us1142, 1
  %exitcond1475.not = icmp eq i64 %.110041132.us1142, %86
  %indvar.next1661 = add i64 %indvar1660, 1
  br i1 %exitcond1475.not, label %.loopexit, label %.lr.ph1119.us, !llvm.loop !21

.lr.ph1119:                                       ; preds = %.lr.ph1119.preheader, %._crit_edge1120.split
  %indvar1631 = phi i64 [ %indvar.next1632, %._crit_edge1120.split ], [ 0, %.lr.ph1119.preheader ]
  %.110041132 = phi i64 [ %251, %._crit_edge1120.split ], [ 1, %.lr.ph1119.preheader ]
  %160 = phi <2 x float> [ %249, %._crit_edge1120.split ], [ undef, %.lr.ph1119.preheader ]
  %161 = mul i64 %94, %indvar1631
  %scevgep1638 = getelementptr i8, ptr %9, i64 %161
  %162 = or disjoint i64 %161, 4
  %scevgep1642 = getelementptr i8, ptr %9, i64 %162
  %163 = mul i64 %93, %indvar1631
  %scevgep1633 = getelementptr i8, ptr %9, i64 %163
  %164 = or disjoint i64 %163, 4
  %scevgep1634 = getelementptr i8, ptr %9, i64 %164
  %165 = mul nsw i64 %.110041132, %18
  %invariant.gep1122 = getelementptr %struct.complex, ptr %20, i64 %165
  %gep2325 = getelementptr i8, ptr %invariant.gep2324, i64 %161
  %166 = getelementptr i8, ptr %9, i64 %161
  br label %167

167:                                              ; preds = %.lr.ph1119, %248
  %indvar1629 = phi i64 [ 0, %.lr.ph1119 ], [ %indvar.next1630, %248 ]
  %.010021116 = phi i64 [ 1, %.lr.ph1119 ], [ %250, %248 ]
  %168 = phi <2 x float> [ %160, %.lr.ph1119 ], [ %249, %248 ]
  %169 = shl i64 %indvar1629, 3
  %scevgep1639 = getelementptr i8, ptr %gep2325, i64 %169
  %170 = mul i64 %95, %indvar1629
  %scevgep1640 = getelementptr i8, ptr %7, i64 %170
  %171 = mul i64 %96, %indvar1629
  %gep2323 = getelementptr i8, ptr %invariant.gep, i64 %171
  %scevgep1643 = getelementptr i8, ptr %166, i64 %169
  %172 = or disjoint i64 %170, 4
  %scevgep1644 = getelementptr i8, ptr %7, i64 %172
  %scevgep1645 = getelementptr i8, ptr %7, i64 %171
  %173 = add i64 %indvar1629, -1
  %gep1123 = getelementptr %struct.complex, ptr %invariant.gep1122, i64 %.010021116
  %174 = load float, ptr %gep1123, align 4, !tbaa !9
  %175 = fcmp une float %174, 0.000000e+00
  %.phi.trans.insert = getelementptr inbounds i8, ptr %gep1123, i64 4
  %.pre = load float, ptr %.phi.trans.insert, align 4, !tbaa !12
  %176 = fcmp une float %.pre, 0.000000e+00
  %or.cond1567 = select i1 %175, i1 true, i1 %176
  br i1 %or.cond1567, label %._crit_edge1496, label %248

._crit_edge1496:                                  ; preds = %167
  %177 = load float, ptr %6, align 4, !tbaa !9
  %178 = load float, ptr %91, align 4, !tbaa !12
  %179 = fneg float %178
  %180 = fmul float %.pre, %179
  %181 = tail call float @llvm.fmuladd.f32(float %177, float %174, float %180)
  %182 = fmul float %174, %178
  %183 = tail call float @llvm.fmuladd.f32(float %177, float %.pre, float %182)
  %.not1078.not1106 = icmp ugt i64 %.010021116, 1
  br i1 %.not1078.not1106, label %.lr.ph, label %.._crit_edge_crit_edge

.._crit_edge_crit_edge:                           ; preds = %._crit_edge1496
  %.pre1510 = fneg float %183
  br label %._crit_edge

.lr.ph:                                           ; preds = %._crit_edge1496
  %184 = mul nsw i64 %.010021116, %15
  %invariant.gep1108 = getelementptr %struct.complex, ptr %17, i64 %184
  %185 = fneg float %183
  %min.iters.check = icmp ult i64 %indvar1629, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph
  %mul.result = shl i64 %173, 3
  %186 = getelementptr i8, ptr %scevgep1633, i64 %mul.result
  %187 = icmp ult ptr %186, %scevgep1633
  %mul.result1636 = shl i64 %173, 3
  %mul.overflow1637 = icmp ugt i64 %173, 2305843009213693951
  %188 = getelementptr i8, ptr %scevgep1634, i64 %mul.result1636
  %189 = icmp ult ptr %188, %scevgep1634
  %190 = or i1 %189, %mul.overflow1637
  %191 = or i1 %187, %190
  br i1 %191, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %bound0 = icmp ult ptr %scevgep1638, %gep2323
  %bound1 = icmp ult ptr %scevgep1640, %scevgep1639
  %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 %indvar1629, 4611686018427387900
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %185, 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 %181, 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 %183, 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
  %192 = getelementptr %struct.complex, ptr %invariant.gep1108, i64 %offset.idx
  %wide.vec = load <8 x float>, ptr %192, 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>
  %193 = fmul <4 x float> %strided.vec1649, %broadcast.splat
  %194 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1651, <4 x float> %strided.vec, <4 x float> %193)
  %195 = fmul <4 x float> %broadcast.splat1653, %strided.vec
  %196 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1651, <4 x float> %strided.vec1649, <4 x float> %195)
  %197 = getelementptr %struct.complex, ptr %invariant.gep1122, i64 %offset.idx
  %wide.vec1654 = load <8 x float>, ptr %197, 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>
  %198 = fadd <4 x float> %194, %strided.vec1655
  %199 = fadd <4 x float> %196, %strided.vec1656
  %interleaved.vec = shufflevector <4 x float> %198, <4 x float> %199, <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 %197, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 4
  %200 = icmp eq i64 %index.next, %n.vec
  br i1 %200, label %middle.block, label %vector.body, !llvm.loop !22

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %indvar1629, %n.vec
  %201 = shufflevector <4 x float> %194, <4 x float> %196, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep1109.prol = getelementptr %struct.complex, ptr %invariant.gep1108, i64 %.110131107.ph
  %203 = load <2 x float>, ptr %gep1109.prol, align 4, !tbaa !13
  %204 = insertelement <2 x float> poison, float %183, i64 0
  %205 = insertelement <2 x float> %204, float %185, i64 1
  %206 = fmul <2 x float> %205, %203
  %207 = shufflevector <2 x float> %206, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %208 = insertelement <2 x float> poison, float %181, i64 0
  %209 = shufflevector <2 x float> %208, <2 x float> poison, <2 x i32> zeroinitializer
  %210 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %209, <2 x float> %203, <2 x float> %207)
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep1122, i64 %.110131107.ph
  %211 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !13
  %212 = fadd <2 x float> %210, %211
  store <2 x float> %212, ptr %gep.prol, align 4, !tbaa !13
  %213 = add nuw nsw i64 %.110131107.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa2266.unr = phi <2 x float> [ poison, %scalar.ph.preheader ], [ %210, %scalar.ph.prol ]
  %.110131107.unr = phi i64 [ %.110131107.ph, %scalar.ph.preheader ], [ %213, %scalar.ph.prol ]
  %214 = icmp eq i64 %indvar1629, %.110131107.ph
  br i1 %214, label %._crit_edge, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %215 = insertelement <2 x float> poison, float %183, i64 0
  %216 = insertelement <2 x float> %215, float %185, i64 1
  %217 = insertelement <2 x float> poison, float %181, i64 0
  %218 = shufflevector <2 x float> %217, <2 x float> poison, <2 x i32> zeroinitializer
  %219 = insertelement <2 x float> poison, float %183, i64 0
  %220 = insertelement <2 x float> %219, float %185, i64 1
  %221 = insertelement <2 x float> poison, float %181, i64 0
  %222 = shufflevector <2 x float> %221, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.110131107 = phi i64 [ %.110131107.unr, %scalar.ph.preheader.new ], [ %236, %scalar.ph ]
  %gep1109 = getelementptr %struct.complex, ptr %invariant.gep1108, i64 %.110131107
  %223 = load <2 x float>, ptr %gep1109, align 4, !tbaa !13
  %224 = fmul <2 x float> %216, %223
  %225 = shufflevector <2 x float> %224, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %226 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %218, <2 x float> %223, <2 x float> %225)
  %gep = getelementptr %struct.complex, ptr %invariant.gep1122, i64 %.110131107
  %227 = load <2 x float>, ptr %gep, align 4, !tbaa !13
  %228 = fadd <2 x float> %226, %227
  store <2 x float> %228, ptr %gep, align 4, !tbaa !13
  %229 = add nuw nsw i64 %.110131107, 1
  %gep1109.1 = getelementptr %struct.complex, ptr %invariant.gep1108, i64 %229
  %230 = load <2 x float>, ptr %gep1109.1, align 4, !tbaa !13
  %231 = fmul <2 x float> %220, %230
  %232 = shufflevector <2 x float> %231, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %233 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %222, <2 x float> %230, <2 x float> %232)
  %gep.1 = getelementptr %struct.complex, ptr %invariant.gep1122, i64 %229
  %234 = load <2 x float>, ptr %gep.1, align 4, !tbaa !13
  %235 = fadd <2 x float> %233, %234
  store <2 x float> %235, ptr %gep.1, align 4, !tbaa !13
  %236 = add nuw nsw i64 %.110131107, 2
  %exitcond.not.1 = icmp eq i64 %236, %.010021116
  br i1 %exitcond.not.1, label %._crit_edge, label %scalar.ph, !llvm.loop !23

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.._crit_edge_crit_edge
  %.pre-phi = phi float [ %.pre1510, %.._crit_edge_crit_edge ], [ %185, %middle.block ], [ %185, %scalar.ph ], [ %185, %scalar.ph.prol.loopexit ]
  %237 = phi <2 x float> [ %168, %.._crit_edge_crit_edge ], [ %201, %middle.block ], [ %.lcssa2266.unr, %scalar.ph.prol.loopexit ], [ %233, %scalar.ph ]
  %238 = mul i64 %.010021116, %92
  %239 = getelementptr inbounds %struct.complex, ptr %17, i64 %238
  %240 = load <2 x float>, ptr %239, align 4, !tbaa !13
  %241 = insertelement <2 x float> poison, float %183, i64 0
  %242 = insertelement <2 x float> %241, float %.pre-phi, i64 1
  %243 = fmul <2 x float> %240, %242
  %244 = shufflevector <2 x float> %243, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %245 = insertelement <2 x float> poison, float %181, i64 0
  %246 = shufflevector <2 x float> %245, <2 x float> poison, <2 x i32> zeroinitializer
  %247 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %246, <2 x float> %240, <2 x float> %244)
  store <2 x float> %247, ptr %gep1123, align 4, !tbaa !13
  br label %248

248:                                              ; preds = %167, %._crit_edge
  %249 = phi <2 x float> [ %237, %._crit_edge ], [ %168, %167 ]
  %250 = add nuw i64 %.010021116, 1
  %exitcond1471.not = icmp eq i64 %.010021116, %90
  %indvar.next1630 = add i64 %indvar1629, 1
  br i1 %exitcond1471.not, label %._crit_edge1120.split, label %167, !llvm.loop !16

._crit_edge1120.split:                            ; preds = %248
  %251 = add nuw i64 %.110041132, 1
  %exitcond1472.not = icmp eq i64 %.110041132, %86
  %indvar.next1632 = add i64 %indvar1631, 1
  br i1 %exitcond1472.not, label %.loopexit, label %.lr.ph1119, !llvm.loop !21

252:                                              ; preds = %88
  br i1 %.not10591285, label %.loopexit, label %.lr.ph1182

.lr.ph1182:                                       ; preds = %252
  %253 = load i64, ptr %4, align 8, !tbaa !5
  %254 = icmp sgt i64 %253, 0
  %255 = getelementptr inbounds i8, ptr %6, i64 4
  %256 = add i64 %15, 1
  br i1 %254, label %.lr.ph1182.split.us, label %.loopexit

.lr.ph1182.split.us:                              ; preds = %.lr.ph1182
  %.not1074 = icmp eq i64 %.fr, 0
  %257 = shl i64 %253, 3
  %258 = shl i64 %18, 3
  %259 = or disjoint i64 %257, 4
  %260 = shl i64 %18, 3
  %261 = add i64 %257, -8
  %262 = mul i64 %15, %261
  %263 = add i64 %262, %257
  %264 = shl i64 %15, 3
  %265 = sub nuw nsw i64 -8, %264
  %266 = mul i64 %15, -8
  %267 = or disjoint i64 %257, 4
  %268 = or disjoint i64 %263, 4
  br i1 %.not1074, label %.lr.ph1167.us.us.preheader, label %.lr.ph1167.us.preheader

.lr.ph1167.us.preheader:                          ; preds = %.lr.ph1182.split.us
  %269 = getelementptr i8, ptr %9, i64 %257
  %270 = getelementptr i8, ptr %269, i64 -4
  %271 = getelementptr i8, ptr %7, i64 %263
  %272 = getelementptr i8, ptr %7, i64 %263
  %273 = getelementptr i8, ptr %272, i64 -4
  %274 = getelementptr i8, ptr %9, i64 %267
  %275 = getelementptr i8, ptr %7, i64 %268
  %276 = getelementptr i8, ptr %7, i64 %263
  %277 = getelementptr i8, ptr %9, i64 %257
  %278 = getelementptr i8, ptr %9, i64 %259
  br label %.lr.ph1167.us

.lr.ph1167.us.us.preheader:                       ; preds = %.lr.ph1182.split.us
  %279 = getelementptr i8, ptr %9, i64 %257
  %280 = getelementptr i8, ptr %279, i64 -4
  %281 = getelementptr i8, ptr %7, i64 %263
  %282 = getelementptr i8, ptr %7, i64 %263
  %283 = getelementptr i8, ptr %282, i64 -4
  %284 = getelementptr i8, ptr %9, i64 %267
  %285 = getelementptr i8, ptr %7, i64 %268
  %286 = getelementptr i8, ptr %7, i64 %263
  %287 = getelementptr i8, ptr %9, i64 %257
  %288 = getelementptr i8, ptr %9, i64 %259
  br label %.lr.ph1167.us.us

.lr.ph1167.us.us:                                 ; preds = %.lr.ph1167.us.us.preheader, %._crit_edge1168.split.us.us.us
  %indvar1770 = phi i64 [ %indvar.next1771, %._crit_edge1168.split.us.us.us ], [ 0, %.lr.ph1167.us.us.preheader ]
  %.210051180.us.us = phi i64 [ %352, %._crit_edge1168.split.us.us.us ], [ 1, %.lr.ph1167.us.us.preheader ]
  %289 = phi <2 x float> [ %320, %._crit_edge1168.split.us.us.us ], [ undef, %.lr.ph1167.us.us.preheader ]
  %290 = mul i64 %260, %indvar1770
  %291 = add i64 %257, %290
  %scevgep1782 = getelementptr i8, ptr %280, i64 %290
  %scevgep1786 = getelementptr i8, ptr %9, i64 %291
  %292 = mul i64 %258, %indvar1770
  %293 = mul nsw i64 %.210051180.us.us, %18
  %invariant.gep1170.us.us = getelementptr %struct.complex, ptr %20, i64 %293
  %294 = getelementptr i8, ptr %9, i64 %291
  %295 = getelementptr i8, ptr %284, i64 %290
  %296 = getelementptr i8, ptr %287, i64 %292
  %297 = getelementptr i8, ptr %288, i64 %292
  br label %298

298:                                              ; preds = %.loopexit1103.us.us.us, %.lr.ph1167.us.us
  %indvar1768 = phi i64 [ %indvar.next1769, %.loopexit1103.us.us.us ], [ 0, %.lr.ph1167.us.us ]
  %.11164.us.us.us = phi i64 [ %321, %.loopexit1103.us.us.us ], [ %253, %.lr.ph1167.us.us ]
  %299 = phi <2 x float> [ %320, %.loopexit1103.us.us.us ], [ %289, %.lr.ph1167.us.us ]
  %300 = mul i64 %indvar1768, -8
  %scevgep1781 = getelementptr i8, ptr %294, i64 %300
  %301 = mul i64 %265, %indvar1768
  %scevgep1783 = getelementptr i8, ptr %281, i64 %301
  %302 = mul i64 %266, %indvar1768
  %scevgep1784 = getelementptr i8, ptr %283, i64 %302
  %scevgep1785 = getelementptr i8, ptr %295, i64 %300
  %scevgep1787 = getelementptr i8, ptr %285, i64 %301
  %scevgep1788 = getelementptr i8, ptr %286, i64 %302
  %303 = add i64 %indvar1768, -1
  %304 = mul i64 %indvar1768, -8
  %scevgep1772 = getelementptr i8, ptr %296, i64 %304
  %scevgep1776 = getelementptr i8, ptr %297, i64 %304
  %gep1171.us.us.us = getelementptr %struct.complex, ptr %invariant.gep1170.us.us, i64 %.11164.us.us.us
  %305 = load <2 x float>, ptr %gep1171.us.us.us, align 4, !tbaa !13
  %306 = extractelement <2 x float> %305, i64 0
  %307 = fcmp une float %306, 0.000000e+00
  %308 = extractelement <2 x float> %305, i64 1
  %309 = fcmp une float %308, 0.000000e+00
  %or.cond1568 = select i1 %307, i1 true, i1 %309
  br i1 %or.cond1568, label %._crit_edge1503, label %.loopexit1103.us.us.us

._crit_edge1503:                                  ; preds = %298
  %310 = load float, ptr %6, align 4, !tbaa !9
  %311 = load float, ptr %255, align 4, !tbaa !12
  %312 = fneg float %311
  %313 = insertelement <2 x float> poison, float %311, i64 0
  %314 = insertelement <2 x float> %313, float %312, i64 1
  %315 = fmul <2 x float> %305, %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 %310, i64 0
  %318 = shufflevector <2 x float> %317, <2 x float> poison, <2 x i32> zeroinitializer
  %319 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %318, <2 x float> %305, <2 x float> %316)
  store <2 x float> %319, ptr %gep1171.us.us.us, align 4, !tbaa !13
  %.not1075.not1152.us.us.us = icmp slt i64 %.11164.us.us.us, %253
  br i1 %.not1075.not1152.us.us.us, label %.lr.ph1155.us.us.us, label %.loopexit1103.us.us.us

.loopexit1103.us.us.us:                           ; preds = %scalar.ph1797, %middle.block1796, %298, %._crit_edge1503
  %320 = phi <2 x float> [ %299, %._crit_edge1503 ], [ %299, %298 ], [ %351, %middle.block1796 ], [ %326, %scalar.ph1797 ]
  %321 = add nsw i64 %.11164.us.us.us, -1
  %322 = icmp sgt i64 %.11164.us.us.us, 1
  %indvar.next1769 = add i64 %indvar1768, 1
  br i1 %322, label %298, label %._crit_edge1168.split.us.us.us, !llvm.loop !24

scalar.ph1797:                                    ; preds = %scalar.ph1797.preheader, %scalar.ph1797
  %.21014.in1153.us.us.us = phi i64 [ %.21014.us.us.us, %scalar.ph1797 ], [ %.21014.in1153.us.us.us.ph, %scalar.ph1797.preheader ]
  %.21014.us.us.us = add nuw nsw i64 %.21014.in1153.us.us.us, 1
  %gep1158.us.us.us = getelementptr %struct.complex, ptr %invariant.gep1157.us.us.us, i64 %.21014.us.us.us
  %323 = load <2 x float>, ptr %gep1158.us.us.us, align 4, !tbaa !13
  %324 = fmul <2 x float> %333, %323
  %325 = shufflevector <2 x float> %324, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %326 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %334, <2 x float> %323, <2 x float> %325)
  %gep1150.us.us.us = getelementptr %struct.complex, ptr %invariant.gep1170.us.us, i64 %.21014.us.us.us
  %327 = load <2 x float>, ptr %gep1150.us.us.us, align 4, !tbaa !13
  %328 = fadd <2 x float> %326, %327
  store <2 x float> %328, ptr %gep1150.us.us.us, align 4, !tbaa !13
  %exitcond1478.not = icmp eq i64 %.21014.us.us.us, %253
  br i1 %exitcond1478.not, label %.loopexit1103.us.us.us, label %scalar.ph1797, !llvm.loop !25

.lr.ph1155.us.us.us:                              ; preds = %._crit_edge1503
  %329 = mul nsw i64 %.11164.us.us.us, %15
  %invariant.gep1157.us.us.us = getelementptr %struct.complex, ptr %17, i64 %329
  %330 = extractelement <2 x float> %319, i64 1
  %331 = fneg float %330
  %min.iters.check1798 = icmp ult i64 %indvar1768, 8
  br i1 %min.iters.check1798, label %scalar.ph1797.preheader, label %vector.scevcheck1767

scalar.ph1797.preheader:                          ; preds = %middle.block1796, %vector.memcheck1780, %vector.scevcheck1767, %.lr.ph1155.us.us.us
  %.21014.in1153.us.us.us.ph = phi i64 [ %.11164.us.us.us, %vector.memcheck1780 ], [ %.11164.us.us.us, %vector.scevcheck1767 ], [ %.11164.us.us.us, %.lr.ph1155.us.us.us ], [ %ind.end1802, %middle.block1796 ]
  %332 = shufflevector <2 x float> %319, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %333 = insertelement <2 x float> %332, float %331, i64 1
  %334 = shufflevector <2 x float> %319, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1797

vector.scevcheck1767:                             ; preds = %.lr.ph1155.us.us.us
  %mul.result1774 = shl i64 %303, 3
  %335 = getelementptr i8, ptr %scevgep1772, i64 %mul.result1774
  %336 = icmp ult ptr %335, %scevgep1772
  %mul.result1778 = shl i64 %303, 3
  %mul.overflow1779 = icmp ugt i64 %303, 2305843009213693951
  %337 = getelementptr i8, ptr %scevgep1776, i64 %mul.result1778
  %338 = icmp ult ptr %337, %scevgep1776
  %339 = or i1 %338, %mul.overflow1779
  %340 = or i1 %336, %339
  br i1 %340, label %scalar.ph1797.preheader, label %vector.memcheck1780

vector.memcheck1780:                              ; preds = %vector.scevcheck1767
  %bound01789 = icmp ult ptr %scevgep1781, %scevgep1784
  %bound11790 = icmp ult ptr %scevgep1783, %scevgep1782
  %found.conflict1791 = and i1 %bound01789, %bound11790
  %bound01792 = icmp ult ptr %scevgep1785, %scevgep1788
  %bound11793 = icmp ult ptr %scevgep1787, %scevgep1786
  %found.conflict1794 = and i1 %bound01792, %bound11793
  %conflict.rdx1795 = or i1 %found.conflict1791, %found.conflict1794
  br i1 %conflict.rdx1795, label %scalar.ph1797.preheader, label %vector.ph1799

vector.ph1799:                                    ; preds = %vector.memcheck1780
  %n.vec1801 = and i64 %indvar1768, 4611686018427387900
  %ind.end1802 = add i64 %.11164.us.us.us, %n.vec1801
  %broadcast.splatinsert1810 = insertelement <4 x float> poison, float %331, i64 0
  %broadcast.splat1811 = shufflevector <4 x float> %broadcast.splatinsert1810, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1813 = shufflevector <2 x float> %319, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1815 = shufflevector <2 x float> %319, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body1804

vector.body1804:                                  ; preds = %vector.body1804, %vector.ph1799
  %index1805 = phi i64 [ 0, %vector.ph1799 ], [ %index.next1820, %vector.body1804 ]
  %offset.idx1806 = add i64 %.11164.us.us.us, %index1805
  %341 = add nuw nsw i64 %offset.idx1806, 1
  %342 = getelementptr %struct.complex, ptr %invariant.gep1157.us.us.us, i64 %341
  %wide.vec1807 = load <8 x float>, ptr %342, align 4, !tbaa !13
  %strided.vec1808 = shufflevector <8 x float> %wide.vec1807, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1809 = shufflevector <8 x float> %wide.vec1807, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %343 = fmul <4 x float> %strided.vec1809, %broadcast.splat1811
  %344 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1813, <4 x float> %strided.vec1808, <4 x float> %343)
  %345 = fmul <4 x float> %broadcast.splat1815, %strided.vec1808
  %346 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1813, <4 x float> %strided.vec1809, <4 x float> %345)
  %347 = getelementptr %struct.complex, ptr %invariant.gep1170.us.us, i64 %341
  %wide.vec1816 = load <8 x float>, ptr %347, align 4, !tbaa !13
  %strided.vec1817 = shufflevector <8 x float> %wide.vec1816, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1818 = shufflevector <8 x float> %wide.vec1816, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %348 = fadd <4 x float> %344, %strided.vec1817
  %349 = fadd <4 x float> %346, %strided.vec1818
  %interleaved.vec1819 = shufflevector <4 x float> %348, <4 x float> %349, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1819, ptr %347, align 4, !tbaa !13
  %index.next1820 = add nuw i64 %index1805, 4
  %350 = icmp eq i64 %index.next1820, %n.vec1801
  br i1 %350, label %middle.block1796, label %vector.body1804, !llvm.loop !26

middle.block1796:                                 ; preds = %vector.body1804
  %cmp.n1821 = icmp eq i64 %indvar1768, %n.vec1801
  %351 = shufflevector <4 x float> %344, <4 x float> %346, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1821, label %.loopexit1103.us.us.us, label %scalar.ph1797.preheader

._crit_edge1168.split.us.us.us:                   ; preds = %.loopexit1103.us.us.us
  %352 = add nuw i64 %.210051180.us.us, 1
  %exitcond1479.not = icmp eq i64 %.210051180.us.us, %86
  %indvar.next1771 = add i64 %indvar1770, 1
  br i1 %exitcond1479.not, label %.loopexit, label %.lr.ph1167.us.us, !llvm.loop !27

.lr.ph1167.us:                                    ; preds = %.lr.ph1167.us.preheader, %._crit_edge1168.split.us1207
  %indvar1715 = phi i64 [ %indvar.next1716, %._crit_edge1168.split.us1207 ], [ 0, %.lr.ph1167.us.preheader ]
  %.210051180.us = phi i64 [ %436, %._crit_edge1168.split.us1207 ], [ 1, %.lr.ph1167.us.preheader ]
  %353 = phi <2 x float> [ %395, %._crit_edge1168.split.us1207 ], [ undef, %.lr.ph1167.us.preheader ]
  %354 = mul i64 %260, %indvar1715
  %355 = add i64 %257, %354
  %scevgep1727 = getelementptr i8, ptr %270, i64 %354
  %scevgep1731 = getelementptr i8, ptr %9, i64 %355
  %356 = mul i64 %258, %indvar1715
  %357 = mul nsw i64 %.210051180.us, %18
  %invariant.gep1170.us = getelementptr %struct.complex, ptr %20, i64 %357
  %358 = getelementptr i8, ptr %9, i64 %355
  %359 = getelementptr i8, ptr %274, i64 %354
  %360 = getelementptr i8, ptr %277, i64 %356
  %361 = getelementptr i8, ptr %278, i64 %356
  br label %362

362:                                              ; preds = %.lr.ph1167.us, %.loopexit1103.us1199
  %indvar1713 = phi i64 [ 0, %.lr.ph1167.us ], [ %indvar.next1714, %.loopexit1103.us1199 ]
  %.11164.us1188 = phi i64 [ %253, %.lr.ph1167.us ], [ %396, %.loopexit1103.us1199 ]
  %363 = phi <2 x float> [ %353, %.lr.ph1167.us ], [ %395, %.loopexit1103.us1199 ]
  %364 = mul i64 %indvar1713, -8
  %scevgep1726 = getelementptr i8, ptr %358, i64 %364
  %365 = mul i64 %265, %indvar1713
  %scevgep1728 = getelementptr i8, ptr %271, i64 %365
  %366 = mul i64 %266, %indvar1713
  %scevgep1729 = getelementptr i8, ptr %273, i64 %366
  %scevgep1730 = getelementptr i8, ptr %359, i64 %364
  %scevgep1732 = getelementptr i8, ptr %275, i64 %365
  %scevgep1733 = getelementptr i8, ptr %276, i64 %366
  %367 = add i64 %indvar1713, -1
  %368 = mul i64 %indvar1713, -8
  %scevgep1717 = getelementptr i8, ptr %360, i64 %368
  %scevgep1721 = getelementptr i8, ptr %361, i64 %368
  %gep1171.us1190 = getelementptr %struct.complex, ptr %invariant.gep1170.us, i64 %.11164.us1188
  %369 = load <2 x float>, ptr %gep1171.us1190, align 4, !tbaa !13
  %370 = extractelement <2 x float> %369, i64 0
  %371 = fcmp une float %370, 0.000000e+00
  %372 = extractelement <2 x float> %369, i64 1
  %373 = fcmp une float %372, 0.000000e+00
  %or.cond1569 = select i1 %371, i1 true, i1 %373
  br i1 %or.cond1569, label %._crit_edge1500, label %.loopexit1103.us1199

._crit_edge1500:                                  ; preds = %362
  %374 = load float, ptr %6, align 4, !tbaa !9
  %375 = load float, ptr %255, align 4, !tbaa !12
  %376 = fneg float %375
  %377 = insertelement <2 x float> poison, float %375, i64 0
  %378 = insertelement <2 x float> %377, float %376, i64 1
  %379 = fmul <2 x float> %369, %378
  %380 = shufflevector <2 x float> %379, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %381 = insertelement <2 x float> poison, float %374, i64 0
  %382 = shufflevector <2 x float> %381, <2 x float> poison, <2 x i32> zeroinitializer
  %383 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %382, <2 x float> %369, <2 x float> %380)
  store <2 x float> %383, ptr %gep1171.us1190, align 4, !tbaa !13
  %384 = mul i64 %.11164.us1188, %256
  %385 = getelementptr inbounds %struct.complex, ptr %17, i64 %384
  %386 = extractelement <2 x float> %383, i64 1
  %387 = fneg float %386
  %388 = load <2 x float>, ptr %385, align 4, !tbaa !13
  %389 = shufflevector <2 x float> %383, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %390 = insertelement <2 x float> %389, float %387, i64 1
  %391 = fmul <2 x float> %388, %390
  %392 = shufflevector <2 x float> %391, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %393 = shufflevector <2 x float> %383, <2 x float> poison, <2 x i32> zeroinitializer
  %394 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %393, <2 x float> %388, <2 x float> %392)
  store <2 x float> %394, ptr %gep1171.us1190, align 4, !tbaa !13
  %.not1075.not1152.us1191 = icmp slt i64 %.11164.us1188, %253
  br i1 %.not1075.not1152.us1191, label %.lr.ph1155.us1202, label %.loopexit1103.us1199

.loopexit1103.us1199:                             ; preds = %scalar.ph1742.prol.loopexit, %scalar.ph1742, %middle.block1741, %362, %._crit_edge1500
  %395 = phi <2 x float> [ %363, %._crit_edge1500 ], [ %363, %362 ], [ %435, %middle.block1741 ], [ %.lcssa2256.unr, %scalar.ph1742.prol.loopexit ], [ %407, %scalar.ph1742 ]
  %396 = add nsw i64 %.11164.us1188, -1
  %397 = icmp sgt i64 %.11164.us1188, 1
  %indvar.next1714 = add i64 %indvar1713, 1
  br i1 %397, label %362, label %._crit_edge1168.split.us1207, !llvm.loop !24

scalar.ph1742:                                    ; preds = %scalar.ph1742.prol.loopexit, %scalar.ph1742
  %.21014.in1153.us1194 = phi i64 [ %.21014.us1195.1, %scalar.ph1742 ], [ %.21014.in1153.us1194.unr, %scalar.ph1742.prol.loopexit ]
  %.21014.us1195 = add nuw nsw i64 %.21014.in1153.us1194, 1
  %gep1158.us1196 = getelementptr %struct.complex, ptr %invariant.gep1157.us1203, i64 %.21014.us1195
  %398 = load <2 x float>, ptr %gep1158.us1196, align 4, !tbaa !13
  %399 = fmul <2 x float> %390, %398
  %400 = shufflevector <2 x float> %399, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %401 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %393, <2 x float> %398, <2 x float> %400)
  %gep1150.us1197 = getelementptr %struct.complex, ptr %invariant.gep1170.us, i64 %.21014.us1195
  %402 = load <2 x float>, ptr %gep1150.us1197, align 4, !tbaa !13
  %403 = fadd <2 x float> %401, %402
  store <2 x float> %403, ptr %gep1150.us1197, align 4, !tbaa !13
  %.21014.us1195.1 = add nuw nsw i64 %.21014.in1153.us1194, 2
  %gep1158.us1196.1 = getelementptr %struct.complex, ptr %invariant.gep1157.us1203, i64 %.21014.us1195.1
  %404 = load <2 x float>, ptr %gep1158.us1196.1, align 4, !tbaa !13
  %405 = fmul <2 x float> %390, %404
  %406 = shufflevector <2 x float> %405, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %407 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %393, <2 x float> %404, <2 x float> %406)
  %gep1150.us1197.1 = getelementptr %struct.complex, ptr %invariant.gep1170.us, i64 %.21014.us1195.1
  %408 = load <2 x float>, ptr %gep1150.us1197.1, align 4, !tbaa !13
  %409 = fadd <2 x float> %407, %408
  store <2 x float> %409, ptr %gep1150.us1197.1, align 4, !tbaa !13
  %exitcond1476.not.1 = icmp eq i64 %.21014.us1195.1, %253
  br i1 %exitcond1476.not.1, label %.loopexit1103.us1199, label %scalar.ph1742, !llvm.loop !28

.lr.ph1155.us1202:                                ; preds = %._crit_edge1500
  %410 = mul nsw i64 %.11164.us1188, %15
  %invariant.gep1157.us1203 = getelementptr %struct.complex, ptr %17, i64 %410
  %min.iters.check1743 = icmp ult i64 %indvar1713, 8
  br i1 %min.iters.check1743, label %scalar.ph1742.preheader, label %vector.scevcheck1712

scalar.ph1742.preheader:                          ; preds = %middle.block1741, %vector.memcheck1725, %vector.scevcheck1712, %.lr.ph1155.us1202
  %.21014.in1153.us1194.ph = phi i64 [ %.11164.us1188, %vector.memcheck1725 ], [ %.11164.us1188, %vector.scevcheck1712 ], [ %.11164.us1188, %.lr.ph1155.us1202 ], [ %ind.end1747, %middle.block1741 ]
  %411 = sub i64 %253, %.21014.in1153.us1194.ph
  %.neg = add i64 %.21014.in1153.us1194.ph, 1
  %xtraiter2268 = and i64 %411, 1
  %lcmp.mod2269.not = icmp eq i64 %xtraiter2268, 0
  br i1 %lcmp.mod2269.not, label %scalar.ph1742.prol.loopexit, label %scalar.ph1742.prol

scalar.ph1742.prol:                               ; preds = %scalar.ph1742.preheader
  %.21014.us1195.prol = add nuw nsw i64 %.21014.in1153.us1194.ph, 1
  %gep1158.us1196.prol = getelementptr %struct.complex, ptr %invariant.gep1157.us1203, i64 %.21014.us1195.prol
  %412 = load <2 x float>, ptr %gep1158.us1196.prol, align 4, !tbaa !13
  %413 = fmul <2 x float> %390, %412
  %414 = shufflevector <2 x float> %413, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %415 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %393, <2 x float> %412, <2 x float> %414)
  %gep1150.us1197.prol = getelementptr %struct.complex, ptr %invariant.gep1170.us, i64 %.21014.us1195.prol
  %416 = load <2 x float>, ptr %gep1150.us1197.prol, align 4, !tbaa !13
  %417 = fadd <2 x float> %415, %416
  store <2 x float> %417, ptr %gep1150.us1197.prol, align 4, !tbaa !13
  br label %scalar.ph1742.prol.loopexit

scalar.ph1742.prol.loopexit:                      ; preds = %scalar.ph1742.prol, %scalar.ph1742.preheader
  %.lcssa2256.unr = phi <2 x float> [ poison, %scalar.ph1742.preheader ], [ %415, %scalar.ph1742.prol ]
  %.21014.in1153.us1194.unr = phi i64 [ %.21014.in1153.us1194.ph, %scalar.ph1742.preheader ], [ %.21014.us1195.prol, %scalar.ph1742.prol ]
  %418 = icmp eq i64 %253, %.neg
  br i1 %418, label %.loopexit1103.us1199, label %scalar.ph1742

vector.scevcheck1712:                             ; preds = %.lr.ph1155.us1202
  %mul.result1719 = shl i64 %367, 3
  %419 = getelementptr i8, ptr %scevgep1717, i64 %mul.result1719
  %420 = icmp ult ptr %419, %scevgep1717
  %mul.result1723 = shl i64 %367, 3
  %mul.overflow1724 = icmp ugt i64 %367, 2305843009213693951
  %421 = getelementptr i8, ptr %scevgep1721, i64 %mul.result1723
  %422 = icmp ult ptr %421, %scevgep1721
  %423 = or i1 %422, %mul.overflow1724
  %424 = or i1 %420, %423
  br i1 %424, label %scalar.ph1742.preheader, label %vector.memcheck1725

vector.memcheck1725:                              ; preds = %vector.scevcheck1712
  %bound01734 = icmp ult ptr %scevgep1726, %scevgep1729
  %bound11735 = icmp ult ptr %scevgep1728, %scevgep1727
  %found.conflict1736 = and i1 %bound01734, %bound11735
  %bound01737 = icmp ult ptr %scevgep1730, %scevgep1733
  %bound11738 = icmp ult ptr %scevgep1732, %scevgep1731
  %found.conflict1739 = and i1 %bound01737, %bound11738
  %conflict.rdx1740 = or i1 %found.conflict1736, %found.conflict1739
  br i1 %conflict.rdx1740, label %scalar.ph1742.preheader, label %vector.ph1744

vector.ph1744:                                    ; preds = %vector.memcheck1725
  %n.vec1746 = and i64 %indvar1713, 4611686018427387900
  %ind.end1747 = add i64 %.11164.us1188, %n.vec1746
  %broadcast.splatinsert1755 = insertelement <4 x float> poison, float %387, i64 0
  %broadcast.splat1756 = shufflevector <4 x float> %broadcast.splatinsert1755, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1758 = shufflevector <2 x float> %383, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1760 = shufflevector <2 x float> %383, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body1749

vector.body1749:                                  ; preds = %vector.body1749, %vector.ph1744
  %index1750 = phi i64 [ 0, %vector.ph1744 ], [ %index.next1765, %vector.body1749 ]
  %offset.idx1751 = add i64 %.11164.us1188, %index1750
  %425 = add nuw nsw i64 %offset.idx1751, 1
  %426 = getelementptr %struct.complex, ptr %invariant.gep1157.us1203, i64 %425
  %wide.vec1752 = load <8 x float>, ptr %426, align 4, !tbaa !13
  %strided.vec1753 = shufflevector <8 x float> %wide.vec1752, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1754 = shufflevector <8 x float> %wide.vec1752, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %427 = fmul <4 x float> %strided.vec1754, %broadcast.splat1756
  %428 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1758, <4 x float> %strided.vec1753, <4 x float> %427)
  %429 = fmul <4 x float> %broadcast.splat1760, %strided.vec1753
  %430 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1758, <4 x float> %strided.vec1754, <4 x float> %429)
  %431 = getelementptr %struct.complex, ptr %invariant.gep1170.us, i64 %425
  %wide.vec1761 = load <8 x float>, ptr %431, align 4, !tbaa !13
  %strided.vec1762 = shufflevector <8 x float> %wide.vec1761, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1763 = shufflevector <8 x float> %wide.vec1761, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %432 = fadd <4 x float> %428, %strided.vec1762
  %433 = fadd <4 x float> %430, %strided.vec1763
  %interleaved.vec1764 = shufflevector <4 x float> %432, <4 x float> %433, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1764, ptr %431, align 4, !tbaa !13
  %index.next1765 = add nuw i64 %index1750, 4
  %434 = icmp eq i64 %index.next1765, %n.vec1746
  br i1 %434, label %middle.block1741, label %vector.body1749, !llvm.loop !29

middle.block1741:                                 ; preds = %vector.body1749
  %cmp.n1766 = icmp eq i64 %indvar1713, %n.vec1746
  %435 = shufflevector <4 x float> %428, <4 x float> %430, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1766, label %.loopexit1103.us1199, label %scalar.ph1742.preheader

._crit_edge1168.split.us1207:                     ; preds = %.loopexit1103.us1199
  %436 = add nuw i64 %.210051180.us, 1
  %exitcond1477.not = icmp eq i64 %.210051180.us, %86
  %indvar.next1716 = add i64 %indvar1715, 1
  br i1 %exitcond1477.not, label %.loopexit, label %.lr.ph1167.us, !llvm.loop !27

437:                                              ; preds = %87
  br i1 %.not1024, label %533, label %438

438:                                              ; preds = %437
  br i1 %.not10591285, label %.loopexit, label %.lr.ph1250

.lr.ph1250:                                       ; preds = %438
  %.not1067 = icmp eq i64 %22, 0
  %.not1070 = icmp eq i64 %.fr, 0
  %439 = add i64 %15, 1
  %440 = getelementptr inbounds i8, ptr %13, i64 4
  %441 = getelementptr inbounds i8, ptr %6, i64 4
  %442 = load i64, ptr %4, align 8, !tbaa !5
  %443 = icmp sgt i64 %442, 0
  br i1 %443, label %.lr.ph1250.split, label %.loopexit

.lr.ph1250.splitthread-pre-split:                 ; preds = %._crit_edge1244
  %444 = add nuw i64 %.310061248, 1
  %.pr = load i64, ptr %4, align 8, !tbaa !5
  br label %.lr.ph1250.split

.lr.ph1250.split:                                 ; preds = %.lr.ph1250, %.lr.ph1250.splitthread-pre-split
  %445 = phi i64 [ %.pr, %.lr.ph1250.splitthread-pre-split ], [ %442, %.lr.ph1250 ]
  %.310061248 = phi i64 [ %444, %.lr.ph1250.splitthread-pre-split ], [ 1, %.lr.ph1250 ]
  %446 = icmp sgt i64 %445, 0
  br i1 %446, label %.lr.ph1243, label %._crit_edge1244

.lr.ph1243:                                       ; preds = %.lr.ph1250.split
  %447 = mul nsw i64 %.310061248, %18
  %invariant.gep1245 = getelementptr %struct.complex, ptr %20, i64 %447
  br i1 %.not1067, label %.lr.ph1243.split.us, label %.lr.ph1243.split

.lr.ph1243.split.us:                              ; preds = %.lr.ph1243, %.loopexit1100.us
  %.310151240.us = phi i64 [ %488, %.loopexit1100.us ], [ %445, %.lr.ph1243 ]
  %gep1246.us = getelementptr %struct.complex, ptr %invariant.gep1245, i64 %.310151240.us
  %448 = load <2 x float>, ptr %gep1246.us, align 4, !tbaa !13
  br i1 %.not1070, label %460, label %449

449:                                              ; preds = %.lr.ph1243.split.us
  %450 = mul i64 %.310151240.us, %439
  %451 = getelementptr inbounds %struct.complex, ptr %17, i64 %450
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef %451) #6
  %452 = load <2 x float>, ptr %12, align 8, !tbaa !13
  %453 = shufflevector <2 x float> %448, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %454 = fneg <2 x float> %448
  %455 = shufflevector <2 x float> %453, <2 x float> %454, <2 x i32> <i32 0, i32 3>
  %456 = fmul <2 x float> %452, %455
  %457 = shufflevector <2 x float> %456, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %458 = shufflevector <2 x float> %448, <2 x float> poison, <2 x i32> zeroinitializer
  %459 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %458, <2 x float> %452, <2 x float> %457)
  br label %460

460:                                              ; preds = %449, %.lr.ph1243.split.us
  %461 = phi <2 x float> [ %459, %449 ], [ %448, %.lr.ph1243.split.us ]
  %.not1069.not1230.us = icmp sgt i64 %.310151240.us, 1
  br i1 %.not1069.not1230.us, label %.lr.ph1235.us, label %.loopexit1100.us

462:                                              ; preds = %.lr.ph1235.us, %462
  %.31231.us = phi i64 [ 1, %.lr.ph1235.us ], [ %476, %462 ]
  %463 = phi <2 x float> [ %461, %.lr.ph1235.us ], [ %475, %462 ]
  %gep1239.us = getelementptr %struct.complex, ptr %invariant.gep1238.us, i64 %.31231.us
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %gep1239.us) #6
  %464 = load float, ptr %13, align 4, !tbaa !9
  %gep1229.us = getelementptr %struct.complex, ptr %invariant.gep1245, i64 %.31231.us
  %465 = load float, ptr %440, align 4, !tbaa !12
  %466 = fneg float %465
  %467 = load <2 x float>, ptr %gep1229.us, align 4, !tbaa !13
  %468 = insertelement <2 x float> poison, float %465, i64 0
  %469 = insertelement <2 x float> %468, float %466, i64 1
  %470 = fmul <2 x float> %467, %469
  %471 = shufflevector <2 x float> %470, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %472 = insertelement <2 x float> poison, float %464, i64 0
  %473 = shufflevector <2 x float> %472, <2 x float> poison, <2 x i32> zeroinitializer
  %474 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %473, <2 x float> %467, <2 x float> %471)
  store <2 x float> %474, ptr %12, align 8, !tbaa !13
  %475 = fadd <2 x float> %463, %474
  %476 = add nuw nsw i64 %.31231.us, 1
  %.not1069.not.us = icmp slt i64 %476, %.310151240.us
  br i1 %.not1069.not.us, label %462, label %.loopexit1100.us, !llvm.loop !30

.loopexit1100.us:                                 ; preds = %462, %460
  %477 = phi <2 x float> [ %461, %460 ], [ %475, %462 ]
  %478 = load float, ptr %6, align 4, !tbaa !9
  %479 = load float, ptr %441, align 4, !tbaa !12
  %480 = fneg float %479
  %481 = insertelement <2 x float> poison, float %479, i64 0
  %482 = insertelement <2 x float> %481, float %480, i64 1
  %483 = fmul <2 x float> %477, %482
  %484 = shufflevector <2 x float> %483, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %485 = insertelement <2 x float> poison, float %478, i64 0
  %486 = shufflevector <2 x float> %485, <2 x float> poison, <2 x i32> zeroinitializer
  %487 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %486, <2 x float> %477, <2 x float> %484)
  store <2 x float> %487, ptr %gep1246.us, align 4, !tbaa !13
  %488 = add nsw i64 %.310151240.us, -1
  br i1 %.not1069.not1230.us, label %.lr.ph1243.split.us, label %._crit_edge1244, !llvm.loop !31

.lr.ph1235.us:                                    ; preds = %460
  %489 = mul nsw i64 %.310151240.us, %15
  %invariant.gep1238.us = getelementptr %struct.complex, ptr %17, i64 %489
  br label %462

.lr.ph1243.split:                                 ; preds = %.lr.ph1243, %.loopexit1101
  %.310151240 = phi i64 [ %532, %.loopexit1101 ], [ %445, %.lr.ph1243 ]
  %gep1246 = getelementptr %struct.complex, ptr %invariant.gep1245, i64 %.310151240
  %490 = load <2 x float>, ptr %gep1246, align 4, !tbaa !13
  br i1 %.not1070, label %502, label %491

491:                                              ; preds = %.lr.ph1243.split
  %492 = mul i64 %.310151240, %439
  %493 = getelementptr inbounds %struct.complex, ptr %17, i64 %492
  %494 = load <2 x float>, ptr %493, align 4, !tbaa !13
  %495 = shufflevector <2 x float> %490, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %496 = fneg <2 x float> %490
  %497 = shufflevector <2 x float> %495, <2 x float> %496, <2 x i32> <i32 0, i32 3>
  %498 = fmul <2 x float> %494, %497
  %499 = shufflevector <2 x float> %498, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %500 = shufflevector <2 x float> %490, <2 x float> poison, <2 x i32> zeroinitializer
  %501 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %500, <2 x float> %494, <2 x float> %499)
  br label %502

502:                                              ; preds = %491, %.lr.ph1243.split
  %503 = phi <2 x float> [ %501, %491 ], [ %490, %.lr.ph1243.split ]
  %.not1071.not1216 = icmp sgt i64 %.310151240, 1
  br i1 %.not1071.not1216, label %.lr.ph1221, label %.loopexit1101

.lr.ph1221:                                       ; preds = %502
  %504 = mul nsw i64 %.310151240, %15
  %invariant.gep1224 = getelementptr %struct.complex, ptr %17, i64 %504
  br label %505

505:                                              ; preds = %.lr.ph1221, %505
  %.21217 = phi i64 [ 1, %.lr.ph1221 ], [ %520, %505 ]
  %506 = phi <2 x float> [ %503, %.lr.ph1221 ], [ %519, %505 ]
  %gep1225 = getelementptr %struct.complex, ptr %invariant.gep1224, i64 %.21217
  %507 = load float, ptr %gep1225, align 4, !tbaa !9
  %gep1215 = getelementptr %struct.complex, ptr %invariant.gep1245, i64 %.21217
  %508 = getelementptr inbounds i8, ptr %gep1225, i64 4
  %509 = load float, ptr %508, align 4, !tbaa !12
  %510 = fneg float %509
  %511 = load <2 x float>, ptr %gep1215, align 4, !tbaa !13
  %512 = insertelement <2 x float> poison, float %509, i64 0
  %513 = insertelement <2 x float> %512, float %510, i64 1
  %514 = fmul <2 x float> %511, %513
  %515 = shufflevector <2 x float> %514, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %516 = insertelement <2 x float> poison, float %507, i64 0
  %517 = shufflevector <2 x float> %516, <2 x float> poison, <2 x i32> zeroinitializer
  %518 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %517, <2 x float> %511, <2 x float> %515)
  %519 = fadd <2 x float> %506, %518
  %520 = add nuw nsw i64 %.21217, 1
  %.not1071.not = icmp slt i64 %520, %.310151240
  br i1 %.not1071.not, label %505, label %..loopexit1101_crit_edge, !llvm.loop !32

..loopexit1101_crit_edge:                         ; preds = %505
  store <2 x float> %518, ptr %12, align 8, !tbaa !13
  br label %.loopexit1101

.loopexit1101:                                    ; preds = %..loopexit1101_crit_edge, %502
  %521 = phi <2 x float> [ %519, %..loopexit1101_crit_edge ], [ %503, %502 ]
  %522 = load float, ptr %6, align 4, !tbaa !9
  %523 = load float, ptr %441, align 4, !tbaa !12
  %524 = fneg float %523
  %525 = insertelement <2 x float> poison, float %523, i64 0
  %526 = insertelement <2 x float> %525, float %524, i64 1
  %527 = fmul <2 x float> %521, %526
  %528 = shufflevector <2 x float> %527, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %529 = insertelement <2 x float> poison, float %522, i64 0
  %530 = shufflevector <2 x float> %529, <2 x float> poison, <2 x i32> zeroinitializer
  %531 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %530, <2 x float> %521, <2 x float> %528)
  store <2 x float> %531, ptr %gep1246, align 4, !tbaa !13
  %532 = add nsw i64 %.310151240, -1
  br i1 %.not1071.not1216, label %.lr.ph1243.split, label %._crit_edge1244, !llvm.loop !31

._crit_edge1244:                                  ; preds = %.loopexit1101, %.loopexit1100.us, %.lr.ph1250.split
  %exitcond1480.not = icmp eq i64 %.310061248, %86
  br i1 %exitcond1480.not, label %.loopexit, label %.lr.ph1250.splitthread-pre-split, !llvm.loop !33

533:                                              ; preds = %437
  br i1 %.not10591285, label %.loopexit, label %.lr.ph1288

.lr.ph1288:                                       ; preds = %533
  %.not1061 = icmp eq i64 %22, 0
  %.not1064 = icmp eq i64 %.fr, 0
  %534 = add i64 %15, 1
  %535 = getelementptr inbounds i8, ptr %13, i64 4
  %536 = getelementptr inbounds i8, ptr %6, i64 4
  %537 = load i64, ptr %4, align 8, !tbaa !5
  %538 = icmp slt i64 %537, 1
  br i1 %538, label %.loopexit, label %.lr.ph1288.split

.lr.ph1288.splitthread-pre-split:                 ; preds = %._crit_edge1282
  %539 = add nuw i64 %.410071286, 1
  %.pr1511 = load i64, ptr %4, align 8, !tbaa !5
  br label %.lr.ph1288.split

.lr.ph1288.split:                                 ; preds = %.lr.ph1288, %.lr.ph1288.splitthread-pre-split
  %540 = phi i64 [ %.pr1511, %.lr.ph1288.splitthread-pre-split ], [ %537, %.lr.ph1288 ]
  %.410071286 = phi i64 [ %539, %.lr.ph1288.splitthread-pre-split ], [ 1, %.lr.ph1288 ]
  %.not10601277 = icmp slt i64 %540, 1
  br i1 %.not10601277, label %._crit_edge1282, label %.lr.ph1281

.lr.ph1281:                                       ; preds = %.lr.ph1288.split
  %541 = mul nsw i64 %.410071286, %18
  %invariant.gep1283 = getelementptr %struct.complex, ptr %20, i64 %541
  br i1 %.not1061, label %.lr.ph1281.split.us, label %.lr.ph1281.split

.lr.ph1281.split.us:                              ; preds = %.lr.ph1281, %.loopexit1097.us
  %.410161278.us = phi i64 [ %582, %.loopexit1097.us ], [ 1, %.lr.ph1281 ]
  %gep1284.us = getelementptr %struct.complex, ptr %invariant.gep1283, i64 %.410161278.us
  %542 = load <2 x float>, ptr %gep1284.us, align 4, !tbaa !13
  br i1 %.not1064, label %554, label %543

543:                                              ; preds = %.lr.ph1281.split.us
  %544 = mul i64 %.410161278.us, %534
  %545 = getelementptr inbounds %struct.complex, ptr %17, i64 %544
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef %545) #6
  %546 = load <2 x float>, ptr %12, align 8, !tbaa !13
  %547 = shufflevector <2 x float> %542, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %548 = fneg <2 x float> %542
  %549 = shufflevector <2 x float> %547, <2 x float> %548, <2 x i32> <i32 0, i32 3>
  %550 = fmul <2 x float> %546, %549
  %551 = shufflevector <2 x float> %550, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %552 = shufflevector <2 x float> %542, <2 x float> poison, <2 x i32> zeroinitializer
  %553 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %552, <2 x float> %546, <2 x float> %551)
  br label %554

554:                                              ; preds = %543, %.lr.ph1281.split.us
  %555 = phi <2 x float> [ %553, %543 ], [ %542, %.lr.ph1281.split.us ]
  %556 = load i64, ptr %4, align 8, !tbaa !5
  %.not1063.not1267.us = icmp slt i64 %.410161278.us, %556
  br i1 %.not1063.not1267.us, label %.lr.ph1272.us, label %.loopexit1097.us

557:                                              ; preds = %.lr.ph1272.us, %557
  %.5.in1268.us = phi i64 [ %.410161278.us, %.lr.ph1272.us ], [ %.5.us, %557 ]
  %558 = phi <2 x float> [ %555, %.lr.ph1272.us ], [ %570, %557 ]
  %.5.us = add nuw nsw i64 %.5.in1268.us, 1
  %gep1276.us = getelementptr %struct.complex, ptr %invariant.gep1275.us, i64 %.5.us
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %gep1276.us) #6
  %559 = load float, ptr %13, align 4, !tbaa !9
  %gep1266.us = getelementptr %struct.complex, ptr %invariant.gep1283, i64 %.5.us
  %560 = load float, ptr %535, align 4, !tbaa !12
  %561 = fneg float %560
  %562 = load <2 x float>, ptr %gep1266.us, align 4, !tbaa !13
  %563 = insertelement <2 x float> poison, float %560, i64 0
  %564 = insertelement <2 x float> %563, float %561, i64 1
  %565 = fmul <2 x float> %562, %564
  %566 = shufflevector <2 x float> %565, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %567 = insertelement <2 x float> poison, float %559, i64 0
  %568 = shufflevector <2 x float> %567, <2 x float> poison, <2 x i32> zeroinitializer
  %569 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %568, <2 x float> %562, <2 x float> %566)
  store <2 x float> %569, ptr %12, align 8, !tbaa !13
  %570 = fadd <2 x float> %558, %569
  %.not1063.not.us = icmp slt i64 %.5.us, %556
  br i1 %.not1063.not.us, label %557, label %.loopexit1097.us, !llvm.loop !35

.loopexit1097.us:                                 ; preds = %557, %554
  %571 = phi <2 x float> [ %555, %554 ], [ %570, %557 ]
  %572 = load float, ptr %6, align 4, !tbaa !9
  %573 = load float, ptr %536, align 4, !tbaa !12
  %574 = fneg float %573
  %575 = insertelement <2 x float> poison, float %573, i64 0
  %576 = insertelement <2 x float> %575, float %574, i64 1
  %577 = fmul <2 x float> %571, %576
  %578 = shufflevector <2 x float> %577, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %579 = insertelement <2 x float> poison, float %572, i64 0
  %580 = shufflevector <2 x float> %579, <2 x float> poison, <2 x i32> zeroinitializer
  %581 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %580, <2 x float> %571, <2 x float> %578)
  store <2 x float> %581, ptr %gep1284.us, align 4, !tbaa !13
  %582 = add nuw i64 %.410161278.us, 1
  %exitcond1482.not = icmp eq i64 %.410161278.us, %540
  br i1 %exitcond1482.not, label %._crit_edge1282, label %.lr.ph1281.split.us, !llvm.loop !36

.lr.ph1272.us:                                    ; preds = %554
  %583 = mul nsw i64 %.410161278.us, %15
  %invariant.gep1275.us = getelementptr %struct.complex, ptr %17, i64 %583
  br label %557

.lr.ph1281.split:                                 ; preds = %.lr.ph1281, %.loopexit1098
  %.410161278 = phi i64 [ %625, %.loopexit1098 ], [ 1, %.lr.ph1281 ]
  %gep1284 = getelementptr %struct.complex, ptr %invariant.gep1283, i64 %.410161278
  %584 = load <2 x float>, ptr %gep1284, align 4, !tbaa !13
  br i1 %.not1064, label %596, label %585

585:                                              ; preds = %.lr.ph1281.split
  %586 = mul i64 %.410161278, %534
  %587 = getelementptr inbounds %struct.complex, ptr %17, i64 %586
  %588 = load <2 x float>, ptr %587, align 4, !tbaa !13
  %589 = shufflevector <2 x float> %584, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %590 = fneg <2 x float> %584
  %591 = shufflevector <2 x float> %589, <2 x float> %590, <2 x i32> <i32 0, i32 3>
  %592 = fmul <2 x float> %588, %591
  %593 = shufflevector <2 x float> %592, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %594 = shufflevector <2 x float> %584, <2 x float> poison, <2 x i32> zeroinitializer
  %595 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %594, <2 x float> %588, <2 x float> %593)
  br label %596

596:                                              ; preds = %585, %.lr.ph1281.split
  %597 = phi <2 x float> [ %595, %585 ], [ %584, %.lr.ph1281.split ]
  %.not1065.not1253 = icmp slt i64 %.410161278, %540
  br i1 %.not1065.not1253, label %.lr.ph1258, label %.loopexit1098

.lr.ph1258:                                       ; preds = %596
  %598 = mul nsw i64 %.410161278, %15
  %invariant.gep1261 = getelementptr %struct.complex, ptr %17, i64 %598
  br label %599

599:                                              ; preds = %.lr.ph1258, %599
  %.4.in1254 = phi i64 [ %.410161278, %.lr.ph1258 ], [ %.4, %599 ]
  %600 = phi <2 x float> [ %597, %.lr.ph1258 ], [ %613, %599 ]
  %.4 = add nuw nsw i64 %.4.in1254, 1
  %gep1262 = getelementptr %struct.complex, ptr %invariant.gep1261, i64 %.4
  %601 = load float, ptr %gep1262, align 4, !tbaa !9
  %gep1252 = getelementptr %struct.complex, ptr %invariant.gep1283, i64 %.4
  %602 = getelementptr inbounds i8, ptr %gep1262, i64 4
  %603 = load float, ptr %602, align 4, !tbaa !12
  %604 = fneg float %603
  %605 = load <2 x float>, ptr %gep1252, align 4, !tbaa !13
  %606 = insertelement <2 x float> poison, float %603, i64 0
  %607 = insertelement <2 x float> %606, float %604, i64 1
  %608 = fmul <2 x float> %605, %607
  %609 = shufflevector <2 x float> %608, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %610 = insertelement <2 x float> poison, float %601, i64 0
  %611 = shufflevector <2 x float> %610, <2 x float> poison, <2 x i32> zeroinitializer
  %612 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %611, <2 x float> %605, <2 x float> %609)
  %613 = fadd <2 x float> %600, %612
  %.not1065.not = icmp slt i64 %.4, %540
  br i1 %.not1065.not, label %599, label %..loopexit1098_crit_edge, !llvm.loop !37

..loopexit1098_crit_edge:                         ; preds = %599
  store <2 x float> %612, ptr %12, align 8, !tbaa !13
  br label %.loopexit1098

.loopexit1098:                                    ; preds = %..loopexit1098_crit_edge, %596
  %614 = phi <2 x float> [ %613, %..loopexit1098_crit_edge ], [ %597, %596 ]
  %615 = load float, ptr %6, align 4, !tbaa !9
  %616 = load float, ptr %536, align 4, !tbaa !12
  %617 = fneg float %616
  %618 = insertelement <2 x float> poison, float %616, i64 0
  %619 = insertelement <2 x float> %618, float %617, i64 1
  %620 = fmul <2 x float> %614, %619
  %621 = shufflevector <2 x float> %620, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %622 = insertelement <2 x float> poison, float %615, i64 0
  %623 = shufflevector <2 x float> %622, <2 x float> poison, <2 x i32> zeroinitializer
  %624 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %623, <2 x float> %614, <2 x float> %621)
  store <2 x float> %624, ptr %gep1284, align 4, !tbaa !13
  %625 = add nuw i64 %.410161278, 1
  %exitcond1481.not = icmp eq i64 %.410161278, %540
  br i1 %exitcond1481.not, label %._crit_edge1282, label %.lr.ph1281.split, !llvm.loop !36

._crit_edge1282:                                  ; preds = %.loopexit1098, %.loopexit1097.us, %.lr.ph1288.split
  %exitcond1483.not = icmp eq i64 %.410071286, %86
  br i1 %exitcond1483.not, label %.loopexit, label %.lr.ph1288.splitthread-pre-split, !llvm.loop !38

626:                                              ; preds = %84
  br i1 %.not1032, label %982, label %627

627:                                              ; preds = %626
  br i1 %.not1024, label %809, label %628

628:                                              ; preds = %627
  %629 = icmp sgt i64 %86, 0
  br i1 %629, label %.lr.ph1325, label %.loopexit

.lr.ph1325:                                       ; preds = %628
  %630 = getelementptr inbounds i8, ptr %6, i64 4
  %.not1053 = icmp eq i64 %.fr, 0
  %631 = add i64 %15, 1
  %632 = load i64, ptr %4, align 8, !tbaa !5
  %.fr1426 = freeze i64 %632
  %.not10541289 = icmp slt i64 %.fr1426, 1
  %633 = add i64 %.fr1426, -1
  %634 = shl i64 %18, 3
  %635 = mul i64 %18, -8
  %636 = mul i64 %18, -8
  %637 = shl i64 %.fr1426, 3
  %638 = shl i64 %18, 3
  %scevgep1852 = getelementptr i8, ptr %9, i64 4
  %639 = add i64 %.fr1426, -1
  %640 = mul i64 %18, -8
  %min.iters.check1901 = icmp ult i64 %.fr1426, 12
  %mul.result1893 = shl i64 %639, 3
  %mul.result1897 = shl i64 %639, 3
  %mul.overflow1898 = icmp ugt i64 %639, 2305843009213693951
  %n.vec1904 = and i64 %.fr1426, 4611686018427387900
  %ind.end1905 = or disjoint i64 %n.vec1904, 1
  %cmp.n1921 = icmp eq i64 %.fr1426, %n.vec1904
  %xtraiter2270 = and i64 %.fr1426, 1
  %lcmp.mod2271.not = icmp eq i64 %xtraiter2270, 0
  %invariant.gep2330 = getelementptr i8, ptr %9, i64 %637
  %invariant.gep2332 = getelementptr i8, ptr %invariant.gep2330, i64 -4
  %invariant.gep2334 = getelementptr i8, ptr %9, i64 %637
  %invariant.gep2336 = getelementptr i8, ptr %invariant.gep2334, i64 -4
  %invariant.gep2338 = getelementptr i8, ptr %9, i64 %637
  %invariant.gep2340 = getelementptr i8, ptr %9, i64 %637
  %min.iters.check1864 = icmp ult i64 %.fr1426, 12
  %mul.result1827 = shl i64 %633, 3
  %mul.result1834 = shl i64 %633, 3
  %mul.overflow1835 = icmp ugt i64 %633, 2305843009213693951
  %mul.result1838 = shl i64 %633, 3
  %mul.result1842 = shl i64 %633, 3
  %stride.check1860 = icmp slt i64 %638, 0
  %n.vec1867 = and i64 %.fr1426, 4611686018427387900
  %ind.end1868 = or disjoint i64 %n.vec1867, 1
  %cmp.n1887 = icmp eq i64 %.fr1426, %n.vec1867
  %xtraiter2272 = and i64 %.fr1426, 1
  %lcmp.mod2273.not = icmp eq i64 %xtraiter2272, 0
  br label %.outer

.outer:                                           ; preds = %._crit_edge1310, %.lr.ph1325
  %.510081322.ph = phi i64 [ %808, %._crit_edge1310 ], [ %86, %.lr.ph1325 ]
  %641 = phi <2 x float> [ %807, %._crit_edge1310 ], [ undef, %.lr.ph1325 ]
  %642 = load <2 x float>, ptr %6, align 4, !tbaa !13
  %643 = shufflevector <2 x float> %642, <2 x float> poison, <2 x i32> zeroinitializer
  %644 = shufflevector <2 x float> %642, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %645 = fneg <2 x float> %642
  %646 = shufflevector <2 x float> %644, <2 x float> %645, <2 x i32> <i32 0, i32 3>
  br label %647

647:                                              ; preds = %.outer, %.lr.ph1309.thread
  %indvar1829 = phi i64 [ 0, %.outer ], [ %indvar.next1830, %.lr.ph1309.thread ]
  %.510081322 = phi i64 [ %.510081322.ph, %.outer ], [ %694, %.lr.ph1309.thread ]
  br i1 %.not1053, label %655, label %648

648:                                              ; preds = %647
  %649 = mul i64 %.510081322, %631
  %650 = getelementptr inbounds %struct.complex, ptr %17, i64 %649
  %651 = load <2 x float>, ptr %650, align 4, !tbaa !13
  %652 = fmul <2 x float> %646, %651
  %653 = shufflevector <2 x float> %652, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %654 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %643, <2 x float> %651, <2 x float> %653)
  br label %655

655:                                              ; preds = %648, %647
  %656 = phi <2 x float> [ %654, %648 ], [ %642, %647 ]
  br i1 %.not10541289, label %.preheader1095.thread, label %.lr.ph1292

.lr.ph1292:                                       ; preds = %655
  %657 = mul nsw i64 %.510081322, %18
  %invariant.gep1293 = getelementptr %struct.complex, ptr %20, i64 %657
  %658 = extractelement <2 x float> %656, i64 1
  %659 = fneg float %658
  br i1 %min.iters.check1901, label %scalar.ph1900.preheader, label %vector.scevcheck1888

scalar.ph1900.preheader:                          ; preds = %middle.block1899, %vector.scevcheck1888, %.lr.ph1292
  %.510171290.ph = phi i64 [ 1, %vector.scevcheck1888 ], [ 1, %.lr.ph1292 ], [ %ind.end1905, %middle.block1899 ]
  br i1 %lcmp.mod2271.not, label %scalar.ph1900.prol.loopexit, label %scalar.ph1900.prol

scalar.ph1900.prol:                               ; preds = %scalar.ph1900.preheader
  %gep1294.prol = getelementptr %struct.complex, ptr %invariant.gep1293, i64 %.510171290.ph
  %660 = load <2 x float>, ptr %gep1294.prol, align 4, !tbaa !13
  %661 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %662 = insertelement <2 x float> %661, float %659, i64 1
  %663 = fmul <2 x float> %660, %662
  %664 = shufflevector <2 x float> %663, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %665 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> zeroinitializer
  %666 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %665, <2 x float> %660, <2 x float> %664)
  store <2 x float> %666, ptr %gep1294.prol, align 4, !tbaa !13
  %667 = add nuw nsw i64 %.510171290.ph, 1
  br label %scalar.ph1900.prol.loopexit

scalar.ph1900.prol.loopexit:                      ; preds = %scalar.ph1900.prol, %scalar.ph1900.preheader
  %.510171290.unr = phi i64 [ %.510171290.ph, %scalar.ph1900.preheader ], [ %667, %scalar.ph1900.prol ]
  %668 = icmp eq i64 %.fr1426, %.510171290.ph
  br i1 %668, label %.preheader1095, label %scalar.ph1900.preheader.new

scalar.ph1900.preheader.new:                      ; preds = %scalar.ph1900.prol.loopexit
  %669 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %670 = insertelement <2 x float> %669, float %659, i64 1
  %671 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> zeroinitializer
  %672 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %673 = insertelement <2 x float> %672, float %659, i64 1
  %674 = shufflevector <2 x float> %656, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1900

vector.scevcheck1888:                             ; preds = %.lr.ph1292
  %675 = shl i64 %.510081322.ph, 3
  %676 = add i64 %675, -8
  %677 = mul i64 %18, %676
  %678 = mul i64 %640, %indvar1829
  %679 = getelementptr i8, ptr %9, i64 %677
  %scevgep1891 = getelementptr i8, ptr %679, i64 %678
  %680 = getelementptr i8, ptr %scevgep1891, i64 %mul.result1893
  %681 = icmp ult ptr %680, %scevgep1891
  %682 = or disjoint i64 %677, 4
  %683 = getelementptr i8, ptr %9, i64 %678
  %scevgep1895 = getelementptr i8, ptr %683, i64 %682
  %684 = getelementptr i8, ptr %scevgep1895, i64 %mul.result1897
  %685 = icmp ult ptr %684, %scevgep1895
  %686 = or i1 %685, %mul.overflow1898
  %687 = or i1 %681, %686
  br i1 %687, label %scalar.ph1900.preheader, label %vector.ph1902

vector.ph1902:                                    ; preds = %vector.scevcheck1888
  %broadcast.splatinsert1913 = insertelement <4 x float> poison, float %659, i64 0
  %broadcast.splat1914 = shufflevector <4 x float> %broadcast.splatinsert1913, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1916 = shufflevector <2 x float> %656, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1918 = shufflevector <2 x float> %656, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body1907

vector.body1907:                                  ; preds = %vector.body1907, %vector.ph1902
  %index1908 = phi i64 [ 0, %vector.ph1902 ], [ %index.next1920, %vector.body1907 ]
  %offset.idx1909 = or disjoint i64 %index1908, 1
  %688 = getelementptr %struct.complex, ptr %invariant.gep1293, i64 %offset.idx1909
  %wide.vec1910 = load <8 x float>, ptr %688, align 4, !tbaa !13
  %strided.vec1911 = shufflevector <8 x float> %wide.vec1910, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1912 = shufflevector <8 x float> %wide.vec1910, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %689 = fmul <4 x float> %strided.vec1912, %broadcast.splat1914
  %690 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1916, <4 x float> %strided.vec1911, <4 x float> %689)
  %691 = fmul <4 x float> %broadcast.splat1918, %strided.vec1911
  %692 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1916, <4 x float> %strided.vec1912, <4 x float> %691)
  %interleaved.vec1919 = shufflevector <4 x float> %690, <4 x float> %692, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1919, ptr %688, align 4, !tbaa !13
  %index.next1920 = add nuw i64 %index1908, 4
  %693 = icmp eq i64 %index.next1920, %n.vec1904
  br i1 %693, label %middle.block1899, label %vector.body1907, !llvm.loop !39

middle.block1899:                                 ; preds = %vector.body1907
  br i1 %cmp.n1921, label %.preheader1095, label %scalar.ph1900.preheader

.preheader1095:                                   ; preds = %scalar.ph1900.prol.loopexit, %scalar.ph1900, %middle.block1899
  %.not1055.not1305 = icmp sgt i64 %.510081322, 1
  br i1 %.not1055.not1305, label %.lr.ph1309, label %.loopexit

.preheader1095.thread:                            ; preds = %655
  %.not1055.not13051512 = icmp ugt i64 %.510081322, 1
  br i1 %.not1055.not13051512, label %.lr.ph1309.thread, label %.loopexit

.lr.ph1309.thread:                                ; preds = %.preheader1095.thread
  %694 = add nsw i64 %.510081322, -1
  %indvar.next1830 = add i64 %indvar1829, 1
  br label %647, !llvm.loop !40

.lr.ph1309:                                       ; preds = %.preheader1095
  %695 = mul nsw i64 %.510081322, %15
  %invariant.gep1312 = getelementptr %struct.complex, ptr %17, i64 %695
  %696 = mul nsw i64 %.510081322, %18
  br i1 %.not10541289, label %._crit_edge1310, label %.lr.ph1309.split.preheader

.lr.ph1309.split.preheader:                       ; preds = %.lr.ph1309
  %697 = shl i64 %.510081322.ph, 3
  %698 = add i64 %697, -8
  %699 = mul i64 %18, %698
  %700 = mul i64 %635, %indvar1829
  %701 = getelementptr i8, ptr %9, i64 %699
  %scevgep1832 = getelementptr i8, ptr %701, i64 %700
  %702 = or disjoint i64 %699, 4
  %703 = getelementptr i8, ptr %9, i64 %700
  %scevgep1840 = getelementptr i8, ptr %703, i64 %702
  %704 = shl i64 %.510081322.ph, 3
  %705 = add i64 %704, -8
  %706 = mul i64 %18, %705
  %707 = mul i64 %636, %indvar1829
  %708 = getelementptr i8, ptr %9, i64 %706
  %scevgep1847 = getelementptr i8, ptr %708, i64 %707
  %gep2333 = getelementptr i8, ptr %invariant.gep2332, i64 %707
  %scevgep1848 = getelementptr i8, ptr %gep2333, i64 %706
  %709 = add i64 %.510081322.ph, -2
  %710 = mul i64 %638, %709
  %gep2337 = getelementptr i8, ptr %invariant.gep2336, i64 %707
  %scevgep1849 = getelementptr i8, ptr %gep2337, i64 %710
  %711 = or disjoint i64 %706, 4
  %712 = getelementptr i8, ptr %9, i64 %707
  %scevgep1850 = getelementptr i8, ptr %712, i64 %711
  %gep2339 = getelementptr i8, ptr %invariant.gep2338, i64 %707
  %scevgep1851 = getelementptr i8, ptr %gep2339, i64 %706
  %gep2341 = getelementptr i8, ptr %invariant.gep2340, i64 %707
  %scevgep1853 = getelementptr i8, ptr %gep2341, i64 %710
  %713 = getelementptr i8, ptr %scevgep1832, i64 %mul.result1834
  %714 = icmp ult ptr %713, %scevgep1832
  %715 = or i1 %714, %mul.overflow1835
  %716 = getelementptr i8, ptr %scevgep1840, i64 %mul.result1842
  %717 = icmp ult ptr %716, %scevgep1840
  %bound01854 = icmp ult ptr %scevgep1847, %scevgep1849
  %bound11855 = icmp ugt ptr %scevgep1848, %9
  %found.conflict1856 = and i1 %bound01854, %bound11855
  %bound01857 = icmp ult ptr %scevgep1850, %scevgep1853
  %bound11858 = icmp ult ptr %scevgep1852, %scevgep1851
  %found.conflict1859 = and i1 %bound01857, %bound11858
  %718 = or i1 %found.conflict1859, %stride.check1860
  %conflict.rdx1861 = or i1 %found.conflict1856, %718
  br label %.lr.ph1309.split

scalar.ph1900:                                    ; preds = %scalar.ph1900, %scalar.ph1900.preheader.new
  %.510171290 = phi i64 [ %.510171290.unr, %scalar.ph1900.preheader.new ], [ %728, %scalar.ph1900 ]
  %gep1294 = getelementptr %struct.complex, ptr %invariant.gep1293, i64 %.510171290
  %719 = load <2 x float>, ptr %gep1294, align 4, !tbaa !13
  %720 = fmul <2 x float> %719, %670
  %721 = shufflevector <2 x float> %720, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %722 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %671, <2 x float> %719, <2 x float> %721)
  store <2 x float> %722, ptr %gep1294, align 4, !tbaa !13
  %723 = add nuw i64 %.510171290, 1
  %gep1294.1 = getelementptr %struct.complex, ptr %invariant.gep1293, i64 %723
  %724 = load <2 x float>, ptr %gep1294.1, align 4, !tbaa !13
  %725 = fmul <2 x float> %724, %673
  %726 = shufflevector <2 x float> %725, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %727 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %674, <2 x float> %724, <2 x float> %726)
  store <2 x float> %727, ptr %gep1294.1, align 4, !tbaa !13
  %728 = add nuw i64 %.510171290, 2
  %exitcond1484.not.1 = icmp eq i64 %723, %.fr1426
  br i1 %exitcond1484.not.1, label %.preheader1095, label %scalar.ph1900, !llvm.loop !41

.lr.ph1309.split:                                 ; preds = %.lr.ph1309.split.preheader, %..loopexit1094_crit_edge
  %indvar1823 = phi i64 [ 0, %.lr.ph1309.split.preheader ], [ %indvar.next1824, %..loopexit1094_crit_edge ]
  %.61307 = phi i64 [ 1, %.lr.ph1309.split.preheader ], [ %806, %..loopexit1094_crit_edge ]
  %729 = phi <2 x float> [ %641, %.lr.ph1309.split.preheader ], [ %805, %..loopexit1094_crit_edge ]
  %730 = mul i64 %634, %indvar1823
  %scevgep1825 = getelementptr i8, ptr %9, i64 %730
  %731 = or disjoint i64 %730, 4
  %scevgep1836 = getelementptr i8, ptr %9, i64 %731
  %gep1313 = getelementptr %struct.complex, ptr %invariant.gep1312, i64 %.61307
  %732 = load float, ptr %gep1313, align 4, !tbaa !9
  %733 = fcmp une float %732, 0.000000e+00
  %.phi.trans.insert1506 = getelementptr inbounds i8, ptr %gep1313, i64 4
  %.pre1507 = load float, ptr %.phi.trans.insert1506, align 4, !tbaa !12
  %734 = fcmp une float %.pre1507, 0.000000e+00
  %or.cond1570 = select i1 %733, i1 true, i1 %734
  br i1 %or.cond1570, label %.lr.ph1299, label %..loopexit1094_crit_edge

.lr.ph1299:                                       ; preds = %.lr.ph1309.split
  %735 = load float, ptr %6, align 4, !tbaa !9
  %736 = load float, ptr %630, align 4, !tbaa !12
  %737 = fneg float %736
  %738 = fmul float %.pre1507, %737
  %739 = tail call float @llvm.fmuladd.f32(float %735, float %732, float %738)
  %740 = fmul float %732, %736
  %741 = tail call float @llvm.fmuladd.f32(float %735, float %.pre1507, float %740)
  %742 = mul nsw i64 %.61307, %18
  %743 = fneg float %741
  br i1 %min.iters.check1864, label %scalar.ph1863.preheader, label %vector.scevcheck1822

vector.scevcheck1822:                             ; preds = %.lr.ph1299
  %744 = getelementptr i8, ptr %scevgep1825, i64 %mul.result1827
  %745 = icmp ult ptr %744, %scevgep1825
  %746 = getelementptr i8, ptr %scevgep1836, i64 %mul.result1838
  %747 = icmp ult ptr %746, %scevgep1836
  %748 = or i1 %745, %715
  %749 = or i1 %747, %748
  %750 = or i1 %717, %749
  %brmerge = select i1 %750, i1 true, i1 %conflict.rdx1861
  br i1 %brmerge, label %scalar.ph1863.preheader, label %vector.ph1865

vector.ph1865:                                    ; preds = %vector.scevcheck1822
  %broadcast.splatinsert1876 = insertelement <4 x float> poison, float %743, i64 0
  %broadcast.splat1877 = shufflevector <4 x float> %broadcast.splatinsert1876, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1878 = insertelement <4 x float> poison, float %739, i64 0
  %broadcast.splat1879 = shufflevector <4 x float> %broadcast.splatinsert1878, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1880 = insertelement <4 x float> poison, float %741, i64 0
  %broadcast.splat1881 = shufflevector <4 x float> %broadcast.splatinsert1880, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1870

vector.body1870:                                  ; preds = %vector.body1870, %vector.ph1865
  %index1871 = phi i64 [ 0, %vector.ph1865 ], [ %index.next1886, %vector.body1870 ]
  %offset.idx1872 = or disjoint i64 %index1871, 1
  %751 = getelementptr %struct.complex, ptr %20, i64 %offset.idx1872
  %752 = getelementptr %struct.complex, ptr %751, i64 %742
  %wide.vec1873 = load <8 x float>, ptr %752, align 4, !tbaa !13
  %strided.vec1874 = shufflevector <8 x float> %wide.vec1873, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1875 = shufflevector <8 x float> %wide.vec1873, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %753 = fmul <4 x float> %strided.vec1875, %broadcast.splat1877
  %754 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1879, <4 x float> %strided.vec1874, <4 x float> %753)
  %755 = fmul <4 x float> %broadcast.splat1881, %strided.vec1874
  %756 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1879, <4 x float> %strided.vec1875, <4 x float> %755)
  %757 = getelementptr %struct.complex, ptr %751, i64 %696
  %wide.vec1882 = load <8 x float>, ptr %757, 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>
  %758 = fadd <4 x float> %754, %strided.vec1883
  %759 = fadd <4 x float> %756, %strided.vec1884
  %interleaved.vec1885 = shufflevector <4 x float> %758, <4 x float> %759, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1885, ptr %757, align 4, !tbaa !13
  %index.next1886 = add nuw i64 %index1871, 4
  %760 = icmp eq i64 %index.next1886, %n.vec1867
  br i1 %760, label %middle.block1862, label %vector.body1870, !llvm.loop !42

middle.block1862:                                 ; preds = %vector.body1870
  %761 = shufflevector <4 x float> %754, <4 x float> %756, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1887, label %..loopexit1094_crit_edge, label %scalar.ph1863.preheader

scalar.ph1863.preheader:                          ; preds = %vector.scevcheck1822, %middle.block1862, %.lr.ph1299
  %.610181297.ph = phi i64 [ 1, %vector.scevcheck1822 ], [ 1, %.lr.ph1299 ], [ %ind.end1868, %middle.block1862 ]
  br i1 %lcmp.mod2273.not, label %scalar.ph1863.prol.loopexit, label %scalar.ph1863.prol

scalar.ph1863.prol:                               ; preds = %scalar.ph1863.preheader
  %762 = getelementptr %struct.complex, ptr %20, i64 %.610181297.ph
  %763 = getelementptr %struct.complex, ptr %762, i64 %742
  %764 = load <2 x float>, ptr %763, align 4, !tbaa !13
  %765 = insertelement <2 x float> poison, float %741, i64 0
  %766 = insertelement <2 x float> %765, float %743, i64 1
  %767 = fmul <2 x float> %766, %764
  %768 = shufflevector <2 x float> %767, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %769 = insertelement <2 x float> poison, float %739, i64 0
  %770 = shufflevector <2 x float> %769, <2 x float> poison, <2 x i32> zeroinitializer
  %771 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %770, <2 x float> %764, <2 x float> %768)
  %772 = getelementptr %struct.complex, ptr %762, i64 %696
  %773 = load <2 x float>, ptr %772, align 4, !tbaa !13
  %774 = fadd <2 x float> %771, %773
  store <2 x float> %774, ptr %772, align 4, !tbaa !13
  %775 = add nuw nsw i64 %.610181297.ph, 1
  br label %scalar.ph1863.prol.loopexit

scalar.ph1863.prol.loopexit:                      ; preds = %scalar.ph1863.prol, %scalar.ph1863.preheader
  %.lcssa2236.unr = phi <2 x float> [ poison, %scalar.ph1863.preheader ], [ %771, %scalar.ph1863.prol ]
  %.610181297.unr = phi i64 [ %.610181297.ph, %scalar.ph1863.preheader ], [ %775, %scalar.ph1863.prol ]
  %776 = icmp eq i64 %.fr1426, %.610181297.ph
  br i1 %776, label %..loopexit1094_crit_edge, label %scalar.ph1863.preheader.new

scalar.ph1863.preheader.new:                      ; preds = %scalar.ph1863.prol.loopexit
  %777 = insertelement <2 x float> poison, float %741, i64 0
  %778 = insertelement <2 x float> %777, float %743, i64 1
  %779 = insertelement <2 x float> poison, float %739, i64 0
  %780 = shufflevector <2 x float> %779, <2 x float> poison, <2 x i32> zeroinitializer
  %781 = insertelement <2 x float> poison, float %741, i64 0
  %782 = insertelement <2 x float> %781, float %743, i64 1
  %783 = insertelement <2 x float> poison, float %739, i64 0
  %784 = shufflevector <2 x float> %783, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1863

scalar.ph1863:                                    ; preds = %scalar.ph1863, %scalar.ph1863.preheader.new
  %.610181297 = phi i64 [ %.610181297.unr, %scalar.ph1863.preheader.new ], [ %804, %scalar.ph1863 ]
  %785 = getelementptr %struct.complex, ptr %20, i64 %.610181297
  %786 = getelementptr %struct.complex, ptr %785, i64 %742
  %787 = load <2 x float>, ptr %786, align 4, !tbaa !13
  %788 = fmul <2 x float> %778, %787
  %789 = shufflevector <2 x float> %788, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %790 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %780, <2 x float> %787, <2 x float> %789)
  %791 = getelementptr %struct.complex, ptr %785, i64 %696
  %792 = load <2 x float>, ptr %791, align 4, !tbaa !13
  %793 = fadd <2 x float> %790, %792
  store <2 x float> %793, ptr %791, align 4, !tbaa !13
  %794 = add nuw i64 %.610181297, 1
  %795 = getelementptr %struct.complex, ptr %20, i64 %794
  %796 = getelementptr %struct.complex, ptr %795, i64 %742
  %797 = load <2 x float>, ptr %796, align 4, !tbaa !13
  %798 = fmul <2 x float> %782, %797
  %799 = shufflevector <2 x float> %798, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %800 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %784, <2 x float> %797, <2 x float> %799)
  %801 = getelementptr %struct.complex, ptr %795, i64 %696
  %802 = load <2 x float>, ptr %801, align 4, !tbaa !13
  %803 = fadd <2 x float> %800, %802
  store <2 x float> %803, ptr %801, align 4, !tbaa !13
  %804 = add nuw i64 %.610181297, 2
  %exitcond1485.not.1 = icmp eq i64 %794, %.fr1426
  br i1 %exitcond1485.not.1, label %..loopexit1094_crit_edge, label %scalar.ph1863, !llvm.loop !43

..loopexit1094_crit_edge:                         ; preds = %scalar.ph1863.prol.loopexit, %scalar.ph1863, %middle.block1862, %.lr.ph1309.split
  %805 = phi <2 x float> [ %729, %.lr.ph1309.split ], [ %761, %middle.block1862 ], [ %.lcssa2236.unr, %scalar.ph1863.prol.loopexit ], [ %800, %scalar.ph1863 ]
  %806 = add nuw nsw i64 %.61307, 1
  %.not1055.not = icmp slt i64 %806, %.510081322
  %indvar.next1824 = add i64 %indvar1823, 1
  br i1 %.not1055.not, label %.lr.ph1309.split, label %._crit_edge1310, !llvm.loop !44

._crit_edge1310:                                  ; preds = %..loopexit1094_crit_edge, %.lr.ph1309
  %807 = phi <2 x float> [ %641, %.lr.ph1309 ], [ %805, %..loopexit1094_crit_edge ]
  %808 = add nsw i64 %.510081322, -1
  br label %.outer, !llvm.loop !40

809:                                              ; preds = %627
  %.not10481363 = icmp slt i64 %86, 1
  br i1 %.not10481363, label %.loopexit, label %.lr.ph1367

.lr.ph1367:                                       ; preds = %809
  %810 = getelementptr inbounds i8, ptr %6, i64 4
  %.not1049 = icmp eq i64 %.fr, 0
  %811 = add i64 %15, 1
  %812 = load i64, ptr %4, align 8, !tbaa !5
  %.fr1427 = freeze i64 %812
  %.not10501330 = icmp slt i64 %.fr1427, 1
  %813 = add i64 %.fr1427, -1
  %814 = shl i64 %18, 3
  %815 = shl i64 %18, 3
  %scevgep1937 = getelementptr i8, ptr %9, i64 4
  %816 = shl i64 %.fr1427, 3
  %817 = getelementptr i8, ptr %9, i64 %816
  %scevgep1943 = getelementptr i8, ptr %817, i64 -4
  %818 = shl i64 %18, 3
  %819 = shl i64 %86, 3
  %820 = add i64 %819, -8
  %821 = mul i64 %18, %820
  %822 = getelementptr i8, ptr %9, i64 %821
  %823 = getelementptr i8, ptr %822, i64 %816
  %scevgep1946 = getelementptr i8, ptr %823, i64 -4
  %scevgep1947 = getelementptr i8, ptr %9, i64 4
  %scevgep1949 = getelementptr i8, ptr %9, i64 %816
  %scevgep1951 = getelementptr i8, ptr %9, i64 4
  %824 = getelementptr i8, ptr %9, i64 %821
  %scevgep1953 = getelementptr i8, ptr %824, i64 %816
  %825 = add i64 %.fr1427, -1
  %scevgep1994 = getelementptr i8, ptr %9, i64 4
  %min.iters.check2001 = icmp ult i64 %.fr1427, 12
  %mul.result1992 = shl i64 %825, 3
  %mul.result1997 = shl i64 %825, 3
  %mul.overflow1998 = icmp ugt i64 %825, 2305843009213693951
  %n.vec2004 = and i64 %.fr1427, 4611686018427387900
  %ind.end2005 = or disjoint i64 %n.vec2004, 1
  %cmp.n2021 = icmp eq i64 %.fr1427, %n.vec2004
  %xtraiter2274 = and i64 %.fr1427, 1
  %lcmp.mod2275.not = icmp eq i64 %xtraiter2274, 0
  %min.iters.check1965 = icmp ult i64 %.fr1427, 12
  %mul.result1927 = shl i64 %813, 3
  %mul.result1931 = shl i64 %813, 3
  %mul.overflow1932 = icmp ugt i64 %813, 2305843009213693951
  %mul.result1935 = shl i64 %813, 3
  %mul.result1940 = shl i64 %813, 3
  %.mask = and i64 %18, 1152921504606846976
  %stride.check1961 = icmp ne i64 %.mask, 0
  %n.vec1968 = and i64 %.fr1427, 4611686018427387900
  %ind.end1969 = or disjoint i64 %n.vec1968, 1
  %cmp.n1988 = icmp eq i64 %.fr1427, %n.vec1968
  %xtraiter2276 = and i64 %.fr1427, 1
  %lcmp.mod2277.not = icmp eq i64 %xtraiter2276, 0
  br label %828

.loopexit1092:                                    ; preds = %..loopexit1091_crit_edge, %._crit_edge1334.thread, %.lr.ph1352, %._crit_edge1334
  %826 = phi i64 [ %887, %._crit_edge1334 ], [ %887, %.lr.ph1352 ], [ %888, %._crit_edge1334.thread ], [ %887, %..loopexit1091_crit_edge ]
  %827 = phi <2 x float> [ %829, %._crit_edge1334 ], [ %829, %.lr.ph1352 ], [ %829, %._crit_edge1334.thread ], [ %980, %..loopexit1091_crit_edge ]
  %exitcond1488.not = icmp eq i64 %.610091365, %86
  br i1 %exitcond1488.not, label %.loopexit, label %828, !llvm.loop !45

828:                                              ; preds = %.lr.ph1367, %.loopexit1092
  %.610091365 = phi i64 [ 1, %.lr.ph1367 ], [ %826, %.loopexit1092 ]
  %829 = phi <2 x float> [ undef, %.lr.ph1367 ], [ %827, %.loopexit1092 ]
  %830 = load <2 x float>, ptr %6, align 4, !tbaa !13
  br i1 %.not1049, label %842, label %831

831:                                              ; preds = %828
  %832 = mul i64 %.610091365, %811
  %833 = getelementptr inbounds %struct.complex, ptr %17, i64 %832
  %834 = load <2 x float>, ptr %833, align 4, !tbaa !13
  %835 = shufflevector <2 x float> %830, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %836 = fneg <2 x float> %830
  %837 = shufflevector <2 x float> %835, <2 x float> %836, <2 x i32> <i32 0, i32 3>
  %838 = fmul <2 x float> %837, %834
  %839 = shufflevector <2 x float> %838, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %840 = shufflevector <2 x float> %830, <2 x float> poison, <2 x i32> zeroinitializer
  %841 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %840, <2 x float> %834, <2 x float> %839)
  br label %842

842:                                              ; preds = %831, %828
  %843 = phi <2 x float> [ %841, %831 ], [ %830, %828 ]
  br i1 %.not10501330, label %._crit_edge1334.thread, label %.lr.ph1333

.lr.ph1333:                                       ; preds = %842
  %844 = mul nsw i64 %.610091365, %18
  %invariant.gep1335 = getelementptr %struct.complex, ptr %20, i64 %844
  %845 = extractelement <2 x float> %843, i64 1
  %846 = fneg float %845
  br i1 %min.iters.check2001, label %scalar.ph2000.preheader, label %vector.scevcheck1989

vector.scevcheck1989:                             ; preds = %.lr.ph1333
  %847 = shl i64 %.610091365, 3
  %848 = add i64 %847, -8
  %849 = mul i64 %18, %848
  %scevgep1990 = getelementptr i8, ptr %9, i64 %849
  %850 = getelementptr i8, ptr %scevgep1990, i64 %mul.result1992
  %851 = icmp ult ptr %850, %scevgep1990
  %scevgep1995 = getelementptr i8, ptr %scevgep1994, i64 %849
  %852 = getelementptr i8, ptr %scevgep1995, i64 %mul.result1997
  %853 = icmp ult ptr %852, %scevgep1995
  %854 = or i1 %853, %mul.overflow1998
  %855 = or i1 %851, %854
  br i1 %855, label %scalar.ph2000.preheader, label %vector.ph2002

vector.ph2002:                                    ; preds = %vector.scevcheck1989
  %broadcast.splatinsert2013 = insertelement <4 x float> poison, float %846, i64 0
  %broadcast.splat2014 = shufflevector <4 x float> %broadcast.splatinsert2013, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2016 = shufflevector <2 x float> %843, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2018 = shufflevector <2 x float> %843, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body2007

vector.body2007:                                  ; preds = %vector.body2007, %vector.ph2002
  %index2008 = phi i64 [ 0, %vector.ph2002 ], [ %index.next2020, %vector.body2007 ]
  %offset.idx2009 = or disjoint i64 %index2008, 1
  %856 = getelementptr %struct.complex, ptr %invariant.gep1335, i64 %offset.idx2009
  %wide.vec2010 = load <8 x float>, ptr %856, align 4, !tbaa !13
  %strided.vec2011 = shufflevector <8 x float> %wide.vec2010, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2012 = shufflevector <8 x float> %wide.vec2010, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %857 = fmul <4 x float> %strided.vec2012, %broadcast.splat2014
  %858 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2016, <4 x float> %strided.vec2011, <4 x float> %857)
  %859 = fmul <4 x float> %broadcast.splat2018, %strided.vec2011
  %860 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2016, <4 x float> %strided.vec2012, <4 x float> %859)
  %interleaved.vec2019 = shufflevector <4 x float> %858, <4 x float> %860, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2019, ptr %856, align 4, !tbaa !13
  %index.next2020 = add nuw i64 %index2008, 4
  %861 = icmp eq i64 %index.next2020, %n.vec2004
  br i1 %861, label %middle.block1999, label %vector.body2007, !llvm.loop !46

middle.block1999:                                 ; preds = %vector.body2007
  br i1 %cmp.n2021, label %._crit_edge1334, label %scalar.ph2000.preheader

scalar.ph2000.preheader:                          ; preds = %middle.block1999, %vector.scevcheck1989, %.lr.ph1333
  %.710191331.ph = phi i64 [ 1, %vector.scevcheck1989 ], [ 1, %.lr.ph1333 ], [ %ind.end2005, %middle.block1999 ]
  br i1 %lcmp.mod2275.not, label %scalar.ph2000.prol.loopexit, label %scalar.ph2000.prol

scalar.ph2000.prol:                               ; preds = %scalar.ph2000.preheader
  %gep1336.prol = getelementptr %struct.complex, ptr %invariant.gep1335, i64 %.710191331.ph
  %862 = load <2 x float>, ptr %gep1336.prol, align 4, !tbaa !13
  %863 = shufflevector <2 x float> %843, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %864 = insertelement <2 x float> %863, float %846, i64 1
  %865 = fmul <2 x float> %862, %864
  %866 = shufflevector <2 x float> %865, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %867 = shufflevector <2 x float> %843, <2 x float> poison, <2 x i32> zeroinitializer
  %868 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %867, <2 x float> %862, <2 x float> %866)
  store <2 x float> %868, ptr %gep1336.prol, align 4, !tbaa !13
  %869 = add nuw nsw i64 %.710191331.ph, 1
  br label %scalar.ph2000.prol.loopexit

scalar.ph2000.prol.loopexit:                      ; preds = %scalar.ph2000.prol, %scalar.ph2000.preheader
  %.710191331.unr = phi i64 [ %.710191331.ph, %scalar.ph2000.preheader ], [ %869, %scalar.ph2000.prol ]
  %870 = icmp eq i64 %.fr1427, %.710191331.ph
  br i1 %870, label %._crit_edge1334, label %scalar.ph2000.preheader.new

scalar.ph2000.preheader.new:                      ; preds = %scalar.ph2000.prol.loopexit
  %871 = shufflevector <2 x float> %843, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %872 = insertelement <2 x float> %871, float %846, i64 1
  %873 = shufflevector <2 x float> %843, <2 x float> poison, <2 x i32> zeroinitializer
  %874 = shufflevector <2 x float> %843, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %875 = insertelement <2 x float> %874, float %846, i64 1
  %876 = shufflevector <2 x float> %843, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2000

scalar.ph2000:                                    ; preds = %scalar.ph2000, %scalar.ph2000.preheader.new
  %.710191331 = phi i64 [ %.710191331.unr, %scalar.ph2000.preheader.new ], [ %886, %scalar.ph2000 ]
  %gep1336 = getelementptr %struct.complex, ptr %invariant.gep1335, i64 %.710191331
  %877 = load <2 x float>, ptr %gep1336, align 4, !tbaa !13
  %878 = fmul <2 x float> %877, %872
  %879 = shufflevector <2 x float> %878, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %880 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %873, <2 x float> %877, <2 x float> %879)
  store <2 x float> %880, ptr %gep1336, align 4, !tbaa !13
  %881 = add nuw i64 %.710191331, 1
  %gep1336.1 = getelementptr %struct.complex, ptr %invariant.gep1335, i64 %881
  %882 = load <2 x float>, ptr %gep1336.1, align 4, !tbaa !13
  %883 = fmul <2 x float> %882, %875
  %884 = shufflevector <2 x float> %883, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %885 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %876, <2 x float> %882, <2 x float> %884)
  store <2 x float> %885, ptr %gep1336.1, align 4, !tbaa !13
  %886 = add nuw i64 %.710191331, 2
  %exitcond1486.not.1 = icmp eq i64 %881, %.fr1427
  br i1 %exitcond1486.not.1, label %._crit_edge1334, label %scalar.ph2000, !llvm.loop !47

._crit_edge1334:                                  ; preds = %scalar.ph2000.prol.loopexit, %scalar.ph2000, %middle.block1999
  %887 = add nuw i64 %.610091365, 1
  %.not10511347.not = icmp slt i64 %.610091365, %86
  br i1 %.not10511347.not, label %.lr.ph1352, label %.loopexit1092

._crit_edge1334.thread:                           ; preds = %842
  %888 = add nuw i64 %.610091365, 1
  br label %.loopexit1092

.lr.ph1352:                                       ; preds = %._crit_edge1334
  %889 = mul nsw i64 %.610091365, %15
  %invariant.gep1354 = getelementptr %struct.complex, ptr %17, i64 %889
  %890 = mul nsw i64 %.610091365, %18
  br i1 %.not10501330, label %.loopexit1092, label %.lr.ph1352.split.preheader

.lr.ph1352.split.preheader:                       ; preds = %.lr.ph1352
  %891 = mul i64 %814, %.610091365
  %892 = shl i64 %.610091365, 3
  %893 = add i64 %892, -8
  %894 = mul i64 %18, %893
  %scevgep1929 = getelementptr i8, ptr %9, i64 %894
  %895 = or disjoint i64 %891, 4
  %scevgep1938 = getelementptr i8, ptr %scevgep1937, i64 %894
  %scevgep1944 = getelementptr i8, ptr %scevgep1943, i64 %894
  %896 = mul i64 %818, %.610091365
  %scevgep1945 = getelementptr i8, ptr %9, i64 %896
  %scevgep1948 = getelementptr i8, ptr %scevgep1947, i64 %894
  %scevgep1950 = getelementptr i8, ptr %scevgep1949, i64 %894
  %scevgep1952 = getelementptr i8, ptr %scevgep1951, i64 %896
  %897 = getelementptr i8, ptr %9, i64 %891
  %898 = getelementptr i8, ptr %9, i64 %895
  %899 = getelementptr i8, ptr %scevgep1929, i64 %mul.result1931
  %900 = icmp ult ptr %899, %scevgep1929
  %901 = or i1 %900, %mul.overflow1932
  %902 = getelementptr i8, ptr %scevgep1938, i64 %mul.result1940
  %903 = icmp ult ptr %902, %scevgep1938
  %bound01954 = icmp ult ptr %scevgep1929, %scevgep1946
  %bound11955 = icmp ult ptr %scevgep1945, %scevgep1944
  %found.conflict1956 = and i1 %bound01954, %bound11955
  %bound01958 = icmp ult ptr %scevgep1948, %scevgep1953
  %bound11959 = icmp ult ptr %scevgep1952, %scevgep1950
  %found.conflict1960 = and i1 %bound01958, %bound11959
  %904 = or i1 %found.conflict1960, %stride.check1961
  %conflict.rdx1962 = or i1 %found.conflict1956, %904
  br label %.lr.ph1352.split

.lr.ph1352.split:                                 ; preds = %.lr.ph1352.split.preheader, %..loopexit1091_crit_edge
  %indvar1923 = phi i64 [ 0, %.lr.ph1352.split.preheader ], [ %indvar.next1924, %..loopexit1091_crit_edge ]
  %.71349 = phi i64 [ %887, %.lr.ph1352.split.preheader ], [ %981, %..loopexit1091_crit_edge ]
  %905 = phi <2 x float> [ %829, %.lr.ph1352.split.preheader ], [ %980, %..loopexit1091_crit_edge ]
  %906 = mul i64 %815, %indvar1923
  %scevgep1925 = getelementptr i8, ptr %897, i64 %906
  %scevgep1933 = getelementptr i8, ptr %898, i64 %906
  %gep1355 = getelementptr %struct.complex, ptr %invariant.gep1354, i64 %.71349
  %907 = load float, ptr %gep1355, align 4, !tbaa !9
  %908 = fcmp une float %907, 0.000000e+00
  %.phi.trans.insert1508 = getelementptr inbounds i8, ptr %gep1355, i64 4
  %.pre1509 = load float, ptr %.phi.trans.insert1508, align 4, !tbaa !12
  %909 = fcmp une float %.pre1509, 0.000000e+00
  %or.cond1571 = select i1 %908, i1 true, i1 %909
  br i1 %or.cond1571, label %.lr.ph1341, label %..loopexit1091_crit_edge

.lr.ph1341:                                       ; preds = %.lr.ph1352.split
  %910 = load float, ptr %6, align 4, !tbaa !9
  %911 = load float, ptr %810, align 4, !tbaa !12
  %912 = fneg float %911
  %913 = fmul float %.pre1509, %912
  %914 = tail call float @llvm.fmuladd.f32(float %910, float %907, float %913)
  %915 = fmul float %907, %911
  %916 = tail call float @llvm.fmuladd.f32(float %910, float %.pre1509, float %915)
  %917 = mul nsw i64 %.71349, %18
  %918 = fneg float %916
  br i1 %min.iters.check1965, label %scalar.ph1964.preheader, label %vector.scevcheck1922

vector.scevcheck1922:                             ; preds = %.lr.ph1341
  %919 = getelementptr i8, ptr %scevgep1925, i64 %mul.result1927
  %920 = icmp ult ptr %919, %scevgep1925
  %921 = getelementptr i8, ptr %scevgep1933, i64 %mul.result1935
  %922 = icmp ult ptr %921, %scevgep1933
  %923 = or i1 %920, %901
  %924 = or i1 %922, %923
  %925 = or i1 %903, %924
  %brmerge2346 = select i1 %925, i1 true, i1 %conflict.rdx1962
  br i1 %brmerge2346, label %scalar.ph1964.preheader, label %vector.ph1966

vector.ph1966:                                    ; preds = %vector.scevcheck1922
  %broadcast.splatinsert1977 = insertelement <4 x float> poison, float %918, i64 0
  %broadcast.splat1978 = shufflevector <4 x float> %broadcast.splatinsert1977, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1979 = insertelement <4 x float> poison, float %914, i64 0
  %broadcast.splat1980 = shufflevector <4 x float> %broadcast.splatinsert1979, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1981 = insertelement <4 x float> poison, float %916, i64 0
  %broadcast.splat1982 = shufflevector <4 x float> %broadcast.splatinsert1981, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1971

vector.body1971:                                  ; preds = %vector.body1971, %vector.ph1966
  %index1972 = phi i64 [ 0, %vector.ph1966 ], [ %index.next1987, %vector.body1971 ]
  %offset.idx1973 = or disjoint i64 %index1972, 1
  %926 = getelementptr %struct.complex, ptr %20, i64 %offset.idx1973
  %927 = getelementptr %struct.complex, ptr %926, i64 %917
  %wide.vec1974 = load <8 x float>, ptr %927, align 4, !tbaa !13
  %strided.vec1975 = shufflevector <8 x float> %wide.vec1974, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1976 = shufflevector <8 x float> %wide.vec1974, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %928 = fmul <4 x float> %strided.vec1976, %broadcast.splat1978
  %929 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1980, <4 x float> %strided.vec1975, <4 x float> %928)
  %930 = fmul <4 x float> %broadcast.splat1982, %strided.vec1975
  %931 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1980, <4 x float> %strided.vec1976, <4 x float> %930)
  %932 = getelementptr %struct.complex, ptr %926, i64 %890
  %wide.vec1983 = load <8 x float>, ptr %932, align 4, !tbaa !13
  %strided.vec1984 = shufflevector <8 x float> %wide.vec1983, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1985 = shufflevector <8 x float> %wide.vec1983, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %933 = fadd <4 x float> %929, %strided.vec1984
  %934 = fadd <4 x float> %931, %strided.vec1985
  %interleaved.vec1986 = shufflevector <4 x float> %933, <4 x float> %934, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1986, ptr %932, align 4, !tbaa !13
  %index.next1987 = add nuw i64 %index1972, 4
  %935 = icmp eq i64 %index.next1987, %n.vec1968
  br i1 %935, label %middle.block1963, label %vector.body1971, !llvm.loop !48

middle.block1963:                                 ; preds = %vector.body1971
  %936 = shufflevector <4 x float> %929, <4 x float> %931, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1988, label %..loopexit1091_crit_edge, label %scalar.ph1964.preheader

scalar.ph1964.preheader:                          ; preds = %vector.scevcheck1922, %middle.block1963, %.lr.ph1341
  %.810201339.ph = phi i64 [ 1, %vector.scevcheck1922 ], [ 1, %.lr.ph1341 ], [ %ind.end1969, %middle.block1963 ]
  br i1 %lcmp.mod2277.not, label %scalar.ph1964.prol.loopexit, label %scalar.ph1964.prol

scalar.ph1964.prol:                               ; preds = %scalar.ph1964.preheader
  %937 = getelementptr %struct.complex, ptr %20, i64 %.810201339.ph
  %938 = getelementptr %struct.complex, ptr %937, i64 %917
  %939 = load <2 x float>, ptr %938, align 4, !tbaa !13
  %940 = insertelement <2 x float> poison, float %916, i64 0
  %941 = insertelement <2 x float> %940, float %918, i64 1
  %942 = fmul <2 x float> %941, %939
  %943 = shufflevector <2 x float> %942, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %944 = insertelement <2 x float> poison, float %914, i64 0
  %945 = shufflevector <2 x float> %944, <2 x float> poison, <2 x i32> zeroinitializer
  %946 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %945, <2 x float> %939, <2 x float> %943)
  %947 = getelementptr %struct.complex, ptr %937, i64 %890
  %948 = load <2 x float>, ptr %947, align 4, !tbaa !13
  %949 = fadd <2 x float> %946, %948
  store <2 x float> %949, ptr %947, align 4, !tbaa !13
  %950 = add nuw nsw i64 %.810201339.ph, 1
  br label %scalar.ph1964.prol.loopexit

scalar.ph1964.prol.loopexit:                      ; preds = %scalar.ph1964.prol, %scalar.ph1964.preheader
  %.lcssa2226.unr = phi <2 x float> [ poison, %scalar.ph1964.preheader ], [ %946, %scalar.ph1964.prol ]
  %.810201339.unr = phi i64 [ %.810201339.ph, %scalar.ph1964.preheader ], [ %950, %scalar.ph1964.prol ]
  %951 = icmp eq i64 %.fr1427, %.810201339.ph
  br i1 %951, label %..loopexit1091_crit_edge, label %scalar.ph1964.preheader.new

scalar.ph1964.preheader.new:                      ; preds = %scalar.ph1964.prol.loopexit
  %952 = insertelement <2 x float> poison, float %916, i64 0
  %953 = insertelement <2 x float> %952, float %918, i64 1
  %954 = insertelement <2 x float> poison, float %914, i64 0
  %955 = shufflevector <2 x float> %954, <2 x float> poison, <2 x i32> zeroinitializer
  %956 = insertelement <2 x float> poison, float %916, i64 0
  %957 = insertelement <2 x float> %956, float %918, i64 1
  %958 = insertelement <2 x float> poison, float %914, i64 0
  %959 = shufflevector <2 x float> %958, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1964

scalar.ph1964:                                    ; preds = %scalar.ph1964, %scalar.ph1964.preheader.new
  %.810201339 = phi i64 [ %.810201339.unr, %scalar.ph1964.preheader.new ], [ %979, %scalar.ph1964 ]
  %960 = getelementptr %struct.complex, ptr %20, i64 %.810201339
  %961 = getelementptr %struct.complex, ptr %960, i64 %917
  %962 = load <2 x float>, ptr %961, align 4, !tbaa !13
  %963 = fmul <2 x float> %953, %962
  %964 = shufflevector <2 x float> %963, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %965 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %955, <2 x float> %962, <2 x float> %964)
  %966 = getelementptr %struct.complex, ptr %960, i64 %890
  %967 = load <2 x float>, ptr %966, align 4, !tbaa !13
  %968 = fadd <2 x float> %965, %967
  store <2 x float> %968, ptr %966, align 4, !tbaa !13
  %969 = add nuw i64 %.810201339, 1
  %970 = getelementptr %struct.complex, ptr %20, i64 %969
  %971 = getelementptr %struct.complex, ptr %970, i64 %917
  %972 = load <2 x float>, ptr %971, align 4, !tbaa !13
  %973 = fmul <2 x float> %957, %972
  %974 = shufflevector <2 x float> %973, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %975 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %959, <2 x float> %972, <2 x float> %974)
  %976 = getelementptr %struct.complex, ptr %970, i64 %890
  %977 = load <2 x float>, ptr %976, align 4, !tbaa !13
  %978 = fadd <2 x float> %975, %977
  store <2 x float> %978, ptr %976, align 4, !tbaa !13
  %979 = add nuw i64 %.810201339, 2
  %exitcond1487.not.1 = icmp eq i64 %969, %.fr1427
  br i1 %exitcond1487.not.1, label %..loopexit1091_crit_edge, label %scalar.ph1964, !llvm.loop !49

..loopexit1091_crit_edge:                         ; preds = %scalar.ph1964.prol.loopexit, %scalar.ph1964, %middle.block1963, %.lr.ph1352.split
  %980 = phi <2 x float> [ %905, %.lr.ph1352.split ], [ %936, %middle.block1963 ], [ %.lcssa2226.unr, %scalar.ph1964.prol.loopexit ], [ %975, %scalar.ph1964 ]
  %981 = add nuw nsw i64 %.71349, 1
  %.not1051.not = icmp slt i64 %.71349, %86
  %indvar.next1924 = add i64 %indvar1923, 1
  br i1 %.not1051.not, label %.lr.ph1352.split, label %.loopexit1092, !llvm.loop !50

982:                                              ; preds = %626
  br i1 %.not1024, label %1153, label %983

983:                                              ; preds = %982
  %.not10401391 = icmp slt i64 %86, 1
  br i1 %.not10401391, label %.loopexit, label %.preheader1089.lr.ph

.preheader1089.lr.ph:                             ; preds = %983
  %.not1045 = icmp eq i64 %22, 0
  %984 = getelementptr inbounds i8, ptr %6, i64 4
  %985 = getelementptr inbounds i8, ptr %12, i64 4
  %.not1042 = icmp eq i64 %.fr, 0
  %986 = add i64 %15, 1
  %987 = shl i64 %18, 3
  %988 = shl i64 %18, 3
  %989 = shl i64 %18, 3
  %990 = shl i64 %18, 3
  %991 = shl i64 %18, 3
  %invariant.gep2344 = getelementptr i8, ptr %9, i64 -4
  %invariant.gep2342 = getelementptr i8, ptr %9, i64 -4
  br label %.preheader1089

.preheader1089:                                   ; preds = %.preheader1089.lr.ph, %.loopexit1088
  %indvar2023 = phi i64 [ 0, %.preheader1089.lr.ph ], [ %indvar.next2024, %.loopexit1088 ]
  %.81392 = phi i64 [ 1, %.preheader1089.lr.ph ], [ %1152, %.loopexit1088 ]
  %992 = mul i64 %991, %indvar2023
  %scevgep2079 = getelementptr i8, ptr %9, i64 %992
  %gep2345 = getelementptr i8, ptr %invariant.gep2344, i64 %992
  %993 = or disjoint i64 %992, 4
  %scevgep2084 = getelementptr i8, ptr %9, i64 %993
  %994 = mul i64 %988, %indvar2023
  %scevgep2057 = getelementptr i8, ptr %9, i64 %994
  %995 = or disjoint i64 %994, 4
  %scevgep2067 = getelementptr i8, ptr %9, i64 %995
  %996 = mul i64 %987, %indvar2023
  %scevgep2025 = getelementptr i8, ptr %9, i64 %996
  %997 = or disjoint i64 %996, 4
  %scevgep2029 = getelementptr i8, ptr %9, i64 %997
  %.not1041.not1378 = icmp ugt i64 %.81392, 1
  br i1 %.not1041.not1378, label %.lr.ph1381, label %._crit_edge1382

.lr.ph1381:                                       ; preds = %.preheader1089
  %998 = mul nsw i64 %.81392, %15
  %invariant.gep1383 = getelementptr %struct.complex, ptr %17, i64 %998
  %999 = mul nsw i64 %.81392, %18
  br label %1000

1000:                                             ; preds = %.lr.ph1381, %.loopexit1087
  %indvar2061 = phi i64 [ 0, %.lr.ph1381 ], [ %indvar.next2062, %.loopexit1087 ]
  %.710101379 = phi i64 [ 1, %.lr.ph1381 ], [ %1085, %.loopexit1087 ]
  %1001 = mul i64 %990, %indvar2061
  %scevgep2076 = getelementptr i8, ptr %9, i64 %1001
  %gep2343 = getelementptr i8, ptr %invariant.gep2342, i64 %1001
  %1002 = or disjoint i64 %1001, 4
  %scevgep2082 = getelementptr i8, ptr %9, i64 %1002
  %1003 = mul i64 %989, %indvar2061
  %scevgep2063 = getelementptr i8, ptr %9, i64 %1003
  %1004 = or disjoint i64 %1003, 4
  %scevgep2071 = getelementptr i8, ptr %9, i64 %1004
  %gep1384 = getelementptr %struct.complex, ptr %invariant.gep1383, i64 %.710101379
  %1005 = load float, ptr %gep1384, align 4, !tbaa !9
  %1006 = fcmp une float %1005, 0.000000e+00
  br i1 %1006, label %1011, label %1007

1007:                                             ; preds = %1000
  %1008 = getelementptr inbounds i8, ptr %gep1384, i64 4
  %1009 = load float, ptr %1008, align 4, !tbaa !12
  %1010 = fcmp une float %1009, 0.000000e+00
  br i1 %1010, label %1011, label %.loopexit1087

1011:                                             ; preds = %1007, %1000
  br i1 %.not1045, label %1028, label %1012

1012:                                             ; preds = %1011
  %1013 = load float, ptr %6, align 4, !tbaa !9
  %1014 = load float, ptr %984, align 4, !tbaa !12
  %1015 = getelementptr inbounds i8, ptr %gep1384, i64 4
  %1016 = load float, ptr %1015, align 4, !tbaa !12
  %1017 = fneg float %1014
  %1018 = insertelement <2 x float> poison, float %1016, i64 0
  %1019 = insertelement <2 x float> %1018, float %1005, i64 1
  %1020 = insertelement <2 x float> poison, float %1017, i64 0
  %1021 = insertelement <2 x float> %1020, float %1014, i64 1
  %1022 = fmul <2 x float> %1019, %1021
  %1023 = insertelement <2 x float> poison, float %1013, i64 0
  %1024 = shufflevector <2 x float> %1023, <2 x float> poison, <2 x i32> zeroinitializer
  %1025 = insertelement <2 x float> poison, float %1005, i64 0
  %1026 = insertelement <2 x float> %1025, float %1016, i64 1
  %1027 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1024, <2 x float> %1026, <2 x float> %1022)
  br label %1040

1028:                                             ; preds = %1011
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef nonnull %gep1384) #6
  %1029 = load float, ptr %6, align 4, !tbaa !9
  %1030 = load float, ptr %984, align 4, !tbaa !12
  %1031 = fneg float %1030
  %1032 = load <2 x float>, ptr %12, align 8, !tbaa !13
  %1033 = insertelement <2 x float> poison, float %1030, i64 0
  %1034 = insertelement <2 x float> %1033, float %1031, i64 1
  %1035 = fmul <2 x float> %1032, %1034
  %1036 = shufflevector <2 x float> %1035, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1037 = insertelement <2 x float> poison, float %1029, i64 0
  %1038 = shufflevector <2 x float> %1037, <2 x float> poison, <2 x i32> zeroinitializer
  %1039 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1038, <2 x float> %1032, <2 x float> %1036)
  br label %1040

1040:                                             ; preds = %1028, %1012
  %1041 = phi <2 x float> [ %1027, %1012 ], [ %1039, %1028 ]
  %1042 = load i64, ptr %4, align 8, !tbaa !5
  %.not10461372 = icmp slt i64 %1042, 1
  br i1 %.not10461372, label %.loopexit1087, label %.lr.ph1375

.lr.ph1375:                                       ; preds = %1040
  %1043 = mul nsw i64 %.710101379, %18
  %1044 = extractelement <2 x float> %1041, i64 1
  %1045 = fneg float %1044
  %min.iters.check2095 = icmp ult i64 %1042, 12
  br i1 %min.iters.check2095, label %scalar.ph2094.preheader, label %vector.scevcheck2056

vector.scevcheck2056:                             ; preds = %.lr.ph1375
  %1046 = add nsw i64 %1042, -1
  %mul.result2059 = shl i64 %1046, 3
  %1047 = getelementptr i8, ptr %scevgep2057, i64 %mul.result2059
  %1048 = icmp ult ptr %1047, %scevgep2057
  %mul.result2065 = shl i64 %1046, 3
  %mul.overflow2066 = icmp ugt i64 %1046, 2305843009213693951
  %1049 = getelementptr i8, ptr %scevgep2063, i64 %mul.result2065
  %1050 = icmp ult ptr %1049, %scevgep2063
  %1051 = or i1 %1050, %mul.overflow2066
  %mul.result2069 = shl i64 %1046, 3
  %1052 = getelementptr i8, ptr %scevgep2067, i64 %mul.result2069
  %1053 = icmp ult ptr %1052, %scevgep2067
  %mul.result2073 = shl i64 %1046, 3
  %1054 = getelementptr i8, ptr %scevgep2071, i64 %mul.result2073
  %1055 = icmp ult ptr %1054, %scevgep2071
  %1056 = or i1 %1048, %1051
  %1057 = or i1 %1053, %1056
  %1058 = or i1 %1055, %1057
  br i1 %1058, label %scalar.ph2094.preheader, label %vector.memcheck2075

vector.memcheck2075:                              ; preds = %vector.scevcheck2056
  %1059 = shl i64 %1042, 3
  %scevgep2078 = getelementptr i8, ptr %gep2343, i64 %1059
  %scevgep2081 = getelementptr i8, ptr %gep2345, i64 %1059
  %scevgep2083 = getelementptr i8, ptr %scevgep2076, i64 %1059
  %scevgep2085 = getelementptr i8, ptr %scevgep2079, i64 %1059
  %bound02086 = icmp ult ptr %scevgep2076, %scevgep2081
  %bound12087 = icmp ult ptr %scevgep2079, %scevgep2078
  %found.conflict2088 = and i1 %bound02086, %bound12087
  %bound02089 = icmp ult ptr %scevgep2082, %scevgep2085
  %bound12090 = icmp ult ptr %scevgep2084, %scevgep2083
  %found.conflict2091 = and i1 %bound02089, %bound12090
  %conflict.rdx2092 = or i1 %found.conflict2088, %found.conflict2091
  br i1 %conflict.rdx2092, label %scalar.ph2094.preheader, label %vector.ph2096

vector.ph2096:                                    ; preds = %vector.memcheck2075
  %n.vec2098 = and i64 %1042, 4611686018427387900
  %ind.end2099 = or disjoint i64 %n.vec2098, 1
  %broadcast.splatinsert2107 = insertelement <4 x float> poison, float %1045, i64 0
  %broadcast.splat2108 = shufflevector <4 x float> %broadcast.splatinsert2107, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2110 = shufflevector <2 x float> %1041, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2112 = shufflevector <2 x float> %1041, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body2101

vector.body2101:                                  ; preds = %vector.body2101, %vector.ph2096
  %index2102 = phi i64 [ 0, %vector.ph2096 ], [ %index.next2117, %vector.body2101 ]
  %offset.idx2103 = or disjoint i64 %index2102, 1
  %1060 = getelementptr %struct.complex, ptr %20, i64 %offset.idx2103
  %1061 = getelementptr %struct.complex, ptr %1060, i64 %999
  %wide.vec2104 = load <8 x float>, ptr %1061, align 4, !tbaa !13
  %strided.vec2105 = shufflevector <8 x float> %wide.vec2104, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2106 = shufflevector <8 x float> %wide.vec2104, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1062 = fmul <4 x float> %strided.vec2106, %broadcast.splat2108
  %1063 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2110, <4 x float> %strided.vec2105, <4 x float> %1062)
  %1064 = fmul <4 x float> %broadcast.splat2112, %strided.vec2105
  %1065 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2110, <4 x float> %strided.vec2106, <4 x float> %1064)
  %1066 = getelementptr %struct.complex, ptr %1060, i64 %1043
  %wide.vec2113 = load <8 x float>, ptr %1066, align 4, !tbaa !13
  %strided.vec2114 = shufflevector <8 x float> %wide.vec2113, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2115 = shufflevector <8 x float> %wide.vec2113, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1067 = fadd <4 x float> %1063, %strided.vec2114
  %1068 = fadd <4 x float> %1065, %strided.vec2115
  %interleaved.vec2116 = shufflevector <4 x float> %1067, <4 x float> %1068, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2116, ptr %1066, align 4, !tbaa !13
  %index.next2117 = add nuw i64 %index2102, 4
  %1069 = icmp eq i64 %index.next2117, %n.vec2098
  br i1 %1069, label %middle.block2093, label %vector.body2101, !llvm.loop !51

middle.block2093:                                 ; preds = %vector.body2101
  %cmp.n2118 = icmp eq i64 %1042, %n.vec2098
  %1070 = shufflevector <4 x float> %1063, <4 x float> %1065, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2118, label %..loopexit1087_crit_edge, label %scalar.ph2094.preheader

scalar.ph2094.preheader:                          ; preds = %middle.block2093, %vector.memcheck2075, %vector.scevcheck2056, %.lr.ph1375
  %.910211373.ph = phi i64 [ 1, %vector.memcheck2075 ], [ 1, %vector.scevcheck2056 ], [ 1, %.lr.ph1375 ], [ %ind.end2099, %middle.block2093 ]
  %1071 = shufflevector <2 x float> %1041, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1072 = insertelement <2 x float> %1071, float %1045, i64 1
  %1073 = shufflevector <2 x float> %1041, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2094

scalar.ph2094:                                    ; preds = %scalar.ph2094.preheader, %scalar.ph2094
  %.910211373 = phi i64 [ %1083, %scalar.ph2094 ], [ %.910211373.ph, %scalar.ph2094.preheader ]
  %1074 = getelementptr %struct.complex, ptr %20, i64 %.910211373
  %1075 = getelementptr %struct.complex, ptr %1074, i64 %999
  %1076 = load <2 x float>, ptr %1075, align 4, !tbaa !13
  %1077 = fmul <2 x float> %1076, %1072
  %1078 = shufflevector <2 x float> %1077, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1079 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1073, <2 x float> %1076, <2 x float> %1078)
  %1080 = getelementptr %struct.complex, ptr %1074, i64 %1043
  %1081 = load <2 x float>, ptr %1080, align 4, !tbaa !13
  %1082 = fadd <2 x float> %1079, %1081
  store <2 x float> %1082, ptr %1080, align 4, !tbaa !13
  %1083 = add nuw i64 %.910211373, 1
  %exitcond1489.not = icmp eq i64 %.910211373, %1042
  br i1 %exitcond1489.not, label %..loopexit1087_crit_edge, label %scalar.ph2094, !llvm.loop !52

..loopexit1087_crit_edge:                         ; preds = %scalar.ph2094, %middle.block2093
  %1084 = phi <2 x float> [ %1070, %middle.block2093 ], [ %1079, %scalar.ph2094 ]
  store <2 x float> %1084, ptr %12, align 8, !tbaa !13
  br label %.loopexit1087

.loopexit1087:                                    ; preds = %1040, %..loopexit1087_crit_edge, %1007
  %1085 = add nuw nsw i64 %.710101379, 1
  %exitcond1490.not = icmp eq i64 %1085, %.81392
  %indvar.next2062 = add i64 %indvar2061, 1
  br i1 %exitcond1490.not, label %._crit_edge1382, label %1000, !llvm.loop !53

._crit_edge1382:                                  ; preds = %.loopexit1087, %.preheader1089
  %1086 = load <2 x float>, ptr %6, align 4, !tbaa !13
  br i1 %.not1042, label %1104, label %1087

1087:                                             ; preds = %._crit_edge1382
  %1088 = mul i64 %.81392, %986
  %1089 = getelementptr inbounds %struct.complex, ptr %17, i64 %1088
  %1090 = extractelement <2 x float> %1086, i64 1
  %1091 = fneg float %1090
  br i1 %.not1045, label %1094, label %1092

1092:                                             ; preds = %1087
  %1093 = getelementptr inbounds i8, ptr %1089, i64 4
  br label %.sink.split

1094:                                             ; preds = %1087
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef %1089) #6
  br label %.sink.split

.sink.split:                                      ; preds = %1094, %1092
  %.sink1577 = phi ptr [ %1093, %1092 ], [ %985, %1094 ]
  %.sink1574.in = phi ptr [ %1089, %1092 ], [ %12, %1094 ]
  %.sink1574 = load float, ptr %.sink1574.in, align 4, !tbaa !9
  %1095 = load float, ptr %.sink1577, align 4, !tbaa !12
  %1096 = insertelement <2 x float> %1086, float %1095, i64 0
  %1097 = insertelement <2 x float> poison, float %1091, i64 0
  %1098 = insertelement <2 x float> %1097, float %.sink1574, i64 1
  %1099 = fmul <2 x float> %1096, %1098
  %1100 = shufflevector <2 x float> %1086, <2 x float> poison, <2 x i32> zeroinitializer
  %1101 = insertelement <2 x float> poison, float %.sink1574, i64 0
  %1102 = insertelement <2 x float> %1101, float %1095, i64 1
  %1103 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1100, <2 x float> %1102, <2 x float> %1099)
  br label %1104

1104:                                             ; preds = %.sink.split, %._crit_edge1382
  %1105 = phi <2 x float> [ %1086, %._crit_edge1382 ], [ %1103, %.sink.split ]
  %1106 = extractelement <2 x float> %1105, i64 0
  %1107 = fcmp une float %1106, 1.000000e+00
  %1108 = extractelement <2 x float> %1105, i64 1
  %1109 = fcmp une float %1108, 0.000000e+00
  %or.cond = select i1 %1107, i1 true, i1 %1109
  br i1 %or.cond, label %1110, label %.loopexit1088

1110:                                             ; preds = %1104
  %1111 = load i64, ptr %4, align 8, !tbaa !5
  %.not10441385 = icmp slt i64 %1111, 1
  br i1 %.not10441385, label %.loopexit1088, label %.lr.ph1388

.lr.ph1388:                                       ; preds = %1110
  %1112 = mul nsw i64 %.81392, %18
  %invariant.gep1389 = getelementptr %struct.complex, ptr %20, i64 %1112
  %1113 = fneg float %1108
  %min.iters.check2035 = icmp ult i64 %1111, 8
  br i1 %min.iters.check2035, label %scalar.ph2034.preheader, label %vector.scevcheck2022

vector.scevcheck2022:                             ; preds = %.lr.ph1388
  %1114 = add nsw i64 %1111, -1
  %mul.result2027 = shl i64 %1114, 3
  %1115 = getelementptr i8, ptr %scevgep2025, i64 %mul.result2027
  %1116 = icmp ult ptr %1115, %scevgep2025
  %mul.result2031 = shl i64 %1114, 3
  %mul.overflow2032 = icmp ugt i64 %1114, 2305843009213693951
  %1117 = getelementptr i8, ptr %scevgep2029, i64 %mul.result2031
  %1118 = icmp ult ptr %1117, %scevgep2029
  %1119 = or i1 %1118, %mul.overflow2032
  %1120 = or i1 %1116, %1119
  br i1 %1120, label %scalar.ph2034.preheader, label %vector.ph2036

vector.ph2036:                                    ; preds = %vector.scevcheck2022
  %n.vec2038 = and i64 %1111, 4611686018427387900
  %ind.end2039 = or disjoint i64 %n.vec2038, 1
  %broadcast.splatinsert2047 = insertelement <4 x float> poison, float %1113, i64 0
  %broadcast.splat2048 = shufflevector <4 x float> %broadcast.splatinsert2047, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2050 = shufflevector <2 x float> %1105, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2052 = shufflevector <2 x float> %1105, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body2041

vector.body2041:                                  ; preds = %vector.body2041, %vector.ph2036
  %index2042 = phi i64 [ 0, %vector.ph2036 ], [ %index.next2054, %vector.body2041 ]
  %offset.idx2043 = or disjoint i64 %index2042, 1
  %1121 = getelementptr %struct.complex, ptr %invariant.gep1389, i64 %offset.idx2043
  %wide.vec2044 = load <8 x float>, ptr %1121, align 4, !tbaa !13
  %strided.vec2045 = shufflevector <8 x float> %wide.vec2044, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2046 = shufflevector <8 x float> %wide.vec2044, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1122 = fmul <4 x float> %strided.vec2046, %broadcast.splat2048
  %1123 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2050, <4 x float> %strided.vec2045, <4 x float> %1122)
  %1124 = fmul <4 x float> %broadcast.splat2052, %strided.vec2045
  %1125 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2050, <4 x float> %strided.vec2046, <4 x float> %1124)
  %interleaved.vec2053 = shufflevector <4 x float> %1123, <4 x float> %1125, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2053, ptr %1121, align 4, !tbaa !13
  %index.next2054 = add nuw i64 %index2042, 4
  %1126 = icmp eq i64 %index.next2054, %n.vec2038
  br i1 %1126, label %middle.block2033, label %vector.body2041, !llvm.loop !54

middle.block2033:                                 ; preds = %vector.body2041
  %cmp.n2055 = icmp eq i64 %1111, %n.vec2038
  br i1 %cmp.n2055, label %.loopexit1088, label %scalar.ph2034.preheader

scalar.ph2034.preheader:                          ; preds = %middle.block2033, %vector.scevcheck2022, %.lr.ph1388
  %.101386.ph = phi i64 [ 1, %vector.scevcheck2022 ], [ 1, %.lr.ph1388 ], [ %ind.end2039, %middle.block2033 ]
  %xtraiter2278 = and i64 %1111, 1
  %lcmp.mod2279.not = icmp eq i64 %xtraiter2278, 0
  br i1 %lcmp.mod2279.not, label %scalar.ph2034.prol.loopexit, label %scalar.ph2034.prol

scalar.ph2034.prol:                               ; preds = %scalar.ph2034.preheader
  %gep1390.prol = getelementptr %struct.complex, ptr %invariant.gep1389, i64 %.101386.ph
  %1127 = load <2 x float>, ptr %gep1390.prol, align 4, !tbaa !13
  %1128 = shufflevector <2 x float> %1105, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1129 = insertelement <2 x float> %1128, float %1113, i64 1
  %1130 = fmul <2 x float> %1127, %1129
  %1131 = shufflevector <2 x float> %1130, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1132 = shufflevector <2 x float> %1105, <2 x float> poison, <2 x i32> zeroinitializer
  %1133 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1132, <2 x float> %1127, <2 x float> %1131)
  store <2 x float> %1133, ptr %gep1390.prol, align 4, !tbaa !13
  %1134 = add nuw nsw i64 %.101386.ph, 1
  br label %scalar.ph2034.prol.loopexit

scalar.ph2034.prol.loopexit:                      ; preds = %scalar.ph2034.prol, %scalar.ph2034.preheader
  %.101386.unr = phi i64 [ %.101386.ph, %scalar.ph2034.preheader ], [ %1134, %scalar.ph2034.prol ]
  %1135 = icmp eq i64 %1111, %.101386.ph
  br i1 %1135, label %.loopexit1088, label %scalar.ph2034.preheader.new

scalar.ph2034.preheader.new:                      ; preds = %scalar.ph2034.prol.loopexit
  %1136 = shufflevector <2 x float> %1105, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1137 = insertelement <2 x float> %1136, float %1113, i64 1
  %1138 = shufflevector <2 x float> %1105, <2 x float> poison, <2 x i32> zeroinitializer
  %1139 = shufflevector <2 x float> %1105, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1140 = insertelement <2 x float> %1139, float %1113, i64 1
  %1141 = shufflevector <2 x float> %1105, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2034

scalar.ph2034:                                    ; preds = %scalar.ph2034, %scalar.ph2034.preheader.new
  %.101386 = phi i64 [ %.101386.unr, %scalar.ph2034.preheader.new ], [ %1151, %scalar.ph2034 ]
  %gep1390 = getelementptr %struct.complex, ptr %invariant.gep1389, i64 %.101386
  %1142 = load <2 x float>, ptr %gep1390, align 4, !tbaa !13
  %1143 = fmul <2 x float> %1142, %1137
  %1144 = shufflevector <2 x float> %1143, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1145 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1138, <2 x float> %1142, <2 x float> %1144)
  store <2 x float> %1145, ptr %gep1390, align 4, !tbaa !13
  %1146 = add nuw i64 %.101386, 1
  %gep1390.1 = getelementptr %struct.complex, ptr %invariant.gep1389, i64 %1146
  %1147 = load <2 x float>, ptr %gep1390.1, align 4, !tbaa !13
  %1148 = fmul <2 x float> %1147, %1140
  %1149 = shufflevector <2 x float> %1148, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1150 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1141, <2 x float> %1147, <2 x float> %1149)
  store <2 x float> %1150, ptr %gep1390.1, align 4, !tbaa !13
  %1151 = add nuw i64 %.101386, 2
  %exitcond1491.not.1 = icmp eq i64 %1146, %1111
  br i1 %exitcond1491.not.1, label %.loopexit1088, label %scalar.ph2034, !llvm.loop !55

.loopexit1088:                                    ; preds = %scalar.ph2034.prol.loopexit, %scalar.ph2034, %middle.block2033, %1110, %1104
  %1152 = add nuw i64 %.81392, 1
  %exitcond1492.not = icmp eq i64 %.81392, %86
  %indvar.next2024 = add i64 %indvar2023, 1
  br i1 %exitcond1492.not, label %.loopexit, label %.preheader1089, !llvm.loop !56

1153:                                             ; preds = %982
  %1154 = icmp sgt i64 %86, 0
  br i1 %1154, label %.lr.ph1417, label %.loopexit

.lr.ph1417:                                       ; preds = %1153
  %.not1038 = icmp eq i64 %22, 0
  %1155 = getelementptr inbounds i8, ptr %6, i64 4
  %1156 = getelementptr inbounds i8, ptr %12, i64 4
  %.not1035 = icmp eq i64 %.fr, 0
  %1157 = add i64 %15, 1
  %1158 = shl i64 %86, 3
  %1159 = add i64 %1158, -8
  %1160 = mul i64 %18, %1159
  %1161 = mul i64 %18, -8
  %1162 = or disjoint i64 %1160, 4
  %1163 = mul i64 %18, -8
  %1164 = mul i64 %18, %86
  %1165 = shl i64 %1164, 3
  %1166 = shl i64 %18, 3
  %1167 = or disjoint i64 %1160, 4
  %1168 = or disjoint i64 %1165, 4
  %1169 = mul i64 %18, -8
  %1170 = shl i64 %18, 3
  %1171 = shl i64 %86, 3
  %1172 = add i64 %1171, -8
  %1173 = mul i64 %18, %1172
  %1174 = or disjoint i64 %1165, 4
  %1175 = or disjoint i64 %1173, 4
  %1176 = getelementptr i8, ptr %9, i64 %1173
  %1177 = getelementptr i8, ptr %9, i64 %1173
  %1178 = getelementptr i8, ptr %1177, i64 -4
  %1179 = getelementptr i8, ptr %9, i64 %1175
  %1180 = getelementptr i8, ptr %9, i64 %1160
  %1181 = getelementptr i8, ptr %9, i64 %1167
  %1182 = getelementptr i8, ptr %9, i64 %1160
  %1183 = getelementptr i8, ptr %9, i64 %1162
  %1184 = getelementptr i8, ptr %9, i64 %1165
  %1185 = getelementptr i8, ptr %9, i64 %1165
  %1186 = getelementptr i8, ptr %1185, i64 -4
  %1187 = getelementptr i8, ptr %9, i64 %1174
  %1188 = getelementptr i8, ptr %9, i64 %1165
  %1189 = getelementptr i8, ptr %9, i64 %1168
  br label %1190

1190:                                             ; preds = %.lr.ph1417, %.loopexit1085
  %indvar2120 = phi i64 [ 0, %.lr.ph1417 ], [ %indvar.next2121, %.loopexit1085 ]
  %.91414 = phi i64 [ %86, %.lr.ph1417 ], [ %1351, %.loopexit1085 ]
  %1191 = mul i64 %1169, %indvar2120
  %scevgep2176 = getelementptr i8, ptr %1176, i64 %1191
  %scevgep2177 = getelementptr i8, ptr %1178, i64 %1191
  %scevgep2181 = getelementptr i8, ptr %1179, i64 %1191
  %1192 = mul i64 %1163, %indvar2120
  %scevgep2154 = getelementptr i8, ptr %1180, i64 %1192
  %scevgep2164 = getelementptr i8, ptr %1181, i64 %1192
  %1193 = mul i64 %1161, %indvar2120
  %scevgep2122 = getelementptr i8, ptr %1182, i64 %1193
  %scevgep2126 = getelementptr i8, ptr %1183, i64 %1193
  %1194 = load i64, ptr %5, align 8, !tbaa !5
  %.not1034.not1401 = icmp slt i64 %.91414, %1194
  br i1 %.not1034.not1401, label %.lr.ph1404, label %._crit_edge1405

.lr.ph1404:                                       ; preds = %1190
  %1195 = mul nsw i64 %.91414, %15
  %invariant.gep1406 = getelementptr %struct.complex, ptr %17, i64 %1195
  %1196 = mul nsw i64 %.91414, %18
  %1197 = getelementptr i8, ptr %1184, i64 %1191
  %1198 = getelementptr i8, ptr %1186, i64 %1191
  %1199 = getelementptr i8, ptr %1187, i64 %1191
  %1200 = getelementptr i8, ptr %1188, i64 %1192
  %1201 = getelementptr i8, ptr %1189, i64 %1192
  br label %1202

1202:                                             ; preds = %.lr.ph1404, %.loopexit1084
  %indvar2158 = phi i64 [ 0, %.lr.ph1404 ], [ %indvar.next2159, %.loopexit1084 ]
  %.810111402.in = phi i64 [ %.91414, %.lr.ph1404 ], [ %.810111402, %.loopexit1084 ]
  %1203 = mul i64 %1170, %indvar2158
  %scevgep2173 = getelementptr i8, ptr %1197, i64 %1203
  %scevgep2174 = getelementptr i8, ptr %1198, i64 %1203
  %scevgep2179 = getelementptr i8, ptr %1199, i64 %1203
  %1204 = mul i64 %1166, %indvar2158
  %scevgep2160 = getelementptr i8, ptr %1200, i64 %1204
  %scevgep2168 = getelementptr i8, ptr %1201, i64 %1204
  %.810111402 = add nuw nsw i64 %.810111402.in, 1
  %gep1407 = getelementptr %struct.complex, ptr %invariant.gep1406, i64 %.810111402
  %1205 = load float, ptr %gep1407, align 4, !tbaa !9
  %1206 = fcmp une float %1205, 0.000000e+00
  br i1 %1206, label %1211, label %1207

1207:                                             ; preds = %1202
  %1208 = getelementptr inbounds i8, ptr %gep1407, i64 4
  %1209 = load float, ptr %1208, align 4, !tbaa !12
  %1210 = fcmp une float %1209, 0.000000e+00
  br i1 %1210, label %1211, label %.loopexit1084

1211:                                             ; preds = %1207, %1202
  br i1 %.not1038, label %1228, label %1212

1212:                                             ; preds = %1211
  %1213 = load float, ptr %6, align 4, !tbaa !9
  %1214 = load float, ptr %1155, align 4, !tbaa !12
  %1215 = getelementptr inbounds i8, ptr %gep1407, i64 4
  %1216 = load float, ptr %1215, align 4, !tbaa !12
  %1217 = fneg float %1214
  %1218 = insertelement <2 x float> poison, float %1216, i64 0
  %1219 = insertelement <2 x float> %1218, float %1205, i64 1
  %1220 = insertelement <2 x float> poison, float %1217, i64 0
  %1221 = insertelement <2 x float> %1220, float %1214, i64 1
  %1222 = fmul <2 x float> %1219, %1221
  %1223 = insertelement <2 x float> poison, float %1213, i64 0
  %1224 = shufflevector <2 x float> %1223, <2 x float> poison, <2 x i32> zeroinitializer
  %1225 = insertelement <2 x float> poison, float %1205, i64 0
  %1226 = insertelement <2 x float> %1225, float %1216, i64 1
  %1227 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1224, <2 x float> %1226, <2 x float> %1222)
  br label %1240

1228:                                             ; preds = %1211
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef nonnull %gep1407) #6
  %1229 = load float, ptr %6, align 4, !tbaa !9
  %1230 = load float, ptr %1155, align 4, !tbaa !12
  %1231 = fneg float %1230
  %1232 = load <2 x float>, ptr %12, align 8, !tbaa !13
  %1233 = insertelement <2 x float> poison, float %1230, i64 0
  %1234 = insertelement <2 x float> %1233, float %1231, i64 1
  %1235 = fmul <2 x float> %1232, %1234
  %1236 = shufflevector <2 x float> %1235, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1237 = insertelement <2 x float> poison, float %1229, i64 0
  %1238 = shufflevector <2 x float> %1237, <2 x float> poison, <2 x i32> zeroinitializer
  %1239 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1238, <2 x float> %1232, <2 x float> %1236)
  br label %1240

1240:                                             ; preds = %1228, %1212
  %1241 = phi <2 x float> [ %1227, %1212 ], [ %1239, %1228 ]
  %1242 = load i64, ptr %4, align 8, !tbaa !5
  %.not10391394 = icmp slt i64 %1242, 1
  br i1 %.not10391394, label %.loopexit1084, label %.lr.ph1397

.lr.ph1397:                                       ; preds = %1240
  %1243 = mul nsw i64 %.810111402, %18
  %1244 = extractelement <2 x float> %1241, i64 1
  %1245 = fneg float %1244
  %min.iters.check2192 = icmp ult i64 %1242, 12
  br i1 %min.iters.check2192, label %scalar.ph2191.preheader, label %vector.scevcheck2153

vector.scevcheck2153:                             ; preds = %.lr.ph1397
  %1246 = add nsw i64 %1242, -1
  %mul.result2156 = shl i64 %1246, 3
  %1247 = getelementptr i8, ptr %scevgep2154, i64 %mul.result2156
  %1248 = icmp ult ptr %1247, %scevgep2154
  %mul.result2162 = shl i64 %1246, 3
  %mul.overflow2163 = icmp ugt i64 %1246, 2305843009213693951
  %1249 = getelementptr i8, ptr %scevgep2160, i64 %mul.result2162
  %1250 = icmp ult ptr %1249, %scevgep2160
  %1251 = or i1 %1250, %mul.overflow2163
  %mul.result2166 = shl i64 %1246, 3
  %1252 = getelementptr i8, ptr %scevgep2164, i64 %mul.result2166
  %1253 = icmp ult ptr %1252, %scevgep2164
  %mul.result2170 = shl i64 %1246, 3
  %1254 = getelementptr i8, ptr %scevgep2168, i64 %mul.result2170
  %1255 = icmp ult ptr %1254, %scevgep2168
  %1256 = or i1 %1248, %1251
  %1257 = or i1 %1253, %1256
  %1258 = or i1 %1255, %1257
  br i1 %1258, label %scalar.ph2191.preheader, label %vector.memcheck2172

vector.memcheck2172:                              ; preds = %vector.scevcheck2153
  %1259 = shl i64 %1242, 3
  %scevgep2175 = getelementptr i8, ptr %scevgep2174, i64 %1259
  %scevgep2178 = getelementptr i8, ptr %scevgep2177, i64 %1259
  %scevgep2180 = getelementptr i8, ptr %scevgep2173, i64 %1259
  %scevgep2182 = getelementptr i8, ptr %scevgep2176, i64 %1259
  %bound02183 = icmp ult ptr %scevgep2173, %scevgep2178
  %bound12184 = icmp ult ptr %scevgep2176, %scevgep2175
  %found.conflict2185 = and i1 %bound02183, %bound12184
  %bound02186 = icmp ult ptr %scevgep2179, %scevgep2182
  %bound12187 = icmp ult ptr %scevgep2181, %scevgep2180
  %found.conflict2188 = and i1 %bound02186, %bound12187
  %conflict.rdx2189 = or i1 %found.conflict2185, %found.conflict2188
  br i1 %conflict.rdx2189, label %scalar.ph2191.preheader, label %vector.ph2193

vector.ph2193:                                    ; preds = %vector.memcheck2172
  %n.vec2195 = and i64 %1242, 4611686018427387900
  %ind.end2196 = or disjoint i64 %n.vec2195, 1
  %broadcast.splatinsert2204 = insertelement <4 x float> poison, float %1245, i64 0
  %broadcast.splat2205 = shufflevector <4 x float> %broadcast.splatinsert2204, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2207 = shufflevector <2 x float> %1241, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2209 = shufflevector <2 x float> %1241, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body2198

vector.body2198:                                  ; preds = %vector.body2198, %vector.ph2193
  %index2199 = phi i64 [ 0, %vector.ph2193 ], [ %index.next2214, %vector.body2198 ]
  %offset.idx2200 = or disjoint i64 %index2199, 1
  %1260 = getelementptr %struct.complex, ptr %20, i64 %offset.idx2200
  %1261 = getelementptr %struct.complex, ptr %1260, i64 %1196
  %wide.vec2201 = load <8 x float>, ptr %1261, align 4, !tbaa !13
  %strided.vec2202 = shufflevector <8 x float> %wide.vec2201, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2203 = shufflevector <8 x float> %wide.vec2201, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1262 = fmul <4 x float> %strided.vec2203, %broadcast.splat2205
  %1263 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2207, <4 x float> %strided.vec2202, <4 x float> %1262)
  %1264 = fmul <4 x float> %broadcast.splat2209, %strided.vec2202
  %1265 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2207, <4 x float> %strided.vec2203, <4 x float> %1264)
  %1266 = getelementptr %struct.complex, ptr %1260, i64 %1243
  %wide.vec2210 = load <8 x float>, ptr %1266, align 4, !tbaa !13
  %strided.vec2211 = shufflevector <8 x float> %wide.vec2210, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2212 = shufflevector <8 x float> %wide.vec2210, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1267 = fadd <4 x float> %1263, %strided.vec2211
  %1268 = fadd <4 x float> %1265, %strided.vec2212
  %interleaved.vec2213 = shufflevector <4 x float> %1267, <4 x float> %1268, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2213, ptr %1266, align 4, !tbaa !13
  %index.next2214 = add nuw i64 %index2199, 4
  %1269 = icmp eq i64 %index.next2214, %n.vec2195
  br i1 %1269, label %middle.block2190, label %vector.body2198, !llvm.loop !57

middle.block2190:                                 ; preds = %vector.body2198
  %cmp.n2215 = icmp eq i64 %1242, %n.vec2195
  %1270 = shufflevector <4 x float> %1263, <4 x float> %1265, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2215, label %..loopexit1084_crit_edge, label %scalar.ph2191.preheader

scalar.ph2191.preheader:                          ; preds = %middle.block2190, %vector.memcheck2172, %vector.scevcheck2153, %.lr.ph1397
  %.111395.ph = phi i64 [ 1, %vector.memcheck2172 ], [ 1, %vector.scevcheck2153 ], [ 1, %.lr.ph1397 ], [ %ind.end2196, %middle.block2190 ]
  %1271 = shufflevector <2 x float> %1241, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1272 = insertelement <2 x float> %1271, float %1245, i64 1
  %1273 = shufflevector <2 x float> %1241, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2191

scalar.ph2191:                                    ; preds = %scalar.ph2191.preheader, %scalar.ph2191
  %.111395 = phi i64 [ %1283, %scalar.ph2191 ], [ %.111395.ph, %scalar.ph2191.preheader ]
  %1274 = getelementptr %struct.complex, ptr %20, i64 %.111395
  %1275 = getelementptr %struct.complex, ptr %1274, i64 %1196
  %1276 = load <2 x float>, ptr %1275, align 4, !tbaa !13
  %1277 = fmul <2 x float> %1276, %1272
  %1278 = shufflevector <2 x float> %1277, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1279 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1273, <2 x float> %1276, <2 x float> %1278)
  %1280 = getelementptr %struct.complex, ptr %1274, i64 %1243
  %1281 = load <2 x float>, ptr %1280, align 4, !tbaa !13
  %1282 = fadd <2 x float> %1279, %1281
  store <2 x float> %1282, ptr %1280, align 4, !tbaa !13
  %1283 = add nuw i64 %.111395, 1
  %exitcond1493.not = icmp eq i64 %.111395, %1242
  br i1 %exitcond1493.not, label %..loopexit1084_crit_edge, label %scalar.ph2191, !llvm.loop !58

..loopexit1084_crit_edge:                         ; preds = %scalar.ph2191, %middle.block2190
  %1284 = phi <2 x float> [ %1270, %middle.block2190 ], [ %1279, %scalar.ph2191 ]
  store <2 x float> %1284, ptr %12, align 8, !tbaa !13
  br label %.loopexit1084

.loopexit1084:                                    ; preds = %1240, %..loopexit1084_crit_edge, %1207
  %.not1034.not = icmp slt i64 %.810111402, %1194
  %indvar.next2159 = add i64 %indvar2158, 1
  br i1 %.not1034.not, label %1202, label %._crit_edge1405, !llvm.loop !59

._crit_edge1405:                                  ; preds = %.loopexit1084, %1190
  %1285 = load <2 x float>, ptr %6, align 4, !tbaa !13
  br i1 %.not1035, label %1303, label %1286

1286:                                             ; preds = %._crit_edge1405
  %1287 = mul i64 %.91414, %1157
  %1288 = getelementptr inbounds %struct.complex, ptr %17, i64 %1287
  %1289 = extractelement <2 x float> %1285, i64 1
  %1290 = fneg float %1289
  br i1 %.not1038, label %1293, label %1291

1291:                                             ; preds = %1286
  %1292 = getelementptr inbounds i8, ptr %1288, i64 4
  br label %.sink.split1578

1293:                                             ; preds = %1286
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef %1288) #6
  br label %.sink.split1578

.sink.split1578:                                  ; preds = %1293, %1291
  %.sink1584 = phi ptr [ %1292, %1291 ], [ %1156, %1293 ]
  %.sink1581.in = phi ptr [ %1288, %1291 ], [ %12, %1293 ]
  %.sink1581 = load float, ptr %.sink1581.in, align 4, !tbaa !9
  %1294 = load float, ptr %.sink1584, align 4, !tbaa !12
  %1295 = insertelement <2 x float> %1285, float %1294, i64 0
  %1296 = insertelement <2 x float> poison, float %1290, i64 0
  %1297 = insertelement <2 x float> %1296, float %.sink1581, i64 1
  %1298 = fmul <2 x float> %1295, %1297
  %1299 = shufflevector <2 x float> %1285, <2 x float> poison, <2 x i32> zeroinitializer
  %1300 = insertelement <2 x float> poison, float %.sink1581, i64 0
  %1301 = insertelement <2 x float> %1300, float %1294, i64 1
  %1302 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1299, <2 x float> %1301, <2 x float> %1298)
  br label %1303

1303:                                             ; preds = %.sink.split1578, %._crit_edge1405
  %1304 = phi <2 x float> [ %1285, %._crit_edge1405 ], [ %1302, %.sink.split1578 ]
  %1305 = extractelement <2 x float> %1304, i64 0
  %1306 = fcmp une float %1305, 1.000000e+00
  %1307 = extractelement <2 x float> %1304, i64 1
  %1308 = fcmp une float %1307, 0.000000e+00
  %or.cond5 = select i1 %1306, i1 true, i1 %1308
  br i1 %or.cond5, label %1309, label %.loopexit1085

1309:                                             ; preds = %1303
  %1310 = load i64, ptr %4, align 8, !tbaa !5
  %.not10371408 = icmp slt i64 %1310, 1
  br i1 %.not10371408, label %.loopexit1085, label %.lr.ph1411

.lr.ph1411:                                       ; preds = %1309
  %1311 = mul nsw i64 %.91414, %18
  %invariant.gep1412 = getelementptr %struct.complex, ptr %20, i64 %1311
  %1312 = fneg float %1307
  %min.iters.check2132 = icmp ult i64 %1310, 8
  br i1 %min.iters.check2132, label %scalar.ph2131.preheader, label %vector.scevcheck2119

vector.scevcheck2119:                             ; preds = %.lr.ph1411
  %1313 = add nsw i64 %1310, -1
  %mul.result2124 = shl i64 %1313, 3
  %1314 = getelementptr i8, ptr %scevgep2122, i64 %mul.result2124
  %1315 = icmp ult ptr %1314, %scevgep2122
  %mul.result2128 = shl i64 %1313, 3
  %mul.overflow2129 = icmp ugt i64 %1313, 2305843009213693951
  %1316 = getelementptr i8, ptr %scevgep2126, i64 %mul.result2128
  %1317 = icmp ult ptr %1316, %scevgep2126
  %1318 = or i1 %1317, %mul.overflow2129
  %1319 = or i1 %1315, %1318
  br i1 %1319, label %scalar.ph2131.preheader, label %vector.ph2133

vector.ph2133:                                    ; preds = %vector.scevcheck2119
  %n.vec2135 = and i64 %1310, 4611686018427387900
  %ind.end2136 = or disjoint i64 %n.vec2135, 1
  %broadcast.splatinsert2144 = insertelement <4 x float> poison, float %1312, i64 0
  %broadcast.splat2145 = shufflevector <4 x float> %broadcast.splatinsert2144, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2147 = shufflevector <2 x float> %1304, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat2149 = shufflevector <2 x float> %1304, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body2138

vector.body2138:                                  ; preds = %vector.body2138, %vector.ph2133
  %index2139 = phi i64 [ 0, %vector.ph2133 ], [ %index.next2151, %vector.body2138 ]
  %offset.idx2140 = or disjoint i64 %index2139, 1
  %1320 = getelementptr %struct.complex, ptr %invariant.gep1412, i64 %offset.idx2140
  %wide.vec2141 = load <8 x float>, ptr %1320, align 4, !tbaa !13
  %strided.vec2142 = shufflevector <8 x float> %wide.vec2141, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2143 = shufflevector <8 x float> %wide.vec2141, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1321 = fmul <4 x float> %strided.vec2143, %broadcast.splat2145
  %1322 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2147, <4 x float> %strided.vec2142, <4 x float> %1321)
  %1323 = fmul <4 x float> %broadcast.splat2149, %strided.vec2142
  %1324 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2147, <4 x float> %strided.vec2143, <4 x float> %1323)
  %interleaved.vec2150 = shufflevector <4 x float> %1322, <4 x float> %1324, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2150, ptr %1320, align 4, !tbaa !13
  %index.next2151 = add nuw i64 %index2139, 4
  %1325 = icmp eq i64 %index.next2151, %n.vec2135
  br i1 %1325, label %middle.block2130, label %vector.body2138, !llvm.loop !60

middle.block2130:                                 ; preds = %vector.body2138
  %cmp.n2152 = icmp eq i64 %1310, %n.vec2135
  br i1 %cmp.n2152, label %.loopexit1085, label %scalar.ph2131.preheader

scalar.ph2131.preheader:                          ; preds = %middle.block2130, %vector.scevcheck2119, %.lr.ph1411
  %.121409.ph = phi i64 [ 1, %vector.scevcheck2119 ], [ 1, %.lr.ph1411 ], [ %ind.end2136, %middle.block2130 ]
  %xtraiter2280 = and i64 %1310, 1
  %lcmp.mod2281.not = icmp eq i64 %xtraiter2280, 0
  br i1 %lcmp.mod2281.not, label %scalar.ph2131.prol.loopexit, label %scalar.ph2131.prol

scalar.ph2131.prol:                               ; preds = %scalar.ph2131.preheader
  %gep1413.prol = getelementptr %struct.complex, ptr %invariant.gep1412, i64 %.121409.ph
  %1326 = load <2 x float>, ptr %gep1413.prol, align 4, !tbaa !13
  %1327 = shufflevector <2 x float> %1304, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1328 = insertelement <2 x float> %1327, float %1312, i64 1
  %1329 = fmul <2 x float> %1326, %1328
  %1330 = shufflevector <2 x float> %1329, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1331 = shufflevector <2 x float> %1304, <2 x float> poison, <2 x i32> zeroinitializer
  %1332 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1331, <2 x float> %1326, <2 x float> %1330)
  store <2 x float> %1332, ptr %gep1413.prol, align 4, !tbaa !13
  %1333 = add nuw nsw i64 %.121409.ph, 1
  br label %scalar.ph2131.prol.loopexit

scalar.ph2131.prol.loopexit:                      ; preds = %scalar.ph2131.prol, %scalar.ph2131.preheader
  %.121409.unr = phi i64 [ %.121409.ph, %scalar.ph2131.preheader ], [ %1333, %scalar.ph2131.prol ]
  %1334 = icmp eq i64 %1310, %.121409.ph
  br i1 %1334, label %.loopexit1085, label %scalar.ph2131.preheader.new

scalar.ph2131.preheader.new:                      ; preds = %scalar.ph2131.prol.loopexit
  %1335 = shufflevector <2 x float> %1304, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1336 = insertelement <2 x float> %1335, float %1312, i64 1
  %1337 = shufflevector <2 x float> %1304, <2 x float> poison, <2 x i32> zeroinitializer
  %1338 = shufflevector <2 x float> %1304, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1339 = insertelement <2 x float> %1338, float %1312, i64 1
  %1340 = shufflevector <2 x float> %1304, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2131

scalar.ph2131:                                    ; preds = %scalar.ph2131, %scalar.ph2131.preheader.new
  %.121409 = phi i64 [ %.121409.unr, %scalar.ph2131.preheader.new ], [ %1350, %scalar.ph2131 ]
  %gep1413 = getelementptr %struct.complex, ptr %invariant.gep1412, i64 %.121409
  %1341 = load <2 x float>, ptr %gep1413, align 4, !tbaa !13
  %1342 = fmul <2 x float> %1341, %1336
  %1343 = shufflevector <2 x float> %1342, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1344 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1337, <2 x float> %1341, <2 x float> %1343)
  store <2 x float> %1344, ptr %gep1413, align 4, !tbaa !13
  %1345 = add nuw i64 %.121409, 1
  %gep1413.1 = getelementptr %struct.complex, ptr %invariant.gep1412, i64 %1345
  %1346 = load <2 x float>, ptr %gep1413.1, align 4, !tbaa !13
  %1347 = fmul <2 x float> %1346, %1339
  %1348 = shufflevector <2 x float> %1347, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1349 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1340, <2 x float> %1346, <2 x float> %1348)
  store <2 x float> %1349, ptr %gep1413.1, align 4, !tbaa !13
  %1350 = add nuw i64 %.121409, 2
  %exitcond1494.not.1 = icmp eq i64 %1345, %1310
  br i1 %exitcond1494.not.1, label %.loopexit1085, label %scalar.ph2131, !llvm.loop !61

.loopexit1085:                                    ; preds = %scalar.ph2131.prol.loopexit, %scalar.ph2131, %middle.block2130, %1309, %1303
  %1351 = add nsw i64 %.91414, -1
  %1352 = icmp sgt i64 %.91414, 1
  %indvar.next2121 = add i64 %indvar2120, 1
  br i1 %1352, label %1190, label %.loopexit, !llvm.loop !62

.loopexit.loopexit.unr-lcssa:                     ; preds = %.preheader, %.preheader.preheader
  %indvar.unr = phi i64 [ 0, %.preheader.preheader ], [ %indvar.next.7, %.preheader ]
  %lcmp.mod2283.not = icmp eq i64 %xtraiter2282, 0
  br i1 %lcmp.mod2283.not, label %.loopexit, label %.preheader.epil

.preheader.epil:                                  ; preds = %.loopexit.loopexit.unr-lcssa, %.preheader.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %.preheader.epil ], [ %indvar.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %1353 = mul i64 %72, %indvar.epil
  %scevgep.epil = getelementptr i8, ptr %9, i64 %1353
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.epil, i8 0, i64 %73, i1 false), !tbaa !13
  %indvar.next.epil = add nuw nsw i64 %indvar.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter2282
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.preheader.epil, !llvm.loop !63

.loopexit:                                        ; preds = %._crit_edge1120.split, %._crit_edge1120.split.us.us, %._crit_edge1168.split.us1207, %._crit_edge1168.split.us.us.us, %._crit_edge1244, %._crit_edge1282, %.preheader1095, %.preheader1095.thread, %.loopexit1092, %.loopexit1088, %.loopexit1085, %.loopexit.loopexit.unr-lcssa, %.preheader.epil, %89, %.lr.ph1134, %252, %.lr.ph1182, %628, %809, %.lr.ph1288, %.lr.ph1250, %438, %533, %983, %1153, %62, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #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 = distinct !{!16, !15}
!17 = distinct !{!17, !15, !18}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = distinct !{!19, !15, !18, !20}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15, !18, !20}
!23 = distinct !{!23, !15, !18}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15, !18}
!26 = distinct !{!26, !15, !18, !20}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15, !18}
!29 = distinct !{!29, !15, !18, !20}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15, !34}
!34 = !{!"llvm.loop.unswitch.partial.disable"}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15, !34}
!39 = distinct !{!39, !15, !18, !20}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15, !18}
!42 = distinct !{!42, !15, !18, !20}
!43 = distinct !{!43, !15, !18}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}
!46 = distinct !{!46, !15, !18, !20}
!47 = distinct !{!47, !15, !18}
!48 = distinct !{!48, !15, !18, !20}
!49 = distinct !{!49, !15, !18}
!50 = distinct !{!50, !15}
!51 = distinct !{!51, !15, !18, !20}
!52 = distinct !{!52, !15, !18}
!53 = distinct !{!53, !15}
!54 = distinct !{!54, !15, !18, !20}
!55 = distinct !{!55, !15, !18}
!56 = distinct !{!56, !15}
!57 = distinct !{!57, !15, !18, !20}
!58 = distinct !{!58, !15, !18}
!59 = distinct !{!59, !15}
!60 = distinct !{!60, !15, !18, !20}
!61 = distinct !{!61, !15, !18}
!62 = distinct !{!62, !15}
!63 = distinct !{!63, !64}
!64 = !{!"llvm.loop.unroll.disable"}


; Effective O3 passes: ADCEPass,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