| # Copyright (c) 2014, Google Inc. | 
 | # | 
 | # Permission to use, copy, modify, and/or distribute this software for any | 
 | # purpose with or without fee is hereby granted, provided that the above | 
 | # copyright notice and this permission notice appear in all copies. | 
 | # | 
 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | 
 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | 
 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | 
 | # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | 
 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | 
 | # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | 
 | # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
 |  | 
 | # This file contains a pre-compiled version of chacha_vec.c for ARM. This is | 
 | # needed to support switching on NEON code at runtime. If the whole of OpenSSL | 
 | # were to be compiled with the needed flags to build chacha_vec.c, then it | 
 | # wouldn't be possible to run on non-NEON systems. | 
 | # | 
 | # This file was generated by chacha_vec_arm_generate.go using the following | 
 | # compiler command: | 
 | # | 
 | #     /opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -O3 -mcpu=cortex-a8 -mfpu=neon -fpic -DASM_GEN -I ../../include -S chacha_vec.c -o - | 
 |  | 
 | #if !defined(OPENSSL_NO_ASM) | 
 |  | 
 | 	.syntax unified | 
 | 	.cpu cortex-a8 | 
 | 	.eabi_attribute 27, 3 | 
 |  | 
 | # EABI attribute 28 sets whether VFP register arguments were used to build this | 
 | # file. If object files are inconsistent on this point, the linker will refuse | 
 | # to link them. Thus we report whatever the compiler expects since we don't use | 
 | # VFP arguments. | 
 |  | 
 | #if defined(__ARM_PCS_VFP) | 
 | 	.eabi_attribute 28, 1 | 
 | #else | 
 | 	.eabi_attribute 28, 0 | 
 | #endif | 
 |  | 
 | 	.fpu neon | 
 | 	.eabi_attribute 20, 1 | 
 | 	.eabi_attribute 21, 1 | 
 | 	.eabi_attribute 23, 3 | 
 | 	.eabi_attribute 24, 1 | 
 | 	.eabi_attribute 25, 1 | 
 | 	.eabi_attribute 26, 2 | 
 | 	.eabi_attribute 30, 2 | 
 | 	.eabi_attribute 34, 1 | 
 | 	.eabi_attribute 18, 4 | 
 | 	.thumb | 
 | 	.file	"chacha_vec.c" | 
 | 	.text | 
 | 	.align	2 | 
 | 	.global	CRYPTO_chacha_20_neon | 
 | 	.hidden	CRYPTO_chacha_20_neon | 
 | 	.thumb | 
 | 	.thumb_func | 
 | 	.type	CRYPTO_chacha_20_neon, %function | 
 | CRYPTO_chacha_20_neon: | 
 | 	@ args = 8, pretend = 0, frame = 152 | 
 | 	@ frame_needed = 1, uses_anonymous_args = 0 | 
 | 	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr} | 
 | 	mov	r8, r3 | 
 | 	vpush.64	{d8, d9, d10, d11, d12, d13, d14, d15} | 
 | 	mov	r9, r2 | 
 | 	ldr	r4, .L91+16 | 
 | 	mov	fp, r0 | 
 | 	mov	r10, r1 | 
 | 	mov	lr, r8 | 
 | .LPIC16: | 
 | 	add	r4, pc | 
 | 	sub	sp, sp, #156 | 
 | 	add	r7, sp, #0 | 
 | 	sub	sp, sp, #112 | 
 | 	add	r6, r7, #144 | 
 | 	str	r0, [r7, #88] | 
 | 	str	r1, [r7, #12] | 
 | 	str	r2, [r7, #8] | 
 | 	ldmia	r4, {r0, r1, r2, r3} | 
 | 	add	r4, sp, #15 | 
 | 	bic	r4, r4, #15 | 
 | 	ldr	ip, [r7, #256] | 
 | 	str	r4, [r7, #84] | 
 | 	mov	r5, r4 | 
 | 	adds	r4, r4, #64 | 
 | 	adds	r5, r5, #80 | 
 | 	str	r8, [r7, #68] | 
 | 	stmia	r4, {r0, r1, r2, r3} | 
 | 	movw	r4, #43691 | 
 | 	ldr	r0, [ip]	@ unaligned | 
 | 	movt	r4, 43690 | 
 | 	ldr	r1, [ip, #4]	@ unaligned | 
 | 	ldr	r3, [r7, #84] | 
 | 	ldr	r2, [r8, #8]	@ unaligned | 
 | 	mov	r8, #0 | 
 | 	stmia	r6!, {r0, r1} | 
 | 	mov	r6, r5 | 
 | 	ldr	r1, [lr, #4]	@ unaligned | 
 | 	ldr	r0, [lr]	@ unaligned | 
 | 	vldr	d24, [r3, #64] | 
 | 	vldr	d25, [r3, #72] | 
 | 	ldr	r3, [lr, #12]	@ unaligned | 
 | 	str	r5, [r7, #80] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	ldr	r0, [lr, #16]!	@ unaligned | 
 | 	ldr	r2, [r7, #84] | 
 | 	umull	r4, r5, r9, r4 | 
 | 	vldr	d26, [r2, #80] | 
 | 	vldr	d27, [r2, #88] | 
 | 	ldr	r1, [lr, #4]	@ unaligned | 
 | 	ldr	r2, [lr, #8]	@ unaligned | 
 | 	ldr	r3, [lr, #12]	@ unaligned | 
 | 	ldr	r4, [r7, #260] | 
 | 	stmia	r6!, {r0, r1, r2, r3} | 
 | 	ldr	r3, [ip] | 
 | 	ldr	r1, [r7, #84] | 
 | 	ldr	r2, [ip, #4] | 
 | 	str	r3, [r7, #64] | 
 | 	vldr	d28, [r1, #80] | 
 | 	vldr	d29, [r1, #88] | 
 | 	str	r3, [r7, #136] | 
 | 	lsrs	r3, r5, #7 | 
 | 	str	r4, [r7, #128] | 
 | 	str	r2, [r7, #140] | 
 | 	str	r8, [r7, #132] | 
 | 	str	r2, [r7, #60] | 
 | 	vldr	d22, [r7, #128] | 
 | 	vldr	d23, [r7, #136] | 
 | 	beq	.L26 | 
 | 	lsls	r2, r3, #8 | 
 | 	ldr	r5, [r1, #64] | 
 | 	sub	r3, r2, r3, lsl #6 | 
 | 	ldr	r2, [r1, #68] | 
 | 	vldr	d0, .L91 | 
 | 	vldr	d1, .L91+8 | 
 | 	adds	r4, r4, #2 | 
 | 	str	r5, [r7, #56] | 
 | 	str	r2, [r7, #52] | 
 | 	ldr	r5, [r1, #72] | 
 | 	ldr	r2, [r1, #76] | 
 | 	str	r3, [r7, #4] | 
 | 	str	r5, [r7, #48] | 
 | 	str	r2, [r7, #44] | 
 | 	mov	r2, fp | 
 | 	str	r4, [r7, #72] | 
 | 	adds	r3, r2, r3 | 
 | 	str	r10, [r7, #76] | 
 | 	str	r3, [r7, #16] | 
 | .L4: | 
 | 	ldr	r5, [r7, #68] | 
 | 	add	r8, r7, #44 | 
 | 	ldr	r4, [r7, #72] | 
 | 	vadd.i32	q3, q11, q0 | 
 | 	ldmia	r8, {r8, r9, r10, fp} | 
 | 	vmov	q8, q14  @ v4si | 
 | 	ldr	r2, [r5, #4] | 
 | 	vmov	q1, q13  @ v4si | 
 | 	ldr	r3, [r5] | 
 | 	vmov	q9, q12  @ v4si | 
 | 	ldr	lr, [r5, #20] | 
 | 	vmov	q2, q11  @ v4si | 
 | 	mov	r0, r2 | 
 | 	ldr	r2, [r5, #8] | 
 | 	str	r3, [r7, #108] | 
 | 	mov	r3, r5 | 
 | 	ldr	ip, [r5, #16] | 
 | 	vmov	q15, q14  @ v4si | 
 | 	mov	r1, r2 | 
 | 	ldr	r2, [r5, #12] | 
 | 	ldr	r5, [r5, #24] | 
 | 	vmov	q5, q13  @ v4si | 
 | 	ldr	r6, [r3, #28] | 
 | 	vmov	q10, q12  @ v4si | 
 | 	ldr	r3, [r7, #64] | 
 | 	str	r5, [r7, #116] | 
 | 	movs	r5, #10 | 
 | 	str	r6, [r7, #120] | 
 | 	str	r4, [r7, #112] | 
 | 	ldr	r6, [r7, #60] | 
 | 	str	r8, [r7, #96] | 
 | 	mov	r8, r10 | 
 | 	ldr	r4, [r7, #108] | 
 | 	mov	r10, r9 | 
 | 	ldr	r9, [r7, #116] | 
 | 	str	lr, [r7, #104] | 
 | 	mov	lr, r3 | 
 | 	str	r5, [r7, #92] | 
 | 	movs	r5, #0 | 
 | 	str	r6, [r7, #124] | 
 | 	str	r5, [r7, #100] | 
 | 	b	.L92 | 
 | .L93: | 
 | 	.align	3 | 
 | .L91: | 
 | 	.word	1 | 
 | 	.word	0 | 
 | 	.word	0 | 
 | 	.word	0 | 
 | 	.word	.LANCHOR0-(.LPIC16+4) | 
 | .L92: | 
 | .L3: | 
 | 	vadd.i32	q9, q9, q1 | 
 | 	add	r3, r8, r0 | 
 | 	vadd.i32	q10, q10, q5 | 
 | 	add	r5, fp, r4 | 
 | 	veor	q3, q3, q9 | 
 | 	mov	r6, r3 | 
 | 	veor	q2, q2, q10 | 
 | 	ldr	r3, [r7, #96] | 
 | 	str	r5, [r7, #116] | 
 | 	add	r10, r10, r1 | 
 | 	vrev32.16	q3, q3 | 
 | 	eor	lr, lr, r10 | 
 | 	vadd.i32	q8, q8, q3 | 
 | 	vrev32.16	q2, q2 | 
 | 	vadd.i32	q15, q15, q2 | 
 | 	mov	fp, r3 | 
 | 	ldr	r3, [r7, #112] | 
 | 	veor	q4, q8, q1 | 
 | 	str	r6, [r7, #112] | 
 | 	veor	q6, q15, q5 | 
 | 	eors	r3, r3, r5 | 
 | 	mov	r5, r6 | 
 | 	ldr	r6, [r7, #100] | 
 | 	vshl.i32	q1, q4, #12 | 
 | 	vshl.i32	q5, q6, #12 | 
 | 	add	fp, fp, r2 | 
 | 	eors	r6, r6, r5 | 
 | 	ror	r3, r3, #16 | 
 | 	vsri.32	q1, q4, #20 | 
 | 	ror	lr, lr, #16 | 
 | 	mov	r5, r6 | 
 | 	ldr	r6, [r7, #124] | 
 | 	vsri.32	q5, q6, #20 | 
 | 	str	r3, [r7, #124] | 
 | 	eor	r6, r6, fp | 
 | 	ror	r5, r5, #16 | 
 | 	vadd.i32	q9, q9, q1 | 
 | 	add	r9, r9, lr | 
 | 	ror	r3, r6, #16 | 
 | 	ldr	r6, [r7, #124] | 
 | 	vadd.i32	q10, q10, q5 | 
 | 	str	r3, [r7, #108] | 
 | 	veor	q4, q9, q3 | 
 | 	add	ip, ip, r6 | 
 | 	ldr	r6, [r7, #104] | 
 | 	veor	q6, q10, q2 | 
 | 	eor	r4, ip, r4 | 
 | 	eor	r1, r9, r1 | 
 | 	vshl.i32	q3, q4, #8 | 
 | 	mov	r8, r6 | 
 | 	ldr	r6, [r7, #120] | 
 | 	vshl.i32	q2, q6, #8 | 
 | 	ror	r4, r4, #20 | 
 | 	add	r6, r6, r3 | 
 | 	vsri.32	q3, q4, #24 | 
 | 	str	r6, [r7, #104] | 
 | 	eors	r2, r2, r6 | 
 | 	ldr	r6, [r7, #116] | 
 | 	vsri.32	q2, q6, #24 | 
 | 	add	r8, r8, r5 | 
 | 	ror	r2, r2, #20 | 
 | 	adds	r6, r4, r6 | 
 | 	vadd.i32	q4, q8, q3 | 
 | 	eor	r0, r8, r0 | 
 | 	vadd.i32	q15, q15, q2 | 
 | 	mov	r3, r6 | 
 | 	ldr	r6, [r7, #112] | 
 | 	veor	q6, q4, q1 | 
 | 	ror	r0, r0, #20 | 
 | 	str	r3, [r7, #112] | 
 | 	veor	q5, q15, q5 | 
 | 	adds	r6, r0, r6 | 
 | 	str	r6, [r7, #120] | 
 | 	mov	r6, r3 | 
 | 	ldr	r3, [r7, #124] | 
 | 	vshl.i32	q8, q6, #7 | 
 | 	add	fp, fp, r2 | 
 | 	eors	r3, r3, r6 | 
 | 	ldr	r6, [r7, #120] | 
 | 	vshl.i32	q1, q5, #7 | 
 | 	ror	r1, r1, #20 | 
 | 	eors	r5, r5, r6 | 
 | 	vsri.32	q8, q6, #25 | 
 | 	ldr	r6, [r7, #108] | 
 | 	ror	r3, r3, #24 | 
 | 	ror	r5, r5, #24 | 
 | 	vsri.32	q1, q5, #25 | 
 | 	str	r5, [r7, #116] | 
 | 	eor	r6, fp, r6 | 
 | 	ldr	r5, [r7, #116] | 
 | 	add	r10, r10, r1 | 
 | 	add	ip, r3, ip | 
 | 	vext.32	q8, q8, q8, #1 | 
 | 	str	ip, [r7, #124] | 
 | 	add	ip, r5, r8 | 
 | 	ldr	r5, [r7, #104] | 
 | 	eor	lr, r10, lr | 
 | 	ror	r6, r6, #24 | 
 | 	vext.32	q1, q1, q1, #1 | 
 | 	add	r8, r6, r5 | 
 | 	vadd.i32	q9, q9, q8 | 
 | 	ldr	r5, [r7, #124] | 
 | 	vext.32	q3, q3, q3, #3 | 
 | 	vadd.i32	q10, q10, q1 | 
 | 	ror	lr, lr, #24 | 
 | 	eor	r0, ip, r0 | 
 | 	vext.32	q2, q2, q2, #3 | 
 | 	add	r9, r9, lr | 
 | 	eors	r4, r4, r5 | 
 | 	veor	q3, q9, q3 | 
 | 	ldr	r5, [r7, #112] | 
 | 	eor	r1, r9, r1 | 
 | 	ror	r0, r0, #25 | 
 | 	veor	q2, q10, q2 | 
 | 	adds	r5, r0, r5 | 
 | 	vext.32	q4, q4, q4, #2 | 
 | 	str	r5, [r7, #112] | 
 | 	ldr	r5, [r7, #120] | 
 | 	ror	r1, r1, #25 | 
 | 	vrev32.16	q3, q3 | 
 | 	eor	r2, r8, r2 | 
 | 	vext.32	q15, q15, q15, #2 | 
 | 	adds	r5, r1, r5 | 
 | 	vadd.i32	q4, q4, q3 | 
 | 	ror	r4, r4, #25 | 
 | 	vrev32.16	q2, q2 | 
 | 	str	r5, [r7, #100] | 
 | 	vadd.i32	q15, q15, q2 | 
 | 	eors	r3, r3, r5 | 
 | 	ldr	r5, [r7, #112] | 
 | 	add	fp, fp, r4 | 
 | 	veor	q8, q4, q8 | 
 | 	ror	r2, r2, #25 | 
 | 	veor	q1, q15, q1 | 
 | 	eor	lr, fp, lr | 
 | 	eors	r6, r6, r5 | 
 | 	ror	r3, r3, #16 | 
 | 	ldr	r5, [r7, #116] | 
 | 	add	r10, r10, r2 | 
 | 	str	r3, [r7, #120] | 
 | 	ror	lr, lr, #16 | 
 | 	ldr	r3, [r7, #120] | 
 | 	eor	r5, r10, r5 | 
 | 	vshl.i32	q5, q8, #12 | 
 | 	add	ip, lr, ip | 
 | 	vshl.i32	q6, q1, #12 | 
 | 	str	ip, [r7, #104] | 
 | 	add	ip, r3, r8 | 
 | 	str	ip, [r7, #116] | 
 | 	ldr	r3, [r7, #124] | 
 | 	ror	r5, r5, #16 | 
 | 	vsri.32	q5, q8, #20 | 
 | 	ror	r6, r6, #16 | 
 | 	add	ip, r5, r3 | 
 | 	ldr	r3, [r7, #104] | 
 | 	vsri.32	q6, q1, #20 | 
 | 	add	r9, r9, r6 | 
 | 	eor	r2, ip, r2 | 
 | 	eors	r4, r4, r3 | 
 | 	ldr	r3, [r7, #116] | 
 | 	eor	r0, r9, r0 | 
 | 	vadd.i32	q9, q9, q5 | 
 | 	ror	r4, r4, #20 | 
 | 	eors	r1, r1, r3 | 
 | 	vadd.i32	q10, q10, q6 | 
 | 	ror	r3, r2, #20 | 
 | 	str	r3, [r7, #108] | 
 | 	ldr	r3, [r7, #112] | 
 | 	veor	q3, q9, q3 | 
 | 	ror	r0, r0, #20 | 
 | 	add	r8, r4, fp | 
 | 	veor	q2, q10, q2 | 
 | 	add	fp, r0, r3 | 
 | 	ldr	r3, [r7, #100] | 
 | 	ror	r1, r1, #20 | 
 | 	mov	r2, r8 | 
 | 	vshl.i32	q8, q3, #8 | 
 | 	str	r8, [r7, #96] | 
 | 	add	r8, r1, r3 | 
 | 	ldr	r3, [r7, #108] | 
 | 	vmov	q1, q6  @ v4si | 
 | 	vshl.i32	q6, q2, #8 | 
 | 	eor	r6, fp, r6 | 
 | 	add	r10, r10, r3 | 
 | 	ldr	r3, [r7, #120] | 
 | 	vsri.32	q8, q3, #24 | 
 | 	eor	lr, r2, lr | 
 | 	eor	r3, r8, r3 | 
 | 	ror	r2, r6, #24 | 
 | 	vsri.32	q6, q2, #24 | 
 | 	eor	r5, r10, r5 | 
 | 	str	r2, [r7, #124] | 
 | 	ror	r2, r3, #24 | 
 | 	ldr	r3, [r7, #104] | 
 | 	vmov	q3, q8  @ v4si | 
 | 	vadd.i32	q15, q15, q6 | 
 | 	ror	lr, lr, #24 | 
 | 	vadd.i32	q8, q4, q8 | 
 | 	ror	r6, r5, #24 | 
 | 	add	r5, lr, r3 | 
 | 	ldr	r3, [r7, #124] | 
 | 	veor	q4, q8, q5 | 
 | 	add	ip, ip, r6 | 
 | 	vmov	q2, q6  @ v4si | 
 | 	add	r9, r9, r3 | 
 | 	veor	q6, q15, q1 | 
 | 	ldr	r3, [r7, #116] | 
 | 	vshl.i32	q1, q4, #7 | 
 | 	str	r2, [r7, #112] | 
 | 	add	r3, r3, r2 | 
 | 	str	r3, [r7, #120] | 
 | 	vshl.i32	q5, q6, #7 | 
 | 	eors	r1, r1, r3 | 
 | 	ldr	r3, [r7, #108] | 
 | 	vsri.32	q1, q4, #25 | 
 | 	eors	r4, r4, r5 | 
 | 	eor	r0, r9, r0 | 
 | 	eor	r2, ip, r3 | 
 | 	vsri.32	q5, q6, #25 | 
 | 	ldr	r3, [r7, #92] | 
 | 	ror	r4, r4, #25 | 
 | 	str	r6, [r7, #100] | 
 | 	ror	r0, r0, #25 | 
 | 	subs	r3, r3, #1 | 
 | 	str	r5, [r7, #104] | 
 | 	ror	r1, r1, #25 | 
 | 	ror	r2, r2, #25 | 
 | 	vext.32	q15, q15, q15, #2 | 
 | 	str	r3, [r7, #92] | 
 | 	vext.32	q2, q2, q2, #1 | 
 | 	vext.32	q8, q8, q8, #2 | 
 | 	vext.32	q3, q3, q3, #1 | 
 | 	vext.32	q5, q5, q5, #3 | 
 | 	vext.32	q1, q1, q1, #3 | 
 | 	bne	.L3 | 
 | 	ldr	r3, [r7, #80] | 
 | 	vadd.i32	q4, q12, q10 | 
 | 	str	r9, [r7, #116] | 
 | 	mov	r9, r10 | 
 | 	mov	r10, r8 | 
 | 	ldr	r8, [r7, #96] | 
 | 	str	lr, [r7, #96] | 
 | 	mov	lr, r5 | 
 | 	ldr	r5, [r7, #56] | 
 | 	vadd.i32	q5, q13, q5 | 
 | 	ldr	r6, [r7, #76] | 
 | 	vadd.i32	q15, q14, q15 | 
 | 	add	fp, fp, r5 | 
 | 	ldr	r5, [r7, #52] | 
 | 	str	r4, [r7, #108] | 
 | 	vadd.i32	q7, q14, q8 | 
 | 	ldr	r4, [r7, #112] | 
 | 	add	r5, r10, r5 | 
 | 	str	r3, [r7, #112] | 
 | 	vadd.i32	q2, q11, q2 | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	vadd.i32	q6, q12, q9 | 
 | 	str	r0, [r7, #92] | 
 | 	vadd.i32	q1, q13, q1 | 
 | 	ldr	r0, [r6]	@ unaligned | 
 | 	vadd.i32	q11, q11, q0 | 
 | 	str	r1, [r7, #40] | 
 | 	str	r2, [r7, #36] | 
 | 	vadd.i32	q3, q11, q3 | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	vadd.i32	q11, q11, q0 | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	str	r5, [r7, #104] | 
 | 	vadd.i32	q11, q11, q0 | 
 | 	ldr	r5, [r7, #112] | 
 | 	ldr	r10, [r7, #80] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	mov	r5, r10 | 
 | 	ldr	r0, [r7, #84] | 
 | 	ldr	r2, [r7, #48] | 
 | 	ldr	r3, [r7, #72] | 
 | 	vldr	d20, [r0, #80] | 
 | 	vldr	d21, [r0, #88] | 
 | 	add	r9, r9, r2 | 
 | 	veor	q10, q10, q4 | 
 | 	ldr	r2, [r7, #44] | 
 | 	adds	r1, r4, r3 | 
 | 	str	r1, [r7, #28] | 
 | 	add	r2, r8, r2 | 
 | 	str	r2, [r7, #32] | 
 | 	vstr	d20, [r0, #80] | 
 | 	vstr	d21, [r0, #88] | 
 | 	ldmia	r5!, {r0, r1, r2, r3} | 
 | 	ldr	r4, [r7, #96] | 
 | 	ldr	r5, [r7, #64] | 
 | 	add	r4, r4, r5 | 
 | 	ldr	r5, [r7, #124] | 
 | 	str	r4, [r7, #96] | 
 | 	ldr	r4, [r7, #60] | 
 | 	add	r5, r5, r4 | 
 | 	ldr	r4, [r7, #88] | 
 | 	str	r5, [r7, #24] | 
 | 	mov	r5, r10 | 
 | 	str	r0, [r4]	@ unaligned | 
 | 	mov	r0, r4 | 
 | 	str	r1, [r4, #4]	@ unaligned | 
 | 	mov	r8, r0 | 
 | 	str	r2, [r0, #8]	@ unaligned | 
 | 	mov	r4, r10 | 
 | 	str	r3, [r0, #12]	@ unaligned | 
 | 	ldr	r0, [r6, #16]!	@ unaligned | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	ldr	r6, [r7, #76] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	mov	r5, r10 | 
 | 	ldr	r3, [r7, #84] | 
 | 	vldr	d20, [r3, #80] | 
 | 	vldr	d21, [r3, #88] | 
 | 	veor	q10, q10, q5 | 
 | 	vstr	d20, [r3, #80] | 
 | 	vstr	d21, [r3, #88] | 
 | 	ldmia	r4!, {r0, r1, r2, r3} | 
 | 	mov	r4, r8 | 
 | 	str	r0, [r8, #16]	@ unaligned | 
 | 	str	r1, [r8, #20]	@ unaligned | 
 | 	str	r2, [r8, #24]	@ unaligned | 
 | 	str	r3, [r8, #28]	@ unaligned | 
 | 	mov	r8, r4 | 
 | 	ldr	r0, [r6, #32]!	@ unaligned | 
 | 	str	r10, [r7, #124] | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	ldr	r6, [r7, #76] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	mov	r5, r10 | 
 | 	ldr	r2, [r7, #84] | 
 | 	vldr	d16, [r2, #80] | 
 | 	vldr	d17, [r2, #88] | 
 | 	veor	q15, q8, q15 | 
 | 	vstr	d30, [r2, #80] | 
 | 	vstr	d31, [r2, #88] | 
 | 	ldmia	r10!, {r0, r1, r2, r3} | 
 | 	str	r0, [r4, #32]	@ unaligned | 
 | 	str	r1, [r4, #36]	@ unaligned | 
 | 	str	r2, [r4, #40]	@ unaligned | 
 | 	str	r3, [r4, #44]	@ unaligned | 
 | 	ldr	r0, [r6, #48]!	@ unaligned | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	ldr	r6, [r7, #76] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	ldr	r1, [r7, #84] | 
 | 	vldr	d18, [r1, #80] | 
 | 	vldr	d19, [r1, #88] | 
 | 	veor	q9, q9, q2 | 
 | 	vstr	d18, [r1, #80] | 
 | 	vstr	d19, [r1, #88] | 
 | 	ldr	r3, [r7, #112] | 
 | 	ldr	r5, [r7, #80] | 
 | 	mov	r10, r3 | 
 | 	ldmia	r10!, {r0, r1, r2, r3} | 
 | 	str	r0, [r4, #48]	@ unaligned | 
 | 	str	r1, [r4, #52]	@ unaligned | 
 | 	str	r2, [r4, #56]	@ unaligned | 
 | 	str	r3, [r4, #60]	@ unaligned | 
 | 	ldr	r0, [r6, #64]!	@ unaligned | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	ldr	r6, [r7, #76] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	ldr	r1, [r7, #84] | 
 | 	ldr	r3, [r7, #112] | 
 | 	ldr	r5, [r7, #80] | 
 | 	vldr	d18, [r1, #80] | 
 | 	vldr	d19, [r1, #88] | 
 | 	veor	q9, q9, q6 | 
 | 	mov	r10, r3 | 
 | 	str	r5, [r7, #20] | 
 | 	vstr	d18, [r1, #80] | 
 | 	vstr	d19, [r1, #88] | 
 | 	ldmia	r10!, {r0, r1, r2, r3} | 
 | 	str	r1, [r4, #68]	@ unaligned | 
 | 	str	r2, [r4, #72]	@ unaligned | 
 | 	str	r3, [r4, #76]	@ unaligned | 
 | 	str	r0, [r4, #64]	@ unaligned | 
 | 	ldr	r0, [r6, #80]!	@ unaligned | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	ldr	r6, [r7, #76] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	ldr	r1, [r7, #84] | 
 | 	ldr	r3, [r7, #20] | 
 | 	ldr	r5, [r7, #80] | 
 | 	vldr	d18, [r1, #80] | 
 | 	vldr	d19, [r1, #88] | 
 | 	veor	q1, q9, q1 | 
 | 	mov	r10, r3 | 
 | 	vstr	d2, [r1, #80] | 
 | 	vstr	d3, [r1, #88] | 
 | 	ldmia	r10!, {r0, r1, r2, r3} | 
 | 	mov	r10, r5 | 
 | 	str	r0, [r4, #80]	@ unaligned | 
 | 	str	r1, [r4, #84]	@ unaligned | 
 | 	str	r2, [r4, #88]	@ unaligned | 
 | 	str	r3, [r4, #92]	@ unaligned | 
 | 	ldr	r0, [r6, #96]!	@ unaligned | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	ldr	r6, [r7, #76] | 
 | 	stmia	r5!, {r0, r1, r2, r3} | 
 | 	mov	r5, r10 | 
 | 	ldr	r3, [r7, #84] | 
 | 	vldr	d16, [r3, #80] | 
 | 	vldr	d17, [r3, #88] | 
 | 	veor	q8, q8, q7 | 
 | 	vstr	d16, [r3, #80] | 
 | 	vstr	d17, [r3, #88] | 
 | 	ldmia	r10!, {r0, r1, r2, r3} | 
 | 	str	r0, [r4, #96]	@ unaligned | 
 | 	str	r1, [r4, #100]	@ unaligned | 
 | 	str	r2, [r4, #104]	@ unaligned | 
 | 	str	r3, [r4, #108]	@ unaligned | 
 | 	ldr	r0, [r6, #112]!	@ unaligned | 
 | 	ldr	r1, [r6, #4]	@ unaligned | 
 | 	ldr	r2, [r6, #8]	@ unaligned | 
 | 	ldr	r3, [r6, #12]	@ unaligned | 
 | 	mov	r6, r5 | 
 | 	stmia	r6!, {r0, r1, r2, r3} | 
 | 	ldr	r3, [r7, #84] | 
 | 	vldr	d16, [r3, #80] | 
 | 	vldr	d17, [r3, #88] | 
 | 	veor	q8, q8, q3 | 
 | 	vstr	d16, [r3, #80] | 
 | 	vstr	d17, [r3, #88] | 
 | 	ldmia	r5!, {r0, r1, r2, r3} | 
 | 	str	r1, [r4, #116]	@ unaligned | 
 | 	ldr	r1, [r7, #76] | 
 | 	str	r0, [r4, #112]	@ unaligned | 
 | 	str	r2, [r4, #120]	@ unaligned | 
 | 	str	r3, [r4, #124]	@ unaligned | 
 | 	ldr	r3, [r1, #128] | 
 | 	ldr	r2, [r7, #104] | 
 | 	eor	r3, fp, r3 | 
 | 	str	r3, [r4, #128] | 
 | 	ldr	r3, [r1, #132] | 
 | 	eors	r2, r2, r3 | 
 | 	str	r2, [r8, #132] | 
 | 	ldr	r3, [r1, #136] | 
 | 	ldr	r5, [r7, #68] | 
 | 	ldr	r6, [r7, #32] | 
 | 	eor	r3, r9, r3 | 
 | 	str	r3, [r4, #136] | 
 | 	ldr	r3, [r1, #140] | 
 | 	ldr	r0, [r7, #92] | 
 | 	eors	r3, r3, r6 | 
 | 	ldr	r6, [r7, #108] | 
 | 	str	r3, [r4, #140] | 
 | 	ldr	r3, [r5] | 
 | 	ldr	r2, [r1, #144] | 
 | 	add	r6, r6, r3 | 
 | 	eors	r2, r2, r6 | 
 | 	str	r2, [r4, #144] | 
 | 	ldr	r2, [r5, #4] | 
 | 	ldr	r3, [r1, #148] | 
 | 	add	r0, r0, r2 | 
 | 	ldr	r6, [r7, #36] | 
 | 	eors	r3, r3, r0 | 
 | 	ldr	r0, [r7, #40] | 
 | 	str	r3, [r4, #148] | 
 | 	ldr	r2, [r5, #8] | 
 | 	ldr	r3, [r1, #152] | 
 | 	add	r0, r0, r2 | 
 | 	eors	r3, r3, r0 | 
 | 	str	r3, [r4, #152] | 
 | 	ldr	r2, [r5, #12] | 
 | 	mov	r0, r4 | 
 | 	ldr	r3, [r1, #156] | 
 | 	mov	r4, r1 | 
 | 	add	r6, r6, r2 | 
 | 	mov	r1, r0 | 
 | 	eors	r3, r3, r6 | 
 | 	str	r3, [r0, #156] | 
 | 	ldr	r2, [r5, #16] | 
 | 	ldr	r3, [r4, #160] | 
 | 	add	ip, ip, r2 | 
 | 	eor	r3, ip, r3 | 
 | 	str	r3, [r1, #160] | 
 | 	ldr	r2, [r5, #20] | 
 | 	ldr	r3, [r4, #164] | 
 | 	add	lr, lr, r2 | 
 | 	ldr	r2, [r7, #116] | 
 | 	eor	r3, lr, r3 | 
 | 	str	r3, [r1, #164] | 
 | 	ldr	r6, [r5, #24] | 
 | 	mov	lr, r4 | 
 | 	ldr	r3, [r4, #168] | 
 | 	add	r2, r2, r6 | 
 | 	mov	r6, r4 | 
 | 	eors	r3, r3, r2 | 
 | 	str	r3, [r1, #168] | 
 | 	ldr	r5, [r5, #28] | 
 | 	mov	r2, r1 | 
 | 	ldr	r3, [r4, #172] | 
 | 	ldr	r0, [r7, #120] | 
 | 	add	r0, r0, r5 | 
 | 	ldr	r5, [r7, #24] | 
 | 	eors	r3, r3, r0 | 
 | 	str	r3, [r1, #172] | 
 | 	ldr	r3, [r7, #72] | 
 | 	ldr	r4, [r4, #176] | 
 | 	ldr	r1, [r7, #28] | 
 | 	eors	r4, r4, r1 | 
 | 	adds	r1, r3, #3 | 
 | 	str	r4, [r2, #176] | 
 | 	ldr	r3, [r7, #100] | 
 | 	ldr	r0, [lr, #180] | 
 | 	str	r1, [r7, #72] | 
 | 	eors	r3, r3, r0 | 
 | 	mov	r0, r3 | 
 | 	mov	r3, r2 | 
 | 	str	r0, [r2, #180] | 
 | 	adds	r3, r3, #192 | 
 | 	ldr	r1, [lr, #184] | 
 | 	ldr	r2, [r7, #96] | 
 | 	eors	r1, r1, r2 | 
 | 	str	r1, [r3, #-8] | 
 | 	ldr	r2, [lr, #188] | 
 | 	mov	r1, r6 | 
 | 	adds	r1, r1, #192 | 
 | 	str	r1, [r7, #76] | 
 | 	eors	r2, r2, r5 | 
 | 	str	r2, [r3, #-4] | 
 | 	ldr	r2, [r7, #16] | 
 | 	str	r3, [r7, #88] | 
 | 	cmp	r2, r3 | 
 | 	bne	.L4 | 
 | 	ldr	r3, [r7, #12] | 
 | 	ldr	r2, [r7, #4] | 
 | 	add	r3, r3, r2 | 
 | 	str	r3, [r7, #12] | 
 | .L2: | 
 | 	ldr	r1, [r7, #8] | 
 | 	movw	r2, #43691 | 
 | 	movt	r2, 43690 | 
 | 	umull	r2, r3, r1, r2 | 
 | 	lsr	fp, r3, #7 | 
 | 	lsl	r3, fp, #8 | 
 | 	sub	fp, r3, fp, lsl #6 | 
 | 	rsb	fp, fp, r1 | 
 | 	lsrs	fp, fp, #6 | 
 | 	beq	.L6 | 
 | 	ldr	r5, [r7, #12] | 
 | 	ldr	r4, [r7, #16] | 
 | 	ldr	r6, [r7, #84] | 
 | 	ldr	lr, [r7, #80] | 
 | 	vldr	d30, .L94 | 
 | 	vldr	d31, .L94+8 | 
 | 	str	fp, [r7, #120] | 
 | 	str	fp, [r7, #124] | 
 | .L8: | 
 | 	vmov	q2, q11  @ v4si | 
 | 	movs	r3, #10 | 
 | 	vmov	q8, q14  @ v4si | 
 | 	vmov	q9, q13  @ v4si | 
 | 	vmov	q10, q12  @ v4si | 
 | .L7: | 
 | 	vadd.i32	q10, q10, q9 | 
 | 	subs	r3, r3, #1 | 
 | 	veor	q3, q2, q10 | 
 | 	vrev32.16	q3, q3 | 
 | 	vadd.i32	q8, q8, q3 | 
 | 	veor	q9, q8, q9 | 
 | 	vshl.i32	q2, q9, #12 | 
 | 	vsri.32	q2, q9, #20 | 
 | 	vadd.i32	q10, q10, q2 | 
 | 	veor	q3, q10, q3 | 
 | 	vshl.i32	q9, q3, #8 | 
 | 	vsri.32	q9, q3, #24 | 
 | 	vadd.i32	q8, q8, q9 | 
 | 	vext.32	q9, q9, q9, #3 | 
 | 	veor	q2, q8, q2 | 
 | 	vext.32	q8, q8, q8, #2 | 
 | 	vshl.i32	q3, q2, #7 | 
 | 	vsri.32	q3, q2, #25 | 
 | 	vext.32	q3, q3, q3, #1 | 
 | 	vadd.i32	q10, q10, q3 | 
 | 	veor	q9, q10, q9 | 
 | 	vrev32.16	q9, q9 | 
 | 	vadd.i32	q8, q8, q9 | 
 | 	veor	q3, q8, q3 | 
 | 	vshl.i32	q2, q3, #12 | 
 | 	vsri.32	q2, q3, #20 | 
 | 	vadd.i32	q10, q10, q2 | 
 | 	vmov	q3, q2  @ v4si | 
 | 	veor	q9, q10, q9 | 
 | 	vshl.i32	q2, q9, #8 | 
 | 	vsri.32	q2, q9, #24 | 
 | 	vadd.i32	q8, q8, q2 | 
 | 	vext.32	q2, q2, q2, #1 | 
 | 	veor	q3, q8, q3 | 
 | 	vext.32	q8, q8, q8, #2 | 
 | 	vshl.i32	q9, q3, #7 | 
 | 	vsri.32	q9, q3, #25 | 
 | 	vext.32	q9, q9, q9, #3 | 
 | 	bne	.L7 | 
 | 	ldr	r0, [r5]	@ unaligned | 
 | 	vadd.i32	q1, q12, q10 | 
 | 	ldr	r1, [r5, #4]	@ unaligned | 
 | 	mov	ip, lr | 
 | 	ldr	r2, [r5, #8]	@ unaligned | 
 | 	mov	r9, lr | 
 | 	ldr	r3, [r5, #12]	@ unaligned | 
 | 	mov	r10, r5 | 
 | 	vadd.i32	q9, q13, q9 | 
 | 	mov	r8, lr | 
 | 	vadd.i32	q8, q14, q8 | 
 | 	stmia	ip!, {r0, r1, r2, r3} | 
 | 	mov	ip, lr | 
 | 	vldr	d20, [r6, #80] | 
 | 	vldr	d21, [r6, #88] | 
 | 	vadd.i32	q3, q11, q2 | 
 | 	veor	q10, q10, q1 | 
 | 	vadd.i32	q11, q11, q15 | 
 | 	vstr	d20, [r6, #80] | 
 | 	vstr	d21, [r6, #88] | 
 | 	ldmia	r9!, {r0, r1, r2, r3} | 
 | 	mov	r9, r5 | 
 | 	str	r0, [r4]	@ unaligned | 
 | 	str	r1, [r4, #4]	@ unaligned | 
 | 	str	r2, [r4, #8]	@ unaligned | 
 | 	str	r3, [r4, #12]	@ unaligned | 
 | 	ldr	r0, [r10, #16]!	@ unaligned | 
 | 	ldr	r1, [r10, #4]	@ unaligned | 
 | 	ldr	r2, [r10, #8]	@ unaligned | 
 | 	ldr	r3, [r10, #12]	@ unaligned | 
 | 	add	r10, r4, #48 | 
 | 	adds	r4, r4, #64 | 
 | 	stmia	r8!, {r0, r1, r2, r3} | 
 | 	mov	r8, lr | 
 | 	vldr	d20, [r6, #80] | 
 | 	vldr	d21, [r6, #88] | 
 | 	veor	q10, q10, q9 | 
 | 	vstr	d20, [r6, #80] | 
 | 	vstr	d21, [r6, #88] | 
 | 	ldmia	ip!, {r0, r1, r2, r3} | 
 | 	mov	ip, lr | 
 | 	str	r0, [r4, #-48]	@ unaligned | 
 | 	str	r1, [r4, #-44]	@ unaligned | 
 | 	str	r2, [r4, #-40]	@ unaligned | 
 | 	str	r3, [r4, #-36]	@ unaligned | 
 | 	ldr	r0, [r9, #32]!	@ unaligned | 
 | 	ldr	r1, [r9, #4]	@ unaligned | 
 | 	ldr	r2, [r9, #8]	@ unaligned | 
 | 	ldr	r3, [r9, #12]	@ unaligned | 
 | 	mov	r9, r5 | 
 | 	adds	r5, r5, #64 | 
 | 	stmia	r8!, {r0, r1, r2, r3} | 
 | 	mov	r8, lr | 
 | 	vldr	d18, [r6, #80] | 
 | 	vldr	d19, [r6, #88] | 
 | 	veor	q9, q9, q8 | 
 | 	vstr	d18, [r6, #80] | 
 | 	vstr	d19, [r6, #88] | 
 | 	ldmia	ip!, {r0, r1, r2, r3} | 
 | 	mov	ip, lr | 
 | 	str	r0, [r4, #-32]	@ unaligned | 
 | 	str	r1, [r4, #-28]	@ unaligned | 
 | 	str	r2, [r4, #-24]	@ unaligned | 
 | 	str	r3, [r4, #-20]	@ unaligned | 
 | 	ldr	r0, [r9, #48]!	@ unaligned | 
 | 	ldr	r1, [r9, #4]	@ unaligned | 
 | 	ldr	r2, [r9, #8]	@ unaligned | 
 | 	ldr	r3, [r9, #12]	@ unaligned | 
 | 	stmia	r8!, {r0, r1, r2, r3} | 
 | 	vldr	d16, [r6, #80] | 
 | 	vldr	d17, [r6, #88] | 
 | 	veor	q8, q8, q3 | 
 | 	vstr	d16, [r6, #80] | 
 | 	vstr	d17, [r6, #88] | 
 | 	ldmia	ip!, {r0, r1, r2, r3} | 
 | 	str	r0, [r4, #-16]	@ unaligned | 
 | 	str	r1, [r4, #-12]	@ unaligned | 
 | 	str	r3, [r10, #12]	@ unaligned | 
 | 	ldr	r3, [r7, #124] | 
 | 	str	r2, [r10, #8]	@ unaligned | 
 | 	cmp	r3, #1 | 
 | 	beq	.L87 | 
 | 	movs	r3, #1 | 
 | 	str	r3, [r7, #124] | 
 | 	b	.L8 | 
 | .L95: | 
 | 	.align	3 | 
 | .L94: | 
 | 	.word	1 | 
 | 	.word	0 | 
 | 	.word	0 | 
 | 	.word	0 | 
 | .L87: | 
 | 	ldr	fp, [r7, #120] | 
 | 	ldr	r3, [r7, #12] | 
 | 	lsl	fp, fp, #6 | 
 | 	add	r3, r3, fp | 
 | 	str	r3, [r7, #12] | 
 | 	ldr	r3, [r7, #16] | 
 | 	add	r3, r3, fp | 
 | 	str	r3, [r7, #16] | 
 | .L6: | 
 | 	ldr	r3, [r7, #8] | 
 | 	ands	r9, r3, #63 | 
 | 	beq	.L1 | 
 | 	vmov	q3, q11  @ v4si | 
 | 	movs	r3, #10 | 
 | 	vmov	q8, q14  @ v4si | 
 | 	mov	r5, r9 | 
 | 	vmov	q15, q13  @ v4si | 
 | 	vmov	q10, q12  @ v4si | 
 | .L10: | 
 | 	vadd.i32	q10, q10, q15 | 
 | 	subs	r3, r3, #1 | 
 | 	veor	q9, q3, q10 | 
 | 	vrev32.16	q9, q9 | 
 | 	vadd.i32	q8, q8, q9 | 
 | 	veor	q15, q8, q15 | 
 | 	vshl.i32	q3, q15, #12 | 
 | 	vsri.32	q3, q15, #20 | 
 | 	vadd.i32	q10, q10, q3 | 
 | 	veor	q15, q10, q9 | 
 | 	vshl.i32	q9, q15, #8 | 
 | 	vsri.32	q9, q15, #24 | 
 | 	vadd.i32	q8, q8, q9 | 
 | 	vext.32	q9, q9, q9, #3 | 
 | 	veor	q3, q8, q3 | 
 | 	vext.32	q8, q8, q8, #2 | 
 | 	vshl.i32	q15, q3, #7 | 
 | 	vsri.32	q15, q3, #25 | 
 | 	vext.32	q15, q15, q15, #1 | 
 | 	vadd.i32	q10, q10, q15 | 
 | 	veor	q9, q10, q9 | 
 | 	vrev32.16	q9, q9 | 
 | 	vadd.i32	q8, q8, q9 | 
 | 	veor	q15, q8, q15 | 
 | 	vshl.i32	q3, q15, #12 | 
 | 	vsri.32	q3, q15, #20 | 
 | 	vadd.i32	q10, q10, q3 | 
 | 	vmov	q15, q3  @ v4si | 
 | 	veor	q9, q10, q9 | 
 | 	vshl.i32	q3, q9, #8 | 
 | 	vsri.32	q3, q9, #24 | 
 | 	vadd.i32	q8, q8, q3 | 
 | 	vext.32	q3, q3, q3, #1 | 
 | 	veor	q9, q8, q15 | 
 | 	vext.32	q8, q8, q8, #2 | 
 | 	vshl.i32	q15, q9, #7 | 
 | 	vsri.32	q15, q9, #25 | 
 | 	vext.32	q15, q15, q15, #3 | 
 | 	bne	.L10 | 
 | 	cmp	r5, #15 | 
 | 	mov	r9, r5 | 
 | 	bhi	.L88 | 
 | 	vadd.i32	q12, q12, q10 | 
 | 	ldr	r3, [r7, #84] | 
 | 	vst1.64	{d24-d25}, [r3:128] | 
 | .L14: | 
 | 	ldr	r3, [r7, #8] | 
 | 	and	r2, r3, #48 | 
 | 	cmp	r9, r2 | 
 | 	bls	.L1 | 
 | 	ldr	r6, [r7, #16] | 
 | 	add	r3, r2, #16 | 
 | 	ldr	r1, [r7, #12] | 
 | 	rsb	ip, r2, r9 | 
 | 	adds	r0, r1, r2 | 
 | 	mov	r4, r6 | 
 | 	add	r1, r1, r3 | 
 | 	add	r4, r4, r2 | 
 | 	add	r3, r3, r6 | 
 | 	cmp	r0, r3 | 
 | 	it	cc | 
 | 	cmpcc	r4, r1 | 
 | 	ite	cs | 
 | 	movcs	r3, #1 | 
 | 	movcc	r3, #0 | 
 | 	cmp	ip, #18 | 
 | 	ite	ls | 
 | 	movls	r3, #0 | 
 | 	andhi	r3, r3, #1 | 
 | 	cmp	r3, #0 | 
 | 	beq	.L16 | 
 | 	and	r1, r0, #7 | 
 | 	mov	r3, r2 | 
 | 	negs	r1, r1 | 
 | 	and	r1, r1, #15 | 
 | 	cmp	r1, ip | 
 | 	it	cs | 
 | 	movcs	r1, ip | 
 | 	cmp	r1, #0 | 
 | 	beq	.L17 | 
 | 	ldr	r5, [r7, #84] | 
 | 	cmp	r1, #1 | 
 | 	ldrb	r0, [r0]	@ zero_extendqisi2 | 
 | 	add	r3, r2, #1 | 
 | 	ldrb	lr, [r5, r2]	@ zero_extendqisi2 | 
 | 	mov	r6, r5 | 
 | 	eor	r0, lr, r0 | 
 | 	strb	r0, [r4] | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #2 | 
 | 	ldrb	r4, [r5, r3]	@ zero_extendqisi2 | 
 | 	ldr	r5, [r7, #16] | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #2 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #3 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #3 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #4 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #4 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #5 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #5 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #6 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #6 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #7 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #7 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #8 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #8 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #9 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #9 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #10 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #10 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #11 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #11 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #12 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #12 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #13 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #13 | 
 | 	beq	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	cmp	r1, #15 | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #14 | 
 | 	bne	.L17 | 
 | 	ldr	r0, [r7, #12] | 
 | 	ldrb	r4, [r6, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r3]	@ zero_extendqisi2 | 
 | 	eors	r0, r0, r4 | 
 | 	strb	r0, [r5, r3] | 
 | 	add	r3, r2, #15 | 
 | .L17: | 
 | 	rsb	r4, r1, ip | 
 | 	add	r0, ip, #-1 | 
 | 	sub	r6, r4, #16 | 
 | 	subs	r0, r0, r1 | 
 | 	cmp	r0, #14 | 
 | 	lsr	r6, r6, #4 | 
 | 	add	r6, r6, #1 | 
 | 	lsl	lr, r6, #4 | 
 | 	bls	.L19 | 
 | 	add	r2, r2, r1 | 
 | 	ldr	r1, [r7, #12] | 
 | 	ldr	r5, [r7, #16] | 
 | 	cmp	r6, #1 | 
 | 	add	r0, r1, r2 | 
 | 	ldr	r1, [r7, #84] | 
 | 	add	r1, r1, r2 | 
 | 	vld1.64	{d18-d19}, [r0:64] | 
 | 	add	r2, r2, r5 | 
 | 	vld1.8	{q8}, [r1] | 
 | 	veor	q8, q8, q9 | 
 | 	vst1.8	{q8}, [r2] | 
 | 	beq	.L20 | 
 | 	add	r8, r1, #16 | 
 | 	add	ip, r2, #16 | 
 | 	vldr	d18, [r0, #16] | 
 | 	vldr	d19, [r0, #24] | 
 | 	cmp	r6, #2 | 
 | 	vld1.8	{q8}, [r8] | 
 | 	veor	q8, q8, q9 | 
 | 	vst1.8	{q8}, [ip] | 
 | 	beq	.L20 | 
 | 	add	r8, r1, #32 | 
 | 	add	ip, r2, #32 | 
 | 	vldr	d18, [r0, #32] | 
 | 	vldr	d19, [r0, #40] | 
 | 	cmp	r6, #3 | 
 | 	vld1.8	{q8}, [r8] | 
 | 	veor	q8, q8, q9 | 
 | 	vst1.8	{q8}, [ip] | 
 | 	beq	.L20 | 
 | 	adds	r1, r1, #48 | 
 | 	adds	r2, r2, #48 | 
 | 	vldr	d18, [r0, #48] | 
 | 	vldr	d19, [r0, #56] | 
 | 	vld1.8	{q8}, [r1] | 
 | 	veor	q8, q8, q9 | 
 | 	vst1.8	{q8}, [r2] | 
 | .L20: | 
 | 	cmp	lr, r4 | 
 | 	add	r3, r3, lr | 
 | 	beq	.L1 | 
 | .L19: | 
 | 	ldr	r4, [r7, #84] | 
 | 	adds	r2, r3, #1 | 
 | 	ldr	r1, [r7, #12] | 
 | 	cmp	r2, r9 | 
 | 	ldr	r5, [r7, #16] | 
 | 	ldrb	r0, [r4, r3]	@ zero_extendqisi2 | 
 | 	ldrb	r1, [r1, r3]	@ zero_extendqisi2 | 
 | 	eor	r1, r1, r0 | 
 | 	strb	r1, [r5, r3] | 
 | 	bcs	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	adds	r1, r3, #2 | 
 | 	mov	r6, r4 | 
 | 	cmp	r9, r1 | 
 | 	ldrb	r4, [r4, r2]	@ zero_extendqisi2 | 
 | 	ldrb	r0, [r0, r2]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	adds	r2, r3, #3 | 
 | 	ldrb	r4, [r6, r1]	@ zero_extendqisi2 | 
 | 	cmp	r9, r2 | 
 | 	ldrb	r0, [r0, r1]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r1] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	adds	r1, r3, #4 | 
 | 	ldrb	r4, [r6, r2]	@ zero_extendqisi2 | 
 | 	cmp	r9, r1 | 
 | 	ldrb	r0, [r0, r2]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	adds	r2, r3, #5 | 
 | 	ldrb	r4, [r6, r1]	@ zero_extendqisi2 | 
 | 	cmp	r9, r2 | 
 | 	ldrb	r0, [r0, r1]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r1] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	adds	r1, r3, #6 | 
 | 	ldrb	r4, [r6, r2]	@ zero_extendqisi2 | 
 | 	cmp	r9, r1 | 
 | 	ldrb	r0, [r0, r2]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	adds	r2, r3, #7 | 
 | 	ldrb	r4, [r6, r1]	@ zero_extendqisi2 | 
 | 	cmp	r9, r2 | 
 | 	ldrb	r0, [r0, r1]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r1] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	add	r1, r3, #8 | 
 | 	ldrb	r4, [r6, r2]	@ zero_extendqisi2 | 
 | 	cmp	r9, r1 | 
 | 	ldrb	r0, [r0, r2]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	add	r2, r3, #9 | 
 | 	ldrb	r4, [r6, r1]	@ zero_extendqisi2 | 
 | 	cmp	r9, r2 | 
 | 	ldrb	r0, [r0, r1]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r1] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	add	r1, r3, #10 | 
 | 	ldrb	r4, [r6, r2]	@ zero_extendqisi2 | 
 | 	cmp	r9, r1 | 
 | 	ldrb	r0, [r0, r2]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	add	r2, r3, #11 | 
 | 	ldrb	r4, [r6, r1]	@ zero_extendqisi2 | 
 | 	cmp	r9, r2 | 
 | 	ldrb	r0, [r0, r1]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r1] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	add	r1, r3, #12 | 
 | 	ldrb	r4, [r6, r2]	@ zero_extendqisi2 | 
 | 	cmp	r9, r1 | 
 | 	ldrb	r0, [r0, r2]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r0, [r7, #12] | 
 | 	add	r2, r3, #13 | 
 | 	ldrb	r4, [r6, r1]	@ zero_extendqisi2 | 
 | 	cmp	r9, r2 | 
 | 	ldrb	r0, [r0, r1]	@ zero_extendqisi2 | 
 | 	eor	r0, r0, r4 | 
 | 	strb	r0, [r5, r1] | 
 | 	bls	.L1 | 
 | 	ldr	r1, [r7, #12] | 
 | 	adds	r3, r3, #14 | 
 | 	ldrb	r0, [r6, r2]	@ zero_extendqisi2 | 
 | 	cmp	r9, r3 | 
 | 	ldrb	r1, [r1, r2]	@ zero_extendqisi2 | 
 | 	eor	r1, r1, r0 | 
 | 	strb	r1, [r5, r2] | 
 | 	bls	.L1 | 
 | 	ldr	r2, [r7, #84] | 
 | 	ldrb	r1, [r2, r3]	@ zero_extendqisi2 | 
 | 	ldr	r2, [r7, #12] | 
 | 	ldrb	r2, [r2, r3]	@ zero_extendqisi2 | 
 | 	eors	r2, r2, r1 | 
 | 	ldr	r1, [r7, #16] | 
 | 	strb	r2, [r1, r3] | 
 | .L1: | 
 | 	adds	r7, r7, #156 | 
 | 	mov	sp, r7 | 
 | 	@ sp needed | 
 | 	vldm	sp!, {d8-d15} | 
 | 	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc} | 
 | .L88: | 
 | 	ldr	r5, [r7, #12] | 
 | 	vadd.i32	q12, q12, q10 | 
 | 	ldr	r4, [r7, #80] | 
 | 	cmp	r9, #31 | 
 | 	ldr	r0, [r5]	@ unaligned | 
 | 	ldr	r1, [r5, #4]	@ unaligned | 
 | 	mov	r6, r4 | 
 | 	ldr	r2, [r5, #8]	@ unaligned | 
 | 	ldr	r3, [r5, #12]	@ unaligned | 
 | 	stmia	r6!, {r0, r1, r2, r3} | 
 | 	ldr	r2, [r7, #84] | 
 | 	ldr	r6, [r7, #16] | 
 | 	vldr	d18, [r2, #80] | 
 | 	vldr	d19, [r2, #88] | 
 | 	veor	q9, q9, q12 | 
 | 	vstr	d18, [r2, #80] | 
 | 	vstr	d19, [r2, #88] | 
 | 	ldmia	r4!, {r0, r1, r2, r3} | 
 | 	str	r1, [r6, #4]	@ unaligned | 
 | 	mov	r1, r6 | 
 | 	str	r0, [r6]	@ unaligned | 
 | 	str	r2, [r6, #8]	@ unaligned | 
 | 	str	r3, [r6, #12]	@ unaligned | 
 | 	bhi	.L89 | 
 | 	vadd.i32	q13, q13, q15 | 
 | 	ldr	r3, [r7, #84] | 
 | 	vstr	d26, [r3, #16] | 
 | 	vstr	d27, [r3, #24] | 
 | 	b	.L14 | 
 | .L16: | 
 | 	subs	r3, r2, #1 | 
 | 	ldr	r2, [r7, #12] | 
 | 	add	r2, r2, r9 | 
 | 	mov	r5, r2 | 
 | 	ldr	r2, [r7, #84] | 
 | 	add	r2, r2, r3 | 
 | 	mov	r3, r2 | 
 | .L24: | 
 | 	ldrb	r1, [r0], #1	@ zero_extendqisi2 | 
 | 	ldrb	r2, [r3, #1]!	@ zero_extendqisi2 | 
 | 	cmp	r0, r5 | 
 | 	eor	r2, r2, r1 | 
 | 	strb	r2, [r4], #1 | 
 | 	bne	.L24 | 
 | 	adds	r7, r7, #156 | 
 | 	mov	sp, r7 | 
 | 	@ sp needed | 
 | 	vldm	sp!, {d8-d15} | 
 | 	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc} | 
 | .L26: | 
 | 	str	fp, [r7, #16] | 
 | 	b	.L2 | 
 | .L89: | 
 | 	mov	r3, r5 | 
 | 	ldr	r4, [r7, #80] | 
 | 	ldr	r0, [r3, #16]!	@ unaligned | 
 | 	add	lr, r1, #16 | 
 | 	mov	r5, r1 | 
 | 	vadd.i32	q13, q13, q15 | 
 | 	mov	r6, r4 | 
 | 	cmp	r9, #47 | 
 | 	ldr	r1, [r3, #4]	@ unaligned | 
 | 	ldr	r2, [r3, #8]	@ unaligned | 
 | 	ldr	r3, [r3, #12]	@ unaligned | 
 | 	stmia	r6!, {r0, r1, r2, r3} | 
 | 	ldr	r2, [r7, #84] | 
 | 	vldr	d18, [r2, #80] | 
 | 	vldr	d19, [r2, #88] | 
 | 	veor	q13, q9, q13 | 
 | 	vstr	d26, [r2, #80] | 
 | 	vstr	d27, [r2, #88] | 
 | 	ldmia	r4!, {r0, r1, r2, r3} | 
 | 	str	r0, [r5, #16]	@ unaligned | 
 | 	str	r1, [lr, #4]	@ unaligned | 
 | 	str	r2, [lr, #8]	@ unaligned | 
 | 	str	r3, [lr, #12]	@ unaligned | 
 | 	bhi	.L90 | 
 | 	vadd.i32	q8, q14, q8 | 
 | 	ldr	r3, [r7, #84] | 
 | 	vstr	d16, [r3, #32] | 
 | 	vstr	d17, [r3, #40] | 
 | 	b	.L14 | 
 | .L90: | 
 | 	ldr	r3, [r7, #12] | 
 | 	add	lr, r5, #32 | 
 | 	ldr	r4, [r7, #80] | 
 | 	vadd.i32	q8, q14, q8 | 
 | 	ldr	r5, [r7, #84] | 
 | 	vadd.i32	q11, q11, q3 | 
 | 	ldr	r0, [r3, #32]!	@ unaligned | 
 | 	mov	r6, r4 | 
 | 	vstr	d22, [r5, #48] | 
 | 	vstr	d23, [r5, #56] | 
 | 	ldr	r1, [r3, #4]	@ unaligned | 
 | 	ldr	r2, [r3, #8]	@ unaligned | 
 | 	ldr	r3, [r3, #12]	@ unaligned | 
 | 	stmia	r4!, {r0, r1, r2, r3} | 
 | 	vldr	d18, [r5, #80] | 
 | 	vldr	d19, [r5, #88] | 
 | 	veor	q9, q9, q8 | 
 | 	ldr	r4, [r7, #16] | 
 | 	vstr	d18, [r5, #80] | 
 | 	vstr	d19, [r5, #88] | 
 | 	ldmia	r6!, {r0, r1, r2, r3} | 
 | 	str	r0, [r4, #32]	@ unaligned | 
 | 	str	r1, [lr, #4]	@ unaligned | 
 | 	str	r2, [lr, #8]	@ unaligned | 
 | 	str	r3, [lr, #12]	@ unaligned | 
 | 	b	.L14 | 
 | 	.size	CRYPTO_chacha_20_neon, .-CRYPTO_chacha_20_neon | 
 | 	.section	.rodata | 
 | 	.align	2 | 
 | .LANCHOR0 = . + 0 | 
 | .LC0: | 
 | 	.word	1634760805 | 
 | 	.word	857760878 | 
 | 	.word	2036477234 | 
 | 	.word	1797285236 | 
 | 	.ident	"GCC: (Linaro GCC 2014.11) 4.9.3 20141031 (prerelease)" | 
 | 	.section	.note.GNU-stack,"",%progbits | 
 |  | 
 | #endif  /* !OPENSSL_NO_ASM */ |