1de0b2026841c34193cacf5c97646b38439e13200Adam Langley# Copyright (c) 2014, Google Inc.
2de0b2026841c34193cacf5c97646b38439e13200Adam Langley#
3de0b2026841c34193cacf5c97646b38439e13200Adam Langley# Permission to use, copy, modify, and/or distribute this software for any
4de0b2026841c34193cacf5c97646b38439e13200Adam Langley# purpose with or without fee is hereby granted, provided that the above
5de0b2026841c34193cacf5c97646b38439e13200Adam Langley# copyright notice and this permission notice appear in all copies.
6de0b2026841c34193cacf5c97646b38439e13200Adam Langley#
7de0b2026841c34193cacf5c97646b38439e13200Adam Langley# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8de0b2026841c34193cacf5c97646b38439e13200Adam Langley# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9de0b2026841c34193cacf5c97646b38439e13200Adam Langley# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10de0b2026841c34193cacf5c97646b38439e13200Adam Langley# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11de0b2026841c34193cacf5c97646b38439e13200Adam Langley# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12de0b2026841c34193cacf5c97646b38439e13200Adam Langley# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13de0b2026841c34193cacf5c97646b38439e13200Adam Langley# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14de0b2026841c34193cacf5c97646b38439e13200Adam Langley
15de0b2026841c34193cacf5c97646b38439e13200Adam Langley# This file contains a pre-compiled version of chacha_vec.c for ARM. This is
16de0b2026841c34193cacf5c97646b38439e13200Adam Langley# needed to support switching on NEON code at runtime. If the whole of OpenSSL
17de0b2026841c34193cacf5c97646b38439e13200Adam Langley# were to be compiled with the needed flags to build chacha_vec.c, then it
18de0b2026841c34193cacf5c97646b38439e13200Adam Langley# wouldn't be possible to run on non-NEON systems.
19de0b2026841c34193cacf5c97646b38439e13200Adam Langley#
20de0b2026841c34193cacf5c97646b38439e13200Adam Langley# This file was generated by:
21de0b2026841c34193cacf5c97646b38439e13200Adam Langley#
22de0b2026841c34193cacf5c97646b38439e13200Adam Langley#     /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.10-20121022_linux/bin/arm-linux-gnueabihf-gcc -O3 -mcpu=cortex-a8 -mfpu=neon -S chacha_vec.c -I ../../include -fpic -o chacha_vec_arm.S
23de0b2026841c34193cacf5c97646b38439e13200Adam Langley
2460d612fdcf7052008fcc17a503854eac1653c739Adam Langley#if !defined(OPENSSL_NO_ASM)
2560d612fdcf7052008fcc17a503854eac1653c739Adam Langley
26de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.syntax unified
27de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.cpu cortex-a8
28de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 27, 3
29de0b2026841c34193cacf5c97646b38439e13200Adam Langley
30de0b2026841c34193cacf5c97646b38439e13200Adam Langley# EABI attribute 28 sets whether VFP register arguments were used to build this
31de0b2026841c34193cacf5c97646b38439e13200Adam Langley# file. If object files are inconsistent on this point, the linker will refuse
32de0b2026841c34193cacf5c97646b38439e13200Adam Langley# to link them. Thus we report whatever the compiler expects since we don't use
33de0b2026841c34193cacf5c97646b38439e13200Adam Langley# VFP arguments.
34de0b2026841c34193cacf5c97646b38439e13200Adam Langley
35de0b2026841c34193cacf5c97646b38439e13200Adam Langley#if defined(__ARM_PCS_VFP)
36de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 28, 1
37de0b2026841c34193cacf5c97646b38439e13200Adam Langley#else
38de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 28, 0
39de0b2026841c34193cacf5c97646b38439e13200Adam Langley#endif
40de0b2026841c34193cacf5c97646b38439e13200Adam Langley
41de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.fpu neon
42de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 20, 1
43de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 21, 1
44de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 23, 3
45de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 24, 1
46de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 25, 1
47de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 26, 2
48de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 30, 2
49de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 34, 1
50de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.eabi_attribute 18, 4
51de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.thumb
52de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.file	"chacha_vec.c"
53de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.text
54de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.align	2
55de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.global	CRYPTO_chacha_20_neon
56eb7d2ed1fe8a33b3e3871502ba7e12efaf94360cAdam Langley	.hidden	CRYPTO_chacha_20_neon
57de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.thumb
58de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.thumb_func
59de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.type	CRYPTO_chacha_20_neon, %function
60de0b2026841c34193cacf5c97646b38439e13200Adam LangleyCRYPTO_chacha_20_neon:
61de0b2026841c34193cacf5c97646b38439e13200Adam Langley	@ args = 8, pretend = 0, frame = 304
62de0b2026841c34193cacf5c97646b38439e13200Adam Langley	@ frame_needed = 1, uses_anonymous_args = 0
63de0b2026841c34193cacf5c97646b38439e13200Adam Langley	@ link register save eliminated.
64de0b2026841c34193cacf5c97646b38439e13200Adam Langley	push	{r4, r5, r6, r7, r8, r9, sl, fp}
65de0b2026841c34193cacf5c97646b38439e13200Adam Langley	fstmfdd	sp!, {d8, d9, d10, d11, d12, d13, d14, d15}
66de0b2026841c34193cacf5c97646b38439e13200Adam Langley	sub	sp, sp, #304
67de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r7, sp, #0
68de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movw	ip, #43691
69de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movt	ip, 43690
70de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #196]
71de0b2026841c34193cacf5c97646b38439e13200Adam Langley	sub	sp, sp, #96
72de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #196]
73de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #400]
74de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, .L38+16
75de0b2026841c34193cacf5c97646b38439e13200Adam Langley	umull	r4, ip, ip, r4
76de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r6, #0]
77de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #400]
78de0b2026841c34193cacf5c97646b38439e13200Adam Langley.LPIC24:
79de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r2, pc
80de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r4, sp, #15
81de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [r7, #244]
82de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #176]
83de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bic	r4, r4, #15
84de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #188]
85de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #200]
86de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsrs	ip, ip, #7
87de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r1, [r7, #184]
88de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldmia	r2, {r0, r1, r2, r3}
89de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r8, #4]
90de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #244]
91de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vld1.64	{d24-d25}, [r5:64]
92de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d26, [r5, #16]
93de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d27, [r5, #24]
94de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r9, [r7, #200]
95de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #404]
96de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #176]
97de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r6, r9, #64
98de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #300]
99de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r4, #0
100de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [r7, #288]
101de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #296]
102de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #292]
103de0b2026841c34193cacf5c97646b38439e13200Adam Langley	stmia	r6, {r0, r1, r2, r3}
104de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d22, [r9, #64]
105de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d23, [r9, #72]
106de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d20, [r7, #288]
107de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d21, [r7, #296]
108de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	ip, [r7, #192]
109de0b2026841c34193cacf5c97646b38439e13200Adam Langley	beq	.L20
110de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsl	r6, ip, #1
111de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r9, #68]
112de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r3, r6, ip
113de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #180]
114de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r9, #72]
115de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r8, #2
116de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r9, #76]
117de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d18, .L38
118de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d19, .L38+8
119de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #240]
120de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #184]
121de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #188]
122de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #224]
123de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r1, [r7, #220]
124de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [r7, #208]
125de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #216]
126de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [r7, #204]
127de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #212]
128de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #252]
129de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #248]
130de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L4:
131de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #244]
132de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r9, r7, #216
133de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r7, #244]
134de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q8, q10, q9
135de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #208]
136de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q15, q13  @ v4si
137de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #240]
138de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q3, q12  @ v4si
139de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #244]
140de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q2, q11  @ v4si
141de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r5, r5, r6
142de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r2, #8]
143de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #400]
144de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q5, q10  @ v4si
145de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r3, #12]
146de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q1, q13  @ v4si
147de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #244]
148de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q0, q12  @ v4si
149de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r7, #244]
150de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q4, q11  @ v4si
151de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldmia	r9, {r9, sl, fp}
152de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #228]
153de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r4, #24]
154de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r0, #0]
155de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r1, #4]
156de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #264]
157de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [r7, #236]
158de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r6, #4]
159de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r4, #28]
160de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #280]
161de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r6, #0]
162de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movs	r6, #0
163de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	ip, [r7, #228]
164de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #212]
165de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #232]
166de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r1, [r7, #268]
167de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r4, #16]
168de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r4, #20]
169de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movs	r4, #10
170de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #24]
171de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [r7, #284]
172de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #256]
173de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #264]
174de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r9, [r7, #276]
175de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r9, r6
176de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #280]
177de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [r7, #260]
178de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r8, sl
179de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r1, [r7, #272]
180de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	sl, ip
181de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #264]
182de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r6, r5
183de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r7, #236]
184de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r5, r0
185de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	ip, [r7, #24]
186de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r7, #268]
187de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #232]
188de0b2026841c34193cacf5c97646b38439e13200Adam Langley	b	.L39
189de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L40:
190de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.align	3
191de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L38:
192de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	1
193de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	0
194de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	0
195de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	0
196de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	.LANCHOR0-(.LPIC24+4)
197de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L39:
198de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L3:
199de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q4, q4, q0
200de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r8, r1
201de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q2, q2, q3
202de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [r7, #268]
203de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q5, q5, q4
204de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #276]
205de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q8, q2
206de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, fp, r0
207de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	fp, [r7, #280]
208de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r8, r2
209de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q5, q5
210de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [r7, #276]
211de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q8, q8
212de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q1, q1, q5
213de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q8
214de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #280]
215de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q0, q1, q0
216de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #260]
217de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q15, q3
218de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	sl, sl, r8
219de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #276]
220de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, r4, r3
221de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q7, q0, #12
222de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #268]
223de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q6, q3, #12
224de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r6, r6, r8
225de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r9, r9, r4
226de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #272]
227de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q7, q0, #20
228de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r8, r6, #16
229de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #264]
230de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	ip, ip, fp
231de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q6, q3, #20
232de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	sl, sl, #16
233de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r9, r9, #16
234de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, r5, sl
235de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q4, q4, q7
236de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #236]
237de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q2, q2, q6
238de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, r4, r9
239de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r4, r6, r8
240de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #284]
241de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	ip, ip, #16
242de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q5, q4, q5
243de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q2, q8
244de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r6, r6, ip
245de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #264]
246de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r1, r1, r5
247de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #236]
248de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q3, q5, #8
249de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q14, q8, #8
250de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r2, r2, r4
251de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r0, r0, r6
252de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #264]
253de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q3, q5, #24
254de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r1, r1, #20
255de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r3, r3, r6
256de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #280]
257de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r0, r0, #20
258de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q14, q8, #24
259de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r0, r6
260de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #284]
261de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #268]
262de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q1, q1, q3
263de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q14
264de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r2, r2, #20
265de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r1, r6
266de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #260]
267de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #276]
268de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q6, q15, q6
269de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q7, q1, q7
270de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r3, r3, #20
271de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r2, r6
272de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #280]
273de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #284]
274de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q0, q6, #7
275de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q5, q7, #7
276de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, r3, fp
277de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	sl, r6, sl
278de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #260]
279de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	ip, fp, ip
280de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q0, q6, #25
281de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r9, r6, r9
282de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #280]
283de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	sl, sl, #24
284de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q5, q7, #25
285de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r8, r6, r8
286de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #236]
287de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r9, r9, #24
288de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	ip, ip, #24
289de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r6, sl, r6
290de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #276]
291de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #264]
292de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, r9, r5
293de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #272]
294de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q5, q5, q5, #1
295de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, ip, r6
296de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #276]
297de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q0, q0, q0, #1
298de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q4, q4, q5
299de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r0, r0, r6
300de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #272]
301de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q2, q2, q0
302de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q3, q3, q3, #3
303de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r8, r8, #24
304de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r1, r1, r6
305de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q14, q14, q14, #3
306de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r4, r8, r4
307de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #284]
308de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q4, q3
309de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q14, q2, q14
310de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r2, r2, r4
311de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r1, r1, #25
312de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q1, q1, q1, #2
313de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r1, r6
314de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #284]
315de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q15, q15, q15, #2
316de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #260]
317de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r3, r3, r5
318de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r2, r2, #25
319de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q8, q14
320de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r2, r6
321de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q3, q3
322de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #268]
323de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q1, q1, q3
324de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #280]
325de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q8
326de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r3, r3, #25
327de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q5, q1, q5
328de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r3, r6
329de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q0, q15, q0
330de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #264]
331de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #268]
332de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r0, r0, #25
333de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, r0, fp
334de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q6, q5, #12
335de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	sl, r6, sl
336de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #284]
337de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q14, q0, #12
338de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r8, fp, r8
339de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	ip, r6, ip
340de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #264]
341de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q6, q5, #20
342de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	sl, sl, #16
343de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r9, r6, r9
344de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r6, r8, #16
345de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q14, q0, #20
346de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #272]
347de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	ip, ip, #16
348de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, sl, r5
349de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r6, r8
350de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r4, ip, r4
351de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #236]
352de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r0, r8, r0
353de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #280]
354de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q4, q4, q6
355de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #236]
356de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q2, q2, q14
357de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #276]
358de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r0, r0, #20
359de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q4, q3
360de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r1, r1, r5
361de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q0, q2, q8
362de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [r7, #272]
363de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #24]
364de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, r0, fp
365de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #280]
366de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r9, r9, #16
367de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #284]
368de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r4, r9, r4
369de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	fp, [r7, #260]
370de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r1, r1, #20
371de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, r1, r0
372de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r2, r8, r2
373de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #260]
374de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r3, r3, r4
375de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q5, q3, #8
376de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #232]
377de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q8, q0, #8
378de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #268]
379de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #264]
380de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r2, r2, #20
381de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r3, r3, #20
382de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r6, r6, r0
383de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r5, r3, r5
384de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r2, r4
385de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q5, q3, #24
386de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #272]
387de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r9, r5, r9
388de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	ip, fp, ip
389de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q8, q0, #24
390de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	sl, r8, sl
391de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r6, r6, #24
392de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #280]
393de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #276]
394de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r4, r6, r4
395de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #236]
396de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q1, q1, q5
397de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #272]
398de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q8
399de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #232]
400de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	ip, ip, #24
401de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	sl, sl, #24
402de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r9, r9, #24
403de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, ip, r5
404de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r0, sl, r0
405de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [r7, #264]
406de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, r9, r4
407de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #284]
408de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q6, q1, q6
409de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #24]
410de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q14, q15, q14
411de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #272]
412de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r3, r3, r5
413de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q0, q6, #7
414de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q1, q1, q1, #2
415de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r0, r0, r4
416de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #284]
417de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #280]
418de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q3, q14, #7
419de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r2, r2, r4
420de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #280]
421de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #264]
422de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q0, q6, #25
423de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r2, r2, #25
424de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r3, r3, #25
425de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r1, r1, r0
426de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q3, q14, #25
427de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r0, r4, #25
428de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #256]
429de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ror	r1, r1, #25
430de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q5, q5, q5, #1
431de0b2026841c34193cacf5c97646b38439e13200Adam Langley	subs	r4, r4, #1
432de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #256]
433de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q15, q15, q15, #2
434de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q8, q8, q8, #1
435de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q0, q0, q0, #3
436de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q3, q3, q3, #3
437de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bne	.L3
438de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #264]
439de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q14, q10, q9
440de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #264]
441de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q10, q10, q5
442de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #252]
443de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vld1.64	{d12-d13}, [r2:64]
444de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #220]
445de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q4, q11, q4
446de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	ip, [r7, #24]
447de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	ip, sl
448de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	sl, r8
449de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #260]
450de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	sl, sl, r2
451de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #212]
452de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #280]
453de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q0, q12, q0
454de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #224]
455de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r8, r2
456de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #240]
457de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q1, q13, q1
458de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [r7, #232]
459de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	fp, fp, r4
460de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r0, r5
461de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #216]
462de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r5, r6
463de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r6, r9
464de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r9, [r7, #276]
465de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r2, r2, #3
466de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #240]
467de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q2, q11, q2
468de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #252]
469de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r9, r9, r4
470de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q12, q3
471de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #228]
472de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q13, q15
473de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r1, [r7, #268]
474de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q8, q14, q8
475de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [r7, #236]
476de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q4, q4, q6
477de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r7, #284]
478de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r7, #272]
479de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	ip, r4, ip
480de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #248]
481de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vst1.64	{d8-d9}, [r4:64]
482de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d8, [r2, #16]
483de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d9, [r2, #24]
484de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q0, q0, q4
485de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d0, [r4, #16]
486de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d1, [r4, #24]
487de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d0, [r2, #32]
488de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d1, [r2, #40]
489de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q1, q1, q0
490de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d2, [r4, #32]
491de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d3, [r4, #40]
492de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d2, [r2, #48]
493de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d3, [r2, #56]
494de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q10, q10, q1
495de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d20, [r4, #48]
496de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d21, [r4, #56]
497de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d8, [r2, #64]
498de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d9, [r2, #72]
499de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q2, q2, q4
500de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d4, [r4, #64]
501de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d5, [r4, #72]
502de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d10, [r2, #80]
503de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d11, [r2, #88]
504de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q3, q5
505de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d6, [r4, #80]
506de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d7, [r4, #88]
507de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d12, [r2, #96]
508de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d13, [r2, #104]
509de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q15, q15, q6
510de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d30, [r4, #96]
511de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d31, [r4, #104]
512de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d20, [r2, #112]
513de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d21, [r2, #120]
514de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q8, q10
515de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d16, [r4, #112]
516de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d17, [r4, #120]
517de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r2, #128]
518de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #248]
519de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q10, q14, q9
520de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r4, fp, r4
521de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q10, q10, q9
522de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r2, #128]
523de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #252]
524de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r4, #132]
525de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r2, sl, r2
526de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	sl, [r7, #248]
527de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [sl, #132]
528de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r4, #136]
529de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r2, r9, r2
530de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [sl, #136]
531de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r4, #140]
532de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r2, r8, r2
533de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [sl, #140]
534de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #244]
535de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r4, #144]
536de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r2, #0]
537de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #44]
538de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #232]
539de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r4, r2
540de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #44]
541de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #244]
542de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r8, r8, r2
543de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #252]
544de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [sl, #144]
545de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r4, #4]
546de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r2, #148]
547de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #40]
548de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #268]
549de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r2, r4
550de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #40]
551de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #244]
552de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r8, r8, r4
553de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #252]
554de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [sl, #148]
555de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r2, #8]
556de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r4, #152]
557de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [r7, #36]
558de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #264]
559de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r4, r2
560de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #36]
561de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r8, r8, r2
562de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [sl, #152]
563de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #252]
564de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #244]
565de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r2, #156]
566de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r4, #12]
567de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [r7, #32]
568de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #236]
569de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r8, r2, r4
570de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #32]
571de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #252]
572de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r8, r8, r4
573de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r8, [sl, #156]
574de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #244]
575de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r2, #160]
576de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r8, #16]
577de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r0, r0, r4
578de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #252]
579de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r0, r0, r2
580de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r0, [sl, #160]
581de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r8, #20]
582de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r4, #164]
583de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r1, r1, r0
584de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #280]
585de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r1, r1, r2
586de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r1, [sl, #164]
587de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r8, #24]
588de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r4, #168]
589de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r2, r0, r2
590de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r2, r2, r1
591de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r2, [sl, #168]
592de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r8, #28]
593de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r4, #172]
594de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r3, r3, r1
595de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r3, r3, r2
596de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [sl, #172]
597de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r4, #176]
598de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r3, ip, r3
599de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r3, [sl, #176]
600de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r4, #180]
601de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #400]
602de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r6, r6, r3
603de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [sl, #180]
604de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #252]
605de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r4, #0]
606de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r6, #184]
607de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r5, r5, r2
608de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r5, r5, r3
609de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r5, [sl, #184]
610de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r6, #188]
611de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r6, r6, #192
612de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r4, #4]
613de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r6, [r7, #252]
614de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #24]
615de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r1, [r7, #240]
616de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r4, r0, r3
617de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r4, r4, r2
618de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r2, [r7, #204]
619de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	r4, [sl, #188]
620de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	sl, sl, #192
621de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	r1, r2
622de0b2026841c34193cacf5c97646b38439e13200Adam Langley	str	sl, [r7, #248]
623de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bne	.L4
624de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #192]
625de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r3, [r7, #180]
626de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #188]
627de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r5, r3, r4
628de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #184]
629de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsls	r5, r5, #6
630de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r4, r6, r5
631de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r5, r8, r5
632de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L2:
633de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r9, [r7, #196]
634de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movw	r3, #43691
635de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movt	r3, 43690
636de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	sl, [r7, #196]
637de0b2026841c34193cacf5c97646b38439e13200Adam Langley	umull	r9, r3, r3, r9
638de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsrs	r3, r3, #7
639de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r3, r3, r3, lsl #1
640de0b2026841c34193cacf5c97646b38439e13200Adam Langley	sub	r3, sl, r3, lsl #6
641de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsrs	r6, r3, #6
642de0b2026841c34193cacf5c97646b38439e13200Adam Langley	beq	.L5
643de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r1, r5, #16
644de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r2, r4, #16
645de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	r0, r6
646de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d30, .L41
647de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d31, .L41+8
648de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L6:
649de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q8, q10  @ v4si
650de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movs	r3, #10
651de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q1, q13  @ v4si
652de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q14, q12  @ v4si
653de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q3, q11  @ v4si
654de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L7:
655de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q3, q14
656de0b2026841c34193cacf5c97646b38439e13200Adam Langley	subs	r3, r3, #1
657de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q2, q8, q3
658de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q2, q2
659de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q8, q1, q2
660de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q9, q8, q14
661de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q14, q9, #12
662de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q14, q9, #20
663de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q3, q14
664de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q2, q3, q2
665de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q9, q2, #8
666de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q9, q2, #24
667de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q8, q8, q9
668de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q9, q9, q9, #3
669de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q14, q8, q14
670de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q1, q8, q8, #2
671de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q8, q14, #7
672de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q8, q14, #25
673de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q8, q8, q8, #1
674de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q3, q8
675de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q2, q3, q9
676de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q2, q2
677de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q9, q1, q2
678de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q9, q8
679de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q14, q8, #12
680de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q14, q8, #20
681de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q3, q14
682de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q2, q3, q2
683de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q8, q2, #8
684de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q8, q2, #24
685de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q9, q9, q8
686de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q8, q8, q8, #1
687de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q14, q9, q14
688de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q1, q9, q9, #2
689de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q9, q14, #7
690de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q9, q14, #25
691de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q14, q9, q9, #3
692de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bne	.L7
693de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q8, q10, q8
694de0b2026841c34193cacf5c97646b38439e13200Adam Langley	subs	r0, r0, #1
695de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q11, q3
696de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d0, [r1, #-16]
697de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d1, [r1, #-8]
698de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q14, q12, q14
699de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q1, q13, q1
700de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q3, q0
701de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d6, [r2, #-16]
702de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d7, [r2, #-8]
703de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q10, q10, q15
704de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vld1.64	{d8-d9}, [r1:64]
705de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q14, q14, q4
706de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vst1.64	{d28-d29}, [r2:64]
707de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d10, [r1, #16]
708de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d11, [r1, #24]
709de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q1, q1, q5
710de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d2, [r2, #16]
711de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d3, [r2, #24]
712de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d18, [r1, #32]
713de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d19, [r1, #40]
714de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r1, r1, #64
715de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q8, q9
716de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d16, [r2, #32]
717de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d17, [r2, #40]
718de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r2, r2, #64
719de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bne	.L6
720de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsls	r6, r6, #6
721de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r4, r4, r6
722de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r5, r5, r6
723de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L5:
724de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #196]
725de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ands	ip, r6, #63
726de0b2026841c34193cacf5c97646b38439e13200Adam Langley	beq	.L1
727de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q8, q10  @ v4si
728de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movs	r3, #10
729de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q14, q13  @ v4si
730de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q9, q12  @ v4si
731de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vmov	q15, q11  @ v4si
732de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L10:
733de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q9
734de0b2026841c34193cacf5c97646b38439e13200Adam Langley	subs	r3, r3, #1
735de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q8, q15
736de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q8, q8
737de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q3, q14, q8
738de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q9, q3, q9
739de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q14, q9, #12
740de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q14, q9, #20
741de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q14
742de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q9, q15, q8
743de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q8, q9, #8
744de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q8, q9, #24
745de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q9, q3, q8
746de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q8, q8, q8, #3
747de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q2, q9, q14
748de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q14, q9, q9, #2
749de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q9, q2, #7
750de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q9, q2, #25
751de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q9, q9, q9, #1
752de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q9
753de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q15, q8
754de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vrev32.16	q3, q3
755de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q14, q14, q3
756de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q14, q9
757de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q9, q8, #12
758de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q9, q8, #20
759de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q15, q15, q9
760de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q15, q3
761de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q8, q3, #8
762de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q8, q3, #24
763de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q14, q14, q8
764de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q8, q8, q8, #1
765de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q3, q14, q9
766de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q14, q14, q14, #2
767de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vshl.i32	q9, q3, #7
768de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vsri.32	q9, q3, #25
769de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vext.32	q9, q9, q9, #3
770de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bne	.L10
771de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	ip, #15
772de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q11, q11, q15
773de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bhi	.L37
774de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r9, [r7, #200]
775de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vst1.64	{d22-d23}, [r9:128]
776de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L14:
777de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	sl, [r7, #196]
778de0b2026841c34193cacf5c97646b38439e13200Adam Langley	and	r3, sl, #48
779de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	ip, r3
780de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bls	.L1
781de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r0, r5, r3
782de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r1, r4, r3
783de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r2, r0, #16
784de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r6, r1, #16
785de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	r1, r2
786de0b2026841c34193cacf5c97646b38439e13200Adam Langley	it	cc
787de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmpcc	r0, r6
788de0b2026841c34193cacf5c97646b38439e13200Adam Langley	rsb	r9, r3, ip
789de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ite	cc
790de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movcc	r2, #0
791de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movcs	r2, #1
792de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	r9, #15
793de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ite	ls
794de0b2026841c34193cacf5c97646b38439e13200Adam Langley	movls	r2, #0
795de0b2026841c34193cacf5c97646b38439e13200Adam Langley	andhi	r2, r2, #1
796de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsr	r8, r9, #4
797de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eor	r2, r2, #1
798de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	r8, #0
799de0b2026841c34193cacf5c97646b38439e13200Adam Langley	it	eq
800de0b2026841c34193cacf5c97646b38439e13200Adam Langley	orreq	r2, r2, #1
801de0b2026841c34193cacf5c97646b38439e13200Adam Langley	lsl	sl, r8, #4
802de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cbnz	r2, .L35
803de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	fp, [r7, #200]
804de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r6, fp, r3
805de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L17:
806de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vld1.8	{q8}, [r0]!
807de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r2, r2, #1
808de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	r8, r2
809de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vld1.8	{q9}, [r6]!
810de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q9, q8
811de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vst1.8	{q8}, [r1]!
812de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bhi	.L17
813de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	r9, sl
814de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r3, r3, sl
815de0b2026841c34193cacf5c97646b38439e13200Adam Langley	beq	.L1
816de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L35:
817de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r0, [r7, #200]
818de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L25:
819de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldrb	r2, [r5, r3]	@ zero_extendqisi2
820de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldrb	r1, [r3, r0]	@ zero_extendqisi2
821de0b2026841c34193cacf5c97646b38439e13200Adam Langley	eors	r2, r2, r1
822de0b2026841c34193cacf5c97646b38439e13200Adam Langley	strb	r2, [r4, r3]
823de0b2026841c34193cacf5c97646b38439e13200Adam Langley	adds	r3, r3, #1
824de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	ip, r3
825de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bhi	.L25
826de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L1:
827de0b2026841c34193cacf5c97646b38439e13200Adam Langley	add	r7, r7, #304
828de0b2026841c34193cacf5c97646b38439e13200Adam Langley	mov	sp, r7
829de0b2026841c34193cacf5c97646b38439e13200Adam Langley	fldmfdd	sp!, {d8, d9, d10, d11, d12, d13, d14, d15}
830de0b2026841c34193cacf5c97646b38439e13200Adam Langley	pop	{r4, r5, r6, r7, r8, r9, sl, fp}
831de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bx	lr
832de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L37:
833de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	ip, #31
834de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vld1.64	{d0-d1}, [r5:64]
835de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q9, q12, q9
836de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q11, q11, q0
837de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vst1.64	{d22-d23}, [r4:64]
838de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bls	.L12
839de0b2026841c34193cacf5c97646b38439e13200Adam Langley	cmp	ip, #47
840de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d2, [r5, #16]
841de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d3, [r5, #24]
842de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q13, q13, q14
843de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q9, q9, q1
844de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d18, [r4, #16]
845de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d19, [r4, #24]
846de0b2026841c34193cacf5c97646b38439e13200Adam Langley	bls	.L13
847de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vadd.i32	q8, q8, q10
848de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d0, [r5, #32]
849de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vldr	d1, [r5, #40]
850de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #200]
851de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d16, [r6, #48]
852de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d17, [r6, #56]
853de0b2026841c34193cacf5c97646b38439e13200Adam Langley	veor	q8, q13, q0
854de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d16, [r4, #32]
855de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d17, [r4, #40]
856de0b2026841c34193cacf5c97646b38439e13200Adam Langley	b	.L14
857de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L12:
858de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r8, [r7, #200]
859de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d18, [r8, #16]
860de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d19, [r8, #24]
861de0b2026841c34193cacf5c97646b38439e13200Adam Langley	b	.L14
862de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L20:
863de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r5, [r7, #184]
864de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r4, [r7, #188]
865de0b2026841c34193cacf5c97646b38439e13200Adam Langley	b	.L2
866de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L13:
867de0b2026841c34193cacf5c97646b38439e13200Adam Langley	ldr	r6, [r7, #200]
868de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d26, [r6, #32]
869de0b2026841c34193cacf5c97646b38439e13200Adam Langley	vstr	d27, [r6, #40]
870de0b2026841c34193cacf5c97646b38439e13200Adam Langley	b	.L14
871de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L42:
872de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.align	3
873de0b2026841c34193cacf5c97646b38439e13200Adam Langley.L41:
874de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	1
875de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	0
876de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	0
877de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	0
878de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.size	CRYPTO_chacha_20_neon, .-CRYPTO_chacha_20_neon
879de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.section	.rodata
880de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.align	3
881de0b2026841c34193cacf5c97646b38439e13200Adam Langley.LANCHOR0 = . + 0
882de0b2026841c34193cacf5c97646b38439e13200Adam Langley.LC0:
883de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	1634760805
884de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	857760878
885de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	2036477234
886de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.word	1797285236
887de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.ident	"GCC: (crosstool-NG linaro-1.13.1-4.7-2012.10-20121022 - Linaro GCC 2012.10) 4.7.3 20121001 (prerelease)"
888de0b2026841c34193cacf5c97646b38439e13200Adam Langley	.section	.note.GNU-stack,"",%progbits
88960d612fdcf7052008fcc17a503854eac1653c739Adam Langley
89060d612fdcf7052008fcc17a503854eac1653c739Adam Langley#endif  /* !OPENSSL_NO_ASM */
891