1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include "arm_arch.h"
2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.text
4d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
5e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley
6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl	sha512_block_data_order
7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type	sha512_block_data_order,%function
8d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align	6
9d9e397b599b13d642138480a28c14db7a136bf0Adam Langleysha512_block_data_order:
10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x29,x30,[sp,#-128]!
11d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x29,sp,#0
12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
13d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x19,x20,[sp,#16]
14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x21,x22,[sp,#32]
15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x23,x24,[sp,#48]
16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x25,x26,[sp,#64]
17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x27,x28,[sp,#80]
18d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	sub	sp,sp,#4*8
19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x20,x21,[x0]				// load context
21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x22,x23,[x0,#2*8]
22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x24,x25,[x0,#4*8]
23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x2,x1,x2,lsl#7	// end of input
24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x26,x27,[x0,#6*8]
25e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley	adr	x30,.LK512
26d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x0,x2,[x29,#96]
27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
28d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop:
29d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x3,x4,[x1],#2*8
30d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8			// *K++
31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x21,x22				// magic seed
32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x1,[x29,#112]
33d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
34d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x3,x3			// 0
35d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x24,#14
37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x19			// h+=K[i]
38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x24,x24,ror#23
39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x25,x24
40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x26,x24
41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x3			// h+=X[i]
42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x20,x21			// a^b, b^c in next round
44d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x6,ror#18	// Sigma1(e)
45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x6,x20,#28
46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Ch(e,f,g)
47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x20,x20,ror#5
48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x16			// h+=Sigma1(e)
49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x27			// d+=h
51d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x21			// Maj(a,b,c)
52d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x6,x17,ror#34	// Sigma0(a)
53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x28			// h+=Maj(a,b,c)
54d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
55d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x27,x27,x17			// h+=Sigma0(a)
56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
57d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x4,x4			// 1
58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x5,x6,[x1],#2*8
60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Sigma0(a)
61d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x23,#14
62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x28			// h+=K[i]
63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x23,x23,ror#23
64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x24,x23
65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x25,x23
66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x4			// h+=X[i]
67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
68d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x27,x20			// a^b, b^c in next round
69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x7,ror#18	// Sigma1(e)
70d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x7,x27,#28
71d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Ch(e,f,g)
72d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x27,x27,ror#5
73d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x16			// h+=Sigma1(e)
74d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
75d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x26			// d+=h
76d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x20			// Maj(a,b,c)
77d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x7,x17,ror#34	// Sigma0(a)
78d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x19			// h+=Maj(a,b,c)
79d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
80d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x26,x26,x17			// h+=Sigma0(a)
81d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
82d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x5,x5			// 2
83d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
84d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Sigma0(a)
85d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x22,#14
86d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x19			// h+=K[i]
87d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x22,x22,ror#23
88d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x23,x22
89d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x24,x22
90d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x5			// h+=X[i]
91d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
92d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x26,x27			// a^b, b^c in next round
93d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x8,ror#18	// Sigma1(e)
94d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x8,x26,#28
95d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Ch(e,f,g)
96d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x26,x26,ror#5
97d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x16			// h+=Sigma1(e)
98d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
99d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x25			// d+=h
100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x27			// Maj(a,b,c)
101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x8,x17,ror#34	// Sigma0(a)
102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x28			// h+=Maj(a,b,c)
103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x25,x25,x17			// h+=Sigma0(a)
105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x6,x6			// 3
107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x7,x8,[x1],#2*8
109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Sigma0(a)
110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x21,#14
111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x28			// h+=K[i]
112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x21,x21,ror#23
113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x22,x21
114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x23,x21
115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x6			// h+=X[i]
116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x25,x26			// a^b, b^c in next round
118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x9,ror#18	// Sigma1(e)
119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x9,x25,#28
120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Ch(e,f,g)
121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x25,x25,ror#5
122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x16			// h+=Sigma1(e)
123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x24			// d+=h
125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x26			// Maj(a,b,c)
126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x9,x17,ror#34	// Sigma0(a)
127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x19			// h+=Maj(a,b,c)
128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x24,x24,x17			// h+=Sigma0(a)
130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x7,x7			// 4
132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Sigma0(a)
134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x20,#14
135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x19			// h+=K[i]
136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x20,x20,ror#23
137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x21,x20
138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x22,x20
139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x7			// h+=X[i]
140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x24,x25			// a^b, b^c in next round
142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x10,ror#18	// Sigma1(e)
143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x10,x24,#28
144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Ch(e,f,g)
145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x24,x24,ror#5
146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x16			// h+=Sigma1(e)
147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x23			// d+=h
149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x25			// Maj(a,b,c)
150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x10,x17,ror#34	// Sigma0(a)
151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x28			// h+=Maj(a,b,c)
152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x23,x23,x17			// h+=Sigma0(a)
154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x8,x8			// 5
156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x9,x10,[x1],#2*8
158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Sigma0(a)
159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x27,#14
160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x28			// h+=K[i]
161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x11,x27,x27,ror#23
162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x20,x27
163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x21,x27
164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x8			// h+=X[i]
165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x23,x24			// a^b, b^c in next round
167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x11,ror#18	// Sigma1(e)
168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x11,x23,#28
169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Ch(e,f,g)
170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x23,x23,ror#5
171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x16			// h+=Sigma1(e)
172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x22			// d+=h
174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x24			// Maj(a,b,c)
175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x11,x17,ror#34	// Sigma0(a)
176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x19			// h+=Maj(a,b,c)
177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x22,x22,x17			// h+=Sigma0(a)
179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x9,x9			// 6
181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Sigma0(a)
183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x26,#14
184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x19			// h+=K[i]
185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x12,x26,x26,ror#23
186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x27,x26
187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x20,x26
188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x9			// h+=X[i]
189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x22,x23			// a^b, b^c in next round
191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x12,ror#18	// Sigma1(e)
192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x12,x22,#28
193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Ch(e,f,g)
194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x22,x22,ror#5
195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x16			// h+=Sigma1(e)
196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x21			// d+=h
198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x23			// Maj(a,b,c)
199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x12,x17,ror#34	// Sigma0(a)
200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x28			// h+=Maj(a,b,c)
201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x21,x21,x17			// h+=Sigma0(a)
203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x10,x10			// 7
205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x11,x12,[x1],#2*8
207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Sigma0(a)
208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x25,#14
209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x28			// h+=K[i]
210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x13,x25,x25,ror#23
211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x26,x25
212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x27,x25
213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x10			// h+=X[i]
214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x21,x22			// a^b, b^c in next round
216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x13,ror#18	// Sigma1(e)
217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x13,x21,#28
218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Ch(e,f,g)
219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x21,x21,ror#5
220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x16			// h+=Sigma1(e)
221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x20			// d+=h
223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x22			// Maj(a,b,c)
224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x13,x17,ror#34	// Sigma0(a)
225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x19			// h+=Maj(a,b,c)
226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x20,x20,x17			// h+=Sigma0(a)
228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x11,x11			// 8
230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Sigma0(a)
232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x24,#14
233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x19			// h+=K[i]
234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x14,x24,x24,ror#23
235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x25,x24
236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x26,x24
237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x11			// h+=X[i]
238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x20,x21			// a^b, b^c in next round
240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x14,ror#18	// Sigma1(e)
241d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x14,x20,#28
242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Ch(e,f,g)
243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x20,x20,ror#5
244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x16			// h+=Sigma1(e)
245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x27			// d+=h
247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x21			// Maj(a,b,c)
248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x14,x17,ror#34	// Sigma0(a)
249d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x28			// h+=Maj(a,b,c)
250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x27,x27,x17			// h+=Sigma0(a)
252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x12,x12			// 9
254d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x13,x14,[x1],#2*8
256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Sigma0(a)
257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x23,#14
258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x28			// h+=K[i]
259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x15,x23,x23,ror#23
260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x24,x23
261d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x25,x23
262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x12			// h+=X[i]
263d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x27,x20			// a^b, b^c in next round
265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x15,ror#18	// Sigma1(e)
266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x15,x27,#28
267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Ch(e,f,g)
268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x27,x27,ror#5
269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x16			// h+=Sigma1(e)
270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x26			// d+=h
272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x20			// Maj(a,b,c)
273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x15,x17,ror#34	// Sigma0(a)
274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x19			// h+=Maj(a,b,c)
275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x26,x26,x17			// h+=Sigma0(a)
277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x13,x13			// 10
279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Sigma0(a)
281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x22,#14
282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x19			// h+=K[i]
283d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x0,x22,x22,ror#23
284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x23,x22
285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x24,x22
286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x13			// h+=X[i]
287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x26,x27			// a^b, b^c in next round
289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x0,ror#18	// Sigma1(e)
290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x0,x26,#28
291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Ch(e,f,g)
292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x26,x26,ror#5
293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x16			// h+=Sigma1(e)
294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x25			// d+=h
296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x27			// Maj(a,b,c)
297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x0,x17,ror#34	// Sigma0(a)
298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x28			// h+=Maj(a,b,c)
299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x25,x25,x17			// h+=Sigma0(a)
301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x14,x14			// 11
303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x15,x0,[x1],#2*8
305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Sigma0(a)
306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x6,[sp,#24]
307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x21,#14
308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x28			// h+=K[i]
309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x21,x21,ror#23
310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x22,x21
311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x23,x21
312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x14			// h+=X[i]
313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x25,x26			// a^b, b^c in next round
315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x6,ror#18	// Sigma1(e)
316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x6,x25,#28
317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Ch(e,f,g)
318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x25,x25,ror#5
319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x16			// h+=Sigma1(e)
320d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x24			// d+=h
322d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x26			// Maj(a,b,c)
323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x6,x17,ror#34	// Sigma0(a)
324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x19			// h+=Maj(a,b,c)
325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x24,x24,x17			// h+=Sigma0(a)
327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x15,x15			// 12
329d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
330d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Sigma0(a)
331d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x7,[sp,#0]
332d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x20,#14
333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x19			// h+=K[i]
334d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x20,x20,ror#23
335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x21,x20
336d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x22,x20
337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x15			// h+=X[i]
338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x24,x25			// a^b, b^c in next round
340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x7,ror#18	// Sigma1(e)
341d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x7,x24,#28
342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Ch(e,f,g)
343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x24,x24,ror#5
344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x16			// h+=Sigma1(e)
345d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x23			// d+=h
347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x25			// Maj(a,b,c)
348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x7,x17,ror#34	// Sigma0(a)
349d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x28			// h+=Maj(a,b,c)
350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x23,x23,x17			// h+=Sigma0(a)
352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x0,x0			// 13
354d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x1,x2,[x1]
356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Sigma0(a)
357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x8,[sp,#8]
358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x27,#14
359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x28			// h+=K[i]
360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x27,x27,ror#23
361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x20,x27
362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x21,x27
363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x0			// h+=X[i]
364d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
365d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x23,x24			// a^b, b^c in next round
366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x8,ror#18	// Sigma1(e)
367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x8,x23,#28
368d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Ch(e,f,g)
369d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x23,x23,ror#5
370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x16			// h+=Sigma1(e)
371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
372d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x22			// d+=h
373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x24			// Maj(a,b,c)
374d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x8,x17,ror#34	// Sigma0(a)
375d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x19			// h+=Maj(a,b,c)
376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
377d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x22,x22,x17			// h+=Sigma0(a)
378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x1,x1			// 14
380d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
381d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x6,[sp,#24]
382d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Sigma0(a)
383d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x9,[sp,#16]
384d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x26,#14
385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x19			// h+=K[i]
386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x26,x26,ror#23
387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x27,x26
388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x20,x26
389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x1			// h+=X[i]
390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x22,x23			// a^b, b^c in next round
392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x9,ror#18	// Sigma1(e)
393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x9,x22,#28
394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Ch(e,f,g)
395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x22,x22,ror#5
396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x16			// h+=Sigma1(e)
397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x21			// d+=h
399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x23			// Maj(a,b,c)
400d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x9,x17,ror#34	// Sigma0(a)
401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x28			// h+=Maj(a,b,c)
402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
403d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	//add	x21,x21,x17			// h+=Sigma0(a)
404d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef	__ARMEB__
405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	rev	x2,x2			// 15
406d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif
407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x7,[sp,#0]
408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Sigma0(a)
409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x10,[sp,#24]
410d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x25,#14
411d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x28			// h+=K[i]
412d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x9,x4,#1
413d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x26,x25
414d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x8,x1,#19
415d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x27,x25
416d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x10,x21,#28
417d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x2			// h+=X[i]
418d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x25,ror#18
419d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x4,ror#8
420d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
421d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x21,x22			// a^b, b^c in next round
422d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x25,ror#41	// Sigma1(e)
423d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x10,x21,ror#34
424d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Ch(e,f,g)
425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x1,ror#61
427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x4,lsr#7	// sigma0(X[i+1])
428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x16			// h+=Sigma1(e)
429d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x22			// Maj(a,b,c)
430d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x10,x21,ror#39	// Sigma0(a)
431d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x1,lsr#6	// sigma1(X[i+14])
432d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x3,x3,x12
433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x20			// d+=h
434d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x19			// h+=Maj(a,b,c)
435d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
436d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x3,x3,x9
437d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Sigma0(a)
438d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x3,x3,x8
439d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop_16_xx:
440d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x8,[sp,#8]
441d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x11,[sp,#0]
442d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x24,#14
443d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x19			// h+=K[i]
444d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x10,x5,#1
445d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x25,x24
446d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x9,x2,#19
447d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x26,x24
448d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x11,x20,#28
449d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x3			// h+=X[i]
450d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x24,ror#18
451d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x10,x5,ror#8
452d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
453d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x20,x21			// a^b, b^c in next round
454d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x24,ror#41	// Sigma1(e)
455d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x11,x11,x20,ror#34
456d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Ch(e,f,g)
457d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
458d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x2,ror#61
459d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x10,x5,lsr#7	// sigma0(X[i+1])
460d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x16			// h+=Sigma1(e)
461d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x21			// Maj(a,b,c)
462d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x11,x20,ror#39	// Sigma0(a)
463d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x2,lsr#6	// sigma1(X[i+14])
464d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x4,x4,x13
465d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x27			// d+=h
466d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x28			// h+=Maj(a,b,c)
467d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
468d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x4,x4,x10
469d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Sigma0(a)
470d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x4,x4,x9
471d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x9,[sp,#16]
472d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x12,[sp,#8]
473d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x23,#14
474d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x28			// h+=K[i]
475d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x11,x6,#1
476d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x24,x23
477d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x10,x3,#19
478d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x25,x23
479d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x12,x27,#28
480d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x4			// h+=X[i]
481d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x23,ror#18
482d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x11,x11,x6,ror#8
483d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
484d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x27,x20			// a^b, b^c in next round
485d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x23,ror#41	// Sigma1(e)
486d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x12,x12,x27,ror#34
487d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Ch(e,f,g)
488d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
489d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x10,x3,ror#61
490d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x11,x11,x6,lsr#7	// sigma0(X[i+1])
491d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x16			// h+=Sigma1(e)
492d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x20			// Maj(a,b,c)
493d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x12,x27,ror#39	// Sigma0(a)
494d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x10,x3,lsr#6	// sigma1(X[i+14])
495d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x5,x5,x14
496d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x26			// d+=h
497d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x19			// h+=Maj(a,b,c)
498d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
499d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x5,x5,x11
500d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Sigma0(a)
501d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x5,x5,x10
502d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x10,[sp,#24]
503d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x13,[sp,#16]
504d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x22,#14
505d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x19			// h+=K[i]
506d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x12,x7,#1
507d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x23,x22
508d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x11,x4,#19
509d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x24,x22
510d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x13,x26,#28
511d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x5			// h+=X[i]
512d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x22,ror#18
513d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x12,x12,x7,ror#8
514d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
515d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x26,x27			// a^b, b^c in next round
516d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x22,ror#41	// Sigma1(e)
517d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x13,x13,x26,ror#34
518d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Ch(e,f,g)
519d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
520d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x11,x11,x4,ror#61
521d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x12,x12,x7,lsr#7	// sigma0(X[i+1])
522d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x16			// h+=Sigma1(e)
523d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x27			// Maj(a,b,c)
524d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x13,x26,ror#39	// Sigma0(a)
525d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x11,x11,x4,lsr#6	// sigma1(X[i+14])
526d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x6,x6,x15
527d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x25			// d+=h
528d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x28			// h+=Maj(a,b,c)
529d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
530d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x6,x6,x12
531d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Sigma0(a)
532d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x6,x6,x11
533d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x11,[sp,#0]
534d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x14,[sp,#24]
535d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x21,#14
536d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x28			// h+=K[i]
537d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x13,x8,#1
538d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x22,x21
539d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x12,x5,#19
540d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x23,x21
541d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x14,x25,#28
542d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x6			// h+=X[i]
543d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x21,ror#18
544d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x13,x13,x8,ror#8
545d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
546d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x25,x26			// a^b, b^c in next round
547d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x21,ror#41	// Sigma1(e)
548d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x14,x14,x25,ror#34
549d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Ch(e,f,g)
550d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
551d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x12,x12,x5,ror#61
552d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x13,x13,x8,lsr#7	// sigma0(X[i+1])
553d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x16			// h+=Sigma1(e)
554d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x26			// Maj(a,b,c)
555d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x14,x25,ror#39	// Sigma0(a)
556d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x12,x12,x5,lsr#6	// sigma1(X[i+14])
557d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x7,x7,x0
558d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x24			// d+=h
559d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x19			// h+=Maj(a,b,c)
560d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
561d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x7,x7,x13
562d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Sigma0(a)
563d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x7,x7,x12
564d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x12,[sp,#8]
565d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x15,[sp,#0]
566d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x20,#14
567d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x19			// h+=K[i]
568d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x14,x9,#1
569d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x21,x20
570d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x13,x6,#19
571d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x22,x20
572d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x15,x24,#28
573d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x7			// h+=X[i]
574d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x20,ror#18
575d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x14,x14,x9,ror#8
576d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
577d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x24,x25			// a^b, b^c in next round
578d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x20,ror#41	// Sigma1(e)
579d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x15,x15,x24,ror#34
580d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Ch(e,f,g)
581d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
582d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x13,x13,x6,ror#61
583d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x14,x14,x9,lsr#7	// sigma0(X[i+1])
584d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x16			// h+=Sigma1(e)
585d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x25			// Maj(a,b,c)
586d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x15,x24,ror#39	// Sigma0(a)
587d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x13,x13,x6,lsr#6	// sigma1(X[i+14])
588d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x8,x8,x1
589d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x23			// d+=h
590d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x28			// h+=Maj(a,b,c)
591d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
592d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x8,x8,x14
593d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Sigma0(a)
594d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x8,x8,x13
595d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x13,[sp,#16]
596d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x0,[sp,#8]
597d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x27,#14
598d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x28			// h+=K[i]
599d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x15,x10,#1
600d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x20,x27
601d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x14,x7,#19
602d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x21,x27
603d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x0,x23,#28
604d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x8			// h+=X[i]
605d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x27,ror#18
606d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x15,x15,x10,ror#8
607d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
608d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x23,x24			// a^b, b^c in next round
609d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x27,ror#41	// Sigma1(e)
610d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x0,x0,x23,ror#34
611d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Ch(e,f,g)
612d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
613d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x14,x14,x7,ror#61
614d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x15,x15,x10,lsr#7	// sigma0(X[i+1])
615d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x16			// h+=Sigma1(e)
616d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x24			// Maj(a,b,c)
617d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x0,x23,ror#39	// Sigma0(a)
618d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x14,x14,x7,lsr#6	// sigma1(X[i+14])
619d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x9,x9,x2
620d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x22			// d+=h
621d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x19			// h+=Maj(a,b,c)
622d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
623d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x9,x9,x15
624d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Sigma0(a)
625d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x9,x9,x14
626d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x14,[sp,#24]
627d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x1,[sp,#16]
628d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x26,#14
629d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x19			// h+=K[i]
630d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x0,x11,#1
631d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x27,x26
632d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x15,x8,#19
633d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x20,x26
634d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x1,x22,#28
635d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x9			// h+=X[i]
636d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x26,ror#18
637d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x0,x0,x11,ror#8
638d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
639d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x22,x23			// a^b, b^c in next round
640d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x26,ror#41	// Sigma1(e)
641d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x1,x1,x22,ror#34
642d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Ch(e,f,g)
643d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
644d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x15,x15,x8,ror#61
645d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x0,x0,x11,lsr#7	// sigma0(X[i+1])
646d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x16			// h+=Sigma1(e)
647d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x23			// Maj(a,b,c)
648d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x1,x22,ror#39	// Sigma0(a)
649d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x15,x15,x8,lsr#6	// sigma1(X[i+14])
650d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x10,x10,x3
651d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x21			// d+=h
652d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x28			// h+=Maj(a,b,c)
653d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
654d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x10,x10,x0
655d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Sigma0(a)
656d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x10,x10,x15
657d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x15,[sp,#0]
658d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x2,[sp,#24]
659d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x25,#14
660d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x28			// h+=K[i]
661d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x1,x12,#1
662d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x26,x25
663d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x0,x9,#19
664d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x27,x25
665d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x2,x21,#28
666d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x10			// h+=X[i]
667d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x25,ror#18
668d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x1,x1,x12,ror#8
669d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
670d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x21,x22			// a^b, b^c in next round
671d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x25,ror#41	// Sigma1(e)
672d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x2,x2,x21,ror#34
673d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Ch(e,f,g)
674d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
675d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x0,x0,x9,ror#61
676d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x1,x1,x12,lsr#7	// sigma0(X[i+1])
677d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x16			// h+=Sigma1(e)
678d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x22			// Maj(a,b,c)
679d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x2,x21,ror#39	// Sigma0(a)
680d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x0,x0,x9,lsr#6	// sigma1(X[i+14])
681d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x11,x11,x4
682d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x20			// d+=h
683d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x19			// h+=Maj(a,b,c)
684d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
685d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x11,x11,x1
686d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Sigma0(a)
687d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x11,x11,x0
688d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x0,[sp,#8]
689d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x3,[sp,#0]
690d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x24,#14
691d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x19			// h+=K[i]
692d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x2,x13,#1
693d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x25,x24
694d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x1,x10,#19
695d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x26,x24
696d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x3,x20,#28
697d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x11			// h+=X[i]
698d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x24,ror#18
699d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x2,x2,x13,ror#8
700d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
701d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x20,x21			// a^b, b^c in next round
702d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x24,ror#41	// Sigma1(e)
703d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x3,x3,x20,ror#34
704d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Ch(e,f,g)
705d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
706d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x1,x1,x10,ror#61
707d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x2,x2,x13,lsr#7	// sigma0(X[i+1])
708d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x16			// h+=Sigma1(e)
709d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x21			// Maj(a,b,c)
710d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x3,x20,ror#39	// Sigma0(a)
711d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x1,x1,x10,lsr#6	// sigma1(X[i+14])
712d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x12,x12,x5
713d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x27			// d+=h
714d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x28			// h+=Maj(a,b,c)
715d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
716d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x12,x12,x2
717d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x17			// h+=Sigma0(a)
718d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x12,x12,x1
719d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x1,[sp,#16]
720d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x4,[sp,#8]
721d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x23,#14
722d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x28			// h+=K[i]
723d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x3,x14,#1
724d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x24,x23
725d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x2,x11,#19
726d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x25,x23
727d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x4,x27,#28
728d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x12			// h+=X[i]
729d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x23,ror#18
730d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x3,x3,x14,ror#8
731d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
732d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x27,x20			// a^b, b^c in next round
733d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x23,ror#41	// Sigma1(e)
734d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x4,x4,x27,ror#34
735d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Ch(e,f,g)
736d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
737d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x2,x2,x11,ror#61
738d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x3,x3,x14,lsr#7	// sigma0(X[i+1])
739d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x16			// h+=Sigma1(e)
740d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x20			// Maj(a,b,c)
741d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x4,x27,ror#39	// Sigma0(a)
742d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x2,x2,x11,lsr#6	// sigma1(X[i+14])
743d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x13,x13,x6
744d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x26			// d+=h
745d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x19			// h+=Maj(a,b,c)
746d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
747d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x13,x13,x3
748d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x17			// h+=Sigma0(a)
749d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x13,x13,x2
750d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x2,[sp,#24]
751d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x5,[sp,#16]
752d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x22,#14
753d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x19			// h+=K[i]
754d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x4,x15,#1
755d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x23,x22
756d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x3,x12,#19
757d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x24,x22
758d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x5,x26,#28
759d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x13			// h+=X[i]
760d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x22,ror#18
761d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x4,x4,x15,ror#8
762d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
763d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x26,x27			// a^b, b^c in next round
764d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x22,ror#41	// Sigma1(e)
765d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x5,x5,x26,ror#34
766d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Ch(e,f,g)
767d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
768d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x3,x3,x12,ror#61
769d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x4,x4,x15,lsr#7	// sigma0(X[i+1])
770d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x16			// h+=Sigma1(e)
771d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x27			// Maj(a,b,c)
772d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x5,x26,ror#39	// Sigma0(a)
773d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x3,x3,x12,lsr#6	// sigma1(X[i+14])
774d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x14,x14,x7
775d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x25			// d+=h
776d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x28			// h+=Maj(a,b,c)
777d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
778d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x14,x14,x4
779d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x17			// h+=Sigma0(a)
780d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x14,x14,x3
781d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x3,[sp,#0]
782d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x6,[sp,#24]
783d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x21,#14
784d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x28			// h+=K[i]
785d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x5,x0,#1
786d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x22,x21
787d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x4,x13,#19
788d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x23,x21
789d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x6,x25,#28
790d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x14			// h+=X[i]
791d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x21,ror#18
792d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x5,x5,x0,ror#8
793d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
794d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x25,x26			// a^b, b^c in next round
795d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x21,ror#41	// Sigma1(e)
796d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x6,x25,ror#34
797d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Ch(e,f,g)
798d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
799d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x4,x4,x13,ror#61
800d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x5,x5,x0,lsr#7	// sigma0(X[i+1])
801d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x16			// h+=Sigma1(e)
802d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x26			// Maj(a,b,c)
803d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x6,x25,ror#39	// Sigma0(a)
804d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x4,x4,x13,lsr#6	// sigma1(X[i+14])
805d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x15,x15,x8
806d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x24			// d+=h
807d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x19			// h+=Maj(a,b,c)
808d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
809d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x15,x15,x5
810d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x17			// h+=Sigma0(a)
811d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x15,x15,x4
812d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x4,[sp,#8]
813d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x7,[sp,#0]
814d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x20,#14
815d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x19			// h+=K[i]
816d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x6,x1,#1
817d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x21,x20
818d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x5,x14,#19
819d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x22,x20
820d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x7,x24,#28
821d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x15			// h+=X[i]
822d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x20,ror#18
823d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x6,x1,ror#8
824d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
825d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x24,x25			// a^b, b^c in next round
826d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x20,ror#41	// Sigma1(e)
827d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x7,x24,ror#34
828d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Ch(e,f,g)
829d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
830d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x5,x5,x14,ror#61
831d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x6,x1,lsr#7	// sigma0(X[i+1])
832d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x16			// h+=Sigma1(e)
833d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x25			// Maj(a,b,c)
834d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x7,x24,ror#39	// Sigma0(a)
835d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x5,x5,x14,lsr#6	// sigma1(X[i+14])
836d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x0,x0,x9
837d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x23			// d+=h
838d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x28			// h+=Maj(a,b,c)
839d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
840d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x0,x0,x6
841d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x17			// h+=Sigma0(a)
842d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x0,x0,x5
843d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x5,[sp,#16]
844d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x8,[sp,#8]
845d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x27,#14
846d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x28			// h+=K[i]
847d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x7,x2,#1
848d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x20,x27
849d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x6,x15,#19
850d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x21,x27
851d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x8,x23,#28
852d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x0			// h+=X[i]
853d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x27,ror#18
854d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x7,x2,ror#8
855d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
856d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x23,x24			// a^b, b^c in next round
857d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x27,ror#41	// Sigma1(e)
858d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x23,ror#34
859d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Ch(e,f,g)
860d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
861d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x6,x15,ror#61
862d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x7,x2,lsr#7	// sigma0(X[i+1])
863d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x16			// h+=Sigma1(e)
864d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x24			// Maj(a,b,c)
865d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x8,x23,ror#39	// Sigma0(a)
866d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x6,x6,x15,lsr#6	// sigma1(X[i+14])
867d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x1,x1,x10
868d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x22			// d+=h
869d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x19			// h+=Maj(a,b,c)
870d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
871d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x1,x1,x7
872d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x17			// h+=Sigma0(a)
873d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x1,x1,x6
874d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x6,[sp,#24]
875d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x9,[sp,#16]
876d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x26,#14
877d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x19			// h+=K[i]
878d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x8,x3,#1
879d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x27,x26
880d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x7,x0,#19
881d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x19,x20,x26
882d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x9,x22,#28
883d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x1			// h+=X[i]
884d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x26,ror#18
885d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x3,ror#8
886d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x19			// Ch(e,f,g)
887d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x22,x23			// a^b, b^c in next round
888d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x26,ror#41	// Sigma1(e)
889d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x22,ror#34
890d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Ch(e,f,g)
891d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x28,x28,x19			// (b^c)&=(a^b)
892d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x7,x0,ror#61
893d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x3,lsr#7	// sigma0(X[i+1])
894d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x16			// h+=Sigma1(e)
895d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x28,x23			// Maj(a,b,c)
896d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x9,x22,ror#39	// Sigma0(a)
897d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x7,x7,x0,lsr#6	// sigma1(X[i+14])
898d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x2,x2,x11
899d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x21			// d+=h
900d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x28			// h+=Maj(a,b,c)
901d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x28,[x30],#8		// *K++, x19 in next round
902d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x2,x2,x8
903d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x17			// h+=Sigma0(a)
904d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x2,x2,x7
905d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x7,[sp,#0]
906d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	str	x10,[sp,#24]
907d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x16,x25,#14
908d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x28			// h+=K[i]
909d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x9,x4,#1
910d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x17,x26,x25
911d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x8,x1,#19
912d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	bic	x28,x27,x25
913d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ror	x10,x21,#28
914d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x2			// h+=X[i]
915d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x25,ror#18
916d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x4,ror#8
917d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	orr	x17,x17,x28			// Ch(e,f,g)
918d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x28,x21,x22			// a^b, b^c in next round
919d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x16,x16,x25,ror#41	// Sigma1(e)
920d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x10,x10,x21,ror#34
921d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Ch(e,f,g)
922d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	and	x19,x19,x28			// (b^c)&=(a^b)
923d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x1,ror#61
924d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x9,x9,x4,lsr#7	// sigma0(X[i+1])
925d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x16			// h+=Sigma1(e)
926d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x19,x19,x22			// Maj(a,b,c)
927d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x17,x10,x21,ror#39	// Sigma0(a)
928d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	eor	x8,x8,x1,lsr#6	// sigma1(X[i+14])
929d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x3,x3,x12
930d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x20			// d+=h
931d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x19			// h+=Maj(a,b,c)
932d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x19,[x30],#8		// *K++, x28 in next round
933d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x3,x3,x9
934d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x17			// h+=Sigma0(a)
935d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x3,x3,x8
936d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	cbnz	x19,.Loop_16_xx
937d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
938d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x0,x2,[x29,#96]
939d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldr	x1,[x29,#112]
940d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	sub	x30,x30,#648		// rewind
941d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
942d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x3,x4,[x0]
943d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x5,x6,[x0,#2*8]
944d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x1,x1,#14*8			// advance input pointer
945d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x7,x8,[x0,#4*8]
946d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x20,x20,x3
947d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x9,x10,[x0,#6*8]
948d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x21,x21,x4
949d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x22,x22,x5
950d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x23,x23,x6
951d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x20,x21,[x0]
952d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x24,x24,x7
953d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x25,x25,x8
954d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x22,x23,[x0,#2*8]
955d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x26,x26,x9
956d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	x27,x27,x10
957d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	cmp	x1,x2
958d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x24,x25,[x0,#4*8]
959d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	stp	x26,x27,[x0,#6*8]
960d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	b.ne	.Loop
961d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
962d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x19,x20,[x29,#16]
963d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	add	sp,sp,#4*8
964d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x21,x22,[x29,#32]
965d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x23,x24,[x29,#48]
966d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x25,x26,[x29,#64]
967d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x27,x28,[x29,#80]
968d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ldp	x29,x30,[sp],#128
969d9e397b599b13d642138480a28c14db7a136bf0Adam Langley	ret
970d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size	sha512_block_data_order,.-sha512_block_data_order
971d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
972d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align	6
973e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.type	.LK512,%object
974e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.LK512:
975e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x428a2f98d728ae22,0x7137449123ef65cd
976e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
977e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x3956c25bf348b538,0x59f111f1b605d019
978e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x923f82a4af194f9b,0xab1c5ed5da6d8118
979e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xd807aa98a3030242,0x12835b0145706fbe
980e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
981e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x72be5d74f27b896f,0x80deb1fe3b1696b1
982e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x9bdc06a725c71235,0xc19bf174cf692694
983e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xe49b69c19ef14ad2,0xefbe4786384f25e3
984e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
985e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
986e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
987e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x983e5152ee66dfab,0xa831c66d2db43210
988e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
989e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
990e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x06ca6351e003826f,0x142929670a0e6e70
991e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x27b70a8546d22ffc,0x2e1b21385c26c926
992e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
993e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x650a73548baf63de,0x766a0abb3c77b2a8
994e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x81c2c92e47edaee6,0x92722c851482353b
995e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xa2bfe8a14cf10364,0xa81a664bbc423001
996e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xc24b8b70d0f89791,0xc76c51a30654be30
997e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xd192e819d6ef5218,0xd69906245565a910
998e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xf40e35855771202a,0x106aa07032bbd1b8
999e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x19a4c116b8d2d0c8,0x1e376c085141ab53
1000e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1001e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1002e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1003e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x748f82ee5defb2fc,0x78a5636f43172f60
1004e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x84c87814a1f0ab72,0x8cc702081a6439ec
1005e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x90befffa23631e28,0xa4506cebde82bde9
1006e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xbef9a3f7b2c67915,0xc67178f2e372532b
1007e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xca273eceea26619c,0xd186b8c721c0c207
1008e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1009e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
1010e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x113f9804bef90dae,0x1b710b35131c471b
1011e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x28db77f523047d84,0x32caab7b40c72493
1012e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1013e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1014e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0x5fcb6fab3ad6faec,0x6c44198c4a475817
1015e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	0	// terminator
1016e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.size	.LK512,.-.LK512
1017d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align	3
1018d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.LOPENSSL_armcap_P:
1019e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.quad	OPENSSL_armcap_P-.
1020e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.byte	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1021e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley.align	2
1022d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align	2
1023d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.comm	OPENSSL_armcap_P,4,4
1024