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

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

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

62:                                               ; preds = %10
  %63 = load ptr, ptr %14, align 8, !tbaa !5
  %64 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %64, ptr %40, align 8, !tbaa !9
  br label %68

65:                                               ; preds = %10
  %66 = load ptr, ptr %15, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %67, ptr %40, align 8, !tbaa !9
  br label %68

68:                                               ; preds = %65, %62
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = call i64 @lsame_(ptr noundef %69, ptr noundef @.str.1)
  store i64 %70, ptr %41, align 8, !tbaa !9
  store i64 0, ptr %38, align 8, !tbaa !9
  %71 = load i64, ptr %41, align 8, !tbaa !9
  %72 = icmp ne i64 %71, 0
  br i1 %72, label %78, label %73

73:                                               ; preds = %68
  %74 = load ptr, ptr %12, align 8, !tbaa !5
  %75 = call i64 @lsame_(ptr noundef %74, ptr noundef @.str.2)
  %76 = icmp ne i64 %75, 0
  br i1 %76, label %78, label %77

77:                                               ; preds = %73
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %128

78:                                               ; preds = %73, %68
  %79 = load ptr, ptr %13, align 8, !tbaa !5
  %80 = call i64 @lsame_(ptr noundef %79, ptr noundef @.str)
  %81 = icmp ne i64 %80, 0
  br i1 %81, label %87, label %82

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

86:                                               ; preds = %82
  store i64 2, ptr %38, align 8, !tbaa !9
  br label %127

87:                                               ; preds = %82, %78
  %88 = load ptr, ptr %14, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = icmp slt i64 %89, 0
  br i1 %90, label %91, label %92

91:                                               ; preds = %87
  store i64 3, ptr %38, align 8, !tbaa !9
  br label %126

92:                                               ; preds = %87
  %93 = load ptr, ptr %15, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  %95 = icmp slt i64 %94, 0
  br i1 %95, label %96, label %97

96:                                               ; preds = %92
  store i64 4, ptr %38, align 8, !tbaa !9
  br label %125

97:                                               ; preds = %92
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = load i64, ptr %40, align 8, !tbaa !9
  %101 = icmp sge i64 1, %100
  br i1 %101, label %102, label %103

102:                                              ; preds = %97
  br label %105

103:                                              ; preds = %97
  %104 = load i64, ptr %40, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %103, %102
  %106 = phi i64 [ 1, %102 ], [ %104, %103 ]
  %107 = icmp slt i64 %99, %106
  br i1 %107, label %108, label %109

108:                                              ; preds = %105
  store i64 7, ptr %38, align 8, !tbaa !9
  br label %124

109:                                              ; preds = %105
  %110 = load ptr, ptr %21, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sge i64 1, %113
  br i1 %114, label %115, label %116

115:                                              ; preds = %109
  br label %119

116:                                              ; preds = %109
  %117 = load ptr, ptr %14, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %116, %115
  %120 = phi i64 [ 1, %115 ], [ %118, %116 ]
  %121 = icmp slt i64 %111, %120
  br i1 %121, label %122, label %123

122:                                              ; preds = %119
  store i64 10, ptr %38, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %122, %119
  br label %124

124:                                              ; preds = %123, %108
  br label %125

125:                                              ; preds = %124, %96
  br label %126

126:                                              ; preds = %125, %91
  br label %127

127:                                              ; preds = %126, %86
  br label %128

128:                                              ; preds = %127, %77
  %129 = load i64, ptr %38, align 8, !tbaa !9
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %128
  %132 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %38)
  store i32 0, ptr %11, align 4
  store i32 1, ptr %42, align 4
  br label %1591

133:                                              ; preds = %128
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp eq i64 %135, 0
  br i1 %136, label %161, label %137

137:                                              ; preds = %133
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.complex, ptr %138, i32 0, i32 0
  %140 = load float, ptr %139, align 4, !tbaa !11
  %141 = fcmp oeq float %140, 0.000000e+00
  br i1 %141, label %142, label %147

142:                                              ; preds = %137
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.complex, ptr %143, i32 0, i32 1
  %145 = load float, ptr %144, align 4, !tbaa !14
  %146 = fcmp oeq float %145, 0.000000e+00
  br i1 %146, label %151, label %147

147:                                              ; preds = %142, %137
  %148 = load ptr, ptr %15, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp eq i64 %149, 0
  br i1 %150, label %151, label %162

151:                                              ; preds = %147, %142
  %152 = load ptr, ptr %19, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.complex, ptr %152, i32 0, i32 0
  %154 = load float, ptr %153, align 4, !tbaa !11
  %155 = fcmp oeq float %154, 1.000000e+00
  br i1 %155, label %156, label %162

156:                                              ; preds = %151
  %157 = load ptr, ptr %19, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.complex, ptr %157, i32 0, i32 1
  %159 = load float, ptr %158, align 4, !tbaa !14
  %160 = fcmp oeq float %159, 0.000000e+00
  br i1 %160, label %161, label %162

161:                                              ; preds = %156, %133
  store i32 0, ptr %11, align 4
  store i32 1, ptr %42, align 4
  br label %1591

162:                                              ; preds = %156, %151, %147
  %163 = load ptr, ptr %16, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.complex, ptr %163, i32 0, i32 0
  %165 = load float, ptr %164, align 4, !tbaa !11
  %166 = fcmp oeq float %165, 0.000000e+00
  br i1 %166, label %167, label %438

167:                                              ; preds = %162
  %168 = load ptr, ptr %16, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.complex, ptr %168, i32 0, i32 1
  %170 = load float, ptr %169, align 4, !tbaa !14
  %171 = fcmp oeq float %170, 0.000000e+00
  br i1 %171, label %172, label %438

172:                                              ; preds = %167
  %173 = load i64, ptr %41, align 8, !tbaa !9
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %175, label %304

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

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

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

188:                                              ; preds = %216, %185
  %189 = load i64, ptr %36, align 8, !tbaa !9
  %190 = load i64, ptr %26, align 8, !tbaa !9
  %191 = icmp sle i64 %189, %190
  br i1 %191, label %192, label %219

192:                                              ; preds = %188
  %193 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %193, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %212, %192
  %195 = load i64, ptr %35, align 8, !tbaa !9
  %196 = load i64, ptr %27, align 8, !tbaa !9
  %197 = icmp sle i64 %195, %196
  br i1 %197, label %198, label %215

198:                                              ; preds = %194
  %199 = load i64, ptr %35, align 8, !tbaa !9
  %200 = load i64, ptr %36, align 8, !tbaa !9
  %201 = load i64, ptr %24, align 8, !tbaa !9
  %202 = mul nsw i64 %200, %201
  %203 = add nsw i64 %199, %202
  store i64 %203, ptr %28, align 8, !tbaa !9
  %204 = load ptr, ptr %20, align 8, !tbaa !5
  %205 = load i64, ptr %28, align 8, !tbaa !9
  %206 = getelementptr inbounds %struct.complex, ptr %204, i64 %205
  %207 = getelementptr inbounds %struct.complex, ptr %206, i32 0, i32 0
  store float 0.000000e+00, ptr %207, align 4, !tbaa !11
  %208 = load ptr, ptr %20, align 8, !tbaa !5
  %209 = load i64, ptr %28, align 8, !tbaa !9
  %210 = getelementptr inbounds %struct.complex, ptr %208, i64 %209
  %211 = getelementptr inbounds %struct.complex, ptr %210, i32 0, i32 1
  store float 0.000000e+00, ptr %211, align 4, !tbaa !14
  br label %212

212:                                              ; preds = %198
  %213 = load i64, ptr %35, align 8, !tbaa !9
  %214 = add nsw i64 %213, 1
  store i64 %214, ptr %35, align 8, !tbaa !9
  br label %194, !llvm.loop !15

215:                                              ; preds = %194
  br label %216

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

219:                                              ; preds = %188
  br label %303

220:                                              ; preds = %180, %175
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  store i64 %222, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %223

223:                                              ; preds = %299, %220
  %224 = load i64, ptr %36, align 8, !tbaa !9
  %225 = load i64, ptr %26, align 8, !tbaa !9
  %226 = icmp sle i64 %224, %225
  br i1 %226, label %227, label %302

227:                                              ; preds = %223
  %228 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %228, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %295, %227
  %230 = load i64, ptr %35, align 8, !tbaa !9
  %231 = load i64, ptr %27, align 8, !tbaa !9
  %232 = icmp sle i64 %230, %231
  br i1 %232, label %233, label %298

233:                                              ; preds = %229
  %234 = load i64, ptr %35, align 8, !tbaa !9
  %235 = load i64, ptr %36, align 8, !tbaa !9
  %236 = load i64, ptr %24, align 8, !tbaa !9
  %237 = mul nsw i64 %235, %236
  %238 = add nsw i64 %234, %237
  store i64 %238, ptr %28, align 8, !tbaa !9
  %239 = load i64, ptr %35, align 8, !tbaa !9
  %240 = load i64, ptr %36, align 8, !tbaa !9
  %241 = load i64, ptr %24, align 8, !tbaa !9
  %242 = mul nsw i64 %240, %241
  %243 = add nsw i64 %239, %242
  store i64 %243, ptr %29, align 8, !tbaa !9
  %244 = load ptr, ptr %19, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.complex, ptr %244, i32 0, i32 0
  %246 = load float, ptr %245, align 4, !tbaa !11
  %247 = load ptr, ptr %20, align 8, !tbaa !5
  %248 = load i64, ptr %29, align 8, !tbaa !9
  %249 = getelementptr inbounds %struct.complex, ptr %247, i64 %248
  %250 = getelementptr inbounds %struct.complex, ptr %249, i32 0, i32 0
  %251 = load float, ptr %250, align 4, !tbaa !11
  %252 = load ptr, ptr %19, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.complex, ptr %252, i32 0, i32 1
  %254 = load float, ptr %253, align 4, !tbaa !14
  %255 = load ptr, ptr %20, align 8, !tbaa !5
  %256 = load i64, ptr %29, align 8, !tbaa !9
  %257 = getelementptr inbounds %struct.complex, ptr %255, i64 %256
  %258 = getelementptr inbounds %struct.complex, ptr %257, i32 0, i32 1
  %259 = load float, ptr %258, align 4, !tbaa !14
  %260 = fmul float %254, %259
  %261 = fneg float %260
  %262 = call float @llvm.fmuladd.f32(float %246, float %251, float %261)
  %263 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %262, ptr %263, align 4, !tbaa !11
  %264 = load ptr, ptr %19, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 0
  %266 = load float, ptr %265, align 4, !tbaa !11
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  %268 = load i64, ptr %29, align 8, !tbaa !9
  %269 = getelementptr inbounds %struct.complex, ptr %267, i64 %268
  %270 = getelementptr inbounds %struct.complex, ptr %269, i32 0, i32 1
  %271 = load float, ptr %270, align 4, !tbaa !14
  %272 = load ptr, ptr %19, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.complex, ptr %272, i32 0, i32 1
  %274 = load float, ptr %273, align 4, !tbaa !14
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  %276 = load i64, ptr %29, align 8, !tbaa !9
  %277 = getelementptr inbounds %struct.complex, ptr %275, i64 %276
  %278 = getelementptr inbounds %struct.complex, ptr %277, i32 0, i32 0
  %279 = load float, ptr %278, align 4, !tbaa !11
  %280 = fmul float %274, %279
  %281 = call float @llvm.fmuladd.f32(float %266, float %271, float %280)
  %282 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %281, ptr %282, align 4, !tbaa !14
  %283 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %284 = load float, ptr %283, align 4, !tbaa !11
  %285 = load ptr, ptr %20, align 8, !tbaa !5
  %286 = load i64, ptr %28, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.complex, ptr %285, i64 %286
  %288 = getelementptr inbounds %struct.complex, ptr %287, i32 0, i32 0
  store float %284, ptr %288, align 4, !tbaa !11
  %289 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %290 = load float, ptr %289, align 4, !tbaa !14
  %291 = load ptr, ptr %20, align 8, !tbaa !5
  %292 = load i64, ptr %28, align 8, !tbaa !9
  %293 = getelementptr inbounds %struct.complex, ptr %291, i64 %292
  %294 = getelementptr inbounds %struct.complex, ptr %293, i32 0, i32 1
  store float %290, ptr %294, align 4, !tbaa !14
  br label %295

295:                                              ; preds = %233
  %296 = load i64, ptr %35, align 8, !tbaa !9
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %35, align 8, !tbaa !9
  br label %229, !llvm.loop !18

298:                                              ; preds = %229
  br label %299

299:                                              ; preds = %298
  %300 = load i64, ptr %36, align 8, !tbaa !9
  %301 = add nsw i64 %300, 1
  store i64 %301, ptr %36, align 8, !tbaa !9
  br label %223, !llvm.loop !19

302:                                              ; preds = %223
  br label %303

303:                                              ; preds = %302, %219
  br label %437

304:                                              ; preds = %172
  %305 = load ptr, ptr %19, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.complex, ptr %305, i32 0, i32 0
  %307 = load float, ptr %306, align 4, !tbaa !11
  %308 = fcmp oeq float %307, 0.000000e+00
  br i1 %308, label %309, label %351

309:                                              ; preds = %304
  %310 = load ptr, ptr %19, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.complex, ptr %310, i32 0, i32 1
  %312 = load float, ptr %311, align 4, !tbaa !14
  %313 = fcmp oeq float %312, 0.000000e+00
  br i1 %313, label %314, label %351

314:                                              ; preds = %309
  %315 = load ptr, ptr %14, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  store i64 %316, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %347, %314
  %318 = load i64, ptr %36, align 8, !tbaa !9
  %319 = load i64, ptr %26, align 8, !tbaa !9
  %320 = icmp sle i64 %318, %319
  br i1 %320, label %321, label %350

321:                                              ; preds = %317
  %322 = load ptr, ptr %14, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  store i64 %323, ptr %27, align 8, !tbaa !9
  %324 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %324, ptr %35, align 8, !tbaa !9
  br label %325

325:                                              ; preds = %343, %321
  %326 = load i64, ptr %35, align 8, !tbaa !9
  %327 = load i64, ptr %27, align 8, !tbaa !9
  %328 = icmp sle i64 %326, %327
  br i1 %328, label %329, label %346

329:                                              ; preds = %325
  %330 = load i64, ptr %35, align 8, !tbaa !9
  %331 = load i64, ptr %36, align 8, !tbaa !9
  %332 = load i64, ptr %24, align 8, !tbaa !9
  %333 = mul nsw i64 %331, %332
  %334 = add nsw i64 %330, %333
  store i64 %334, ptr %28, align 8, !tbaa !9
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  %336 = load i64, ptr %28, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.complex, ptr %335, i64 %336
  %338 = getelementptr inbounds %struct.complex, ptr %337, i32 0, i32 0
  store float 0.000000e+00, ptr %338, align 4, !tbaa !11
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = load i64, ptr %28, align 8, !tbaa !9
  %341 = getelementptr inbounds %struct.complex, ptr %339, i64 %340
  %342 = getelementptr inbounds %struct.complex, ptr %341, i32 0, i32 1
  store float 0.000000e+00, ptr %342, align 4, !tbaa !14
  br label %343

343:                                              ; preds = %329
  %344 = load i64, ptr %35, align 8, !tbaa !9
  %345 = add nsw i64 %344, 1
  store i64 %345, ptr %35, align 8, !tbaa !9
  br label %325, !llvm.loop !20

346:                                              ; preds = %325
  br label %347

347:                                              ; preds = %346
  %348 = load i64, ptr %36, align 8, !tbaa !9
  %349 = add nsw i64 %348, 1
  store i64 %349, ptr %36, align 8, !tbaa !9
  br label %317, !llvm.loop !21

350:                                              ; preds = %317
  br label %436

351:                                              ; preds = %309, %304
  %352 = load ptr, ptr %14, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  store i64 %353, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %432, %351
  %355 = load i64, ptr %36, align 8, !tbaa !9
  %356 = load i64, ptr %26, align 8, !tbaa !9
  %357 = icmp sle i64 %355, %356
  br i1 %357, label %358, label %435

358:                                              ; preds = %354
  %359 = load ptr, ptr %14, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  store i64 %360, ptr %27, align 8, !tbaa !9
  %361 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %361, ptr %35, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %428, %358
  %363 = load i64, ptr %35, align 8, !tbaa !9
  %364 = load i64, ptr %27, align 8, !tbaa !9
  %365 = icmp sle i64 %363, %364
  br i1 %365, label %366, label %431

366:                                              ; preds = %362
  %367 = load i64, ptr %35, align 8, !tbaa !9
  %368 = load i64, ptr %36, align 8, !tbaa !9
  %369 = load i64, ptr %24, align 8, !tbaa !9
  %370 = mul nsw i64 %368, %369
  %371 = add nsw i64 %367, %370
  store i64 %371, ptr %28, align 8, !tbaa !9
  %372 = load i64, ptr %35, align 8, !tbaa !9
  %373 = load i64, ptr %36, align 8, !tbaa !9
  %374 = load i64, ptr %24, align 8, !tbaa !9
  %375 = mul nsw i64 %373, %374
  %376 = add nsw i64 %372, %375
  store i64 %376, ptr %29, align 8, !tbaa !9
  %377 = load ptr, ptr %19, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.complex, ptr %377, i32 0, i32 0
  %379 = load float, ptr %378, align 4, !tbaa !11
  %380 = load ptr, ptr %20, align 8, !tbaa !5
  %381 = load i64, ptr %29, align 8, !tbaa !9
  %382 = getelementptr inbounds %struct.complex, ptr %380, i64 %381
  %383 = getelementptr inbounds %struct.complex, ptr %382, i32 0, i32 0
  %384 = load float, ptr %383, align 4, !tbaa !11
  %385 = load ptr, ptr %19, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.complex, ptr %385, i32 0, i32 1
  %387 = load float, ptr %386, align 4, !tbaa !14
  %388 = load ptr, ptr %20, align 8, !tbaa !5
  %389 = load i64, ptr %29, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.complex, ptr %388, i64 %389
  %391 = getelementptr inbounds %struct.complex, ptr %390, i32 0, i32 1
  %392 = load float, ptr %391, align 4, !tbaa !14
  %393 = fmul float %387, %392
  %394 = fneg float %393
  %395 = call float @llvm.fmuladd.f32(float %379, float %384, float %394)
  %396 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %395, ptr %396, align 4, !tbaa !11
  %397 = load ptr, ptr %19, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.complex, ptr %397, i32 0, i32 0
  %399 = load float, ptr %398, align 4, !tbaa !11
  %400 = load ptr, ptr %20, align 8, !tbaa !5
  %401 = load i64, ptr %29, align 8, !tbaa !9
  %402 = getelementptr inbounds %struct.complex, ptr %400, i64 %401
  %403 = getelementptr inbounds %struct.complex, ptr %402, i32 0, i32 1
  %404 = load float, ptr %403, align 4, !tbaa !14
  %405 = load ptr, ptr %19, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.complex, ptr %405, i32 0, i32 1
  %407 = load float, ptr %406, align 4, !tbaa !14
  %408 = load ptr, ptr %20, align 8, !tbaa !5
  %409 = load i64, ptr %29, align 8, !tbaa !9
  %410 = getelementptr inbounds %struct.complex, ptr %408, i64 %409
  %411 = getelementptr inbounds %struct.complex, ptr %410, i32 0, i32 0
  %412 = load float, ptr %411, align 4, !tbaa !11
  %413 = fmul float %407, %412
  %414 = call float @llvm.fmuladd.f32(float %399, float %404, float %413)
  %415 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %414, ptr %415, align 4, !tbaa !14
  %416 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %417 = load float, ptr %416, align 4, !tbaa !11
  %418 = load ptr, ptr %20, align 8, !tbaa !5
  %419 = load i64, ptr %28, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.complex, ptr %418, i64 %419
  %421 = getelementptr inbounds %struct.complex, ptr %420, i32 0, i32 0
  store float %417, ptr %421, align 4, !tbaa !11
  %422 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %423 = load float, ptr %422, align 4, !tbaa !14
  %424 = load ptr, ptr %20, align 8, !tbaa !5
  %425 = load i64, ptr %28, align 8, !tbaa !9
  %426 = getelementptr inbounds %struct.complex, ptr %424, i64 %425
  %427 = getelementptr inbounds %struct.complex, ptr %426, i32 0, i32 1
  store float %423, ptr %427, align 4, !tbaa !14
  br label %428

428:                                              ; preds = %366
  %429 = load i64, ptr %35, align 8, !tbaa !9
  %430 = add nsw i64 %429, 1
  store i64 %430, ptr %35, align 8, !tbaa !9
  br label %362, !llvm.loop !22

431:                                              ; preds = %362
  br label %432

432:                                              ; preds = %431
  %433 = load i64, ptr %36, align 8, !tbaa !9
  %434 = add nsw i64 %433, 1
  store i64 %434, ptr %36, align 8, !tbaa !9
  br label %354, !llvm.loop !23

435:                                              ; preds = %354
  br label %436

436:                                              ; preds = %435, %350
  br label %437

437:                                              ; preds = %436, %303
  store i32 0, ptr %11, align 4
  store i32 1, ptr %42, align 4
  br label %1591

438:                                              ; preds = %167, %162
  %439 = load ptr, ptr %13, align 8, !tbaa !5
  %440 = call i64 @lsame_(ptr noundef %439, ptr noundef @.str)
  %441 = icmp ne i64 %440, 0
  br i1 %441, label %442, label %1052

442:                                              ; preds = %438
  %443 = load i64, ptr %41, align 8, !tbaa !9
  %444 = icmp ne i64 %443, 0
  br i1 %444, label %445, label %745

445:                                              ; preds = %442
  %446 = load ptr, ptr %14, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  store i64 %447, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %448

448:                                              ; preds = %741, %445
  %449 = load i64, ptr %36, align 8, !tbaa !9
  %450 = load i64, ptr %26, align 8, !tbaa !9
  %451 = icmp sle i64 %449, %450
  br i1 %451, label %452, label %744

452:                                              ; preds = %448
  %453 = load ptr, ptr %19, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.complex, ptr %453, i32 0, i32 0
  %455 = load float, ptr %454, align 4, !tbaa !11
  %456 = fcmp oeq float %455, 0.000000e+00
  br i1 %456, label %457, label %486

457:                                              ; preds = %452
  %458 = load ptr, ptr %19, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.complex, ptr %458, i32 0, i32 1
  %460 = load float, ptr %459, align 4, !tbaa !14
  %461 = fcmp oeq float %460, 0.000000e+00
  br i1 %461, label %462, label %486

462:                                              ; preds = %457
  %463 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %463, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %482, %462
  %465 = load i64, ptr %35, align 8, !tbaa !9
  %466 = load i64, ptr %27, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %485

468:                                              ; preds = %464
  %469 = load i64, ptr %35, align 8, !tbaa !9
  %470 = load i64, ptr %36, align 8, !tbaa !9
  %471 = load i64, ptr %24, align 8, !tbaa !9
  %472 = mul nsw i64 %470, %471
  %473 = add nsw i64 %469, %472
  store i64 %473, ptr %28, align 8, !tbaa !9
  %474 = load ptr, ptr %20, align 8, !tbaa !5
  %475 = load i64, ptr %28, align 8, !tbaa !9
  %476 = getelementptr inbounds %struct.complex, ptr %474, i64 %475
  %477 = getelementptr inbounds %struct.complex, ptr %476, i32 0, i32 0
  store float 0.000000e+00, ptr %477, align 4, !tbaa !11
  %478 = load ptr, ptr %20, align 8, !tbaa !5
  %479 = load i64, ptr %28, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %478, i64 %479
  %481 = getelementptr inbounds %struct.complex, ptr %480, i32 0, i32 1
  store float 0.000000e+00, ptr %481, align 4, !tbaa !14
  br label %482

482:                                              ; preds = %468
  %483 = load i64, ptr %35, align 8, !tbaa !9
  %484 = add nsw i64 %483, 1
  store i64 %484, ptr %35, align 8, !tbaa !9
  br label %464, !llvm.loop !24

485:                                              ; preds = %464
  br label %569

486:                                              ; preds = %457, %452
  %487 = load ptr, ptr %19, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.complex, ptr %487, i32 0, i32 0
  %489 = load float, ptr %488, align 4, !tbaa !11
  %490 = fcmp une float %489, 1.000000e+00
  br i1 %490, label %496, label %491

491:                                              ; preds = %486
  %492 = load ptr, ptr %19, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.complex, ptr %492, i32 0, i32 1
  %494 = load float, ptr %493, align 4, !tbaa !14
  %495 = fcmp une float %494, 0.000000e+00
  br i1 %495, label %496, label %568

496:                                              ; preds = %491, %486
  %497 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %497, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %498

498:                                              ; preds = %564, %496
  %499 = load i64, ptr %35, align 8, !tbaa !9
  %500 = load i64, ptr %27, align 8, !tbaa !9
  %501 = icmp sle i64 %499, %500
  br i1 %501, label %502, label %567

502:                                              ; preds = %498
  %503 = load i64, ptr %35, align 8, !tbaa !9
  %504 = load i64, ptr %36, align 8, !tbaa !9
  %505 = load i64, ptr %24, align 8, !tbaa !9
  %506 = mul nsw i64 %504, %505
  %507 = add nsw i64 %503, %506
  store i64 %507, ptr %28, align 8, !tbaa !9
  %508 = load i64, ptr %35, align 8, !tbaa !9
  %509 = load i64, ptr %36, align 8, !tbaa !9
  %510 = load i64, ptr %24, align 8, !tbaa !9
  %511 = mul nsw i64 %509, %510
  %512 = add nsw i64 %508, %511
  store i64 %512, ptr %29, align 8, !tbaa !9
  %513 = load ptr, ptr %19, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.complex, ptr %513, i32 0, i32 0
  %515 = load float, ptr %514, align 4, !tbaa !11
  %516 = load ptr, ptr %20, align 8, !tbaa !5
  %517 = load i64, ptr %29, align 8, !tbaa !9
  %518 = getelementptr inbounds %struct.complex, ptr %516, i64 %517
  %519 = getelementptr inbounds %struct.complex, ptr %518, i32 0, i32 0
  %520 = load float, ptr %519, align 4, !tbaa !11
  %521 = load ptr, ptr %19, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.complex, ptr %521, i32 0, i32 1
  %523 = load float, ptr %522, align 4, !tbaa !14
  %524 = load ptr, ptr %20, align 8, !tbaa !5
  %525 = load i64, ptr %29, align 8, !tbaa !9
  %526 = getelementptr inbounds %struct.complex, ptr %524, i64 %525
  %527 = getelementptr inbounds %struct.complex, ptr %526, i32 0, i32 1
  %528 = load float, ptr %527, align 4, !tbaa !14
  %529 = fmul float %523, %528
  %530 = fneg float %529
  %531 = call float @llvm.fmuladd.f32(float %515, float %520, float %530)
  %532 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %531, ptr %532, align 4, !tbaa !11
  %533 = load ptr, ptr %19, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.complex, ptr %533, i32 0, i32 0
  %535 = load float, ptr %534, align 4, !tbaa !11
  %536 = load ptr, ptr %20, align 8, !tbaa !5
  %537 = load i64, ptr %29, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.complex, ptr %536, i64 %537
  %539 = getelementptr inbounds %struct.complex, ptr %538, i32 0, i32 1
  %540 = load float, ptr %539, align 4, !tbaa !14
  %541 = load ptr, ptr %19, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.complex, ptr %541, i32 0, i32 1
  %543 = load float, ptr %542, align 4, !tbaa !14
  %544 = load ptr, ptr %20, align 8, !tbaa !5
  %545 = load i64, ptr %29, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.complex, ptr %544, i64 %545
  %547 = getelementptr inbounds %struct.complex, ptr %546, i32 0, i32 0
  %548 = load float, ptr %547, align 4, !tbaa !11
  %549 = fmul float %543, %548
  %550 = call float @llvm.fmuladd.f32(float %535, float %540, float %549)
  %551 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %550, ptr %551, align 4, !tbaa !14
  %552 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %553 = load float, ptr %552, align 4, !tbaa !11
  %554 = load ptr, ptr %20, align 8, !tbaa !5
  %555 = load i64, ptr %28, align 8, !tbaa !9
  %556 = getelementptr inbounds %struct.complex, ptr %554, i64 %555
  %557 = getelementptr inbounds %struct.complex, ptr %556, i32 0, i32 0
  store float %553, ptr %557, align 4, !tbaa !11
  %558 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %559 = load float, ptr %558, align 4, !tbaa !14
  %560 = load ptr, ptr %20, align 8, !tbaa !5
  %561 = load i64, ptr %28, align 8, !tbaa !9
  %562 = getelementptr inbounds %struct.complex, ptr %560, i64 %561
  %563 = getelementptr inbounds %struct.complex, ptr %562, i32 0, i32 1
  store float %559, ptr %563, align 4, !tbaa !14
  br label %564

564:                                              ; preds = %502
  %565 = load i64, ptr %35, align 8, !tbaa !9
  %566 = add nsw i64 %565, 1
  store i64 %566, ptr %35, align 8, !tbaa !9
  br label %498, !llvm.loop !25

567:                                              ; preds = %498
  br label %568

568:                                              ; preds = %567, %491
  br label %569

569:                                              ; preds = %568, %485
  %570 = load ptr, ptr %15, align 8, !tbaa !5
  %571 = load i64, ptr %570, align 8, !tbaa !9
  store i64 %571, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %572

572:                                              ; preds = %737, %569
  %573 = load i64, ptr %37, align 8, !tbaa !9
  %574 = load i64, ptr %27, align 8, !tbaa !9
  %575 = icmp sle i64 %573, %574
  br i1 %575, label %576, label %740

576:                                              ; preds = %572
  %577 = load i64, ptr %36, align 8, !tbaa !9
  %578 = load i64, ptr %37, align 8, !tbaa !9
  %579 = load i64, ptr %22, align 8, !tbaa !9
  %580 = mul nsw i64 %578, %579
  %581 = add nsw i64 %577, %580
  store i64 %581, ptr %28, align 8, !tbaa !9
  %582 = load ptr, ptr %17, align 8, !tbaa !5
  %583 = load i64, ptr %28, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.complex, ptr %582, i64 %583
  %585 = getelementptr inbounds %struct.complex, ptr %584, i32 0, i32 0
  %586 = load float, ptr %585, align 4, !tbaa !11
  %587 = fcmp une float %586, 0.000000e+00
  br i1 %587, label %595, label %588

588:                                              ; preds = %576
  %589 = load ptr, ptr %17, align 8, !tbaa !5
  %590 = load i64, ptr %28, align 8, !tbaa !9
  %591 = getelementptr inbounds %struct.complex, ptr %589, i64 %590
  %592 = getelementptr inbounds %struct.complex, ptr %591, i32 0, i32 1
  %593 = load float, ptr %592, align 4, !tbaa !14
  %594 = fcmp une float %593, 0.000000e+00
  br i1 %594, label %595, label %736

595:                                              ; preds = %588, %576
  %596 = load i64, ptr %36, align 8, !tbaa !9
  %597 = load i64, ptr %37, align 8, !tbaa !9
  %598 = load i64, ptr %22, align 8, !tbaa !9
  %599 = mul nsw i64 %597, %598
  %600 = add nsw i64 %596, %599
  store i64 %600, ptr %28, align 8, !tbaa !9
  %601 = load ptr, ptr %16, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.complex, ptr %601, i32 0, i32 0
  %603 = load float, ptr %602, align 4, !tbaa !11
  %604 = load ptr, ptr %17, align 8, !tbaa !5
  %605 = load i64, ptr %28, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.complex, ptr %604, i64 %605
  %607 = getelementptr inbounds %struct.complex, ptr %606, i32 0, i32 0
  %608 = load float, ptr %607, align 4, !tbaa !11
  %609 = load ptr, ptr %16, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.complex, ptr %609, i32 0, i32 1
  %611 = load float, ptr %610, align 4, !tbaa !14
  %612 = load ptr, ptr %17, align 8, !tbaa !5
  %613 = load i64, ptr %28, align 8, !tbaa !9
  %614 = getelementptr inbounds %struct.complex, ptr %612, i64 %613
  %615 = getelementptr inbounds %struct.complex, ptr %614, i32 0, i32 1
  %616 = load float, ptr %615, align 4, !tbaa !14
  %617 = fmul float %611, %616
  %618 = fneg float %617
  %619 = call float @llvm.fmuladd.f32(float %603, float %608, float %618)
  %620 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %619, ptr %620, align 4, !tbaa !11
  %621 = load ptr, ptr %16, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.complex, ptr %621, i32 0, i32 0
  %623 = load float, ptr %622, align 4, !tbaa !11
  %624 = load ptr, ptr %17, align 8, !tbaa !5
  %625 = load i64, ptr %28, align 8, !tbaa !9
  %626 = getelementptr inbounds %struct.complex, ptr %624, i64 %625
  %627 = getelementptr inbounds %struct.complex, ptr %626, i32 0, i32 1
  %628 = load float, ptr %627, align 4, !tbaa !14
  %629 = load ptr, ptr %16, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.complex, ptr %629, i32 0, i32 1
  %631 = load float, ptr %630, align 4, !tbaa !14
  %632 = load ptr, ptr %17, align 8, !tbaa !5
  %633 = load i64, ptr %28, align 8, !tbaa !9
  %634 = getelementptr inbounds %struct.complex, ptr %632, i64 %633
  %635 = getelementptr inbounds %struct.complex, ptr %634, i32 0, i32 0
  %636 = load float, ptr %635, align 4, !tbaa !11
  %637 = fmul float %631, %636
  %638 = call float @llvm.fmuladd.f32(float %623, float %628, float %637)
  %639 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %638, ptr %639, align 4, !tbaa !14
  %640 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %641 = load float, ptr %640, align 4, !tbaa !11
  %642 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %641, ptr %642, align 4, !tbaa !11
  %643 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %644 = load float, ptr %643, align 4, !tbaa !14
  %645 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %644, ptr %645, align 4, !tbaa !14
  %646 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %646, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %647

647:                                              ; preds = %732, %595
  %648 = load i64, ptr %35, align 8, !tbaa !9
  %649 = load i64, ptr %28, align 8, !tbaa !9
  %650 = icmp sle i64 %648, %649
  br i1 %650, label %651, label %735

651:                                              ; preds = %647
  %652 = load i64, ptr %35, align 8, !tbaa !9
  %653 = load i64, ptr %36, align 8, !tbaa !9
  %654 = load i64, ptr %24, align 8, !tbaa !9
  %655 = mul nsw i64 %653, %654
  %656 = add nsw i64 %652, %655
  store i64 %656, ptr %29, align 8, !tbaa !9
  %657 = load i64, ptr %35, align 8, !tbaa !9
  %658 = load i64, ptr %36, align 8, !tbaa !9
  %659 = load i64, ptr %24, align 8, !tbaa !9
  %660 = mul nsw i64 %658, %659
  %661 = add nsw i64 %657, %660
  store i64 %661, ptr %30, align 8, !tbaa !9
  %662 = load i64, ptr %35, align 8, !tbaa !9
  %663 = load i64, ptr %37, align 8, !tbaa !9
  %664 = load i64, ptr %22, align 8, !tbaa !9
  %665 = mul nsw i64 %663, %664
  %666 = add nsw i64 %662, %665
  store i64 %666, ptr %31, align 8, !tbaa !9
  %667 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %668 = load float, ptr %667, align 4, !tbaa !11
  %669 = load ptr, ptr %17, align 8, !tbaa !5
  %670 = load i64, ptr %31, align 8, !tbaa !9
  %671 = getelementptr inbounds %struct.complex, ptr %669, i64 %670
  %672 = getelementptr inbounds %struct.complex, ptr %671, i32 0, i32 0
  %673 = load float, ptr %672, align 4, !tbaa !11
  %674 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %675 = load float, ptr %674, align 4, !tbaa !14
  %676 = load ptr, ptr %17, align 8, !tbaa !5
  %677 = load i64, ptr %31, align 8, !tbaa !9
  %678 = getelementptr inbounds %struct.complex, ptr %676, i64 %677
  %679 = getelementptr inbounds %struct.complex, ptr %678, i32 0, i32 1
  %680 = load float, ptr %679, align 4, !tbaa !14
  %681 = fmul float %675, %680
  %682 = fneg float %681
  %683 = call float @llvm.fmuladd.f32(float %668, float %673, float %682)
  %684 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %683, ptr %684, align 4, !tbaa !11
  %685 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %686 = load float, ptr %685, align 4, !tbaa !11
  %687 = load ptr, ptr %17, align 8, !tbaa !5
  %688 = load i64, ptr %31, align 8, !tbaa !9
  %689 = getelementptr inbounds %struct.complex, ptr %687, i64 %688
  %690 = getelementptr inbounds %struct.complex, ptr %689, i32 0, i32 1
  %691 = load float, ptr %690, align 4, !tbaa !14
  %692 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %693 = load float, ptr %692, align 4, !tbaa !14
  %694 = load ptr, ptr %17, align 8, !tbaa !5
  %695 = load i64, ptr %31, align 8, !tbaa !9
  %696 = getelementptr inbounds %struct.complex, ptr %694, i64 %695
  %697 = getelementptr inbounds %struct.complex, ptr %696, i32 0, i32 0
  %698 = load float, ptr %697, align 4, !tbaa !11
  %699 = fmul float %693, %698
  %700 = call float @llvm.fmuladd.f32(float %686, float %691, float %699)
  %701 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %700, ptr %701, align 4, !tbaa !14
  %702 = load ptr, ptr %20, align 8, !tbaa !5
  %703 = load i64, ptr %30, align 8, !tbaa !9
  %704 = getelementptr inbounds %struct.complex, ptr %702, i64 %703
  %705 = getelementptr inbounds %struct.complex, ptr %704, i32 0, i32 0
  %706 = load float, ptr %705, align 4, !tbaa !11
  %707 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %708 = load float, ptr %707, align 4, !tbaa !11
  %709 = fadd float %706, %708
  %710 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %709, ptr %710, align 4, !tbaa !11
  %711 = load ptr, ptr %20, align 8, !tbaa !5
  %712 = load i64, ptr %30, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.complex, ptr %711, i64 %712
  %714 = getelementptr inbounds %struct.complex, ptr %713, i32 0, i32 1
  %715 = load float, ptr %714, align 4, !tbaa !14
  %716 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %717 = load float, ptr %716, align 4, !tbaa !14
  %718 = fadd float %715, %717
  %719 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %718, ptr %719, align 4, !tbaa !14
  %720 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %721 = load float, ptr %720, align 4, !tbaa !11
  %722 = load ptr, ptr %20, align 8, !tbaa !5
  %723 = load i64, ptr %29, align 8, !tbaa !9
  %724 = getelementptr inbounds %struct.complex, ptr %722, i64 %723
  %725 = getelementptr inbounds %struct.complex, ptr %724, i32 0, i32 0
  store float %721, ptr %725, align 4, !tbaa !11
  %726 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !14
  %728 = load ptr, ptr %20, align 8, !tbaa !5
  %729 = load i64, ptr %29, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.complex, ptr %728, i64 %729
  %731 = getelementptr inbounds %struct.complex, ptr %730, i32 0, i32 1
  store float %727, ptr %731, align 4, !tbaa !14
  br label %732

732:                                              ; preds = %651
  %733 = load i64, ptr %35, align 8, !tbaa !9
  %734 = add nsw i64 %733, 1
  store i64 %734, ptr %35, align 8, !tbaa !9
  br label %647, !llvm.loop !26

735:                                              ; preds = %647
  br label %736

736:                                              ; preds = %735, %588
  br label %737

737:                                              ; preds = %736
  %738 = load i64, ptr %37, align 8, !tbaa !9
  %739 = add nsw i64 %738, 1
  store i64 %739, ptr %37, align 8, !tbaa !9
  br label %572, !llvm.loop !27

740:                                              ; preds = %572
  br label %741

741:                                              ; preds = %740
  %742 = load i64, ptr %36, align 8, !tbaa !9
  %743 = add nsw i64 %742, 1
  store i64 %743, ptr %36, align 8, !tbaa !9
  br label %448, !llvm.loop !28

744:                                              ; preds = %448
  br label %1051

745:                                              ; preds = %442
  %746 = load ptr, ptr %14, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !9
  store i64 %747, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %748

748:                                              ; preds = %1047, %745
  %749 = load i64, ptr %36, align 8, !tbaa !9
  %750 = load i64, ptr %26, align 8, !tbaa !9
  %751 = icmp sle i64 %749, %750
  br i1 %751, label %752, label %1050

752:                                              ; preds = %748
  %753 = load ptr, ptr %19, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.complex, ptr %753, i32 0, i32 0
  %755 = load float, ptr %754, align 4, !tbaa !11
  %756 = fcmp oeq float %755, 0.000000e+00
  br i1 %756, label %757, label %788

757:                                              ; preds = %752
  %758 = load ptr, ptr %19, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.complex, ptr %758, i32 0, i32 1
  %760 = load float, ptr %759, align 4, !tbaa !14
  %761 = fcmp oeq float %760, 0.000000e+00
  br i1 %761, label %762, label %788

762:                                              ; preds = %757
  %763 = load ptr, ptr %14, align 8, !tbaa !5
  %764 = load i64, ptr %763, align 8, !tbaa !9
  store i64 %764, ptr %27, align 8, !tbaa !9
  %765 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %765, ptr %35, align 8, !tbaa !9
  br label %766

766:                                              ; preds = %784, %762
  %767 = load i64, ptr %35, align 8, !tbaa !9
  %768 = load i64, ptr %27, align 8, !tbaa !9
  %769 = icmp sle i64 %767, %768
  br i1 %769, label %770, label %787

770:                                              ; preds = %766
  %771 = load i64, ptr %35, align 8, !tbaa !9
  %772 = load i64, ptr %36, align 8, !tbaa !9
  %773 = load i64, ptr %24, align 8, !tbaa !9
  %774 = mul nsw i64 %772, %773
  %775 = add nsw i64 %771, %774
  store i64 %775, ptr %28, align 8, !tbaa !9
  %776 = load ptr, ptr %20, align 8, !tbaa !5
  %777 = load i64, ptr %28, align 8, !tbaa !9
  %778 = getelementptr inbounds %struct.complex, ptr %776, i64 %777
  %779 = getelementptr inbounds %struct.complex, ptr %778, i32 0, i32 0
  store float 0.000000e+00, ptr %779, align 4, !tbaa !11
  %780 = load ptr, ptr %20, align 8, !tbaa !5
  %781 = load i64, ptr %28, align 8, !tbaa !9
  %782 = getelementptr inbounds %struct.complex, ptr %780, i64 %781
  %783 = getelementptr inbounds %struct.complex, ptr %782, i32 0, i32 1
  store float 0.000000e+00, ptr %783, align 4, !tbaa !14
  br label %784

784:                                              ; preds = %770
  %785 = load i64, ptr %35, align 8, !tbaa !9
  %786 = add nsw i64 %785, 1
  store i64 %786, ptr %35, align 8, !tbaa !9
  br label %766, !llvm.loop !29

787:                                              ; preds = %766
  br label %873

788:                                              ; preds = %757, %752
  %789 = load ptr, ptr %19, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.complex, ptr %789, i32 0, i32 0
  %791 = load float, ptr %790, align 4, !tbaa !11
  %792 = fcmp une float %791, 1.000000e+00
  br i1 %792, label %798, label %793

793:                                              ; preds = %788
  %794 = load ptr, ptr %19, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.complex, ptr %794, i32 0, i32 1
  %796 = load float, ptr %795, align 4, !tbaa !14
  %797 = fcmp une float %796, 0.000000e+00
  br i1 %797, label %798, label %872

798:                                              ; preds = %793, %788
  %799 = load ptr, ptr %14, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  store i64 %800, ptr %27, align 8, !tbaa !9
  %801 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %801, ptr %35, align 8, !tbaa !9
  br label %802

802:                                              ; preds = %868, %798
  %803 = load i64, ptr %35, align 8, !tbaa !9
  %804 = load i64, ptr %27, align 8, !tbaa !9
  %805 = icmp sle i64 %803, %804
  br i1 %805, label %806, label %871

806:                                              ; preds = %802
  %807 = load i64, ptr %35, align 8, !tbaa !9
  %808 = load i64, ptr %36, align 8, !tbaa !9
  %809 = load i64, ptr %24, align 8, !tbaa !9
  %810 = mul nsw i64 %808, %809
  %811 = add nsw i64 %807, %810
  store i64 %811, ptr %28, align 8, !tbaa !9
  %812 = load i64, ptr %35, align 8, !tbaa !9
  %813 = load i64, ptr %36, align 8, !tbaa !9
  %814 = load i64, ptr %24, align 8, !tbaa !9
  %815 = mul nsw i64 %813, %814
  %816 = add nsw i64 %812, %815
  store i64 %816, ptr %29, align 8, !tbaa !9
  %817 = load ptr, ptr %19, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.complex, ptr %817, i32 0, i32 0
  %819 = load float, ptr %818, align 4, !tbaa !11
  %820 = load ptr, ptr %20, align 8, !tbaa !5
  %821 = load i64, ptr %29, align 8, !tbaa !9
  %822 = getelementptr inbounds %struct.complex, ptr %820, i64 %821
  %823 = getelementptr inbounds %struct.complex, ptr %822, i32 0, i32 0
  %824 = load float, ptr %823, align 4, !tbaa !11
  %825 = load ptr, ptr %19, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.complex, ptr %825, i32 0, i32 1
  %827 = load float, ptr %826, align 4, !tbaa !14
  %828 = load ptr, ptr %20, align 8, !tbaa !5
  %829 = load i64, ptr %29, align 8, !tbaa !9
  %830 = getelementptr inbounds %struct.complex, ptr %828, i64 %829
  %831 = getelementptr inbounds %struct.complex, ptr %830, i32 0, i32 1
  %832 = load float, ptr %831, align 4, !tbaa !14
  %833 = fmul float %827, %832
  %834 = fneg float %833
  %835 = call float @llvm.fmuladd.f32(float %819, float %824, float %834)
  %836 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %835, ptr %836, align 4, !tbaa !11
  %837 = load ptr, ptr %19, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.complex, ptr %837, i32 0, i32 0
  %839 = load float, ptr %838, align 4, !tbaa !11
  %840 = load ptr, ptr %20, align 8, !tbaa !5
  %841 = load i64, ptr %29, align 8, !tbaa !9
  %842 = getelementptr inbounds %struct.complex, ptr %840, i64 %841
  %843 = getelementptr inbounds %struct.complex, ptr %842, i32 0, i32 1
  %844 = load float, ptr %843, align 4, !tbaa !14
  %845 = load ptr, ptr %19, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.complex, ptr %845, i32 0, i32 1
  %847 = load float, ptr %846, align 4, !tbaa !14
  %848 = load ptr, ptr %20, align 8, !tbaa !5
  %849 = load i64, ptr %29, align 8, !tbaa !9
  %850 = getelementptr inbounds %struct.complex, ptr %848, i64 %849
  %851 = getelementptr inbounds %struct.complex, ptr %850, i32 0, i32 0
  %852 = load float, ptr %851, align 4, !tbaa !11
  %853 = fmul float %847, %852
  %854 = call float @llvm.fmuladd.f32(float %839, float %844, float %853)
  %855 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %854, ptr %855, align 4, !tbaa !14
  %856 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %857 = load float, ptr %856, align 4, !tbaa !11
  %858 = load ptr, ptr %20, align 8, !tbaa !5
  %859 = load i64, ptr %28, align 8, !tbaa !9
  %860 = getelementptr inbounds %struct.complex, ptr %858, i64 %859
  %861 = getelementptr inbounds %struct.complex, ptr %860, i32 0, i32 0
  store float %857, ptr %861, align 4, !tbaa !11
  %862 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %863 = load float, ptr %862, align 4, !tbaa !14
  %864 = load ptr, ptr %20, align 8, !tbaa !5
  %865 = load i64, ptr %28, align 8, !tbaa !9
  %866 = getelementptr inbounds %struct.complex, ptr %864, i64 %865
  %867 = getelementptr inbounds %struct.complex, ptr %866, i32 0, i32 1
  store float %863, ptr %867, align 4, !tbaa !14
  br label %868

868:                                              ; preds = %806
  %869 = load i64, ptr %35, align 8, !tbaa !9
  %870 = add nsw i64 %869, 1
  store i64 %870, ptr %35, align 8, !tbaa !9
  br label %802, !llvm.loop !30

871:                                              ; preds = %802
  br label %872

872:                                              ; preds = %871, %793
  br label %873

873:                                              ; preds = %872, %787
  %874 = load ptr, ptr %15, align 8, !tbaa !5
  %875 = load i64, ptr %874, align 8, !tbaa !9
  store i64 %875, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %876

876:                                              ; preds = %1043, %873
  %877 = load i64, ptr %37, align 8, !tbaa !9
  %878 = load i64, ptr %27, align 8, !tbaa !9
  %879 = icmp sle i64 %877, %878
  br i1 %879, label %880, label %1046

880:                                              ; preds = %876
  %881 = load i64, ptr %36, align 8, !tbaa !9
  %882 = load i64, ptr %37, align 8, !tbaa !9
  %883 = load i64, ptr %22, align 8, !tbaa !9
  %884 = mul nsw i64 %882, %883
  %885 = add nsw i64 %881, %884
  store i64 %885, ptr %28, align 8, !tbaa !9
  %886 = load ptr, ptr %17, align 8, !tbaa !5
  %887 = load i64, ptr %28, align 8, !tbaa !9
  %888 = getelementptr inbounds %struct.complex, ptr %886, i64 %887
  %889 = getelementptr inbounds %struct.complex, ptr %888, i32 0, i32 0
  %890 = load float, ptr %889, align 4, !tbaa !11
  %891 = fcmp une float %890, 0.000000e+00
  br i1 %891, label %899, label %892

892:                                              ; preds = %880
  %893 = load ptr, ptr %17, align 8, !tbaa !5
  %894 = load i64, ptr %28, align 8, !tbaa !9
  %895 = getelementptr inbounds %struct.complex, ptr %893, i64 %894
  %896 = getelementptr inbounds %struct.complex, ptr %895, i32 0, i32 1
  %897 = load float, ptr %896, align 4, !tbaa !14
  %898 = fcmp une float %897, 0.000000e+00
  br i1 %898, label %899, label %1042

899:                                              ; preds = %892, %880
  %900 = load i64, ptr %36, align 8, !tbaa !9
  %901 = load i64, ptr %37, align 8, !tbaa !9
  %902 = load i64, ptr %22, align 8, !tbaa !9
  %903 = mul nsw i64 %901, %902
  %904 = add nsw i64 %900, %903
  store i64 %904, ptr %28, align 8, !tbaa !9
  %905 = load ptr, ptr %16, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.complex, ptr %905, i32 0, i32 0
  %907 = load float, ptr %906, align 4, !tbaa !11
  %908 = load ptr, ptr %17, align 8, !tbaa !5
  %909 = load i64, ptr %28, align 8, !tbaa !9
  %910 = getelementptr inbounds %struct.complex, ptr %908, i64 %909
  %911 = getelementptr inbounds %struct.complex, ptr %910, i32 0, i32 0
  %912 = load float, ptr %911, align 4, !tbaa !11
  %913 = load ptr, ptr %16, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.complex, ptr %913, i32 0, i32 1
  %915 = load float, ptr %914, align 4, !tbaa !14
  %916 = load ptr, ptr %17, align 8, !tbaa !5
  %917 = load i64, ptr %28, align 8, !tbaa !9
  %918 = getelementptr inbounds %struct.complex, ptr %916, i64 %917
  %919 = getelementptr inbounds %struct.complex, ptr %918, i32 0, i32 1
  %920 = load float, ptr %919, align 4, !tbaa !14
  %921 = fmul float %915, %920
  %922 = fneg float %921
  %923 = call float @llvm.fmuladd.f32(float %907, float %912, float %922)
  %924 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %923, ptr %924, align 4, !tbaa !11
  %925 = load ptr, ptr %16, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.complex, ptr %925, i32 0, i32 0
  %927 = load float, ptr %926, align 4, !tbaa !11
  %928 = load ptr, ptr %17, align 8, !tbaa !5
  %929 = load i64, ptr %28, align 8, !tbaa !9
  %930 = getelementptr inbounds %struct.complex, ptr %928, i64 %929
  %931 = getelementptr inbounds %struct.complex, ptr %930, i32 0, i32 1
  %932 = load float, ptr %931, align 4, !tbaa !14
  %933 = load ptr, ptr %16, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.complex, ptr %933, i32 0, i32 1
  %935 = load float, ptr %934, align 4, !tbaa !14
  %936 = load ptr, ptr %17, align 8, !tbaa !5
  %937 = load i64, ptr %28, align 8, !tbaa !9
  %938 = getelementptr inbounds %struct.complex, ptr %936, i64 %937
  %939 = getelementptr inbounds %struct.complex, ptr %938, i32 0, i32 0
  %940 = load float, ptr %939, align 4, !tbaa !11
  %941 = fmul float %935, %940
  %942 = call float @llvm.fmuladd.f32(float %927, float %932, float %941)
  %943 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %942, ptr %943, align 4, !tbaa !14
  %944 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %945 = load float, ptr %944, align 4, !tbaa !11
  %946 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %945, ptr %946, align 4, !tbaa !11
  %947 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %948 = load float, ptr %947, align 4, !tbaa !14
  %949 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %948, ptr %949, align 4, !tbaa !14
  %950 = load ptr, ptr %14, align 8, !tbaa !5
  %951 = load i64, ptr %950, align 8, !tbaa !9
  store i64 %951, ptr %28, align 8, !tbaa !9
  %952 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %952, ptr %35, align 8, !tbaa !9
  br label %953

953:                                              ; preds = %1038, %899
  %954 = load i64, ptr %35, align 8, !tbaa !9
  %955 = load i64, ptr %28, align 8, !tbaa !9
  %956 = icmp sle i64 %954, %955
  br i1 %956, label %957, label %1041

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

1038:                                             ; preds = %957
  %1039 = load i64, ptr %35, align 8, !tbaa !9
  %1040 = add nsw i64 %1039, 1
  store i64 %1040, ptr %35, align 8, !tbaa !9
  br label %953, !llvm.loop !31

1041:                                             ; preds = %953
  br label %1042

1042:                                             ; preds = %1041, %892
  br label %1043

1043:                                             ; preds = %1042
  %1044 = load i64, ptr %37, align 8, !tbaa !9
  %1045 = add nsw i64 %1044, 1
  store i64 %1045, ptr %37, align 8, !tbaa !9
  br label %876, !llvm.loop !32

1046:                                             ; preds = %876
  br label %1047

1047:                                             ; preds = %1046
  %1048 = load i64, ptr %36, align 8, !tbaa !9
  %1049 = add nsw i64 %1048, 1
  store i64 %1049, ptr %36, align 8, !tbaa !9
  br label %748, !llvm.loop !33

1050:                                             ; preds = %748
  br label %1051

1051:                                             ; preds = %1050, %744
  br label %1590

1052:                                             ; preds = %438
  %1053 = load i64, ptr %41, align 8, !tbaa !9
  %1054 = icmp ne i64 %1053, 0
  br i1 %1054, label %1055, label %1321

1055:                                             ; preds = %1052
  %1056 = load ptr, ptr %14, align 8, !tbaa !5
  %1057 = load i64, ptr %1056, align 8, !tbaa !9
  store i64 %1057, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %1058

1058:                                             ; preds = %1317, %1055
  %1059 = load i64, ptr %36, align 8, !tbaa !9
  %1060 = load i64, ptr %26, align 8, !tbaa !9
  %1061 = icmp sle i64 %1059, %1060
  br i1 %1061, label %1062, label %1320

1062:                                             ; preds = %1058
  %1063 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1063, ptr %27, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1064

1064:                                             ; preds = %1313, %1062
  %1065 = load i64, ptr %35, align 8, !tbaa !9
  %1066 = load i64, ptr %27, align 8, !tbaa !9
  %1067 = icmp sle i64 %1065, %1066
  br i1 %1067, label %1068, label %1316

1068:                                             ; preds = %1064
  %1069 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float 0.000000e+00, ptr %1069, align 4, !tbaa !11
  %1070 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float 0.000000e+00, ptr %1070, align 4, !tbaa !14
  %1071 = load ptr, ptr %15, align 8, !tbaa !5
  %1072 = load i64, ptr %1071, align 8, !tbaa !9
  store i64 %1072, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1073

1073:                                             ; preds = %1153, %1068
  %1074 = load i64, ptr %37, align 8, !tbaa !9
  %1075 = load i64, ptr %28, align 8, !tbaa !9
  %1076 = icmp sle i64 %1074, %1075
  br i1 %1076, label %1077, label %1156

1077:                                             ; preds = %1073
  %1078 = load i64, ptr %37, align 8, !tbaa !9
  %1079 = load i64, ptr %35, align 8, !tbaa !9
  %1080 = load i64, ptr %22, align 8, !tbaa !9
  %1081 = mul nsw i64 %1079, %1080
  %1082 = add nsw i64 %1078, %1081
  store i64 %1082, ptr %29, align 8, !tbaa !9
  %1083 = load i64, ptr %37, align 8, !tbaa !9
  %1084 = load i64, ptr %36, align 8, !tbaa !9
  %1085 = load i64, ptr %22, align 8, !tbaa !9
  %1086 = mul nsw i64 %1084, %1085
  %1087 = add nsw i64 %1083, %1086
  store i64 %1087, ptr %30, align 8, !tbaa !9
  %1088 = load ptr, ptr %17, align 8, !tbaa !5
  %1089 = load i64, ptr %29, align 8, !tbaa !9
  %1090 = getelementptr inbounds %struct.complex, ptr %1088, i64 %1089
  %1091 = getelementptr inbounds %struct.complex, ptr %1090, i32 0, i32 0
  %1092 = load float, ptr %1091, align 4, !tbaa !11
  %1093 = load ptr, ptr %17, align 8, !tbaa !5
  %1094 = load i64, ptr %30, align 8, !tbaa !9
  %1095 = getelementptr inbounds %struct.complex, ptr %1093, i64 %1094
  %1096 = getelementptr inbounds %struct.complex, ptr %1095, i32 0, i32 0
  %1097 = load float, ptr %1096, align 4, !tbaa !11
  %1098 = load ptr, ptr %17, align 8, !tbaa !5
  %1099 = load i64, ptr %29, align 8, !tbaa !9
  %1100 = getelementptr inbounds %struct.complex, ptr %1098, 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 %17, align 8, !tbaa !5
  %1104 = load i64, ptr %30, align 8, !tbaa !9
  %1105 = getelementptr inbounds %struct.complex, ptr %1103, i64 %1104
  %1106 = getelementptr inbounds %struct.complex, ptr %1105, i32 0, i32 1
  %1107 = load float, ptr %1106, align 4, !tbaa !14
  %1108 = fmul float %1102, %1107
  %1109 = fneg float %1108
  %1110 = call float @llvm.fmuladd.f32(float %1092, float %1097, float %1109)
  %1111 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1110, ptr %1111, align 4, !tbaa !11
  %1112 = load ptr, ptr %17, align 8, !tbaa !5
  %1113 = load i64, ptr %29, align 8, !tbaa !9
  %1114 = getelementptr inbounds %struct.complex, ptr %1112, i64 %1113
  %1115 = getelementptr inbounds %struct.complex, ptr %1114, i32 0, i32 0
  %1116 = load float, ptr %1115, align 4, !tbaa !11
  %1117 = load ptr, ptr %17, align 8, !tbaa !5
  %1118 = load i64, ptr %30, align 8, !tbaa !9
  %1119 = getelementptr inbounds %struct.complex, ptr %1117, i64 %1118
  %1120 = getelementptr inbounds %struct.complex, ptr %1119, i32 0, i32 1
  %1121 = load float, ptr %1120, align 4, !tbaa !14
  %1122 = load ptr, ptr %17, align 8, !tbaa !5
  %1123 = load i64, ptr %29, align 8, !tbaa !9
  %1124 = getelementptr inbounds %struct.complex, ptr %1122, i64 %1123
  %1125 = getelementptr inbounds %struct.complex, ptr %1124, i32 0, i32 1
  %1126 = load float, ptr %1125, align 4, !tbaa !14
  %1127 = load ptr, ptr %17, align 8, !tbaa !5
  %1128 = load i64, ptr %30, align 8, !tbaa !9
  %1129 = getelementptr inbounds %struct.complex, ptr %1127, i64 %1128
  %1130 = getelementptr inbounds %struct.complex, ptr %1129, i32 0, i32 0
  %1131 = load float, ptr %1130, align 4, !tbaa !11
  %1132 = fmul float %1126, %1131
  %1133 = call float @llvm.fmuladd.f32(float %1116, float %1121, float %1132)
  %1134 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1133, ptr %1134, align 4, !tbaa !14
  %1135 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1136 = load float, ptr %1135, align 4, !tbaa !11
  %1137 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1138 = load float, ptr %1137, align 4, !tbaa !11
  %1139 = fadd float %1136, %1138
  %1140 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1139, ptr %1140, align 4, !tbaa !11
  %1141 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1142 = load float, ptr %1141, align 4, !tbaa !14
  %1143 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1144 = load float, ptr %1143, align 4, !tbaa !14
  %1145 = fadd float %1142, %1144
  %1146 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1145, ptr %1146, align 4, !tbaa !14
  %1147 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %1148 = load float, ptr %1147, align 4, !tbaa !11
  %1149 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %1148, ptr %1149, align 4, !tbaa !11
  %1150 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %1151 = load float, ptr %1150, align 4, !tbaa !14
  %1152 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %1151, ptr %1152, align 4, !tbaa !14
  br label %1153

1153:                                             ; preds = %1077
  %1154 = load i64, ptr %37, align 8, !tbaa !9
  %1155 = add nsw i64 %1154, 1
  store i64 %1155, ptr %37, align 8, !tbaa !9
  br label %1073, !llvm.loop !34

1156:                                             ; preds = %1073
  %1157 = load ptr, ptr %19, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.complex, ptr %1157, i32 0, i32 0
  %1159 = load float, ptr %1158, align 4, !tbaa !11
  %1160 = fcmp oeq float %1159, 0.000000e+00
  br i1 %1160, label %1161, label %1211

1161:                                             ; preds = %1156
  %1162 = load ptr, ptr %19, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.complex, ptr %1162, i32 0, i32 1
  %1164 = load float, ptr %1163, align 4, !tbaa !14
  %1165 = fcmp oeq float %1164, 0.000000e+00
  br i1 %1165, label %1166, label %1211

1166:                                             ; preds = %1161
  %1167 = load i64, ptr %35, align 8, !tbaa !9
  %1168 = load i64, ptr %36, align 8, !tbaa !9
  %1169 = load i64, ptr %24, align 8, !tbaa !9
  %1170 = mul nsw i64 %1168, %1169
  %1171 = add nsw i64 %1167, %1170
  store i64 %1171, ptr %28, align 8, !tbaa !9
  %1172 = load ptr, ptr %16, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.complex, ptr %1172, i32 0, i32 0
  %1174 = load float, ptr %1173, align 4, !tbaa !11
  %1175 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1176 = load float, ptr %1175, align 4, !tbaa !11
  %1177 = load ptr, ptr %16, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.complex, ptr %1177, i32 0, i32 1
  %1179 = load float, ptr %1178, align 4, !tbaa !14
  %1180 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1181 = load float, ptr %1180, align 4, !tbaa !14
  %1182 = fmul float %1179, %1181
  %1183 = fneg float %1182
  %1184 = call float @llvm.fmuladd.f32(float %1174, float %1176, float %1183)
  %1185 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1184, ptr %1185, align 4, !tbaa !11
  %1186 = load ptr, ptr %16, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.complex, ptr %1186, i32 0, i32 0
  %1188 = load float, ptr %1187, align 4, !tbaa !11
  %1189 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1190 = load float, ptr %1189, align 4, !tbaa !14
  %1191 = load ptr, ptr %16, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.complex, ptr %1191, i32 0, i32 1
  %1193 = load float, ptr %1192, align 4, !tbaa !14
  %1194 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1195 = load float, ptr %1194, align 4, !tbaa !11
  %1196 = fmul float %1193, %1195
  %1197 = call float @llvm.fmuladd.f32(float %1188, float %1190, float %1196)
  %1198 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1197, ptr %1198, align 4, !tbaa !14
  %1199 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %1200 = load float, ptr %1199, align 4, !tbaa !11
  %1201 = load ptr, ptr %20, align 8, !tbaa !5
  %1202 = load i64, ptr %28, align 8, !tbaa !9
  %1203 = getelementptr inbounds %struct.complex, ptr %1201, i64 %1202
  %1204 = getelementptr inbounds %struct.complex, ptr %1203, i32 0, i32 0
  store float %1200, ptr %1204, align 4, !tbaa !11
  %1205 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %1206 = load float, ptr %1205, align 4, !tbaa !14
  %1207 = load ptr, ptr %20, align 8, !tbaa !5
  %1208 = load i64, ptr %28, align 8, !tbaa !9
  %1209 = getelementptr inbounds %struct.complex, ptr %1207, i64 %1208
  %1210 = getelementptr inbounds %struct.complex, ptr %1209, i32 0, i32 1
  store float %1206, ptr %1210, align 4, !tbaa !14
  br label %1312

1211:                                             ; preds = %1161, %1156
  %1212 = load i64, ptr %35, align 8, !tbaa !9
  %1213 = load i64, ptr %36, align 8, !tbaa !9
  %1214 = load i64, ptr %24, align 8, !tbaa !9
  %1215 = mul nsw i64 %1213, %1214
  %1216 = add nsw i64 %1212, %1215
  store i64 %1216, ptr %28, align 8, !tbaa !9
  %1217 = load ptr, ptr %16, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.complex, ptr %1217, i32 0, i32 0
  %1219 = load float, ptr %1218, align 4, !tbaa !11
  %1220 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1221 = load float, ptr %1220, align 4, !tbaa !11
  %1222 = load ptr, ptr %16, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.complex, ptr %1222, i32 0, i32 1
  %1224 = load float, ptr %1223, align 4, !tbaa !14
  %1225 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1226 = load float, ptr %1225, align 4, !tbaa !14
  %1227 = fmul float %1224, %1226
  %1228 = fneg float %1227
  %1229 = call float @llvm.fmuladd.f32(float %1219, float %1221, float %1228)
  %1230 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1229, ptr %1230, align 4, !tbaa !11
  %1231 = load ptr, ptr %16, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.complex, ptr %1231, i32 0, i32 0
  %1233 = load float, ptr %1232, align 4, !tbaa !11
  %1234 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1235 = load float, ptr %1234, align 4, !tbaa !14
  %1236 = load ptr, ptr %16, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.complex, ptr %1236, i32 0, i32 1
  %1238 = load float, ptr %1237, align 4, !tbaa !14
  %1239 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1240 = load float, ptr %1239, align 4, !tbaa !11
  %1241 = fmul float %1238, %1240
  %1242 = call float @llvm.fmuladd.f32(float %1233, float %1235, float %1241)
  %1243 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1242, ptr %1243, align 4, !tbaa !14
  %1244 = load i64, ptr %35, align 8, !tbaa !9
  %1245 = load i64, ptr %36, align 8, !tbaa !9
  %1246 = load i64, ptr %24, align 8, !tbaa !9
  %1247 = mul nsw i64 %1245, %1246
  %1248 = add nsw i64 %1244, %1247
  store i64 %1248, ptr %29, align 8, !tbaa !9
  %1249 = load ptr, ptr %19, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.complex, ptr %1249, i32 0, i32 0
  %1251 = load float, ptr %1250, align 4, !tbaa !11
  %1252 = load ptr, ptr %20, align 8, !tbaa !5
  %1253 = load i64, ptr %29, align 8, !tbaa !9
  %1254 = getelementptr inbounds %struct.complex, ptr %1252, i64 %1253
  %1255 = getelementptr inbounds %struct.complex, ptr %1254, i32 0, i32 0
  %1256 = load float, ptr %1255, align 4, !tbaa !11
  %1257 = load ptr, ptr %19, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.complex, ptr %1257, i32 0, i32 1
  %1259 = load float, ptr %1258, align 4, !tbaa !14
  %1260 = load ptr, ptr %20, align 8, !tbaa !5
  %1261 = load i64, ptr %29, align 8, !tbaa !9
  %1262 = getelementptr inbounds %struct.complex, ptr %1260, i64 %1261
  %1263 = getelementptr inbounds %struct.complex, ptr %1262, i32 0, i32 1
  %1264 = load float, ptr %1263, align 4, !tbaa !14
  %1265 = fmul float %1259, %1264
  %1266 = fneg float %1265
  %1267 = call float @llvm.fmuladd.f32(float %1251, float %1256, float %1266)
  %1268 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %1267, ptr %1268, align 4, !tbaa !11
  %1269 = load ptr, ptr %19, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.complex, ptr %1269, i32 0, i32 0
  %1271 = load float, ptr %1270, align 4, !tbaa !11
  %1272 = load ptr, ptr %20, align 8, !tbaa !5
  %1273 = load i64, ptr %29, align 8, !tbaa !9
  %1274 = getelementptr inbounds %struct.complex, ptr %1272, i64 %1273
  %1275 = getelementptr inbounds %struct.complex, ptr %1274, i32 0, i32 1
  %1276 = load float, ptr %1275, align 4, !tbaa !14
  %1277 = load ptr, ptr %19, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.complex, ptr %1277, i32 0, i32 1
  %1279 = load float, ptr %1278, align 4, !tbaa !14
  %1280 = load ptr, ptr %20, align 8, !tbaa !5
  %1281 = load i64, ptr %29, align 8, !tbaa !9
  %1282 = getelementptr inbounds %struct.complex, ptr %1280, i64 %1281
  %1283 = getelementptr inbounds %struct.complex, ptr %1282, i32 0, i32 0
  %1284 = load float, ptr %1283, align 4, !tbaa !11
  %1285 = fmul float %1279, %1284
  %1286 = call float @llvm.fmuladd.f32(float %1271, float %1276, float %1285)
  %1287 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %1286, ptr %1287, align 4, !tbaa !14
  %1288 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1289 = load float, ptr %1288, align 4, !tbaa !11
  %1290 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %1291 = load float, ptr %1290, align 4, !tbaa !11
  %1292 = fadd float %1289, %1291
  %1293 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1292, ptr %1293, align 4, !tbaa !11
  %1294 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1295 = load float, ptr %1294, align 4, !tbaa !14
  %1296 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %1297 = load float, ptr %1296, align 4, !tbaa !14
  %1298 = fadd float %1295, %1297
  %1299 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1298, ptr %1299, align 4, !tbaa !14
  %1300 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %1301 = load float, ptr %1300, align 4, !tbaa !11
  %1302 = load ptr, ptr %20, align 8, !tbaa !5
  %1303 = load i64, ptr %28, align 8, !tbaa !9
  %1304 = getelementptr inbounds %struct.complex, ptr %1302, i64 %1303
  %1305 = getelementptr inbounds %struct.complex, ptr %1304, i32 0, i32 0
  store float %1301, ptr %1305, align 4, !tbaa !11
  %1306 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %1307 = load float, ptr %1306, align 4, !tbaa !14
  %1308 = load ptr, ptr %20, align 8, !tbaa !5
  %1309 = load i64, ptr %28, align 8, !tbaa !9
  %1310 = getelementptr inbounds %struct.complex, ptr %1308, i64 %1309
  %1311 = getelementptr inbounds %struct.complex, ptr %1310, i32 0, i32 1
  store float %1307, ptr %1311, align 4, !tbaa !14
  br label %1312

1312:                                             ; preds = %1211, %1166
  br label %1313

1313:                                             ; preds = %1312
  %1314 = load i64, ptr %35, align 8, !tbaa !9
  %1315 = add nsw i64 %1314, 1
  store i64 %1315, ptr %35, align 8, !tbaa !9
  br label %1064, !llvm.loop !35

1316:                                             ; preds = %1064
  br label %1317

1317:                                             ; preds = %1316
  %1318 = load i64, ptr %36, align 8, !tbaa !9
  %1319 = add nsw i64 %1318, 1
  store i64 %1319, ptr %36, align 8, !tbaa !9
  br label %1058, !llvm.loop !36

1320:                                             ; preds = %1058
  br label %1589

1321:                                             ; preds = %1052
  %1322 = load ptr, ptr %14, align 8, !tbaa !5
  %1323 = load i64, ptr %1322, align 8, !tbaa !9
  store i64 %1323, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %1324

1324:                                             ; preds = %1585, %1321
  %1325 = load i64, ptr %36, align 8, !tbaa !9
  %1326 = load i64, ptr %26, align 8, !tbaa !9
  %1327 = icmp sle i64 %1325, %1326
  br i1 %1327, label %1328, label %1588

1328:                                             ; preds = %1324
  %1329 = load ptr, ptr %14, align 8, !tbaa !5
  %1330 = load i64, ptr %1329, align 8, !tbaa !9
  store i64 %1330, ptr %27, align 8, !tbaa !9
  %1331 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %1331, ptr %35, align 8, !tbaa !9
  br label %1332

1332:                                             ; preds = %1581, %1328
  %1333 = load i64, ptr %35, align 8, !tbaa !9
  %1334 = load i64, ptr %27, align 8, !tbaa !9
  %1335 = icmp sle i64 %1333, %1334
  br i1 %1335, label %1336, label %1584

1336:                                             ; preds = %1332
  %1337 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float 0.000000e+00, ptr %1337, align 4, !tbaa !11
  %1338 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float 0.000000e+00, ptr %1338, align 4, !tbaa !14
  %1339 = load ptr, ptr %15, align 8, !tbaa !5
  %1340 = load i64, ptr %1339, align 8, !tbaa !9
  store i64 %1340, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1341

1341:                                             ; preds = %1421, %1336
  %1342 = load i64, ptr %37, align 8, !tbaa !9
  %1343 = load i64, ptr %28, align 8, !tbaa !9
  %1344 = icmp sle i64 %1342, %1343
  br i1 %1344, label %1345, label %1424

1345:                                             ; preds = %1341
  %1346 = load i64, ptr %37, align 8, !tbaa !9
  %1347 = load i64, ptr %35, align 8, !tbaa !9
  %1348 = load i64, ptr %22, align 8, !tbaa !9
  %1349 = mul nsw i64 %1347, %1348
  %1350 = add nsw i64 %1346, %1349
  store i64 %1350, ptr %29, align 8, !tbaa !9
  %1351 = load i64, ptr %37, align 8, !tbaa !9
  %1352 = load i64, ptr %36, align 8, !tbaa !9
  %1353 = load i64, ptr %22, align 8, !tbaa !9
  %1354 = mul nsw i64 %1352, %1353
  %1355 = add nsw i64 %1351, %1354
  store i64 %1355, ptr %30, align 8, !tbaa !9
  %1356 = load ptr, ptr %17, align 8, !tbaa !5
  %1357 = load i64, ptr %29, align 8, !tbaa !9
  %1358 = getelementptr inbounds %struct.complex, ptr %1356, i64 %1357
  %1359 = getelementptr inbounds %struct.complex, ptr %1358, i32 0, i32 0
  %1360 = load float, ptr %1359, align 4, !tbaa !11
  %1361 = load ptr, ptr %17, align 8, !tbaa !5
  %1362 = load i64, ptr %30, align 8, !tbaa !9
  %1363 = getelementptr inbounds %struct.complex, ptr %1361, i64 %1362
  %1364 = getelementptr inbounds %struct.complex, ptr %1363, i32 0, i32 0
  %1365 = load float, ptr %1364, align 4, !tbaa !11
  %1366 = load ptr, ptr %17, align 8, !tbaa !5
  %1367 = load i64, ptr %29, align 8, !tbaa !9
  %1368 = getelementptr inbounds %struct.complex, ptr %1366, i64 %1367
  %1369 = getelementptr inbounds %struct.complex, ptr %1368, i32 0, i32 1
  %1370 = load float, ptr %1369, align 4, !tbaa !14
  %1371 = load ptr, ptr %17, align 8, !tbaa !5
  %1372 = load i64, ptr %30, align 8, !tbaa !9
  %1373 = getelementptr inbounds %struct.complex, ptr %1371, i64 %1372
  %1374 = getelementptr inbounds %struct.complex, ptr %1373, i32 0, i32 1
  %1375 = load float, ptr %1374, align 4, !tbaa !14
  %1376 = fmul float %1370, %1375
  %1377 = fneg float %1376
  %1378 = call float @llvm.fmuladd.f32(float %1360, float %1365, float %1377)
  %1379 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  store float %1378, ptr %1379, align 4, !tbaa !11
  %1380 = load ptr, ptr %17, align 8, !tbaa !5
  %1381 = load i64, ptr %29, align 8, !tbaa !9
  %1382 = getelementptr inbounds %struct.complex, ptr %1380, i64 %1381
  %1383 = getelementptr inbounds %struct.complex, ptr %1382, i32 0, i32 0
  %1384 = load float, ptr %1383, align 4, !tbaa !11
  %1385 = load ptr, ptr %17, align 8, !tbaa !5
  %1386 = load i64, ptr %30, align 8, !tbaa !9
  %1387 = getelementptr inbounds %struct.complex, ptr %1385, i64 %1386
  %1388 = getelementptr inbounds %struct.complex, ptr %1387, i32 0, i32 1
  %1389 = load float, ptr %1388, align 4, !tbaa !14
  %1390 = load ptr, ptr %17, align 8, !tbaa !5
  %1391 = load i64, ptr %29, align 8, !tbaa !9
  %1392 = getelementptr inbounds %struct.complex, ptr %1390, i64 %1391
  %1393 = getelementptr inbounds %struct.complex, ptr %1392, i32 0, i32 1
  %1394 = load float, ptr %1393, align 4, !tbaa !14
  %1395 = load ptr, ptr %17, align 8, !tbaa !5
  %1396 = load i64, ptr %30, align 8, !tbaa !9
  %1397 = getelementptr inbounds %struct.complex, ptr %1395, i64 %1396
  %1398 = getelementptr inbounds %struct.complex, ptr %1397, i32 0, i32 0
  %1399 = load float, ptr %1398, align 4, !tbaa !11
  %1400 = fmul float %1394, %1399
  %1401 = call float @llvm.fmuladd.f32(float %1384, float %1389, float %1400)
  %1402 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  store float %1401, ptr %1402, align 4, !tbaa !14
  %1403 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1404 = load float, ptr %1403, align 4, !tbaa !11
  %1405 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 0
  %1406 = load float, ptr %1405, align 4, !tbaa !11
  %1407 = fadd float %1404, %1406
  %1408 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1407, ptr %1408, align 4, !tbaa !11
  %1409 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1410 = load float, ptr %1409, align 4, !tbaa !14
  %1411 = getelementptr inbounds %struct.complex, ptr %33, i32 0, i32 1
  %1412 = load float, ptr %1411, align 4, !tbaa !14
  %1413 = fadd float %1410, %1412
  %1414 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1413, ptr %1414, align 4, !tbaa !14
  %1415 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %1416 = load float, ptr %1415, align 4, !tbaa !11
  %1417 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %1416, ptr %1417, align 4, !tbaa !11
  %1418 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %1419 = load float, ptr %1418, align 4, !tbaa !14
  %1420 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %1419, ptr %1420, align 4, !tbaa !14
  br label %1421

1421:                                             ; preds = %1345
  %1422 = load i64, ptr %37, align 8, !tbaa !9
  %1423 = add nsw i64 %1422, 1
  store i64 %1423, ptr %37, align 8, !tbaa !9
  br label %1341, !llvm.loop !37

1424:                                             ; preds = %1341
  %1425 = load ptr, ptr %19, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.complex, ptr %1425, i32 0, i32 0
  %1427 = load float, ptr %1426, align 4, !tbaa !11
  %1428 = fcmp oeq float %1427, 0.000000e+00
  br i1 %1428, label %1429, label %1479

1429:                                             ; preds = %1424
  %1430 = load ptr, ptr %19, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.complex, ptr %1430, i32 0, i32 1
  %1432 = load float, ptr %1431, align 4, !tbaa !14
  %1433 = fcmp oeq float %1432, 0.000000e+00
  br i1 %1433, label %1434, label %1479

1434:                                             ; preds = %1429
  %1435 = load i64, ptr %35, align 8, !tbaa !9
  %1436 = load i64, ptr %36, align 8, !tbaa !9
  %1437 = load i64, ptr %24, align 8, !tbaa !9
  %1438 = mul nsw i64 %1436, %1437
  %1439 = add nsw i64 %1435, %1438
  store i64 %1439, ptr %28, align 8, !tbaa !9
  %1440 = load ptr, ptr %16, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.complex, ptr %1440, i32 0, i32 0
  %1442 = load float, ptr %1441, align 4, !tbaa !11
  %1443 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1444 = load float, ptr %1443, align 4, !tbaa !11
  %1445 = load ptr, ptr %16, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.complex, ptr %1445, i32 0, i32 1
  %1447 = load float, ptr %1446, align 4, !tbaa !14
  %1448 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1449 = load float, ptr %1448, align 4, !tbaa !14
  %1450 = fmul float %1447, %1449
  %1451 = fneg float %1450
  %1452 = call float @llvm.fmuladd.f32(float %1442, float %1444, float %1451)
  %1453 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1452, ptr %1453, align 4, !tbaa !11
  %1454 = load ptr, ptr %16, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.complex, ptr %1454, i32 0, i32 0
  %1456 = load float, ptr %1455, align 4, !tbaa !11
  %1457 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %1458 = load float, ptr %1457, align 4, !tbaa !14
  %1459 = load ptr, ptr %16, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.complex, ptr %1459, i32 0, i32 1
  %1461 = load float, ptr %1460, align 4, !tbaa !14
  %1462 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %1463 = load float, ptr %1462, align 4, !tbaa !11
  %1464 = fmul float %1461, %1463
  %1465 = call float @llvm.fmuladd.f32(float %1456, float %1458, float %1464)
  %1466 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1465, ptr %1466, align 4, !tbaa !14
  %1467 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %1468 = load float, ptr %1467, align 4, !tbaa !11
  %1469 = load ptr, ptr %20, align 8, !tbaa !5
  %1470 = load i64, ptr %28, align 8, !tbaa !9
  %1471 = getelementptr inbounds %struct.complex, ptr %1469, i64 %1470
  %1472 = getelementptr inbounds %struct.complex, ptr %1471, i32 0, i32 0
  store float %1468, ptr %1472, align 4, !tbaa !11
  %1473 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %1474 = load float, ptr %1473, align 4, !tbaa !14
  %1475 = load ptr, ptr %20, align 8, !tbaa !5
  %1476 = load i64, ptr %28, align 8, !tbaa !9
  %1477 = getelementptr inbounds %struct.complex, ptr %1475, i64 %1476
  %1478 = getelementptr inbounds %struct.complex, ptr %1477, i32 0, i32 1
  store float %1474, ptr %1478, align 4, !tbaa !14
  br label %1580

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

1580:                                             ; preds = %1479, %1434
  br label %1581

1581:                                             ; preds = %1580
  %1582 = load i64, ptr %35, align 8, !tbaa !9
  %1583 = add nsw i64 %1582, 1
  store i64 %1583, ptr %35, align 8, !tbaa !9
  br label %1332, !llvm.loop !38

1584:                                             ; preds = %1332
  br label %1585

1585:                                             ; preds = %1584
  %1586 = load i64, ptr %36, align 8, !tbaa !9
  %1587 = add nsw i64 %1586, 1
  store i64 %1587, ptr %36, align 8, !tbaa !9
  br label %1324, !llvm.loop !39

1588:                                             ; preds = %1324
  br label %1589

1589:                                             ; preds = %1588, %1320
  br label %1590

1590:                                             ; preds = %1589, %1051
  store i32 0, ptr %11, align 4
  store i32 1, ptr %42, align 4
  br label %1591

1591:                                             ; preds = %1590, %437, %161, %131
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  %1592 = load i32, ptr %11, align 4
  ret i32 %1592
}

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

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

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

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

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

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

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

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


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

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

20:                                               ; preds = %10
  %21 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not564 = icmp eq i64 %21, 0
  br i1 %.not564, label %22, label %23

22:                                               ; preds = %20
  store i64 1, ptr %11, align 8, !tbaa !5
  br label %.thread

23:                                               ; preds = %20, %10
  %24 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not565 = icmp eq i64 %24, 0
  br i1 %.not565, label %25, label %28

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

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

28:                                               ; preds = %25, %23
  %29 = load i64, ptr %2, align 8, !tbaa !5
  %30 = icmp slt i64 %29, 0
  br i1 %30, label %31, label %32

31:                                               ; preds = %28
  store i64 3, ptr %11, align 8, !tbaa !5
  br label %.thread

32:                                               ; preds = %28
  %33 = load i64, ptr %3, align 8, !tbaa !5
  %34 = icmp slt i64 %33, 0
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  store i64 4, ptr %11, align 8, !tbaa !5
  br label %.thread

36:                                               ; preds = %32
  %37 = load i64, ptr %6, align 8, !tbaa !5
  %38 = tail call i64 @llvm.smax.i64(i64 %.0549, i64 1)
  %39 = icmp slt i64 %37, %38
  br i1 %39, label %40, label %41

40:                                               ; preds = %36
  store i64 7, ptr %11, align 8, !tbaa !5
  br label %.thread

41:                                               ; preds = %36
  %42 = load i64, ptr %9, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %29, i64 1)
  %43 = icmp slt i64 %42, %spec.select
  br i1 %43, label %44, label %46

44:                                               ; preds = %41
  store i64 10, ptr %11, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %22, %31, %40, %44, %35, %27
  %45 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %11) #6
  br label %.loopexit

46:                                               ; preds = %41
  %47 = icmp eq i64 %29, 0
  br i1 %47, label %.loopexit, label %48

48:                                               ; preds = %46
  %49 = load float, ptr %4, align 4, !tbaa !9
  %50 = fcmp oeq float %49, 0.000000e+00
  br i1 %50, label %51, label %56

51:                                               ; preds = %48
  %52 = getelementptr inbounds i8, ptr %4, i64 4
  %53 = load float, ptr %52, align 4, !tbaa !12
  %54 = fcmp oeq float %53, 0.000000e+00
  %55 = icmp eq i64 %33, 0
  %or.cond = or i1 %54, %55
  br i1 %or.cond, label %57, label %64

56:                                               ; preds = %48
  %.old = icmp eq i64 %33, 0
  br i1 %.old, label %57, label %64

57:                                               ; preds = %56, %51
  %58 = load float, ptr %7, align 4, !tbaa !9
  %59 = fcmp oeq float %58, 1.000000e+00
  br i1 %59, label %60, label %64

60:                                               ; preds = %57
  %61 = getelementptr inbounds i8, ptr %7, i64 4
  %62 = load float, ptr %61, align 4, !tbaa !12
  %63 = fcmp oeq float %62, 0.000000e+00
  br i1 %63, label %.loopexit, label %64

64:                                               ; preds = %51, %60, %57, %56
  br i1 %50, label %65, label %194

65:                                               ; preds = %64
  %66 = getelementptr inbounds i8, ptr %4, i64 4
  %67 = load float, ptr %66, align 4, !tbaa !12
  %68 = fcmp oeq float %67, 0.000000e+00
  br i1 %68, label %69, label %194

69:                                               ; preds = %65
  %70 = load float, ptr %7, align 4, !tbaa !9
  %71 = fcmp oeq float %70, 0.000000e+00
  br i1 %.not563, label %131, label %72

72:                                               ; preds = %69
  br i1 %71, label %73, label %.preheader600.lr.ph

73:                                               ; preds = %72
  %74 = getelementptr inbounds i8, ptr %7, i64 4
  %75 = load float, ptr %74, align 4, !tbaa !12
  %76 = fcmp oeq float %75, 0.000000e+00
  br i1 %76, label %.preheader597.preheader, label %.preheader600.lr.ph

.preheader597.preheader:                          ; preds = %73
  %77 = shl i64 %15, 3
  %xtraiter1196 = and i64 %29, 3
  %78 = icmp ult i64 %29, 4
  br i1 %78, label %.loopexit.loopexit1177.unr-lcssa, label %.preheader597.preheader.new

.preheader597.preheader.new:                      ; preds = %.preheader597.preheader
  %unroll_iter1198 = and i64 %29, 9223372036854775804
  br label %.preheader597

.preheader597:                                    ; preds = %.preheader597, %.preheader597.preheader.new
  %indvar750 = phi i64 [ 0, %.preheader597.preheader.new ], [ %indvar.next751.3, %.preheader597 ]
  %niter1199 = phi i64 [ 0, %.preheader597.preheader.new ], [ %niter1199.next.3, %.preheader597 ]
  %79 = mul i64 %77, %indvar750
  %scevgep752 = getelementptr i8, ptr %8, i64 %79
  %80 = shl i64 %indvar750, 3
  %81 = or disjoint i64 %80, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep752, i8 0, i64 %81, i1 false), !tbaa !13
  %indvar.next751 = or disjoint i64 %indvar750, 1
  %82 = mul i64 %77, %indvar.next751
  %scevgep752.1 = getelementptr i8, ptr %8, i64 %82
  %83 = shl i64 %indvar.next751, 3
  %84 = add nuw nsw i64 %83, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep752.1, i8 0, i64 %84, i1 false), !tbaa !13
  %indvar.next751.1 = or disjoint i64 %indvar750, 2
  %85 = mul i64 %77, %indvar.next751.1
  %scevgep752.2 = getelementptr i8, ptr %8, i64 %85
  %86 = shl i64 %indvar.next751.1, 3
  %87 = or disjoint i64 %86, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep752.2, i8 0, i64 %87, i1 false), !tbaa !13
  %indvar.next751.2 = or disjoint i64 %indvar750, 3
  %88 = mul i64 %77, %indvar.next751.2
  %scevgep752.3 = getelementptr i8, ptr %8, i64 %88
  %89 = shl i64 %indvar.next751.2, 3
  %90 = add nuw i64 %89, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep752.3, i8 0, i64 %90, i1 false), !tbaa !13
  %indvar.next751.3 = add nuw nsw i64 %indvar750, 4
  %niter1199.next.3 = add i64 %niter1199, 4
  %niter1199.ncmp.3 = icmp eq i64 %niter1199.next.3, %unroll_iter1198
  br i1 %niter1199.ncmp.3, label %.loopexit.loopexit1177.unr-lcssa, label %.preheader597, !llvm.loop !14

.preheader600.lr.ph:                              ; preds = %72, %73
  %91 = getelementptr i8, ptr %7, i64 4
  %92 = add nuw i64 %29, 1
  %93 = shl i64 %15, 3
  %94 = shl i64 %15, 3
  %95 = add i64 %94, 8
  %scevgep1095 = getelementptr i8, ptr %7, i64 8
  %invariant.gep1225 = getelementptr i8, ptr %8, i64 8
  br label %.preheader600

.preheader600:                                    ; preds = %.preheader600.lr.ph, %.loopexit1174
  %indvar1080 = phi i64 [ 0, %.preheader600.lr.ph ], [ %indvar.next1081, %.loopexit1174 ]
  %indvars.iv746 = phi i64 [ 2, %.preheader600.lr.ph ], [ %indvars.iv.next747, %.loopexit1174 ]
  %.1552696 = phi i64 [ 1, %.preheader600.lr.ph ], [ %130, %.loopexit1174 ]
  %96 = mul i64 %94, %indvar1080
  %scevgep1091 = getelementptr i8, ptr %8, i64 %96
  %97 = mul i64 %95, %indvar1080
  %98 = or disjoint i64 %97, 4
  %scevgep1092 = getelementptr i8, ptr %8, i64 %98
  %99 = or disjoint i64 %96, 4
  %scevgep1093 = getelementptr i8, ptr %8, i64 %99
  %gep1226 = getelementptr i8, ptr %invariant.gep1225, i64 %97
  %100 = mul nsw i64 %.1552696, %15
  %invariant.gep692 = getelementptr %struct.complex, ptr %17, i64 %100
  %min.iters.check1105 = icmp ult i64 %.1552696, 8
  br i1 %min.iters.check1105, label %scalar.ph1104.preheader, label %vector.scevcheck1079

vector.scevcheck1079:                             ; preds = %.preheader600
  %101 = mul i64 %93, %indvar1080
  %102 = or disjoint i64 %101, 4
  %scevgep1086 = getelementptr i8, ptr %8, i64 %102
  %scevgep1082 = getelementptr i8, ptr %8, i64 %101
  %mul.result1084 = shl i64 %indvar1080, 3
  %103 = getelementptr i8, ptr %scevgep1082, i64 %mul.result1084
  %104 = icmp ult ptr %103, %scevgep1082
  %mul.result1088 = shl i64 %indvar1080, 3
  %mul.overflow1089 = icmp ugt i64 %indvar1080, 2305843009213693951
  %105 = getelementptr i8, ptr %scevgep1086, i64 %mul.result1088
  %106 = icmp ult ptr %105, %scevgep1086
  %107 = or i1 %106, %mul.overflow1089
  %108 = or i1 %104, %107
  br i1 %108, label %scalar.ph1104.preheader, label %vector.memcheck1090

vector.memcheck1090:                              ; preds = %vector.scevcheck1079
  %bound01096 = icmp ult ptr %scevgep1091, %91
  %bound11097 = icmp ugt ptr %scevgep1092, %7
  %found.conflict1098 = and i1 %bound01096, %bound11097
  %bound01099 = icmp ult ptr %scevgep1093, %scevgep1095
  %bound11100 = icmp ult ptr %91, %gep1226
  %found.conflict1101 = and i1 %bound01099, %bound11100
  %conflict.rdx1102 = or i1 %found.conflict1098, %found.conflict1101
  br i1 %conflict.rdx1102, label %scalar.ph1104.preheader, label %vector.ph1106

vector.ph1106:                                    ; preds = %vector.memcheck1090
  %n.vec1108 = and i64 %.1552696, 9223372036854775804
  %ind.end1109 = or disjoint i64 %n.vec1108, 1
  br label %vector.body1111

vector.body1111:                                  ; preds = %vector.body1111, %vector.ph1106
  %index1112 = phi i64 [ 0, %vector.ph1106 ], [ %index.next1122, %vector.body1111 ]
  %offset.idx1113 = or disjoint i64 %index1112, 1
  %109 = load float, ptr %7, align 4, !tbaa !9, !alias.scope !16
  %broadcast.splatinsert1119 = insertelement <4 x float> poison, float %109, i64 0
  %broadcast.splat1120 = shufflevector <4 x float> %broadcast.splatinsert1119, <4 x float> poison, <4 x i32> zeroinitializer
  %110 = getelementptr %struct.complex, ptr %invariant.gep692, i64 %offset.idx1113
  %wide.vec1114 = load <8 x float>, ptr %110, align 4, !tbaa !13
  %strided.vec1115 = shufflevector <8 x float> %wide.vec1114, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1116 = shufflevector <8 x float> %wide.vec1114, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %111 = load float, ptr %91, align 4, !tbaa !12, !alias.scope !19
  %broadcast.splatinsert1117 = insertelement <4 x float> poison, float %111, i64 0
  %broadcast.splat1118 = shufflevector <4 x float> %broadcast.splatinsert1117, <4 x float> poison, <4 x i32> zeroinitializer
  %112 = fneg <4 x float> %broadcast.splat1118
  %113 = fmul <4 x float> %strided.vec1116, %112
  %114 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1120, <4 x float> %strided.vec1115, <4 x float> %113)
  %115 = fmul <4 x float> %strided.vec1115, %broadcast.splat1118
  %116 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1120, <4 x float> %strided.vec1116, <4 x float> %115)
  %interleaved.vec1121 = shufflevector <4 x float> %114, <4 x float> %116, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1121, ptr %110, align 4, !tbaa !13
  %index.next1122 = add nuw i64 %index1112, 4
  %117 = icmp eq i64 %index.next1122, %n.vec1108
  br i1 %117, label %middle.block1103, label %vector.body1111, !llvm.loop !21

middle.block1103:                                 ; preds = %vector.body1111
  %cmp.n1123 = icmp eq i64 %.1552696, %n.vec1108
  br i1 %cmp.n1123, label %.loopexit1174, label %scalar.ph1104.preheader

scalar.ph1104.preheader:                          ; preds = %middle.block1103, %vector.memcheck1090, %vector.scevcheck1079, %.preheader600
  %.1556694.ph = phi i64 [ 1, %vector.memcheck1090 ], [ 1, %vector.scevcheck1079 ], [ 1, %.preheader600 ], [ %ind.end1109, %middle.block1103 ]
  br label %scalar.ph1104

scalar.ph1104:                                    ; preds = %scalar.ph1104.preheader, %scalar.ph1104
  %.1556694 = phi i64 [ %129, %scalar.ph1104 ], [ %.1556694.ph, %scalar.ph1104.preheader ]
  %118 = load float, ptr %7, align 4, !tbaa !9
  %gep693 = getelementptr %struct.complex, ptr %invariant.gep692, i64 %.1556694
  %119 = load float, ptr %91, align 4, !tbaa !12
  %120 = fneg float %119
  %121 = load <2 x float>, ptr %gep693, align 4, !tbaa !13
  %122 = insertelement <2 x float> poison, float %119, i64 0
  %123 = insertelement <2 x float> %122, float %120, i64 1
  %124 = fmul <2 x float> %121, %123
  %125 = shufflevector <2 x float> %124, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %126 = insertelement <2 x float> poison, float %118, i64 0
  %127 = shufflevector <2 x float> %126, <2 x float> poison, <2 x i32> zeroinitializer
  %128 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %127, <2 x float> %121, <2 x float> %125)
  store <2 x float> %128, ptr %gep693, align 4, !tbaa !13
  %129 = add nuw i64 %.1556694, 1
  %exitcond748.not = icmp eq i64 %129, %indvars.iv746
  br i1 %exitcond748.not, label %.loopexit1174, label %scalar.ph1104, !llvm.loop !24

.loopexit1174:                                    ; preds = %scalar.ph1104, %middle.block1103
  %130 = add nuw nsw i64 %.1552696, 1
  %indvars.iv.next747 = add nuw i64 %indvars.iv746, 1
  %exitcond749.not = icmp eq i64 %indvars.iv746, %92
  %indvar.next1081 = add i64 %indvar1080, 1
  br i1 %exitcond749.not, label %.loopexit, label %.preheader600, !llvm.loop !25

131:                                              ; preds = %69
  br i1 %71, label %132, label %.preheader595.lr.ph

132:                                              ; preds = %131
  %133 = getelementptr inbounds i8, ptr %7, i64 4
  %134 = load float, ptr %133, align 4, !tbaa !12
  %135 = fcmp oeq float %134, 0.000000e+00
  br i1 %135, label %.preheader.preheader, label %.preheader595.lr.ph

.preheader.preheader:                             ; preds = %132
  %136 = shl i64 %15, 3
  %137 = add i64 %136, 8
  %xtraiter1200 = and i64 %29, 3
  %138 = icmp ult i64 %29, 4
  br i1 %138, label %.loopexit.loopexit.unr-lcssa, label %.preheader.preheader.new

.preheader.preheader.new:                         ; preds = %.preheader.preheader
  %unroll_iter1203 = and i64 %29, 9223372036854775804
  br label %.preheader

.preheader:                                       ; preds = %.preheader, %.preheader.preheader.new
  %indvar755 = phi i64 [ 0, %.preheader.preheader.new ], [ %indvar.next756.3, %.preheader ]
  %niter1204 = phi i64 [ 0, %.preheader.preheader.new ], [ %niter1204.next.3, %.preheader ]
  %139 = mul i64 %137, %indvar755
  %scevgep757 = getelementptr i8, ptr %8, i64 %139
  %140 = sub nsw i64 %29, %indvar755
  %141 = shl i64 %140, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep757, i8 0, i64 %141, i1 false), !tbaa !13
  %indvar.next756 = or disjoint i64 %indvar755, 1
  %142 = mul i64 %137, %indvar.next756
  %scevgep757.1 = getelementptr i8, ptr %8, i64 %142
  %143 = sub nsw i64 %29, %indvar.next756
  %144 = shl i64 %143, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep757.1, i8 0, i64 %144, i1 false), !tbaa !13
  %indvar.next756.1 = or disjoint i64 %indvar755, 2
  %145 = mul i64 %137, %indvar.next756.1
  %scevgep757.2 = getelementptr i8, ptr %8, i64 %145
  %146 = sub nsw i64 %29, %indvar.next756.1
  %147 = shl i64 %146, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep757.2, i8 0, i64 %147, i1 false), !tbaa !13
  %indvar.next756.2 = or disjoint i64 %indvar755, 3
  %148 = mul i64 %137, %indvar.next756.2
  %scevgep757.3 = getelementptr i8, ptr %8, i64 %148
  %149 = sub nsw i64 %29, %indvar.next756.2
  %150 = shl i64 %149, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep757.3, i8 0, i64 %150, i1 false), !tbaa !13
  %indvar.next756.3 = add nuw nsw i64 %indvar755, 4
  %niter1204.next.3 = add i64 %niter1204, 4
  %niter1204.ncmp.3 = icmp eq i64 %niter1204.next.3, %unroll_iter1203
  br i1 %niter1204.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %.preheader, !llvm.loop !26

.preheader595.lr.ph:                              ; preds = %131, %132
  %151 = getelementptr i8, ptr %7, i64 4
  %152 = shl i64 %15, 3
  %153 = add i64 %152, 8
  %scevgep1143 = getelementptr i8, ptr %7, i64 8
  %invariant.gep1227 = getelementptr i8, ptr %8, i64 8
  br label %.preheader595

.preheader595:                                    ; preds = %.preheader595.lr.ph, %.loopexit1173
  %indvar1126 = phi i64 [ 0, %.preheader595.lr.ph ], [ %indvar.next1127, %.loopexit1173 ]
  %.3554706 = phi i64 [ 1, %.preheader595.lr.ph ], [ %193, %.loopexit1173 ]
  %smax1151 = tail call i64 @llvm.smax.i64(i64 %29, i64 %.3554706)
  %154 = sub i64 %smax1151, %indvar1126
  %155 = mul i64 %153, %indvar1126
  %scevgep1137 = getelementptr i8, ptr %8, i64 %155
  %156 = or disjoint i64 %155, 4
  %scevgep1138 = getelementptr i8, ptr %8, i64 %156
  %smax1139 = tail call i64 @llvm.smax.i64(i64 %29, i64 %.3554706)
  %157 = xor i64 %indvar1126, -1
  %158 = add i64 %smax1139, %157
  %159 = shl i64 %158, 3
  %scevgep1140 = getelementptr i8, ptr %scevgep1138, i64 %159
  %gep1228 = getelementptr i8, ptr %invariant.gep1227, i64 %155
  %scevgep1142 = getelementptr i8, ptr %gep1228, i64 %159
  %160 = mul nsw i64 %.3554706, %15
  %invariant.gep703 = getelementptr %struct.complex, ptr %17, i64 %160
  %min.iters.check1154 = icmp ult i64 %154, 8
  br i1 %min.iters.check1154, label %scalar.ph1153.preheader, label %vector.scevcheck1124

vector.scevcheck1124:                             ; preds = %.preheader595
  %161 = mul i64 %153, %indvar1126
  %162 = or disjoint i64 %161, 4
  %scevgep1132 = getelementptr i8, ptr %8, i64 %162
  %scevgep1128 = getelementptr i8, ptr %8, i64 %161
  %smax1125 = tail call i64 @llvm.smax.i64(i64 %29, i64 %.3554706)
  %163 = xor i64 %indvar1126, -1
  %164 = add i64 %smax1125, %163
  %mul.result1130 = shl i64 %164, 3
  %165 = getelementptr i8, ptr %scevgep1128, i64 %mul.result1130
  %166 = icmp ult ptr %165, %scevgep1128
  %mul.result1134 = shl i64 %164, 3
  %mul.overflow1135 = icmp ugt i64 %164, 2305843009213693951
  %167 = getelementptr i8, ptr %scevgep1132, i64 %mul.result1134
  %168 = icmp ult ptr %167, %scevgep1132
  %169 = or i1 %168, %mul.overflow1135
  %170 = or i1 %166, %169
  br i1 %170, label %scalar.ph1153.preheader, label %vector.memcheck1136

vector.memcheck1136:                              ; preds = %vector.scevcheck1124
  %bound01144 = icmp ult ptr %scevgep1137, %151
  %bound11145 = icmp ugt ptr %scevgep1140, %7
  %found.conflict1146 = and i1 %bound01144, %bound11145
  %bound01147 = icmp ult ptr %scevgep1138, %scevgep1143
  %bound11148 = icmp ult ptr %151, %scevgep1142
  %found.conflict1149 = and i1 %bound01147, %bound11148
  %conflict.rdx1150 = or i1 %found.conflict1146, %found.conflict1149
  br i1 %conflict.rdx1150, label %scalar.ph1153.preheader, label %vector.ph1155

vector.ph1155:                                    ; preds = %vector.memcheck1136
  %n.vec1157 = and i64 %154, -4
  %ind.end1158 = add i64 %.3554706, %n.vec1157
  %171 = getelementptr %struct.complex, ptr %invariant.gep703, i64 %.3554706
  br label %vector.body1160

vector.body1160:                                  ; preds = %vector.body1160, %vector.ph1155
  %index1161 = phi i64 [ 0, %vector.ph1155 ], [ %index.next1171, %vector.body1160 ]
  %172 = load float, ptr %7, align 4, !tbaa !9, !alias.scope !27
  %broadcast.splatinsert1168 = insertelement <4 x float> poison, float %172, i64 0
  %broadcast.splat1169 = shufflevector <4 x float> %broadcast.splatinsert1168, <4 x float> poison, <4 x i32> zeroinitializer
  %173 = getelementptr %struct.complex, ptr %171, i64 %index1161
  %wide.vec1163 = load <8 x float>, ptr %173, align 4, !tbaa !13
  %strided.vec1164 = shufflevector <8 x float> %wide.vec1163, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1165 = shufflevector <8 x float> %wide.vec1163, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %174 = load float, ptr %151, align 4, !tbaa !12, !alias.scope !30
  %broadcast.splatinsert1166 = insertelement <4 x float> poison, float %174, i64 0
  %broadcast.splat1167 = shufflevector <4 x float> %broadcast.splatinsert1166, <4 x float> poison, <4 x i32> zeroinitializer
  %175 = fneg <4 x float> %broadcast.splat1167
  %176 = fmul <4 x float> %strided.vec1165, %175
  %177 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1169, <4 x float> %strided.vec1164, <4 x float> %176)
  %178 = fmul <4 x float> %strided.vec1164, %broadcast.splat1167
  %179 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1169, <4 x float> %strided.vec1165, <4 x float> %178)
  %interleaved.vec1170 = shufflevector <4 x float> %177, <4 x float> %179, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1170, ptr %173, align 4, !tbaa !13
  %index.next1171 = add nuw i64 %index1161, 4
  %180 = icmp eq i64 %index.next1171, %n.vec1157
  br i1 %180, label %middle.block1152, label %vector.body1160, !llvm.loop !32

middle.block1152:                                 ; preds = %vector.body1160
  %cmp.n1172 = icmp eq i64 %154, %n.vec1157
  br i1 %cmp.n1172, label %.loopexit1173, label %scalar.ph1153.preheader

scalar.ph1153.preheader:                          ; preds = %middle.block1152, %vector.memcheck1136, %vector.scevcheck1124, %.preheader595
  %.3558702.ph = phi i64 [ %.3554706, %vector.memcheck1136 ], [ %.3554706, %vector.scevcheck1124 ], [ %.3554706, %.preheader595 ], [ %ind.end1158, %middle.block1152 ]
  br label %scalar.ph1153

scalar.ph1153:                                    ; preds = %scalar.ph1153.preheader, %scalar.ph1153
  %.3558702 = phi i64 [ %192, %scalar.ph1153 ], [ %.3558702.ph, %scalar.ph1153.preheader ]
  %181 = load float, ptr %7, align 4, !tbaa !9
  %gep704 = getelementptr %struct.complex, ptr %invariant.gep703, i64 %.3558702
  %182 = load float, ptr %151, align 4, !tbaa !12
  %183 = fneg float %182
  %184 = load <2 x float>, ptr %gep704, align 4, !tbaa !13
  %185 = insertelement <2 x float> poison, float %182, i64 0
  %186 = insertelement <2 x float> %185, float %183, i64 1
  %187 = fmul <2 x float> %184, %186
  %188 = shufflevector <2 x float> %187, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %189 = insertelement <2 x float> poison, float %181, i64 0
  %190 = shufflevector <2 x float> %189, <2 x float> poison, <2 x i32> zeroinitializer
  %191 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %190, <2 x float> %184, <2 x float> %188)
  store <2 x float> %191, ptr %gep704, align 4, !tbaa !13
  %192 = add nuw nsw i64 %.3558702, 1
  %.not586.not = icmp slt i64 %.3558702, %29
  br i1 %.not586.not, label %scalar.ph1153, label %.loopexit1173, !llvm.loop !33

.loopexit1173:                                    ; preds = %scalar.ph1153, %middle.block1152
  %193 = add i64 %.3554706, 1
  %exitcond754.not = icmp eq i64 %.3554706, %29
  %indvar.next1127 = add i64 %indvar1126, 1
  br i1 %exitcond754.not, label %.loopexit, label %.preheader595, !llvm.loop !34

194:                                              ; preds = %65, %64
  %195 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not568 = icmp eq i64 %195, 0
  %196 = load i64, ptr %2, align 8, !tbaa !5
  %.not569690 = icmp slt i64 %196, 1
  br i1 %.not568, label %466, label %197

197:                                              ; preds = %194
  br i1 %.not563, label %341, label %198

198:                                              ; preds = %197
  br i1 %.not569690, label %.loopexit, label %.lr.ph630

.lr.ph630:                                        ; preds = %198
  %199 = getelementptr i8, ptr %7, i64 4
  %200 = load i64, ptr %3, align 8, !tbaa !5
  %.not583625 = icmp slt i64 %200, 1
  %201 = getelementptr inbounds i8, ptr %4, i64 4
  %202 = shl i64 %15, 3
  %203 = shl i64 %15, 3
  %204 = shl i64 %15, 3
  %205 = add i64 %204, 8
  %206 = add i64 %200, 2305843009213693951
  %207 = mul i64 %12, %206
  %208 = shl i64 %207, 3
  %209 = or disjoint i64 %208, 4
  %scevgep820 = getelementptr i8, ptr %5, i64 4
  %210 = shl i64 %15, 3
  %211 = shl i64 %15, 3
  %212 = add i64 %211, 8
  %scevgep848 = getelementptr i8, ptr %7, i64 8
  %invariant.gep1209 = getelementptr i8, ptr %8, i64 8
  %213 = getelementptr i8, ptr %5, i64 %209
  %invariant.gep1211 = getelementptr i8, ptr %8, i64 8
  %214 = getelementptr i8, ptr %5, i64 %208
  %215 = getelementptr i8, ptr %214, i64 8
  %.mask = and i64 %12, 1152921504606846976
  %stride.check825 = icmp ne i64 %.mask, 0
  br label %216

216:                                              ; preds = %.lr.ph630, %._crit_edge
  %indvar = phi i64 [ 0, %.lr.ph630 ], [ %indvar.next, %._crit_edge ]
  %indvars.iv = phi i64 [ 2, %.lr.ph630 ], [ %indvars.iv.next, %._crit_edge ]
  %.4628 = phi i64 [ 1, %.lr.ph630 ], [ %340, %._crit_edge ]
  %217 = mul i64 %211, %indvar
  %scevgep844 = getelementptr i8, ptr %8, i64 %217
  %218 = mul i64 %212, %indvar
  %219 = or disjoint i64 %218, 4
  %scevgep845 = getelementptr i8, ptr %8, i64 %219
  %220 = or disjoint i64 %217, 4
  %scevgep846 = getelementptr i8, ptr %8, i64 %220
  %gep1210 = getelementptr i8, ptr %invariant.gep1209, i64 %218
  %221 = mul i64 %210, %indvar
  %scevgep835 = getelementptr i8, ptr %8, i64 %221
  %222 = or disjoint i64 %221, 4
  %scevgep839 = getelementptr i8, ptr %8, i64 %222
  %223 = mul i64 %204, %indvar
  %scevgep815 = getelementptr i8, ptr %8, i64 %223
  %224 = mul i64 %205, %indvar
  %225 = or disjoint i64 %224, 4
  %scevgep816 = getelementptr i8, ptr %8, i64 %225
  %226 = shl i64 %indvar, 3
  %scevgep817 = getelementptr i8, ptr %213, i64 %226
  %227 = or disjoint i64 %223, 4
  %scevgep818 = getelementptr i8, ptr %8, i64 %227
  %gep1212 = getelementptr i8, ptr %invariant.gep1211, i64 %224
  %scevgep821 = getelementptr i8, ptr %215, i64 %226
  %228 = mul i64 %203, %indvar
  %scevgep810 = getelementptr i8, ptr %8, i64 %228
  %229 = or disjoint i64 %228, 4
  %scevgep811 = getelementptr i8, ptr %8, i64 %229
  %230 = mul i64 %202, %indvar
  %scevgep = getelementptr i8, ptr %8, i64 %230
  %231 = shl i64 %indvar, 3
  %232 = add nuw i64 %231, 8
  %233 = load float, ptr %7, align 4, !tbaa !9
  %234 = fcmp oeq float %233, 0.000000e+00
  br i1 %234, label %235, label %238

235:                                              ; preds = %216
  %236 = load float, ptr %199, align 4, !tbaa !12
  %237 = fcmp oeq float %236, 0.000000e+00
  br i1 %237, label %.preheader612, label %238

.preheader612:                                    ; preds = %235
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %232, i1 false), !tbaa !13
  br label %.loopexit613

238:                                              ; preds = %235, %216
  %239 = fcmp une float %233, 1.000000e+00
  br i1 %239, label %243, label %240

240:                                              ; preds = %238
  %241 = load float, ptr %199, align 4, !tbaa !12
  %242 = fcmp une float %241, 0.000000e+00
  br i1 %242, label %243, label %.loopexit613

243:                                              ; preds = %240, %238
  %244 = mul nsw i64 %.4628, %15
  %invariant.gep = getelementptr %struct.complex, ptr %17, i64 %244
  %min.iters.check858 = icmp ult i64 %.4628, 8
  br i1 %min.iters.check858, label %scalar.ph857.preheader, label %vector.scevcheck834

vector.scevcheck834:                              ; preds = %243
  %mul.result837 = shl i64 %indvar, 3
  %245 = getelementptr i8, ptr %scevgep835, i64 %mul.result837
  %246 = icmp ult ptr %245, %scevgep835
  %mul.result841 = shl i64 %indvar, 3
  %mul.overflow842 = icmp ugt i64 %indvar, 2305843009213693951
  %247 = getelementptr i8, ptr %scevgep839, i64 %mul.result841
  %248 = icmp ult ptr %247, %scevgep839
  %249 = or i1 %248, %mul.overflow842
  %250 = or i1 %246, %249
  br i1 %250, label %scalar.ph857.preheader, label %vector.memcheck843

vector.memcheck843:                               ; preds = %vector.scevcheck834
  %bound0849 = icmp ult ptr %scevgep844, %199
  %bound1850 = icmp ugt ptr %scevgep845, %7
  %found.conflict851 = and i1 %bound0849, %bound1850
  %bound0852 = icmp ult ptr %scevgep846, %scevgep848
  %bound1853 = icmp ult ptr %199, %gep1210
  %found.conflict854 = and i1 %bound0852, %bound1853
  %conflict.rdx855 = or i1 %found.conflict851, %found.conflict854
  br i1 %conflict.rdx855, label %scalar.ph857.preheader, label %vector.ph859

vector.ph859:                                     ; preds = %vector.memcheck843
  %n.vec861 = and i64 %.4628, -4
  %ind.end862 = or disjoint i64 %n.vec861, 1
  br label %vector.body864

vector.body864:                                   ; preds = %vector.body864, %vector.ph859
  %index865 = phi i64 [ 0, %vector.ph859 ], [ %index.next875, %vector.body864 ]
  %offset.idx866 = or disjoint i64 %index865, 1
  %251 = load float, ptr %7, align 4, !tbaa !9, !alias.scope !35
  %broadcast.splatinsert872 = insertelement <4 x float> poison, float %251, i64 0
  %broadcast.splat873 = shufflevector <4 x float> %broadcast.splatinsert872, <4 x float> poison, <4 x i32> zeroinitializer
  %252 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx866
  %wide.vec867 = load <8 x float>, ptr %252, align 4, !tbaa !13
  %strided.vec868 = shufflevector <8 x float> %wide.vec867, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec869 = shufflevector <8 x float> %wide.vec867, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %253 = load float, ptr %199, align 4, !tbaa !12, !alias.scope !38
  %broadcast.splatinsert870 = insertelement <4 x float> poison, float %253, i64 0
  %broadcast.splat871 = shufflevector <4 x float> %broadcast.splatinsert870, <4 x float> poison, <4 x i32> zeroinitializer
  %254 = fneg <4 x float> %broadcast.splat871
  %255 = fmul <4 x float> %strided.vec869, %254
  %256 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat873, <4 x float> %strided.vec868, <4 x float> %255)
  %257 = fmul <4 x float> %strided.vec868, %broadcast.splat871
  %258 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat873, <4 x float> %strided.vec869, <4 x float> %257)
  %interleaved.vec874 = shufflevector <4 x float> %256, <4 x float> %258, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec874, ptr %252, align 4, !tbaa !13
  %index.next875 = add nuw i64 %index865, 4
  %259 = icmp eq i64 %index.next875, %n.vec861
  br i1 %259, label %middle.block856, label %vector.body864, !llvm.loop !40

middle.block856:                                  ; preds = %vector.body864
  %cmp.n876 = icmp eq i64 %.4628, %n.vec861
  br i1 %cmp.n876, label %.loopexit613, label %scalar.ph857.preheader

scalar.ph857.preheader:                           ; preds = %middle.block856, %vector.memcheck843, %vector.scevcheck834, %243
  %.5560616.ph = phi i64 [ 1, %vector.memcheck843 ], [ 1, %vector.scevcheck834 ], [ 1, %243 ], [ %ind.end862, %middle.block856 ]
  br label %scalar.ph857

scalar.ph857:                                     ; preds = %scalar.ph857.preheader, %scalar.ph857
  %.5560616 = phi i64 [ %271, %scalar.ph857 ], [ %.5560616.ph, %scalar.ph857.preheader ]
  %260 = load float, ptr %7, align 4, !tbaa !9
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.5560616
  %261 = load float, ptr %199, align 4, !tbaa !12
  %262 = fneg float %261
  %263 = load <2 x float>, ptr %gep, align 4, !tbaa !13
  %264 = insertelement <2 x float> poison, float %261, i64 0
  %265 = insertelement <2 x float> %264, float %262, i64 1
  %266 = fmul <2 x float> %263, %265
  %267 = shufflevector <2 x float> %266, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %268 = insertelement <2 x float> poison, float %260, i64 0
  %269 = shufflevector <2 x float> %268, <2 x float> poison, <2 x i32> zeroinitializer
  %270 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %269, <2 x float> %263, <2 x float> %267)
  store <2 x float> %270, ptr %gep, align 4, !tbaa !13
  %271 = add nuw i64 %.5560616, 1
  %exitcond.not = icmp eq i64 %271, %indvars.iv
  br i1 %exitcond.not, label %.loopexit613, label %scalar.ph857, !llvm.loop !41

.loopexit613:                                     ; preds = %scalar.ph857, %middle.block856, %.preheader612, %240
  br i1 %.not583625, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.loopexit613
  %272 = getelementptr %struct.complex, ptr %14, i64 %.4628
  %273 = mul nsw i64 %.4628, %15
  %invariant.gep622 = getelementptr %struct.complex, ptr %17, i64 %273
  %min.iters.check = icmp ult i64 %.4628, 8
  %mul.result = shl i64 %indvar, 3
  %274 = getelementptr i8, ptr %scevgep810, i64 %mul.result
  %275 = icmp ult ptr %274, %scevgep810
  %mul.result813 = shl i64 %indvar, 3
  %mul.overflow814 = icmp ugt i64 %indvar, 2305843009213693951
  %276 = getelementptr i8, ptr %scevgep811, i64 %mul.result813
  %277 = icmp ult ptr %276, %scevgep811
  %278 = or i1 %277, %mul.overflow814
  %279 = or i1 %275, %278
  %bound0 = icmp ult ptr %scevgep815, %scevgep817
  %bound1 = icmp ugt ptr %scevgep816, %5
  %found.conflict = and i1 %bound0, %bound1
  %bound0822 = icmp ult ptr %scevgep818, %scevgep821
  %bound1823 = icmp ult ptr %scevgep820, %gep1212
  %found.conflict824 = and i1 %bound0822, %bound1823
  %280 = or i1 %found.conflict824, %stride.check825
  %conflict.rdx = or i1 %found.conflict, %280
  %n.vec = and i64 %.4628, -4
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %.4628, %n.vec
  %281 = and i64 %indvars.iv, 1
  %lcmp.mod.not.not = icmp eq i64 %281, 0
  br label %282

282:                                              ; preds = %.lr.ph, %.loopexit611
  %.0550626 = phi i64 [ 1, %.lr.ph ], [ %339, %.loopexit611 ]
  %283 = mul nsw i64 %.0550626, %12
  %284 = getelementptr %struct.complex, ptr %272, i64 %283
  %285 = load float, ptr %284, align 4, !tbaa !9
  %286 = fcmp une float %285, 0.000000e+00
  %.phi.trans.insert = getelementptr inbounds i8, ptr %284, i64 4
  %.pre = load float, ptr %.phi.trans.insert, align 4, !tbaa !12
  %287 = fcmp une float %.pre, 0.000000e+00
  %or.cond780 = select i1 %286, i1 true, i1 %287
  br i1 %or.cond780, label %._crit_edge759, label %.loopexit611

._crit_edge759:                                   ; preds = %282
  %288 = load float, ptr %4, align 4, !tbaa !9
  %289 = load float, ptr %201, align 4, !tbaa !12
  %290 = fneg float %289
  %291 = fmul float %.pre, %290
  %292 = tail call float @llvm.fmuladd.f32(float %288, float %285, float %291)
  %293 = fmul float %285, %289
  %294 = tail call float @llvm.fmuladd.f32(float %288, float %.pre, float %293)
  %invariant.gep620 = getelementptr %struct.complex, ptr %14, i64 %283
  %295 = fneg float %294
  %brmerge = select i1 %min.iters.check, i1 true, i1 %279
  %brmerge1229 = select i1 %brmerge, i1 true, i1 %conflict.rdx
  br i1 %brmerge1229, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %._crit_edge759
  %broadcast.splatinsert = insertelement <4 x float> poison, float %295, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert827 = insertelement <4 x float> poison, float %292, i64 0
  %broadcast.splat828 = shufflevector <4 x float> %broadcast.splatinsert827, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert829 = insertelement <4 x float> poison, float %294, i64 0
  %broadcast.splat830 = shufflevector <4 x float> %broadcast.splatinsert829, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %296 = getelementptr %struct.complex, ptr %invariant.gep620, i64 %offset.idx
  %wide.vec = load <8 x float>, ptr %296, align 4, !tbaa !13
  %strided.vec = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec826 = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %297 = fmul <4 x float> %strided.vec826, %broadcast.splat
  %298 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat828, <4 x float> %strided.vec, <4 x float> %297)
  %299 = fmul <4 x float> %broadcast.splat830, %strided.vec
  %300 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat828, <4 x float> %strided.vec826, <4 x float> %299)
  %301 = getelementptr %struct.complex, ptr %invariant.gep622, i64 %offset.idx
  %wide.vec831 = load <8 x float>, ptr %301, align 4, !tbaa !13
  %strided.vec832 = shufflevector <8 x float> %wide.vec831, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec833 = shufflevector <8 x float> %wide.vec831, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %302 = fadd <4 x float> %strided.vec832, %298
  %303 = fadd <4 x float> %300, %strided.vec833
  %interleaved.vec = shufflevector <4 x float> %302, <4 x float> %303, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec, ptr %301, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 4
  %304 = icmp eq i64 %index.next, %n.vec
  br i1 %304, label %middle.block, label %vector.body, !llvm.loop !42

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.loopexit611, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %._crit_edge759, %middle.block
  %.6561624.ph = phi i64 [ 1, %._crit_edge759 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod.not.not, label %scalar.ph.prol, label %scalar.ph.prol.loopexit

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep621.prol = getelementptr %struct.complex, ptr %invariant.gep620, i64 %.6561624.ph
  %gep623.prol = getelementptr %struct.complex, ptr %invariant.gep622, i64 %.6561624.ph
  %305 = load <2 x float>, ptr %gep621.prol, align 4, !tbaa !13
  %306 = insertelement <2 x float> poison, float %294, i64 0
  %307 = insertelement <2 x float> %306, float %295, i64 1
  %308 = fmul <2 x float> %305, %307
  %309 = shufflevector <2 x float> %308, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %310 = insertelement <2 x float> poison, float %292, i64 0
  %311 = shufflevector <2 x float> %310, <2 x float> poison, <2 x i32> zeroinitializer
  %312 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %311, <2 x float> %305, <2 x float> %309)
  %313 = load <2 x float>, ptr %gep623.prol, align 4, !tbaa !13
  %314 = fadd <2 x float> %313, %312
  store <2 x float> %314, ptr %gep623.prol, align 4, !tbaa !13
  %315 = add nuw i64 %.6561624.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.6561624.unr = phi i64 [ %.6561624.ph, %scalar.ph.preheader ], [ %315, %scalar.ph.prol ]
  %316 = icmp eq i64 %.4628, %.6561624.ph
  br i1 %316, label %.loopexit611, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %317 = insertelement <2 x float> poison, float %294, i64 0
  %318 = insertelement <2 x float> %317, float %295, i64 1
  %319 = insertelement <2 x float> poison, float %292, i64 0
  %320 = shufflevector <2 x float> %319, <2 x float> poison, <2 x i32> zeroinitializer
  %321 = insertelement <2 x float> poison, float %294, i64 0
  %322 = insertelement <2 x float> %321, float %295, i64 1
  %323 = insertelement <2 x float> poison, float %292, i64 0
  %324 = shufflevector <2 x float> %323, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.6561624 = phi i64 [ %.6561624.unr, %scalar.ph.preheader.new ], [ %338, %scalar.ph ]
  %gep621 = getelementptr %struct.complex, ptr %invariant.gep620, i64 %.6561624
  %gep623 = getelementptr %struct.complex, ptr %invariant.gep622, i64 %.6561624
  %325 = load <2 x float>, ptr %gep621, align 4, !tbaa !13
  %326 = fmul <2 x float> %325, %318
  %327 = shufflevector <2 x float> %326, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %328 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %320, <2 x float> %325, <2 x float> %327)
  %329 = load <2 x float>, ptr %gep623, align 4, !tbaa !13
  %330 = fadd <2 x float> %329, %328
  store <2 x float> %330, ptr %gep623, align 4, !tbaa !13
  %331 = add nuw i64 %.6561624, 1
  %gep621.1 = getelementptr %struct.complex, ptr %invariant.gep620, i64 %331
  %gep623.1 = getelementptr %struct.complex, ptr %invariant.gep622, i64 %331
  %332 = load <2 x float>, ptr %gep621.1, align 4, !tbaa !13
  %333 = fmul <2 x float> %332, %322
  %334 = shufflevector <2 x float> %333, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %335 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %324, <2 x float> %332, <2 x float> %334)
  %336 = load <2 x float>, ptr %gep623.1, align 4, !tbaa !13
  %337 = fadd <2 x float> %336, %335
  store <2 x float> %337, ptr %gep623.1, align 4, !tbaa !13
  %338 = add nuw i64 %.6561624, 2
  %exitcond726.not.1 = icmp eq i64 %338, %indvars.iv
  br i1 %exitcond726.not.1, label %.loopexit611, label %scalar.ph, !llvm.loop !43

.loopexit611:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %282
  %339 = add nuw i64 %.0550626, 1
  %exitcond727.not = icmp eq i64 %.0550626, %200
  br i1 %exitcond727.not, label %._crit_edge, label %282, !llvm.loop !44

._crit_edge:                                      ; preds = %.loopexit611, %.loopexit613
  %340 = add nuw i64 %.4628, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond728.not = icmp eq i64 %indvar.next, %196
  br i1 %exitcond728.not, label %.loopexit, label %216, !llvm.loop !45

341:                                              ; preds = %197
  br i1 %.not569690, label %.loopexit, label %.lr.ph658

.lr.ph658:                                        ; preds = %341
  %342 = getelementptr i8, ptr %7, i64 4
  %343 = load i64, ptr %3, align 8, !tbaa !5
  %.not578650 = icmp slt i64 %343, 1
  %344 = getelementptr inbounds i8, ptr %4, i64 4
  %345 = shl i64 %15, 3
  %346 = add i64 %345, 8
  %347 = add i64 %343, 2305843009213693951
  %348 = mul i64 %12, %347
  %349 = shl i64 %348, 3
  %350 = or disjoint i64 %349, 4
  %351 = shl i64 %15, 3
  %352 = add i64 %351, 8
  %scevgep952 = getelementptr i8, ptr %7, i64 8
  %invariant.gep1213 = getelementptr i8, ptr %8, i64 8
  %353 = getelementptr i8, ptr %5, i64 %350
  %invariant.gep1215 = getelementptr i8, ptr %8, i64 8
  %354 = getelementptr i8, ptr %5, i64 %349
  %355 = getelementptr i8, ptr %354, i64 8
  %.mask1175 = and i64 %12, 1152921504606846976
  %stride.check906 = icmp ne i64 %.mask1175, 0
  br label %356

356:                                              ; preds = %.lr.ph658, %._crit_edge654
  %indvar729 = phi i64 [ 0, %.lr.ph658 ], [ %indvar.next730, %._crit_edge654 ]
  %.5656 = phi i64 [ 1, %.lr.ph658 ], [ %465, %._crit_edge654 ]
  %smax960 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.5656)
  %357 = sub nsw i64 %smax960, %indvar729
  %358 = mul i64 %352, %indvar729
  %scevgep946 = getelementptr i8, ptr %8, i64 %358
  %359 = or disjoint i64 %358, 4
  %scevgep947 = getelementptr i8, ptr %8, i64 %359
  %smax948 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.5656)
  %360 = xor i64 %indvar729, -1
  %361 = add nsw i64 %smax948, %360
  %362 = shl i64 %361, 3
  %scevgep949 = getelementptr i8, ptr %scevgep947, i64 %362
  %gep1214 = getelementptr i8, ptr %invariant.gep1213, i64 %358
  %scevgep951 = getelementptr i8, ptr %gep1214, i64 %362
  %smax936 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.5656)
  %363 = xor i64 %indvar729, -1
  %364 = add nsw i64 %smax936, %363
  %365 = mul i64 %352, %indvar729
  %scevgep937 = getelementptr i8, ptr %8, i64 %365
  %366 = or disjoint i64 %365, 4
  %scevgep941 = getelementptr i8, ptr %8, i64 %366
  %smax908 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.5656)
  %367 = sub nsw i64 %smax908, %indvar729
  %368 = mul i64 %346, %indvar729
  %scevgep887 = getelementptr i8, ptr %8, i64 %368
  %369 = or disjoint i64 %368, 4
  %scevgep888 = getelementptr i8, ptr %8, i64 %369
  %smax889 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.5656)
  %370 = xor i64 %indvar729, -1
  %371 = add nsw i64 %smax889, %370
  %372 = shl i64 %371, 3
  %scevgep890 = getelementptr i8, ptr %scevgep888, i64 %372
  %373 = shl i64 %indvar729, 3
  %scevgep891 = getelementptr i8, ptr %5, i64 %373
  %scevgep892 = getelementptr i8, ptr %353, i64 %373
  %scevgep893 = getelementptr i8, ptr %scevgep892, i64 %372
  %gep1216 = getelementptr i8, ptr %invariant.gep1215, i64 %368
  %scevgep895 = getelementptr i8, ptr %gep1216, i64 %372
  %374 = or disjoint i64 %373, 4
  %scevgep896 = getelementptr i8, ptr %5, i64 %374
  %scevgep897 = getelementptr i8, ptr %355, i64 %373
  %scevgep898 = getelementptr i8, ptr %scevgep897, i64 %372
  %smax = tail call i64 @llvm.smax.i64(i64 %196, i64 %.5656)
  %375 = xor i64 %indvar729, -1
  %376 = add nsw i64 %smax, %375
  %377 = mul i64 %346, %indvar729
  %scevgep878 = getelementptr i8, ptr %8, i64 %377
  %378 = or disjoint i64 %377, 4
  %scevgep882 = getelementptr i8, ptr %8, i64 %378
  %379 = mul i64 %346, %indvar729
  %scevgep731 = getelementptr i8, ptr %8, i64 %379
  %380 = sub nsw i64 %196, %indvar729
  %381 = shl i64 %380, 3
  %382 = load float, ptr %7, align 4, !tbaa !9
  %383 = fcmp oeq float %382, 0.000000e+00
  br i1 %383, label %384, label %387

384:                                              ; preds = %356
  %385 = load float, ptr %342, align 4, !tbaa !12
  %386 = fcmp oeq float %385, 0.000000e+00
  br i1 %386, label %.lr.ph639, label %387

.lr.ph639:                                        ; preds = %384
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep731, i8 0, i64 %381, i1 false), !tbaa !13
  br label %.loopexit608

387:                                              ; preds = %384, %356
  %388 = fcmp une float %382, 1.000000e+00
  br i1 %388, label %.lr.ph634, label %389

389:                                              ; preds = %387
  %390 = load float, ptr %342, align 4, !tbaa !12
  %391 = fcmp oeq float %390, 0.000000e+00
  br i1 %391, label %.loopexit608, label %.lr.ph634

.lr.ph634:                                        ; preds = %387, %389
  %392 = mul nsw i64 %.5656, %15
  %invariant.gep635 = getelementptr %struct.complex, ptr %17, i64 %392
  %min.iters.check963 = icmp ult i64 %357, 8
  br i1 %min.iters.check963, label %scalar.ph962.preheader, label %vector.scevcheck935

vector.scevcheck935:                              ; preds = %.lr.ph634
  %mul.result939 = shl i64 %364, 3
  %393 = getelementptr i8, ptr %scevgep937, i64 %mul.result939
  %394 = icmp ult ptr %393, %scevgep937
  %mul.result943 = shl i64 %364, 3
  %mul.overflow944 = icmp ugt i64 %364, 2305843009213693951
  %395 = getelementptr i8, ptr %scevgep941, i64 %mul.result943
  %396 = icmp ult ptr %395, %scevgep941
  %397 = or i1 %396, %mul.overflow944
  %398 = or i1 %394, %397
  br i1 %398, label %scalar.ph962.preheader, label %vector.memcheck945

vector.memcheck945:                               ; preds = %vector.scevcheck935
  %bound0953 = icmp ult ptr %scevgep946, %342
  %bound1954 = icmp ugt ptr %scevgep949, %7
  %found.conflict955 = and i1 %bound0953, %bound1954
  %bound0956 = icmp ult ptr %scevgep947, %scevgep952
  %bound1957 = icmp ult ptr %342, %scevgep951
  %found.conflict958 = and i1 %bound0956, %bound1957
  %conflict.rdx959 = or i1 %found.conflict955, %found.conflict958
  br i1 %conflict.rdx959, label %scalar.ph962.preheader, label %vector.ph964

vector.ph964:                                     ; preds = %vector.memcheck945
  %n.vec966 = and i64 %357, -4
  %ind.end967 = add i64 %.5656, %n.vec966
  %399 = getelementptr %struct.complex, ptr %invariant.gep635, i64 %.5656
  br label %vector.body969

vector.body969:                                   ; preds = %vector.body969, %vector.ph964
  %index970 = phi i64 [ 0, %vector.ph964 ], [ %index.next980, %vector.body969 ]
  %400 = load float, ptr %7, align 4, !tbaa !9, !alias.scope !46
  %broadcast.splatinsert977 = insertelement <4 x float> poison, float %400, i64 0
  %broadcast.splat978 = shufflevector <4 x float> %broadcast.splatinsert977, <4 x float> poison, <4 x i32> zeroinitializer
  %401 = getelementptr %struct.complex, ptr %399, i64 %index970
  %wide.vec972 = load <8 x float>, ptr %401, align 4, !tbaa !13
  %strided.vec973 = shufflevector <8 x float> %wide.vec972, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec974 = shufflevector <8 x float> %wide.vec972, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %402 = load float, ptr %342, align 4, !tbaa !12, !alias.scope !49
  %broadcast.splatinsert975 = insertelement <4 x float> poison, float %402, i64 0
  %broadcast.splat976 = shufflevector <4 x float> %broadcast.splatinsert975, <4 x float> poison, <4 x i32> zeroinitializer
  %403 = fneg <4 x float> %broadcast.splat976
  %404 = fmul <4 x float> %strided.vec974, %403
  %405 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat978, <4 x float> %strided.vec973, <4 x float> %404)
  %406 = fmul <4 x float> %strided.vec973, %broadcast.splat976
  %407 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat978, <4 x float> %strided.vec974, <4 x float> %406)
  %interleaved.vec979 = shufflevector <4 x float> %405, <4 x float> %407, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec979, ptr %401, align 4, !tbaa !13
  %index.next980 = add nuw i64 %index970, 4
  %408 = icmp eq i64 %index.next980, %n.vec966
  br i1 %408, label %middle.block961, label %vector.body969, !llvm.loop !51

middle.block961:                                  ; preds = %vector.body969
  %cmp.n981 = icmp eq i64 %357, %n.vec966
  br i1 %cmp.n981, label %.loopexit608, label %scalar.ph962.preheader

scalar.ph962.preheader:                           ; preds = %middle.block961, %vector.memcheck945, %vector.scevcheck935, %.lr.ph634
  %.8632.ph = phi i64 [ %.5656, %vector.memcheck945 ], [ %.5656, %vector.scevcheck935 ], [ %.5656, %.lr.ph634 ], [ %ind.end967, %middle.block961 ]
  br label %scalar.ph962

scalar.ph962:                                     ; preds = %scalar.ph962.preheader, %scalar.ph962
  %.8632 = phi i64 [ %420, %scalar.ph962 ], [ %.8632.ph, %scalar.ph962.preheader ]
  %409 = load float, ptr %7, align 4, !tbaa !9
  %gep636 = getelementptr %struct.complex, ptr %invariant.gep635, i64 %.8632
  %410 = load float, ptr %342, align 4, !tbaa !12
  %411 = fneg float %410
  %412 = load <2 x float>, ptr %gep636, align 4, !tbaa !13
  %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 %gep636, align 4, !tbaa !13
  %420 = add nuw nsw i64 %.8632, 1
  %.not576.not = icmp slt i64 %.8632, %196
  br i1 %.not576.not, label %scalar.ph962, label %.loopexit608, !llvm.loop !52

.loopexit608:                                     ; preds = %scalar.ph962, %middle.block961, %.lr.ph639, %389
  br i1 %.not578650, label %._crit_edge654, label %.lr.ph653

.lr.ph653:                                        ; preds = %.loopexit608
  %421 = getelementptr %struct.complex, ptr %14, i64 %.5656
  %422 = mul nsw i64 %.5656, %15
  %invariant.gep648 = getelementptr %struct.complex, ptr %17, i64 %422
  %min.iters.check911 = icmp ult i64 %367, 8
  %mul.result880 = shl i64 %376, 3
  %423 = getelementptr i8, ptr %scevgep878, i64 %mul.result880
  %424 = icmp ult ptr %423, %scevgep878
  %mul.result884 = shl i64 %376, 3
  %mul.overflow885 = icmp ugt i64 %376, 2305843009213693951
  %425 = getelementptr i8, ptr %scevgep882, i64 %mul.result884
  %426 = icmp ult ptr %425, %scevgep882
  %427 = or i1 %426, %mul.overflow885
  %428 = or i1 %424, %427
  %bound0899 = icmp ult ptr %scevgep887, %scevgep893
  %bound1900 = icmp ult ptr %scevgep891, %scevgep890
  %found.conflict901 = and i1 %bound0899, %bound1900
  %bound0903 = icmp ult ptr %scevgep888, %scevgep898
  %bound1904 = icmp ult ptr %scevgep896, %scevgep895
  %found.conflict905 = and i1 %bound0903, %bound1904
  %429 = or i1 %found.conflict905, %stride.check906
  %conflict.rdx907 = or i1 %found.conflict901, %429
  %n.vec914 = and i64 %367, -4
  %ind.end915 = add i64 %.5656, %n.vec914
  %cmp.n934 = icmp eq i64 %367, %n.vec914
  br label %430

430:                                              ; preds = %.lr.ph653, %.loopexit606
  %.1651 = phi i64 [ 1, %.lr.ph653 ], [ %464, %.loopexit606 ]
  %431 = mul nsw i64 %.1651, %12
  %432 = getelementptr %struct.complex, ptr %421, i64 %431
  %433 = load float, ptr %432, align 4, !tbaa !9
  %434 = fcmp une float %433, 0.000000e+00
  %.phi.trans.insert761 = getelementptr inbounds i8, ptr %432, i64 4
  %.pre762 = load float, ptr %.phi.trans.insert761, align 4, !tbaa !12
  %435 = fcmp une float %.pre762, 0.000000e+00
  %or.cond782 = select i1 %434, i1 true, i1 %435
  br i1 %or.cond782, label %.lr.ph647, label %.loopexit606

.lr.ph647:                                        ; preds = %430
  %436 = load float, ptr %4, align 4, !tbaa !9
  %437 = load float, ptr %344, align 4, !tbaa !12
  %438 = fneg float %437
  %439 = fmul float %.pre762, %438
  %440 = tail call float @llvm.fmuladd.f32(float %436, float %433, float %439)
  %441 = fmul float %433, %437
  %442 = tail call float @llvm.fmuladd.f32(float %436, float %.pre762, float %441)
  %invariant.gep642 = getelementptr %struct.complex, ptr %14, i64 %431
  %443 = fneg float %442
  %brmerge1230 = select i1 %min.iters.check911, i1 true, i1 %428
  %brmerge1231 = select i1 %brmerge1230, i1 true, i1 %conflict.rdx907
  br i1 %brmerge1231, label %scalar.ph910.preheader, label %vector.ph912

vector.ph912:                                     ; preds = %.lr.ph647
  %broadcast.splatinsert923 = insertelement <4 x float> poison, float %443, i64 0
  %broadcast.splat924 = shufflevector <4 x float> %broadcast.splatinsert923, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert925 = insertelement <4 x float> poison, float %440, i64 0
  %broadcast.splat926 = shufflevector <4 x float> %broadcast.splatinsert925, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert927 = insertelement <4 x float> poison, float %442, i64 0
  %broadcast.splat928 = shufflevector <4 x float> %broadcast.splatinsert927, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body917

vector.body917:                                   ; preds = %vector.body917, %vector.ph912
  %index918 = phi i64 [ 0, %vector.ph912 ], [ %index.next933, %vector.body917 ]
  %offset.idx919 = add i64 %.5656, %index918
  %444 = getelementptr %struct.complex, ptr %invariant.gep642, i64 %offset.idx919
  %wide.vec920 = load <8 x float>, ptr %444, align 4, !tbaa !13
  %strided.vec921 = shufflevector <8 x float> %wide.vec920, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec922 = shufflevector <8 x float> %wide.vec920, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %445 = fmul <4 x float> %strided.vec922, %broadcast.splat924
  %446 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat926, <4 x float> %strided.vec921, <4 x float> %445)
  %447 = fmul <4 x float> %broadcast.splat928, %strided.vec921
  %448 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat926, <4 x float> %strided.vec922, <4 x float> %447)
  %449 = getelementptr %struct.complex, ptr %invariant.gep648, i64 %offset.idx919
  %wide.vec929 = load <8 x float>, ptr %449, align 4, !tbaa !13
  %strided.vec930 = shufflevector <8 x float> %wide.vec929, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec931 = shufflevector <8 x float> %wide.vec929, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %450 = fadd <4 x float> %strided.vec930, %446
  %451 = fadd <4 x float> %448, %strided.vec931
  %interleaved.vec932 = shufflevector <4 x float> %450, <4 x float> %451, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec932, ptr %449, align 4, !tbaa !13
  %index.next933 = add nuw i64 %index918, 4
  %452 = icmp eq i64 %index.next933, %n.vec914
  br i1 %452, label %middle.block909, label %vector.body917, !llvm.loop !53

middle.block909:                                  ; preds = %vector.body917
  br i1 %cmp.n934, label %.loopexit606, label %scalar.ph910.preheader

scalar.ph910.preheader:                           ; preds = %.lr.ph647, %middle.block909
  %.9645.ph = phi i64 [ %.5656, %.lr.ph647 ], [ %ind.end915, %middle.block909 ]
  %453 = insertelement <2 x float> poison, float %442, i64 0
  %454 = insertelement <2 x float> %453, float %443, i64 1
  %455 = insertelement <2 x float> poison, float %440, i64 0
  %456 = shufflevector <2 x float> %455, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph910

scalar.ph910:                                     ; preds = %scalar.ph910.preheader, %scalar.ph910
  %.9645 = phi i64 [ %463, %scalar.ph910 ], [ %.9645.ph, %scalar.ph910.preheader ]
  %gep643 = getelementptr %struct.complex, ptr %invariant.gep642, i64 %.9645
  %gep649 = getelementptr %struct.complex, ptr %invariant.gep648, i64 %.9645
  %457 = load <2 x float>, ptr %gep643, align 4, !tbaa !13
  %458 = fmul <2 x float> %457, %454
  %459 = shufflevector <2 x float> %458, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %460 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %456, <2 x float> %457, <2 x float> %459)
  %461 = load <2 x float>, ptr %gep649, align 4, !tbaa !13
  %462 = fadd <2 x float> %461, %460
  store <2 x float> %462, ptr %gep649, align 4, !tbaa !13
  %463 = add nuw nsw i64 %.9645, 1
  %.not579.not = icmp slt i64 %.9645, %196
  br i1 %.not579.not, label %scalar.ph910, label %.loopexit606, !llvm.loop !54

.loopexit606:                                     ; preds = %scalar.ph910, %middle.block909, %430
  %464 = add nuw i64 %.1651, 1
  %exitcond732.not = icmp eq i64 %.1651, %343
  br i1 %exitcond732.not, label %._crit_edge654, label %430, !llvm.loop !55

._crit_edge654:                                   ; preds = %.loopexit606, %.loopexit608
  %465 = add nuw i64 %.5656, 1
  %indvar.next730 = add nuw nsw i64 %indvar729, 1
  %exitcond733.not = icmp eq i64 %indvar.next730, %196
  br i1 %exitcond733.not, label %.loopexit, label %356, !llvm.loop !56

466:                                              ; preds = %194
  br i1 %.not563, label %639, label %467

467:                                              ; preds = %466
  br i1 %.not569690, label %.loopexit, label %.preheader604.lr.ph

.preheader604.lr.ph:                              ; preds = %467
  %468 = load i64, ptr %3, align 8, !tbaa !5
  %.not574659 = icmp slt i64 %468, 1
  %469 = getelementptr inbounds i8, ptr %7, i64 4
  %470 = getelementptr inbounds i8, ptr %4, i64 4
  %471 = add nuw i64 %196, 1
  br i1 %.not574659, label %.preheader604.us.preheader, label %.preheader604.preheader

.preheader604.preheader:                          ; preds = %.preheader604.lr.ph
  %xtraiter1186 = and i64 %468, 1
  %472 = icmp eq i64 %468, 1
  %unroll_iter = and i64 %468, 9223372036854775806
  %invariant.gep1217 = getelementptr i8, ptr %14, i64 8
  %lcmp.mod1187.not = icmp eq i64 %xtraiter1186, 0
  br label %.preheader604

.preheader604.us.preheader:                       ; preds = %.preheader604.lr.ph
  %473 = shl i64 %15, 3
  %474 = shl i64 %15, 3
  %475 = add i64 %474, 8
  %scevgep996 = getelementptr i8, ptr %7, i64 8
  %scevgep997 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1219 = getelementptr i8, ptr %8, i64 8
  br label %.preheader604.us

.preheader604.us:                                 ; preds = %.preheader604.us.preheader, %.split.us.us
  %indvar983 = phi i64 [ 0, %.preheader604.us.preheader ], [ %indvar.next984, %.split.us.us ]
  %indvars.iv739 = phi i64 [ 2, %.preheader604.us.preheader ], [ %indvars.iv.next740, %.split.us.us ]
  %.6673.us = phi i64 [ 1, %.preheader604.us.preheader ], [ %558, %.split.us.us ]
  %476 = mul i64 %474, %indvar983
  %scevgep994 = getelementptr i8, ptr %8, i64 %476
  %477 = mul i64 %475, %indvar983
  %gep1220 = getelementptr i8, ptr %invariant.gep1219, i64 %477
  %478 = mul nsw i64 %.6673.us, %15
  %invariant.gep668.us = getelementptr %struct.complex, ptr %17, i64 %478
  %min.iters.check1007 = icmp ult i64 %.6673.us, 8
  br i1 %min.iters.check1007, label %scalar.ph1006.preheader, label %vector.scevcheck982

vector.scevcheck982:                              ; preds = %.preheader604.us
  %479 = mul i64 %473, %indvar983
  %scevgep989 = getelementptr i8, ptr %8, i64 %479
  %480 = or disjoint i64 %479, 4
  %scevgep985 = getelementptr i8, ptr %8, i64 %480
  %mul.result987 = shl i64 %indvar983, 3
  %481 = getelementptr i8, ptr %scevgep985, i64 %mul.result987
  %482 = icmp ult ptr %481, %scevgep985
  %mul.result991 = shl i64 %indvar983, 3
  %mul.overflow992 = icmp ugt i64 %indvar983, 2305843009213693951
  %483 = getelementptr i8, ptr %scevgep989, i64 %mul.result991
  %484 = icmp ult ptr %483, %scevgep989
  %485 = or i1 %484, %mul.overflow992
  %486 = or i1 %482, %485
  br i1 %486, label %scalar.ph1006.preheader, label %vector.memcheck993

vector.memcheck993:                               ; preds = %vector.scevcheck982
  %bound0998 = icmp ult ptr %scevgep994, %scevgep996
  %bound1999 = icmp ugt ptr %gep1220, %7
  %found.conflict1000 = and i1 %bound0998, %bound1999
  %bound01001 = icmp ult ptr %scevgep994, %scevgep997
  %bound11002 = icmp ugt ptr %gep1220, %4
  %found.conflict1003 = and i1 %bound01001, %bound11002
  %conflict.rdx1004 = or i1 %found.conflict1000, %found.conflict1003
  br i1 %conflict.rdx1004, label %scalar.ph1006.preheader, label %vector.ph1008

vector.ph1008:                                    ; preds = %vector.memcheck993
  %n.vec1010 = and i64 %.6673.us, -4
  %ind.end1011 = or disjoint i64 %n.vec1010, 1
  br label %vector.body1013

vector.body1013:                                  ; preds = %vector.body1013, %vector.ph1008
  %index1014 = phi i64 [ 0, %vector.ph1008 ], [ %index.next1026, %vector.body1013 ]
  %offset.idx1015 = or disjoint i64 %index1014, 1
  %487 = or disjoint i64 %index1014, 2
  %488 = or disjoint i64 %index1014, 3
  %489 = load float, ptr %7, align 4, !tbaa !9, !alias.scope !57
  %broadcast.splatinsert1016 = insertelement <4 x float> poison, float %489, i64 0
  %broadcast.splat1017 = shufflevector <4 x float> %broadcast.splatinsert1016, <4 x float> poison, <4 x i32> zeroinitializer
  %490 = fcmp oeq <4 x float> %broadcast.splat1017, zeroinitializer
  %491 = load float, ptr %469, align 4, !tbaa !12, !alias.scope !57
  %broadcast.splatinsert1018 = insertelement <4 x float> poison, float %491, i64 0
  %broadcast.splat1019 = shufflevector <4 x float> %broadcast.splatinsert1018, <4 x float> poison, <4 x i32> zeroinitializer
  %492 = fcmp oeq <4 x float> %broadcast.splat1019, zeroinitializer
  %493 = select <4 x i1> %490, <4 x i1> %492, <4 x i1> zeroinitializer
  %494 = load float, ptr %4, align 4, !tbaa !9, !alias.scope !60
  %broadcast.splatinsert1022 = insertelement <4 x float> poison, float %494, i64 0
  %broadcast.splat1023 = shufflevector <4 x float> %broadcast.splatinsert1022, <4 x float> poison, <4 x i32> zeroinitializer
  %495 = load float, ptr %470, align 4, !tbaa !12, !alias.scope !60
  %broadcast.splatinsert1020 = insertelement <4 x float> poison, float %495, i64 0
  %broadcast.splat1021 = shufflevector <4 x float> %broadcast.splatinsert1020, <4 x float> poison, <4 x i32> zeroinitializer
  %496 = fmul <4 x float> %broadcast.splat1021, <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>
  %497 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1023, <4 x float> zeroinitializer, <4 x float> %496)
  %498 = fmul <4 x float> %broadcast.splat1021, zeroinitializer
  %499 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1023, <4 x float> zeroinitializer, <4 x float> %498)
  %500 = getelementptr %struct.complex, ptr %invariant.gep668.us, i64 %offset.idx1015
  %501 = getelementptr %struct.complex, ptr %invariant.gep668.us, i64 %487
  %502 = getelementptr %struct.complex, ptr %invariant.gep668.us, i64 %488
  %503 = getelementptr %struct.complex, ptr %invariant.gep668.us, i64 %index1014
  %504 = getelementptr i8, ptr %503, i64 32
  %505 = getelementptr inbounds i8, ptr %500, i64 4
  %506 = getelementptr inbounds i8, ptr %501, i64 4
  %507 = getelementptr inbounds i8, ptr %502, i64 4
  %508 = getelementptr i8, ptr %503, i64 36
  %509 = load float, ptr %500, align 4, !tbaa !9, !alias.scope !62, !noalias !64
  %510 = load float, ptr %501, align 4, !tbaa !9, !alias.scope !62, !noalias !64
  %511 = load float, ptr %502, align 4, !tbaa !9, !alias.scope !62, !noalias !64
  %512 = load float, ptr %504, align 4, !tbaa !9, !alias.scope !62, !noalias !64
  %513 = insertelement <4 x float> poison, float %509, i64 0
  %514 = insertelement <4 x float> %513, float %510, i64 1
  %515 = insertelement <4 x float> %514, float %511, i64 2
  %516 = insertelement <4 x float> %515, float %512, i64 3
  %517 = load float, ptr %505, align 4, !tbaa !12, !alias.scope !62, !noalias !64
  %518 = load float, ptr %506, align 4, !tbaa !12, !alias.scope !62, !noalias !64
  %519 = load float, ptr %507, align 4, !tbaa !12, !alias.scope !62, !noalias !64
  %520 = load float, ptr %508, align 4, !tbaa !12, !alias.scope !62, !noalias !64
  %521 = insertelement <4 x float> poison, float %517, i64 0
  %522 = insertelement <4 x float> %521, float %518, i64 1
  %523 = insertelement <4 x float> %522, float %519, i64 2
  %524 = insertelement <4 x float> %523, float %520, i64 3
  %525 = fneg <4 x float> %broadcast.splat1019
  %526 = fmul <4 x float> %524, %525
  %527 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1017, <4 x float> %516, <4 x float> %526)
  %528 = fmul <4 x float> %516, %broadcast.splat1019
  %529 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1017, <4 x float> %524, <4 x float> %528)
  %530 = fadd <4 x float> %497, %527
  %531 = fadd <4 x float> %499, %529
  %predphi = select <4 x i1> %493, <4 x float> %497, <4 x float> %530
  %predphi1024 = select <4 x i1> %493, <4 x float> %499, <4 x float> %531
  %interleaved.vec1025 = shufflevector <4 x float> %predphi, <4 x float> %predphi1024, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1025, ptr %500, align 4, !tbaa !13
  %index.next1026 = add nuw i64 %index1014, 4
  %532 = icmp eq i64 %index.next1026, %n.vec1010
  br i1 %532, label %middle.block1005, label %vector.body1013, !llvm.loop !65

middle.block1005:                                 ; preds = %vector.body1013
  %cmp.n1027 = icmp eq i64 %.6673.us, %n.vec1010
  br i1 %cmp.n1027, label %.split.us.us, label %scalar.ph1006.preheader

scalar.ph1006.preheader:                          ; preds = %middle.block1005, %vector.memcheck993, %vector.scevcheck982, %.preheader604.us
  %.10667.us.us.ph = phi i64 [ 1, %vector.memcheck993 ], [ 1, %vector.scevcheck982 ], [ 1, %.preheader604.us ], [ %ind.end1011, %middle.block1005 ]
  br label %scalar.ph1006

scalar.ph1006:                                    ; preds = %scalar.ph1006.preheader, %555
  %.10667.us.us = phi i64 [ %557, %555 ], [ %.10667.us.us.ph, %scalar.ph1006.preheader ]
  %533 = load float, ptr %7, align 4, !tbaa !9
  %534 = fcmp oeq float %533, 0.000000e+00
  %.pre764 = load float, ptr %469, align 4, !tbaa !12
  %535 = fcmp oeq float %.pre764, 0.000000e+00
  %or.cond784 = select i1 %534, i1 %535, i1 false
  %536 = load float, ptr %4, align 4, !tbaa !9
  %537 = load float, ptr %470, align 4, !tbaa !12
  %538 = insertelement <2 x float> poison, float %537, i64 0
  %539 = shufflevector <2 x float> %538, <2 x float> poison, <2 x i32> zeroinitializer
  %540 = fmul <2 x float> %539, <float -0.000000e+00, float 0.000000e+00>
  %541 = insertelement <2 x float> poison, float %536, i64 0
  %542 = shufflevector <2 x float> %541, <2 x float> poison, <2 x i32> zeroinitializer
  %543 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %542, <2 x float> zeroinitializer, <2 x float> %540)
  %gep671.us.us = getelementptr %struct.complex, ptr %invariant.gep668.us, i64 %.10667.us.us
  br i1 %or.cond784, label %555, label %544

544:                                              ; preds = %scalar.ph1006
  %545 = fneg float %.pre764
  %546 = load <2 x float>, ptr %gep671.us.us, align 4, !tbaa !13
  %547 = insertelement <2 x float> poison, float %.pre764, i64 0
  %548 = insertelement <2 x float> %547, float %545, i64 1
  %549 = fmul <2 x float> %546, %548
  %550 = shufflevector <2 x float> %549, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %551 = insertelement <2 x float> poison, float %533, i64 0
  %552 = shufflevector <2 x float> %551, <2 x float> poison, <2 x i32> zeroinitializer
  %553 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %552, <2 x float> %546, <2 x float> %550)
  %554 = fadd <2 x float> %543, %553
  br label %555

555:                                              ; preds = %scalar.ph1006, %544
  %556 = phi <2 x float> [ %554, %544 ], [ %543, %scalar.ph1006 ]
  store <2 x float> %556, ptr %gep671.us.us, align 4, !tbaa !13
  %557 = add nuw i64 %.10667.us.us, 1
  %exitcond741.not = icmp eq i64 %557, %indvars.iv739
  br i1 %exitcond741.not, label %.split.us.us, label %scalar.ph1006, !llvm.loop !66

.split.us.us:                                     ; preds = %555, %middle.block1005
  %558 = add nuw i64 %.6673.us, 1
  %indvars.iv.next740 = add nuw i64 %indvars.iv739, 1
  %exitcond742.not = icmp eq i64 %indvars.iv739, %471
  %indvar.next984 = add i64 %indvar983, 1
  br i1 %exitcond742.not, label %.loopexit, label %.preheader604.us, !llvm.loop !67

.preheader604:                                    ; preds = %.preheader604.preheader, %.split
  %indvars.iv735 = phi i64 [ %indvars.iv.next736, %.split ], [ 2, %.preheader604.preheader ]
  %.6673 = phi i64 [ %638, %.split ], [ 1, %.preheader604.preheader ]
  %559 = mul nsw i64 %.6673, %12
  %560 = mul nsw i64 %.6673, %15
  %invariant.gep668 = getelementptr %struct.complex, ptr %17, i64 %560
  br label %.lr.ph664

.lr.ph664:                                        ; preds = %.preheader604, %635
  %.10667 = phi i64 [ 1, %.preheader604 ], [ %637, %635 ]
  %561 = mul nsw i64 %.10667, %12
  br i1 %472, label %._crit_edge665.unr-lcssa, label %.lr.ph664.new

.lr.ph664.new:                                    ; preds = %.lr.ph664, %.lr.ph664.new
  %.2660 = phi i64 [ %594, %.lr.ph664.new ], [ 1, %.lr.ph664 ]
  %562 = phi <2 x float> [ %593, %.lr.ph664.new ], [ zeroinitializer, %.lr.ph664 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph664.new ], [ 0, %.lr.ph664 ]
  %563 = getelementptr %struct.complex, ptr %14, i64 %.2660
  %564 = getelementptr %struct.complex, ptr %563, i64 %561
  %565 = load float, ptr %564, align 4, !tbaa !9
  %566 = getelementptr %struct.complex, ptr %563, i64 %559
  %567 = getelementptr inbounds i8, ptr %564, i64 4
  %568 = load float, ptr %567, align 4, !tbaa !12
  %569 = fneg float %568
  %570 = load <2 x float>, ptr %566, align 4, !tbaa !13
  %571 = insertelement <2 x float> poison, float %568, i64 0
  %572 = insertelement <2 x float> %571, float %569, i64 1
  %573 = fmul <2 x float> %570, %572
  %574 = shufflevector <2 x float> %573, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %575 = insertelement <2 x float> poison, float %565, i64 0
  %576 = shufflevector <2 x float> %575, <2 x float> poison, <2 x i32> zeroinitializer
  %577 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %576, <2 x float> %570, <2 x float> %574)
  %578 = fadd <2 x float> %562, %577
  %gep1218 = getelementptr %struct.complex, ptr %invariant.gep1217, i64 %.2660
  %579 = getelementptr %struct.complex, ptr %gep1218, i64 %561
  %580 = load float, ptr %579, align 4, !tbaa !9
  %581 = getelementptr %struct.complex, ptr %gep1218, i64 %559
  %582 = getelementptr inbounds i8, ptr %579, i64 4
  %583 = load float, ptr %582, align 4, !tbaa !12
  %584 = fneg float %583
  %585 = load <2 x float>, ptr %581, align 4, !tbaa !13
  %586 = insertelement <2 x float> poison, float %583, i64 0
  %587 = insertelement <2 x float> %586, float %584, i64 1
  %588 = fmul <2 x float> %585, %587
  %589 = shufflevector <2 x float> %588, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %590 = insertelement <2 x float> poison, float %580, i64 0
  %591 = shufflevector <2 x float> %590, <2 x float> poison, <2 x i32> zeroinitializer
  %592 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %591, <2 x float> %585, <2 x float> %589)
  %593 = fadd <2 x float> %578, %592
  %594 = add nuw i64 %.2660, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge665.unr-lcssa, label %.lr.ph664.new, !llvm.loop !68

._crit_edge665.unr-lcssa:                         ; preds = %.lr.ph664.new, %.lr.ph664
  %.lcssa1183.ph = phi <2 x float> [ poison, %.lr.ph664 ], [ %593, %.lr.ph664.new ]
  %.2660.unr = phi i64 [ 1, %.lr.ph664 ], [ %594, %.lr.ph664.new ]
  %.unr = phi <2 x float> [ zeroinitializer, %.lr.ph664 ], [ %593, %.lr.ph664.new ]
  br i1 %lcmp.mod1187.not, label %._crit_edge665, label %._crit_edge665.epilog-lcssa

._crit_edge665.epilog-lcssa:                      ; preds = %._crit_edge665.unr-lcssa
  %595 = getelementptr %struct.complex, ptr %14, i64 %.2660.unr
  %596 = getelementptr %struct.complex, ptr %595, i64 %561
  %597 = load float, ptr %596, align 4, !tbaa !9
  %598 = getelementptr %struct.complex, ptr %595, i64 %559
  %599 = getelementptr inbounds i8, ptr %596, i64 4
  %600 = load float, ptr %599, align 4, !tbaa !12
  %601 = fneg float %600
  %602 = load <2 x float>, ptr %598, align 4, !tbaa !13
  %603 = insertelement <2 x float> poison, float %600, i64 0
  %604 = insertelement <2 x float> %603, float %601, i64 1
  %605 = fmul <2 x float> %602, %604
  %606 = shufflevector <2 x float> %605, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %607 = insertelement <2 x float> poison, float %597, i64 0
  %608 = shufflevector <2 x float> %607, <2 x float> poison, <2 x i32> zeroinitializer
  %609 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %608, <2 x float> %602, <2 x float> %606)
  %610 = fadd <2 x float> %.unr, %609
  br label %._crit_edge665

._crit_edge665:                                   ; preds = %._crit_edge665.unr-lcssa, %._crit_edge665.epilog-lcssa
  %.lcssa1183 = phi <2 x float> [ %.lcssa1183.ph, %._crit_edge665.unr-lcssa ], [ %610, %._crit_edge665.epilog-lcssa ]
  %611 = load float, ptr %7, align 4, !tbaa !9
  %612 = fcmp oeq float %611, 0.000000e+00
  %.pre763 = load float, ptr %469, align 4, !tbaa !12
  %613 = fcmp oeq float %.pre763, 0.000000e+00
  %or.cond786 = select i1 %612, i1 %613, i1 false
  %614 = load float, ptr %4, align 4, !tbaa !9
  %615 = load float, ptr %470, align 4, !tbaa !12
  %616 = fneg float %615
  %617 = insertelement <2 x float> poison, float %615, i64 0
  %618 = insertelement <2 x float> %617, float %616, i64 1
  %619 = fmul <2 x float> %.lcssa1183, %618
  %620 = shufflevector <2 x float> %619, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %621 = insertelement <2 x float> poison, float %614, i64 0
  %622 = shufflevector <2 x float> %621, <2 x float> poison, <2 x i32> zeroinitializer
  %623 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %622, <2 x float> %.lcssa1183, <2 x float> %620)
  %gep671 = getelementptr %struct.complex, ptr %invariant.gep668, i64 %.10667
  br i1 %or.cond786, label %635, label %624

624:                                              ; preds = %._crit_edge665
  %625 = fneg float %.pre763
  %626 = load <2 x float>, ptr %gep671, align 4, !tbaa !13
  %627 = insertelement <2 x float> poison, float %.pre763, i64 0
  %628 = insertelement <2 x float> %627, float %625, i64 1
  %629 = fmul <2 x float> %626, %628
  %630 = shufflevector <2 x float> %629, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %631 = insertelement <2 x float> poison, float %611, i64 0
  %632 = shufflevector <2 x float> %631, <2 x float> poison, <2 x i32> zeroinitializer
  %633 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %632, <2 x float> %626, <2 x float> %630)
  %634 = fadd <2 x float> %623, %633
  br label %635

635:                                              ; preds = %._crit_edge665, %624
  %636 = phi <2 x float> [ %634, %624 ], [ %623, %._crit_edge665 ]
  store <2 x float> %636, ptr %gep671, align 4, !tbaa !13
  %637 = add nuw i64 %.10667, 1
  %exitcond737.not = icmp eq i64 %637, %indvars.iv735
  br i1 %exitcond737.not, label %.split, label %.lr.ph664, !llvm.loop !69

.split:                                           ; preds = %635
  %638 = add nuw nsw i64 %.6673, 1
  %indvars.iv.next736 = add nuw i64 %indvars.iv735, 1
  %exitcond738.not = icmp eq i64 %indvars.iv735, %471
  br i1 %exitcond738.not, label %.loopexit, label %.preheader604, !llvm.loop !67

639:                                              ; preds = %466
  br i1 %.not569690, label %.loopexit, label %.preheader602.lr.ph

.preheader602.lr.ph:                              ; preds = %639
  %640 = load i64, ptr %3, align 8, !tbaa !5
  %.not571674 = icmp slt i64 %640, 1
  %641 = getelementptr inbounds i8, ptr %7, i64 4
  %642 = getelementptr inbounds i8, ptr %4, i64 4
  br i1 %.not571674, label %.preheader602.us.preheader, label %.preheader602.preheader

.preheader602.preheader:                          ; preds = %.preheader602.lr.ph
  %xtraiter1190 = and i64 %640, 1
  %643 = icmp eq i64 %640, 1
  %unroll_iter1194 = and i64 %640, 9223372036854775806
  %invariant.gep1221 = getelementptr i8, ptr %14, i64 8
  %lcmp.mod1192.not = icmp eq i64 %xtraiter1190, 0
  br label %.preheader602

.preheader602.us.preheader:                       ; preds = %.preheader602.lr.ph
  %644 = shl i64 %15, 3
  %645 = add i64 %644, 8
  %scevgep1045 = getelementptr i8, ptr %7, i64 8
  %scevgep1046 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1223 = getelementptr i8, ptr %8, i64 8
  br label %.preheader602.us

.preheader602.us:                                 ; preds = %.preheader602.us.preheader, %.split689.us.us
  %indvar1030 = phi i64 [ 0, %.preheader602.us.preheader ], [ %indvar.next1031, %.split689.us.us ]
  %.7691.us = phi i64 [ 1, %.preheader602.us.preheader ], [ %733, %.split689.us.us ]
  %smax1054 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.7691.us)
  %646 = sub i64 %smax1054, %indvar1030
  %647 = mul i64 %645, %indvar1030
  %scevgep1041 = getelementptr i8, ptr %8, i64 %647
  %gep1224 = getelementptr i8, ptr %invariant.gep1223, i64 %647
  %smax1043 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.7691.us)
  %648 = xor i64 %indvar1030, -1
  %649 = add i64 %smax1043, %648
  %650 = shl i64 %649, 3
  %scevgep1044 = getelementptr i8, ptr %gep1224, i64 %650
  %651 = mul nsw i64 %.7691.us, %15
  %invariant.gep684.us = getelementptr %struct.complex, ptr %17, i64 %651
  %min.iters.check1057 = icmp ult i64 %646, 8
  br i1 %min.iters.check1057, label %scalar.ph1056.preheader, label %vector.scevcheck1028

vector.scevcheck1028:                             ; preds = %.preheader602.us
  %652 = mul i64 %645, %indvar1030
  %scevgep1036 = getelementptr i8, ptr %8, i64 %652
  %653 = or disjoint i64 %652, 4
  %scevgep1032 = getelementptr i8, ptr %8, i64 %653
  %smax1029 = tail call i64 @llvm.smax.i64(i64 %196, i64 %.7691.us)
  %654 = xor i64 %indvar1030, -1
  %655 = add i64 %smax1029, %654
  %mul.result1034 = shl i64 %655, 3
  %656 = getelementptr i8, ptr %scevgep1032, i64 %mul.result1034
  %657 = icmp ult ptr %656, %scevgep1032
  %mul.result1038 = shl i64 %655, 3
  %mul.overflow1039 = icmp ugt i64 %655, 2305843009213693951
  %658 = getelementptr i8, ptr %scevgep1036, i64 %mul.result1038
  %659 = icmp ult ptr %658, %scevgep1036
  %660 = or i1 %659, %mul.overflow1039
  %661 = or i1 %657, %660
  br i1 %661, label %scalar.ph1056.preheader, label %vector.memcheck1040

vector.memcheck1040:                              ; preds = %vector.scevcheck1028
  %bound01047 = icmp ult ptr %scevgep1041, %scevgep1045
  %bound11048 = icmp ugt ptr %scevgep1044, %7
  %found.conflict1049 = and i1 %bound01047, %bound11048
  %bound01050 = icmp ult ptr %scevgep1041, %scevgep1046
  %bound11051 = icmp ugt ptr %scevgep1044, %4
  %found.conflict1052 = and i1 %bound01050, %bound11051
  %conflict.rdx1053 = or i1 %found.conflict1049, %found.conflict1052
  br i1 %conflict.rdx1053, label %scalar.ph1056.preheader, label %vector.ph1058

vector.ph1058:                                    ; preds = %vector.memcheck1040
  %n.vec1060 = and i64 %646, -4
  %ind.end1061 = add i64 %.7691.us, %n.vec1060
  br label %vector.body1063

vector.body1063:                                  ; preds = %vector.body1063, %vector.ph1058
  %index1064 = phi i64 [ 0, %vector.ph1058 ], [ %index.next1077, %vector.body1063 ]
  %offset.idx1065 = add i64 %.7691.us, %index1064
  %662 = load float, ptr %7, align 4, !tbaa !9, !alias.scope !70
  %broadcast.splatinsert1066 = insertelement <4 x float> poison, float %662, i64 0
  %broadcast.splat1067 = shufflevector <4 x float> %broadcast.splatinsert1066, <4 x float> poison, <4 x i32> zeroinitializer
  %663 = fcmp oeq <4 x float> %broadcast.splat1067, zeroinitializer
  %664 = load float, ptr %641, align 4, !tbaa !12, !alias.scope !70
  %broadcast.splatinsert1068 = insertelement <4 x float> poison, float %664, i64 0
  %broadcast.splat1069 = shufflevector <4 x float> %broadcast.splatinsert1068, <4 x float> poison, <4 x i32> zeroinitializer
  %665 = fcmp oeq <4 x float> %broadcast.splat1069, zeroinitializer
  %666 = select <4 x i1> %663, <4 x i1> %665, <4 x i1> zeroinitializer
  %667 = load float, ptr %4, align 4, !tbaa !9, !alias.scope !73
  %broadcast.splatinsert1072 = insertelement <4 x float> poison, float %667, i64 0
  %broadcast.splat1073 = shufflevector <4 x float> %broadcast.splatinsert1072, <4 x float> poison, <4 x i32> zeroinitializer
  %668 = load float, ptr %642, align 4, !tbaa !12, !alias.scope !73
  %broadcast.splatinsert1070 = insertelement <4 x float> poison, float %668, i64 0
  %broadcast.splat1071 = shufflevector <4 x float> %broadcast.splatinsert1070, <4 x float> poison, <4 x i32> zeroinitializer
  %669 = fmul <4 x float> %broadcast.splat1071, <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>
  %670 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1073, <4 x float> zeroinitializer, <4 x float> %669)
  %671 = fmul <4 x float> %broadcast.splat1071, zeroinitializer
  %672 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1073, <4 x float> zeroinitializer, <4 x float> %671)
  %673 = getelementptr %struct.complex, ptr %invariant.gep684.us, i64 %offset.idx1065
  %674 = getelementptr %struct.complex, ptr %invariant.gep684.us, i64 %offset.idx1065
  %675 = getelementptr i8, ptr %674, i64 8
  %676 = getelementptr %struct.complex, ptr %invariant.gep684.us, i64 %offset.idx1065
  %677 = getelementptr i8, ptr %676, i64 16
  %678 = getelementptr %struct.complex, ptr %invariant.gep684.us, i64 %offset.idx1065
  %679 = getelementptr i8, ptr %678, i64 24
  %680 = getelementptr inbounds i8, ptr %673, i64 4
  %681 = getelementptr i8, ptr %674, i64 12
  %682 = getelementptr i8, ptr %676, i64 20
  %683 = getelementptr i8, ptr %678, i64 28
  %684 = load float, ptr %673, align 4, !tbaa !9, !alias.scope !75, !noalias !77
  %685 = load float, ptr %675, align 4, !tbaa !9, !alias.scope !75, !noalias !77
  %686 = load float, ptr %677, align 4, !tbaa !9, !alias.scope !75, !noalias !77
  %687 = load float, ptr %679, align 4, !tbaa !9, !alias.scope !75, !noalias !77
  %688 = insertelement <4 x float> poison, float %684, i64 0
  %689 = insertelement <4 x float> %688, float %685, i64 1
  %690 = insertelement <4 x float> %689, float %686, i64 2
  %691 = insertelement <4 x float> %690, float %687, i64 3
  %692 = load float, ptr %680, align 4, !tbaa !12, !alias.scope !75, !noalias !77
  %693 = load float, ptr %681, align 4, !tbaa !12, !alias.scope !75, !noalias !77
  %694 = load float, ptr %682, align 4, !tbaa !12, !alias.scope !75, !noalias !77
  %695 = load float, ptr %683, align 4, !tbaa !12, !alias.scope !75, !noalias !77
  %696 = insertelement <4 x float> poison, float %692, i64 0
  %697 = insertelement <4 x float> %696, float %693, i64 1
  %698 = insertelement <4 x float> %697, float %694, i64 2
  %699 = insertelement <4 x float> %698, float %695, i64 3
  %700 = fneg <4 x float> %broadcast.splat1069
  %701 = fmul <4 x float> %699, %700
  %702 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1067, <4 x float> %691, <4 x float> %701)
  %703 = fmul <4 x float> %691, %broadcast.splat1069
  %704 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1067, <4 x float> %699, <4 x float> %703)
  %705 = fadd <4 x float> %670, %702
  %706 = fadd <4 x float> %672, %704
  %predphi1074 = select <4 x i1> %666, <4 x float> %670, <4 x float> %705
  %predphi1075 = select <4 x i1> %666, <4 x float> %672, <4 x float> %706
  %interleaved.vec1076 = shufflevector <4 x float> %predphi1074, <4 x float> %predphi1075, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1076, ptr %673, align 4, !tbaa !13
  %index.next1077 = add nuw i64 %index1064, 4
  %707 = icmp eq i64 %index.next1077, %n.vec1060
  br i1 %707, label %middle.block1055, label %vector.body1063, !llvm.loop !78

middle.block1055:                                 ; preds = %vector.body1063
  %cmp.n1078 = icmp eq i64 %646, %n.vec1060
  br i1 %cmp.n1078, label %.split689.us.us, label %scalar.ph1056.preheader

scalar.ph1056.preheader:                          ; preds = %middle.block1055, %vector.memcheck1040, %vector.scevcheck1028, %.preheader602.us
  %.11683.us.us.ph = phi i64 [ %.7691.us, %vector.memcheck1040 ], [ %.7691.us, %vector.scevcheck1028 ], [ %.7691.us, %.preheader602.us ], [ %ind.end1061, %middle.block1055 ]
  br label %scalar.ph1056

scalar.ph1056:                                    ; preds = %scalar.ph1056.preheader, %730
  %.11683.us.us = phi i64 [ %732, %730 ], [ %.11683.us.us.ph, %scalar.ph1056.preheader ]
  %708 = load float, ptr %7, align 4, !tbaa !9
  %709 = fcmp oeq float %708, 0.000000e+00
  %.pre766 = load float, ptr %641, align 4, !tbaa !12
  %710 = fcmp oeq float %.pre766, 0.000000e+00
  %or.cond788 = select i1 %709, i1 %710, i1 false
  %711 = load float, ptr %4, align 4, !tbaa !9
  %712 = load float, ptr %642, align 4, !tbaa !12
  %713 = insertelement <2 x float> poison, float %712, i64 0
  %714 = shufflevector <2 x float> %713, <2 x float> poison, <2 x i32> zeroinitializer
  %715 = fmul <2 x float> %714, <float -0.000000e+00, float 0.000000e+00>
  %716 = insertelement <2 x float> poison, float %711, i64 0
  %717 = shufflevector <2 x float> %716, <2 x float> poison, <2 x i32> zeroinitializer
  %718 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %717, <2 x float> zeroinitializer, <2 x float> %715)
  %gep687.us.us = getelementptr %struct.complex, ptr %invariant.gep684.us, i64 %.11683.us.us
  br i1 %or.cond788, label %730, label %719

719:                                              ; preds = %scalar.ph1056
  %720 = fneg float %.pre766
  %721 = load <2 x float>, ptr %gep687.us.us, align 4, !tbaa !13
  %722 = insertelement <2 x float> poison, float %.pre766, i64 0
  %723 = insertelement <2 x float> %722, float %720, i64 1
  %724 = fmul <2 x float> %721, %723
  %725 = shufflevector <2 x float> %724, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %726 = insertelement <2 x float> poison, float %708, i64 0
  %727 = shufflevector <2 x float> %726, <2 x float> poison, <2 x i32> zeroinitializer
  %728 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %727, <2 x float> %721, <2 x float> %725)
  %729 = fadd <2 x float> %718, %728
  br label %730

730:                                              ; preds = %scalar.ph1056, %719
  %731 = phi <2 x float> [ %729, %719 ], [ %718, %scalar.ph1056 ]
  store <2 x float> %731, ptr %gep687.us.us, align 4, !tbaa !13
  %732 = add nuw nsw i64 %.11683.us.us, 1
  %.not570.us.us.not = icmp slt i64 %.11683.us.us, %196
  br i1 %.not570.us.us.not, label %scalar.ph1056, label %.split689.us.us, !llvm.loop !79

.split689.us.us:                                  ; preds = %730, %middle.block1055
  %733 = add nuw i64 %.7691.us, 1
  %exitcond745.not = icmp eq i64 %.7691.us, %196
  %indvar.next1031 = add i64 %indvar1030, 1
  br i1 %exitcond745.not, label %.loopexit, label %.preheader602.us, !llvm.loop !80

.preheader602:                                    ; preds = %.preheader602.preheader, %.split689
  %.7691 = phi i64 [ %813, %.split689 ], [ 1, %.preheader602.preheader ]
  %734 = mul nsw i64 %.7691, %12
  %735 = mul nsw i64 %.7691, %15
  %invariant.gep684 = getelementptr %struct.complex, ptr %17, i64 %735
  br label %.lr.ph679

.lr.ph679:                                        ; preds = %.preheader602, %810
  %.11683 = phi i64 [ %.7691, %.preheader602 ], [ %812, %810 ]
  %736 = mul nsw i64 %.11683, %12
  br i1 %643, label %._crit_edge680.unr-lcssa, label %.lr.ph679.new

.lr.ph679.new:                                    ; preds = %.lr.ph679, %.lr.ph679.new
  %.3675 = phi i64 [ %769, %.lr.ph679.new ], [ 1, %.lr.ph679 ]
  %737 = phi <2 x float> [ %768, %.lr.ph679.new ], [ zeroinitializer, %.lr.ph679 ]
  %niter1195 = phi i64 [ %niter1195.next.1, %.lr.ph679.new ], [ 0, %.lr.ph679 ]
  %738 = getelementptr %struct.complex, ptr %14, i64 %.3675
  %739 = getelementptr %struct.complex, ptr %738, i64 %736
  %740 = load float, ptr %739, align 4, !tbaa !9
  %741 = getelementptr %struct.complex, ptr %738, i64 %734
  %742 = getelementptr inbounds i8, ptr %739, i64 4
  %743 = load float, ptr %742, align 4, !tbaa !12
  %744 = fneg float %743
  %745 = load <2 x float>, ptr %741, align 4, !tbaa !13
  %746 = insertelement <2 x float> poison, float %743, i64 0
  %747 = insertelement <2 x float> %746, float %744, i64 1
  %748 = fmul <2 x float> %745, %747
  %749 = shufflevector <2 x float> %748, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %750 = insertelement <2 x float> poison, float %740, i64 0
  %751 = shufflevector <2 x float> %750, <2 x float> poison, <2 x i32> zeroinitializer
  %752 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %751, <2 x float> %745, <2 x float> %749)
  %753 = fadd <2 x float> %737, %752
  %gep1222 = getelementptr %struct.complex, ptr %invariant.gep1221, i64 %.3675
  %754 = getelementptr %struct.complex, ptr %gep1222, i64 %736
  %755 = load float, ptr %754, align 4, !tbaa !9
  %756 = getelementptr %struct.complex, ptr %gep1222, i64 %734
  %757 = getelementptr inbounds i8, ptr %754, i64 4
  %758 = load float, ptr %757, align 4, !tbaa !12
  %759 = fneg float %758
  %760 = load <2 x float>, ptr %756, align 4, !tbaa !13
  %761 = insertelement <2 x float> poison, float %758, i64 0
  %762 = insertelement <2 x float> %761, float %759, i64 1
  %763 = fmul <2 x float> %760, %762
  %764 = shufflevector <2 x float> %763, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %765 = insertelement <2 x float> poison, float %755, i64 0
  %766 = shufflevector <2 x float> %765, <2 x float> poison, <2 x i32> zeroinitializer
  %767 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %766, <2 x float> %760, <2 x float> %764)
  %768 = fadd <2 x float> %753, %767
  %769 = add nuw i64 %.3675, 2
  %niter1195.next.1 = add i64 %niter1195, 2
  %niter1195.ncmp.1 = icmp eq i64 %niter1195.next.1, %unroll_iter1194
  br i1 %niter1195.ncmp.1, label %._crit_edge680.unr-lcssa, label %.lr.ph679.new, !llvm.loop !81

._crit_edge680.unr-lcssa:                         ; preds = %.lr.ph679.new, %.lr.ph679
  %.lcssa.ph = phi <2 x float> [ poison, %.lr.ph679 ], [ %768, %.lr.ph679.new ]
  %.3675.unr = phi i64 [ 1, %.lr.ph679 ], [ %769, %.lr.ph679.new ]
  %.unr1191 = phi <2 x float> [ zeroinitializer, %.lr.ph679 ], [ %768, %.lr.ph679.new ]
  br i1 %lcmp.mod1192.not, label %._crit_edge680, label %._crit_edge680.epilog-lcssa

._crit_edge680.epilog-lcssa:                      ; preds = %._crit_edge680.unr-lcssa
  %770 = getelementptr %struct.complex, ptr %14, i64 %.3675.unr
  %771 = getelementptr %struct.complex, ptr %770, i64 %736
  %772 = load float, ptr %771, align 4, !tbaa !9
  %773 = getelementptr %struct.complex, ptr %770, i64 %734
  %774 = getelementptr inbounds i8, ptr %771, i64 4
  %775 = load float, ptr %774, align 4, !tbaa !12
  %776 = fneg float %775
  %777 = load <2 x float>, ptr %773, align 4, !tbaa !13
  %778 = insertelement <2 x float> poison, float %775, i64 0
  %779 = insertelement <2 x float> %778, float %776, i64 1
  %780 = fmul <2 x float> %777, %779
  %781 = shufflevector <2 x float> %780, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %782 = insertelement <2 x float> poison, float %772, i64 0
  %783 = shufflevector <2 x float> %782, <2 x float> poison, <2 x i32> zeroinitializer
  %784 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %783, <2 x float> %777, <2 x float> %781)
  %785 = fadd <2 x float> %.unr1191, %784
  br label %._crit_edge680

._crit_edge680:                                   ; preds = %._crit_edge680.unr-lcssa, %._crit_edge680.epilog-lcssa
  %.lcssa = phi <2 x float> [ %.lcssa.ph, %._crit_edge680.unr-lcssa ], [ %785, %._crit_edge680.epilog-lcssa ]
  %786 = load float, ptr %7, align 4, !tbaa !9
  %787 = fcmp oeq float %786, 0.000000e+00
  %.pre765 = load float, ptr %641, align 4, !tbaa !12
  %788 = fcmp oeq float %.pre765, 0.000000e+00
  %or.cond790 = select i1 %787, i1 %788, i1 false
  %789 = load float, ptr %4, align 4, !tbaa !9
  %790 = load float, ptr %642, align 4, !tbaa !12
  %791 = fneg float %790
  %792 = insertelement <2 x float> poison, float %790, i64 0
  %793 = insertelement <2 x float> %792, float %791, i64 1
  %794 = fmul <2 x float> %.lcssa, %793
  %795 = shufflevector <2 x float> %794, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %796 = insertelement <2 x float> poison, float %789, i64 0
  %797 = shufflevector <2 x float> %796, <2 x float> poison, <2 x i32> zeroinitializer
  %798 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %797, <2 x float> %.lcssa, <2 x float> %795)
  %gep687 = getelementptr %struct.complex, ptr %invariant.gep684, i64 %.11683
  br i1 %or.cond790, label %810, label %799

799:                                              ; preds = %._crit_edge680
  %800 = fneg float %.pre765
  %801 = load <2 x float>, ptr %gep687, align 4, !tbaa !13
  %802 = insertelement <2 x float> poison, float %.pre765, i64 0
  %803 = insertelement <2 x float> %802, float %800, i64 1
  %804 = fmul <2 x float> %801, %803
  %805 = shufflevector <2 x float> %804, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %806 = insertelement <2 x float> poison, float %786, i64 0
  %807 = shufflevector <2 x float> %806, <2 x float> poison, <2 x i32> zeroinitializer
  %808 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %807, <2 x float> %801, <2 x float> %805)
  %809 = fadd <2 x float> %798, %808
  br label %810

810:                                              ; preds = %._crit_edge680, %799
  %811 = phi <2 x float> [ %809, %799 ], [ %798, %._crit_edge680 ]
  store <2 x float> %811, ptr %gep687, align 4, !tbaa !13
  %812 = add nuw nsw i64 %.11683, 1
  %.not570.not = icmp slt i64 %.11683, %196
  br i1 %.not570.not, label %.lr.ph679, label %.split689, !llvm.loop !82

.split689:                                        ; preds = %810
  %813 = add nuw i64 %.7691, 1
  %exitcond744.not = icmp eq i64 %.7691, %196
  br i1 %exitcond744.not, label %.loopexit, label %.preheader602, !llvm.loop !80

.loopexit.loopexit.unr-lcssa:                     ; preds = %.preheader, %.preheader.preheader
  %indvar755.unr = phi i64 [ 0, %.preheader.preheader ], [ %indvar.next756.3, %.preheader ]
  %lcmp.mod1202.not = icmp eq i64 %xtraiter1200, 0
  br i1 %lcmp.mod1202.not, label %.loopexit, label %.preheader.epil

.preheader.epil:                                  ; preds = %.loopexit.loopexit.unr-lcssa, %.preheader.epil
  %indvar755.epil = phi i64 [ %indvar.next756.epil, %.preheader.epil ], [ %indvar755.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter1201 = phi i64 [ %epil.iter1201.next, %.preheader.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %814 = mul i64 %137, %indvar755.epil
  %scevgep757.epil = getelementptr i8, ptr %8, i64 %814
  %815 = sub nsw i64 %29, %indvar755.epil
  %816 = shl i64 %815, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep757.epil, i8 0, i64 %816, i1 false), !tbaa !13
  %indvar.next756.epil = add nuw nsw i64 %indvar755.epil, 1
  %epil.iter1201.next = add i64 %epil.iter1201, 1
  %epil.iter1201.cmp.not = icmp eq i64 %epil.iter1201.next, %xtraiter1200
  br i1 %epil.iter1201.cmp.not, label %.loopexit, label %.preheader.epil, !llvm.loop !83

.loopexit.loopexit1177.unr-lcssa:                 ; preds = %.preheader597, %.preheader597.preheader
  %indvar750.unr = phi i64 [ 0, %.preheader597.preheader ], [ %indvar.next751.3, %.preheader597 ]
  %lcmp.mod1197.not = icmp eq i64 %xtraiter1196, 0
  br i1 %lcmp.mod1197.not, label %.loopexit, label %.preheader597.epil

.preheader597.epil:                               ; preds = %.loopexit.loopexit1177.unr-lcssa, %.preheader597.epil
  %indvar750.epil = phi i64 [ %indvar.next751.epil, %.preheader597.epil ], [ %indvar750.unr, %.loopexit.loopexit1177.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader597.epil ], [ 0, %.loopexit.loopexit1177.unr-lcssa ]
  %817 = mul i64 %77, %indvar750.epil
  %scevgep752.epil = getelementptr i8, ptr %8, i64 %817
  %818 = shl i64 %indvar750.epil, 3
  %819 = add nuw i64 %818, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep752.epil, i8 0, i64 %819, i1 false), !tbaa !13
  %indvar.next751.epil = add nuw nsw i64 %indvar750.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1196
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.preheader597.epil, !llvm.loop !85

.loopexit:                                        ; preds = %._crit_edge, %._crit_edge654, %.split, %.split.us.us, %.split689, %.split689.us.us, %.loopexit1174, %.loopexit.loopexit1177.unr-lcssa, %.preheader597.epil, %.loopexit1173, %.loopexit.loopexit.unr-lcssa, %.preheader.epil, %198, %341, %467, %639, %46, %60, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

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

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

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


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