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