1 #if defined(__aarch64__)
7 .globl sha512_block_data_order
8 .type sha512_block_data_order,%function
10 sha512_block_data_order:
11 stp x29,x30,[sp,#-128]!
21 ldp x20,x21,[x0] // load context
24 add x2,x1,x2,lsl#7 // end of input
31 ldr x19,[x30],#8 // *K++
32 eor x28,x21,x22 // magic seed
38 add x27,x27,x19 // h+=K[i]
42 add x27,x27,x3 // h+=X[i]
43 orr x17,x17,x19 // Ch(e,f,g)
44 eor x19,x20,x21 // a^b, b^c in next round
45 eor x16,x16,x6,ror#18 // Sigma1(e)
47 add x27,x27,x17 // h+=Ch(e,f,g)
49 add x27,x27,x16 // h+=Sigma1(e)
50 and x28,x28,x19 // (b^c)&=(a^b)
51 add x23,x23,x27 // d+=h
52 eor x28,x28,x21 // Maj(a,b,c)
53 eor x17,x6,x17,ror#34 // Sigma0(a)
54 add x27,x27,x28 // h+=Maj(a,b,c)
55 ldr x28,[x30],#8 // *K++, x19 in next round
56 //add x27,x27,x17 // h+=Sigma0(a)
61 add x27,x27,x17 // h+=Sigma0(a)
63 add x26,x26,x28 // h+=K[i]
67 add x26,x26,x4 // h+=X[i]
68 orr x17,x17,x28 // Ch(e,f,g)
69 eor x28,x27,x20 // a^b, b^c in next round
70 eor x16,x16,x7,ror#18 // Sigma1(e)
72 add x26,x26,x17 // h+=Ch(e,f,g)
74 add x26,x26,x16 // h+=Sigma1(e)
75 and x19,x19,x28 // (b^c)&=(a^b)
76 add x22,x22,x26 // d+=h
77 eor x19,x19,x20 // Maj(a,b,c)
78 eor x17,x7,x17,ror#34 // Sigma0(a)
79 add x26,x26,x19 // h+=Maj(a,b,c)
80 ldr x19,[x30],#8 // *K++, x28 in next round
81 //add x26,x26,x17 // h+=Sigma0(a)
85 add x26,x26,x17 // h+=Sigma0(a)
87 add x25,x25,x19 // h+=K[i]
91 add x25,x25,x5 // h+=X[i]
92 orr x17,x17,x19 // Ch(e,f,g)
93 eor x19,x26,x27 // a^b, b^c in next round
94 eor x16,x16,x8,ror#18 // Sigma1(e)
96 add x25,x25,x17 // h+=Ch(e,f,g)
98 add x25,x25,x16 // h+=Sigma1(e)
99 and x28,x28,x19 // (b^c)&=(a^b)
100 add x21,x21,x25 // d+=h
101 eor x28,x28,x27 // Maj(a,b,c)
102 eor x17,x8,x17,ror#34 // Sigma0(a)
103 add x25,x25,x28 // h+=Maj(a,b,c)
104 ldr x28,[x30],#8 // *K++, x19 in next round
105 //add x25,x25,x17 // h+=Sigma0(a)
110 add x25,x25,x17 // h+=Sigma0(a)
112 add x24,x24,x28 // h+=K[i]
113 eor x9,x21,x21,ror#23
116 add x24,x24,x6 // h+=X[i]
117 orr x17,x17,x28 // Ch(e,f,g)
118 eor x28,x25,x26 // a^b, b^c in next round
119 eor x16,x16,x9,ror#18 // Sigma1(e)
121 add x24,x24,x17 // h+=Ch(e,f,g)
122 eor x17,x25,x25,ror#5
123 add x24,x24,x16 // h+=Sigma1(e)
124 and x19,x19,x28 // (b^c)&=(a^b)
125 add x20,x20,x24 // d+=h
126 eor x19,x19,x26 // Maj(a,b,c)
127 eor x17,x9,x17,ror#34 // Sigma0(a)
128 add x24,x24,x19 // h+=Maj(a,b,c)
129 ldr x19,[x30],#8 // *K++, x28 in next round
130 //add x24,x24,x17 // h+=Sigma0(a)
134 add x24,x24,x17 // h+=Sigma0(a)
136 add x23,x23,x19 // h+=K[i]
137 eor x10,x20,x20,ror#23
140 add x23,x23,x7 // h+=X[i]
141 orr x17,x17,x19 // Ch(e,f,g)
142 eor x19,x24,x25 // a^b, b^c in next round
143 eor x16,x16,x10,ror#18 // Sigma1(e)
145 add x23,x23,x17 // h+=Ch(e,f,g)
146 eor x17,x24,x24,ror#5
147 add x23,x23,x16 // h+=Sigma1(e)
148 and x28,x28,x19 // (b^c)&=(a^b)
149 add x27,x27,x23 // d+=h
150 eor x28,x28,x25 // Maj(a,b,c)
151 eor x17,x10,x17,ror#34 // Sigma0(a)
152 add x23,x23,x28 // h+=Maj(a,b,c)
153 ldr x28,[x30],#8 // *K++, x19 in next round
154 //add x23,x23,x17 // h+=Sigma0(a)
159 add x23,x23,x17 // h+=Sigma0(a)
161 add x22,x22,x28 // h+=K[i]
162 eor x11,x27,x27,ror#23
165 add x22,x22,x8 // h+=X[i]
166 orr x17,x17,x28 // Ch(e,f,g)
167 eor x28,x23,x24 // a^b, b^c in next round
168 eor x16,x16,x11,ror#18 // Sigma1(e)
170 add x22,x22,x17 // h+=Ch(e,f,g)
171 eor x17,x23,x23,ror#5
172 add x22,x22,x16 // h+=Sigma1(e)
173 and x19,x19,x28 // (b^c)&=(a^b)
174 add x26,x26,x22 // d+=h
175 eor x19,x19,x24 // Maj(a,b,c)
176 eor x17,x11,x17,ror#34 // Sigma0(a)
177 add x22,x22,x19 // h+=Maj(a,b,c)
178 ldr x19,[x30],#8 // *K++, x28 in next round
179 //add x22,x22,x17 // h+=Sigma0(a)
183 add x22,x22,x17 // h+=Sigma0(a)
185 add x21,x21,x19 // h+=K[i]
186 eor x12,x26,x26,ror#23
189 add x21,x21,x9 // h+=X[i]
190 orr x17,x17,x19 // Ch(e,f,g)
191 eor x19,x22,x23 // a^b, b^c in next round
192 eor x16,x16,x12,ror#18 // Sigma1(e)
194 add x21,x21,x17 // h+=Ch(e,f,g)
195 eor x17,x22,x22,ror#5
196 add x21,x21,x16 // h+=Sigma1(e)
197 and x28,x28,x19 // (b^c)&=(a^b)
198 add x25,x25,x21 // d+=h
199 eor x28,x28,x23 // Maj(a,b,c)
200 eor x17,x12,x17,ror#34 // Sigma0(a)
201 add x21,x21,x28 // h+=Maj(a,b,c)
202 ldr x28,[x30],#8 // *K++, x19 in next round
203 //add x21,x21,x17 // h+=Sigma0(a)
207 ldp x11,x12,[x1],#2*8
208 add x21,x21,x17 // h+=Sigma0(a)
210 add x20,x20,x28 // h+=K[i]
211 eor x13,x25,x25,ror#23
214 add x20,x20,x10 // h+=X[i]
215 orr x17,x17,x28 // Ch(e,f,g)
216 eor x28,x21,x22 // a^b, b^c in next round
217 eor x16,x16,x13,ror#18 // Sigma1(e)
219 add x20,x20,x17 // h+=Ch(e,f,g)
220 eor x17,x21,x21,ror#5
221 add x20,x20,x16 // h+=Sigma1(e)
222 and x19,x19,x28 // (b^c)&=(a^b)
223 add x24,x24,x20 // d+=h
224 eor x19,x19,x22 // Maj(a,b,c)
225 eor x17,x13,x17,ror#34 // Sigma0(a)
226 add x20,x20,x19 // h+=Maj(a,b,c)
227 ldr x19,[x30],#8 // *K++, x28 in next round
228 //add x20,x20,x17 // h+=Sigma0(a)
232 add x20,x20,x17 // h+=Sigma0(a)
234 add x27,x27,x19 // h+=K[i]
235 eor x14,x24,x24,ror#23
238 add x27,x27,x11 // h+=X[i]
239 orr x17,x17,x19 // Ch(e,f,g)
240 eor x19,x20,x21 // a^b, b^c in next round
241 eor x16,x16,x14,ror#18 // Sigma1(e)
243 add x27,x27,x17 // h+=Ch(e,f,g)
244 eor x17,x20,x20,ror#5
245 add x27,x27,x16 // h+=Sigma1(e)
246 and x28,x28,x19 // (b^c)&=(a^b)
247 add x23,x23,x27 // d+=h
248 eor x28,x28,x21 // Maj(a,b,c)
249 eor x17,x14,x17,ror#34 // Sigma0(a)
250 add x27,x27,x28 // h+=Maj(a,b,c)
251 ldr x28,[x30],#8 // *K++, x19 in next round
252 //add x27,x27,x17 // h+=Sigma0(a)
256 ldp x13,x14,[x1],#2*8
257 add x27,x27,x17 // h+=Sigma0(a)
259 add x26,x26,x28 // h+=K[i]
260 eor x15,x23,x23,ror#23
263 add x26,x26,x12 // h+=X[i]
264 orr x17,x17,x28 // Ch(e,f,g)
265 eor x28,x27,x20 // a^b, b^c in next round
266 eor x16,x16,x15,ror#18 // Sigma1(e)
268 add x26,x26,x17 // h+=Ch(e,f,g)
269 eor x17,x27,x27,ror#5
270 add x26,x26,x16 // h+=Sigma1(e)
271 and x19,x19,x28 // (b^c)&=(a^b)
272 add x22,x22,x26 // d+=h
273 eor x19,x19,x20 // Maj(a,b,c)
274 eor x17,x15,x17,ror#34 // Sigma0(a)
275 add x26,x26,x19 // h+=Maj(a,b,c)
276 ldr x19,[x30],#8 // *K++, x28 in next round
277 //add x26,x26,x17 // h+=Sigma0(a)
281 add x26,x26,x17 // h+=Sigma0(a)
283 add x25,x25,x19 // h+=K[i]
284 eor x0,x22,x22,ror#23
287 add x25,x25,x13 // h+=X[i]
288 orr x17,x17,x19 // Ch(e,f,g)
289 eor x19,x26,x27 // a^b, b^c in next round
290 eor x16,x16,x0,ror#18 // Sigma1(e)
292 add x25,x25,x17 // h+=Ch(e,f,g)
293 eor x17,x26,x26,ror#5
294 add x25,x25,x16 // h+=Sigma1(e)
295 and x28,x28,x19 // (b^c)&=(a^b)
296 add x21,x21,x25 // d+=h
297 eor x28,x28,x27 // Maj(a,b,c)
298 eor x17,x0,x17,ror#34 // Sigma0(a)
299 add x25,x25,x28 // h+=Maj(a,b,c)
300 ldr x28,[x30],#8 // *K++, x19 in next round
301 //add x25,x25,x17 // h+=Sigma0(a)
306 add x25,x25,x17 // h+=Sigma0(a)
309 add x24,x24,x28 // h+=K[i]
310 eor x6,x21,x21,ror#23
313 add x24,x24,x14 // h+=X[i]
314 orr x17,x17,x28 // Ch(e,f,g)
315 eor x28,x25,x26 // a^b, b^c in next round
316 eor x16,x16,x6,ror#18 // Sigma1(e)
318 add x24,x24,x17 // h+=Ch(e,f,g)
319 eor x17,x25,x25,ror#5
320 add x24,x24,x16 // h+=Sigma1(e)
321 and x19,x19,x28 // (b^c)&=(a^b)
322 add x20,x20,x24 // d+=h
323 eor x19,x19,x26 // Maj(a,b,c)
324 eor x17,x6,x17,ror#34 // Sigma0(a)
325 add x24,x24,x19 // h+=Maj(a,b,c)
326 ldr x19,[x30],#8 // *K++, x28 in next round
327 //add x24,x24,x17 // h+=Sigma0(a)
331 add x24,x24,x17 // h+=Sigma0(a)
334 add x23,x23,x19 // h+=K[i]
335 eor x7,x20,x20,ror#23
338 add x23,x23,x15 // h+=X[i]
339 orr x17,x17,x19 // Ch(e,f,g)
340 eor x19,x24,x25 // a^b, b^c in next round
341 eor x16,x16,x7,ror#18 // Sigma1(e)
343 add x23,x23,x17 // h+=Ch(e,f,g)
344 eor x17,x24,x24,ror#5
345 add x23,x23,x16 // h+=Sigma1(e)
346 and x28,x28,x19 // (b^c)&=(a^b)
347 add x27,x27,x23 // d+=h
348 eor x28,x28,x25 // Maj(a,b,c)
349 eor x17,x7,x17,ror#34 // Sigma0(a)
350 add x23,x23,x28 // h+=Maj(a,b,c)
351 ldr x28,[x30],#8 // *K++, x19 in next round
352 //add x23,x23,x17 // h+=Sigma0(a)
357 add x23,x23,x17 // h+=Sigma0(a)
360 add x22,x22,x28 // h+=K[i]
361 eor x8,x27,x27,ror#23
364 add x22,x22,x0 // h+=X[i]
365 orr x17,x17,x28 // Ch(e,f,g)
366 eor x28,x23,x24 // a^b, b^c in next round
367 eor x16,x16,x8,ror#18 // Sigma1(e)
369 add x22,x22,x17 // h+=Ch(e,f,g)
370 eor x17,x23,x23,ror#5
371 add x22,x22,x16 // h+=Sigma1(e)
372 and x19,x19,x28 // (b^c)&=(a^b)
373 add x26,x26,x22 // d+=h
374 eor x19,x19,x24 // Maj(a,b,c)
375 eor x17,x8,x17,ror#34 // Sigma0(a)
376 add x22,x22,x19 // h+=Maj(a,b,c)
377 ldr x19,[x30],#8 // *K++, x28 in next round
378 //add x22,x22,x17 // h+=Sigma0(a)
383 add x22,x22,x17 // h+=Sigma0(a)
386 add x21,x21,x19 // h+=K[i]
387 eor x9,x26,x26,ror#23
390 add x21,x21,x1 // h+=X[i]
391 orr x17,x17,x19 // Ch(e,f,g)
392 eor x19,x22,x23 // a^b, b^c in next round
393 eor x16,x16,x9,ror#18 // Sigma1(e)
395 add x21,x21,x17 // h+=Ch(e,f,g)
396 eor x17,x22,x22,ror#5
397 add x21,x21,x16 // h+=Sigma1(e)
398 and x28,x28,x19 // (b^c)&=(a^b)
399 add x25,x25,x21 // d+=h
400 eor x28,x28,x23 // Maj(a,b,c)
401 eor x17,x9,x17,ror#34 // Sigma0(a)
402 add x21,x21,x28 // h+=Maj(a,b,c)
403 ldr x28,[x30],#8 // *K++, x19 in next round
404 //add x21,x21,x17 // h+=Sigma0(a)
409 add x21,x21,x17 // h+=Sigma0(a)
412 add x20,x20,x28 // h+=K[i]
418 add x20,x20,x2 // h+=X[i]
419 eor x16,x16,x25,ror#18
421 orr x17,x17,x28 // Ch(e,f,g)
422 eor x28,x21,x22 // a^b, b^c in next round
423 eor x16,x16,x25,ror#41 // Sigma1(e)
424 eor x10,x10,x21,ror#34
425 add x20,x20,x17 // h+=Ch(e,f,g)
426 and x19,x19,x28 // (b^c)&=(a^b)
428 eor x9,x9,x4,lsr#7 // sigma0(X[i+1])
429 add x20,x20,x16 // h+=Sigma1(e)
430 eor x19,x19,x22 // Maj(a,b,c)
431 eor x17,x10,x21,ror#39 // Sigma0(a)
432 eor x8,x8,x1,lsr#6 // sigma1(X[i+14])
434 add x24,x24,x20 // d+=h
435 add x20,x20,x19 // h+=Maj(a,b,c)
436 ldr x19,[x30],#8 // *K++, x28 in next round
438 add x20,x20,x17 // h+=Sigma0(a)
444 add x27,x27,x19 // h+=K[i]
450 add x27,x27,x3 // h+=X[i]
451 eor x16,x16,x24,ror#18
453 orr x17,x17,x19 // Ch(e,f,g)
454 eor x19,x20,x21 // a^b, b^c in next round
455 eor x16,x16,x24,ror#41 // Sigma1(e)
456 eor x11,x11,x20,ror#34
457 add x27,x27,x17 // h+=Ch(e,f,g)
458 and x28,x28,x19 // (b^c)&=(a^b)
460 eor x10,x10,x5,lsr#7 // sigma0(X[i+1])
461 add x27,x27,x16 // h+=Sigma1(e)
462 eor x28,x28,x21 // Maj(a,b,c)
463 eor x17,x11,x20,ror#39 // Sigma0(a)
464 eor x9,x9,x2,lsr#6 // sigma1(X[i+14])
466 add x23,x23,x27 // d+=h
467 add x27,x27,x28 // h+=Maj(a,b,c)
468 ldr x28,[x30],#8 // *K++, x19 in next round
470 add x27,x27,x17 // h+=Sigma0(a)
475 add x26,x26,x28 // h+=K[i]
481 add x26,x26,x4 // h+=X[i]
482 eor x16,x16,x23,ror#18
484 orr x17,x17,x28 // Ch(e,f,g)
485 eor x28,x27,x20 // a^b, b^c in next round
486 eor x16,x16,x23,ror#41 // Sigma1(e)
487 eor x12,x12,x27,ror#34
488 add x26,x26,x17 // h+=Ch(e,f,g)
489 and x19,x19,x28 // (b^c)&=(a^b)
490 eor x10,x10,x3,ror#61
491 eor x11,x11,x6,lsr#7 // sigma0(X[i+1])
492 add x26,x26,x16 // h+=Sigma1(e)
493 eor x19,x19,x20 // Maj(a,b,c)
494 eor x17,x12,x27,ror#39 // Sigma0(a)
495 eor x10,x10,x3,lsr#6 // sigma1(X[i+14])
497 add x22,x22,x26 // d+=h
498 add x26,x26,x19 // h+=Maj(a,b,c)
499 ldr x19,[x30],#8 // *K++, x28 in next round
501 add x26,x26,x17 // h+=Sigma0(a)
506 add x25,x25,x19 // h+=K[i]
512 add x25,x25,x5 // h+=X[i]
513 eor x16,x16,x22,ror#18
515 orr x17,x17,x19 // Ch(e,f,g)
516 eor x19,x26,x27 // a^b, b^c in next round
517 eor x16,x16,x22,ror#41 // Sigma1(e)
518 eor x13,x13,x26,ror#34
519 add x25,x25,x17 // h+=Ch(e,f,g)
520 and x28,x28,x19 // (b^c)&=(a^b)
521 eor x11,x11,x4,ror#61
522 eor x12,x12,x7,lsr#7 // sigma0(X[i+1])
523 add x25,x25,x16 // h+=Sigma1(e)
524 eor x28,x28,x27 // Maj(a,b,c)
525 eor x17,x13,x26,ror#39 // Sigma0(a)
526 eor x11,x11,x4,lsr#6 // sigma1(X[i+14])
528 add x21,x21,x25 // d+=h
529 add x25,x25,x28 // h+=Maj(a,b,c)
530 ldr x28,[x30],#8 // *K++, x19 in next round
532 add x25,x25,x17 // h+=Sigma0(a)
537 add x24,x24,x28 // h+=K[i]
543 add x24,x24,x6 // h+=X[i]
544 eor x16,x16,x21,ror#18
546 orr x17,x17,x28 // Ch(e,f,g)
547 eor x28,x25,x26 // a^b, b^c in next round
548 eor x16,x16,x21,ror#41 // Sigma1(e)
549 eor x14,x14,x25,ror#34
550 add x24,x24,x17 // h+=Ch(e,f,g)
551 and x19,x19,x28 // (b^c)&=(a^b)
552 eor x12,x12,x5,ror#61
553 eor x13,x13,x8,lsr#7 // sigma0(X[i+1])
554 add x24,x24,x16 // h+=Sigma1(e)
555 eor x19,x19,x26 // Maj(a,b,c)
556 eor x17,x14,x25,ror#39 // Sigma0(a)
557 eor x12,x12,x5,lsr#6 // sigma1(X[i+14])
559 add x20,x20,x24 // d+=h
560 add x24,x24,x19 // h+=Maj(a,b,c)
561 ldr x19,[x30],#8 // *K++, x28 in next round
563 add x24,x24,x17 // h+=Sigma0(a)
568 add x23,x23,x19 // h+=K[i]
574 add x23,x23,x7 // h+=X[i]
575 eor x16,x16,x20,ror#18
577 orr x17,x17,x19 // Ch(e,f,g)
578 eor x19,x24,x25 // a^b, b^c in next round
579 eor x16,x16,x20,ror#41 // Sigma1(e)
580 eor x15,x15,x24,ror#34
581 add x23,x23,x17 // h+=Ch(e,f,g)
582 and x28,x28,x19 // (b^c)&=(a^b)
583 eor x13,x13,x6,ror#61
584 eor x14,x14,x9,lsr#7 // sigma0(X[i+1])
585 add x23,x23,x16 // h+=Sigma1(e)
586 eor x28,x28,x25 // Maj(a,b,c)
587 eor x17,x15,x24,ror#39 // Sigma0(a)
588 eor x13,x13,x6,lsr#6 // sigma1(X[i+14])
590 add x27,x27,x23 // d+=h
591 add x23,x23,x28 // h+=Maj(a,b,c)
592 ldr x28,[x30],#8 // *K++, x19 in next round
594 add x23,x23,x17 // h+=Sigma0(a)
599 add x22,x22,x28 // h+=K[i]
605 add x22,x22,x8 // h+=X[i]
606 eor x16,x16,x27,ror#18
607 eor x15,x15,x10,ror#8
608 orr x17,x17,x28 // Ch(e,f,g)
609 eor x28,x23,x24 // a^b, b^c in next round
610 eor x16,x16,x27,ror#41 // Sigma1(e)
612 add x22,x22,x17 // h+=Ch(e,f,g)
613 and x19,x19,x28 // (b^c)&=(a^b)
614 eor x14,x14,x7,ror#61
615 eor x15,x15,x10,lsr#7 // sigma0(X[i+1])
616 add x22,x22,x16 // h+=Sigma1(e)
617 eor x19,x19,x24 // Maj(a,b,c)
618 eor x17,x0,x23,ror#39 // Sigma0(a)
619 eor x14,x14,x7,lsr#6 // sigma1(X[i+14])
621 add x26,x26,x22 // d+=h
622 add x22,x22,x19 // h+=Maj(a,b,c)
623 ldr x19,[x30],#8 // *K++, x28 in next round
625 add x22,x22,x17 // h+=Sigma0(a)
630 add x21,x21,x19 // h+=K[i]
636 add x21,x21,x9 // h+=X[i]
637 eor x16,x16,x26,ror#18
639 orr x17,x17,x19 // Ch(e,f,g)
640 eor x19,x22,x23 // a^b, b^c in next round
641 eor x16,x16,x26,ror#41 // Sigma1(e)
643 add x21,x21,x17 // h+=Ch(e,f,g)
644 and x28,x28,x19 // (b^c)&=(a^b)
645 eor x15,x15,x8,ror#61
646 eor x0,x0,x11,lsr#7 // sigma0(X[i+1])
647 add x21,x21,x16 // h+=Sigma1(e)
648 eor x28,x28,x23 // Maj(a,b,c)
649 eor x17,x1,x22,ror#39 // Sigma0(a)
650 eor x15,x15,x8,lsr#6 // sigma1(X[i+14])
652 add x25,x25,x21 // d+=h
653 add x21,x21,x28 // h+=Maj(a,b,c)
654 ldr x28,[x30],#8 // *K++, x19 in next round
656 add x21,x21,x17 // h+=Sigma0(a)
661 add x20,x20,x28 // h+=K[i]
667 add x20,x20,x10 // h+=X[i]
668 eor x16,x16,x25,ror#18
670 orr x17,x17,x28 // Ch(e,f,g)
671 eor x28,x21,x22 // a^b, b^c in next round
672 eor x16,x16,x25,ror#41 // Sigma1(e)
674 add x20,x20,x17 // h+=Ch(e,f,g)
675 and x19,x19,x28 // (b^c)&=(a^b)
677 eor x1,x1,x12,lsr#7 // sigma0(X[i+1])
678 add x20,x20,x16 // h+=Sigma1(e)
679 eor x19,x19,x22 // Maj(a,b,c)
680 eor x17,x2,x21,ror#39 // Sigma0(a)
681 eor x0,x0,x9,lsr#6 // sigma1(X[i+14])
683 add x24,x24,x20 // d+=h
684 add x20,x20,x19 // h+=Maj(a,b,c)
685 ldr x19,[x30],#8 // *K++, x28 in next round
687 add x20,x20,x17 // h+=Sigma0(a)
692 add x27,x27,x19 // h+=K[i]
698 add x27,x27,x11 // h+=X[i]
699 eor x16,x16,x24,ror#18
701 orr x17,x17,x19 // Ch(e,f,g)
702 eor x19,x20,x21 // a^b, b^c in next round
703 eor x16,x16,x24,ror#41 // Sigma1(e)
705 add x27,x27,x17 // h+=Ch(e,f,g)
706 and x28,x28,x19 // (b^c)&=(a^b)
708 eor x2,x2,x13,lsr#7 // sigma0(X[i+1])
709 add x27,x27,x16 // h+=Sigma1(e)
710 eor x28,x28,x21 // Maj(a,b,c)
711 eor x17,x3,x20,ror#39 // Sigma0(a)
712 eor x1,x1,x10,lsr#6 // sigma1(X[i+14])
714 add x23,x23,x27 // d+=h
715 add x27,x27,x28 // h+=Maj(a,b,c)
716 ldr x28,[x30],#8 // *K++, x19 in next round
718 add x27,x27,x17 // h+=Sigma0(a)
723 add x26,x26,x28 // h+=K[i]
729 add x26,x26,x12 // h+=X[i]
730 eor x16,x16,x23,ror#18
732 orr x17,x17,x28 // Ch(e,f,g)
733 eor x28,x27,x20 // a^b, b^c in next round
734 eor x16,x16,x23,ror#41 // Sigma1(e)
736 add x26,x26,x17 // h+=Ch(e,f,g)
737 and x19,x19,x28 // (b^c)&=(a^b)
739 eor x3,x3,x14,lsr#7 // sigma0(X[i+1])
740 add x26,x26,x16 // h+=Sigma1(e)
741 eor x19,x19,x20 // Maj(a,b,c)
742 eor x17,x4,x27,ror#39 // Sigma0(a)
743 eor x2,x2,x11,lsr#6 // sigma1(X[i+14])
745 add x22,x22,x26 // d+=h
746 add x26,x26,x19 // h+=Maj(a,b,c)
747 ldr x19,[x30],#8 // *K++, x28 in next round
749 add x26,x26,x17 // h+=Sigma0(a)
754 add x25,x25,x19 // h+=K[i]
760 add x25,x25,x13 // h+=X[i]
761 eor x16,x16,x22,ror#18
763 orr x17,x17,x19 // Ch(e,f,g)
764 eor x19,x26,x27 // a^b, b^c in next round
765 eor x16,x16,x22,ror#41 // Sigma1(e)
767 add x25,x25,x17 // h+=Ch(e,f,g)
768 and x28,x28,x19 // (b^c)&=(a^b)
770 eor x4,x4,x15,lsr#7 // sigma0(X[i+1])
771 add x25,x25,x16 // h+=Sigma1(e)
772 eor x28,x28,x27 // Maj(a,b,c)
773 eor x17,x5,x26,ror#39 // Sigma0(a)
774 eor x3,x3,x12,lsr#6 // sigma1(X[i+14])
776 add x21,x21,x25 // d+=h
777 add x25,x25,x28 // h+=Maj(a,b,c)
778 ldr x28,[x30],#8 // *K++, x19 in next round
780 add x25,x25,x17 // h+=Sigma0(a)
785 add x24,x24,x28 // h+=K[i]
791 add x24,x24,x14 // h+=X[i]
792 eor x16,x16,x21,ror#18
794 orr x17,x17,x28 // Ch(e,f,g)
795 eor x28,x25,x26 // a^b, b^c in next round
796 eor x16,x16,x21,ror#41 // Sigma1(e)
798 add x24,x24,x17 // h+=Ch(e,f,g)
799 and x19,x19,x28 // (b^c)&=(a^b)
801 eor x5,x5,x0,lsr#7 // sigma0(X[i+1])
802 add x24,x24,x16 // h+=Sigma1(e)
803 eor x19,x19,x26 // Maj(a,b,c)
804 eor x17,x6,x25,ror#39 // Sigma0(a)
805 eor x4,x4,x13,lsr#6 // sigma1(X[i+14])
807 add x20,x20,x24 // d+=h
808 add x24,x24,x19 // h+=Maj(a,b,c)
809 ldr x19,[x30],#8 // *K++, x28 in next round
811 add x24,x24,x17 // h+=Sigma0(a)
816 add x23,x23,x19 // h+=K[i]
822 add x23,x23,x15 // h+=X[i]
823 eor x16,x16,x20,ror#18
825 orr x17,x17,x19 // Ch(e,f,g)
826 eor x19,x24,x25 // a^b, b^c in next round
827 eor x16,x16,x20,ror#41 // Sigma1(e)
829 add x23,x23,x17 // h+=Ch(e,f,g)
830 and x28,x28,x19 // (b^c)&=(a^b)
832 eor x6,x6,x1,lsr#7 // sigma0(X[i+1])
833 add x23,x23,x16 // h+=Sigma1(e)
834 eor x28,x28,x25 // Maj(a,b,c)
835 eor x17,x7,x24,ror#39 // Sigma0(a)
836 eor x5,x5,x14,lsr#6 // sigma1(X[i+14])
838 add x27,x27,x23 // d+=h
839 add x23,x23,x28 // h+=Maj(a,b,c)
840 ldr x28,[x30],#8 // *K++, x19 in next round
842 add x23,x23,x17 // h+=Sigma0(a)
847 add x22,x22,x28 // h+=K[i]
853 add x22,x22,x0 // h+=X[i]
854 eor x16,x16,x27,ror#18
856 orr x17,x17,x28 // Ch(e,f,g)
857 eor x28,x23,x24 // a^b, b^c in next round
858 eor x16,x16,x27,ror#41 // Sigma1(e)
860 add x22,x22,x17 // h+=Ch(e,f,g)
861 and x19,x19,x28 // (b^c)&=(a^b)
863 eor x7,x7,x2,lsr#7 // sigma0(X[i+1])
864 add x22,x22,x16 // h+=Sigma1(e)
865 eor x19,x19,x24 // Maj(a,b,c)
866 eor x17,x8,x23,ror#39 // Sigma0(a)
867 eor x6,x6,x15,lsr#6 // sigma1(X[i+14])
869 add x26,x26,x22 // d+=h
870 add x22,x22,x19 // h+=Maj(a,b,c)
871 ldr x19,[x30],#8 // *K++, x28 in next round
873 add x22,x22,x17 // h+=Sigma0(a)
878 add x21,x21,x19 // h+=K[i]
884 add x21,x21,x1 // h+=X[i]
885 eor x16,x16,x26,ror#18
887 orr x17,x17,x19 // Ch(e,f,g)
888 eor x19,x22,x23 // a^b, b^c in next round
889 eor x16,x16,x26,ror#41 // Sigma1(e)
891 add x21,x21,x17 // h+=Ch(e,f,g)
892 and x28,x28,x19 // (b^c)&=(a^b)
894 eor x8,x8,x3,lsr#7 // sigma0(X[i+1])
895 add x21,x21,x16 // h+=Sigma1(e)
896 eor x28,x28,x23 // Maj(a,b,c)
897 eor x17,x9,x22,ror#39 // Sigma0(a)
898 eor x7,x7,x0,lsr#6 // sigma1(X[i+14])
900 add x25,x25,x21 // d+=h
901 add x21,x21,x28 // h+=Maj(a,b,c)
902 ldr x28,[x30],#8 // *K++, x19 in next round
904 add x21,x21,x17 // h+=Sigma0(a)
909 add x20,x20,x28 // h+=K[i]
915 add x20,x20,x2 // h+=X[i]
916 eor x16,x16,x25,ror#18
918 orr x17,x17,x28 // Ch(e,f,g)
919 eor x28,x21,x22 // a^b, b^c in next round
920 eor x16,x16,x25,ror#41 // Sigma1(e)
921 eor x10,x10,x21,ror#34
922 add x20,x20,x17 // h+=Ch(e,f,g)
923 and x19,x19,x28 // (b^c)&=(a^b)
925 eor x9,x9,x4,lsr#7 // sigma0(X[i+1])
926 add x20,x20,x16 // h+=Sigma1(e)
927 eor x19,x19,x22 // Maj(a,b,c)
928 eor x17,x10,x21,ror#39 // Sigma0(a)
929 eor x8,x8,x1,lsr#6 // sigma1(X[i+14])
931 add x24,x24,x20 // d+=h
932 add x20,x20,x19 // h+=Maj(a,b,c)
933 ldr x19,[x30],#8 // *K++, x28 in next round
935 add x20,x20,x17 // h+=Sigma0(a)
941 sub x30,x30,#648 // rewind
945 add x1,x1,#14*8 // advance input pointer
955 stp x22,x23,[x0,#2*8]
959 stp x24,x25,[x0,#4*8]
960 stp x26,x27,[x0,#6*8]
963 ldp x19,x20,[x29,#16]
965 ldp x21,x22,[x29,#32]
966 ldp x23,x24,[x29,#48]
967 ldp x25,x26,[x29,#64]
968 ldp x27,x28,[x29,#80]
969 ldp x29,x30,[sp],#128
971 .size sha512_block_data_order,.-sha512_block_data_order
976 .quad 0x428a2f98d728ae22,0x7137449123ef65cd
977 .quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
978 .quad 0x3956c25bf348b538,0x59f111f1b605d019
979 .quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
980 .quad 0xd807aa98a3030242,0x12835b0145706fbe
981 .quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
982 .quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
983 .quad 0x9bdc06a725c71235,0xc19bf174cf692694
984 .quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
985 .quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
986 .quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
987 .quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
988 .quad 0x983e5152ee66dfab,0xa831c66d2db43210
989 .quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
990 .quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
991 .quad 0x06ca6351e003826f,0x142929670a0e6e70
992 .quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
993 .quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
994 .quad 0x650a73548baf63de,0x766a0abb3c77b2a8
995 .quad 0x81c2c92e47edaee6,0x92722c851482353b
996 .quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
997 .quad 0xc24b8b70d0f89791,0xc76c51a30654be30
998 .quad 0xd192e819d6ef5218,0xd69906245565a910
999 .quad 0xf40e35855771202a,0x106aa07032bbd1b8
1000 .quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
1001 .quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1002 .quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1003 .quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1004 .quad 0x748f82ee5defb2fc,0x78a5636f43172f60
1005 .quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
1006 .quad 0x90befffa23631e28,0xa4506cebde82bde9
1007 .quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
1008 .quad 0xca273eceea26619c,0xd186b8c721c0c207
1009 .quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1010 .quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
1011 .quad 0x113f9804bef90dae,0x1b710b35131c471b
1012 .quad 0x28db77f523047d84,0x32caab7b40c72493
1013 .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1014 .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1015 .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
1016 .quad 0 // terminator
1017 .size .LK512,.-.LK512
1020 .quad OPENSSL_armcap_P-.
1021 .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1024 .comm OPENSSL_armcap_P,4,4