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