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