13f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#include "arm_arch.h"
23f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
33f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.text
43f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
53f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.globl	sha1_block_data_order
63f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type	sha1_block_data_order,%function
73f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align	6
83f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Rootsha1_block_data_order:
93f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x16,.LOPENSSL_armcap_P
103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	adr	x17,.LOPENSSL_armcap_P
113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	x16,x16,x17
123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	w16,[x16]
133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	tst	w16,#ARMV8_SHA1
143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	b.ne	.Lv8_entry
153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x29,x30,[sp,#-96]!
173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	x29,sp,#0
183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x19,x20,[sp,#16]
193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x21,x22,[sp,#32]
203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x23,x24,[sp,#48]
213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x25,x26,[sp,#64]
223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x27,x28,[sp,#80]
233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	w20,w21,[x0]
253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	w22,w23,[x0,#8]
263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	w24,[x0,#16]
273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Loop:
293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x3,[x1],#64
303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movz	w28,#0x7999
313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	sub	x2,x2,#1
323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movk	w28,#0x5a82,lsl#16
333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x3,x3,#32
353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x3,x3
373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// warm it up
393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w3
403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x4,x3,#32
413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x5,[x1,#-56]
423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w23,w21
433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w21
443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w4	// future e+=X[i]
503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x5,x5,#32
533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x5,x5
553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w22,w20
573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w20
583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w5	// future e+=X[i]
643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x6,x5,#32
663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x7,[x1,#-48]
673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w21,w24
683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w24
693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w6	// future e+=X[i]
753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x7,x7,#32
783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x7,x7
803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w20,w23
823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w23
833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w7	// future e+=X[i]
893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x8,x7,#32
913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x9,[x1,#-40]
923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w24,w22
933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w22
943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w8	// future e+=X[i]
1003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
1013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
1023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x9,x9,#32
1033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
1043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x9,x9
1053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
1063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w23,w21
1073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w21
1083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
1093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
1103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
1123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
1133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w9	// future e+=X[i]
1143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
1153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x10,x9,#32
1163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x11,[x1,#-32]
1173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w22,w20
1183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w20
1193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
1203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
1213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
1233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
1243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w10	// future e+=X[i]
1253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
1263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
1273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x11,x11,#32
1283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
1293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x11,x11
1303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
1313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w21,w24
1323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w24
1333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
1343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
1353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
1373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
1383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w11	// future e+=X[i]
1393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
1403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x12,x11,#32
1413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x13,[x1,#-24]
1423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w20,w23
1433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w23
1443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
1453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
1463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
1483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
1493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w12	// future e+=X[i]
1503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
1513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
1523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x13,x13,#32
1533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
1543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x13,x13
1553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
1563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w24,w22
1573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w22
1583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
1593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
1603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
1623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
1633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w13	// future e+=X[i]
1643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
1653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x14,x13,#32
1663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x15,[x1,#-16]
1673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w23,w21
1683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w21
1693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
1703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
1713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
1733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
1743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w14	// future e+=X[i]
1753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
1763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
1773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x15,x15,#32
1783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
1793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x15,x15
1803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
1813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w22,w20
1823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w20
1833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
1843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
1853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
1873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
1883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w15	// future e+=X[i]
1893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
1903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x16,x15,#32
1913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x17,[x1,#-8]
1923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w21,w24
1933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w24
1943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
1953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
1963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
1973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
1983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
1993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w16	// future e+=X[i]
2003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
2013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef	__ARMEB__
2023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	x17,x17,#32
2033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else
2043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	x17,x17
2053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif
2063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w20,w23
2073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w23
2083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
2093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
2103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
2123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
2133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w17	// future e+=X[i]
2143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
2153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	lsr	x19,x17,#32
2163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w5
2173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w24,w22
2183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w22
2193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
2203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w11
2213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
2223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
2243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w16
2253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
2263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w19	// future e+=X[i]
2273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
2283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w3,w3,#31
2293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w6
2303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w23,w21
2313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w21
2323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
2333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w12
2343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
2353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
2373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w17
2383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
2393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w3	// future e+=X[i]
2403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
2413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w4,w4,#31
2423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w7
2433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w22,w20
2443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w20
2453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
2463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w13
2473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
2483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
2503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w19
2513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
2523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w4	// future e+=X[i]
2533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
2543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w5,w5,#31
2553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w8
2563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w21,w24
2573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w24
2583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
2593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w14
2603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
2613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
2633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w3
2643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
2653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w5	// future e+=X[i]
2663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
2673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w6,w6,#31
2683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w9
2693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w20,w23
2703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w23
2713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
2723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w15
2733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
2743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
2763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w4
2773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
2783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w6	// future e+=X[i]
2793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
2803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w7,w7,#31
2813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movz	w28,#0xeba1
2823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movk	w28,#0x6ed9,lsl#16
2833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w10
2843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	bic	w25,w24,w22
2853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w22
2863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
2873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w16
2883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
2893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
2903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
2913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w5
2923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
2933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w7	// future e+=X[i]
2943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
2953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w8,w8,#31
2963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w11
2973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
2983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
2993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
3003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w17
3013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
3023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
3033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
3043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w6
3053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w8	// future e+=X[i]
3063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
3073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w9,w9,#31
3083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w12
3093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
3103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
3113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
3123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w19
3133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
3143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
3153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
3163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w7
3173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w9	// future e+=X[i]
3183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
3193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w10,w10,#31
3203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w13
3213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
3223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
3233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
3243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w3
3253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
3263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
3273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
3283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w8
3293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w10	// future e+=X[i]
3303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
3313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w11,w11,#31
3323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w14
3333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
3343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
3353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
3363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w4
3373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
3383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
3393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
3403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w9
3413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w11	// future e+=X[i]
3423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
3433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w12,w12,#31
3443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w15
3453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
3463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
3473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
3483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w5
3493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
3503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
3513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
3523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w10
3533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w12	// future e+=X[i]
3543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
3553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w13,w13,#31
3563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w16
3573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
3583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
3593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
3603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w6
3613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
3623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
3633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
3643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w11
3653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w13	// future e+=X[i]
3663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
3673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w14,w14,#31
3683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w17
3693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
3703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
3713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
3723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w7
3733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
3743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
3753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
3763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w12
3773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w14	// future e+=X[i]
3783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
3793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w15,w15,#31
3803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w19
3813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
3823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
3833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
3843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w8
3853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
3863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
3873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
3883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w13
3893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w15	// future e+=X[i]
3903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
3913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w16,w16,#31
3923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w3
3933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
3943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
3953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
3963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w9
3973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
3983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
3993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
4003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w14
4013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w16	// future e+=X[i]
4023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
4033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w17,w17,#31
4043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w4
4053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
4063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
4073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
4083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w10
4093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
4103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
4113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
4123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w15
4133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w17	// future e+=X[i]
4143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
4153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w19,w19,#31
4163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w5
4173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
4183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
4193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
4203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w11
4213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
4223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
4233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
4243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w16
4253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w19	// future e+=X[i]
4263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
4273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w3,w3,#31
4283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w6
4293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
4303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
4313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
4323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w12
4333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
4343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
4353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
4363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w17
4373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w3	// future e+=X[i]
4383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
4393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w4,w4,#31
4403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w7
4413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
4423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
4433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
4443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w13
4453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
4463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
4473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
4483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w19
4493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w4	// future e+=X[i]
4503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
4513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w5,w5,#31
4523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w8
4533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
4543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
4553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
4563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w14
4573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
4583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
4593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
4603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w3
4613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w5	// future e+=X[i]
4623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
4633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w6,w6,#31
4643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w9
4653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
4663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
4673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
4683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w15
4693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
4703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
4713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
4723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w4
4733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w6	// future e+=X[i]
4743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
4753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w7,w7,#31
4763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w10
4773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
4783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
4793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
4803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w16
4813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
4823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
4833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
4843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w5
4853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w7	// future e+=X[i]
4863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
4873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w8,w8,#31
4883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w11
4893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
4903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
4913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
4923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w17
4933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
4943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
4953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
4963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w6
4973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w8	// future e+=X[i]
4983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
4993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w9,w9,#31
5003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w12
5013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
5023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
5033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
5043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w19
5053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
5063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
5073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
5083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w7
5093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w9	// future e+=X[i]
5103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
5113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w10,w10,#31
5123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w13
5133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
5143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
5153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
5163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w3
5173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
5183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
5193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
5203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w8
5213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w10	// future e+=X[i]
5223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
5233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w11,w11,#31
5243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movz	w28,#0xbcdc
5253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movk	w28,#0x8f1b,lsl#16
5263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w14
5273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
5283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
5293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
5303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w4
5313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
5323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
5333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
5343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w9
5353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w11	// future e+=X[i]
5363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
5373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w12,w12,#31
5383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w21,w22
5393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w22
5403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w15
5413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
5423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w23
5433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
5443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w5
5453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
5463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
5473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
5483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w10
5493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w12	// future e+=X[i]
5503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
5513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w13,w13,#31
5523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w20,w21
5533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w21
5543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w16
5553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
5563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w22
5573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
5583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w6
5593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
5603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
5613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
5623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w11
5633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w13	// future e+=X[i]
5643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
5653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w14,w14,#31
5663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w24,w20
5673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w20
5683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w17
5693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
5703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w21
5713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
5723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w7
5733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
5743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
5753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
5763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w12
5773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w14	// future e+=X[i]
5783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
5793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w15,w15,#31
5803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w23,w24
5813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w24
5823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w19
5833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
5843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w20
5853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
5863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w8
5873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
5883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
5893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
5903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w13
5913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w15	// future e+=X[i]
5923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
5933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w16,w16,#31
5943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w22,w23
5953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w23
5963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w3
5973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
5983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w24
5993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
6003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w9
6013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
6023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
6043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w14
6053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w16	// future e+=X[i]
6063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
6073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w17,w17,#31
6083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w21,w22
6093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w22
6103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w4
6113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
6123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w23
6133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
6143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w10
6153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
6163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
6183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w15
6193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w17	// future e+=X[i]
6203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
6213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w19,w19,#31
6223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w20,w21
6233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w21
6243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w5
6253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
6263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w22
6273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
6283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w11
6293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
6303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
6323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w16
6333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w19	// future e+=X[i]
6343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
6353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w3,w3,#31
6363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w24,w20
6373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w20
6383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w6
6393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
6403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w21
6413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
6423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w12
6433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
6443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
6463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w17
6473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w3	// future e+=X[i]
6483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
6493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w4,w4,#31
6503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w23,w24
6513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w24
6523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w7
6533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
6543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w20
6553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
6563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w13
6573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
6583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
6603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w19
6613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w4	// future e+=X[i]
6623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
6633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w5,w5,#31
6643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w22,w23
6653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w23
6663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w8
6673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
6683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w24
6693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
6703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w14
6713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
6723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
6743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w3
6753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w5	// future e+=X[i]
6763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
6773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w6,w6,#31
6783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w21,w22
6793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w22
6803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w9
6813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
6823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w23
6833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
6843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w15
6853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
6863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
6873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
6883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w4
6893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w6	// future e+=X[i]
6903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
6913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w7,w7,#31
6923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w20,w21
6933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w21
6943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w10
6953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
6963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w22
6973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
6983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w16
6993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
7003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
7023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w5
7033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w7	// future e+=X[i]
7043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
7053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w8,w8,#31
7063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w24,w20
7073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w20
7083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w11
7093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
7103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w21
7113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
7123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w17
7133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
7143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
7163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w6
7173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w8	// future e+=X[i]
7183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
7193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w9,w9,#31
7203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w23,w24
7213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w24
7223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w12
7233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
7243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w20
7253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
7263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w19
7273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
7283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
7303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w7
7313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w9	// future e+=X[i]
7323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
7333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w10,w10,#31
7343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w22,w23
7353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w23
7363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w13
7373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
7383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w24
7393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
7403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w3
7413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
7423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
7443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w8
7453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w10	// future e+=X[i]
7463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
7473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w11,w11,#31
7483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w21,w22
7493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w21,w22
7503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w14
7513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
7523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w23
7533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
7543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w4
7553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
7563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
7583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w9
7593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w11	// future e+=X[i]
7603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
7613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w12,w12,#31
7623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w20,w21
7633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w20,w21
7643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w15
7653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
7663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w22
7673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
7683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w5
7693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
7703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
7723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w10
7733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w12	// future e+=X[i]
7743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
7753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w13,w13,#31
7763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w24,w20
7773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w24,w20
7783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w16
7793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
7803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w21
7813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
7823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w6
7833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
7843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
7863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w11
7873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w13	// future e+=X[i]
7883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
7893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w14,w14,#31
7903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w23,w24
7913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w23,w24
7923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w17
7933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
7943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w20
7953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
7963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w7
7973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
7983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
7993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
8003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w12
8013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w14	// future e+=X[i]
8023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
8033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w15,w15,#31
8043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movz	w28,#0xc1d6
8053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	movk	w28,#0xca62,lsl#16
8063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w22,w23
8073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w26,w22,w23
8083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w19
8093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
8103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	and	w25,w25,w24
8113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
8123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w8
8133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
8143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	w25,w25,w26
8153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
8163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w13
8173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w15	// future e+=X[i]
8183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
8193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w16,w16,#31
8203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w3
8213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
8223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
8233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
8243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w9
8253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
8263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
8273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
8283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w14
8293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w16	// future e+=X[i]
8303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
8313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w17,w17,#31
8323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w4
8333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
8343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
8353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
8363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w10
8373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
8383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
8393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
8403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w15
8413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w17	// future e+=X[i]
8423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
8433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w19,w19,#31
8443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w5
8453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
8463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
8473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
8483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w11
8493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
8503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
8513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
8523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w3,w3,w16
8533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w19	// future e+=X[i]
8543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
8553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w3,w3,#31
8563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w6
8573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
8583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
8593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
8603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w12
8613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
8623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
8633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
8643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w4,w4,w17
8653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w3	// future e+=X[i]
8663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
8673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w4,w4,#31
8683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w7
8693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
8703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
8713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
8723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w13
8733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
8743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
8753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
8763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w5,w5,w19
8773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w4	// future e+=X[i]
8783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
8793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w5,w5,#31
8803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w8
8813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
8823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
8833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
8843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w14
8853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
8863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
8873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
8883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w6,w6,w3
8893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w5	// future e+=X[i]
8903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
8913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w6,w6,#31
8923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w9
8933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
8943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
8953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
8963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w15
8973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
8983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
8993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
9003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w7,w7,w4
9013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w6	// future e+=X[i]
9023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
9033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w7,w7,#31
9043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w10
9053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
9063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
9073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
9083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w16
9093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
9103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
9113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
9123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w8,w8,w5
9133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w7	// future e+=X[i]
9143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
9153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w8,w8,#31
9163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w11
9173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
9183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
9193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
9203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w17
9213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
9223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
9233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
9243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w9,w9,w6
9253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w8	// future e+=X[i]
9263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
9273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w9,w9,#31
9283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w12
9293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
9303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
9313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
9323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w19
9333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
9343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
9353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
9363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w10,w10,w7
9373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w9	// future e+=X[i]
9383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
9393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w10,w10,#31
9403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w13
9413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
9423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
9433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
9443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w3
9453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
9463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
9473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
9483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w11,w11,w8
9493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w10	// future e+=X[i]
9503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
9513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w11,w11,#31
9523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w14
9533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
9543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
9553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
9563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w4
9573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
9583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
9593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
9603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w12,w12,w9
9613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w11	// future e+=X[i]
9623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
9633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w12,w12,#31
9643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w15
9653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
9663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
9673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
9683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w5
9693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
9703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
9713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
9723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w13,w13,w10
9733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w12	// future e+=X[i]
9743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
9753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w13,w13,#31
9763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w16
9773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
9783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
9793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
9803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w6
9813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
9823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
9833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
9843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w14,w14,w11
9853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w13	// future e+=X[i]
9863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
9873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w14,w14,#31
9883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w17
9893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
9903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
9913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w28		// future e+=K
9923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w7
9933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
9943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
9953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
9963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w15,w15,w12
9973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w14	// future e+=X[i]
9983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
9993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w15,w15,#31
10003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w19
10013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w23,w21
10023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w20,#27
10033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w28		// future e+=K
10043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w8
10053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w22
10063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w27		// e+=rot(a,5)
10073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w21,w21,#2
10083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w16,w16,w13
10093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w15	// future e+=X[i]
10103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w25		// e+=F(b,c,d)
10113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w16,w16,#31
10123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w3
10133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w22,w20
10143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w24,#27
10153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w28		// future e+=K
10163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w9
10173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w21
10183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w27		// e+=rot(a,5)
10193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w20,w20,#2
10203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w17,w17,w14
10213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w16	// future e+=X[i]
10223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w25		// e+=F(b,c,d)
10233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w17,w17,#31
10243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w4
10253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w21,w24
10263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w23,#27
10273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w28		// future e+=K
10283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w10
10293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w20
10303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w27		// e+=rot(a,5)
10313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w24,w24,#2
10323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 eor	w19,w19,w15
10333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w17	// future e+=X[i]
10343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w25		// e+=F(b,c,d)
10353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	 ror	w19,w19,#31
10363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	w4,w5,[x0]
10373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w20,w23
10383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w22,#27
10393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w28		// future e+=K
10403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w24
10413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w27		// e+=rot(a,5)
10423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w23,w23,#2
10433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w19	// future e+=X[i]
10443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w25		// e+=F(b,c,d)
10453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	w6,w7,[x0,#8]
10463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w24,w22
10473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w27,w21,#27
10483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	w25,w25,w23
10493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w27		// e+=rot(a,5)
10503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ror	w22,w22,#2
10513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	w8,[x0,#16]
10523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w25		// e+=F(b,c,d)
10533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w21,w21,w5
10543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w22,w22,w6
10553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w20,w20,w4
10563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w23,w23,w7
10573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	w24,w24,w8
10583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	w20,w21,[x0]
10593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	w22,w23,[x0,#8]
10603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	str	w24,[x0,#16]
10613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	cbnz	x2,.Loop
10623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
10633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	x19,x20,[sp,#16]
10643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	x21,x22,[sp,#32]
10653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	x23,x24,[sp,#48]
10663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	x25,x26,[sp,#64]
10673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldp	x27,x28,[sp,#80]
10683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x29,[sp],#96
10693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ret
10703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size	sha1_block_data_order,.-sha1_block_data_order
10713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type	sha1_block_armv8,%function
10723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align	6
10733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Rootsha1_block_armv8:
10743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Lv8_entry:
10753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	stp	x29,x30,[sp,#-16]!
10763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	x29,sp,#0
10773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
10783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	adr	x4,.Lconst
10793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	eor	v1.16b,v1.16b,v1.16b
10803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ld1	{v0.4s},[x0],#16
10813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ld1	{v1.s}[0],[x0]
10823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	sub	x0,x0,#16
10833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ld1	{v16.4s-v19.4s},[x4]
10843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
10853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Loop_hw:
10863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ld1	{v4.16b-v7.16b},[x1],#64
10873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	sub	x2,x2,#1
10883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	v4.16b,v4.16b
10893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	v5.16b,v5.16b
10903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
10913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v16.4s,v4.4s
10923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	v6.16b,v6.16b
10933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	orr	v22.16b,v0.16b,v0.16b	// offload
10943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
10953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v16.4s,v5.4s
10963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	rev32	v7.16b,v7.16b
10973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b
10983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e140020	//sha1c v0.16b,v1.16b,v20.4s		// 0
10993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v16.4s,v6.4s
11003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
11013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 1
11023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e150060	//sha1c v0.16b,v3.16b,v21.4s
11033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v16.4s,v7.4s
11043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
11053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
11063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 2
11073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e140040	//sha1c v0.16b,v2.16b,v20.4s
11083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v16.4s,v4.4s
11093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
11103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
11113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 3
11123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e150060	//sha1c v0.16b,v3.16b,v21.4s
11133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v17.4s,v5.4s
11143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
11153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
11163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 4
11173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e140040	//sha1c v0.16b,v2.16b,v20.4s
11183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v17.4s,v6.4s
11193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
11203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
11213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 5
11223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
11233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v17.4s,v7.4s
11243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
11253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
11263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 6
11273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
11283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v17.4s,v4.4s
11293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
11303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
11313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 7
11323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
11333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v17.4s,v5.4s
11343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
11353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
11363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 8
11373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
11383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v18.4s,v6.4s
11393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
11403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
11413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 9
11423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
11433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v18.4s,v7.4s
11443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
11453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
11463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 10
11473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
11483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v18.4s,v4.4s
11493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
11503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
11513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 11
11523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e152060	//sha1m v0.16b,v3.16b,v21.4s
11533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v18.4s,v5.4s
11543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
11553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
11563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 12
11573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
11583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v18.4s,v6.4s
11593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
11603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
11613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 13
11623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e152060	//sha1m v0.16b,v3.16b,v21.4s
11633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v19.4s,v7.4s
11643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
11653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
11663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 14
11673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
11683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v19.4s,v4.4s
11693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
11703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
11713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 15
11723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
11733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v19.4s,v5.4s
11743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
11753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
11763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 16
11773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
11783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v20.4s,v19.4s,v6.4s
11793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
11803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 17
11813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
11823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v21.4s,v19.4s,v7.4s
11833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
11843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 18
11853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
11863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
11873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 19
11883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
11893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
11903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v1.4s,v1.4s,v2.4s
11913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	add	v0.4s,v0.4s,v22.4s
11923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
11933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	cbnz	x2,.Loop_hw
11943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
11953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	st1	{v0.4s},[x0],#16
11963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	st1	{v1.s}[0],[x0]
11973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root
11983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ldr	x29,[sp],#16
11993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root	ret
12003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size	sha1_block_armv8,.-sha1_block_armv8
12013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align	6
12023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Lconst:
12033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999	//K_00_19
12043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1	//K_20_39
12053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc	//K_40_59
12063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6	//K_60_79
12073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.LOPENSSL_armcap_P:
12083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.quad	OPENSSL_armcap_P-.
12093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.asciz	"SHA1 block transform for ARMv8, CRYPTOGAMS by <appro@openssl.org>"
12103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align	2
12113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.comm	OPENSSL_armcap_P,4,4
1212