1.data
2.p2align 5
3mask_modq:
4.word 4095
5.word 4095
6.word 4095
7.word 4095
8.word 4095
9.word 4095
10.word 4095
11.word 4095
12.word 4095
13.word 4095
14.word 4095
15.word 4095
16.word 4095
17.word 4095
18.word 4095
19.word 4095
20mask_ff:
21.word 0xff
22.word 0xff
23.word 0xff
24.word 0xff
25.word 0xff
26.word 0xff
27.word 0xff
28.word 0xff
29.word 0xff
30.word 0xff
31.word 0xff
32.word 0xff
33.word 0xff
34.word 0xff
35.word 0xff
36.word 0xff
37mask_f:
38.word 0xf
39.word 0xf
40.word 0xf
41.word 0xf
42.word 0xf
43.word 0xf
44.word 0xf
45.word 0xf
46.word 0xf
47.word 0xf
48.word 0xf
49.word 0xf
50.word 0xf
51.word 0xf
52.word 0xf
53.word 0xf
54mask_3:
55.word 0x03
56.word 0x03
57.word 0x03
58.word 0x03
59.word 0x03
60.word 0x03
61.word 0x03
62.word 0x03
63.word 0x03
64.word 0x03
65.word 0x03
66.word 0x03
67.word 0x03
68.word 0x03
69.word 0x03
70.word 0x03
71.text
72.global PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3
73.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3
74PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3:
75_PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3:
76vmovdqa mask_modq(%rip), %ymm6
77vmovdqa 1632(%rsi), %ymm5
78vpand %ymm6, %ymm5, %ymm5
79vpermq $1, %ymm5, %ymm5
80vpslld $16, %ymm5, %ymm1
81vpsrld $16, %ymm1, %ymm5
82vpor %ymm5, %ymm1, %ymm5
83vbroadcastss %xmm5, %ymm5
84vpsrlw $11, %ymm5, %ymm1
85vpsllw $1, %ymm1, %ymm1
86vpaddw %ymm5, %ymm1, %ymm5
87vpsrlw $8, %ymm5, %ymm1
88vpand mask_ff(%rip), %ymm5, %ymm5
89vpaddw %ymm1, %ymm5, %ymm1
90vpand mask_f(%rip), %ymm1, %ymm5
91vpsrlw $4, %ymm1, %ymm1
92vpaddw %ymm1, %ymm5, %ymm1
93vpand mask_3(%rip), %ymm1, %ymm5
94vpsrlw $2, %ymm1, %ymm1
95vpaddw %ymm1, %ymm5, %ymm1
96vpand mask_3(%rip), %ymm1, %ymm5
97vpsrlw $2, %ymm1, %ymm1
98vpaddw %ymm1, %ymm5, %ymm1
99vpsubw mask_3(%rip), %ymm1, %ymm14
100vpsraw $15, %ymm14, %ymm15
101vpandn %ymm14, %ymm15, %ymm5
102vpand %ymm15, %ymm1, %ymm14
103vpxor %ymm14, %ymm5, %ymm1
104vpsllw $1, %ymm1, %ymm5
105vmovdqa 0(%rsi), %ymm0
106vpand %ymm6, %ymm0, %ymm0
107vpsrlw $11, %ymm0, %ymm1
108vpsllw $1, %ymm1, %ymm1
109vpaddw %ymm0, %ymm1, %ymm0
110vpaddw %ymm0, %ymm5, %ymm0
111vpsrlw $8, %ymm0, %ymm1
112vpand mask_ff(%rip), %ymm0, %ymm0
113vpaddw %ymm1, %ymm0, %ymm1
114vpand mask_f(%rip), %ymm1, %ymm0
115vpsrlw $4, %ymm1, %ymm1
116vpaddw %ymm1, %ymm0, %ymm1
117vpand mask_3(%rip), %ymm1, %ymm0
118vpsrlw $2, %ymm1, %ymm1
119vpaddw %ymm1, %ymm0, %ymm1
120vpand mask_3(%rip), %ymm1, %ymm0
121vpsrlw $2, %ymm1, %ymm1
122vpaddw %ymm1, %ymm0, %ymm1
123vpsubw mask_3(%rip), %ymm1, %ymm14
124vpsraw $15, %ymm14, %ymm15
125vpandn %ymm14, %ymm15, %ymm0
126vpand %ymm15, %ymm1, %ymm14
127vpxor %ymm14, %ymm0, %ymm1
128vmovdqa %ymm1, 0(%rdi)
129vmovdqa 32(%rsi), %ymm0
130vpand %ymm6, %ymm0, %ymm0
131vpsrlw $11, %ymm0, %ymm1
132vpsllw $1, %ymm1, %ymm1
133vpaddw %ymm0, %ymm1, %ymm0
134vpaddw %ymm0, %ymm5, %ymm0
135vpsrlw $8, %ymm0, %ymm1
136vpand mask_ff(%rip), %ymm0, %ymm0
137vpaddw %ymm1, %ymm0, %ymm1
138vpand mask_f(%rip), %ymm1, %ymm0
139vpsrlw $4, %ymm1, %ymm1
140vpaddw %ymm1, %ymm0, %ymm1
141vpand mask_3(%rip), %ymm1, %ymm0
142vpsrlw $2, %ymm1, %ymm1
143vpaddw %ymm1, %ymm0, %ymm1
144vpand mask_3(%rip), %ymm1, %ymm0
145vpsrlw $2, %ymm1, %ymm1
146vpaddw %ymm1, %ymm0, %ymm1
147vpsubw mask_3(%rip), %ymm1, %ymm14
148vpsraw $15, %ymm14, %ymm15
149vpandn %ymm14, %ymm15, %ymm0
150vpand %ymm15, %ymm1, %ymm14
151vpxor %ymm14, %ymm0, %ymm1
152vmovdqa %ymm1, 32(%rdi)
153vmovdqa 64(%rsi), %ymm0
154vpand %ymm6, %ymm0, %ymm0
155vpsrlw $11, %ymm0, %ymm1
156vpsllw $1, %ymm1, %ymm1
157vpaddw %ymm0, %ymm1, %ymm0
158vpaddw %ymm0, %ymm5, %ymm0
159vpsrlw $8, %ymm0, %ymm1
160vpand mask_ff(%rip), %ymm0, %ymm0
161vpaddw %ymm1, %ymm0, %ymm1
162vpand mask_f(%rip), %ymm1, %ymm0
163vpsrlw $4, %ymm1, %ymm1
164vpaddw %ymm1, %ymm0, %ymm1
165vpand mask_3(%rip), %ymm1, %ymm0
166vpsrlw $2, %ymm1, %ymm1
167vpaddw %ymm1, %ymm0, %ymm1
168vpand mask_3(%rip), %ymm1, %ymm0
169vpsrlw $2, %ymm1, %ymm1
170vpaddw %ymm1, %ymm0, %ymm1
171vpsubw mask_3(%rip), %ymm1, %ymm14
172vpsraw $15, %ymm14, %ymm15
173vpandn %ymm14, %ymm15, %ymm0
174vpand %ymm15, %ymm1, %ymm14
175vpxor %ymm14, %ymm0, %ymm1
176vmovdqa %ymm1, 64(%rdi)
177vmovdqa 96(%rsi), %ymm0
178vpand %ymm6, %ymm0, %ymm0
179vpsrlw $11, %ymm0, %ymm1
180vpsllw $1, %ymm1, %ymm1
181vpaddw %ymm0, %ymm1, %ymm0
182vpaddw %ymm0, %ymm5, %ymm0
183vpsrlw $8, %ymm0, %ymm1
184vpand mask_ff(%rip), %ymm0, %ymm0
185vpaddw %ymm1, %ymm0, %ymm1
186vpand mask_f(%rip), %ymm1, %ymm0
187vpsrlw $4, %ymm1, %ymm1
188vpaddw %ymm1, %ymm0, %ymm1
189vpand mask_3(%rip), %ymm1, %ymm0
190vpsrlw $2, %ymm1, %ymm1
191vpaddw %ymm1, %ymm0, %ymm1
192vpand mask_3(%rip), %ymm1, %ymm0
193vpsrlw $2, %ymm1, %ymm1
194vpaddw %ymm1, %ymm0, %ymm1
195vpsubw mask_3(%rip), %ymm1, %ymm14
196vpsraw $15, %ymm14, %ymm15
197vpandn %ymm14, %ymm15, %ymm0
198vpand %ymm15, %ymm1, %ymm14
199vpxor %ymm14, %ymm0, %ymm1
200vmovdqa %ymm1, 96(%rdi)
201vmovdqa 128(%rsi), %ymm0
202vpand %ymm6, %ymm0, %ymm0
203vpsrlw $11, %ymm0, %ymm1
204vpsllw $1, %ymm1, %ymm1
205vpaddw %ymm0, %ymm1, %ymm0
206vpaddw %ymm0, %ymm5, %ymm0
207vpsrlw $8, %ymm0, %ymm1
208vpand mask_ff(%rip), %ymm0, %ymm0
209vpaddw %ymm1, %ymm0, %ymm1
210vpand mask_f(%rip), %ymm1, %ymm0
211vpsrlw $4, %ymm1, %ymm1
212vpaddw %ymm1, %ymm0, %ymm1
213vpand mask_3(%rip), %ymm1, %ymm0
214vpsrlw $2, %ymm1, %ymm1
215vpaddw %ymm1, %ymm0, %ymm1
216vpand mask_3(%rip), %ymm1, %ymm0
217vpsrlw $2, %ymm1, %ymm1
218vpaddw %ymm1, %ymm0, %ymm1
219vpsubw mask_3(%rip), %ymm1, %ymm14
220vpsraw $15, %ymm14, %ymm15
221vpandn %ymm14, %ymm15, %ymm0
222vpand %ymm15, %ymm1, %ymm14
223vpxor %ymm14, %ymm0, %ymm1
224vmovdqa %ymm1, 128(%rdi)
225vmovdqa 160(%rsi), %ymm0
226vpand %ymm6, %ymm0, %ymm0
227vpsrlw $11, %ymm0, %ymm1
228vpsllw $1, %ymm1, %ymm1
229vpaddw %ymm0, %ymm1, %ymm0
230vpaddw %ymm0, %ymm5, %ymm0
231vpsrlw $8, %ymm0, %ymm1
232vpand mask_ff(%rip), %ymm0, %ymm0
233vpaddw %ymm1, %ymm0, %ymm1
234vpand mask_f(%rip), %ymm1, %ymm0
235vpsrlw $4, %ymm1, %ymm1
236vpaddw %ymm1, %ymm0, %ymm1
237vpand mask_3(%rip), %ymm1, %ymm0
238vpsrlw $2, %ymm1, %ymm1
239vpaddw %ymm1, %ymm0, %ymm1
240vpand mask_3(%rip), %ymm1, %ymm0
241vpsrlw $2, %ymm1, %ymm1
242vpaddw %ymm1, %ymm0, %ymm1
243vpsubw mask_3(%rip), %ymm1, %ymm14
244vpsraw $15, %ymm14, %ymm15
245vpandn %ymm14, %ymm15, %ymm0
246vpand %ymm15, %ymm1, %ymm14
247vpxor %ymm14, %ymm0, %ymm1
248vmovdqa %ymm1, 160(%rdi)
249vmovdqa 192(%rsi), %ymm0
250vpand %ymm6, %ymm0, %ymm0
251vpsrlw $11, %ymm0, %ymm1
252vpsllw $1, %ymm1, %ymm1
253vpaddw %ymm0, %ymm1, %ymm0
254vpaddw %ymm0, %ymm5, %ymm0
255vpsrlw $8, %ymm0, %ymm1
256vpand mask_ff(%rip), %ymm0, %ymm0
257vpaddw %ymm1, %ymm0, %ymm1
258vpand mask_f(%rip), %ymm1, %ymm0
259vpsrlw $4, %ymm1, %ymm1
260vpaddw %ymm1, %ymm0, %ymm1
261vpand mask_3(%rip), %ymm1, %ymm0
262vpsrlw $2, %ymm1, %ymm1
263vpaddw %ymm1, %ymm0, %ymm1
264vpand mask_3(%rip), %ymm1, %ymm0
265vpsrlw $2, %ymm1, %ymm1
266vpaddw %ymm1, %ymm0, %ymm1
267vpsubw mask_3(%rip), %ymm1, %ymm14
268vpsraw $15, %ymm14, %ymm15
269vpandn %ymm14, %ymm15, %ymm0
270vpand %ymm15, %ymm1, %ymm14
271vpxor %ymm14, %ymm0, %ymm1
272vmovdqa %ymm1, 192(%rdi)
273vmovdqa 224(%rsi), %ymm0
274vpand %ymm6, %ymm0, %ymm0
275vpsrlw $11, %ymm0, %ymm1
276vpsllw $1, %ymm1, %ymm1
277vpaddw %ymm0, %ymm1, %ymm0
278vpaddw %ymm0, %ymm5, %ymm0
279vpsrlw $8, %ymm0, %ymm1
280vpand mask_ff(%rip), %ymm0, %ymm0
281vpaddw %ymm1, %ymm0, %ymm1
282vpand mask_f(%rip), %ymm1, %ymm0
283vpsrlw $4, %ymm1, %ymm1
284vpaddw %ymm1, %ymm0, %ymm1
285vpand mask_3(%rip), %ymm1, %ymm0
286vpsrlw $2, %ymm1, %ymm1
287vpaddw %ymm1, %ymm0, %ymm1
288vpand mask_3(%rip), %ymm1, %ymm0
289vpsrlw $2, %ymm1, %ymm1
290vpaddw %ymm1, %ymm0, %ymm1
291vpsubw mask_3(%rip), %ymm1, %ymm14
292vpsraw $15, %ymm14, %ymm15
293vpandn %ymm14, %ymm15, %ymm0
294vpand %ymm15, %ymm1, %ymm14
295vpxor %ymm14, %ymm0, %ymm1
296vmovdqa %ymm1, 224(%rdi)
297vmovdqa 256(%rsi), %ymm0
298vpand %ymm6, %ymm0, %ymm0
299vpsrlw $11, %ymm0, %ymm1
300vpsllw $1, %ymm1, %ymm1
301vpaddw %ymm0, %ymm1, %ymm0
302vpaddw %ymm0, %ymm5, %ymm0
303vpsrlw $8, %ymm0, %ymm1
304vpand mask_ff(%rip), %ymm0, %ymm0
305vpaddw %ymm1, %ymm0, %ymm1
306vpand mask_f(%rip), %ymm1, %ymm0
307vpsrlw $4, %ymm1, %ymm1
308vpaddw %ymm1, %ymm0, %ymm1
309vpand mask_3(%rip), %ymm1, %ymm0
310vpsrlw $2, %ymm1, %ymm1
311vpaddw %ymm1, %ymm0, %ymm1
312vpand mask_3(%rip), %ymm1, %ymm0
313vpsrlw $2, %ymm1, %ymm1
314vpaddw %ymm1, %ymm0, %ymm1
315vpsubw mask_3(%rip), %ymm1, %ymm14
316vpsraw $15, %ymm14, %ymm15
317vpandn %ymm14, %ymm15, %ymm0
318vpand %ymm15, %ymm1, %ymm14
319vpxor %ymm14, %ymm0, %ymm1
320vmovdqa %ymm1, 256(%rdi)
321vmovdqa 288(%rsi), %ymm0
322vpand %ymm6, %ymm0, %ymm0
323vpsrlw $11, %ymm0, %ymm1
324vpsllw $1, %ymm1, %ymm1
325vpaddw %ymm0, %ymm1, %ymm0
326vpaddw %ymm0, %ymm5, %ymm0
327vpsrlw $8, %ymm0, %ymm1
328vpand mask_ff(%rip), %ymm0, %ymm0
329vpaddw %ymm1, %ymm0, %ymm1
330vpand mask_f(%rip), %ymm1, %ymm0
331vpsrlw $4, %ymm1, %ymm1
332vpaddw %ymm1, %ymm0, %ymm1
333vpand mask_3(%rip), %ymm1, %ymm0
334vpsrlw $2, %ymm1, %ymm1
335vpaddw %ymm1, %ymm0, %ymm1
336vpand mask_3(%rip), %ymm1, %ymm0
337vpsrlw $2, %ymm1, %ymm1
338vpaddw %ymm1, %ymm0, %ymm1
339vpsubw mask_3(%rip), %ymm1, %ymm14
340vpsraw $15, %ymm14, %ymm15
341vpandn %ymm14, %ymm15, %ymm0
342vpand %ymm15, %ymm1, %ymm14
343vpxor %ymm14, %ymm0, %ymm1
344vmovdqa %ymm1, 288(%rdi)
345vmovdqa 320(%rsi), %ymm0
346vpand %ymm6, %ymm0, %ymm0
347vpsrlw $11, %ymm0, %ymm1
348vpsllw $1, %ymm1, %ymm1
349vpaddw %ymm0, %ymm1, %ymm0
350vpaddw %ymm0, %ymm5, %ymm0
351vpsrlw $8, %ymm0, %ymm1
352vpand mask_ff(%rip), %ymm0, %ymm0
353vpaddw %ymm1, %ymm0, %ymm1
354vpand mask_f(%rip), %ymm1, %ymm0
355vpsrlw $4, %ymm1, %ymm1
356vpaddw %ymm1, %ymm0, %ymm1
357vpand mask_3(%rip), %ymm1, %ymm0
358vpsrlw $2, %ymm1, %ymm1
359vpaddw %ymm1, %ymm0, %ymm1
360vpand mask_3(%rip), %ymm1, %ymm0
361vpsrlw $2, %ymm1, %ymm1
362vpaddw %ymm1, %ymm0, %ymm1
363vpsubw mask_3(%rip), %ymm1, %ymm14
364vpsraw $15, %ymm14, %ymm15
365vpandn %ymm14, %ymm15, %ymm0
366vpand %ymm15, %ymm1, %ymm14
367vpxor %ymm14, %ymm0, %ymm1
368vmovdqa %ymm1, 320(%rdi)
369vmovdqa 352(%rsi), %ymm0
370vpand %ymm6, %ymm0, %ymm0
371vpsrlw $11, %ymm0, %ymm1
372vpsllw $1, %ymm1, %ymm1
373vpaddw %ymm0, %ymm1, %ymm0
374vpaddw %ymm0, %ymm5, %ymm0
375vpsrlw $8, %ymm0, %ymm1
376vpand mask_ff(%rip), %ymm0, %ymm0
377vpaddw %ymm1, %ymm0, %ymm1
378vpand mask_f(%rip), %ymm1, %ymm0
379vpsrlw $4, %ymm1, %ymm1
380vpaddw %ymm1, %ymm0, %ymm1
381vpand mask_3(%rip), %ymm1, %ymm0
382vpsrlw $2, %ymm1, %ymm1
383vpaddw %ymm1, %ymm0, %ymm1
384vpand mask_3(%rip), %ymm1, %ymm0
385vpsrlw $2, %ymm1, %ymm1
386vpaddw %ymm1, %ymm0, %ymm1
387vpsubw mask_3(%rip), %ymm1, %ymm14
388vpsraw $15, %ymm14, %ymm15
389vpandn %ymm14, %ymm15, %ymm0
390vpand %ymm15, %ymm1, %ymm14
391vpxor %ymm14, %ymm0, %ymm1
392vmovdqa %ymm1, 352(%rdi)
393vmovdqa 384(%rsi), %ymm0
394vpand %ymm6, %ymm0, %ymm0
395vpsrlw $11, %ymm0, %ymm1
396vpsllw $1, %ymm1, %ymm1
397vpaddw %ymm0, %ymm1, %ymm0
398vpaddw %ymm0, %ymm5, %ymm0
399vpsrlw $8, %ymm0, %ymm1
400vpand mask_ff(%rip), %ymm0, %ymm0
401vpaddw %ymm1, %ymm0, %ymm1
402vpand mask_f(%rip), %ymm1, %ymm0
403vpsrlw $4, %ymm1, %ymm1
404vpaddw %ymm1, %ymm0, %ymm1
405vpand mask_3(%rip), %ymm1, %ymm0
406vpsrlw $2, %ymm1, %ymm1
407vpaddw %ymm1, %ymm0, %ymm1
408vpand mask_3(%rip), %ymm1, %ymm0
409vpsrlw $2, %ymm1, %ymm1
410vpaddw %ymm1, %ymm0, %ymm1
411vpsubw mask_3(%rip), %ymm1, %ymm14
412vpsraw $15, %ymm14, %ymm15
413vpandn %ymm14, %ymm15, %ymm0
414vpand %ymm15, %ymm1, %ymm14
415vpxor %ymm14, %ymm0, %ymm1
416vmovdqa %ymm1, 384(%rdi)
417vmovdqa 416(%rsi), %ymm0
418vpand %ymm6, %ymm0, %ymm0
419vpsrlw $11, %ymm0, %ymm1
420vpsllw $1, %ymm1, %ymm1
421vpaddw %ymm0, %ymm1, %ymm0
422vpaddw %ymm0, %ymm5, %ymm0
423vpsrlw $8, %ymm0, %ymm1
424vpand mask_ff(%rip), %ymm0, %ymm0
425vpaddw %ymm1, %ymm0, %ymm1
426vpand mask_f(%rip), %ymm1, %ymm0
427vpsrlw $4, %ymm1, %ymm1
428vpaddw %ymm1, %ymm0, %ymm1
429vpand mask_3(%rip), %ymm1, %ymm0
430vpsrlw $2, %ymm1, %ymm1
431vpaddw %ymm1, %ymm0, %ymm1
432vpand mask_3(%rip), %ymm1, %ymm0
433vpsrlw $2, %ymm1, %ymm1
434vpaddw %ymm1, %ymm0, %ymm1
435vpsubw mask_3(%rip), %ymm1, %ymm14
436vpsraw $15, %ymm14, %ymm15
437vpandn %ymm14, %ymm15, %ymm0
438vpand %ymm15, %ymm1, %ymm14
439vpxor %ymm14, %ymm0, %ymm1
440vmovdqa %ymm1, 416(%rdi)
441vmovdqa 448(%rsi), %ymm0
442vpand %ymm6, %ymm0, %ymm0
443vpsrlw $11, %ymm0, %ymm1
444vpsllw $1, %ymm1, %ymm1
445vpaddw %ymm0, %ymm1, %ymm0
446vpaddw %ymm0, %ymm5, %ymm0
447vpsrlw $8, %ymm0, %ymm1
448vpand mask_ff(%rip), %ymm0, %ymm0
449vpaddw %ymm1, %ymm0, %ymm1
450vpand mask_f(%rip), %ymm1, %ymm0
451vpsrlw $4, %ymm1, %ymm1
452vpaddw %ymm1, %ymm0, %ymm1
453vpand mask_3(%rip), %ymm1, %ymm0
454vpsrlw $2, %ymm1, %ymm1
455vpaddw %ymm1, %ymm0, %ymm1
456vpand mask_3(%rip), %ymm1, %ymm0
457vpsrlw $2, %ymm1, %ymm1
458vpaddw %ymm1, %ymm0, %ymm1
459vpsubw mask_3(%rip), %ymm1, %ymm14
460vpsraw $15, %ymm14, %ymm15
461vpandn %ymm14, %ymm15, %ymm0
462vpand %ymm15, %ymm1, %ymm14
463vpxor %ymm14, %ymm0, %ymm1
464vmovdqa %ymm1, 448(%rdi)
465vmovdqa 480(%rsi), %ymm0
466vpand %ymm6, %ymm0, %ymm0
467vpsrlw $11, %ymm0, %ymm1
468vpsllw $1, %ymm1, %ymm1
469vpaddw %ymm0, %ymm1, %ymm0
470vpaddw %ymm0, %ymm5, %ymm0
471vpsrlw $8, %ymm0, %ymm1
472vpand mask_ff(%rip), %ymm0, %ymm0
473vpaddw %ymm1, %ymm0, %ymm1
474vpand mask_f(%rip), %ymm1, %ymm0
475vpsrlw $4, %ymm1, %ymm1
476vpaddw %ymm1, %ymm0, %ymm1
477vpand mask_3(%rip), %ymm1, %ymm0
478vpsrlw $2, %ymm1, %ymm1
479vpaddw %ymm1, %ymm0, %ymm1
480vpand mask_3(%rip), %ymm1, %ymm0
481vpsrlw $2, %ymm1, %ymm1
482vpaddw %ymm1, %ymm0, %ymm1
483vpsubw mask_3(%rip), %ymm1, %ymm14
484vpsraw $15, %ymm14, %ymm15
485vpandn %ymm14, %ymm15, %ymm0
486vpand %ymm15, %ymm1, %ymm14
487vpxor %ymm14, %ymm0, %ymm1
488vmovdqa %ymm1, 480(%rdi)
489vmovdqa 512(%rsi), %ymm0
490vpand %ymm6, %ymm0, %ymm0
491vpsrlw $11, %ymm0, %ymm1
492vpsllw $1, %ymm1, %ymm1
493vpaddw %ymm0, %ymm1, %ymm0
494vpaddw %ymm0, %ymm5, %ymm0
495vpsrlw $8, %ymm0, %ymm1
496vpand mask_ff(%rip), %ymm0, %ymm0
497vpaddw %ymm1, %ymm0, %ymm1
498vpand mask_f(%rip), %ymm1, %ymm0
499vpsrlw $4, %ymm1, %ymm1
500vpaddw %ymm1, %ymm0, %ymm1
501vpand mask_3(%rip), %ymm1, %ymm0
502vpsrlw $2, %ymm1, %ymm1
503vpaddw %ymm1, %ymm0, %ymm1
504vpand mask_3(%rip), %ymm1, %ymm0
505vpsrlw $2, %ymm1, %ymm1
506vpaddw %ymm1, %ymm0, %ymm1
507vpsubw mask_3(%rip), %ymm1, %ymm14
508vpsraw $15, %ymm14, %ymm15
509vpandn %ymm14, %ymm15, %ymm0
510vpand %ymm15, %ymm1, %ymm14
511vpxor %ymm14, %ymm0, %ymm1
512vmovdqa %ymm1, 512(%rdi)
513vmovdqa 544(%rsi), %ymm0
514vpand %ymm6, %ymm0, %ymm0
515vpsrlw $11, %ymm0, %ymm1
516vpsllw $1, %ymm1, %ymm1
517vpaddw %ymm0, %ymm1, %ymm0
518vpaddw %ymm0, %ymm5, %ymm0
519vpsrlw $8, %ymm0, %ymm1
520vpand mask_ff(%rip), %ymm0, %ymm0
521vpaddw %ymm1, %ymm0, %ymm1
522vpand mask_f(%rip), %ymm1, %ymm0
523vpsrlw $4, %ymm1, %ymm1
524vpaddw %ymm1, %ymm0, %ymm1
525vpand mask_3(%rip), %ymm1, %ymm0
526vpsrlw $2, %ymm1, %ymm1
527vpaddw %ymm1, %ymm0, %ymm1
528vpand mask_3(%rip), %ymm1, %ymm0
529vpsrlw $2, %ymm1, %ymm1
530vpaddw %ymm1, %ymm0, %ymm1
531vpsubw mask_3(%rip), %ymm1, %ymm14
532vpsraw $15, %ymm14, %ymm15
533vpandn %ymm14, %ymm15, %ymm0
534vpand %ymm15, %ymm1, %ymm14
535vpxor %ymm14, %ymm0, %ymm1
536vmovdqa %ymm1, 544(%rdi)
537vmovdqa 576(%rsi), %ymm0
538vpand %ymm6, %ymm0, %ymm0
539vpsrlw $11, %ymm0, %ymm1
540vpsllw $1, %ymm1, %ymm1
541vpaddw %ymm0, %ymm1, %ymm0
542vpaddw %ymm0, %ymm5, %ymm0
543vpsrlw $8, %ymm0, %ymm1
544vpand mask_ff(%rip), %ymm0, %ymm0
545vpaddw %ymm1, %ymm0, %ymm1
546vpand mask_f(%rip), %ymm1, %ymm0
547vpsrlw $4, %ymm1, %ymm1
548vpaddw %ymm1, %ymm0, %ymm1
549vpand mask_3(%rip), %ymm1, %ymm0
550vpsrlw $2, %ymm1, %ymm1
551vpaddw %ymm1, %ymm0, %ymm1
552vpand mask_3(%rip), %ymm1, %ymm0
553vpsrlw $2, %ymm1, %ymm1
554vpaddw %ymm1, %ymm0, %ymm1
555vpsubw mask_3(%rip), %ymm1, %ymm14
556vpsraw $15, %ymm14, %ymm15
557vpandn %ymm14, %ymm15, %ymm0
558vpand %ymm15, %ymm1, %ymm14
559vpxor %ymm14, %ymm0, %ymm1
560vmovdqa %ymm1, 576(%rdi)
561vmovdqa 608(%rsi), %ymm0
562vpand %ymm6, %ymm0, %ymm0
563vpsrlw $11, %ymm0, %ymm1
564vpsllw $1, %ymm1, %ymm1
565vpaddw %ymm0, %ymm1, %ymm0
566vpaddw %ymm0, %ymm5, %ymm0
567vpsrlw $8, %ymm0, %ymm1
568vpand mask_ff(%rip), %ymm0, %ymm0
569vpaddw %ymm1, %ymm0, %ymm1
570vpand mask_f(%rip), %ymm1, %ymm0
571vpsrlw $4, %ymm1, %ymm1
572vpaddw %ymm1, %ymm0, %ymm1
573vpand mask_3(%rip), %ymm1, %ymm0
574vpsrlw $2, %ymm1, %ymm1
575vpaddw %ymm1, %ymm0, %ymm1
576vpand mask_3(%rip), %ymm1, %ymm0
577vpsrlw $2, %ymm1, %ymm1
578vpaddw %ymm1, %ymm0, %ymm1
579vpsubw mask_3(%rip), %ymm1, %ymm14
580vpsraw $15, %ymm14, %ymm15
581vpandn %ymm14, %ymm15, %ymm0
582vpand %ymm15, %ymm1, %ymm14
583vpxor %ymm14, %ymm0, %ymm1
584vmovdqa %ymm1, 608(%rdi)
585vmovdqa 640(%rsi), %ymm0
586vpand %ymm6, %ymm0, %ymm0
587vpsrlw $11, %ymm0, %ymm1
588vpsllw $1, %ymm1, %ymm1
589vpaddw %ymm0, %ymm1, %ymm0
590vpaddw %ymm0, %ymm5, %ymm0
591vpsrlw $8, %ymm0, %ymm1
592vpand mask_ff(%rip), %ymm0, %ymm0
593vpaddw %ymm1, %ymm0, %ymm1
594vpand mask_f(%rip), %ymm1, %ymm0
595vpsrlw $4, %ymm1, %ymm1
596vpaddw %ymm1, %ymm0, %ymm1
597vpand mask_3(%rip), %ymm1, %ymm0
598vpsrlw $2, %ymm1, %ymm1
599vpaddw %ymm1, %ymm0, %ymm1
600vpand mask_3(%rip), %ymm1, %ymm0
601vpsrlw $2, %ymm1, %ymm1
602vpaddw %ymm1, %ymm0, %ymm1
603vpsubw mask_3(%rip), %ymm1, %ymm14
604vpsraw $15, %ymm14, %ymm15
605vpandn %ymm14, %ymm15, %ymm0
606vpand %ymm15, %ymm1, %ymm14
607vpxor %ymm14, %ymm0, %ymm1
608vmovdqa %ymm1, 640(%rdi)
609vmovdqa 672(%rsi), %ymm0
610vpand %ymm6, %ymm0, %ymm0
611vpsrlw $11, %ymm0, %ymm1
612vpsllw $1, %ymm1, %ymm1
613vpaddw %ymm0, %ymm1, %ymm0
614vpaddw %ymm0, %ymm5, %ymm0
615vpsrlw $8, %ymm0, %ymm1
616vpand mask_ff(%rip), %ymm0, %ymm0
617vpaddw %ymm1, %ymm0, %ymm1
618vpand mask_f(%rip), %ymm1, %ymm0
619vpsrlw $4, %ymm1, %ymm1
620vpaddw %ymm1, %ymm0, %ymm1
621vpand mask_3(%rip), %ymm1, %ymm0
622vpsrlw $2, %ymm1, %ymm1
623vpaddw %ymm1, %ymm0, %ymm1
624vpand mask_3(%rip), %ymm1, %ymm0
625vpsrlw $2, %ymm1, %ymm1
626vpaddw %ymm1, %ymm0, %ymm1
627vpsubw mask_3(%rip), %ymm1, %ymm14
628vpsraw $15, %ymm14, %ymm15
629vpandn %ymm14, %ymm15, %ymm0
630vpand %ymm15, %ymm1, %ymm14
631vpxor %ymm14, %ymm0, %ymm1
632vmovdqa %ymm1, 672(%rdi)
633vmovdqa 704(%rsi), %ymm0
634vpand %ymm6, %ymm0, %ymm0
635vpsrlw $11, %ymm0, %ymm1
636vpsllw $1, %ymm1, %ymm1
637vpaddw %ymm0, %ymm1, %ymm0
638vpaddw %ymm0, %ymm5, %ymm0
639vpsrlw $8, %ymm0, %ymm1
640vpand mask_ff(%rip), %ymm0, %ymm0
641vpaddw %ymm1, %ymm0, %ymm1
642vpand mask_f(%rip), %ymm1, %ymm0
643vpsrlw $4, %ymm1, %ymm1
644vpaddw %ymm1, %ymm0, %ymm1
645vpand mask_3(%rip), %ymm1, %ymm0
646vpsrlw $2, %ymm1, %ymm1
647vpaddw %ymm1, %ymm0, %ymm1
648vpand mask_3(%rip), %ymm1, %ymm0
649vpsrlw $2, %ymm1, %ymm1
650vpaddw %ymm1, %ymm0, %ymm1
651vpsubw mask_3(%rip), %ymm1, %ymm14
652vpsraw $15, %ymm14, %ymm15
653vpandn %ymm14, %ymm15, %ymm0
654vpand %ymm15, %ymm1, %ymm14
655vpxor %ymm14, %ymm0, %ymm1
656vmovdqa %ymm1, 704(%rdi)
657vmovdqa 736(%rsi), %ymm0
658vpand %ymm6, %ymm0, %ymm0
659vpsrlw $11, %ymm0, %ymm1
660vpsllw $1, %ymm1, %ymm1
661vpaddw %ymm0, %ymm1, %ymm0
662vpaddw %ymm0, %ymm5, %ymm0
663vpsrlw $8, %ymm0, %ymm1
664vpand mask_ff(%rip), %ymm0, %ymm0
665vpaddw %ymm1, %ymm0, %ymm1
666vpand mask_f(%rip), %ymm1, %ymm0
667vpsrlw $4, %ymm1, %ymm1
668vpaddw %ymm1, %ymm0, %ymm1
669vpand mask_3(%rip), %ymm1, %ymm0
670vpsrlw $2, %ymm1, %ymm1
671vpaddw %ymm1, %ymm0, %ymm1
672vpand mask_3(%rip), %ymm1, %ymm0
673vpsrlw $2, %ymm1, %ymm1
674vpaddw %ymm1, %ymm0, %ymm1
675vpsubw mask_3(%rip), %ymm1, %ymm14
676vpsraw $15, %ymm14, %ymm15
677vpandn %ymm14, %ymm15, %ymm0
678vpand %ymm15, %ymm1, %ymm14
679vpxor %ymm14, %ymm0, %ymm1
680vmovdqa %ymm1, 736(%rdi)
681vmovdqa 768(%rsi), %ymm0
682vpand %ymm6, %ymm0, %ymm0
683vpsrlw $11, %ymm0, %ymm1
684vpsllw $1, %ymm1, %ymm1
685vpaddw %ymm0, %ymm1, %ymm0
686vpaddw %ymm0, %ymm5, %ymm0
687vpsrlw $8, %ymm0, %ymm1
688vpand mask_ff(%rip), %ymm0, %ymm0
689vpaddw %ymm1, %ymm0, %ymm1
690vpand mask_f(%rip), %ymm1, %ymm0
691vpsrlw $4, %ymm1, %ymm1
692vpaddw %ymm1, %ymm0, %ymm1
693vpand mask_3(%rip), %ymm1, %ymm0
694vpsrlw $2, %ymm1, %ymm1
695vpaddw %ymm1, %ymm0, %ymm1
696vpand mask_3(%rip), %ymm1, %ymm0
697vpsrlw $2, %ymm1, %ymm1
698vpaddw %ymm1, %ymm0, %ymm1
699vpsubw mask_3(%rip), %ymm1, %ymm14
700vpsraw $15, %ymm14, %ymm15
701vpandn %ymm14, %ymm15, %ymm0
702vpand %ymm15, %ymm1, %ymm14
703vpxor %ymm14, %ymm0, %ymm1
704vmovdqa %ymm1, 768(%rdi)
705vmovdqa 800(%rsi), %ymm0
706vpand %ymm6, %ymm0, %ymm0
707vpsrlw $11, %ymm0, %ymm1
708vpsllw $1, %ymm1, %ymm1
709vpaddw %ymm0, %ymm1, %ymm0
710vpaddw %ymm0, %ymm5, %ymm0
711vpsrlw $8, %ymm0, %ymm1
712vpand mask_ff(%rip), %ymm0, %ymm0
713vpaddw %ymm1, %ymm0, %ymm1
714vpand mask_f(%rip), %ymm1, %ymm0
715vpsrlw $4, %ymm1, %ymm1
716vpaddw %ymm1, %ymm0, %ymm1
717vpand mask_3(%rip), %ymm1, %ymm0
718vpsrlw $2, %ymm1, %ymm1
719vpaddw %ymm1, %ymm0, %ymm1
720vpand mask_3(%rip), %ymm1, %ymm0
721vpsrlw $2, %ymm1, %ymm1
722vpaddw %ymm1, %ymm0, %ymm1
723vpsubw mask_3(%rip), %ymm1, %ymm14
724vpsraw $15, %ymm14, %ymm15
725vpandn %ymm14, %ymm15, %ymm0
726vpand %ymm15, %ymm1, %ymm14
727vpxor %ymm14, %ymm0, %ymm1
728vmovdqa %ymm1, 800(%rdi)
729vmovdqa 832(%rsi), %ymm0
730vpand %ymm6, %ymm0, %ymm0
731vpsrlw $11, %ymm0, %ymm1
732vpsllw $1, %ymm1, %ymm1
733vpaddw %ymm0, %ymm1, %ymm0
734vpaddw %ymm0, %ymm5, %ymm0
735vpsrlw $8, %ymm0, %ymm1
736vpand mask_ff(%rip), %ymm0, %ymm0
737vpaddw %ymm1, %ymm0, %ymm1
738vpand mask_f(%rip), %ymm1, %ymm0
739vpsrlw $4, %ymm1, %ymm1
740vpaddw %ymm1, %ymm0, %ymm1
741vpand mask_3(%rip), %ymm1, %ymm0
742vpsrlw $2, %ymm1, %ymm1
743vpaddw %ymm1, %ymm0, %ymm1
744vpand mask_3(%rip), %ymm1, %ymm0
745vpsrlw $2, %ymm1, %ymm1
746vpaddw %ymm1, %ymm0, %ymm1
747vpsubw mask_3(%rip), %ymm1, %ymm14
748vpsraw $15, %ymm14, %ymm15
749vpandn %ymm14, %ymm15, %ymm0
750vpand %ymm15, %ymm1, %ymm14
751vpxor %ymm14, %ymm0, %ymm1
752vmovdqa %ymm1, 832(%rdi)
753vmovdqa 864(%rsi), %ymm0
754vpand %ymm6, %ymm0, %ymm0
755vpsrlw $11, %ymm0, %ymm1
756vpsllw $1, %ymm1, %ymm1
757vpaddw %ymm0, %ymm1, %ymm0
758vpaddw %ymm0, %ymm5, %ymm0
759vpsrlw $8, %ymm0, %ymm1
760vpand mask_ff(%rip), %ymm0, %ymm0
761vpaddw %ymm1, %ymm0, %ymm1
762vpand mask_f(%rip), %ymm1, %ymm0
763vpsrlw $4, %ymm1, %ymm1
764vpaddw %ymm1, %ymm0, %ymm1
765vpand mask_3(%rip), %ymm1, %ymm0
766vpsrlw $2, %ymm1, %ymm1
767vpaddw %ymm1, %ymm0, %ymm1
768vpand mask_3(%rip), %ymm1, %ymm0
769vpsrlw $2, %ymm1, %ymm1
770vpaddw %ymm1, %ymm0, %ymm1
771vpsubw mask_3(%rip), %ymm1, %ymm14
772vpsraw $15, %ymm14, %ymm15
773vpandn %ymm14, %ymm15, %ymm0
774vpand %ymm15, %ymm1, %ymm14
775vpxor %ymm14, %ymm0, %ymm1
776vmovdqa %ymm1, 864(%rdi)
777vmovdqa 896(%rsi), %ymm0
778vpand %ymm6, %ymm0, %ymm0
779vpsrlw $11, %ymm0, %ymm1
780vpsllw $1, %ymm1, %ymm1
781vpaddw %ymm0, %ymm1, %ymm0
782vpaddw %ymm0, %ymm5, %ymm0
783vpsrlw $8, %ymm0, %ymm1
784vpand mask_ff(%rip), %ymm0, %ymm0
785vpaddw %ymm1, %ymm0, %ymm1
786vpand mask_f(%rip), %ymm1, %ymm0
787vpsrlw $4, %ymm1, %ymm1
788vpaddw %ymm1, %ymm0, %ymm1
789vpand mask_3(%rip), %ymm1, %ymm0
790vpsrlw $2, %ymm1, %ymm1
791vpaddw %ymm1, %ymm0, %ymm1
792vpand mask_3(%rip), %ymm1, %ymm0
793vpsrlw $2, %ymm1, %ymm1
794vpaddw %ymm1, %ymm0, %ymm1
795vpsubw mask_3(%rip), %ymm1, %ymm14
796vpsraw $15, %ymm14, %ymm15
797vpandn %ymm14, %ymm15, %ymm0
798vpand %ymm15, %ymm1, %ymm14
799vpxor %ymm14, %ymm0, %ymm1
800vmovdqa %ymm1, 896(%rdi)
801vmovdqa 928(%rsi), %ymm0
802vpand %ymm6, %ymm0, %ymm0
803vpsrlw $11, %ymm0, %ymm1
804vpsllw $1, %ymm1, %ymm1
805vpaddw %ymm0, %ymm1, %ymm0
806vpaddw %ymm0, %ymm5, %ymm0
807vpsrlw $8, %ymm0, %ymm1
808vpand mask_ff(%rip), %ymm0, %ymm0
809vpaddw %ymm1, %ymm0, %ymm1
810vpand mask_f(%rip), %ymm1, %ymm0
811vpsrlw $4, %ymm1, %ymm1
812vpaddw %ymm1, %ymm0, %ymm1
813vpand mask_3(%rip), %ymm1, %ymm0
814vpsrlw $2, %ymm1, %ymm1
815vpaddw %ymm1, %ymm0, %ymm1
816vpand mask_3(%rip), %ymm1, %ymm0
817vpsrlw $2, %ymm1, %ymm1
818vpaddw %ymm1, %ymm0, %ymm1
819vpsubw mask_3(%rip), %ymm1, %ymm14
820vpsraw $15, %ymm14, %ymm15
821vpandn %ymm14, %ymm15, %ymm0
822vpand %ymm15, %ymm1, %ymm14
823vpxor %ymm14, %ymm0, %ymm1
824vmovdqa %ymm1, 928(%rdi)
825vmovdqa 960(%rsi), %ymm0
826vpand %ymm6, %ymm0, %ymm0
827vpsrlw $11, %ymm0, %ymm1
828vpsllw $1, %ymm1, %ymm1
829vpaddw %ymm0, %ymm1, %ymm0
830vpaddw %ymm0, %ymm5, %ymm0
831vpsrlw $8, %ymm0, %ymm1
832vpand mask_ff(%rip), %ymm0, %ymm0
833vpaddw %ymm1, %ymm0, %ymm1
834vpand mask_f(%rip), %ymm1, %ymm0
835vpsrlw $4, %ymm1, %ymm1
836vpaddw %ymm1, %ymm0, %ymm1
837vpand mask_3(%rip), %ymm1, %ymm0
838vpsrlw $2, %ymm1, %ymm1
839vpaddw %ymm1, %ymm0, %ymm1
840vpand mask_3(%rip), %ymm1, %ymm0
841vpsrlw $2, %ymm1, %ymm1
842vpaddw %ymm1, %ymm0, %ymm1
843vpsubw mask_3(%rip), %ymm1, %ymm14
844vpsraw $15, %ymm14, %ymm15
845vpandn %ymm14, %ymm15, %ymm0
846vpand %ymm15, %ymm1, %ymm14
847vpxor %ymm14, %ymm0, %ymm1
848vmovdqa %ymm1, 960(%rdi)
849vmovdqa 992(%rsi), %ymm0
850vpand %ymm6, %ymm0, %ymm0
851vpsrlw $11, %ymm0, %ymm1
852vpsllw $1, %ymm1, %ymm1
853vpaddw %ymm0, %ymm1, %ymm0
854vpaddw %ymm0, %ymm5, %ymm0
855vpsrlw $8, %ymm0, %ymm1
856vpand mask_ff(%rip), %ymm0, %ymm0
857vpaddw %ymm1, %ymm0, %ymm1
858vpand mask_f(%rip), %ymm1, %ymm0
859vpsrlw $4, %ymm1, %ymm1
860vpaddw %ymm1, %ymm0, %ymm1
861vpand mask_3(%rip), %ymm1, %ymm0
862vpsrlw $2, %ymm1, %ymm1
863vpaddw %ymm1, %ymm0, %ymm1
864vpand mask_3(%rip), %ymm1, %ymm0
865vpsrlw $2, %ymm1, %ymm1
866vpaddw %ymm1, %ymm0, %ymm1
867vpsubw mask_3(%rip), %ymm1, %ymm14
868vpsraw $15, %ymm14, %ymm15
869vpandn %ymm14, %ymm15, %ymm0
870vpand %ymm15, %ymm1, %ymm14
871vpxor %ymm14, %ymm0, %ymm1
872vmovdqa %ymm1, 992(%rdi)
873vmovdqa 1024(%rsi), %ymm0
874vpand %ymm6, %ymm0, %ymm0
875vpsrlw $11, %ymm0, %ymm1
876vpsllw $1, %ymm1, %ymm1
877vpaddw %ymm0, %ymm1, %ymm0
878vpaddw %ymm0, %ymm5, %ymm0
879vpsrlw $8, %ymm0, %ymm1
880vpand mask_ff(%rip), %ymm0, %ymm0
881vpaddw %ymm1, %ymm0, %ymm1
882vpand mask_f(%rip), %ymm1, %ymm0
883vpsrlw $4, %ymm1, %ymm1
884vpaddw %ymm1, %ymm0, %ymm1
885vpand mask_3(%rip), %ymm1, %ymm0
886vpsrlw $2, %ymm1, %ymm1
887vpaddw %ymm1, %ymm0, %ymm1
888vpand mask_3(%rip), %ymm1, %ymm0
889vpsrlw $2, %ymm1, %ymm1
890vpaddw %ymm1, %ymm0, %ymm1
891vpsubw mask_3(%rip), %ymm1, %ymm14
892vpsraw $15, %ymm14, %ymm15
893vpandn %ymm14, %ymm15, %ymm0
894vpand %ymm15, %ymm1, %ymm14
895vpxor %ymm14, %ymm0, %ymm1
896vmovdqa %ymm1, 1024(%rdi)
897vmovdqa 1056(%rsi), %ymm0
898vpand %ymm6, %ymm0, %ymm0
899vpsrlw $11, %ymm0, %ymm1
900vpsllw $1, %ymm1, %ymm1
901vpaddw %ymm0, %ymm1, %ymm0
902vpaddw %ymm0, %ymm5, %ymm0
903vpsrlw $8, %ymm0, %ymm1
904vpand mask_ff(%rip), %ymm0, %ymm0
905vpaddw %ymm1, %ymm0, %ymm1
906vpand mask_f(%rip), %ymm1, %ymm0
907vpsrlw $4, %ymm1, %ymm1
908vpaddw %ymm1, %ymm0, %ymm1
909vpand mask_3(%rip), %ymm1, %ymm0
910vpsrlw $2, %ymm1, %ymm1
911vpaddw %ymm1, %ymm0, %ymm1
912vpand mask_3(%rip), %ymm1, %ymm0
913vpsrlw $2, %ymm1, %ymm1
914vpaddw %ymm1, %ymm0, %ymm1
915vpsubw mask_3(%rip), %ymm1, %ymm14
916vpsraw $15, %ymm14, %ymm15
917vpandn %ymm14, %ymm15, %ymm0
918vpand %ymm15, %ymm1, %ymm14
919vpxor %ymm14, %ymm0, %ymm1
920vmovdqa %ymm1, 1056(%rdi)
921vmovdqa 1088(%rsi), %ymm0
922vpand %ymm6, %ymm0, %ymm0
923vpsrlw $11, %ymm0, %ymm1
924vpsllw $1, %ymm1, %ymm1
925vpaddw %ymm0, %ymm1, %ymm0
926vpaddw %ymm0, %ymm5, %ymm0
927vpsrlw $8, %ymm0, %ymm1
928vpand mask_ff(%rip), %ymm0, %ymm0
929vpaddw %ymm1, %ymm0, %ymm1
930vpand mask_f(%rip), %ymm1, %ymm0
931vpsrlw $4, %ymm1, %ymm1
932vpaddw %ymm1, %ymm0, %ymm1
933vpand mask_3(%rip), %ymm1, %ymm0
934vpsrlw $2, %ymm1, %ymm1
935vpaddw %ymm1, %ymm0, %ymm1
936vpand mask_3(%rip), %ymm1, %ymm0
937vpsrlw $2, %ymm1, %ymm1
938vpaddw %ymm1, %ymm0, %ymm1
939vpsubw mask_3(%rip), %ymm1, %ymm14
940vpsraw $15, %ymm14, %ymm15
941vpandn %ymm14, %ymm15, %ymm0
942vpand %ymm15, %ymm1, %ymm14
943vpxor %ymm14, %ymm0, %ymm1
944vmovdqa %ymm1, 1088(%rdi)
945vmovdqa 1120(%rsi), %ymm0
946vpand %ymm6, %ymm0, %ymm0
947vpsrlw $11, %ymm0, %ymm1
948vpsllw $1, %ymm1, %ymm1
949vpaddw %ymm0, %ymm1, %ymm0
950vpaddw %ymm0, %ymm5, %ymm0
951vpsrlw $8, %ymm0, %ymm1
952vpand mask_ff(%rip), %ymm0, %ymm0
953vpaddw %ymm1, %ymm0, %ymm1
954vpand mask_f(%rip), %ymm1, %ymm0
955vpsrlw $4, %ymm1, %ymm1
956vpaddw %ymm1, %ymm0, %ymm1
957vpand mask_3(%rip), %ymm1, %ymm0
958vpsrlw $2, %ymm1, %ymm1
959vpaddw %ymm1, %ymm0, %ymm1
960vpand mask_3(%rip), %ymm1, %ymm0
961vpsrlw $2, %ymm1, %ymm1
962vpaddw %ymm1, %ymm0, %ymm1
963vpsubw mask_3(%rip), %ymm1, %ymm14
964vpsraw $15, %ymm14, %ymm15
965vpandn %ymm14, %ymm15, %ymm0
966vpand %ymm15, %ymm1, %ymm14
967vpxor %ymm14, %ymm0, %ymm1
968vmovdqa %ymm1, 1120(%rdi)
969vmovdqa 1152(%rsi), %ymm0
970vpand %ymm6, %ymm0, %ymm0
971vpsrlw $11, %ymm0, %ymm1
972vpsllw $1, %ymm1, %ymm1
973vpaddw %ymm0, %ymm1, %ymm0
974vpaddw %ymm0, %ymm5, %ymm0
975vpsrlw $8, %ymm0, %ymm1
976vpand mask_ff(%rip), %ymm0, %ymm0
977vpaddw %ymm1, %ymm0, %ymm1
978vpand mask_f(%rip), %ymm1, %ymm0
979vpsrlw $4, %ymm1, %ymm1
980vpaddw %ymm1, %ymm0, %ymm1
981vpand mask_3(%rip), %ymm1, %ymm0
982vpsrlw $2, %ymm1, %ymm1
983vpaddw %ymm1, %ymm0, %ymm1
984vpand mask_3(%rip), %ymm1, %ymm0
985vpsrlw $2, %ymm1, %ymm1
986vpaddw %ymm1, %ymm0, %ymm1
987vpsubw mask_3(%rip), %ymm1, %ymm14
988vpsraw $15, %ymm14, %ymm15
989vpandn %ymm14, %ymm15, %ymm0
990vpand %ymm15, %ymm1, %ymm14
991vpxor %ymm14, %ymm0, %ymm1
992vmovdqa %ymm1, 1152(%rdi)
993vmovdqa 1184(%rsi), %ymm0
994vpand %ymm6, %ymm0, %ymm0
995vpsrlw $11, %ymm0, %ymm1
996vpsllw $1, %ymm1, %ymm1
997vpaddw %ymm0, %ymm1, %ymm0
998vpaddw %ymm0, %ymm5, %ymm0
999vpsrlw $8, %ymm0, %ymm1
1000vpand mask_ff(%rip), %ymm0, %ymm0
1001vpaddw %ymm1, %ymm0, %ymm1
1002vpand mask_f(%rip), %ymm1, %ymm0
1003vpsrlw $4, %ymm1, %ymm1
1004vpaddw %ymm1, %ymm0, %ymm1
1005vpand mask_3(%rip), %ymm1, %ymm0
1006vpsrlw $2, %ymm1, %ymm1
1007vpaddw %ymm1, %ymm0, %ymm1
1008vpand mask_3(%rip), %ymm1, %ymm0
1009vpsrlw $2, %ymm1, %ymm1
1010vpaddw %ymm1, %ymm0, %ymm1
1011vpsubw mask_3(%rip), %ymm1, %ymm14
1012vpsraw $15, %ymm14, %ymm15
1013vpandn %ymm14, %ymm15, %ymm0
1014vpand %ymm15, %ymm1, %ymm14
1015vpxor %ymm14, %ymm0, %ymm1
1016vmovdqa %ymm1, 1184(%rdi)
1017vmovdqa 1216(%rsi), %ymm0
1018vpand %ymm6, %ymm0, %ymm0
1019vpsrlw $11, %ymm0, %ymm1
1020vpsllw $1, %ymm1, %ymm1
1021vpaddw %ymm0, %ymm1, %ymm0
1022vpaddw %ymm0, %ymm5, %ymm0
1023vpsrlw $8, %ymm0, %ymm1
1024vpand mask_ff(%rip), %ymm0, %ymm0
1025vpaddw %ymm1, %ymm0, %ymm1
1026vpand mask_f(%rip), %ymm1, %ymm0
1027vpsrlw $4, %ymm1, %ymm1
1028vpaddw %ymm1, %ymm0, %ymm1
1029vpand mask_3(%rip), %ymm1, %ymm0
1030vpsrlw $2, %ymm1, %ymm1
1031vpaddw %ymm1, %ymm0, %ymm1
1032vpand mask_3(%rip), %ymm1, %ymm0
1033vpsrlw $2, %ymm1, %ymm1
1034vpaddw %ymm1, %ymm0, %ymm1
1035vpsubw mask_3(%rip), %ymm1, %ymm14
1036vpsraw $15, %ymm14, %ymm15
1037vpandn %ymm14, %ymm15, %ymm0
1038vpand %ymm15, %ymm1, %ymm14
1039vpxor %ymm14, %ymm0, %ymm1
1040vmovdqa %ymm1, 1216(%rdi)
1041vmovdqa 1248(%rsi), %ymm0
1042vpand %ymm6, %ymm0, %ymm0
1043vpsrlw $11, %ymm0, %ymm1
1044vpsllw $1, %ymm1, %ymm1
1045vpaddw %ymm0, %ymm1, %ymm0
1046vpaddw %ymm0, %ymm5, %ymm0
1047vpsrlw $8, %ymm0, %ymm1
1048vpand mask_ff(%rip), %ymm0, %ymm0
1049vpaddw %ymm1, %ymm0, %ymm1
1050vpand mask_f(%rip), %ymm1, %ymm0
1051vpsrlw $4, %ymm1, %ymm1
1052vpaddw %ymm1, %ymm0, %ymm1
1053vpand mask_3(%rip), %ymm1, %ymm0
1054vpsrlw $2, %ymm1, %ymm1
1055vpaddw %ymm1, %ymm0, %ymm1
1056vpand mask_3(%rip), %ymm1, %ymm0
1057vpsrlw $2, %ymm1, %ymm1
1058vpaddw %ymm1, %ymm0, %ymm1
1059vpsubw mask_3(%rip), %ymm1, %ymm14
1060vpsraw $15, %ymm14, %ymm15
1061vpandn %ymm14, %ymm15, %ymm0
1062vpand %ymm15, %ymm1, %ymm14
1063vpxor %ymm14, %ymm0, %ymm1
1064vmovdqa %ymm1, 1248(%rdi)
1065vmovdqa 1280(%rsi), %ymm0
1066vpand %ymm6, %ymm0, %ymm0
1067vpsrlw $11, %ymm0, %ymm1
1068vpsllw $1, %ymm1, %ymm1
1069vpaddw %ymm0, %ymm1, %ymm0
1070vpaddw %ymm0, %ymm5, %ymm0
1071vpsrlw $8, %ymm0, %ymm1
1072vpand mask_ff(%rip), %ymm0, %ymm0
1073vpaddw %ymm1, %ymm0, %ymm1
1074vpand mask_f(%rip), %ymm1, %ymm0
1075vpsrlw $4, %ymm1, %ymm1
1076vpaddw %ymm1, %ymm0, %ymm1
1077vpand mask_3(%rip), %ymm1, %ymm0
1078vpsrlw $2, %ymm1, %ymm1
1079vpaddw %ymm1, %ymm0, %ymm1
1080vpand mask_3(%rip), %ymm1, %ymm0
1081vpsrlw $2, %ymm1, %ymm1
1082vpaddw %ymm1, %ymm0, %ymm1
1083vpsubw mask_3(%rip), %ymm1, %ymm14
1084vpsraw $15, %ymm14, %ymm15
1085vpandn %ymm14, %ymm15, %ymm0
1086vpand %ymm15, %ymm1, %ymm14
1087vpxor %ymm14, %ymm0, %ymm1
1088vmovdqa %ymm1, 1280(%rdi)
1089vmovdqa 1312(%rsi), %ymm0
1090vpand %ymm6, %ymm0, %ymm0
1091vpsrlw $11, %ymm0, %ymm1
1092vpsllw $1, %ymm1, %ymm1
1093vpaddw %ymm0, %ymm1, %ymm0
1094vpaddw %ymm0, %ymm5, %ymm0
1095vpsrlw $8, %ymm0, %ymm1
1096vpand mask_ff(%rip), %ymm0, %ymm0
1097vpaddw %ymm1, %ymm0, %ymm1
1098vpand mask_f(%rip), %ymm1, %ymm0
1099vpsrlw $4, %ymm1, %ymm1
1100vpaddw %ymm1, %ymm0, %ymm1
1101vpand mask_3(%rip), %ymm1, %ymm0
1102vpsrlw $2, %ymm1, %ymm1
1103vpaddw %ymm1, %ymm0, %ymm1
1104vpand mask_3(%rip), %ymm1, %ymm0
1105vpsrlw $2, %ymm1, %ymm1
1106vpaddw %ymm1, %ymm0, %ymm1
1107vpsubw mask_3(%rip), %ymm1, %ymm14
1108vpsraw $15, %ymm14, %ymm15
1109vpandn %ymm14, %ymm15, %ymm0
1110vpand %ymm15, %ymm1, %ymm14
1111vpxor %ymm14, %ymm0, %ymm1
1112vmovdqa %ymm1, 1312(%rdi)
1113vmovdqa 1344(%rsi), %ymm0
1114vpand %ymm6, %ymm0, %ymm0
1115vpsrlw $11, %ymm0, %ymm1
1116vpsllw $1, %ymm1, %ymm1
1117vpaddw %ymm0, %ymm1, %ymm0
1118vpaddw %ymm0, %ymm5, %ymm0
1119vpsrlw $8, %ymm0, %ymm1
1120vpand mask_ff(%rip), %ymm0, %ymm0
1121vpaddw %ymm1, %ymm0, %ymm1
1122vpand mask_f(%rip), %ymm1, %ymm0
1123vpsrlw $4, %ymm1, %ymm1
1124vpaddw %ymm1, %ymm0, %ymm1
1125vpand mask_3(%rip), %ymm1, %ymm0
1126vpsrlw $2, %ymm1, %ymm1
1127vpaddw %ymm1, %ymm0, %ymm1
1128vpand mask_3(%rip), %ymm1, %ymm0
1129vpsrlw $2, %ymm1, %ymm1
1130vpaddw %ymm1, %ymm0, %ymm1
1131vpsubw mask_3(%rip), %ymm1, %ymm14
1132vpsraw $15, %ymm14, %ymm15
1133vpandn %ymm14, %ymm15, %ymm0
1134vpand %ymm15, %ymm1, %ymm14
1135vpxor %ymm14, %ymm0, %ymm1
1136vmovdqa %ymm1, 1344(%rdi)
1137vmovdqa 1376(%rsi), %ymm0
1138vpand %ymm6, %ymm0, %ymm0
1139vpsrlw $11, %ymm0, %ymm1
1140vpsllw $1, %ymm1, %ymm1
1141vpaddw %ymm0, %ymm1, %ymm0
1142vpaddw %ymm0, %ymm5, %ymm0
1143vpsrlw $8, %ymm0, %ymm1
1144vpand mask_ff(%rip), %ymm0, %ymm0
1145vpaddw %ymm1, %ymm0, %ymm1
1146vpand mask_f(%rip), %ymm1, %ymm0
1147vpsrlw $4, %ymm1, %ymm1
1148vpaddw %ymm1, %ymm0, %ymm1
1149vpand mask_3(%rip), %ymm1, %ymm0
1150vpsrlw $2, %ymm1, %ymm1
1151vpaddw %ymm1, %ymm0, %ymm1
1152vpand mask_3(%rip), %ymm1, %ymm0
1153vpsrlw $2, %ymm1, %ymm1
1154vpaddw %ymm1, %ymm0, %ymm1
1155vpsubw mask_3(%rip), %ymm1, %ymm14
1156vpsraw $15, %ymm14, %ymm15
1157vpandn %ymm14, %ymm15, %ymm0
1158vpand %ymm15, %ymm1, %ymm14
1159vpxor %ymm14, %ymm0, %ymm1
1160vmovdqa %ymm1, 1376(%rdi)
1161vmovdqa 1408(%rsi), %ymm0
1162vpand %ymm6, %ymm0, %ymm0
1163vpsrlw $11, %ymm0, %ymm1
1164vpsllw $1, %ymm1, %ymm1
1165vpaddw %ymm0, %ymm1, %ymm0
1166vpaddw %ymm0, %ymm5, %ymm0
1167vpsrlw $8, %ymm0, %ymm1
1168vpand mask_ff(%rip), %ymm0, %ymm0
1169vpaddw %ymm1, %ymm0, %ymm1
1170vpand mask_f(%rip), %ymm1, %ymm0
1171vpsrlw $4, %ymm1, %ymm1
1172vpaddw %ymm1, %ymm0, %ymm1
1173vpand mask_3(%rip), %ymm1, %ymm0
1174vpsrlw $2, %ymm1, %ymm1
1175vpaddw %ymm1, %ymm0, %ymm1
1176vpand mask_3(%rip), %ymm1, %ymm0
1177vpsrlw $2, %ymm1, %ymm1
1178vpaddw %ymm1, %ymm0, %ymm1
1179vpsubw mask_3(%rip), %ymm1, %ymm14
1180vpsraw $15, %ymm14, %ymm15
1181vpandn %ymm14, %ymm15, %ymm0
1182vpand %ymm15, %ymm1, %ymm14
1183vpxor %ymm14, %ymm0, %ymm1
1184vmovdqa %ymm1, 1408(%rdi)
1185vmovdqa 1440(%rsi), %ymm0
1186vpand %ymm6, %ymm0, %ymm0
1187vpsrlw $11, %ymm0, %ymm1
1188vpsllw $1, %ymm1, %ymm1
1189vpaddw %ymm0, %ymm1, %ymm0
1190vpaddw %ymm0, %ymm5, %ymm0
1191vpsrlw $8, %ymm0, %ymm1
1192vpand mask_ff(%rip), %ymm0, %ymm0
1193vpaddw %ymm1, %ymm0, %ymm1
1194vpand mask_f(%rip), %ymm1, %ymm0
1195vpsrlw $4, %ymm1, %ymm1
1196vpaddw %ymm1, %ymm0, %ymm1
1197vpand mask_3(%rip), %ymm1, %ymm0
1198vpsrlw $2, %ymm1, %ymm1
1199vpaddw %ymm1, %ymm0, %ymm1
1200vpand mask_3(%rip), %ymm1, %ymm0
1201vpsrlw $2, %ymm1, %ymm1
1202vpaddw %ymm1, %ymm0, %ymm1
1203vpsubw mask_3(%rip), %ymm1, %ymm14
1204vpsraw $15, %ymm14, %ymm15
1205vpandn %ymm14, %ymm15, %ymm0
1206vpand %ymm15, %ymm1, %ymm14
1207vpxor %ymm14, %ymm0, %ymm1
1208vmovdqa %ymm1, 1440(%rdi)
1209vmovdqa 1472(%rsi), %ymm0
1210vpand %ymm6, %ymm0, %ymm0
1211vpsrlw $11, %ymm0, %ymm1
1212vpsllw $1, %ymm1, %ymm1
1213vpaddw %ymm0, %ymm1, %ymm0
1214vpaddw %ymm0, %ymm5, %ymm0
1215vpsrlw $8, %ymm0, %ymm1
1216vpand mask_ff(%rip), %ymm0, %ymm0
1217vpaddw %ymm1, %ymm0, %ymm1
1218vpand mask_f(%rip), %ymm1, %ymm0
1219vpsrlw $4, %ymm1, %ymm1
1220vpaddw %ymm1, %ymm0, %ymm1
1221vpand mask_3(%rip), %ymm1, %ymm0
1222vpsrlw $2, %ymm1, %ymm1
1223vpaddw %ymm1, %ymm0, %ymm1
1224vpand mask_3(%rip), %ymm1, %ymm0
1225vpsrlw $2, %ymm1, %ymm1
1226vpaddw %ymm1, %ymm0, %ymm1
1227vpsubw mask_3(%rip), %ymm1, %ymm14
1228vpsraw $15, %ymm14, %ymm15
1229vpandn %ymm14, %ymm15, %ymm0
1230vpand %ymm15, %ymm1, %ymm14
1231vpxor %ymm14, %ymm0, %ymm1
1232vmovdqa %ymm1, 1472(%rdi)
1233vmovdqa 1504(%rsi), %ymm0
1234vpand %ymm6, %ymm0, %ymm0
1235vpsrlw $11, %ymm0, %ymm1
1236vpsllw $1, %ymm1, %ymm1
1237vpaddw %ymm0, %ymm1, %ymm0
1238vpaddw %ymm0, %ymm5, %ymm0
1239vpsrlw $8, %ymm0, %ymm1
1240vpand mask_ff(%rip), %ymm0, %ymm0
1241vpaddw %ymm1, %ymm0, %ymm1
1242vpand mask_f(%rip), %ymm1, %ymm0
1243vpsrlw $4, %ymm1, %ymm1
1244vpaddw %ymm1, %ymm0, %ymm1
1245vpand mask_3(%rip), %ymm1, %ymm0
1246vpsrlw $2, %ymm1, %ymm1
1247vpaddw %ymm1, %ymm0, %ymm1
1248vpand mask_3(%rip), %ymm1, %ymm0
1249vpsrlw $2, %ymm1, %ymm1
1250vpaddw %ymm1, %ymm0, %ymm1
1251vpsubw mask_3(%rip), %ymm1, %ymm14
1252vpsraw $15, %ymm14, %ymm15
1253vpandn %ymm14, %ymm15, %ymm0
1254vpand %ymm15, %ymm1, %ymm14
1255vpxor %ymm14, %ymm0, %ymm1
1256vmovdqa %ymm1, 1504(%rdi)
1257vmovdqa 1536(%rsi), %ymm0
1258vpand %ymm6, %ymm0, %ymm0
1259vpsrlw $11, %ymm0, %ymm1
1260vpsllw $1, %ymm1, %ymm1
1261vpaddw %ymm0, %ymm1, %ymm0
1262vpaddw %ymm0, %ymm5, %ymm0
1263vpsrlw $8, %ymm0, %ymm1
1264vpand mask_ff(%rip), %ymm0, %ymm0
1265vpaddw %ymm1, %ymm0, %ymm1
1266vpand mask_f(%rip), %ymm1, %ymm0
1267vpsrlw $4, %ymm1, %ymm1
1268vpaddw %ymm1, %ymm0, %ymm1
1269vpand mask_3(%rip), %ymm1, %ymm0
1270vpsrlw $2, %ymm1, %ymm1
1271vpaddw %ymm1, %ymm0, %ymm1
1272vpand mask_3(%rip), %ymm1, %ymm0
1273vpsrlw $2, %ymm1, %ymm1
1274vpaddw %ymm1, %ymm0, %ymm1
1275vpsubw mask_3(%rip), %ymm1, %ymm14
1276vpsraw $15, %ymm14, %ymm15
1277vpandn %ymm14, %ymm15, %ymm0
1278vpand %ymm15, %ymm1, %ymm14
1279vpxor %ymm14, %ymm0, %ymm1
1280vmovdqa %ymm1, 1536(%rdi)
1281vmovdqa 1568(%rsi), %ymm0
1282vpand %ymm6, %ymm0, %ymm0
1283vpsrlw $11, %ymm0, %ymm1
1284vpsllw $1, %ymm1, %ymm1
1285vpaddw %ymm0, %ymm1, %ymm0
1286vpaddw %ymm0, %ymm5, %ymm0
1287vpsrlw $8, %ymm0, %ymm1
1288vpand mask_ff(%rip), %ymm0, %ymm0
1289vpaddw %ymm1, %ymm0, %ymm1
1290vpand mask_f(%rip), %ymm1, %ymm0
1291vpsrlw $4, %ymm1, %ymm1
1292vpaddw %ymm1, %ymm0, %ymm1
1293vpand mask_3(%rip), %ymm1, %ymm0
1294vpsrlw $2, %ymm1, %ymm1
1295vpaddw %ymm1, %ymm0, %ymm1
1296vpand mask_3(%rip), %ymm1, %ymm0
1297vpsrlw $2, %ymm1, %ymm1
1298vpaddw %ymm1, %ymm0, %ymm1
1299vpsubw mask_3(%rip), %ymm1, %ymm14
1300vpsraw $15, %ymm14, %ymm15
1301vpandn %ymm14, %ymm15, %ymm0
1302vpand %ymm15, %ymm1, %ymm14
1303vpxor %ymm14, %ymm0, %ymm1
1304vmovdqa %ymm1, 1568(%rdi)
1305vmovdqa 1600(%rsi), %ymm0
1306vpand %ymm6, %ymm0, %ymm0
1307vpsrlw $11, %ymm0, %ymm1
1308vpsllw $1, %ymm1, %ymm1
1309vpaddw %ymm0, %ymm1, %ymm0
1310vpaddw %ymm0, %ymm5, %ymm0
1311vpsrlw $8, %ymm0, %ymm1
1312vpand mask_ff(%rip), %ymm0, %ymm0
1313vpaddw %ymm1, %ymm0, %ymm1
1314vpand mask_f(%rip), %ymm1, %ymm0
1315vpsrlw $4, %ymm1, %ymm1
1316vpaddw %ymm1, %ymm0, %ymm1
1317vpand mask_3(%rip), %ymm1, %ymm0
1318vpsrlw $2, %ymm1, %ymm1
1319vpaddw %ymm1, %ymm0, %ymm1
1320vpand mask_3(%rip), %ymm1, %ymm0
1321vpsrlw $2, %ymm1, %ymm1
1322vpaddw %ymm1, %ymm0, %ymm1
1323vpsubw mask_3(%rip), %ymm1, %ymm14
1324vpsraw $15, %ymm14, %ymm15
1325vpandn %ymm14, %ymm15, %ymm0
1326vpand %ymm15, %ymm1, %ymm14
1327vpxor %ymm14, %ymm0, %ymm1
1328vmovdqa %ymm1, 1600(%rdi)
1329vmovdqa 1632(%rsi), %ymm0
1330vpand %ymm6, %ymm0, %ymm0
1331vpsrlw $11, %ymm0, %ymm1
1332vpsllw $1, %ymm1, %ymm1
1333vpaddw %ymm0, %ymm1, %ymm0
1334vpaddw %ymm0, %ymm5, %ymm0
1335vpsrlw $8, %ymm0, %ymm1
1336vpand mask_ff(%rip), %ymm0, %ymm0
1337vpaddw %ymm1, %ymm0, %ymm1
1338vpand mask_f(%rip), %ymm1, %ymm0
1339vpsrlw $4, %ymm1, %ymm1
1340vpaddw %ymm1, %ymm0, %ymm1
1341vpand mask_3(%rip), %ymm1, %ymm0
1342vpsrlw $2, %ymm1, %ymm1
1343vpaddw %ymm1, %ymm0, %ymm1
1344vpand mask_3(%rip), %ymm1, %ymm0
1345vpsrlw $2, %ymm1, %ymm1
1346vpaddw %ymm1, %ymm0, %ymm1
1347vpsubw mask_3(%rip), %ymm1, %ymm14
1348vpsraw $15, %ymm14, %ymm15
1349vpandn %ymm14, %ymm15, %ymm0
1350vpand %ymm15, %ymm1, %ymm14
1351vpxor %ymm14, %ymm0, %ymm1
1352vmovdqa %ymm1, 1632(%rdi)
1353ret
1354