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