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

; 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
@c_b1 = external hidden global %struct.complex, align 4

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

69:                                               ; preds = %11
  %70 = load ptr, ptr %17, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %71, ptr %44, align 8, !tbaa !9
  br label %75

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

75:                                               ; preds = %72, %69
  %76 = load ptr, ptr %15, align 8, !tbaa !5
  %77 = call i64 @lsame_(ptr noundef %76, ptr noundef @.str.1)
  store i64 %77, ptr %46, align 8, !tbaa !9
  %78 = load ptr, ptr %16, align 8, !tbaa !5
  %79 = call i64 @lsame_(ptr noundef %78, ptr noundef @.str.2)
  store i64 %79, ptr %47, align 8, !tbaa !9
  %80 = load ptr, ptr %14, align 8, !tbaa !5
  %81 = call i64 @lsame_(ptr noundef %80, ptr noundef @.str.3)
  store i64 %81, ptr %45, align 8, !tbaa !9
  store i64 0, ptr %41, align 8, !tbaa !9
  %82 = load i64, ptr %43, align 8, !tbaa !9
  %83 = icmp ne i64 %82, 0
  br i1 %83, label %89, label %84

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

88:                                               ; preds = %84
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %162

89:                                               ; preds = %84, %75
  %90 = load i64, ptr %45, align 8, !tbaa !9
  %91 = icmp ne i64 %90, 0
  br i1 %91, label %97, label %92

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

96:                                               ; preds = %92
  store i64 2, ptr %41, align 8, !tbaa !9
  br label %161

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

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

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

109:                                              ; preds = %105
  store i64 3, ptr %41, align 8, !tbaa !9
  br label %160

110:                                              ; preds = %105, %101, %97
  %111 = load ptr, ptr %16, align 8, !tbaa !5
  %112 = call i64 @lsame_(ptr noundef %111, ptr noundef @.str.3)
  %113 = icmp ne i64 %112, 0
  br i1 %113, label %119, label %114

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

118:                                              ; preds = %114
  store i64 4, ptr %41, align 8, !tbaa !9
  br label %159

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

123:                                              ; preds = %119
  store i64 5, ptr %41, align 8, !tbaa !9
  br label %158

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

128:                                              ; preds = %124
  store i64 6, ptr %41, align 8, !tbaa !9
  br label %157

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

134:                                              ; preds = %129
  br label %137

135:                                              ; preds = %129
  %136 = load i64, ptr %44, align 8, !tbaa !9
  br label %137

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

140:                                              ; preds = %137
  store i64 9, ptr %41, align 8, !tbaa !9
  br label %156

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

147:                                              ; preds = %141
  br label %151

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

151:                                              ; preds = %148, %147
  %152 = phi i64 [ 1, %147 ], [ %150, %148 ]
  %153 = icmp slt i64 %143, %152
  br i1 %153, label %154, label %155

154:                                              ; preds = %151
  store i64 11, ptr %41, align 8, !tbaa !9
  br label %155

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

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

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

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

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

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

161:                                              ; preds = %160, %96
  br label %162

162:                                              ; preds = %161, %88
  %163 = load i64, ptr %41, align 8, !tbaa !9
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %162
  %166 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %41)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %48, align 4
  br label %2726

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

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

175:                                              ; preds = %171, %167
  store i32 0, ptr %12, align 4
  store i32 1, ptr %48, align 4
  br label %2726

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

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

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

189:                                              ; preds = %218, %186
  %190 = load i64, ptr %39, align 8, !tbaa !9
  %191 = load i64, ptr %28, align 8, !tbaa !9
  %192 = icmp sle i64 %190, %191
  br i1 %192, label %193, label %221

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

196:                                              ; preds = %214, %193
  %197 = load i64, ptr %38, align 8, !tbaa !9
  %198 = load i64, ptr %29, align 8, !tbaa !9
  %199 = icmp sle i64 %197, %198
  br i1 %199, label %200, label %217

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

214:                                              ; preds = %200
  %215 = load i64, ptr %38, align 8, !tbaa !9
  %216 = add nsw i64 %215, 1
  store i64 %216, ptr %38, align 8, !tbaa !9
  br label %196, !llvm.loop !15

217:                                              ; preds = %196
  br label %218

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

221:                                              ; preds = %189
  store i32 0, ptr %12, align 4
  store i32 1, ptr %48, align 4
  br label %2726

222:                                              ; preds = %181, %176
  %223 = load i64, ptr %43, align 8, !tbaa !9
  %224 = icmp ne i64 %223, 0
  br i1 %224, label %225, label %1362

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

229:                                              ; preds = %225
  %230 = load i64, ptr %45, align 8, !tbaa !9
  %231 = icmp ne i64 %230, 0
  br i1 %231, label %232, label %500

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

235:                                              ; preds = %496, %232
  %236 = load i64, ptr %39, align 8, !tbaa !9
  %237 = load i64, ptr %28, align 8, !tbaa !9
  %238 = icmp sle i64 %236, %237
  br i1 %238, label %239, label %499

239:                                              ; preds = %235
  %240 = load ptr, ptr %19, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.complex, ptr %240, i32 0, i32 0
  %242 = load float, ptr %241, align 4, !tbaa !11
  %243 = fcmp une float %242, 1.000000e+00
  br i1 %243, label %249, label %244

244:                                              ; preds = %239
  %245 = load ptr, ptr %19, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.complex, ptr %245, i32 0, i32 1
  %247 = load float, ptr %246, align 4, !tbaa !14
  %248 = fcmp une float %247, 0.000000e+00
  br i1 %248, label %249, label %322

249:                                              ; preds = %244, %239
  %250 = load ptr, ptr %17, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  store i64 %251, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %318, %249
  %253 = load i64, ptr %38, align 8, !tbaa !9
  %254 = load i64, ptr %29, align 8, !tbaa !9
  %255 = icmp sle i64 %253, %254
  br i1 %255, label %256, label %321

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

318:                                              ; preds = %256
  %319 = load i64, ptr %38, align 8, !tbaa !9
  %320 = add nsw i64 %319, 1
  store i64 %320, ptr %38, align 8, !tbaa !9
  br label %252, !llvm.loop !18

321:                                              ; preds = %252
  br label %322

322:                                              ; preds = %321, %244
  %323 = load ptr, ptr %17, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  store i64 %324, ptr %40, align 8, !tbaa !9
  br label %325

325:                                              ; preds = %492, %322
  %326 = load i64, ptr %40, align 8, !tbaa !9
  %327 = icmp sge i64 %326, 1
  br i1 %327, label %328, label %495

328:                                              ; preds = %325
  %329 = load i64, ptr %40, align 8, !tbaa !9
  %330 = load i64, ptr %39, align 8, !tbaa !9
  %331 = load i64, ptr %26, align 8, !tbaa !9
  %332 = mul nsw i64 %330, %331
  %333 = add nsw i64 %329, %332
  store i64 %333, ptr %29, align 8, !tbaa !9
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  %335 = load i64, ptr %29, align 8, !tbaa !9
  %336 = getelementptr inbounds %struct.complex, ptr %334, i64 %335
  %337 = getelementptr inbounds %struct.complex, ptr %336, i32 0, i32 0
  %338 = load float, ptr %337, align 4, !tbaa !11
  %339 = fcmp une float %338, 0.000000e+00
  br i1 %339, label %347, label %340

340:                                              ; preds = %328
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = load i64, ptr %29, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct.complex, ptr %341, i64 %342
  %344 = getelementptr inbounds %struct.complex, ptr %343, i32 0, i32 1
  %345 = load float, ptr %344, align 4, !tbaa !14
  %346 = fcmp une float %345, 0.000000e+00
  br i1 %346, label %347, label %491

347:                                              ; preds = %340, %328
  %348 = load i64, ptr %47, align 8, !tbaa !9
  %349 = icmp ne i64 %348, 0
  br i1 %349, label %350, label %382

350:                                              ; preds = %347
  %351 = load i64, ptr %40, align 8, !tbaa !9
  %352 = load i64, ptr %39, align 8, !tbaa !9
  %353 = load i64, ptr %26, align 8, !tbaa !9
  %354 = mul nsw i64 %352, %353
  %355 = add nsw i64 %351, %354
  store i64 %355, ptr %29, align 8, !tbaa !9
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load i64, ptr %40, align 8, !tbaa !9
  %358 = load i64, ptr %39, align 8, !tbaa !9
  %359 = load i64, ptr %26, align 8, !tbaa !9
  %360 = mul nsw i64 %358, %359
  %361 = add nsw i64 %357, %360
  %362 = getelementptr inbounds %struct.complex, ptr %356, i64 %361
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = load i64, ptr %40, align 8, !tbaa !9
  %365 = load i64, ptr %40, align 8, !tbaa !9
  %366 = load i64, ptr %24, align 8, !tbaa !9
  %367 = mul nsw i64 %365, %366
  %368 = add nsw i64 %364, %367
  %369 = getelementptr inbounds %struct.complex, ptr %363, i64 %368
  call void @c_div(ptr noundef %35, ptr noundef %362, ptr noundef %369)
  %370 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %371 = load float, ptr %370, align 4, !tbaa !11
  %372 = load ptr, ptr %22, align 8, !tbaa !5
  %373 = load i64, ptr %29, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.complex, ptr %372, i64 %373
  %375 = getelementptr inbounds %struct.complex, ptr %374, i32 0, i32 0
  store float %371, ptr %375, align 4, !tbaa !11
  %376 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %377 = load float, ptr %376, align 4, !tbaa !14
  %378 = load ptr, ptr %22, align 8, !tbaa !5
  %379 = load i64, ptr %29, align 8, !tbaa !9
  %380 = getelementptr inbounds %struct.complex, ptr %378, i64 %379
  %381 = getelementptr inbounds %struct.complex, ptr %380, i32 0, i32 1
  store float %377, ptr %381, align 4, !tbaa !14
  br label %382

382:                                              ; preds = %350, %347
  %383 = load i64, ptr %40, align 8, !tbaa !9
  %384 = sub nsw i64 %383, 1
  store i64 %384, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %385

385:                                              ; preds = %487, %382
  %386 = load i64, ptr %38, align 8, !tbaa !9
  %387 = load i64, ptr %29, align 8, !tbaa !9
  %388 = icmp sle i64 %386, %387
  br i1 %388, label %389, label %490

389:                                              ; preds = %385
  %390 = load i64, ptr %38, align 8, !tbaa !9
  %391 = load i64, ptr %39, align 8, !tbaa !9
  %392 = load i64, ptr %26, align 8, !tbaa !9
  %393 = mul nsw i64 %391, %392
  %394 = add nsw i64 %390, %393
  store i64 %394, ptr %30, align 8, !tbaa !9
  %395 = load i64, ptr %38, align 8, !tbaa !9
  %396 = load i64, ptr %39, align 8, !tbaa !9
  %397 = load i64, ptr %26, align 8, !tbaa !9
  %398 = mul nsw i64 %396, %397
  %399 = add nsw i64 %395, %398
  store i64 %399, ptr %31, align 8, !tbaa !9
  %400 = load i64, ptr %40, align 8, !tbaa !9
  %401 = load i64, ptr %39, align 8, !tbaa !9
  %402 = load i64, ptr %26, align 8, !tbaa !9
  %403 = mul nsw i64 %401, %402
  %404 = add nsw i64 %400, %403
  store i64 %404, ptr %32, align 8, !tbaa !9
  %405 = load i64, ptr %38, align 8, !tbaa !9
  %406 = load i64, ptr %40, align 8, !tbaa !9
  %407 = load i64, ptr %24, align 8, !tbaa !9
  %408 = mul nsw i64 %406, %407
  %409 = add nsw i64 %405, %408
  store i64 %409, ptr %33, align 8, !tbaa !9
  %410 = load ptr, ptr %22, align 8, !tbaa !5
  %411 = load i64, ptr %32, align 8, !tbaa !9
  %412 = getelementptr inbounds %struct.complex, ptr %410, i64 %411
  %413 = getelementptr inbounds %struct.complex, ptr %412, i32 0, i32 0
  %414 = load float, ptr %413, align 4, !tbaa !11
  %415 = load ptr, ptr %20, align 8, !tbaa !5
  %416 = load i64, ptr %33, align 8, !tbaa !9
  %417 = getelementptr inbounds %struct.complex, ptr %415, i64 %416
  %418 = getelementptr inbounds %struct.complex, ptr %417, i32 0, i32 0
  %419 = load float, ptr %418, align 4, !tbaa !11
  %420 = load ptr, ptr %22, align 8, !tbaa !5
  %421 = load i64, ptr %32, align 8, !tbaa !9
  %422 = getelementptr inbounds %struct.complex, ptr %420, i64 %421
  %423 = getelementptr inbounds %struct.complex, ptr %422, i32 0, i32 1
  %424 = load float, ptr %423, align 4, !tbaa !14
  %425 = load ptr, ptr %20, align 8, !tbaa !5
  %426 = load i64, ptr %33, align 8, !tbaa !9
  %427 = getelementptr inbounds %struct.complex, ptr %425, i64 %426
  %428 = getelementptr inbounds %struct.complex, ptr %427, i32 0, i32 1
  %429 = load float, ptr %428, align 4, !tbaa !14
  %430 = fmul float %424, %429
  %431 = fneg float %430
  %432 = call float @llvm.fmuladd.f32(float %414, float %419, float %431)
  %433 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %432, ptr %433, align 4, !tbaa !11
  %434 = load ptr, ptr %22, align 8, !tbaa !5
  %435 = load i64, ptr %32, align 8, !tbaa !9
  %436 = getelementptr inbounds %struct.complex, ptr %434, i64 %435
  %437 = getelementptr inbounds %struct.complex, ptr %436, i32 0, i32 0
  %438 = load float, ptr %437, align 4, !tbaa !11
  %439 = load ptr, ptr %20, align 8, !tbaa !5
  %440 = load i64, ptr %33, align 8, !tbaa !9
  %441 = getelementptr inbounds %struct.complex, ptr %439, i64 %440
  %442 = getelementptr inbounds %struct.complex, ptr %441, i32 0, i32 1
  %443 = load float, ptr %442, align 4, !tbaa !14
  %444 = load ptr, ptr %22, align 8, !tbaa !5
  %445 = load i64, ptr %32, align 8, !tbaa !9
  %446 = getelementptr inbounds %struct.complex, ptr %444, i64 %445
  %447 = getelementptr inbounds %struct.complex, ptr %446, i32 0, i32 1
  %448 = load float, ptr %447, align 4, !tbaa !14
  %449 = load ptr, ptr %20, align 8, !tbaa !5
  %450 = load i64, ptr %33, align 8, !tbaa !9
  %451 = getelementptr inbounds %struct.complex, ptr %449, i64 %450
  %452 = getelementptr inbounds %struct.complex, ptr %451, i32 0, i32 0
  %453 = load float, ptr %452, align 4, !tbaa !11
  %454 = fmul float %448, %453
  %455 = call float @llvm.fmuladd.f32(float %438, float %443, float %454)
  %456 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %455, ptr %456, align 4, !tbaa !14
  %457 = load ptr, ptr %22, align 8, !tbaa !5
  %458 = load i64, ptr %31, align 8, !tbaa !9
  %459 = getelementptr inbounds %struct.complex, ptr %457, i64 %458
  %460 = getelementptr inbounds %struct.complex, ptr %459, i32 0, i32 0
  %461 = load float, ptr %460, align 4, !tbaa !11
  %462 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %463 = load float, ptr %462, align 4, !tbaa !11
  %464 = fsub float %461, %463
  %465 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %464, ptr %465, align 4, !tbaa !11
  %466 = load ptr, ptr %22, align 8, !tbaa !5
  %467 = load i64, ptr %31, align 8, !tbaa !9
  %468 = getelementptr inbounds %struct.complex, ptr %466, i64 %467
  %469 = getelementptr inbounds %struct.complex, ptr %468, i32 0, i32 1
  %470 = load float, ptr %469, align 4, !tbaa !14
  %471 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %472 = load float, ptr %471, align 4, !tbaa !14
  %473 = fsub float %470, %472
  %474 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %473, ptr %474, align 4, !tbaa !14
  %475 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %476 = load float, ptr %475, align 4, !tbaa !11
  %477 = load ptr, ptr %22, align 8, !tbaa !5
  %478 = load i64, ptr %30, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.complex, ptr %477, i64 %478
  %480 = getelementptr inbounds %struct.complex, ptr %479, i32 0, i32 0
  store float %476, ptr %480, align 4, !tbaa !11
  %481 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %482 = load float, ptr %481, align 4, !tbaa !14
  %483 = load ptr, ptr %22, align 8, !tbaa !5
  %484 = load i64, ptr %30, align 8, !tbaa !9
  %485 = getelementptr inbounds %struct.complex, ptr %483, i64 %484
  %486 = getelementptr inbounds %struct.complex, ptr %485, i32 0, i32 1
  store float %482, ptr %486, align 4, !tbaa !14
  br label %487

487:                                              ; preds = %389
  %488 = load i64, ptr %38, align 8, !tbaa !9
  %489 = add nsw i64 %488, 1
  store i64 %489, ptr %38, align 8, !tbaa !9
  br label %385, !llvm.loop !19

490:                                              ; preds = %385
  br label %491

491:                                              ; preds = %490, %340
  br label %492

492:                                              ; preds = %491
  %493 = load i64, ptr %40, align 8, !tbaa !9
  %494 = add nsw i64 %493, -1
  store i64 %494, ptr %40, align 8, !tbaa !9
  br label %325, !llvm.loop !20

495:                                              ; preds = %325
  br label %496

496:                                              ; preds = %495
  %497 = load i64, ptr %39, align 8, !tbaa !9
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %39, align 8, !tbaa !9
  br label %235, !llvm.loop !21

499:                                              ; preds = %235
  br label %771

500:                                              ; preds = %229
  %501 = load ptr, ptr %18, align 8, !tbaa !5
  %502 = load i64, ptr %501, align 8, !tbaa !9
  store i64 %502, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %503

503:                                              ; preds = %767, %500
  %504 = load i64, ptr %39, align 8, !tbaa !9
  %505 = load i64, ptr %28, align 8, !tbaa !9
  %506 = icmp sle i64 %504, %505
  br i1 %506, label %507, label %770

507:                                              ; preds = %503
  %508 = load ptr, ptr %19, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.complex, ptr %508, i32 0, i32 0
  %510 = load float, ptr %509, align 4, !tbaa !11
  %511 = fcmp une float %510, 1.000000e+00
  br i1 %511, label %517, label %512

512:                                              ; preds = %507
  %513 = load ptr, ptr %19, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.complex, ptr %513, i32 0, i32 1
  %515 = load float, ptr %514, align 4, !tbaa !14
  %516 = fcmp une float %515, 0.000000e+00
  br i1 %516, label %517, label %590

517:                                              ; preds = %512, %507
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  store i64 %519, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %520

520:                                              ; preds = %586, %517
  %521 = load i64, ptr %38, align 8, !tbaa !9
  %522 = load i64, ptr %29, align 8, !tbaa !9
  %523 = icmp sle i64 %521, %522
  br i1 %523, label %524, label %589

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

586:                                              ; preds = %524
  %587 = load i64, ptr %38, align 8, !tbaa !9
  %588 = add nsw i64 %587, 1
  store i64 %588, ptr %38, align 8, !tbaa !9
  br label %520, !llvm.loop !22

589:                                              ; preds = %520
  br label %590

590:                                              ; preds = %589, %512
  %591 = load ptr, ptr %17, align 8, !tbaa !5
  %592 = load i64, ptr %591, align 8, !tbaa !9
  store i64 %592, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %593

593:                                              ; preds = %763, %590
  %594 = load i64, ptr %40, align 8, !tbaa !9
  %595 = load i64, ptr %29, align 8, !tbaa !9
  %596 = icmp sle i64 %594, %595
  br i1 %596, label %597, label %766

597:                                              ; preds = %593
  %598 = load i64, ptr %40, align 8, !tbaa !9
  %599 = load i64, ptr %39, align 8, !tbaa !9
  %600 = load i64, ptr %26, align 8, !tbaa !9
  %601 = mul nsw i64 %599, %600
  %602 = add nsw i64 %598, %601
  store i64 %602, ptr %30, align 8, !tbaa !9
  %603 = load ptr, ptr %22, align 8, !tbaa !5
  %604 = load i64, ptr %30, align 8, !tbaa !9
  %605 = getelementptr inbounds %struct.complex, ptr %603, i64 %604
  %606 = getelementptr inbounds %struct.complex, ptr %605, i32 0, i32 0
  %607 = load float, ptr %606, align 4, !tbaa !11
  %608 = fcmp une float %607, 0.000000e+00
  br i1 %608, label %616, label %609

609:                                              ; preds = %597
  %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 = fcmp une float %614, 0.000000e+00
  br i1 %615, label %616, label %762

616:                                              ; preds = %609, %597
  %617 = load i64, ptr %47, align 8, !tbaa !9
  %618 = icmp ne i64 %617, 0
  br i1 %618, label %619, label %651

619:                                              ; preds = %616
  %620 = load i64, ptr %40, align 8, !tbaa !9
  %621 = load i64, ptr %39, align 8, !tbaa !9
  %622 = load i64, ptr %26, align 8, !tbaa !9
  %623 = mul nsw i64 %621, %622
  %624 = add nsw i64 %620, %623
  store i64 %624, ptr %30, align 8, !tbaa !9
  %625 = load ptr, ptr %22, align 8, !tbaa !5
  %626 = load i64, ptr %40, align 8, !tbaa !9
  %627 = load i64, ptr %39, align 8, !tbaa !9
  %628 = load i64, ptr %26, align 8, !tbaa !9
  %629 = mul nsw i64 %627, %628
  %630 = add nsw i64 %626, %629
  %631 = getelementptr inbounds %struct.complex, ptr %625, i64 %630
  %632 = load ptr, ptr %20, align 8, !tbaa !5
  %633 = load i64, ptr %40, align 8, !tbaa !9
  %634 = load i64, ptr %40, align 8, !tbaa !9
  %635 = load i64, ptr %24, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %633, %636
  %638 = getelementptr inbounds %struct.complex, ptr %632, i64 %637
  call void @c_div(ptr noundef %35, ptr noundef %631, ptr noundef %638)
  %639 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %640 = load float, ptr %639, align 4, !tbaa !11
  %641 = load ptr, ptr %22, align 8, !tbaa !5
  %642 = load i64, ptr %30, align 8, !tbaa !9
  %643 = getelementptr inbounds %struct.complex, ptr %641, i64 %642
  %644 = getelementptr inbounds %struct.complex, ptr %643, i32 0, i32 0
  store float %640, ptr %644, align 4, !tbaa !11
  %645 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %646 = load float, ptr %645, align 4, !tbaa !14
  %647 = load ptr, ptr %22, align 8, !tbaa !5
  %648 = load i64, ptr %30, align 8, !tbaa !9
  %649 = getelementptr inbounds %struct.complex, ptr %647, i64 %648
  %650 = getelementptr inbounds %struct.complex, ptr %649, i32 0, i32 1
  store float %646, ptr %650, align 4, !tbaa !14
  br label %651

651:                                              ; preds = %619, %616
  %652 = load ptr, ptr %17, align 8, !tbaa !5
  %653 = load i64, ptr %652, align 8, !tbaa !9
  store i64 %653, ptr %30, align 8, !tbaa !9
  %654 = load i64, ptr %40, align 8, !tbaa !9
  %655 = add nsw i64 %654, 1
  store i64 %655, ptr %38, align 8, !tbaa !9
  br label %656

656:                                              ; preds = %758, %651
  %657 = load i64, ptr %38, align 8, !tbaa !9
  %658 = load i64, ptr %30, align 8, !tbaa !9
  %659 = icmp sle i64 %657, %658
  br i1 %659, label %660, label %761

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

758:                                              ; preds = %660
  %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 %656, !llvm.loop !23

761:                                              ; preds = %656
  br label %762

762:                                              ; preds = %761, %609
  br label %763

763:                                              ; preds = %762
  %764 = load i64, ptr %40, align 8, !tbaa !9
  %765 = add nsw i64 %764, 1
  store i64 %765, ptr %40, align 8, !tbaa !9
  br label %593, !llvm.loop !24

766:                                              ; preds = %593
  br label %767

767:                                              ; preds = %766
  %768 = load i64, ptr %39, align 8, !tbaa !9
  %769 = add nsw i64 %768, 1
  store i64 %769, ptr %39, align 8, !tbaa !9
  br label %503, !llvm.loop !25

770:                                              ; preds = %503
  br label %771

771:                                              ; preds = %770, %499
  br label %1361

772:                                              ; preds = %225
  %773 = load i64, ptr %45, align 8, !tbaa !9
  %774 = icmp ne i64 %773, 0
  br i1 %774, label %775, label %1066

775:                                              ; preds = %772
  %776 = load ptr, ptr %18, align 8, !tbaa !5
  %777 = load i64, ptr %776, align 8, !tbaa !9
  store i64 %777, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %778

778:                                              ; preds = %1062, %775
  %779 = load i64, ptr %39, align 8, !tbaa !9
  %780 = load i64, ptr %28, align 8, !tbaa !9
  %781 = icmp sle i64 %779, %780
  br i1 %781, label %782, label %1065

782:                                              ; preds = %778
  %783 = load ptr, ptr %17, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  store i64 %784, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %785

785:                                              ; preds = %1058, %782
  %786 = load i64, ptr %38, align 8, !tbaa !9
  %787 = load i64, ptr %29, align 8, !tbaa !9
  %788 = icmp sle i64 %786, %787
  br i1 %788, label %789, label %1061

789:                                              ; preds = %785
  %790 = load i64, ptr %38, align 8, !tbaa !9
  %791 = load i64, ptr %39, align 8, !tbaa !9
  %792 = load i64, ptr %26, align 8, !tbaa !9
  %793 = mul nsw i64 %791, %792
  %794 = add nsw i64 %790, %793
  store i64 %794, ptr %30, align 8, !tbaa !9
  %795 = load ptr, ptr %19, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.complex, ptr %795, i32 0, i32 0
  %797 = load float, ptr %796, align 4, !tbaa !11
  %798 = load ptr, ptr %22, align 8, !tbaa !5
  %799 = load i64, ptr %30, align 8, !tbaa !9
  %800 = getelementptr inbounds %struct.complex, ptr %798, i64 %799
  %801 = getelementptr inbounds %struct.complex, ptr %800, i32 0, i32 0
  %802 = load float, ptr %801, align 4, !tbaa !11
  %803 = load ptr, ptr %19, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.complex, ptr %803, i32 0, i32 1
  %805 = load float, ptr %804, align 4, !tbaa !14
  %806 = load ptr, ptr %22, align 8, !tbaa !5
  %807 = load i64, ptr %30, align 8, !tbaa !9
  %808 = getelementptr inbounds %struct.complex, ptr %806, i64 %807
  %809 = getelementptr inbounds %struct.complex, ptr %808, i32 0, i32 1
  %810 = load float, ptr %809, align 4, !tbaa !14
  %811 = fmul float %805, %810
  %812 = fneg float %811
  %813 = call float @llvm.fmuladd.f32(float %797, float %802, float %812)
  %814 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %813, ptr %814, align 4, !tbaa !11
  %815 = load ptr, ptr %19, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.complex, ptr %815, i32 0, i32 0
  %817 = load float, ptr %816, align 4, !tbaa !11
  %818 = load ptr, ptr %22, align 8, !tbaa !5
  %819 = load i64, ptr %30, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.complex, ptr %818, i64 %819
  %821 = getelementptr inbounds %struct.complex, ptr %820, i32 0, i32 1
  %822 = load float, ptr %821, align 4, !tbaa !14
  %823 = load ptr, ptr %19, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.complex, ptr %823, i32 0, i32 1
  %825 = load float, ptr %824, align 4, !tbaa !14
  %826 = load ptr, ptr %22, align 8, !tbaa !5
  %827 = load i64, ptr %30, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.complex, ptr %826, i64 %827
  %829 = getelementptr inbounds %struct.complex, ptr %828, i32 0, i32 0
  %830 = load float, ptr %829, align 4, !tbaa !11
  %831 = fmul float %825, %830
  %832 = call float @llvm.fmuladd.f32(float %817, float %822, float %831)
  %833 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %832, ptr %833, align 4, !tbaa !14
  %834 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %835 = load float, ptr %834, align 4, !tbaa !11
  %836 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %835, ptr %836, align 4, !tbaa !11
  %837 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %838 = load float, ptr %837, align 4, !tbaa !14
  %839 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %838, ptr %839, align 4, !tbaa !14
  %840 = load i64, ptr %46, align 8, !tbaa !9
  %841 = icmp ne i64 %840, 0
  br i1 %841, label %842, label %946

842:                                              ; preds = %789
  %843 = load i64, ptr %38, align 8, !tbaa !9
  %844 = sub nsw i64 %843, 1
  store i64 %844, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %845

845:                                              ; preds = %925, %842
  %846 = load i64, ptr %40, align 8, !tbaa !9
  %847 = load i64, ptr %30, align 8, !tbaa !9
  %848 = icmp sle i64 %846, %847
  br i1 %848, label %849, label %928

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

925:                                              ; preds = %849
  %926 = load i64, ptr %40, align 8, !tbaa !9
  %927 = add nsw i64 %926, 1
  store i64 %927, ptr %40, align 8, !tbaa !9
  br label %845, !llvm.loop !26

928:                                              ; preds = %845
  %929 = load i64, ptr %47, align 8, !tbaa !9
  %930 = icmp ne i64 %929, 0
  br i1 %930, label %931, label %945

931:                                              ; preds = %928
  %932 = load ptr, ptr %20, align 8, !tbaa !5
  %933 = load i64, ptr %38, align 8, !tbaa !9
  %934 = load i64, ptr %38, align 8, !tbaa !9
  %935 = load i64, ptr %24, align 8, !tbaa !9
  %936 = mul nsw i64 %934, %935
  %937 = add nsw i64 %933, %936
  %938 = getelementptr inbounds %struct.complex, ptr %932, i64 %937
  call void @c_div(ptr noundef %35, ptr noundef %42, ptr noundef %938)
  %939 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %940 = load float, ptr %939, align 4, !tbaa !11
  %941 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %940, ptr %941, align 4, !tbaa !11
  %942 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %943 = load float, ptr %942, align 4, !tbaa !14
  %944 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %943, ptr %944, align 4, !tbaa !14
  br label %945

945:                                              ; preds = %931, %928
  br label %1040

946:                                              ; preds = %789
  %947 = load i64, ptr %38, align 8, !tbaa !9
  %948 = sub nsw i64 %947, 1
  store i64 %948, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %949

949:                                              ; preds = %1019, %946
  %950 = load i64, ptr %40, align 8, !tbaa !9
  %951 = load i64, ptr %30, align 8, !tbaa !9
  %952 = icmp sle i64 %950, %951
  br i1 %952, label %953, label %1022

953:                                              ; preds = %949
  %954 = load ptr, ptr %20, align 8, !tbaa !5
  %955 = load i64, ptr %40, align 8, !tbaa !9
  %956 = load i64, ptr %38, align 8, !tbaa !9
  %957 = load i64, ptr %24, align 8, !tbaa !9
  %958 = mul nsw i64 %956, %957
  %959 = add nsw i64 %955, %958
  %960 = getelementptr inbounds %struct.complex, ptr %954, i64 %959
  call void @r_cnjg(ptr noundef %37, ptr noundef %960)
  %961 = load i64, ptr %40, align 8, !tbaa !9
  %962 = load i64, ptr %39, align 8, !tbaa !9
  %963 = load i64, ptr %26, align 8, !tbaa !9
  %964 = mul nsw i64 %962, %963
  %965 = add nsw i64 %961, %964
  store i64 %965, ptr %31, align 8, !tbaa !9
  %966 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %967 = load float, ptr %966, align 4, !tbaa !11
  %968 = load ptr, ptr %22, align 8, !tbaa !5
  %969 = load i64, ptr %31, align 8, !tbaa !9
  %970 = getelementptr inbounds %struct.complex, ptr %968, i64 %969
  %971 = getelementptr inbounds %struct.complex, ptr %970, i32 0, i32 0
  %972 = load float, ptr %971, align 4, !tbaa !11
  %973 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %974 = load float, ptr %973, align 4, !tbaa !14
  %975 = load ptr, ptr %22, align 8, !tbaa !5
  %976 = load i64, ptr %31, align 8, !tbaa !9
  %977 = getelementptr inbounds %struct.complex, ptr %975, i64 %976
  %978 = getelementptr inbounds %struct.complex, ptr %977, i32 0, i32 1
  %979 = load float, ptr %978, align 4, !tbaa !14
  %980 = fmul float %974, %979
  %981 = fneg float %980
  %982 = call float @llvm.fmuladd.f32(float %967, float %972, float %981)
  %983 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %982, ptr %983, align 4, !tbaa !11
  %984 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %985 = load float, ptr %984, align 4, !tbaa !11
  %986 = load ptr, ptr %22, align 8, !tbaa !5
  %987 = load i64, ptr %31, align 8, !tbaa !9
  %988 = getelementptr inbounds %struct.complex, ptr %986, i64 %987
  %989 = getelementptr inbounds %struct.complex, ptr %988, i32 0, i32 1
  %990 = load float, ptr %989, align 4, !tbaa !14
  %991 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %992 = load float, ptr %991, align 4, !tbaa !14
  %993 = load ptr, ptr %22, align 8, !tbaa !5
  %994 = load i64, ptr %31, align 8, !tbaa !9
  %995 = getelementptr inbounds %struct.complex, ptr %993, i64 %994
  %996 = getelementptr inbounds %struct.complex, ptr %995, i32 0, i32 0
  %997 = load float, ptr %996, align 4, !tbaa !11
  %998 = fmul float %992, %997
  %999 = call float @llvm.fmuladd.f32(float %985, float %990, float %998)
  %1000 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %999, ptr %1000, align 4, !tbaa !14
  %1001 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1002 = load float, ptr %1001, align 4, !tbaa !11
  %1003 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1004 = load float, ptr %1003, align 4, !tbaa !11
  %1005 = fsub float %1002, %1004
  %1006 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1005, ptr %1006, align 4, !tbaa !11
  %1007 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1008 = load float, ptr %1007, align 4, !tbaa !14
  %1009 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1010 = load float, ptr %1009, align 4, !tbaa !14
  %1011 = fsub float %1008, %1010
  %1012 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1011, ptr %1012, align 4, !tbaa !14
  %1013 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1014 = load float, ptr %1013, align 4, !tbaa !11
  %1015 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1014, ptr %1015, align 4, !tbaa !11
  %1016 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1017 = load float, ptr %1016, align 4, !tbaa !14
  %1018 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1017, ptr %1018, align 4, !tbaa !14
  br label %1019

1019:                                             ; preds = %953
  %1020 = load i64, ptr %40, align 8, !tbaa !9
  %1021 = add nsw i64 %1020, 1
  store i64 %1021, ptr %40, align 8, !tbaa !9
  br label %949, !llvm.loop !27

1022:                                             ; preds = %949
  %1023 = load i64, ptr %47, align 8, !tbaa !9
  %1024 = icmp ne i64 %1023, 0
  br i1 %1024, label %1025, label %1039

1025:                                             ; preds = %1022
  %1026 = load ptr, ptr %20, align 8, !tbaa !5
  %1027 = load i64, ptr %38, align 8, !tbaa !9
  %1028 = load i64, ptr %38, align 8, !tbaa !9
  %1029 = load i64, ptr %24, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = add nsw i64 %1027, %1030
  %1032 = getelementptr inbounds %struct.complex, ptr %1026, i64 %1031
  call void @r_cnjg(ptr noundef %36, ptr noundef %1032)
  call void @c_div(ptr noundef %35, ptr noundef %42, ptr noundef %36)
  %1033 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1034 = load float, ptr %1033, align 4, !tbaa !11
  %1035 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1034, ptr %1035, align 4, !tbaa !11
  %1036 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1037 = load float, ptr %1036, align 4, !tbaa !14
  %1038 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1037, ptr %1038, align 4, !tbaa !14
  br label %1039

1039:                                             ; preds = %1025, %1022
  br label %1040

1040:                                             ; preds = %1039, %945
  %1041 = load i64, ptr %38, align 8, !tbaa !9
  %1042 = load i64, ptr %39, align 8, !tbaa !9
  %1043 = load i64, ptr %26, align 8, !tbaa !9
  %1044 = mul nsw i64 %1042, %1043
  %1045 = add nsw i64 %1041, %1044
  store i64 %1045, ptr %30, align 8, !tbaa !9
  %1046 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1047 = load float, ptr %1046, align 4, !tbaa !11
  %1048 = load ptr, ptr %22, align 8, !tbaa !5
  %1049 = load i64, ptr %30, align 8, !tbaa !9
  %1050 = getelementptr inbounds %struct.complex, ptr %1048, i64 %1049
  %1051 = getelementptr inbounds %struct.complex, ptr %1050, i32 0, i32 0
  store float %1047, ptr %1051, align 4, !tbaa !11
  %1052 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1053 = load float, ptr %1052, align 4, !tbaa !14
  %1054 = load ptr, ptr %22, align 8, !tbaa !5
  %1055 = load i64, ptr %30, align 8, !tbaa !9
  %1056 = getelementptr inbounds %struct.complex, ptr %1054, i64 %1055
  %1057 = getelementptr inbounds %struct.complex, ptr %1056, i32 0, i32 1
  store float %1053, ptr %1057, align 4, !tbaa !14
  br label %1058

1058:                                             ; preds = %1040
  %1059 = load i64, ptr %38, align 8, !tbaa !9
  %1060 = add nsw i64 %1059, 1
  store i64 %1060, ptr %38, align 8, !tbaa !9
  br label %785, !llvm.loop !28

1061:                                             ; preds = %785
  br label %1062

1062:                                             ; preds = %1061
  %1063 = load i64, ptr %39, align 8, !tbaa !9
  %1064 = add nsw i64 %1063, 1
  store i64 %1064, ptr %39, align 8, !tbaa !9
  br label %778, !llvm.loop !29

1065:                                             ; preds = %778
  br label %1360

1066:                                             ; preds = %772
  %1067 = load ptr, ptr %18, align 8, !tbaa !5
  %1068 = load i64, ptr %1067, align 8, !tbaa !9
  store i64 %1068, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %1069

1069:                                             ; preds = %1356, %1066
  %1070 = load i64, ptr %39, align 8, !tbaa !9
  %1071 = load i64, ptr %28, align 8, !tbaa !9
  %1072 = icmp sle i64 %1070, %1071
  br i1 %1072, label %1073, label %1359

1073:                                             ; preds = %1069
  %1074 = load ptr, ptr %17, align 8, !tbaa !5
  %1075 = load i64, ptr %1074, align 8, !tbaa !9
  store i64 %1075, ptr %38, align 8, !tbaa !9
  br label %1076

1076:                                             ; preds = %1352, %1073
  %1077 = load i64, ptr %38, align 8, !tbaa !9
  %1078 = icmp sge i64 %1077, 1
  br i1 %1078, label %1079, label %1355

1079:                                             ; preds = %1076
  %1080 = load i64, ptr %38, align 8, !tbaa !9
  %1081 = load i64, ptr %39, align 8, !tbaa !9
  %1082 = load i64, ptr %26, align 8, !tbaa !9
  %1083 = mul nsw i64 %1081, %1082
  %1084 = add nsw i64 %1080, %1083
  store i64 %1084, ptr %29, align 8, !tbaa !9
  %1085 = load ptr, ptr %19, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.complex, ptr %1085, 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
  %1092 = load float, ptr %1091, align 4, !tbaa !11
  %1093 = load ptr, ptr %19, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.complex, ptr %1093, i32 0, i32 1
  %1095 = load float, ptr %1094, align 4, !tbaa !14
  %1096 = load ptr, ptr %22, align 8, !tbaa !5
  %1097 = load i64, ptr %29, align 8, !tbaa !9
  %1098 = getelementptr inbounds %struct.complex, ptr %1096, i64 %1097
  %1099 = getelementptr inbounds %struct.complex, ptr %1098, i32 0, i32 1
  %1100 = load float, ptr %1099, align 4, !tbaa !14
  %1101 = fmul float %1095, %1100
  %1102 = fneg float %1101
  %1103 = call float @llvm.fmuladd.f32(float %1087, float %1092, float %1102)
  %1104 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1103, ptr %1104, align 4, !tbaa !11
  %1105 = load ptr, ptr %19, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.complex, ptr %1105, i32 0, i32 0
  %1107 = load float, ptr %1106, align 4, !tbaa !11
  %1108 = load ptr, ptr %22, align 8, !tbaa !5
  %1109 = load i64, ptr %29, align 8, !tbaa !9
  %1110 = getelementptr inbounds %struct.complex, ptr %1108, i64 %1109
  %1111 = getelementptr inbounds %struct.complex, ptr %1110, i32 0, i32 1
  %1112 = load float, ptr %1111, align 4, !tbaa !14
  %1113 = load ptr, ptr %19, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.complex, ptr %1113, i32 0, i32 1
  %1115 = load float, ptr %1114, align 4, !tbaa !14
  %1116 = load ptr, ptr %22, align 8, !tbaa !5
  %1117 = load i64, ptr %29, align 8, !tbaa !9
  %1118 = getelementptr inbounds %struct.complex, ptr %1116, i64 %1117
  %1119 = getelementptr inbounds %struct.complex, ptr %1118, i32 0, i32 0
  %1120 = load float, ptr %1119, align 4, !tbaa !11
  %1121 = fmul float %1115, %1120
  %1122 = call float @llvm.fmuladd.f32(float %1107, float %1112, float %1121)
  %1123 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1122, ptr %1123, align 4, !tbaa !14
  %1124 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1125 = load float, ptr %1124, align 4, !tbaa !11
  %1126 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1125, ptr %1126, align 4, !tbaa !11
  %1127 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1128 = load float, ptr %1127, align 4, !tbaa !14
  %1129 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1128, ptr %1129, align 4, !tbaa !14
  %1130 = load i64, ptr %46, align 8, !tbaa !9
  %1131 = icmp ne i64 %1130, 0
  br i1 %1131, label %1132, label %1238

1132:                                             ; preds = %1079
  %1133 = load ptr, ptr %17, align 8, !tbaa !5
  %1134 = load i64, ptr %1133, align 8, !tbaa !9
  store i64 %1134, ptr %29, align 8, !tbaa !9
  %1135 = load i64, ptr %38, align 8, !tbaa !9
  %1136 = add nsw i64 %1135, 1
  store i64 %1136, ptr %40, align 8, !tbaa !9
  br label %1137

1137:                                             ; preds = %1217, %1132
  %1138 = load i64, ptr %40, align 8, !tbaa !9
  %1139 = load i64, ptr %29, align 8, !tbaa !9
  %1140 = icmp sle i64 %1138, %1139
  br i1 %1140, label %1141, label %1220

1141:                                             ; preds = %1137
  %1142 = load i64, ptr %40, align 8, !tbaa !9
  %1143 = load i64, ptr %38, align 8, !tbaa !9
  %1144 = load i64, ptr %24, align 8, !tbaa !9
  %1145 = mul nsw i64 %1143, %1144
  %1146 = add nsw i64 %1142, %1145
  store i64 %1146, ptr %30, align 8, !tbaa !9
  %1147 = load i64, ptr %40, align 8, !tbaa !9
  %1148 = load i64, ptr %39, align 8, !tbaa !9
  %1149 = load i64, ptr %26, align 8, !tbaa !9
  %1150 = mul nsw i64 %1148, %1149
  %1151 = add nsw i64 %1147, %1150
  store i64 %1151, ptr %31, align 8, !tbaa !9
  %1152 = load ptr, ptr %20, align 8, !tbaa !5
  %1153 = load i64, ptr %30, align 8, !tbaa !9
  %1154 = getelementptr inbounds %struct.complex, ptr %1152, i64 %1153
  %1155 = getelementptr inbounds %struct.complex, ptr %1154, i32 0, i32 0
  %1156 = load float, ptr %1155, align 4, !tbaa !11
  %1157 = load ptr, ptr %22, align 8, !tbaa !5
  %1158 = load i64, ptr %31, align 8, !tbaa !9
  %1159 = getelementptr inbounds %struct.complex, ptr %1157, i64 %1158
  %1160 = getelementptr inbounds %struct.complex, ptr %1159, i32 0, i32 0
  %1161 = load float, ptr %1160, align 4, !tbaa !11
  %1162 = load ptr, ptr %20, align 8, !tbaa !5
  %1163 = load i64, ptr %30, align 8, !tbaa !9
  %1164 = getelementptr inbounds %struct.complex, ptr %1162, i64 %1163
  %1165 = getelementptr inbounds %struct.complex, ptr %1164, i32 0, i32 1
  %1166 = load float, ptr %1165, align 4, !tbaa !14
  %1167 = load ptr, ptr %22, align 8, !tbaa !5
  %1168 = load i64, ptr %31, align 8, !tbaa !9
  %1169 = getelementptr inbounds %struct.complex, ptr %1167, i64 %1168
  %1170 = getelementptr inbounds %struct.complex, ptr %1169, i32 0, i32 1
  %1171 = load float, ptr %1170, align 4, !tbaa !14
  %1172 = fmul float %1166, %1171
  %1173 = fneg float %1172
  %1174 = call float @llvm.fmuladd.f32(float %1156, float %1161, float %1173)
  %1175 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %1174, ptr %1175, align 4, !tbaa !11
  %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 = load ptr, ptr %22, align 8, !tbaa !5
  %1182 = load i64, ptr %31, align 8, !tbaa !9
  %1183 = getelementptr inbounds %struct.complex, ptr %1181, i64 %1182
  %1184 = getelementptr inbounds %struct.complex, ptr %1183, i32 0, i32 1
  %1185 = load float, ptr %1184, align 4, !tbaa !14
  %1186 = load ptr, ptr %20, align 8, !tbaa !5
  %1187 = load i64, ptr %30, align 8, !tbaa !9
  %1188 = getelementptr inbounds %struct.complex, ptr %1186, i64 %1187
  %1189 = getelementptr inbounds %struct.complex, ptr %1188, i32 0, i32 1
  %1190 = load float, ptr %1189, align 4, !tbaa !14
  %1191 = load ptr, ptr %22, align 8, !tbaa !5
  %1192 = load i64, ptr %31, align 8, !tbaa !9
  %1193 = getelementptr inbounds %struct.complex, ptr %1191, i64 %1192
  %1194 = getelementptr inbounds %struct.complex, ptr %1193, i32 0, i32 0
  %1195 = load float, ptr %1194, align 4, !tbaa !11
  %1196 = fmul float %1190, %1195
  %1197 = call float @llvm.fmuladd.f32(float %1180, float %1185, float %1196)
  %1198 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %1197, ptr %1198, align 4, !tbaa !14
  %1199 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1200 = load float, ptr %1199, align 4, !tbaa !11
  %1201 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1202 = load float, ptr %1201, align 4, !tbaa !11
  %1203 = fsub float %1200, %1202
  %1204 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1203, ptr %1204, align 4, !tbaa !11
  %1205 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1206 = load float, ptr %1205, align 4, !tbaa !14
  %1207 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1208 = load float, ptr %1207, align 4, !tbaa !14
  %1209 = fsub float %1206, %1208
  %1210 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1209, ptr %1210, align 4, !tbaa !14
  %1211 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1212 = load float, ptr %1211, align 4, !tbaa !11
  %1213 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1212, ptr %1213, align 4, !tbaa !11
  %1214 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1215 = load float, ptr %1214, align 4, !tbaa !14
  %1216 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1215, ptr %1216, align 4, !tbaa !14
  br label %1217

1217:                                             ; preds = %1141
  %1218 = load i64, ptr %40, align 8, !tbaa !9
  %1219 = add nsw i64 %1218, 1
  store i64 %1219, ptr %40, align 8, !tbaa !9
  br label %1137, !llvm.loop !30

1220:                                             ; preds = %1137
  %1221 = load i64, ptr %47, align 8, !tbaa !9
  %1222 = icmp ne i64 %1221, 0
  br i1 %1222, label %1223, label %1237

1223:                                             ; preds = %1220
  %1224 = load ptr, ptr %20, align 8, !tbaa !5
  %1225 = load i64, ptr %38, align 8, !tbaa !9
  %1226 = load i64, ptr %38, align 8, !tbaa !9
  %1227 = load i64, ptr %24, align 8, !tbaa !9
  %1228 = mul nsw i64 %1226, %1227
  %1229 = add nsw i64 %1225, %1228
  %1230 = getelementptr inbounds %struct.complex, ptr %1224, i64 %1229
  call void @c_div(ptr noundef %35, ptr noundef %42, ptr noundef %1230)
  %1231 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1232 = load float, ptr %1231, align 4, !tbaa !11
  %1233 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1232, ptr %1233, align 4, !tbaa !11
  %1234 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1235 = load float, ptr %1234, align 4, !tbaa !14
  %1236 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1235, ptr %1236, align 4, !tbaa !14
  br label %1237

1237:                                             ; preds = %1223, %1220
  br label %1334

1238:                                             ; preds = %1079
  %1239 = load ptr, ptr %17, align 8, !tbaa !5
  %1240 = load i64, ptr %1239, align 8, !tbaa !9
  store i64 %1240, ptr %29, align 8, !tbaa !9
  %1241 = load i64, ptr %38, align 8, !tbaa !9
  %1242 = add nsw i64 %1241, 1
  store i64 %1242, ptr %40, align 8, !tbaa !9
  br label %1243

1243:                                             ; preds = %1313, %1238
  %1244 = load i64, ptr %40, align 8, !tbaa !9
  %1245 = load i64, ptr %29, align 8, !tbaa !9
  %1246 = icmp sle i64 %1244, %1245
  br i1 %1246, label %1247, label %1316

1247:                                             ; preds = %1243
  %1248 = load ptr, ptr %20, align 8, !tbaa !5
  %1249 = load i64, ptr %40, align 8, !tbaa !9
  %1250 = load i64, ptr %38, align 8, !tbaa !9
  %1251 = load i64, ptr %24, align 8, !tbaa !9
  %1252 = mul nsw i64 %1250, %1251
  %1253 = add nsw i64 %1249, %1252
  %1254 = getelementptr inbounds %struct.complex, ptr %1248, i64 %1253
  call void @r_cnjg(ptr noundef %37, ptr noundef %1254)
  %1255 = load i64, ptr %40, align 8, !tbaa !9
  %1256 = load i64, ptr %39, align 8, !tbaa !9
  %1257 = load i64, ptr %26, align 8, !tbaa !9
  %1258 = mul nsw i64 %1256, %1257
  %1259 = add nsw i64 %1255, %1258
  store i64 %1259, ptr %30, align 8, !tbaa !9
  %1260 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %1261 = load float, ptr %1260, align 4, !tbaa !11
  %1262 = load ptr, ptr %22, align 8, !tbaa !5
  %1263 = load i64, ptr %30, align 8, !tbaa !9
  %1264 = getelementptr inbounds %struct.complex, ptr %1262, i64 %1263
  %1265 = getelementptr inbounds %struct.complex, ptr %1264, i32 0, i32 0
  %1266 = load float, ptr %1265, align 4, !tbaa !11
  %1267 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %1268 = load float, ptr %1267, align 4, !tbaa !14
  %1269 = load ptr, ptr %22, align 8, !tbaa !5
  %1270 = load i64, ptr %30, align 8, !tbaa !9
  %1271 = getelementptr inbounds %struct.complex, ptr %1269, i64 %1270
  %1272 = getelementptr inbounds %struct.complex, ptr %1271, i32 0, i32 1
  %1273 = load float, ptr %1272, align 4, !tbaa !14
  %1274 = fmul float %1268, %1273
  %1275 = fneg float %1274
  %1276 = call float @llvm.fmuladd.f32(float %1261, float %1266, float %1275)
  %1277 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %1276, ptr %1277, align 4, !tbaa !11
  %1278 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %1279 = load float, ptr %1278, align 4, !tbaa !11
  %1280 = load ptr, ptr %22, align 8, !tbaa !5
  %1281 = load i64, ptr %30, align 8, !tbaa !9
  %1282 = getelementptr inbounds %struct.complex, ptr %1280, i64 %1281
  %1283 = getelementptr inbounds %struct.complex, ptr %1282, i32 0, i32 1
  %1284 = load float, ptr %1283, align 4, !tbaa !14
  %1285 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %1286 = load float, ptr %1285, align 4, !tbaa !14
  %1287 = load ptr, ptr %22, align 8, !tbaa !5
  %1288 = load i64, ptr %30, align 8, !tbaa !9
  %1289 = getelementptr inbounds %struct.complex, ptr %1287, i64 %1288
  %1290 = getelementptr inbounds %struct.complex, ptr %1289, i32 0, i32 0
  %1291 = load float, ptr %1290, align 4, !tbaa !11
  %1292 = fmul float %1286, %1291
  %1293 = call float @llvm.fmuladd.f32(float %1279, float %1284, float %1292)
  %1294 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %1293, ptr %1294, align 4, !tbaa !14
  %1295 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1296 = load float, ptr %1295, align 4, !tbaa !11
  %1297 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1298 = load float, ptr %1297, align 4, !tbaa !11
  %1299 = fsub float %1296, %1298
  %1300 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1299, ptr %1300, align 4, !tbaa !11
  %1301 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1302 = load float, ptr %1301, align 4, !tbaa !14
  %1303 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1304 = load float, ptr %1303, align 4, !tbaa !14
  %1305 = fsub float %1302, %1304
  %1306 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1305, ptr %1306, align 4, !tbaa !14
  %1307 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1308 = load float, ptr %1307, align 4, !tbaa !11
  %1309 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1308, ptr %1309, align 4, !tbaa !11
  %1310 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1311 = load float, ptr %1310, align 4, !tbaa !14
  %1312 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1311, ptr %1312, align 4, !tbaa !14
  br label %1313

1313:                                             ; preds = %1247
  %1314 = load i64, ptr %40, align 8, !tbaa !9
  %1315 = add nsw i64 %1314, 1
  store i64 %1315, ptr %40, align 8, !tbaa !9
  br label %1243, !llvm.loop !31

1316:                                             ; preds = %1243
  %1317 = load i64, ptr %47, align 8, !tbaa !9
  %1318 = icmp ne i64 %1317, 0
  br i1 %1318, label %1319, label %1333

1319:                                             ; preds = %1316
  %1320 = load ptr, ptr %20, align 8, !tbaa !5
  %1321 = load i64, ptr %38, align 8, !tbaa !9
  %1322 = load i64, ptr %38, align 8, !tbaa !9
  %1323 = load i64, ptr %24, align 8, !tbaa !9
  %1324 = mul nsw i64 %1322, %1323
  %1325 = add nsw i64 %1321, %1324
  %1326 = getelementptr inbounds %struct.complex, ptr %1320, i64 %1325
  call void @r_cnjg(ptr noundef %36, ptr noundef %1326)
  call void @c_div(ptr noundef %35, ptr noundef %42, ptr noundef %36)
  %1327 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1328 = load float, ptr %1327, align 4, !tbaa !11
  %1329 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1328, ptr %1329, align 4, !tbaa !11
  %1330 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1331 = load float, ptr %1330, align 4, !tbaa !14
  %1332 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1331, ptr %1332, align 4, !tbaa !14
  br label %1333

1333:                                             ; preds = %1319, %1316
  br label %1334

1334:                                             ; preds = %1333, %1237
  %1335 = load i64, ptr %38, align 8, !tbaa !9
  %1336 = load i64, ptr %39, align 8, !tbaa !9
  %1337 = load i64, ptr %26, align 8, !tbaa !9
  %1338 = mul nsw i64 %1336, %1337
  %1339 = add nsw i64 %1335, %1338
  store i64 %1339, ptr %29, align 8, !tbaa !9
  %1340 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1341 = load float, ptr %1340, align 4, !tbaa !11
  %1342 = load ptr, ptr %22, align 8, !tbaa !5
  %1343 = load i64, ptr %29, align 8, !tbaa !9
  %1344 = getelementptr inbounds %struct.complex, ptr %1342, i64 %1343
  %1345 = getelementptr inbounds %struct.complex, ptr %1344, i32 0, i32 0
  store float %1341, ptr %1345, align 4, !tbaa !11
  %1346 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1347 = load float, ptr %1346, align 4, !tbaa !14
  %1348 = load ptr, ptr %22, align 8, !tbaa !5
  %1349 = load i64, ptr %29, align 8, !tbaa !9
  %1350 = getelementptr inbounds %struct.complex, ptr %1348, i64 %1349
  %1351 = getelementptr inbounds %struct.complex, ptr %1350, i32 0, i32 1
  store float %1347, ptr %1351, align 4, !tbaa !14
  br label %1352

1352:                                             ; preds = %1334
  %1353 = load i64, ptr %38, align 8, !tbaa !9
  %1354 = add nsw i64 %1353, -1
  store i64 %1354, ptr %38, align 8, !tbaa !9
  br label %1076, !llvm.loop !32

1355:                                             ; preds = %1076
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load i64, ptr %39, align 8, !tbaa !9
  %1358 = add nsw i64 %1357, 1
  store i64 %1358, ptr %39, align 8, !tbaa !9
  br label %1069, !llvm.loop !33

1359:                                             ; preds = %1069
  br label %1360

1360:                                             ; preds = %1359, %1065
  br label %1361

1361:                                             ; preds = %1360, %771
  br label %2725

1362:                                             ; preds = %222
  %1363 = load ptr, ptr %15, align 8, !tbaa !5
  %1364 = call i64 @lsame_(ptr noundef %1363, ptr noundef @.str.2)
  %1365 = icmp ne i64 %1364, 0
  br i1 %1365, label %1366, label %2009

1366:                                             ; preds = %1362
  %1367 = load i64, ptr %45, align 8, !tbaa !9
  %1368 = icmp ne i64 %1367, 0
  br i1 %1368, label %1369, label %1688

1369:                                             ; preds = %1366
  %1370 = load ptr, ptr %18, align 8, !tbaa !5
  %1371 = load i64, ptr %1370, align 8, !tbaa !9
  store i64 %1371, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %1372

1372:                                             ; preds = %1684, %1369
  %1373 = load i64, ptr %39, align 8, !tbaa !9
  %1374 = load i64, ptr %28, align 8, !tbaa !9
  %1375 = icmp sle i64 %1373, %1374
  br i1 %1375, label %1376, label %1687

1376:                                             ; preds = %1372
  %1377 = load ptr, ptr %19, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.complex, ptr %1377, i32 0, i32 0
  %1379 = load float, ptr %1378, align 4, !tbaa !11
  %1380 = fcmp une float %1379, 1.000000e+00
  br i1 %1380, label %1386, label %1381

1381:                                             ; preds = %1376
  %1382 = load ptr, ptr %19, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.complex, ptr %1382, i32 0, i32 1
  %1384 = load float, ptr %1383, align 4, !tbaa !14
  %1385 = fcmp une float %1384, 0.000000e+00
  br i1 %1385, label %1386, label %1459

1386:                                             ; preds = %1381, %1376
  %1387 = load ptr, ptr %17, align 8, !tbaa !5
  %1388 = load i64, ptr %1387, align 8, !tbaa !9
  store i64 %1388, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1389

1389:                                             ; preds = %1455, %1386
  %1390 = load i64, ptr %38, align 8, !tbaa !9
  %1391 = load i64, ptr %29, align 8, !tbaa !9
  %1392 = icmp sle i64 %1390, %1391
  br i1 %1392, label %1393, label %1458

1393:                                             ; preds = %1389
  %1394 = load i64, ptr %38, align 8, !tbaa !9
  %1395 = load i64, ptr %39, align 8, !tbaa !9
  %1396 = load i64, ptr %26, align 8, !tbaa !9
  %1397 = mul nsw i64 %1395, %1396
  %1398 = add nsw i64 %1394, %1397
  store i64 %1398, ptr %30, align 8, !tbaa !9
  %1399 = load i64, ptr %38, align 8, !tbaa !9
  %1400 = load i64, ptr %39, 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 %31, 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 = load ptr, ptr %22, align 8, !tbaa !5
  %1408 = load i64, ptr %31, align 8, !tbaa !9
  %1409 = getelementptr inbounds %struct.complex, ptr %1407, i64 %1408
  %1410 = getelementptr inbounds %struct.complex, ptr %1409, i32 0, i32 0
  %1411 = load float, ptr %1410, align 4, !tbaa !11
  %1412 = load ptr, ptr %19, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.complex, ptr %1412, i32 0, i32 1
  %1414 = load float, ptr %1413, align 4, !tbaa !14
  %1415 = load ptr, ptr %22, align 8, !tbaa !5
  %1416 = load i64, ptr %31, align 8, !tbaa !9
  %1417 = getelementptr inbounds %struct.complex, ptr %1415, i64 %1416
  %1418 = getelementptr inbounds %struct.complex, ptr %1417, i32 0, i32 1
  %1419 = load float, ptr %1418, align 4, !tbaa !14
  %1420 = fmul float %1414, %1419
  %1421 = fneg float %1420
  %1422 = call float @llvm.fmuladd.f32(float %1406, float %1411, float %1421)
  %1423 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1422, ptr %1423, align 4, !tbaa !11
  %1424 = load ptr, ptr %19, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.complex, ptr %1424, i32 0, i32 0
  %1426 = load float, ptr %1425, align 4, !tbaa !11
  %1427 = load ptr, ptr %22, align 8, !tbaa !5
  %1428 = load i64, ptr %31, align 8, !tbaa !9
  %1429 = getelementptr inbounds %struct.complex, ptr %1427, i64 %1428
  %1430 = getelementptr inbounds %struct.complex, ptr %1429, i32 0, i32 1
  %1431 = load float, ptr %1430, align 4, !tbaa !14
  %1432 = load ptr, ptr %19, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.complex, ptr %1432, i32 0, i32 1
  %1434 = load float, ptr %1433, align 4, !tbaa !14
  %1435 = load ptr, ptr %22, align 8, !tbaa !5
  %1436 = load i64, ptr %31, align 8, !tbaa !9
  %1437 = getelementptr inbounds %struct.complex, ptr %1435, i64 %1436
  %1438 = getelementptr inbounds %struct.complex, ptr %1437, i32 0, i32 0
  %1439 = load float, ptr %1438, align 4, !tbaa !11
  %1440 = fmul float %1434, %1439
  %1441 = call float @llvm.fmuladd.f32(float %1426, float %1431, float %1440)
  %1442 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1441, ptr %1442, align 4, !tbaa !14
  %1443 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1444 = load float, ptr %1443, align 4, !tbaa !11
  %1445 = load ptr, ptr %22, align 8, !tbaa !5
  %1446 = load i64, ptr %30, align 8, !tbaa !9
  %1447 = getelementptr inbounds %struct.complex, ptr %1445, i64 %1446
  %1448 = getelementptr inbounds %struct.complex, ptr %1447, i32 0, i32 0
  store float %1444, ptr %1448, align 4, !tbaa !11
  %1449 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1450 = load float, ptr %1449, align 4, !tbaa !14
  %1451 = load ptr, ptr %22, align 8, !tbaa !5
  %1452 = load i64, ptr %30, align 8, !tbaa !9
  %1453 = getelementptr inbounds %struct.complex, ptr %1451, i64 %1452
  %1454 = getelementptr inbounds %struct.complex, ptr %1453, i32 0, i32 1
  store float %1450, ptr %1454, align 4, !tbaa !14
  br label %1455

1455:                                             ; preds = %1393
  %1456 = load i64, ptr %38, align 8, !tbaa !9
  %1457 = add nsw i64 %1456, 1
  store i64 %1457, ptr %38, align 8, !tbaa !9
  br label %1389, !llvm.loop !34

1458:                                             ; preds = %1389
  br label %1459

1459:                                             ; preds = %1458, %1381
  %1460 = load i64, ptr %39, align 8, !tbaa !9
  %1461 = sub nsw i64 %1460, 1
  store i64 %1461, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %1462

1462:                                             ; preds = %1595, %1459
  %1463 = load i64, ptr %40, align 8, !tbaa !9
  %1464 = load i64, ptr %29, align 8, !tbaa !9
  %1465 = icmp sle i64 %1463, %1464
  br i1 %1465, label %1466, label %1598

1466:                                             ; preds = %1462
  %1467 = load i64, ptr %40, align 8, !tbaa !9
  %1468 = load i64, ptr %39, align 8, !tbaa !9
  %1469 = load i64, ptr %24, align 8, !tbaa !9
  %1470 = mul nsw i64 %1468, %1469
  %1471 = add nsw i64 %1467, %1470
  store i64 %1471, ptr %30, align 8, !tbaa !9
  %1472 = load ptr, ptr %20, align 8, !tbaa !5
  %1473 = load i64, ptr %30, align 8, !tbaa !9
  %1474 = getelementptr inbounds %struct.complex, ptr %1472, i64 %1473
  %1475 = getelementptr inbounds %struct.complex, ptr %1474, i32 0, i32 0
  %1476 = load float, ptr %1475, align 4, !tbaa !11
  %1477 = fcmp une float %1476, 0.000000e+00
  br i1 %1477, label %1485, label %1478

1478:                                             ; preds = %1466
  %1479 = load ptr, ptr %20, align 8, !tbaa !5
  %1480 = load i64, ptr %30, align 8, !tbaa !9
  %1481 = getelementptr inbounds %struct.complex, ptr %1479, i64 %1480
  %1482 = getelementptr inbounds %struct.complex, ptr %1481, i32 0, i32 1
  %1483 = load float, ptr %1482, align 4, !tbaa !14
  %1484 = fcmp une float %1483, 0.000000e+00
  br i1 %1484, label %1485, label %1594

1485:                                             ; preds = %1478, %1466
  %1486 = load ptr, ptr %17, align 8, !tbaa !5
  %1487 = load i64, ptr %1486, align 8, !tbaa !9
  store i64 %1487, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1488

1488:                                             ; preds = %1590, %1485
  %1489 = load i64, ptr %38, align 8, !tbaa !9
  %1490 = load i64, ptr %30, align 8, !tbaa !9
  %1491 = icmp sle i64 %1489, %1490
  br i1 %1491, label %1492, label %1593

1492:                                             ; preds = %1488
  %1493 = load i64, ptr %38, align 8, !tbaa !9
  %1494 = load i64, ptr %39, align 8, !tbaa !9
  %1495 = load i64, ptr %26, align 8, !tbaa !9
  %1496 = mul nsw i64 %1494, %1495
  %1497 = add nsw i64 %1493, %1496
  store i64 %1497, ptr %31, align 8, !tbaa !9
  %1498 = load i64, ptr %38, align 8, !tbaa !9
  %1499 = load i64, ptr %39, align 8, !tbaa !9
  %1500 = load i64, ptr %26, align 8, !tbaa !9
  %1501 = mul nsw i64 %1499, %1500
  %1502 = add nsw i64 %1498, %1501
  store i64 %1502, ptr %32, align 8, !tbaa !9
  %1503 = load i64, ptr %40, align 8, !tbaa !9
  %1504 = load i64, ptr %39, align 8, !tbaa !9
  %1505 = load i64, ptr %24, align 8, !tbaa !9
  %1506 = mul nsw i64 %1504, %1505
  %1507 = add nsw i64 %1503, %1506
  store i64 %1507, ptr %33, align 8, !tbaa !9
  %1508 = load i64, ptr %38, align 8, !tbaa !9
  %1509 = load i64, ptr %40, align 8, !tbaa !9
  %1510 = load i64, ptr %26, align 8, !tbaa !9
  %1511 = mul nsw i64 %1509, %1510
  %1512 = add nsw i64 %1508, %1511
  store i64 %1512, ptr %34, align 8, !tbaa !9
  %1513 = load ptr, ptr %20, align 8, !tbaa !5
  %1514 = load i64, ptr %33, align 8, !tbaa !9
  %1515 = getelementptr inbounds %struct.complex, ptr %1513, i64 %1514
  %1516 = getelementptr inbounds %struct.complex, ptr %1515, i32 0, i32 0
  %1517 = load float, ptr %1516, align 4, !tbaa !11
  %1518 = load ptr, ptr %22, align 8, !tbaa !5
  %1519 = load i64, ptr %34, align 8, !tbaa !9
  %1520 = getelementptr inbounds %struct.complex, ptr %1518, i64 %1519
  %1521 = getelementptr inbounds %struct.complex, ptr %1520, i32 0, i32 0
  %1522 = load float, ptr %1521, align 4, !tbaa !11
  %1523 = load ptr, ptr %20, align 8, !tbaa !5
  %1524 = load i64, ptr %33, align 8, !tbaa !9
  %1525 = getelementptr inbounds %struct.complex, ptr %1523, i64 %1524
  %1526 = getelementptr inbounds %struct.complex, ptr %1525, i32 0, i32 1
  %1527 = load float, ptr %1526, align 4, !tbaa !14
  %1528 = load ptr, ptr %22, align 8, !tbaa !5
  %1529 = load i64, ptr %34, align 8, !tbaa !9
  %1530 = getelementptr inbounds %struct.complex, ptr %1528, i64 %1529
  %1531 = getelementptr inbounds %struct.complex, ptr %1530, i32 0, i32 1
  %1532 = load float, ptr %1531, align 4, !tbaa !14
  %1533 = fmul float %1527, %1532
  %1534 = fneg float %1533
  %1535 = call float @llvm.fmuladd.f32(float %1517, float %1522, float %1534)
  %1536 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %1535, ptr %1536, align 4, !tbaa !11
  %1537 = load ptr, ptr %20, align 8, !tbaa !5
  %1538 = load i64, ptr %33, align 8, !tbaa !9
  %1539 = getelementptr inbounds %struct.complex, ptr %1537, i64 %1538
  %1540 = getelementptr inbounds %struct.complex, ptr %1539, i32 0, i32 0
  %1541 = load float, ptr %1540, align 4, !tbaa !11
  %1542 = load ptr, ptr %22, align 8, !tbaa !5
  %1543 = load i64, ptr %34, align 8, !tbaa !9
  %1544 = getelementptr inbounds %struct.complex, ptr %1542, i64 %1543
  %1545 = getelementptr inbounds %struct.complex, ptr %1544, i32 0, i32 1
  %1546 = load float, ptr %1545, align 4, !tbaa !14
  %1547 = load ptr, ptr %20, align 8, !tbaa !5
  %1548 = load i64, ptr %33, align 8, !tbaa !9
  %1549 = getelementptr inbounds %struct.complex, ptr %1547, i64 %1548
  %1550 = getelementptr inbounds %struct.complex, ptr %1549, i32 0, i32 1
  %1551 = load float, ptr %1550, align 4, !tbaa !14
  %1552 = load ptr, ptr %22, align 8, !tbaa !5
  %1553 = load i64, ptr %34, align 8, !tbaa !9
  %1554 = getelementptr inbounds %struct.complex, ptr %1552, i64 %1553
  %1555 = getelementptr inbounds %struct.complex, ptr %1554, i32 0, i32 0
  %1556 = load float, ptr %1555, align 4, !tbaa !11
  %1557 = fmul float %1551, %1556
  %1558 = call float @llvm.fmuladd.f32(float %1541, float %1546, float %1557)
  %1559 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %1558, ptr %1559, align 4, !tbaa !14
  %1560 = load ptr, ptr %22, align 8, !tbaa !5
  %1561 = load i64, ptr %32, align 8, !tbaa !9
  %1562 = getelementptr inbounds %struct.complex, ptr %1560, i64 %1561
  %1563 = getelementptr inbounds %struct.complex, ptr %1562, i32 0, i32 0
  %1564 = load float, ptr %1563, align 4, !tbaa !11
  %1565 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1566 = load float, ptr %1565, align 4, !tbaa !11
  %1567 = fsub float %1564, %1566
  %1568 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1567, ptr %1568, align 4, !tbaa !11
  %1569 = load ptr, ptr %22, align 8, !tbaa !5
  %1570 = load i64, ptr %32, align 8, !tbaa !9
  %1571 = getelementptr inbounds %struct.complex, ptr %1569, i64 %1570
  %1572 = getelementptr inbounds %struct.complex, ptr %1571, i32 0, i32 1
  %1573 = load float, ptr %1572, align 4, !tbaa !14
  %1574 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1575 = load float, ptr %1574, align 4, !tbaa !14
  %1576 = fsub float %1573, %1575
  %1577 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1576, ptr %1577, align 4, !tbaa !14
  %1578 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1579 = load float, ptr %1578, align 4, !tbaa !11
  %1580 = load ptr, ptr %22, align 8, !tbaa !5
  %1581 = load i64, ptr %31, align 8, !tbaa !9
  %1582 = getelementptr inbounds %struct.complex, ptr %1580, i64 %1581
  %1583 = getelementptr inbounds %struct.complex, ptr %1582, i32 0, i32 0
  store float %1579, ptr %1583, align 4, !tbaa !11
  %1584 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1585 = load float, ptr %1584, align 4, !tbaa !14
  %1586 = load ptr, ptr %22, align 8, !tbaa !5
  %1587 = load i64, ptr %31, align 8, !tbaa !9
  %1588 = getelementptr inbounds %struct.complex, ptr %1586, i64 %1587
  %1589 = getelementptr inbounds %struct.complex, ptr %1588, i32 0, i32 1
  store float %1585, ptr %1589, align 4, !tbaa !14
  br label %1590

1590:                                             ; preds = %1492
  %1591 = load i64, ptr %38, align 8, !tbaa !9
  %1592 = add nsw i64 %1591, 1
  store i64 %1592, ptr %38, align 8, !tbaa !9
  br label %1488, !llvm.loop !35

1593:                                             ; preds = %1488
  br label %1594

1594:                                             ; preds = %1593, %1478
  br label %1595

1595:                                             ; preds = %1594
  %1596 = load i64, ptr %40, align 8, !tbaa !9
  %1597 = add nsw i64 %1596, 1
  store i64 %1597, ptr %40, align 8, !tbaa !9
  br label %1462, !llvm.loop !36

1598:                                             ; preds = %1462
  %1599 = load i64, ptr %47, align 8, !tbaa !9
  %1600 = icmp ne i64 %1599, 0
  br i1 %1600, label %1601, label %1683

1601:                                             ; preds = %1598
  %1602 = load ptr, ptr %20, align 8, !tbaa !5
  %1603 = load i64, ptr %39, align 8, !tbaa !9
  %1604 = load i64, ptr %39, align 8, !tbaa !9
  %1605 = load i64, ptr %24, align 8, !tbaa !9
  %1606 = mul nsw i64 %1604, %1605
  %1607 = add nsw i64 %1603, %1606
  %1608 = getelementptr inbounds %struct.complex, ptr %1602, i64 %1607
  call void @c_div(ptr noundef %35, ptr noundef @c_b1, ptr noundef %1608)
  %1609 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1610 = load float, ptr %1609, align 4, !tbaa !11
  %1611 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1610, ptr %1611, align 4, !tbaa !11
  %1612 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1613 = load float, ptr %1612, align 4, !tbaa !14
  %1614 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1613, ptr %1614, align 4, !tbaa !14
  %1615 = load ptr, ptr %17, align 8, !tbaa !5
  %1616 = load i64, ptr %1615, align 8, !tbaa !9
  store i64 %1616, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1617

1617:                                             ; preds = %1679, %1601
  %1618 = load i64, ptr %38, align 8, !tbaa !9
  %1619 = load i64, ptr %29, align 8, !tbaa !9
  %1620 = icmp sle i64 %1618, %1619
  br i1 %1620, label %1621, label %1682

1621:                                             ; preds = %1617
  %1622 = load i64, ptr %38, align 8, !tbaa !9
  %1623 = load i64, ptr %39, align 8, !tbaa !9
  %1624 = load i64, ptr %26, align 8, !tbaa !9
  %1625 = mul nsw i64 %1623, %1624
  %1626 = add nsw i64 %1622, %1625
  store i64 %1626, ptr %30, align 8, !tbaa !9
  %1627 = load i64, ptr %38, align 8, !tbaa !9
  %1628 = load i64, ptr %39, align 8, !tbaa !9
  %1629 = load i64, ptr %26, align 8, !tbaa !9
  %1630 = mul nsw i64 %1628, %1629
  %1631 = add nsw i64 %1627, %1630
  store i64 %1631, ptr %31, align 8, !tbaa !9
  %1632 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1633 = load float, ptr %1632, align 4, !tbaa !11
  %1634 = load ptr, ptr %22, align 8, !tbaa !5
  %1635 = load i64, ptr %31, align 8, !tbaa !9
  %1636 = getelementptr inbounds %struct.complex, ptr %1634, i64 %1635
  %1637 = getelementptr inbounds %struct.complex, ptr %1636, i32 0, i32 0
  %1638 = load float, ptr %1637, align 4, !tbaa !11
  %1639 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1640 = load float, ptr %1639, align 4, !tbaa !14
  %1641 = load ptr, ptr %22, align 8, !tbaa !5
  %1642 = load i64, ptr %31, align 8, !tbaa !9
  %1643 = getelementptr inbounds %struct.complex, ptr %1641, i64 %1642
  %1644 = getelementptr inbounds %struct.complex, ptr %1643, i32 0, i32 1
  %1645 = load float, ptr %1644, align 4, !tbaa !14
  %1646 = fmul float %1640, %1645
  %1647 = fneg float %1646
  %1648 = call float @llvm.fmuladd.f32(float %1633, float %1638, float %1647)
  %1649 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1648, ptr %1649, align 4, !tbaa !11
  %1650 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1651 = load float, ptr %1650, align 4, !tbaa !11
  %1652 = load ptr, ptr %22, align 8, !tbaa !5
  %1653 = load i64, ptr %31, align 8, !tbaa !9
  %1654 = getelementptr inbounds %struct.complex, ptr %1652, i64 %1653
  %1655 = getelementptr inbounds %struct.complex, ptr %1654, i32 0, i32 1
  %1656 = load float, ptr %1655, align 4, !tbaa !14
  %1657 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1658 = load float, ptr %1657, align 4, !tbaa !14
  %1659 = load ptr, ptr %22, align 8, !tbaa !5
  %1660 = load i64, ptr %31, align 8, !tbaa !9
  %1661 = getelementptr inbounds %struct.complex, ptr %1659, i64 %1660
  %1662 = getelementptr inbounds %struct.complex, ptr %1661, i32 0, i32 0
  %1663 = load float, ptr %1662, align 4, !tbaa !11
  %1664 = fmul float %1658, %1663
  %1665 = call float @llvm.fmuladd.f32(float %1651, float %1656, float %1664)
  %1666 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1665, ptr %1666, align 4, !tbaa !14
  %1667 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1668 = load float, ptr %1667, align 4, !tbaa !11
  %1669 = load ptr, ptr %22, align 8, !tbaa !5
  %1670 = load i64, ptr %30, align 8, !tbaa !9
  %1671 = getelementptr inbounds %struct.complex, ptr %1669, i64 %1670
  %1672 = getelementptr inbounds %struct.complex, ptr %1671, i32 0, i32 0
  store float %1668, ptr %1672, align 4, !tbaa !11
  %1673 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1674 = load float, ptr %1673, align 4, !tbaa !14
  %1675 = load ptr, ptr %22, align 8, !tbaa !5
  %1676 = load i64, ptr %30, align 8, !tbaa !9
  %1677 = getelementptr inbounds %struct.complex, ptr %1675, i64 %1676
  %1678 = getelementptr inbounds %struct.complex, ptr %1677, i32 0, i32 1
  store float %1674, ptr %1678, align 4, !tbaa !14
  br label %1679

1679:                                             ; preds = %1621
  %1680 = load i64, ptr %38, align 8, !tbaa !9
  %1681 = add nsw i64 %1680, 1
  store i64 %1681, ptr %38, align 8, !tbaa !9
  br label %1617, !llvm.loop !37

1682:                                             ; preds = %1617
  br label %1683

1683:                                             ; preds = %1682, %1598
  br label %1684

1684:                                             ; preds = %1683
  %1685 = load i64, ptr %39, align 8, !tbaa !9
  %1686 = add nsw i64 %1685, 1
  store i64 %1686, ptr %39, align 8, !tbaa !9
  br label %1372, !llvm.loop !38

1687:                                             ; preds = %1372
  br label %2008

1688:                                             ; preds = %1366
  %1689 = load ptr, ptr %18, align 8, !tbaa !5
  %1690 = load i64, ptr %1689, align 8, !tbaa !9
  store i64 %1690, ptr %39, align 8, !tbaa !9
  br label %1691

1691:                                             ; preds = %2004, %1688
  %1692 = load i64, ptr %39, align 8, !tbaa !9
  %1693 = icmp sge i64 %1692, 1
  br i1 %1693, label %1694, label %2007

1694:                                             ; preds = %1691
  %1695 = load ptr, ptr %19, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.complex, ptr %1695, i32 0, i32 0
  %1697 = load float, ptr %1696, align 4, !tbaa !11
  %1698 = fcmp une float %1697, 1.000000e+00
  br i1 %1698, label %1704, label %1699

1699:                                             ; preds = %1694
  %1700 = load ptr, ptr %19, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.complex, ptr %1700, i32 0, i32 1
  %1702 = load float, ptr %1701, align 4, !tbaa !14
  %1703 = fcmp une float %1702, 0.000000e+00
  br i1 %1703, label %1704, label %1777

1704:                                             ; preds = %1699, %1694
  %1705 = load ptr, ptr %17, align 8, !tbaa !5
  %1706 = load i64, ptr %1705, align 8, !tbaa !9
  store i64 %1706, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1707

1707:                                             ; preds = %1773, %1704
  %1708 = load i64, ptr %38, align 8, !tbaa !9
  %1709 = load i64, ptr %28, align 8, !tbaa !9
  %1710 = icmp sle i64 %1708, %1709
  br i1 %1710, label %1711, label %1776

1711:                                             ; preds = %1707
  %1712 = load i64, ptr %38, align 8, !tbaa !9
  %1713 = load i64, ptr %39, align 8, !tbaa !9
  %1714 = load i64, ptr %26, align 8, !tbaa !9
  %1715 = mul nsw i64 %1713, %1714
  %1716 = add nsw i64 %1712, %1715
  store i64 %1716, ptr %29, align 8, !tbaa !9
  %1717 = load i64, ptr %38, align 8, !tbaa !9
  %1718 = load i64, ptr %39, align 8, !tbaa !9
  %1719 = load i64, ptr %26, align 8, !tbaa !9
  %1720 = mul nsw i64 %1718, %1719
  %1721 = add nsw i64 %1717, %1720
  store i64 %1721, ptr %30, align 8, !tbaa !9
  %1722 = load ptr, ptr %19, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.complex, ptr %1722, i32 0, i32 0
  %1724 = load float, ptr %1723, align 4, !tbaa !11
  %1725 = load ptr, ptr %22, align 8, !tbaa !5
  %1726 = load i64, ptr %30, align 8, !tbaa !9
  %1727 = getelementptr inbounds %struct.complex, ptr %1725, i64 %1726
  %1728 = getelementptr inbounds %struct.complex, ptr %1727, i32 0, i32 0
  %1729 = load float, ptr %1728, align 4, !tbaa !11
  %1730 = load ptr, ptr %19, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.complex, ptr %1730, i32 0, i32 1
  %1732 = load float, ptr %1731, align 4, !tbaa !14
  %1733 = load ptr, ptr %22, align 8, !tbaa !5
  %1734 = load i64, ptr %30, align 8, !tbaa !9
  %1735 = getelementptr inbounds %struct.complex, ptr %1733, i64 %1734
  %1736 = getelementptr inbounds %struct.complex, ptr %1735, i32 0, i32 1
  %1737 = load float, ptr %1736, align 4, !tbaa !14
  %1738 = fmul float %1732, %1737
  %1739 = fneg float %1738
  %1740 = call float @llvm.fmuladd.f32(float %1724, float %1729, float %1739)
  %1741 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1740, ptr %1741, align 4, !tbaa !11
  %1742 = load ptr, ptr %19, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.complex, ptr %1742, i32 0, i32 0
  %1744 = load float, ptr %1743, align 4, !tbaa !11
  %1745 = load ptr, ptr %22, align 8, !tbaa !5
  %1746 = load i64, ptr %30, align 8, !tbaa !9
  %1747 = getelementptr inbounds %struct.complex, ptr %1745, i64 %1746
  %1748 = getelementptr inbounds %struct.complex, ptr %1747, i32 0, i32 1
  %1749 = load float, ptr %1748, align 4, !tbaa !14
  %1750 = load ptr, ptr %19, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.complex, ptr %1750, i32 0, i32 1
  %1752 = load float, ptr %1751, align 4, !tbaa !14
  %1753 = load ptr, ptr %22, align 8, !tbaa !5
  %1754 = load i64, ptr %30, align 8, !tbaa !9
  %1755 = getelementptr inbounds %struct.complex, ptr %1753, i64 %1754
  %1756 = getelementptr inbounds %struct.complex, ptr %1755, i32 0, i32 0
  %1757 = load float, ptr %1756, align 4, !tbaa !11
  %1758 = fmul float %1752, %1757
  %1759 = call float @llvm.fmuladd.f32(float %1744, float %1749, float %1758)
  %1760 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1759, ptr %1760, align 4, !tbaa !14
  %1761 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1762 = load float, ptr %1761, align 4, !tbaa !11
  %1763 = load ptr, ptr %22, align 8, !tbaa !5
  %1764 = load i64, ptr %29, align 8, !tbaa !9
  %1765 = getelementptr inbounds %struct.complex, ptr %1763, i64 %1764
  %1766 = getelementptr inbounds %struct.complex, ptr %1765, i32 0, i32 0
  store float %1762, ptr %1766, align 4, !tbaa !11
  %1767 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1768 = load float, ptr %1767, align 4, !tbaa !14
  %1769 = load ptr, ptr %22, align 8, !tbaa !5
  %1770 = load i64, ptr %29, align 8, !tbaa !9
  %1771 = getelementptr inbounds %struct.complex, ptr %1769, i64 %1770
  %1772 = getelementptr inbounds %struct.complex, ptr %1771, i32 0, i32 1
  store float %1768, ptr %1772, align 4, !tbaa !14
  br label %1773

1773:                                             ; preds = %1711
  %1774 = load i64, ptr %38, align 8, !tbaa !9
  %1775 = add nsw i64 %1774, 1
  store i64 %1775, ptr %38, align 8, !tbaa !9
  br label %1707, !llvm.loop !39

1776:                                             ; preds = %1707
  br label %1777

1777:                                             ; preds = %1776, %1699
  %1778 = load ptr, ptr %18, align 8, !tbaa !5
  %1779 = load i64, ptr %1778, align 8, !tbaa !9
  store i64 %1779, ptr %28, align 8, !tbaa !9
  %1780 = load i64, ptr %39, align 8, !tbaa !9
  %1781 = add nsw i64 %1780, 1
  store i64 %1781, ptr %40, align 8, !tbaa !9
  br label %1782

1782:                                             ; preds = %1915, %1777
  %1783 = load i64, ptr %40, align 8, !tbaa !9
  %1784 = load i64, ptr %28, align 8, !tbaa !9
  %1785 = icmp sle i64 %1783, %1784
  br i1 %1785, label %1786, label %1918

1786:                                             ; preds = %1782
  %1787 = load i64, ptr %40, align 8, !tbaa !9
  %1788 = load i64, ptr %39, align 8, !tbaa !9
  %1789 = load i64, ptr %24, align 8, !tbaa !9
  %1790 = mul nsw i64 %1788, %1789
  %1791 = add nsw i64 %1787, %1790
  store i64 %1791, ptr %29, align 8, !tbaa !9
  %1792 = load ptr, ptr %20, align 8, !tbaa !5
  %1793 = load i64, ptr %29, align 8, !tbaa !9
  %1794 = getelementptr inbounds %struct.complex, ptr %1792, i64 %1793
  %1795 = getelementptr inbounds %struct.complex, ptr %1794, i32 0, i32 0
  %1796 = load float, ptr %1795, align 4, !tbaa !11
  %1797 = fcmp une float %1796, 0.000000e+00
  br i1 %1797, label %1805, label %1798

1798:                                             ; preds = %1786
  %1799 = load ptr, ptr %20, align 8, !tbaa !5
  %1800 = load i64, ptr %29, align 8, !tbaa !9
  %1801 = getelementptr inbounds %struct.complex, ptr %1799, i64 %1800
  %1802 = getelementptr inbounds %struct.complex, ptr %1801, i32 0, i32 1
  %1803 = load float, ptr %1802, align 4, !tbaa !14
  %1804 = fcmp une float %1803, 0.000000e+00
  br i1 %1804, label %1805, label %1914

1805:                                             ; preds = %1798, %1786
  %1806 = load ptr, ptr %17, align 8, !tbaa !5
  %1807 = load i64, ptr %1806, align 8, !tbaa !9
  store i64 %1807, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1808

1808:                                             ; preds = %1910, %1805
  %1809 = load i64, ptr %38, align 8, !tbaa !9
  %1810 = load i64, ptr %29, align 8, !tbaa !9
  %1811 = icmp sle i64 %1809, %1810
  br i1 %1811, label %1812, label %1913

1812:                                             ; preds = %1808
  %1813 = load i64, ptr %38, align 8, !tbaa !9
  %1814 = load i64, ptr %39, align 8, !tbaa !9
  %1815 = load i64, ptr %26, align 8, !tbaa !9
  %1816 = mul nsw i64 %1814, %1815
  %1817 = add nsw i64 %1813, %1816
  store i64 %1817, ptr %30, align 8, !tbaa !9
  %1818 = load i64, ptr %38, align 8, !tbaa !9
  %1819 = load i64, ptr %39, align 8, !tbaa !9
  %1820 = load i64, ptr %26, align 8, !tbaa !9
  %1821 = mul nsw i64 %1819, %1820
  %1822 = add nsw i64 %1818, %1821
  store i64 %1822, ptr %31, align 8, !tbaa !9
  %1823 = load i64, ptr %40, align 8, !tbaa !9
  %1824 = load i64, ptr %39, align 8, !tbaa !9
  %1825 = load i64, ptr %24, align 8, !tbaa !9
  %1826 = mul nsw i64 %1824, %1825
  %1827 = add nsw i64 %1823, %1826
  store i64 %1827, ptr %32, align 8, !tbaa !9
  %1828 = load i64, ptr %38, align 8, !tbaa !9
  %1829 = load i64, ptr %40, align 8, !tbaa !9
  %1830 = load i64, ptr %26, align 8, !tbaa !9
  %1831 = mul nsw i64 %1829, %1830
  %1832 = add nsw i64 %1828, %1831
  store i64 %1832, ptr %33, align 8, !tbaa !9
  %1833 = load ptr, ptr %20, align 8, !tbaa !5
  %1834 = load i64, ptr %32, align 8, !tbaa !9
  %1835 = getelementptr inbounds %struct.complex, ptr %1833, i64 %1834
  %1836 = getelementptr inbounds %struct.complex, ptr %1835, i32 0, i32 0
  %1837 = load float, ptr %1836, align 4, !tbaa !11
  %1838 = load ptr, ptr %22, align 8, !tbaa !5
  %1839 = load i64, ptr %33, align 8, !tbaa !9
  %1840 = getelementptr inbounds %struct.complex, ptr %1838, i64 %1839
  %1841 = getelementptr inbounds %struct.complex, ptr %1840, i32 0, i32 0
  %1842 = load float, ptr %1841, align 4, !tbaa !11
  %1843 = load ptr, ptr %20, align 8, !tbaa !5
  %1844 = load i64, ptr %32, align 8, !tbaa !9
  %1845 = getelementptr inbounds %struct.complex, ptr %1843, i64 %1844
  %1846 = getelementptr inbounds %struct.complex, ptr %1845, i32 0, i32 1
  %1847 = load float, ptr %1846, align 4, !tbaa !14
  %1848 = load ptr, ptr %22, align 8, !tbaa !5
  %1849 = load i64, ptr %33, align 8, !tbaa !9
  %1850 = getelementptr inbounds %struct.complex, ptr %1848, i64 %1849
  %1851 = getelementptr inbounds %struct.complex, ptr %1850, i32 0, i32 1
  %1852 = load float, ptr %1851, align 4, !tbaa !14
  %1853 = fmul float %1847, %1852
  %1854 = fneg float %1853
  %1855 = call float @llvm.fmuladd.f32(float %1837, float %1842, float %1854)
  %1856 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %1855, ptr %1856, align 4, !tbaa !11
  %1857 = load ptr, ptr %20, align 8, !tbaa !5
  %1858 = load i64, ptr %32, align 8, !tbaa !9
  %1859 = getelementptr inbounds %struct.complex, ptr %1857, i64 %1858
  %1860 = getelementptr inbounds %struct.complex, ptr %1859, i32 0, i32 0
  %1861 = load float, ptr %1860, align 4, !tbaa !11
  %1862 = load ptr, ptr %22, align 8, !tbaa !5
  %1863 = load i64, ptr %33, align 8, !tbaa !9
  %1864 = getelementptr inbounds %struct.complex, ptr %1862, i64 %1863
  %1865 = getelementptr inbounds %struct.complex, ptr %1864, i32 0, i32 1
  %1866 = load float, ptr %1865, align 4, !tbaa !14
  %1867 = load ptr, ptr %20, align 8, !tbaa !5
  %1868 = load i64, ptr %32, align 8, !tbaa !9
  %1869 = getelementptr inbounds %struct.complex, ptr %1867, i64 %1868
  %1870 = getelementptr inbounds %struct.complex, ptr %1869, i32 0, i32 1
  %1871 = load float, ptr %1870, align 4, !tbaa !14
  %1872 = load ptr, ptr %22, align 8, !tbaa !5
  %1873 = load i64, ptr %33, align 8, !tbaa !9
  %1874 = getelementptr inbounds %struct.complex, ptr %1872, i64 %1873
  %1875 = getelementptr inbounds %struct.complex, ptr %1874, i32 0, i32 0
  %1876 = load float, ptr %1875, align 4, !tbaa !11
  %1877 = fmul float %1871, %1876
  %1878 = call float @llvm.fmuladd.f32(float %1861, float %1866, float %1877)
  %1879 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %1878, ptr %1879, align 4, !tbaa !14
  %1880 = load ptr, ptr %22, align 8, !tbaa !5
  %1881 = load i64, ptr %31, align 8, !tbaa !9
  %1882 = getelementptr inbounds %struct.complex, ptr %1880, i64 %1881
  %1883 = getelementptr inbounds %struct.complex, ptr %1882, i32 0, i32 0
  %1884 = load float, ptr %1883, align 4, !tbaa !11
  %1885 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1886 = load float, ptr %1885, align 4, !tbaa !11
  %1887 = fsub float %1884, %1886
  %1888 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1887, ptr %1888, align 4, !tbaa !11
  %1889 = load ptr, ptr %22, align 8, !tbaa !5
  %1890 = load i64, ptr %31, align 8, !tbaa !9
  %1891 = getelementptr inbounds %struct.complex, ptr %1889, i64 %1890
  %1892 = getelementptr inbounds %struct.complex, ptr %1891, i32 0, i32 1
  %1893 = load float, ptr %1892, align 4, !tbaa !14
  %1894 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1895 = load float, ptr %1894, align 4, !tbaa !14
  %1896 = fsub float %1893, %1895
  %1897 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1896, ptr %1897, align 4, !tbaa !14
  %1898 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1899 = load float, ptr %1898, align 4, !tbaa !11
  %1900 = load ptr, ptr %22, align 8, !tbaa !5
  %1901 = load i64, ptr %30, align 8, !tbaa !9
  %1902 = getelementptr inbounds %struct.complex, ptr %1900, i64 %1901
  %1903 = getelementptr inbounds %struct.complex, ptr %1902, i32 0, i32 0
  store float %1899, ptr %1903, align 4, !tbaa !11
  %1904 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1905 = load float, ptr %1904, align 4, !tbaa !14
  %1906 = load ptr, ptr %22, align 8, !tbaa !5
  %1907 = load i64, ptr %30, align 8, !tbaa !9
  %1908 = getelementptr inbounds %struct.complex, ptr %1906, i64 %1907
  %1909 = getelementptr inbounds %struct.complex, ptr %1908, i32 0, i32 1
  store float %1905, ptr %1909, align 4, !tbaa !14
  br label %1910

1910:                                             ; preds = %1812
  %1911 = load i64, ptr %38, align 8, !tbaa !9
  %1912 = add nsw i64 %1911, 1
  store i64 %1912, ptr %38, align 8, !tbaa !9
  br label %1808, !llvm.loop !40

1913:                                             ; preds = %1808
  br label %1914

1914:                                             ; preds = %1913, %1798
  br label %1915

1915:                                             ; preds = %1914
  %1916 = load i64, ptr %40, align 8, !tbaa !9
  %1917 = add nsw i64 %1916, 1
  store i64 %1917, ptr %40, align 8, !tbaa !9
  br label %1782, !llvm.loop !41

1918:                                             ; preds = %1782
  %1919 = load i64, ptr %47, align 8, !tbaa !9
  %1920 = icmp ne i64 %1919, 0
  br i1 %1920, label %1921, label %2003

1921:                                             ; preds = %1918
  %1922 = load ptr, ptr %20, align 8, !tbaa !5
  %1923 = load i64, ptr %39, align 8, !tbaa !9
  %1924 = load i64, ptr %39, align 8, !tbaa !9
  %1925 = load i64, ptr %24, align 8, !tbaa !9
  %1926 = mul nsw i64 %1924, %1925
  %1927 = add nsw i64 %1923, %1926
  %1928 = getelementptr inbounds %struct.complex, ptr %1922, i64 %1927
  call void @c_div(ptr noundef %35, ptr noundef @c_b1, ptr noundef %1928)
  %1929 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1930 = load float, ptr %1929, align 4, !tbaa !11
  %1931 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1930, ptr %1931, align 4, !tbaa !11
  %1932 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1933 = load float, ptr %1932, align 4, !tbaa !14
  %1934 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1933, ptr %1934, align 4, !tbaa !14
  %1935 = load ptr, ptr %17, align 8, !tbaa !5
  %1936 = load i64, ptr %1935, align 8, !tbaa !9
  store i64 %1936, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1937

1937:                                             ; preds = %1999, %1921
  %1938 = load i64, ptr %38, align 8, !tbaa !9
  %1939 = load i64, ptr %28, align 8, !tbaa !9
  %1940 = icmp sle i64 %1938, %1939
  br i1 %1940, label %1941, label %2002

1941:                                             ; preds = %1937
  %1942 = load i64, ptr %38, align 8, !tbaa !9
  %1943 = load i64, ptr %39, align 8, !tbaa !9
  %1944 = load i64, ptr %26, align 8, !tbaa !9
  %1945 = mul nsw i64 %1943, %1944
  %1946 = add nsw i64 %1942, %1945
  store i64 %1946, ptr %29, align 8, !tbaa !9
  %1947 = load i64, ptr %38, align 8, !tbaa !9
  %1948 = load i64, ptr %39, align 8, !tbaa !9
  %1949 = load i64, ptr %26, align 8, !tbaa !9
  %1950 = mul nsw i64 %1948, %1949
  %1951 = add nsw i64 %1947, %1950
  store i64 %1951, ptr %30, align 8, !tbaa !9
  %1952 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1953 = load float, ptr %1952, align 4, !tbaa !11
  %1954 = load ptr, ptr %22, align 8, !tbaa !5
  %1955 = load i64, ptr %30, align 8, !tbaa !9
  %1956 = getelementptr inbounds %struct.complex, ptr %1954, i64 %1955
  %1957 = getelementptr inbounds %struct.complex, ptr %1956, i32 0, i32 0
  %1958 = load float, ptr %1957, align 4, !tbaa !11
  %1959 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1960 = load float, ptr %1959, align 4, !tbaa !14
  %1961 = load ptr, ptr %22, align 8, !tbaa !5
  %1962 = load i64, ptr %30, align 8, !tbaa !9
  %1963 = getelementptr inbounds %struct.complex, ptr %1961, i64 %1962
  %1964 = getelementptr inbounds %struct.complex, ptr %1963, i32 0, i32 1
  %1965 = load float, ptr %1964, align 4, !tbaa !14
  %1966 = fmul float %1960, %1965
  %1967 = fneg float %1966
  %1968 = call float @llvm.fmuladd.f32(float %1953, float %1958, float %1967)
  %1969 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %1968, ptr %1969, align 4, !tbaa !11
  %1970 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1971 = load float, ptr %1970, align 4, !tbaa !11
  %1972 = load ptr, ptr %22, align 8, !tbaa !5
  %1973 = load i64, ptr %30, align 8, !tbaa !9
  %1974 = getelementptr inbounds %struct.complex, ptr %1972, i64 %1973
  %1975 = getelementptr inbounds %struct.complex, ptr %1974, i32 0, i32 1
  %1976 = load float, ptr %1975, align 4, !tbaa !14
  %1977 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1978 = load float, ptr %1977, align 4, !tbaa !14
  %1979 = load ptr, ptr %22, align 8, !tbaa !5
  %1980 = load i64, ptr %30, align 8, !tbaa !9
  %1981 = getelementptr inbounds %struct.complex, ptr %1979, i64 %1980
  %1982 = getelementptr inbounds %struct.complex, ptr %1981, i32 0, i32 0
  %1983 = load float, ptr %1982, align 4, !tbaa !11
  %1984 = fmul float %1978, %1983
  %1985 = call float @llvm.fmuladd.f32(float %1971, float %1976, float %1984)
  %1986 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %1985, ptr %1986, align 4, !tbaa !14
  %1987 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1988 = load float, ptr %1987, align 4, !tbaa !11
  %1989 = load ptr, ptr %22, align 8, !tbaa !5
  %1990 = load i64, ptr %29, align 8, !tbaa !9
  %1991 = getelementptr inbounds %struct.complex, ptr %1989, i64 %1990
  %1992 = getelementptr inbounds %struct.complex, ptr %1991, i32 0, i32 0
  store float %1988, ptr %1992, align 4, !tbaa !11
  %1993 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1994 = load float, ptr %1993, align 4, !tbaa !14
  %1995 = load ptr, ptr %22, align 8, !tbaa !5
  %1996 = load i64, ptr %29, align 8, !tbaa !9
  %1997 = getelementptr inbounds %struct.complex, ptr %1995, i64 %1996
  %1998 = getelementptr inbounds %struct.complex, ptr %1997, i32 0, i32 1
  store float %1994, ptr %1998, align 4, !tbaa !14
  br label %1999

1999:                                             ; preds = %1941
  %2000 = load i64, ptr %38, align 8, !tbaa !9
  %2001 = add nsw i64 %2000, 1
  store i64 %2001, ptr %38, align 8, !tbaa !9
  br label %1937, !llvm.loop !42

2002:                                             ; preds = %1937
  br label %2003

2003:                                             ; preds = %2002, %1918
  br label %2004

2004:                                             ; preds = %2003
  %2005 = load i64, ptr %39, align 8, !tbaa !9
  %2006 = add nsw i64 %2005, -1
  store i64 %2006, ptr %39, align 8, !tbaa !9
  br label %1691, !llvm.loop !43

2007:                                             ; preds = %1691
  br label %2008

2008:                                             ; preds = %2007, %1687
  br label %2724

2009:                                             ; preds = %1362
  %2010 = load i64, ptr %45, align 8, !tbaa !9
  %2011 = icmp ne i64 %2010, 0
  br i1 %2011, label %2012, label %2366

2012:                                             ; preds = %2009
  %2013 = load ptr, ptr %18, align 8, !tbaa !5
  %2014 = load i64, ptr %2013, align 8, !tbaa !9
  store i64 %2014, ptr %40, align 8, !tbaa !9
  br label %2015

2015:                                             ; preds = %2362, %2012
  %2016 = load i64, ptr %40, align 8, !tbaa !9
  %2017 = icmp sge i64 %2016, 1
  br i1 %2017, label %2018, label %2365

2018:                                             ; preds = %2015
  %2019 = load i64, ptr %47, align 8, !tbaa !9
  %2020 = icmp ne i64 %2019, 0
  br i1 %2020, label %2021, label %2121

2021:                                             ; preds = %2018
  %2022 = load i64, ptr %46, align 8, !tbaa !9
  %2023 = icmp ne i64 %2022, 0
  br i1 %2023, label %2024, label %2038

2024:                                             ; preds = %2021
  %2025 = load ptr, ptr %20, align 8, !tbaa !5
  %2026 = load i64, ptr %40, align 8, !tbaa !9
  %2027 = load i64, ptr %40, align 8, !tbaa !9
  %2028 = load i64, ptr %24, align 8, !tbaa !9
  %2029 = mul nsw i64 %2027, %2028
  %2030 = add nsw i64 %2026, %2029
  %2031 = getelementptr inbounds %struct.complex, ptr %2025, i64 %2030
  call void @c_div(ptr noundef %35, ptr noundef @c_b1, ptr noundef %2031)
  %2032 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2033 = load float, ptr %2032, align 4, !tbaa !11
  %2034 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2033, ptr %2034, align 4, !tbaa !11
  %2035 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2036 = load float, ptr %2035, align 4, !tbaa !14
  %2037 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2036, ptr %2037, align 4, !tbaa !14
  br label %2052

2038:                                             ; preds = %2021
  %2039 = load ptr, ptr %20, align 8, !tbaa !5
  %2040 = load i64, ptr %40, align 8, !tbaa !9
  %2041 = load i64, ptr %40, align 8, !tbaa !9
  %2042 = load i64, ptr %24, align 8, !tbaa !9
  %2043 = mul nsw i64 %2041, %2042
  %2044 = add nsw i64 %2040, %2043
  %2045 = getelementptr inbounds %struct.complex, ptr %2039, i64 %2044
  call void @r_cnjg(ptr noundef %36, ptr noundef %2045)
  call void @c_div(ptr noundef %35, ptr noundef @c_b1, ptr noundef %36)
  %2046 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2047 = load float, ptr %2046, align 4, !tbaa !11
  %2048 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2047, ptr %2048, align 4, !tbaa !11
  %2049 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2050 = load float, ptr %2049, align 4, !tbaa !14
  %2051 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2050, ptr %2051, align 4, !tbaa !14
  br label %2052

2052:                                             ; preds = %2038, %2024
  %2053 = load ptr, ptr %17, align 8, !tbaa !5
  %2054 = load i64, ptr %2053, align 8, !tbaa !9
  store i64 %2054, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2055

2055:                                             ; preds = %2117, %2052
  %2056 = load i64, ptr %38, align 8, !tbaa !9
  %2057 = load i64, ptr %28, align 8, !tbaa !9
  %2058 = icmp sle i64 %2056, %2057
  br i1 %2058, label %2059, label %2120

2059:                                             ; preds = %2055
  %2060 = load i64, ptr %38, align 8, !tbaa !9
  %2061 = load i64, ptr %40, align 8, !tbaa !9
  %2062 = load i64, ptr %26, align 8, !tbaa !9
  %2063 = mul nsw i64 %2061, %2062
  %2064 = add nsw i64 %2060, %2063
  store i64 %2064, ptr %29, align 8, !tbaa !9
  %2065 = load i64, ptr %38, align 8, !tbaa !9
  %2066 = load i64, ptr %40, align 8, !tbaa !9
  %2067 = load i64, ptr %26, align 8, !tbaa !9
  %2068 = mul nsw i64 %2066, %2067
  %2069 = add nsw i64 %2065, %2068
  store i64 %2069, ptr %30, align 8, !tbaa !9
  %2070 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2071 = load float, ptr %2070, align 4, !tbaa !11
  %2072 = load ptr, ptr %22, align 8, !tbaa !5
  %2073 = load i64, ptr %30, align 8, !tbaa !9
  %2074 = getelementptr inbounds %struct.complex, ptr %2072, i64 %2073
  %2075 = getelementptr inbounds %struct.complex, ptr %2074, i32 0, i32 0
  %2076 = load float, ptr %2075, align 4, !tbaa !11
  %2077 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2078 = load float, ptr %2077, align 4, !tbaa !14
  %2079 = load ptr, ptr %22, align 8, !tbaa !5
  %2080 = load i64, ptr %30, align 8, !tbaa !9
  %2081 = getelementptr inbounds %struct.complex, ptr %2079, i64 %2080
  %2082 = getelementptr inbounds %struct.complex, ptr %2081, i32 0, i32 1
  %2083 = load float, ptr %2082, align 4, !tbaa !14
  %2084 = fmul float %2078, %2083
  %2085 = fneg float %2084
  %2086 = call float @llvm.fmuladd.f32(float %2071, float %2076, float %2085)
  %2087 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2086, ptr %2087, align 4, !tbaa !11
  %2088 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2089 = load float, ptr %2088, align 4, !tbaa !11
  %2090 = load ptr, ptr %22, align 8, !tbaa !5
  %2091 = load i64, ptr %30, align 8, !tbaa !9
  %2092 = getelementptr inbounds %struct.complex, ptr %2090, i64 %2091
  %2093 = getelementptr inbounds %struct.complex, ptr %2092, i32 0, i32 1
  %2094 = load float, ptr %2093, align 4, !tbaa !14
  %2095 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2096 = load float, ptr %2095, align 4, !tbaa !14
  %2097 = load ptr, ptr %22, align 8, !tbaa !5
  %2098 = load i64, ptr %30, align 8, !tbaa !9
  %2099 = getelementptr inbounds %struct.complex, ptr %2097, i64 %2098
  %2100 = getelementptr inbounds %struct.complex, ptr %2099, i32 0, i32 0
  %2101 = load float, ptr %2100, align 4, !tbaa !11
  %2102 = fmul float %2096, %2101
  %2103 = call float @llvm.fmuladd.f32(float %2089, float %2094, float %2102)
  %2104 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2103, ptr %2104, align 4, !tbaa !14
  %2105 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2106 = load float, ptr %2105, align 4, !tbaa !11
  %2107 = load ptr, ptr %22, align 8, !tbaa !5
  %2108 = load i64, ptr %29, align 8, !tbaa !9
  %2109 = getelementptr inbounds %struct.complex, ptr %2107, i64 %2108
  %2110 = getelementptr inbounds %struct.complex, ptr %2109, i32 0, i32 0
  store float %2106, ptr %2110, align 4, !tbaa !11
  %2111 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2112 = load float, ptr %2111, align 4, !tbaa !14
  %2113 = load ptr, ptr %22, align 8, !tbaa !5
  %2114 = load i64, ptr %29, align 8, !tbaa !9
  %2115 = getelementptr inbounds %struct.complex, ptr %2113, i64 %2114
  %2116 = getelementptr inbounds %struct.complex, ptr %2115, i32 0, i32 1
  store float %2112, ptr %2116, align 4, !tbaa !14
  br label %2117

2117:                                             ; preds = %2059
  %2118 = load i64, ptr %38, align 8, !tbaa !9
  %2119 = add nsw i64 %2118, 1
  store i64 %2119, ptr %38, align 8, !tbaa !9
  br label %2055, !llvm.loop !44

2120:                                             ; preds = %2055
  br label %2121

2121:                                             ; preds = %2120, %2018
  %2122 = load i64, ptr %40, align 8, !tbaa !9
  %2123 = sub nsw i64 %2122, 1
  store i64 %2123, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %2124

2124:                                             ; preds = %2275, %2121
  %2125 = load i64, ptr %39, align 8, !tbaa !9
  %2126 = load i64, ptr %28, align 8, !tbaa !9
  %2127 = icmp sle i64 %2125, %2126
  br i1 %2127, label %2128, label %2278

2128:                                             ; preds = %2124
  %2129 = load i64, ptr %39, align 8, !tbaa !9
  %2130 = load i64, ptr %40, align 8, !tbaa !9
  %2131 = load i64, ptr %24, align 8, !tbaa !9
  %2132 = mul nsw i64 %2130, %2131
  %2133 = add nsw i64 %2129, %2132
  store i64 %2133, ptr %29, align 8, !tbaa !9
  %2134 = load ptr, ptr %20, align 8, !tbaa !5
  %2135 = load i64, ptr %29, align 8, !tbaa !9
  %2136 = getelementptr inbounds %struct.complex, ptr %2134, i64 %2135
  %2137 = getelementptr inbounds %struct.complex, ptr %2136, i32 0, i32 0
  %2138 = load float, ptr %2137, align 4, !tbaa !11
  %2139 = fcmp une float %2138, 0.000000e+00
  br i1 %2139, label %2147, label %2140

2140:                                             ; preds = %2128
  %2141 = load ptr, ptr %20, align 8, !tbaa !5
  %2142 = load i64, ptr %29, align 8, !tbaa !9
  %2143 = getelementptr inbounds %struct.complex, ptr %2141, i64 %2142
  %2144 = getelementptr inbounds %struct.complex, ptr %2143, i32 0, i32 1
  %2145 = load float, ptr %2144, align 4, !tbaa !14
  %2146 = fcmp une float %2145, 0.000000e+00
  br i1 %2146, label %2147, label %2274

2147:                                             ; preds = %2140, %2128
  %2148 = load i64, ptr %46, align 8, !tbaa !9
  %2149 = icmp ne i64 %2148, 0
  br i1 %2149, label %2150, label %2168

2150:                                             ; preds = %2147
  %2151 = load i64, ptr %39, align 8, !tbaa !9
  %2152 = load i64, ptr %40, align 8, !tbaa !9
  %2153 = load i64, ptr %24, align 8, !tbaa !9
  %2154 = mul nsw i64 %2152, %2153
  %2155 = add nsw i64 %2151, %2154
  store i64 %2155, ptr %29, align 8, !tbaa !9
  %2156 = load ptr, ptr %20, align 8, !tbaa !5
  %2157 = load i64, ptr %29, align 8, !tbaa !9
  %2158 = getelementptr inbounds %struct.complex, ptr %2156, i64 %2157
  %2159 = getelementptr inbounds %struct.complex, ptr %2158, i32 0, i32 0
  %2160 = load float, ptr %2159, align 4, !tbaa !11
  %2161 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2160, ptr %2161, align 4, !tbaa !11
  %2162 = load ptr, ptr %20, align 8, !tbaa !5
  %2163 = load i64, ptr %29, align 8, !tbaa !9
  %2164 = getelementptr inbounds %struct.complex, ptr %2162, i64 %2163
  %2165 = getelementptr inbounds %struct.complex, ptr %2164, i32 0, i32 1
  %2166 = load float, ptr %2165, align 4, !tbaa !14
  %2167 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2166, ptr %2167, align 4, !tbaa !14
  br label %2182

2168:                                             ; preds = %2147
  %2169 = load ptr, ptr %20, align 8, !tbaa !5
  %2170 = load i64, ptr %39, align 8, !tbaa !9
  %2171 = load i64, ptr %40, align 8, !tbaa !9
  %2172 = load i64, ptr %24, align 8, !tbaa !9
  %2173 = mul nsw i64 %2171, %2172
  %2174 = add nsw i64 %2170, %2173
  %2175 = getelementptr inbounds %struct.complex, ptr %2169, i64 %2174
  call void @r_cnjg(ptr noundef %35, ptr noundef %2175)
  %2176 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2177 = load float, ptr %2176, align 4, !tbaa !11
  %2178 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2177, ptr %2178, align 4, !tbaa !11
  %2179 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2180 = load float, ptr %2179, align 4, !tbaa !14
  %2181 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2180, ptr %2181, align 4, !tbaa !14
  br label %2182

2182:                                             ; preds = %2168, %2150
  %2183 = load ptr, ptr %17, align 8, !tbaa !5
  %2184 = load i64, ptr %2183, align 8, !tbaa !9
  store i64 %2184, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2185

2185:                                             ; preds = %2270, %2182
  %2186 = load i64, ptr %38, align 8, !tbaa !9
  %2187 = load i64, ptr %29, align 8, !tbaa !9
  %2188 = icmp sle i64 %2186, %2187
  br i1 %2188, label %2189, label %2273

2189:                                             ; preds = %2185
  %2190 = load i64, ptr %38, align 8, !tbaa !9
  %2191 = load i64, ptr %39, align 8, !tbaa !9
  %2192 = load i64, ptr %26, align 8, !tbaa !9
  %2193 = mul nsw i64 %2191, %2192
  %2194 = add nsw i64 %2190, %2193
  store i64 %2194, ptr %30, align 8, !tbaa !9
  %2195 = load i64, ptr %38, align 8, !tbaa !9
  %2196 = load i64, ptr %39, align 8, !tbaa !9
  %2197 = load i64, ptr %26, align 8, !tbaa !9
  %2198 = mul nsw i64 %2196, %2197
  %2199 = add nsw i64 %2195, %2198
  store i64 %2199, ptr %31, align 8, !tbaa !9
  %2200 = load i64, ptr %38, align 8, !tbaa !9
  %2201 = load i64, ptr %40, align 8, !tbaa !9
  %2202 = load i64, ptr %26, align 8, !tbaa !9
  %2203 = mul nsw i64 %2201, %2202
  %2204 = add nsw i64 %2200, %2203
  store i64 %2204, ptr %32, align 8, !tbaa !9
  %2205 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2206 = load float, ptr %2205, align 4, !tbaa !11
  %2207 = load ptr, ptr %22, align 8, !tbaa !5
  %2208 = load i64, ptr %32, align 8, !tbaa !9
  %2209 = getelementptr inbounds %struct.complex, ptr %2207, i64 %2208
  %2210 = getelementptr inbounds %struct.complex, ptr %2209, i32 0, i32 0
  %2211 = load float, ptr %2210, align 4, !tbaa !11
  %2212 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2213 = load float, ptr %2212, align 4, !tbaa !14
  %2214 = load ptr, ptr %22, align 8, !tbaa !5
  %2215 = load i64, ptr %32, align 8, !tbaa !9
  %2216 = getelementptr inbounds %struct.complex, ptr %2214, i64 %2215
  %2217 = getelementptr inbounds %struct.complex, ptr %2216, i32 0, i32 1
  %2218 = load float, ptr %2217, align 4, !tbaa !14
  %2219 = fmul float %2213, %2218
  %2220 = fneg float %2219
  %2221 = call float @llvm.fmuladd.f32(float %2206, float %2211, float %2220)
  %2222 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %2221, ptr %2222, align 4, !tbaa !11
  %2223 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2224 = load float, ptr %2223, align 4, !tbaa !11
  %2225 = load ptr, ptr %22, align 8, !tbaa !5
  %2226 = load i64, ptr %32, align 8, !tbaa !9
  %2227 = getelementptr inbounds %struct.complex, ptr %2225, i64 %2226
  %2228 = getelementptr inbounds %struct.complex, ptr %2227, i32 0, i32 1
  %2229 = load float, ptr %2228, align 4, !tbaa !14
  %2230 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2231 = load float, ptr %2230, align 4, !tbaa !14
  %2232 = load ptr, ptr %22, align 8, !tbaa !5
  %2233 = load i64, ptr %32, align 8, !tbaa !9
  %2234 = getelementptr inbounds %struct.complex, ptr %2232, i64 %2233
  %2235 = getelementptr inbounds %struct.complex, ptr %2234, i32 0, i32 0
  %2236 = load float, ptr %2235, align 4, !tbaa !11
  %2237 = fmul float %2231, %2236
  %2238 = call float @llvm.fmuladd.f32(float %2224, float %2229, float %2237)
  %2239 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %2238, ptr %2239, align 4, !tbaa !14
  %2240 = load ptr, ptr %22, align 8, !tbaa !5
  %2241 = load i64, ptr %31, align 8, !tbaa !9
  %2242 = getelementptr inbounds %struct.complex, ptr %2240, i64 %2241
  %2243 = getelementptr inbounds %struct.complex, ptr %2242, i32 0, i32 0
  %2244 = load float, ptr %2243, align 4, !tbaa !11
  %2245 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %2246 = load float, ptr %2245, align 4, !tbaa !11
  %2247 = fsub float %2244, %2246
  %2248 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2247, ptr %2248, align 4, !tbaa !11
  %2249 = load ptr, ptr %22, align 8, !tbaa !5
  %2250 = load i64, ptr %31, align 8, !tbaa !9
  %2251 = getelementptr inbounds %struct.complex, ptr %2249, i64 %2250
  %2252 = getelementptr inbounds %struct.complex, ptr %2251, i32 0, i32 1
  %2253 = load float, ptr %2252, align 4, !tbaa !14
  %2254 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %2255 = load float, ptr %2254, align 4, !tbaa !14
  %2256 = fsub float %2253, %2255
  %2257 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2256, ptr %2257, align 4, !tbaa !14
  %2258 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2259 = load float, ptr %2258, align 4, !tbaa !11
  %2260 = load ptr, ptr %22, align 8, !tbaa !5
  %2261 = load i64, ptr %30, align 8, !tbaa !9
  %2262 = getelementptr inbounds %struct.complex, ptr %2260, i64 %2261
  %2263 = getelementptr inbounds %struct.complex, ptr %2262, i32 0, i32 0
  store float %2259, ptr %2263, align 4, !tbaa !11
  %2264 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2265 = load float, ptr %2264, align 4, !tbaa !14
  %2266 = load ptr, ptr %22, align 8, !tbaa !5
  %2267 = load i64, ptr %30, align 8, !tbaa !9
  %2268 = getelementptr inbounds %struct.complex, ptr %2266, i64 %2267
  %2269 = getelementptr inbounds %struct.complex, ptr %2268, i32 0, i32 1
  store float %2265, ptr %2269, align 4, !tbaa !14
  br label %2270

2270:                                             ; preds = %2189
  %2271 = load i64, ptr %38, align 8, !tbaa !9
  %2272 = add nsw i64 %2271, 1
  store i64 %2272, ptr %38, align 8, !tbaa !9
  br label %2185, !llvm.loop !45

2273:                                             ; preds = %2185
  br label %2274

2274:                                             ; preds = %2273, %2140
  br label %2275

2275:                                             ; preds = %2274
  %2276 = load i64, ptr %39, align 8, !tbaa !9
  %2277 = add nsw i64 %2276, 1
  store i64 %2277, ptr %39, align 8, !tbaa !9
  br label %2124, !llvm.loop !46

2278:                                             ; preds = %2124
  %2279 = load ptr, ptr %19, align 8, !tbaa !5
  %2280 = getelementptr inbounds %struct.complex, ptr %2279, i32 0, i32 0
  %2281 = load float, ptr %2280, align 4, !tbaa !11
  %2282 = fcmp une float %2281, 1.000000e+00
  br i1 %2282, label %2288, label %2283

2283:                                             ; preds = %2278
  %2284 = load ptr, ptr %19, align 8, !tbaa !5
  %2285 = getelementptr inbounds %struct.complex, ptr %2284, i32 0, i32 1
  %2286 = load float, ptr %2285, align 4, !tbaa !14
  %2287 = fcmp une float %2286, 0.000000e+00
  br i1 %2287, label %2288, label %2361

2288:                                             ; preds = %2283, %2278
  %2289 = load ptr, ptr %17, align 8, !tbaa !5
  %2290 = load i64, ptr %2289, align 8, !tbaa !9
  store i64 %2290, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2291

2291:                                             ; preds = %2357, %2288
  %2292 = load i64, ptr %38, align 8, !tbaa !9
  %2293 = load i64, ptr %28, align 8, !tbaa !9
  %2294 = icmp sle i64 %2292, %2293
  br i1 %2294, label %2295, label %2360

2295:                                             ; preds = %2291
  %2296 = load i64, ptr %38, align 8, !tbaa !9
  %2297 = load i64, ptr %40, align 8, !tbaa !9
  %2298 = load i64, ptr %26, align 8, !tbaa !9
  %2299 = mul nsw i64 %2297, %2298
  %2300 = add nsw i64 %2296, %2299
  store i64 %2300, ptr %29, align 8, !tbaa !9
  %2301 = load i64, ptr %38, align 8, !tbaa !9
  %2302 = load i64, ptr %40, align 8, !tbaa !9
  %2303 = load i64, ptr %26, align 8, !tbaa !9
  %2304 = mul nsw i64 %2302, %2303
  %2305 = add nsw i64 %2301, %2304
  store i64 %2305, ptr %30, align 8, !tbaa !9
  %2306 = load ptr, ptr %19, align 8, !tbaa !5
  %2307 = getelementptr inbounds %struct.complex, ptr %2306, i32 0, i32 0
  %2308 = load float, ptr %2307, align 4, !tbaa !11
  %2309 = load ptr, ptr %22, align 8, !tbaa !5
  %2310 = load i64, ptr %30, align 8, !tbaa !9
  %2311 = getelementptr inbounds %struct.complex, ptr %2309, i64 %2310
  %2312 = getelementptr inbounds %struct.complex, ptr %2311, i32 0, i32 0
  %2313 = load float, ptr %2312, 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 = load ptr, ptr %22, align 8, !tbaa !5
  %2318 = load i64, ptr %30, align 8, !tbaa !9
  %2319 = getelementptr inbounds %struct.complex, ptr %2317, i64 %2318
  %2320 = getelementptr inbounds %struct.complex, ptr %2319, i32 0, i32 1
  %2321 = load float, ptr %2320, align 4, !tbaa !14
  %2322 = fmul float %2316, %2321
  %2323 = fneg float %2322
  %2324 = call float @llvm.fmuladd.f32(float %2308, float %2313, float %2323)
  %2325 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2324, ptr %2325, align 4, !tbaa !11
  %2326 = load ptr, ptr %19, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.complex, ptr %2326, i32 0, i32 0
  %2328 = load float, ptr %2327, align 4, !tbaa !11
  %2329 = load ptr, ptr %22, align 8, !tbaa !5
  %2330 = load i64, ptr %30, align 8, !tbaa !9
  %2331 = getelementptr inbounds %struct.complex, ptr %2329, i64 %2330
  %2332 = getelementptr inbounds %struct.complex, ptr %2331, i32 0, i32 1
  %2333 = load float, ptr %2332, align 4, !tbaa !14
  %2334 = load ptr, ptr %19, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.complex, ptr %2334, i32 0, i32 1
  %2336 = load float, ptr %2335, align 4, !tbaa !14
  %2337 = load ptr, ptr %22, align 8, !tbaa !5
  %2338 = load i64, ptr %30, align 8, !tbaa !9
  %2339 = getelementptr inbounds %struct.complex, ptr %2337, i64 %2338
  %2340 = getelementptr inbounds %struct.complex, ptr %2339, i32 0, i32 0
  %2341 = load float, ptr %2340, align 4, !tbaa !11
  %2342 = fmul float %2336, %2341
  %2343 = call float @llvm.fmuladd.f32(float %2328, float %2333, float %2342)
  %2344 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2343, ptr %2344, align 4, !tbaa !14
  %2345 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2346 = load float, ptr %2345, align 4, !tbaa !11
  %2347 = load ptr, ptr %22, align 8, !tbaa !5
  %2348 = load i64, ptr %29, align 8, !tbaa !9
  %2349 = getelementptr inbounds %struct.complex, ptr %2347, i64 %2348
  %2350 = getelementptr inbounds %struct.complex, ptr %2349, i32 0, i32 0
  store float %2346, ptr %2350, align 4, !tbaa !11
  %2351 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2352 = load float, ptr %2351, align 4, !tbaa !14
  %2353 = load ptr, ptr %22, align 8, !tbaa !5
  %2354 = load i64, ptr %29, align 8, !tbaa !9
  %2355 = getelementptr inbounds %struct.complex, ptr %2353, i64 %2354
  %2356 = getelementptr inbounds %struct.complex, ptr %2355, i32 0, i32 1
  store float %2352, ptr %2356, align 4, !tbaa !14
  br label %2357

2357:                                             ; preds = %2295
  %2358 = load i64, ptr %38, align 8, !tbaa !9
  %2359 = add nsw i64 %2358, 1
  store i64 %2359, ptr %38, align 8, !tbaa !9
  br label %2291, !llvm.loop !47

2360:                                             ; preds = %2291
  br label %2361

2361:                                             ; preds = %2360, %2283
  br label %2362

2362:                                             ; preds = %2361
  %2363 = load i64, ptr %40, align 8, !tbaa !9
  %2364 = add nsw i64 %2363, -1
  store i64 %2364, ptr %40, align 8, !tbaa !9
  br label %2015, !llvm.loop !48

2365:                                             ; preds = %2015
  br label %2723

2366:                                             ; preds = %2009
  %2367 = load ptr, ptr %18, align 8, !tbaa !5
  %2368 = load i64, ptr %2367, align 8, !tbaa !9
  store i64 %2368, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %2369

2369:                                             ; preds = %2719, %2366
  %2370 = load i64, ptr %40, align 8, !tbaa !9
  %2371 = load i64, ptr %28, align 8, !tbaa !9
  %2372 = icmp sle i64 %2370, %2371
  br i1 %2372, label %2373, label %2722

2373:                                             ; preds = %2369
  %2374 = load i64, ptr %47, align 8, !tbaa !9
  %2375 = icmp ne i64 %2374, 0
  br i1 %2375, label %2376, label %2476

2376:                                             ; preds = %2373
  %2377 = load i64, ptr %46, align 8, !tbaa !9
  %2378 = icmp ne i64 %2377, 0
  br i1 %2378, label %2379, label %2393

2379:                                             ; preds = %2376
  %2380 = load ptr, ptr %20, align 8, !tbaa !5
  %2381 = load i64, ptr %40, align 8, !tbaa !9
  %2382 = load i64, ptr %40, align 8, !tbaa !9
  %2383 = load i64, ptr %24, align 8, !tbaa !9
  %2384 = mul nsw i64 %2382, %2383
  %2385 = add nsw i64 %2381, %2384
  %2386 = getelementptr inbounds %struct.complex, ptr %2380, i64 %2385
  call void @c_div(ptr noundef %35, ptr noundef @c_b1, ptr noundef %2386)
  %2387 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2388 = load float, ptr %2387, align 4, !tbaa !11
  %2389 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2388, ptr %2389, align 4, !tbaa !11
  %2390 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2391 = load float, ptr %2390, align 4, !tbaa !14
  %2392 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2391, ptr %2392, align 4, !tbaa !14
  br label %2407

2393:                                             ; preds = %2376
  %2394 = load ptr, ptr %20, align 8, !tbaa !5
  %2395 = load i64, ptr %40, align 8, !tbaa !9
  %2396 = load i64, ptr %40, align 8, !tbaa !9
  %2397 = load i64, ptr %24, align 8, !tbaa !9
  %2398 = mul nsw i64 %2396, %2397
  %2399 = add nsw i64 %2395, %2398
  %2400 = getelementptr inbounds %struct.complex, ptr %2394, i64 %2399
  call void @r_cnjg(ptr noundef %36, ptr noundef %2400)
  call void @c_div(ptr noundef %35, ptr noundef @c_b1, ptr noundef %36)
  %2401 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2402 = load float, ptr %2401, align 4, !tbaa !11
  %2403 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2402, ptr %2403, align 4, !tbaa !11
  %2404 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2405 = load float, ptr %2404, align 4, !tbaa !14
  %2406 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2405, ptr %2406, align 4, !tbaa !14
  br label %2407

2407:                                             ; preds = %2393, %2379
  %2408 = load ptr, ptr %17, align 8, !tbaa !5
  %2409 = load i64, ptr %2408, align 8, !tbaa !9
  store i64 %2409, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2410

2410:                                             ; preds = %2472, %2407
  %2411 = load i64, ptr %38, align 8, !tbaa !9
  %2412 = load i64, ptr %29, align 8, !tbaa !9
  %2413 = icmp sle i64 %2411, %2412
  br i1 %2413, label %2414, label %2475

2414:                                             ; preds = %2410
  %2415 = load i64, ptr %38, align 8, !tbaa !9
  %2416 = load i64, ptr %40, align 8, !tbaa !9
  %2417 = load i64, ptr %26, align 8, !tbaa !9
  %2418 = mul nsw i64 %2416, %2417
  %2419 = add nsw i64 %2415, %2418
  store i64 %2419, ptr %30, align 8, !tbaa !9
  %2420 = load i64, ptr %38, align 8, !tbaa !9
  %2421 = load i64, ptr %40, align 8, !tbaa !9
  %2422 = load i64, ptr %26, align 8, !tbaa !9
  %2423 = mul nsw i64 %2421, %2422
  %2424 = add nsw i64 %2420, %2423
  store i64 %2424, ptr %31, align 8, !tbaa !9
  %2425 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2426 = load float, ptr %2425, align 4, !tbaa !11
  %2427 = load ptr, ptr %22, align 8, !tbaa !5
  %2428 = load i64, ptr %31, align 8, !tbaa !9
  %2429 = getelementptr inbounds %struct.complex, ptr %2427, i64 %2428
  %2430 = getelementptr inbounds %struct.complex, ptr %2429, i32 0, i32 0
  %2431 = load float, ptr %2430, align 4, !tbaa !11
  %2432 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2433 = load float, ptr %2432, align 4, !tbaa !14
  %2434 = load ptr, ptr %22, align 8, !tbaa !5
  %2435 = load i64, ptr %31, align 8, !tbaa !9
  %2436 = getelementptr inbounds %struct.complex, ptr %2434, i64 %2435
  %2437 = getelementptr inbounds %struct.complex, ptr %2436, i32 0, i32 1
  %2438 = load float, ptr %2437, align 4, !tbaa !14
  %2439 = fmul float %2433, %2438
  %2440 = fneg float %2439
  %2441 = call float @llvm.fmuladd.f32(float %2426, float %2431, float %2440)
  %2442 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2441, ptr %2442, align 4, !tbaa !11
  %2443 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2444 = load float, ptr %2443, align 4, !tbaa !11
  %2445 = load ptr, ptr %22, align 8, !tbaa !5
  %2446 = load i64, ptr %31, align 8, !tbaa !9
  %2447 = getelementptr inbounds %struct.complex, ptr %2445, i64 %2446
  %2448 = getelementptr inbounds %struct.complex, ptr %2447, i32 0, i32 1
  %2449 = load float, ptr %2448, align 4, !tbaa !14
  %2450 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2451 = load float, ptr %2450, align 4, !tbaa !14
  %2452 = load ptr, ptr %22, align 8, !tbaa !5
  %2453 = load i64, ptr %31, align 8, !tbaa !9
  %2454 = getelementptr inbounds %struct.complex, ptr %2452, i64 %2453
  %2455 = getelementptr inbounds %struct.complex, ptr %2454, i32 0, i32 0
  %2456 = load float, ptr %2455, align 4, !tbaa !11
  %2457 = fmul float %2451, %2456
  %2458 = call float @llvm.fmuladd.f32(float %2444, float %2449, float %2457)
  %2459 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2458, ptr %2459, align 4, !tbaa !14
  %2460 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2461 = load float, ptr %2460, align 4, !tbaa !11
  %2462 = load ptr, ptr %22, align 8, !tbaa !5
  %2463 = load i64, ptr %30, align 8, !tbaa !9
  %2464 = getelementptr inbounds %struct.complex, ptr %2462, i64 %2463
  %2465 = getelementptr inbounds %struct.complex, ptr %2464, i32 0, i32 0
  store float %2461, ptr %2465, align 4, !tbaa !11
  %2466 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2467 = load float, ptr %2466, align 4, !tbaa !14
  %2468 = load ptr, ptr %22, align 8, !tbaa !5
  %2469 = load i64, ptr %30, align 8, !tbaa !9
  %2470 = getelementptr inbounds %struct.complex, ptr %2468, i64 %2469
  %2471 = getelementptr inbounds %struct.complex, ptr %2470, i32 0, i32 1
  store float %2467, ptr %2471, align 4, !tbaa !14
  br label %2472

2472:                                             ; preds = %2414
  %2473 = load i64, ptr %38, align 8, !tbaa !9
  %2474 = add nsw i64 %2473, 1
  store i64 %2474, ptr %38, align 8, !tbaa !9
  br label %2410, !llvm.loop !49

2475:                                             ; preds = %2410
  br label %2476

2476:                                             ; preds = %2475, %2373
  %2477 = load ptr, ptr %18, align 8, !tbaa !5
  %2478 = load i64, ptr %2477, align 8, !tbaa !9
  store i64 %2478, ptr %29, align 8, !tbaa !9
  %2479 = load i64, ptr %40, align 8, !tbaa !9
  %2480 = add nsw i64 %2479, 1
  store i64 %2480, ptr %39, align 8, !tbaa !9
  br label %2481

2481:                                             ; preds = %2632, %2476
  %2482 = load i64, ptr %39, align 8, !tbaa !9
  %2483 = load i64, ptr %29, align 8, !tbaa !9
  %2484 = icmp sle i64 %2482, %2483
  br i1 %2484, label %2485, label %2635

2485:                                             ; preds = %2481
  %2486 = load i64, ptr %39, align 8, !tbaa !9
  %2487 = load i64, ptr %40, align 8, !tbaa !9
  %2488 = load i64, ptr %24, align 8, !tbaa !9
  %2489 = mul nsw i64 %2487, %2488
  %2490 = add nsw i64 %2486, %2489
  store i64 %2490, ptr %30, align 8, !tbaa !9
  %2491 = load ptr, ptr %20, align 8, !tbaa !5
  %2492 = load i64, ptr %30, align 8, !tbaa !9
  %2493 = getelementptr inbounds %struct.complex, ptr %2491, i64 %2492
  %2494 = getelementptr inbounds %struct.complex, ptr %2493, i32 0, i32 0
  %2495 = load float, ptr %2494, align 4, !tbaa !11
  %2496 = fcmp une float %2495, 0.000000e+00
  br i1 %2496, label %2504, label %2497

2497:                                             ; preds = %2485
  %2498 = load ptr, ptr %20, align 8, !tbaa !5
  %2499 = load i64, ptr %30, align 8, !tbaa !9
  %2500 = getelementptr inbounds %struct.complex, ptr %2498, i64 %2499
  %2501 = getelementptr inbounds %struct.complex, ptr %2500, i32 0, i32 1
  %2502 = load float, ptr %2501, align 4, !tbaa !14
  %2503 = fcmp une float %2502, 0.000000e+00
  br i1 %2503, label %2504, label %2631

2504:                                             ; preds = %2497, %2485
  %2505 = load i64, ptr %46, align 8, !tbaa !9
  %2506 = icmp ne i64 %2505, 0
  br i1 %2506, label %2507, label %2525

2507:                                             ; preds = %2504
  %2508 = load i64, ptr %39, align 8, !tbaa !9
  %2509 = load i64, ptr %40, align 8, !tbaa !9
  %2510 = load i64, ptr %24, align 8, !tbaa !9
  %2511 = mul nsw i64 %2509, %2510
  %2512 = add nsw i64 %2508, %2511
  store i64 %2512, ptr %30, align 8, !tbaa !9
  %2513 = load ptr, ptr %20, align 8, !tbaa !5
  %2514 = load i64, ptr %30, align 8, !tbaa !9
  %2515 = getelementptr inbounds %struct.complex, ptr %2513, i64 %2514
  %2516 = getelementptr inbounds %struct.complex, ptr %2515, i32 0, i32 0
  %2517 = load float, ptr %2516, align 4, !tbaa !11
  %2518 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2517, ptr %2518, align 4, !tbaa !11
  %2519 = load ptr, ptr %20, align 8, !tbaa !5
  %2520 = load i64, ptr %30, align 8, !tbaa !9
  %2521 = getelementptr inbounds %struct.complex, ptr %2519, i64 %2520
  %2522 = getelementptr inbounds %struct.complex, ptr %2521, i32 0, i32 1
  %2523 = load float, ptr %2522, align 4, !tbaa !14
  %2524 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2523, ptr %2524, align 4, !tbaa !14
  br label %2539

2525:                                             ; preds = %2504
  %2526 = load ptr, ptr %20, align 8, !tbaa !5
  %2527 = load i64, ptr %39, align 8, !tbaa !9
  %2528 = load i64, ptr %40, align 8, !tbaa !9
  %2529 = load i64, ptr %24, align 8, !tbaa !9
  %2530 = mul nsw i64 %2528, %2529
  %2531 = add nsw i64 %2527, %2530
  %2532 = getelementptr inbounds %struct.complex, ptr %2526, i64 %2531
  call void @r_cnjg(ptr noundef %35, ptr noundef %2532)
  %2533 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2534 = load float, ptr %2533, align 4, !tbaa !11
  %2535 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2534, ptr %2535, align 4, !tbaa !11
  %2536 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2537 = load float, ptr %2536, align 4, !tbaa !14
  %2538 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2537, ptr %2538, align 4, !tbaa !14
  br label %2539

2539:                                             ; preds = %2525, %2507
  %2540 = load ptr, ptr %17, align 8, !tbaa !5
  %2541 = load i64, ptr %2540, align 8, !tbaa !9
  store i64 %2541, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2542

2542:                                             ; preds = %2627, %2539
  %2543 = load i64, ptr %38, align 8, !tbaa !9
  %2544 = load i64, ptr %30, align 8, !tbaa !9
  %2545 = icmp sle i64 %2543, %2544
  br i1 %2545, label %2546, label %2630

2546:                                             ; preds = %2542
  %2547 = load i64, ptr %38, align 8, !tbaa !9
  %2548 = load i64, ptr %39, align 8, !tbaa !9
  %2549 = load i64, ptr %26, align 8, !tbaa !9
  %2550 = mul nsw i64 %2548, %2549
  %2551 = add nsw i64 %2547, %2550
  store i64 %2551, ptr %31, align 8, !tbaa !9
  %2552 = load i64, ptr %38, align 8, !tbaa !9
  %2553 = load i64, ptr %39, align 8, !tbaa !9
  %2554 = load i64, ptr %26, align 8, !tbaa !9
  %2555 = mul nsw i64 %2553, %2554
  %2556 = add nsw i64 %2552, %2555
  store i64 %2556, ptr %32, align 8, !tbaa !9
  %2557 = load i64, ptr %38, align 8, !tbaa !9
  %2558 = load i64, ptr %40, align 8, !tbaa !9
  %2559 = load i64, ptr %26, align 8, !tbaa !9
  %2560 = mul nsw i64 %2558, %2559
  %2561 = add nsw i64 %2557, %2560
  store i64 %2561, ptr %33, align 8, !tbaa !9
  %2562 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2563 = load float, ptr %2562, align 4, !tbaa !11
  %2564 = load ptr, ptr %22, align 8, !tbaa !5
  %2565 = load i64, ptr %33, 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 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2570 = load float, ptr %2569, align 4, !tbaa !14
  %2571 = load ptr, ptr %22, align 8, !tbaa !5
  %2572 = load i64, ptr %33, align 8, !tbaa !9
  %2573 = getelementptr inbounds %struct.complex, ptr %2571, i64 %2572
  %2574 = getelementptr inbounds %struct.complex, ptr %2573, i32 0, i32 1
  %2575 = load float, ptr %2574, align 4, !tbaa !14
  %2576 = fmul float %2570, %2575
  %2577 = fneg float %2576
  %2578 = call float @llvm.fmuladd.f32(float %2563, float %2568, float %2577)
  %2579 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %2578, ptr %2579, align 4, !tbaa !11
  %2580 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2581 = load float, ptr %2580, align 4, !tbaa !11
  %2582 = load ptr, ptr %22, align 8, !tbaa !5
  %2583 = load i64, ptr %33, align 8, !tbaa !9
  %2584 = getelementptr inbounds %struct.complex, ptr %2582, i64 %2583
  %2585 = getelementptr inbounds %struct.complex, ptr %2584, i32 0, i32 1
  %2586 = load float, ptr %2585, align 4, !tbaa !14
  %2587 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2588 = load float, ptr %2587, align 4, !tbaa !14
  %2589 = load ptr, ptr %22, align 8, !tbaa !5
  %2590 = load i64, ptr %33, align 8, !tbaa !9
  %2591 = getelementptr inbounds %struct.complex, ptr %2589, i64 %2590
  %2592 = getelementptr inbounds %struct.complex, ptr %2591, i32 0, i32 0
  %2593 = load float, ptr %2592, align 4, !tbaa !11
  %2594 = fmul float %2588, %2593
  %2595 = call float @llvm.fmuladd.f32(float %2581, float %2586, float %2594)
  %2596 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %2595, ptr %2596, align 4, !tbaa !14
  %2597 = load ptr, ptr %22, align 8, !tbaa !5
  %2598 = load i64, ptr %32, align 8, !tbaa !9
  %2599 = getelementptr inbounds %struct.complex, ptr %2597, i64 %2598
  %2600 = getelementptr inbounds %struct.complex, ptr %2599, i32 0, i32 0
  %2601 = load float, ptr %2600, align 4, !tbaa !11
  %2602 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %2603 = load float, ptr %2602, align 4, !tbaa !11
  %2604 = fsub float %2601, %2603
  %2605 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2604, ptr %2605, align 4, !tbaa !11
  %2606 = load ptr, ptr %22, align 8, !tbaa !5
  %2607 = load i64, ptr %32, align 8, !tbaa !9
  %2608 = getelementptr inbounds %struct.complex, ptr %2606, i64 %2607
  %2609 = getelementptr inbounds %struct.complex, ptr %2608, i32 0, i32 1
  %2610 = load float, ptr %2609, align 4, !tbaa !14
  %2611 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %2612 = load float, ptr %2611, align 4, !tbaa !14
  %2613 = fsub float %2610, %2612
  %2614 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2613, ptr %2614, align 4, !tbaa !14
  %2615 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2616 = load float, ptr %2615, align 4, !tbaa !11
  %2617 = load ptr, ptr %22, align 8, !tbaa !5
  %2618 = load i64, ptr %31, align 8, !tbaa !9
  %2619 = getelementptr inbounds %struct.complex, ptr %2617, i64 %2618
  %2620 = getelementptr inbounds %struct.complex, ptr %2619, i32 0, i32 0
  store float %2616, ptr %2620, align 4, !tbaa !11
  %2621 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2622 = load float, ptr %2621, align 4, !tbaa !14
  %2623 = load ptr, ptr %22, align 8, !tbaa !5
  %2624 = load i64, ptr %31, align 8, !tbaa !9
  %2625 = getelementptr inbounds %struct.complex, ptr %2623, i64 %2624
  %2626 = getelementptr inbounds %struct.complex, ptr %2625, i32 0, i32 1
  store float %2622, ptr %2626, align 4, !tbaa !14
  br label %2627

2627:                                             ; preds = %2546
  %2628 = load i64, ptr %38, align 8, !tbaa !9
  %2629 = add nsw i64 %2628, 1
  store i64 %2629, ptr %38, align 8, !tbaa !9
  br label %2542, !llvm.loop !50

2630:                                             ; preds = %2542
  br label %2631

2631:                                             ; preds = %2630, %2497
  br label %2632

2632:                                             ; preds = %2631
  %2633 = load i64, ptr %39, align 8, !tbaa !9
  %2634 = add nsw i64 %2633, 1
  store i64 %2634, ptr %39, align 8, !tbaa !9
  br label %2481, !llvm.loop !51

2635:                                             ; preds = %2481
  %2636 = load ptr, ptr %19, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.complex, ptr %2636, i32 0, i32 0
  %2638 = load float, ptr %2637, align 4, !tbaa !11
  %2639 = fcmp une float %2638, 1.000000e+00
  br i1 %2639, label %2645, label %2640

2640:                                             ; preds = %2635
  %2641 = load ptr, ptr %19, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.complex, ptr %2641, i32 0, i32 1
  %2643 = load float, ptr %2642, align 4, !tbaa !14
  %2644 = fcmp une float %2643, 0.000000e+00
  br i1 %2644, label %2645, label %2718

2645:                                             ; preds = %2640, %2635
  %2646 = load ptr, ptr %17, align 8, !tbaa !5
  %2647 = load i64, ptr %2646, align 8, !tbaa !9
  store i64 %2647, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %2648

2648:                                             ; preds = %2714, %2645
  %2649 = load i64, ptr %38, align 8, !tbaa !9
  %2650 = load i64, ptr %29, align 8, !tbaa !9
  %2651 = icmp sle i64 %2649, %2650
  br i1 %2651, label %2652, label %2717

2652:                                             ; preds = %2648
  %2653 = load i64, ptr %38, align 8, !tbaa !9
  %2654 = load i64, ptr %40, align 8, !tbaa !9
  %2655 = load i64, ptr %26, align 8, !tbaa !9
  %2656 = mul nsw i64 %2654, %2655
  %2657 = add nsw i64 %2653, %2656
  store i64 %2657, ptr %30, align 8, !tbaa !9
  %2658 = load i64, ptr %38, align 8, !tbaa !9
  %2659 = load i64, ptr %40, align 8, !tbaa !9
  %2660 = load i64, ptr %26, align 8, !tbaa !9
  %2661 = mul nsw i64 %2659, %2660
  %2662 = add nsw i64 %2658, %2661
  store i64 %2662, ptr %31, align 8, !tbaa !9
  %2663 = load ptr, ptr %19, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.complex, ptr %2663, i32 0, i32 0
  %2665 = load float, ptr %2664, align 4, !tbaa !11
  %2666 = load ptr, ptr %22, align 8, !tbaa !5
  %2667 = load i64, ptr %31, align 8, !tbaa !9
  %2668 = getelementptr inbounds %struct.complex, ptr %2666, i64 %2667
  %2669 = getelementptr inbounds %struct.complex, ptr %2668, i32 0, i32 0
  %2670 = load float, ptr %2669, align 4, !tbaa !11
  %2671 = load ptr, ptr %19, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.complex, ptr %2671, i32 0, i32 1
  %2673 = load float, ptr %2672, align 4, !tbaa !14
  %2674 = load ptr, ptr %22, align 8, !tbaa !5
  %2675 = load i64, ptr %31, align 8, !tbaa !9
  %2676 = getelementptr inbounds %struct.complex, ptr %2674, i64 %2675
  %2677 = getelementptr inbounds %struct.complex, ptr %2676, i32 0, i32 1
  %2678 = load float, ptr %2677, align 4, !tbaa !14
  %2679 = fmul float %2673, %2678
  %2680 = fneg float %2679
  %2681 = call float @llvm.fmuladd.f32(float %2665, float %2670, float %2680)
  %2682 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2681, ptr %2682, align 4, !tbaa !11
  %2683 = load ptr, ptr %19, align 8, !tbaa !5
  %2684 = getelementptr inbounds %struct.complex, ptr %2683, i32 0, i32 0
  %2685 = load float, ptr %2684, 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 = load ptr, ptr %19, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.complex, ptr %2691, i32 0, i32 1
  %2693 = load float, ptr %2692, align 4, !tbaa !14
  %2694 = load ptr, ptr %22, align 8, !tbaa !5
  %2695 = load i64, ptr %31, align 8, !tbaa !9
  %2696 = getelementptr inbounds %struct.complex, ptr %2694, i64 %2695
  %2697 = getelementptr inbounds %struct.complex, ptr %2696, i32 0, i32 0
  %2698 = load float, ptr %2697, align 4, !tbaa !11
  %2699 = fmul float %2693, %2698
  %2700 = call float @llvm.fmuladd.f32(float %2685, float %2690, float %2699)
  %2701 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2700, ptr %2701, align 4, !tbaa !14
  %2702 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2703 = load float, ptr %2702, align 4, !tbaa !11
  %2704 = load ptr, ptr %22, align 8, !tbaa !5
  %2705 = load i64, ptr %30, align 8, !tbaa !9
  %2706 = getelementptr inbounds %struct.complex, ptr %2704, i64 %2705
  %2707 = getelementptr inbounds %struct.complex, ptr %2706, i32 0, i32 0
  store float %2703, ptr %2707, align 4, !tbaa !11
  %2708 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2709 = load float, ptr %2708, align 4, !tbaa !14
  %2710 = load ptr, ptr %22, align 8, !tbaa !5
  %2711 = load i64, ptr %30, align 8, !tbaa !9
  %2712 = getelementptr inbounds %struct.complex, ptr %2710, i64 %2711
  %2713 = getelementptr inbounds %struct.complex, ptr %2712, i32 0, i32 1
  store float %2709, ptr %2713, align 4, !tbaa !14
  br label %2714

2714:                                             ; preds = %2652
  %2715 = load i64, ptr %38, align 8, !tbaa !9
  %2716 = add nsw i64 %2715, 1
  store i64 %2716, ptr %38, align 8, !tbaa !9
  br label %2648, !llvm.loop !52

2717:                                             ; preds = %2648
  br label %2718

2718:                                             ; preds = %2717, %2640
  br label %2719

2719:                                             ; preds = %2718
  %2720 = load i64, ptr %40, align 8, !tbaa !9
  %2721 = add nsw i64 %2720, 1
  store i64 %2721, ptr %40, align 8, !tbaa !9
  br label %2369, !llvm.loop !53

2722:                                             ; preds = %2369
  br label %2723

2723:                                             ; preds = %2722, %2365
  br label %2724

2724:                                             ; preds = %2723, %2008
  br label %2725

2725:                                             ; preds = %2724, %1361
  store i32 0, ptr %12, align 4
  store i32 1, ptr %48, align 4
  br label %2726

2726:                                             ; preds = %2725, %221, %175, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  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
  %2727 = load i32, ptr %12, align 4
  ret i32 %2727
}

; 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 @c_div(ptr noundef, ptr noundef, ptr noundef) #2

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @f2c_ctrsm(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 8
  %14 = alloca %struct.complex, align 4
  %15 = alloca i64, align 8
  %16 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %17 = load i64, ptr %8, align 8, !tbaa !5
  %18 = xor i64 %17, -1
  %19 = getelementptr inbounds %struct.complex, ptr %7, i64 %18
  %20 = load i64, ptr %10, align 8, !tbaa !5
  %21 = xor i64 %20, -1
  %22 = getelementptr inbounds %struct.complex, ptr %9, i64 %21
  %23 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %23, 0
  %. = select i1 %.not, ptr %5, ptr %4
  %.0881 = load i64, ptr %., align 8, !tbaa !5
  %24 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %25 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.2) #5
  %26 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  store i64 0, ptr %15, align 8, !tbaa !5
  br i1 %.not, label %27, label %30

27:                                               ; preds = %11
  %28 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #5
  %.not903 = icmp eq i64 %28, 0
  br i1 %.not903, label %29, label %30

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

30:                                               ; preds = %27, %11
  %.not904 = icmp eq i64 %26, 0
  br i1 %.not904, label %31, label %34

31:                                               ; preds = %30
  %32 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not905 = icmp eq i64 %32, 0
  br i1 %.not905, label %33, label %34

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

34:                                               ; preds = %31, %30
  %35 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %.not906 = icmp eq i64 %35, 0
  br i1 %.not906, label %36, label %41

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

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

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

41:                                               ; preds = %38, %36, %34
  %42 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #5
  %.not909 = icmp eq i64 %42, 0
  br i1 %.not909, label %43, label %46

43:                                               ; preds = %41
  %44 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.2) #5
  %.not910 = icmp eq i64 %44, 0
  br i1 %.not910, label %45, label %46

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

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

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

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

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

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

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

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

62:                                               ; preds = %59
  store i64 11, ptr %15, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %29, %40, %49, %58, %62, %53, %45, %33
  %63 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %15) #5
  br label %.loopexit

64:                                               ; preds = %59
  %65 = icmp eq i64 %47, 0
  %66 = icmp eq i64 %51, 0
  %or.cond = or i1 %65, %66
  br i1 %or.cond, label %.loopexit, label %67

67:                                               ; preds = %64
  %68 = load float, ptr %6, align 4, !tbaa !9
  %69 = fcmp oeq float %68, 0.000000e+00
  br i1 %69, label %70, label %86

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

.preheader.preheader:                             ; preds = %70
  %74 = shl i64 %20, 3
  %75 = shl nuw i64 %47, 3
  %76 = add nsw i64 %51, -1
  %xtraiter2288 = and i64 %51, 7
  %77 = icmp ult i64 %76, 7
  br i1 %77, label %.loopexit.loopexit.unr-lcssa, label %.preheader.preheader.new

.preheader.preheader.new:                         ; preds = %.preheader.preheader
  %unroll_iter2290 = and i64 %51, 9223372036854775800
  br label %.preheader

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

86:                                               ; preds = %70, %67
  %87 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %.not912 = icmp eq i64 %87, 0
  %88 = load i64, ptr %5, align 8, !tbaa !5
  br i1 %.not, label %463, label %89

89:                                               ; preds = %86
  %.not9431122 = icmp slt i64 %88, 1
  br i1 %.not912, label %269, label %90

90:                                               ; preds = %89
  br i1 %.not904, label %180, label %91

91:                                               ; preds = %90
  br i1 %.not9431122, label %.loopexit, label %.lr.ph1019

.lr.ph1019:                                       ; preds = %91
  %92 = getelementptr i8, ptr %6, i64 4
  %.not964 = icmp eq i64 %25, 0
  %93 = add i64 %17, 1
  %94 = getelementptr inbounds i8, ptr %13, i64 4
  %95 = shl i64 %20, 3
  %96 = shl i64 %20, 3
  %scevgep1559 = getelementptr i8, ptr %6, i64 8
  %invariant.gep2358 = getelementptr i8, ptr %9, i64 -4
  br label %97

97:                                               ; preds = %.lr.ph1019, %._crit_edge
  %indvar1547 = phi i64 [ 0, %.lr.ph1019 ], [ %indvar.next1548, %._crit_edge ]
  %.promoted1394 = phi float [ undef, %.lr.ph1019 ], [ %.promoted1395, %._crit_edge ]
  %.18841016 = phi i64 [ 1, %.lr.ph1019 ], [ %179, %._crit_edge ]
  %98 = mul i64 %96, %indvar1547
  %scevgep1554 = getelementptr i8, ptr %9, i64 %98
  %gep2359 = getelementptr i8, ptr %invariant.gep2358, i64 %98
  %99 = or disjoint i64 %98, 4
  %scevgep1557 = getelementptr i8, ptr %9, i64 %99
  %100 = mul i64 %95, %indvar1547
  %scevgep1549 = getelementptr i8, ptr %9, i64 %100
  %101 = or disjoint i64 %100, 4
  %scevgep1550 = getelementptr i8, ptr %9, i64 %101
  %102 = load float, ptr %6, align 4, !tbaa !9
  %103 = fcmp une float %102, 1.000000e+00
  br i1 %103, label %._crit_edge1406, label %104

._crit_edge1406:                                  ; preds = %97
  %.pre1407 = load i64, ptr %4, align 8, !tbaa !5
  br label %107

104:                                              ; preds = %97
  %105 = load float, ptr %92, align 4, !tbaa !12
  %106 = fcmp une float %105, 0.000000e+00
  %.pre1408 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %106, label %107, label %.loopexit994

107:                                              ; preds = %._crit_edge1406, %104
  %108 = phi i64 [ %.pre1407, %._crit_edge1406 ], [ %.pre1408, %104 ]
  %.not963996 = icmp slt i64 %108, 1
  br i1 %.not963996, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %107
  %109 = mul nsw i64 %.18841016, %20
  %invariant.gep = getelementptr %struct.complex, ptr %22, i64 %109
  %min.iters.check = icmp ult i64 %108, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph
  %110 = add nsw i64 %108, -1
  %mul.result = shl i64 %110, 3
  %111 = getelementptr i8, ptr %scevgep1549, i64 %mul.result
  %112 = icmp ult ptr %111, %scevgep1549
  %mul.result1552 = shl i64 %110, 3
  %mul.overflow1553 = icmp ugt i64 %110, 2305843009213693951
  %113 = getelementptr i8, ptr %scevgep1550, i64 %mul.result1552
  %114 = icmp ult ptr %113, %scevgep1550
  %115 = or i1 %114, %mul.overflow1553
  %116 = or i1 %112, %115
  br i1 %116, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %117 = shl i64 %108, 3
  %scevgep1556 = getelementptr i8, ptr %gep2359, i64 %117
  %scevgep1558 = getelementptr i8, ptr %scevgep1554, i64 %117
  %bound0 = icmp ult ptr %scevgep1554, %92
  %bound1 = icmp ugt ptr %scevgep1556, %6
  %found.conflict = and i1 %bound0, %bound1
  %bound01560 = icmp ult ptr %scevgep1557, %scevgep1559
  %bound11561 = icmp ult ptr %92, %scevgep1558
  %found.conflict1562 = and i1 %bound01560, %bound11561
  %conflict.rdx = or i1 %found.conflict, %found.conflict1562
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %108, 4611686018427387900
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %118 = load float, ptr %6, align 4, !tbaa !9, !alias.scope !16
  %broadcast.splatinsert1564 = insertelement <4 x float> poison, float %118, i64 0
  %broadcast.splat1565 = shufflevector <4 x float> %broadcast.splatinsert1564, <4 x float> poison, <4 x i32> zeroinitializer
  %119 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %wide.vec = load <8 x float>, ptr %119, 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.vec1563 = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %120 = load float, ptr %92, align 4, !tbaa !12, !alias.scope !19
  %broadcast.splatinsert = insertelement <4 x float> poison, float %120, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %121 = fneg <4 x float> %broadcast.splat
  %122 = fmul <4 x float> %strided.vec1563, %121
  %123 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1565, <4 x float> %strided.vec, <4 x float> %122)
  %124 = fmul <4 x float> %strided.vec, %broadcast.splat
  %125 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1565, <4 x float> %strided.vec1563, <4 x float> %124)
  %interleaved.vec = shufflevector <4 x float> %123, <4 x float> %125, <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 %119, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 4
  %126 = icmp eq i64 %index.next, %n.vec
  br i1 %126, label %middle.block, label %vector.body, !llvm.loop !21

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %108, %n.vec
  %127 = shufflevector <4 x float> %123, <4 x float> %125, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n, label %..loopexit994_crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph
  %.1893997.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.1893997 = phi i64 [ %139, %scalar.ph ], [ %.1893997.ph, %scalar.ph.preheader ]
  %128 = load float, ptr %6, align 4, !tbaa !9
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.1893997
  %129 = load float, ptr %92, align 4, !tbaa !12
  %130 = fneg float %129
  %131 = load <2 x float>, ptr %gep, align 4, !tbaa !13
  %132 = insertelement <2 x float> poison, float %129, i64 0
  %133 = insertelement <2 x float> %132, float %130, i64 1
  %134 = fmul <2 x float> %131, %133
  %135 = shufflevector <2 x float> %134, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %136 = insertelement <2 x float> poison, float %128, i64 0
  %137 = shufflevector <2 x float> %136, <2 x float> poison, <2 x i32> zeroinitializer
  %138 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %137, <2 x float> %131, <2 x float> %135)
  store <2 x float> %138, ptr %gep, align 4, !tbaa !13
  %139 = add nuw i64 %.1893997, 1
  %exitcond.not = icmp eq i64 %.1893997, %108
  br i1 %exitcond.not, label %..loopexit994_crit_edge, label %scalar.ph, !llvm.loop !24

..loopexit994_crit_edge:                          ; preds = %scalar.ph, %middle.block
  %140 = phi <2 x float> [ %127, %middle.block ], [ %138, %scalar.ph ]
  store <2 x float> %140, ptr %12, align 8, !tbaa !13
  br label %.loopexit994

.loopexit994:                                     ; preds = %104, %..loopexit994_crit_edge
  %141 = phi i64 [ %108, %..loopexit994_crit_edge ], [ %.pre1408, %104 ]
  %142 = icmp sgt i64 %141, 0
  br i1 %142, label %.lr.ph1012, label %._crit_edge

.lr.ph1012:                                       ; preds = %.loopexit994
  %143 = mul nsw i64 %.18841016, %20
  %invariant.gep1013 = getelementptr %struct.complex, ptr %22, i64 %143
  br label %144

144:                                              ; preds = %.lr.ph1012, %176
  %.promoted1396 = phi float [ %.promoted1394, %.lr.ph1012 ], [ %.promoted1397, %176 ]
  %.08821010 = phi i64 [ %141, %.lr.ph1012 ], [ %177, %176 ]
  %gep1014 = getelementptr %struct.complex, ptr %invariant.gep1013, i64 %.08821010
  %145 = load float, ptr %gep1014, align 4, !tbaa !9
  %146 = fcmp une float %145, 0.000000e+00
  br i1 %146, label %151, label %147

147:                                              ; preds = %144
  %148 = getelementptr inbounds i8, ptr %gep1014, i64 4
  %149 = load float, ptr %148, align 4, !tbaa !12
  %150 = fcmp une float %149, 0.000000e+00
  br i1 %150, label %151, label %176

151:                                              ; preds = %147, %144
  br i1 %.not964, label %156, label %152

152:                                              ; preds = %151
  %153 = mul i64 %.08821010, %93
  %154 = getelementptr inbounds %struct.complex, ptr %19, i64 %153
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull %gep1014, ptr noundef %154) #5
  %155 = load <2 x float>, ptr %12, align 8, !tbaa !13
  store <2 x float> %155, ptr %gep1014, align 4, !tbaa !13
  %.promoted.pre = load float, ptr %13, align 8, !tbaa !9
  br label %156

156:                                              ; preds = %152, %151
  %.promoted = phi float [ %.promoted.pre, %152 ], [ %.promoted1396, %151 ]
  %.not965.not1002 = icmp sgt i64 %.08821010, 1
  br i1 %.not965.not1002, label %.lr.ph1004, label %.loopexit993

.lr.ph1004:                                       ; preds = %156
  %157 = mul nsw i64 %.08821010, %17
  %invariant.gep1005 = getelementptr %struct.complex, ptr %19, i64 %157
  %158 = getelementptr inbounds i8, ptr %gep1014, i64 4
  br label %159

159:                                              ; preds = %.lr.ph1004, %159
  %.28941003 = phi i64 [ 1, %.lr.ph1004 ], [ %173, %159 ]
  %160 = load float, ptr %gep1014, align 4, !tbaa !9
  %gep1006 = getelementptr %struct.complex, ptr %invariant.gep1005, i64 %.28941003
  %161 = load float, ptr %158, align 4, !tbaa !12
  %162 = fneg float %161
  %gep1000 = getelementptr %struct.complex, ptr %invariant.gep1013, i64 %.28941003
  %163 = load <2 x float>, ptr %gep1006, align 4, !tbaa !13
  %164 = insertelement <2 x float> poison, float %161, i64 0
  %165 = insertelement <2 x float> %164, float %162, i64 1
  %166 = fmul <2 x float> %163, %165
  %167 = shufflevector <2 x float> %166, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %168 = insertelement <2 x float> poison, float %160, i64 0
  %169 = shufflevector <2 x float> %168, <2 x float> poison, <2 x i32> zeroinitializer
  %170 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %169, <2 x float> %163, <2 x float> %167)
  %171 = load <2 x float>, ptr %gep1000, align 4, !tbaa !13
  %172 = fsub <2 x float> %171, %170
  store <2 x float> %172, ptr %gep1000, align 4, !tbaa !13
  %173 = add nuw nsw i64 %.28941003, 1
  %.not965.not = icmp slt i64 %173, %.08821010
  br i1 %.not965.not, label %159, label %..loopexit993_crit_edge, !llvm.loop !25

..loopexit993_crit_edge:                          ; preds = %159
  %174 = extractelement <2 x float> %170, i64 1
  store float %174, ptr %94, align 4, !tbaa !12
  store <2 x float> %172, ptr %12, align 8, !tbaa !13
  %175 = extractelement <2 x float> %170, i64 0
  br label %.loopexit993

.loopexit993:                                     ; preds = %..loopexit993_crit_edge, %156
  %.lcssa1001 = phi float [ %175, %..loopexit993_crit_edge ], [ %.promoted, %156 ]
  store float %.lcssa1001, ptr %13, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %.loopexit993, %147
  %.promoted1397 = phi float [ %.lcssa1001, %.loopexit993 ], [ %.promoted1396, %147 ]
  %177 = add nsw i64 %.08821010, -1
  %178 = icmp sgt i64 %.08821010, 1
  br i1 %178, label %144, label %._crit_edge, !llvm.loop !26

._crit_edge:                                      ; preds = %176, %107, %.loopexit994
  %.promoted1395 = phi float [ %.promoted1394, %.loopexit994 ], [ %.promoted1394, %107 ], [ %.promoted1397, %176 ]
  %179 = add nuw i64 %.18841016, 1
  %exitcond1366.not = icmp eq i64 %.18841016, %88
  %indvar.next1548 = add i64 %indvar1547, 1
  br i1 %exitcond1366.not, label %.loopexit, label %97, !llvm.loop !27

180:                                              ; preds = %90
  br i1 %.not9431122, label %.loopexit, label %.lr.ph1054

.lr.ph1054:                                       ; preds = %180
  %181 = getelementptr i8, ptr %6, i64 4
  %.not960 = icmp eq i64 %25, 0
  %182 = add i64 %17, 1
  %183 = getelementptr inbounds i8, ptr %13, i64 4
  %184 = shl i64 %20, 3
  %185 = shl i64 %20, 3
  %scevgep1583 = getelementptr i8, ptr %6, i64 8
  %invariant.gep2360 = getelementptr i8, ptr %9, i64 -4
  br label %186

186:                                              ; preds = %.lr.ph1054, %._crit_edge1047
  %indvar1567 = phi i64 [ 0, %.lr.ph1054 ], [ %indvar.next1568, %._crit_edge1047 ]
  %.promoted10301402 = phi float [ undef, %.lr.ph1054 ], [ %.promoted10301403, %._crit_edge1047 ]
  %.28851051 = phi i64 [ 1, %.lr.ph1054 ], [ %268, %._crit_edge1047 ]
  %187 = mul i64 %185, %indvar1567
  %scevgep1578 = getelementptr i8, ptr %9, i64 %187
  %gep2361 = getelementptr i8, ptr %invariant.gep2360, i64 %187
  %188 = or disjoint i64 %187, 4
  %scevgep1581 = getelementptr i8, ptr %9, i64 %188
  %189 = mul i64 %184, %indvar1567
  %scevgep1569 = getelementptr i8, ptr %9, i64 %189
  %190 = or disjoint i64 %189, 4
  %scevgep1573 = getelementptr i8, ptr %9, i64 %190
  %191 = load float, ptr %6, align 4, !tbaa !9
  %192 = fcmp une float %191, 1.000000e+00
  br i1 %192, label %._crit_edge1409, label %193

._crit_edge1409:                                  ; preds = %186
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %196

193:                                              ; preds = %186
  %194 = load float, ptr %181, align 4, !tbaa !12
  %195 = fcmp une float %194, 0.000000e+00
  %.pre1410 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %195, label %196, label %.loopexit991

196:                                              ; preds = %._crit_edge1409, %193
  %197 = phi i64 [ %.pre, %._crit_edge1409 ], [ %.pre1410, %193 ]
  %.not9581020 = icmp slt i64 %197, 1
  br i1 %.not9581020, label %._crit_edge1047, label %.lr.ph1023

.lr.ph1023:                                       ; preds = %196
  %198 = mul nsw i64 %.28851051, %20
  %invariant.gep1024 = getelementptr %struct.complex, ptr %22, i64 %198
  %min.iters.check1593 = icmp ult i64 %197, 8
  br i1 %min.iters.check1593, label %scalar.ph1592.preheader, label %vector.scevcheck1566

vector.scevcheck1566:                             ; preds = %.lr.ph1023
  %199 = add nsw i64 %197, -1
  %mul.result1571 = shl i64 %199, 3
  %200 = getelementptr i8, ptr %scevgep1569, i64 %mul.result1571
  %201 = icmp ult ptr %200, %scevgep1569
  %mul.result1575 = shl i64 %199, 3
  %mul.overflow1576 = icmp ugt i64 %199, 2305843009213693951
  %202 = getelementptr i8, ptr %scevgep1573, i64 %mul.result1575
  %203 = icmp ult ptr %202, %scevgep1573
  %204 = or i1 %203, %mul.overflow1576
  %205 = or i1 %201, %204
  br i1 %205, label %scalar.ph1592.preheader, label %vector.memcheck1577

vector.memcheck1577:                              ; preds = %vector.scevcheck1566
  %206 = shl i64 %197, 3
  %scevgep1580 = getelementptr i8, ptr %gep2361, i64 %206
  %scevgep1582 = getelementptr i8, ptr %scevgep1578, i64 %206
  %bound01584 = icmp ult ptr %scevgep1578, %181
  %bound11585 = icmp ugt ptr %scevgep1580, %6
  %found.conflict1586 = and i1 %bound01584, %bound11585
  %bound01587 = icmp ult ptr %scevgep1581, %scevgep1583
  %bound11588 = icmp ult ptr %181, %scevgep1582
  %found.conflict1589 = and i1 %bound01587, %bound11588
  %conflict.rdx1590 = or i1 %found.conflict1586, %found.conflict1589
  br i1 %conflict.rdx1590, label %scalar.ph1592.preheader, label %vector.ph1594

vector.ph1594:                                    ; preds = %vector.memcheck1577
  %n.vec1596 = and i64 %197, 4611686018427387900
  %ind.end1597 = or disjoint i64 %n.vec1596, 1
  br label %vector.body1599

vector.body1599:                                  ; preds = %vector.body1599, %vector.ph1594
  %index1600 = phi i64 [ 0, %vector.ph1594 ], [ %index.next1610, %vector.body1599 ]
  %offset.idx1601 = or disjoint i64 %index1600, 1
  %207 = load float, ptr %6, align 4, !tbaa !9, !alias.scope !28
  %broadcast.splatinsert1607 = insertelement <4 x float> poison, float %207, i64 0
  %broadcast.splat1608 = shufflevector <4 x float> %broadcast.splatinsert1607, <4 x float> poison, <4 x i32> zeroinitializer
  %208 = getelementptr %struct.complex, ptr %invariant.gep1024, i64 %offset.idx1601
  %wide.vec1602 = load <8 x float>, ptr %208, align 4, !tbaa !13
  %strided.vec1603 = shufflevector <8 x float> %wide.vec1602, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1604 = shufflevector <8 x float> %wide.vec1602, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %209 = load float, ptr %181, align 4, !tbaa !12, !alias.scope !31
  %broadcast.splatinsert1605 = insertelement <4 x float> poison, float %209, i64 0
  %broadcast.splat1606 = shufflevector <4 x float> %broadcast.splatinsert1605, <4 x float> poison, <4 x i32> zeroinitializer
  %210 = fneg <4 x float> %broadcast.splat1606
  %211 = fmul <4 x float> %strided.vec1604, %210
  %212 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1608, <4 x float> %strided.vec1603, <4 x float> %211)
  %213 = fmul <4 x float> %strided.vec1603, %broadcast.splat1606
  %214 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1608, <4 x float> %strided.vec1604, <4 x float> %213)
  %interleaved.vec1609 = shufflevector <4 x float> %212, <4 x float> %214, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1609, ptr %208, align 4, !tbaa !13
  %index.next1610 = add nuw i64 %index1600, 4
  %215 = icmp eq i64 %index.next1610, %n.vec1596
  br i1 %215, label %middle.block1591, label %vector.body1599, !llvm.loop !33

middle.block1591:                                 ; preds = %vector.body1599
  %cmp.n1611 = icmp eq i64 %197, %n.vec1596
  %216 = shufflevector <4 x float> %212, <4 x float> %214, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1611, label %..loopexit991_crit_edge, label %scalar.ph1592.preheader

scalar.ph1592.preheader:                          ; preds = %middle.block1591, %vector.memcheck1577, %vector.scevcheck1566, %.lr.ph1023
  %.38951021.ph = phi i64 [ 1, %vector.memcheck1577 ], [ 1, %vector.scevcheck1566 ], [ 1, %.lr.ph1023 ], [ %ind.end1597, %middle.block1591 ]
  br label %scalar.ph1592

scalar.ph1592:                                    ; preds = %scalar.ph1592.preheader, %scalar.ph1592
  %.38951021 = phi i64 [ %228, %scalar.ph1592 ], [ %.38951021.ph, %scalar.ph1592.preheader ]
  %217 = load float, ptr %6, align 4, !tbaa !9
  %gep1025 = getelementptr %struct.complex, ptr %invariant.gep1024, i64 %.38951021
  %218 = load float, ptr %181, align 4, !tbaa !12
  %219 = fneg float %218
  %220 = load <2 x float>, ptr %gep1025, align 4, !tbaa !13
  %221 = insertelement <2 x float> poison, float %218, i64 0
  %222 = insertelement <2 x float> %221, float %219, i64 1
  %223 = fmul <2 x float> %220, %222
  %224 = shufflevector <2 x float> %223, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %225 = insertelement <2 x float> poison, float %217, i64 0
  %226 = shufflevector <2 x float> %225, <2 x float> poison, <2 x i32> zeroinitializer
  %227 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %226, <2 x float> %220, <2 x float> %224)
  store <2 x float> %227, ptr %gep1025, align 4, !tbaa !13
  %228 = add nuw i64 %.38951021, 1
  %exitcond1367.not = icmp eq i64 %.38951021, %197
  br i1 %exitcond1367.not, label %..loopexit991_crit_edge, label %scalar.ph1592, !llvm.loop !34

..loopexit991_crit_edge:                          ; preds = %scalar.ph1592, %middle.block1591
  %229 = phi <2 x float> [ %216, %middle.block1591 ], [ %227, %scalar.ph1592 ]
  store <2 x float> %229, ptr %12, align 8, !tbaa !13
  br label %.loopexit991

.loopexit991:                                     ; preds = %193, %..loopexit991_crit_edge
  %230 = phi i64 [ %197, %..loopexit991_crit_edge ], [ %.pre1410, %193 ]
  %.not9591042 = icmp slt i64 %230, 1
  br i1 %.not9591042, label %._crit_edge1047, label %.lr.ph1046

.lr.ph1046:                                       ; preds = %.loopexit991
  %231 = mul nsw i64 %.28851051, %20
  %invariant.gep1048 = getelementptr %struct.complex, ptr %22, i64 %231
  br label %232

232:                                              ; preds = %.lr.ph1046, %265
  %.promoted10301404 = phi float [ %.promoted10301402, %.lr.ph1046 ], [ %.promoted10301405, %265 ]
  %233 = phi i64 [ %230, %.lr.ph1046 ], [ %266, %265 ]
  %.11043 = phi i64 [ 1, %.lr.ph1046 ], [ %267, %265 ]
  %gep1049 = getelementptr %struct.complex, ptr %invariant.gep1048, i64 %.11043
  %234 = load float, ptr %gep1049, align 4, !tbaa !9
  %235 = fcmp une float %234, 0.000000e+00
  br i1 %235, label %240, label %236

236:                                              ; preds = %232
  %237 = getelementptr inbounds i8, ptr %gep1049, i64 4
  %238 = load float, ptr %237, align 4, !tbaa !12
  %239 = fcmp une float %238, 0.000000e+00
  br i1 %239, label %240, label %265

240:                                              ; preds = %236, %232
  br i1 %.not960, label %245, label %241

241:                                              ; preds = %240
  %242 = mul i64 %.11043, %182
  %243 = getelementptr inbounds %struct.complex, ptr %19, i64 %242
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull %gep1049, ptr noundef %243) #5
  %244 = load <2 x float>, ptr %12, align 8, !tbaa !13
  store <2 x float> %244, ptr %gep1049, align 4, !tbaa !13
  %.pre1400 = load i64, ptr %4, align 8, !tbaa !5
  %.promoted1030.pre = load float, ptr %13, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %241, %240
  %.promoted1030 = phi float [ %.promoted1030.pre, %241 ], [ %.promoted10301404, %240 ]
  %246 = phi i64 [ %.pre1400, %241 ], [ %233, %240 ]
  %.not961.not1032 = icmp slt i64 %.11043, %246
  br i1 %.not961.not1032, label %.lr.ph1035, label %.loopexit990

.lr.ph1035:                                       ; preds = %245
  %247 = mul nsw i64 %.11043, %17
  %invariant.gep1037 = getelementptr %struct.complex, ptr %19, i64 %247
  %248 = getelementptr inbounds i8, ptr %gep1049, i64 4
  br label %249

249:                                              ; preds = %.lr.ph1035, %249
  %.4896.in1033 = phi i64 [ %.11043, %.lr.ph1035 ], [ %.4896, %249 ]
  %.4896 = add nuw nsw i64 %.4896.in1033, 1
  %250 = load float, ptr %gep1049, align 4, !tbaa !9
  %gep1038 = getelementptr %struct.complex, ptr %invariant.gep1037, i64 %.4896
  %251 = load float, ptr %248, align 4, !tbaa !12
  %252 = fneg float %251
  %gep1029 = getelementptr %struct.complex, ptr %invariant.gep1048, i64 %.4896
  %253 = load <2 x float>, ptr %gep1038, align 4, !tbaa !13
  %254 = insertelement <2 x float> poison, float %251, i64 0
  %255 = insertelement <2 x float> %254, float %252, i64 1
  %256 = fmul <2 x float> %253, %255
  %257 = shufflevector <2 x float> %256, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %258 = insertelement <2 x float> poison, float %250, i64 0
  %259 = shufflevector <2 x float> %258, <2 x float> poison, <2 x i32> zeroinitializer
  %260 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %259, <2 x float> %253, <2 x float> %257)
  %261 = load <2 x float>, ptr %gep1029, align 4, !tbaa !13
  %262 = fsub <2 x float> %261, %260
  store <2 x float> %262, ptr %gep1029, align 4, !tbaa !13
  %.not961.not = icmp slt i64 %.4896, %246
  br i1 %.not961.not, label %249, label %..loopexit990_crit_edge, !llvm.loop !35

..loopexit990_crit_edge:                          ; preds = %249
  %263 = extractelement <2 x float> %260, i64 1
  store float %263, ptr %183, align 4, !tbaa !12
  store <2 x float> %262, ptr %12, align 8, !tbaa !13
  %264 = extractelement <2 x float> %260, i64 0
  br label %.loopexit990

.loopexit990:                                     ; preds = %..loopexit990_crit_edge, %245
  %.lcssa1031 = phi float [ %264, %..loopexit990_crit_edge ], [ %.promoted1030, %245 ]
  store float %.lcssa1031, ptr %13, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %.loopexit990, %236
  %.promoted10301405 = phi float [ %.lcssa1031, %.loopexit990 ], [ %.promoted10301404, %236 ]
  %266 = phi i64 [ %246, %.loopexit990 ], [ %233, %236 ]
  %267 = add nuw i64 %.11043, 1
  %exitcond1368.not = icmp eq i64 %.11043, %230
  br i1 %exitcond1368.not, label %._crit_edge1047, label %232, !llvm.loop !36

._crit_edge1047:                                  ; preds = %265, %196, %.loopexit991
  %.promoted10301403 = phi float [ %.promoted10301402, %.loopexit991 ], [ %.promoted10301402, %196 ], [ %.promoted10301405, %265 ]
  %268 = add nuw i64 %.28851051, 1
  %exitcond1369.not = icmp eq i64 %.28851051, %88
  %indvar.next1568 = add i64 %indvar1567, 1
  br i1 %exitcond1369.not, label %.loopexit, label %186, !llvm.loop !37

269:                                              ; preds = %89
  br i1 %.not904, label %379, label %270

270:                                              ; preds = %269
  br i1 %.not9431122, label %.loopexit, label %.lr.ph1089

.lr.ph1089:                                       ; preds = %270
  %271 = getelementptr inbounds i8, ptr %6, i64 4
  %.not951 = icmp eq i64 %24, 0
  %.not955 = icmp eq i64 %25, 0
  %272 = add i64 %17, 1
  %273 = getelementptr inbounds i8, ptr %14, i64 4
  %274 = load i64, ptr %4, align 8, !tbaa !5
  %275 = icmp slt i64 %274, 1
  br i1 %275, label %.loopexit, label %.lr.ph1089.split

.lr.ph1089.splitthread-pre-split:                 ; preds = %._crit_edge1083
  %276 = add nuw i64 %.38861087, 1
  %.pr = load i64, ptr %4, align 8, !tbaa !5
  br label %.lr.ph1089.split

.lr.ph1089.split:                                 ; preds = %.lr.ph1089, %.lr.ph1089.splitthread-pre-split
  %277 = phi i64 [ %.pr, %.lr.ph1089.splitthread-pre-split ], [ %274, %.lr.ph1089 ]
  %.38861087 = phi i64 [ %276, %.lr.ph1089.splitthread-pre-split ], [ 1, %.lr.ph1089 ]
  %.not9501079 = icmp slt i64 %277, 1
  br i1 %.not9501079, label %._crit_edge1083, label %.lr.ph1082

.lr.ph1082:                                       ; preds = %.lr.ph1089.split
  %278 = mul nsw i64 %.38861087, %20
  %invariant.gep1084 = getelementptr %struct.complex, ptr %22, i64 %278
  br i1 %.not951, label %.preheader987.us, label %.preheader988

.preheader987.us:                                 ; preds = %.lr.ph1082, %295
  %.58971080.us = phi i64 [ %297, %295 ], [ 1, %.lr.ph1082 ]
  %279 = load float, ptr %6, align 4, !tbaa !9
  %gep1085.us = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %.58971080.us
  %280 = load float, ptr %271, align 4, !tbaa !12
  %281 = fneg float %280
  %282 = load <2 x float>, ptr %gep1085.us, align 4, !tbaa !13
  %283 = insertelement <2 x float> poison, float %280, i64 0
  %284 = insertelement <2 x float> %283, float %281, i64 1
  %285 = fmul <2 x float> %282, %284
  %286 = shufflevector <2 x float> %285, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %287 = insertelement <2 x float> poison, float %279, i64 0
  %288 = shufflevector <2 x float> %287, <2 x float> poison, <2 x i32> zeroinitializer
  %289 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %288, <2 x float> %282, <2 x float> %286)
  store <2 x float> %289, ptr %12, align 8, !tbaa !13
  store <2 x float> %289, ptr %16, align 8, !tbaa !13
  %.not952.not1073.us = icmp ugt i64 %.58971080.us, 1
  br i1 %.not952.not1073.us, label %.lr.ph1075.us, label %._crit_edge1076.us

._crit_edge1076.us:                               ; preds = %298, %.preheader987.us
  %290 = phi <2 x float> [ %289, %.preheader987.us ], [ %311, %298 ]
  br i1 %.not955, label %295, label %291

291:                                              ; preds = %._crit_edge1076.us
  %292 = mul i64 %.58971080.us, %272
  %293 = getelementptr inbounds %struct.complex, ptr %19, i64 %292
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %293) #5
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef nonnull %13) #5
  %294 = load <2 x float>, ptr %12, align 8, !tbaa !13
  store <2 x float> %294, ptr %16, align 8, !tbaa !13
  br label %295

295:                                              ; preds = %291, %._crit_edge1076.us
  %296 = phi <2 x float> [ %294, %291 ], [ %290, %._crit_edge1076.us ]
  store <2 x float> %296, ptr %gep1085.us, align 4, !tbaa !13
  %297 = add nuw i64 %.58971080.us, 1
  %exitcond1373.not = icmp eq i64 %.58971080.us, %277
  br i1 %exitcond1373.not, label %._crit_edge1083, label %.preheader987.us, !llvm.loop !38

298:                                              ; preds = %.lr.ph1075.us, %298
  %.31074.us = phi i64 [ 1, %.lr.ph1075.us ], [ %312, %298 ]
  %gep1078.us = getelementptr %struct.complex, ptr %invariant.gep1077.us, i64 %.31074.us
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef %gep1078.us) #5
  %299 = load float, ptr %14, align 4, !tbaa !9
  %gep1072.us = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %.31074.us
  %300 = load float, ptr %273, align 4, !tbaa !12
  %301 = fneg float %300
  %302 = load <2 x float>, ptr %gep1072.us, align 4, !tbaa !13
  %303 = insertelement <2 x float> poison, float %300, i64 0
  %304 = insertelement <2 x float> %303, float %301, i64 1
  %305 = fmul <2 x float> %302, %304
  %306 = shufflevector <2 x float> %305, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %307 = insertelement <2 x float> poison, float %299, i64 0
  %308 = shufflevector <2 x float> %307, <2 x float> poison, <2 x i32> zeroinitializer
  %309 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %308, <2 x float> %302, <2 x float> %306)
  store <2 x float> %309, ptr %13, align 8, !tbaa !13
  %310 = load <2 x float>, ptr %16, align 8, !tbaa !13
  %311 = fsub <2 x float> %310, %309
  store <2 x float> %311, ptr %12, align 8, !tbaa !13
  store <2 x float> %311, ptr %16, align 8, !tbaa !13
  %312 = add nuw nsw i64 %.31074.us, 1
  %exitcond1372.not = icmp eq i64 %312, %.58971080.us
  br i1 %exitcond1372.not, label %._crit_edge1076.us, label %298, !llvm.loop !39

.lr.ph1075.us:                                    ; preds = %.preheader987.us
  %313 = mul nsw i64 %.58971080.us, %17
  %invariant.gep1077.us = getelementptr %struct.complex, ptr %19, i64 %313
  br label %298

.preheader988:                                    ; preds = %.lr.ph1082, %376
  %indvar2272 = phi i64 [ %indvar.next2273, %376 ], [ 0, %.lr.ph1082 ]
  %.58971080 = phi i64 [ %378, %376 ], [ 1, %.lr.ph1082 ]
  %314 = load float, ptr %6, align 4, !tbaa !9
  %gep1085 = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %.58971080
  %315 = load float, ptr %271, align 4, !tbaa !12
  %316 = fneg float %315
  %317 = load <2 x float>, ptr %gep1085, align 4, !tbaa !13
  %318 = insertelement <2 x float> poison, float %315, i64 0
  %319 = insertelement <2 x float> %318, float %316, i64 1
  %320 = fmul <2 x float> %317, %319
  %321 = shufflevector <2 x float> %320, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %322 = insertelement <2 x float> poison, float %314, i64 0
  %323 = shufflevector <2 x float> %322, <2 x float> poison, <2 x i32> zeroinitializer
  %324 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %323, <2 x float> %317, <2 x float> %321)
  store <2 x float> %324, ptr %12, align 8, !tbaa !13
  store <2 x float> %324, ptr %16, align 8, !tbaa !13
  %.not954.not1059 = icmp ugt i64 %.58971080, 1
  br i1 %.not954.not1059, label %.lr.ph1061, label %370

.lr.ph1061:                                       ; preds = %.preheader988
  %325 = mul nsw i64 %.58971080, %17
  %invariant.gep1063 = getelementptr %struct.complex, ptr %19, i64 %325
  %xtraiter = and i64 %indvar2272, 1
  %326 = icmp eq i64 %indvar2272, 1
  br i1 %326, label %._crit_edge1062.unr-lcssa, label %.lr.ph1061.new

.lr.ph1061.new:                                   ; preds = %.lr.ph1061
  %unroll_iter = and i64 %indvar2272, -2
  br label %327

327:                                              ; preds = %327, %.lr.ph1061.new
  %.21060 = phi i64 [ 1, %.lr.ph1061.new ], [ %356, %327 ]
  %328 = phi <2 x float> [ %324, %.lr.ph1061.new ], [ %355, %327 ]
  %niter = phi i64 [ 0, %.lr.ph1061.new ], [ %niter.next.1, %327 ]
  %gep1064 = getelementptr %struct.complex, ptr %invariant.gep1063, i64 %.21060
  %329 = load float, ptr %gep1064, align 4, !tbaa !9
  %gep1056 = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %.21060
  %330 = getelementptr inbounds i8, ptr %gep1064, i64 4
  %331 = load float, ptr %330, align 4, !tbaa !12
  %332 = fneg float %331
  %333 = load <2 x float>, ptr %gep1056, align 4, !tbaa !13
  %334 = insertelement <2 x float> poison, float %331, i64 0
  %335 = insertelement <2 x float> %334, float %332, i64 1
  %336 = fmul <2 x float> %333, %335
  %337 = shufflevector <2 x float> %336, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %338 = insertelement <2 x float> poison, float %329, i64 0
  %339 = shufflevector <2 x float> %338, <2 x float> poison, <2 x i32> zeroinitializer
  %340 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %339, <2 x float> %333, <2 x float> %337)
  %341 = fsub <2 x float> %328, %340
  %342 = add nuw nsw i64 %.21060, 1
  %gep1064.1 = getelementptr %struct.complex, ptr %invariant.gep1063, i64 %342
  %343 = load float, ptr %gep1064.1, align 4, !tbaa !9
  %gep1056.1 = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %342
  %344 = getelementptr inbounds i8, ptr %gep1064.1, i64 4
  %345 = load float, ptr %344, align 4, !tbaa !12
  %346 = fneg float %345
  %347 = load <2 x float>, ptr %gep1056.1, align 4, !tbaa !13
  %348 = insertelement <2 x float> poison, float %345, i64 0
  %349 = insertelement <2 x float> %348, float %346, i64 1
  %350 = fmul <2 x float> %347, %349
  %351 = shufflevector <2 x float> %350, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %352 = insertelement <2 x float> poison, float %343, i64 0
  %353 = shufflevector <2 x float> %352, <2 x float> poison, <2 x i32> zeroinitializer
  %354 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %353, <2 x float> %347, <2 x float> %351)
  %355 = fsub <2 x float> %341, %354
  %356 = add nuw nsw i64 %.21060, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge1062.unr-lcssa, label %327, !llvm.loop !40

._crit_edge1062.unr-lcssa:                        ; preds = %327, %.lr.ph1061
  %.lcssa2258.ph = phi <2 x float> [ poison, %.lr.ph1061 ], [ %354, %327 ]
  %.lcssa2257.ph = phi <2 x float> [ poison, %.lr.ph1061 ], [ %355, %327 ]
  %.21060.unr = phi i64 [ 1, %.lr.ph1061 ], [ %356, %327 ]
  %.unr = phi <2 x float> [ %324, %.lr.ph1061 ], [ %355, %327 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge1062, label %._crit_edge1062.epilog-lcssa

._crit_edge1062.epilog-lcssa:                     ; preds = %._crit_edge1062.unr-lcssa
  %gep1064.epil = getelementptr %struct.complex, ptr %invariant.gep1063, i64 %.21060.unr
  %357 = load float, ptr %gep1064.epil, align 4, !tbaa !9
  %gep1056.epil = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %.21060.unr
  %358 = getelementptr inbounds i8, ptr %gep1064.epil, i64 4
  %359 = load float, ptr %358, align 4, !tbaa !12
  %360 = fneg float %359
  %361 = load <2 x float>, ptr %gep1056.epil, align 4, !tbaa !13
  %362 = insertelement <2 x float> poison, float %359, i64 0
  %363 = insertelement <2 x float> %362, float %360, i64 1
  %364 = fmul <2 x float> %361, %363
  %365 = shufflevector <2 x float> %364, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %366 = insertelement <2 x float> poison, float %357, i64 0
  %367 = shufflevector <2 x float> %366, <2 x float> poison, <2 x i32> zeroinitializer
  %368 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %367, <2 x float> %361, <2 x float> %365)
  %369 = fsub <2 x float> %.unr, %368
  br label %._crit_edge1062

._crit_edge1062:                                  ; preds = %._crit_edge1062.unr-lcssa, %._crit_edge1062.epilog-lcssa
  %.lcssa2258 = phi <2 x float> [ %.lcssa2258.ph, %._crit_edge1062.unr-lcssa ], [ %368, %._crit_edge1062.epilog-lcssa ]
  %.lcssa2257 = phi <2 x float> [ %.lcssa2257.ph, %._crit_edge1062.unr-lcssa ], [ %369, %._crit_edge1062.epilog-lcssa ]
  store <2 x float> %.lcssa2258, ptr %13, align 8, !tbaa !13
  store <2 x float> %.lcssa2257, ptr %12, align 8, !tbaa !13
  store <2 x float> %.lcssa2257, ptr %16, align 8, !tbaa !13
  br label %370

370:                                              ; preds = %._crit_edge1062, %.preheader988
  %371 = phi <2 x float> [ %.lcssa2257, %._crit_edge1062 ], [ %324, %.preheader988 ]
  br i1 %.not955, label %376, label %372

372:                                              ; preds = %370
  %373 = mul i64 %.58971080, %272
  %374 = getelementptr inbounds %struct.complex, ptr %19, i64 %373
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %374) #5
  %375 = load <2 x float>, ptr %12, align 8, !tbaa !13
  store <2 x float> %375, ptr %16, align 8, !tbaa !13
  br label %376

376:                                              ; preds = %370, %372
  %377 = phi <2 x float> [ %371, %370 ], [ %375, %372 ]
  store <2 x float> %377, ptr %gep1085, align 4, !tbaa !13
  %378 = add nuw i64 %.58971080, 1
  %exitcond1371.not = icmp eq i64 %.58971080, %277
  %indvar.next2273 = add i64 %indvar2272, 1
  br i1 %exitcond1371.not, label %._crit_edge1083, label %.preheader988, !llvm.loop !38

._crit_edge1083:                                  ; preds = %376, %295, %.lr.ph1089.split
  %exitcond1374.not = icmp eq i64 %.38861087, %88
  br i1 %exitcond1374.not, label %.loopexit, label %.lr.ph1089.splitthread-pre-split, !llvm.loop !41

379:                                              ; preds = %269
  br i1 %.not9431122, label %.loopexit, label %.lr.ph1125

.lr.ph1125:                                       ; preds = %379
  %380 = getelementptr inbounds i8, ptr %6, i64 4
  %.not944 = icmp eq i64 %24, 0
  %.not948 = icmp eq i64 %25, 0
  %381 = add i64 %17, 1
  %382 = getelementptr inbounds i8, ptr %14, i64 4
  %383 = load i64, ptr %4, align 8, !tbaa !5
  %384 = icmp sgt i64 %383, 0
  br i1 %384, label %.lr.ph1125.split, label %.loopexit

.lr.ph1125.splitthread-pre-split:                 ; preds = %._crit_edge1119
  %385 = add nuw i64 %.48871123, 1
  %.pr1415 = load i64, ptr %4, align 8, !tbaa !5
  br label %.lr.ph1125.split

.lr.ph1125.split:                                 ; preds = %.lr.ph1125, %.lr.ph1125.splitthread-pre-split
  %386 = phi i64 [ %.pr1415, %.lr.ph1125.splitthread-pre-split ], [ %383, %.lr.ph1125 ]
  %.48871123 = phi i64 [ %385, %.lr.ph1125.splitthread-pre-split ], [ 1, %.lr.ph1125 ]
  %387 = icmp sgt i64 %386, 0
  br i1 %387, label %.lr.ph1118, label %._crit_edge1119

.lr.ph1118:                                       ; preds = %.lr.ph1125.split
  %388 = mul nsw i64 %.48871123, %20
  %invariant.gep1120 = getelementptr %struct.complex, ptr %22, i64 %388
  br i1 %.not944, label %.lr.ph1118.split.us, label %.lr.ph1118.split

.lr.ph1118.split.us:                              ; preds = %.lr.ph1118, %406
  %.68981116.us = phi i64 [ %408, %406 ], [ %386, %.lr.ph1118 ]
  %389 = load float, ptr %6, align 4, !tbaa !9
  %gep1121.us = getelementptr %struct.complex, ptr %invariant.gep1120, i64 %.68981116.us
  %390 = load float, ptr %380, align 4, !tbaa !12
  %391 = fneg float %390
  %392 = load <2 x float>, ptr %gep1121.us, align 4, !tbaa !13
  %393 = insertelement <2 x float> poison, float %390, i64 0
  %394 = insertelement <2 x float> %393, float %391, i64 1
  %395 = fmul <2 x float> %392, %394
  %396 = shufflevector <2 x float> %395, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %397 = insertelement <2 x float> poison, float %389, i64 0
  %398 = shufflevector <2 x float> %397, <2 x float> poison, <2 x i32> zeroinitializer
  %399 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %398, <2 x float> %392, <2 x float> %396)
  store <2 x float> %399, ptr %12, align 8, !tbaa !13
  store <2 x float> %399, ptr %16, align 8, !tbaa !13
  %400 = load i64, ptr %4, align 8, !tbaa !5
  %.not945.not1109.us = icmp slt i64 %.68981116.us, %400
  br i1 %.not945.not1109.us, label %.lr.ph1112.us, label %._crit_edge1113.us

._crit_edge1113.us:                               ; preds = %410, %.lr.ph1118.split.us
  %401 = phi <2 x float> [ %399, %.lr.ph1118.split.us ], [ %423, %410 ]
  br i1 %.not948, label %406, label %402

402:                                              ; preds = %._crit_edge1113.us
  %403 = mul i64 %.68981116.us, %381
  %404 = getelementptr inbounds %struct.complex, ptr %19, i64 %403
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %404) #5
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef nonnull %13) #5
  %405 = load <2 x float>, ptr %12, align 8, !tbaa !13
  store <2 x float> %405, ptr %16, align 8, !tbaa !13
  br label %406

406:                                              ; preds = %402, %._crit_edge1113.us
  %407 = phi <2 x float> [ %405, %402 ], [ %401, %._crit_edge1113.us ]
  store <2 x float> %407, ptr %gep1121.us, align 4, !tbaa !13
  %408 = add nsw i64 %.68981116.us, -1
  %409 = icmp sgt i64 %.68981116.us, 1
  br i1 %409, label %.lr.ph1118.split.us, label %._crit_edge1119, !llvm.loop !43

410:                                              ; preds = %.lr.ph1112.us, %410
  %.5.in1110.us = phi i64 [ %.68981116.us, %.lr.ph1112.us ], [ %.5.us, %410 ]
  %.5.us = add nuw nsw i64 %.5.in1110.us, 1
  %gep1115.us = getelementptr %struct.complex, ptr %invariant.gep1114.us, i64 %.5.us
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef %gep1115.us) #5
  %411 = load float, ptr %14, align 4, !tbaa !9
  %gep1108.us = getelementptr %struct.complex, ptr %invariant.gep1120, i64 %.5.us
  %412 = load float, ptr %382, align 4, !tbaa !12
  %413 = fneg float %412
  %414 = load <2 x float>, ptr %gep1108.us, align 4, !tbaa !13
  %415 = insertelement <2 x float> poison, float %412, i64 0
  %416 = insertelement <2 x float> %415, float %413, i64 1
  %417 = fmul <2 x float> %414, %416
  %418 = shufflevector <2 x float> %417, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %419 = insertelement <2 x float> poison, float %411, i64 0
  %420 = shufflevector <2 x float> %419, <2 x float> poison, <2 x i32> zeroinitializer
  %421 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %420, <2 x float> %414, <2 x float> %418)
  store <2 x float> %421, ptr %13, align 8, !tbaa !13
  %422 = load <2 x float>, ptr %16, align 8, !tbaa !13
  %423 = fsub <2 x float> %422, %421
  store <2 x float> %423, ptr %12, align 8, !tbaa !13
  store <2 x float> %423, ptr %16, align 8, !tbaa !13
  %.not945.not.us = icmp slt i64 %.5.us, %400
  br i1 %.not945.not.us, label %410, label %._crit_edge1113.us, !llvm.loop !44

.lr.ph1112.us:                                    ; preds = %.lr.ph1118.split.us
  %424 = mul nsw i64 %.68981116.us, %17
  %invariant.gep1114.us = getelementptr %struct.complex, ptr %19, i64 %424
  br label %410

.lr.ph1118.split:                                 ; preds = %.lr.ph1118, %459
  %.68981116 = phi i64 [ %461, %459 ], [ %386, %.lr.ph1118 ]
  %425 = load float, ptr %6, align 4, !tbaa !9
  %gep1121 = getelementptr %struct.complex, ptr %invariant.gep1120, i64 %.68981116
  %426 = load float, ptr %380, align 4, !tbaa !12
  %427 = fneg float %426
  %428 = load <2 x float>, ptr %gep1121, align 4, !tbaa !13
  %429 = insertelement <2 x float> poison, float %426, i64 0
  %430 = insertelement <2 x float> %429, float %427, i64 1
  %431 = fmul <2 x float> %428, %430
  %432 = shufflevector <2 x float> %431, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %433 = insertelement <2 x float> poison, float %425, i64 0
  %434 = shufflevector <2 x float> %433, <2 x float> poison, <2 x i32> zeroinitializer
  %435 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %434, <2 x float> %428, <2 x float> %432)
  store <2 x float> %435, ptr %12, align 8, !tbaa !13
  store <2 x float> %435, ptr %16, align 8, !tbaa !13
  %436 = load i64, ptr %4, align 8, !tbaa !5
  %.not947.not1094 = icmp slt i64 %.68981116, %436
  br i1 %.not947.not1094, label %.lr.ph1097, label %453

.lr.ph1097:                                       ; preds = %.lr.ph1118.split
  %437 = mul nsw i64 %.68981116, %17
  %invariant.gep1099 = getelementptr %struct.complex, ptr %19, i64 %437
  br label %438

438:                                              ; preds = %.lr.ph1097, %438
  %.4.in1095 = phi i64 [ %.68981116, %.lr.ph1097 ], [ %.4, %438 ]
  %439 = phi <2 x float> [ %435, %.lr.ph1097 ], [ %452, %438 ]
  %.4 = add nuw nsw i64 %.4.in1095, 1
  %gep1100 = getelementptr %struct.complex, ptr %invariant.gep1099, i64 %.4
  %440 = load float, ptr %gep1100, align 4, !tbaa !9
  %gep1091 = getelementptr %struct.complex, ptr %invariant.gep1120, i64 %.4
  %441 = getelementptr inbounds i8, ptr %gep1100, i64 4
  %442 = load float, ptr %441, align 4, !tbaa !12
  %443 = fneg float %442
  %444 = load <2 x float>, ptr %gep1091, align 4, !tbaa !13
  %445 = insertelement <2 x float> poison, float %442, i64 0
  %446 = insertelement <2 x float> %445, float %443, i64 1
  %447 = fmul <2 x float> %444, %446
  %448 = shufflevector <2 x float> %447, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %449 = insertelement <2 x float> poison, float %440, i64 0
  %450 = shufflevector <2 x float> %449, <2 x float> poison, <2 x i32> zeroinitializer
  %451 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %450, <2 x float> %444, <2 x float> %448)
  %452 = fsub <2 x float> %439, %451
  %.not947.not = icmp slt i64 %.4, %436
  br i1 %.not947.not, label %438, label %._crit_edge1098, !llvm.loop !45

._crit_edge1098:                                  ; preds = %438
  store <2 x float> %451, ptr %13, align 8, !tbaa !13
  store <2 x float> %452, ptr %12, align 8, !tbaa !13
  store <2 x float> %452, ptr %16, align 8, !tbaa !13
  br label %453

453:                                              ; preds = %._crit_edge1098, %.lr.ph1118.split
  %454 = phi <2 x float> [ %452, %._crit_edge1098 ], [ %435, %.lr.ph1118.split ]
  br i1 %.not948, label %459, label %455

455:                                              ; preds = %453
  %456 = mul i64 %.68981116, %381
  %457 = getelementptr inbounds %struct.complex, ptr %19, i64 %456
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %457) #5
  %458 = load <2 x float>, ptr %12, align 8, !tbaa !13
  store <2 x float> %458, ptr %16, align 8, !tbaa !13
  br label %459

459:                                              ; preds = %453, %455
  %460 = phi <2 x float> [ %454, %453 ], [ %458, %455 ]
  store <2 x float> %460, ptr %gep1121, align 4, !tbaa !13
  %461 = add nsw i64 %.68981116, -1
  %462 = icmp sgt i64 %.68981116, 1
  br i1 %462, label %.lr.ph1118.split, label %._crit_edge1119, !llvm.loop !43

._crit_edge1119:                                  ; preds = %459, %406, %.lr.ph1125.split
  %exitcond1375.not = icmp eq i64 %.48871123, %88
  br i1 %exitcond1375.not, label %.loopexit, label %.lr.ph1125.splitthread-pre-split, !llvm.loop !46

463:                                              ; preds = %86
  br i1 %.not912, label %899, label %464

464:                                              ; preds = %463
  br i1 %.not904, label %657, label %465

465:                                              ; preds = %464
  %.not9351169 = icmp slt i64 %88, 1
  br i1 %.not9351169, label %.loopexit, label %.lr.ph1173

.lr.ph1173:                                       ; preds = %465
  %466 = getelementptr i8, ptr %6, i64 4
  %467 = getelementptr inbounds i8, ptr %12, i64 4
  %468 = getelementptr inbounds i8, ptr %13, i64 4
  %.not938 = icmp eq i64 %25, 0
  %469 = add i64 %17, 1
  %470 = shl i64 %20, 3
  %471 = shl i64 %20, 3
  %472 = shl i64 %20, 3
  %473 = shl i64 %20, 3
  %474 = shl i64 %17, 3
  %475 = add i64 %474, 8
  %476 = shl i64 %20, 3
  %477 = shl i64 %20, 3
  %478 = shl i64 %20, 3
  %scevgep1734 = getelementptr i8, ptr %6, i64 8
  %invariant.gep2364 = getelementptr i8, ptr %9, i64 -4
  %invariant.gep2366 = getelementptr i8, ptr %9, i64 -4
  %invariant.gep2368 = getelementptr i8, ptr %7, i64 -4
  %invariant.gep2362 = getelementptr i8, ptr %9, i64 -4
  br label %479

479:                                              ; preds = %.lr.ph1173, %.loopexit983
  %indvar1613 = phi i64 [ 0, %.lr.ph1173 ], [ %indvar.next1614, %.loopexit983 ]
  %.58881170 = phi i64 [ 1, %.lr.ph1173 ], [ %656, %.loopexit983 ]
  %480 = mul i64 %478, %indvar1613
  %scevgep1729 = getelementptr i8, ptr %9, i64 %480
  %gep2365 = getelementptr i8, ptr %invariant.gep2364, i64 %480
  %481 = or disjoint i64 %480, 4
  %scevgep1732 = getelementptr i8, ptr %9, i64 %481
  %482 = mul i64 %477, %indvar1613
  %scevgep1720 = getelementptr i8, ptr %9, i64 %482
  %483 = or disjoint i64 %482, 4
  %scevgep1724 = getelementptr i8, ptr %9, i64 %483
  %484 = mul i64 %473, %indvar1613
  %scevgep1666 = getelementptr i8, ptr %9, i64 %484
  %gep2367 = getelementptr i8, ptr %invariant.gep2366, i64 %484
  %485 = mul i64 %474, %indvar1613
  %scevgep1669 = getelementptr i8, ptr %7, i64 %485
  %486 = mul i64 %475, %indvar1613
  %gep2369 = getelementptr i8, ptr %invariant.gep2368, i64 %486
  %487 = or disjoint i64 %484, 4
  %scevgep1674 = getelementptr i8, ptr %9, i64 %487
  %488 = or disjoint i64 %485, 4
  %scevgep1676 = getelementptr i8, ptr %7, i64 %488
  %scevgep1677 = getelementptr i8, ptr %7, i64 %486
  %489 = mul i64 %472, %indvar1613
  %scevgep1653 = getelementptr i8, ptr %9, i64 %489
  %490 = or disjoint i64 %489, 4
  %scevgep1661 = getelementptr i8, ptr %9, i64 %490
  %491 = mul i64 %470, %indvar1613
  %scevgep1615 = getelementptr i8, ptr %9, i64 %491
  %492 = or disjoint i64 %491, 4
  %scevgep1619 = getelementptr i8, ptr %9, i64 %492
  %493 = load float, ptr %6, align 4, !tbaa !9
  %494 = fcmp une float %493, 1.000000e+00
  br i1 %494, label %498, label %495

495:                                              ; preds = %479
  %496 = load float, ptr %466, align 4, !tbaa !12
  %497 = fcmp une float %496, 0.000000e+00
  br i1 %497, label %498, label %.loopexit984

498:                                              ; preds = %495, %479
  %499 = load i64, ptr %4, align 8, !tbaa !5
  %.not9361126 = icmp slt i64 %499, 1
  br i1 %.not9361126, label %.loopexit984, label %.lr.ph1129

.lr.ph1129:                                       ; preds = %498
  %500 = mul nsw i64 %.58881170, %20
  %invariant.gep1130 = getelementptr %struct.complex, ptr %22, i64 %500
  %min.iters.check1744 = icmp ult i64 %499, 8
  br i1 %min.iters.check1744, label %scalar.ph1743.preheader, label %vector.scevcheck1719

vector.scevcheck1719:                             ; preds = %.lr.ph1129
  %501 = add nsw i64 %499, -1
  %mul.result1722 = shl i64 %501, 3
  %502 = getelementptr i8, ptr %scevgep1720, i64 %mul.result1722
  %503 = icmp ult ptr %502, %scevgep1720
  %mul.result1726 = shl i64 %501, 3
  %mul.overflow1727 = icmp ugt i64 %501, 2305843009213693951
  %504 = getelementptr i8, ptr %scevgep1724, i64 %mul.result1726
  %505 = icmp ult ptr %504, %scevgep1724
  %506 = or i1 %505, %mul.overflow1727
  %507 = or i1 %503, %506
  br i1 %507, label %scalar.ph1743.preheader, label %vector.memcheck1728

vector.memcheck1728:                              ; preds = %vector.scevcheck1719
  %508 = shl i64 %499, 3
  %scevgep1731 = getelementptr i8, ptr %gep2365, i64 %508
  %scevgep1733 = getelementptr i8, ptr %scevgep1729, i64 %508
  %bound01735 = icmp ult ptr %scevgep1729, %466
  %bound11736 = icmp ugt ptr %scevgep1731, %6
  %found.conflict1737 = and i1 %bound01735, %bound11736
  %bound01738 = icmp ult ptr %scevgep1732, %scevgep1734
  %bound11739 = icmp ult ptr %466, %scevgep1733
  %found.conflict1740 = and i1 %bound01738, %bound11739
  %conflict.rdx1741 = or i1 %found.conflict1737, %found.conflict1740
  br i1 %conflict.rdx1741, label %scalar.ph1743.preheader, label %vector.ph1745

vector.ph1745:                                    ; preds = %vector.memcheck1728
  %n.vec1747 = and i64 %499, 4611686018427387900
  %ind.end1748 = or disjoint i64 %n.vec1747, 1
  br label %vector.body1750

vector.body1750:                                  ; preds = %vector.body1750, %vector.ph1745
  %index1751 = phi i64 [ 0, %vector.ph1745 ], [ %index.next1761, %vector.body1750 ]
  %offset.idx1752 = or disjoint i64 %index1751, 1
  %509 = load float, ptr %6, align 4, !tbaa !9, !alias.scope !47
  %broadcast.splatinsert1758 = insertelement <4 x float> poison, float %509, i64 0
  %broadcast.splat1759 = shufflevector <4 x float> %broadcast.splatinsert1758, <4 x float> poison, <4 x i32> zeroinitializer
  %510 = getelementptr %struct.complex, ptr %invariant.gep1130, i64 %offset.idx1752
  %wide.vec1753 = load <8 x float>, ptr %510, align 4, !tbaa !13
  %strided.vec1754 = shufflevector <8 x float> %wide.vec1753, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1755 = shufflevector <8 x float> %wide.vec1753, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %511 = load float, ptr %466, align 4, !tbaa !12, !alias.scope !50
  %broadcast.splatinsert1756 = insertelement <4 x float> poison, float %511, i64 0
  %broadcast.splat1757 = shufflevector <4 x float> %broadcast.splatinsert1756, <4 x float> poison, <4 x i32> zeroinitializer
  %512 = fneg <4 x float> %broadcast.splat1757
  %513 = fmul <4 x float> %strided.vec1755, %512
  %514 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1759, <4 x float> %strided.vec1754, <4 x float> %513)
  %515 = fmul <4 x float> %strided.vec1754, %broadcast.splat1757
  %516 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1759, <4 x float> %strided.vec1755, <4 x float> %515)
  %interleaved.vec1760 = shufflevector <4 x float> %514, <4 x float> %516, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1760, ptr %510, align 4, !tbaa !13
  %index.next1761 = add nuw i64 %index1751, 4
  %517 = icmp eq i64 %index.next1761, %n.vec1747
  br i1 %517, label %middle.block1742, label %vector.body1750, !llvm.loop !52

middle.block1742:                                 ; preds = %vector.body1750
  %cmp.n1762 = icmp eq i64 %499, %n.vec1747
  %518 = shufflevector <4 x float> %514, <4 x float> %516, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1762, label %..loopexit984_crit_edge, label %scalar.ph1743.preheader

scalar.ph1743.preheader:                          ; preds = %middle.block1742, %vector.memcheck1728, %vector.scevcheck1719, %.lr.ph1129
  %.78991127.ph = phi i64 [ 1, %vector.memcheck1728 ], [ 1, %vector.scevcheck1719 ], [ 1, %.lr.ph1129 ], [ %ind.end1748, %middle.block1742 ]
  br label %scalar.ph1743

scalar.ph1743:                                    ; preds = %scalar.ph1743.preheader, %scalar.ph1743
  %.78991127 = phi i64 [ %530, %scalar.ph1743 ], [ %.78991127.ph, %scalar.ph1743.preheader ]
  %519 = load float, ptr %6, align 4, !tbaa !9
  %gep1131 = getelementptr %struct.complex, ptr %invariant.gep1130, i64 %.78991127
  %520 = load float, ptr %466, align 4, !tbaa !12
  %521 = fneg float %520
  %522 = load <2 x float>, ptr %gep1131, align 4, !tbaa !13
  %523 = insertelement <2 x float> poison, float %520, i64 0
  %524 = insertelement <2 x float> %523, float %521, i64 1
  %525 = fmul <2 x float> %522, %524
  %526 = shufflevector <2 x float> %525, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %527 = insertelement <2 x float> poison, float %519, i64 0
  %528 = shufflevector <2 x float> %527, <2 x float> poison, <2 x i32> zeroinitializer
  %529 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %528, <2 x float> %522, <2 x float> %526)
  store <2 x float> %529, ptr %gep1131, align 4, !tbaa !13
  %530 = add nuw i64 %.78991127, 1
  %exitcond1376.not = icmp eq i64 %.78991127, %499
  br i1 %exitcond1376.not, label %..loopexit984_crit_edge, label %scalar.ph1743, !llvm.loop !53

..loopexit984_crit_edge:                          ; preds = %scalar.ph1743, %middle.block1742
  %531 = phi <2 x float> [ %518, %middle.block1742 ], [ %529, %scalar.ph1743 ]
  store <2 x float> %531, ptr %12, align 8, !tbaa !13
  br label %.loopexit984

.loopexit984:                                     ; preds = %498, %..loopexit984_crit_edge, %495
  %.promoted1144 = load float, ptr %13, align 8, !tbaa !9
  %.not937.not1147 = icmp ugt i64 %.58881170, 1
  br i1 %.not937.not1147, label %.lr.ph1152, label %604

.lr.ph1152:                                       ; preds = %.loopexit984
  %532 = mul nsw i64 %.58881170, %17
  %invariant.gep1155 = getelementptr %struct.complex, ptr %19, i64 %532
  %533 = mul nsw i64 %.58881170, %20
  %.promoted1157 = load float, ptr %468, align 4, !tbaa !12
  %534 = insertelement <2 x float> poison, float %.promoted1144, i64 0
  %535 = insertelement <2 x float> %534, float %.promoted1157, i64 1
  %bound01680 = icmp ult ptr %scevgep1666, %gep2369
  %bound01687 = icmp ult ptr %scevgep1674, %scevgep1677
  br label %536

536:                                              ; preds = %.lr.ph1152, %.loopexit982
  %indvar1647 = phi i64 [ 0, %.lr.ph1152 ], [ %indvar.next1648, %.loopexit982 ]
  %.61149 = phi i64 [ 1, %.lr.ph1152 ], [ %601, %.loopexit982 ]
  %537 = phi <2 x float> [ %535, %.lr.ph1152 ], [ %600, %.loopexit982 ]
  %538 = mul i64 %476, %indvar1647
  %scevgep1671 = getelementptr i8, ptr %9, i64 %538
  %gep2363 = getelementptr i8, ptr %invariant.gep2362, i64 %538
  %539 = or disjoint i64 %538, 4
  %scevgep1678 = getelementptr i8, ptr %9, i64 %539
  %540 = mul i64 %471, %indvar1647
  %scevgep1649 = getelementptr i8, ptr %9, i64 %540
  %541 = or disjoint i64 %540, 4
  %scevgep1657 = getelementptr i8, ptr %9, i64 %541
  %gep1156 = getelementptr %struct.complex, ptr %invariant.gep1155, i64 %.61149
  %542 = load float, ptr %gep1156, align 4, !tbaa !9
  %543 = fcmp une float %542, 0.000000e+00
  br i1 %543, label %548, label %544

544:                                              ; preds = %536
  %545 = getelementptr inbounds i8, ptr %gep1156, i64 4
  %546 = load float, ptr %545, align 4, !tbaa !12
  %547 = fcmp une float %546, 0.000000e+00
  br i1 %547, label %548, label %.loopexit982

548:                                              ; preds = %544, %536
  %549 = load i64, ptr %4, align 8, !tbaa !5
  %.not9401136 = icmp slt i64 %549, 1
  br i1 %.not9401136, label %.loopexit982, label %.lr.ph1139

.lr.ph1139:                                       ; preds = %548
  %550 = mul nsw i64 %.61149, %20
  %551 = getelementptr inbounds i8, ptr %gep1156, i64 4
  %min.iters.check1697 = icmp ult i64 %549, 12
  br i1 %min.iters.check1697, label %scalar.ph1696.preheader, label %vector.scevcheck1646

vector.scevcheck1646:                             ; preds = %.lr.ph1139
  %552 = add nsw i64 %549, -1
  %mul.result1651 = shl i64 %552, 3
  %553 = getelementptr i8, ptr %scevgep1649, i64 %mul.result1651
  %554 = icmp ult ptr %553, %scevgep1649
  %mul.result1655 = shl i64 %552, 3
  %mul.overflow1656 = icmp ugt i64 %552, 2305843009213693951
  %555 = getelementptr i8, ptr %scevgep1653, i64 %mul.result1655
  %556 = icmp ult ptr %555, %scevgep1653
  %557 = or i1 %556, %mul.overflow1656
  %mul.result1659 = shl i64 %552, 3
  %558 = getelementptr i8, ptr %scevgep1657, i64 %mul.result1659
  %559 = icmp ult ptr %558, %scevgep1657
  %mul.result1663 = shl i64 %552, 3
  %560 = getelementptr i8, ptr %scevgep1661, i64 %mul.result1663
  %561 = icmp ult ptr %560, %scevgep1661
  %562 = or i1 %554, %557
  %563 = or i1 %559, %562
  %564 = or i1 %561, %563
  br i1 %564, label %scalar.ph1696.preheader, label %vector.memcheck1665

vector.memcheck1665:                              ; preds = %vector.scevcheck1646
  %565 = shl i64 %549, 3
  %scevgep1668 = getelementptr i8, ptr %gep2367, i64 %565
  %scevgep1673 = getelementptr i8, ptr %gep2363, i64 %565
  %scevgep1675 = getelementptr i8, ptr %scevgep1666, i64 %565
  %scevgep1679 = getelementptr i8, ptr %scevgep1671, i64 %565
  %bound11681 = icmp ult ptr %scevgep1669, %scevgep1668
  %found.conflict1682 = and i1 %bound01680, %bound11681
  %bound01683 = icmp ult ptr %scevgep1666, %scevgep1673
  %bound11684 = icmp ult ptr %scevgep1671, %scevgep1668
  %found.conflict1685 = and i1 %bound01683, %bound11684
  %conflict.rdx1686 = or i1 %found.conflict1682, %found.conflict1685
  %bound11688 = icmp ult ptr %scevgep1676, %scevgep1675
  %found.conflict1689 = and i1 %bound01687, %bound11688
  %conflict.rdx1690 = or i1 %conflict.rdx1686, %found.conflict1689
  %bound01691 = icmp ult ptr %scevgep1674, %scevgep1679
  %bound11692 = icmp ult ptr %scevgep1678, %scevgep1675
  %found.conflict1693 = and i1 %bound01691, %bound11692
  %conflict.rdx1694 = or i1 %conflict.rdx1690, %found.conflict1693
  br i1 %conflict.rdx1694, label %scalar.ph1696.preheader, label %vector.ph1698

vector.ph1698:                                    ; preds = %vector.memcheck1665
  %n.vec1700 = and i64 %549, 4611686018427387900
  %ind.end1701 = or disjoint i64 %n.vec1700, 1
  br label %vector.body1703

vector.body1703:                                  ; preds = %vector.body1703, %vector.ph1698
  %index1704 = phi i64 [ 0, %vector.ph1698 ], [ %index.next1717, %vector.body1703 ]
  %offset.idx1705 = or disjoint i64 %index1704, 1
  %566 = load float, ptr %gep1156, align 4, !tbaa !9, !alias.scope !54
  %broadcast.splatinsert1711 = insertelement <4 x float> poison, float %566, i64 0
  %broadcast.splat1712 = shufflevector <4 x float> %broadcast.splatinsert1711, <4 x float> poison, <4 x i32> zeroinitializer
  %567 = getelementptr %struct.complex, ptr %22, i64 %offset.idx1705
  %568 = getelementptr %struct.complex, ptr %567, i64 %550
  %wide.vec1706 = load <8 x float>, ptr %568, 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>
  %569 = load float, ptr %551, align 4, !tbaa !12, !alias.scope !57
  %broadcast.splatinsert1709 = insertelement <4 x float> poison, float %569, i64 0
  %broadcast.splat1710 = shufflevector <4 x float> %broadcast.splatinsert1709, <4 x float> poison, <4 x i32> zeroinitializer
  %570 = fneg <4 x float> %broadcast.splat1710
  %571 = fmul <4 x float> %strided.vec1708, %570
  %572 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1712, <4 x float> %strided.vec1707, <4 x float> %571)
  %573 = fmul <4 x float> %strided.vec1707, %broadcast.splat1710
  %574 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1712, <4 x float> %strided.vec1708, <4 x float> %573)
  %575 = getelementptr %struct.complex, ptr %567, i64 %533
  %wide.vec1713 = load <8 x float>, ptr %575, align 4, !tbaa !13
  %strided.vec1714 = shufflevector <8 x float> %wide.vec1713, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1715 = shufflevector <8 x float> %wide.vec1713, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %576 = fsub <4 x float> %strided.vec1714, %572
  %577 = fsub <4 x float> %strided.vec1715, %574
  %interleaved.vec1716 = shufflevector <4 x float> %576, <4 x float> %577, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1716, ptr %575, align 4, !tbaa !13
  %index.next1717 = add nuw i64 %index1704, 4
  %578 = icmp eq i64 %index.next1717, %n.vec1700
  br i1 %578, label %middle.block1695, label %vector.body1703, !llvm.loop !59

middle.block1695:                                 ; preds = %vector.body1703
  %cmp.n1718 = icmp eq i64 %549, %n.vec1700
  %579 = shufflevector <4 x float> %572, <4 x float> %574, <2 x i32> <i32 3, i32 7>
  %580 = shufflevector <4 x float> %576, <4 x float> %577, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1718, label %..loopexit982_crit_edge, label %scalar.ph1696.preheader

scalar.ph1696.preheader:                          ; preds = %middle.block1695, %vector.memcheck1665, %vector.scevcheck1646, %.lr.ph1139
  %.89001137.ph = phi i64 [ 1, %vector.memcheck1665 ], [ 1, %vector.scevcheck1646 ], [ 1, %.lr.ph1139 ], [ %ind.end1701, %middle.block1695 ]
  br label %scalar.ph1696

scalar.ph1696:                                    ; preds = %scalar.ph1696.preheader, %scalar.ph1696
  %.89001137 = phi i64 [ %597, %scalar.ph1696 ], [ %.89001137.ph, %scalar.ph1696.preheader ]
  %581 = load float, ptr %gep1156, align 4, !tbaa !9
  %582 = getelementptr %struct.complex, ptr %22, i64 %.89001137
  %583 = getelementptr %struct.complex, ptr %582, i64 %550
  %584 = load float, ptr %551, align 4, !tbaa !12
  %585 = fneg float %584
  %586 = load <2 x float>, ptr %583, align 4, !tbaa !13
  %587 = insertelement <2 x float> poison, float %584, i64 0
  %588 = insertelement <2 x float> %587, float %585, i64 1
  %589 = fmul <2 x float> %586, %588
  %590 = shufflevector <2 x float> %589, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %591 = insertelement <2 x float> poison, float %581, i64 0
  %592 = shufflevector <2 x float> %591, <2 x float> poison, <2 x i32> zeroinitializer
  %593 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %592, <2 x float> %586, <2 x float> %590)
  %594 = getelementptr %struct.complex, ptr %582, i64 %533
  %595 = load <2 x float>, ptr %594, align 4, !tbaa !13
  %596 = fsub <2 x float> %595, %593
  store <2 x float> %596, ptr %594, align 4, !tbaa !13
  %597 = add nuw i64 %.89001137, 1
  %exitcond1377.not = icmp eq i64 %.89001137, %549
  br i1 %exitcond1377.not, label %..loopexit982_crit_edge, label %scalar.ph1696, !llvm.loop !60

..loopexit982_crit_edge:                          ; preds = %scalar.ph1696, %middle.block1695
  %598 = phi <2 x float> [ %579, %middle.block1695 ], [ %593, %scalar.ph1696 ]
  %599 = phi <2 x float> [ %580, %middle.block1695 ], [ %596, %scalar.ph1696 ]
  store <2 x float> %599, ptr %12, align 8, !tbaa !13
  br label %.loopexit982

.loopexit982:                                     ; preds = %548, %..loopexit982_crit_edge, %544
  %600 = phi <2 x float> [ %537, %544 ], [ %598, %..loopexit982_crit_edge ], [ %537, %548 ]
  %601 = add nuw nsw i64 %.61149, 1
  %exitcond1378.not = icmp eq i64 %601, %.58881170
  %indvar.next1648 = add i64 %indvar1647, 1
  br i1 %exitcond1378.not, label %._crit_edge1153, label %536, !llvm.loop !61

._crit_edge1153:                                  ; preds = %.loopexit982
  %602 = extractelement <2 x float> %600, i64 1
  store float %602, ptr %468, align 4, !tbaa !12
  %603 = extractelement <2 x float> %600, i64 0
  br label %604

604:                                              ; preds = %._crit_edge1153, %.loopexit984
  %.lcssa11351146.lcssa = phi float [ %603, %._crit_edge1153 ], [ %.promoted1144, %.loopexit984 ]
  store float %.lcssa11351146.lcssa, ptr %13, align 8, !tbaa !9
  br i1 %.not938, label %.loopexit983, label %605

605:                                              ; preds = %604
  %606 = mul i64 %.58881170, %469
  %607 = getelementptr inbounds %struct.complex, ptr %19, i64 %606
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef %607) #5
  %608 = load float, ptr %12, align 8, !tbaa !9
  %609 = load float, ptr %467, align 4, !tbaa !12
  %610 = load i64, ptr %4, align 8, !tbaa !5
  %.not9391161 = icmp slt i64 %610, 1
  br i1 %.not9391161, label %.loopexit983, label %.lr.ph1164

.lr.ph1164:                                       ; preds = %605
  %611 = mul nsw i64 %.58881170, %20
  %invariant.gep1165 = getelementptr %struct.complex, ptr %22, i64 %611
  %612 = fneg float %609
  %min.iters.check1625 = icmp ult i64 %610, 8
  br i1 %min.iters.check1625, label %scalar.ph1624.preheader, label %vector.scevcheck1612

vector.scevcheck1612:                             ; preds = %.lr.ph1164
  %613 = add nsw i64 %610, -1
  %mul.result1617 = shl i64 %613, 3
  %614 = getelementptr i8, ptr %scevgep1615, i64 %mul.result1617
  %615 = icmp ult ptr %614, %scevgep1615
  %mul.result1621 = shl i64 %613, 3
  %mul.overflow1622 = icmp ugt i64 %613, 2305843009213693951
  %616 = getelementptr i8, ptr %scevgep1619, i64 %mul.result1621
  %617 = icmp ult ptr %616, %scevgep1619
  %618 = or i1 %617, %mul.overflow1622
  %619 = or i1 %615, %618
  br i1 %619, label %scalar.ph1624.preheader, label %vector.ph1626

vector.ph1626:                                    ; preds = %vector.scevcheck1612
  %n.vec1628 = and i64 %610, 4611686018427387900
  %ind.end1629 = or disjoint i64 %n.vec1628, 1
  %broadcast.splatinsert1637 = insertelement <4 x float> poison, float %612, i64 0
  %broadcast.splat1638 = shufflevector <4 x float> %broadcast.splatinsert1637, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1639 = insertelement <4 x float> poison, float %608, i64 0
  %broadcast.splat1640 = shufflevector <4 x float> %broadcast.splatinsert1639, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1641 = insertelement <4 x float> poison, float %609, i64 0
  %broadcast.splat1642 = shufflevector <4 x float> %broadcast.splatinsert1641, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1631

vector.body1631:                                  ; preds = %vector.body1631, %vector.ph1626
  %index1632 = phi i64 [ 0, %vector.ph1626 ], [ %index.next1644, %vector.body1631 ]
  %offset.idx1633 = or disjoint i64 %index1632, 1
  %620 = getelementptr %struct.complex, ptr %invariant.gep1165, i64 %offset.idx1633
  %wide.vec1634 = load <8 x float>, ptr %620, align 4, !tbaa !13
  %strided.vec1635 = shufflevector <8 x float> %wide.vec1634, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1636 = shufflevector <8 x float> %wide.vec1634, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %621 = fmul <4 x float> %strided.vec1636, %broadcast.splat1638
  %622 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1640, <4 x float> %strided.vec1635, <4 x float> %621)
  %623 = fmul <4 x float> %broadcast.splat1642, %strided.vec1635
  %624 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1640, <4 x float> %strided.vec1636, <4 x float> %623)
  %interleaved.vec1643 = shufflevector <4 x float> %622, <4 x float> %624, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1643, ptr %620, align 4, !tbaa !13
  %index.next1644 = add nuw i64 %index1632, 4
  %625 = icmp eq i64 %index.next1644, %n.vec1628
  br i1 %625, label %middle.block1623, label %vector.body1631, !llvm.loop !62

middle.block1623:                                 ; preds = %vector.body1631
  %cmp.n1645 = icmp eq i64 %610, %n.vec1628
  %626 = shufflevector <4 x float> %622, <4 x float> %624, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1645, label %..loopexit983_crit_edge, label %scalar.ph1624.preheader

scalar.ph1624.preheader:                          ; preds = %middle.block1623, %vector.scevcheck1612, %.lr.ph1164
  %.99011162.ph = phi i64 [ 1, %vector.scevcheck1612 ], [ 1, %.lr.ph1164 ], [ %ind.end1629, %middle.block1623 ]
  %xtraiter2276 = and i64 %610, 1
  %lcmp.mod2277.not = icmp eq i64 %xtraiter2276, 0
  br i1 %lcmp.mod2277.not, label %scalar.ph1624.prol.loopexit, label %scalar.ph1624.prol

scalar.ph1624.prol:                               ; preds = %scalar.ph1624.preheader
  %gep1166.prol = getelementptr %struct.complex, ptr %invariant.gep1165, i64 %.99011162.ph
  %627 = load <2 x float>, ptr %gep1166.prol, align 4, !tbaa !13
  %628 = insertelement <2 x float> poison, float %609, i64 0
  %629 = insertelement <2 x float> %628, float %612, i64 1
  %630 = fmul <2 x float> %627, %629
  %631 = shufflevector <2 x float> %630, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %632 = insertelement <2 x float> poison, float %608, i64 0
  %633 = shufflevector <2 x float> %632, <2 x float> poison, <2 x i32> zeroinitializer
  %634 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %633, <2 x float> %627, <2 x float> %631)
  store <2 x float> %634, ptr %gep1166.prol, align 4, !tbaa !13
  %635 = add nuw nsw i64 %.99011162.ph, 1
  br label %scalar.ph1624.prol.loopexit

scalar.ph1624.prol.loopexit:                      ; preds = %scalar.ph1624.prol, %scalar.ph1624.preheader
  %.lcssa2249.unr = phi <2 x float> [ poison, %scalar.ph1624.preheader ], [ %634, %scalar.ph1624.prol ]
  %.99011162.unr = phi i64 [ %.99011162.ph, %scalar.ph1624.preheader ], [ %635, %scalar.ph1624.prol ]
  %636 = icmp eq i64 %610, %.99011162.ph
  br i1 %636, label %..loopexit983_crit_edge, label %scalar.ph1624.preheader.new

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

scalar.ph1624:                                    ; preds = %scalar.ph1624, %scalar.ph1624.preheader.new
  %.99011162 = phi i64 [ %.99011162.unr, %scalar.ph1624.preheader.new ], [ %654, %scalar.ph1624 ]
  %gep1166 = getelementptr %struct.complex, ptr %invariant.gep1165, i64 %.99011162
  %645 = load <2 x float>, ptr %gep1166, align 4, !tbaa !13
  %646 = fmul <2 x float> %645, %638
  %647 = shufflevector <2 x float> %646, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %648 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %640, <2 x float> %645, <2 x float> %647)
  store <2 x float> %648, ptr %gep1166, align 4, !tbaa !13
  %649 = add nuw i64 %.99011162, 1
  %gep1166.1 = getelementptr %struct.complex, ptr %invariant.gep1165, i64 %649
  %650 = load <2 x float>, ptr %gep1166.1, align 4, !tbaa !13
  %651 = fmul <2 x float> %650, %642
  %652 = shufflevector <2 x float> %651, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %653 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %644, <2 x float> %650, <2 x float> %652)
  store <2 x float> %653, ptr %gep1166.1, align 4, !tbaa !13
  %654 = add nuw i64 %.99011162, 2
  %exitcond1379.not.1 = icmp eq i64 %649, %610
  br i1 %exitcond1379.not.1, label %..loopexit983_crit_edge, label %scalar.ph1624, !llvm.loop !63

..loopexit983_crit_edge:                          ; preds = %scalar.ph1624.prol.loopexit, %scalar.ph1624, %middle.block1623
  %655 = phi <2 x float> [ %626, %middle.block1623 ], [ %.lcssa2249.unr, %scalar.ph1624.prol.loopexit ], [ %653, %scalar.ph1624 ]
  store <2 x float> %655, ptr %12, align 8, !tbaa !13
  br label %.loopexit983

.loopexit983:                                     ; preds = %605, %..loopexit983_crit_edge, %604
  %656 = add nuw i64 %.58881170, 1
  %exitcond1380.not = icmp eq i64 %.58881170, %88
  %indvar.next1614 = add i64 %indvar1613, 1
  br i1 %exitcond1380.not, label %.loopexit, label %479, !llvm.loop !64

657:                                              ; preds = %464
  %658 = icmp sgt i64 %88, 0
  br i1 %658, label %.lr.ph1220, label %.loopexit

.lr.ph1220:                                       ; preds = %657
  %659 = getelementptr i8, ptr %6, i64 4
  %660 = getelementptr inbounds i8, ptr %12, i64 4
  %661 = getelementptr inbounds i8, ptr %13, i64 4
  %.not932 = icmp eq i64 %25, 0
  %662 = add i64 %17, 1
  %663 = shl i64 %88, 3
  %664 = add i64 %663, -8
  %665 = mul i64 %20, %664
  %666 = mul i64 %20, -8
  %667 = or disjoint i64 %665, 4
  %668 = mul i64 %20, %88
  %669 = shl i64 %668, 3
  %670 = mul i64 %20, -8
  %671 = shl i64 %20, 3
  %672 = shl i64 %88, 3
  %673 = add i64 %672, -8
  %674 = mul i64 %20, %673
  %675 = or disjoint i64 %669, 4
  %676 = or disjoint i64 %674, 4
  %677 = mul i64 %20, -8
  %678 = mul i64 %17, %673
  %679 = add i64 %678, %672
  %680 = shl i64 %17, 3
  %681 = sub nuw nsw i64 -8, %680
  %682 = or disjoint i64 %679, 4
  %683 = xor i64 %88, -1
  %684 = mul i64 %20, %88
  %685 = shl i64 %684, 3
  %686 = shl i64 %20, 3
  %687 = or disjoint i64 %674, 4
  %688 = or disjoint i64 %685, 4
  %689 = shl i64 %88, 3
  %690 = add i64 %689, -8
  %691 = mul i64 %20, %690
  %692 = mul i64 %20, -8
  %693 = or disjoint i64 %691, 4
  %694 = mul i64 %20, -8
  %695 = or disjoint i64 %691, 4
  %scevgep1886 = getelementptr i8, ptr %6, i64 8
  %696 = getelementptr i8, ptr %9, i64 %691
  %697 = getelementptr i8, ptr %9, i64 %691
  %698 = getelementptr i8, ptr %697, i64 -4
  %699 = getelementptr i8, ptr %9, i64 %695
  %700 = getelementptr i8, ptr %9, i64 %691
  %701 = getelementptr i8, ptr %9, i64 %693
  %702 = getelementptr i8, ptr %9, i64 %674
  %703 = getelementptr i8, ptr %9, i64 %674
  %704 = getelementptr i8, ptr %703, i64 -4
  %705 = getelementptr i8, ptr %7, i64 %679
  %706 = getelementptr i8, ptr %7, i64 %682
  %707 = getelementptr i8, ptr %9, i64 %687
  %708 = getelementptr i8, ptr %7, i64 %678
  %709 = getelementptr i8, ptr %708, i64 %672
  %710 = getelementptr i8, ptr %709, i64 8
  %711 = getelementptr i8, ptr %9, i64 %674
  %712 = getelementptr i8, ptr %9, i64 %676
  %713 = getelementptr i8, ptr %9, i64 %665
  %714 = getelementptr i8, ptr %9, i64 %667
  %715 = getelementptr i8, ptr %9, i64 %685
  %716 = getelementptr i8, ptr %9, i64 %685
  %717 = getelementptr i8, ptr %716, i64 -4
  %718 = getelementptr i8, ptr %9, i64 %688
  %719 = getelementptr i8, ptr %9, i64 %669
  %720 = getelementptr i8, ptr %9, i64 %675
  br label %721

721:                                              ; preds = %.lr.ph1220, %.loopexit979
  %indvar1764 = phi i64 [ 0, %.lr.ph1220 ], [ %indvar.next1765, %.loopexit979 ]
  %.68891217 = phi i64 [ %88, %.lr.ph1220 ], [ %897, %.loopexit979 ]
  %722 = mul i64 %694, %indvar1764
  %scevgep1881 = getelementptr i8, ptr %696, i64 %722
  %scevgep1882 = getelementptr i8, ptr %698, i64 %722
  %scevgep1884 = getelementptr i8, ptr %699, i64 %722
  %723 = mul i64 %692, %indvar1764
  %scevgep1872 = getelementptr i8, ptr %700, i64 %723
  %scevgep1876 = getelementptr i8, ptr %701, i64 %723
  %724 = mul i64 %677, %indvar1764
  %scevgep1817 = getelementptr i8, ptr %702, i64 %724
  %scevgep1818 = getelementptr i8, ptr %704, i64 %724
  %725 = mul i64 %681, %indvar1764
  %scevgep1820 = getelementptr i8, ptr %705, i64 %725
  %scevgep1821 = getelementptr i8, ptr %706, i64 %725
  %726 = add i64 %indvar1764, %683
  %scevgep1826 = getelementptr i8, ptr %707, i64 %724
  %scevgep1828 = getelementptr i8, ptr %710, i64 %725
  %727 = mul i64 %670, %indvar1764
  %scevgep1804 = getelementptr i8, ptr %711, i64 %727
  %scevgep1812 = getelementptr i8, ptr %712, i64 %727
  %728 = mul i64 %666, %indvar1764
  %scevgep1766 = getelementptr i8, ptr %713, i64 %728
  %scevgep1770 = getelementptr i8, ptr %714, i64 %728
  %729 = load float, ptr %6, align 4, !tbaa !9
  %730 = fcmp une float %729, 1.000000e+00
  br i1 %730, label %734, label %731

731:                                              ; preds = %721
  %732 = load float, ptr %659, align 4, !tbaa !12
  %733 = fcmp une float %732, 0.000000e+00
  br i1 %733, label %734, label %.loopexit980

734:                                              ; preds = %731, %721
  %735 = load i64, ptr %4, align 8, !tbaa !5
  %.not9301174 = icmp slt i64 %735, 1
  br i1 %.not9301174, label %.loopexit980, label %.lr.ph1177

.lr.ph1177:                                       ; preds = %734
  %736 = mul nsw i64 %.68891217, %20
  %invariant.gep1178 = getelementptr %struct.complex, ptr %22, i64 %736
  %min.iters.check1896 = icmp ult i64 %735, 8
  br i1 %min.iters.check1896, label %scalar.ph1895.preheader, label %vector.scevcheck1871

vector.scevcheck1871:                             ; preds = %.lr.ph1177
  %737 = add nsw i64 %735, -1
  %mul.result1874 = shl i64 %737, 3
  %738 = getelementptr i8, ptr %scevgep1872, i64 %mul.result1874
  %739 = icmp ult ptr %738, %scevgep1872
  %mul.result1878 = shl i64 %737, 3
  %mul.overflow1879 = icmp ugt i64 %737, 2305843009213693951
  %740 = getelementptr i8, ptr %scevgep1876, i64 %mul.result1878
  %741 = icmp ult ptr %740, %scevgep1876
  %742 = or i1 %741, %mul.overflow1879
  %743 = or i1 %739, %742
  br i1 %743, label %scalar.ph1895.preheader, label %vector.memcheck1880

vector.memcheck1880:                              ; preds = %vector.scevcheck1871
  %744 = shl i64 %735, 3
  %scevgep1883 = getelementptr i8, ptr %scevgep1882, i64 %744
  %scevgep1885 = getelementptr i8, ptr %scevgep1881, i64 %744
  %bound01887 = icmp ult ptr %scevgep1881, %659
  %bound11888 = icmp ugt ptr %scevgep1883, %6
  %found.conflict1889 = and i1 %bound01887, %bound11888
  %bound01890 = icmp ult ptr %scevgep1884, %scevgep1886
  %bound11891 = icmp ult ptr %659, %scevgep1885
  %found.conflict1892 = and i1 %bound01890, %bound11891
  %conflict.rdx1893 = or i1 %found.conflict1889, %found.conflict1892
  br i1 %conflict.rdx1893, label %scalar.ph1895.preheader, label %vector.ph1897

vector.ph1897:                                    ; preds = %vector.memcheck1880
  %n.vec1899 = and i64 %735, 4611686018427387900
  %ind.end1900 = or disjoint i64 %n.vec1899, 1
  br label %vector.body1902

vector.body1902:                                  ; preds = %vector.body1902, %vector.ph1897
  %index1903 = phi i64 [ 0, %vector.ph1897 ], [ %index.next1913, %vector.body1902 ]
  %offset.idx1904 = or disjoint i64 %index1903, 1
  %745 = load float, ptr %6, align 4, !tbaa !9, !alias.scope !65
  %broadcast.splatinsert1910 = insertelement <4 x float> poison, float %745, i64 0
  %broadcast.splat1911 = shufflevector <4 x float> %broadcast.splatinsert1910, <4 x float> poison, <4 x i32> zeroinitializer
  %746 = getelementptr %struct.complex, ptr %invariant.gep1178, i64 %offset.idx1904
  %wide.vec1905 = load <8 x float>, ptr %746, align 4, !tbaa !13
  %strided.vec1906 = shufflevector <8 x float> %wide.vec1905, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1907 = shufflevector <8 x float> %wide.vec1905, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %747 = load float, ptr %659, align 4, !tbaa !12, !alias.scope !68
  %broadcast.splatinsert1908 = insertelement <4 x float> poison, float %747, i64 0
  %broadcast.splat1909 = shufflevector <4 x float> %broadcast.splatinsert1908, <4 x float> poison, <4 x i32> zeroinitializer
  %748 = fneg <4 x float> %broadcast.splat1909
  %749 = fmul <4 x float> %strided.vec1907, %748
  %750 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1911, <4 x float> %strided.vec1906, <4 x float> %749)
  %751 = fmul <4 x float> %strided.vec1906, %broadcast.splat1909
  %752 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1911, <4 x float> %strided.vec1907, <4 x float> %751)
  %interleaved.vec1912 = shufflevector <4 x float> %750, <4 x float> %752, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1912, ptr %746, align 4, !tbaa !13
  %index.next1913 = add nuw i64 %index1903, 4
  %753 = icmp eq i64 %index.next1913, %n.vec1899
  br i1 %753, label %middle.block1894, label %vector.body1902, !llvm.loop !70

middle.block1894:                                 ; preds = %vector.body1902
  %cmp.n1914 = icmp eq i64 %735, %n.vec1899
  %754 = shufflevector <4 x float> %750, <4 x float> %752, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1914, label %..loopexit980_crit_edge, label %scalar.ph1895.preheader

scalar.ph1895.preheader:                          ; preds = %middle.block1894, %vector.memcheck1880, %vector.scevcheck1871, %.lr.ph1177
  %.101175.ph = phi i64 [ 1, %vector.memcheck1880 ], [ 1, %vector.scevcheck1871 ], [ 1, %.lr.ph1177 ], [ %ind.end1900, %middle.block1894 ]
  br label %scalar.ph1895

scalar.ph1895:                                    ; preds = %scalar.ph1895.preheader, %scalar.ph1895
  %.101175 = phi i64 [ %766, %scalar.ph1895 ], [ %.101175.ph, %scalar.ph1895.preheader ]
  %755 = load float, ptr %6, align 4, !tbaa !9
  %gep1179 = getelementptr %struct.complex, ptr %invariant.gep1178, i64 %.101175
  %756 = load float, ptr %659, align 4, !tbaa !12
  %757 = fneg float %756
  %758 = load <2 x float>, ptr %gep1179, align 4, !tbaa !13
  %759 = insertelement <2 x float> poison, float %756, i64 0
  %760 = insertelement <2 x float> %759, float %757, i64 1
  %761 = fmul <2 x float> %758, %760
  %762 = shufflevector <2 x float> %761, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %763 = insertelement <2 x float> poison, float %755, i64 0
  %764 = shufflevector <2 x float> %763, <2 x float> poison, <2 x i32> zeroinitializer
  %765 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %764, <2 x float> %758, <2 x float> %762)
  store <2 x float> %765, ptr %gep1179, align 4, !tbaa !13
  %766 = add nuw i64 %.101175, 1
  %exitcond1381.not = icmp eq i64 %.101175, %735
  br i1 %exitcond1381.not, label %..loopexit980_crit_edge, label %scalar.ph1895, !llvm.loop !71

..loopexit980_crit_edge:                          ; preds = %scalar.ph1895, %middle.block1894
  %767 = phi <2 x float> [ %754, %middle.block1894 ], [ %765, %scalar.ph1895 ]
  store <2 x float> %767, ptr %12, align 8, !tbaa !13
  br label %.loopexit980

.loopexit980:                                     ; preds = %734, %..loopexit980_crit_edge, %731
  %768 = load i64, ptr %5, align 8, !tbaa !5
  %.promoted1192 = load float, ptr %13, align 8, !tbaa !9
  %.not931.not1196 = icmp slt i64 %.68891217, %768
  br i1 %.not931.not1196, label %.lr.ph1200, label %845

.lr.ph1200:                                       ; preds = %.loopexit980
  %769 = mul nsw i64 %.68891217, %17
  %invariant.gep1203 = getelementptr %struct.complex, ptr %19, i64 %769
  %770 = mul nsw i64 %.68891217, %20
  %.promoted1205 = load float, ptr %661, align 4, !tbaa !12
  %771 = add i64 %768, %726
  %772 = shl i64 %771, 3
  %scevgep1822 = getelementptr i8, ptr %scevgep1821, i64 %772
  %scevgep1829 = getelementptr i8, ptr %scevgep1828, i64 %772
  %773 = insertelement <2 x float> poison, float %.promoted1192, i64 0
  %774 = insertelement <2 x float> %773, float %.promoted1205, i64 1
  %775 = getelementptr i8, ptr %715, i64 %724
  %776 = getelementptr i8, ptr %717, i64 %724
  %777 = getelementptr i8, ptr %718, i64 %724
  %778 = getelementptr i8, ptr %719, i64 %727
  %779 = getelementptr i8, ptr %720, i64 %727
  %bound01832 = icmp ult ptr %scevgep1817, %scevgep1822
  %bound01839 = icmp ult ptr %scevgep1826, %scevgep1829
  br label %780

780:                                              ; preds = %.lr.ph1200, %.loopexit978
  %indvar1798 = phi i64 [ 0, %.lr.ph1200 ], [ %indvar.next1799, %.loopexit978 ]
  %.71198.in = phi i64 [ %.68891217, %.lr.ph1200 ], [ %.71198, %.loopexit978 ]
  %781 = phi <2 x float> [ %774, %.lr.ph1200 ], [ %842, %.loopexit978 ]
  %782 = mul i64 %686, %indvar1798
  %scevgep1823 = getelementptr i8, ptr %775, i64 %782
  %scevgep1824 = getelementptr i8, ptr %776, i64 %782
  %scevgep1830 = getelementptr i8, ptr %777, i64 %782
  %783 = mul i64 %671, %indvar1798
  %scevgep1800 = getelementptr i8, ptr %778, i64 %783
  %scevgep1808 = getelementptr i8, ptr %779, i64 %783
  %.71198 = add nuw nsw i64 %.71198.in, 1
  %gep1204 = getelementptr %struct.complex, ptr %invariant.gep1203, i64 %.71198
  %784 = load float, ptr %gep1204, align 4, !tbaa !9
  %785 = fcmp une float %784, 0.000000e+00
  br i1 %785, label %790, label %786

786:                                              ; preds = %780
  %787 = getelementptr inbounds i8, ptr %gep1204, i64 4
  %788 = load float, ptr %787, align 4, !tbaa !12
  %789 = fcmp une float %788, 0.000000e+00
  br i1 %789, label %790, label %.loopexit978

790:                                              ; preds = %786, %780
  %791 = load i64, ptr %4, align 8, !tbaa !5
  %.not9341184 = icmp slt i64 %791, 1
  br i1 %.not9341184, label %.loopexit978, label %.lr.ph1187

.lr.ph1187:                                       ; preds = %790
  %792 = mul nsw i64 %.71198, %20
  %793 = getelementptr inbounds i8, ptr %gep1204, i64 4
  %min.iters.check1849 = icmp ult i64 %791, 12
  br i1 %min.iters.check1849, label %scalar.ph1848.preheader, label %vector.scevcheck1797

vector.scevcheck1797:                             ; preds = %.lr.ph1187
  %794 = add nsw i64 %791, -1
  %mul.result1802 = shl i64 %794, 3
  %795 = getelementptr i8, ptr %scevgep1800, i64 %mul.result1802
  %796 = icmp ult ptr %795, %scevgep1800
  %mul.result1806 = shl i64 %794, 3
  %mul.overflow1807 = icmp ugt i64 %794, 2305843009213693951
  %797 = getelementptr i8, ptr %scevgep1804, i64 %mul.result1806
  %798 = icmp ult ptr %797, %scevgep1804
  %799 = or i1 %798, %mul.overflow1807
  %mul.result1810 = shl i64 %794, 3
  %800 = getelementptr i8, ptr %scevgep1808, i64 %mul.result1810
  %801 = icmp ult ptr %800, %scevgep1808
  %mul.result1814 = shl i64 %794, 3
  %802 = getelementptr i8, ptr %scevgep1812, i64 %mul.result1814
  %803 = icmp ult ptr %802, %scevgep1812
  %804 = or i1 %796, %799
  %805 = or i1 %801, %804
  %806 = or i1 %803, %805
  br i1 %806, label %scalar.ph1848.preheader, label %vector.memcheck1816

vector.memcheck1816:                              ; preds = %vector.scevcheck1797
  %807 = shl i64 %791, 3
  %scevgep1819 = getelementptr i8, ptr %scevgep1818, i64 %807
  %scevgep1825 = getelementptr i8, ptr %scevgep1824, i64 %807
  %scevgep1827 = getelementptr i8, ptr %scevgep1817, i64 %807
  %scevgep1831 = getelementptr i8, ptr %scevgep1823, i64 %807
  %bound11833 = icmp ult ptr %scevgep1820, %scevgep1819
  %found.conflict1834 = and i1 %bound01832, %bound11833
  %bound01835 = icmp ult ptr %scevgep1817, %scevgep1825
  %bound11836 = icmp ult ptr %scevgep1823, %scevgep1819
  %found.conflict1837 = and i1 %bound01835, %bound11836
  %conflict.rdx1838 = or i1 %found.conflict1834, %found.conflict1837
  %bound11840 = icmp ult ptr %scevgep1821, %scevgep1827
  %found.conflict1841 = and i1 %bound01839, %bound11840
  %conflict.rdx1842 = or i1 %conflict.rdx1838, %found.conflict1841
  %bound01843 = icmp ult ptr %scevgep1826, %scevgep1831
  %bound11844 = icmp ult ptr %scevgep1830, %scevgep1827
  %found.conflict1845 = and i1 %bound01843, %bound11844
  %conflict.rdx1846 = or i1 %conflict.rdx1842, %found.conflict1845
  br i1 %conflict.rdx1846, label %scalar.ph1848.preheader, label %vector.ph1850

vector.ph1850:                                    ; preds = %vector.memcheck1816
  %n.vec1852 = and i64 %791, 4611686018427387900
  %ind.end1853 = or disjoint i64 %n.vec1852, 1
  br label %vector.body1855

vector.body1855:                                  ; preds = %vector.body1855, %vector.ph1850
  %index1856 = phi i64 [ 0, %vector.ph1850 ], [ %index.next1869, %vector.body1855 ]
  %offset.idx1857 = or disjoint i64 %index1856, 1
  %808 = load float, ptr %gep1204, align 4, !tbaa !9, !alias.scope !72
  %broadcast.splatinsert1863 = insertelement <4 x float> poison, float %808, i64 0
  %broadcast.splat1864 = shufflevector <4 x float> %broadcast.splatinsert1863, <4 x float> poison, <4 x i32> zeroinitializer
  %809 = getelementptr %struct.complex, ptr %22, i64 %offset.idx1857
  %810 = getelementptr %struct.complex, ptr %809, i64 %792
  %wide.vec1858 = load <8 x float>, ptr %810, align 4, !tbaa !13
  %strided.vec1859 = shufflevector <8 x float> %wide.vec1858, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1860 = shufflevector <8 x float> %wide.vec1858, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %811 = load float, ptr %793, align 4, !tbaa !12, !alias.scope !75
  %broadcast.splatinsert1861 = insertelement <4 x float> poison, float %811, i64 0
  %broadcast.splat1862 = shufflevector <4 x float> %broadcast.splatinsert1861, <4 x float> poison, <4 x i32> zeroinitializer
  %812 = fneg <4 x float> %broadcast.splat1862
  %813 = fmul <4 x float> %strided.vec1860, %812
  %814 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1864, <4 x float> %strided.vec1859, <4 x float> %813)
  %815 = fmul <4 x float> %strided.vec1859, %broadcast.splat1862
  %816 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1864, <4 x float> %strided.vec1860, <4 x float> %815)
  %817 = getelementptr %struct.complex, ptr %809, i64 %770
  %wide.vec1865 = load <8 x float>, ptr %817, align 4, !tbaa !13
  %strided.vec1866 = shufflevector <8 x float> %wide.vec1865, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1867 = shufflevector <8 x float> %wide.vec1865, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %818 = fsub <4 x float> %strided.vec1866, %814
  %819 = fsub <4 x float> %strided.vec1867, %816
  %interleaved.vec1868 = shufflevector <4 x float> %818, <4 x float> %819, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1868, ptr %817, align 4, !tbaa !13
  %index.next1869 = add nuw i64 %index1856, 4
  %820 = icmp eq i64 %index.next1869, %n.vec1852
  br i1 %820, label %middle.block1847, label %vector.body1855, !llvm.loop !77

middle.block1847:                                 ; preds = %vector.body1855
  %cmp.n1870 = icmp eq i64 %791, %n.vec1852
  %821 = shufflevector <4 x float> %814, <4 x float> %816, <2 x i32> <i32 3, i32 7>
  %822 = shufflevector <4 x float> %818, <4 x float> %819, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1870, label %..loopexit978_crit_edge, label %scalar.ph1848.preheader

scalar.ph1848.preheader:                          ; preds = %middle.block1847, %vector.memcheck1816, %vector.scevcheck1797, %.lr.ph1187
  %.111185.ph = phi i64 [ 1, %vector.memcheck1816 ], [ 1, %vector.scevcheck1797 ], [ 1, %.lr.ph1187 ], [ %ind.end1853, %middle.block1847 ]
  br label %scalar.ph1848

scalar.ph1848:                                    ; preds = %scalar.ph1848.preheader, %scalar.ph1848
  %.111185 = phi i64 [ %839, %scalar.ph1848 ], [ %.111185.ph, %scalar.ph1848.preheader ]
  %823 = load float, ptr %gep1204, align 4, !tbaa !9
  %824 = getelementptr %struct.complex, ptr %22, i64 %.111185
  %825 = getelementptr %struct.complex, ptr %824, i64 %792
  %826 = load float, ptr %793, align 4, !tbaa !12
  %827 = fneg float %826
  %828 = load <2 x float>, ptr %825, align 4, !tbaa !13
  %829 = insertelement <2 x float> poison, float %826, i64 0
  %830 = insertelement <2 x float> %829, float %827, i64 1
  %831 = fmul <2 x float> %828, %830
  %832 = shufflevector <2 x float> %831, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %833 = insertelement <2 x float> poison, float %823, i64 0
  %834 = shufflevector <2 x float> %833, <2 x float> poison, <2 x i32> zeroinitializer
  %835 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %834, <2 x float> %828, <2 x float> %832)
  %836 = getelementptr %struct.complex, ptr %824, i64 %770
  %837 = load <2 x float>, ptr %836, align 4, !tbaa !13
  %838 = fsub <2 x float> %837, %835
  store <2 x float> %838, ptr %836, align 4, !tbaa !13
  %839 = add nuw i64 %.111185, 1
  %exitcond1382.not = icmp eq i64 %.111185, %791
  br i1 %exitcond1382.not, label %..loopexit978_crit_edge, label %scalar.ph1848, !llvm.loop !78

..loopexit978_crit_edge:                          ; preds = %scalar.ph1848, %middle.block1847
  %840 = phi <2 x float> [ %821, %middle.block1847 ], [ %835, %scalar.ph1848 ]
  %841 = phi <2 x float> [ %822, %middle.block1847 ], [ %838, %scalar.ph1848 ]
  store <2 x float> %841, ptr %12, align 8, !tbaa !13
  br label %.loopexit978

.loopexit978:                                     ; preds = %790, %..loopexit978_crit_edge, %786
  %842 = phi <2 x float> [ %781, %786 ], [ %840, %..loopexit978_crit_edge ], [ %781, %790 ]
  %.not931.not = icmp slt i64 %.71198, %768
  %indvar.next1799 = add i64 %indvar1798, 1
  br i1 %.not931.not, label %780, label %._crit_edge1201, !llvm.loop !79

._crit_edge1201:                                  ; preds = %.loopexit978
  %843 = extractelement <2 x float> %842, i64 1
  store float %843, ptr %661, align 4, !tbaa !12
  %844 = extractelement <2 x float> %842, i64 0
  br label %845

845:                                              ; preds = %._crit_edge1201, %.loopexit980
  %.lcssa11831194.lcssa = phi float [ %844, %._crit_edge1201 ], [ %.promoted1192, %.loopexit980 ]
  store float %.lcssa11831194.lcssa, ptr %13, align 8, !tbaa !9
  br i1 %.not932, label %.loopexit979, label %846

846:                                              ; preds = %845
  %847 = mul i64 %.68891217, %662
  %848 = getelementptr inbounds %struct.complex, ptr %19, i64 %847
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef %848) #5
  %849 = load float, ptr %12, align 8, !tbaa !9
  %850 = load float, ptr %660, align 4, !tbaa !12
  %851 = load i64, ptr %4, align 8, !tbaa !5
  %.not9331209 = icmp slt i64 %851, 1
  br i1 %.not9331209, label %.loopexit979, label %.lr.ph1212

.lr.ph1212:                                       ; preds = %846
  %852 = mul nsw i64 %.68891217, %20
  %invariant.gep1213 = getelementptr %struct.complex, ptr %22, i64 %852
  %853 = fneg float %850
  %min.iters.check1776 = icmp ult i64 %851, 8
  br i1 %min.iters.check1776, label %scalar.ph1775.preheader, label %vector.scevcheck1763

vector.scevcheck1763:                             ; preds = %.lr.ph1212
  %854 = add nsw i64 %851, -1
  %mul.result1768 = shl i64 %854, 3
  %855 = getelementptr i8, ptr %scevgep1766, i64 %mul.result1768
  %856 = icmp ult ptr %855, %scevgep1766
  %mul.result1772 = shl i64 %854, 3
  %mul.overflow1773 = icmp ugt i64 %854, 2305843009213693951
  %857 = getelementptr i8, ptr %scevgep1770, i64 %mul.result1772
  %858 = icmp ult ptr %857, %scevgep1770
  %859 = or i1 %858, %mul.overflow1773
  %860 = or i1 %856, %859
  br i1 %860, label %scalar.ph1775.preheader, label %vector.ph1777

vector.ph1777:                                    ; preds = %vector.scevcheck1763
  %n.vec1779 = and i64 %851, 4611686018427387900
  %ind.end1780 = or disjoint i64 %n.vec1779, 1
  %broadcast.splatinsert1788 = insertelement <4 x float> poison, float %853, i64 0
  %broadcast.splat1789 = shufflevector <4 x float> %broadcast.splatinsert1788, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1790 = insertelement <4 x float> poison, float %849, i64 0
  %broadcast.splat1791 = shufflevector <4 x float> %broadcast.splatinsert1790, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1792 = insertelement <4 x float> poison, float %850, i64 0
  %broadcast.splat1793 = shufflevector <4 x float> %broadcast.splatinsert1792, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1782

vector.body1782:                                  ; preds = %vector.body1782, %vector.ph1777
  %index1783 = phi i64 [ 0, %vector.ph1777 ], [ %index.next1795, %vector.body1782 ]
  %offset.idx1784 = or disjoint i64 %index1783, 1
  %861 = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %offset.idx1784
  %wide.vec1785 = load <8 x float>, ptr %861, align 4, !tbaa !13
  %strided.vec1786 = shufflevector <8 x float> %wide.vec1785, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1787 = shufflevector <8 x float> %wide.vec1785, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %862 = fmul <4 x float> %strided.vec1787, %broadcast.splat1789
  %863 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1791, <4 x float> %strided.vec1786, <4 x float> %862)
  %864 = fmul <4 x float> %broadcast.splat1793, %strided.vec1786
  %865 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1791, <4 x float> %strided.vec1787, <4 x float> %864)
  %interleaved.vec1794 = shufflevector <4 x float> %863, <4 x float> %865, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1794, ptr %861, align 4, !tbaa !13
  %index.next1795 = add nuw i64 %index1783, 4
  %866 = icmp eq i64 %index.next1795, %n.vec1779
  br i1 %866, label %middle.block1774, label %vector.body1782, !llvm.loop !80

middle.block1774:                                 ; preds = %vector.body1782
  %cmp.n1796 = icmp eq i64 %851, %n.vec1779
  %867 = shufflevector <4 x float> %863, <4 x float> %865, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1796, label %..loopexit979_crit_edge, label %scalar.ph1775.preheader

scalar.ph1775.preheader:                          ; preds = %middle.block1774, %vector.scevcheck1763, %.lr.ph1212
  %.121210.ph = phi i64 [ 1, %vector.scevcheck1763 ], [ 1, %.lr.ph1212 ], [ %ind.end1780, %middle.block1774 ]
  %xtraiter2278 = and i64 %851, 1
  %lcmp.mod2279.not = icmp eq i64 %xtraiter2278, 0
  br i1 %lcmp.mod2279.not, label %scalar.ph1775.prol.loopexit, label %scalar.ph1775.prol

scalar.ph1775.prol:                               ; preds = %scalar.ph1775.preheader
  %gep1214.prol = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %.121210.ph
  %868 = load <2 x float>, ptr %gep1214.prol, align 4, !tbaa !13
  %869 = insertelement <2 x float> poison, float %850, i64 0
  %870 = insertelement <2 x float> %869, float %853, i64 1
  %871 = fmul <2 x float> %868, %870
  %872 = shufflevector <2 x float> %871, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %873 = insertelement <2 x float> poison, float %849, i64 0
  %874 = shufflevector <2 x float> %873, <2 x float> poison, <2 x i32> zeroinitializer
  %875 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %874, <2 x float> %868, <2 x float> %872)
  store <2 x float> %875, ptr %gep1214.prol, align 4, !tbaa !13
  %876 = add nuw nsw i64 %.121210.ph, 1
  br label %scalar.ph1775.prol.loopexit

scalar.ph1775.prol.loopexit:                      ; preds = %scalar.ph1775.prol, %scalar.ph1775.preheader
  %.lcssa2235.unr = phi <2 x float> [ poison, %scalar.ph1775.preheader ], [ %875, %scalar.ph1775.prol ]
  %.121210.unr = phi i64 [ %.121210.ph, %scalar.ph1775.preheader ], [ %876, %scalar.ph1775.prol ]
  %877 = icmp eq i64 %851, %.121210.ph
  br i1 %877, label %..loopexit979_crit_edge, label %scalar.ph1775.preheader.new

scalar.ph1775.preheader.new:                      ; preds = %scalar.ph1775.prol.loopexit
  %878 = insertelement <2 x float> poison, float %850, i64 0
  %879 = insertelement <2 x float> %878, float %853, i64 1
  %880 = insertelement <2 x float> poison, float %849, i64 0
  %881 = shufflevector <2 x float> %880, <2 x float> poison, <2 x i32> zeroinitializer
  %882 = insertelement <2 x float> poison, float %850, i64 0
  %883 = insertelement <2 x float> %882, float %853, i64 1
  %884 = insertelement <2 x float> poison, float %849, i64 0
  %885 = shufflevector <2 x float> %884, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1775

scalar.ph1775:                                    ; preds = %scalar.ph1775, %scalar.ph1775.preheader.new
  %.121210 = phi i64 [ %.121210.unr, %scalar.ph1775.preheader.new ], [ %895, %scalar.ph1775 ]
  %gep1214 = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %.121210
  %886 = load <2 x float>, ptr %gep1214, align 4, !tbaa !13
  %887 = fmul <2 x float> %886, %879
  %888 = shufflevector <2 x float> %887, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %889 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %881, <2 x float> %886, <2 x float> %888)
  store <2 x float> %889, ptr %gep1214, align 4, !tbaa !13
  %890 = add nuw i64 %.121210, 1
  %gep1214.1 = getelementptr %struct.complex, ptr %invariant.gep1213, i64 %890
  %891 = load <2 x float>, ptr %gep1214.1, align 4, !tbaa !13
  %892 = fmul <2 x float> %891, %883
  %893 = shufflevector <2 x float> %892, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %894 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %885, <2 x float> %891, <2 x float> %893)
  store <2 x float> %894, ptr %gep1214.1, align 4, !tbaa !13
  %895 = add nuw i64 %.121210, 2
  %exitcond1383.not.1 = icmp eq i64 %890, %851
  br i1 %exitcond1383.not.1, label %..loopexit979_crit_edge, label %scalar.ph1775, !llvm.loop !81

..loopexit979_crit_edge:                          ; preds = %scalar.ph1775.prol.loopexit, %scalar.ph1775, %middle.block1774
  %896 = phi <2 x float> [ %867, %middle.block1774 ], [ %.lcssa2235.unr, %scalar.ph1775.prol.loopexit ], [ %894, %scalar.ph1775 ]
  store <2 x float> %896, ptr %12, align 8, !tbaa !13
  br label %.loopexit979

.loopexit979:                                     ; preds = %846, %..loopexit979_crit_edge, %845
  %897 = add nsw i64 %.68891217, -1
  %898 = icmp sgt i64 %.68891217, 1
  %indvar.next1765 = add i64 %indvar1764, 1
  br i1 %898, label %721, label %.loopexit, !llvm.loop !82

899:                                              ; preds = %463
  br i1 %.not904, label %1136, label %900

900:                                              ; preds = %899
  %901 = icmp sgt i64 %88, 0
  br i1 %901, label %.lr.ph1256, label %.loopexit

.lr.ph1256:                                       ; preds = %900
  %.not922 = icmp eq i64 %25, 0
  %.not923 = icmp eq i64 %24, 0
  %902 = add i64 %17, 1
  %903 = getelementptr inbounds i8, ptr %12, i64 4
  %904 = getelementptr i8, ptr %6, i64 4
  %905 = shl i64 %88, 3
  %906 = add i64 %905, -8
  %907 = mul i64 %20, %906
  %908 = mul i64 %20, -8
  %909 = or disjoint i64 %907, 4
  %910 = mul i64 %20, -8
  %911 = or disjoint i64 %907, 4
  %scevgep1932 = getelementptr i8, ptr %6, i64 8
  %912 = shl i64 %88, 3
  %913 = add i64 %912, -8
  %914 = mul i64 %20, %913
  %915 = mul i64 %20, -8
  %916 = shl i64 %20, 3
  %917 = or disjoint i64 %914, 4
  %918 = shl i64 %20, 3
  %919 = shl i64 %88, 3
  %920 = add i64 %919, -8
  %921 = mul i64 %20, %920
  %922 = mul i64 %20, -8
  %923 = or disjoint i64 %921, 4
  %924 = mul i64 %20, -8
  %925 = or disjoint i64 %921, 4
  %926 = getelementptr i8, ptr %9, i64 %921
  %927 = getelementptr i8, ptr %9, i64 %925
  %928 = getelementptr i8, ptr %9, i64 %921
  %929 = getelementptr i8, ptr %9, i64 %921
  %930 = getelementptr i8, ptr %929, i64 -4
  %931 = getelementptr i8, ptr %9, i64 %923
  %932 = getelementptr i8, ptr %9, i64 %914
  %933 = getelementptr i8, ptr %9, i64 %917
  %934 = getelementptr i8, ptr %9, i64 %907
  %935 = getelementptr i8, ptr %9, i64 %907
  %936 = getelementptr i8, ptr %935, i64 -4
  %937 = getelementptr i8, ptr %9, i64 %911
  %938 = getelementptr i8, ptr %9, i64 %907
  %939 = getelementptr i8, ptr %9, i64 %909
  %invariant.gep2370 = getelementptr i8, ptr %9, i64 -4
  br label %940

940:                                              ; preds = %.lr.ph1256, %.loopexit975
  %indvar1916 = phi i64 [ 0, %.lr.ph1256 ], [ %indvar.next1917, %.loopexit975 ]
  %.81253 = phi i64 [ %88, %.lr.ph1256 ], [ %1135, %.loopexit975 ]
  %941 = mul i64 %924, %indvar1916
  %scevgep2025 = getelementptr i8, ptr %926, i64 %941
  %scevgep2029 = getelementptr i8, ptr %927, i64 %941
  %942 = mul i64 %922, %indvar1916
  %scevgep1984 = getelementptr i8, ptr %928, i64 %942
  %scevgep1985 = getelementptr i8, ptr %930, i64 %942
  %scevgep1989 = getelementptr i8, ptr %931, i64 %942
  %943 = mul i64 %915, %indvar1916
  %scevgep1962 = getelementptr i8, ptr %932, i64 %943
  %scevgep1972 = getelementptr i8, ptr %933, i64 %943
  %944 = mul i64 %910, %indvar1916
  %scevgep1927 = getelementptr i8, ptr %934, i64 %944
  %scevgep1928 = getelementptr i8, ptr %936, i64 %944
  %scevgep1930 = getelementptr i8, ptr %937, i64 %944
  %945 = mul i64 %908, %indvar1916
  %scevgep1918 = getelementptr i8, ptr %938, i64 %945
  %scevgep1922 = getelementptr i8, ptr %939, i64 %945
  br i1 %.not922, label %.loopexit976, label %946

946:                                              ; preds = %940
  %947 = mul i64 %.81253, %902
  %948 = getelementptr inbounds %struct.complex, ptr %19, i64 %947
  br i1 %.not923, label %950, label %949

949:                                              ; preds = %946
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef %948) #5
  br label %951

950:                                              ; preds = %946
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %948) #5
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef nonnull %13) #5
  br label %951

951:                                              ; preds = %950, %949
  %952 = load float, ptr %12, align 8, !tbaa !9
  %953 = load float, ptr %903, align 4, !tbaa !12
  %954 = load i64, ptr %4, align 8, !tbaa !5
  %.not9241221 = icmp slt i64 %954, 1
  br i1 %.not9241221, label %.loopexit976, label %.lr.ph1224

.lr.ph1224:                                       ; preds = %951
  %955 = mul nsw i64 %.81253, %20
  %invariant.gep1225 = getelementptr %struct.complex, ptr %22, i64 %955
  %956 = fneg float %953
  %min.iters.check2035 = icmp ult i64 %954, 8
  br i1 %min.iters.check2035, label %scalar.ph2034.preheader, label %vector.scevcheck2024

vector.scevcheck2024:                             ; preds = %.lr.ph1224
  %957 = add nsw i64 %954, -1
  %mul.result2027 = shl i64 %957, 3
  %958 = getelementptr i8, ptr %scevgep2025, i64 %mul.result2027
  %959 = icmp ult ptr %958, %scevgep2025
  %mul.result2031 = shl i64 %957, 3
  %mul.overflow2032 = icmp ugt i64 %957, 2305843009213693951
  %960 = getelementptr i8, ptr %scevgep2029, i64 %mul.result2031
  %961 = icmp ult ptr %960, %scevgep2029
  %962 = or i1 %961, %mul.overflow2032
  %963 = or i1 %959, %962
  br i1 %963, label %scalar.ph2034.preheader, label %vector.ph2036

vector.ph2036:                                    ; preds = %vector.scevcheck2024
  %n.vec2038 = and i64 %954, 4611686018427387900
  %ind.end2039 = or disjoint i64 %n.vec2038, 1
  %broadcast.splatinsert2047 = insertelement <4 x float> poison, float %956, i64 0
  %broadcast.splat2048 = shufflevector <4 x float> %broadcast.splatinsert2047, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2049 = insertelement <4 x float> poison, float %952, i64 0
  %broadcast.splat2050 = shufflevector <4 x float> %broadcast.splatinsert2049, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2051 = insertelement <4 x float> poison, float %953, i64 0
  %broadcast.splat2052 = shufflevector <4 x float> %broadcast.splatinsert2051, <4 x float> poison, <4 x i32> zeroinitializer
  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
  %964 = getelementptr %struct.complex, ptr %invariant.gep1225, i64 %offset.idx2043
  %wide.vec2044 = load <8 x float>, ptr %964, 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>
  %965 = fmul <4 x float> %strided.vec2046, %broadcast.splat2048
  %966 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2050, <4 x float> %strided.vec2045, <4 x float> %965)
  %967 = fmul <4 x float> %strided.vec2045, %broadcast.splat2052
  %968 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2050, <4 x float> %strided.vec2046, <4 x float> %967)
  %interleaved.vec2053 = shufflevector <4 x float> %966, <4 x float> %968, <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 %964, align 4, !tbaa !13
  %index.next2054 = add nuw i64 %index2042, 4
  %969 = icmp eq i64 %index.next2054, %n.vec2038
  br i1 %969, label %middle.block2033, label %vector.body2041, !llvm.loop !83

middle.block2033:                                 ; preds = %vector.body2041
  %cmp.n2055 = icmp eq i64 %954, %n.vec2038
  %970 = shufflevector <4 x float> %966, <4 x float> %968, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2055, label %..loopexit976_crit_edge, label %scalar.ph2034.preheader

scalar.ph2034.preheader:                          ; preds = %middle.block2033, %vector.scevcheck2024, %.lr.ph1224
  %.131222.ph = phi i64 [ 1, %vector.scevcheck2024 ], [ 1, %.lr.ph1224 ], [ %ind.end2039, %middle.block2033 ]
  %xtraiter2280 = and i64 %954, 1
  %lcmp.mod2281.not = icmp eq i64 %xtraiter2280, 0
  br i1 %lcmp.mod2281.not, label %scalar.ph2034.prol.loopexit, label %scalar.ph2034.prol

scalar.ph2034.prol:                               ; preds = %scalar.ph2034.preheader
  %gep1226.prol = getelementptr %struct.complex, ptr %invariant.gep1225, i64 %.131222.ph
  %971 = load <2 x float>, ptr %gep1226.prol, align 4, !tbaa !13
  %972 = insertelement <2 x float> poison, float %953, i64 0
  %973 = insertelement <2 x float> %972, float %956, i64 1
  %974 = fmul <2 x float> %971, %973
  %975 = shufflevector <2 x float> %974, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %976 = insertelement <2 x float> poison, float %952, i64 0
  %977 = shufflevector <2 x float> %976, <2 x float> poison, <2 x i32> zeroinitializer
  %978 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %977, <2 x float> %971, <2 x float> %975)
  store <2 x float> %978, ptr %gep1226.prol, align 4, !tbaa !13
  %979 = add nuw nsw i64 %.131222.ph, 1
  br label %scalar.ph2034.prol.loopexit

scalar.ph2034.prol.loopexit:                      ; preds = %scalar.ph2034.prol, %scalar.ph2034.preheader
  %.lcssa2212.unr = phi <2 x float> [ poison, %scalar.ph2034.preheader ], [ %978, %scalar.ph2034.prol ]
  %.131222.unr = phi i64 [ %.131222.ph, %scalar.ph2034.preheader ], [ %979, %scalar.ph2034.prol ]
  %980 = icmp eq i64 %954, %.131222.ph
  br i1 %980, label %..loopexit976_crit_edge, label %scalar.ph2034.preheader.new

scalar.ph2034.preheader.new:                      ; preds = %scalar.ph2034.prol.loopexit
  %981 = insertelement <2 x float> poison, float %953, i64 0
  %982 = insertelement <2 x float> %981, float %956, i64 1
  %983 = insertelement <2 x float> poison, float %952, i64 0
  %984 = shufflevector <2 x float> %983, <2 x float> poison, <2 x i32> zeroinitializer
  %985 = insertelement <2 x float> poison, float %953, i64 0
  %986 = insertelement <2 x float> %985, float %956, i64 1
  %987 = insertelement <2 x float> poison, float %952, i64 0
  %988 = shufflevector <2 x float> %987, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2034

scalar.ph2034:                                    ; preds = %scalar.ph2034, %scalar.ph2034.preheader.new
  %.131222 = phi i64 [ %.131222.unr, %scalar.ph2034.preheader.new ], [ %998, %scalar.ph2034 ]
  %gep1226 = getelementptr %struct.complex, ptr %invariant.gep1225, i64 %.131222
  %989 = load <2 x float>, ptr %gep1226, align 4, !tbaa !13
  %990 = fmul <2 x float> %989, %982
  %991 = shufflevector <2 x float> %990, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %992 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %984, <2 x float> %989, <2 x float> %991)
  store <2 x float> %992, ptr %gep1226, align 4, !tbaa !13
  %993 = add nuw i64 %.131222, 1
  %gep1226.1 = getelementptr %struct.complex, ptr %invariant.gep1225, i64 %993
  %994 = load <2 x float>, ptr %gep1226.1, align 4, !tbaa !13
  %995 = fmul <2 x float> %994, %986
  %996 = shufflevector <2 x float> %995, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %997 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %988, <2 x float> %994, <2 x float> %996)
  store <2 x float> %997, ptr %gep1226.1, align 4, !tbaa !13
  %998 = add nuw i64 %.131222, 2
  %exitcond1384.not.1 = icmp eq i64 %993, %954
  br i1 %exitcond1384.not.1, label %..loopexit976_crit_edge, label %scalar.ph2034, !llvm.loop !84

..loopexit976_crit_edge:                          ; preds = %scalar.ph2034.prol.loopexit, %scalar.ph2034, %middle.block2033
  %999 = phi <2 x float> [ %970, %middle.block2033 ], [ %.lcssa2212.unr, %scalar.ph2034.prol.loopexit ], [ %997, %scalar.ph2034 ]
  store <2 x float> %999, ptr %12, align 8, !tbaa !13
  br label %.loopexit976

.loopexit976:                                     ; preds = %951, %..loopexit976_crit_edge, %940
  %.not925.not1237 = icmp sgt i64 %.81253, 1
  br i1 %.not925.not1237, label %.lr.ph1241, label %._crit_edge1242

.lr.ph1241:                                       ; preds = %.loopexit976
  %1000 = mul nsw i64 %.81253, %17
  %invariant.gep1243 = getelementptr %struct.complex, ptr %19, i64 %1000
  %1001 = mul nsw i64 %.81253, %20
  br label %1002

1002:                                             ; preds = %.lr.ph1241, %.loopexit974
  %indvar1966 = phi i64 [ 0, %.lr.ph1241 ], [ %indvar.next1967, %.loopexit974 ]
  %.78901238 = phi i64 [ 1, %.lr.ph1241 ], [ %1095, %.loopexit974 ]
  %1003 = mul i64 %918, %indvar1966
  %scevgep1981 = getelementptr i8, ptr %9, i64 %1003
  %gep2371 = getelementptr i8, ptr %invariant.gep2370, i64 %1003
  %1004 = or disjoint i64 %1003, 4
  %scevgep1987 = getelementptr i8, ptr %9, i64 %1004
  %1005 = mul i64 %916, %indvar1966
  %scevgep1968 = getelementptr i8, ptr %9, i64 %1005
  %1006 = or disjoint i64 %1005, 4
  %scevgep1976 = getelementptr i8, ptr %9, i64 %1006
  %gep1244 = getelementptr %struct.complex, ptr %invariant.gep1243, i64 %.78901238
  %1007 = load float, ptr %gep1244, align 4, !tbaa !9
  %1008 = fcmp une float %1007, 0.000000e+00
  br i1 %1008, label %1013, label %1009

1009:                                             ; preds = %1002
  %1010 = getelementptr inbounds i8, ptr %gep1244, i64 4
  %1011 = load float, ptr %1010, align 4, !tbaa !12
  %1012 = fcmp une float %1011, 0.000000e+00
  br i1 %1012, label %1013, label %.loopexit974

1013:                                             ; preds = %1009, %1002
  br i1 %.not923, label %1016, label %1014

1014:                                             ; preds = %1013
  %1015 = getelementptr inbounds i8, ptr %gep1244, i64 4
  br label %1018

1016:                                             ; preds = %1013
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef nonnull %gep1244) #5
  %1017 = load float, ptr %12, align 8, !tbaa !9
  br label %1018

1018:                                             ; preds = %1016, %1014
  %.sink = phi ptr [ %903, %1016 ], [ %1015, %1014 ]
  %1019 = phi float [ %1017, %1016 ], [ %1007, %1014 ]
  %1020 = load float, ptr %.sink, align 4, !tbaa !12
  %1021 = load i64, ptr %4, align 8, !tbaa !5
  %.not9281229 = icmp slt i64 %1021, 1
  br i1 %.not9281229, label %.loopexit974, label %.lr.ph1232

.lr.ph1232:                                       ; preds = %1018
  %1022 = mul nsw i64 %.78901238, %20
  %1023 = fneg float %1020
  %min.iters.check2000 = icmp ult i64 %1021, 12
  br i1 %min.iters.check2000, label %scalar.ph1999.preheader, label %vector.scevcheck1961

vector.scevcheck1961:                             ; preds = %.lr.ph1232
  %1024 = add nsw i64 %1021, -1
  %mul.result1964 = shl i64 %1024, 3
  %1025 = getelementptr i8, ptr %scevgep1962, i64 %mul.result1964
  %1026 = icmp ult ptr %1025, %scevgep1962
  %mul.result1970 = shl i64 %1024, 3
  %mul.overflow1971 = icmp ugt i64 %1024, 2305843009213693951
  %1027 = getelementptr i8, ptr %scevgep1968, i64 %mul.result1970
  %1028 = icmp ult ptr %1027, %scevgep1968
  %1029 = or i1 %1028, %mul.overflow1971
  %mul.result1974 = shl i64 %1024, 3
  %1030 = getelementptr i8, ptr %scevgep1972, i64 %mul.result1974
  %1031 = icmp ult ptr %1030, %scevgep1972
  %mul.result1978 = shl i64 %1024, 3
  %1032 = getelementptr i8, ptr %scevgep1976, i64 %mul.result1978
  %1033 = icmp ult ptr %1032, %scevgep1976
  %1034 = or i1 %1026, %1029
  %1035 = or i1 %1031, %1034
  %1036 = or i1 %1033, %1035
  br i1 %1036, label %scalar.ph1999.preheader, label %vector.memcheck1980

vector.memcheck1980:                              ; preds = %vector.scevcheck1961
  %1037 = shl i64 %1021, 3
  %scevgep1983 = getelementptr i8, ptr %gep2371, i64 %1037
  %scevgep1986 = getelementptr i8, ptr %scevgep1985, i64 %1037
  %scevgep1988 = getelementptr i8, ptr %scevgep1981, i64 %1037
  %scevgep1990 = getelementptr i8, ptr %scevgep1984, i64 %1037
  %bound01991 = icmp ult ptr %scevgep1981, %scevgep1986
  %bound11992 = icmp ult ptr %scevgep1984, %scevgep1983
  %found.conflict1993 = and i1 %bound01991, %bound11992
  %bound01994 = icmp ult ptr %scevgep1987, %scevgep1990
  %bound11995 = icmp ult ptr %scevgep1989, %scevgep1988
  %found.conflict1996 = and i1 %bound01994, %bound11995
  %conflict.rdx1997 = or i1 %found.conflict1993, %found.conflict1996
  br i1 %conflict.rdx1997, label %scalar.ph1999.preheader, label %vector.ph2001

vector.ph2001:                                    ; preds = %vector.memcheck1980
  %n.vec2003 = and i64 %1021, 4611686018427387900
  %ind.end2004 = or disjoint i64 %n.vec2003, 1
  %broadcast.splatinsert2012 = insertelement <4 x float> poison, float %1023, i64 0
  %broadcast.splat2013 = shufflevector <4 x float> %broadcast.splatinsert2012, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2014 = insertelement <4 x float> poison, float %1019, i64 0
  %broadcast.splat2015 = shufflevector <4 x float> %broadcast.splatinsert2014, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2016 = insertelement <4 x float> poison, float %1020, i64 0
  %broadcast.splat2017 = shufflevector <4 x float> %broadcast.splatinsert2016, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body2006

vector.body2006:                                  ; preds = %vector.body2006, %vector.ph2001
  %index2007 = phi i64 [ 0, %vector.ph2001 ], [ %index.next2022, %vector.body2006 ]
  %offset.idx2008 = or disjoint i64 %index2007, 1
  %1038 = getelementptr %struct.complex, ptr %22, i64 %offset.idx2008
  %1039 = getelementptr %struct.complex, ptr %1038, i64 %1001
  %wide.vec2009 = load <8 x float>, ptr %1039, align 4, !tbaa !13
  %strided.vec2010 = shufflevector <8 x float> %wide.vec2009, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2011 = shufflevector <8 x float> %wide.vec2009, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1040 = fmul <4 x float> %strided.vec2011, %broadcast.splat2013
  %1041 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2015, <4 x float> %strided.vec2010, <4 x float> %1040)
  %1042 = fmul <4 x float> %strided.vec2010, %broadcast.splat2017
  %1043 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2015, <4 x float> %strided.vec2011, <4 x float> %1042)
  %1044 = getelementptr %struct.complex, ptr %1038, i64 %1022
  %wide.vec2018 = load <8 x float>, ptr %1044, align 4, !tbaa !13
  %strided.vec2019 = shufflevector <8 x float> %wide.vec2018, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2020 = shufflevector <8 x float> %wide.vec2018, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1045 = fsub <4 x float> %strided.vec2019, %1041
  %1046 = fsub <4 x float> %strided.vec2020, %1043
  %interleaved.vec2021 = shufflevector <4 x float> %1045, <4 x float> %1046, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2021, ptr %1044, align 4, !tbaa !13
  %index.next2022 = add nuw i64 %index2007, 4
  %1047 = icmp eq i64 %index.next2022, %n.vec2003
  br i1 %1047, label %middle.block1998, label %vector.body2006, !llvm.loop !85

middle.block1998:                                 ; preds = %vector.body2006
  %cmp.n2023 = icmp eq i64 %1021, %n.vec2003
  %1048 = shufflevector <4 x float> %1041, <4 x float> %1043, <2 x i32> <i32 3, i32 7>
  %1049 = shufflevector <4 x float> %1045, <4 x float> %1046, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2023, label %..loopexit974_crit_edge, label %scalar.ph1999.preheader

scalar.ph1999.preheader:                          ; preds = %middle.block1998, %vector.memcheck1980, %vector.scevcheck1961, %.lr.ph1232
  %.141230.ph = phi i64 [ 1, %vector.memcheck1980 ], [ 1, %vector.scevcheck1961 ], [ 1, %.lr.ph1232 ], [ %ind.end2004, %middle.block1998 ]
  %xtraiter2282 = and i64 %1021, 1
  %lcmp.mod2283.not = icmp eq i64 %xtraiter2282, 0
  br i1 %lcmp.mod2283.not, label %scalar.ph1999.prol.loopexit, label %scalar.ph1999.prol

scalar.ph1999.prol:                               ; preds = %scalar.ph1999.preheader
  %1050 = getelementptr %struct.complex, ptr %22, i64 %.141230.ph
  %1051 = getelementptr %struct.complex, ptr %1050, i64 %1001
  %1052 = load <2 x float>, ptr %1051, align 4, !tbaa !13
  %1053 = insertelement <2 x float> poison, float %1020, i64 0
  %1054 = insertelement <2 x float> %1053, float %1023, i64 1
  %1055 = fmul <2 x float> %1052, %1054
  %1056 = shufflevector <2 x float> %1055, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1057 = insertelement <2 x float> poison, float %1019, i64 0
  %1058 = shufflevector <2 x float> %1057, <2 x float> poison, <2 x i32> zeroinitializer
  %1059 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1058, <2 x float> %1052, <2 x float> %1056)
  %1060 = getelementptr %struct.complex, ptr %1050, i64 %1022
  %1061 = load <2 x float>, ptr %1060, align 4, !tbaa !13
  %1062 = fsub <2 x float> %1061, %1059
  store <2 x float> %1062, ptr %1060, align 4, !tbaa !13
  %1063 = add nuw nsw i64 %.141230.ph, 1
  br label %scalar.ph1999.prol.loopexit

scalar.ph1999.prol.loopexit:                      ; preds = %scalar.ph1999.prol, %scalar.ph1999.preheader
  %.lcssa2218.unr = phi <2 x float> [ poison, %scalar.ph1999.preheader ], [ %1059, %scalar.ph1999.prol ]
  %.lcssa2217.unr = phi <2 x float> [ poison, %scalar.ph1999.preheader ], [ %1062, %scalar.ph1999.prol ]
  %.141230.unr = phi i64 [ %.141230.ph, %scalar.ph1999.preheader ], [ %1063, %scalar.ph1999.prol ]
  %1064 = icmp eq i64 %1021, %.141230.ph
  br i1 %1064, label %..loopexit974_crit_edge, label %scalar.ph1999.preheader.new

scalar.ph1999.preheader.new:                      ; preds = %scalar.ph1999.prol.loopexit
  %1065 = insertelement <2 x float> poison, float %1020, i64 0
  %1066 = insertelement <2 x float> %1065, float %1023, i64 1
  %1067 = insertelement <2 x float> poison, float %1019, i64 0
  %1068 = shufflevector <2 x float> %1067, <2 x float> poison, <2 x i32> zeroinitializer
  %1069 = insertelement <2 x float> poison, float %1020, i64 0
  %1070 = insertelement <2 x float> %1069, float %1023, i64 1
  %1071 = insertelement <2 x float> poison, float %1019, i64 0
  %1072 = shufflevector <2 x float> %1071, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1999

scalar.ph1999:                                    ; preds = %scalar.ph1999, %scalar.ph1999.preheader.new
  %.141230 = phi i64 [ %.141230.unr, %scalar.ph1999.preheader.new ], [ %1092, %scalar.ph1999 ]
  %1073 = getelementptr %struct.complex, ptr %22, i64 %.141230
  %1074 = getelementptr %struct.complex, ptr %1073, i64 %1001
  %1075 = load <2 x float>, ptr %1074, align 4, !tbaa !13
  %1076 = fmul <2 x float> %1075, %1066
  %1077 = shufflevector <2 x float> %1076, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1078 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1068, <2 x float> %1075, <2 x float> %1077)
  %1079 = getelementptr %struct.complex, ptr %1073, i64 %1022
  %1080 = load <2 x float>, ptr %1079, align 4, !tbaa !13
  %1081 = fsub <2 x float> %1080, %1078
  store <2 x float> %1081, ptr %1079, align 4, !tbaa !13
  %1082 = add nuw i64 %.141230, 1
  %1083 = getelementptr %struct.complex, ptr %22, i64 %1082
  %1084 = getelementptr %struct.complex, ptr %1083, i64 %1001
  %1085 = load <2 x float>, ptr %1084, align 4, !tbaa !13
  %1086 = fmul <2 x float> %1085, %1070
  %1087 = shufflevector <2 x float> %1086, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1088 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1072, <2 x float> %1085, <2 x float> %1087)
  %1089 = getelementptr %struct.complex, ptr %1083, i64 %1022
  %1090 = load <2 x float>, ptr %1089, align 4, !tbaa !13
  %1091 = fsub <2 x float> %1090, %1088
  store <2 x float> %1091, ptr %1089, align 4, !tbaa !13
  %1092 = add nuw i64 %.141230, 2
  %exitcond1385.not.1 = icmp eq i64 %1082, %1021
  br i1 %exitcond1385.not.1, label %..loopexit974_crit_edge, label %scalar.ph1999, !llvm.loop !86

..loopexit974_crit_edge:                          ; preds = %scalar.ph1999.prol.loopexit, %scalar.ph1999, %middle.block1998
  %1093 = phi <2 x float> [ %1048, %middle.block1998 ], [ %.lcssa2218.unr, %scalar.ph1999.prol.loopexit ], [ %1088, %scalar.ph1999 ]
  %1094 = phi <2 x float> [ %1049, %middle.block1998 ], [ %.lcssa2217.unr, %scalar.ph1999.prol.loopexit ], [ %1091, %scalar.ph1999 ]
  store <2 x float> %1093, ptr %13, align 8, !tbaa !13
  store <2 x float> %1094, ptr %12, align 8, !tbaa !13
  br label %.loopexit974

.loopexit974:                                     ; preds = %1018, %..loopexit974_crit_edge, %1009
  %1095 = add nuw nsw i64 %.78901238, 1
  %.not925.not = icmp slt i64 %1095, %.81253
  %indvar.next1967 = add i64 %indvar1966, 1
  br i1 %.not925.not, label %1002, label %._crit_edge1242, !llvm.loop !87

._crit_edge1242:                                  ; preds = %.loopexit974, %.loopexit976
  %1096 = load float, ptr %6, align 4, !tbaa !9
  %1097 = fcmp une float %1096, 1.000000e+00
  br i1 %1097, label %1101, label %1098

1098:                                             ; preds = %._crit_edge1242
  %1099 = load float, ptr %904, align 4, !tbaa !12
  %1100 = fcmp une float %1099, 0.000000e+00
  br i1 %1100, label %1101, label %.loopexit975

1101:                                             ; preds = %1098, %._crit_edge1242
  %1102 = load i64, ptr %4, align 8, !tbaa !5
  %.not9261245 = icmp slt i64 %1102, 1
  br i1 %.not9261245, label %.loopexit975, label %.lr.ph1248

.lr.ph1248:                                       ; preds = %1101
  %1103 = mul nsw i64 %.81253, %20
  %invariant.gep1249 = getelementptr %struct.complex, ptr %22, i64 %1103
  %min.iters.check1942 = icmp ult i64 %1102, 8
  br i1 %min.iters.check1942, label %scalar.ph1941.preheader, label %vector.scevcheck1915

vector.scevcheck1915:                             ; preds = %.lr.ph1248
  %1104 = add nsw i64 %1102, -1
  %mul.result1920 = shl i64 %1104, 3
  %1105 = getelementptr i8, ptr %scevgep1918, i64 %mul.result1920
  %1106 = icmp ult ptr %1105, %scevgep1918
  %mul.result1924 = shl i64 %1104, 3
  %mul.overflow1925 = icmp ugt i64 %1104, 2305843009213693951
  %1107 = getelementptr i8, ptr %scevgep1922, i64 %mul.result1924
  %1108 = icmp ult ptr %1107, %scevgep1922
  %1109 = or i1 %1108, %mul.overflow1925
  %1110 = or i1 %1106, %1109
  br i1 %1110, label %scalar.ph1941.preheader, label %vector.memcheck1926

vector.memcheck1926:                              ; preds = %vector.scevcheck1915
  %1111 = shl i64 %1102, 3
  %scevgep1929 = getelementptr i8, ptr %scevgep1928, i64 %1111
  %scevgep1931 = getelementptr i8, ptr %scevgep1927, i64 %1111
  %bound01933 = icmp ult ptr %scevgep1927, %904
  %bound11934 = icmp ugt ptr %scevgep1929, %6
  %found.conflict1935 = and i1 %bound01933, %bound11934
  %bound01936 = icmp ult ptr %scevgep1930, %scevgep1932
  %bound11937 = icmp ult ptr %904, %scevgep1931
  %found.conflict1938 = and i1 %bound01936, %bound11937
  %conflict.rdx1939 = or i1 %found.conflict1935, %found.conflict1938
  br i1 %conflict.rdx1939, label %scalar.ph1941.preheader, label %vector.ph1943

vector.ph1943:                                    ; preds = %vector.memcheck1926
  %n.vec1945 = and i64 %1102, 4611686018427387900
  %ind.end1946 = or disjoint i64 %n.vec1945, 1
  br label %vector.body1948

vector.body1948:                                  ; preds = %vector.body1948, %vector.ph1943
  %index1949 = phi i64 [ 0, %vector.ph1943 ], [ %index.next1959, %vector.body1948 ]
  %offset.idx1950 = or disjoint i64 %index1949, 1
  %1112 = load float, ptr %6, align 4, !tbaa !9, !alias.scope !88
  %broadcast.splatinsert1956 = insertelement <4 x float> poison, float %1112, i64 0
  %broadcast.splat1957 = shufflevector <4 x float> %broadcast.splatinsert1956, <4 x float> poison, <4 x i32> zeroinitializer
  %1113 = getelementptr %struct.complex, ptr %invariant.gep1249, i64 %offset.idx1950
  %wide.vec1951 = load <8 x float>, ptr %1113, align 4, !tbaa !13
  %strided.vec1952 = shufflevector <8 x float> %wide.vec1951, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1953 = shufflevector <8 x float> %wide.vec1951, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1114 = load float, ptr %904, align 4, !tbaa !12, !alias.scope !91
  %broadcast.splatinsert1954 = insertelement <4 x float> poison, float %1114, i64 0
  %broadcast.splat1955 = shufflevector <4 x float> %broadcast.splatinsert1954, <4 x float> poison, <4 x i32> zeroinitializer
  %1115 = fneg <4 x float> %broadcast.splat1955
  %1116 = fmul <4 x float> %strided.vec1953, %1115
  %1117 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1957, <4 x float> %strided.vec1952, <4 x float> %1116)
  %1118 = fmul <4 x float> %strided.vec1952, %broadcast.splat1955
  %1119 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1957, <4 x float> %strided.vec1953, <4 x float> %1118)
  %interleaved.vec1958 = shufflevector <4 x float> %1117, <4 x float> %1119, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1958, ptr %1113, align 4, !tbaa !13
  %index.next1959 = add nuw i64 %index1949, 4
  %1120 = icmp eq i64 %index.next1959, %n.vec1945
  br i1 %1120, label %middle.block1940, label %vector.body1948, !llvm.loop !93

middle.block1940:                                 ; preds = %vector.body1948
  %cmp.n1960 = icmp eq i64 %1102, %n.vec1945
  %1121 = shufflevector <4 x float> %1117, <4 x float> %1119, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1960, label %..loopexit975_crit_edge, label %scalar.ph1941.preheader

scalar.ph1941.preheader:                          ; preds = %middle.block1940, %vector.memcheck1926, %vector.scevcheck1915, %.lr.ph1248
  %.151246.ph = phi i64 [ 1, %vector.memcheck1926 ], [ 1, %vector.scevcheck1915 ], [ 1, %.lr.ph1248 ], [ %ind.end1946, %middle.block1940 ]
  br label %scalar.ph1941

scalar.ph1941:                                    ; preds = %scalar.ph1941.preheader, %scalar.ph1941
  %.151246 = phi i64 [ %1133, %scalar.ph1941 ], [ %.151246.ph, %scalar.ph1941.preheader ]
  %1122 = load float, ptr %6, align 4, !tbaa !9
  %gep1250 = getelementptr %struct.complex, ptr %invariant.gep1249, i64 %.151246
  %1123 = load float, ptr %904, align 4, !tbaa !12
  %1124 = fneg float %1123
  %1125 = load <2 x float>, ptr %gep1250, align 4, !tbaa !13
  %1126 = insertelement <2 x float> poison, float %1123, i64 0
  %1127 = insertelement <2 x float> %1126, float %1124, i64 1
  %1128 = fmul <2 x float> %1125, %1127
  %1129 = shufflevector <2 x float> %1128, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1130 = insertelement <2 x float> poison, float %1122, i64 0
  %1131 = shufflevector <2 x float> %1130, <2 x float> poison, <2 x i32> zeroinitializer
  %1132 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1131, <2 x float> %1125, <2 x float> %1129)
  store <2 x float> %1132, ptr %gep1250, align 4, !tbaa !13
  %1133 = add nuw i64 %.151246, 1
  %exitcond1386.not = icmp eq i64 %.151246, %1102
  br i1 %exitcond1386.not, label %..loopexit975_crit_edge, label %scalar.ph1941, !llvm.loop !94

..loopexit975_crit_edge:                          ; preds = %scalar.ph1941, %middle.block1940
  %1134 = phi <2 x float> [ %1121, %middle.block1940 ], [ %1132, %scalar.ph1941 ]
  store <2 x float> %1134, ptr %12, align 8, !tbaa !13
  br label %.loopexit975

.loopexit975:                                     ; preds = %1101, %..loopexit975_crit_edge, %1098
  %1135 = add nsw i64 %.81253, -1
  %indvar.next1917 = add i64 %indvar1916, 1
  br i1 %.not925.not1237, label %940, label %.loopexit, !llvm.loop !95

1136:                                             ; preds = %899
  %.not9141289 = icmp slt i64 %88, 1
  br i1 %.not9141289, label %.loopexit, label %.lr.ph1293

.lr.ph1293:                                       ; preds = %1136
  %.not915 = icmp eq i64 %25, 0
  %.not916 = icmp eq i64 %24, 0
  %1137 = add i64 %17, 1
  %1138 = getelementptr inbounds i8, ptr %12, i64 4
  %1139 = getelementptr i8, ptr %6, i64 4
  %1140 = shl i64 %20, 3
  %1141 = shl i64 %20, 3
  %scevgep2073 = getelementptr i8, ptr %6, i64 8
  %1142 = shl i64 %20, 3
  %1143 = shl i64 %20, 3
  %1144 = or disjoint i64 %1142, 4
  %1145 = shl i64 %20, 3
  %1146 = shl i64 %20, 3
  %1147 = or disjoint i64 %1143, 4
  %1148 = shl i64 %20, 3
  %invariant.gep2372 = getelementptr i8, ptr %9, i64 -4
  %invariant.gep2374 = getelementptr i8, ptr %9, i64 -4
  %1149 = getelementptr i8, ptr %9, i64 %1143
  %1150 = getelementptr i8, ptr %9, i64 %1143
  %1151 = getelementptr i8, ptr %1150, i64 -4
  %1152 = getelementptr i8, ptr %9, i64 %1147
  %1153 = getelementptr i8, ptr %9, i64 %1142
  %1154 = getelementptr i8, ptr %9, i64 %1144
  br label %1155

1155:                                             ; preds = %.lr.ph1293, %.loopexit971
  %indvar2057 = phi i64 [ 0, %.lr.ph1293 ], [ %indvar.next2058, %.loopexit971 ]
  %.91290 = phi i64 [ 1, %.lr.ph1293 ], [ %1221, %.loopexit971 ]
  %1156 = mul i64 %1148, %indvar2057
  %scevgep2166 = getelementptr i8, ptr %9, i64 %1156
  %1157 = or disjoint i64 %1156, 4
  %scevgep2170 = getelementptr i8, ptr %9, i64 %1157
  %1158 = mul i64 %1145, %indvar2057
  %scevgep2125 = getelementptr i8, ptr %9, i64 %1158
  %gep2373 = getelementptr i8, ptr %invariant.gep2372, i64 %1158
  %1159 = or disjoint i64 %1158, 4
  %scevgep2130 = getelementptr i8, ptr %9, i64 %1159
  %1160 = mul i64 %1142, %indvar2057
  %scevgep2103 = getelementptr i8, ptr %9, i64 %1160
  %1161 = or disjoint i64 %1160, 4
  %scevgep2113 = getelementptr i8, ptr %9, i64 %1161
  %1162 = mul i64 %1141, %indvar2057
  %scevgep2068 = getelementptr i8, ptr %9, i64 %1162
  %gep2375 = getelementptr i8, ptr %invariant.gep2374, i64 %1162
  %1163 = or disjoint i64 %1162, 4
  %scevgep2071 = getelementptr i8, ptr %9, i64 %1163
  %1164 = mul i64 %1140, %indvar2057
  %scevgep2059 = getelementptr i8, ptr %9, i64 %1164
  %1165 = or disjoint i64 %1164, 4
  %scevgep2063 = getelementptr i8, ptr %9, i64 %1165
  br i1 %.not915, label %.loopexit972, label %1166

1166:                                             ; preds = %1155
  %1167 = mul i64 %.91290, %1137
  %1168 = getelementptr inbounds %struct.complex, ptr %19, i64 %1167
  br i1 %.not916, label %1170, label %1169

1169:                                             ; preds = %1166
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef %1168) #5
  br label %1171

1170:                                             ; preds = %1166
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %1168) #5
  call void @c_div(ptr noundef nonnull %12, ptr noundef nonnull @c_b1, ptr noundef nonnull %13) #5
  br label %1171

1171:                                             ; preds = %1170, %1169
  %1172 = load float, ptr %12, align 8, !tbaa !9
  %1173 = load float, ptr %1138, align 4, !tbaa !12
  %1174 = load i64, ptr %4, align 8, !tbaa !5
  %.not9171257 = icmp slt i64 %1174, 1
  br i1 %.not9171257, label %.loopexit972, label %.lr.ph1260

.lr.ph1260:                                       ; preds = %1171
  %1175 = mul nsw i64 %.91290, %20
  %invariant.gep1261 = getelementptr %struct.complex, ptr %22, i64 %1175
  %1176 = fneg float %1173
  %min.iters.check2176 = icmp ult i64 %1174, 8
  br i1 %min.iters.check2176, label %scalar.ph2175.preheader, label %vector.scevcheck2165

vector.scevcheck2165:                             ; preds = %.lr.ph1260
  %1177 = add nsw i64 %1174, -1
  %mul.result2168 = shl i64 %1177, 3
  %1178 = getelementptr i8, ptr %scevgep2166, i64 %mul.result2168
  %1179 = icmp ult ptr %1178, %scevgep2166
  %mul.result2172 = shl i64 %1177, 3
  %mul.overflow2173 = icmp ugt i64 %1177, 2305843009213693951
  %1180 = getelementptr i8, ptr %scevgep2170, i64 %mul.result2172
  %1181 = icmp ult ptr %1180, %scevgep2170
  %1182 = or i1 %1181, %mul.overflow2173
  %1183 = or i1 %1179, %1182
  br i1 %1183, label %scalar.ph2175.preheader, label %vector.ph2177

vector.ph2177:                                    ; preds = %vector.scevcheck2165
  %n.vec2179 = and i64 %1174, 4611686018427387900
  %ind.end2180 = or disjoint i64 %n.vec2179, 1
  %broadcast.splatinsert2188 = insertelement <4 x float> poison, float %1176, i64 0
  %broadcast.splat2189 = shufflevector <4 x float> %broadcast.splatinsert2188, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2190 = insertelement <4 x float> poison, float %1172, i64 0
  %broadcast.splat2191 = shufflevector <4 x float> %broadcast.splatinsert2190, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2192 = insertelement <4 x float> poison, float %1173, i64 0
  %broadcast.splat2193 = shufflevector <4 x float> %broadcast.splatinsert2192, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body2182

vector.body2182:                                  ; preds = %vector.body2182, %vector.ph2177
  %index2183 = phi i64 [ 0, %vector.ph2177 ], [ %index.next2195, %vector.body2182 ]
  %offset.idx2184 = or disjoint i64 %index2183, 1
  %1184 = getelementptr %struct.complex, ptr %invariant.gep1261, i64 %offset.idx2184
  %wide.vec2185 = load <8 x float>, ptr %1184, align 4, !tbaa !13
  %strided.vec2186 = shufflevector <8 x float> %wide.vec2185, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2187 = shufflevector <8 x float> %wide.vec2185, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1185 = fmul <4 x float> %strided.vec2187, %broadcast.splat2189
  %1186 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2191, <4 x float> %strided.vec2186, <4 x float> %1185)
  %1187 = fmul <4 x float> %strided.vec2186, %broadcast.splat2193
  %1188 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2191, <4 x float> %strided.vec2187, <4 x float> %1187)
  %interleaved.vec2194 = shufflevector <4 x float> %1186, <4 x float> %1188, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2194, ptr %1184, align 4, !tbaa !13
  %index.next2195 = add nuw i64 %index2183, 4
  %1189 = icmp eq i64 %index.next2195, %n.vec2179
  br i1 %1189, label %middle.block2174, label %vector.body2182, !llvm.loop !96

middle.block2174:                                 ; preds = %vector.body2182
  %cmp.n2196 = icmp eq i64 %1174, %n.vec2179
  %1190 = shufflevector <4 x float> %1186, <4 x float> %1188, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2196, label %..loopexit972_crit_edge, label %scalar.ph2175.preheader

scalar.ph2175.preheader:                          ; preds = %middle.block2174, %vector.scevcheck2165, %.lr.ph1260
  %.161258.ph = phi i64 [ 1, %vector.scevcheck2165 ], [ 1, %.lr.ph1260 ], [ %ind.end2180, %middle.block2174 ]
  %xtraiter2284 = and i64 %1174, 1
  %lcmp.mod2285.not = icmp eq i64 %xtraiter2284, 0
  br i1 %lcmp.mod2285.not, label %scalar.ph2175.prol.loopexit, label %scalar.ph2175.prol

scalar.ph2175.prol:                               ; preds = %scalar.ph2175.preheader
  %gep1262.prol = getelementptr %struct.complex, ptr %invariant.gep1261, i64 %.161258.ph
  %1191 = load <2 x float>, ptr %gep1262.prol, align 4, !tbaa !13
  %1192 = insertelement <2 x float> poison, float %1173, i64 0
  %1193 = insertelement <2 x float> %1192, float %1176, i64 1
  %1194 = fmul <2 x float> %1191, %1193
  %1195 = shufflevector <2 x float> %1194, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1196 = insertelement <2 x float> poison, float %1172, i64 0
  %1197 = shufflevector <2 x float> %1196, <2 x float> poison, <2 x i32> zeroinitializer
  %1198 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1197, <2 x float> %1191, <2 x float> %1195)
  store <2 x float> %1198, ptr %gep1262.prol, align 4, !tbaa !13
  %1199 = add nuw nsw i64 %.161258.ph, 1
  br label %scalar.ph2175.prol.loopexit

scalar.ph2175.prol.loopexit:                      ; preds = %scalar.ph2175.prol, %scalar.ph2175.preheader
  %.lcssa2199.unr = phi <2 x float> [ poison, %scalar.ph2175.preheader ], [ %1198, %scalar.ph2175.prol ]
  %.161258.unr = phi i64 [ %.161258.ph, %scalar.ph2175.preheader ], [ %1199, %scalar.ph2175.prol ]
  %1200 = icmp eq i64 %1174, %.161258.ph
  br i1 %1200, label %..loopexit972_crit_edge, label %scalar.ph2175.preheader.new

scalar.ph2175.preheader.new:                      ; preds = %scalar.ph2175.prol.loopexit
  %1201 = insertelement <2 x float> poison, float %1173, i64 0
  %1202 = insertelement <2 x float> %1201, float %1176, i64 1
  %1203 = insertelement <2 x float> poison, float %1172, i64 0
  %1204 = shufflevector <2 x float> %1203, <2 x float> poison, <2 x i32> zeroinitializer
  %1205 = insertelement <2 x float> poison, float %1173, i64 0
  %1206 = insertelement <2 x float> %1205, float %1176, i64 1
  %1207 = insertelement <2 x float> poison, float %1172, i64 0
  %1208 = shufflevector <2 x float> %1207, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2175

scalar.ph2175:                                    ; preds = %scalar.ph2175, %scalar.ph2175.preheader.new
  %.161258 = phi i64 [ %.161258.unr, %scalar.ph2175.preheader.new ], [ %1218, %scalar.ph2175 ]
  %gep1262 = getelementptr %struct.complex, ptr %invariant.gep1261, i64 %.161258
  %1209 = load <2 x float>, ptr %gep1262, align 4, !tbaa !13
  %1210 = fmul <2 x float> %1209, %1202
  %1211 = shufflevector <2 x float> %1210, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1212 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1204, <2 x float> %1209, <2 x float> %1211)
  store <2 x float> %1212, ptr %gep1262, align 4, !tbaa !13
  %1213 = add nuw i64 %.161258, 1
  %gep1262.1 = getelementptr %struct.complex, ptr %invariant.gep1261, i64 %1213
  %1214 = load <2 x float>, ptr %gep1262.1, align 4, !tbaa !13
  %1215 = fmul <2 x float> %1214, %1206
  %1216 = shufflevector <2 x float> %1215, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1217 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1208, <2 x float> %1214, <2 x float> %1216)
  store <2 x float> %1217, ptr %gep1262.1, align 4, !tbaa !13
  %1218 = add nuw i64 %.161258, 2
  %exitcond1387.not.1 = icmp eq i64 %1213, %1174
  br i1 %exitcond1387.not.1, label %..loopexit972_crit_edge, label %scalar.ph2175, !llvm.loop !97

..loopexit972_crit_edge:                          ; preds = %scalar.ph2175.prol.loopexit, %scalar.ph2175, %middle.block2174
  %1219 = phi <2 x float> [ %1190, %middle.block2174 ], [ %.lcssa2199.unr, %scalar.ph2175.prol.loopexit ], [ %1217, %scalar.ph2175 ]
  store <2 x float> %1219, ptr %12, align 8, !tbaa !13
  br label %.loopexit972

.loopexit972:                                     ; preds = %1171, %..loopexit972_crit_edge, %1155
  %1220 = load i64, ptr %5, align 8, !tbaa !5
  %1221 = add nuw i64 %.91290, 1
  %.not9181273.not = icmp slt i64 %.91290, %1220
  br i1 %.not9181273.not, label %.lr.ph1277, label %._crit_edge1278

.lr.ph1277:                                       ; preds = %.loopexit972
  %1222 = mul nsw i64 %.91290, %17
  %invariant.gep1279 = getelementptr %struct.complex, ptr %19, i64 %1222
  %1223 = mul nsw i64 %.91290, %20
  %1224 = getelementptr i8, ptr %1149, i64 %1158
  %1225 = getelementptr i8, ptr %1151, i64 %1158
  %1226 = getelementptr i8, ptr %1152, i64 %1158
  %1227 = getelementptr i8, ptr %1153, i64 %1160
  %1228 = getelementptr i8, ptr %1154, i64 %1160
  br label %1229

1229:                                             ; preds = %.lr.ph1277, %.loopexit970
  %indvar2107 = phi i64 [ 0, %.lr.ph1277 ], [ %indvar.next2108, %.loopexit970 ]
  %.88911274 = phi i64 [ %1221, %.lr.ph1277 ], [ %1320, %.loopexit970 ]
  %1230 = mul i64 %1146, %indvar2107
  %scevgep2122 = getelementptr i8, ptr %1224, i64 %1230
  %scevgep2123 = getelementptr i8, ptr %1225, i64 %1230
  %scevgep2128 = getelementptr i8, ptr %1226, i64 %1230
  %1231 = mul i64 %1143, %indvar2107
  %scevgep2109 = getelementptr i8, ptr %1227, i64 %1231
  %scevgep2117 = getelementptr i8, ptr %1228, i64 %1231
  %gep1280 = getelementptr %struct.complex, ptr %invariant.gep1279, i64 %.88911274
  %1232 = load float, ptr %gep1280, align 4, !tbaa !9
  %1233 = fcmp une float %1232, 0.000000e+00
  br i1 %1233, label %1238, label %1234

1234:                                             ; preds = %1229
  %1235 = getelementptr inbounds i8, ptr %gep1280, i64 4
  %1236 = load float, ptr %1235, align 4, !tbaa !12
  %1237 = fcmp une float %1236, 0.000000e+00
  br i1 %1237, label %1238, label %.loopexit970

1238:                                             ; preds = %1234, %1229
  br i1 %.not916, label %1241, label %1239

1239:                                             ; preds = %1238
  %1240 = getelementptr inbounds i8, ptr %gep1280, i64 4
  br label %1243

1241:                                             ; preds = %1238
  call void @r_cnjg(ptr noundef nonnull %12, ptr noundef nonnull %gep1280) #5
  %1242 = load float, ptr %12, align 8, !tbaa !9
  br label %1243

1243:                                             ; preds = %1241, %1239
  %.sink1481 = phi ptr [ %1138, %1241 ], [ %1240, %1239 ]
  %1244 = phi float [ %1242, %1241 ], [ %1232, %1239 ]
  %1245 = load float, ptr %.sink1481, align 4, !tbaa !12
  %1246 = load i64, ptr %4, align 8, !tbaa !5
  %.not9211265 = icmp slt i64 %1246, 1
  br i1 %.not9211265, label %.loopexit970, label %.lr.ph1268

.lr.ph1268:                                       ; preds = %1243
  %1247 = mul nsw i64 %.88911274, %20
  %1248 = fneg float %1245
  %min.iters.check2141 = icmp ult i64 %1246, 12
  br i1 %min.iters.check2141, label %scalar.ph2140.preheader, label %vector.scevcheck2102

vector.scevcheck2102:                             ; preds = %.lr.ph1268
  %1249 = add nsw i64 %1246, -1
  %mul.result2105 = shl i64 %1249, 3
  %1250 = getelementptr i8, ptr %scevgep2103, i64 %mul.result2105
  %1251 = icmp ult ptr %1250, %scevgep2103
  %mul.result2111 = shl i64 %1249, 3
  %mul.overflow2112 = icmp ugt i64 %1249, 2305843009213693951
  %1252 = getelementptr i8, ptr %scevgep2109, i64 %mul.result2111
  %1253 = icmp ult ptr %1252, %scevgep2109
  %1254 = or i1 %1253, %mul.overflow2112
  %mul.result2115 = shl i64 %1249, 3
  %1255 = getelementptr i8, ptr %scevgep2113, i64 %mul.result2115
  %1256 = icmp ult ptr %1255, %scevgep2113
  %mul.result2119 = shl i64 %1249, 3
  %1257 = getelementptr i8, ptr %scevgep2117, i64 %mul.result2119
  %1258 = icmp ult ptr %1257, %scevgep2117
  %1259 = or i1 %1251, %1254
  %1260 = or i1 %1256, %1259
  %1261 = or i1 %1258, %1260
  br i1 %1261, label %scalar.ph2140.preheader, label %vector.memcheck2121

vector.memcheck2121:                              ; preds = %vector.scevcheck2102
  %1262 = shl i64 %1246, 3
  %scevgep2124 = getelementptr i8, ptr %scevgep2123, i64 %1262
  %scevgep2127 = getelementptr i8, ptr %gep2373, i64 %1262
  %scevgep2129 = getelementptr i8, ptr %scevgep2122, i64 %1262
  %scevgep2131 = getelementptr i8, ptr %scevgep2125, i64 %1262
  %bound02132 = icmp ult ptr %scevgep2122, %scevgep2127
  %bound12133 = icmp ult ptr %scevgep2125, %scevgep2124
  %found.conflict2134 = and i1 %bound02132, %bound12133
  %bound02135 = icmp ult ptr %scevgep2128, %scevgep2131
  %bound12136 = icmp ult ptr %scevgep2130, %scevgep2129
  %found.conflict2137 = and i1 %bound02135, %bound12136
  %conflict.rdx2138 = or i1 %found.conflict2134, %found.conflict2137
  br i1 %conflict.rdx2138, label %scalar.ph2140.preheader, label %vector.ph2142

vector.ph2142:                                    ; preds = %vector.memcheck2121
  %n.vec2144 = and i64 %1246, 4611686018427387900
  %ind.end2145 = or disjoint i64 %n.vec2144, 1
  %broadcast.splatinsert2153 = insertelement <4 x float> poison, float %1248, i64 0
  %broadcast.splat2154 = shufflevector <4 x float> %broadcast.splatinsert2153, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2155 = insertelement <4 x float> poison, float %1244, i64 0
  %broadcast.splat2156 = shufflevector <4 x float> %broadcast.splatinsert2155, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert2157 = insertelement <4 x float> poison, float %1245, i64 0
  %broadcast.splat2158 = shufflevector <4 x float> %broadcast.splatinsert2157, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body2147

vector.body2147:                                  ; preds = %vector.body2147, %vector.ph2142
  %index2148 = phi i64 [ 0, %vector.ph2142 ], [ %index.next2163, %vector.body2147 ]
  %offset.idx2149 = or disjoint i64 %index2148, 1
  %1263 = getelementptr %struct.complex, ptr %22, i64 %offset.idx2149
  %1264 = getelementptr %struct.complex, ptr %1263, i64 %1223
  %wide.vec2150 = load <8 x float>, ptr %1264, align 4, !tbaa !13
  %strided.vec2151 = shufflevector <8 x float> %wide.vec2150, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2152 = shufflevector <8 x float> %wide.vec2150, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1265 = fmul <4 x float> %strided.vec2152, %broadcast.splat2154
  %1266 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2156, <4 x float> %strided.vec2151, <4 x float> %1265)
  %1267 = fmul <4 x float> %strided.vec2151, %broadcast.splat2158
  %1268 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2156, <4 x float> %strided.vec2152, <4 x float> %1267)
  %1269 = getelementptr %struct.complex, ptr %1263, i64 %1247
  %wide.vec2159 = load <8 x float>, ptr %1269, align 4, !tbaa !13
  %strided.vec2160 = shufflevector <8 x float> %wide.vec2159, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2161 = shufflevector <8 x float> %wide.vec2159, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1270 = fsub <4 x float> %strided.vec2160, %1266
  %1271 = fsub <4 x float> %strided.vec2161, %1268
  %interleaved.vec2162 = shufflevector <4 x float> %1270, <4 x float> %1271, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2162, ptr %1269, align 4, !tbaa !13
  %index.next2163 = add nuw i64 %index2148, 4
  %1272 = icmp eq i64 %index.next2163, %n.vec2144
  br i1 %1272, label %middle.block2139, label %vector.body2147, !llvm.loop !98

middle.block2139:                                 ; preds = %vector.body2147
  %cmp.n2164 = icmp eq i64 %1246, %n.vec2144
  %1273 = shufflevector <4 x float> %1266, <4 x float> %1268, <2 x i32> <i32 3, i32 7>
  %1274 = shufflevector <4 x float> %1270, <4 x float> %1271, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2164, label %..loopexit970_crit_edge, label %scalar.ph2140.preheader

scalar.ph2140.preheader:                          ; preds = %middle.block2139, %vector.memcheck2121, %vector.scevcheck2102, %.lr.ph1268
  %.171266.ph = phi i64 [ 1, %vector.memcheck2121 ], [ 1, %vector.scevcheck2102 ], [ 1, %.lr.ph1268 ], [ %ind.end2145, %middle.block2139 ]
  %xtraiter2286 = and i64 %1246, 1
  %lcmp.mod2287.not = icmp eq i64 %xtraiter2286, 0
  br i1 %lcmp.mod2287.not, label %scalar.ph2140.prol.loopexit, label %scalar.ph2140.prol

scalar.ph2140.prol:                               ; preds = %scalar.ph2140.preheader
  %1275 = getelementptr %struct.complex, ptr %22, i64 %.171266.ph
  %1276 = getelementptr %struct.complex, ptr %1275, i64 %1223
  %1277 = load <2 x float>, ptr %1276, align 4, !tbaa !13
  %1278 = insertelement <2 x float> poison, float %1245, i64 0
  %1279 = insertelement <2 x float> %1278, float %1248, i64 1
  %1280 = fmul <2 x float> %1277, %1279
  %1281 = shufflevector <2 x float> %1280, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1282 = insertelement <2 x float> poison, float %1244, i64 0
  %1283 = shufflevector <2 x float> %1282, <2 x float> poison, <2 x i32> zeroinitializer
  %1284 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1283, <2 x float> %1277, <2 x float> %1281)
  %1285 = getelementptr %struct.complex, ptr %1275, i64 %1247
  %1286 = load <2 x float>, ptr %1285, align 4, !tbaa !13
  %1287 = fsub <2 x float> %1286, %1284
  store <2 x float> %1287, ptr %1285, align 4, !tbaa !13
  %1288 = add nuw nsw i64 %.171266.ph, 1
  br label %scalar.ph2140.prol.loopexit

scalar.ph2140.prol.loopexit:                      ; preds = %scalar.ph2140.prol, %scalar.ph2140.preheader
  %.lcssa2205.unr = phi <2 x float> [ poison, %scalar.ph2140.preheader ], [ %1284, %scalar.ph2140.prol ]
  %.lcssa2204.unr = phi <2 x float> [ poison, %scalar.ph2140.preheader ], [ %1287, %scalar.ph2140.prol ]
  %.171266.unr = phi i64 [ %.171266.ph, %scalar.ph2140.preheader ], [ %1288, %scalar.ph2140.prol ]
  %1289 = icmp eq i64 %1246, %.171266.ph
  br i1 %1289, label %..loopexit970_crit_edge, label %scalar.ph2140.preheader.new

scalar.ph2140.preheader.new:                      ; preds = %scalar.ph2140.prol.loopexit
  %1290 = insertelement <2 x float> poison, float %1245, i64 0
  %1291 = insertelement <2 x float> %1290, float %1248, i64 1
  %1292 = insertelement <2 x float> poison, float %1244, i64 0
  %1293 = shufflevector <2 x float> %1292, <2 x float> poison, <2 x i32> zeroinitializer
  %1294 = insertelement <2 x float> poison, float %1245, i64 0
  %1295 = insertelement <2 x float> %1294, float %1248, i64 1
  %1296 = insertelement <2 x float> poison, float %1244, i64 0
  %1297 = shufflevector <2 x float> %1296, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph2140

scalar.ph2140:                                    ; preds = %scalar.ph2140, %scalar.ph2140.preheader.new
  %.171266 = phi i64 [ %.171266.unr, %scalar.ph2140.preheader.new ], [ %1317, %scalar.ph2140 ]
  %1298 = getelementptr %struct.complex, ptr %22, i64 %.171266
  %1299 = getelementptr %struct.complex, ptr %1298, i64 %1223
  %1300 = load <2 x float>, ptr %1299, align 4, !tbaa !13
  %1301 = fmul <2 x float> %1300, %1291
  %1302 = shufflevector <2 x float> %1301, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1303 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1293, <2 x float> %1300, <2 x float> %1302)
  %1304 = getelementptr %struct.complex, ptr %1298, i64 %1247
  %1305 = load <2 x float>, ptr %1304, align 4, !tbaa !13
  %1306 = fsub <2 x float> %1305, %1303
  store <2 x float> %1306, ptr %1304, align 4, !tbaa !13
  %1307 = add nuw i64 %.171266, 1
  %1308 = getelementptr %struct.complex, ptr %22, i64 %1307
  %1309 = getelementptr %struct.complex, ptr %1308, i64 %1223
  %1310 = load <2 x float>, ptr %1309, align 4, !tbaa !13
  %1311 = fmul <2 x float> %1310, %1295
  %1312 = shufflevector <2 x float> %1311, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1313 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1297, <2 x float> %1310, <2 x float> %1312)
  %1314 = getelementptr %struct.complex, ptr %1308, i64 %1247
  %1315 = load <2 x float>, ptr %1314, align 4, !tbaa !13
  %1316 = fsub <2 x float> %1315, %1313
  store <2 x float> %1316, ptr %1314, align 4, !tbaa !13
  %1317 = add nuw i64 %.171266, 2
  %exitcond1388.not.1 = icmp eq i64 %1307, %1246
  br i1 %exitcond1388.not.1, label %..loopexit970_crit_edge, label %scalar.ph2140, !llvm.loop !99

..loopexit970_crit_edge:                          ; preds = %scalar.ph2140.prol.loopexit, %scalar.ph2140, %middle.block2139
  %1318 = phi <2 x float> [ %1273, %middle.block2139 ], [ %.lcssa2205.unr, %scalar.ph2140.prol.loopexit ], [ %1313, %scalar.ph2140 ]
  %1319 = phi <2 x float> [ %1274, %middle.block2139 ], [ %.lcssa2204.unr, %scalar.ph2140.prol.loopexit ], [ %1316, %scalar.ph2140 ]
  store <2 x float> %1318, ptr %13, align 8, !tbaa !13
  store <2 x float> %1319, ptr %12, align 8, !tbaa !13
  br label %.loopexit970

.loopexit970:                                     ; preds = %1243, %..loopexit970_crit_edge, %1234
  %1320 = add nuw nsw i64 %.88911274, 1
  %.not918.not = icmp slt i64 %.88911274, %1220
  %indvar.next2108 = add i64 %indvar2107, 1
  br i1 %.not918.not, label %1229, label %._crit_edge1278, !llvm.loop !100

._crit_edge1278:                                  ; preds = %.loopexit970, %.loopexit972
  %1321 = load float, ptr %6, align 4, !tbaa !9
  %1322 = fcmp une float %1321, 1.000000e+00
  br i1 %1322, label %1326, label %1323

1323:                                             ; preds = %._crit_edge1278
  %1324 = load float, ptr %1139, align 4, !tbaa !12
  %1325 = fcmp une float %1324, 0.000000e+00
  br i1 %1325, label %1326, label %.loopexit971

1326:                                             ; preds = %1323, %._crit_edge1278
  %1327 = load i64, ptr %4, align 8, !tbaa !5
  %.not9191281 = icmp slt i64 %1327, 1
  br i1 %.not9191281, label %.loopexit971, label %.lr.ph1284

.lr.ph1284:                                       ; preds = %1326
  %1328 = mul nsw i64 %.91290, %20
  %invariant.gep1285 = getelementptr %struct.complex, ptr %22, i64 %1328
  %min.iters.check2083 = icmp ult i64 %1327, 8
  br i1 %min.iters.check2083, label %scalar.ph2082.preheader, label %vector.scevcheck2056

vector.scevcheck2056:                             ; preds = %.lr.ph1284
  %1329 = add nsw i64 %1327, -1
  %mul.result2061 = shl i64 %1329, 3
  %1330 = getelementptr i8, ptr %scevgep2059, i64 %mul.result2061
  %1331 = icmp ult ptr %1330, %scevgep2059
  %mul.result2065 = shl i64 %1329, 3
  %mul.overflow2066 = icmp ugt i64 %1329, 2305843009213693951
  %1332 = getelementptr i8, ptr %scevgep2063, i64 %mul.result2065
  %1333 = icmp ult ptr %1332, %scevgep2063
  %1334 = or i1 %1333, %mul.overflow2066
  %1335 = or i1 %1331, %1334
  br i1 %1335, label %scalar.ph2082.preheader, label %vector.memcheck2067

vector.memcheck2067:                              ; preds = %vector.scevcheck2056
  %1336 = shl i64 %1327, 3
  %scevgep2070 = getelementptr i8, ptr %gep2375, i64 %1336
  %scevgep2072 = getelementptr i8, ptr %scevgep2068, i64 %1336
  %bound02074 = icmp ult ptr %scevgep2068, %1139
  %bound12075 = icmp ugt ptr %scevgep2070, %6
  %found.conflict2076 = and i1 %bound02074, %bound12075
  %bound02077 = icmp ult ptr %scevgep2071, %scevgep2073
  %bound12078 = icmp ult ptr %1139, %scevgep2072
  %found.conflict2079 = and i1 %bound02077, %bound12078
  %conflict.rdx2080 = or i1 %found.conflict2076, %found.conflict2079
  br i1 %conflict.rdx2080, label %scalar.ph2082.preheader, label %vector.ph2084

vector.ph2084:                                    ; preds = %vector.memcheck2067
  %n.vec2086 = and i64 %1327, 4611686018427387900
  %ind.end2087 = or disjoint i64 %n.vec2086, 1
  br label %vector.body2089

vector.body2089:                                  ; preds = %vector.body2089, %vector.ph2084
  %index2090 = phi i64 [ 0, %vector.ph2084 ], [ %index.next2100, %vector.body2089 ]
  %offset.idx2091 = or disjoint i64 %index2090, 1
  %1337 = load float, ptr %6, align 4, !tbaa !9, !alias.scope !101
  %broadcast.splatinsert2097 = insertelement <4 x float> poison, float %1337, i64 0
  %broadcast.splat2098 = shufflevector <4 x float> %broadcast.splatinsert2097, <4 x float> poison, <4 x i32> zeroinitializer
  %1338 = getelementptr %struct.complex, ptr %invariant.gep1285, i64 %offset.idx2091
  %wide.vec2092 = load <8 x float>, ptr %1338, align 4, !tbaa !13
  %strided.vec2093 = shufflevector <8 x float> %wide.vec2092, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec2094 = shufflevector <8 x float> %wide.vec2092, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1339 = load float, ptr %1139, align 4, !tbaa !12, !alias.scope !104
  %broadcast.splatinsert2095 = insertelement <4 x float> poison, float %1339, i64 0
  %broadcast.splat2096 = shufflevector <4 x float> %broadcast.splatinsert2095, <4 x float> poison, <4 x i32> zeroinitializer
  %1340 = fneg <4 x float> %broadcast.splat2096
  %1341 = fmul <4 x float> %strided.vec2094, %1340
  %1342 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2098, <4 x float> %strided.vec2093, <4 x float> %1341)
  %1343 = fmul <4 x float> %strided.vec2093, %broadcast.splat2096
  %1344 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat2098, <4 x float> %strided.vec2094, <4 x float> %1343)
  %interleaved.vec2099 = shufflevector <4 x float> %1342, <4 x float> %1344, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec2099, ptr %1338, align 4, !tbaa !13
  %index.next2100 = add nuw i64 %index2090, 4
  %1345 = icmp eq i64 %index.next2100, %n.vec2086
  br i1 %1345, label %middle.block2081, label %vector.body2089, !llvm.loop !106

middle.block2081:                                 ; preds = %vector.body2089
  %cmp.n2101 = icmp eq i64 %1327, %n.vec2086
  %1346 = shufflevector <4 x float> %1342, <4 x float> %1344, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n2101, label %..loopexit971_crit_edge, label %scalar.ph2082.preheader

scalar.ph2082.preheader:                          ; preds = %middle.block2081, %vector.memcheck2067, %vector.scevcheck2056, %.lr.ph1284
  %.181282.ph = phi i64 [ 1, %vector.memcheck2067 ], [ 1, %vector.scevcheck2056 ], [ 1, %.lr.ph1284 ], [ %ind.end2087, %middle.block2081 ]
  br label %scalar.ph2082

scalar.ph2082:                                    ; preds = %scalar.ph2082.preheader, %scalar.ph2082
  %.181282 = phi i64 [ %1358, %scalar.ph2082 ], [ %.181282.ph, %scalar.ph2082.preheader ]
  %1347 = load float, ptr %6, align 4, !tbaa !9
  %gep1286 = getelementptr %struct.complex, ptr %invariant.gep1285, i64 %.181282
  %1348 = load float, ptr %1139, align 4, !tbaa !12
  %1349 = fneg float %1348
  %1350 = load <2 x float>, ptr %gep1286, align 4, !tbaa !13
  %1351 = insertelement <2 x float> poison, float %1348, i64 0
  %1352 = insertelement <2 x float> %1351, float %1349, i64 1
  %1353 = fmul <2 x float> %1350, %1352
  %1354 = shufflevector <2 x float> %1353, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1355 = insertelement <2 x float> poison, float %1347, i64 0
  %1356 = shufflevector <2 x float> %1355, <2 x float> poison, <2 x i32> zeroinitializer
  %1357 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1356, <2 x float> %1350, <2 x float> %1354)
  store <2 x float> %1357, ptr %gep1286, align 4, !tbaa !13
  %1358 = add nuw i64 %.181282, 1
  %exitcond1389.not = icmp eq i64 %.181282, %1327
  br i1 %exitcond1389.not, label %..loopexit971_crit_edge, label %scalar.ph2082, !llvm.loop !107

..loopexit971_crit_edge:                          ; preds = %scalar.ph2082, %middle.block2081
  %1359 = phi <2 x float> [ %1346, %middle.block2081 ], [ %1357, %scalar.ph2082 ]
  store <2 x float> %1359, ptr %12, align 8, !tbaa !13
  br label %.loopexit971

.loopexit971:                                     ; preds = %1326, %..loopexit971_crit_edge, %1323
  %exitcond1390.not = icmp eq i64 %.91290, %88
  %indvar.next2058 = add i64 %indvar2057, 1
  br i1 %exitcond1390.not, label %.loopexit, label %1155, !llvm.loop !108

.loopexit.loopexit.unr-lcssa:                     ; preds = %.preheader, %.preheader.preheader
  %indvar.unr = phi i64 [ 0, %.preheader.preheader ], [ %indvar.next.7, %.preheader ]
  %lcmp.mod2289.not = icmp eq i64 %xtraiter2288, 0
  br i1 %lcmp.mod2289.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 ]
  %1360 = mul i64 %74, %indvar.epil
  %scevgep.epil = getelementptr i8, ptr %9, i64 %1360
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.epil, i8 0, i64 %75, 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, %xtraiter2288
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.preheader.epil, !llvm.loop !109

.loopexit:                                        ; preds = %._crit_edge, %._crit_edge1047, %._crit_edge1083, %._crit_edge1119, %.loopexit983, %.loopexit979, %.loopexit975, %.loopexit971, %.loopexit.loopexit.unr-lcssa, %.preheader.epil, %.lr.ph1125, %.lr.ph1089, %91, %180, %270, %379, %465, %657, %900, %1136, %64, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  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

declare void @c_div(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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) #3

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

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

; 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>) #3

; 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>) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nounwind }

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

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


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