xref: /freebsd/sys/crypto/openssl/aarch64/sha1-armv8.S (revision 19261079b74319502c6ffa1249920079f0f69a72)
1/* $FreeBSD$ */
2/* Do not modify. This file is auto-generated from sha1-armv8.pl. */
3#include "arm_arch.h"
4
5.text
6
7
8.hidden	OPENSSL_armcap_P
9.globl	sha1_block_data_order
10.type	sha1_block_data_order,%function
11.align	6
12sha1_block_data_order:
13#ifdef	__ILP32__
14	ldrsw	x16,.LOPENSSL_armcap_P
15#else
16	ldr	x16,.LOPENSSL_armcap_P
17#endif
18	adr	x17,.LOPENSSL_armcap_P
19	add	x16,x16,x17
20	ldr	w16,[x16]
21	tst	w16,#ARMV8_SHA1
22	b.ne	.Lv8_entry
23
24	stp	x29,x30,[sp,#-96]!
25	add	x29,sp,#0
26	stp	x19,x20,[sp,#16]
27	stp	x21,x22,[sp,#32]
28	stp	x23,x24,[sp,#48]
29	stp	x25,x26,[sp,#64]
30	stp	x27,x28,[sp,#80]
31
32	ldp	w20,w21,[x0]
33	ldp	w22,w23,[x0,#8]
34	ldr	w24,[x0,#16]
35
36.Loop:
37	ldr	x3,[x1],#64
38	movz	w28,#0x7999
39	sub	x2,x2,#1
40	movk	w28,#0x5a82,lsl#16
41#ifdef	__ARMEB__
42	ror	x3,x3,#32
43#else
44	rev32	x3,x3
45#endif
46	add	w24,w24,w28		// warm it up
47	add	w24,w24,w3
48	lsr	x4,x3,#32
49	ldr	x5,[x1,#-56]
50	bic	w25,w23,w21
51	and	w26,w22,w21
52	ror	w27,w20,#27
53	add	w23,w23,w28		// future e+=K
54	orr	w25,w25,w26
55	add	w24,w24,w27		// e+=rot(a,5)
56	ror	w21,w21,#2
57	add	w23,w23,w4	// future e+=X[i]
58	add	w24,w24,w25		// e+=F(b,c,d)
59#ifdef	__ARMEB__
60	ror	x5,x5,#32
61#else
62	rev32	x5,x5
63#endif
64	bic	w25,w22,w20
65	and	w26,w21,w20
66	ror	w27,w24,#27
67	add	w22,w22,w28		// future e+=K
68	orr	w25,w25,w26
69	add	w23,w23,w27		// e+=rot(a,5)
70	ror	w20,w20,#2
71	add	w22,w22,w5	// future e+=X[i]
72	add	w23,w23,w25		// e+=F(b,c,d)
73	lsr	x6,x5,#32
74	ldr	x7,[x1,#-48]
75	bic	w25,w21,w24
76	and	w26,w20,w24
77	ror	w27,w23,#27
78	add	w21,w21,w28		// future e+=K
79	orr	w25,w25,w26
80	add	w22,w22,w27		// e+=rot(a,5)
81	ror	w24,w24,#2
82	add	w21,w21,w6	// future e+=X[i]
83	add	w22,w22,w25		// e+=F(b,c,d)
84#ifdef	__ARMEB__
85	ror	x7,x7,#32
86#else
87	rev32	x7,x7
88#endif
89	bic	w25,w20,w23
90	and	w26,w24,w23
91	ror	w27,w22,#27
92	add	w20,w20,w28		// future e+=K
93	orr	w25,w25,w26
94	add	w21,w21,w27		// e+=rot(a,5)
95	ror	w23,w23,#2
96	add	w20,w20,w7	// future e+=X[i]
97	add	w21,w21,w25		// e+=F(b,c,d)
98	lsr	x8,x7,#32
99	ldr	x9,[x1,#-40]
100	bic	w25,w24,w22
101	and	w26,w23,w22
102	ror	w27,w21,#27
103	add	w24,w24,w28		// future e+=K
104	orr	w25,w25,w26
105	add	w20,w20,w27		// e+=rot(a,5)
106	ror	w22,w22,#2
107	add	w24,w24,w8	// future e+=X[i]
108	add	w20,w20,w25		// e+=F(b,c,d)
109#ifdef	__ARMEB__
110	ror	x9,x9,#32
111#else
112	rev32	x9,x9
113#endif
114	bic	w25,w23,w21
115	and	w26,w22,w21
116	ror	w27,w20,#27
117	add	w23,w23,w28		// future e+=K
118	orr	w25,w25,w26
119	add	w24,w24,w27		// e+=rot(a,5)
120	ror	w21,w21,#2
121	add	w23,w23,w9	// future e+=X[i]
122	add	w24,w24,w25		// e+=F(b,c,d)
123	lsr	x10,x9,#32
124	ldr	x11,[x1,#-32]
125	bic	w25,w22,w20
126	and	w26,w21,w20
127	ror	w27,w24,#27
128	add	w22,w22,w28		// future e+=K
129	orr	w25,w25,w26
130	add	w23,w23,w27		// e+=rot(a,5)
131	ror	w20,w20,#2
132	add	w22,w22,w10	// future e+=X[i]
133	add	w23,w23,w25		// e+=F(b,c,d)
134#ifdef	__ARMEB__
135	ror	x11,x11,#32
136#else
137	rev32	x11,x11
138#endif
139	bic	w25,w21,w24
140	and	w26,w20,w24
141	ror	w27,w23,#27
142	add	w21,w21,w28		// future e+=K
143	orr	w25,w25,w26
144	add	w22,w22,w27		// e+=rot(a,5)
145	ror	w24,w24,#2
146	add	w21,w21,w11	// future e+=X[i]
147	add	w22,w22,w25		// e+=F(b,c,d)
148	lsr	x12,x11,#32
149	ldr	x13,[x1,#-24]
150	bic	w25,w20,w23
151	and	w26,w24,w23
152	ror	w27,w22,#27
153	add	w20,w20,w28		// future e+=K
154	orr	w25,w25,w26
155	add	w21,w21,w27		// e+=rot(a,5)
156	ror	w23,w23,#2
157	add	w20,w20,w12	// future e+=X[i]
158	add	w21,w21,w25		// e+=F(b,c,d)
159#ifdef	__ARMEB__
160	ror	x13,x13,#32
161#else
162	rev32	x13,x13
163#endif
164	bic	w25,w24,w22
165	and	w26,w23,w22
166	ror	w27,w21,#27
167	add	w24,w24,w28		// future e+=K
168	orr	w25,w25,w26
169	add	w20,w20,w27		// e+=rot(a,5)
170	ror	w22,w22,#2
171	add	w24,w24,w13	// future e+=X[i]
172	add	w20,w20,w25		// e+=F(b,c,d)
173	lsr	x14,x13,#32
174	ldr	x15,[x1,#-16]
175	bic	w25,w23,w21
176	and	w26,w22,w21
177	ror	w27,w20,#27
178	add	w23,w23,w28		// future e+=K
179	orr	w25,w25,w26
180	add	w24,w24,w27		// e+=rot(a,5)
181	ror	w21,w21,#2
182	add	w23,w23,w14	// future e+=X[i]
183	add	w24,w24,w25		// e+=F(b,c,d)
184#ifdef	__ARMEB__
185	ror	x15,x15,#32
186#else
187	rev32	x15,x15
188#endif
189	bic	w25,w22,w20
190	and	w26,w21,w20
191	ror	w27,w24,#27
192	add	w22,w22,w28		// future e+=K
193	orr	w25,w25,w26
194	add	w23,w23,w27		// e+=rot(a,5)
195	ror	w20,w20,#2
196	add	w22,w22,w15	// future e+=X[i]
197	add	w23,w23,w25		// e+=F(b,c,d)
198	lsr	x16,x15,#32
199	ldr	x17,[x1,#-8]
200	bic	w25,w21,w24
201	and	w26,w20,w24
202	ror	w27,w23,#27
203	add	w21,w21,w28		// future e+=K
204	orr	w25,w25,w26
205	add	w22,w22,w27		// e+=rot(a,5)
206	ror	w24,w24,#2
207	add	w21,w21,w16	// future e+=X[i]
208	add	w22,w22,w25		// e+=F(b,c,d)
209#ifdef	__ARMEB__
210	ror	x17,x17,#32
211#else
212	rev32	x17,x17
213#endif
214	bic	w25,w20,w23
215	and	w26,w24,w23
216	ror	w27,w22,#27
217	add	w20,w20,w28		// future e+=K
218	orr	w25,w25,w26
219	add	w21,w21,w27		// e+=rot(a,5)
220	ror	w23,w23,#2
221	add	w20,w20,w17	// future e+=X[i]
222	add	w21,w21,w25		// e+=F(b,c,d)
223	lsr	x19,x17,#32
224	eor	w3,w3,w5
225	bic	w25,w24,w22
226	and	w26,w23,w22
227	ror	w27,w21,#27
228	eor	w3,w3,w11
229	add	w24,w24,w28		// future e+=K
230	orr	w25,w25,w26
231	add	w20,w20,w27		// e+=rot(a,5)
232	eor	w3,w3,w16
233	ror	w22,w22,#2
234	add	w24,w24,w19	// future e+=X[i]
235	add	w20,w20,w25		// e+=F(b,c,d)
236	ror	w3,w3,#31
237	eor	w4,w4,w6
238	bic	w25,w23,w21
239	and	w26,w22,w21
240	ror	w27,w20,#27
241	eor	w4,w4,w12
242	add	w23,w23,w28		// future e+=K
243	orr	w25,w25,w26
244	add	w24,w24,w27		// e+=rot(a,5)
245	eor	w4,w4,w17
246	ror	w21,w21,#2
247	add	w23,w23,w3	// future e+=X[i]
248	add	w24,w24,w25		// e+=F(b,c,d)
249	ror	w4,w4,#31
250	eor	w5,w5,w7
251	bic	w25,w22,w20
252	and	w26,w21,w20
253	ror	w27,w24,#27
254	eor	w5,w5,w13
255	add	w22,w22,w28		// future e+=K
256	orr	w25,w25,w26
257	add	w23,w23,w27		// e+=rot(a,5)
258	eor	w5,w5,w19
259	ror	w20,w20,#2
260	add	w22,w22,w4	// future e+=X[i]
261	add	w23,w23,w25		// e+=F(b,c,d)
262	ror	w5,w5,#31
263	eor	w6,w6,w8
264	bic	w25,w21,w24
265	and	w26,w20,w24
266	ror	w27,w23,#27
267	eor	w6,w6,w14
268	add	w21,w21,w28		// future e+=K
269	orr	w25,w25,w26
270	add	w22,w22,w27		// e+=rot(a,5)
271	eor	w6,w6,w3
272	ror	w24,w24,#2
273	add	w21,w21,w5	// future e+=X[i]
274	add	w22,w22,w25		// e+=F(b,c,d)
275	ror	w6,w6,#31
276	eor	w7,w7,w9
277	bic	w25,w20,w23
278	and	w26,w24,w23
279	ror	w27,w22,#27
280	eor	w7,w7,w15
281	add	w20,w20,w28		// future e+=K
282	orr	w25,w25,w26
283	add	w21,w21,w27		// e+=rot(a,5)
284	eor	w7,w7,w4
285	ror	w23,w23,#2
286	add	w20,w20,w6	// future e+=X[i]
287	add	w21,w21,w25		// e+=F(b,c,d)
288	ror	w7,w7,#31
289	movz	w28,#0xeba1
290	movk	w28,#0x6ed9,lsl#16
291	eor	w8,w8,w10
292	bic	w25,w24,w22
293	and	w26,w23,w22
294	ror	w27,w21,#27
295	eor	w8,w8,w16
296	add	w24,w24,w28		// future e+=K
297	orr	w25,w25,w26
298	add	w20,w20,w27		// e+=rot(a,5)
299	eor	w8,w8,w5
300	ror	w22,w22,#2
301	add	w24,w24,w7	// future e+=X[i]
302	add	w20,w20,w25		// e+=F(b,c,d)
303	ror	w8,w8,#31
304	eor	w9,w9,w11
305	eor	w25,w23,w21
306	ror	w27,w20,#27
307	add	w23,w23,w28		// future e+=K
308	eor	w9,w9,w17
309	eor	w25,w25,w22
310	add	w24,w24,w27		// e+=rot(a,5)
311	ror	w21,w21,#2
312	eor	w9,w9,w6
313	add	w23,w23,w8	// future e+=X[i]
314	add	w24,w24,w25		// e+=F(b,c,d)
315	ror	w9,w9,#31
316	eor	w10,w10,w12
317	eor	w25,w22,w20
318	ror	w27,w24,#27
319	add	w22,w22,w28		// future e+=K
320	eor	w10,w10,w19
321	eor	w25,w25,w21
322	add	w23,w23,w27		// e+=rot(a,5)
323	ror	w20,w20,#2
324	eor	w10,w10,w7
325	add	w22,w22,w9	// future e+=X[i]
326	add	w23,w23,w25		// e+=F(b,c,d)
327	ror	w10,w10,#31
328	eor	w11,w11,w13
329	eor	w25,w21,w24
330	ror	w27,w23,#27
331	add	w21,w21,w28		// future e+=K
332	eor	w11,w11,w3
333	eor	w25,w25,w20
334	add	w22,w22,w27		// e+=rot(a,5)
335	ror	w24,w24,#2
336	eor	w11,w11,w8
337	add	w21,w21,w10	// future e+=X[i]
338	add	w22,w22,w25		// e+=F(b,c,d)
339	ror	w11,w11,#31
340	eor	w12,w12,w14
341	eor	w25,w20,w23
342	ror	w27,w22,#27
343	add	w20,w20,w28		// future e+=K
344	eor	w12,w12,w4
345	eor	w25,w25,w24
346	add	w21,w21,w27		// e+=rot(a,5)
347	ror	w23,w23,#2
348	eor	w12,w12,w9
349	add	w20,w20,w11	// future e+=X[i]
350	add	w21,w21,w25		// e+=F(b,c,d)
351	ror	w12,w12,#31
352	eor	w13,w13,w15
353	eor	w25,w24,w22
354	ror	w27,w21,#27
355	add	w24,w24,w28		// future e+=K
356	eor	w13,w13,w5
357	eor	w25,w25,w23
358	add	w20,w20,w27		// e+=rot(a,5)
359	ror	w22,w22,#2
360	eor	w13,w13,w10
361	add	w24,w24,w12	// future e+=X[i]
362	add	w20,w20,w25		// e+=F(b,c,d)
363	ror	w13,w13,#31
364	eor	w14,w14,w16
365	eor	w25,w23,w21
366	ror	w27,w20,#27
367	add	w23,w23,w28		// future e+=K
368	eor	w14,w14,w6
369	eor	w25,w25,w22
370	add	w24,w24,w27		// e+=rot(a,5)
371	ror	w21,w21,#2
372	eor	w14,w14,w11
373	add	w23,w23,w13	// future e+=X[i]
374	add	w24,w24,w25		// e+=F(b,c,d)
375	ror	w14,w14,#31
376	eor	w15,w15,w17
377	eor	w25,w22,w20
378	ror	w27,w24,#27
379	add	w22,w22,w28		// future e+=K
380	eor	w15,w15,w7
381	eor	w25,w25,w21
382	add	w23,w23,w27		// e+=rot(a,5)
383	ror	w20,w20,#2
384	eor	w15,w15,w12
385	add	w22,w22,w14	// future e+=X[i]
386	add	w23,w23,w25		// e+=F(b,c,d)
387	ror	w15,w15,#31
388	eor	w16,w16,w19
389	eor	w25,w21,w24
390	ror	w27,w23,#27
391	add	w21,w21,w28		// future e+=K
392	eor	w16,w16,w8
393	eor	w25,w25,w20
394	add	w22,w22,w27		// e+=rot(a,5)
395	ror	w24,w24,#2
396	eor	w16,w16,w13
397	add	w21,w21,w15	// future e+=X[i]
398	add	w22,w22,w25		// e+=F(b,c,d)
399	ror	w16,w16,#31
400	eor	w17,w17,w3
401	eor	w25,w20,w23
402	ror	w27,w22,#27
403	add	w20,w20,w28		// future e+=K
404	eor	w17,w17,w9
405	eor	w25,w25,w24
406	add	w21,w21,w27		// e+=rot(a,5)
407	ror	w23,w23,#2
408	eor	w17,w17,w14
409	add	w20,w20,w16	// future e+=X[i]
410	add	w21,w21,w25		// e+=F(b,c,d)
411	ror	w17,w17,#31
412	eor	w19,w19,w4
413	eor	w25,w24,w22
414	ror	w27,w21,#27
415	add	w24,w24,w28		// future e+=K
416	eor	w19,w19,w10
417	eor	w25,w25,w23
418	add	w20,w20,w27		// e+=rot(a,5)
419	ror	w22,w22,#2
420	eor	w19,w19,w15
421	add	w24,w24,w17	// future e+=X[i]
422	add	w20,w20,w25		// e+=F(b,c,d)
423	ror	w19,w19,#31
424	eor	w3,w3,w5
425	eor	w25,w23,w21
426	ror	w27,w20,#27
427	add	w23,w23,w28		// future e+=K
428	eor	w3,w3,w11
429	eor	w25,w25,w22
430	add	w24,w24,w27		// e+=rot(a,5)
431	ror	w21,w21,#2
432	eor	w3,w3,w16
433	add	w23,w23,w19	// future e+=X[i]
434	add	w24,w24,w25		// e+=F(b,c,d)
435	ror	w3,w3,#31
436	eor	w4,w4,w6
437	eor	w25,w22,w20
438	ror	w27,w24,#27
439	add	w22,w22,w28		// future e+=K
440	eor	w4,w4,w12
441	eor	w25,w25,w21
442	add	w23,w23,w27		// e+=rot(a,5)
443	ror	w20,w20,#2
444	eor	w4,w4,w17
445	add	w22,w22,w3	// future e+=X[i]
446	add	w23,w23,w25		// e+=F(b,c,d)
447	ror	w4,w4,#31
448	eor	w5,w5,w7
449	eor	w25,w21,w24
450	ror	w27,w23,#27
451	add	w21,w21,w28		// future e+=K
452	eor	w5,w5,w13
453	eor	w25,w25,w20
454	add	w22,w22,w27		// e+=rot(a,5)
455	ror	w24,w24,#2
456	eor	w5,w5,w19
457	add	w21,w21,w4	// future e+=X[i]
458	add	w22,w22,w25		// e+=F(b,c,d)
459	ror	w5,w5,#31
460	eor	w6,w6,w8
461	eor	w25,w20,w23
462	ror	w27,w22,#27
463	add	w20,w20,w28		// future e+=K
464	eor	w6,w6,w14
465	eor	w25,w25,w24
466	add	w21,w21,w27		// e+=rot(a,5)
467	ror	w23,w23,#2
468	eor	w6,w6,w3
469	add	w20,w20,w5	// future e+=X[i]
470	add	w21,w21,w25		// e+=F(b,c,d)
471	ror	w6,w6,#31
472	eor	w7,w7,w9
473	eor	w25,w24,w22
474	ror	w27,w21,#27
475	add	w24,w24,w28		// future e+=K
476	eor	w7,w7,w15
477	eor	w25,w25,w23
478	add	w20,w20,w27		// e+=rot(a,5)
479	ror	w22,w22,#2
480	eor	w7,w7,w4
481	add	w24,w24,w6	// future e+=X[i]
482	add	w20,w20,w25		// e+=F(b,c,d)
483	ror	w7,w7,#31
484	eor	w8,w8,w10
485	eor	w25,w23,w21
486	ror	w27,w20,#27
487	add	w23,w23,w28		// future e+=K
488	eor	w8,w8,w16
489	eor	w25,w25,w22
490	add	w24,w24,w27		// e+=rot(a,5)
491	ror	w21,w21,#2
492	eor	w8,w8,w5
493	add	w23,w23,w7	// future e+=X[i]
494	add	w24,w24,w25		// e+=F(b,c,d)
495	ror	w8,w8,#31
496	eor	w9,w9,w11
497	eor	w25,w22,w20
498	ror	w27,w24,#27
499	add	w22,w22,w28		// future e+=K
500	eor	w9,w9,w17
501	eor	w25,w25,w21
502	add	w23,w23,w27		// e+=rot(a,5)
503	ror	w20,w20,#2
504	eor	w9,w9,w6
505	add	w22,w22,w8	// future e+=X[i]
506	add	w23,w23,w25		// e+=F(b,c,d)
507	ror	w9,w9,#31
508	eor	w10,w10,w12
509	eor	w25,w21,w24
510	ror	w27,w23,#27
511	add	w21,w21,w28		// future e+=K
512	eor	w10,w10,w19
513	eor	w25,w25,w20
514	add	w22,w22,w27		// e+=rot(a,5)
515	ror	w24,w24,#2
516	eor	w10,w10,w7
517	add	w21,w21,w9	// future e+=X[i]
518	add	w22,w22,w25		// e+=F(b,c,d)
519	ror	w10,w10,#31
520	eor	w11,w11,w13
521	eor	w25,w20,w23
522	ror	w27,w22,#27
523	add	w20,w20,w28		// future e+=K
524	eor	w11,w11,w3
525	eor	w25,w25,w24
526	add	w21,w21,w27		// e+=rot(a,5)
527	ror	w23,w23,#2
528	eor	w11,w11,w8
529	add	w20,w20,w10	// future e+=X[i]
530	add	w21,w21,w25		// e+=F(b,c,d)
531	ror	w11,w11,#31
532	movz	w28,#0xbcdc
533	movk	w28,#0x8f1b,lsl#16
534	eor	w12,w12,w14
535	eor	w25,w24,w22
536	ror	w27,w21,#27
537	add	w24,w24,w28		// future e+=K
538	eor	w12,w12,w4
539	eor	w25,w25,w23
540	add	w20,w20,w27		// e+=rot(a,5)
541	ror	w22,w22,#2
542	eor	w12,w12,w9
543	add	w24,w24,w11	// future e+=X[i]
544	add	w20,w20,w25		// e+=F(b,c,d)
545	ror	w12,w12,#31
546	orr	w25,w21,w22
547	and	w26,w21,w22
548	eor	w13,w13,w15
549	ror	w27,w20,#27
550	and	w25,w25,w23
551	add	w23,w23,w28		// future e+=K
552	eor	w13,w13,w5
553	add	w24,w24,w27		// e+=rot(a,5)
554	orr	w25,w25,w26
555	ror	w21,w21,#2
556	eor	w13,w13,w10
557	add	w23,w23,w12	// future e+=X[i]
558	add	w24,w24,w25		// e+=F(b,c,d)
559	ror	w13,w13,#31
560	orr	w25,w20,w21
561	and	w26,w20,w21
562	eor	w14,w14,w16
563	ror	w27,w24,#27
564	and	w25,w25,w22
565	add	w22,w22,w28		// future e+=K
566	eor	w14,w14,w6
567	add	w23,w23,w27		// e+=rot(a,5)
568	orr	w25,w25,w26
569	ror	w20,w20,#2
570	eor	w14,w14,w11
571	add	w22,w22,w13	// future e+=X[i]
572	add	w23,w23,w25		// e+=F(b,c,d)
573	ror	w14,w14,#31
574	orr	w25,w24,w20
575	and	w26,w24,w20
576	eor	w15,w15,w17
577	ror	w27,w23,#27
578	and	w25,w25,w21
579	add	w21,w21,w28		// future e+=K
580	eor	w15,w15,w7
581	add	w22,w22,w27		// e+=rot(a,5)
582	orr	w25,w25,w26
583	ror	w24,w24,#2
584	eor	w15,w15,w12
585	add	w21,w21,w14	// future e+=X[i]
586	add	w22,w22,w25		// e+=F(b,c,d)
587	ror	w15,w15,#31
588	orr	w25,w23,w24
589	and	w26,w23,w24
590	eor	w16,w16,w19
591	ror	w27,w22,#27
592	and	w25,w25,w20
593	add	w20,w20,w28		// future e+=K
594	eor	w16,w16,w8
595	add	w21,w21,w27		// e+=rot(a,5)
596	orr	w25,w25,w26
597	ror	w23,w23,#2
598	eor	w16,w16,w13
599	add	w20,w20,w15	// future e+=X[i]
600	add	w21,w21,w25		// e+=F(b,c,d)
601	ror	w16,w16,#31
602	orr	w25,w22,w23
603	and	w26,w22,w23
604	eor	w17,w17,w3
605	ror	w27,w21,#27
606	and	w25,w25,w24
607	add	w24,w24,w28		// future e+=K
608	eor	w17,w17,w9
609	add	w20,w20,w27		// e+=rot(a,5)
610	orr	w25,w25,w26
611	ror	w22,w22,#2
612	eor	w17,w17,w14
613	add	w24,w24,w16	// future e+=X[i]
614	add	w20,w20,w25		// e+=F(b,c,d)
615	ror	w17,w17,#31
616	orr	w25,w21,w22
617	and	w26,w21,w22
618	eor	w19,w19,w4
619	ror	w27,w20,#27
620	and	w25,w25,w23
621	add	w23,w23,w28		// future e+=K
622	eor	w19,w19,w10
623	add	w24,w24,w27		// e+=rot(a,5)
624	orr	w25,w25,w26
625	ror	w21,w21,#2
626	eor	w19,w19,w15
627	add	w23,w23,w17	// future e+=X[i]
628	add	w24,w24,w25		// e+=F(b,c,d)
629	ror	w19,w19,#31
630	orr	w25,w20,w21
631	and	w26,w20,w21
632	eor	w3,w3,w5
633	ror	w27,w24,#27
634	and	w25,w25,w22
635	add	w22,w22,w28		// future e+=K
636	eor	w3,w3,w11
637	add	w23,w23,w27		// e+=rot(a,5)
638	orr	w25,w25,w26
639	ror	w20,w20,#2
640	eor	w3,w3,w16
641	add	w22,w22,w19	// future e+=X[i]
642	add	w23,w23,w25		// e+=F(b,c,d)
643	ror	w3,w3,#31
644	orr	w25,w24,w20
645	and	w26,w24,w20
646	eor	w4,w4,w6
647	ror	w27,w23,#27
648	and	w25,w25,w21
649	add	w21,w21,w28		// future e+=K
650	eor	w4,w4,w12
651	add	w22,w22,w27		// e+=rot(a,5)
652	orr	w25,w25,w26
653	ror	w24,w24,#2
654	eor	w4,w4,w17
655	add	w21,w21,w3	// future e+=X[i]
656	add	w22,w22,w25		// e+=F(b,c,d)
657	ror	w4,w4,#31
658	orr	w25,w23,w24
659	and	w26,w23,w24
660	eor	w5,w5,w7
661	ror	w27,w22,#27
662	and	w25,w25,w20
663	add	w20,w20,w28		// future e+=K
664	eor	w5,w5,w13
665	add	w21,w21,w27		// e+=rot(a,5)
666	orr	w25,w25,w26
667	ror	w23,w23,#2
668	eor	w5,w5,w19
669	add	w20,w20,w4	// future e+=X[i]
670	add	w21,w21,w25		// e+=F(b,c,d)
671	ror	w5,w5,#31
672	orr	w25,w22,w23
673	and	w26,w22,w23
674	eor	w6,w6,w8
675	ror	w27,w21,#27
676	and	w25,w25,w24
677	add	w24,w24,w28		// future e+=K
678	eor	w6,w6,w14
679	add	w20,w20,w27		// e+=rot(a,5)
680	orr	w25,w25,w26
681	ror	w22,w22,#2
682	eor	w6,w6,w3
683	add	w24,w24,w5	// future e+=X[i]
684	add	w20,w20,w25		// e+=F(b,c,d)
685	ror	w6,w6,#31
686	orr	w25,w21,w22
687	and	w26,w21,w22
688	eor	w7,w7,w9
689	ror	w27,w20,#27
690	and	w25,w25,w23
691	add	w23,w23,w28		// future e+=K
692	eor	w7,w7,w15
693	add	w24,w24,w27		// e+=rot(a,5)
694	orr	w25,w25,w26
695	ror	w21,w21,#2
696	eor	w7,w7,w4
697	add	w23,w23,w6	// future e+=X[i]
698	add	w24,w24,w25		// e+=F(b,c,d)
699	ror	w7,w7,#31
700	orr	w25,w20,w21
701	and	w26,w20,w21
702	eor	w8,w8,w10
703	ror	w27,w24,#27
704	and	w25,w25,w22
705	add	w22,w22,w28		// future e+=K
706	eor	w8,w8,w16
707	add	w23,w23,w27		// e+=rot(a,5)
708	orr	w25,w25,w26
709	ror	w20,w20,#2
710	eor	w8,w8,w5
711	add	w22,w22,w7	// future e+=X[i]
712	add	w23,w23,w25		// e+=F(b,c,d)
713	ror	w8,w8,#31
714	orr	w25,w24,w20
715	and	w26,w24,w20
716	eor	w9,w9,w11
717	ror	w27,w23,#27
718	and	w25,w25,w21
719	add	w21,w21,w28		// future e+=K
720	eor	w9,w9,w17
721	add	w22,w22,w27		// e+=rot(a,5)
722	orr	w25,w25,w26
723	ror	w24,w24,#2
724	eor	w9,w9,w6
725	add	w21,w21,w8	// future e+=X[i]
726	add	w22,w22,w25		// e+=F(b,c,d)
727	ror	w9,w9,#31
728	orr	w25,w23,w24
729	and	w26,w23,w24
730	eor	w10,w10,w12
731	ror	w27,w22,#27
732	and	w25,w25,w20
733	add	w20,w20,w28		// future e+=K
734	eor	w10,w10,w19
735	add	w21,w21,w27		// e+=rot(a,5)
736	orr	w25,w25,w26
737	ror	w23,w23,#2
738	eor	w10,w10,w7
739	add	w20,w20,w9	// future e+=X[i]
740	add	w21,w21,w25		// e+=F(b,c,d)
741	ror	w10,w10,#31
742	orr	w25,w22,w23
743	and	w26,w22,w23
744	eor	w11,w11,w13
745	ror	w27,w21,#27
746	and	w25,w25,w24
747	add	w24,w24,w28		// future e+=K
748	eor	w11,w11,w3
749	add	w20,w20,w27		// e+=rot(a,5)
750	orr	w25,w25,w26
751	ror	w22,w22,#2
752	eor	w11,w11,w8
753	add	w24,w24,w10	// future e+=X[i]
754	add	w20,w20,w25		// e+=F(b,c,d)
755	ror	w11,w11,#31
756	orr	w25,w21,w22
757	and	w26,w21,w22
758	eor	w12,w12,w14
759	ror	w27,w20,#27
760	and	w25,w25,w23
761	add	w23,w23,w28		// future e+=K
762	eor	w12,w12,w4
763	add	w24,w24,w27		// e+=rot(a,5)
764	orr	w25,w25,w26
765	ror	w21,w21,#2
766	eor	w12,w12,w9
767	add	w23,w23,w11	// future e+=X[i]
768	add	w24,w24,w25		// e+=F(b,c,d)
769	ror	w12,w12,#31
770	orr	w25,w20,w21
771	and	w26,w20,w21
772	eor	w13,w13,w15
773	ror	w27,w24,#27
774	and	w25,w25,w22
775	add	w22,w22,w28		// future e+=K
776	eor	w13,w13,w5
777	add	w23,w23,w27		// e+=rot(a,5)
778	orr	w25,w25,w26
779	ror	w20,w20,#2
780	eor	w13,w13,w10
781	add	w22,w22,w12	// future e+=X[i]
782	add	w23,w23,w25		// e+=F(b,c,d)
783	ror	w13,w13,#31
784	orr	w25,w24,w20
785	and	w26,w24,w20
786	eor	w14,w14,w16
787	ror	w27,w23,#27
788	and	w25,w25,w21
789	add	w21,w21,w28		// future e+=K
790	eor	w14,w14,w6
791	add	w22,w22,w27		// e+=rot(a,5)
792	orr	w25,w25,w26
793	ror	w24,w24,#2
794	eor	w14,w14,w11
795	add	w21,w21,w13	// future e+=X[i]
796	add	w22,w22,w25		// e+=F(b,c,d)
797	ror	w14,w14,#31
798	orr	w25,w23,w24
799	and	w26,w23,w24
800	eor	w15,w15,w17
801	ror	w27,w22,#27
802	and	w25,w25,w20
803	add	w20,w20,w28		// future e+=K
804	eor	w15,w15,w7
805	add	w21,w21,w27		// e+=rot(a,5)
806	orr	w25,w25,w26
807	ror	w23,w23,#2
808	eor	w15,w15,w12
809	add	w20,w20,w14	// future e+=X[i]
810	add	w21,w21,w25		// e+=F(b,c,d)
811	ror	w15,w15,#31
812	movz	w28,#0xc1d6
813	movk	w28,#0xca62,lsl#16
814	orr	w25,w22,w23
815	and	w26,w22,w23
816	eor	w16,w16,w19
817	ror	w27,w21,#27
818	and	w25,w25,w24
819	add	w24,w24,w28		// future e+=K
820	eor	w16,w16,w8
821	add	w20,w20,w27		// e+=rot(a,5)
822	orr	w25,w25,w26
823	ror	w22,w22,#2
824	eor	w16,w16,w13
825	add	w24,w24,w15	// future e+=X[i]
826	add	w20,w20,w25		// e+=F(b,c,d)
827	ror	w16,w16,#31
828	eor	w17,w17,w3
829	eor	w25,w23,w21
830	ror	w27,w20,#27
831	add	w23,w23,w28		// future e+=K
832	eor	w17,w17,w9
833	eor	w25,w25,w22
834	add	w24,w24,w27		// e+=rot(a,5)
835	ror	w21,w21,#2
836	eor	w17,w17,w14
837	add	w23,w23,w16	// future e+=X[i]
838	add	w24,w24,w25		// e+=F(b,c,d)
839	ror	w17,w17,#31
840	eor	w19,w19,w4
841	eor	w25,w22,w20
842	ror	w27,w24,#27
843	add	w22,w22,w28		// future e+=K
844	eor	w19,w19,w10
845	eor	w25,w25,w21
846	add	w23,w23,w27		// e+=rot(a,5)
847	ror	w20,w20,#2
848	eor	w19,w19,w15
849	add	w22,w22,w17	// future e+=X[i]
850	add	w23,w23,w25		// e+=F(b,c,d)
851	ror	w19,w19,#31
852	eor	w3,w3,w5
853	eor	w25,w21,w24
854	ror	w27,w23,#27
855	add	w21,w21,w28		// future e+=K
856	eor	w3,w3,w11
857	eor	w25,w25,w20
858	add	w22,w22,w27		// e+=rot(a,5)
859	ror	w24,w24,#2
860	eor	w3,w3,w16
861	add	w21,w21,w19	// future e+=X[i]
862	add	w22,w22,w25		// e+=F(b,c,d)
863	ror	w3,w3,#31
864	eor	w4,w4,w6
865	eor	w25,w20,w23
866	ror	w27,w22,#27
867	add	w20,w20,w28		// future e+=K
868	eor	w4,w4,w12
869	eor	w25,w25,w24
870	add	w21,w21,w27		// e+=rot(a,5)
871	ror	w23,w23,#2
872	eor	w4,w4,w17
873	add	w20,w20,w3	// future e+=X[i]
874	add	w21,w21,w25		// e+=F(b,c,d)
875	ror	w4,w4,#31
876	eor	w5,w5,w7
877	eor	w25,w24,w22
878	ror	w27,w21,#27
879	add	w24,w24,w28		// future e+=K
880	eor	w5,w5,w13
881	eor	w25,w25,w23
882	add	w20,w20,w27		// e+=rot(a,5)
883	ror	w22,w22,#2
884	eor	w5,w5,w19
885	add	w24,w24,w4	// future e+=X[i]
886	add	w20,w20,w25		// e+=F(b,c,d)
887	ror	w5,w5,#31
888	eor	w6,w6,w8
889	eor	w25,w23,w21
890	ror	w27,w20,#27
891	add	w23,w23,w28		// future e+=K
892	eor	w6,w6,w14
893	eor	w25,w25,w22
894	add	w24,w24,w27		// e+=rot(a,5)
895	ror	w21,w21,#2
896	eor	w6,w6,w3
897	add	w23,w23,w5	// future e+=X[i]
898	add	w24,w24,w25		// e+=F(b,c,d)
899	ror	w6,w6,#31
900	eor	w7,w7,w9
901	eor	w25,w22,w20
902	ror	w27,w24,#27
903	add	w22,w22,w28		// future e+=K
904	eor	w7,w7,w15
905	eor	w25,w25,w21
906	add	w23,w23,w27		// e+=rot(a,5)
907	ror	w20,w20,#2
908	eor	w7,w7,w4
909	add	w22,w22,w6	// future e+=X[i]
910	add	w23,w23,w25		// e+=F(b,c,d)
911	ror	w7,w7,#31
912	eor	w8,w8,w10
913	eor	w25,w21,w24
914	ror	w27,w23,#27
915	add	w21,w21,w28		// future e+=K
916	eor	w8,w8,w16
917	eor	w25,w25,w20
918	add	w22,w22,w27		// e+=rot(a,5)
919	ror	w24,w24,#2
920	eor	w8,w8,w5
921	add	w21,w21,w7	// future e+=X[i]
922	add	w22,w22,w25		// e+=F(b,c,d)
923	ror	w8,w8,#31
924	eor	w9,w9,w11
925	eor	w25,w20,w23
926	ror	w27,w22,#27
927	add	w20,w20,w28		// future e+=K
928	eor	w9,w9,w17
929	eor	w25,w25,w24
930	add	w21,w21,w27		// e+=rot(a,5)
931	ror	w23,w23,#2
932	eor	w9,w9,w6
933	add	w20,w20,w8	// future e+=X[i]
934	add	w21,w21,w25		// e+=F(b,c,d)
935	ror	w9,w9,#31
936	eor	w10,w10,w12
937	eor	w25,w24,w22
938	ror	w27,w21,#27
939	add	w24,w24,w28		// future e+=K
940	eor	w10,w10,w19
941	eor	w25,w25,w23
942	add	w20,w20,w27		// e+=rot(a,5)
943	ror	w22,w22,#2
944	eor	w10,w10,w7
945	add	w24,w24,w9	// future e+=X[i]
946	add	w20,w20,w25		// e+=F(b,c,d)
947	ror	w10,w10,#31
948	eor	w11,w11,w13
949	eor	w25,w23,w21
950	ror	w27,w20,#27
951	add	w23,w23,w28		// future e+=K
952	eor	w11,w11,w3
953	eor	w25,w25,w22
954	add	w24,w24,w27		// e+=rot(a,5)
955	ror	w21,w21,#2
956	eor	w11,w11,w8
957	add	w23,w23,w10	// future e+=X[i]
958	add	w24,w24,w25		// e+=F(b,c,d)
959	ror	w11,w11,#31
960	eor	w12,w12,w14
961	eor	w25,w22,w20
962	ror	w27,w24,#27
963	add	w22,w22,w28		// future e+=K
964	eor	w12,w12,w4
965	eor	w25,w25,w21
966	add	w23,w23,w27		// e+=rot(a,5)
967	ror	w20,w20,#2
968	eor	w12,w12,w9
969	add	w22,w22,w11	// future e+=X[i]
970	add	w23,w23,w25		// e+=F(b,c,d)
971	ror	w12,w12,#31
972	eor	w13,w13,w15
973	eor	w25,w21,w24
974	ror	w27,w23,#27
975	add	w21,w21,w28		// future e+=K
976	eor	w13,w13,w5
977	eor	w25,w25,w20
978	add	w22,w22,w27		// e+=rot(a,5)
979	ror	w24,w24,#2
980	eor	w13,w13,w10
981	add	w21,w21,w12	// future e+=X[i]
982	add	w22,w22,w25		// e+=F(b,c,d)
983	ror	w13,w13,#31
984	eor	w14,w14,w16
985	eor	w25,w20,w23
986	ror	w27,w22,#27
987	add	w20,w20,w28		// future e+=K
988	eor	w14,w14,w6
989	eor	w25,w25,w24
990	add	w21,w21,w27		// e+=rot(a,5)
991	ror	w23,w23,#2
992	eor	w14,w14,w11
993	add	w20,w20,w13	// future e+=X[i]
994	add	w21,w21,w25		// e+=F(b,c,d)
995	ror	w14,w14,#31
996	eor	w15,w15,w17
997	eor	w25,w24,w22
998	ror	w27,w21,#27
999	add	w24,w24,w28		// future e+=K
1000	eor	w15,w15,w7
1001	eor	w25,w25,w23
1002	add	w20,w20,w27		// e+=rot(a,5)
1003	ror	w22,w22,#2
1004	eor	w15,w15,w12
1005	add	w24,w24,w14	// future e+=X[i]
1006	add	w20,w20,w25		// e+=F(b,c,d)
1007	ror	w15,w15,#31
1008	eor	w16,w16,w19
1009	eor	w25,w23,w21
1010	ror	w27,w20,#27
1011	add	w23,w23,w28		// future e+=K
1012	eor	w16,w16,w8
1013	eor	w25,w25,w22
1014	add	w24,w24,w27		// e+=rot(a,5)
1015	ror	w21,w21,#2
1016	eor	w16,w16,w13
1017	add	w23,w23,w15	// future e+=X[i]
1018	add	w24,w24,w25		// e+=F(b,c,d)
1019	ror	w16,w16,#31
1020	eor	w17,w17,w3
1021	eor	w25,w22,w20
1022	ror	w27,w24,#27
1023	add	w22,w22,w28		// future e+=K
1024	eor	w17,w17,w9
1025	eor	w25,w25,w21
1026	add	w23,w23,w27		// e+=rot(a,5)
1027	ror	w20,w20,#2
1028	eor	w17,w17,w14
1029	add	w22,w22,w16	// future e+=X[i]
1030	add	w23,w23,w25		// e+=F(b,c,d)
1031	ror	w17,w17,#31
1032	eor	w19,w19,w4
1033	eor	w25,w21,w24
1034	ror	w27,w23,#27
1035	add	w21,w21,w28		// future e+=K
1036	eor	w19,w19,w10
1037	eor	w25,w25,w20
1038	add	w22,w22,w27		// e+=rot(a,5)
1039	ror	w24,w24,#2
1040	eor	w19,w19,w15
1041	add	w21,w21,w17	// future e+=X[i]
1042	add	w22,w22,w25		// e+=F(b,c,d)
1043	ror	w19,w19,#31
1044	ldp	w4,w5,[x0]
1045	eor	w25,w20,w23
1046	ror	w27,w22,#27
1047	add	w20,w20,w28		// future e+=K
1048	eor	w25,w25,w24
1049	add	w21,w21,w27		// e+=rot(a,5)
1050	ror	w23,w23,#2
1051	add	w20,w20,w19	// future e+=X[i]
1052	add	w21,w21,w25		// e+=F(b,c,d)
1053	ldp	w6,w7,[x0,#8]
1054	eor	w25,w24,w22
1055	ror	w27,w21,#27
1056	eor	w25,w25,w23
1057	add	w20,w20,w27		// e+=rot(a,5)
1058	ror	w22,w22,#2
1059	ldr	w8,[x0,#16]
1060	add	w20,w20,w25		// e+=F(b,c,d)
1061	add	w21,w21,w5
1062	add	w22,w22,w6
1063	add	w20,w20,w4
1064	add	w23,w23,w7
1065	add	w24,w24,w8
1066	stp	w20,w21,[x0]
1067	stp	w22,w23,[x0,#8]
1068	str	w24,[x0,#16]
1069	cbnz	x2,.Loop
1070
1071	ldp	x19,x20,[sp,#16]
1072	ldp	x21,x22,[sp,#32]
1073	ldp	x23,x24,[sp,#48]
1074	ldp	x25,x26,[sp,#64]
1075	ldp	x27,x28,[sp,#80]
1076	ldr	x29,[sp],#96
1077	ret
1078.size	sha1_block_data_order,.-sha1_block_data_order
1079.type	sha1_block_armv8,%function
1080.align	6
1081sha1_block_armv8:
1082.Lv8_entry:
1083	stp	x29,x30,[sp,#-16]!
1084	add	x29,sp,#0
1085
1086	adr	x4,.Lconst
1087	eor	v1.16b,v1.16b,v1.16b
1088	ld1	{v0.4s},[x0],#16
1089	ld1	{v1.s}[0],[x0]
1090	sub	x0,x0,#16
1091	ld1	{v16.4s,v17.4s,v18.4s,v19.4s},[x4]
1092
1093.Loop_hw:
1094	ld1	{v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64
1095	sub	x2,x2,#1
1096	rev32	v4.16b,v4.16b
1097	rev32	v5.16b,v5.16b
1098
1099	add	v20.4s,v16.4s,v4.4s
1100	rev32	v6.16b,v6.16b
1101	orr	v22.16b,v0.16b,v0.16b	// offload
1102
1103	add	v21.4s,v16.4s,v5.4s
1104	rev32	v7.16b,v7.16b
1105.inst	0x5e280803	//sha1h v3.16b,v0.16b
1106.inst	0x5e140020	//sha1c v0.16b,v1.16b,v20.4s		// 0
1107	add	v20.4s,v16.4s,v6.4s
1108.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1109.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 1
1110.inst	0x5e150060	//sha1c v0.16b,v3.16b,v21.4s
1111	add	v21.4s,v16.4s,v7.4s
1112.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1113.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1114.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 2
1115.inst	0x5e140040	//sha1c v0.16b,v2.16b,v20.4s
1116	add	v20.4s,v16.4s,v4.4s
1117.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1118.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1119.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 3
1120.inst	0x5e150060	//sha1c v0.16b,v3.16b,v21.4s
1121	add	v21.4s,v17.4s,v5.4s
1122.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1123.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1124.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 4
1125.inst	0x5e140040	//sha1c v0.16b,v2.16b,v20.4s
1126	add	v20.4s,v17.4s,v6.4s
1127.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1128.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1129.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 5
1130.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1131	add	v21.4s,v17.4s,v7.4s
1132.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1133.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1134.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 6
1135.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1136	add	v20.4s,v17.4s,v4.4s
1137.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1138.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1139.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 7
1140.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1141	add	v21.4s,v17.4s,v5.4s
1142.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1143.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1144.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 8
1145.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1146	add	v20.4s,v18.4s,v6.4s
1147.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1148.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1149.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 9
1150.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1151	add	v21.4s,v18.4s,v7.4s
1152.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1153.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1154.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 10
1155.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
1156	add	v20.4s,v18.4s,v4.4s
1157.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1158.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1159.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 11
1160.inst	0x5e152060	//sha1m v0.16b,v3.16b,v21.4s
1161	add	v21.4s,v18.4s,v5.4s
1162.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1163.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1164.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 12
1165.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
1166	add	v20.4s,v18.4s,v6.4s
1167.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1168.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1169.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 13
1170.inst	0x5e152060	//sha1m v0.16b,v3.16b,v21.4s
1171	add	v21.4s,v19.4s,v7.4s
1172.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1173.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1174.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 14
1175.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
1176	add	v20.4s,v19.4s,v4.4s
1177.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1178.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1179.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 15
1180.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1181	add	v21.4s,v19.4s,v5.4s
1182.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1183.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1184.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 16
1185.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1186	add	v20.4s,v19.4s,v6.4s
1187.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1188.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 17
1189.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1190	add	v21.4s,v19.4s,v7.4s
1191
1192.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 18
1193.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1194
1195.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 19
1196.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1197
1198	add	v1.4s,v1.4s,v2.4s
1199	add	v0.4s,v0.4s,v22.4s
1200
1201	cbnz	x2,.Loop_hw
1202
1203	st1	{v0.4s},[x0],#16
1204	st1	{v1.s}[0],[x0]
1205
1206	ldr	x29,[sp],#16
1207	ret
1208.size	sha1_block_armv8,.-sha1_block_armv8
1209.align	6
1210.Lconst:
1211.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999	//K_00_19
1212.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1	//K_20_39
1213.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc	//K_40_59
1214.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6	//K_60_79
1215.LOPENSSL_armcap_P:
1216#ifdef	__ILP32__
1217.long	OPENSSL_armcap_P-.
1218#else
1219.quad	OPENSSL_armcap_P-.
1220#endif
1221.byte	83,72,65,49,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
1222.align	2
1223.align	2
1224