; LLVM IR from o0o0o0o0o0o0o/image-processing-from-scratch :: ImageMatting/Eigen/blas/f2c (ctbmv)

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

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

62:                                               ; preds = %12
  %63 = load ptr, ptr %14, align 8, !tbaa !5
  %64 = call i32 @lsame_(ptr noundef %63, ptr noundef @.str.1, i32 noundef 1, i32 noundef 1)
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %67, label %66

66:                                               ; preds = %62
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %118

67:                                               ; preds = %62, %12
  %68 = load ptr, ptr %15, align 8, !tbaa !5
  %69 = call i32 @lsame_(ptr noundef %68, ptr noundef @.str.2, i32 noundef 1, i32 noundef 1)
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %80, label %71

71:                                               ; preds = %67
  %72 = load ptr, ptr %15, align 8, !tbaa !5
  %73 = call i32 @lsame_(ptr noundef %72, ptr noundef @.str.3, i32 noundef 1, i32 noundef 1)
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %80, label %75

75:                                               ; preds = %71
  %76 = load ptr, ptr %15, align 8, !tbaa !5
  %77 = call i32 @lsame_(ptr noundef %76, ptr noundef @.str.4, i32 noundef 1, i32 noundef 1)
  %78 = icmp ne i32 %77, 0
  br i1 %78, label %80, label %79

79:                                               ; preds = %75
  store i32 2, ptr %42, align 4, !tbaa !9
  br label %117

80:                                               ; preds = %75, %71, %67
  %81 = load ptr, ptr %16, align 8, !tbaa !5
  %82 = call i32 @lsame_(ptr noundef %81, ptr noundef @.str, i32 noundef 1, i32 noundef 1)
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %89, label %84

84:                                               ; preds = %80
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  %86 = call i32 @lsame_(ptr noundef %85, ptr noundef @.str.2, i32 noundef 1, i32 noundef 1)
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %89, label %88

88:                                               ; preds = %84
  store i32 3, ptr %42, align 4, !tbaa !9
  br label %116

89:                                               ; preds = %84, %80
  %90 = load ptr, ptr %17, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  %92 = icmp slt i32 %91, 0
  br i1 %92, label %93, label %94

93:                                               ; preds = %89
  store i32 4, ptr %42, align 4, !tbaa !9
  br label %115

94:                                               ; preds = %89
  %95 = load ptr, ptr %18, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp slt i32 %96, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %94
  store i32 5, ptr %42, align 4, !tbaa !9
  br label %114

99:                                               ; preds = %94
  %100 = load ptr, ptr %20, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = add nsw i32 %103, 1
  %105 = icmp slt i32 %101, %104
  br i1 %105, label %106, label %107

106:                                              ; preds = %99
  store i32 7, ptr %42, align 4, !tbaa !9
  br label %113

107:                                              ; preds = %99
  %108 = load ptr, ptr %22, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %112

111:                                              ; preds = %107
  store i32 9, ptr %42, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %111, %107
  br label %113

113:                                              ; preds = %112, %106
  br label %114

114:                                              ; preds = %113, %98
  br label %115

115:                                              ; preds = %114, %93
  br label %116

116:                                              ; preds = %115, %88
  br label %117

117:                                              ; preds = %116, %79
  br label %118

118:                                              ; preds = %117, %66
  %119 = load i32, ptr %42, align 4, !tbaa !9
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %123

121:                                              ; preds = %118
  %122 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %42, i32 noundef 6)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %2588

123:                                              ; preds = %118
  %124 = load ptr, ptr %17, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %128

127:                                              ; preds = %123
  store i32 0, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %2588

128:                                              ; preds = %123
  %129 = load ptr, ptr %15, align 8, !tbaa !5
  %130 = call i32 @lsame_(ptr noundef %129, ptr noundef @.str.3, i32 noundef 1, i32 noundef 1)
  store i32 %130, ptr %45, align 4, !tbaa !9
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  %132 = call i32 @lsame_(ptr noundef %131, ptr noundef @.str.2, i32 noundef 1, i32 noundef 1)
  store i32 %132, ptr %46, align 4, !tbaa !9
  %133 = load ptr, ptr %22, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = icmp sle i32 %134, 0
  br i1 %135, label %136, label %144

136:                                              ; preds = %128
  %137 = load ptr, ptr %17, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = sub nsw i32 %138, 1
  %140 = load ptr, ptr %22, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = mul nsw i32 %139, %141
  %143 = sub nsw i32 1, %142
  store i32 %143, ptr %41, align 4, !tbaa !9
  br label %150

144:                                              ; preds = %128
  %145 = load ptr, ptr %22, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 1
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %148, %144
  br label %150

150:                                              ; preds = %149, %136
  %151 = load ptr, ptr %15, align 8, !tbaa !5
  %152 = call i32 @lsame_(ptr noundef %151, ptr noundef @.str.2, i32 noundef 1, i32 noundef 1)
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %154, label %1157

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

158:                                              ; preds = %154
  %159 = load ptr, ptr %18, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = add nsw i32 %160, 1
  store i32 %161, ptr %44, align 4, !tbaa !9
  %162 = load ptr, ptr %22, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp eq i32 %163, 1
  br i1 %164, label %165, label %399

165:                                              ; preds = %158
  %166 = load ptr, ptr %17, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  store i32 %167, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %395, %165
  %169 = load i32, ptr %37, align 4, !tbaa !9
  %170 = load i32, ptr %28, align 4, !tbaa !9
  %171 = icmp sle i32 %169, %170
  br i1 %171, label %172, label %398

172:                                              ; preds = %168
  %173 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %173, ptr %29, align 4, !tbaa !9
  %174 = load ptr, ptr %21, align 8, !tbaa !5
  %175 = load i32, ptr %29, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds %struct.complex, ptr %174, i64 %176
  %178 = getelementptr inbounds %struct.complex, ptr %177, i32 0, i32 0
  %179 = load float, ptr %178, align 4, !tbaa !11
  %180 = fcmp une float %179, 0.000000e+00
  br i1 %180, label %189, label %181

181:                                              ; preds = %172
  %182 = load ptr, ptr %21, align 8, !tbaa !5
  %183 = load i32, ptr %29, align 4, !tbaa !9
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.complex, ptr %182, i64 %184
  %186 = getelementptr inbounds %struct.complex, ptr %185, i32 0, i32 1
  %187 = load float, ptr %186, align 4, !tbaa !14
  %188 = fcmp une float %187, 0.000000e+00
  br i1 %188, label %189, label %394

189:                                              ; preds = %181, %172
  %190 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %190, ptr %29, align 4, !tbaa !9
  %191 = load ptr, ptr %21, align 8, !tbaa !5
  %192 = load i32, ptr %29, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds %struct.complex, ptr %191, i64 %193
  %195 = getelementptr inbounds %struct.complex, ptr %194, i32 0, i32 0
  %196 = load float, ptr %195, align 4, !tbaa !11
  %197 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %196, ptr %197, align 4, !tbaa !11
  %198 = load ptr, ptr %21, align 8, !tbaa !5
  %199 = load i32, ptr %29, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds %struct.complex, ptr %198, i64 %200
  %202 = getelementptr inbounds %struct.complex, ptr %201, i32 0, i32 1
  %203 = load float, ptr %202, align 4, !tbaa !14
  %204 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %203, ptr %204, align 4, !tbaa !14
  %205 = load i32, ptr %44, align 4, !tbaa !9
  %206 = load i32, ptr %37, align 4, !tbaa !9
  %207 = sub nsw i32 %205, %206
  store i32 %207, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  %208 = load i32, ptr %37, align 4, !tbaa !9
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = sub nsw i32 %208, %210
  store i32 %211, ptr %30, align 4, !tbaa !9
  %212 = load i32, ptr %37, align 4, !tbaa !9
  %213 = sub nsw i32 %212, 1
  store i32 %213, ptr %31, align 4, !tbaa !9
  %214 = load i32, ptr %29, align 4, !tbaa !9
  %215 = load i32, ptr %30, align 4, !tbaa !9
  %216 = icmp sge i32 %214, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %189
  %218 = load i32, ptr %29, align 4, !tbaa !9
  br label %221

219:                                              ; preds = %189
  %220 = load i32, ptr %30, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %219, %217
  %222 = phi i32 [ %218, %217 ], [ %220, %219 ]
  store i32 %222, ptr %36, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %310, %221
  %224 = load i32, ptr %36, align 4, !tbaa !9
  %225 = load i32, ptr %31, align 4, !tbaa !9
  %226 = icmp sle i32 %224, %225
  br i1 %226, label %227, label %313

227:                                              ; preds = %223
  %228 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %228, ptr %29, align 4, !tbaa !9
  %229 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %229, ptr %30, align 4, !tbaa !9
  %230 = load i32, ptr %38, align 4, !tbaa !9
  %231 = load i32, ptr %36, align 4, !tbaa !9
  %232 = add nsw i32 %230, %231
  %233 = load i32, ptr %37, align 4, !tbaa !9
  %234 = load i32, ptr %26, align 4, !tbaa !9
  %235 = mul nsw i32 %233, %234
  %236 = add nsw i32 %232, %235
  store i32 %236, ptr %32, align 4, !tbaa !9
  %237 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %238 = load float, ptr %237, align 4, !tbaa !11
  %239 = load ptr, ptr %19, align 8, !tbaa !5
  %240 = load i32, ptr %32, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds %struct.complex, ptr %239, i64 %241
  %243 = getelementptr inbounds %struct.complex, ptr %242, i32 0, i32 0
  %244 = load float, ptr %243, align 4, !tbaa !11
  %245 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %246 = load float, ptr %245, align 4, !tbaa !14
  %247 = load ptr, ptr %19, align 8, !tbaa !5
  %248 = load i32, ptr %32, align 4, !tbaa !9
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds %struct.complex, ptr %247, i64 %249
  %251 = getelementptr inbounds %struct.complex, ptr %250, i32 0, i32 1
  %252 = load float, ptr %251, align 4, !tbaa !14
  %253 = fmul float %246, %252
  %254 = fneg float %253
  %255 = call float @llvm.fmuladd.f32(float %238, float %244, float %254)
  %256 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %255, ptr %256, align 4, !tbaa !11
  %257 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %258 = load float, ptr %257, align 4, !tbaa !11
  %259 = load ptr, ptr %19, align 8, !tbaa !5
  %260 = load i32, ptr %32, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds %struct.complex, ptr %259, i64 %261
  %263 = getelementptr inbounds %struct.complex, ptr %262, i32 0, i32 1
  %264 = load float, ptr %263, align 4, !tbaa !14
  %265 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %266 = load float, ptr %265, align 4, !tbaa !14
  %267 = load ptr, ptr %19, align 8, !tbaa !5
  %268 = load i32, ptr %32, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds %struct.complex, ptr %267, i64 %269
  %271 = getelementptr inbounds %struct.complex, ptr %270, i32 0, i32 0
  %272 = load float, ptr %271, align 4, !tbaa !11
  %273 = fmul float %266, %272
  %274 = call float @llvm.fmuladd.f32(float %258, float %264, float %273)
  %275 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %274, ptr %275, align 4, !tbaa !14
  %276 = load ptr, ptr %21, align 8, !tbaa !5
  %277 = load i32, ptr %30, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds %struct.complex, ptr %276, i64 %278
  %280 = getelementptr inbounds %struct.complex, ptr %279, i32 0, i32 0
  %281 = load float, ptr %280, align 4, !tbaa !11
  %282 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %283 = load float, ptr %282, align 4, !tbaa !11
  %284 = fadd float %281, %283
  %285 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %284, ptr %285, align 4, !tbaa !11
  %286 = load ptr, ptr %21, align 8, !tbaa !5
  %287 = load i32, ptr %30, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds %struct.complex, ptr %286, i64 %288
  %290 = getelementptr inbounds %struct.complex, ptr %289, i32 0, i32 1
  %291 = load float, ptr %290, align 4, !tbaa !14
  %292 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %293 = load float, ptr %292, align 4, !tbaa !14
  %294 = fadd float %291, %293
  %295 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %294, ptr %295, align 4, !tbaa !14
  %296 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %297 = load float, ptr %296, align 4, !tbaa !11
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  %299 = load i32, ptr %29, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds %struct.complex, ptr %298, i64 %300
  %302 = getelementptr inbounds %struct.complex, ptr %301, i32 0, i32 0
  store float %297, ptr %302, align 4, !tbaa !11
  %303 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %304 = load float, ptr %303, align 4, !tbaa !14
  %305 = load ptr, ptr %21, align 8, !tbaa !5
  %306 = load i32, ptr %29, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds %struct.complex, ptr %305, i64 %307
  %309 = getelementptr inbounds %struct.complex, ptr %308, i32 0, i32 1
  store float %304, ptr %309, align 4, !tbaa !14
  br label %310

310:                                              ; preds = %227
  %311 = load i32, ptr %36, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %36, align 4, !tbaa !9
  br label %223, !llvm.loop !15

313:                                              ; preds = %223
  %314 = load i32, ptr %46, align 4, !tbaa !9
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %393

316:                                              ; preds = %313
  %317 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %317, ptr %31, align 4, !tbaa !9
  %318 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %318, ptr %29, align 4, !tbaa !9
  %319 = load i32, ptr %44, align 4, !tbaa !9
  %320 = load i32, ptr %37, align 4, !tbaa !9
  %321 = load i32, ptr %26, align 4, !tbaa !9
  %322 = mul nsw i32 %320, %321
  %323 = add nsw i32 %319, %322
  store i32 %323, ptr %30, align 4, !tbaa !9
  %324 = load ptr, ptr %21, align 8, !tbaa !5
  %325 = load i32, ptr %29, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds %struct.complex, ptr %324, i64 %326
  %328 = getelementptr inbounds %struct.complex, ptr %327, i32 0, i32 0
  %329 = load float, ptr %328, align 4, !tbaa !11
  %330 = load ptr, ptr %19, align 8, !tbaa !5
  %331 = load i32, ptr %30, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %struct.complex, ptr %330, i64 %332
  %334 = getelementptr inbounds %struct.complex, ptr %333, i32 0, i32 0
  %335 = load float, ptr %334, align 4, !tbaa !11
  %336 = load ptr, ptr %21, align 8, !tbaa !5
  %337 = load i32, ptr %29, align 4, !tbaa !9
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.complex, ptr %336, i64 %338
  %340 = getelementptr inbounds %struct.complex, ptr %339, i32 0, i32 1
  %341 = load float, ptr %340, align 4, !tbaa !14
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = load i32, ptr %30, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds %struct.complex, ptr %342, i64 %344
  %346 = getelementptr inbounds %struct.complex, ptr %345, i32 0, i32 1
  %347 = load float, ptr %346, align 4, !tbaa !14
  %348 = fmul float %341, %347
  %349 = fneg float %348
  %350 = call float @llvm.fmuladd.f32(float %329, float %335, float %349)
  %351 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %350, ptr %351, align 4, !tbaa !11
  %352 = load ptr, ptr %21, align 8, !tbaa !5
  %353 = load i32, ptr %29, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %struct.complex, ptr %352, i64 %354
  %356 = getelementptr inbounds %struct.complex, ptr %355, i32 0, i32 0
  %357 = load float, ptr %356, align 4, !tbaa !11
  %358 = load ptr, ptr %19, align 8, !tbaa !5
  %359 = load i32, ptr %30, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.complex, ptr %358, i64 %360
  %362 = getelementptr inbounds %struct.complex, ptr %361, i32 0, i32 1
  %363 = load float, ptr %362, align 4, !tbaa !14
  %364 = load ptr, ptr %21, align 8, !tbaa !5
  %365 = load i32, ptr %29, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds %struct.complex, ptr %364, i64 %366
  %368 = getelementptr inbounds %struct.complex, ptr %367, i32 0, i32 1
  %369 = load float, ptr %368, align 4, !tbaa !14
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load i32, ptr %30, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %370, i64 %372
  %374 = getelementptr inbounds %struct.complex, ptr %373, i32 0, i32 0
  %375 = load float, ptr %374, align 4, !tbaa !11
  %376 = fmul float %369, %375
  %377 = call float @llvm.fmuladd.f32(float %357, float %363, float %376)
  %378 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %377, ptr %378, align 4, !tbaa !14
  %379 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %380 = load float, ptr %379, align 4, !tbaa !11
  %381 = load ptr, ptr %21, align 8, !tbaa !5
  %382 = load i32, ptr %31, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %381, i64 %383
  %385 = getelementptr inbounds %struct.complex, ptr %384, i32 0, i32 0
  store float %380, ptr %385, align 4, !tbaa !11
  %386 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %387 = load float, ptr %386, align 4, !tbaa !14
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = load i32, ptr %31, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds %struct.complex, ptr %388, i64 %390
  %392 = getelementptr inbounds %struct.complex, ptr %391, i32 0, i32 1
  store float %387, ptr %392, align 4, !tbaa !14
  br label %393

393:                                              ; preds = %316, %313
  br label %394

394:                                              ; preds = %393, %181
  br label %395

395:                                              ; preds = %394
  %396 = load i32, ptr %37, align 4, !tbaa !9
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %37, align 4, !tbaa !9
  br label %168, !llvm.loop !17

398:                                              ; preds = %168
  br label %653

399:                                              ; preds = %158
  %400 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %400, ptr %40, align 4, !tbaa !9
  %401 = load ptr, ptr %17, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  store i32 %402, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %403

403:                                              ; preds = %649, %399
  %404 = load i32, ptr %37, align 4, !tbaa !9
  %405 = load i32, ptr %28, align 4, !tbaa !9
  %406 = icmp sle i32 %404, %405
  br i1 %406, label %407, label %652

407:                                              ; preds = %403
  %408 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %408, ptr %31, align 4, !tbaa !9
  %409 = load ptr, ptr %21, align 8, !tbaa !5
  %410 = load i32, ptr %31, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.complex, ptr %409, i64 %411
  %413 = getelementptr inbounds %struct.complex, ptr %412, i32 0, i32 0
  %414 = load float, ptr %413, align 4, !tbaa !11
  %415 = fcmp une float %414, 0.000000e+00
  br i1 %415, label %424, label %416

416:                                              ; preds = %407
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load i32, ptr %31, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.complex, ptr %417, i64 %419
  %421 = getelementptr inbounds %struct.complex, ptr %420, i32 0, i32 1
  %422 = load float, ptr %421, align 4, !tbaa !14
  %423 = fcmp une float %422, 0.000000e+00
  br i1 %423, label %424, label %634

424:                                              ; preds = %416, %407
  %425 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %425, ptr %31, align 4, !tbaa !9
  %426 = load ptr, ptr %21, align 8, !tbaa !5
  %427 = load i32, ptr %31, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %426, i64 %428
  %430 = getelementptr inbounds %struct.complex, ptr %429, i32 0, i32 0
  %431 = load float, ptr %430, align 4, !tbaa !11
  %432 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %431, ptr %432, align 4, !tbaa !11
  %433 = load ptr, ptr %21, align 8, !tbaa !5
  %434 = load i32, ptr %31, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.complex, ptr %433, i64 %435
  %437 = getelementptr inbounds %struct.complex, ptr %436, i32 0, i32 1
  %438 = load float, ptr %437, align 4, !tbaa !14
  %439 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %438, ptr %439, align 4, !tbaa !14
  %440 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %440, ptr %39, align 4, !tbaa !9
  %441 = load i32, ptr %44, align 4, !tbaa !9
  %442 = load i32, ptr %37, align 4, !tbaa !9
  %443 = sub nsw i32 %441, %442
  store i32 %443, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  %444 = load i32, ptr %37, align 4, !tbaa !9
  %445 = load ptr, ptr %18, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = sub nsw i32 %444, %446
  store i32 %447, ptr %29, align 4, !tbaa !9
  %448 = load i32, ptr %37, align 4, !tbaa !9
  %449 = sub nsw i32 %448, 1
  store i32 %449, ptr %30, align 4, !tbaa !9
  %450 = load i32, ptr %31, align 4, !tbaa !9
  %451 = load i32, ptr %29, align 4, !tbaa !9
  %452 = icmp sge i32 %450, %451
  br i1 %452, label %453, label %455

453:                                              ; preds = %424
  %454 = load i32, ptr %31, align 4, !tbaa !9
  br label %457

455:                                              ; preds = %424
  %456 = load i32, ptr %29, align 4, !tbaa !9
  br label %457

457:                                              ; preds = %455, %453
  %458 = phi i32 [ %454, %453 ], [ %456, %455 ]
  store i32 %458, ptr %36, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %550, %457
  %460 = load i32, ptr %36, align 4, !tbaa !9
  %461 = load i32, ptr %30, align 4, !tbaa !9
  %462 = icmp sle i32 %460, %461
  br i1 %462, label %463, label %553

463:                                              ; preds = %459
  %464 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %464, ptr %31, align 4, !tbaa !9
  %465 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %465, ptr %29, align 4, !tbaa !9
  %466 = load i32, ptr %38, align 4, !tbaa !9
  %467 = load i32, ptr %36, align 4, !tbaa !9
  %468 = add nsw i32 %466, %467
  %469 = load i32, ptr %37, align 4, !tbaa !9
  %470 = load i32, ptr %26, align 4, !tbaa !9
  %471 = mul nsw i32 %469, %470
  %472 = add nsw i32 %468, %471
  store i32 %472, ptr %32, align 4, !tbaa !9
  %473 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %474 = load float, ptr %473, align 4, !tbaa !11
  %475 = load ptr, ptr %19, align 8, !tbaa !5
  %476 = load i32, ptr %32, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds %struct.complex, ptr %475, i64 %477
  %479 = getelementptr inbounds %struct.complex, ptr %478, i32 0, i32 0
  %480 = load float, ptr %479, align 4, !tbaa !11
  %481 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %482 = load float, ptr %481, align 4, !tbaa !14
  %483 = load ptr, ptr %19, align 8, !tbaa !5
  %484 = load i32, ptr %32, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds %struct.complex, ptr %483, i64 %485
  %487 = getelementptr inbounds %struct.complex, ptr %486, i32 0, i32 1
  %488 = load float, ptr %487, align 4, !tbaa !14
  %489 = fmul float %482, %488
  %490 = fneg float %489
  %491 = call float @llvm.fmuladd.f32(float %474, float %480, float %490)
  %492 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %491, ptr %492, align 4, !tbaa !11
  %493 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %494 = load float, ptr %493, align 4, !tbaa !11
  %495 = load ptr, ptr %19, align 8, !tbaa !5
  %496 = load i32, ptr %32, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.complex, ptr %495, i64 %497
  %499 = getelementptr inbounds %struct.complex, ptr %498, i32 0, i32 1
  %500 = load float, ptr %499, align 4, !tbaa !14
  %501 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %502 = load float, ptr %501, align 4, !tbaa !14
  %503 = load ptr, ptr %19, align 8, !tbaa !5
  %504 = load i32, ptr %32, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds %struct.complex, ptr %503, i64 %505
  %507 = getelementptr inbounds %struct.complex, ptr %506, i32 0, i32 0
  %508 = load float, ptr %507, align 4, !tbaa !11
  %509 = fmul float %502, %508
  %510 = call float @llvm.fmuladd.f32(float %494, float %500, float %509)
  %511 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %510, ptr %511, align 4, !tbaa !14
  %512 = load ptr, ptr %21, align 8, !tbaa !5
  %513 = load i32, ptr %29, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds %struct.complex, ptr %512, i64 %514
  %516 = getelementptr inbounds %struct.complex, ptr %515, i32 0, i32 0
  %517 = load float, ptr %516, align 4, !tbaa !11
  %518 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %519 = load float, ptr %518, align 4, !tbaa !11
  %520 = fadd float %517, %519
  %521 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %520, ptr %521, align 4, !tbaa !11
  %522 = load ptr, ptr %21, align 8, !tbaa !5
  %523 = load i32, ptr %29, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct.complex, ptr %522, i64 %524
  %526 = getelementptr inbounds %struct.complex, ptr %525, i32 0, i32 1
  %527 = load float, ptr %526, align 4, !tbaa !14
  %528 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %529 = load float, ptr %528, align 4, !tbaa !14
  %530 = fadd float %527, %529
  %531 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %530, ptr %531, align 4, !tbaa !14
  %532 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %533 = load float, ptr %532, align 4, !tbaa !11
  %534 = load ptr, ptr %21, align 8, !tbaa !5
  %535 = load i32, ptr %31, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds %struct.complex, ptr %534, i64 %536
  %538 = getelementptr inbounds %struct.complex, ptr %537, i32 0, i32 0
  store float %533, ptr %538, align 4, !tbaa !11
  %539 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %540 = load float, ptr %539, align 4, !tbaa !14
  %541 = load ptr, ptr %21, align 8, !tbaa !5
  %542 = load i32, ptr %31, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.complex, ptr %541, i64 %543
  %545 = getelementptr inbounds %struct.complex, ptr %544, i32 0, i32 1
  store float %540, ptr %545, align 4, !tbaa !14
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = load i32, ptr %39, align 4, !tbaa !9
  %549 = add nsw i32 %548, %547
  store i32 %549, ptr %39, align 4, !tbaa !9
  br label %550

550:                                              ; preds = %463
  %551 = load i32, ptr %36, align 4, !tbaa !9
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %36, align 4, !tbaa !9
  br label %459, !llvm.loop !18

553:                                              ; preds = %459
  %554 = load i32, ptr %46, align 4, !tbaa !9
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %556, label %633

556:                                              ; preds = %553
  %557 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %557, ptr %30, align 4, !tbaa !9
  %558 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %558, ptr %31, align 4, !tbaa !9
  %559 = load i32, ptr %44, align 4, !tbaa !9
  %560 = load i32, ptr %37, align 4, !tbaa !9
  %561 = load i32, ptr %26, align 4, !tbaa !9
  %562 = mul nsw i32 %560, %561
  %563 = add nsw i32 %559, %562
  store i32 %563, ptr %29, align 4, !tbaa !9
  %564 = load ptr, ptr %21, align 8, !tbaa !5
  %565 = load i32, ptr %31, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds %struct.complex, ptr %564, i64 %566
  %568 = getelementptr inbounds %struct.complex, ptr %567, i32 0, i32 0
  %569 = load float, ptr %568, align 4, !tbaa !11
  %570 = load ptr, ptr %19, align 8, !tbaa !5
  %571 = load i32, ptr %29, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.complex, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.complex, ptr %573, i32 0, i32 0
  %575 = load float, ptr %574, align 4, !tbaa !11
  %576 = load ptr, ptr %21, align 8, !tbaa !5
  %577 = load i32, ptr %31, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.complex, ptr %576, i64 %578
  %580 = getelementptr inbounds %struct.complex, ptr %579, i32 0, i32 1
  %581 = load float, ptr %580, align 4, !tbaa !14
  %582 = load ptr, ptr %19, align 8, !tbaa !5
  %583 = load i32, ptr %29, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds %struct.complex, ptr %582, i64 %584
  %586 = getelementptr inbounds %struct.complex, ptr %585, i32 0, i32 1
  %587 = load float, ptr %586, align 4, !tbaa !14
  %588 = fmul float %581, %587
  %589 = fneg float %588
  %590 = call float @llvm.fmuladd.f32(float %569, float %575, float %589)
  %591 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %590, ptr %591, align 4, !tbaa !11
  %592 = load ptr, ptr %21, align 8, !tbaa !5
  %593 = load i32, ptr %31, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.complex, ptr %592, i64 %594
  %596 = getelementptr inbounds %struct.complex, ptr %595, i32 0, i32 0
  %597 = load float, ptr %596, align 4, !tbaa !11
  %598 = load ptr, ptr %19, align 8, !tbaa !5
  %599 = load i32, ptr %29, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds %struct.complex, ptr %598, i64 %600
  %602 = getelementptr inbounds %struct.complex, ptr %601, i32 0, i32 1
  %603 = load float, ptr %602, align 4, !tbaa !14
  %604 = load ptr, ptr %21, align 8, !tbaa !5
  %605 = load i32, ptr %31, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.complex, ptr %604, i64 %606
  %608 = getelementptr inbounds %struct.complex, ptr %607, i32 0, i32 1
  %609 = load float, ptr %608, align 4, !tbaa !14
  %610 = load ptr, ptr %19, align 8, !tbaa !5
  %611 = load i32, ptr %29, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.complex, ptr %610, i64 %612
  %614 = getelementptr inbounds %struct.complex, ptr %613, i32 0, i32 0
  %615 = load float, ptr %614, align 4, !tbaa !11
  %616 = fmul float %609, %615
  %617 = call float @llvm.fmuladd.f32(float %597, float %603, float %616)
  %618 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %617, ptr %618, align 4, !tbaa !14
  %619 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %620 = load float, ptr %619, align 4, !tbaa !11
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = load i32, ptr %30, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.complex, ptr %621, i64 %623
  %625 = getelementptr inbounds %struct.complex, ptr %624, i32 0, i32 0
  store float %620, ptr %625, align 4, !tbaa !11
  %626 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %627 = load float, ptr %626, align 4, !tbaa !14
  %628 = load ptr, ptr %21, align 8, !tbaa !5
  %629 = load i32, ptr %30, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds %struct.complex, ptr %628, i64 %630
  %632 = getelementptr inbounds %struct.complex, ptr %631, i32 0, i32 1
  store float %627, ptr %632, align 4, !tbaa !14
  br label %633

633:                                              ; preds = %556, %553
  br label %634

634:                                              ; preds = %633, %416
  %635 = load ptr, ptr %22, align 8, !tbaa !5
  %636 = load i32, ptr %635, align 4, !tbaa !9
  %637 = load i32, ptr %40, align 4, !tbaa !9
  %638 = add nsw i32 %637, %636
  store i32 %638, ptr %40, align 4, !tbaa !9
  %639 = load i32, ptr %37, align 4, !tbaa !9
  %640 = load ptr, ptr %18, align 8, !tbaa !5
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = icmp sgt i32 %639, %641
  br i1 %642, label %643, label %648

643:                                              ; preds = %634
  %644 = load ptr, ptr %22, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = load i32, ptr %41, align 4, !tbaa !9
  %647 = add nsw i32 %646, %645
  store i32 %647, ptr %41, align 4, !tbaa !9
  br label %648

648:                                              ; preds = %643, %634
  br label %649

649:                                              ; preds = %648
  %650 = load i32, ptr %37, align 4, !tbaa !9
  %651 = add nsw i32 %650, 1
  store i32 %651, ptr %37, align 4, !tbaa !9
  br label %403, !llvm.loop !19

652:                                              ; preds = %403
  br label %653

653:                                              ; preds = %652, %398
  br label %1156

654:                                              ; preds = %154
  %655 = load ptr, ptr %22, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = icmp eq i32 %656, 1
  br i1 %657, label %658, label %891

658:                                              ; preds = %654
  %659 = load ptr, ptr %17, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  store i32 %660, ptr %37, align 4, !tbaa !9
  br label %661

661:                                              ; preds = %887, %658
  %662 = load i32, ptr %37, align 4, !tbaa !9
  %663 = icmp sge i32 %662, 1
  br i1 %663, label %664, label %890

664:                                              ; preds = %661
  %665 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %665, ptr %28, align 4, !tbaa !9
  %666 = load ptr, ptr %21, align 8, !tbaa !5
  %667 = load i32, ptr %28, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds %struct.complex, ptr %666, i64 %668
  %670 = getelementptr inbounds %struct.complex, ptr %669, i32 0, i32 0
  %671 = load float, ptr %670, align 4, !tbaa !11
  %672 = fcmp une float %671, 0.000000e+00
  br i1 %672, label %681, label %673

673:                                              ; preds = %664
  %674 = load ptr, ptr %21, align 8, !tbaa !5
  %675 = load i32, ptr %28, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.complex, ptr %674, i64 %676
  %678 = getelementptr inbounds %struct.complex, ptr %677, i32 0, i32 1
  %679 = load float, ptr %678, align 4, !tbaa !14
  %680 = fcmp une float %679, 0.000000e+00
  br i1 %680, label %681, label %886

681:                                              ; preds = %673, %664
  %682 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %682, ptr %28, align 4, !tbaa !9
  %683 = load ptr, ptr %21, align 8, !tbaa !5
  %684 = load i32, ptr %28, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds %struct.complex, ptr %683, i64 %685
  %687 = getelementptr inbounds %struct.complex, ptr %686, i32 0, i32 0
  %688 = load float, ptr %687, align 4, !tbaa !11
  %689 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %688, ptr %689, align 4, !tbaa !11
  %690 = load ptr, ptr %21, align 8, !tbaa !5
  %691 = load i32, ptr %28, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds %struct.complex, ptr %690, i64 %692
  %694 = getelementptr inbounds %struct.complex, ptr %693, i32 0, i32 1
  %695 = load float, ptr %694, align 4, !tbaa !14
  %696 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %695, ptr %696, align 4, !tbaa !14
  %697 = load i32, ptr %37, align 4, !tbaa !9
  %698 = sub nsw i32 1, %697
  store i32 %698, ptr %38, align 4, !tbaa !9
  %699 = load ptr, ptr %17, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  store i32 %700, ptr %28, align 4, !tbaa !9
  %701 = load i32, ptr %37, align 4, !tbaa !9
  %702 = load ptr, ptr %18, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = add nsw i32 %701, %703
  store i32 %704, ptr %30, align 4, !tbaa !9
  %705 = load i32, ptr %37, align 4, !tbaa !9
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr %31, align 4, !tbaa !9
  %707 = load i32, ptr %28, align 4, !tbaa !9
  %708 = load i32, ptr %30, align 4, !tbaa !9
  %709 = icmp sle i32 %707, %708
  br i1 %709, label %710, label %712

710:                                              ; preds = %681
  %711 = load i32, ptr %28, align 4, !tbaa !9
  br label %714

712:                                              ; preds = %681
  %713 = load i32, ptr %30, align 4, !tbaa !9
  br label %714

714:                                              ; preds = %712, %710
  %715 = phi i32 [ %711, %710 ], [ %713, %712 ]
  store i32 %715, ptr %36, align 4, !tbaa !9
  br label %716

716:                                              ; preds = %803, %714
  %717 = load i32, ptr %36, align 4, !tbaa !9
  %718 = load i32, ptr %31, align 4, !tbaa !9
  %719 = icmp sge i32 %717, %718
  br i1 %719, label %720, label %806

720:                                              ; preds = %716
  %721 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %721, ptr %28, align 4, !tbaa !9
  %722 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %722, ptr %30, align 4, !tbaa !9
  %723 = load i32, ptr %38, align 4, !tbaa !9
  %724 = load i32, ptr %36, align 4, !tbaa !9
  %725 = add nsw i32 %723, %724
  %726 = load i32, ptr %37, align 4, !tbaa !9
  %727 = load i32, ptr %26, align 4, !tbaa !9
  %728 = mul nsw i32 %726, %727
  %729 = add nsw i32 %725, %728
  store i32 %729, ptr %29, align 4, !tbaa !9
  %730 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %731 = load float, ptr %730, align 4, !tbaa !11
  %732 = load ptr, ptr %19, align 8, !tbaa !5
  %733 = load i32, ptr %29, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds %struct.complex, ptr %732, i64 %734
  %736 = getelementptr inbounds %struct.complex, ptr %735, i32 0, i32 0
  %737 = load float, ptr %736, align 4, !tbaa !11
  %738 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %739 = load float, ptr %738, align 4, !tbaa !14
  %740 = load ptr, ptr %19, align 8, !tbaa !5
  %741 = load i32, ptr %29, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.complex, ptr %740, i64 %742
  %744 = getelementptr inbounds %struct.complex, ptr %743, i32 0, i32 1
  %745 = load float, ptr %744, align 4, !tbaa !14
  %746 = fmul float %739, %745
  %747 = fneg float %746
  %748 = call float @llvm.fmuladd.f32(float %731, float %737, float %747)
  %749 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %748, ptr %749, align 4, !tbaa !11
  %750 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %751 = load float, ptr %750, align 4, !tbaa !11
  %752 = load ptr, ptr %19, align 8, !tbaa !5
  %753 = load i32, ptr %29, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds %struct.complex, ptr %752, i64 %754
  %756 = getelementptr inbounds %struct.complex, ptr %755, i32 0, i32 1
  %757 = load float, ptr %756, align 4, !tbaa !14
  %758 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %759 = load float, ptr %758, align 4, !tbaa !14
  %760 = load ptr, ptr %19, align 8, !tbaa !5
  %761 = load i32, ptr %29, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.complex, ptr %760, i64 %762
  %764 = getelementptr inbounds %struct.complex, ptr %763, i32 0, i32 0
  %765 = load float, ptr %764, align 4, !tbaa !11
  %766 = fmul float %759, %765
  %767 = call float @llvm.fmuladd.f32(float %751, float %757, float %766)
  %768 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %767, ptr %768, align 4, !tbaa !14
  %769 = load ptr, ptr %21, align 8, !tbaa !5
  %770 = load i32, ptr %30, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds %struct.complex, ptr %769, i64 %771
  %773 = getelementptr inbounds %struct.complex, ptr %772, i32 0, i32 0
  %774 = load float, ptr %773, align 4, !tbaa !11
  %775 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %776 = load float, ptr %775, align 4, !tbaa !11
  %777 = fadd float %774, %776
  %778 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %777, ptr %778, align 4, !tbaa !11
  %779 = load ptr, ptr %21, align 8, !tbaa !5
  %780 = load i32, ptr %30, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.complex, ptr %779, i64 %781
  %783 = getelementptr inbounds %struct.complex, ptr %782, i32 0, i32 1
  %784 = load float, ptr %783, align 4, !tbaa !14
  %785 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %786 = load float, ptr %785, align 4, !tbaa !14
  %787 = fadd float %784, %786
  %788 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %787, ptr %788, align 4, !tbaa !14
  %789 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %790 = load float, ptr %789, align 4, !tbaa !11
  %791 = load ptr, ptr %21, align 8, !tbaa !5
  %792 = load i32, ptr %28, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds %struct.complex, ptr %791, i64 %793
  %795 = getelementptr inbounds %struct.complex, ptr %794, i32 0, i32 0
  store float %790, ptr %795, align 4, !tbaa !11
  %796 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %797 = load float, ptr %796, align 4, !tbaa !14
  %798 = load ptr, ptr %21, align 8, !tbaa !5
  %799 = load i32, ptr %28, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.complex, ptr %798, i64 %800
  %802 = getelementptr inbounds %struct.complex, ptr %801, i32 0, i32 1
  store float %797, ptr %802, align 4, !tbaa !14
  br label %803

803:                                              ; preds = %720
  %804 = load i32, ptr %36, align 4, !tbaa !9
  %805 = add nsw i32 %804, -1
  store i32 %805, ptr %36, align 4, !tbaa !9
  br label %716, !llvm.loop !20

806:                                              ; preds = %716
  %807 = load i32, ptr %46, align 4, !tbaa !9
  %808 = icmp ne i32 %807, 0
  br i1 %808, label %809, label %885

809:                                              ; preds = %806
  %810 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %810, ptr %31, align 4, !tbaa !9
  %811 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %811, ptr %28, align 4, !tbaa !9
  %812 = load i32, ptr %37, align 4, !tbaa !9
  %813 = load i32, ptr %26, align 4, !tbaa !9
  %814 = mul nsw i32 %812, %813
  %815 = add nsw i32 %814, 1
  store i32 %815, ptr %30, align 4, !tbaa !9
  %816 = load ptr, ptr %21, align 8, !tbaa !5
  %817 = load i32, ptr %28, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.complex, ptr %816, i64 %818
  %820 = getelementptr inbounds %struct.complex, ptr %819, i32 0, i32 0
  %821 = load float, ptr %820, align 4, !tbaa !11
  %822 = load ptr, ptr %19, align 8, !tbaa !5
  %823 = load i32, ptr %30, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds %struct.complex, ptr %822, i64 %824
  %826 = getelementptr inbounds %struct.complex, ptr %825, i32 0, i32 0
  %827 = load float, ptr %826, align 4, !tbaa !11
  %828 = load ptr, ptr %21, align 8, !tbaa !5
  %829 = load i32, ptr %28, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds %struct.complex, ptr %828, i64 %830
  %832 = getelementptr inbounds %struct.complex, ptr %831, i32 0, i32 1
  %833 = load float, ptr %832, align 4, !tbaa !14
  %834 = load ptr, ptr %19, align 8, !tbaa !5
  %835 = load i32, ptr %30, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds %struct.complex, ptr %834, i64 %836
  %838 = getelementptr inbounds %struct.complex, ptr %837, i32 0, i32 1
  %839 = load float, ptr %838, align 4, !tbaa !14
  %840 = fmul float %833, %839
  %841 = fneg float %840
  %842 = call float @llvm.fmuladd.f32(float %821, float %827, float %841)
  %843 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %842, ptr %843, align 4, !tbaa !11
  %844 = load ptr, ptr %21, align 8, !tbaa !5
  %845 = load i32, ptr %28, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds %struct.complex, ptr %844, i64 %846
  %848 = getelementptr inbounds %struct.complex, ptr %847, i32 0, i32 0
  %849 = load float, ptr %848, align 4, !tbaa !11
  %850 = load ptr, ptr %19, align 8, !tbaa !5
  %851 = load i32, ptr %30, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds %struct.complex, ptr %850, i64 %852
  %854 = getelementptr inbounds %struct.complex, ptr %853, i32 0, i32 1
  %855 = load float, ptr %854, align 4, !tbaa !14
  %856 = load ptr, ptr %21, align 8, !tbaa !5
  %857 = load i32, ptr %28, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds %struct.complex, ptr %856, i64 %858
  %860 = getelementptr inbounds %struct.complex, ptr %859, i32 0, i32 1
  %861 = load float, ptr %860, align 4, !tbaa !14
  %862 = load ptr, ptr %19, align 8, !tbaa !5
  %863 = load i32, ptr %30, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.complex, ptr %862, i64 %864
  %866 = getelementptr inbounds %struct.complex, ptr %865, i32 0, i32 0
  %867 = load float, ptr %866, align 4, !tbaa !11
  %868 = fmul float %861, %867
  %869 = call float @llvm.fmuladd.f32(float %849, float %855, float %868)
  %870 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %869, ptr %870, align 4, !tbaa !14
  %871 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %872 = load float, ptr %871, align 4, !tbaa !11
  %873 = load ptr, ptr %21, align 8, !tbaa !5
  %874 = load i32, ptr %31, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds %struct.complex, ptr %873, i64 %875
  %877 = getelementptr inbounds %struct.complex, ptr %876, i32 0, i32 0
  store float %872, ptr %877, align 4, !tbaa !11
  %878 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %879 = load float, ptr %878, align 4, !tbaa !14
  %880 = load ptr, ptr %21, align 8, !tbaa !5
  %881 = load i32, ptr %31, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds %struct.complex, ptr %880, i64 %882
  %884 = getelementptr inbounds %struct.complex, ptr %883, i32 0, i32 1
  store float %879, ptr %884, align 4, !tbaa !14
  br label %885

885:                                              ; preds = %809, %806
  br label %886

886:                                              ; preds = %885, %673
  br label %887

887:                                              ; preds = %886
  %888 = load i32, ptr %37, align 4, !tbaa !9
  %889 = add nsw i32 %888, -1
  store i32 %889, ptr %37, align 4, !tbaa !9
  br label %661, !llvm.loop !21

890:                                              ; preds = %661
  br label %1155

891:                                              ; preds = %654
  %892 = load ptr, ptr %17, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = sub nsw i32 %893, 1
  %895 = load ptr, ptr %22, align 8, !tbaa !5
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = mul nsw i32 %894, %896
  %898 = load i32, ptr %41, align 4, !tbaa !9
  %899 = add nsw i32 %898, %897
  store i32 %899, ptr %41, align 4, !tbaa !9
  %900 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %900, ptr %40, align 4, !tbaa !9
  %901 = load ptr, ptr %17, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  store i32 %902, ptr %37, align 4, !tbaa !9
  br label %903

903:                                              ; preds = %1151, %891
  %904 = load i32, ptr %37, align 4, !tbaa !9
  %905 = icmp sge i32 %904, 1
  br i1 %905, label %906, label %1154

906:                                              ; preds = %903
  %907 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %907, ptr %31, align 4, !tbaa !9
  %908 = load ptr, ptr %21, align 8, !tbaa !5
  %909 = load i32, ptr %31, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct.complex, ptr %908, i64 %910
  %912 = getelementptr inbounds %struct.complex, ptr %911, i32 0, i32 0
  %913 = load float, ptr %912, align 4, !tbaa !11
  %914 = fcmp une float %913, 0.000000e+00
  br i1 %914, label %923, label %915

915:                                              ; preds = %906
  %916 = load ptr, ptr %21, align 8, !tbaa !5
  %917 = load i32, ptr %31, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.complex, ptr %916, i64 %918
  %920 = getelementptr inbounds %struct.complex, ptr %919, i32 0, i32 1
  %921 = load float, ptr %920, align 4, !tbaa !14
  %922 = fcmp une float %921, 0.000000e+00
  br i1 %922, label %923, label %1133

923:                                              ; preds = %915, %906
  %924 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %924, ptr %31, align 4, !tbaa !9
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = load i32, ptr %31, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.complex, ptr %925, i64 %927
  %929 = getelementptr inbounds %struct.complex, ptr %928, i32 0, i32 0
  %930 = load float, ptr %929, align 4, !tbaa !11
  %931 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %930, ptr %931, align 4, !tbaa !11
  %932 = load ptr, ptr %21, align 8, !tbaa !5
  %933 = load i32, ptr %31, align 4, !tbaa !9
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds %struct.complex, ptr %932, i64 %934
  %936 = getelementptr inbounds %struct.complex, ptr %935, i32 0, i32 1
  %937 = load float, ptr %936, align 4, !tbaa !14
  %938 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %937, ptr %938, align 4, !tbaa !14
  %939 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %939, ptr %39, align 4, !tbaa !9
  %940 = load i32, ptr %37, align 4, !tbaa !9
  %941 = sub nsw i32 1, %940
  store i32 %941, ptr %38, align 4, !tbaa !9
  %942 = load ptr, ptr %17, align 8, !tbaa !5
  %943 = load i32, ptr %942, align 4, !tbaa !9
  store i32 %943, ptr %31, align 4, !tbaa !9
  %944 = load i32, ptr %37, align 4, !tbaa !9
  %945 = load ptr, ptr %18, align 8, !tbaa !5
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = add nsw i32 %944, %946
  store i32 %947, ptr %28, align 4, !tbaa !9
  %948 = load i32, ptr %37, align 4, !tbaa !9
  %949 = add nsw i32 %948, 1
  store i32 %949, ptr %30, align 4, !tbaa !9
  %950 = load i32, ptr %31, align 4, !tbaa !9
  %951 = load i32, ptr %28, align 4, !tbaa !9
  %952 = icmp sle i32 %950, %951
  br i1 %952, label %953, label %955

953:                                              ; preds = %923
  %954 = load i32, ptr %31, align 4, !tbaa !9
  br label %957

955:                                              ; preds = %923
  %956 = load i32, ptr %28, align 4, !tbaa !9
  br label %957

957:                                              ; preds = %955, %953
  %958 = phi i32 [ %954, %953 ], [ %956, %955 ]
  store i32 %958, ptr %36, align 4, !tbaa !9
  br label %959

959:                                              ; preds = %1050, %957
  %960 = load i32, ptr %36, align 4, !tbaa !9
  %961 = load i32, ptr %30, align 4, !tbaa !9
  %962 = icmp sge i32 %960, %961
  br i1 %962, label %963, label %1053

963:                                              ; preds = %959
  %964 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %964, ptr %31, align 4, !tbaa !9
  %965 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %965, ptr %28, align 4, !tbaa !9
  %966 = load i32, ptr %38, align 4, !tbaa !9
  %967 = load i32, ptr %36, align 4, !tbaa !9
  %968 = add nsw i32 %966, %967
  %969 = load i32, ptr %37, align 4, !tbaa !9
  %970 = load i32, ptr %26, align 4, !tbaa !9
  %971 = mul nsw i32 %969, %970
  %972 = add nsw i32 %968, %971
  store i32 %972, ptr %29, align 4, !tbaa !9
  %973 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %974 = load float, ptr %973, align 4, !tbaa !11
  %975 = load ptr, ptr %19, align 8, !tbaa !5
  %976 = load i32, ptr %29, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds %struct.complex, ptr %975, i64 %977
  %979 = getelementptr inbounds %struct.complex, ptr %978, i32 0, i32 0
  %980 = load float, ptr %979, align 4, !tbaa !11
  %981 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %982 = load float, ptr %981, align 4, !tbaa !14
  %983 = load ptr, ptr %19, align 8, !tbaa !5
  %984 = load i32, ptr %29, align 4, !tbaa !9
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds %struct.complex, ptr %983, i64 %985
  %987 = getelementptr inbounds %struct.complex, ptr %986, i32 0, i32 1
  %988 = load float, ptr %987, align 4, !tbaa !14
  %989 = fmul float %982, %988
  %990 = fneg float %989
  %991 = call float @llvm.fmuladd.f32(float %974, float %980, float %990)
  %992 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %991, ptr %992, align 4, !tbaa !11
  %993 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %994 = load float, ptr %993, align 4, !tbaa !11
  %995 = load ptr, ptr %19, align 8, !tbaa !5
  %996 = load i32, ptr %29, align 4, !tbaa !9
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds %struct.complex, ptr %995, i64 %997
  %999 = getelementptr inbounds %struct.complex, ptr %998, i32 0, i32 1
  %1000 = load float, ptr %999, align 4, !tbaa !14
  %1001 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1002 = load float, ptr %1001, align 4, !tbaa !14
  %1003 = load ptr, ptr %19, align 8, !tbaa !5
  %1004 = load i32, ptr %29, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.complex, ptr %1003, i64 %1005
  %1007 = getelementptr inbounds %struct.complex, ptr %1006, i32 0, i32 0
  %1008 = load float, ptr %1007, align 4, !tbaa !11
  %1009 = fmul float %1002, %1008
  %1010 = call float @llvm.fmuladd.f32(float %994, float %1000, float %1009)
  %1011 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1010, ptr %1011, align 4, !tbaa !14
  %1012 = load ptr, ptr %21, align 8, !tbaa !5
  %1013 = load i32, ptr %28, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds %struct.complex, ptr %1012, i64 %1014
  %1016 = getelementptr inbounds %struct.complex, ptr %1015, i32 0, i32 0
  %1017 = load float, ptr %1016, align 4, !tbaa !11
  %1018 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1019 = load float, ptr %1018, align 4, !tbaa !11
  %1020 = fadd float %1017, %1019
  %1021 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1020, ptr %1021, align 4, !tbaa !11
  %1022 = load ptr, ptr %21, align 8, !tbaa !5
  %1023 = load i32, ptr %28, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds %struct.complex, ptr %1022, i64 %1024
  %1026 = getelementptr inbounds %struct.complex, ptr %1025, i32 0, i32 1
  %1027 = load float, ptr %1026, align 4, !tbaa !14
  %1028 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1029 = load float, ptr %1028, align 4, !tbaa !14
  %1030 = fadd float %1027, %1029
  %1031 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1030, ptr %1031, align 4, !tbaa !14
  %1032 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1033 = load float, ptr %1032, align 4, !tbaa !11
  %1034 = load ptr, ptr %21, align 8, !tbaa !5
  %1035 = load i32, ptr %31, align 4, !tbaa !9
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds %struct.complex, ptr %1034, i64 %1036
  %1038 = getelementptr inbounds %struct.complex, ptr %1037, i32 0, i32 0
  store float %1033, ptr %1038, align 4, !tbaa !11
  %1039 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1040 = load float, ptr %1039, align 4, !tbaa !14
  %1041 = load ptr, ptr %21, align 8, !tbaa !5
  %1042 = load i32, ptr %31, align 4, !tbaa !9
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds %struct.complex, ptr %1041, i64 %1043
  %1045 = getelementptr inbounds %struct.complex, ptr %1044, i32 0, i32 1
  store float %1040, ptr %1045, align 4, !tbaa !14
  %1046 = load ptr, ptr %22, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = load i32, ptr %39, align 4, !tbaa !9
  %1049 = sub nsw i32 %1048, %1047
  store i32 %1049, ptr %39, align 4, !tbaa !9
  br label %1050

1050:                                             ; preds = %963
  %1051 = load i32, ptr %36, align 4, !tbaa !9
  %1052 = add nsw i32 %1051, -1
  store i32 %1052, ptr %36, align 4, !tbaa !9
  br label %959, !llvm.loop !22

1053:                                             ; preds = %959
  %1054 = load i32, ptr %46, align 4, !tbaa !9
  %1055 = icmp ne i32 %1054, 0
  br i1 %1055, label %1056, label %1132

1056:                                             ; preds = %1053
  %1057 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1057, ptr %30, align 4, !tbaa !9
  %1058 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1058, ptr %31, align 4, !tbaa !9
  %1059 = load i32, ptr %37, align 4, !tbaa !9
  %1060 = load i32, ptr %26, align 4, !tbaa !9
  %1061 = mul nsw i32 %1059, %1060
  %1062 = add nsw i32 %1061, 1
  store i32 %1062, ptr %28, align 4, !tbaa !9
  %1063 = load ptr, ptr %21, align 8, !tbaa !5
  %1064 = load i32, ptr %31, align 4, !tbaa !9
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds %struct.complex, ptr %1063, i64 %1065
  %1067 = getelementptr inbounds %struct.complex, ptr %1066, i32 0, i32 0
  %1068 = load float, ptr %1067, align 4, !tbaa !11
  %1069 = load ptr, ptr %19, align 8, !tbaa !5
  %1070 = load i32, ptr %28, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.complex, ptr %1069, i64 %1071
  %1073 = getelementptr inbounds %struct.complex, ptr %1072, i32 0, i32 0
  %1074 = load float, ptr %1073, align 4, !tbaa !11
  %1075 = load ptr, ptr %21, align 8, !tbaa !5
  %1076 = load i32, ptr %31, align 4, !tbaa !9
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds %struct.complex, ptr %1075, i64 %1077
  %1079 = getelementptr inbounds %struct.complex, ptr %1078, i32 0, i32 1
  %1080 = load float, ptr %1079, align 4, !tbaa !14
  %1081 = load ptr, ptr %19, align 8, !tbaa !5
  %1082 = load i32, ptr %28, align 4, !tbaa !9
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds %struct.complex, ptr %1081, i64 %1083
  %1085 = getelementptr inbounds %struct.complex, ptr %1084, i32 0, i32 1
  %1086 = load float, ptr %1085, align 4, !tbaa !14
  %1087 = fmul float %1080, %1086
  %1088 = fneg float %1087
  %1089 = call float @llvm.fmuladd.f32(float %1068, float %1074, float %1088)
  %1090 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1089, ptr %1090, align 4, !tbaa !11
  %1091 = load ptr, ptr %21, align 8, !tbaa !5
  %1092 = load i32, ptr %31, align 4, !tbaa !9
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds %struct.complex, ptr %1091, i64 %1093
  %1095 = getelementptr inbounds %struct.complex, ptr %1094, i32 0, i32 0
  %1096 = load float, ptr %1095, align 4, !tbaa !11
  %1097 = load ptr, ptr %19, align 8, !tbaa !5
  %1098 = load i32, ptr %28, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds %struct.complex, ptr %1097, i64 %1099
  %1101 = getelementptr inbounds %struct.complex, ptr %1100, i32 0, i32 1
  %1102 = load float, ptr %1101, align 4, !tbaa !14
  %1103 = load ptr, ptr %21, align 8, !tbaa !5
  %1104 = load i32, ptr %31, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds %struct.complex, ptr %1103, i64 %1105
  %1107 = getelementptr inbounds %struct.complex, ptr %1106, i32 0, i32 1
  %1108 = load float, ptr %1107, align 4, !tbaa !14
  %1109 = load ptr, ptr %19, align 8, !tbaa !5
  %1110 = load i32, ptr %28, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds %struct.complex, ptr %1109, i64 %1111
  %1113 = getelementptr inbounds %struct.complex, ptr %1112, i32 0, i32 0
  %1114 = load float, ptr %1113, align 4, !tbaa !11
  %1115 = fmul float %1108, %1114
  %1116 = call float @llvm.fmuladd.f32(float %1096, float %1102, float %1115)
  %1117 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1116, ptr %1117, align 4, !tbaa !14
  %1118 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1119 = load float, ptr %1118, align 4, !tbaa !11
  %1120 = load ptr, ptr %21, align 8, !tbaa !5
  %1121 = load i32, ptr %30, align 4, !tbaa !9
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds %struct.complex, ptr %1120, i64 %1122
  %1124 = getelementptr inbounds %struct.complex, ptr %1123, i32 0, i32 0
  store float %1119, ptr %1124, align 4, !tbaa !11
  %1125 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1126 = load float, ptr %1125, align 4, !tbaa !14
  %1127 = load ptr, ptr %21, align 8, !tbaa !5
  %1128 = load i32, ptr %30, align 4, !tbaa !9
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds %struct.complex, ptr %1127, i64 %1129
  %1131 = getelementptr inbounds %struct.complex, ptr %1130, i32 0, i32 1
  store float %1126, ptr %1131, align 4, !tbaa !14
  br label %1132

1132:                                             ; preds = %1056, %1053
  br label %1133

1133:                                             ; preds = %1132, %915
  %1134 = load ptr, ptr %22, align 8, !tbaa !5
  %1135 = load i32, ptr %1134, align 4, !tbaa !9
  %1136 = load i32, ptr %40, align 4, !tbaa !9
  %1137 = sub nsw i32 %1136, %1135
  store i32 %1137, ptr %40, align 4, !tbaa !9
  %1138 = load ptr, ptr %17, align 8, !tbaa !5
  %1139 = load i32, ptr %1138, align 4, !tbaa !9
  %1140 = load i32, ptr %37, align 4, !tbaa !9
  %1141 = sub nsw i32 %1139, %1140
  %1142 = load ptr, ptr %18, align 8, !tbaa !5
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = icmp sge i32 %1141, %1143
  br i1 %1144, label %1145, label %1150

1145:                                             ; preds = %1133
  %1146 = load ptr, ptr %22, align 8, !tbaa !5
  %1147 = load i32, ptr %1146, align 4, !tbaa !9
  %1148 = load i32, ptr %41, align 4, !tbaa !9
  %1149 = sub nsw i32 %1148, %1147
  store i32 %1149, ptr %41, align 4, !tbaa !9
  br label %1150

1150:                                             ; preds = %1145, %1133
  br label %1151

1151:                                             ; preds = %1150
  %1152 = load i32, ptr %37, align 4, !tbaa !9
  %1153 = add nsw i32 %1152, -1
  store i32 %1153, ptr %37, align 4, !tbaa !9
  br label %903, !llvm.loop !23

1154:                                             ; preds = %903
  br label %1155

1155:                                             ; preds = %1154, %890
  br label %1156

1156:                                             ; preds = %1155, %653
  br label %2587

1157:                                             ; preds = %150
  %1158 = load ptr, ptr %14, align 8, !tbaa !5
  %1159 = call i32 @lsame_(ptr noundef %1158, ptr noundef @.str, i32 noundef 1, i32 noundef 1)
  %1160 = icmp ne i32 %1159, 0
  br i1 %1160, label %1161, label %1877

1161:                                             ; preds = %1157
  %1162 = load ptr, ptr %18, align 8, !tbaa !5
  %1163 = load i32, ptr %1162, align 4, !tbaa !9
  %1164 = add nsw i32 %1163, 1
  store i32 %1164, ptr %44, align 4, !tbaa !9
  %1165 = load ptr, ptr %22, align 8, !tbaa !5
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = icmp eq i32 %1166, 1
  br i1 %1167, label %1168, label %1509

1168:                                             ; preds = %1161
  %1169 = load ptr, ptr %17, align 8, !tbaa !5
  %1170 = load i32, ptr %1169, align 4, !tbaa !9
  store i32 %1170, ptr %37, align 4, !tbaa !9
  br label %1171

1171:                                             ; preds = %1505, %1168
  %1172 = load i32, ptr %37, align 4, !tbaa !9
  %1173 = icmp sge i32 %1172, 1
  br i1 %1173, label %1174, label %1508

1174:                                             ; preds = %1171
  %1175 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1175, ptr %30, align 4, !tbaa !9
  %1176 = load ptr, ptr %21, align 8, !tbaa !5
  %1177 = load i32, ptr %30, align 4, !tbaa !9
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds %struct.complex, ptr %1176, i64 %1178
  %1180 = getelementptr inbounds %struct.complex, ptr %1179, i32 0, i32 0
  %1181 = load float, ptr %1180, align 4, !tbaa !11
  %1182 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1181, ptr %1182, align 4, !tbaa !11
  %1183 = load ptr, ptr %21, align 8, !tbaa !5
  %1184 = load i32, ptr %30, align 4, !tbaa !9
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds %struct.complex, ptr %1183, i64 %1185
  %1187 = getelementptr inbounds %struct.complex, ptr %1186, i32 0, i32 1
  %1188 = load float, ptr %1187, align 4, !tbaa !14
  %1189 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1188, ptr %1189, align 4, !tbaa !14
  %1190 = load i32, ptr %44, align 4, !tbaa !9
  %1191 = load i32, ptr %37, align 4, !tbaa !9
  %1192 = sub nsw i32 %1190, %1191
  store i32 %1192, ptr %38, align 4, !tbaa !9
  %1193 = load i32, ptr %45, align 4, !tbaa !9
  %1194 = icmp ne i32 %1193, 0
  br i1 %1194, label %1195, label %1355

1195:                                             ; preds = %1174
  %1196 = load i32, ptr %46, align 4, !tbaa !9
  %1197 = icmp ne i32 %1196, 0
  br i1 %1197, label %1198, label %1249

1198:                                             ; preds = %1195
  %1199 = load i32, ptr %44, align 4, !tbaa !9
  %1200 = load i32, ptr %37, align 4, !tbaa !9
  %1201 = load i32, ptr %26, align 4, !tbaa !9
  %1202 = mul nsw i32 %1200, %1201
  %1203 = add nsw i32 %1199, %1202
  store i32 %1203, ptr %30, align 4, !tbaa !9
  %1204 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1205 = load float, ptr %1204, align 4, !tbaa !11
  %1206 = load ptr, ptr %19, align 8, !tbaa !5
  %1207 = load i32, ptr %30, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds %struct.complex, ptr %1206, i64 %1208
  %1210 = getelementptr inbounds %struct.complex, ptr %1209, i32 0, i32 0
  %1211 = load float, ptr %1210, align 4, !tbaa !11
  %1212 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1213 = load float, ptr %1212, align 4, !tbaa !14
  %1214 = load ptr, ptr %19, align 8, !tbaa !5
  %1215 = load i32, ptr %30, align 4, !tbaa !9
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds %struct.complex, ptr %1214, i64 %1216
  %1218 = getelementptr inbounds %struct.complex, ptr %1217, i32 0, i32 1
  %1219 = load float, ptr %1218, align 4, !tbaa !14
  %1220 = fmul float %1213, %1219
  %1221 = fneg float %1220
  %1222 = call float @llvm.fmuladd.f32(float %1205, float %1211, float %1221)
  %1223 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1222, ptr %1223, align 4, !tbaa !11
  %1224 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1225 = load float, ptr %1224, align 4, !tbaa !11
  %1226 = load ptr, ptr %19, align 8, !tbaa !5
  %1227 = load i32, ptr %30, align 4, !tbaa !9
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds %struct.complex, ptr %1226, i64 %1228
  %1230 = getelementptr inbounds %struct.complex, ptr %1229, i32 0, i32 1
  %1231 = load float, ptr %1230, align 4, !tbaa !14
  %1232 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1233 = load float, ptr %1232, align 4, !tbaa !14
  %1234 = load ptr, ptr %19, align 8, !tbaa !5
  %1235 = load i32, ptr %30, align 4, !tbaa !9
  %1236 = sext i32 %1235 to i64
  %1237 = getelementptr inbounds %struct.complex, ptr %1234, i64 %1236
  %1238 = getelementptr inbounds %struct.complex, ptr %1237, i32 0, i32 0
  %1239 = load float, ptr %1238, align 4, !tbaa !11
  %1240 = fmul float %1233, %1239
  %1241 = call float @llvm.fmuladd.f32(float %1225, float %1231, float %1240)
  %1242 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1241, ptr %1242, align 4, !tbaa !14
  %1243 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1244 = load float, ptr %1243, align 4, !tbaa !11
  %1245 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1244, ptr %1245, align 4, !tbaa !11
  %1246 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1247 = load float, ptr %1246, align 4, !tbaa !14
  %1248 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1247, ptr %1248, align 4, !tbaa !14
  br label %1249

1249:                                             ; preds = %1198, %1195
  store i32 1, ptr %31, align 4, !tbaa !9
  %1250 = load i32, ptr %37, align 4, !tbaa !9
  %1251 = load ptr, ptr %18, align 8, !tbaa !5
  %1252 = load i32, ptr %1251, align 4, !tbaa !9
  %1253 = sub nsw i32 %1250, %1252
  store i32 %1253, ptr %28, align 4, !tbaa !9
  %1254 = load i32, ptr %31, align 4, !tbaa !9
  %1255 = load i32, ptr %28, align 4, !tbaa !9
  %1256 = icmp sge i32 %1254, %1255
  br i1 %1256, label %1257, label %1259

1257:                                             ; preds = %1249
  %1258 = load i32, ptr %31, align 4, !tbaa !9
  br label %1261

1259:                                             ; preds = %1249
  %1260 = load i32, ptr %28, align 4, !tbaa !9
  br label %1261

1261:                                             ; preds = %1259, %1257
  %1262 = phi i32 [ %1258, %1257 ], [ %1260, %1259 ]
  store i32 %1262, ptr %30, align 4, !tbaa !9
  %1263 = load i32, ptr %37, align 4, !tbaa !9
  %1264 = sub nsw i32 %1263, 1
  store i32 %1264, ptr %36, align 4, !tbaa !9
  br label %1265

1265:                                             ; preds = %1351, %1261
  %1266 = load i32, ptr %36, align 4, !tbaa !9
  %1267 = load i32, ptr %30, align 4, !tbaa !9
  %1268 = icmp sge i32 %1266, %1267
  br i1 %1268, label %1269, label %1354

1269:                                             ; preds = %1265
  %1270 = load i32, ptr %38, align 4, !tbaa !9
  %1271 = load i32, ptr %36, align 4, !tbaa !9
  %1272 = add nsw i32 %1270, %1271
  %1273 = load i32, ptr %37, align 4, !tbaa !9
  %1274 = load i32, ptr %26, align 4, !tbaa !9
  %1275 = mul nsw i32 %1273, %1274
  %1276 = add nsw i32 %1272, %1275
  store i32 %1276, ptr %31, align 4, !tbaa !9
  %1277 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %1277, ptr %28, align 4, !tbaa !9
  %1278 = load ptr, ptr %19, align 8, !tbaa !5
  %1279 = load i32, ptr %31, align 4, !tbaa !9
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds %struct.complex, ptr %1278, i64 %1280
  %1282 = getelementptr inbounds %struct.complex, ptr %1281, i32 0, i32 0
  %1283 = load float, ptr %1282, align 4, !tbaa !11
  %1284 = load ptr, ptr %21, align 8, !tbaa !5
  %1285 = load i32, ptr %28, align 4, !tbaa !9
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds %struct.complex, ptr %1284, i64 %1286
  %1288 = getelementptr inbounds %struct.complex, ptr %1287, i32 0, i32 0
  %1289 = load float, ptr %1288, align 4, !tbaa !11
  %1290 = load ptr, ptr %19, align 8, !tbaa !5
  %1291 = load i32, ptr %31, align 4, !tbaa !9
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds %struct.complex, ptr %1290, i64 %1292
  %1294 = getelementptr inbounds %struct.complex, ptr %1293, i32 0, i32 1
  %1295 = load float, ptr %1294, align 4, !tbaa !14
  %1296 = load ptr, ptr %21, align 8, !tbaa !5
  %1297 = load i32, ptr %28, align 4, !tbaa !9
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds %struct.complex, ptr %1296, i64 %1298
  %1300 = getelementptr inbounds %struct.complex, ptr %1299, i32 0, i32 1
  %1301 = load float, ptr %1300, align 4, !tbaa !14
  %1302 = fmul float %1295, %1301
  %1303 = fneg float %1302
  %1304 = call float @llvm.fmuladd.f32(float %1283, float %1289, float %1303)
  %1305 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1304, ptr %1305, align 4, !tbaa !11
  %1306 = load ptr, ptr %19, align 8, !tbaa !5
  %1307 = load i32, ptr %31, align 4, !tbaa !9
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds %struct.complex, ptr %1306, i64 %1308
  %1310 = getelementptr inbounds %struct.complex, ptr %1309, i32 0, i32 0
  %1311 = load float, ptr %1310, align 4, !tbaa !11
  %1312 = load ptr, ptr %21, align 8, !tbaa !5
  %1313 = load i32, ptr %28, align 4, !tbaa !9
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds %struct.complex, ptr %1312, i64 %1314
  %1316 = getelementptr inbounds %struct.complex, ptr %1315, i32 0, i32 1
  %1317 = load float, ptr %1316, align 4, !tbaa !14
  %1318 = load ptr, ptr %19, align 8, !tbaa !5
  %1319 = load i32, ptr %31, align 4, !tbaa !9
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds %struct.complex, ptr %1318, i64 %1320
  %1322 = getelementptr inbounds %struct.complex, ptr %1321, i32 0, i32 1
  %1323 = load float, ptr %1322, align 4, !tbaa !14
  %1324 = load ptr, ptr %21, align 8, !tbaa !5
  %1325 = load i32, ptr %28, align 4, !tbaa !9
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds %struct.complex, ptr %1324, i64 %1326
  %1328 = getelementptr inbounds %struct.complex, ptr %1327, i32 0, i32 0
  %1329 = load float, ptr %1328, align 4, !tbaa !11
  %1330 = fmul float %1323, %1329
  %1331 = call float @llvm.fmuladd.f32(float %1311, float %1317, float %1330)
  %1332 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1331, ptr %1332, align 4, !tbaa !14
  %1333 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1334 = load float, ptr %1333, align 4, !tbaa !11
  %1335 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1336 = load float, ptr %1335, align 4, !tbaa !11
  %1337 = fadd float %1334, %1336
  %1338 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1337, ptr %1338, align 4, !tbaa !11
  %1339 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1340 = load float, ptr %1339, align 4, !tbaa !14
  %1341 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1342 = load float, ptr %1341, align 4, !tbaa !14
  %1343 = fadd float %1340, %1342
  %1344 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1343, ptr %1344, align 4, !tbaa !14
  %1345 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1346 = load float, ptr %1345, align 4, !tbaa !11
  %1347 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1346, ptr %1347, align 4, !tbaa !11
  %1348 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1349 = load float, ptr %1348, align 4, !tbaa !14
  %1350 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1349, ptr %1350, align 4, !tbaa !14
  br label %1351

1351:                                             ; preds = %1269
  %1352 = load i32, ptr %36, align 4, !tbaa !9
  %1353 = add nsw i32 %1352, -1
  store i32 %1353, ptr %36, align 4, !tbaa !9
  br label %1265, !llvm.loop !24

1354:                                             ; preds = %1265
  br label %1489

1355:                                             ; preds = %1174
  %1356 = load i32, ptr %46, align 4, !tbaa !9
  %1357 = icmp ne i32 %1356, 0
  br i1 %1357, label %1358, label %1396

1358:                                             ; preds = %1355
  %1359 = load ptr, ptr %19, align 8, !tbaa !5
  %1360 = load i32, ptr %44, align 4, !tbaa !9
  %1361 = load i32, ptr %37, align 4, !tbaa !9
  %1362 = load i32, ptr %26, align 4, !tbaa !9
  %1363 = mul nsw i32 %1361, %1362
  %1364 = add nsw i32 %1360, %1363
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds %struct.complex, ptr %1359, i64 %1365
  call void @r_cnjg(ptr noundef %34, ptr noundef %1366)
  %1367 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1368 = load float, ptr %1367, align 4, !tbaa !11
  %1369 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1370 = load float, ptr %1369, align 4, !tbaa !11
  %1371 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1372 = load float, ptr %1371, align 4, !tbaa !14
  %1373 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1374 = load float, ptr %1373, align 4, !tbaa !14
  %1375 = fmul float %1372, %1374
  %1376 = fneg float %1375
  %1377 = call float @llvm.fmuladd.f32(float %1368, float %1370, float %1376)
  %1378 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1377, ptr %1378, align 4, !tbaa !11
  %1379 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1380 = load float, ptr %1379, align 4, !tbaa !11
  %1381 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1382 = load float, ptr %1381, align 4, !tbaa !14
  %1383 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1384 = load float, ptr %1383, align 4, !tbaa !14
  %1385 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1386 = load float, ptr %1385, align 4, !tbaa !11
  %1387 = fmul float %1384, %1386
  %1388 = call float @llvm.fmuladd.f32(float %1380, float %1382, float %1387)
  %1389 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1388, ptr %1389, align 4, !tbaa !14
  %1390 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1391 = load float, ptr %1390, align 4, !tbaa !11
  %1392 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1391, ptr %1392, align 4, !tbaa !11
  %1393 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1394 = load float, ptr %1393, align 4, !tbaa !14
  %1395 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1394, ptr %1395, align 4, !tbaa !14
  br label %1396

1396:                                             ; preds = %1358, %1355
  store i32 1, ptr %31, align 4, !tbaa !9
  %1397 = load i32, ptr %37, align 4, !tbaa !9
  %1398 = load ptr, ptr %18, align 8, !tbaa !5
  %1399 = load i32, ptr %1398, align 4, !tbaa !9
  %1400 = sub nsw i32 %1397, %1399
  store i32 %1400, ptr %28, align 4, !tbaa !9
  %1401 = load i32, ptr %31, align 4, !tbaa !9
  %1402 = load i32, ptr %28, align 4, !tbaa !9
  %1403 = icmp sge i32 %1401, %1402
  br i1 %1403, label %1404, label %1406

1404:                                             ; preds = %1396
  %1405 = load i32, ptr %31, align 4, !tbaa !9
  br label %1408

1406:                                             ; preds = %1396
  %1407 = load i32, ptr %28, align 4, !tbaa !9
  br label %1408

1408:                                             ; preds = %1406, %1404
  %1409 = phi i32 [ %1405, %1404 ], [ %1407, %1406 ]
  store i32 %1409, ptr %30, align 4, !tbaa !9
  %1410 = load i32, ptr %37, align 4, !tbaa !9
  %1411 = sub nsw i32 %1410, 1
  store i32 %1411, ptr %36, align 4, !tbaa !9
  br label %1412

1412:                                             ; preds = %1485, %1408
  %1413 = load i32, ptr %36, align 4, !tbaa !9
  %1414 = load i32, ptr %30, align 4, !tbaa !9
  %1415 = icmp sge i32 %1413, %1414
  br i1 %1415, label %1416, label %1488

1416:                                             ; preds = %1412
  %1417 = load ptr, ptr %19, align 8, !tbaa !5
  %1418 = load i32, ptr %38, align 4, !tbaa !9
  %1419 = load i32, ptr %36, align 4, !tbaa !9
  %1420 = add nsw i32 %1418, %1419
  %1421 = load i32, ptr %37, align 4, !tbaa !9
  %1422 = load i32, ptr %26, align 4, !tbaa !9
  %1423 = mul nsw i32 %1421, %1422
  %1424 = add nsw i32 %1420, %1423
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds %struct.complex, ptr %1417, i64 %1425
  call void @r_cnjg(ptr noundef %35, ptr noundef %1426)
  %1427 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %1427, ptr %31, align 4, !tbaa !9
  %1428 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1429 = load float, ptr %1428, align 4, !tbaa !11
  %1430 = load ptr, ptr %21, align 8, !tbaa !5
  %1431 = load i32, ptr %31, align 4, !tbaa !9
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds %struct.complex, ptr %1430, i64 %1432
  %1434 = getelementptr inbounds %struct.complex, ptr %1433, i32 0, i32 0
  %1435 = load float, ptr %1434, align 4, !tbaa !11
  %1436 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1437 = load float, ptr %1436, align 4, !tbaa !14
  %1438 = load ptr, ptr %21, align 8, !tbaa !5
  %1439 = load i32, ptr %31, align 4, !tbaa !9
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds %struct.complex, ptr %1438, i64 %1440
  %1442 = getelementptr inbounds %struct.complex, ptr %1441, i32 0, i32 1
  %1443 = load float, ptr %1442, align 4, !tbaa !14
  %1444 = fmul float %1437, %1443
  %1445 = fneg float %1444
  %1446 = call float @llvm.fmuladd.f32(float %1429, float %1435, float %1445)
  %1447 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1446, ptr %1447, align 4, !tbaa !11
  %1448 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1449 = load float, ptr %1448, align 4, !tbaa !11
  %1450 = load ptr, ptr %21, align 8, !tbaa !5
  %1451 = load i32, ptr %31, align 4, !tbaa !9
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds %struct.complex, ptr %1450, i64 %1452
  %1454 = getelementptr inbounds %struct.complex, ptr %1453, i32 0, i32 1
  %1455 = load float, ptr %1454, align 4, !tbaa !14
  %1456 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1457 = load float, ptr %1456, align 4, !tbaa !14
  %1458 = load ptr, ptr %21, align 8, !tbaa !5
  %1459 = load i32, ptr %31, align 4, !tbaa !9
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds %struct.complex, ptr %1458, i64 %1460
  %1462 = getelementptr inbounds %struct.complex, ptr %1461, i32 0, i32 0
  %1463 = load float, ptr %1462, align 4, !tbaa !11
  %1464 = fmul float %1457, %1463
  %1465 = call float @llvm.fmuladd.f32(float %1449, float %1455, float %1464)
  %1466 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1465, ptr %1466, align 4, !tbaa !14
  %1467 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1468 = load float, ptr %1467, align 4, !tbaa !11
  %1469 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1470 = load float, ptr %1469, align 4, !tbaa !11
  %1471 = fadd float %1468, %1470
  %1472 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1471, ptr %1472, align 4, !tbaa !11
  %1473 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1474 = load float, ptr %1473, align 4, !tbaa !14
  %1475 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1476 = load float, ptr %1475, align 4, !tbaa !14
  %1477 = fadd float %1474, %1476
  %1478 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1477, ptr %1478, align 4, !tbaa !14
  %1479 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1480 = load float, ptr %1479, align 4, !tbaa !11
  %1481 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1480, ptr %1481, align 4, !tbaa !11
  %1482 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1483 = load float, ptr %1482, align 4, !tbaa !14
  %1484 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1483, ptr %1484, align 4, !tbaa !14
  br label %1485

1485:                                             ; preds = %1416
  %1486 = load i32, ptr %36, align 4, !tbaa !9
  %1487 = add nsw i32 %1486, -1
  store i32 %1487, ptr %36, align 4, !tbaa !9
  br label %1412, !llvm.loop !25

1488:                                             ; preds = %1412
  br label %1489

1489:                                             ; preds = %1488, %1354
  %1490 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1490, ptr %30, align 4, !tbaa !9
  %1491 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1492 = load float, ptr %1491, align 4, !tbaa !11
  %1493 = load ptr, ptr %21, align 8, !tbaa !5
  %1494 = load i32, ptr %30, align 4, !tbaa !9
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds %struct.complex, ptr %1493, i64 %1495
  %1497 = getelementptr inbounds %struct.complex, ptr %1496, i32 0, i32 0
  store float %1492, ptr %1497, align 4, !tbaa !11
  %1498 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1499 = load float, ptr %1498, align 4, !tbaa !14
  %1500 = load ptr, ptr %21, align 8, !tbaa !5
  %1501 = load i32, ptr %30, align 4, !tbaa !9
  %1502 = sext i32 %1501 to i64
  %1503 = getelementptr inbounds %struct.complex, ptr %1500, i64 %1502
  %1504 = getelementptr inbounds %struct.complex, ptr %1503, i32 0, i32 1
  store float %1499, ptr %1504, align 4, !tbaa !14
  br label %1505

1505:                                             ; preds = %1489
  %1506 = load i32, ptr %37, align 4, !tbaa !9
  %1507 = add nsw i32 %1506, -1
  store i32 %1507, ptr %37, align 4, !tbaa !9
  br label %1171, !llvm.loop !26

1508:                                             ; preds = %1171
  br label %1876

1509:                                             ; preds = %1161
  %1510 = load ptr, ptr %17, align 8, !tbaa !5
  %1511 = load i32, ptr %1510, align 4, !tbaa !9
  %1512 = sub nsw i32 %1511, 1
  %1513 = load ptr, ptr %22, align 8, !tbaa !5
  %1514 = load i32, ptr %1513, align 4, !tbaa !9
  %1515 = mul nsw i32 %1512, %1514
  %1516 = load i32, ptr %41, align 4, !tbaa !9
  %1517 = add nsw i32 %1516, %1515
  store i32 %1517, ptr %41, align 4, !tbaa !9
  %1518 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1518, ptr %40, align 4, !tbaa !9
  %1519 = load ptr, ptr %17, align 8, !tbaa !5
  %1520 = load i32, ptr %1519, align 4, !tbaa !9
  store i32 %1520, ptr %37, align 4, !tbaa !9
  br label %1521

1521:                                             ; preds = %1872, %1509
  %1522 = load i32, ptr %37, align 4, !tbaa !9
  %1523 = icmp sge i32 %1522, 1
  br i1 %1523, label %1524, label %1875

1524:                                             ; preds = %1521
  %1525 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1525, ptr %30, align 4, !tbaa !9
  %1526 = load ptr, ptr %21, align 8, !tbaa !5
  %1527 = load i32, ptr %30, align 4, !tbaa !9
  %1528 = sext i32 %1527 to i64
  %1529 = getelementptr inbounds %struct.complex, ptr %1526, i64 %1528
  %1530 = getelementptr inbounds %struct.complex, ptr %1529, i32 0, i32 0
  %1531 = load float, ptr %1530, align 4, !tbaa !11
  %1532 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1531, ptr %1532, align 4, !tbaa !11
  %1533 = load ptr, ptr %21, align 8, !tbaa !5
  %1534 = load i32, ptr %30, align 4, !tbaa !9
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds %struct.complex, ptr %1533, i64 %1535
  %1537 = getelementptr inbounds %struct.complex, ptr %1536, i32 0, i32 1
  %1538 = load float, ptr %1537, align 4, !tbaa !14
  %1539 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1538, ptr %1539, align 4, !tbaa !14
  %1540 = load ptr, ptr %22, align 8, !tbaa !5
  %1541 = load i32, ptr %1540, align 4, !tbaa !9
  %1542 = load i32, ptr %41, align 4, !tbaa !9
  %1543 = sub nsw i32 %1542, %1541
  store i32 %1543, ptr %41, align 4, !tbaa !9
  %1544 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1544, ptr %39, align 4, !tbaa !9
  %1545 = load i32, ptr %44, align 4, !tbaa !9
  %1546 = load i32, ptr %37, align 4, !tbaa !9
  %1547 = sub nsw i32 %1545, %1546
  store i32 %1547, ptr %38, align 4, !tbaa !9
  %1548 = load i32, ptr %45, align 4, !tbaa !9
  %1549 = icmp ne i32 %1548, 0
  br i1 %1549, label %1550, label %1714

1550:                                             ; preds = %1524
  %1551 = load i32, ptr %46, align 4, !tbaa !9
  %1552 = icmp ne i32 %1551, 0
  br i1 %1552, label %1553, label %1604

1553:                                             ; preds = %1550
  %1554 = load i32, ptr %44, align 4, !tbaa !9
  %1555 = load i32, ptr %37, align 4, !tbaa !9
  %1556 = load i32, ptr %26, align 4, !tbaa !9
  %1557 = mul nsw i32 %1555, %1556
  %1558 = add nsw i32 %1554, %1557
  store i32 %1558, ptr %30, align 4, !tbaa !9
  %1559 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1560 = load float, ptr %1559, align 4, !tbaa !11
  %1561 = load ptr, ptr %19, align 8, !tbaa !5
  %1562 = load i32, ptr %30, align 4, !tbaa !9
  %1563 = sext i32 %1562 to i64
  %1564 = getelementptr inbounds %struct.complex, ptr %1561, i64 %1563
  %1565 = getelementptr inbounds %struct.complex, ptr %1564, i32 0, i32 0
  %1566 = load float, ptr %1565, align 4, !tbaa !11
  %1567 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1568 = load float, ptr %1567, align 4, !tbaa !14
  %1569 = load ptr, ptr %19, align 8, !tbaa !5
  %1570 = load i32, ptr %30, align 4, !tbaa !9
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds %struct.complex, ptr %1569, i64 %1571
  %1573 = getelementptr inbounds %struct.complex, ptr %1572, i32 0, i32 1
  %1574 = load float, ptr %1573, align 4, !tbaa !14
  %1575 = fmul float %1568, %1574
  %1576 = fneg float %1575
  %1577 = call float @llvm.fmuladd.f32(float %1560, float %1566, float %1576)
  %1578 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1577, ptr %1578, align 4, !tbaa !11
  %1579 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1580 = load float, ptr %1579, align 4, !tbaa !11
  %1581 = load ptr, ptr %19, align 8, !tbaa !5
  %1582 = load i32, ptr %30, align 4, !tbaa !9
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds %struct.complex, ptr %1581, i64 %1583
  %1585 = getelementptr inbounds %struct.complex, ptr %1584, i32 0, i32 1
  %1586 = load float, ptr %1585, align 4, !tbaa !14
  %1587 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1588 = load float, ptr %1587, align 4, !tbaa !14
  %1589 = load ptr, ptr %19, align 8, !tbaa !5
  %1590 = load i32, ptr %30, align 4, !tbaa !9
  %1591 = sext i32 %1590 to i64
  %1592 = getelementptr inbounds %struct.complex, ptr %1589, i64 %1591
  %1593 = getelementptr inbounds %struct.complex, ptr %1592, i32 0, i32 0
  %1594 = load float, ptr %1593, align 4, !tbaa !11
  %1595 = fmul float %1588, %1594
  %1596 = call float @llvm.fmuladd.f32(float %1580, float %1586, float %1595)
  %1597 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1596, ptr %1597, align 4, !tbaa !14
  %1598 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1599 = load float, ptr %1598, align 4, !tbaa !11
  %1600 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1599, ptr %1600, align 4, !tbaa !11
  %1601 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1602 = load float, ptr %1601, align 4, !tbaa !14
  %1603 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1602, ptr %1603, align 4, !tbaa !14
  br label %1604

1604:                                             ; preds = %1553, %1550
  store i32 1, ptr %31, align 4, !tbaa !9
  %1605 = load i32, ptr %37, align 4, !tbaa !9
  %1606 = load ptr, ptr %18, align 8, !tbaa !5
  %1607 = load i32, ptr %1606, align 4, !tbaa !9
  %1608 = sub nsw i32 %1605, %1607
  store i32 %1608, ptr %28, align 4, !tbaa !9
  %1609 = load i32, ptr %31, align 4, !tbaa !9
  %1610 = load i32, ptr %28, align 4, !tbaa !9
  %1611 = icmp sge i32 %1609, %1610
  br i1 %1611, label %1612, label %1614

1612:                                             ; preds = %1604
  %1613 = load i32, ptr %31, align 4, !tbaa !9
  br label %1616

1614:                                             ; preds = %1604
  %1615 = load i32, ptr %28, align 4, !tbaa !9
  br label %1616

1616:                                             ; preds = %1614, %1612
  %1617 = phi i32 [ %1613, %1612 ], [ %1615, %1614 ]
  store i32 %1617, ptr %30, align 4, !tbaa !9
  %1618 = load i32, ptr %37, align 4, !tbaa !9
  %1619 = sub nsw i32 %1618, 1
  store i32 %1619, ptr %36, align 4, !tbaa !9
  br label %1620

1620:                                             ; preds = %1710, %1616
  %1621 = load i32, ptr %36, align 4, !tbaa !9
  %1622 = load i32, ptr %30, align 4, !tbaa !9
  %1623 = icmp sge i32 %1621, %1622
  br i1 %1623, label %1624, label %1713

1624:                                             ; preds = %1620
  %1625 = load i32, ptr %38, align 4, !tbaa !9
  %1626 = load i32, ptr %36, align 4, !tbaa !9
  %1627 = add nsw i32 %1625, %1626
  %1628 = load i32, ptr %37, align 4, !tbaa !9
  %1629 = load i32, ptr %26, align 4, !tbaa !9
  %1630 = mul nsw i32 %1628, %1629
  %1631 = add nsw i32 %1627, %1630
  store i32 %1631, ptr %31, align 4, !tbaa !9
  %1632 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1632, ptr %28, align 4, !tbaa !9
  %1633 = load ptr, ptr %19, align 8, !tbaa !5
  %1634 = load i32, ptr %31, align 4, !tbaa !9
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds %struct.complex, ptr %1633, i64 %1635
  %1637 = getelementptr inbounds %struct.complex, ptr %1636, i32 0, i32 0
  %1638 = load float, ptr %1637, align 4, !tbaa !11
  %1639 = load ptr, ptr %21, align 8, !tbaa !5
  %1640 = load i32, ptr %28, align 4, !tbaa !9
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds %struct.complex, ptr %1639, i64 %1641
  %1643 = getelementptr inbounds %struct.complex, ptr %1642, i32 0, i32 0
  %1644 = load float, ptr %1643, align 4, !tbaa !11
  %1645 = load ptr, ptr %19, align 8, !tbaa !5
  %1646 = load i32, ptr %31, align 4, !tbaa !9
  %1647 = sext i32 %1646 to i64
  %1648 = getelementptr inbounds %struct.complex, ptr %1645, i64 %1647
  %1649 = getelementptr inbounds %struct.complex, ptr %1648, i32 0, i32 1
  %1650 = load float, ptr %1649, align 4, !tbaa !14
  %1651 = load ptr, ptr %21, align 8, !tbaa !5
  %1652 = load i32, ptr %28, align 4, !tbaa !9
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds %struct.complex, ptr %1651, i64 %1653
  %1655 = getelementptr inbounds %struct.complex, ptr %1654, i32 0, i32 1
  %1656 = load float, ptr %1655, align 4, !tbaa !14
  %1657 = fmul float %1650, %1656
  %1658 = fneg float %1657
  %1659 = call float @llvm.fmuladd.f32(float %1638, float %1644, float %1658)
  %1660 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1659, ptr %1660, align 4, !tbaa !11
  %1661 = load ptr, ptr %19, align 8, !tbaa !5
  %1662 = load i32, ptr %31, align 4, !tbaa !9
  %1663 = sext i32 %1662 to i64
  %1664 = getelementptr inbounds %struct.complex, ptr %1661, i64 %1663
  %1665 = getelementptr inbounds %struct.complex, ptr %1664, i32 0, i32 0
  %1666 = load float, ptr %1665, align 4, !tbaa !11
  %1667 = load ptr, ptr %21, align 8, !tbaa !5
  %1668 = load i32, ptr %28, align 4, !tbaa !9
  %1669 = sext i32 %1668 to i64
  %1670 = getelementptr inbounds %struct.complex, ptr %1667, i64 %1669
  %1671 = getelementptr inbounds %struct.complex, ptr %1670, i32 0, i32 1
  %1672 = load float, ptr %1671, align 4, !tbaa !14
  %1673 = load ptr, ptr %19, align 8, !tbaa !5
  %1674 = load i32, ptr %31, align 4, !tbaa !9
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds %struct.complex, ptr %1673, i64 %1675
  %1677 = getelementptr inbounds %struct.complex, ptr %1676, i32 0, i32 1
  %1678 = load float, ptr %1677, align 4, !tbaa !14
  %1679 = load ptr, ptr %21, align 8, !tbaa !5
  %1680 = load i32, ptr %28, align 4, !tbaa !9
  %1681 = sext i32 %1680 to i64
  %1682 = getelementptr inbounds %struct.complex, ptr %1679, i64 %1681
  %1683 = getelementptr inbounds %struct.complex, ptr %1682, i32 0, i32 0
  %1684 = load float, ptr %1683, align 4, !tbaa !11
  %1685 = fmul float %1678, %1684
  %1686 = call float @llvm.fmuladd.f32(float %1666, float %1672, float %1685)
  %1687 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1686, ptr %1687, align 4, !tbaa !14
  %1688 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1689 = load float, ptr %1688, align 4, !tbaa !11
  %1690 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1691 = load float, ptr %1690, align 4, !tbaa !11
  %1692 = fadd float %1689, %1691
  %1693 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1692, ptr %1693, align 4, !tbaa !11
  %1694 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1695 = load float, ptr %1694, align 4, !tbaa !14
  %1696 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1697 = load float, ptr %1696, align 4, !tbaa !14
  %1698 = fadd float %1695, %1697
  %1699 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1698, ptr %1699, align 4, !tbaa !14
  %1700 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1701 = load float, ptr %1700, align 4, !tbaa !11
  %1702 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1701, ptr %1702, align 4, !tbaa !11
  %1703 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1704 = load float, ptr %1703, align 4, !tbaa !14
  %1705 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1704, ptr %1705, align 4, !tbaa !14
  %1706 = load ptr, ptr %22, align 8, !tbaa !5
  %1707 = load i32, ptr %1706, align 4, !tbaa !9
  %1708 = load i32, ptr %39, align 4, !tbaa !9
  %1709 = sub nsw i32 %1708, %1707
  store i32 %1709, ptr %39, align 4, !tbaa !9
  br label %1710

1710:                                             ; preds = %1624
  %1711 = load i32, ptr %36, align 4, !tbaa !9
  %1712 = add nsw i32 %1711, -1
  store i32 %1712, ptr %36, align 4, !tbaa !9
  br label %1620, !llvm.loop !27

1713:                                             ; preds = %1620
  br label %1852

1714:                                             ; preds = %1524
  %1715 = load i32, ptr %46, align 4, !tbaa !9
  %1716 = icmp ne i32 %1715, 0
  br i1 %1716, label %1717, label %1755

1717:                                             ; preds = %1714
  %1718 = load ptr, ptr %19, align 8, !tbaa !5
  %1719 = load i32, ptr %44, align 4, !tbaa !9
  %1720 = load i32, ptr %37, align 4, !tbaa !9
  %1721 = load i32, ptr %26, align 4, !tbaa !9
  %1722 = mul nsw i32 %1720, %1721
  %1723 = add nsw i32 %1719, %1722
  %1724 = sext i32 %1723 to i64
  %1725 = getelementptr inbounds %struct.complex, ptr %1718, i64 %1724
  call void @r_cnjg(ptr noundef %34, ptr noundef %1725)
  %1726 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1727 = load float, ptr %1726, align 4, !tbaa !11
  %1728 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1729 = load float, ptr %1728, align 4, !tbaa !11
  %1730 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1731 = load float, ptr %1730, align 4, !tbaa !14
  %1732 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1733 = load float, ptr %1732, align 4, !tbaa !14
  %1734 = fmul float %1731, %1733
  %1735 = fneg float %1734
  %1736 = call float @llvm.fmuladd.f32(float %1727, float %1729, float %1735)
  %1737 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1736, ptr %1737, align 4, !tbaa !11
  %1738 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1739 = load float, ptr %1738, align 4, !tbaa !11
  %1740 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1741 = load float, ptr %1740, align 4, !tbaa !14
  %1742 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1743 = load float, ptr %1742, align 4, !tbaa !14
  %1744 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1745 = load float, ptr %1744, align 4, !tbaa !11
  %1746 = fmul float %1743, %1745
  %1747 = call float @llvm.fmuladd.f32(float %1739, float %1741, float %1746)
  %1748 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1747, ptr %1748, align 4, !tbaa !14
  %1749 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1750 = load float, ptr %1749, align 4, !tbaa !11
  %1751 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1750, ptr %1751, align 4, !tbaa !11
  %1752 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1753 = load float, ptr %1752, align 4, !tbaa !14
  %1754 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1753, ptr %1754, align 4, !tbaa !14
  br label %1755

1755:                                             ; preds = %1717, %1714
  store i32 1, ptr %31, align 4, !tbaa !9
  %1756 = load i32, ptr %37, align 4, !tbaa !9
  %1757 = load ptr, ptr %18, align 8, !tbaa !5
  %1758 = load i32, ptr %1757, align 4, !tbaa !9
  %1759 = sub nsw i32 %1756, %1758
  store i32 %1759, ptr %28, align 4, !tbaa !9
  %1760 = load i32, ptr %31, align 4, !tbaa !9
  %1761 = load i32, ptr %28, align 4, !tbaa !9
  %1762 = icmp sge i32 %1760, %1761
  br i1 %1762, label %1763, label %1765

1763:                                             ; preds = %1755
  %1764 = load i32, ptr %31, align 4, !tbaa !9
  br label %1767

1765:                                             ; preds = %1755
  %1766 = load i32, ptr %28, align 4, !tbaa !9
  br label %1767

1767:                                             ; preds = %1765, %1763
  %1768 = phi i32 [ %1764, %1763 ], [ %1766, %1765 ]
  store i32 %1768, ptr %30, align 4, !tbaa !9
  %1769 = load i32, ptr %37, align 4, !tbaa !9
  %1770 = sub nsw i32 %1769, 1
  store i32 %1770, ptr %36, align 4, !tbaa !9
  br label %1771

1771:                                             ; preds = %1848, %1767
  %1772 = load i32, ptr %36, align 4, !tbaa !9
  %1773 = load i32, ptr %30, align 4, !tbaa !9
  %1774 = icmp sge i32 %1772, %1773
  br i1 %1774, label %1775, label %1851

1775:                                             ; preds = %1771
  %1776 = load ptr, ptr %19, align 8, !tbaa !5
  %1777 = load i32, ptr %38, align 4, !tbaa !9
  %1778 = load i32, ptr %36, align 4, !tbaa !9
  %1779 = add nsw i32 %1777, %1778
  %1780 = load i32, ptr %37, align 4, !tbaa !9
  %1781 = load i32, ptr %26, align 4, !tbaa !9
  %1782 = mul nsw i32 %1780, %1781
  %1783 = add nsw i32 %1779, %1782
  %1784 = sext i32 %1783 to i64
  %1785 = getelementptr inbounds %struct.complex, ptr %1776, i64 %1784
  call void @r_cnjg(ptr noundef %35, ptr noundef %1785)
  %1786 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1786, ptr %31, align 4, !tbaa !9
  %1787 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1788 = load float, ptr %1787, align 4, !tbaa !11
  %1789 = load ptr, ptr %21, align 8, !tbaa !5
  %1790 = load i32, ptr %31, align 4, !tbaa !9
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds %struct.complex, ptr %1789, i64 %1791
  %1793 = getelementptr inbounds %struct.complex, ptr %1792, i32 0, i32 0
  %1794 = load float, ptr %1793, align 4, !tbaa !11
  %1795 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1796 = load float, ptr %1795, align 4, !tbaa !14
  %1797 = load ptr, ptr %21, align 8, !tbaa !5
  %1798 = load i32, ptr %31, align 4, !tbaa !9
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds %struct.complex, ptr %1797, i64 %1799
  %1801 = getelementptr inbounds %struct.complex, ptr %1800, i32 0, i32 1
  %1802 = load float, ptr %1801, align 4, !tbaa !14
  %1803 = fmul float %1796, %1802
  %1804 = fneg float %1803
  %1805 = call float @llvm.fmuladd.f32(float %1788, float %1794, float %1804)
  %1806 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1805, ptr %1806, align 4, !tbaa !11
  %1807 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1808 = load float, ptr %1807, align 4, !tbaa !11
  %1809 = load ptr, ptr %21, align 8, !tbaa !5
  %1810 = load i32, ptr %31, align 4, !tbaa !9
  %1811 = sext i32 %1810 to i64
  %1812 = getelementptr inbounds %struct.complex, ptr %1809, i64 %1811
  %1813 = getelementptr inbounds %struct.complex, ptr %1812, i32 0, i32 1
  %1814 = load float, ptr %1813, align 4, !tbaa !14
  %1815 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1816 = load float, ptr %1815, align 4, !tbaa !14
  %1817 = load ptr, ptr %21, align 8, !tbaa !5
  %1818 = load i32, ptr %31, align 4, !tbaa !9
  %1819 = sext i32 %1818 to i64
  %1820 = getelementptr inbounds %struct.complex, ptr %1817, i64 %1819
  %1821 = getelementptr inbounds %struct.complex, ptr %1820, i32 0, i32 0
  %1822 = load float, ptr %1821, align 4, !tbaa !11
  %1823 = fmul float %1816, %1822
  %1824 = call float @llvm.fmuladd.f32(float %1808, float %1814, float %1823)
  %1825 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1824, ptr %1825, align 4, !tbaa !14
  %1826 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1827 = load float, ptr %1826, align 4, !tbaa !11
  %1828 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1829 = load float, ptr %1828, align 4, !tbaa !11
  %1830 = fadd float %1827, %1829
  %1831 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1830, ptr %1831, align 4, !tbaa !11
  %1832 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1833 = load float, ptr %1832, align 4, !tbaa !14
  %1834 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1835 = load float, ptr %1834, align 4, !tbaa !14
  %1836 = fadd float %1833, %1835
  %1837 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1836, ptr %1837, align 4, !tbaa !14
  %1838 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1839 = load float, ptr %1838, align 4, !tbaa !11
  %1840 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1839, ptr %1840, align 4, !tbaa !11
  %1841 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1842 = load float, ptr %1841, align 4, !tbaa !14
  %1843 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1842, ptr %1843, align 4, !tbaa !14
  %1844 = load ptr, ptr %22, align 8, !tbaa !5
  %1845 = load i32, ptr %1844, align 4, !tbaa !9
  %1846 = load i32, ptr %39, align 4, !tbaa !9
  %1847 = sub nsw i32 %1846, %1845
  store i32 %1847, ptr %39, align 4, !tbaa !9
  br label %1848

1848:                                             ; preds = %1775
  %1849 = load i32, ptr %36, align 4, !tbaa !9
  %1850 = add nsw i32 %1849, -1
  store i32 %1850, ptr %36, align 4, !tbaa !9
  br label %1771, !llvm.loop !28

1851:                                             ; preds = %1771
  br label %1852

1852:                                             ; preds = %1851, %1713
  %1853 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1853, ptr %30, align 4, !tbaa !9
  %1854 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1855 = load float, ptr %1854, align 4, !tbaa !11
  %1856 = load ptr, ptr %21, align 8, !tbaa !5
  %1857 = load i32, ptr %30, align 4, !tbaa !9
  %1858 = sext i32 %1857 to i64
  %1859 = getelementptr inbounds %struct.complex, ptr %1856, i64 %1858
  %1860 = getelementptr inbounds %struct.complex, ptr %1859, i32 0, i32 0
  store float %1855, ptr %1860, align 4, !tbaa !11
  %1861 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1862 = load float, ptr %1861, align 4, !tbaa !14
  %1863 = load ptr, ptr %21, align 8, !tbaa !5
  %1864 = load i32, ptr %30, align 4, !tbaa !9
  %1865 = sext i32 %1864 to i64
  %1866 = getelementptr inbounds %struct.complex, ptr %1863, i64 %1865
  %1867 = getelementptr inbounds %struct.complex, ptr %1866, i32 0, i32 1
  store float %1862, ptr %1867, align 4, !tbaa !14
  %1868 = load ptr, ptr %22, align 8, !tbaa !5
  %1869 = load i32, ptr %1868, align 4, !tbaa !9
  %1870 = load i32, ptr %40, align 4, !tbaa !9
  %1871 = sub nsw i32 %1870, %1869
  store i32 %1871, ptr %40, align 4, !tbaa !9
  br label %1872

1872:                                             ; preds = %1852
  %1873 = load i32, ptr %37, align 4, !tbaa !9
  %1874 = add nsw i32 %1873, -1
  store i32 %1874, ptr %37, align 4, !tbaa !9
  br label %1521, !llvm.loop !29

1875:                                             ; preds = %1521
  br label %1876

1876:                                             ; preds = %1875, %1508
  br label %2586

1877:                                             ; preds = %1157
  %1878 = load ptr, ptr %22, align 8, !tbaa !5
  %1879 = load i32, ptr %1878, align 4, !tbaa !9
  %1880 = icmp eq i32 %1879, 1
  br i1 %1880, label %1881, label %2224

1881:                                             ; preds = %1877
  %1882 = load ptr, ptr %17, align 8, !tbaa !5
  %1883 = load i32, ptr %1882, align 4, !tbaa !9
  store i32 %1883, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %1884

1884:                                             ; preds = %2220, %1881
  %1885 = load i32, ptr %37, align 4, !tbaa !9
  %1886 = load i32, ptr %30, align 4, !tbaa !9
  %1887 = icmp sle i32 %1885, %1886
  br i1 %1887, label %1888, label %2223

1888:                                             ; preds = %1884
  %1889 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1889, ptr %31, align 4, !tbaa !9
  %1890 = load ptr, ptr %21, align 8, !tbaa !5
  %1891 = load i32, ptr %31, align 4, !tbaa !9
  %1892 = sext i32 %1891 to i64
  %1893 = getelementptr inbounds %struct.complex, ptr %1890, i64 %1892
  %1894 = getelementptr inbounds %struct.complex, ptr %1893, i32 0, i32 0
  %1895 = load float, ptr %1894, align 4, !tbaa !11
  %1896 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1895, ptr %1896, align 4, !tbaa !11
  %1897 = load ptr, ptr %21, align 8, !tbaa !5
  %1898 = load i32, ptr %31, align 4, !tbaa !9
  %1899 = sext i32 %1898 to i64
  %1900 = getelementptr inbounds %struct.complex, ptr %1897, i64 %1899
  %1901 = getelementptr inbounds %struct.complex, ptr %1900, i32 0, i32 1
  %1902 = load float, ptr %1901, align 4, !tbaa !14
  %1903 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1902, ptr %1903, align 4, !tbaa !14
  %1904 = load i32, ptr %37, align 4, !tbaa !9
  %1905 = sub nsw i32 1, %1904
  store i32 %1905, ptr %38, align 4, !tbaa !9
  %1906 = load i32, ptr %45, align 4, !tbaa !9
  %1907 = icmp ne i32 %1906, 0
  br i1 %1907, label %1908, label %2069

1908:                                             ; preds = %1888
  %1909 = load i32, ptr %46, align 4, !tbaa !9
  %1910 = icmp ne i32 %1909, 0
  br i1 %1910, label %1911, label %1961

1911:                                             ; preds = %1908
  %1912 = load i32, ptr %37, align 4, !tbaa !9
  %1913 = load i32, ptr %26, align 4, !tbaa !9
  %1914 = mul nsw i32 %1912, %1913
  %1915 = add nsw i32 %1914, 1
  store i32 %1915, ptr %31, align 4, !tbaa !9
  %1916 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1917 = load float, ptr %1916, align 4, !tbaa !11
  %1918 = load ptr, ptr %19, align 8, !tbaa !5
  %1919 = load i32, ptr %31, align 4, !tbaa !9
  %1920 = sext i32 %1919 to i64
  %1921 = getelementptr inbounds %struct.complex, ptr %1918, i64 %1920
  %1922 = getelementptr inbounds %struct.complex, ptr %1921, i32 0, i32 0
  %1923 = load float, ptr %1922, align 4, !tbaa !11
  %1924 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1925 = load float, ptr %1924, align 4, !tbaa !14
  %1926 = load ptr, ptr %19, align 8, !tbaa !5
  %1927 = load i32, ptr %31, align 4, !tbaa !9
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds %struct.complex, ptr %1926, i64 %1928
  %1930 = getelementptr inbounds %struct.complex, ptr %1929, i32 0, i32 1
  %1931 = load float, ptr %1930, align 4, !tbaa !14
  %1932 = fmul float %1925, %1931
  %1933 = fneg float %1932
  %1934 = call float @llvm.fmuladd.f32(float %1917, float %1923, float %1933)
  %1935 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1934, ptr %1935, align 4, !tbaa !11
  %1936 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1937 = load float, ptr %1936, align 4, !tbaa !11
  %1938 = load ptr, ptr %19, align 8, !tbaa !5
  %1939 = load i32, ptr %31, align 4, !tbaa !9
  %1940 = sext i32 %1939 to i64
  %1941 = getelementptr inbounds %struct.complex, ptr %1938, i64 %1940
  %1942 = getelementptr inbounds %struct.complex, ptr %1941, i32 0, i32 1
  %1943 = load float, ptr %1942, align 4, !tbaa !14
  %1944 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1945 = load float, ptr %1944, align 4, !tbaa !14
  %1946 = load ptr, ptr %19, align 8, !tbaa !5
  %1947 = load i32, ptr %31, align 4, !tbaa !9
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds %struct.complex, ptr %1946, i64 %1948
  %1950 = getelementptr inbounds %struct.complex, ptr %1949, i32 0, i32 0
  %1951 = load float, ptr %1950, align 4, !tbaa !11
  %1952 = fmul float %1945, %1951
  %1953 = call float @llvm.fmuladd.f32(float %1937, float %1943, float %1952)
  %1954 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1953, ptr %1954, align 4, !tbaa !14
  %1955 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1956 = load float, ptr %1955, align 4, !tbaa !11
  %1957 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1956, ptr %1957, align 4, !tbaa !11
  %1958 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1959 = load float, ptr %1958, align 4, !tbaa !14
  %1960 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1959, ptr %1960, align 4, !tbaa !14
  br label %1961

1961:                                             ; preds = %1911, %1908
  %1962 = load ptr, ptr %17, align 8, !tbaa !5
  %1963 = load i32, ptr %1962, align 4, !tbaa !9
  store i32 %1963, ptr %28, align 4, !tbaa !9
  %1964 = load i32, ptr %37, align 4, !tbaa !9
  %1965 = load ptr, ptr %18, align 8, !tbaa !5
  %1966 = load i32, ptr %1965, align 4, !tbaa !9
  %1967 = add nsw i32 %1964, %1966
  store i32 %1967, ptr %29, align 4, !tbaa !9
  %1968 = load i32, ptr %28, align 4, !tbaa !9
  %1969 = load i32, ptr %29, align 4, !tbaa !9
  %1970 = icmp sle i32 %1968, %1969
  br i1 %1970, label %1971, label %1973

1971:                                             ; preds = %1961
  %1972 = load i32, ptr %28, align 4, !tbaa !9
  br label %1975

1973:                                             ; preds = %1961
  %1974 = load i32, ptr %29, align 4, !tbaa !9
  br label %1975

1975:                                             ; preds = %1973, %1971
  %1976 = phi i32 [ %1972, %1971 ], [ %1974, %1973 ]
  store i32 %1976, ptr %31, align 4, !tbaa !9
  %1977 = load i32, ptr %37, align 4, !tbaa !9
  %1978 = add nsw i32 %1977, 1
  store i32 %1978, ptr %36, align 4, !tbaa !9
  br label %1979

1979:                                             ; preds = %2065, %1975
  %1980 = load i32, ptr %36, align 4, !tbaa !9
  %1981 = load i32, ptr %31, align 4, !tbaa !9
  %1982 = icmp sle i32 %1980, %1981
  br i1 %1982, label %1983, label %2068

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

2065:                                             ; preds = %1983
  %2066 = load i32, ptr %36, align 4, !tbaa !9
  %2067 = add nsw i32 %2066, 1
  store i32 %2067, ptr %36, align 4, !tbaa !9
  br label %1979, !llvm.loop !30

2068:                                             ; preds = %1979
  br label %2204

2069:                                             ; preds = %1888
  %2070 = load i32, ptr %46, align 4, !tbaa !9
  %2071 = icmp ne i32 %2070, 0
  br i1 %2071, label %2072, label %2109

2072:                                             ; preds = %2069
  %2073 = load ptr, ptr %19, align 8, !tbaa !5
  %2074 = load i32, ptr %37, align 4, !tbaa !9
  %2075 = load i32, ptr %26, align 4, !tbaa !9
  %2076 = mul nsw i32 %2074, %2075
  %2077 = add nsw i32 %2076, 1
  %2078 = sext i32 %2077 to i64
  %2079 = getelementptr inbounds %struct.complex, ptr %2073, i64 %2078
  call void @r_cnjg(ptr noundef %34, ptr noundef %2079)
  %2080 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2081 = load float, ptr %2080, align 4, !tbaa !11
  %2082 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2083 = load float, ptr %2082, align 4, !tbaa !11
  %2084 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2085 = load float, ptr %2084, align 4, !tbaa !14
  %2086 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2087 = load float, ptr %2086, align 4, !tbaa !14
  %2088 = fmul float %2085, %2087
  %2089 = fneg float %2088
  %2090 = call float @llvm.fmuladd.f32(float %2081, float %2083, float %2089)
  %2091 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %2090, ptr %2091, align 4, !tbaa !11
  %2092 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2093 = load float, ptr %2092, align 4, !tbaa !11
  %2094 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2095 = load float, ptr %2094, align 4, !tbaa !14
  %2096 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2097 = load float, ptr %2096, align 4, !tbaa !14
  %2098 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2099 = load float, ptr %2098, align 4, !tbaa !11
  %2100 = fmul float %2097, %2099
  %2101 = call float @llvm.fmuladd.f32(float %2093, float %2095, float %2100)
  %2102 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %2101, ptr %2102, align 4, !tbaa !14
  %2103 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %2104 = load float, ptr %2103, align 4, !tbaa !11
  %2105 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2104, ptr %2105, align 4, !tbaa !11
  %2106 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %2107 = load float, ptr %2106, align 4, !tbaa !14
  %2108 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2107, ptr %2108, align 4, !tbaa !14
  br label %2109

2109:                                             ; preds = %2072, %2069
  %2110 = load ptr, ptr %17, align 8, !tbaa !5
  %2111 = load i32, ptr %2110, align 4, !tbaa !9
  store i32 %2111, ptr %28, align 4, !tbaa !9
  %2112 = load i32, ptr %37, align 4, !tbaa !9
  %2113 = load ptr, ptr %18, align 8, !tbaa !5
  %2114 = load i32, ptr %2113, align 4, !tbaa !9
  %2115 = add nsw i32 %2112, %2114
  store i32 %2115, ptr %29, align 4, !tbaa !9
  %2116 = load i32, ptr %28, align 4, !tbaa !9
  %2117 = load i32, ptr %29, align 4, !tbaa !9
  %2118 = icmp sle i32 %2116, %2117
  br i1 %2118, label %2119, label %2121

2119:                                             ; preds = %2109
  %2120 = load i32, ptr %28, align 4, !tbaa !9
  br label %2123

2121:                                             ; preds = %2109
  %2122 = load i32, ptr %29, align 4, !tbaa !9
  br label %2123

2123:                                             ; preds = %2121, %2119
  %2124 = phi i32 [ %2120, %2119 ], [ %2122, %2121 ]
  store i32 %2124, ptr %31, align 4, !tbaa !9
  %2125 = load i32, ptr %37, align 4, !tbaa !9
  %2126 = add nsw i32 %2125, 1
  store i32 %2126, ptr %36, align 4, !tbaa !9
  br label %2127

2127:                                             ; preds = %2200, %2123
  %2128 = load i32, ptr %36, align 4, !tbaa !9
  %2129 = load i32, ptr %31, align 4, !tbaa !9
  %2130 = icmp sle i32 %2128, %2129
  br i1 %2130, label %2131, label %2203

2131:                                             ; preds = %2127
  %2132 = load ptr, ptr %19, align 8, !tbaa !5
  %2133 = load i32, ptr %38, align 4, !tbaa !9
  %2134 = load i32, ptr %36, align 4, !tbaa !9
  %2135 = add nsw i32 %2133, %2134
  %2136 = load i32, ptr %37, align 4, !tbaa !9
  %2137 = load i32, ptr %26, align 4, !tbaa !9
  %2138 = mul nsw i32 %2136, %2137
  %2139 = add nsw i32 %2135, %2138
  %2140 = sext i32 %2139 to i64
  %2141 = getelementptr inbounds %struct.complex, ptr %2132, i64 %2140
  call void @r_cnjg(ptr noundef %35, ptr noundef %2141)
  %2142 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %2142, ptr %28, align 4, !tbaa !9
  %2143 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2144 = load float, ptr %2143, align 4, !tbaa !11
  %2145 = load ptr, ptr %21, align 8, !tbaa !5
  %2146 = load i32, ptr %28, align 4, !tbaa !9
  %2147 = sext i32 %2146 to i64
  %2148 = getelementptr inbounds %struct.complex, ptr %2145, i64 %2147
  %2149 = getelementptr inbounds %struct.complex, ptr %2148, i32 0, i32 0
  %2150 = load float, ptr %2149, align 4, !tbaa !11
  %2151 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2152 = load float, ptr %2151, align 4, !tbaa !14
  %2153 = load ptr, ptr %21, align 8, !tbaa !5
  %2154 = load i32, ptr %28, align 4, !tbaa !9
  %2155 = sext i32 %2154 to i64
  %2156 = getelementptr inbounds %struct.complex, ptr %2153, i64 %2155
  %2157 = getelementptr inbounds %struct.complex, ptr %2156, i32 0, i32 1
  %2158 = load float, ptr %2157, align 4, !tbaa !14
  %2159 = fmul float %2152, %2158
  %2160 = fneg float %2159
  %2161 = call float @llvm.fmuladd.f32(float %2144, float %2150, float %2160)
  %2162 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2161, ptr %2162, align 4, !tbaa !11
  %2163 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2164 = load float, ptr %2163, align 4, !tbaa !11
  %2165 = load ptr, ptr %21, align 8, !tbaa !5
  %2166 = load i32, ptr %28, align 4, !tbaa !9
  %2167 = sext i32 %2166 to i64
  %2168 = getelementptr inbounds %struct.complex, ptr %2165, i64 %2167
  %2169 = getelementptr inbounds %struct.complex, ptr %2168, i32 0, i32 1
  %2170 = load float, ptr %2169, align 4, !tbaa !14
  %2171 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2172 = load float, ptr %2171, align 4, !tbaa !14
  %2173 = load ptr, ptr %21, align 8, !tbaa !5
  %2174 = load i32, ptr %28, align 4, !tbaa !9
  %2175 = sext i32 %2174 to i64
  %2176 = getelementptr inbounds %struct.complex, ptr %2173, i64 %2175
  %2177 = getelementptr inbounds %struct.complex, ptr %2176, i32 0, i32 0
  %2178 = load float, ptr %2177, align 4, !tbaa !11
  %2179 = fmul float %2172, %2178
  %2180 = call float @llvm.fmuladd.f32(float %2164, float %2170, float %2179)
  %2181 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2180, ptr %2181, align 4, !tbaa !14
  %2182 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2183 = load float, ptr %2182, align 4, !tbaa !11
  %2184 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2185 = load float, ptr %2184, align 4, !tbaa !11
  %2186 = fadd float %2183, %2185
  %2187 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %2186, ptr %2187, align 4, !tbaa !11
  %2188 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2189 = load float, ptr %2188, align 4, !tbaa !14
  %2190 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2191 = load float, ptr %2190, align 4, !tbaa !14
  %2192 = fadd float %2189, %2191
  %2193 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %2192, ptr %2193, align 4, !tbaa !14
  %2194 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %2195 = load float, ptr %2194, align 4, !tbaa !11
  %2196 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2195, ptr %2196, align 4, !tbaa !11
  %2197 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %2198 = load float, ptr %2197, align 4, !tbaa !14
  %2199 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2198, ptr %2199, align 4, !tbaa !14
  br label %2200

2200:                                             ; preds = %2131
  %2201 = load i32, ptr %36, align 4, !tbaa !9
  %2202 = add nsw i32 %2201, 1
  store i32 %2202, ptr %36, align 4, !tbaa !9
  br label %2127, !llvm.loop !31

2203:                                             ; preds = %2127
  br label %2204

2204:                                             ; preds = %2203, %2068
  %2205 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %2205, ptr %31, align 4, !tbaa !9
  %2206 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2207 = load float, ptr %2206, align 4, !tbaa !11
  %2208 = load ptr, ptr %21, align 8, !tbaa !5
  %2209 = load i32, ptr %31, align 4, !tbaa !9
  %2210 = sext i32 %2209 to i64
  %2211 = getelementptr inbounds %struct.complex, ptr %2208, i64 %2210
  %2212 = getelementptr inbounds %struct.complex, ptr %2211, i32 0, i32 0
  store float %2207, ptr %2212, align 4, !tbaa !11
  %2213 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2214 = load float, ptr %2213, align 4, !tbaa !14
  %2215 = load ptr, ptr %21, align 8, !tbaa !5
  %2216 = load i32, ptr %31, align 4, !tbaa !9
  %2217 = sext i32 %2216 to i64
  %2218 = getelementptr inbounds %struct.complex, ptr %2215, i64 %2217
  %2219 = getelementptr inbounds %struct.complex, ptr %2218, i32 0, i32 1
  store float %2214, ptr %2219, align 4, !tbaa !14
  br label %2220

2220:                                             ; preds = %2204
  %2221 = load i32, ptr %37, align 4, !tbaa !9
  %2222 = add nsw i32 %2221, 1
  store i32 %2222, ptr %37, align 4, !tbaa !9
  br label %1884, !llvm.loop !32

2223:                                             ; preds = %1884
  br label %2585

2224:                                             ; preds = %1877
  %2225 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %2225, ptr %40, align 4, !tbaa !9
  %2226 = load ptr, ptr %17, align 8, !tbaa !5
  %2227 = load i32, ptr %2226, align 4, !tbaa !9
  store i32 %2227, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %2228

2228:                                             ; preds = %2581, %2224
  %2229 = load i32, ptr %37, align 4, !tbaa !9
  %2230 = load i32, ptr %30, align 4, !tbaa !9
  %2231 = icmp sle i32 %2229, %2230
  br i1 %2231, label %2232, label %2584

2232:                                             ; preds = %2228
  %2233 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %2233, ptr %31, align 4, !tbaa !9
  %2234 = load ptr, ptr %21, align 8, !tbaa !5
  %2235 = load i32, ptr %31, align 4, !tbaa !9
  %2236 = sext i32 %2235 to i64
  %2237 = getelementptr inbounds %struct.complex, ptr %2234, i64 %2236
  %2238 = getelementptr inbounds %struct.complex, ptr %2237, i32 0, i32 0
  %2239 = load float, ptr %2238, align 4, !tbaa !11
  %2240 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2239, ptr %2240, align 4, !tbaa !11
  %2241 = load ptr, ptr %21, align 8, !tbaa !5
  %2242 = load i32, ptr %31, align 4, !tbaa !9
  %2243 = sext i32 %2242 to i64
  %2244 = getelementptr inbounds %struct.complex, ptr %2241, i64 %2243
  %2245 = getelementptr inbounds %struct.complex, ptr %2244, i32 0, i32 1
  %2246 = load float, ptr %2245, align 4, !tbaa !14
  %2247 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2246, ptr %2247, align 4, !tbaa !14
  %2248 = load ptr, ptr %22, align 8, !tbaa !5
  %2249 = load i32, ptr %2248, align 4, !tbaa !9
  %2250 = load i32, ptr %41, align 4, !tbaa !9
  %2251 = add nsw i32 %2250, %2249
  store i32 %2251, ptr %41, align 4, !tbaa !9
  %2252 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %2252, ptr %39, align 4, !tbaa !9
  %2253 = load i32, ptr %37, align 4, !tbaa !9
  %2254 = sub nsw i32 1, %2253
  store i32 %2254, ptr %38, align 4, !tbaa !9
  %2255 = load i32, ptr %45, align 4, !tbaa !9
  %2256 = icmp ne i32 %2255, 0
  br i1 %2256, label %2257, label %2422

2257:                                             ; preds = %2232
  %2258 = load i32, ptr %46, align 4, !tbaa !9
  %2259 = icmp ne i32 %2258, 0
  br i1 %2259, label %2260, label %2310

2260:                                             ; preds = %2257
  %2261 = load i32, ptr %37, align 4, !tbaa !9
  %2262 = load i32, ptr %26, align 4, !tbaa !9
  %2263 = mul nsw i32 %2261, %2262
  %2264 = add nsw i32 %2263, 1
  store i32 %2264, ptr %31, align 4, !tbaa !9
  %2265 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2266 = load float, ptr %2265, align 4, !tbaa !11
  %2267 = load ptr, ptr %19, align 8, !tbaa !5
  %2268 = load i32, ptr %31, align 4, !tbaa !9
  %2269 = sext i32 %2268 to i64
  %2270 = getelementptr inbounds %struct.complex, ptr %2267, i64 %2269
  %2271 = getelementptr inbounds %struct.complex, ptr %2270, i32 0, i32 0
  %2272 = load float, ptr %2271, align 4, !tbaa !11
  %2273 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2274 = load float, ptr %2273, align 4, !tbaa !14
  %2275 = load ptr, ptr %19, align 8, !tbaa !5
  %2276 = load i32, ptr %31, align 4, !tbaa !9
  %2277 = sext i32 %2276 to i64
  %2278 = getelementptr inbounds %struct.complex, ptr %2275, i64 %2277
  %2279 = getelementptr inbounds %struct.complex, ptr %2278, i32 0, i32 1
  %2280 = load float, ptr %2279, align 4, !tbaa !14
  %2281 = fmul float %2274, %2280
  %2282 = fneg float %2281
  %2283 = call float @llvm.fmuladd.f32(float %2266, float %2272, float %2282)
  %2284 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %2283, ptr %2284, align 4, !tbaa !11
  %2285 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2286 = load float, ptr %2285, align 4, !tbaa !11
  %2287 = load ptr, ptr %19, align 8, !tbaa !5
  %2288 = load i32, ptr %31, align 4, !tbaa !9
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds %struct.complex, ptr %2287, i64 %2289
  %2291 = getelementptr inbounds %struct.complex, ptr %2290, i32 0, i32 1
  %2292 = load float, ptr %2291, align 4, !tbaa !14
  %2293 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2294 = load float, ptr %2293, align 4, !tbaa !14
  %2295 = load ptr, ptr %19, align 8, !tbaa !5
  %2296 = load i32, ptr %31, align 4, !tbaa !9
  %2297 = sext i32 %2296 to i64
  %2298 = getelementptr inbounds %struct.complex, ptr %2295, i64 %2297
  %2299 = getelementptr inbounds %struct.complex, ptr %2298, i32 0, i32 0
  %2300 = load float, ptr %2299, align 4, !tbaa !11
  %2301 = fmul float %2294, %2300
  %2302 = call float @llvm.fmuladd.f32(float %2286, float %2292, float %2301)
  %2303 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %2302, ptr %2303, align 4, !tbaa !14
  %2304 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %2305 = load float, ptr %2304, align 4, !tbaa !11
  %2306 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2305, ptr %2306, align 4, !tbaa !11
  %2307 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %2308 = load float, ptr %2307, align 4, !tbaa !14
  %2309 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2308, ptr %2309, align 4, !tbaa !14
  br label %2310

2310:                                             ; preds = %2260, %2257
  %2311 = load ptr, ptr %17, align 8, !tbaa !5
  %2312 = load i32, ptr %2311, align 4, !tbaa !9
  store i32 %2312, ptr %28, align 4, !tbaa !9
  %2313 = load i32, ptr %37, align 4, !tbaa !9
  %2314 = load ptr, ptr %18, align 8, !tbaa !5
  %2315 = load i32, ptr %2314, align 4, !tbaa !9
  %2316 = add nsw i32 %2313, %2315
  store i32 %2316, ptr %29, align 4, !tbaa !9
  %2317 = load i32, ptr %28, align 4, !tbaa !9
  %2318 = load i32, ptr %29, align 4, !tbaa !9
  %2319 = icmp sle i32 %2317, %2318
  br i1 %2319, label %2320, label %2322

2320:                                             ; preds = %2310
  %2321 = load i32, ptr %28, align 4, !tbaa !9
  br label %2324

2322:                                             ; preds = %2310
  %2323 = load i32, ptr %29, align 4, !tbaa !9
  br label %2324

2324:                                             ; preds = %2322, %2320
  %2325 = phi i32 [ %2321, %2320 ], [ %2323, %2322 ]
  store i32 %2325, ptr %31, align 4, !tbaa !9
  %2326 = load i32, ptr %37, align 4, !tbaa !9
  %2327 = add nsw i32 %2326, 1
  store i32 %2327, ptr %36, align 4, !tbaa !9
  br label %2328

2328:                                             ; preds = %2418, %2324
  %2329 = load i32, ptr %36, align 4, !tbaa !9
  %2330 = load i32, ptr %31, align 4, !tbaa !9
  %2331 = icmp sle i32 %2329, %2330
  br i1 %2331, label %2332, label %2421

2332:                                             ; preds = %2328
  %2333 = load i32, ptr %38, align 4, !tbaa !9
  %2334 = load i32, ptr %36, align 4, !tbaa !9
  %2335 = add nsw i32 %2333, %2334
  %2336 = load i32, ptr %37, align 4, !tbaa !9
  %2337 = load i32, ptr %26, align 4, !tbaa !9
  %2338 = mul nsw i32 %2336, %2337
  %2339 = add nsw i32 %2335, %2338
  store i32 %2339, ptr %28, align 4, !tbaa !9
  %2340 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %2340, ptr %29, align 4, !tbaa !9
  %2341 = load ptr, ptr %19, align 8, !tbaa !5
  %2342 = load i32, ptr %28, align 4, !tbaa !9
  %2343 = sext i32 %2342 to i64
  %2344 = getelementptr inbounds %struct.complex, ptr %2341, i64 %2343
  %2345 = getelementptr inbounds %struct.complex, ptr %2344, i32 0, i32 0
  %2346 = load float, ptr %2345, align 4, !tbaa !11
  %2347 = load ptr, ptr %21, align 8, !tbaa !5
  %2348 = load i32, ptr %29, align 4, !tbaa !9
  %2349 = sext i32 %2348 to i64
  %2350 = getelementptr inbounds %struct.complex, ptr %2347, i64 %2349
  %2351 = getelementptr inbounds %struct.complex, ptr %2350, i32 0, i32 0
  %2352 = load float, ptr %2351, align 4, !tbaa !11
  %2353 = load ptr, ptr %19, align 8, !tbaa !5
  %2354 = load i32, ptr %28, align 4, !tbaa !9
  %2355 = sext i32 %2354 to i64
  %2356 = getelementptr inbounds %struct.complex, ptr %2353, i64 %2355
  %2357 = getelementptr inbounds %struct.complex, ptr %2356, i32 0, i32 1
  %2358 = load float, ptr %2357, align 4, !tbaa !14
  %2359 = load ptr, ptr %21, align 8, !tbaa !5
  %2360 = load i32, ptr %29, align 4, !tbaa !9
  %2361 = sext i32 %2360 to i64
  %2362 = getelementptr inbounds %struct.complex, ptr %2359, i64 %2361
  %2363 = getelementptr inbounds %struct.complex, ptr %2362, i32 0, i32 1
  %2364 = load float, ptr %2363, align 4, !tbaa !14
  %2365 = fmul float %2358, %2364
  %2366 = fneg float %2365
  %2367 = call float @llvm.fmuladd.f32(float %2346, float %2352, float %2366)
  %2368 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2367, ptr %2368, align 4, !tbaa !11
  %2369 = load ptr, ptr %19, align 8, !tbaa !5
  %2370 = load i32, ptr %28, align 4, !tbaa !9
  %2371 = sext i32 %2370 to i64
  %2372 = getelementptr inbounds %struct.complex, ptr %2369, i64 %2371
  %2373 = getelementptr inbounds %struct.complex, ptr %2372, i32 0, i32 0
  %2374 = load float, ptr %2373, align 4, !tbaa !11
  %2375 = load ptr, ptr %21, align 8, !tbaa !5
  %2376 = load i32, ptr %29, align 4, !tbaa !9
  %2377 = sext i32 %2376 to i64
  %2378 = getelementptr inbounds %struct.complex, ptr %2375, i64 %2377
  %2379 = getelementptr inbounds %struct.complex, ptr %2378, i32 0, i32 1
  %2380 = load float, ptr %2379, align 4, !tbaa !14
  %2381 = load ptr, ptr %19, align 8, !tbaa !5
  %2382 = load i32, ptr %28, align 4, !tbaa !9
  %2383 = sext i32 %2382 to i64
  %2384 = getelementptr inbounds %struct.complex, ptr %2381, i64 %2383
  %2385 = getelementptr inbounds %struct.complex, ptr %2384, i32 0, i32 1
  %2386 = load float, ptr %2385, align 4, !tbaa !14
  %2387 = load ptr, ptr %21, align 8, !tbaa !5
  %2388 = load i32, ptr %29, align 4, !tbaa !9
  %2389 = sext i32 %2388 to i64
  %2390 = getelementptr inbounds %struct.complex, ptr %2387, i64 %2389
  %2391 = getelementptr inbounds %struct.complex, ptr %2390, i32 0, i32 0
  %2392 = load float, ptr %2391, align 4, !tbaa !11
  %2393 = fmul float %2386, %2392
  %2394 = call float @llvm.fmuladd.f32(float %2374, float %2380, float %2393)
  %2395 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2394, ptr %2395, align 4, !tbaa !14
  %2396 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2397 = load float, ptr %2396, align 4, !tbaa !11
  %2398 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2399 = load float, ptr %2398, align 4, !tbaa !11
  %2400 = fadd float %2397, %2399
  %2401 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %2400, ptr %2401, align 4, !tbaa !11
  %2402 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2403 = load float, ptr %2402, align 4, !tbaa !14
  %2404 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2405 = load float, ptr %2404, align 4, !tbaa !14
  %2406 = fadd float %2403, %2405
  %2407 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %2406, ptr %2407, align 4, !tbaa !14
  %2408 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %2409 = load float, ptr %2408, align 4, !tbaa !11
  %2410 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2409, ptr %2410, align 4, !tbaa !11
  %2411 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %2412 = load float, ptr %2411, align 4, !tbaa !14
  %2413 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2412, ptr %2413, align 4, !tbaa !14
  %2414 = load ptr, ptr %22, align 8, !tbaa !5
  %2415 = load i32, ptr %2414, align 4, !tbaa !9
  %2416 = load i32, ptr %39, align 4, !tbaa !9
  %2417 = add nsw i32 %2416, %2415
  store i32 %2417, ptr %39, align 4, !tbaa !9
  br label %2418

2418:                                             ; preds = %2332
  %2419 = load i32, ptr %36, align 4, !tbaa !9
  %2420 = add nsw i32 %2419, 1
  store i32 %2420, ptr %36, align 4, !tbaa !9
  br label %2328, !llvm.loop !33

2421:                                             ; preds = %2328
  br label %2561

2422:                                             ; preds = %2232
  %2423 = load i32, ptr %46, align 4, !tbaa !9
  %2424 = icmp ne i32 %2423, 0
  br i1 %2424, label %2425, label %2462

2425:                                             ; preds = %2422
  %2426 = load ptr, ptr %19, align 8, !tbaa !5
  %2427 = load i32, ptr %37, align 4, !tbaa !9
  %2428 = load i32, ptr %26, align 4, !tbaa !9
  %2429 = mul nsw i32 %2427, %2428
  %2430 = add nsw i32 %2429, 1
  %2431 = sext i32 %2430 to i64
  %2432 = getelementptr inbounds %struct.complex, ptr %2426, i64 %2431
  call void @r_cnjg(ptr noundef %34, ptr noundef %2432)
  %2433 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2434 = load float, ptr %2433, align 4, !tbaa !11
  %2435 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2436 = load float, ptr %2435, align 4, !tbaa !11
  %2437 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2438 = load float, ptr %2437, align 4, !tbaa !14
  %2439 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2440 = load float, ptr %2439, align 4, !tbaa !14
  %2441 = fmul float %2438, %2440
  %2442 = fneg float %2441
  %2443 = call float @llvm.fmuladd.f32(float %2434, float %2436, float %2442)
  %2444 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %2443, ptr %2444, align 4, !tbaa !11
  %2445 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2446 = load float, ptr %2445, align 4, !tbaa !11
  %2447 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2448 = load float, ptr %2447, align 4, !tbaa !14
  %2449 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2450 = load float, ptr %2449, align 4, !tbaa !14
  %2451 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2452 = load float, ptr %2451, align 4, !tbaa !11
  %2453 = fmul float %2450, %2452
  %2454 = call float @llvm.fmuladd.f32(float %2446, float %2448, float %2453)
  %2455 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %2454, ptr %2455, align 4, !tbaa !14
  %2456 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %2457 = load float, ptr %2456, align 4, !tbaa !11
  %2458 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2457, ptr %2458, align 4, !tbaa !11
  %2459 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %2460 = load float, ptr %2459, align 4, !tbaa !14
  %2461 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2460, ptr %2461, align 4, !tbaa !14
  br label %2462

2462:                                             ; preds = %2425, %2422
  %2463 = load ptr, ptr %17, align 8, !tbaa !5
  %2464 = load i32, ptr %2463, align 4, !tbaa !9
  store i32 %2464, ptr %28, align 4, !tbaa !9
  %2465 = load i32, ptr %37, align 4, !tbaa !9
  %2466 = load ptr, ptr %18, align 8, !tbaa !5
  %2467 = load i32, ptr %2466, align 4, !tbaa !9
  %2468 = add nsw i32 %2465, %2467
  store i32 %2468, ptr %29, align 4, !tbaa !9
  %2469 = load i32, ptr %28, align 4, !tbaa !9
  %2470 = load i32, ptr %29, align 4, !tbaa !9
  %2471 = icmp sle i32 %2469, %2470
  br i1 %2471, label %2472, label %2474

2472:                                             ; preds = %2462
  %2473 = load i32, ptr %28, align 4, !tbaa !9
  br label %2476

2474:                                             ; preds = %2462
  %2475 = load i32, ptr %29, align 4, !tbaa !9
  br label %2476

2476:                                             ; preds = %2474, %2472
  %2477 = phi i32 [ %2473, %2472 ], [ %2475, %2474 ]
  store i32 %2477, ptr %31, align 4, !tbaa !9
  %2478 = load i32, ptr %37, align 4, !tbaa !9
  %2479 = add nsw i32 %2478, 1
  store i32 %2479, ptr %36, align 4, !tbaa !9
  br label %2480

2480:                                             ; preds = %2557, %2476
  %2481 = load i32, ptr %36, align 4, !tbaa !9
  %2482 = load i32, ptr %31, align 4, !tbaa !9
  %2483 = icmp sle i32 %2481, %2482
  br i1 %2483, label %2484, label %2560

2484:                                             ; preds = %2480
  %2485 = load ptr, ptr %19, align 8, !tbaa !5
  %2486 = load i32, ptr %38, align 4, !tbaa !9
  %2487 = load i32, ptr %36, align 4, !tbaa !9
  %2488 = add nsw i32 %2486, %2487
  %2489 = load i32, ptr %37, align 4, !tbaa !9
  %2490 = load i32, ptr %26, align 4, !tbaa !9
  %2491 = mul nsw i32 %2489, %2490
  %2492 = add nsw i32 %2488, %2491
  %2493 = sext i32 %2492 to i64
  %2494 = getelementptr inbounds %struct.complex, ptr %2485, i64 %2493
  call void @r_cnjg(ptr noundef %35, ptr noundef %2494)
  %2495 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %2495, ptr %28, align 4, !tbaa !9
  %2496 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2497 = load float, ptr %2496, align 4, !tbaa !11
  %2498 = load ptr, ptr %21, align 8, !tbaa !5
  %2499 = load i32, ptr %28, align 4, !tbaa !9
  %2500 = sext i32 %2499 to i64
  %2501 = getelementptr inbounds %struct.complex, ptr %2498, i64 %2500
  %2502 = getelementptr inbounds %struct.complex, ptr %2501, i32 0, i32 0
  %2503 = load float, ptr %2502, align 4, !tbaa !11
  %2504 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2505 = load float, ptr %2504, align 4, !tbaa !14
  %2506 = load ptr, ptr %21, align 8, !tbaa !5
  %2507 = load i32, ptr %28, align 4, !tbaa !9
  %2508 = sext i32 %2507 to i64
  %2509 = getelementptr inbounds %struct.complex, ptr %2506, i64 %2508
  %2510 = getelementptr inbounds %struct.complex, ptr %2509, i32 0, i32 1
  %2511 = load float, ptr %2510, align 4, !tbaa !14
  %2512 = fmul float %2505, %2511
  %2513 = fneg float %2512
  %2514 = call float @llvm.fmuladd.f32(float %2497, float %2503, float %2513)
  %2515 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2514, ptr %2515, align 4, !tbaa !11
  %2516 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2517 = load float, ptr %2516, align 4, !tbaa !11
  %2518 = load ptr, ptr %21, align 8, !tbaa !5
  %2519 = load i32, ptr %28, align 4, !tbaa !9
  %2520 = sext i32 %2519 to i64
  %2521 = getelementptr inbounds %struct.complex, ptr %2518, 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 %35, i32 0, i32 1
  %2525 = load float, ptr %2524, align 4, !tbaa !14
  %2526 = load ptr, ptr %21, align 8, !tbaa !5
  %2527 = load i32, ptr %28, align 4, !tbaa !9
  %2528 = sext i32 %2527 to i64
  %2529 = getelementptr inbounds %struct.complex, ptr %2526, i64 %2528
  %2530 = getelementptr inbounds %struct.complex, ptr %2529, i32 0, i32 0
  %2531 = load float, ptr %2530, align 4, !tbaa !11
  %2532 = fmul float %2525, %2531
  %2533 = call float @llvm.fmuladd.f32(float %2517, float %2523, float %2532)
  %2534 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2533, ptr %2534, align 4, !tbaa !14
  %2535 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2536 = load float, ptr %2535, align 4, !tbaa !11
  %2537 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2538 = load float, ptr %2537, align 4, !tbaa !11
  %2539 = fadd float %2536, %2538
  %2540 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %2539, ptr %2540, align 4, !tbaa !11
  %2541 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2542 = load float, ptr %2541, align 4, !tbaa !14
  %2543 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2544 = load float, ptr %2543, align 4, !tbaa !14
  %2545 = fadd float %2542, %2544
  %2546 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %2545, ptr %2546, align 4, !tbaa !14
  %2547 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %2548 = load float, ptr %2547, align 4, !tbaa !11
  %2549 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2548, ptr %2549, align 4, !tbaa !11
  %2550 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %2551 = load float, ptr %2550, align 4, !tbaa !14
  %2552 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2551, ptr %2552, align 4, !tbaa !14
  %2553 = load ptr, ptr %22, align 8, !tbaa !5
  %2554 = load i32, ptr %2553, align 4, !tbaa !9
  %2555 = load i32, ptr %39, align 4, !tbaa !9
  %2556 = add nsw i32 %2555, %2554
  store i32 %2556, ptr %39, align 4, !tbaa !9
  br label %2557

2557:                                             ; preds = %2484
  %2558 = load i32, ptr %36, align 4, !tbaa !9
  %2559 = add nsw i32 %2558, 1
  store i32 %2559, ptr %36, align 4, !tbaa !9
  br label %2480, !llvm.loop !34

2560:                                             ; preds = %2480
  br label %2561

2561:                                             ; preds = %2560, %2421
  %2562 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %2562, ptr %31, align 4, !tbaa !9
  %2563 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2564 = load float, ptr %2563, align 4, !tbaa !11
  %2565 = load ptr, ptr %21, align 8, !tbaa !5
  %2566 = load i32, ptr %31, align 4, !tbaa !9
  %2567 = sext i32 %2566 to i64
  %2568 = getelementptr inbounds %struct.complex, ptr %2565, i64 %2567
  %2569 = getelementptr inbounds %struct.complex, ptr %2568, i32 0, i32 0
  store float %2564, ptr %2569, align 4, !tbaa !11
  %2570 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2571 = load float, ptr %2570, align 4, !tbaa !14
  %2572 = load ptr, ptr %21, align 8, !tbaa !5
  %2573 = load i32, ptr %31, align 4, !tbaa !9
  %2574 = sext i32 %2573 to i64
  %2575 = getelementptr inbounds %struct.complex, ptr %2572, i64 %2574
  %2576 = getelementptr inbounds %struct.complex, ptr %2575, i32 0, i32 1
  store float %2571, ptr %2576, align 4, !tbaa !14
  %2577 = load ptr, ptr %22, align 8, !tbaa !5
  %2578 = load i32, ptr %2577, align 4, !tbaa !9
  %2579 = load i32, ptr %40, align 4, !tbaa !9
  %2580 = add nsw i32 %2579, %2578
  store i32 %2580, ptr %40, align 4, !tbaa !9
  br label %2581

2581:                                             ; preds = %2561
  %2582 = load i32, ptr %37, align 4, !tbaa !9
  %2583 = add nsw i32 %2582, 1
  store i32 %2583, ptr %37, align 4, !tbaa !9
  br label %2228, !llvm.loop !35

2584:                                             ; preds = %2228
  br label %2585

2585:                                             ; preds = %2584, %2223
  br label %2586

2586:                                             ; preds = %2585, %1876
  br label %2587

2587:                                             ; preds = %2586, %1156
  store i32 0, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %2588

2588:                                             ; preds = %2587, %127, %121
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  %2589 = load i32, ptr %13, align 4
  ret i32 %2589
}

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !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}


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

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

21:                                               ; preds = %12
  %22 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1, i32 noundef 1, i32 noundef 1) #4
  %.not871 = icmp eq i32 %22, 0
  br i1 %.not871, label %23, label %24

23:                                               ; preds = %21
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %.thread

24:                                               ; preds = %21, %12
  %25 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2, i32 noundef 1, i32 noundef 1) #4
  %.not872 = icmp eq i32 %25, 0
  br i1 %.not872, label %26, label %31

26:                                               ; preds = %24
  %27 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3, i32 noundef 1, i32 noundef 1) #4
  %.not873 = icmp eq i32 %27, 0
  br i1 %.not873, label %28, label %31

28:                                               ; preds = %26
  %29 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4, i32 noundef 1, i32 noundef 1) #4
  %.not874 = icmp eq i32 %29, 0
  br i1 %.not874, label %30, label %31

30:                                               ; preds = %28
  store i32 2, ptr %15, align 4, !tbaa !5
  br label %.thread

31:                                               ; preds = %28, %26, %24
  %32 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str, i32 noundef 1, i32 noundef 1) #4
  %.not875 = icmp eq i32 %32, 0
  br i1 %.not875, label %33, label %36

33:                                               ; preds = %31
  %34 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2, i32 noundef 1, i32 noundef 1) #4
  %.not876 = icmp eq i32 %34, 0
  br i1 %.not876, label %35, label %36

35:                                               ; preds = %33
  store i32 3, ptr %15, align 4, !tbaa !5
  br label %.thread

36:                                               ; preds = %33, %31
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = icmp slt i32 %37, 0
  br i1 %38, label %39, label %40

39:                                               ; preds = %36
  store i32 4, ptr %15, align 4, !tbaa !5
  br label %.thread

40:                                               ; preds = %36
  %41 = load i32, ptr %4, align 4, !tbaa !5
  %42 = icmp slt i32 %41, 0
  br i1 %42, label %43, label %44

43:                                               ; preds = %40
  store i32 5, ptr %15, align 4, !tbaa !5
  br label %.thread

44:                                               ; preds = %40
  %45 = load i32, ptr %6, align 4, !tbaa !5
  %.not877 = icmp sgt i32 %45, %41
  br i1 %.not877, label %47, label %46

46:                                               ; preds = %44
  store i32 7, ptr %15, align 4, !tbaa !5
  br label %.thread

47:                                               ; preds = %44
  %48 = load i32, ptr %8, align 4, !tbaa !5
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %50, label %52

50:                                               ; preds = %47
  store i32 9, ptr %15, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %23, %35, %43, %50, %46, %39, %30
  %51 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %15, i32 noundef 6) #4
  br label %.loopexit927

52:                                               ; preds = %47
  %53 = icmp eq i32 %37, 0
  br i1 %53, label %.loopexit927, label %54

54:                                               ; preds = %52
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3, i32 noundef 1, i32 noundef 1) #4
  %56 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2, i32 noundef 1, i32 noundef 1) #4
  %57 = load i32, ptr %8, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 1
  br i1 %58, label %59, label %64

59:                                               ; preds = %54
  %60 = load i32, ptr %3, align 4, !tbaa !5
  %61 = add nsw i32 %60, -1
  %62 = mul nsw i32 %61, %57
  %63 = sub nsw i32 1, %62
  br label %64

64:                                               ; preds = %54, %59
  %.0841 = phi i32 [ %63, %59 ], [ 1, %54 ]
  %65 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2, i32 noundef 1, i32 noundef 1) #4
  %.not880 = icmp eq i32 %65, 0
  %66 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str, i32 noundef 1, i32 noundef 1) #4
  %.not881 = icmp eq i32 %66, 0
  br i1 %.not880, label %425, label %67

67:                                               ; preds = %64
  br i1 %.not881, label %261, label %68

68:                                               ; preds = %67
  %69 = load i32, ptr %4, align 4, !tbaa !5
  %70 = add nsw i32 %69, 1
  %71 = load i32, ptr %8, align 4, !tbaa !5
  %72 = icmp eq i32 %71, 1
  %73 = load i32, ptr %3, align 4, !tbaa !5
  %.not920972 = icmp slt i32 %73, 1
  br i1 %72, label %74, label %175

74:                                               ; preds = %68
  br i1 %.not920972, label %.loopexit927, label %.lr.ph976

.lr.ph976:                                        ; preds = %74
  %.not922 = icmp eq i32 %56, 0
  %75 = sub i32 1, %69
  %76 = sext i32 %16 to i64
  %77 = sext i32 %70 to i64
  %78 = add nuw i32 %73, 1
  %wide.trip.count1205 = zext i32 %78 to i64
  %invariant.gep1321 = getelementptr %struct.complex, ptr %18, i64 %77
  %79 = add i32 %16, %69
  %80 = add i32 %16, -1
  %scevgep1410 = getelementptr i8, ptr %7, i64 -8
  %81 = shl nsw i64 %17, 3
  %scevgep1414 = getelementptr i8, ptr %5, i64 %81
  %82 = add i32 %16, %69
  %83 = add i32 %16, -1
  %84 = or disjoint i64 %81, 4
  %scevgep1418 = getelementptr i8, ptr %7, i64 -4
  %scevgep1421 = getelementptr i8, ptr %5, i64 %84
  %invariant.gep1569 = getelementptr i8, ptr %7, i64 -4
  %85 = getelementptr i8, ptr %5, i64 %84
  %86 = getelementptr i8, ptr %5, i64 %81
  %87 = getelementptr i8, ptr %86, i64 8
  br label %88

88:                                               ; preds = %.lr.ph976, %173
  %indvar1406 = phi i64 [ 0, %.lr.ph976 ], [ %indvar.next1407, %173 ]
  %indvars.iv1202 = phi i64 [ 1, %.lr.ph976 ], [ %indvars.iv.next1203, %173 ]
  %indvars.iv1196 = phi i32 [ %75, %.lr.ph976 ], [ %indvars.iv.next1197, %173 ]
  %89 = phi <2 x float> [ undef, %.lr.ph976 ], [ %174, %173 ]
  %smax1432 = tail call i32 @llvm.smax.i32(i32 %indvars.iv1196, i32 1)
  %90 = zext nneg i32 %smax1432 to i64
  %91 = sub nsw i64 %indvars.iv1202, %90
  %smax1411 = tail call i32 @llvm.smax.i32(i32 %indvars.iv1196, i32 1)
  %92 = zext nneg i32 %smax1411 to i64
  %93 = shl nuw nsw i64 %92, 3
  %scevgep1412 = getelementptr i8, ptr %scevgep1410, i64 %93
  %94 = shl nuw nsw i64 %indvar1406, 3
  %gep1570 = getelementptr i8, ptr %invariant.gep1569, i64 %94
  %95 = trunc i64 %indvar1406 to i32
  %96 = mul i32 %83, %95
  %97 = add i32 %96, %82
  %98 = add i32 %smax1411, %97
  %99 = sext i32 %98 to i64
  %100 = shl nsw i64 %99, 3
  %scevgep1415 = getelementptr i8, ptr %scevgep1414, i64 %100
  %scevgep1416 = getelementptr i8, ptr %85, i64 %94
  %101 = sub nsw i64 %100, %93
  %scevgep1417 = getelementptr i8, ptr %scevgep1416, i64 %101
  %scevgep1419 = getelementptr i8, ptr %scevgep1418, i64 %93
  %scevgep1420 = getelementptr i8, ptr %7, i64 %94
  %scevgep1422 = getelementptr i8, ptr %scevgep1421, i64 %100
  %scevgep1423 = getelementptr i8, ptr %87, i64 %94
  %scevgep1424 = getelementptr i8, ptr %scevgep1423, i64 %101
  %smax1408 = tail call i32 @llvm.smax.i32(i32 %indvars.iv1196, i32 1)
  %102 = zext nneg i32 %smax1408 to i64
  %103 = sub i64 %indvar1406, %102
  %104 = trunc i64 %indvar1406 to i32
  %105 = mul i32 %80, %104
  %106 = add i32 %105, %79
  %107 = add i32 %smax1408, %106
  %smax1198 = tail call i32 @llvm.smax.i32(i32 %indvars.iv1196, i32 1)
  %108 = zext nneg i32 %smax1198 to i64
  %109 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1202
  %110 = load <2 x float>, ptr %109, align 4, !tbaa !9
  %111 = fcmp une <2 x float> %110, zeroinitializer
  %112 = extractelement <2 x i1> %111, i64 0
  %113 = extractelement <2 x i1> %111, i64 1
  %or.cond = select i1 %112, i1 true, i1 %113
  br i1 %or.cond, label %._crit_edge1271, label %173

._crit_edge1271:                                  ; preds = %88
  %114 = getelementptr inbounds i8, ptr %109, i64 4
  %115 = trunc i64 %indvars.iv1202 to i32
  %116 = sub i32 %115, %69
  %117 = tail call i32 @llvm.smax.i32(i32 %116, i32 1)
  %118 = zext nneg i32 %117 to i64
  %.not921.not962 = icmp ugt i64 %indvars.iv1202, %118
  br i1 %.not921.not962, label %.lr.ph965, label %._crit_edge966

.lr.ph965:                                        ; preds = %._crit_edge1271
  %119 = trunc nuw nsw i64 %indvars.iv1202 to i32
  %120 = sub i32 %70, %119
  %121 = trunc i64 %indvars.iv1202 to i32
  %122 = mul i32 %16, %121
  %123 = add i32 %120, %122
  %124 = extractelement <2 x float> %110, i64 1
  %125 = fneg float %124
  %min.iters.check1435 = icmp ult i64 %91, 4
  br i1 %min.iters.check1435, label %scalar.ph1434.preheader, label %vector.scevcheck1405

vector.scevcheck1405:                             ; preds = %.lr.ph965
  %126 = trunc i64 %103 to i32
  %127 = add i32 %107, %126
  %128 = icmp slt i32 %127, %107
  %129 = icmp ugt i64 %103, 4294967295
  %130 = or i1 %128, %129
  br i1 %130, label %scalar.ph1434.preheader, label %vector.memcheck1409

vector.memcheck1409:                              ; preds = %vector.scevcheck1405
  %bound01425 = icmp ult ptr %scevgep1412, %scevgep1417
  %bound11426 = icmp ult ptr %scevgep1415, %gep1570
  %found.conflict1427 = and i1 %bound01425, %bound11426
  %bound01428 = icmp ult ptr %scevgep1419, %scevgep1424
  %bound11429 = icmp ult ptr %scevgep1422, %scevgep1420
  %found.conflict1430 = and i1 %bound01428, %bound11429
  %conflict.rdx1431 = or i1 %found.conflict1427, %found.conflict1430
  br i1 %conflict.rdx1431, label %scalar.ph1434.preheader, label %vector.ph1436

vector.ph1436:                                    ; preds = %vector.memcheck1409
  %n.vec1438 = and i64 %91, -4
  %ind.end1439 = add i64 %n.vec1438, %108
  %broadcast.splatinsert1448 = insertelement <4 x float> poison, float %125, i64 0
  %broadcast.splat1449 = shufflevector <4 x float> %broadcast.splatinsert1448, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1451 = shufflevector <2 x float> %110, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1453 = shufflevector <2 x float> %110, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  %invariant.gep = getelementptr %struct.complex, ptr %19, i64 %108
  br label %vector.body1441

vector.body1441:                                  ; preds = %vector.body1441, %vector.ph1436
  %index1442 = phi i64 [ 0, %vector.ph1436 ], [ %index.next1458, %vector.body1441 ]
  %131 = trunc i64 %index1442 to i32
  %132 = add i32 %smax1198, %131
  %133 = add i32 %123, %132
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds %struct.complex, ptr %18, i64 %134
  %wide.vec1445 = load <8 x float>, ptr %135, align 4, !tbaa !9
  %strided.vec1446 = shufflevector <8 x float> %wide.vec1445, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1447 = shufflevector <8 x float> %wide.vec1445, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %136 = fmul <4 x float> %strided.vec1447, %broadcast.splat1449
  %137 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1451, <4 x float> %strided.vec1446, <4 x float> %136)
  %138 = fmul <4 x float> %broadcast.splat1453, %strided.vec1446
  %139 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1451, <4 x float> %strided.vec1447, <4 x float> %138)
  %gep1568 = getelementptr %struct.complex, ptr %invariant.gep, i64 %index1442
  %wide.vec1454 = load <8 x float>, ptr %gep1568, align 4, !tbaa !9
  %strided.vec1455 = shufflevector <8 x float> %wide.vec1454, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1456 = shufflevector <8 x float> %wide.vec1454, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %140 = fadd <4 x float> %137, %strided.vec1455
  %141 = fadd <4 x float> %139, %strided.vec1456
  %interleaved.vec1457 = shufflevector <4 x float> %140, <4 x float> %141, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1457, ptr %gep1568, align 4, !tbaa !9
  %index.next1458 = add nuw i64 %index1442, 4
  %142 = icmp eq i64 %index.next1458, %n.vec1438
  br i1 %142, label %middle.block1433, label %vector.body1441, !llvm.loop !11

middle.block1433:                                 ; preds = %vector.body1441
  %cmp.n1459 = icmp eq i64 %91, %n.vec1438
  %143 = shufflevector <4 x float> %137, <4 x float> %139, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1459, label %._crit_edge966, label %scalar.ph1434.preheader

scalar.ph1434.preheader:                          ; preds = %middle.block1433, %vector.memcheck1409, %vector.scevcheck1405, %.lr.ph965
  %indvars.iv1199.ph = phi i64 [ %108, %vector.memcheck1409 ], [ %108, %vector.scevcheck1405 ], [ %108, %.lr.ph965 ], [ %ind.end1439, %middle.block1433 ]
  %144 = shufflevector <2 x float> %110, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %145 = insertelement <2 x float> %144, float %125, i64 1
  %146 = shufflevector <2 x float> %110, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1434

scalar.ph1434:                                    ; preds = %scalar.ph1434.preheader, %scalar.ph1434
  %indvars.iv1199 = phi i64 [ %indvars.iv.next1200, %scalar.ph1434 ], [ %indvars.iv1199.ph, %scalar.ph1434.preheader ]
  %147 = trunc nuw nsw i64 %indvars.iv1199 to i32
  %148 = add i32 %123, %147
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds %struct.complex, ptr %18, i64 %149
  %151 = load <2 x float>, ptr %150, align 4, !tbaa !9
  %152 = fmul <2 x float> %145, %151
  %153 = shufflevector <2 x float> %152, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %154 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %146, <2 x float> %151, <2 x float> %153)
  %155 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1199
  %156 = load <2 x float>, ptr %155, align 4, !tbaa !9
  %157 = fadd <2 x float> %154, %156
  store <2 x float> %157, ptr %155, align 4, !tbaa !9
  %indvars.iv.next1200 = add nuw nsw i64 %indvars.iv1199, 1
  %158 = icmp ult i64 %indvars.iv.next1200, %indvars.iv1202
  br i1 %158, label %scalar.ph1434, label %._crit_edge966, !llvm.loop !15

._crit_edge966:                                   ; preds = %scalar.ph1434, %middle.block1433, %._crit_edge1271
  %159 = phi <2 x float> [ %89, %._crit_edge1271 ], [ %143, %middle.block1433 ], [ %154, %scalar.ph1434 ]
  br i1 %.not922, label %173, label %160

160:                                              ; preds = %._crit_edge966
  %161 = mul nsw i64 %indvars.iv1202, %76
  %162 = load float, ptr %109, align 4, !tbaa !16
  %gep1322 = getelementptr %struct.complex, ptr %invariant.gep1321, i64 %161
  %163 = load float, ptr %114, align 4, !tbaa !18
  %164 = fneg float %163
  %165 = load <2 x float>, ptr %gep1322, align 4, !tbaa !9
  %166 = insertelement <2 x float> poison, float %163, i64 0
  %167 = insertelement <2 x float> %166, float %164, i64 1
  %168 = fmul <2 x float> %165, %167
  %169 = shufflevector <2 x float> %168, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %170 = insertelement <2 x float> poison, float %162, i64 0
  %171 = shufflevector <2 x float> %170, <2 x float> poison, <2 x i32> zeroinitializer
  %172 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %171, <2 x float> %165, <2 x float> %169)
  store <2 x float> %172, ptr %109, align 4, !tbaa !9
  br label %173

173:                                              ; preds = %88, %160, %._crit_edge966
  %174 = phi <2 x float> [ %159, %160 ], [ %159, %._crit_edge966 ], [ %89, %88 ]
  %indvars.iv.next1203 = add nuw nsw i64 %indvars.iv1202, 1
  %indvars.iv.next1197 = add i32 %indvars.iv1196, 1
  %exitcond1206.not = icmp eq i64 %indvars.iv.next1203, %wide.trip.count1205
  %indvar.next1407 = add i64 %indvar1406, 1
  br i1 %exitcond1206.not, label %.loopexit927, label %88, !llvm.loop !19

175:                                              ; preds = %68
  br i1 %.not920972, label %.loopexit927, label %.lr.ph955

.lr.ph955:                                        ; preds = %175
  %.not919 = icmp eq i32 %56, 0
  %176 = sext i32 %71 to i64
  %177 = sub i32 1, %69
  %178 = sext i32 %.0841 to i64
  %179 = sext i32 %69 to i64
  %180 = sext i32 %16 to i64
  %181 = sext i32 %70 to i64
  %182 = add nuw i32 %73, 1
  %wide.trip.count = zext i32 %182 to i64
  %invariant.gep1319 = getelementptr %struct.complex, ptr %18, i64 %181
  br label %183

183:                                              ; preds = %.lr.ph955, %257
  %indvar = phi i64 [ 0, %.lr.ph955 ], [ %indvar.next, %257 ]
  %indvars.iv1191 = phi i64 [ 1, %.lr.ph955 ], [ %indvars.iv.next1192, %257 ]
  %indvars.iv1189 = phi i64 [ %178, %.lr.ph955 ], [ %indvars.iv.next1190, %257 ]
  %indvars.iv1182 = phi i32 [ %177, %.lr.ph955 ], [ %indvars.iv.next1183, %257 ]
  %.1952 = phi i32 [ %.0841, %.lr.ph955 ], [ %spec.select923, %257 ]
  %184 = phi <2 x float> [ undef, %.lr.ph955 ], [ %258, %257 ]
  %smax1548 = tail call i32 @llvm.smax.i32(i32 %indvars.iv1182, i32 1)
  %185 = zext nneg i32 %smax1548 to i64
  %186 = sub nsw i64 %indvars.iv1191, %185
  %smax = tail call i32 @llvm.smax.i32(i32 %indvars.iv1182, i32 1)
  %187 = zext nneg i32 %smax to i64
  %188 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1189
  %189 = load float, ptr %188, align 4, !tbaa !16
  %190 = fcmp une float %189, 0.000000e+00
  %.phi.trans.insert = getelementptr inbounds i8, ptr %188, i64 4
  %.pre = load float, ptr %.phi.trans.insert, align 4, !tbaa !18
  %191 = fcmp une float %.pre, 0.000000e+00
  %or.cond1331 = select i1 %190, i1 true, i1 %191
  br i1 %or.cond1331, label %._crit_edge1270, label %257

._crit_edge1270:                                  ; preds = %183
  %192 = getelementptr inbounds i8, ptr %188, i64 4
  %193 = trunc i64 %indvars.iv1191 to i32
  %194 = sub i32 %193, %69
  %195 = tail call i32 @llvm.smax.i32(i32 %194, i32 1)
  %196 = zext nneg i32 %195 to i64
  %.not918.not941 = icmp ugt i64 %indvars.iv1191, %196
  br i1 %.not918.not941, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %._crit_edge1270
  %197 = trunc nuw nsw i64 %indvars.iv1191 to i32
  %198 = sub i32 %70, %197
  %199 = trunc i64 %indvars.iv1191 to i32
  %200 = mul i32 %16, %199
  %201 = add i32 %198, %200
  %202 = fneg float %.pre
  %203 = sext i32 %.1952 to i64
  %204 = insertelement <2 x float> poison, float %189, i64 0
  %205 = shufflevector <2 x float> %204, <2 x float> poison, <2 x i32> zeroinitializer
  %206 = insertelement <2 x float> poison, float %.pre, i64 0
  %207 = insertelement <2 x float> %206, float %202, i64 1
  %xtraiter = and i64 %186, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph
  %208 = add i32 %201, %smax
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds %struct.complex, ptr %18, i64 %209
  %211 = load <2 x float>, ptr %210, align 4, !tbaa !9
  %212 = fmul <2 x float> %207, %211
  %213 = shufflevector <2 x float> %212, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %214 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %205, <2 x float> %211, <2 x float> %213)
  %215 = getelementptr inbounds %struct.complex, ptr %19, i64 %203
  %216 = load <2 x float>, ptr %215, align 4, !tbaa !9
  %217 = fadd <2 x float> %214, %216
  store <2 x float> %217, ptr %215, align 4, !tbaa !9
  %indvars.iv.next.prol = add nsw i64 %203, %176
  %indvars.iv.next1185.prol = add nuw nsw i64 %187, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph
  %indvars.iv1184.unr = phi i64 [ %187, %.lr.ph ], [ %indvars.iv.next1185.prol, %.prol.loopexit.unr-lcssa ]
  %indvars.iv.unr = phi i64 [ %203, %.lr.ph ], [ %indvars.iv.next.prol, %.prol.loopexit.unr-lcssa ]
  %.lcssa1547.unr = phi <2 x float> [ poison, %.lr.ph ], [ %214, %.prol.loopexit.unr-lcssa ]
  %218 = icmp eq i64 %indvar, %185
  br i1 %218, label %._crit_edge, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.prol.loopexit, %.lr.ph.new
  %indvars.iv1184 = phi i64 [ %indvars.iv.next1185.1, %.lr.ph.new ], [ %indvars.iv1184.unr, %.prol.loopexit ]
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph.new ], [ %indvars.iv.unr, %.prol.loopexit ]
  %219 = trunc nuw nsw i64 %indvars.iv1184 to i32
  %220 = add i32 %201, %219
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds %struct.complex, ptr %18, i64 %221
  %223 = load <2 x float>, ptr %222, align 4, !tbaa !9
  %224 = fmul <2 x float> %207, %223
  %225 = shufflevector <2 x float> %224, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %226 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %205, <2 x float> %223, <2 x float> %225)
  %227 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv
  %228 = load <2 x float>, ptr %227, align 4, !tbaa !9
  %229 = fadd <2 x float> %226, %228
  store <2 x float> %229, ptr %227, align 4, !tbaa !9
  %indvars.iv.next = add nsw i64 %indvars.iv, %176
  %230 = trunc i64 %indvars.iv1184 to i32
  %231 = add i32 %230, 1
  %232 = add i32 %201, %231
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.complex, ptr %18, i64 %233
  %235 = load <2 x float>, ptr %234, align 4, !tbaa !9
  %236 = fmul <2 x float> %207, %235
  %237 = shufflevector <2 x float> %236, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %238 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %205, <2 x float> %235, <2 x float> %237)
  %239 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv.next
  %240 = load <2 x float>, ptr %239, align 4, !tbaa !9
  %241 = fadd <2 x float> %238, %240
  store <2 x float> %241, ptr %239, align 4, !tbaa !9
  %indvars.iv.next.1 = add nsw i64 %indvars.iv.next, %176
  %indvars.iv.next1185.1 = add nuw nsw i64 %indvars.iv1184, 2
  %242 = icmp ult i64 %indvars.iv.next1185.1, %indvars.iv1191
  br i1 %242, label %.lr.ph.new, label %._crit_edge, !llvm.loop !20

._crit_edge:                                      ; preds = %.prol.loopexit, %.lr.ph.new, %._crit_edge1270
  %243 = phi <2 x float> [ %184, %._crit_edge1270 ], [ %.lcssa1547.unr, %.prol.loopexit ], [ %238, %.lr.ph.new ]
  br i1 %.not919, label %257, label %244

244:                                              ; preds = %._crit_edge
  %245 = mul nsw i64 %indvars.iv1191, %180
  %246 = load float, ptr %188, align 4, !tbaa !16
  %gep1320 = getelementptr %struct.complex, ptr %invariant.gep1319, i64 %245
  %247 = load float, ptr %192, align 4, !tbaa !18
  %248 = fneg float %247
  %249 = load <2 x float>, ptr %gep1320, align 4, !tbaa !9
  %250 = insertelement <2 x float> poison, float %247, i64 0
  %251 = insertelement <2 x float> %250, float %248, i64 1
  %252 = fmul <2 x float> %249, %251
  %253 = shufflevector <2 x float> %252, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %254 = insertelement <2 x float> poison, float %246, i64 0
  %255 = shufflevector <2 x float> %254, <2 x float> poison, <2 x i32> zeroinitializer
  %256 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %255, <2 x float> %249, <2 x float> %253)
  store <2 x float> %256, ptr %188, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %183, %._crit_edge, %244
  %258 = phi <2 x float> [ %243, %._crit_edge ], [ %243, %244 ], [ %184, %183 ]
  %indvars.iv.next1190 = add nsw i64 %indvars.iv1189, %176
  %259 = icmp sgt i64 %indvars.iv1191, %179
  %260 = select i1 %259, i32 %71, i32 0
  %spec.select923 = add nsw i32 %.1952, %260
  %indvars.iv.next1192 = add nuw nsw i64 %indvars.iv1191, 1
  %indvars.iv.next1183 = add i32 %indvars.iv1182, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next1192, %wide.trip.count
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond.not, label %.loopexit927, label %183, !llvm.loop !21

261:                                              ; preds = %67
  %262 = load i32, ptr %8, align 4, !tbaa !5
  %263 = icmp eq i32 %262, 1
  %264 = load i32, ptr %3, align 4, !tbaa !5
  %265 = icmp sgt i32 %264, 0
  br i1 %263, label %266, label %365

266:                                              ; preds = %261
  br i1 %265, label %.lr.ph1022, label %.loopexit927

.lr.ph1022:                                       ; preds = %266
  %.not915 = icmp eq i32 %56, 0
  %267 = zext nneg i32 %264 to i64
  %268 = sext i32 %16 to i64
  %.285410201142 = add i32 %16, -1
  %269 = mul i32 %264, %.285410201142
  %270 = add i32 %269, 1
  %271 = sub i32 1, %16
  %scevgep1467 = getelementptr i8, ptr %7, i64 -4
  %scevgep1469 = getelementptr i8, ptr %5, i64 8
  %272 = shl nsw i64 %17, 3
  %273 = or disjoint i64 %272, 4
  %scevgep1471 = getelementptr i8, ptr %5, i64 %273
  %scevgep1473 = getelementptr i8, ptr %7, i64 4
  %scevgep1476 = getelementptr i8, ptr %5, i64 12
  %274 = getelementptr i8, ptr %5, i64 %272
  %scevgep1478 = getelementptr i8, ptr %274, i64 8
  %invariant.gep1573 = getelementptr i8, ptr %18, i64 -24
  %invariant.gep1575 = getelementptr i8, ptr %18, i64 8
  br label %275

275:                                              ; preds = %.lr.ph1022, %362
  %indvar1462 = phi i32 [ 0, %.lr.ph1022 ], [ %indvar.next1463, %362 ]
  %indvars.iv1212 = phi i64 [ %267, %.lr.ph1022 ], [ %indvars.iv.next1213, %362 ]
  %276 = phi <2 x float> [ undef, %.lr.ph1022 ], [ %363, %362 ]
  %277 = mul i32 %271, %indvar1462
  %278 = add i32 %270, %277
  %279 = mul i32 %271, %indvar1462
  %280 = add i32 %270, %279
  %281 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1212
  %282 = load <2 x float>, ptr %281, align 4, !tbaa !9
  %283 = fcmp une <2 x float> %282, zeroinitializer
  %284 = extractelement <2 x i1> %283, i64 0
  %285 = extractelement <2 x i1> %283, i64 1
  %or.cond1332 = select i1 %284, i1 true, i1 %285
  br i1 %or.cond1332, label %._crit_edge1277, label %362

._crit_edge1277:                                  ; preds = %275
  %286 = getelementptr inbounds i8, ptr %281, i64 4
  %287 = load i32, ptr %4, align 4, !tbaa !5
  %288 = trunc nuw nsw i64 %indvars.iv1212 to i32
  %289 = add nsw i32 %287, %288
  %290 = tail call i32 @llvm.smin.i32(i32 %264, i32 %289)
  %291 = sext i32 %290 to i64
  %.not914.not1009 = icmp slt i64 %indvars.iv1212, %291
  br i1 %.not914.not1009, label %.lr.ph1012, label %._crit_edge1013

.lr.ph1012:                                       ; preds = %._crit_edge1277
  %reass.sub = mul i32 %.285410201142, %288
  %292 = add i32 %reass.sub, 1
  %293 = extractelement <2 x float> %282, i64 1
  %294 = fneg float %293
  %295 = sext i32 %287 to i64
  %296 = add i64 %indvars.iv1212, %295
  %smin1214 = tail call i64 @llvm.smin.i64(i64 %296, i64 %267)
  %297 = add nsw i64 %smin1214, -1
  %smin1487 = tail call i64 @llvm.smin.i64(i64 %indvars.iv1212, i64 %297)
  %298 = sub i64 %smin1214, %smin1487
  %min.iters.check1490 = icmp ult i64 %298, 12
  br i1 %min.iters.check1490, label %scalar.ph1489.preheader, label %vector.scevcheck1460

vector.scevcheck1460:                             ; preds = %.lr.ph1012
  %299 = add nsw i64 %smin1214, -1
  %smin1461 = tail call i64 @llvm.smin.i64(i64 %indvars.iv1212, i64 %299)
  %300 = xor i64 %smin1461, -1
  %301 = add i64 %smin1214, %300
  %302 = trunc i64 %smin1214 to i32
  %303 = add i32 %280, %302
  %304 = trunc i64 %301 to i32
  %305 = sub i32 %303, %304
  %306 = icmp sgt i32 %305, %303
  %307 = icmp ugt i64 %301, 4294967295
  %308 = or i1 %306, %307
  br i1 %308, label %scalar.ph1489.preheader, label %vector.memcheck1464

vector.memcheck1464:                              ; preds = %vector.scevcheck1460
  %309 = add nsw i64 %smin1214, -1
  %smin1465 = tail call i64 @llvm.smin.i64(i64 %indvars.iv1212, i64 %309)
  %310 = shl nsw i64 %smin1465, 3
  %scevgep1466 = getelementptr i8, ptr %7, i64 %310
  %311 = shl nsw i64 %smin1214, 3
  %scevgep1468 = getelementptr i8, ptr %scevgep1467, i64 %311
  %312 = add i64 %smin1465, %17
  %313 = trunc i64 %smin1214 to i32
  %314 = add i32 %278, %313
  %315 = sext i32 %314 to i64
  %316 = add i64 %312, %315
  %317 = sub i64 %316, %smin1214
  %318 = shl i64 %317, 3
  %scevgep1470 = getelementptr i8, ptr %scevgep1469, i64 %318
  %319 = shl nsw i64 %315, 3
  %scevgep1472 = getelementptr i8, ptr %scevgep1471, i64 %319
  %scevgep1474 = getelementptr i8, ptr %scevgep1473, i64 %310
  %scevgep1475 = getelementptr i8, ptr %7, i64 %311
  %scevgep1477 = getelementptr i8, ptr %scevgep1476, i64 %318
  %scevgep1479 = getelementptr i8, ptr %scevgep1478, i64 %319
  %bound01480 = icmp ult ptr %scevgep1466, %scevgep1472
  %bound11481 = icmp ult ptr %scevgep1470, %scevgep1468
  %found.conflict1482 = and i1 %bound01480, %bound11481
  %bound01483 = icmp ult ptr %scevgep1474, %scevgep1479
  %bound11484 = icmp ult ptr %scevgep1477, %scevgep1475
  %found.conflict1485 = and i1 %bound01483, %bound11484
  %conflict.rdx1486 = or i1 %found.conflict1482, %found.conflict1485
  br i1 %conflict.rdx1486, label %scalar.ph1489.preheader, label %vector.ph1491

vector.ph1491:                                    ; preds = %vector.memcheck1464
  %n.vec1493 = and i64 %298, -4
  %ind.end1494 = sub i64 %smin1214, %n.vec1493
  %broadcast.splatinsert1504 = insertelement <4 x float> poison, float %294, i64 0
  %broadcast.splat1505 = shufflevector <4 x float> %broadcast.splatinsert1504, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1507 = shufflevector <2 x float> %282, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1509 = shufflevector <2 x float> %282, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body1496

vector.body1496:                                  ; preds = %vector.body1496, %vector.ph1491
  %index1497 = phi i64 [ 0, %vector.ph1491 ], [ %index.next1518, %vector.body1496 ]
  %offset.idx1498 = sub i64 %smin1214, %index1497
  %offset.idx1499 = sub i64 %smin1214, %index1497
  %320 = trunc i64 %offset.idx1499 to i32
  %321 = add i32 %292, %320
  %322 = sext i32 %321 to i64
  %gep1574 = getelementptr %struct.complex, ptr %invariant.gep1573, i64 %322
  %wide.vec1500 = load <8 x float>, ptr %gep1574, align 4, !tbaa !9
  %strided.vec1501 = shufflevector <8 x float> %wide.vec1500, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %reverse = shufflevector <4 x float> %strided.vec1501, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %strided.vec1502 = shufflevector <8 x float> %wide.vec1500, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %reverse1503 = shufflevector <4 x float> %strided.vec1502, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %323 = fmul <4 x float> %reverse1503, %broadcast.splat1505
  %324 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1507, <4 x float> %reverse, <4 x float> %323)
  %325 = fmul <4 x float> %broadcast.splat1509, %reverse
  %326 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1507, <4 x float> %reverse1503, <4 x float> %325)
  %327 = getelementptr inbounds %struct.complex, ptr %19, i64 %offset.idx1498
  %328 = getelementptr inbounds i8, ptr %327, i64 -24
  %wide.vec1510 = load <8 x float>, ptr %328, align 4, !tbaa !9
  %strided.vec1511 = shufflevector <8 x float> %wide.vec1510, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %reverse1512 = shufflevector <4 x float> %strided.vec1511, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %strided.vec1513 = shufflevector <8 x float> %wide.vec1510, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %reverse1514 = shufflevector <4 x float> %strided.vec1513, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %329 = fadd <4 x float> %324, %reverse1512
  %330 = fadd <4 x float> %326, %reverse1514
  %331 = getelementptr inbounds i8, ptr %327, i64 -24
  %interleaved.vec1517 = shufflevector <4 x float> %329, <4 x float> %330, <8 x i32> <i32 3, i32 7, i32 2, i32 6, i32 1, i32 5, i32 0, i32 4>
  store <8 x float> %interleaved.vec1517, ptr %331, align 4, !tbaa !9
  %index.next1518 = add nuw i64 %index1497, 4
  %332 = icmp eq i64 %index.next1518, %n.vec1493
  br i1 %332, label %middle.block1488, label %vector.body1496, !llvm.loop !22

middle.block1488:                                 ; preds = %vector.body1496
  %cmp.n1519 = icmp eq i64 %298, %n.vec1493
  %333 = shufflevector <4 x float> %324, <4 x float> %326, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1519, label %._crit_edge1013, label %scalar.ph1489.preheader

scalar.ph1489.preheader:                          ; preds = %middle.block1488, %vector.memcheck1464, %vector.scevcheck1460, %.lr.ph1012
  %indvars.iv1215.ph = phi i64 [ %smin1214, %vector.memcheck1464 ], [ %smin1214, %vector.scevcheck1460 ], [ %smin1214, %.lr.ph1012 ], [ %ind.end1494, %middle.block1488 ]
  %334 = shufflevector <2 x float> %282, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %335 = insertelement <2 x float> %334, float %294, i64 1
  %336 = shufflevector <2 x float> %282, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1489

scalar.ph1489:                                    ; preds = %scalar.ph1489.preheader, %scalar.ph1489
  %indvars.iv1215 = phi i64 [ %indvars.iv.next1216, %scalar.ph1489 ], [ %indvars.iv1215.ph, %scalar.ph1489.preheader ]
  %337 = trunc nsw i64 %indvars.iv1215 to i32
  %338 = add i32 %292, %337
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds %struct.complex, ptr %18, i64 %339
  %341 = load <2 x float>, ptr %340, align 4, !tbaa !9
  %342 = fmul <2 x float> %335, %341
  %343 = shufflevector <2 x float> %342, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %344 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %336, <2 x float> %341, <2 x float> %343)
  %345 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1215
  %346 = load <2 x float>, ptr %345, align 4, !tbaa !9
  %347 = fadd <2 x float> %344, %346
  store <2 x float> %347, ptr %345, align 4, !tbaa !9
  %indvars.iv.next1216 = add nsw i64 %indvars.iv1215, -1
  %.not914.not = icmp sgt i64 %indvars.iv.next1216, %indvars.iv1212
  br i1 %.not914.not, label %scalar.ph1489, label %._crit_edge1013, !llvm.loop !23

._crit_edge1013:                                  ; preds = %scalar.ph1489, %middle.block1488, %._crit_edge1277
  %348 = phi <2 x float> [ %276, %._crit_edge1277 ], [ %333, %middle.block1488 ], [ %344, %scalar.ph1489 ]
  br i1 %.not915, label %362, label %349

349:                                              ; preds = %._crit_edge1013
  %350 = mul nsw i64 %indvars.iv1212, %268
  %351 = load float, ptr %281, align 4, !tbaa !16
  %gep1576 = getelementptr %struct.complex, ptr %invariant.gep1575, i64 %350
  %352 = load float, ptr %286, align 4, !tbaa !18
  %353 = fneg float %352
  %354 = load <2 x float>, ptr %gep1576, align 4, !tbaa !9
  %355 = insertelement <2 x float> poison, float %352, i64 0
  %356 = insertelement <2 x float> %355, float %353, i64 1
  %357 = fmul <2 x float> %354, %356
  %358 = shufflevector <2 x float> %357, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %359 = insertelement <2 x float> poison, float %351, i64 0
  %360 = shufflevector <2 x float> %359, <2 x float> poison, <2 x i32> zeroinitializer
  %361 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %360, <2 x float> %354, <2 x float> %358)
  store <2 x float> %361, ptr %281, align 4, !tbaa !9
  br label %362

362:                                              ; preds = %275, %349, %._crit_edge1013
  %363 = phi <2 x float> [ %348, %349 ], [ %348, %._crit_edge1013 ], [ %276, %275 ]
  %indvars.iv.next1213 = add nsw i64 %indvars.iv1212, -1
  %364 = icmp sgt i64 %indvars.iv1212, 1
  %indvar.next1463 = add i32 %indvar1462, 1
  br i1 %364, label %275, label %.loopexit927, !llvm.loop !24

365:                                              ; preds = %261
  br i1 %265, label %.lr.ph1001, label %.loopexit927

.lr.ph1001:                                       ; preds = %365
  %366 = add nsw i32 %264, -1
  %367 = mul nsw i32 %366, %262
  %368 = add nsw i32 %367, %.0841
  %.not911 = icmp eq i32 %56, 0
  %369 = load i32, ptr %4, align 4, !tbaa !5
  %370 = zext nneg i32 %264 to i64
  %371 = sext i32 %16 to i64
  %372 = sext i32 %369 to i64
  %.38559961141 = add i32 %16, -1
  %invariant.op = sub nsw i64 %370, %372
  %invariant.gep1571 = getelementptr i8, ptr %18, i64 8
  br label %373

373:                                              ; preds = %.lr.ph1001, %420
  %indvars.iv1207 = phi i64 [ %370, %.lr.ph1001 ], [ %indvars.iv.next1208, %420 ]
  %.3998 = phi i32 [ %368, %.lr.ph1001 ], [ %spec.select924, %420 ]
  %.1843997 = phi i32 [ %368, %.lr.ph1001 ], [ %422, %420 ]
  %374 = phi <2 x float> [ undef, %.lr.ph1001 ], [ %421, %420 ]
  %375 = sext i32 %.1843997 to i64
  %376 = getelementptr inbounds %struct.complex, ptr %19, i64 %375
  %377 = load float, ptr %376, align 4, !tbaa !16
  %378 = fcmp une float %377, 0.000000e+00
  %.phi.trans.insert1275 = getelementptr inbounds i8, ptr %376, i64 4
  %.pre1276 = load float, ptr %.phi.trans.insert1275, align 4, !tbaa !18
  %379 = fcmp une float %.pre1276, 0.000000e+00
  %or.cond1333 = select i1 %378, i1 true, i1 %379
  br i1 %or.cond1333, label %._crit_edge1274, label %420

._crit_edge1274:                                  ; preds = %373
  %380 = getelementptr inbounds i8, ptr %376, i64 4
  %381 = trunc nuw nsw i64 %indvars.iv1207 to i32
  %382 = add nsw i32 %369, %381
  %383 = tail call i32 @llvm.smin.i32(i32 %264, i32 %382)
  %384 = sext i32 %383 to i64
  %.not910.not984 = icmp slt i64 %indvars.iv1207, %384
  br i1 %.not910.not984, label %.lr.ph988, label %._crit_edge989

.lr.ph988:                                        ; preds = %._crit_edge1274
  %reass.sub1140 = mul i32 %.38559961141, %381
  %385 = add i32 %reass.sub1140, 1
  %386 = fneg float %.pre1276
  %387 = add nsw i64 %indvars.iv1207, %372
  %smin = tail call i64 @llvm.smin.i64(i64 %387, i64 %370)
  %388 = insertelement <2 x float> poison, float %377, i64 0
  %389 = shufflevector <2 x float> %388, <2 x float> poison, <2 x i32> zeroinitializer
  %390 = insertelement <2 x float> poison, float %.pre1276, i64 0
  %391 = insertelement <2 x float> %390, float %386, i64 1
  br label %392

392:                                              ; preds = %.lr.ph988, %392
  %indvars.iv1209 = phi i64 [ %smin, %.lr.ph988 ], [ %indvars.iv.next1210, %392 ]
  %.1847986 = phi i32 [ %.3998, %.lr.ph988 ], [ %405, %392 ]
  %393 = trunc nsw i64 %indvars.iv1209 to i32
  %394 = add i32 %385, %393
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.complex, ptr %18, i64 %395
  %397 = load <2 x float>, ptr %396, align 4, !tbaa !9
  %398 = fmul <2 x float> %391, %397
  %399 = shufflevector <2 x float> %398, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %400 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %389, <2 x float> %397, <2 x float> %399)
  %401 = sext i32 %.1847986 to i64
  %402 = getelementptr inbounds %struct.complex, ptr %19, i64 %401
  %403 = load <2 x float>, ptr %402, align 4, !tbaa !9
  %404 = fadd <2 x float> %400, %403
  store <2 x float> %404, ptr %402, align 4, !tbaa !9
  %405 = sub nsw i32 %.1847986, %262
  %indvars.iv.next1210 = add nsw i64 %indvars.iv1209, -1
  %.not910.not = icmp sgt i64 %indvars.iv.next1210, %indvars.iv1207
  br i1 %.not910.not, label %392, label %._crit_edge989, !llvm.loop !25

._crit_edge989:                                   ; preds = %392, %._crit_edge1274
  %406 = phi <2 x float> [ %374, %._crit_edge1274 ], [ %400, %392 ]
  br i1 %.not911, label %420, label %407

407:                                              ; preds = %._crit_edge989
  %408 = mul nsw i64 %indvars.iv1207, %371
  %409 = load float, ptr %376, align 4, !tbaa !16
  %gep1572 = getelementptr %struct.complex, ptr %invariant.gep1571, i64 %408
  %410 = load float, ptr %380, align 4, !tbaa !18
  %411 = fneg float %410
  %412 = load <2 x float>, ptr %gep1572, align 4, !tbaa !9
  %413 = insertelement <2 x float> poison, float %410, i64 0
  %414 = insertelement <2 x float> %413, float %411, i64 1
  %415 = fmul <2 x float> %412, %414
  %416 = shufflevector <2 x float> %415, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %417 = insertelement <2 x float> poison, float %409, i64 0
  %418 = shufflevector <2 x float> %417, <2 x float> poison, <2 x i32> zeroinitializer
  %419 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %418, <2 x float> %412, <2 x float> %416)
  store <2 x float> %419, ptr %376, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %373, %._crit_edge989, %407
  %421 = phi <2 x float> [ %406, %._crit_edge989 ], [ %406, %407 ], [ %374, %373 ]
  %422 = sub nsw i32 %.1843997, %262
  %.not912 = icmp sgt i64 %indvars.iv1207, %invariant.op
  %423 = select i1 %.not912, i32 0, i32 %262
  %spec.select924 = sub nsw i32 %.3998, %423
  %indvars.iv.next1208 = add nsw i64 %indvars.iv1207, -1
  %424 = icmp sgt i64 %indvars.iv1207, 1
  br i1 %424, label %373, label %.loopexit927, !llvm.loop !26

425:                                              ; preds = %64
  br i1 %.not881, label %627, label %426

426:                                              ; preds = %425
  %427 = load i32, ptr %4, align 4, !tbaa !5
  %428 = add nsw i32 %427, 1
  %429 = load i32, ptr %8, align 4, !tbaa !5
  %430 = icmp eq i32 %429, 1
  %431 = load i32, ptr %3, align 4, !tbaa !5
  %432 = icmp sgt i32 %431, 0
  br i1 %430, label %433, label %524

433:                                              ; preds = %426
  br i1 %432, label %.lr.ph1075, label %.loopexit927

.lr.ph1075:                                       ; preds = %433
  %.not903 = icmp eq i32 %55, 0
  %.not906 = icmp eq i32 %56, 0
  %434 = getelementptr inbounds i8, ptr %14, i64 4
  %435 = zext nneg i32 %431 to i64
  %436 = sext i32 %428 to i64
  %437 = sext i32 %16 to i64
  %invariant.gep1329 = getelementptr %struct.complex, ptr %18, i64 %436
  br i1 %.not903, label %.lr.ph1075.split.us, label %.lr.ph1075.split

.lr.ph1075.split.us:                              ; preds = %.lr.ph1075, %.loopexit931.us
  %indvars.iv1233 = phi i64 [ %indvars.iv.next1234, %.loopexit931.us ], [ %435, %.lr.ph1075 ]
  %indvars1238 = trunc i64 %indvars.iv1233 to i32
  %438 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1233
  %439 = load <2 x float>, ptr %438, align 4, !tbaa !9
  br i1 %.not906, label %450, label %440

440:                                              ; preds = %.lr.ph1075.split.us
  %441 = mul nsw i64 %indvars.iv1233, %437
  %gep1330 = getelementptr %struct.complex, ptr %invariant.gep1329, i64 %441
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %gep1330) #4
  %442 = load <2 x float>, ptr %13, align 8, !tbaa !9
  %443 = shufflevector <2 x float> %439, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %444 = fneg <2 x float> %439
  %445 = shufflevector <2 x float> %443, <2 x float> %444, <2 x i32> <i32 0, i32 3>
  %446 = fmul <2 x float> %442, %445
  %447 = shufflevector <2 x float> %446, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %448 = shufflevector <2 x float> %439, <2 x float> poison, <2 x i32> zeroinitializer
  %449 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %448, <2 x float> %442, <2 x float> %447)
  br label %450

450:                                              ; preds = %440, %.lr.ph1075.split.us
  %451 = phi <2 x float> [ %449, %440 ], [ %439, %.lr.ph1075.split.us ]
  %452 = load i32, ptr %4, align 4, !tbaa !5
  %453 = sub nsw i32 %indvars1238, %452
  %454 = call i32 @llvm.smax.i32(i32 %453, i32 1)
  %455 = zext nneg i32 %454 to i64
  %.not905.not1064.us = icmp ugt i64 %indvars.iv1233, %455
  br i1 %.not905.not1064.us, label %.lr.ph1069.us, label %.loopexit931.us

456:                                              ; preds = %.lr.ph1069.us, %456
  %indvars.iv1235 = phi i64 [ %indvars.iv1233, %.lr.ph1069.us ], [ %indvars.iv.next1236, %456 ]
  %457 = phi <2 x float> [ %451, %.lr.ph1069.us ], [ %474, %456 ]
  %indvars.iv.next1236 = add nsw i64 %indvars.iv1235, -1
  %458 = trunc nsw i64 %indvars.iv.next1236 to i32
  %459 = add i32 %480, %458
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds %struct.complex, ptr %18, i64 %460
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef %461) #4
  %462 = load float, ptr %14, align 4, !tbaa !16
  %463 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv.next1236
  %464 = load float, ptr %434, align 4, !tbaa !18
  %465 = fneg float %464
  %466 = load <2 x float>, ptr %463, align 4, !tbaa !9
  %467 = insertelement <2 x float> poison, float %464, i64 0
  %468 = insertelement <2 x float> %467, float %465, i64 1
  %469 = fmul <2 x float> %466, %468
  %470 = shufflevector <2 x float> %469, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %471 = insertelement <2 x float> poison, float %462, i64 0
  %472 = shufflevector <2 x float> %471, <2 x float> poison, <2 x i32> zeroinitializer
  %473 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %472, <2 x float> %466, <2 x float> %470)
  store <2 x float> %473, ptr %13, align 8, !tbaa !9
  %474 = fadd <2 x float> %457, %473
  %.not905.not.us = icmp sgt i64 %indvars.iv.next1236, %455
  br i1 %.not905.not.us, label %456, label %.loopexit931.us, !llvm.loop !27

.loopexit931.us:                                  ; preds = %456, %450
  %475 = phi <2 x float> [ %451, %450 ], [ %474, %456 ]
  store <2 x float> %475, ptr %438, align 4, !tbaa !9
  %indvars.iv.next1234 = add nsw i64 %indvars.iv1233, -1
  %476 = icmp sgt i64 %indvars.iv1233, 1
  br i1 %476, label %.lr.ph1075.split.us, label %.loopexit927, !llvm.loop !28

.lr.ph1069.us:                                    ; preds = %450
  %477 = mul nsw i32 %16, %indvars1238
  %478 = trunc i64 %indvars.iv1233 to i32
  %479 = sub i32 %428, %478
  %480 = add i32 %477, %479
  br label %456

.lr.ph1075.split:                                 ; preds = %.lr.ph1075, %.loopexit932
  %indvars.iv1227 = phi i64 [ %indvars.iv.next1228, %.loopexit932 ], [ %435, %.lr.ph1075 ]
  %indvars1232 = trunc i64 %indvars.iv1227 to i32
  %481 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1227
  %482 = load <2 x float>, ptr %481, align 4, !tbaa !9
  br i1 %.not906, label %493, label %483

483:                                              ; preds = %.lr.ph1075.split
  %484 = mul nsw i64 %indvars.iv1227, %437
  %gep1328 = getelementptr %struct.complex, ptr %invariant.gep1329, i64 %484
  %485 = load <2 x float>, ptr %gep1328, align 4, !tbaa !9
  %486 = shufflevector <2 x float> %482, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %487 = fneg <2 x float> %482
  %488 = shufflevector <2 x float> %486, <2 x float> %487, <2 x i32> <i32 0, i32 3>
  %489 = fmul <2 x float> %485, %488
  %490 = shufflevector <2 x float> %489, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %491 = shufflevector <2 x float> %482, <2 x float> poison, <2 x i32> zeroinitializer
  %492 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %491, <2 x float> %485, <2 x float> %490)
  br label %493

493:                                              ; preds = %483, %.lr.ph1075.split
  %494 = phi <2 x float> [ %492, %483 ], [ %482, %.lr.ph1075.split ]
  %495 = sub nsw i32 %indvars1232, %427
  %496 = tail call i32 @llvm.smax.i32(i32 %495, i32 1)
  %497 = zext nneg i32 %496 to i64
  %.not907.not1054 = icmp ugt i64 %indvars.iv1227, %497
  br i1 %.not907.not1054, label %.lr.ph1059, label %.loopexit932

.lr.ph1059:                                       ; preds = %493
  %498 = mul nsw i32 %16, %indvars1232
  %499 = trunc i64 %indvars.iv1227 to i32
  %500 = sub i32 %428, %499
  %501 = add i32 %498, %500
  br label %502

502:                                              ; preds = %.lr.ph1059, %502
  %indvars.iv1229 = phi i64 [ %indvars.iv1227, %.lr.ph1059 ], [ %indvars.iv.next1230, %502 ]
  %503 = phi <2 x float> [ %494, %.lr.ph1059 ], [ %521, %502 ]
  %indvars.iv.next1230 = add nsw i64 %indvars.iv1229, -1
  %504 = trunc nsw i64 %indvars.iv.next1230 to i32
  %505 = add i32 %501, %504
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds %struct.complex, ptr %18, i64 %506
  %508 = load float, ptr %507, align 4, !tbaa !16
  %509 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv.next1230
  %510 = getelementptr inbounds i8, ptr %507, i64 4
  %511 = load float, ptr %510, align 4, !tbaa !18
  %512 = fneg float %511
  %513 = load <2 x float>, ptr %509, align 4, !tbaa !9
  %514 = insertelement <2 x float> poison, float %511, i64 0
  %515 = insertelement <2 x float> %514, float %512, i64 1
  %516 = fmul <2 x float> %513, %515
  %517 = shufflevector <2 x float> %516, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %518 = insertelement <2 x float> poison, float %508, i64 0
  %519 = shufflevector <2 x float> %518, <2 x float> poison, <2 x i32> zeroinitializer
  %520 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %519, <2 x float> %513, <2 x float> %517)
  %521 = fadd <2 x float> %503, %520
  %.not907.not = icmp sgt i64 %indvars.iv.next1230, %497
  br i1 %.not907.not, label %502, label %.loopexit932, !llvm.loop !29

.loopexit932:                                     ; preds = %502, %493
  %522 = phi <2 x float> [ %494, %493 ], [ %521, %502 ]
  store <2 x float> %522, ptr %481, align 4, !tbaa !9
  %indvars.iv.next1228 = add nsw i64 %indvars.iv1227, -1
  %523 = icmp sgt i64 %indvars.iv1227, 1
  br i1 %523, label %.lr.ph1075.split, label %.loopexit927, !llvm.loop !28

524:                                              ; preds = %426
  br i1 %432, label %.lr.ph1053, label %.loopexit927

.lr.ph1053:                                       ; preds = %524
  %525 = add nsw i32 %431, -1
  %526 = mul nsw i32 %525, %429
  %527 = add nsw i32 %526, %.0841
  %.not898 = icmp eq i32 %55, 0
  %.not901 = icmp eq i32 %56, 0
  %528 = getelementptr inbounds i8, ptr %14, i64 4
  %529 = zext nneg i32 %431 to i64
  %530 = sext i32 %428 to i64
  %531 = sext i32 %16 to i64
  %invariant.gep1323 = getelementptr %struct.complex, ptr %18, i64 %530
  %invariant.gep1325 = getelementptr %struct.complex, ptr %18, i64 %530
  br label %532

532:                                              ; preds = %.lr.ph1053, %.loopexit934
  %533 = phi i32 [ %429, %.lr.ph1053 ], [ %623, %.loopexit934 ]
  %indvars.iv1218 = phi i64 [ %529, %.lr.ph1053 ], [ %indvars.iv.next1219, %.loopexit934 ]
  %.51051 = phi i32 [ %527, %.lr.ph1053 ], [ %537, %.loopexit934 ]
  %.28441050 = phi i32 [ %527, %.lr.ph1053 ], [ %625, %.loopexit934 ]
  %indvars1226 = trunc i64 %indvars.iv1218 to i32
  %534 = sext i32 %.28441050 to i64
  %535 = getelementptr inbounds %struct.complex, ptr %19, i64 %534
  %536 = load <2 x float>, ptr %535, align 4, !tbaa !9
  %537 = sub nsw i32 %.51051, %533
  %538 = sub nsw i64 %530, %indvars.iv1218
  br i1 %.not898, label %581, label %539

539:                                              ; preds = %532
  br i1 %.not901, label %550, label %540

540:                                              ; preds = %539
  %541 = mul nsw i64 %indvars.iv1218, %531
  %gep1324 = getelementptr %struct.complex, ptr %invariant.gep1323, i64 %541
  %542 = load <2 x float>, ptr %gep1324, align 4, !tbaa !9
  %543 = shufflevector <2 x float> %536, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %544 = fneg <2 x float> %536
  %545 = shufflevector <2 x float> %543, <2 x float> %544, <2 x i32> <i32 0, i32 3>
  %546 = fmul <2 x float> %542, %545
  %547 = shufflevector <2 x float> %546, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %548 = shufflevector <2 x float> %536, <2 x float> poison, <2 x i32> zeroinitializer
  %549 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %548, <2 x float> %542, <2 x float> %547)
  br label %550

550:                                              ; preds = %540, %539
  %551 = phi <2 x float> [ %549, %540 ], [ %536, %539 ]
  %552 = load i32, ptr %4, align 4, !tbaa !5
  %553 = sub nsw i32 %indvars1226, %552
  %554 = call i32 @llvm.smax.i32(i32 %553, i32 1)
  %555 = zext nneg i32 %554 to i64
  %.not902.not1028 = icmp ugt i64 %indvars.iv1218, %555
  br i1 %.not902.not1028, label %.lr.ph1034, label %.loopexit934

.lr.ph1034:                                       ; preds = %550
  %556 = mul nsw i32 %16, %indvars1226
  %557 = trunc nsw i64 %538 to i32
  %558 = add i32 %556, %557
  br label %559

559:                                              ; preds = %.lr.ph1034, %559
  %indvars.iv1220 = phi i64 [ %indvars.iv1218, %.lr.ph1034 ], [ %indvars.iv.next1221, %559 ]
  %.28481030 = phi i32 [ %537, %.lr.ph1034 ], [ %580, %559 ]
  %560 = phi <2 x float> [ %551, %.lr.ph1034 ], [ %579, %559 ]
  %indvars.iv.next1221 = add nsw i64 %indvars.iv1220, -1
  %561 = trunc nsw i64 %indvars.iv.next1221 to i32
  %562 = add i32 %558, %561
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %struct.complex, ptr %18, i64 %563
  %565 = load float, ptr %564, align 4, !tbaa !16
  %566 = sext i32 %.28481030 to i64
  %567 = getelementptr inbounds %struct.complex, ptr %19, i64 %566
  %568 = getelementptr inbounds i8, ptr %564, i64 4
  %569 = load float, ptr %568, align 4, !tbaa !18
  %570 = fneg float %569
  %571 = load <2 x float>, ptr %567, align 4, !tbaa !9
  %572 = insertelement <2 x float> poison, float %569, i64 0
  %573 = insertelement <2 x float> %572, float %570, i64 1
  %574 = fmul <2 x float> %571, %573
  %575 = shufflevector <2 x float> %574, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %576 = insertelement <2 x float> poison, float %565, i64 0
  %577 = shufflevector <2 x float> %576, <2 x float> poison, <2 x i32> zeroinitializer
  %578 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %577, <2 x float> %571, <2 x float> %575)
  %579 = fadd <2 x float> %560, %578
  %580 = sub nsw i32 %.28481030, %533
  %.not902.not = icmp sgt i64 %indvars.iv.next1221, %555
  br i1 %.not902.not, label %559, label %..loopexit935_crit_edge, !llvm.loop !30

581:                                              ; preds = %532
  br i1 %.not901, label %592, label %582

582:                                              ; preds = %581
  %583 = mul nsw i64 %indvars.iv1218, %531
  %gep1326 = getelementptr %struct.complex, ptr %invariant.gep1325, i64 %583
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %gep1326) #4
  %584 = load <2 x float>, ptr %13, align 8, !tbaa !9
  %585 = shufflevector <2 x float> %536, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %586 = fneg <2 x float> %536
  %587 = shufflevector <2 x float> %585, <2 x float> %586, <2 x i32> <i32 0, i32 3>
  %588 = fmul <2 x float> %584, %587
  %589 = shufflevector <2 x float> %588, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %590 = shufflevector <2 x float> %536, <2 x float> poison, <2 x i32> zeroinitializer
  %591 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %590, <2 x float> %584, <2 x float> %589)
  br label %592

592:                                              ; preds = %582, %581
  %593 = phi <2 x float> [ %591, %582 ], [ %536, %581 ]
  %594 = load i32, ptr %4, align 4, !tbaa !5
  %595 = sub nsw i32 %indvars1226, %594
  %596 = call i32 @llvm.smax.i32(i32 %595, i32 1)
  %597 = zext nneg i32 %596 to i64
  %.not900.not1039 = icmp ugt i64 %indvars.iv1218, %597
  br i1 %.not900.not1039, label %.lr.ph1045, label %..loopexit934_crit_edge

..loopexit934_crit_edge:                          ; preds = %592
  %.pre1280 = load i32, ptr %8, align 4, !tbaa !5
  br label %.loopexit934

.lr.ph1045:                                       ; preds = %592
  %598 = mul nsw i32 %16, %indvars1226
  %599 = trunc nsw i64 %538 to i32
  %600 = add i32 %598, %599
  br label %601

601:                                              ; preds = %.lr.ph1045, %601
  %indvars.iv1223 = phi i64 [ %indvars.iv1218, %.lr.ph1045 ], [ %indvars.iv.next1224, %601 ]
  %.38491041 = phi i32 [ %537, %.lr.ph1045 ], [ %622, %601 ]
  %602 = phi <2 x float> [ %593, %.lr.ph1045 ], [ %620, %601 ]
  %indvars.iv.next1224 = add nsw i64 %indvars.iv1223, -1
  %603 = trunc nsw i64 %indvars.iv.next1224 to i32
  %604 = add i32 %600, %603
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds %struct.complex, ptr %18, i64 %605
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef %606) #4
  %607 = load float, ptr %14, align 4, !tbaa !16
  %608 = sext i32 %.38491041 to i64
  %609 = getelementptr inbounds %struct.complex, ptr %19, i64 %608
  %610 = load float, ptr %528, align 4, !tbaa !18
  %611 = fneg float %610
  %612 = load <2 x float>, ptr %609, align 4, !tbaa !9
  %613 = insertelement <2 x float> poison, float %610, i64 0
  %614 = insertelement <2 x float> %613, float %611, i64 1
  %615 = fmul <2 x float> %612, %614
  %616 = shufflevector <2 x float> %615, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %617 = insertelement <2 x float> poison, float %607, i64 0
  %618 = shufflevector <2 x float> %617, <2 x float> poison, <2 x i32> zeroinitializer
  %619 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %618, <2 x float> %612, <2 x float> %616)
  store <2 x float> %619, ptr %13, align 8, !tbaa !9
  %620 = fadd <2 x float> %602, %619
  %621 = load i32, ptr %8, align 4, !tbaa !5
  %622 = sub nsw i32 %.38491041, %621
  %.not900.not = icmp sgt i64 %indvars.iv.next1224, %597
  br i1 %.not900.not, label %601, label %.loopexit934, !llvm.loop !31

..loopexit935_crit_edge:                          ; preds = %559
  store <2 x float> %578, ptr %13, align 8, !tbaa !9
  br label %.loopexit934

.loopexit934:                                     ; preds = %601, %..loopexit934_crit_edge, %550, %..loopexit935_crit_edge
  %623 = phi i32 [ %.pre1280, %..loopexit934_crit_edge ], [ %533, %..loopexit935_crit_edge ], [ %533, %550 ], [ %621, %601 ]
  %624 = phi <2 x float> [ %593, %..loopexit934_crit_edge ], [ %579, %..loopexit935_crit_edge ], [ %551, %550 ], [ %620, %601 ]
  store <2 x float> %624, ptr %535, align 4, !tbaa !9
  %625 = sub nsw i32 %.28441050, %623
  %indvars.iv.next1219 = add nsw i64 %indvars.iv1218, -1
  %626 = icmp sgt i64 %indvars.iv1218, 1
  br i1 %626, label %532, label %.loopexit927, !llvm.loop !32

627:                                              ; preds = %425
  %628 = load i32, ptr %8, align 4, !tbaa !5
  %629 = icmp eq i32 %628, 1
  %630 = load i32, ptr %3, align 4, !tbaa !5
  %invariant.gep1127 = getelementptr i8, ptr %18, i64 8
  %.not8901129 = icmp slt i32 %630, 1
  br i1 %629, label %631, label %718

631:                                              ; preds = %627
  br i1 %.not8901129, label %.loopexit927, label %.lr.ph1133

.lr.ph1133:                                       ; preds = %631
  %.not891 = icmp eq i32 %55, 0
  %.not895 = icmp eq i32 %56, 0
  %632 = getelementptr inbounds i8, ptr %14, i64 4
  %633 = sext i32 %16 to i64
  %634 = add nuw i32 %630, 1
  %wide.trip.count1268 = zext i32 %634 to i64
  br i1 %.not891, label %.lr.ph1133.split.us.preheader, label %.lr.ph1133.split

.lr.ph1133.split.us.preheader:                    ; preds = %.lr.ph1133
  %.68581130.us1146 = add i32 %16, -1
  br label %.lr.ph1133.split.us

.lr.ph1133.split.us:                              ; preds = %.lr.ph1133.split.us.preheader, %.loopexit.us
  %indvars.iv1262 = phi i64 [ 1, %.lr.ph1133.split.us.preheader ], [ %indvars.iv.next1263, %.loopexit.us ]
  %635 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1262
  %636 = load <2 x float>, ptr %635, align 4, !tbaa !9
  br i1 %.not895, label %647, label %637

637:                                              ; preds = %.lr.ph1133.split.us
  %638 = mul nsw i64 %indvars.iv1262, %633
  %gep1128.us = getelementptr %struct.complex, ptr %invariant.gep1127, i64 %638
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %gep1128.us) #4
  %639 = load <2 x float>, ptr %13, align 8, !tbaa !9
  %640 = shufflevector <2 x float> %636, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %641 = fneg <2 x float> %636
  %642 = shufflevector <2 x float> %640, <2 x float> %641, <2 x i32> <i32 0, i32 3>
  %643 = fmul <2 x float> %639, %642
  %644 = shufflevector <2 x float> %643, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %645 = shufflevector <2 x float> %636, <2 x float> poison, <2 x i32> zeroinitializer
  %646 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %645, <2 x float> %639, <2 x float> %644)
  br label %647

647:                                              ; preds = %637, %.lr.ph1133.split.us
  %648 = phi <2 x float> [ %646, %637 ], [ %636, %.lr.ph1133.split.us ]
  %649 = load i32, ptr %3, align 4, !tbaa !5
  %650 = load i32, ptr %4, align 4, !tbaa !5
  %651 = trunc nuw nsw i64 %indvars.iv1262 to i32
  %652 = add nsw i32 %650, %651
  %653 = call i32 @llvm.smin.i32(i32 %649, i32 %652)
  %654 = sext i32 %653 to i64
  %.not894.not1119.us = icmp slt i64 %indvars.iv1262, %654
  br i1 %.not894.not1119.us, label %.lr.ph1124.us, label %.loopexit.us

655:                                              ; preds = %.lr.ph1124.us, %655
  %indvars.iv1264 = phi i64 [ %indvars.iv1262, %.lr.ph1124.us ], [ %indvars.iv.next1265, %655 ]
  %656 = phi <2 x float> [ %648, %.lr.ph1124.us ], [ %673, %655 ]
  %indvars.iv.next1265 = add nuw nsw i64 %indvars.iv1264, 1
  %657 = trunc nsw i64 %indvars.iv.next1265 to i32
  %658 = add i32 %675, %657
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds %struct.complex, ptr %18, i64 %659
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef %660) #4
  %661 = load float, ptr %14, align 4, !tbaa !16
  %662 = getelementptr %struct.complex, ptr %7, i64 %indvars.iv1264
  %663 = load float, ptr %632, align 4, !tbaa !18
  %664 = fneg float %663
  %665 = load <2 x float>, ptr %662, align 4, !tbaa !9
  %666 = insertelement <2 x float> poison, float %663, i64 0
  %667 = insertelement <2 x float> %666, float %664, i64 1
  %668 = fmul <2 x float> %665, %667
  %669 = shufflevector <2 x float> %668, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %670 = insertelement <2 x float> poison, float %661, i64 0
  %671 = shufflevector <2 x float> %670, <2 x float> poison, <2 x i32> zeroinitializer
  %672 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %671, <2 x float> %665, <2 x float> %669)
  store <2 x float> %672, ptr %13, align 8, !tbaa !9
  %673 = fadd <2 x float> %656, %672
  %.not894.not.us = icmp slt i64 %indvars.iv.next1265, %654
  br i1 %.not894.not.us, label %655, label %.loopexit.us, !llvm.loop !33

.loopexit.us:                                     ; preds = %655, %647
  %674 = phi <2 x float> [ %648, %647 ], [ %673, %655 ]
  store <2 x float> %674, ptr %635, align 4, !tbaa !9
  %indvars.iv.next1263 = add nuw nsw i64 %indvars.iv1262, 1
  %exitcond1269.not = icmp eq i64 %indvars.iv.next1263, %wide.trip.count1268
  br i1 %exitcond1269.not, label %.loopexit927, label %.lr.ph1133.split.us, !llvm.loop !34

.lr.ph1124.us:                                    ; preds = %647
  %reass.sub1145 = mul i32 %.68581130.us1146, %651
  %675 = add i32 %reass.sub1145, 1
  br label %655

.lr.ph1133.split:                                 ; preds = %.lr.ph1133
  %676 = load i32, ptr %4, align 4, !tbaa !5
  %.685811301144 = add i32 %16, -1
  %invariant.gep1579 = getelementptr i8, ptr %18, i64 8
  br label %677

677:                                              ; preds = %.lr.ph1133.split, %.loopexit926
  %indvars.iv1254 = phi i64 [ 1, %.lr.ph1133.split ], [ %indvars.iv.next1255, %.loopexit926 ]
  %678 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1254
  %679 = load <2 x float>, ptr %678, align 4, !tbaa !9
  br i1 %.not895, label %690, label %680

680:                                              ; preds = %677
  %681 = mul nsw i64 %indvars.iv1254, %633
  %gep1580 = getelementptr %struct.complex, ptr %invariant.gep1579, i64 %681
  %682 = load <2 x float>, ptr %gep1580, align 4, !tbaa !9
  %683 = shufflevector <2 x float> %679, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %684 = fneg <2 x float> %679
  %685 = shufflevector <2 x float> %683, <2 x float> %684, <2 x i32> <i32 0, i32 3>
  %686 = fmul <2 x float> %682, %685
  %687 = shufflevector <2 x float> %686, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %688 = shufflevector <2 x float> %679, <2 x float> poison, <2 x i32> zeroinitializer
  %689 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %688, <2 x float> %682, <2 x float> %687)
  br label %690

690:                                              ; preds = %680, %677
  %691 = phi <2 x float> [ %689, %680 ], [ %679, %677 ]
  %692 = trunc nuw nsw i64 %indvars.iv1254 to i32
  %693 = add nsw i32 %676, %692
  %694 = tail call i32 @llvm.smin.i32(i32 %630, i32 %693)
  %695 = sext i32 %694 to i64
  %.not897.not1109 = icmp slt i64 %indvars.iv1254, %695
  br i1 %.not897.not1109, label %.lr.ph1114, label %.loopexit926

.lr.ph1114:                                       ; preds = %690
  %reass.sub1143 = mul i32 %.685811301144, %692
  %696 = add i32 %reass.sub1143, 1
  br label %697

697:                                              ; preds = %.lr.ph1114, %697
  %indvars.iv1256 = phi i64 [ %indvars.iv1254, %.lr.ph1114 ], [ %indvars.iv.next1257, %697 ]
  %698 = phi <2 x float> [ %691, %.lr.ph1114 ], [ %716, %697 ]
  %indvars.iv.next1257 = add nuw nsw i64 %indvars.iv1256, 1
  %699 = trunc nsw i64 %indvars.iv.next1257 to i32
  %700 = add i32 %696, %699
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.complex, ptr %18, i64 %701
  %703 = load float, ptr %702, align 4, !tbaa !16
  %704 = getelementptr %struct.complex, ptr %7, i64 %indvars.iv1256
  %705 = getelementptr inbounds i8, ptr %702, i64 4
  %706 = load float, ptr %705, align 4, !tbaa !18
  %707 = fneg float %706
  %708 = load <2 x float>, ptr %704, align 4, !tbaa !9
  %709 = insertelement <2 x float> poison, float %706, i64 0
  %710 = insertelement <2 x float> %709, float %707, i64 1
  %711 = fmul <2 x float> %708, %710
  %712 = shufflevector <2 x float> %711, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %713 = insertelement <2 x float> poison, float %703, i64 0
  %714 = shufflevector <2 x float> %713, <2 x float> poison, <2 x i32> zeroinitializer
  %715 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %714, <2 x float> %708, <2 x float> %712)
  %716 = fadd <2 x float> %698, %715
  %.not897.not = icmp slt i64 %indvars.iv.next1257, %695
  br i1 %.not897.not, label %697, label %.loopexit926, !llvm.loop !35

.loopexit926:                                     ; preds = %697, %690
  %717 = phi <2 x float> [ %691, %690 ], [ %716, %697 ]
  store <2 x float> %717, ptr %678, align 4, !tbaa !9
  %indvars.iv.next1255 = add nuw nsw i64 %indvars.iv1254, 1
  %exitcond1261.not = icmp eq i64 %indvars.iv.next1255, %wide.trip.count1268
  br i1 %exitcond1261.not, label %.loopexit927, label %677, !llvm.loop !34

718:                                              ; preds = %627
  br i1 %.not8901129, label %.loopexit927, label %.lr.ph1108

.lr.ph1108:                                       ; preds = %718
  %.not883 = icmp eq i32 %55, 0
  %.not887 = icmp eq i32 %56, 0
  %719 = getelementptr inbounds i8, ptr %14, i64 4
  %720 = sext i32 %16 to i64
  %721 = add nuw i32 %630, 1
  %wide.trip.count1252 = zext i32 %721 to i64
  %invariant.gep1577 = getelementptr i8, ptr %18, i64 8
  br label %722

722:                                              ; preds = %.lr.ph1108, %.loopexit928
  %723 = phi i32 [ %628, %.lr.ph1108 ], [ %815, %.loopexit928 ]
  %indvars.iv1241 = phi i64 [ 1, %.lr.ph1108 ], [ %indvars.iv.next1242, %.loopexit928 ]
  %.61106 = phi i32 [ %.0841, %.lr.ph1108 ], [ %727, %.loopexit928 ]
  %.38451105 = phi i32 [ %.0841, %.lr.ph1108 ], [ %817, %.loopexit928 ]
  %indvars1251 = trunc i64 %indvars.iv1241 to i32
  %724 = sext i32 %.38451105 to i64
  %725 = getelementptr inbounds %struct.complex, ptr %19, i64 %724
  %726 = load <2 x float>, ptr %725, align 4, !tbaa !9
  %727 = add i32 %723, %.61106
  %728 = sub nsw i64 1, %indvars.iv1241
  br i1 %.not883, label %772, label %729

729:                                              ; preds = %722
  br i1 %.not887, label %740, label %730

730:                                              ; preds = %729
  %731 = mul nsw i64 %indvars.iv1241, %720
  %gep1578 = getelementptr %struct.complex, ptr %invariant.gep1577, i64 %731
  %732 = load <2 x float>, ptr %gep1578, align 4, !tbaa !9
  %733 = shufflevector <2 x float> %726, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %734 = fneg <2 x float> %726
  %735 = shufflevector <2 x float> %733, <2 x float> %734, <2 x i32> <i32 0, i32 3>
  %736 = fmul <2 x float> %732, %735
  %737 = shufflevector <2 x float> %736, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %738 = shufflevector <2 x float> %726, <2 x float> poison, <2 x i32> zeroinitializer
  %739 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %738, <2 x float> %732, <2 x float> %737)
  br label %740

740:                                              ; preds = %730, %729
  %741 = phi <2 x float> [ %739, %730 ], [ %726, %729 ]
  %742 = load i32, ptr %3, align 4, !tbaa !5
  %743 = load i32, ptr %4, align 4, !tbaa !5
  %744 = add nsw i32 %743, %indvars1251
  %745 = call i32 @llvm.smin.i32(i32 %742, i32 %744)
  %746 = sext i32 %745 to i64
  %.not889.not1082 = icmp slt i64 %indvars.iv1241, %746
  br i1 %.not889.not1082, label %.lr.ph1088, label %.loopexit928

.lr.ph1088:                                       ; preds = %740
  %747 = mul nsw i32 %16, %indvars1251
  %748 = trunc nsw i64 %728 to i32
  %749 = add i32 %747, %748
  %750 = sext i32 %727 to i64
  %751 = sext i32 %723 to i64
  br label %752

752:                                              ; preds = %.lr.ph1088, %752
  %indvars.iv1243 = phi i64 [ %indvars.iv1241, %.lr.ph1088 ], [ %indvars.iv.next1244, %752 ]
  %indvars.iv1239 = phi i64 [ %750, %.lr.ph1088 ], [ %indvars.iv.next1240, %752 ]
  %753 = phi <2 x float> [ %741, %.lr.ph1088 ], [ %771, %752 ]
  %indvars.iv.next1244 = add nuw nsw i64 %indvars.iv1243, 1
  %754 = trunc nsw i64 %indvars.iv.next1244 to i32
  %755 = add i32 %749, %754
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds %struct.complex, ptr %18, i64 %756
  %758 = load float, ptr %757, align 4, !tbaa !16
  %759 = getelementptr inbounds %struct.complex, ptr %19, i64 %indvars.iv1239
  %760 = getelementptr inbounds i8, ptr %757, i64 4
  %761 = load float, ptr %760, align 4, !tbaa !18
  %762 = fneg float %761
  %763 = load <2 x float>, ptr %759, align 4, !tbaa !9
  %764 = insertelement <2 x float> poison, float %761, i64 0
  %765 = insertelement <2 x float> %764, float %762, i64 1
  %766 = fmul <2 x float> %763, %765
  %767 = shufflevector <2 x float> %766, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %768 = insertelement <2 x float> poison, float %758, i64 0
  %769 = shufflevector <2 x float> %768, <2 x float> poison, <2 x i32> zeroinitializer
  %770 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %769, <2 x float> %763, <2 x float> %767)
  %771 = fadd <2 x float> %753, %770
  %indvars.iv.next1240 = add nsw i64 %indvars.iv1239, %751
  %.not889.not = icmp slt i64 %indvars.iv.next1244, %746
  br i1 %.not889.not, label %752, label %..loopexit929_crit_edge, !llvm.loop !36

772:                                              ; preds = %722
  br i1 %.not887, label %783, label %773

773:                                              ; preds = %772
  %774 = mul nsw i64 %indvars.iv1241, %720
  %gep = getelementptr %struct.complex, ptr %invariant.gep1127, i64 %774
  call void @r_cnjg(ptr noundef nonnull %13, ptr noundef %gep) #4
  %775 = load <2 x float>, ptr %13, align 8, !tbaa !9
  %776 = shufflevector <2 x float> %726, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %777 = fneg <2 x float> %726
  %778 = shufflevector <2 x float> %776, <2 x float> %777, <2 x i32> <i32 0, i32 3>
  %779 = fmul <2 x float> %775, %778
  %780 = shufflevector <2 x float> %779, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %781 = shufflevector <2 x float> %726, <2 x float> poison, <2 x i32> zeroinitializer
  %782 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %781, <2 x float> %775, <2 x float> %780)
  br label %783

783:                                              ; preds = %773, %772
  %784 = phi <2 x float> [ %782, %773 ], [ %726, %772 ]
  %785 = load i32, ptr %3, align 4, !tbaa !5
  %786 = load i32, ptr %4, align 4, !tbaa !5
  %787 = add nsw i32 %786, %indvars1251
  %788 = call i32 @llvm.smin.i32(i32 %785, i32 %787)
  %789 = sext i32 %788 to i64
  %.not886.not1093 = icmp slt i64 %indvars.iv1241, %789
  br i1 %.not886.not1093, label %.lr.ph1099, label %..loopexit928_crit_edge

..loopexit928_crit_edge:                          ; preds = %783
  %.pre1281 = load i32, ptr %8, align 4, !tbaa !5
  br label %.loopexit928

.lr.ph1099:                                       ; preds = %783
  %790 = mul nsw i32 %16, %indvars1251
  %791 = trunc nsw i64 %728 to i32
  %792 = add i32 %790, %791
  br label %793

793:                                              ; preds = %.lr.ph1099, %793
  %indvars.iv1248 = phi i64 [ %indvars.iv1241, %.lr.ph1099 ], [ %indvars.iv.next1249, %793 ]
  %.58511095 = phi i32 [ %727, %.lr.ph1099 ], [ %814, %793 ]
  %794 = phi <2 x float> [ %784, %.lr.ph1099 ], [ %812, %793 ]
  %indvars.iv.next1249 = add nuw nsw i64 %indvars.iv1248, 1
  %795 = trunc nsw i64 %indvars.iv.next1249 to i32
  %796 = add i32 %792, %795
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.complex, ptr %18, i64 %797
  call void @r_cnjg(ptr noundef nonnull %14, ptr noundef %798) #4
  %799 = load float, ptr %14, align 4, !tbaa !16
  %800 = sext i32 %.58511095 to i64
  %801 = getelementptr inbounds %struct.complex, ptr %19, i64 %800
  %802 = load float, ptr %719, align 4, !tbaa !18
  %803 = fneg float %802
  %804 = load <2 x float>, ptr %801, align 4, !tbaa !9
  %805 = insertelement <2 x float> poison, float %802, i64 0
  %806 = insertelement <2 x float> %805, float %803, i64 1
  %807 = fmul <2 x float> %804, %806
  %808 = shufflevector <2 x float> %807, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %809 = insertelement <2 x float> poison, float %799, i64 0
  %810 = shufflevector <2 x float> %809, <2 x float> poison, <2 x i32> zeroinitializer
  %811 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %810, <2 x float> %804, <2 x float> %808)
  store <2 x float> %811, ptr %13, align 8, !tbaa !9
  %812 = fadd <2 x float> %794, %811
  %813 = load i32, ptr %8, align 4, !tbaa !5
  %814 = add nsw i32 %813, %.58511095
  %.not886.not = icmp slt i64 %indvars.iv.next1249, %789
  br i1 %.not886.not, label %793, label %.loopexit928, !llvm.loop !37

..loopexit929_crit_edge:                          ; preds = %752
  store <2 x float> %770, ptr %13, align 8, !tbaa !9
  br label %.loopexit928

.loopexit928:                                     ; preds = %793, %..loopexit928_crit_edge, %740, %..loopexit929_crit_edge
  %815 = phi i32 [ %.pre1281, %..loopexit928_crit_edge ], [ %723, %..loopexit929_crit_edge ], [ %723, %740 ], [ %813, %793 ]
  %816 = phi <2 x float> [ %784, %..loopexit928_crit_edge ], [ %771, %..loopexit929_crit_edge ], [ %741, %740 ], [ %812, %793 ]
  store <2 x float> %816, ptr %725, align 4, !tbaa !9
  %817 = add nsw i32 %815, %.38451105
  %indvars.iv.next1242 = add nuw nsw i64 %indvars.iv1241, 1
  %exitcond1253.not = icmp eq i64 %indvars.iv.next1242, %wide.trip.count1252
  br i1 %exitcond1253.not, label %.loopexit927, label %722, !llvm.loop !38

.loopexit927:                                     ; preds = %257, %173, %420, %362, %.loopexit934, %.loopexit932, %.loopexit931.us, %.loopexit928, %.loopexit926, %.loopexit.us, %175, %74, %365, %266, %524, %433, %718, %631, %52, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  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 i32 @lsame_(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 i32 @llvm.smin.i32(i32, i32) #3

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

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

; 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 = { nounwind }

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

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


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