xref: /aosp_15_r20/external/boringssl/src/gen/bcm/sha512-armv8-linux.S (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1*8fb009dcSAndroid Build Coastguard Worker// This file is generated from a similarly-named Perl script in the BoringSSL
2*8fb009dcSAndroid Build Coastguard Worker// source tree. Do not edit by hand.
3*8fb009dcSAndroid Build Coastguard Worker
4*8fb009dcSAndroid Build Coastguard Worker#include <openssl/asm_base.h>
5*8fb009dcSAndroid Build Coastguard Worker
6*8fb009dcSAndroid Build Coastguard Worker#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(__ELF__)
7*8fb009dcSAndroid Build Coastguard Worker// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved.
8*8fb009dcSAndroid Build Coastguard Worker//
9*8fb009dcSAndroid Build Coastguard Worker// Licensed under the OpenSSL license (the "License").  You may not use
10*8fb009dcSAndroid Build Coastguard Worker// this file except in compliance with the License.  You can obtain a copy
11*8fb009dcSAndroid Build Coastguard Worker// in the file LICENSE in the source distribution or at
12*8fb009dcSAndroid Build Coastguard Worker// https://www.openssl.org/source/license.html
13*8fb009dcSAndroid Build Coastguard Worker
14*8fb009dcSAndroid Build Coastguard Worker// ====================================================================
15*8fb009dcSAndroid Build Coastguard Worker// Written by Andy Polyakov <[email protected]> for the OpenSSL
16*8fb009dcSAndroid Build Coastguard Worker// project. The module is, however, dual licensed under OpenSSL and
17*8fb009dcSAndroid Build Coastguard Worker// CRYPTOGAMS licenses depending on where you obtain it. For further
18*8fb009dcSAndroid Build Coastguard Worker// details see http://www.openssl.org/~appro/cryptogams/.
19*8fb009dcSAndroid Build Coastguard Worker//
20*8fb009dcSAndroid Build Coastguard Worker// Permission to use under GPLv2 terms is granted.
21*8fb009dcSAndroid Build Coastguard Worker// ====================================================================
22*8fb009dcSAndroid Build Coastguard Worker//
23*8fb009dcSAndroid Build Coastguard Worker// SHA256/512 for ARMv8.
24*8fb009dcSAndroid Build Coastguard Worker//
25*8fb009dcSAndroid Build Coastguard Worker// Performance in cycles per processed byte and improvement coefficient
26*8fb009dcSAndroid Build Coastguard Worker// over code generated with "default" compiler:
27*8fb009dcSAndroid Build Coastguard Worker//
28*8fb009dcSAndroid Build Coastguard Worker//		SHA256-hw	SHA256(*)	SHA512
29*8fb009dcSAndroid Build Coastguard Worker// Apple A7	1.97		10.5 (+33%)	6.73 (-1%(**))
30*8fb009dcSAndroid Build Coastguard Worker// Cortex-A53	2.38		15.5 (+115%)	10.0 (+150%(***))
31*8fb009dcSAndroid Build Coastguard Worker// Cortex-A57	2.31		11.6 (+86%)	7.51 (+260%(***))
32*8fb009dcSAndroid Build Coastguard Worker// Denver	2.01		10.5 (+26%)	6.70 (+8%)
33*8fb009dcSAndroid Build Coastguard Worker// X-Gene			20.0 (+100%)	12.8 (+300%(***))
34*8fb009dcSAndroid Build Coastguard Worker// Mongoose	2.36		13.0 (+50%)	8.36 (+33%)
35*8fb009dcSAndroid Build Coastguard Worker// Kryo		1.92		17.4 (+30%)	11.2 (+8%)
36*8fb009dcSAndroid Build Coastguard Worker//
37*8fb009dcSAndroid Build Coastguard Worker// (*)	Software SHA256 results are of lesser relevance, presented
38*8fb009dcSAndroid Build Coastguard Worker//	mostly for informational purposes.
39*8fb009dcSAndroid Build Coastguard Worker// (**)	The result is a trade-off: it's possible to improve it by
40*8fb009dcSAndroid Build Coastguard Worker//	10% (or by 1 cycle per round), but at the cost of 20% loss
41*8fb009dcSAndroid Build Coastguard Worker//	on Cortex-A53 (or by 4 cycles per round).
42*8fb009dcSAndroid Build Coastguard Worker// (***)	Super-impressive coefficients over gcc-generated code are
43*8fb009dcSAndroid Build Coastguard Worker//	indication of some compiler "pathology", most notably code
44*8fb009dcSAndroid Build Coastguard Worker//	generated with -mgeneral-regs-only is significantly faster
45*8fb009dcSAndroid Build Coastguard Worker//	and the gap is only 40-90%.
46*8fb009dcSAndroid Build Coastguard Worker
47*8fb009dcSAndroid Build Coastguard Worker#ifndef	__KERNEL__
48*8fb009dcSAndroid Build Coastguard Worker# include <openssl/arm_arch.h>
49*8fb009dcSAndroid Build Coastguard Worker#endif
50*8fb009dcSAndroid Build Coastguard Worker
51*8fb009dcSAndroid Build Coastguard Worker.text
52*8fb009dcSAndroid Build Coastguard Worker
53*8fb009dcSAndroid Build Coastguard Worker.globl	sha512_block_data_order_nohw
54*8fb009dcSAndroid Build Coastguard Worker.hidden	sha512_block_data_order_nohw
55*8fb009dcSAndroid Build Coastguard Worker.type	sha512_block_data_order_nohw,%function
56*8fb009dcSAndroid Build Coastguard Worker.align	6
57*8fb009dcSAndroid Build Coastguard Workersha512_block_data_order_nohw:
58*8fb009dcSAndroid Build Coastguard Worker	AARCH64_SIGN_LINK_REGISTER
59*8fb009dcSAndroid Build Coastguard Worker	stp	x29,x30,[sp,#-128]!
60*8fb009dcSAndroid Build Coastguard Worker	add	x29,sp,#0
61*8fb009dcSAndroid Build Coastguard Worker
62*8fb009dcSAndroid Build Coastguard Worker	stp	x19,x20,[sp,#16]
63*8fb009dcSAndroid Build Coastguard Worker	stp	x21,x22,[sp,#32]
64*8fb009dcSAndroid Build Coastguard Worker	stp	x23,x24,[sp,#48]
65*8fb009dcSAndroid Build Coastguard Worker	stp	x25,x26,[sp,#64]
66*8fb009dcSAndroid Build Coastguard Worker	stp	x27,x28,[sp,#80]
67*8fb009dcSAndroid Build Coastguard Worker	sub	sp,sp,#4*8
68*8fb009dcSAndroid Build Coastguard Worker
69*8fb009dcSAndroid Build Coastguard Worker	ldp	x20,x21,[x0]				// load context
70*8fb009dcSAndroid Build Coastguard Worker	ldp	x22,x23,[x0,#2*8]
71*8fb009dcSAndroid Build Coastguard Worker	ldp	x24,x25,[x0,#4*8]
72*8fb009dcSAndroid Build Coastguard Worker	add	x2,x1,x2,lsl#7	// end of input
73*8fb009dcSAndroid Build Coastguard Worker	ldp	x26,x27,[x0,#6*8]
74*8fb009dcSAndroid Build Coastguard Worker	adrp	x30,.LK512
75*8fb009dcSAndroid Build Coastguard Worker	add	x30,x30,:lo12:.LK512
76*8fb009dcSAndroid Build Coastguard Worker	stp	x0,x2,[x29,#96]
77*8fb009dcSAndroid Build Coastguard Worker
78*8fb009dcSAndroid Build Coastguard Worker.Loop:
79*8fb009dcSAndroid Build Coastguard Worker	ldp	x3,x4,[x1],#2*8
80*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8			// *K++
81*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x21,x22				// magic seed
82*8fb009dcSAndroid Build Coastguard Worker	str	x1,[x29,#112]
83*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
84*8fb009dcSAndroid Build Coastguard Worker	rev	x3,x3			// 0
85*8fb009dcSAndroid Build Coastguard Worker#endif
86*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x24,#14
87*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x19			// h+=K[i]
88*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x24,x24,ror#23
89*8fb009dcSAndroid Build Coastguard Worker	and	x17,x25,x24
90*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x26,x24
91*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x3			// h+=X[i]
92*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
93*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x20,x21			// a^b, b^c in next round
94*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x6,ror#18	// Sigma1(e)
95*8fb009dcSAndroid Build Coastguard Worker	ror	x6,x20,#28
96*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Ch(e,f,g)
97*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x20,x20,ror#5
98*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x16			// h+=Sigma1(e)
99*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
100*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x27			// d+=h
101*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x21			// Maj(a,b,c)
102*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x6,x17,ror#34	// Sigma0(a)
103*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x28			// h+=Maj(a,b,c)
104*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
105*8fb009dcSAndroid Build Coastguard Worker	//add	x27,x27,x17			// h+=Sigma0(a)
106*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
107*8fb009dcSAndroid Build Coastguard Worker	rev	x4,x4			// 1
108*8fb009dcSAndroid Build Coastguard Worker#endif
109*8fb009dcSAndroid Build Coastguard Worker	ldp	x5,x6,[x1],#2*8
110*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Sigma0(a)
111*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x23,#14
112*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x28			// h+=K[i]
113*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x23,x23,ror#23
114*8fb009dcSAndroid Build Coastguard Worker	and	x17,x24,x23
115*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x25,x23
116*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x4			// h+=X[i]
117*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
118*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x27,x20			// a^b, b^c in next round
119*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x7,ror#18	// Sigma1(e)
120*8fb009dcSAndroid Build Coastguard Worker	ror	x7,x27,#28
121*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Ch(e,f,g)
122*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x27,x27,ror#5
123*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x16			// h+=Sigma1(e)
124*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
125*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x26			// d+=h
126*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x20			// Maj(a,b,c)
127*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x7,x17,ror#34	// Sigma0(a)
128*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x19			// h+=Maj(a,b,c)
129*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
130*8fb009dcSAndroid Build Coastguard Worker	//add	x26,x26,x17			// h+=Sigma0(a)
131*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
132*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5			// 2
133*8fb009dcSAndroid Build Coastguard Worker#endif
134*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Sigma0(a)
135*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x22,#14
136*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x19			// h+=K[i]
137*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x22,x22,ror#23
138*8fb009dcSAndroid Build Coastguard Worker	and	x17,x23,x22
139*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x24,x22
140*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x5			// h+=X[i]
141*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
142*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x26,x27			// a^b, b^c in next round
143*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x8,ror#18	// Sigma1(e)
144*8fb009dcSAndroid Build Coastguard Worker	ror	x8,x26,#28
145*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Ch(e,f,g)
146*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x26,x26,ror#5
147*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x16			// h+=Sigma1(e)
148*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
149*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x25			// d+=h
150*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x27			// Maj(a,b,c)
151*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x8,x17,ror#34	// Sigma0(a)
152*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x28			// h+=Maj(a,b,c)
153*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
154*8fb009dcSAndroid Build Coastguard Worker	//add	x25,x25,x17			// h+=Sigma0(a)
155*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
156*8fb009dcSAndroid Build Coastguard Worker	rev	x6,x6			// 3
157*8fb009dcSAndroid Build Coastguard Worker#endif
158*8fb009dcSAndroid Build Coastguard Worker	ldp	x7,x8,[x1],#2*8
159*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Sigma0(a)
160*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x21,#14
161*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x28			// h+=K[i]
162*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x21,x21,ror#23
163*8fb009dcSAndroid Build Coastguard Worker	and	x17,x22,x21
164*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x23,x21
165*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x6			// h+=X[i]
166*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
167*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x25,x26			// a^b, b^c in next round
168*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x9,ror#18	// Sigma1(e)
169*8fb009dcSAndroid Build Coastguard Worker	ror	x9,x25,#28
170*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Ch(e,f,g)
171*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x25,x25,ror#5
172*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x16			// h+=Sigma1(e)
173*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
174*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x24			// d+=h
175*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x26			// Maj(a,b,c)
176*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x9,x17,ror#34	// Sigma0(a)
177*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x19			// h+=Maj(a,b,c)
178*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
179*8fb009dcSAndroid Build Coastguard Worker	//add	x24,x24,x17			// h+=Sigma0(a)
180*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
181*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7			// 4
182*8fb009dcSAndroid Build Coastguard Worker#endif
183*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Sigma0(a)
184*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x20,#14
185*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x19			// h+=K[i]
186*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x20,x20,ror#23
187*8fb009dcSAndroid Build Coastguard Worker	and	x17,x21,x20
188*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x22,x20
189*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x7			// h+=X[i]
190*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
191*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x24,x25			// a^b, b^c in next round
192*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x10,ror#18	// Sigma1(e)
193*8fb009dcSAndroid Build Coastguard Worker	ror	x10,x24,#28
194*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Ch(e,f,g)
195*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x24,x24,ror#5
196*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x16			// h+=Sigma1(e)
197*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
198*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x23			// d+=h
199*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x25			// Maj(a,b,c)
200*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x10,x17,ror#34	// Sigma0(a)
201*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x28			// h+=Maj(a,b,c)
202*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
203*8fb009dcSAndroid Build Coastguard Worker	//add	x23,x23,x17			// h+=Sigma0(a)
204*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
205*8fb009dcSAndroid Build Coastguard Worker	rev	x8,x8			// 5
206*8fb009dcSAndroid Build Coastguard Worker#endif
207*8fb009dcSAndroid Build Coastguard Worker	ldp	x9,x10,[x1],#2*8
208*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Sigma0(a)
209*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x27,#14
210*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x28			// h+=K[i]
211*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x27,x27,ror#23
212*8fb009dcSAndroid Build Coastguard Worker	and	x17,x20,x27
213*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x21,x27
214*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x8			// h+=X[i]
215*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
216*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x23,x24			// a^b, b^c in next round
217*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x11,ror#18	// Sigma1(e)
218*8fb009dcSAndroid Build Coastguard Worker	ror	x11,x23,#28
219*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Ch(e,f,g)
220*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x23,x23,ror#5
221*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x16			// h+=Sigma1(e)
222*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
223*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x22			// d+=h
224*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x24			// Maj(a,b,c)
225*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x11,x17,ror#34	// Sigma0(a)
226*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x19			// h+=Maj(a,b,c)
227*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
228*8fb009dcSAndroid Build Coastguard Worker	//add	x22,x22,x17			// h+=Sigma0(a)
229*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
230*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9			// 6
231*8fb009dcSAndroid Build Coastguard Worker#endif
232*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Sigma0(a)
233*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x26,#14
234*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x19			// h+=K[i]
235*8fb009dcSAndroid Build Coastguard Worker	eor	x12,x26,x26,ror#23
236*8fb009dcSAndroid Build Coastguard Worker	and	x17,x27,x26
237*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x20,x26
238*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x9			// h+=X[i]
239*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
240*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x22,x23			// a^b, b^c in next round
241*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x12,ror#18	// Sigma1(e)
242*8fb009dcSAndroid Build Coastguard Worker	ror	x12,x22,#28
243*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Ch(e,f,g)
244*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x22,x22,ror#5
245*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x16			// h+=Sigma1(e)
246*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
247*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x21			// d+=h
248*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x23			// Maj(a,b,c)
249*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x12,x17,ror#34	// Sigma0(a)
250*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x28			// h+=Maj(a,b,c)
251*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
252*8fb009dcSAndroid Build Coastguard Worker	//add	x21,x21,x17			// h+=Sigma0(a)
253*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
254*8fb009dcSAndroid Build Coastguard Worker	rev	x10,x10			// 7
255*8fb009dcSAndroid Build Coastguard Worker#endif
256*8fb009dcSAndroid Build Coastguard Worker	ldp	x11,x12,[x1],#2*8
257*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Sigma0(a)
258*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x25,#14
259*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x28			// h+=K[i]
260*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x25,x25,ror#23
261*8fb009dcSAndroid Build Coastguard Worker	and	x17,x26,x25
262*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x27,x25
263*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x10			// h+=X[i]
264*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
265*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x21,x22			// a^b, b^c in next round
266*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x13,ror#18	// Sigma1(e)
267*8fb009dcSAndroid Build Coastguard Worker	ror	x13,x21,#28
268*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Ch(e,f,g)
269*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x21,x21,ror#5
270*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x16			// h+=Sigma1(e)
271*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
272*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x20			// d+=h
273*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x22			// Maj(a,b,c)
274*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x13,x17,ror#34	// Sigma0(a)
275*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x19			// h+=Maj(a,b,c)
276*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
277*8fb009dcSAndroid Build Coastguard Worker	//add	x20,x20,x17			// h+=Sigma0(a)
278*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
279*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11			// 8
280*8fb009dcSAndroid Build Coastguard Worker#endif
281*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Sigma0(a)
282*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x24,#14
283*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x19			// h+=K[i]
284*8fb009dcSAndroid Build Coastguard Worker	eor	x14,x24,x24,ror#23
285*8fb009dcSAndroid Build Coastguard Worker	and	x17,x25,x24
286*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x26,x24
287*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x11			// h+=X[i]
288*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
289*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x20,x21			// a^b, b^c in next round
290*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x14,ror#18	// Sigma1(e)
291*8fb009dcSAndroid Build Coastguard Worker	ror	x14,x20,#28
292*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Ch(e,f,g)
293*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x20,x20,ror#5
294*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x16			// h+=Sigma1(e)
295*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
296*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x27			// d+=h
297*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x21			// Maj(a,b,c)
298*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x14,x17,ror#34	// Sigma0(a)
299*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x28			// h+=Maj(a,b,c)
300*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
301*8fb009dcSAndroid Build Coastguard Worker	//add	x27,x27,x17			// h+=Sigma0(a)
302*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
303*8fb009dcSAndroid Build Coastguard Worker	rev	x12,x12			// 9
304*8fb009dcSAndroid Build Coastguard Worker#endif
305*8fb009dcSAndroid Build Coastguard Worker	ldp	x13,x14,[x1],#2*8
306*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Sigma0(a)
307*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x23,#14
308*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x28			// h+=K[i]
309*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x23,x23,ror#23
310*8fb009dcSAndroid Build Coastguard Worker	and	x17,x24,x23
311*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x25,x23
312*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x12			// h+=X[i]
313*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
314*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x27,x20			// a^b, b^c in next round
315*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x15,ror#18	// Sigma1(e)
316*8fb009dcSAndroid Build Coastguard Worker	ror	x15,x27,#28
317*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Ch(e,f,g)
318*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x27,x27,ror#5
319*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x16			// h+=Sigma1(e)
320*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
321*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x26			// d+=h
322*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x20			// Maj(a,b,c)
323*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x15,x17,ror#34	// Sigma0(a)
324*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x19			// h+=Maj(a,b,c)
325*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
326*8fb009dcSAndroid Build Coastguard Worker	//add	x26,x26,x17			// h+=Sigma0(a)
327*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
328*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13			// 10
329*8fb009dcSAndroid Build Coastguard Worker#endif
330*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Sigma0(a)
331*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x22,#14
332*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x19			// h+=K[i]
333*8fb009dcSAndroid Build Coastguard Worker	eor	x0,x22,x22,ror#23
334*8fb009dcSAndroid Build Coastguard Worker	and	x17,x23,x22
335*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x24,x22
336*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x13			// h+=X[i]
337*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
338*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x26,x27			// a^b, b^c in next round
339*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x0,ror#18	// Sigma1(e)
340*8fb009dcSAndroid Build Coastguard Worker	ror	x0,x26,#28
341*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Ch(e,f,g)
342*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x26,x26,ror#5
343*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x16			// h+=Sigma1(e)
344*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
345*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x25			// d+=h
346*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x27			// Maj(a,b,c)
347*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x0,x17,ror#34	// Sigma0(a)
348*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x28			// h+=Maj(a,b,c)
349*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
350*8fb009dcSAndroid Build Coastguard Worker	//add	x25,x25,x17			// h+=Sigma0(a)
351*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
352*8fb009dcSAndroid Build Coastguard Worker	rev	x14,x14			// 11
353*8fb009dcSAndroid Build Coastguard Worker#endif
354*8fb009dcSAndroid Build Coastguard Worker	ldp	x15,x0,[x1],#2*8
355*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Sigma0(a)
356*8fb009dcSAndroid Build Coastguard Worker	str	x6,[sp,#24]
357*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x21,#14
358*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x28			// h+=K[i]
359*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x21,x21,ror#23
360*8fb009dcSAndroid Build Coastguard Worker	and	x17,x22,x21
361*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x23,x21
362*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x14			// h+=X[i]
363*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
364*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x25,x26			// a^b, b^c in next round
365*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x6,ror#18	// Sigma1(e)
366*8fb009dcSAndroid Build Coastguard Worker	ror	x6,x25,#28
367*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Ch(e,f,g)
368*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x25,x25,ror#5
369*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x16			// h+=Sigma1(e)
370*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
371*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x24			// d+=h
372*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x26			// Maj(a,b,c)
373*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x6,x17,ror#34	// Sigma0(a)
374*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x19			// h+=Maj(a,b,c)
375*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
376*8fb009dcSAndroid Build Coastguard Worker	//add	x24,x24,x17			// h+=Sigma0(a)
377*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
378*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15			// 12
379*8fb009dcSAndroid Build Coastguard Worker#endif
380*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Sigma0(a)
381*8fb009dcSAndroid Build Coastguard Worker	str	x7,[sp,#0]
382*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x20,#14
383*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x19			// h+=K[i]
384*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x20,x20,ror#23
385*8fb009dcSAndroid Build Coastguard Worker	and	x17,x21,x20
386*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x22,x20
387*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x15			// h+=X[i]
388*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
389*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x24,x25			// a^b, b^c in next round
390*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x7,ror#18	// Sigma1(e)
391*8fb009dcSAndroid Build Coastguard Worker	ror	x7,x24,#28
392*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Ch(e,f,g)
393*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x24,x24,ror#5
394*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x16			// h+=Sigma1(e)
395*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
396*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x23			// d+=h
397*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x25			// Maj(a,b,c)
398*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x7,x17,ror#34	// Sigma0(a)
399*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x28			// h+=Maj(a,b,c)
400*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
401*8fb009dcSAndroid Build Coastguard Worker	//add	x23,x23,x17			// h+=Sigma0(a)
402*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
403*8fb009dcSAndroid Build Coastguard Worker	rev	x0,x0			// 13
404*8fb009dcSAndroid Build Coastguard Worker#endif
405*8fb009dcSAndroid Build Coastguard Worker	ldp	x1,x2,[x1]
406*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Sigma0(a)
407*8fb009dcSAndroid Build Coastguard Worker	str	x8,[sp,#8]
408*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x27,#14
409*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x28			// h+=K[i]
410*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x27,x27,ror#23
411*8fb009dcSAndroid Build Coastguard Worker	and	x17,x20,x27
412*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x21,x27
413*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x0			// h+=X[i]
414*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
415*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x23,x24			// a^b, b^c in next round
416*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x8,ror#18	// Sigma1(e)
417*8fb009dcSAndroid Build Coastguard Worker	ror	x8,x23,#28
418*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Ch(e,f,g)
419*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x23,x23,ror#5
420*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x16			// h+=Sigma1(e)
421*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
422*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x22			// d+=h
423*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x24			// Maj(a,b,c)
424*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x8,x17,ror#34	// Sigma0(a)
425*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x19			// h+=Maj(a,b,c)
426*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
427*8fb009dcSAndroid Build Coastguard Worker	//add	x22,x22,x17			// h+=Sigma0(a)
428*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
429*8fb009dcSAndroid Build Coastguard Worker	rev	x1,x1			// 14
430*8fb009dcSAndroid Build Coastguard Worker#endif
431*8fb009dcSAndroid Build Coastguard Worker	ldr	x6,[sp,#24]
432*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Sigma0(a)
433*8fb009dcSAndroid Build Coastguard Worker	str	x9,[sp,#16]
434*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x26,#14
435*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x19			// h+=K[i]
436*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x26,x26,ror#23
437*8fb009dcSAndroid Build Coastguard Worker	and	x17,x27,x26
438*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x20,x26
439*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x1			// h+=X[i]
440*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
441*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x22,x23			// a^b, b^c in next round
442*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x9,ror#18	// Sigma1(e)
443*8fb009dcSAndroid Build Coastguard Worker	ror	x9,x22,#28
444*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Ch(e,f,g)
445*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x22,x22,ror#5
446*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x16			// h+=Sigma1(e)
447*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
448*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x21			// d+=h
449*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x23			// Maj(a,b,c)
450*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x9,x17,ror#34	// Sigma0(a)
451*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x28			// h+=Maj(a,b,c)
452*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
453*8fb009dcSAndroid Build Coastguard Worker	//add	x21,x21,x17			// h+=Sigma0(a)
454*8fb009dcSAndroid Build Coastguard Worker#ifndef	__AARCH64EB__
455*8fb009dcSAndroid Build Coastguard Worker	rev	x2,x2			// 15
456*8fb009dcSAndroid Build Coastguard Worker#endif
457*8fb009dcSAndroid Build Coastguard Worker	ldr	x7,[sp,#0]
458*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Sigma0(a)
459*8fb009dcSAndroid Build Coastguard Worker	str	x10,[sp,#24]
460*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x25,#14
461*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x28			// h+=K[i]
462*8fb009dcSAndroid Build Coastguard Worker	ror	x9,x4,#1
463*8fb009dcSAndroid Build Coastguard Worker	and	x17,x26,x25
464*8fb009dcSAndroid Build Coastguard Worker	ror	x8,x1,#19
465*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x27,x25
466*8fb009dcSAndroid Build Coastguard Worker	ror	x10,x21,#28
467*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x2			// h+=X[i]
468*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x25,ror#18
469*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x4,ror#8
470*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
471*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x21,x22			// a^b, b^c in next round
472*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x25,ror#41	// Sigma1(e)
473*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x10,x21,ror#34
474*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Ch(e,f,g)
475*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
476*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x1,ror#61
477*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x4,lsr#7	// sigma0(X[i+1])
478*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x16			// h+=Sigma1(e)
479*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x22			// Maj(a,b,c)
480*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x10,x21,ror#39	// Sigma0(a)
481*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x1,lsr#6	// sigma1(X[i+14])
482*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,x12
483*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x20			// d+=h
484*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x19			// h+=Maj(a,b,c)
485*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
486*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,x9
487*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Sigma0(a)
488*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,x8
489*8fb009dcSAndroid Build Coastguard Worker.Loop_16_xx:
490*8fb009dcSAndroid Build Coastguard Worker	ldr	x8,[sp,#8]
491*8fb009dcSAndroid Build Coastguard Worker	str	x11,[sp,#0]
492*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x24,#14
493*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x19			// h+=K[i]
494*8fb009dcSAndroid Build Coastguard Worker	ror	x10,x5,#1
495*8fb009dcSAndroid Build Coastguard Worker	and	x17,x25,x24
496*8fb009dcSAndroid Build Coastguard Worker	ror	x9,x2,#19
497*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x26,x24
498*8fb009dcSAndroid Build Coastguard Worker	ror	x11,x20,#28
499*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x3			// h+=X[i]
500*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x24,ror#18
501*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x10,x5,ror#8
502*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
503*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x20,x21			// a^b, b^c in next round
504*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x24,ror#41	// Sigma1(e)
505*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x20,ror#34
506*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Ch(e,f,g)
507*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
508*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x2,ror#61
509*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x10,x5,lsr#7	// sigma0(X[i+1])
510*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x16			// h+=Sigma1(e)
511*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x21			// Maj(a,b,c)
512*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x11,x20,ror#39	// Sigma0(a)
513*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x2,lsr#6	// sigma1(X[i+14])
514*8fb009dcSAndroid Build Coastguard Worker	add	x4,x4,x13
515*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x27			// d+=h
516*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x28			// h+=Maj(a,b,c)
517*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
518*8fb009dcSAndroid Build Coastguard Worker	add	x4,x4,x10
519*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Sigma0(a)
520*8fb009dcSAndroid Build Coastguard Worker	add	x4,x4,x9
521*8fb009dcSAndroid Build Coastguard Worker	ldr	x9,[sp,#16]
522*8fb009dcSAndroid Build Coastguard Worker	str	x12,[sp,#8]
523*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x23,#14
524*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x28			// h+=K[i]
525*8fb009dcSAndroid Build Coastguard Worker	ror	x11,x6,#1
526*8fb009dcSAndroid Build Coastguard Worker	and	x17,x24,x23
527*8fb009dcSAndroid Build Coastguard Worker	ror	x10,x3,#19
528*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x25,x23
529*8fb009dcSAndroid Build Coastguard Worker	ror	x12,x27,#28
530*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x4			// h+=X[i]
531*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x23,ror#18
532*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x6,ror#8
533*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
534*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x27,x20			// a^b, b^c in next round
535*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x23,ror#41	// Sigma1(e)
536*8fb009dcSAndroid Build Coastguard Worker	eor	x12,x12,x27,ror#34
537*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Ch(e,f,g)
538*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
539*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x10,x3,ror#61
540*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x6,lsr#7	// sigma0(X[i+1])
541*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x16			// h+=Sigma1(e)
542*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x20			// Maj(a,b,c)
543*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x12,x27,ror#39	// Sigma0(a)
544*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x10,x3,lsr#6	// sigma1(X[i+14])
545*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x14
546*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x26			// d+=h
547*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x19			// h+=Maj(a,b,c)
548*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
549*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x11
550*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Sigma0(a)
551*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x10
552*8fb009dcSAndroid Build Coastguard Worker	ldr	x10,[sp,#24]
553*8fb009dcSAndroid Build Coastguard Worker	str	x13,[sp,#16]
554*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x22,#14
555*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x19			// h+=K[i]
556*8fb009dcSAndroid Build Coastguard Worker	ror	x12,x7,#1
557*8fb009dcSAndroid Build Coastguard Worker	and	x17,x23,x22
558*8fb009dcSAndroid Build Coastguard Worker	ror	x11,x4,#19
559*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x24,x22
560*8fb009dcSAndroid Build Coastguard Worker	ror	x13,x26,#28
561*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x5			// h+=X[i]
562*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x22,ror#18
563*8fb009dcSAndroid Build Coastguard Worker	eor	x12,x12,x7,ror#8
564*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
565*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x26,x27			// a^b, b^c in next round
566*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x22,ror#41	// Sigma1(e)
567*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x26,ror#34
568*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Ch(e,f,g)
569*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
570*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x4,ror#61
571*8fb009dcSAndroid Build Coastguard Worker	eor	x12,x12,x7,lsr#7	// sigma0(X[i+1])
572*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x16			// h+=Sigma1(e)
573*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x27			// Maj(a,b,c)
574*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x13,x26,ror#39	// Sigma0(a)
575*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x4,lsr#6	// sigma1(X[i+14])
576*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x15
577*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x25			// d+=h
578*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x28			// h+=Maj(a,b,c)
579*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
580*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x12
581*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Sigma0(a)
582*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x11
583*8fb009dcSAndroid Build Coastguard Worker	ldr	x11,[sp,#0]
584*8fb009dcSAndroid Build Coastguard Worker	str	x14,[sp,#24]
585*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x21,#14
586*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x28			// h+=K[i]
587*8fb009dcSAndroid Build Coastguard Worker	ror	x13,x8,#1
588*8fb009dcSAndroid Build Coastguard Worker	and	x17,x22,x21
589*8fb009dcSAndroid Build Coastguard Worker	ror	x12,x5,#19
590*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x23,x21
591*8fb009dcSAndroid Build Coastguard Worker	ror	x14,x25,#28
592*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x6			// h+=X[i]
593*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x21,ror#18
594*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x8,ror#8
595*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
596*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x25,x26			// a^b, b^c in next round
597*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x21,ror#41	// Sigma1(e)
598*8fb009dcSAndroid Build Coastguard Worker	eor	x14,x14,x25,ror#34
599*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Ch(e,f,g)
600*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
601*8fb009dcSAndroid Build Coastguard Worker	eor	x12,x12,x5,ror#61
602*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x8,lsr#7	// sigma0(X[i+1])
603*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x16			// h+=Sigma1(e)
604*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x26			// Maj(a,b,c)
605*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x14,x25,ror#39	// Sigma0(a)
606*8fb009dcSAndroid Build Coastguard Worker	eor	x12,x12,x5,lsr#6	// sigma1(X[i+14])
607*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x0
608*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x24			// d+=h
609*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x19			// h+=Maj(a,b,c)
610*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
611*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x13
612*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Sigma0(a)
613*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x12
614*8fb009dcSAndroid Build Coastguard Worker	ldr	x12,[sp,#8]
615*8fb009dcSAndroid Build Coastguard Worker	str	x15,[sp,#0]
616*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x20,#14
617*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x19			// h+=K[i]
618*8fb009dcSAndroid Build Coastguard Worker	ror	x14,x9,#1
619*8fb009dcSAndroid Build Coastguard Worker	and	x17,x21,x20
620*8fb009dcSAndroid Build Coastguard Worker	ror	x13,x6,#19
621*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x22,x20
622*8fb009dcSAndroid Build Coastguard Worker	ror	x15,x24,#28
623*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x7			// h+=X[i]
624*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x20,ror#18
625*8fb009dcSAndroid Build Coastguard Worker	eor	x14,x14,x9,ror#8
626*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
627*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x24,x25			// a^b, b^c in next round
628*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x20,ror#41	// Sigma1(e)
629*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x24,ror#34
630*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Ch(e,f,g)
631*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
632*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x6,ror#61
633*8fb009dcSAndroid Build Coastguard Worker	eor	x14,x14,x9,lsr#7	// sigma0(X[i+1])
634*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x16			// h+=Sigma1(e)
635*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x25			// Maj(a,b,c)
636*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x15,x24,ror#39	// Sigma0(a)
637*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x6,lsr#6	// sigma1(X[i+14])
638*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x1
639*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x23			// d+=h
640*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x28			// h+=Maj(a,b,c)
641*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
642*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x14
643*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Sigma0(a)
644*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x13
645*8fb009dcSAndroid Build Coastguard Worker	ldr	x13,[sp,#16]
646*8fb009dcSAndroid Build Coastguard Worker	str	x0,[sp,#8]
647*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x27,#14
648*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x28			// h+=K[i]
649*8fb009dcSAndroid Build Coastguard Worker	ror	x15,x10,#1
650*8fb009dcSAndroid Build Coastguard Worker	and	x17,x20,x27
651*8fb009dcSAndroid Build Coastguard Worker	ror	x14,x7,#19
652*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x21,x27
653*8fb009dcSAndroid Build Coastguard Worker	ror	x0,x23,#28
654*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x8			// h+=X[i]
655*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x27,ror#18
656*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x10,ror#8
657*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
658*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x23,x24			// a^b, b^c in next round
659*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x27,ror#41	// Sigma1(e)
660*8fb009dcSAndroid Build Coastguard Worker	eor	x0,x0,x23,ror#34
661*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Ch(e,f,g)
662*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
663*8fb009dcSAndroid Build Coastguard Worker	eor	x14,x14,x7,ror#61
664*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x10,lsr#7	// sigma0(X[i+1])
665*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x16			// h+=Sigma1(e)
666*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x24			// Maj(a,b,c)
667*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x0,x23,ror#39	// Sigma0(a)
668*8fb009dcSAndroid Build Coastguard Worker	eor	x14,x14,x7,lsr#6	// sigma1(X[i+14])
669*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x2
670*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x22			// d+=h
671*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x19			// h+=Maj(a,b,c)
672*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
673*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x15
674*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Sigma0(a)
675*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x14
676*8fb009dcSAndroid Build Coastguard Worker	ldr	x14,[sp,#24]
677*8fb009dcSAndroid Build Coastguard Worker	str	x1,[sp,#16]
678*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x26,#14
679*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x19			// h+=K[i]
680*8fb009dcSAndroid Build Coastguard Worker	ror	x0,x11,#1
681*8fb009dcSAndroid Build Coastguard Worker	and	x17,x27,x26
682*8fb009dcSAndroid Build Coastguard Worker	ror	x15,x8,#19
683*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x20,x26
684*8fb009dcSAndroid Build Coastguard Worker	ror	x1,x22,#28
685*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x9			// h+=X[i]
686*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x26,ror#18
687*8fb009dcSAndroid Build Coastguard Worker	eor	x0,x0,x11,ror#8
688*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
689*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x22,x23			// a^b, b^c in next round
690*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x26,ror#41	// Sigma1(e)
691*8fb009dcSAndroid Build Coastguard Worker	eor	x1,x1,x22,ror#34
692*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Ch(e,f,g)
693*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
694*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x8,ror#61
695*8fb009dcSAndroid Build Coastguard Worker	eor	x0,x0,x11,lsr#7	// sigma0(X[i+1])
696*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x16			// h+=Sigma1(e)
697*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x23			// Maj(a,b,c)
698*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x1,x22,ror#39	// Sigma0(a)
699*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x8,lsr#6	// sigma1(X[i+14])
700*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x3
701*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x21			// d+=h
702*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x28			// h+=Maj(a,b,c)
703*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
704*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x0
705*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Sigma0(a)
706*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x15
707*8fb009dcSAndroid Build Coastguard Worker	ldr	x15,[sp,#0]
708*8fb009dcSAndroid Build Coastguard Worker	str	x2,[sp,#24]
709*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x25,#14
710*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x28			// h+=K[i]
711*8fb009dcSAndroid Build Coastguard Worker	ror	x1,x12,#1
712*8fb009dcSAndroid Build Coastguard Worker	and	x17,x26,x25
713*8fb009dcSAndroid Build Coastguard Worker	ror	x0,x9,#19
714*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x27,x25
715*8fb009dcSAndroid Build Coastguard Worker	ror	x2,x21,#28
716*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x10			// h+=X[i]
717*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x25,ror#18
718*8fb009dcSAndroid Build Coastguard Worker	eor	x1,x1,x12,ror#8
719*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
720*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x21,x22			// a^b, b^c in next round
721*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x25,ror#41	// Sigma1(e)
722*8fb009dcSAndroid Build Coastguard Worker	eor	x2,x2,x21,ror#34
723*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Ch(e,f,g)
724*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
725*8fb009dcSAndroid Build Coastguard Worker	eor	x0,x0,x9,ror#61
726*8fb009dcSAndroid Build Coastguard Worker	eor	x1,x1,x12,lsr#7	// sigma0(X[i+1])
727*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x16			// h+=Sigma1(e)
728*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x22			// Maj(a,b,c)
729*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x2,x21,ror#39	// Sigma0(a)
730*8fb009dcSAndroid Build Coastguard Worker	eor	x0,x0,x9,lsr#6	// sigma1(X[i+14])
731*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x4
732*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x20			// d+=h
733*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x19			// h+=Maj(a,b,c)
734*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
735*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x1
736*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Sigma0(a)
737*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x0
738*8fb009dcSAndroid Build Coastguard Worker	ldr	x0,[sp,#8]
739*8fb009dcSAndroid Build Coastguard Worker	str	x3,[sp,#0]
740*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x24,#14
741*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x19			// h+=K[i]
742*8fb009dcSAndroid Build Coastguard Worker	ror	x2,x13,#1
743*8fb009dcSAndroid Build Coastguard Worker	and	x17,x25,x24
744*8fb009dcSAndroid Build Coastguard Worker	ror	x1,x10,#19
745*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x26,x24
746*8fb009dcSAndroid Build Coastguard Worker	ror	x3,x20,#28
747*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x11			// h+=X[i]
748*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x24,ror#18
749*8fb009dcSAndroid Build Coastguard Worker	eor	x2,x2,x13,ror#8
750*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
751*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x20,x21			// a^b, b^c in next round
752*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x24,ror#41	// Sigma1(e)
753*8fb009dcSAndroid Build Coastguard Worker	eor	x3,x3,x20,ror#34
754*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Ch(e,f,g)
755*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
756*8fb009dcSAndroid Build Coastguard Worker	eor	x1,x1,x10,ror#61
757*8fb009dcSAndroid Build Coastguard Worker	eor	x2,x2,x13,lsr#7	// sigma0(X[i+1])
758*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x16			// h+=Sigma1(e)
759*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x21			// Maj(a,b,c)
760*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x3,x20,ror#39	// Sigma0(a)
761*8fb009dcSAndroid Build Coastguard Worker	eor	x1,x1,x10,lsr#6	// sigma1(X[i+14])
762*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x5
763*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x27			// d+=h
764*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x28			// h+=Maj(a,b,c)
765*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
766*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x2
767*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x17			// h+=Sigma0(a)
768*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x1
769*8fb009dcSAndroid Build Coastguard Worker	ldr	x1,[sp,#16]
770*8fb009dcSAndroid Build Coastguard Worker	str	x4,[sp,#8]
771*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x23,#14
772*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x28			// h+=K[i]
773*8fb009dcSAndroid Build Coastguard Worker	ror	x3,x14,#1
774*8fb009dcSAndroid Build Coastguard Worker	and	x17,x24,x23
775*8fb009dcSAndroid Build Coastguard Worker	ror	x2,x11,#19
776*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x25,x23
777*8fb009dcSAndroid Build Coastguard Worker	ror	x4,x27,#28
778*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x12			// h+=X[i]
779*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x23,ror#18
780*8fb009dcSAndroid Build Coastguard Worker	eor	x3,x3,x14,ror#8
781*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
782*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x27,x20			// a^b, b^c in next round
783*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x23,ror#41	// Sigma1(e)
784*8fb009dcSAndroid Build Coastguard Worker	eor	x4,x4,x27,ror#34
785*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Ch(e,f,g)
786*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
787*8fb009dcSAndroid Build Coastguard Worker	eor	x2,x2,x11,ror#61
788*8fb009dcSAndroid Build Coastguard Worker	eor	x3,x3,x14,lsr#7	// sigma0(X[i+1])
789*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x16			// h+=Sigma1(e)
790*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x20			// Maj(a,b,c)
791*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x4,x27,ror#39	// Sigma0(a)
792*8fb009dcSAndroid Build Coastguard Worker	eor	x2,x2,x11,lsr#6	// sigma1(X[i+14])
793*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x6
794*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x26			// d+=h
795*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x19			// h+=Maj(a,b,c)
796*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
797*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x3
798*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x17			// h+=Sigma0(a)
799*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x2
800*8fb009dcSAndroid Build Coastguard Worker	ldr	x2,[sp,#24]
801*8fb009dcSAndroid Build Coastguard Worker	str	x5,[sp,#16]
802*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x22,#14
803*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x19			// h+=K[i]
804*8fb009dcSAndroid Build Coastguard Worker	ror	x4,x15,#1
805*8fb009dcSAndroid Build Coastguard Worker	and	x17,x23,x22
806*8fb009dcSAndroid Build Coastguard Worker	ror	x3,x12,#19
807*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x24,x22
808*8fb009dcSAndroid Build Coastguard Worker	ror	x5,x26,#28
809*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x13			// h+=X[i]
810*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x22,ror#18
811*8fb009dcSAndroid Build Coastguard Worker	eor	x4,x4,x15,ror#8
812*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
813*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x26,x27			// a^b, b^c in next round
814*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x22,ror#41	// Sigma1(e)
815*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x26,ror#34
816*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Ch(e,f,g)
817*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
818*8fb009dcSAndroid Build Coastguard Worker	eor	x3,x3,x12,ror#61
819*8fb009dcSAndroid Build Coastguard Worker	eor	x4,x4,x15,lsr#7	// sigma0(X[i+1])
820*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x16			// h+=Sigma1(e)
821*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x27			// Maj(a,b,c)
822*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x5,x26,ror#39	// Sigma0(a)
823*8fb009dcSAndroid Build Coastguard Worker	eor	x3,x3,x12,lsr#6	// sigma1(X[i+14])
824*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x7
825*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x25			// d+=h
826*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x28			// h+=Maj(a,b,c)
827*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
828*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x4
829*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x17			// h+=Sigma0(a)
830*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x3
831*8fb009dcSAndroid Build Coastguard Worker	ldr	x3,[sp,#0]
832*8fb009dcSAndroid Build Coastguard Worker	str	x6,[sp,#24]
833*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x21,#14
834*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x28			// h+=K[i]
835*8fb009dcSAndroid Build Coastguard Worker	ror	x5,x0,#1
836*8fb009dcSAndroid Build Coastguard Worker	and	x17,x22,x21
837*8fb009dcSAndroid Build Coastguard Worker	ror	x4,x13,#19
838*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x23,x21
839*8fb009dcSAndroid Build Coastguard Worker	ror	x6,x25,#28
840*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x14			// h+=X[i]
841*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x21,ror#18
842*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x0,ror#8
843*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
844*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x25,x26			// a^b, b^c in next round
845*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x21,ror#41	// Sigma1(e)
846*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x6,x25,ror#34
847*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Ch(e,f,g)
848*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
849*8fb009dcSAndroid Build Coastguard Worker	eor	x4,x4,x13,ror#61
850*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x0,lsr#7	// sigma0(X[i+1])
851*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x16			// h+=Sigma1(e)
852*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x26			// Maj(a,b,c)
853*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x6,x25,ror#39	// Sigma0(a)
854*8fb009dcSAndroid Build Coastguard Worker	eor	x4,x4,x13,lsr#6	// sigma1(X[i+14])
855*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x8
856*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x24			// d+=h
857*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x19			// h+=Maj(a,b,c)
858*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
859*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x5
860*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x17			// h+=Sigma0(a)
861*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x4
862*8fb009dcSAndroid Build Coastguard Worker	ldr	x4,[sp,#8]
863*8fb009dcSAndroid Build Coastguard Worker	str	x7,[sp,#0]
864*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x20,#14
865*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x19			// h+=K[i]
866*8fb009dcSAndroid Build Coastguard Worker	ror	x6,x1,#1
867*8fb009dcSAndroid Build Coastguard Worker	and	x17,x21,x20
868*8fb009dcSAndroid Build Coastguard Worker	ror	x5,x14,#19
869*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x22,x20
870*8fb009dcSAndroid Build Coastguard Worker	ror	x7,x24,#28
871*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x15			// h+=X[i]
872*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x20,ror#18
873*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x6,x1,ror#8
874*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
875*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x24,x25			// a^b, b^c in next round
876*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x20,ror#41	// Sigma1(e)
877*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x24,ror#34
878*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Ch(e,f,g)
879*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
880*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x14,ror#61
881*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x6,x1,lsr#7	// sigma0(X[i+1])
882*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x16			// h+=Sigma1(e)
883*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x25			// Maj(a,b,c)
884*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x7,x24,ror#39	// Sigma0(a)
885*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x14,lsr#6	// sigma1(X[i+14])
886*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,x9
887*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x23			// d+=h
888*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x28			// h+=Maj(a,b,c)
889*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
890*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,x6
891*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x17			// h+=Sigma0(a)
892*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,x5
893*8fb009dcSAndroid Build Coastguard Worker	ldr	x5,[sp,#16]
894*8fb009dcSAndroid Build Coastguard Worker	str	x8,[sp,#8]
895*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x27,#14
896*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x28			// h+=K[i]
897*8fb009dcSAndroid Build Coastguard Worker	ror	x7,x2,#1
898*8fb009dcSAndroid Build Coastguard Worker	and	x17,x20,x27
899*8fb009dcSAndroid Build Coastguard Worker	ror	x6,x15,#19
900*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x21,x27
901*8fb009dcSAndroid Build Coastguard Worker	ror	x8,x23,#28
902*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x0			// h+=X[i]
903*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x27,ror#18
904*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x2,ror#8
905*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
906*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x23,x24			// a^b, b^c in next round
907*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x27,ror#41	// Sigma1(e)
908*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x23,ror#34
909*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Ch(e,f,g)
910*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
911*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x6,x15,ror#61
912*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x2,lsr#7	// sigma0(X[i+1])
913*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x16			// h+=Sigma1(e)
914*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x24			// Maj(a,b,c)
915*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x8,x23,ror#39	// Sigma0(a)
916*8fb009dcSAndroid Build Coastguard Worker	eor	x6,x6,x15,lsr#6	// sigma1(X[i+14])
917*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,x10
918*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x22			// d+=h
919*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x19			// h+=Maj(a,b,c)
920*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
921*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,x7
922*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x17			// h+=Sigma0(a)
923*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,x6
924*8fb009dcSAndroid Build Coastguard Worker	ldr	x6,[sp,#24]
925*8fb009dcSAndroid Build Coastguard Worker	str	x9,[sp,#16]
926*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x26,#14
927*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x19			// h+=K[i]
928*8fb009dcSAndroid Build Coastguard Worker	ror	x8,x3,#1
929*8fb009dcSAndroid Build Coastguard Worker	and	x17,x27,x26
930*8fb009dcSAndroid Build Coastguard Worker	ror	x7,x0,#19
931*8fb009dcSAndroid Build Coastguard Worker	bic	x19,x20,x26
932*8fb009dcSAndroid Build Coastguard Worker	ror	x9,x22,#28
933*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x1			// h+=X[i]
934*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x26,ror#18
935*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x3,ror#8
936*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x19			// Ch(e,f,g)
937*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x22,x23			// a^b, b^c in next round
938*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x26,ror#41	// Sigma1(e)
939*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x22,ror#34
940*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Ch(e,f,g)
941*8fb009dcSAndroid Build Coastguard Worker	and	x28,x28,x19			// (b^c)&=(a^b)
942*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x0,ror#61
943*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x3,lsr#7	// sigma0(X[i+1])
944*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x16			// h+=Sigma1(e)
945*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x28,x23			// Maj(a,b,c)
946*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x9,x22,ror#39	// Sigma0(a)
947*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x0,lsr#6	// sigma1(X[i+14])
948*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,x11
949*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x21			// d+=h
950*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x28			// h+=Maj(a,b,c)
951*8fb009dcSAndroid Build Coastguard Worker	ldr	x28,[x30],#8		// *K++, x19 in next round
952*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,x8
953*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x17			// h+=Sigma0(a)
954*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,x7
955*8fb009dcSAndroid Build Coastguard Worker	ldr	x7,[sp,#0]
956*8fb009dcSAndroid Build Coastguard Worker	str	x10,[sp,#24]
957*8fb009dcSAndroid Build Coastguard Worker	ror	x16,x25,#14
958*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x28			// h+=K[i]
959*8fb009dcSAndroid Build Coastguard Worker	ror	x9,x4,#1
960*8fb009dcSAndroid Build Coastguard Worker	and	x17,x26,x25
961*8fb009dcSAndroid Build Coastguard Worker	ror	x8,x1,#19
962*8fb009dcSAndroid Build Coastguard Worker	bic	x28,x27,x25
963*8fb009dcSAndroid Build Coastguard Worker	ror	x10,x21,#28
964*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x2			// h+=X[i]
965*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x25,ror#18
966*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x4,ror#8
967*8fb009dcSAndroid Build Coastguard Worker	orr	x17,x17,x28			// Ch(e,f,g)
968*8fb009dcSAndroid Build Coastguard Worker	eor	x28,x21,x22			// a^b, b^c in next round
969*8fb009dcSAndroid Build Coastguard Worker	eor	x16,x16,x25,ror#41	// Sigma1(e)
970*8fb009dcSAndroid Build Coastguard Worker	eor	x10,x10,x21,ror#34
971*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Ch(e,f,g)
972*8fb009dcSAndroid Build Coastguard Worker	and	x19,x19,x28			// (b^c)&=(a^b)
973*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x1,ror#61
974*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x4,lsr#7	// sigma0(X[i+1])
975*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x16			// h+=Sigma1(e)
976*8fb009dcSAndroid Build Coastguard Worker	eor	x19,x19,x22			// Maj(a,b,c)
977*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x10,x21,ror#39	// Sigma0(a)
978*8fb009dcSAndroid Build Coastguard Worker	eor	x8,x8,x1,lsr#6	// sigma1(X[i+14])
979*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,x12
980*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x20			// d+=h
981*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x19			// h+=Maj(a,b,c)
982*8fb009dcSAndroid Build Coastguard Worker	ldr	x19,[x30],#8		// *K++, x28 in next round
983*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,x9
984*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x17			// h+=Sigma0(a)
985*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,x8
986*8fb009dcSAndroid Build Coastguard Worker	cbnz	x19,.Loop_16_xx
987*8fb009dcSAndroid Build Coastguard Worker
988*8fb009dcSAndroid Build Coastguard Worker	ldp	x0,x2,[x29,#96]
989*8fb009dcSAndroid Build Coastguard Worker	ldr	x1,[x29,#112]
990*8fb009dcSAndroid Build Coastguard Worker	sub	x30,x30,#648		// rewind
991*8fb009dcSAndroid Build Coastguard Worker
992*8fb009dcSAndroid Build Coastguard Worker	ldp	x3,x4,[x0]
993*8fb009dcSAndroid Build Coastguard Worker	ldp	x5,x6,[x0,#2*8]
994*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,#14*8			// advance input pointer
995*8fb009dcSAndroid Build Coastguard Worker	ldp	x7,x8,[x0,#4*8]
996*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x3
997*8fb009dcSAndroid Build Coastguard Worker	ldp	x9,x10,[x0,#6*8]
998*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x4
999*8fb009dcSAndroid Build Coastguard Worker	add	x22,x22,x5
1000*8fb009dcSAndroid Build Coastguard Worker	add	x23,x23,x6
1001*8fb009dcSAndroid Build Coastguard Worker	stp	x20,x21,[x0]
1002*8fb009dcSAndroid Build Coastguard Worker	add	x24,x24,x7
1003*8fb009dcSAndroid Build Coastguard Worker	add	x25,x25,x8
1004*8fb009dcSAndroid Build Coastguard Worker	stp	x22,x23,[x0,#2*8]
1005*8fb009dcSAndroid Build Coastguard Worker	add	x26,x26,x9
1006*8fb009dcSAndroid Build Coastguard Worker	add	x27,x27,x10
1007*8fb009dcSAndroid Build Coastguard Worker	cmp	x1,x2
1008*8fb009dcSAndroid Build Coastguard Worker	stp	x24,x25,[x0,#4*8]
1009*8fb009dcSAndroid Build Coastguard Worker	stp	x26,x27,[x0,#6*8]
1010*8fb009dcSAndroid Build Coastguard Worker	b.ne	.Loop
1011*8fb009dcSAndroid Build Coastguard Worker
1012*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x20,[x29,#16]
1013*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#4*8
1014*8fb009dcSAndroid Build Coastguard Worker	ldp	x21,x22,[x29,#32]
1015*8fb009dcSAndroid Build Coastguard Worker	ldp	x23,x24,[x29,#48]
1016*8fb009dcSAndroid Build Coastguard Worker	ldp	x25,x26,[x29,#64]
1017*8fb009dcSAndroid Build Coastguard Worker	ldp	x27,x28,[x29,#80]
1018*8fb009dcSAndroid Build Coastguard Worker	ldp	x29,x30,[sp],#128
1019*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALIDATE_LINK_REGISTER
1020*8fb009dcSAndroid Build Coastguard Worker	ret
1021*8fb009dcSAndroid Build Coastguard Worker.size	sha512_block_data_order_nohw,.-sha512_block_data_order_nohw
1022*8fb009dcSAndroid Build Coastguard Worker
1023*8fb009dcSAndroid Build Coastguard Worker.section	.rodata
1024*8fb009dcSAndroid Build Coastguard Worker.align	6
1025*8fb009dcSAndroid Build Coastguard Worker.type	.LK512,%object
1026*8fb009dcSAndroid Build Coastguard Worker.LK512:
1027*8fb009dcSAndroid Build Coastguard Worker.quad	0x428a2f98d728ae22,0x7137449123ef65cd
1028*8fb009dcSAndroid Build Coastguard Worker.quad	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1029*8fb009dcSAndroid Build Coastguard Worker.quad	0x3956c25bf348b538,0x59f111f1b605d019
1030*8fb009dcSAndroid Build Coastguard Worker.quad	0x923f82a4af194f9b,0xab1c5ed5da6d8118
1031*8fb009dcSAndroid Build Coastguard Worker.quad	0xd807aa98a3030242,0x12835b0145706fbe
1032*8fb009dcSAndroid Build Coastguard Worker.quad	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1033*8fb009dcSAndroid Build Coastguard Worker.quad	0x72be5d74f27b896f,0x80deb1fe3b1696b1
1034*8fb009dcSAndroid Build Coastguard Worker.quad	0x9bdc06a725c71235,0xc19bf174cf692694
1035*8fb009dcSAndroid Build Coastguard Worker.quad	0xe49b69c19ef14ad2,0xefbe4786384f25e3
1036*8fb009dcSAndroid Build Coastguard Worker.quad	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1037*8fb009dcSAndroid Build Coastguard Worker.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
1038*8fb009dcSAndroid Build Coastguard Worker.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1039*8fb009dcSAndroid Build Coastguard Worker.quad	0x983e5152ee66dfab,0xa831c66d2db43210
1040*8fb009dcSAndroid Build Coastguard Worker.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
1041*8fb009dcSAndroid Build Coastguard Worker.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
1042*8fb009dcSAndroid Build Coastguard Worker.quad	0x06ca6351e003826f,0x142929670a0e6e70
1043*8fb009dcSAndroid Build Coastguard Worker.quad	0x27b70a8546d22ffc,0x2e1b21385c26c926
1044*8fb009dcSAndroid Build Coastguard Worker.quad	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1045*8fb009dcSAndroid Build Coastguard Worker.quad	0x650a73548baf63de,0x766a0abb3c77b2a8
1046*8fb009dcSAndroid Build Coastguard Worker.quad	0x81c2c92e47edaee6,0x92722c851482353b
1047*8fb009dcSAndroid Build Coastguard Worker.quad	0xa2bfe8a14cf10364,0xa81a664bbc423001
1048*8fb009dcSAndroid Build Coastguard Worker.quad	0xc24b8b70d0f89791,0xc76c51a30654be30
1049*8fb009dcSAndroid Build Coastguard Worker.quad	0xd192e819d6ef5218,0xd69906245565a910
1050*8fb009dcSAndroid Build Coastguard Worker.quad	0xf40e35855771202a,0x106aa07032bbd1b8
1051*8fb009dcSAndroid Build Coastguard Worker.quad	0x19a4c116b8d2d0c8,0x1e376c085141ab53
1052*8fb009dcSAndroid Build Coastguard Worker.quad	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1053*8fb009dcSAndroid Build Coastguard Worker.quad	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1054*8fb009dcSAndroid Build Coastguard Worker.quad	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1055*8fb009dcSAndroid Build Coastguard Worker.quad	0x748f82ee5defb2fc,0x78a5636f43172f60
1056*8fb009dcSAndroid Build Coastguard Worker.quad	0x84c87814a1f0ab72,0x8cc702081a6439ec
1057*8fb009dcSAndroid Build Coastguard Worker.quad	0x90befffa23631e28,0xa4506cebde82bde9
1058*8fb009dcSAndroid Build Coastguard Worker.quad	0xbef9a3f7b2c67915,0xc67178f2e372532b
1059*8fb009dcSAndroid Build Coastguard Worker.quad	0xca273eceea26619c,0xd186b8c721c0c207
1060*8fb009dcSAndroid Build Coastguard Worker.quad	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1061*8fb009dcSAndroid Build Coastguard Worker.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
1062*8fb009dcSAndroid Build Coastguard Worker.quad	0x113f9804bef90dae,0x1b710b35131c471b
1063*8fb009dcSAndroid Build Coastguard Worker.quad	0x28db77f523047d84,0x32caab7b40c72493
1064*8fb009dcSAndroid Build Coastguard Worker.quad	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1065*8fb009dcSAndroid Build Coastguard Worker.quad	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1066*8fb009dcSAndroid Build Coastguard Worker.quad	0x5fcb6fab3ad6faec,0x6c44198c4a475817
1067*8fb009dcSAndroid Build Coastguard Worker.quad	0	// terminator
1068*8fb009dcSAndroid Build Coastguard Worker.size	.LK512,.-.LK512
1069*8fb009dcSAndroid Build Coastguard Worker.byte	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1070*8fb009dcSAndroid Build Coastguard Worker.align	2
1071*8fb009dcSAndroid Build Coastguard Worker.align	2
1072*8fb009dcSAndroid Build Coastguard Worker.text
1073*8fb009dcSAndroid Build Coastguard Worker#ifndef	__KERNEL__
1074*8fb009dcSAndroid Build Coastguard Worker.globl	sha512_block_data_order_hw
1075*8fb009dcSAndroid Build Coastguard Worker.hidden	sha512_block_data_order_hw
1076*8fb009dcSAndroid Build Coastguard Worker.type	sha512_block_data_order_hw,%function
1077*8fb009dcSAndroid Build Coastguard Worker.align	6
1078*8fb009dcSAndroid Build Coastguard Workersha512_block_data_order_hw:
1079*8fb009dcSAndroid Build Coastguard Worker	// Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later.
1080*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALID_CALL_TARGET
1081*8fb009dcSAndroid Build Coastguard Worker	stp	x29,x30,[sp,#-16]!
1082*8fb009dcSAndroid Build Coastguard Worker	add	x29,sp,#0
1083*8fb009dcSAndroid Build Coastguard Worker
1084*8fb009dcSAndroid Build Coastguard Worker	ld1	{v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64	// load input
1085*8fb009dcSAndroid Build Coastguard Worker	ld1	{v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64
1086*8fb009dcSAndroid Build Coastguard Worker
1087*8fb009dcSAndroid Build Coastguard Worker	ld1	{v0.2d,v1.2d,v2.2d,v3.2d},[x0]		// load context
1088*8fb009dcSAndroid Build Coastguard Worker	adrp	x3,.LK512
1089*8fb009dcSAndroid Build Coastguard Worker	add	x3,x3,:lo12:.LK512
1090*8fb009dcSAndroid Build Coastguard Worker
1091*8fb009dcSAndroid Build Coastguard Worker	rev64	v16.16b,v16.16b
1092*8fb009dcSAndroid Build Coastguard Worker	rev64	v17.16b,v17.16b
1093*8fb009dcSAndroid Build Coastguard Worker	rev64	v18.16b,v18.16b
1094*8fb009dcSAndroid Build Coastguard Worker	rev64	v19.16b,v19.16b
1095*8fb009dcSAndroid Build Coastguard Worker	rev64	v20.16b,v20.16b
1096*8fb009dcSAndroid Build Coastguard Worker	rev64	v21.16b,v21.16b
1097*8fb009dcSAndroid Build Coastguard Worker	rev64	v22.16b,v22.16b
1098*8fb009dcSAndroid Build Coastguard Worker	rev64	v23.16b,v23.16b
1099*8fb009dcSAndroid Build Coastguard Worker	b	.Loop_hw
1100*8fb009dcSAndroid Build Coastguard Worker
1101*8fb009dcSAndroid Build Coastguard Worker.align	4
1102*8fb009dcSAndroid Build Coastguard Worker.Loop_hw:
1103*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1104*8fb009dcSAndroid Build Coastguard Worker	subs	x2,x2,#1
1105*8fb009dcSAndroid Build Coastguard Worker	sub	x4,x1,#128
1106*8fb009dcSAndroid Build Coastguard Worker	orr	v26.16b,v0.16b,v0.16b			// offload
1107*8fb009dcSAndroid Build Coastguard Worker	orr	v27.16b,v1.16b,v1.16b
1108*8fb009dcSAndroid Build Coastguard Worker	orr	v28.16b,v2.16b,v2.16b
1109*8fb009dcSAndroid Build Coastguard Worker	orr	v29.16b,v3.16b,v3.16b
1110*8fb009dcSAndroid Build Coastguard Worker	csel	x1,x1,x4,ne			// conditional rewind
1111*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v16.2d
1112*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1113*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1114*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1115*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1116*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v24.2d			// "T1 + H + K512[i]"
1117*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08230	//sha512su0 v16.16b,v17.16b
1118*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v20.16b,v21.16b,#8
1119*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1120*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678af0	//sha512su1 v16.16b,v23.16b,v7.16b
1121*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1122*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1123*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v17.2d
1124*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1125*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1126*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1127*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1128*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v25.2d			// "T1 + H + K512[i]"
1129*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08251	//sha512su0 v17.16b,v18.16b
1130*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v21.16b,v22.16b,#8
1131*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1132*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a11	//sha512su1 v17.16b,v16.16b,v7.16b
1133*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1134*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1135*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v18.2d
1136*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1137*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1138*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1139*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1140*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v24.2d			// "T1 + H + K512[i]"
1141*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08272	//sha512su0 v18.16b,v19.16b
1142*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v22.16b,v23.16b,#8
1143*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1144*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a32	//sha512su1 v18.16b,v17.16b,v7.16b
1145*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1146*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1147*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v19.2d
1148*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1149*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1150*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1151*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1152*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v25.2d			// "T1 + H + K512[i]"
1153*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08293	//sha512su0 v19.16b,v20.16b
1154*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v23.16b,v16.16b,#8
1155*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1156*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a53	//sha512su1 v19.16b,v18.16b,v7.16b
1157*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1158*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1159*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v20.2d
1160*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1161*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1162*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1163*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1164*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v24.2d			// "T1 + H + K512[i]"
1165*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082b4	//sha512su0 v20.16b,v21.16b
1166*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v16.16b,v17.16b,#8
1167*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1168*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a74	//sha512su1 v20.16b,v19.16b,v7.16b
1169*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1170*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1171*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v21.2d
1172*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1173*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1174*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1175*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1176*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v25.2d			// "T1 + H + K512[i]"
1177*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082d5	//sha512su0 v21.16b,v22.16b
1178*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v17.16b,v18.16b,#8
1179*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1180*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a95	//sha512su1 v21.16b,v20.16b,v7.16b
1181*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1182*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1183*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v22.2d
1184*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1185*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1186*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1187*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1188*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v24.2d			// "T1 + H + K512[i]"
1189*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082f6	//sha512su0 v22.16b,v23.16b
1190*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v18.16b,v19.16b,#8
1191*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1192*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ab6	//sha512su1 v22.16b,v21.16b,v7.16b
1193*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1194*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1195*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v23.2d
1196*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1197*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1198*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1199*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1200*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v25.2d			// "T1 + H + K512[i]"
1201*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08217	//sha512su0 v23.16b,v16.16b
1202*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v19.16b,v20.16b,#8
1203*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1204*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ad7	//sha512su1 v23.16b,v22.16b,v7.16b
1205*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1206*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1207*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v16.2d
1208*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1209*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1210*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1211*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1212*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v24.2d			// "T1 + H + K512[i]"
1213*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08230	//sha512su0 v16.16b,v17.16b
1214*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v20.16b,v21.16b,#8
1215*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1216*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678af0	//sha512su1 v16.16b,v23.16b,v7.16b
1217*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1218*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1219*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v17.2d
1220*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1221*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1222*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1223*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1224*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v25.2d			// "T1 + H + K512[i]"
1225*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08251	//sha512su0 v17.16b,v18.16b
1226*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v21.16b,v22.16b,#8
1227*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1228*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a11	//sha512su1 v17.16b,v16.16b,v7.16b
1229*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1230*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1231*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v18.2d
1232*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1233*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1234*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1235*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1236*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v24.2d			// "T1 + H + K512[i]"
1237*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08272	//sha512su0 v18.16b,v19.16b
1238*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v22.16b,v23.16b,#8
1239*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1240*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a32	//sha512su1 v18.16b,v17.16b,v7.16b
1241*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1242*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1243*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v19.2d
1244*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1245*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1246*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1247*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1248*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v25.2d			// "T1 + H + K512[i]"
1249*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08293	//sha512su0 v19.16b,v20.16b
1250*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v23.16b,v16.16b,#8
1251*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1252*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a53	//sha512su1 v19.16b,v18.16b,v7.16b
1253*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1254*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1255*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v20.2d
1256*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1257*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1258*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1259*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1260*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v24.2d			// "T1 + H + K512[i]"
1261*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082b4	//sha512su0 v20.16b,v21.16b
1262*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v16.16b,v17.16b,#8
1263*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1264*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a74	//sha512su1 v20.16b,v19.16b,v7.16b
1265*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1266*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1267*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v21.2d
1268*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1269*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1270*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1271*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1272*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v25.2d			// "T1 + H + K512[i]"
1273*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082d5	//sha512su0 v21.16b,v22.16b
1274*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v17.16b,v18.16b,#8
1275*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1276*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a95	//sha512su1 v21.16b,v20.16b,v7.16b
1277*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1278*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1279*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v22.2d
1280*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1281*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1282*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1283*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1284*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v24.2d			// "T1 + H + K512[i]"
1285*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082f6	//sha512su0 v22.16b,v23.16b
1286*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v18.16b,v19.16b,#8
1287*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1288*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ab6	//sha512su1 v22.16b,v21.16b,v7.16b
1289*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1290*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1291*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v23.2d
1292*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1293*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1294*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1295*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1296*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v25.2d			// "T1 + H + K512[i]"
1297*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08217	//sha512su0 v23.16b,v16.16b
1298*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v19.16b,v20.16b,#8
1299*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1300*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ad7	//sha512su1 v23.16b,v22.16b,v7.16b
1301*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1302*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1303*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v16.2d
1304*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1305*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1306*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1307*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1308*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v24.2d			// "T1 + H + K512[i]"
1309*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08230	//sha512su0 v16.16b,v17.16b
1310*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v20.16b,v21.16b,#8
1311*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1312*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678af0	//sha512su1 v16.16b,v23.16b,v7.16b
1313*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1314*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1315*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v17.2d
1316*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1317*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1318*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1319*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1320*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v25.2d			// "T1 + H + K512[i]"
1321*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08251	//sha512su0 v17.16b,v18.16b
1322*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v21.16b,v22.16b,#8
1323*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1324*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a11	//sha512su1 v17.16b,v16.16b,v7.16b
1325*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1326*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1327*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v18.2d
1328*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1329*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1330*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1331*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1332*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v24.2d			// "T1 + H + K512[i]"
1333*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08272	//sha512su0 v18.16b,v19.16b
1334*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v22.16b,v23.16b,#8
1335*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1336*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a32	//sha512su1 v18.16b,v17.16b,v7.16b
1337*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1338*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1339*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v19.2d
1340*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1341*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1342*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1343*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1344*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v25.2d			// "T1 + H + K512[i]"
1345*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08293	//sha512su0 v19.16b,v20.16b
1346*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v23.16b,v16.16b,#8
1347*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1348*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a53	//sha512su1 v19.16b,v18.16b,v7.16b
1349*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1350*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1351*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v20.2d
1352*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1353*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1354*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1355*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1356*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v24.2d			// "T1 + H + K512[i]"
1357*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082b4	//sha512su0 v20.16b,v21.16b
1358*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v16.16b,v17.16b,#8
1359*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1360*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a74	//sha512su1 v20.16b,v19.16b,v7.16b
1361*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1362*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1363*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v21.2d
1364*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1365*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1366*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1367*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1368*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v25.2d			// "T1 + H + K512[i]"
1369*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082d5	//sha512su0 v21.16b,v22.16b
1370*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v17.16b,v18.16b,#8
1371*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1372*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a95	//sha512su1 v21.16b,v20.16b,v7.16b
1373*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1374*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1375*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v22.2d
1376*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1377*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1378*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1379*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1380*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v24.2d			// "T1 + H + K512[i]"
1381*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082f6	//sha512su0 v22.16b,v23.16b
1382*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v18.16b,v19.16b,#8
1383*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1384*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ab6	//sha512su1 v22.16b,v21.16b,v7.16b
1385*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1386*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1387*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v23.2d
1388*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1389*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1390*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1391*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1392*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v25.2d			// "T1 + H + K512[i]"
1393*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08217	//sha512su0 v23.16b,v16.16b
1394*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v19.16b,v20.16b,#8
1395*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1396*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ad7	//sha512su1 v23.16b,v22.16b,v7.16b
1397*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1398*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1399*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v16.2d
1400*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1401*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1402*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1403*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1404*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v24.2d			// "T1 + H + K512[i]"
1405*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08230	//sha512su0 v16.16b,v17.16b
1406*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v20.16b,v21.16b,#8
1407*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1408*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678af0	//sha512su1 v16.16b,v23.16b,v7.16b
1409*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1410*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1411*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v17.2d
1412*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1413*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1414*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1415*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1416*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v25.2d			// "T1 + H + K512[i]"
1417*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08251	//sha512su0 v17.16b,v18.16b
1418*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v21.16b,v22.16b,#8
1419*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1420*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a11	//sha512su1 v17.16b,v16.16b,v7.16b
1421*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1422*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1423*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v18.2d
1424*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1425*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1426*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1427*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1428*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v24.2d			// "T1 + H + K512[i]"
1429*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08272	//sha512su0 v18.16b,v19.16b
1430*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v22.16b,v23.16b,#8
1431*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1432*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a32	//sha512su1 v18.16b,v17.16b,v7.16b
1433*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1434*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1435*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v19.2d
1436*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1437*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1438*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1439*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1440*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v25.2d			// "T1 + H + K512[i]"
1441*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08293	//sha512su0 v19.16b,v20.16b
1442*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v23.16b,v16.16b,#8
1443*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1444*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a53	//sha512su1 v19.16b,v18.16b,v7.16b
1445*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1446*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1447*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v20.2d
1448*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1449*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1450*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1451*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1452*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v24.2d			// "T1 + H + K512[i]"
1453*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082b4	//sha512su0 v20.16b,v21.16b
1454*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v16.16b,v17.16b,#8
1455*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1456*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a74	//sha512su1 v20.16b,v19.16b,v7.16b
1457*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1458*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1459*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v21.2d
1460*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1461*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1462*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1463*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1464*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v25.2d			// "T1 + H + K512[i]"
1465*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082d5	//sha512su0 v21.16b,v22.16b
1466*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v17.16b,v18.16b,#8
1467*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1468*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678a95	//sha512su1 v21.16b,v20.16b,v7.16b
1469*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1470*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1471*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v22.2d
1472*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1473*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1474*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1475*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1476*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v24.2d			// "T1 + H + K512[i]"
1477*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec082f6	//sha512su0 v22.16b,v23.16b
1478*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v18.16b,v19.16b,#8
1479*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1480*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ab6	//sha512su1 v22.16b,v21.16b,v7.16b
1481*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1482*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1483*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v23.2d
1484*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1485*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1486*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1487*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1488*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v25.2d			// "T1 + H + K512[i]"
1489*8fb009dcSAndroid Build Coastguard Worker.inst	0xcec08217	//sha512su0 v23.16b,v16.16b
1490*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v19.16b,v20.16b,#8
1491*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1492*8fb009dcSAndroid Build Coastguard Worker.inst	0xce678ad7	//sha512su1 v23.16b,v22.16b,v7.16b
1493*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1494*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1495*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1496*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v16.2d
1497*8fb009dcSAndroid Build Coastguard Worker	ld1	{v16.16b},[x1],#16		// load next input
1498*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1499*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1500*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1501*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v24.2d			// "T1 + H + K512[i]"
1502*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1503*8fb009dcSAndroid Build Coastguard Worker	rev64	v16.16b,v16.16b
1504*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1505*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1506*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1507*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v17.2d
1508*8fb009dcSAndroid Build Coastguard Worker	ld1	{v17.16b},[x1],#16		// load next input
1509*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1510*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1511*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1512*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v25.2d			// "T1 + H + K512[i]"
1513*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1514*8fb009dcSAndroid Build Coastguard Worker	rev64	v17.16b,v17.16b
1515*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1516*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1517*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1518*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v18.2d
1519*8fb009dcSAndroid Build Coastguard Worker	ld1	{v18.16b},[x1],#16		// load next input
1520*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1521*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1522*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1523*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v24.2d			// "T1 + H + K512[i]"
1524*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1525*8fb009dcSAndroid Build Coastguard Worker	rev64	v18.16b,v18.16b
1526*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1527*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1528*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1529*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v19.2d
1530*8fb009dcSAndroid Build Coastguard Worker	ld1	{v19.16b},[x1],#16		// load next input
1531*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1532*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v2.16b,v3.16b,#8
1533*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v1.16b,v2.16b,#8
1534*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v25.2d			// "T1 + H + K512[i]"
1535*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a3	//sha512h v3.16b,v5.16b,v6.16b
1536*8fb009dcSAndroid Build Coastguard Worker	rev64	v19.16b,v19.16b
1537*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v1.2d,v3.2d		// "D + T1"
1538*8fb009dcSAndroid Build Coastguard Worker.inst	0xce608423	//sha512h2 v3.16b,v1.16b,v0.16b
1539*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1540*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v20.2d
1541*8fb009dcSAndroid Build Coastguard Worker	ld1	{v20.16b},[x1],#16		// load next input
1542*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1543*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v4.16b,v2.16b,#8
1544*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v0.16b,v4.16b,#8
1545*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v24.2d			// "T1 + H + K512[i]"
1546*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a2	//sha512h v2.16b,v5.16b,v6.16b
1547*8fb009dcSAndroid Build Coastguard Worker	rev64	v20.16b,v20.16b
1548*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v0.2d,v2.2d		// "D + T1"
1549*8fb009dcSAndroid Build Coastguard Worker.inst	0xce638402	//sha512h2 v2.16b,v0.16b,v3.16b
1550*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.2d},[x3],#16
1551*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v21.2d
1552*8fb009dcSAndroid Build Coastguard Worker	ld1	{v21.16b},[x1],#16		// load next input
1553*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1554*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v1.16b,v4.16b,#8
1555*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v3.16b,v1.16b,#8
1556*8fb009dcSAndroid Build Coastguard Worker	add	v4.2d,v4.2d,v25.2d			// "T1 + H + K512[i]"
1557*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a4	//sha512h v4.16b,v5.16b,v6.16b
1558*8fb009dcSAndroid Build Coastguard Worker	rev64	v21.16b,v21.16b
1559*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v3.2d,v4.2d		// "D + T1"
1560*8fb009dcSAndroid Build Coastguard Worker.inst	0xce628464	//sha512h2 v4.16b,v3.16b,v2.16b
1561*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.2d},[x3],#16
1562*8fb009dcSAndroid Build Coastguard Worker	add	v24.2d,v24.2d,v22.2d
1563*8fb009dcSAndroid Build Coastguard Worker	ld1	{v22.16b},[x1],#16		// load next input
1564*8fb009dcSAndroid Build Coastguard Worker	ext	v24.16b,v24.16b,v24.16b,#8
1565*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v0.16b,v1.16b,#8
1566*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v2.16b,v0.16b,#8
1567*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v24.2d			// "T1 + H + K512[i]"
1568*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a1	//sha512h v1.16b,v5.16b,v6.16b
1569*8fb009dcSAndroid Build Coastguard Worker	rev64	v22.16b,v22.16b
1570*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v2.2d,v1.2d		// "D + T1"
1571*8fb009dcSAndroid Build Coastguard Worker.inst	0xce648441	//sha512h2 v1.16b,v2.16b,v4.16b
1572*8fb009dcSAndroid Build Coastguard Worker	sub	x3,x3,#80*8	// rewind
1573*8fb009dcSAndroid Build Coastguard Worker	add	v25.2d,v25.2d,v23.2d
1574*8fb009dcSAndroid Build Coastguard Worker	ld1	{v23.16b},[x1],#16		// load next input
1575*8fb009dcSAndroid Build Coastguard Worker	ext	v25.16b,v25.16b,v25.16b,#8
1576*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v3.16b,v0.16b,#8
1577*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v4.16b,v3.16b,#8
1578*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v25.2d			// "T1 + H + K512[i]"
1579*8fb009dcSAndroid Build Coastguard Worker.inst	0xce6680a0	//sha512h v0.16b,v5.16b,v6.16b
1580*8fb009dcSAndroid Build Coastguard Worker	rev64	v23.16b,v23.16b
1581*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v4.2d,v0.2d		// "D + T1"
1582*8fb009dcSAndroid Build Coastguard Worker.inst	0xce618480	//sha512h2 v0.16b,v4.16b,v1.16b
1583*8fb009dcSAndroid Build Coastguard Worker	add	v0.2d,v0.2d,v26.2d			// accumulate
1584*8fb009dcSAndroid Build Coastguard Worker	add	v1.2d,v1.2d,v27.2d
1585*8fb009dcSAndroid Build Coastguard Worker	add	v2.2d,v2.2d,v28.2d
1586*8fb009dcSAndroid Build Coastguard Worker	add	v3.2d,v3.2d,v29.2d
1587*8fb009dcSAndroid Build Coastguard Worker
1588*8fb009dcSAndroid Build Coastguard Worker	cbnz	x2,.Loop_hw
1589*8fb009dcSAndroid Build Coastguard Worker
1590*8fb009dcSAndroid Build Coastguard Worker	st1	{v0.2d,v1.2d,v2.2d,v3.2d},[x0]		// store context
1591*8fb009dcSAndroid Build Coastguard Worker
1592*8fb009dcSAndroid Build Coastguard Worker	ldr	x29,[sp],#16
1593*8fb009dcSAndroid Build Coastguard Worker	ret
1594*8fb009dcSAndroid Build Coastguard Worker.size	sha512_block_data_order_hw,.-sha512_block_data_order_hw
1595*8fb009dcSAndroid Build Coastguard Worker#endif
1596*8fb009dcSAndroid Build Coastguard Worker#endif  // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(__ELF__)
1597