1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or https://opensource.org/licenses/CDDL-1.0.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
24 * Copyright (c) 2019-2022 Samuel Neves and Matthew Krupcale
25 * Copyright (c) 2022-2023 Tino Reichardt <milky-zfs@mcmilk.de>
26 *
27 * This is converted assembly: SSE2 -> ARMv8-A
28 * Used tools: SIMDe https://github.com/simd-everywhere/simde
29 *
30 * Should work on FreeBSD, Linux and macOS
31 * see: https://github.com/mcmilk/BLAKE3-tests/blob/master/contrib/simde.sh
32 */
33
34#if defined(__aarch64__)
35	.text
36	.section	.note.gnu.property,"a",@note
37	.p2align	3
38	.word	4
39	.word	16
40	.word	5
41	.asciz	"GNU"
42	.word	3221225472
43	.word	4
44	.word	3
45	.word	0
46.Lsec_end0:
47	.text
48	.globl	zfs_blake3_compress_in_place_sse2
49	.p2align	2
50	.type	zfs_blake3_compress_in_place_sse2,@function
51zfs_blake3_compress_in_place_sse2:
52	.cfi_startproc
53	hint	#25
54	.cfi_negate_ra_state
55	sub	sp, sp, #96
56	stp	x29, x30, [sp, #64]
57	add	x29, sp, #64
58	str	x19, [sp, #80]
59	.cfi_def_cfa w29, 32
60	.cfi_offset w19, -16
61	.cfi_offset w30, -24
62	.cfi_offset w29, -32
63	mov	x19, x0
64	mov	w5, w4
65	mov	x4, x3
66	mov	w3, w2
67	mov	x2, x1
68	mov	x0, sp
69	mov	x1, x19
70	bl	compress_pre
71	ldp	q0, q1, [sp]
72	ldp	q2, q3, [sp, #32]
73	eor	v0.16b, v2.16b, v0.16b
74	eor	v1.16b, v3.16b, v1.16b
75	ldp	x29, x30, [sp, #64]
76	stp	q0, q1, [x19]
77	ldr	x19, [sp, #80]
78	add	sp, sp, #96
79	hint	#29
80	ret
81.Lfunc_end0:
82	.size	zfs_blake3_compress_in_place_sse2, .Lfunc_end0-zfs_blake3_compress_in_place_sse2
83	.cfi_endproc
84
85	.section	.rodata.cst16,"aM",@progbits,16
86	.p2align	4
87.LCPI1_0:
88	.xword	-4942790177982912921
89	.xword	-6534734903820487822
90	.text
91	.p2align	2
92	.type	compress_pre,@function
93compress_pre:
94	.cfi_startproc
95	hint	#34
96	fmov	s1, w3
97	movi	d0, #0x0000ff000000ff
98	ldr	q2, [x1]
99	fmov	d3, x4
100	adrp	x8, .LCPI1_0
101	mov	v1.s[1], w5
102	str	q2, [x0]
103	ldr	q4, [x8, :lo12:.LCPI1_0]
104	add	x8, x2, #32
105	ldr	q5, [x1, #16]
106	and	v0.8b, v1.8b, v0.8b
107	stp	q5, q4, [x0, #16]
108	mov	v3.d[1], v0.d[0]
109	str	q3, [x0, #48]
110	ldp	q0, q6, [x2]
111	uzp1	v1.4s, v0.4s, v6.4s
112	uzp2	v0.4s, v0.4s, v6.4s
113	add	v2.4s, v2.4s, v1.4s
114	uzp1	v18.4s, v1.4s, v1.4s
115	add	v2.4s, v2.4s, v5.4s
116	eor	v3.16b, v2.16b, v3.16b
117	add	v2.4s, v2.4s, v0.4s
118	rev32	v3.8h, v3.8h
119	add	v4.4s, v3.4s, v4.4s
120	eor	v5.16b, v4.16b, v5.16b
121	ushr	v6.4s, v5.4s, #12
122	shl	v5.4s, v5.4s, #20
123	orr	v5.16b, v5.16b, v6.16b
124	add	v2.4s, v2.4s, v5.4s
125	eor	v3.16b, v2.16b, v3.16b
126	ushr	v6.4s, v3.4s, #8
127	shl	v3.4s, v3.4s, #24
128	orr	v3.16b, v3.16b, v6.16b
129	ld2	{ v6.4s, v7.4s }, [x8]
130	add	v4.4s, v3.4s, v4.4s
131	ext	v3.16b, v3.16b, v3.16b, #8
132	add	v2.4s, v2.4s, v6.4s
133	eor	v5.16b, v4.16b, v5.16b
134	ext	v4.16b, v4.16b, v4.16b, #4
135	ext	v6.16b, v6.16b, v6.16b, #12
136	ext	v2.16b, v2.16b, v2.16b, #12
137	ushr	v16.4s, v5.4s, #7
138	shl	v5.4s, v5.4s, #25
139	orr	v5.16b, v5.16b, v16.16b
140	ext	v16.16b, v7.16b, v7.16b, #12
141	add	v2.4s, v2.4s, v5.4s
142	mov	v7.16b, v16.16b
143	eor	v3.16b, v3.16b, v2.16b
144	add	v2.4s, v2.4s, v16.4s
145	mov	v7.s[1], v6.s[2]
146	rev32	v3.8h, v3.8h
147	add	v4.4s, v4.4s, v3.4s
148	eor	v5.16b, v4.16b, v5.16b
149	ushr	v17.4s, v5.4s, #12
150	shl	v5.4s, v5.4s, #20
151	orr	v5.16b, v5.16b, v17.16b
152	add	v2.4s, v2.4s, v5.4s
153	eor	v3.16b, v2.16b, v3.16b
154	ushr	v17.4s, v3.4s, #8
155	shl	v3.4s, v3.4s, #24
156	orr	v3.16b, v3.16b, v17.16b
157	ext	v17.16b, v18.16b, v1.16b, #8
158	add	v4.4s, v3.4s, v4.4s
159	uzp2	v17.4s, v17.4s, v0.4s
160	ext	v3.16b, v3.16b, v3.16b, #8
161	eor	v5.16b, v4.16b, v5.16b
162	add	v2.4s, v2.4s, v17.4s
163	ext	v4.16b, v4.16b, v4.16b, #12
164	ushr	v18.4s, v5.4s, #7
165	shl	v5.4s, v5.4s, #25
166	ext	v2.16b, v2.16b, v2.16b, #4
167	orr	v5.16b, v5.16b, v18.16b
168	ext	v18.16b, v1.16b, v1.16b, #12
169	add	v2.4s, v2.4s, v5.4s
170	ext	v1.16b, v1.16b, v18.16b, #12
171	zip1	v18.2d, v16.2d, v0.2d
172	zip2	v0.4s, v0.4s, v16.4s
173	eor	v3.16b, v3.16b, v2.16b
174	rev64	v1.4s, v1.4s
175	mov	v18.s[3], v6.s[3]
176	zip1	v16.4s, v0.4s, v6.4s
177	rev32	v3.8h, v3.8h
178	trn2	v1.4s, v1.4s, v7.4s
179	zip1	v0.4s, v6.4s, v0.4s
180	add	v4.4s, v4.4s, v3.4s
181	add	v2.4s, v2.4s, v1.4s
182	ext	v6.16b, v0.16b, v16.16b, #8
183	eor	v5.16b, v4.16b, v5.16b
184	ushr	v7.4s, v5.4s, #12
185	shl	v5.4s, v5.4s, #20
186	orr	v5.16b, v5.16b, v7.16b
187	add	v7.4s, v2.4s, v5.4s
188	eor	v2.16b, v7.16b, v3.16b
189	ext	v7.16b, v7.16b, v7.16b, #12
190	ushr	v3.4s, v2.4s, #8
191	shl	v2.4s, v2.4s, #24
192	orr	v3.16b, v2.16b, v3.16b
193	ext	v2.16b, v18.16b, v18.16b, #12
194	add	v4.4s, v3.4s, v4.4s
195	uzp1	v2.4s, v18.4s, v2.4s
196	ext	v3.16b, v3.16b, v3.16b, #8
197	eor	v5.16b, v4.16b, v5.16b
198	add	v7.4s, v7.4s, v2.4s
199	ext	v4.16b, v4.16b, v4.16b, #4
200	ushr	v18.4s, v5.4s, #7
201	shl	v5.4s, v5.4s, #25
202	orr	v5.16b, v5.16b, v18.16b
203	add	v7.4s, v7.4s, v5.4s
204	eor	v3.16b, v3.16b, v7.16b
205	add	v7.4s, v7.4s, v6.4s
206	rev32	v3.8h, v3.8h
207	add	v4.4s, v4.4s, v3.4s
208	eor	v5.16b, v4.16b, v5.16b
209	ushr	v0.4s, v5.4s, #12
210	shl	v5.4s, v5.4s, #20
211	orr	v0.16b, v5.16b, v0.16b
212	add	v5.4s, v7.4s, v0.4s
213	ext	v7.16b, v17.16b, v17.16b, #4
214	eor	v3.16b, v5.16b, v3.16b
215	uzp1	v17.4s, v7.4s, v7.4s
216	ushr	v16.4s, v3.4s, #8
217	shl	v3.4s, v3.4s, #24
218	orr	v3.16b, v3.16b, v16.16b
219	ext	v16.16b, v17.16b, v7.16b, #8
220	add	v4.4s, v3.4s, v4.4s
221	uzp2	v16.4s, v16.4s, v1.4s
222	ext	v3.16b, v3.16b, v3.16b, #8
223	eor	v0.16b, v4.16b, v0.16b
224	add	v5.4s, v5.4s, v16.4s
225	ext	v4.16b, v4.16b, v4.16b, #12
226	ushr	v17.4s, v0.4s, #7
227	shl	v0.4s, v0.4s, #25
228	ext	v5.16b, v5.16b, v5.16b, #4
229	orr	v0.16b, v0.16b, v17.16b
230	ext	v17.16b, v7.16b, v7.16b, #12
231	add	v5.4s, v5.4s, v0.4s
232	ext	v7.16b, v7.16b, v17.16b, #12
233	mov	v17.16b, v6.16b
234	eor	v3.16b, v3.16b, v5.16b
235	rev64	v7.4s, v7.4s
236	mov	v17.s[1], v2.s[2]
237	rev32	v3.8h, v3.8h
238	add	v4.4s, v4.4s, v3.4s
239	eor	v18.16b, v4.16b, v0.16b
240	trn2	v0.4s, v7.4s, v17.4s
241	ushr	v7.4s, v18.4s, #12
242	shl	v17.4s, v18.4s, #20
243	add	v5.4s, v5.4s, v0.4s
244	zip1	v18.2d, v6.2d, v1.2d
245	zip2	v1.4s, v1.4s, v6.4s
246	orr	v7.16b, v17.16b, v7.16b
247	mov	v18.s[3], v2.s[3]
248	zip1	v6.4s, v1.4s, v2.4s
249	add	v5.4s, v5.4s, v7.4s
250	zip1	v1.4s, v2.4s, v1.4s
251	eor	v3.16b, v5.16b, v3.16b
252	ext	v5.16b, v5.16b, v5.16b, #12
253	ext	v6.16b, v1.16b, v6.16b, #8
254	ushr	v17.4s, v3.4s, #8
255	shl	v3.4s, v3.4s, #24
256	orr	v17.16b, v3.16b, v17.16b
257	ext	v3.16b, v18.16b, v18.16b, #12
258	add	v4.4s, v17.4s, v4.4s
259	uzp1	v3.4s, v18.4s, v3.4s
260	ext	v17.16b, v17.16b, v17.16b, #8
261	eor	v7.16b, v4.16b, v7.16b
262	add	v5.4s, v5.4s, v3.4s
263	ext	v4.16b, v4.16b, v4.16b, #4
264	ushr	v18.4s, v7.4s, #7
265	shl	v7.4s, v7.4s, #25
266	orr	v7.16b, v7.16b, v18.16b
267	add	v5.4s, v5.4s, v7.4s
268	eor	v17.16b, v17.16b, v5.16b
269	add	v5.4s, v5.4s, v6.4s
270	rev32	v17.8h, v17.8h
271	add	v4.4s, v4.4s, v17.4s
272	eor	v2.16b, v4.16b, v7.16b
273	ext	v7.16b, v16.16b, v16.16b, #4
274	ushr	v1.4s, v2.4s, #12
275	shl	v2.4s, v2.4s, #20
276	orr	v1.16b, v2.16b, v1.16b
277	add	v2.4s, v5.4s, v1.4s
278	eor	v5.16b, v2.16b, v17.16b
279	uzp1	v17.4s, v7.4s, v7.4s
280	ushr	v16.4s, v5.4s, #8
281	shl	v5.4s, v5.4s, #24
282	orr	v5.16b, v5.16b, v16.16b
283	ext	v16.16b, v17.16b, v7.16b, #8
284	add	v4.4s, v5.4s, v4.4s
285	uzp2	v16.4s, v16.4s, v0.4s
286	ext	v5.16b, v5.16b, v5.16b, #8
287	eor	v1.16b, v4.16b, v1.16b
288	add	v2.4s, v2.4s, v16.4s
289	ext	v4.16b, v4.16b, v4.16b, #12
290	ushr	v17.4s, v1.4s, #7
291	shl	v1.4s, v1.4s, #25
292	ext	v2.16b, v2.16b, v2.16b, #4
293	orr	v1.16b, v1.16b, v17.16b
294	ext	v17.16b, v7.16b, v7.16b, #12
295	add	v2.4s, v2.4s, v1.4s
296	ext	v7.16b, v7.16b, v17.16b, #12
297	mov	v17.16b, v6.16b
298	eor	v5.16b, v5.16b, v2.16b
299	rev64	v7.4s, v7.4s
300	mov	v17.s[1], v3.s[2]
301	rev32	v5.8h, v5.8h
302	add	v4.4s, v4.4s, v5.4s
303	eor	v18.16b, v4.16b, v1.16b
304	trn2	v1.4s, v7.4s, v17.4s
305	ushr	v7.4s, v18.4s, #12
306	shl	v17.4s, v18.4s, #20
307	add	v2.4s, v2.4s, v1.4s
308	zip1	v18.2d, v6.2d, v0.2d
309	zip2	v0.4s, v0.4s, v6.4s
310	orr	v7.16b, v17.16b, v7.16b
311	mov	v18.s[3], v3.s[3]
312	add	v2.4s, v2.4s, v7.4s
313	eor	v5.16b, v2.16b, v5.16b
314	ext	v2.16b, v2.16b, v2.16b, #12
315	ushr	v17.4s, v5.4s, #8
316	shl	v5.4s, v5.4s, #24
317	orr	v5.16b, v5.16b, v17.16b
318	add	v17.4s, v5.4s, v4.4s
319	ext	v4.16b, v18.16b, v18.16b, #12
320	ext	v5.16b, v5.16b, v5.16b, #8
321	eor	v7.16b, v17.16b, v7.16b
322	uzp1	v4.4s, v18.4s, v4.4s
323	ext	v17.16b, v17.16b, v17.16b, #4
324	ushr	v18.4s, v7.4s, #7
325	shl	v7.4s, v7.4s, #25
326	add	v2.4s, v2.4s, v4.4s
327	orr	v7.16b, v7.16b, v18.16b
328	add	v2.4s, v2.4s, v7.4s
329	eor	v5.16b, v5.16b, v2.16b
330	rev32	v5.8h, v5.8h
331	add	v6.4s, v17.4s, v5.4s
332	zip1	v17.4s, v0.4s, v3.4s
333	zip1	v0.4s, v3.4s, v0.4s
334	eor	v3.16b, v6.16b, v7.16b
335	ext	v0.16b, v0.16b, v17.16b, #8
336	ushr	v7.4s, v3.4s, #12
337	shl	v3.4s, v3.4s, #20
338	add	v2.4s, v2.4s, v0.4s
339	orr	v3.16b, v3.16b, v7.16b
340	ext	v7.16b, v16.16b, v16.16b, #4
341	add	v2.4s, v2.4s, v3.4s
342	uzp1	v17.4s, v7.4s, v7.4s
343	eor	v5.16b, v2.16b, v5.16b
344	ushr	v16.4s, v5.4s, #8
345	shl	v5.4s, v5.4s, #24
346	orr	v5.16b, v5.16b, v16.16b
347	ext	v16.16b, v17.16b, v7.16b, #8
348	add	v6.4s, v5.4s, v6.4s
349	uzp2	v16.4s, v16.4s, v1.4s
350	ext	v5.16b, v5.16b, v5.16b, #8
351	eor	v3.16b, v6.16b, v3.16b
352	add	v2.4s, v2.4s, v16.4s
353	ext	v6.16b, v6.16b, v6.16b, #12
354	ushr	v17.4s, v3.4s, #7
355	shl	v3.4s, v3.4s, #25
356	ext	v2.16b, v2.16b, v2.16b, #4
357	orr	v3.16b, v3.16b, v17.16b
358	add	v17.4s, v2.4s, v3.4s
359	eor	v2.16b, v5.16b, v17.16b
360	ext	v5.16b, v7.16b, v7.16b, #12
361	rev32	v18.8h, v2.8h
362	ext	v2.16b, v7.16b, v5.16b, #12
363	mov	v5.16b, v0.16b
364	add	v6.4s, v6.4s, v18.4s
365	rev64	v2.4s, v2.4s
366	mov	v5.s[1], v4.s[2]
367	eor	v3.16b, v6.16b, v3.16b
368	trn2	v2.4s, v2.4s, v5.4s
369	ushr	v5.4s, v3.4s, #12
370	shl	v3.4s, v3.4s, #20
371	add	v7.4s, v17.4s, v2.4s
372	orr	v3.16b, v3.16b, v5.16b
373	add	v5.4s, v7.4s, v3.4s
374	eor	v7.16b, v5.16b, v18.16b
375	zip1	v18.2d, v0.2d, v1.2d
376	ext	v5.16b, v5.16b, v5.16b, #12
377	zip2	v0.4s, v1.4s, v0.4s
378	ushr	v17.4s, v7.4s, #8
379	shl	v7.4s, v7.4s, #24
380	mov	v18.s[3], v4.s[3]
381	orr	v7.16b, v7.16b, v17.16b
382	ext	v17.16b, v18.16b, v18.16b, #12
383	add	v6.4s, v7.4s, v6.4s
384	ext	v7.16b, v7.16b, v7.16b, #8
385	eor	v19.16b, v6.16b, v3.16b
386	uzp1	v3.4s, v18.4s, v17.4s
387	ext	v6.16b, v6.16b, v6.16b, #4
388	ushr	v17.4s, v19.4s, #7
389	shl	v18.4s, v19.4s, #25
390	add	v5.4s, v5.4s, v3.4s
391	orr	v17.16b, v18.16b, v17.16b
392	add	v5.4s, v5.4s, v17.4s
393	eor	v7.16b, v7.16b, v5.16b
394	rev32	v7.8h, v7.8h
395	add	v1.4s, v6.4s, v7.4s
396	zip1	v6.4s, v0.4s, v4.4s
397	zip1	v0.4s, v4.4s, v0.4s
398	eor	v4.16b, v1.16b, v17.16b
399	ext	v6.16b, v0.16b, v6.16b, #8
400	ushr	v0.4s, v4.4s, #12
401	shl	v4.4s, v4.4s, #20
402	add	v5.4s, v5.4s, v6.4s
403	zip1	v20.2d, v6.2d, v2.2d
404	orr	v0.16b, v4.16b, v0.16b
405	mov	v20.s[3], v3.s[3]
406	add	v4.4s, v5.4s, v0.4s
407	eor	v5.16b, v4.16b, v7.16b
408	ext	v7.16b, v16.16b, v16.16b, #4
409	ushr	v16.4s, v5.4s, #8
410	shl	v5.4s, v5.4s, #24
411	uzp1	v17.4s, v7.4s, v7.4s
412	orr	v5.16b, v5.16b, v16.16b
413	ext	v16.16b, v17.16b, v7.16b, #8
414	add	v1.4s, v5.4s, v1.4s
415	uzp2	v16.4s, v16.4s, v2.4s
416	zip2	v2.4s, v2.4s, v6.4s
417	eor	v0.16b, v1.16b, v0.16b
418	add	v4.4s, v4.4s, v16.4s
419	ext	v1.16b, v1.16b, v1.16b, #12
420	ext	v16.16b, v16.16b, v16.16b, #4
421	ushr	v17.4s, v0.4s, #7
422	shl	v0.4s, v0.4s, #25
423	ext	v4.16b, v4.16b, v4.16b, #4
424	orr	v17.16b, v0.16b, v17.16b
425	ext	v0.16b, v5.16b, v5.16b, #8
426	ext	v5.16b, v7.16b, v7.16b, #12
427	add	v4.4s, v4.4s, v17.4s
428	eor	v0.16b, v0.16b, v4.16b
429	rev32	v18.8h, v0.8h
430	ext	v0.16b, v7.16b, v5.16b, #12
431	mov	v5.16b, v6.16b
432	add	v7.4s, v1.4s, v18.4s
433	rev64	v1.4s, v0.4s
434	mov	v5.s[1], v3.s[2]
435	eor	v17.16b, v7.16b, v17.16b
436	trn2	v1.4s, v1.4s, v5.4s
437	ushr	v19.4s, v17.4s, #12
438	shl	v17.4s, v17.4s, #20
439	add	v4.4s, v4.4s, v1.4s
440	orr	v17.16b, v17.16b, v19.16b
441	add	v19.4s, v4.4s, v17.4s
442	eor	v4.16b, v19.16b, v18.16b
443	ext	v19.16b, v19.16b, v19.16b, #12
444	ushr	v18.4s, v4.4s, #8
445	shl	v4.4s, v4.4s, #24
446	orr	v18.16b, v4.16b, v18.16b
447	ext	v4.16b, v20.16b, v20.16b, #12
448	add	v7.4s, v18.4s, v7.4s
449	uzp1	v4.4s, v20.4s, v4.4s
450	ext	v18.16b, v18.16b, v18.16b, #8
451	eor	v17.16b, v7.16b, v17.16b
452	add	v19.4s, v19.4s, v4.4s
453	ext	v7.16b, v7.16b, v7.16b, #4
454	ushr	v20.4s, v17.4s, #7
455	shl	v17.4s, v17.4s, #25
456	orr	v17.16b, v17.16b, v20.16b
457	add	v19.4s, v19.4s, v17.4s
458	eor	v18.16b, v18.16b, v19.16b
459	rev32	v18.8h, v18.8h
460	add	v6.4s, v7.4s, v18.4s
461	zip1	v7.4s, v2.4s, v3.4s
462	zip1	v2.4s, v3.4s, v2.4s
463	eor	v3.16b, v6.16b, v17.16b
464	ext	v2.16b, v2.16b, v7.16b, #8
465	ushr	v7.4s, v3.4s, #12
466	shl	v3.4s, v3.4s, #20
467	add	v17.4s, v19.4s, v2.4s
468	zip1	v1.2d, v2.2d, v1.2d
469	zip2	v0.4s, v0.4s, v2.4s
470	orr	v3.16b, v3.16b, v7.16b
471	mov	v1.s[3], v4.s[3]
472	add	v7.4s, v17.4s, v3.4s
473	eor	v17.16b, v7.16b, v18.16b
474	ext	v7.16b, v7.16b, v7.16b, #4
475	ushr	v18.4s, v17.4s, #8
476	shl	v17.4s, v17.4s, #24
477	orr	v17.16b, v17.16b, v18.16b
478	ext	v18.16b, v16.16b, v16.16b, #8
479	add	v6.4s, v17.4s, v6.4s
480	uzp2	v5.4s, v18.4s, v5.4s
481	eor	v3.16b, v6.16b, v3.16b
482	ext	v5.16b, v5.16b, v18.16b, #4
483	ext	v6.16b, v6.16b, v6.16b, #12
484	ushr	v18.4s, v3.4s, #7
485	shl	v3.4s, v3.4s, #25
486	add	v5.4s, v7.4s, v5.4s
487	ext	v7.16b, v17.16b, v17.16b, #8
488	ext	v17.16b, v16.16b, v16.16b, #12
489	orr	v3.16b, v3.16b, v18.16b
490	ext	v16.16b, v16.16b, v17.16b, #12
491	add	v5.4s, v3.4s, v5.4s
492	mov	v17.16b, v2.16b
493	rev64	v16.4s, v16.4s
494	eor	v7.16b, v7.16b, v5.16b
495	mov	v17.s[1], v4.s[2]
496	rev32	v7.8h, v7.8h
497	trn2	v16.4s, v16.4s, v17.4s
498	add	v6.4s, v6.4s, v7.4s
499	add	v5.4s, v5.4s, v16.4s
500	eor	v3.16b, v6.16b, v3.16b
501	ushr	v17.4s, v3.4s, #12
502	shl	v3.4s, v3.4s, #20
503	orr	v3.16b, v3.16b, v17.16b
504	add	v5.4s, v5.4s, v3.4s
505	eor	v7.16b, v5.16b, v7.16b
506	ext	v5.16b, v5.16b, v5.16b, #12
507	ushr	v16.4s, v7.4s, #8
508	shl	v7.4s, v7.4s, #24
509	orr	v7.16b, v7.16b, v16.16b
510	ext	v16.16b, v1.16b, v1.16b, #12
511	add	v6.4s, v7.4s, v6.4s
512	uzp1	v1.4s, v1.4s, v16.4s
513	eor	v3.16b, v6.16b, v3.16b
514	add	v1.4s, v5.4s, v1.4s
515	ext	v5.16b, v7.16b, v7.16b, #8
516	ext	v6.16b, v6.16b, v6.16b, #4
517	ushr	v16.4s, v3.4s, #7
518	shl	v3.4s, v3.4s, #25
519	orr	v3.16b, v3.16b, v16.16b
520	add	v1.4s, v1.4s, v3.4s
521	eor	v5.16b, v5.16b, v1.16b
522	rev32	v5.8h, v5.8h
523	add	v2.4s, v6.4s, v5.4s
524	zip1	v6.4s, v0.4s, v4.4s
525	zip1	v0.4s, v4.4s, v0.4s
526	eor	v3.16b, v2.16b, v3.16b
527	ext	v0.16b, v0.16b, v6.16b, #8
528	ushr	v4.4s, v3.4s, #12
529	shl	v3.4s, v3.4s, #20
530	add	v0.4s, v1.4s, v0.4s
531	orr	v1.16b, v3.16b, v4.16b
532	add	v0.4s, v0.4s, v1.4s
533	eor	v3.16b, v0.16b, v5.16b
534	ext	v0.16b, v0.16b, v0.16b, #4
535	ushr	v4.4s, v3.4s, #8
536	shl	v3.4s, v3.4s, #24
537	orr	v3.16b, v3.16b, v4.16b
538	add	v2.4s, v3.4s, v2.4s
539	ext	v3.16b, v3.16b, v3.16b, #8
540	eor	v1.16b, v2.16b, v1.16b
541	ext	v2.16b, v2.16b, v2.16b, #12
542	ushr	v4.4s, v1.4s, #7
543	shl	v1.4s, v1.4s, #25
544	stp	q2, q3, [x0, #32]
545	orr	v1.16b, v1.16b, v4.16b
546	stp	q0, q1, [x0]
547	ret
548.Lfunc_end1:
549	.size	compress_pre, .Lfunc_end1-compress_pre
550	.cfi_endproc
551
552	.globl	zfs_blake3_compress_xof_sse2
553	.p2align	2
554	.type	zfs_blake3_compress_xof_sse2,@function
555zfs_blake3_compress_xof_sse2:
556	.cfi_startproc
557	hint	#25
558	.cfi_negate_ra_state
559	sub	sp, sp, #96
560	stp	x29, x30, [sp, #64]
561	add	x29, sp, #64
562	stp	x20, x19, [sp, #80]
563	.cfi_def_cfa w29, 32
564	.cfi_offset w19, -8
565	.cfi_offset w20, -16
566	.cfi_offset w30, -24
567	.cfi_offset w29, -32
568	mov	x20, x0
569	mov	x19, x5
570	mov	w5, w4
571	mov	x4, x3
572	mov	w3, w2
573	mov	x2, x1
574	mov	x0, sp
575	mov	x1, x20
576	bl	compress_pre
577	ldp	q0, q1, [sp]
578	ldp	q2, q3, [sp, #32]
579	eor	v0.16b, v2.16b, v0.16b
580	eor	v1.16b, v3.16b, v1.16b
581	ldp	x29, x30, [sp, #64]
582	stp	q0, q1, [x19]
583	ldr	q0, [x20]
584	eor	v0.16b, v0.16b, v2.16b
585	str	q0, [x19, #32]
586	ldr	q0, [x20, #16]
587	eor	v0.16b, v0.16b, v3.16b
588	str	q0, [x19, #48]
589	ldp	x20, x19, [sp, #80]
590	add	sp, sp, #96
591	hint	#29
592	ret
593.Lfunc_end2:
594	.size	zfs_blake3_compress_xof_sse2, .Lfunc_end2-zfs_blake3_compress_xof_sse2
595	.cfi_endproc
596
597	.section	.rodata.cst16,"aM",@progbits,16
598	.p2align	4
599.LCPI3_0:
600	.word	0
601	.word	1
602	.word	2
603	.word	3
604	.text
605	.globl	zfs_blake3_hash_many_sse2
606	.p2align	2
607	.type	zfs_blake3_hash_many_sse2,@function
608zfs_blake3_hash_many_sse2:
609	.cfi_startproc
610	hint	#25
611	.cfi_negate_ra_state
612	stp	d15, d14, [sp, #-160]!
613	stp	d13, d12, [sp, #16]
614	stp	d11, d10, [sp, #32]
615	stp	d9, d8, [sp, #48]
616	stp	x29, x30, [sp, #64]
617	add	x29, sp, #64
618	stp	x28, x27, [sp, #80]
619	stp	x26, x25, [sp, #96]
620	stp	x24, x23, [sp, #112]
621	stp	x22, x21, [sp, #128]
622	stp	x20, x19, [sp, #144]
623	sub	sp, sp, #464
624	.cfi_def_cfa w29, 96
625	.cfi_offset w19, -8
626	.cfi_offset w20, -16
627	.cfi_offset w21, -24
628	.cfi_offset w22, -32
629	.cfi_offset w23, -40
630	.cfi_offset w24, -48
631	.cfi_offset w25, -56
632	.cfi_offset w26, -64
633	.cfi_offset w27, -72
634	.cfi_offset w28, -80
635	.cfi_offset w30, -88
636	.cfi_offset w29, -96
637	.cfi_offset b8, -104
638	.cfi_offset b9, -112
639	.cfi_offset b10, -120
640	.cfi_offset b11, -128
641	.cfi_offset b12, -136
642	.cfi_offset b13, -144
643	.cfi_offset b14, -152
644	.cfi_offset b15, -160
645	mov	w19, w6
646	mov	x20, x4
647	mov	x24, x1
648	ldr	x26, [x29, #104]
649	ldrb	w27, [x29, #96]
650	cmp	x1, #4
651	str	x3, [sp, #40]
652	b.lo	.LBB3_6
653	adrp	x8, .LCPI3_0
654	sbfx	w9, w5, #0, #1
655	mov	w10, #44677
656	mov	w11, #62322
657	movk	w10, #47975, lsl #16
658	movk	w11, #15470, lsl #16
659	ldr	q0, [x8, :lo12:.LCPI3_0]
660	dup	v1.4s, w9
661	mov	w9, #58983
662	orr	w8, w7, w19
663	movk	w9, #27145, lsl #16
664	and	v0.16b, v1.16b, v0.16b
665	dup	v1.4s, w11
666	movi	v24.4s, #64
667	dup	v2.4s, w9
668	mov	w9, #62778
669	movk	w9, #42319, lsl #16
670	str	q0, [sp, #16]
671	orr	v0.4s, #128, lsl #24
672	stp	q2, q1, [sp, #48]
673	str	q0, [sp]
674	dup	v0.4s, w10
675	str	q0, [sp, #80]
676	b	.LBB3_3
677.LBB3_2:
678	zip1	v0.4s, v12.4s, v31.4s
679	add	x10, x20, #4
680	zip1	v1.4s, v29.4s, v30.4s
681	tst	w5, #0x1
682	zip1	v2.4s, v28.4s, v23.4s
683	csel	x20, x10, x20, ne
684	zip1	v3.4s, v13.4s, v25.4s
685	add	x0, x0, #32
686	zip2	v6.4s, v12.4s, v31.4s
687	sub	x24, x24, #4
688	zip1	v4.2d, v0.2d, v1.2d
689	cmp	x24, #3
690	zip2	v7.4s, v29.4s, v30.4s
691	zip1	v5.2d, v2.2d, v3.2d
692	zip2	v0.2d, v0.2d, v1.2d
693	zip2	v1.2d, v2.2d, v3.2d
694	zip2	v2.4s, v28.4s, v23.4s
695	zip2	v3.4s, v13.4s, v25.4s
696	stp	q4, q5, [x26]
697	zip2	v4.2d, v6.2d, v7.2d
698	stp	q0, q1, [x26, #32]
699	zip1	v0.2d, v6.2d, v7.2d
700	zip1	v1.2d, v2.2d, v3.2d
701	zip2	v2.2d, v2.2d, v3.2d
702	stp	q0, q1, [x26, #64]
703	stp	q4, q2, [x26, #96]
704	add	x26, x26, #128
705	b.ls	.LBB3_6
706.LBB3_3:
707	ldr	x14, [sp, #40]
708	mov	x10, x14
709	add	x11, x14, #8
710	add	x12, x14, #12
711	add	x13, x14, #16
712	ld1r	{ v12.4s }, [x10], #4
713	ld1r	{ v29.4s }, [x11]
714	add	x11, x14, #20
715	ld1r	{ v30.4s }, [x12]
716	add	x12, x14, #24
717	ld1r	{ v28.4s }, [x13]
718	ld1r	{ v23.4s }, [x11]
719	add	x11, x14, #28
720	ld1r	{ v13.4s }, [x12]
721	ld1r	{ v31.4s }, [x10]
722	ld1r	{ v25.4s }, [x11]
723	cbz	x2, .LBB3_2
724	ldr	q1, [sp, #16]
725	dup	v0.4s, w20
726	lsr	x12, x20, #32
727	mov	x10, xzr
728	ldp	x13, x14, [x0, #16]
729	add	v1.4s, v0.4s, v1.4s
730	mov	x15, x2
731	movi	v0.4s, #128, lsl #24
732	mov	w4, w8
733	str	q1, [sp, #112]
734	eor	v0.16b, v1.16b, v0.16b
735	ldr	q1, [sp]
736	cmgt	v0.4s, v1.4s, v0.4s
737	dup	v1.4s, w12
738	ldp	x11, x12, [x0]
739	sub	v0.4s, v1.4s, v0.4s
740	str	q0, [sp, #96]
741.LBB3_5:
742	add	x17, x11, x10
743	add	x21, x12, x10
744	add	x16, x13, x10
745	add	x6, x14, x10
746	subs	x15, x15, #1
747	add	x10, x10, #64
748	ldp	q0, q1, [x17]
749	csel	w3, w27, wzr, eq
750	orr	w3, w3, w4
751	mov	w4, w19
752	and	w3, w3, #0xff
753	ldp	q3, q6, [x21]
754	dup	v2.4s, w3
755	zip1	v21.4s, v0.4s, v3.4s
756	zip2	v19.4s, v0.4s, v3.4s
757	ldp	q5, q7, [x16]
758	zip1	v17.4s, v1.4s, v6.4s
759	zip2	v22.4s, v1.4s, v6.4s
760	ldp	q16, q18, [x6]
761	zip1	v4.4s, v5.4s, v16.4s
762	zip2	v0.4s, v5.4s, v16.4s
763	ldp	q26, q27, [x17, #32]
764	zip1	v1.4s, v7.4s, v18.4s
765	zip2	v3.4s, v7.4s, v18.4s
766	zip2	v20.2d, v19.2d, v0.2d
767	mov	v19.d[1], v0.d[0]
768	dup	v18.4s, w9
769	ldp	q8, q9, [x21, #32]
770	stur	q19, [x29, #-208]
771	zip2	v7.4s, v26.4s, v8.4s
772	zip1	v10.4s, v26.4s, v8.4s
773	ldp	q11, q5, [x16, #32]
774	zip2	v26.2d, v17.2d, v1.2d
775	stp	q7, q26, [sp, #192]
776	mov	v17.d[1], v1.d[0]
777	add	v1.4s, v23.4s, v31.4s
778	ldp	q16, q6, [x6, #32]
779	stur	q17, [x29, #-256]
780	add	v1.4s, v1.4s, v19.4s
781	zip1	v8.4s, v11.4s, v16.4s
782	zip2	v7.4s, v11.4s, v16.4s
783	zip1	v11.4s, v27.4s, v9.4s
784	zip2	v9.4s, v27.4s, v9.4s
785	zip2	v27.2d, v21.2d, v4.2d
786	mov	v21.d[1], v4.d[0]
787	str	q7, [sp, #224]
788	add	v4.4s, v28.4s, v12.4s
789	zip1	v15.4s, v5.4s, v6.4s
790	zip2	v14.4s, v5.4s, v6.4s
791	stur	q27, [x29, #-192]
792	zip2	v16.2d, v22.2d, v3.2d
793	stp	q20, q21, [x29, #-240]
794	add	v0.4s, v4.4s, v21.4s
795	ldp	q6, q4, [sp, #96]
796	mov	v22.d[1], v3.d[0]
797	add	v5.4s, v25.4s, v30.4s
798	add	v3.4s, v13.4s, v29.4s
799	eor	v6.16b, v1.16b, v6.16b
800	add	v1.4s, v1.4s, v20.4s
801	str	q22, [sp, #256]
802	eor	v4.16b, v0.16b, v4.16b
803	add	v5.4s, v5.4s, v22.4s
804	add	v3.4s, v3.4s, v17.4s
805	ldr	q17, [sp, #48]
806	rev32	v6.8h, v6.8h
807	rev32	v4.8h, v4.8h
808	eor	v2.16b, v5.16b, v2.16b
809	eor	v7.16b, v3.16b, v24.16b
810	add	v0.4s, v0.4s, v27.4s
811	add	v21.4s, v4.4s, v17.4s
812	rev32	v31.8h, v2.8h
813	ldr	q2, [sp, #80]
814	rev32	v7.8h, v7.8h
815	mov	v27.16b, v16.16b
816	eor	v17.16b, v21.16b, v28.16b
817	add	v29.4s, v6.4s, v2.4s
818	ldr	q2, [sp, #64]
819	add	v24.4s, v31.4s, v18.4s
820	str	q27, [sp, #176]
821	ushr	v19.4s, v17.4s, #12
822	shl	v17.4s, v17.4s, #20
823	add	v30.4s, v7.4s, v2.4s
824	eor	v18.16b, v29.16b, v23.16b
825	orr	v12.16b, v17.16b, v19.16b
826	eor	v17.16b, v30.16b, v13.16b
827	eor	v19.16b, v24.16b, v25.16b
828	ushr	v23.4s, v18.4s, #12
829	shl	v18.4s, v18.4s, #20
830	ushr	v25.4s, v17.4s, #12
831	shl	v17.4s, v17.4s, #20
832	ushr	v28.4s, v19.4s, #12
833	shl	v19.4s, v19.4s, #20
834	orr	v13.16b, v18.16b, v23.16b
835	orr	v25.16b, v17.16b, v25.16b
836	orr	v2.16b, v19.16b, v28.16b
837	add	v28.4s, v0.4s, v12.4s
838	add	v0.4s, v3.4s, v26.4s
839	add	v18.4s, v1.4s, v13.4s
840	add	v3.4s, v5.4s, v16.4s
841	eor	v1.16b, v28.16b, v4.16b
842	add	v17.4s, v0.4s, v25.4s
843	eor	v0.16b, v18.16b, v6.16b
844	add	v19.4s, v3.4s, v2.4s
845	ushr	v16.4s, v1.4s, #8
846	shl	v3.4s, v1.4s, #24
847	eor	v4.16b, v17.16b, v7.16b
848	ushr	v6.4s, v0.4s, #8
849	shl	v1.4s, v0.4s, #24
850	eor	v5.16b, v19.16b, v31.16b
851	ushr	v23.4s, v4.4s, #8
852	shl	v4.4s, v4.4s, #24
853	orr	v7.16b, v3.16b, v16.16b
854	orr	v6.16b, v1.16b, v6.16b
855	ushr	v31.4s, v5.4s, #8
856	shl	v0.4s, v5.4s, #24
857	orr	v5.16b, v4.16b, v23.16b
858	add	v4.4s, v7.4s, v21.4s
859	ldr	q21, [sp, #192]
860	add	v3.4s, v6.4s, v29.4s
861	orr	v31.16b, v0.16b, v31.16b
862	add	v23.4s, v5.4s, v30.4s
863	eor	v0.16b, v4.16b, v12.16b
864	eor	v1.16b, v3.16b, v13.16b
865	add	v16.4s, v31.4s, v24.4s
866	eor	v20.16b, v23.16b, v25.16b
867	ushr	v24.4s, v0.4s, #7
868	shl	v0.4s, v0.4s, #25
869	ushr	v29.4s, v1.4s, #7
870	shl	v1.4s, v1.4s, #25
871	ushr	v30.4s, v20.4s, #7
872	shl	v20.4s, v20.4s, #25
873	orr	v25.16b, v0.16b, v24.16b
874	orr	v0.16b, v1.16b, v29.16b
875	mov	v29.16b, v10.16b
876	orr	v1.16b, v20.16b, v30.16b
877	mov	v20.16b, v10.16b
878	mov	v24.16b, v21.16b
879	ldr	q20, [sp, #224]
880	mov	v29.d[1], v8.d[0]
881	mov	v13.16b, v9.16b
882	zip2	v30.2d, v10.2d, v8.2d
883	zip2	v8.2d, v21.2d, v20.2d
884	mov	v26.16b, v11.16b
885	mov	v24.d[1], v20.d[0]
886	add	v20.4s, v28.4s, v29.4s
887	mov	v13.d[1], v14.d[0]
888	str	q8, [sp, #128]
889	eor	v2.16b, v16.16b, v2.16b
890	mov	v26.d[1], v15.d[0]
891	str	q24, [sp, #192]
892	add	v20.4s, v20.4s, v0.4s
893	add	v19.4s, v19.4s, v13.4s
894	ushr	v12.4s, v2.4s, #7
895	shl	v2.4s, v2.4s, #25
896	zip2	v10.2d, v9.2d, v14.2d
897	add	v18.4s, v18.4s, v24.4s
898	add	v17.4s, v17.4s, v26.4s
899	mov	v14.16b, v26.16b
900	eor	v26.16b, v20.16b, v31.16b
901	stp	q10, q30, [sp, #224]
902	add	v19.4s, v19.4s, v25.4s
903	orr	v2.16b, v2.16b, v12.16b
904	add	v18.4s, v18.4s, v1.4s
905	rev32	v26.8h, v26.8h
906	eor	v5.16b, v19.16b, v5.16b
907	add	v17.4s, v17.4s, v2.4s
908	eor	v7.16b, v18.16b, v7.16b
909	add	v23.4s, v23.4s, v26.4s
910	rev32	v5.8h, v5.8h
911	eor	v6.16b, v17.16b, v6.16b
912	rev32	v7.8h, v7.8h
913	eor	v0.16b, v23.16b, v0.16b
914	add	v3.4s, v3.4s, v5.4s
915	rev32	v6.8h, v6.8h
916	add	v16.4s, v16.4s, v7.4s
917	ushr	v31.4s, v0.4s, #12
918	shl	v0.4s, v0.4s, #20
919	eor	v25.16b, v3.16b, v25.16b
920	add	v4.4s, v4.4s, v6.4s
921	eor	v1.16b, v16.16b, v1.16b
922	orr	v0.16b, v0.16b, v31.16b
923	ushr	v31.4s, v25.4s, #12
924	shl	v25.4s, v25.4s, #20
925	add	v20.4s, v20.4s, v30.4s
926	zip2	v21.2d, v11.2d, v15.2d
927	ushr	v11.4s, v1.4s, #12
928	shl	v1.4s, v1.4s, #20
929	eor	v2.16b, v4.16b, v2.16b
930	orr	v25.16b, v25.16b, v31.16b
931	add	v19.4s, v19.4s, v10.4s
932	add	v20.4s, v20.4s, v0.4s
933	orr	v1.16b, v1.16b, v11.16b
934	ushr	v11.4s, v2.4s, #12
935	shl	v2.4s, v2.4s, #20
936	add	v18.4s, v18.4s, v8.4s
937	add	v19.4s, v19.4s, v25.4s
938	eor	v26.16b, v20.16b, v26.16b
939	orr	v2.16b, v2.16b, v11.16b
940	add	v17.4s, v17.4s, v21.4s
941	add	v18.4s, v18.4s, v1.4s
942	eor	v5.16b, v19.16b, v5.16b
943	ushr	v31.4s, v26.4s, #8
944	shl	v26.4s, v26.4s, #24
945	add	v17.4s, v17.4s, v2.4s
946	ushr	v11.4s, v5.4s, #8
947	shl	v5.4s, v5.4s, #24
948	eor	v7.16b, v18.16b, v7.16b
949	orr	v26.16b, v26.16b, v31.16b
950	eor	v6.16b, v17.16b, v6.16b
951	orr	v5.16b, v5.16b, v11.16b
952	ushr	v31.4s, v7.4s, #8
953	shl	v7.4s, v7.4s, #24
954	add	v23.4s, v26.4s, v23.4s
955	ushr	v11.4s, v6.4s, #8
956	shl	v6.4s, v6.4s, #24
957	orr	v7.16b, v7.16b, v31.16b
958	add	v3.4s, v5.4s, v3.4s
959	eor	v0.16b, v23.16b, v0.16b
960	ldp	q28, q12, [x29, #-256]
961	orr	v6.16b, v6.16b, v11.16b
962	add	v16.4s, v7.4s, v16.4s
963	eor	v25.16b, v3.16b, v25.16b
964	ushr	v31.4s, v0.4s, #7
965	shl	v0.4s, v0.4s, #25
966	add	v4.4s, v6.4s, v4.4s
967	ushr	v11.4s, v25.4s, #7
968	shl	v25.4s, v25.4s, #25
969	eor	v1.16b, v16.16b, v1.16b
970	orr	v0.16b, v0.16b, v31.16b
971	add	v18.4s, v18.4s, v12.4s
972	mov	v15.16b, v29.16b
973	ldur	q29, [x29, #-208]
974	eor	v2.16b, v4.16b, v2.16b
975	orr	v25.16b, v25.16b, v11.16b
976	ushr	v31.4s, v1.4s, #7
977	shl	v1.4s, v1.4s, #25
978	str	q15, [sp, #160]
979	add	v20.4s, v20.4s, v29.4s
980	add	v18.4s, v18.4s, v0.4s
981	ushr	v11.4s, v2.4s, #7
982	shl	v2.4s, v2.4s, #25
983	orr	v1.16b, v1.16b, v31.16b
984	add	v20.4s, v20.4s, v25.4s
985	add	v17.4s, v17.4s, v27.4s
986	eor	v6.16b, v6.16b, v18.16b
987	orr	v2.16b, v2.16b, v11.16b
988	add	v19.4s, v19.4s, v28.4s
989	eor	v7.16b, v7.16b, v20.16b
990	add	v17.4s, v17.4s, v1.4s
991	rev32	v6.8h, v6.8h
992	add	v19.4s, v19.4s, v2.4s
993	rev32	v7.8h, v7.8h
994	eor	v5.16b, v17.16b, v5.16b
995	add	v3.4s, v3.4s, v6.4s
996	eor	v26.16b, v19.16b, v26.16b
997	add	v4.4s, v4.4s, v7.4s
998	rev32	v5.8h, v5.8h
999	eor	v0.16b, v3.16b, v0.16b
1000	rev32	v26.8h, v26.8h
1001	eor	v25.16b, v4.16b, v25.16b
1002	add	v23.4s, v23.4s, v5.4s
1003	ushr	v11.4s, v0.4s, #12
1004	shl	v0.4s, v0.4s, #20
1005	add	v16.4s, v16.4s, v26.4s
1006	ushr	v31.4s, v25.4s, #12
1007	shl	v25.4s, v25.4s, #20
1008	eor	v1.16b, v23.16b, v1.16b
1009	orr	v0.16b, v0.16b, v11.16b
1010	add	v18.4s, v18.4s, v24.4s
1011	orr	v25.16b, v25.16b, v31.16b
1012	eor	v2.16b, v16.16b, v2.16b
1013	ushr	v31.4s, v1.4s, #12
1014	shl	v1.4s, v1.4s, #20
1015	add	v20.4s, v20.4s, v22.4s
1016	add	v18.4s, v18.4s, v0.4s
1017	mov	v9.16b, v30.16b
1018	mov	v30.16b, v21.16b
1019	ldur	q21, [x29, #-224]
1020	ushr	v11.4s, v2.4s, #12
1021	shl	v2.4s, v2.4s, #20
1022	orr	v1.16b, v1.16b, v31.16b
1023	add	v20.4s, v20.4s, v25.4s
1024	str	q30, [sp, #144]
1025	add	v17.4s, v17.4s, v21.4s
1026	ldur	q21, [x29, #-192]
1027	eor	v6.16b, v18.16b, v6.16b
1028	orr	v2.16b, v2.16b, v11.16b
1029	add	v19.4s, v19.4s, v30.4s
1030	eor	v7.16b, v20.16b, v7.16b
1031	add	v17.4s, v17.4s, v1.4s
1032	ushr	v11.4s, v6.4s, #8
1033	shl	v6.4s, v6.4s, #24
1034	add	v19.4s, v19.4s, v2.4s
1035	ushr	v31.4s, v7.4s, #8
1036	shl	v7.4s, v7.4s, #24
1037	eor	v5.16b, v17.16b, v5.16b
1038	orr	v6.16b, v6.16b, v11.16b
1039	eor	v26.16b, v19.16b, v26.16b
1040	orr	v7.16b, v7.16b, v31.16b
1041	ushr	v31.4s, v5.4s, #8
1042	shl	v5.4s, v5.4s, #24
1043	add	v3.4s, v6.4s, v3.4s
1044	ushr	v11.4s, v26.4s, #8
1045	shl	v26.4s, v26.4s, #24
1046	add	v4.4s, v7.4s, v4.4s
1047	orr	v5.16b, v5.16b, v31.16b
1048	eor	v0.16b, v3.16b, v0.16b
1049	orr	v26.16b, v26.16b, v11.16b
1050	eor	v25.16b, v4.16b, v25.16b
1051	add	v23.4s, v5.4s, v23.4s
1052	ushr	v11.4s, v0.4s, #7
1053	shl	v0.4s, v0.4s, #25
1054	add	v16.4s, v26.4s, v16.4s
1055	ushr	v31.4s, v25.4s, #7
1056	shl	v25.4s, v25.4s, #25
1057	eor	v1.16b, v23.16b, v1.16b
1058	orr	v0.16b, v0.16b, v11.16b
1059	add	v20.4s, v20.4s, v21.4s
1060	orr	v25.16b, v25.16b, v31.16b
1061	eor	v2.16b, v16.16b, v2.16b
1062	ushr	v31.4s, v1.4s, #7
1063	shl	v1.4s, v1.4s, #25
1064	add	v20.4s, v20.4s, v0.4s
1065	add	v19.4s, v19.4s, v10.4s
1066	ushr	v11.4s, v2.4s, #7
1067	shl	v2.4s, v2.4s, #25
1068	orr	v1.16b, v1.16b, v31.16b
1069	add	v18.4s, v18.4s, v14.4s
1070	eor	v26.16b, v20.16b, v26.16b
1071	add	v19.4s, v19.4s, v25.4s
1072	orr	v2.16b, v2.16b, v11.16b
1073	add	v17.4s, v17.4s, v9.4s
1074	ldr	q9, [sp, #208]
1075	add	v18.4s, v18.4s, v1.4s
1076	rev32	v26.8h, v26.8h
1077	eor	v5.16b, v19.16b, v5.16b
1078	add	v17.4s, v17.4s, v2.4s
1079	eor	v7.16b, v18.16b, v7.16b
1080	add	v23.4s, v23.4s, v26.4s
1081	rev32	v5.8h, v5.8h
1082	eor	v6.16b, v17.16b, v6.16b
1083	rev32	v7.8h, v7.8h
1084	eor	v0.16b, v23.16b, v0.16b
1085	add	v3.4s, v3.4s, v5.4s
1086	rev32	v6.8h, v6.8h
1087	add	v16.4s, v16.4s, v7.4s
1088	ushr	v31.4s, v0.4s, #12
1089	shl	v0.4s, v0.4s, #20
1090	eor	v25.16b, v3.16b, v25.16b
1091	add	v4.4s, v4.4s, v6.4s
1092	eor	v1.16b, v16.16b, v1.16b
1093	orr	v0.16b, v0.16b, v31.16b
1094	ushr	v31.4s, v25.4s, #12
1095	shl	v25.4s, v25.4s, #20
1096	add	v20.4s, v20.4s, v8.4s
1097	ushr	v11.4s, v1.4s, #12
1098	shl	v1.4s, v1.4s, #20
1099	eor	v2.16b, v4.16b, v2.16b
1100	orr	v25.16b, v25.16b, v31.16b
1101	add	v19.4s, v19.4s, v15.4s
1102	add	v20.4s, v20.4s, v0.4s
1103	orr	v1.16b, v1.16b, v11.16b
1104	ushr	v11.4s, v2.4s, #12
1105	shl	v2.4s, v2.4s, #20
1106	add	v18.4s, v18.4s, v9.4s
1107	add	v19.4s, v19.4s, v25.4s
1108	eor	v26.16b, v20.16b, v26.16b
1109	orr	v2.16b, v2.16b, v11.16b
1110	add	v17.4s, v17.4s, v13.4s
1111	add	v18.4s, v18.4s, v1.4s
1112	eor	v5.16b, v19.16b, v5.16b
1113	ushr	v31.4s, v26.4s, #8
1114	shl	v26.4s, v26.4s, #24
1115	add	v17.4s, v17.4s, v2.4s
1116	ushr	v11.4s, v5.4s, #8
1117	shl	v5.4s, v5.4s, #24
1118	eor	v7.16b, v18.16b, v7.16b
1119	orr	v26.16b, v26.16b, v31.16b
1120	eor	v6.16b, v17.16b, v6.16b
1121	orr	v5.16b, v5.16b, v11.16b
1122	ushr	v31.4s, v7.4s, #8
1123	shl	v7.4s, v7.4s, #24
1124	add	v23.4s, v26.4s, v23.4s
1125	ushr	v11.4s, v6.4s, #8
1126	shl	v6.4s, v6.4s, #24
1127	orr	v7.16b, v7.16b, v31.16b
1128	add	v3.4s, v5.4s, v3.4s
1129	eor	v0.16b, v23.16b, v0.16b
1130	orr	v6.16b, v6.16b, v11.16b
1131	add	v16.4s, v7.4s, v16.4s
1132	eor	v25.16b, v3.16b, v25.16b
1133	ushr	v31.4s, v0.4s, #7
1134	shl	v0.4s, v0.4s, #25
1135	add	v4.4s, v6.4s, v4.4s
1136	ushr	v11.4s, v25.4s, #7
1137	shl	v25.4s, v25.4s, #25
1138	eor	v1.16b, v16.16b, v1.16b
1139	orr	v0.16b, v0.16b, v31.16b
1140	add	v18.4s, v18.4s, v24.4s
1141	eor	v2.16b, v4.16b, v2.16b
1142	orr	v25.16b, v25.16b, v11.16b
1143	ushr	v31.4s, v1.4s, #7
1144	shl	v1.4s, v1.4s, #25
1145	add	v20.4s, v20.4s, v12.4s
1146	add	v18.4s, v18.4s, v0.4s
1147	ushr	v11.4s, v2.4s, #7
1148	shl	v2.4s, v2.4s, #25
1149	orr	v1.16b, v1.16b, v31.16b
1150	add	v20.4s, v20.4s, v25.4s
1151	add	v17.4s, v17.4s, v30.4s
1152	eor	v6.16b, v6.16b, v18.16b
1153	orr	v2.16b, v2.16b, v11.16b
1154	add	v19.4s, v19.4s, v27.4s
1155	eor	v7.16b, v7.16b, v20.16b
1156	add	v17.4s, v17.4s, v1.4s
1157	rev32	v6.8h, v6.8h
1158	add	v19.4s, v19.4s, v2.4s
1159	rev32	v7.8h, v7.8h
1160	eor	v5.16b, v17.16b, v5.16b
1161	add	v3.4s, v3.4s, v6.4s
1162	eor	v26.16b, v19.16b, v26.16b
1163	add	v4.4s, v4.4s, v7.4s
1164	rev32	v5.8h, v5.8h
1165	eor	v0.16b, v3.16b, v0.16b
1166	rev32	v26.8h, v26.8h
1167	eor	v25.16b, v4.16b, v25.16b
1168	add	v23.4s, v23.4s, v5.4s
1169	ushr	v11.4s, v0.4s, #12
1170	shl	v0.4s, v0.4s, #20
1171	add	v16.4s, v16.4s, v26.4s
1172	ushr	v31.4s, v25.4s, #12
1173	shl	v25.4s, v25.4s, #20
1174	eor	v1.16b, v23.16b, v1.16b
1175	orr	v0.16b, v0.16b, v11.16b
1176	add	v18.4s, v18.4s, v14.4s
1177	orr	v25.16b, v25.16b, v31.16b
1178	eor	v2.16b, v16.16b, v2.16b
1179	ushr	v31.4s, v1.4s, #12
1180	shl	v1.4s, v1.4s, #20
1181	add	v20.4s, v20.4s, v28.4s
1182	add	v18.4s, v18.4s, v0.4s
1183	mov	v10.16b, v13.16b
1184	ushr	v11.4s, v2.4s, #12
1185	shl	v2.4s, v2.4s, #20
1186	orr	v1.16b, v1.16b, v31.16b
1187	add	v20.4s, v20.4s, v25.4s
1188	add	v17.4s, v17.4s, v29.4s
1189	eor	v6.16b, v18.16b, v6.16b
1190	orr	v2.16b, v2.16b, v11.16b
1191	add	v19.4s, v19.4s, v10.4s
1192	eor	v7.16b, v20.16b, v7.16b
1193	add	v17.4s, v17.4s, v1.4s
1194	ushr	v11.4s, v6.4s, #8
1195	shl	v6.4s, v6.4s, #24
1196	add	v19.4s, v19.4s, v2.4s
1197	ushr	v31.4s, v7.4s, #8
1198	shl	v7.4s, v7.4s, #24
1199	eor	v5.16b, v17.16b, v5.16b
1200	orr	v6.16b, v6.16b, v11.16b
1201	eor	v26.16b, v19.16b, v26.16b
1202	orr	v7.16b, v7.16b, v31.16b
1203	ushr	v31.4s, v5.4s, #8
1204	shl	v5.4s, v5.4s, #24
1205	add	v3.4s, v6.4s, v3.4s
1206	ushr	v11.4s, v26.4s, #8
1207	shl	v26.4s, v26.4s, #24
1208	add	v4.4s, v7.4s, v4.4s
1209	orr	v5.16b, v5.16b, v31.16b
1210	eor	v0.16b, v3.16b, v0.16b
1211	mov	v22.16b, v8.16b
1212	ldp	q8, q28, [sp, #240]
1213	orr	v26.16b, v26.16b, v11.16b
1214	eor	v25.16b, v4.16b, v25.16b
1215	add	v23.4s, v5.4s, v23.4s
1216	ushr	v11.4s, v0.4s, #7
1217	shl	v0.4s, v0.4s, #25
1218	add	v16.4s, v26.4s, v16.4s
1219	ushr	v31.4s, v25.4s, #7
1220	shl	v25.4s, v25.4s, #25
1221	eor	v1.16b, v23.16b, v1.16b
1222	orr	v0.16b, v0.16b, v11.16b
1223	add	v20.4s, v20.4s, v28.4s
1224	orr	v25.16b, v25.16b, v31.16b
1225	eor	v2.16b, v16.16b, v2.16b
1226	ushr	v31.4s, v1.4s, #7
1227	shl	v1.4s, v1.4s, #25
1228	add	v20.4s, v20.4s, v0.4s
1229	add	v19.4s, v19.4s, v15.4s
1230	ushr	v11.4s, v2.4s, #7
1231	shl	v2.4s, v2.4s, #25
1232	orr	v1.16b, v1.16b, v31.16b
1233	add	v18.4s, v18.4s, v8.4s
1234	eor	v26.16b, v20.16b, v26.16b
1235	add	v19.4s, v19.4s, v25.4s
1236	orr	v2.16b, v2.16b, v11.16b
1237	add	v17.4s, v17.4s, v22.4s
1238	ldur	q22, [x29, #-256]
1239	add	v18.4s, v18.4s, v1.4s
1240	rev32	v26.8h, v26.8h
1241	eor	v5.16b, v19.16b, v5.16b
1242	add	v17.4s, v17.4s, v2.4s
1243	eor	v7.16b, v18.16b, v7.16b
1244	add	v23.4s, v23.4s, v26.4s
1245	rev32	v5.8h, v5.8h
1246	eor	v6.16b, v17.16b, v6.16b
1247	rev32	v7.8h, v7.8h
1248	eor	v0.16b, v23.16b, v0.16b
1249	add	v3.4s, v3.4s, v5.4s
1250	rev32	v6.8h, v6.8h
1251	add	v16.4s, v16.4s, v7.4s
1252	ushr	v31.4s, v0.4s, #12
1253	shl	v0.4s, v0.4s, #20
1254	eor	v25.16b, v3.16b, v25.16b
1255	add	v4.4s, v4.4s, v6.4s
1256	eor	v1.16b, v16.16b, v1.16b
1257	orr	v0.16b, v0.16b, v31.16b
1258	ushr	v31.4s, v25.4s, #12
1259	shl	v25.4s, v25.4s, #20
1260	add	v20.4s, v20.4s, v9.4s
1261	mov	v13.16b, v12.16b
1262	mov	v12.16b, v27.16b
1263	mov	v27.16b, v9.16b
1264	ldur	q9, [x29, #-192]
1265	mov	v21.16b, v15.16b
1266	ldr	q15, [sp, #224]
1267	ushr	v11.4s, v1.4s, #12
1268	ldur	q21, [x29, #-224]
1269	shl	v1.4s, v1.4s, #20
1270	eor	v2.16b, v4.16b, v2.16b
1271	orr	v25.16b, v25.16b, v31.16b
1272	add	v19.4s, v19.4s, v9.4s
1273	add	v20.4s, v20.4s, v0.4s
1274	orr	v1.16b, v1.16b, v11.16b
1275	ushr	v11.4s, v2.4s, #12
1276	shl	v2.4s, v2.4s, #20
1277	add	v18.4s, v18.4s, v21.4s
1278	add	v19.4s, v19.4s, v25.4s
1279	eor	v26.16b, v20.16b, v26.16b
1280	orr	v2.16b, v2.16b, v11.16b
1281	add	v17.4s, v17.4s, v15.4s
1282	add	v18.4s, v18.4s, v1.4s
1283	eor	v5.16b, v19.16b, v5.16b
1284	ushr	v31.4s, v26.4s, #8
1285	shl	v26.4s, v26.4s, #24
1286	add	v17.4s, v17.4s, v2.4s
1287	ushr	v11.4s, v5.4s, #8
1288	shl	v5.4s, v5.4s, #24
1289	eor	v7.16b, v18.16b, v7.16b
1290	orr	v26.16b, v26.16b, v31.16b
1291	eor	v6.16b, v17.16b, v6.16b
1292	orr	v5.16b, v5.16b, v11.16b
1293	ushr	v31.4s, v7.4s, #8
1294	shl	v7.4s, v7.4s, #24
1295	add	v23.4s, v26.4s, v23.4s
1296	ushr	v11.4s, v6.4s, #8
1297	shl	v6.4s, v6.4s, #24
1298	orr	v7.16b, v7.16b, v31.16b
1299	add	v3.4s, v5.4s, v3.4s
1300	eor	v0.16b, v23.16b, v0.16b
1301	orr	v6.16b, v6.16b, v11.16b
1302	add	v16.4s, v7.4s, v16.4s
1303	eor	v25.16b, v3.16b, v25.16b
1304	ushr	v31.4s, v0.4s, #7
1305	shl	v0.4s, v0.4s, #25
1306	add	v4.4s, v6.4s, v4.4s
1307	ushr	v11.4s, v25.4s, #7
1308	shl	v25.4s, v25.4s, #25
1309	eor	v1.16b, v16.16b, v1.16b
1310	orr	v0.16b, v0.16b, v31.16b
1311	add	v18.4s, v18.4s, v14.4s
1312	eor	v2.16b, v4.16b, v2.16b
1313	orr	v25.16b, v25.16b, v11.16b
1314	ushr	v31.4s, v1.4s, #7
1315	shl	v1.4s, v1.4s, #25
1316	add	v20.4s, v20.4s, v24.4s
1317	add	v18.4s, v18.4s, v0.4s
1318	ushr	v11.4s, v2.4s, #7
1319	shl	v2.4s, v2.4s, #25
1320	orr	v1.16b, v1.16b, v31.16b
1321	add	v20.4s, v20.4s, v25.4s
1322	add	v17.4s, v17.4s, v10.4s
1323	eor	v6.16b, v6.16b, v18.16b
1324	orr	v2.16b, v2.16b, v11.16b
1325	add	v19.4s, v19.4s, v30.4s
1326	eor	v7.16b, v7.16b, v20.16b
1327	add	v17.4s, v17.4s, v1.4s
1328	rev32	v6.8h, v6.8h
1329	add	v19.4s, v19.4s, v2.4s
1330	rev32	v7.8h, v7.8h
1331	eor	v5.16b, v17.16b, v5.16b
1332	add	v3.4s, v3.4s, v6.4s
1333	eor	v26.16b, v19.16b, v26.16b
1334	add	v4.4s, v4.4s, v7.4s
1335	rev32	v5.8h, v5.8h
1336	eor	v0.16b, v3.16b, v0.16b
1337	rev32	v26.8h, v26.8h
1338	eor	v25.16b, v4.16b, v25.16b
1339	add	v23.4s, v23.4s, v5.4s
1340	ushr	v11.4s, v0.4s, #12
1341	shl	v0.4s, v0.4s, #20
1342	add	v16.4s, v16.4s, v26.4s
1343	ushr	v31.4s, v25.4s, #12
1344	shl	v25.4s, v25.4s, #20
1345	eor	v1.16b, v23.16b, v1.16b
1346	orr	v0.16b, v0.16b, v11.16b
1347	add	v18.4s, v18.4s, v8.4s
1348	orr	v25.16b, v25.16b, v31.16b
1349	eor	v2.16b, v16.16b, v2.16b
1350	ushr	v31.4s, v1.4s, #12
1351	shl	v1.4s, v1.4s, #20
1352	add	v20.4s, v20.4s, v12.4s
1353	add	v18.4s, v18.4s, v0.4s
1354	ushr	v11.4s, v2.4s, #12
1355	shl	v2.4s, v2.4s, #20
1356	orr	v1.16b, v1.16b, v31.16b
1357	add	v20.4s, v20.4s, v25.4s
1358	add	v17.4s, v17.4s, v13.4s
1359	ldr	q13, [sp, #160]
1360	eor	v6.16b, v18.16b, v6.16b
1361	orr	v2.16b, v2.16b, v11.16b
1362	add	v19.4s, v19.4s, v15.4s
1363	eor	v7.16b, v20.16b, v7.16b
1364	add	v17.4s, v17.4s, v1.4s
1365	ushr	v11.4s, v6.4s, #8
1366	shl	v6.4s, v6.4s, #24
1367	add	v19.4s, v19.4s, v2.4s
1368	ushr	v31.4s, v7.4s, #8
1369	shl	v7.4s, v7.4s, #24
1370	eor	v5.16b, v17.16b, v5.16b
1371	orr	v6.16b, v6.16b, v11.16b
1372	eor	v26.16b, v19.16b, v26.16b
1373	orr	v7.16b, v7.16b, v31.16b
1374	ushr	v31.4s, v5.4s, #8
1375	shl	v5.4s, v5.4s, #24
1376	add	v3.4s, v6.4s, v3.4s
1377	ushr	v11.4s, v26.4s, #8
1378	shl	v26.4s, v26.4s, #24
1379	add	v4.4s, v7.4s, v4.4s
1380	orr	v5.16b, v5.16b, v31.16b
1381	eor	v0.16b, v3.16b, v0.16b
1382	orr	v26.16b, v26.16b, v11.16b
1383	eor	v25.16b, v4.16b, v25.16b
1384	add	v23.4s, v5.4s, v23.4s
1385	ushr	v11.4s, v0.4s, #7
1386	shl	v0.4s, v0.4s, #25
1387	add	v16.4s, v26.4s, v16.4s
1388	ushr	v31.4s, v25.4s, #7
1389	shl	v25.4s, v25.4s, #25
1390	eor	v1.16b, v23.16b, v1.16b
1391	orr	v0.16b, v0.16b, v11.16b
1392	add	v20.4s, v20.4s, v22.4s
1393	orr	v25.16b, v25.16b, v31.16b
1394	eor	v2.16b, v16.16b, v2.16b
1395	ushr	v31.4s, v1.4s, #7
1396	shl	v1.4s, v1.4s, #25
1397	add	v20.4s, v20.4s, v0.4s
1398	add	v19.4s, v19.4s, v9.4s
1399	mov	v29.16b, v14.16b
1400	ldr	q14, [sp, #128]
1401	ushr	v11.4s, v2.4s, #7
1402	shl	v2.4s, v2.4s, #25
1403	orr	v1.16b, v1.16b, v31.16b
1404	add	v18.4s, v18.4s, v14.4s
1405	eor	v26.16b, v20.16b, v26.16b
1406	add	v19.4s, v19.4s, v25.4s
1407	orr	v2.16b, v2.16b, v11.16b
1408	add	v17.4s, v17.4s, v27.4s
1409	add	v18.4s, v18.4s, v1.4s
1410	rev32	v26.8h, v26.8h
1411	eor	v5.16b, v19.16b, v5.16b
1412	add	v17.4s, v17.4s, v2.4s
1413	eor	v7.16b, v18.16b, v7.16b
1414	add	v23.4s, v23.4s, v26.4s
1415	rev32	v5.8h, v5.8h
1416	eor	v6.16b, v17.16b, v6.16b
1417	rev32	v7.8h, v7.8h
1418	eor	v0.16b, v23.16b, v0.16b
1419	add	v3.4s, v3.4s, v5.4s
1420	rev32	v6.8h, v6.8h
1421	add	v16.4s, v16.4s, v7.4s
1422	ushr	v31.4s, v0.4s, #12
1423	shl	v0.4s, v0.4s, #20
1424	eor	v25.16b, v3.16b, v25.16b
1425	add	v4.4s, v4.4s, v6.4s
1426	eor	v1.16b, v16.16b, v1.16b
1427	orr	v0.16b, v0.16b, v31.16b
1428	ushr	v31.4s, v25.4s, #12
1429	shl	v25.4s, v25.4s, #20
1430	add	v20.4s, v20.4s, v21.4s
1431	ushr	v11.4s, v1.4s, #12
1432	shl	v1.4s, v1.4s, #20
1433	eor	v2.16b, v4.16b, v2.16b
1434	orr	v25.16b, v25.16b, v31.16b
1435	add	v19.4s, v19.4s, v28.4s
1436	add	v20.4s, v20.4s, v0.4s
1437	mov	v12.16b, v27.16b
1438	ldur	q27, [x29, #-208]
1439	orr	v1.16b, v1.16b, v11.16b
1440	ushr	v11.4s, v2.4s, #12
1441	shl	v2.4s, v2.4s, #20
1442	add	v18.4s, v18.4s, v27.4s
1443	add	v19.4s, v19.4s, v25.4s
1444	eor	v26.16b, v20.16b, v26.16b
1445	orr	v2.16b, v2.16b, v11.16b
1446	add	v17.4s, v17.4s, v13.4s
1447	add	v18.4s, v18.4s, v1.4s
1448	eor	v5.16b, v19.16b, v5.16b
1449	ushr	v31.4s, v26.4s, #8
1450	shl	v26.4s, v26.4s, #24
1451	add	v17.4s, v17.4s, v2.4s
1452	ushr	v11.4s, v5.4s, #8
1453	shl	v5.4s, v5.4s, #24
1454	eor	v7.16b, v18.16b, v7.16b
1455	orr	v26.16b, v26.16b, v31.16b
1456	eor	v6.16b, v17.16b, v6.16b
1457	orr	v5.16b, v5.16b, v11.16b
1458	ushr	v31.4s, v7.4s, #8
1459	shl	v7.4s, v7.4s, #24
1460	add	v23.4s, v26.4s, v23.4s
1461	ushr	v11.4s, v6.4s, #8
1462	shl	v6.4s, v6.4s, #24
1463	orr	v7.16b, v7.16b, v31.16b
1464	add	v3.4s, v5.4s, v3.4s
1465	eor	v0.16b, v23.16b, v0.16b
1466	orr	v6.16b, v6.16b, v11.16b
1467	add	v16.4s, v7.4s, v16.4s
1468	eor	v25.16b, v3.16b, v25.16b
1469	ushr	v31.4s, v0.4s, #7
1470	shl	v0.4s, v0.4s, #25
1471	add	v4.4s, v6.4s, v4.4s
1472	ushr	v11.4s, v25.4s, #7
1473	shl	v25.4s, v25.4s, #25
1474	eor	v1.16b, v16.16b, v1.16b
1475	orr	v0.16b, v0.16b, v31.16b
1476	add	v18.4s, v18.4s, v8.4s
1477	eor	v2.16b, v4.16b, v2.16b
1478	orr	v25.16b, v25.16b, v11.16b
1479	ushr	v31.4s, v1.4s, #7
1480	shl	v1.4s, v1.4s, #25
1481	add	v20.4s, v20.4s, v29.4s
1482	add	v18.4s, v18.4s, v0.4s
1483	ushr	v11.4s, v2.4s, #7
1484	shl	v2.4s, v2.4s, #25
1485	orr	v1.16b, v1.16b, v31.16b
1486	add	v20.4s, v20.4s, v25.4s
1487	add	v17.4s, v17.4s, v15.4s
1488	eor	v6.16b, v6.16b, v18.16b
1489	orr	v2.16b, v2.16b, v11.16b
1490	add	v19.4s, v19.4s, v10.4s
1491	eor	v7.16b, v7.16b, v20.16b
1492	add	v17.4s, v17.4s, v1.4s
1493	rev32	v6.8h, v6.8h
1494	add	v19.4s, v19.4s, v2.4s
1495	rev32	v7.8h, v7.8h
1496	eor	v5.16b, v17.16b, v5.16b
1497	add	v3.4s, v3.4s, v6.4s
1498	eor	v26.16b, v19.16b, v26.16b
1499	add	v4.4s, v4.4s, v7.4s
1500	rev32	v5.8h, v5.8h
1501	eor	v0.16b, v3.16b, v0.16b
1502	rev32	v26.8h, v26.8h
1503	eor	v25.16b, v4.16b, v25.16b
1504	add	v23.4s, v23.4s, v5.4s
1505	ushr	v11.4s, v0.4s, #12
1506	shl	v0.4s, v0.4s, #20
1507	add	v16.4s, v16.4s, v26.4s
1508	ushr	v31.4s, v25.4s, #12
1509	shl	v25.4s, v25.4s, #20
1510	eor	v1.16b, v23.16b, v1.16b
1511	orr	v0.16b, v0.16b, v11.16b
1512	add	v18.4s, v18.4s, v14.4s
1513	mov	v30.16b, v29.16b
1514	mov	v29.16b, v15.16b
1515	ldr	q15, [sp, #144]
1516	orr	v25.16b, v25.16b, v31.16b
1517	eor	v2.16b, v16.16b, v2.16b
1518	ushr	v31.4s, v1.4s, #12
1519	shl	v1.4s, v1.4s, #20
1520	add	v20.4s, v20.4s, v15.4s
1521	add	v18.4s, v18.4s, v0.4s
1522	ushr	v11.4s, v2.4s, #12
1523	shl	v2.4s, v2.4s, #20
1524	orr	v1.16b, v1.16b, v31.16b
1525	add	v20.4s, v20.4s, v25.4s
1526	add	v17.4s, v17.4s, v24.4s
1527	eor	v6.16b, v18.16b, v6.16b
1528	orr	v2.16b, v2.16b, v11.16b
1529	add	v19.4s, v19.4s, v13.4s
1530	eor	v7.16b, v20.16b, v7.16b
1531	add	v17.4s, v17.4s, v1.4s
1532	ushr	v11.4s, v6.4s, #8
1533	shl	v6.4s, v6.4s, #24
1534	add	v19.4s, v19.4s, v2.4s
1535	ushr	v31.4s, v7.4s, #8
1536	shl	v7.4s, v7.4s, #24
1537	eor	v5.16b, v17.16b, v5.16b
1538	orr	v6.16b, v6.16b, v11.16b
1539	eor	v26.16b, v19.16b, v26.16b
1540	orr	v7.16b, v7.16b, v31.16b
1541	ushr	v31.4s, v5.4s, #8
1542	shl	v5.4s, v5.4s, #24
1543	add	v3.4s, v6.4s, v3.4s
1544	ushr	v11.4s, v26.4s, #8
1545	shl	v26.4s, v26.4s, #24
1546	add	v4.4s, v7.4s, v4.4s
1547	orr	v5.16b, v5.16b, v31.16b
1548	eor	v0.16b, v3.16b, v0.16b
1549	orr	v26.16b, v26.16b, v11.16b
1550	eor	v25.16b, v4.16b, v25.16b
1551	add	v23.4s, v5.4s, v23.4s
1552	ushr	v11.4s, v0.4s, #7
1553	shl	v0.4s, v0.4s, #25
1554	mov	v9.16b, v28.16b
1555	mov	v28.16b, v10.16b
1556	ldr	q10, [sp, #176]
1557	add	v16.4s, v26.4s, v16.4s
1558	ushr	v31.4s, v25.4s, #7
1559	shl	v25.4s, v25.4s, #25
1560	eor	v1.16b, v23.16b, v1.16b
1561	orr	v0.16b, v0.16b, v11.16b
1562	add	v20.4s, v20.4s, v10.4s
1563	orr	v25.16b, v25.16b, v31.16b
1564	eor	v2.16b, v16.16b, v2.16b
1565	ushr	v31.4s, v1.4s, #7
1566	shl	v1.4s, v1.4s, #25
1567	add	v20.4s, v20.4s, v0.4s
1568	add	v19.4s, v19.4s, v9.4s
1569	ushr	v11.4s, v2.4s, #7
1570	shl	v2.4s, v2.4s, #25
1571	orr	v1.16b, v1.16b, v31.16b
1572	add	v18.4s, v18.4s, v12.4s
1573	eor	v26.16b, v20.16b, v26.16b
1574	add	v19.4s, v19.4s, v25.4s
1575	orr	v2.16b, v2.16b, v11.16b
1576	add	v17.4s, v17.4s, v21.4s
1577	add	v18.4s, v18.4s, v1.4s
1578	rev32	v26.8h, v26.8h
1579	eor	v5.16b, v19.16b, v5.16b
1580	add	v17.4s, v17.4s, v2.4s
1581	eor	v7.16b, v18.16b, v7.16b
1582	add	v23.4s, v23.4s, v26.4s
1583	rev32	v5.8h, v5.8h
1584	eor	v6.16b, v17.16b, v6.16b
1585	rev32	v7.8h, v7.8h
1586	eor	v0.16b, v23.16b, v0.16b
1587	add	v3.4s, v3.4s, v5.4s
1588	rev32	v6.8h, v6.8h
1589	add	v16.4s, v16.4s, v7.4s
1590	ushr	v31.4s, v0.4s, #12
1591	shl	v0.4s, v0.4s, #20
1592	eor	v25.16b, v3.16b, v25.16b
1593	add	v4.4s, v4.4s, v6.4s
1594	eor	v1.16b, v16.16b, v1.16b
1595	orr	v0.16b, v0.16b, v31.16b
1596	ushr	v31.4s, v25.4s, #12
1597	shl	v25.4s, v25.4s, #20
1598	ushr	v11.4s, v1.4s, #12
1599	shl	v1.4s, v1.4s, #20
1600	eor	v2.16b, v4.16b, v2.16b
1601	add	v20.4s, v20.4s, v27.4s
1602	orr	v25.16b, v25.16b, v31.16b
1603	add	v19.4s, v19.4s, v22.4s
1604	mov	v9.16b, v22.16b
1605	ldur	q22, [x29, #-240]
1606	orr	v1.16b, v1.16b, v11.16b
1607	ushr	v11.4s, v2.4s, #12
1608	shl	v2.4s, v2.4s, #20
1609	add	v20.4s, v20.4s, v0.4s
1610	add	v18.4s, v18.4s, v22.4s
1611	add	v19.4s, v19.4s, v25.4s
1612	mov	v24.16b, v21.16b
1613	ldur	q21, [x29, #-192]
1614	orr	v2.16b, v2.16b, v11.16b
1615	eor	v26.16b, v20.16b, v26.16b
1616	add	v17.4s, v17.4s, v21.4s
1617	add	v18.4s, v18.4s, v1.4s
1618	eor	v5.16b, v19.16b, v5.16b
1619	ushr	v31.4s, v26.4s, #8
1620	add	v17.4s, v17.4s, v2.4s
1621	shl	v26.4s, v26.4s, #24
1622	ushr	v11.4s, v5.4s, #8
1623	shl	v5.4s, v5.4s, #24
1624	eor	v7.16b, v18.16b, v7.16b
1625	orr	v26.16b, v26.16b, v31.16b
1626	eor	v6.16b, v17.16b, v6.16b
1627	orr	v5.16b, v5.16b, v11.16b
1628	ushr	v31.4s, v7.4s, #8
1629	shl	v7.4s, v7.4s, #24
1630	ushr	v11.4s, v6.4s, #8
1631	shl	v6.4s, v6.4s, #24
1632	add	v23.4s, v26.4s, v23.4s
1633	orr	v7.16b, v7.16b, v31.16b
1634	add	v3.4s, v5.4s, v3.4s
1635	orr	v6.16b, v6.16b, v11.16b
1636	eor	v0.16b, v23.16b, v0.16b
1637	add	v16.4s, v7.4s, v16.4s
1638	eor	v25.16b, v3.16b, v25.16b
1639	add	v4.4s, v6.4s, v4.4s
1640	ushr	v31.4s, v0.4s, #7
1641	shl	v0.4s, v0.4s, #25
1642	ushr	v11.4s, v25.4s, #7
1643	shl	v25.4s, v25.4s, #25
1644	eor	v1.16b, v16.16b, v1.16b
1645	orr	v0.16b, v0.16b, v31.16b
1646	eor	v2.16b, v4.16b, v2.16b
1647	orr	v25.16b, v25.16b, v11.16b
1648	ushr	v31.4s, v1.4s, #7
1649	shl	v1.4s, v1.4s, #25
1650	add	v20.4s, v20.4s, v8.4s
1651	add	v18.4s, v18.4s, v14.4s
1652	ushr	v11.4s, v2.4s, #7
1653	shl	v2.4s, v2.4s, #25
1654	orr	v1.16b, v1.16b, v31.16b
1655	add	v20.4s, v20.4s, v25.4s
1656	add	v17.4s, v17.4s, v13.4s
1657	add	v18.4s, v18.4s, v0.4s
1658	orr	v2.16b, v2.16b, v11.16b
1659	add	v19.4s, v19.4s, v29.4s
1660	eor	v7.16b, v7.16b, v20.16b
1661	add	v17.4s, v17.4s, v1.4s
1662	eor	v6.16b, v6.16b, v18.16b
1663	add	v19.4s, v19.4s, v2.4s
1664	rev32	v7.8h, v7.8h
1665	eor	v5.16b, v17.16b, v5.16b
1666	rev32	v6.8h, v6.8h
1667	eor	v26.16b, v19.16b, v26.16b
1668	add	v4.4s, v4.4s, v7.4s
1669	rev32	v5.8h, v5.8h
1670	add	v3.4s, v3.4s, v6.4s
1671	rev32	v26.8h, v26.8h
1672	eor	v25.16b, v4.16b, v25.16b
1673	add	v23.4s, v23.4s, v5.4s
1674	eor	v0.16b, v3.16b, v0.16b
1675	add	v16.4s, v16.4s, v26.4s
1676	ushr	v31.4s, v25.4s, #12
1677	shl	v25.4s, v25.4s, #20
1678	ushr	v11.4s, v0.4s, #12
1679	shl	v0.4s, v0.4s, #20
1680	eor	v1.16b, v23.16b, v1.16b
1681	orr	v25.16b, v25.16b, v31.16b
1682	eor	v2.16b, v16.16b, v2.16b
1683	orr	v0.16b, v0.16b, v11.16b
1684	ushr	v31.4s, v1.4s, #12
1685	shl	v1.4s, v1.4s, #20
1686	add	v20.4s, v20.4s, v28.4s
1687	add	v18.4s, v18.4s, v12.4s
1688	ushr	v11.4s, v2.4s, #12
1689	shl	v2.4s, v2.4s, #20
1690	orr	v1.16b, v1.16b, v31.16b
1691	add	v20.4s, v20.4s, v25.4s
1692	add	v17.4s, v17.4s, v30.4s
1693	add	v18.4s, v18.4s, v0.4s
1694	orr	v2.16b, v2.16b, v11.16b
1695	add	v19.4s, v19.4s, v21.4s
1696	eor	v7.16b, v20.16b, v7.16b
1697	add	v17.4s, v17.4s, v1.4s
1698	eor	v6.16b, v18.16b, v6.16b
1699	add	v19.4s, v19.4s, v2.4s
1700	ushr	v31.4s, v7.4s, #8
1701	shl	v7.4s, v7.4s, #24
1702	ushr	v11.4s, v6.4s, #8
1703	shl	v6.4s, v6.4s, #24
1704	eor	v5.16b, v17.16b, v5.16b
1705	orr	v7.16b, v7.16b, v31.16b
1706	eor	v26.16b, v19.16b, v26.16b
1707	orr	v6.16b, v6.16b, v11.16b
1708	ushr	v31.4s, v5.4s, #8
1709	shl	v5.4s, v5.4s, #24
1710	ushr	v11.4s, v26.4s, #8
1711	shl	v26.4s, v26.4s, #24
1712	add	v4.4s, v7.4s, v4.4s
1713	orr	v5.16b, v5.16b, v31.16b
1714	add	v3.4s, v6.4s, v3.4s
1715	orr	v26.16b, v26.16b, v11.16b
1716	eor	v25.16b, v4.16b, v25.16b
1717	add	v23.4s, v5.4s, v23.4s
1718	eor	v0.16b, v3.16b, v0.16b
1719	add	v16.4s, v26.4s, v16.4s
1720	ushr	v31.4s, v25.4s, #7
1721	shl	v25.4s, v25.4s, #25
1722	ushr	v11.4s, v0.4s, #7
1723	shl	v0.4s, v0.4s, #25
1724	eor	v1.16b, v23.16b, v1.16b
1725	orr	v25.16b, v25.16b, v31.16b
1726	eor	v2.16b, v16.16b, v2.16b
1727	orr	v0.16b, v0.16b, v11.16b
1728	ushr	v31.4s, v1.4s, #7
1729	shl	v1.4s, v1.4s, #25
1730	add	v20.4s, v20.4s, v15.4s
1731	ushr	v11.4s, v2.4s, #7
1732	shl	v2.4s, v2.4s, #25
1733	orr	v1.16b, v1.16b, v31.16b
1734	add	v18.4s, v18.4s, v24.4s
1735	add	v20.4s, v20.4s, v0.4s
1736	add	v19.4s, v19.4s, v9.4s
1737	mov	v8.16b, v13.16b
1738	ldur	q13, [x29, #-208]
1739	orr	v2.16b, v2.16b, v11.16b
1740	add	v18.4s, v18.4s, v1.4s
1741	add	v17.4s, v17.4s, v13.4s
1742	eor	v26.16b, v20.16b, v26.16b
1743	add	v19.4s, v19.4s, v25.4s
1744	eor	v7.16b, v18.16b, v7.16b
1745	add	v17.4s, v17.4s, v2.4s
1746	rev32	v26.8h, v26.8h
1747	eor	v5.16b, v19.16b, v5.16b
1748	rev32	v7.8h, v7.8h
1749	eor	v6.16b, v17.16b, v6.16b
1750	add	v23.4s, v23.4s, v26.4s
1751	rev32	v5.8h, v5.8h
1752	add	v16.4s, v16.4s, v7.4s
1753	rev32	v6.8h, v6.8h
1754	eor	v0.16b, v23.16b, v0.16b
1755	add	v3.4s, v3.4s, v5.4s
1756	eor	v1.16b, v16.16b, v1.16b
1757	add	v4.4s, v4.4s, v6.4s
1758	ushr	v31.4s, v0.4s, #12
1759	shl	v0.4s, v0.4s, #20
1760	eor	v25.16b, v3.16b, v25.16b
1761	ushr	v11.4s, v1.4s, #12
1762	shl	v1.4s, v1.4s, #20
1763	orr	v0.16b, v0.16b, v31.16b
1764	eor	v2.16b, v4.16b, v2.16b
1765	ushr	v31.4s, v25.4s, #12
1766	shl	v25.4s, v25.4s, #20
1767	orr	v1.16b, v1.16b, v11.16b
1768	ushr	v11.4s, v2.4s, #12
1769	shl	v2.4s, v2.4s, #20
1770	add	v20.4s, v20.4s, v22.4s
1771	orr	v25.16b, v25.16b, v31.16b
1772	add	v19.4s, v19.4s, v10.4s
1773	mov	v27.16b, v12.16b
1774	mov	v12.16b, v30.16b
1775	mov	v29.16b, v21.16b
1776	mov	v21.16b, v24.16b
1777	ldr	q24, [sp, #192]
1778	mov	v30.16b, v22.16b
1779	ldr	q22, [sp, #256]
1780	orr	v2.16b, v2.16b, v11.16b
1781	add	v20.4s, v20.4s, v0.4s
1782	add	v18.4s, v18.4s, v24.4s
1783	add	v19.4s, v19.4s, v25.4s
1784	add	v17.4s, v17.4s, v22.4s
1785	eor	v26.16b, v20.16b, v26.16b
1786	add	v18.4s, v18.4s, v1.4s
1787	eor	v5.16b, v19.16b, v5.16b
1788	add	v17.4s, v17.4s, v2.4s
1789	ushr	v31.4s, v26.4s, #8
1790	shl	v26.4s, v26.4s, #24
1791	ushr	v11.4s, v5.4s, #8
1792	shl	v5.4s, v5.4s, #24
1793	eor	v7.16b, v18.16b, v7.16b
1794	eor	v6.16b, v17.16b, v6.16b
1795	orr	v26.16b, v26.16b, v31.16b
1796	orr	v5.16b, v5.16b, v11.16b
1797	ushr	v31.4s, v7.4s, #8
1798	shl	v7.4s, v7.4s, #24
1799	ushr	v11.4s, v6.4s, #8
1800	shl	v6.4s, v6.4s, #24
1801	add	v23.4s, v26.4s, v23.4s
1802	orr	v7.16b, v7.16b, v31.16b
1803	add	v3.4s, v5.4s, v3.4s
1804	orr	v6.16b, v6.16b, v11.16b
1805	eor	v0.16b, v23.16b, v0.16b
1806	add	v16.4s, v7.4s, v16.4s
1807	eor	v25.16b, v3.16b, v25.16b
1808	add	v4.4s, v6.4s, v4.4s
1809	ushr	v31.4s, v0.4s, #7
1810	shl	v0.4s, v0.4s, #25
1811	ushr	v11.4s, v25.4s, #7
1812	shl	v25.4s, v25.4s, #25
1813	eor	v1.16b, v16.16b, v1.16b
1814	eor	v2.16b, v4.16b, v2.16b
1815	orr	v0.16b, v0.16b, v31.16b
1816	orr	v25.16b, v25.16b, v11.16b
1817	ushr	v31.4s, v1.4s, #7
1818	shl	v1.4s, v1.4s, #25
1819	ushr	v11.4s, v2.4s, #7
1820	shl	v2.4s, v2.4s, #25
1821	add	v20.4s, v20.4s, v14.4s
1822	add	v18.4s, v18.4s, v27.4s
1823	ldr	q27, [sp, #224]
1824	orr	v1.16b, v1.16b, v31.16b
1825	orr	v2.16b, v2.16b, v11.16b
1826	add	v20.4s, v20.4s, v25.4s
1827	add	v17.4s, v17.4s, v29.4s
1828	add	v18.4s, v18.4s, v0.4s
1829	add	v19.4s, v19.4s, v8.4s
1830	eor	v7.16b, v7.16b, v20.16b
1831	add	v17.4s, v17.4s, v1.4s
1832	eor	v6.16b, v6.16b, v18.16b
1833	add	v19.4s, v19.4s, v2.4s
1834	rev32	v7.8h, v7.8h
1835	eor	v5.16b, v17.16b, v5.16b
1836	rev32	v6.8h, v6.8h
1837	eor	v26.16b, v19.16b, v26.16b
1838	add	v4.4s, v4.4s, v7.4s
1839	rev32	v5.8h, v5.8h
1840	add	v3.4s, v3.4s, v6.4s
1841	rev32	v26.8h, v26.8h
1842	eor	v25.16b, v4.16b, v25.16b
1843	add	v23.4s, v23.4s, v5.4s
1844	eor	v0.16b, v3.16b, v0.16b
1845	add	v16.4s, v16.4s, v26.4s
1846	ushr	v29.4s, v25.4s, #12
1847	shl	v25.4s, v25.4s, #20
1848	ushr	v31.4s, v0.4s, #12
1849	shl	v0.4s, v0.4s, #20
1850	eor	v1.16b, v23.16b, v1.16b
1851	eor	v2.16b, v16.16b, v2.16b
1852	orr	v25.16b, v25.16b, v29.16b
1853	orr	v0.16b, v0.16b, v31.16b
1854	ushr	v29.4s, v1.4s, #12
1855	shl	v1.4s, v1.4s, #20
1856	ushr	v31.4s, v2.4s, #12
1857	shl	v2.4s, v2.4s, #20
1858	add	v18.4s, v18.4s, v21.4s
1859	ldr	q21, [sp, #240]
1860	add	v20.4s, v20.4s, v27.4s
1861	prfm	pldl1keep, [x17, #256]
1862	orr	v1.16b, v1.16b, v29.16b
1863	prfm	pldl1keep, [x21, #256]
1864	orr	v2.16b, v2.16b, v31.16b
1865	prfm	pldl1keep, [x16, #256]
1866	add	v18.4s, v18.4s, v0.4s
1867	prfm	pldl1keep, [x6, #256]
1868	add	v17.4s, v17.4s, v21.4s
1869	add	v19.4s, v19.4s, v22.4s
1870	add	v20.4s, v20.4s, v25.4s
1871	eor	v6.16b, v18.16b, v6.16b
1872	add	v17.4s, v17.4s, v1.4s
1873	add	v19.4s, v19.4s, v2.4s
1874	eor	v7.16b, v20.16b, v7.16b
1875	ushr	v22.4s, v6.4s, #8
1876	shl	v6.4s, v6.4s, #24
1877	eor	v5.16b, v17.16b, v5.16b
1878	eor	v26.16b, v19.16b, v26.16b
1879	ushr	v21.4s, v7.4s, #8
1880	shl	v7.4s, v7.4s, #24
1881	orr	v6.16b, v6.16b, v22.16b
1882	ushr	v22.4s, v5.4s, #8
1883	shl	v5.4s, v5.4s, #24
1884	ushr	v29.4s, v26.4s, #8
1885	shl	v26.4s, v26.4s, #24
1886	orr	v7.16b, v7.16b, v21.16b
1887	orr	v5.16b, v5.16b, v22.16b
1888	add	v3.4s, v6.4s, v3.4s
1889	orr	v21.16b, v26.16b, v29.16b
1890	add	v4.4s, v7.4s, v4.4s
1891	add	v22.4s, v5.4s, v23.4s
1892	eor	v0.16b, v3.16b, v0.16b
1893	add	v16.4s, v21.4s, v16.4s
1894	eor	v23.16b, v4.16b, v25.16b
1895	eor	v1.16b, v22.16b, v1.16b
1896	ushr	v25.4s, v0.4s, #7
1897	shl	v0.4s, v0.4s, #25
1898	eor	v2.16b, v16.16b, v2.16b
1899	ushr	v26.4s, v23.4s, #7
1900	shl	v23.4s, v23.4s, #25
1901	orr	v0.16b, v0.16b, v25.16b
1902	ushr	v25.4s, v1.4s, #7
1903	shl	v1.4s, v1.4s, #25
1904	ushr	v29.4s, v2.4s, #7
1905	shl	v2.4s, v2.4s, #25
1906	add	v20.4s, v20.4s, v28.4s
1907	orr	v23.16b, v23.16b, v26.16b
1908	orr	v1.16b, v1.16b, v25.16b
1909	orr	v2.16b, v2.16b, v29.16b
1910	add	v20.4s, v20.4s, v0.4s
1911	add	v18.4s, v18.4s, v13.4s
1912	add	v17.4s, v17.4s, v30.4s
1913	add	v19.4s, v19.4s, v10.4s
1914	eor	v21.16b, v20.16b, v21.16b
1915	add	v18.4s, v18.4s, v1.4s
1916	add	v17.4s, v17.4s, v2.4s
1917	add	v19.4s, v19.4s, v23.4s
1918	rev32	v21.8h, v21.8h
1919	eor	v7.16b, v18.16b, v7.16b
1920	eor	v6.16b, v17.16b, v6.16b
1921	eor	v5.16b, v19.16b, v5.16b
1922	add	v22.4s, v22.4s, v21.4s
1923	rev32	v7.8h, v7.8h
1924	rev32	v6.8h, v6.8h
1925	rev32	v5.8h, v5.8h
1926	eor	v0.16b, v22.16b, v0.16b
1927	add	v16.4s, v16.4s, v7.4s
1928	add	v4.4s, v4.4s, v6.4s
1929	add	v3.4s, v3.4s, v5.4s
1930	ushr	v25.4s, v0.4s, #12
1931	shl	v0.4s, v0.4s, #20
1932	eor	v1.16b, v16.16b, v1.16b
1933	eor	v2.16b, v4.16b, v2.16b
1934	eor	v23.16b, v3.16b, v23.16b
1935	orr	v0.16b, v0.16b, v25.16b
1936	ushr	v25.4s, v1.4s, #12
1937	shl	v1.4s, v1.4s, #20
1938	ushr	v26.4s, v2.4s, #12
1939	shl	v2.4s, v2.4s, #20
1940	ushr	v27.4s, v23.4s, #12
1941	shl	v23.4s, v23.4s, #20
1942	orr	v1.16b, v1.16b, v25.16b
1943	add	v20.4s, v20.4s, v24.4s
1944	orr	v2.16b, v2.16b, v26.16b
1945	orr	v23.16b, v23.16b, v27.16b
1946	add	v18.4s, v18.4s, v12.4s
1947	add	v17.4s, v17.4s, v9.4s
1948	add	v19.4s, v19.4s, v15.4s
1949	add	v20.4s, v20.4s, v0.4s
1950	add	v18.4s, v18.4s, v1.4s
1951	add	v17.4s, v17.4s, v2.4s
1952	add	v19.4s, v19.4s, v23.4s
1953	eor	v21.16b, v20.16b, v21.16b
1954	eor	v7.16b, v18.16b, v7.16b
1955	eor	v6.16b, v17.16b, v6.16b
1956	eor	v5.16b, v19.16b, v5.16b
1957	ushr	v24.4s, v21.4s, #8
1958	shl	v21.4s, v21.4s, #24
1959	ushr	v25.4s, v7.4s, #8
1960	shl	v7.4s, v7.4s, #24
1961	ushr	v26.4s, v6.4s, #8
1962	shl	v6.4s, v6.4s, #24
1963	ushr	v27.4s, v5.4s, #8
1964	shl	v5.4s, v5.4s, #24
1965	orr	v21.16b, v21.16b, v24.16b
1966	orr	v7.16b, v7.16b, v25.16b
1967	orr	v6.16b, v6.16b, v26.16b
1968	orr	v5.16b, v5.16b, v27.16b
1969	add	v22.4s, v21.4s, v22.4s
1970	add	v16.4s, v7.4s, v16.4s
1971	add	v4.4s, v6.4s, v4.4s
1972	add	v3.4s, v5.4s, v3.4s
1973	eor	v0.16b, v22.16b, v0.16b
1974	eor	v1.16b, v16.16b, v1.16b
1975	eor	v2.16b, v4.16b, v2.16b
1976	eor	v23.16b, v3.16b, v23.16b
1977	ushr	v24.4s, v0.4s, #7
1978	shl	v0.4s, v0.4s, #25
1979	ushr	v25.4s, v1.4s, #7
1980	shl	v1.4s, v1.4s, #25
1981	ushr	v26.4s, v2.4s, #7
1982	shl	v2.4s, v2.4s, #25
1983	ushr	v27.4s, v23.4s, #7
1984	shl	v23.4s, v23.4s, #25
1985	orr	v0.16b, v0.16b, v24.16b
1986	orr	v1.16b, v1.16b, v25.16b
1987	orr	v2.16b, v2.16b, v26.16b
1988	orr	v23.16b, v23.16b, v27.16b
1989	movi	v24.4s, #64
1990	eor	v12.16b, v4.16b, v20.16b
1991	eor	v31.16b, v18.16b, v3.16b
1992	eor	v29.16b, v17.16b, v22.16b
1993	eor	v30.16b, v16.16b, v19.16b
1994	eor	v28.16b, v7.16b, v23.16b
1995	eor	v23.16b, v6.16b, v0.16b
1996	eor	v13.16b, v1.16b, v5.16b
1997	eor	v25.16b, v2.16b, v21.16b
1998	cbnz	x15, .LBB3_5
1999	b	.LBB3_2
2000.LBB3_6:
2001	cbz	x24, .LBB3_14
2002	orr	w8, w7, w19
2003	and	x22, x5, #0x1
2004	stur	w8, [x29, #-192]
2005.LBB3_8:
2006	ldr	x8, [sp, #40]
2007	mov	x28, x0
2008	ldr	x25, [x0]
2009	mov	x23, x2
2010	ldur	w5, [x29, #-192]
2011	ldp	q0, q1, [x8]
2012	mov	x8, x2
2013	b	.LBB3_11
2014.LBB3_9:
2015	orr	w5, w5, w27
2016.LBB3_10:
2017	sub	x0, x29, #144
2018	sub	x1, x29, #176
2019	mov	x2, x25
2020	mov	w3, #64
2021	mov	x4, x20
2022	bl	compress_pre
2023	ldp	q0, q1, [x29, #-144]
2024	add	x25, x25, #64
2025	mov	x8, x21
2026	mov	w5, w19
2027	ldp	q2, q3, [x29, #-112]
2028	eor	v0.16b, v2.16b, v0.16b
2029	eor	v1.16b, v3.16b, v1.16b
2030.LBB3_11:
2031	subs	x21, x8, #1
2032	stp	q0, q1, [x29, #-176]
2033	b.eq	.LBB3_9
2034	cbnz	x8, .LBB3_10
2035	ldp	q1, q0, [x29, #-176]
2036	mov	x0, x28
2037	add	x20, x20, x22
2038	add	x0, x28, #8
2039	subs	x24, x24, #1
2040	mov	x2, x23
2041	stp	q1, q0, [x26], #32
2042	b.ne	.LBB3_8
2043.LBB3_14:
2044	add	sp, sp, #464
2045	ldp	x20, x19, [sp, #144]
2046	ldp	x22, x21, [sp, #128]
2047	ldp	x24, x23, [sp, #112]
2048	ldp	x26, x25, [sp, #96]
2049	ldp	x28, x27, [sp, #80]
2050	ldp	x29, x30, [sp, #64]
2051	ldp	d9, d8, [sp, #48]
2052	ldp	d11, d10, [sp, #32]
2053	ldp	d13, d12, [sp, #16]
2054	ldp	d15, d14, [sp], #160
2055	hint	#29
2056	ret
2057.Lfunc_end3:
2058	.size	zfs_blake3_hash_many_sse2, .Lfunc_end3-zfs_blake3_hash_many_sse2
2059	.cfi_endproc
2060	.section	".note.GNU-stack","",@progbits
2061#endif