1 // Code generated by command: go run keccakf_amd64_asm.go -out ../keccakf_amd64.s -pkg sha3. DO NOT EDIT.
2
3 //go:build amd64 && !purego && gc
4
5 // func keccakF1600(a *[25]uint64)
6 TEXT ·keccakF1600(SB), $200-8
7 MOVQ a+0(FP), DI
8
9 // Convert the user state into an internal state
10 NOTQ 8(DI)
11 NOTQ 16(DI)
12 NOTQ 64(DI)
13 NOTQ 96(DI)
14 NOTQ 136(DI)
15 NOTQ 160(DI)
16
17 // Execute the KeccakF permutation
18 MOVQ (DI), SI
19 MOVQ 8(DI), BP
20 MOVQ 32(DI), R15
21 XORQ 40(DI), SI
22 XORQ 48(DI), BP
23 XORQ 72(DI), R15
24 XORQ 80(DI), SI
25 XORQ 88(DI), BP
26 XORQ 112(DI), R15
27 XORQ 120(DI), SI
28 XORQ 128(DI), BP
29 XORQ 152(DI), R15
30 XORQ 160(DI), SI
31 XORQ 168(DI), BP
32 MOVQ 176(DI), DX
33 MOVQ 184(DI), R8
34 XORQ 192(DI), R15
35
36 // Prepare round
37 MOVQ BP, BX
38 ROLQ $0x01, BX
39 MOVQ 16(DI), R12
40 XORQ 56(DI), DX
41 XORQ R15, BX
42 XORQ 96(DI), R12
43 XORQ 136(DI), DX
44 XORQ DX, R12
45 MOVQ R12, CX
46 ROLQ $0x01, CX
47 MOVQ 24(DI), R13
48 XORQ 64(DI), R8
49 XORQ SI, CX
50 XORQ 104(DI), R13
51 XORQ 144(DI), R8
52 XORQ R8, R13
53 MOVQ R13, DX
54 ROLQ $0x01, DX
55 MOVQ R15, R8
56 XORQ BP, DX
57 ROLQ $0x01, R8
58 MOVQ SI, R9
59 XORQ R12, R8
60 ROLQ $0x01, R9
61
62 // Result b
63 MOVQ (DI), R10
64 MOVQ 48(DI), R11
65 XORQ R13, R9
66 MOVQ 96(DI), R12
67 MOVQ 144(DI), R13
68 MOVQ 192(DI), R14
69 XORQ CX, R11
70 ROLQ $0x2c, R11
71 XORQ DX, R12
72 XORQ BX, R10
73 ROLQ $0x2b, R12
74 MOVQ R11, SI
75 MOVQ $0x0000000000000001, AX
76 ORQ R12, SI
77 XORQ R10, AX
78 XORQ AX, SI
79 MOVQ SI, (SP)
80 XORQ R9, R14
81 ROLQ $0x0e, R14
82 MOVQ R10, R15
83 ANDQ R11, R15
84 XORQ R14, R15
85 MOVQ R15, 32(SP)
86 XORQ R8, R13
87 ROLQ $0x15, R13
88 MOVQ R13, AX
89 ANDQ R14, AX
90 XORQ R12, AX
91 MOVQ AX, 16(SP)
92 NOTQ R12
93 ORQ R10, R14
94 ORQ R13, R12
95 XORQ R13, R14
96 XORQ R11, R12
97 MOVQ R14, 24(SP)
98 MOVQ R12, 8(SP)
99 MOVQ R12, BP
100
101 // Result g
102 MOVQ 72(DI), R11
103 XORQ R9, R11
104 MOVQ 80(DI), R12
105 ROLQ $0x14, R11
106 XORQ BX, R12
107 ROLQ $0x03, R12
108 MOVQ 24(DI), R10
109 MOVQ R11, AX
110 ORQ R12, AX
111 XORQ R8, R10
112 MOVQ 128(DI), R13
113 MOVQ 176(DI), R14
114 ROLQ $0x1c, R10
115 XORQ R10, AX
116 MOVQ AX, 40(SP)
117 XORQ AX, SI
118 XORQ CX, R13
119 ROLQ $0x2d, R13
120 MOVQ R12, AX
121 ANDQ R13, AX
122 XORQ R11, AX
123 MOVQ AX, 48(SP)
124 XORQ AX, BP
125 XORQ DX, R14
126 ROLQ $0x3d, R14
127 MOVQ R14, AX
128 ORQ R10, AX
129 XORQ R13, AX
130 MOVQ AX, 64(SP)
131 ANDQ R11, R10
132 XORQ R14, R10
133 MOVQ R10, 72(SP)
134 NOTQ R14
135 XORQ R10, R15
136 ORQ R14, R13
137 XORQ R12, R13
138 MOVQ R13, 56(SP)
139
140 // Result k
141 MOVQ 8(DI), R10
142 MOVQ 56(DI), R11
143 MOVQ 104(DI), R12
144 MOVQ 152(DI), R13
145 MOVQ 160(DI), R14
146 XORQ DX, R11
147 ROLQ $0x06, R11
148 XORQ R8, R12
149 ROLQ $0x19, R12
150 MOVQ R11, AX
151 ORQ R12, AX
152 XORQ CX, R10
153 ROLQ $0x01, R10
154 XORQ R10, AX
155 MOVQ AX, 80(SP)
156 XORQ AX, SI
157 XORQ R9, R13
158 ROLQ $0x08, R13
159 MOVQ R12, AX
160 ANDQ R13, AX
161 XORQ R11, AX
162 MOVQ AX, 88(SP)
163 XORQ AX, BP
164 XORQ BX, R14
165 ROLQ $0x12, R14
166 NOTQ R13
167 MOVQ R13, AX
168 ANDQ R14, AX
169 XORQ R12, AX
170 MOVQ AX, 96(SP)
171 MOVQ R14, AX
172 ORQ R10, AX
173 XORQ R13, AX
174 MOVQ AX, 104(SP)
175 ANDQ R11, R10
176 XORQ R14, R10
177 MOVQ R10, 112(SP)
178 XORQ R10, R15
179
180 // Result m
181 MOVQ 40(DI), R11
182 XORQ BX, R11
183 MOVQ 88(DI), R12
184 ROLQ $0x24, R11
185 XORQ CX, R12
186 MOVQ 32(DI), R10
187 ROLQ $0x0a, R12
188 MOVQ R11, AX
189 MOVQ 136(DI), R13
190 ANDQ R12, AX
191 XORQ R9, R10
192 MOVQ 184(DI), R14
193 ROLQ $0x1b, R10
194 XORQ R10, AX
195 MOVQ AX, 120(SP)
196 XORQ AX, SI
197 XORQ DX, R13
198 ROLQ $0x0f, R13
199 MOVQ R12, AX
200 ORQ R13, AX
201 XORQ R11, AX
202 MOVQ AX, 128(SP)
203 XORQ AX, BP
204 XORQ R8, R14
205 ROLQ $0x38, R14
206 NOTQ R13
207 MOVQ R13, AX
208 ORQ R14, AX
209 XORQ R12, AX
210 MOVQ AX, 136(SP)
211 ORQ R10, R11
212 XORQ R14, R11
213 MOVQ R11, 152(SP)
214 ANDQ R10, R14
215 XORQ R13, R14
216 MOVQ R14, 144(SP)
217 XORQ R11, R15
218
219 // Result s
220 MOVQ 16(DI), R10
221 MOVQ 64(DI), R11
222 MOVQ 112(DI), R12
223 XORQ DX, R10
224 MOVQ 120(DI), R13
225 ROLQ $0x3e, R10
226 XORQ R8, R11
227 MOVQ 168(DI), R14
228 ROLQ $0x37, R11
229 XORQ R9, R12
230 MOVQ R10, R9
231 XORQ CX, R14
232 ROLQ $0x02, R14
233 ANDQ R11, R9
234 XORQ R14, R9
235 MOVQ R9, 192(SP)
236 ROLQ $0x27, R12
237 XORQ R9, R15
238 NOTQ R11
239 XORQ BX, R13
240 MOVQ R11, BX
241 ANDQ R12, BX
242 XORQ R10, BX
243 MOVQ BX, 160(SP)
244 XORQ BX, SI
245 ROLQ $0x29, R13
246 MOVQ R12, CX
247 ORQ R13, CX
248 XORQ R11, CX
249 MOVQ CX, 168(SP)
250 XORQ CX, BP
251 MOVQ R13, DX
252 MOVQ R14, R8
253 ANDQ R14, DX
254 ORQ R10, R8
255 XORQ R12, DX
256 XORQ R13, R8
257 MOVQ DX, 176(SP)
258 MOVQ R8, 184(SP)
259
260 // Prepare round
261 MOVQ BP, BX
262 ROLQ $0x01, BX
263 MOVQ 16(SP), R12
264 XORQ 56(SP), DX
265 XORQ R15, BX
266 XORQ 96(SP), R12
267 XORQ 136(SP), DX
268 XORQ DX, R12
269 MOVQ R12, CX
270 ROLQ $0x01, CX
271 MOVQ 24(SP), R13
272 XORQ 64(SP), R8
273 XORQ SI, CX
274 XORQ 104(SP), R13
275 XORQ 144(SP), R8
276 XORQ R8, R13
277 MOVQ R13, DX
278 ROLQ $0x01, DX
279 MOVQ R15, R8
280 XORQ BP, DX
281 ROLQ $0x01, R8
282 MOVQ SI, R9
283 XORQ R12, R8
284 ROLQ $0x01, R9
285
286 // Result b
287 MOVQ (SP), R10
288 MOVQ 48(SP), R11
289 XORQ R13, R9
290 MOVQ 96(SP), R12
291 MOVQ 144(SP), R13
292 MOVQ 192(SP), R14
293 XORQ CX, R11
294 ROLQ $0x2c, R11
295 XORQ DX, R12
296 XORQ BX, R10
297 ROLQ $0x2b, R12
298 MOVQ R11, SI
299 MOVQ $0x0000000000008082, AX
300 ORQ R12, SI
301 XORQ R10, AX
302 XORQ AX, SI
303 MOVQ SI, (DI)
304 XORQ R9, R14
305 ROLQ $0x0e, R14
306 MOVQ R10, R15
307 ANDQ R11, R15
308 XORQ R14, R15
309 MOVQ R15, 32(DI)
310 XORQ R8, R13
311 ROLQ $0x15, R13
312 MOVQ R13, AX
313 ANDQ R14, AX
314 XORQ R12, AX
315 MOVQ AX, 16(DI)
316 NOTQ R12
317 ORQ R10, R14
318 ORQ R13, R12
319 XORQ R13, R14
320 XORQ R11, R12
321 MOVQ R14, 24(DI)
322 MOVQ R12, 8(DI)
323 MOVQ R12, BP
324
325 // Result g
326 MOVQ 72(SP), R11
327 XORQ R9, R11
328 MOVQ 80(SP), R12
329 ROLQ $0x14, R11
330 XORQ BX, R12
331 ROLQ $0x03, R12
332 MOVQ 24(SP), R10
333 MOVQ R11, AX
334 ORQ R12, AX
335 XORQ R8, R10
336 MOVQ 128(SP), R13
337 MOVQ 176(SP), R14
338 ROLQ $0x1c, R10
339 XORQ R10, AX
340 MOVQ AX, 40(DI)
341 XORQ AX, SI
342 XORQ CX, R13
343 ROLQ $0x2d, R13
344 MOVQ R12, AX
345 ANDQ R13, AX
346 XORQ R11, AX
347 MOVQ AX, 48(DI)
348 XORQ AX, BP
349 XORQ DX, R14
350 ROLQ $0x3d, R14
351 MOVQ R14, AX
352 ORQ R10, AX
353 XORQ R13, AX
354 MOVQ AX, 64(DI)
355 ANDQ R11, R10
356 XORQ R14, R10
357 MOVQ R10, 72(DI)
358 NOTQ R14
359 XORQ R10, R15
360 ORQ R14, R13
361 XORQ R12, R13
362 MOVQ R13, 56(DI)
363
364 // Result k
365 MOVQ 8(SP), R10
366 MOVQ 56(SP), R11
367 MOVQ 104(SP), R12
368 MOVQ 152(SP), R13
369 MOVQ 160(SP), R14
370 XORQ DX, R11
371 ROLQ $0x06, R11
372 XORQ R8, R12
373 ROLQ $0x19, R12
374 MOVQ R11, AX
375 ORQ R12, AX
376 XORQ CX, R10
377 ROLQ $0x01, R10
378 XORQ R10, AX
379 MOVQ AX, 80(DI)
380 XORQ AX, SI
381 XORQ R9, R13
382 ROLQ $0x08, R13
383 MOVQ R12, AX
384 ANDQ R13, AX
385 XORQ R11, AX
386 MOVQ AX, 88(DI)
387 XORQ AX, BP
388 XORQ BX, R14
389 ROLQ $0x12, R14
390 NOTQ R13
391 MOVQ R13, AX
392 ANDQ R14, AX
393 XORQ R12, AX
394 MOVQ AX, 96(DI)
395 MOVQ R14, AX
396 ORQ R10, AX
397 XORQ R13, AX
398 MOVQ AX, 104(DI)
399 ANDQ R11, R10
400 XORQ R14, R10
401 MOVQ R10, 112(DI)
402 XORQ R10, R15
403
404 // Result m
405 MOVQ 40(SP), R11
406 XORQ BX, R11
407 MOVQ 88(SP), R12
408 ROLQ $0x24, R11
409 XORQ CX, R12
410 MOVQ 32(SP), R10
411 ROLQ $0x0a, R12
412 MOVQ R11, AX
413 MOVQ 136(SP), R13
414 ANDQ R12, AX
415 XORQ R9, R10
416 MOVQ 184(SP), R14
417 ROLQ $0x1b, R10
418 XORQ R10, AX
419 MOVQ AX, 120(DI)
420 XORQ AX, SI
421 XORQ DX, R13
422 ROLQ $0x0f, R13
423 MOVQ R12, AX
424 ORQ R13, AX
425 XORQ R11, AX
426 MOVQ AX, 128(DI)
427 XORQ AX, BP
428 XORQ R8, R14
429 ROLQ $0x38, R14
430 NOTQ R13
431 MOVQ R13, AX
432 ORQ R14, AX
433 XORQ R12, AX
434 MOVQ AX, 136(DI)
435 ORQ R10, R11
436 XORQ R14, R11
437 MOVQ R11, 152(DI)
438 ANDQ R10, R14
439 XORQ R13, R14
440 MOVQ R14, 144(DI)
441 XORQ R11, R15
442
443 // Result s
444 MOVQ 16(SP), R10
445 MOVQ 64(SP), R11
446 MOVQ 112(SP), R12
447 XORQ DX, R10
448 MOVQ 120(SP), R13
449 ROLQ $0x3e, R10
450 XORQ R8, R11
451 MOVQ 168(SP), R14
452 ROLQ $0x37, R11
453 XORQ R9, R12
454 MOVQ R10, R9
455 XORQ CX, R14
456 ROLQ $0x02, R14
457 ANDQ R11, R9
458 XORQ R14, R9
459 MOVQ R9, 192(DI)
460 ROLQ $0x27, R12
461 XORQ R9, R15
462 NOTQ R11
463 XORQ BX, R13
464 MOVQ R11, BX
465 ANDQ R12, BX
466 XORQ R10, BX
467 MOVQ BX, 160(DI)
468 XORQ BX, SI
469 ROLQ $0x29, R13
470 MOVQ R12, CX
471 ORQ R13, CX
472 XORQ R11, CX
473 MOVQ CX, 168(DI)
474 XORQ CX, BP
475 MOVQ R13, DX
476 MOVQ R14, R8
477 ANDQ R14, DX
478 ORQ R10, R8
479 XORQ R12, DX
480 XORQ R13, R8
481 MOVQ DX, 176(DI)
482 MOVQ R8, 184(DI)
483
484 // Prepare round
485 MOVQ BP, BX
486 ROLQ $0x01, BX
487 MOVQ 16(DI), R12
488 XORQ 56(DI), DX
489 XORQ R15, BX
490 XORQ 96(DI), R12
491 XORQ 136(DI), DX
492 XORQ DX, R12
493 MOVQ R12, CX
494 ROLQ $0x01, CX
495 MOVQ 24(DI), R13
496 XORQ 64(DI), R8
497 XORQ SI, CX
498 XORQ 104(DI), R13
499 XORQ 144(DI), R8
500 XORQ R8, R13
501 MOVQ R13, DX
502 ROLQ $0x01, DX
503 MOVQ R15, R8
504 XORQ BP, DX
505 ROLQ $0x01, R8
506 MOVQ SI, R9
507 XORQ R12, R8
508 ROLQ $0x01, R9
509
510 // Result b
511 MOVQ (DI), R10
512 MOVQ 48(DI), R11
513 XORQ R13, R9
514 MOVQ 96(DI), R12
515 MOVQ 144(DI), R13
516 MOVQ 192(DI), R14
517 XORQ CX, R11
518 ROLQ $0x2c, R11
519 XORQ DX, R12
520 XORQ BX, R10
521 ROLQ $0x2b, R12
522 MOVQ R11, SI
523 MOVQ $0x800000000000808a, AX
524 ORQ R12, SI
525 XORQ R10, AX
526 XORQ AX, SI
527 MOVQ SI, (SP)
528 XORQ R9, R14
529 ROLQ $0x0e, R14
530 MOVQ R10, R15
531 ANDQ R11, R15
532 XORQ R14, R15
533 MOVQ R15, 32(SP)
534 XORQ R8, R13
535 ROLQ $0x15, R13
536 MOVQ R13, AX
537 ANDQ R14, AX
538 XORQ R12, AX
539 MOVQ AX, 16(SP)
540 NOTQ R12
541 ORQ R10, R14
542 ORQ R13, R12
543 XORQ R13, R14
544 XORQ R11, R12
545 MOVQ R14, 24(SP)
546 MOVQ R12, 8(SP)
547 MOVQ R12, BP
548
549 // Result g
550 MOVQ 72(DI), R11
551 XORQ R9, R11
552 MOVQ 80(DI), R12
553 ROLQ $0x14, R11
554 XORQ BX, R12
555 ROLQ $0x03, R12
556 MOVQ 24(DI), R10
557 MOVQ R11, AX
558 ORQ R12, AX
559 XORQ R8, R10
560 MOVQ 128(DI), R13
561 MOVQ 176(DI), R14
562 ROLQ $0x1c, R10
563 XORQ R10, AX
564 MOVQ AX, 40(SP)
565 XORQ AX, SI
566 XORQ CX, R13
567 ROLQ $0x2d, R13
568 MOVQ R12, AX
569 ANDQ R13, AX
570 XORQ R11, AX
571 MOVQ AX, 48(SP)
572 XORQ AX, BP
573 XORQ DX, R14
574 ROLQ $0x3d, R14
575 MOVQ R14, AX
576 ORQ R10, AX
577 XORQ R13, AX
578 MOVQ AX, 64(SP)
579 ANDQ R11, R10
580 XORQ R14, R10
581 MOVQ R10, 72(SP)
582 NOTQ R14
583 XORQ R10, R15
584 ORQ R14, R13
585 XORQ R12, R13
586 MOVQ R13, 56(SP)
587
588 // Result k
589 MOVQ 8(DI), R10
590 MOVQ 56(DI), R11
591 MOVQ 104(DI), R12
592 MOVQ 152(DI), R13
593 MOVQ 160(DI), R14
594 XORQ DX, R11
595 ROLQ $0x06, R11
596 XORQ R8, R12
597 ROLQ $0x19, R12
598 MOVQ R11, AX
599 ORQ R12, AX
600 XORQ CX, R10
601 ROLQ $0x01, R10
602 XORQ R10, AX
603 MOVQ AX, 80(SP)
604 XORQ AX, SI
605 XORQ R9, R13
606 ROLQ $0x08, R13
607 MOVQ R12, AX
608 ANDQ R13, AX
609 XORQ R11, AX
610 MOVQ AX, 88(SP)
611 XORQ AX, BP
612 XORQ BX, R14
613 ROLQ $0x12, R14
614 NOTQ R13
615 MOVQ R13, AX
616 ANDQ R14, AX
617 XORQ R12, AX
618 MOVQ AX, 96(SP)
619 MOVQ R14, AX
620 ORQ R10, AX
621 XORQ R13, AX
622 MOVQ AX, 104(SP)
623 ANDQ R11, R10
624 XORQ R14, R10
625 MOVQ R10, 112(SP)
626 XORQ R10, R15
627
628 // Result m
629 MOVQ 40(DI), R11
630 XORQ BX, R11
631 MOVQ 88(DI), R12
632 ROLQ $0x24, R11
633 XORQ CX, R12
634 MOVQ 32(DI), R10
635 ROLQ $0x0a, R12
636 MOVQ R11, AX
637 MOVQ 136(DI), R13
638 ANDQ R12, AX
639 XORQ R9, R10
640 MOVQ 184(DI), R14
641 ROLQ $0x1b, R10
642 XORQ R10, AX
643 MOVQ AX, 120(SP)
644 XORQ AX, SI
645 XORQ DX, R13
646 ROLQ $0x0f, R13
647 MOVQ R12, AX
648 ORQ R13, AX
649 XORQ R11, AX
650 MOVQ AX, 128(SP)
651 XORQ AX, BP
652 XORQ R8, R14
653 ROLQ $0x38, R14
654 NOTQ R13
655 MOVQ R13, AX
656 ORQ R14, AX
657 XORQ R12, AX
658 MOVQ AX, 136(SP)
659 ORQ R10, R11
660 XORQ R14, R11
661 MOVQ R11, 152(SP)
662 ANDQ R10, R14
663 XORQ R13, R14
664 MOVQ R14, 144(SP)
665 XORQ R11, R15
666
667 // Result s
668 MOVQ 16(DI), R10
669 MOVQ 64(DI), R11
670 MOVQ 112(DI), R12
671 XORQ DX, R10
672 MOVQ 120(DI), R13
673 ROLQ $0x3e, R10
674 XORQ R8, R11
675 MOVQ 168(DI), R14
676 ROLQ $0x37, R11
677 XORQ R9, R12
678 MOVQ R10, R9
679 XORQ CX, R14
680 ROLQ $0x02, R14
681 ANDQ R11, R9
682 XORQ R14, R9
683 MOVQ R9, 192(SP)
684 ROLQ $0x27, R12
685 XORQ R9, R15
686 NOTQ R11
687 XORQ BX, R13
688 MOVQ R11, BX
689 ANDQ R12, BX
690 XORQ R10, BX
691 MOVQ BX, 160(SP)
692 XORQ BX, SI
693 ROLQ $0x29, R13
694 MOVQ R12, CX
695 ORQ R13, CX
696 XORQ R11, CX
697 MOVQ CX, 168(SP)
698 XORQ CX, BP
699 MOVQ R13, DX
700 MOVQ R14, R8
701 ANDQ R14, DX
702 ORQ R10, R8
703 XORQ R12, DX
704 XORQ R13, R8
705 MOVQ DX, 176(SP)
706 MOVQ R8, 184(SP)
707
708 // Prepare round
709 MOVQ BP, BX
710 ROLQ $0x01, BX
711 MOVQ 16(SP), R12
712 XORQ 56(SP), DX
713 XORQ R15, BX
714 XORQ 96(SP), R12
715 XORQ 136(SP), DX
716 XORQ DX, R12
717 MOVQ R12, CX
718 ROLQ $0x01, CX
719 MOVQ 24(SP), R13
720 XORQ 64(SP), R8
721 XORQ SI, CX
722 XORQ 104(SP), R13
723 XORQ 144(SP), R8
724 XORQ R8, R13
725 MOVQ R13, DX
726 ROLQ $0x01, DX
727 MOVQ R15, R8
728 XORQ BP, DX
729 ROLQ $0x01, R8
730 MOVQ SI, R9
731 XORQ R12, R8
732 ROLQ $0x01, R9
733
734 // Result b
735 MOVQ (SP), R10
736 MOVQ 48(SP), R11
737 XORQ R13, R9
738 MOVQ 96(SP), R12
739 MOVQ 144(SP), R13
740 MOVQ 192(SP), R14
741 XORQ CX, R11
742 ROLQ $0x2c, R11
743 XORQ DX, R12
744 XORQ BX, R10
745 ROLQ $0x2b, R12
746 MOVQ R11, SI
747 MOVQ $0x8000000080008000, AX
748 ORQ R12, SI
749 XORQ R10, AX
750 XORQ AX, SI
751 MOVQ SI, (DI)
752 XORQ R9, R14
753 ROLQ $0x0e, R14
754 MOVQ R10, R15
755 ANDQ R11, R15
756 XORQ R14, R15
757 MOVQ R15, 32(DI)
758 XORQ R8, R13
759 ROLQ $0x15, R13
760 MOVQ R13, AX
761 ANDQ R14, AX
762 XORQ R12, AX
763 MOVQ AX, 16(DI)
764 NOTQ R12
765 ORQ R10, R14
766 ORQ R13, R12
767 XORQ R13, R14
768 XORQ R11, R12
769 MOVQ R14, 24(DI)
770 MOVQ R12, 8(DI)
771 MOVQ R12, BP
772
773 // Result g
774 MOVQ 72(SP), R11
775 XORQ R9, R11
776 MOVQ 80(SP), R12
777 ROLQ $0x14, R11
778 XORQ BX, R12
779 ROLQ $0x03, R12
780 MOVQ 24(SP), R10
781 MOVQ R11, AX
782 ORQ R12, AX
783 XORQ R8, R10
784 MOVQ 128(SP), R13
785 MOVQ 176(SP), R14
786 ROLQ $0x1c, R10
787 XORQ R10, AX
788 MOVQ AX, 40(DI)
789 XORQ AX, SI
790 XORQ CX, R13
791 ROLQ $0x2d, R13
792 MOVQ R12, AX
793 ANDQ R13, AX
794 XORQ R11, AX
795 MOVQ AX, 48(DI)
796 XORQ AX, BP
797 XORQ DX, R14
798 ROLQ $0x3d, R14
799 MOVQ R14, AX
800 ORQ R10, AX
801 XORQ R13, AX
802 MOVQ AX, 64(DI)
803 ANDQ R11, R10
804 XORQ R14, R10
805 MOVQ R10, 72(DI)
806 NOTQ R14
807 XORQ R10, R15
808 ORQ R14, R13
809 XORQ R12, R13
810 MOVQ R13, 56(DI)
811
812 // Result k
813 MOVQ 8(SP), R10
814 MOVQ 56(SP), R11
815 MOVQ 104(SP), R12
816 MOVQ 152(SP), R13
817 MOVQ 160(SP), R14
818 XORQ DX, R11
819 ROLQ $0x06, R11
820 XORQ R8, R12
821 ROLQ $0x19, R12
822 MOVQ R11, AX
823 ORQ R12, AX
824 XORQ CX, R10
825 ROLQ $0x01, R10
826 XORQ R10, AX
827 MOVQ AX, 80(DI)
828 XORQ AX, SI
829 XORQ R9, R13
830 ROLQ $0x08, R13
831 MOVQ R12, AX
832 ANDQ R13, AX
833 XORQ R11, AX
834 MOVQ AX, 88(DI)
835 XORQ AX, BP
836 XORQ BX, R14
837 ROLQ $0x12, R14
838 NOTQ R13
839 MOVQ R13, AX
840 ANDQ R14, AX
841 XORQ R12, AX
842 MOVQ AX, 96(DI)
843 MOVQ R14, AX
844 ORQ R10, AX
845 XORQ R13, AX
846 MOVQ AX, 104(DI)
847 ANDQ R11, R10
848 XORQ R14, R10
849 MOVQ R10, 112(DI)
850 XORQ R10, R15
851
852 // Result m
853 MOVQ 40(SP), R11
854 XORQ BX, R11
855 MOVQ 88(SP), R12
856 ROLQ $0x24, R11
857 XORQ CX, R12
858 MOVQ 32(SP), R10
859 ROLQ $0x0a, R12
860 MOVQ R11, AX
861 MOVQ 136(SP), R13
862 ANDQ R12, AX
863 XORQ R9, R10
864 MOVQ 184(SP), R14
865 ROLQ $0x1b, R10
866 XORQ R10, AX
867 MOVQ AX, 120(DI)
868 XORQ AX, SI
869 XORQ DX, R13
870 ROLQ $0x0f, R13
871 MOVQ R12, AX
872 ORQ R13, AX
873 XORQ R11, AX
874 MOVQ AX, 128(DI)
875 XORQ AX, BP
876 XORQ R8, R14
877 ROLQ $0x38, R14
878 NOTQ R13
879 MOVQ R13, AX
880 ORQ R14, AX
881 XORQ R12, AX
882 MOVQ AX, 136(DI)
883 ORQ R10, R11
884 XORQ R14, R11
885 MOVQ R11, 152(DI)
886 ANDQ R10, R14
887 XORQ R13, R14
888 MOVQ R14, 144(DI)
889 XORQ R11, R15
890
891 // Result s
892 MOVQ 16(SP), R10
893 MOVQ 64(SP), R11
894 MOVQ 112(SP), R12
895 XORQ DX, R10
896 MOVQ 120(SP), R13
897 ROLQ $0x3e, R10
898 XORQ R8, R11
899 MOVQ 168(SP), R14
900 ROLQ $0x37, R11
901 XORQ R9, R12
902 MOVQ R10, R9
903 XORQ CX, R14
904 ROLQ $0x02, R14
905 ANDQ R11, R9
906 XORQ R14, R9
907 MOVQ R9, 192(DI)
908 ROLQ $0x27, R12
909 XORQ R9, R15
910 NOTQ R11
911 XORQ BX, R13
912 MOVQ R11, BX
913 ANDQ R12, BX
914 XORQ R10, BX
915 MOVQ BX, 160(DI)
916 XORQ BX, SI
917 ROLQ $0x29, R13
918 MOVQ R12, CX
919 ORQ R13, CX
920 XORQ R11, CX
921 MOVQ CX, 168(DI)
922 XORQ CX, BP
923 MOVQ R13, DX
924 MOVQ R14, R8
925 ANDQ R14, DX
926 ORQ R10, R8
927 XORQ R12, DX
928 XORQ R13, R8
929 MOVQ DX, 176(DI)
930 MOVQ R8, 184(DI)
931
932 // Prepare round
933 MOVQ BP, BX
934 ROLQ $0x01, BX
935 MOVQ 16(DI), R12
936 XORQ 56(DI), DX
937 XORQ R15, BX
938 XORQ 96(DI), R12
939 XORQ 136(DI), DX
940 XORQ DX, R12
941 MOVQ R12, CX
942 ROLQ $0x01, CX
943 MOVQ 24(DI), R13
944 XORQ 64(DI), R8
945 XORQ SI, CX
946 XORQ 104(DI), R13
947 XORQ 144(DI), R8
948 XORQ R8, R13
949 MOVQ R13, DX
950 ROLQ $0x01, DX
951 MOVQ R15, R8
952 XORQ BP, DX
953 ROLQ $0x01, R8
954 MOVQ SI, R9
955 XORQ R12, R8
956 ROLQ $0x01, R9
957
958 // Result b
959 MOVQ (DI), R10
960 MOVQ 48(DI), R11
961 XORQ R13, R9
962 MOVQ 96(DI), R12
963 MOVQ 144(DI), R13
964 MOVQ 192(DI), R14
965 XORQ CX, R11
966 ROLQ $0x2c, R11
967 XORQ DX, R12
968 XORQ BX, R10
969 ROLQ $0x2b, R12
970 MOVQ R11, SI
971 MOVQ $0x000000000000808b, AX
972 ORQ R12, SI
973 XORQ R10, AX
974 XORQ AX, SI
975 MOVQ SI, (SP)
976 XORQ R9, R14
977 ROLQ $0x0e, R14
978 MOVQ R10, R15
979 ANDQ R11, R15
980 XORQ R14, R15
981 MOVQ R15, 32(SP)
982 XORQ R8, R13
983 ROLQ $0x15, R13
984 MOVQ R13, AX
985 ANDQ R14, AX
986 XORQ R12, AX
987 MOVQ AX, 16(SP)
988 NOTQ R12
989 ORQ R10, R14
990 ORQ R13, R12
991 XORQ R13, R14
992 XORQ R11, R12
993 MOVQ R14, 24(SP)
994 MOVQ R12, 8(SP)
995 MOVQ R12, BP
996
997 // Result g
998 MOVQ 72(DI), R11
999 XORQ R9, R11
1000 MOVQ 80(DI), R12
1001 ROLQ $0x14, R11
1002 XORQ BX, R12
1003 ROLQ $0x03, R12
1004 MOVQ 24(DI), R10
1005 MOVQ R11, AX
1006 ORQ R12, AX
1007 XORQ R8, R10
1008 MOVQ 128(DI), R13
1009 MOVQ 176(DI), R14
1010 ROLQ $0x1c, R10
1011 XORQ R10, AX
1012 MOVQ AX, 40(SP)
1013 XORQ AX, SI
1014 XORQ CX, R13
1015 ROLQ $0x2d, R13
1016 MOVQ R12, AX
1017 ANDQ R13, AX
1018 XORQ R11, AX
1019 MOVQ AX, 48(SP)
1020 XORQ AX, BP
1021 XORQ DX, R14
1022 ROLQ $0x3d, R14
1023 MOVQ R14, AX
1024 ORQ R10, AX
1025 XORQ R13, AX
1026 MOVQ AX, 64(SP)
1027 ANDQ R11, R10
1028 XORQ R14, R10
1029 MOVQ R10, 72(SP)
1030 NOTQ R14
1031 XORQ R10, R15
1032 ORQ R14, R13
1033 XORQ R12, R13
1034 MOVQ R13, 56(SP)
1035
1036 // Result k
1037 MOVQ 8(DI), R10
1038 MOVQ 56(DI), R11
1039 MOVQ 104(DI), R12
1040 MOVQ 152(DI), R13
1041 MOVQ 160(DI), R14
1042 XORQ DX, R11
1043 ROLQ $0x06, R11
1044 XORQ R8, R12
1045 ROLQ $0x19, R12
1046 MOVQ R11, AX
1047 ORQ R12, AX
1048 XORQ CX, R10
1049 ROLQ $0x01, R10
1050 XORQ R10, AX
1051 MOVQ AX, 80(SP)
1052 XORQ AX, SI
1053 XORQ R9, R13
1054 ROLQ $0x08, R13
1055 MOVQ R12, AX
1056 ANDQ R13, AX
1057 XORQ R11, AX
1058 MOVQ AX, 88(SP)
1059 XORQ AX, BP
1060 XORQ BX, R14
1061 ROLQ $0x12, R14
1062 NOTQ R13
1063 MOVQ R13, AX
1064 ANDQ R14, AX
1065 XORQ R12, AX
1066 MOVQ AX, 96(SP)
1067 MOVQ R14, AX
1068 ORQ R10, AX
1069 XORQ R13, AX
1070 MOVQ AX, 104(SP)
1071 ANDQ R11, R10
1072 XORQ R14, R10
1073 MOVQ R10, 112(SP)
1074 XORQ R10, R15
1075
1076 // Result m
1077 MOVQ 40(DI), R11
1078 XORQ BX, R11
1079 MOVQ 88(DI), R12
1080 ROLQ $0x24, R11
1081 XORQ CX, R12
1082 MOVQ 32(DI), R10
1083 ROLQ $0x0a, R12
1084 MOVQ R11, AX
1085 MOVQ 136(DI), R13
1086 ANDQ R12, AX
1087 XORQ R9, R10
1088 MOVQ 184(DI), R14
1089 ROLQ $0x1b, R10
1090 XORQ R10, AX
1091 MOVQ AX, 120(SP)
1092 XORQ AX, SI
1093 XORQ DX, R13
1094 ROLQ $0x0f, R13
1095 MOVQ R12, AX
1096 ORQ R13, AX
1097 XORQ R11, AX
1098 MOVQ AX, 128(SP)
1099 XORQ AX, BP
1100 XORQ R8, R14
1101 ROLQ $0x38, R14
1102 NOTQ R13
1103 MOVQ R13, AX
1104 ORQ R14, AX
1105 XORQ R12, AX
1106 MOVQ AX, 136(SP)
1107 ORQ R10, R11
1108 XORQ R14, R11
1109 MOVQ R11, 152(SP)
1110 ANDQ R10, R14
1111 XORQ R13, R14
1112 MOVQ R14, 144(SP)
1113 XORQ R11, R15
1114
1115 // Result s
1116 MOVQ 16(DI), R10
1117 MOVQ 64(DI), R11
1118 MOVQ 112(DI), R12
1119 XORQ DX, R10
1120 MOVQ 120(DI), R13
1121 ROLQ $0x3e, R10
1122 XORQ R8, R11
1123 MOVQ 168(DI), R14
1124 ROLQ $0x37, R11
1125 XORQ R9, R12
1126 MOVQ R10, R9
1127 XORQ CX, R14
1128 ROLQ $0x02, R14
1129 ANDQ R11, R9
1130 XORQ R14, R9
1131 MOVQ R9, 192(SP)
1132 ROLQ $0x27, R12
1133 XORQ R9, R15
1134 NOTQ R11
1135 XORQ BX, R13
1136 MOVQ R11, BX
1137 ANDQ R12, BX
1138 XORQ R10, BX
1139 MOVQ BX, 160(SP)
1140 XORQ BX, SI
1141 ROLQ $0x29, R13
1142 MOVQ R12, CX
1143 ORQ R13, CX
1144 XORQ R11, CX
1145 MOVQ CX, 168(SP)
1146 XORQ CX, BP
1147 MOVQ R13, DX
1148 MOVQ R14, R8
1149 ANDQ R14, DX
1150 ORQ R10, R8
1151 XORQ R12, DX
1152 XORQ R13, R8
1153 MOVQ DX, 176(SP)
1154 MOVQ R8, 184(SP)
1155
1156 // Prepare round
1157 MOVQ BP, BX
1158 ROLQ $0x01, BX
1159 MOVQ 16(SP), R12
1160 XORQ 56(SP), DX
1161 XORQ R15, BX
1162 XORQ 96(SP), R12
1163 XORQ 136(SP), DX
1164 XORQ DX, R12
1165 MOVQ R12, CX
1166 ROLQ $0x01, CX
1167 MOVQ 24(SP), R13
1168 XORQ 64(SP), R8
1169 XORQ SI, CX
1170 XORQ 104(SP), R13
1171 XORQ 144(SP), R8
1172 XORQ R8, R13
1173 MOVQ R13, DX
1174 ROLQ $0x01, DX
1175 MOVQ R15, R8
1176 XORQ BP, DX
1177 ROLQ $0x01, R8
1178 MOVQ SI, R9
1179 XORQ R12, R8
1180 ROLQ $0x01, R9
1181
1182 // Result b
1183 MOVQ (SP), R10
1184 MOVQ 48(SP), R11
1185 XORQ R13, R9
1186 MOVQ 96(SP), R12
1187 MOVQ 144(SP), R13
1188 MOVQ 192(SP), R14
1189 XORQ CX, R11
1190 ROLQ $0x2c, R11
1191 XORQ DX, R12
1192 XORQ BX, R10
1193 ROLQ $0x2b, R12
1194 MOVQ R11, SI
1195 MOVQ $0x0000000080000001, AX
1196 ORQ R12, SI
1197 XORQ R10, AX
1198 XORQ AX, SI
1199 MOVQ SI, (DI)
1200 XORQ R9, R14
1201 ROLQ $0x0e, R14
1202 MOVQ R10, R15
1203 ANDQ R11, R15
1204 XORQ R14, R15
1205 MOVQ R15, 32(DI)
1206 XORQ R8, R13
1207 ROLQ $0x15, R13
1208 MOVQ R13, AX
1209 ANDQ R14, AX
1210 XORQ R12, AX
1211 MOVQ AX, 16(DI)
1212 NOTQ R12
1213 ORQ R10, R14
1214 ORQ R13, R12
1215 XORQ R13, R14
1216 XORQ R11, R12
1217 MOVQ R14, 24(DI)
1218 MOVQ R12, 8(DI)
1219 MOVQ R12, BP
1220
1221 // Result g
1222 MOVQ 72(SP), R11
1223 XORQ R9, R11
1224 MOVQ 80(SP), R12
1225 ROLQ $0x14, R11
1226 XORQ BX, R12
1227 ROLQ $0x03, R12
1228 MOVQ 24(SP), R10
1229 MOVQ R11, AX
1230 ORQ R12, AX
1231 XORQ R8, R10
1232 MOVQ 128(SP), R13
1233 MOVQ 176(SP), R14
1234 ROLQ $0x1c, R10
1235 XORQ R10, AX
1236 MOVQ AX, 40(DI)
1237 XORQ AX, SI
1238 XORQ CX, R13
1239 ROLQ $0x2d, R13
1240 MOVQ R12, AX
1241 ANDQ R13, AX
1242 XORQ R11, AX
1243 MOVQ AX, 48(DI)
1244 XORQ AX, BP
1245 XORQ DX, R14
1246 ROLQ $0x3d, R14
1247 MOVQ R14, AX
1248 ORQ R10, AX
1249 XORQ R13, AX
1250 MOVQ AX, 64(DI)
1251 ANDQ R11, R10
1252 XORQ R14, R10
1253 MOVQ R10, 72(DI)
1254 NOTQ R14
1255 XORQ R10, R15
1256 ORQ R14, R13
1257 XORQ R12, R13
1258 MOVQ R13, 56(DI)
1259
1260 // Result k
1261 MOVQ 8(SP), R10
1262 MOVQ 56(SP), R11
1263 MOVQ 104(SP), R12
1264 MOVQ 152(SP), R13
1265 MOVQ 160(SP), R14
1266 XORQ DX, R11
1267 ROLQ $0x06, R11
1268 XORQ R8, R12
1269 ROLQ $0x19, R12
1270 MOVQ R11, AX
1271 ORQ R12, AX
1272 XORQ CX, R10
1273 ROLQ $0x01, R10
1274 XORQ R10, AX
1275 MOVQ AX, 80(DI)
1276 XORQ AX, SI
1277 XORQ R9, R13
1278 ROLQ $0x08, R13
1279 MOVQ R12, AX
1280 ANDQ R13, AX
1281 XORQ R11, AX
1282 MOVQ AX, 88(DI)
1283 XORQ AX, BP
1284 XORQ BX, R14
1285 ROLQ $0x12, R14
1286 NOTQ R13
1287 MOVQ R13, AX
1288 ANDQ R14, AX
1289 XORQ R12, AX
1290 MOVQ AX, 96(DI)
1291 MOVQ R14, AX
1292 ORQ R10, AX
1293 XORQ R13, AX
1294 MOVQ AX, 104(DI)
1295 ANDQ R11, R10
1296 XORQ R14, R10
1297 MOVQ R10, 112(DI)
1298 XORQ R10, R15
1299
1300 // Result m
1301 MOVQ 40(SP), R11
1302 XORQ BX, R11
1303 MOVQ 88(SP), R12
1304 ROLQ $0x24, R11
1305 XORQ CX, R12
1306 MOVQ 32(SP), R10
1307 ROLQ $0x0a, R12
1308 MOVQ R11, AX
1309 MOVQ 136(SP), R13
1310 ANDQ R12, AX
1311 XORQ R9, R10
1312 MOVQ 184(SP), R14
1313 ROLQ $0x1b, R10
1314 XORQ R10, AX
1315 MOVQ AX, 120(DI)
1316 XORQ AX, SI
1317 XORQ DX, R13
1318 ROLQ $0x0f, R13
1319 MOVQ R12, AX
1320 ORQ R13, AX
1321 XORQ R11, AX
1322 MOVQ AX, 128(DI)
1323 XORQ AX, BP
1324 XORQ R8, R14
1325 ROLQ $0x38, R14
1326 NOTQ R13
1327 MOVQ R13, AX
1328 ORQ R14, AX
1329 XORQ R12, AX
1330 MOVQ AX, 136(DI)
1331 ORQ R10, R11
1332 XORQ R14, R11
1333 MOVQ R11, 152(DI)
1334 ANDQ R10, R14
1335 XORQ R13, R14
1336 MOVQ R14, 144(DI)
1337 XORQ R11, R15
1338
1339 // Result s
1340 MOVQ 16(SP), R10
1341 MOVQ 64(SP), R11
1342 MOVQ 112(SP), R12
1343 XORQ DX, R10
1344 MOVQ 120(SP), R13
1345 ROLQ $0x3e, R10
1346 XORQ R8, R11
1347 MOVQ 168(SP), R14
1348 ROLQ $0x37, R11
1349 XORQ R9, R12
1350 MOVQ R10, R9
1351 XORQ CX, R14
1352 ROLQ $0x02, R14
1353 ANDQ R11, R9
1354 XORQ R14, R9
1355 MOVQ R9, 192(DI)
1356 ROLQ $0x27, R12
1357 XORQ R9, R15
1358 NOTQ R11
1359 XORQ BX, R13
1360 MOVQ R11, BX
1361 ANDQ R12, BX
1362 XORQ R10, BX
1363 MOVQ BX, 160(DI)
1364 XORQ BX, SI
1365 ROLQ $0x29, R13
1366 MOVQ R12, CX
1367 ORQ R13, CX
1368 XORQ R11, CX
1369 MOVQ CX, 168(DI)
1370 XORQ CX, BP
1371 MOVQ R13, DX
1372 MOVQ R14, R8
1373 ANDQ R14, DX
1374 ORQ R10, R8
1375 XORQ R12, DX
1376 XORQ R13, R8
1377 MOVQ DX, 176(DI)
1378 MOVQ R8, 184(DI)
1379
1380 // Prepare round
1381 MOVQ BP, BX
1382 ROLQ $0x01, BX
1383 MOVQ 16(DI), R12
1384 XORQ 56(DI), DX
1385 XORQ R15, BX
1386 XORQ 96(DI), R12
1387 XORQ 136(DI), DX
1388 XORQ DX, R12
1389 MOVQ R12, CX
1390 ROLQ $0x01, CX
1391 MOVQ 24(DI), R13
1392 XORQ 64(DI), R8
1393 XORQ SI, CX
1394 XORQ 104(DI), R13
1395 XORQ 144(DI), R8
1396 XORQ R8, R13
1397 MOVQ R13, DX
1398 ROLQ $0x01, DX
1399 MOVQ R15, R8
1400 XORQ BP, DX
1401 ROLQ $0x01, R8
1402 MOVQ SI, R9
1403 XORQ R12, R8
1404 ROLQ $0x01, R9
1405
1406 // Result b
1407 MOVQ (DI), R10
1408 MOVQ 48(DI), R11
1409 XORQ R13, R9
1410 MOVQ 96(DI), R12
1411 MOVQ 144(DI), R13
1412 MOVQ 192(DI), R14
1413 XORQ CX, R11
1414 ROLQ $0x2c, R11
1415 XORQ DX, R12
1416 XORQ BX, R10
1417 ROLQ $0x2b, R12
1418 MOVQ R11, SI
1419 MOVQ $0x8000000080008081, AX
1420 ORQ R12, SI
1421 XORQ R10, AX
1422 XORQ AX, SI
1423 MOVQ SI, (SP)
1424 XORQ R9, R14
1425 ROLQ $0x0e, R14
1426 MOVQ R10, R15
1427 ANDQ R11, R15
1428 XORQ R14, R15
1429 MOVQ R15, 32(SP)
1430 XORQ R8, R13
1431 ROLQ $0x15, R13
1432 MOVQ R13, AX
1433 ANDQ R14, AX
1434 XORQ R12, AX
1435 MOVQ AX, 16(SP)
1436 NOTQ R12
1437 ORQ R10, R14
1438 ORQ R13, R12
1439 XORQ R13, R14
1440 XORQ R11, R12
1441 MOVQ R14, 24(SP)
1442 MOVQ R12, 8(SP)
1443 MOVQ R12, BP
1444
1445 // Result g
1446 MOVQ 72(DI), R11
1447 XORQ R9, R11
1448 MOVQ 80(DI), R12
1449 ROLQ $0x14, R11
1450 XORQ BX, R12
1451 ROLQ $0x03, R12
1452 MOVQ 24(DI), R10
1453 MOVQ R11, AX
1454 ORQ R12, AX
1455 XORQ R8, R10
1456 MOVQ 128(DI), R13
1457 MOVQ 176(DI), R14
1458 ROLQ $0x1c, R10
1459 XORQ R10, AX
1460 MOVQ AX, 40(SP)
1461 XORQ AX, SI
1462 XORQ CX, R13
1463 ROLQ $0x2d, R13
1464 MOVQ R12, AX
1465 ANDQ R13, AX
1466 XORQ R11, AX
1467 MOVQ AX, 48(SP)
1468 XORQ AX, BP
1469 XORQ DX, R14
1470 ROLQ $0x3d, R14
1471 MOVQ R14, AX
1472 ORQ R10, AX
1473 XORQ R13, AX
1474 MOVQ AX, 64(SP)
1475 ANDQ R11, R10
1476 XORQ R14, R10
1477 MOVQ R10, 72(SP)
1478 NOTQ R14
1479 XORQ R10, R15
1480 ORQ R14, R13
1481 XORQ R12, R13
1482 MOVQ R13, 56(SP)
1483
1484 // Result k
1485 MOVQ 8(DI), R10
1486 MOVQ 56(DI), R11
1487 MOVQ 104(DI), R12
1488 MOVQ 152(DI), R13
1489 MOVQ 160(DI), R14
1490 XORQ DX, R11
1491 ROLQ $0x06, R11
1492 XORQ R8, R12
1493 ROLQ $0x19, R12
1494 MOVQ R11, AX
1495 ORQ R12, AX
1496 XORQ CX, R10
1497 ROLQ $0x01, R10
1498 XORQ R10, AX
1499 MOVQ AX, 80(SP)
1500 XORQ AX, SI
1501 XORQ R9, R13
1502 ROLQ $0x08, R13
1503 MOVQ R12, AX
1504 ANDQ R13, AX
1505 XORQ R11, AX
1506 MOVQ AX, 88(SP)
1507 XORQ AX, BP
1508 XORQ BX, R14
1509 ROLQ $0x12, R14
1510 NOTQ R13
1511 MOVQ R13, AX
1512 ANDQ R14, AX
1513 XORQ R12, AX
1514 MOVQ AX, 96(SP)
1515 MOVQ R14, AX
1516 ORQ R10, AX
1517 XORQ R13, AX
1518 MOVQ AX, 104(SP)
1519 ANDQ R11, R10
1520 XORQ R14, R10
1521 MOVQ R10, 112(SP)
1522 XORQ R10, R15
1523
1524 // Result m
1525 MOVQ 40(DI), R11
1526 XORQ BX, R11
1527 MOVQ 88(DI), R12
1528 ROLQ $0x24, R11
1529 XORQ CX, R12
1530 MOVQ 32(DI), R10
1531 ROLQ $0x0a, R12
1532 MOVQ R11, AX
1533 MOVQ 136(DI), R13
1534 ANDQ R12, AX
1535 XORQ R9, R10
1536 MOVQ 184(DI), R14
1537 ROLQ $0x1b, R10
1538 XORQ R10, AX
1539 MOVQ AX, 120(SP)
1540 XORQ AX, SI
1541 XORQ DX, R13
1542 ROLQ $0x0f, R13
1543 MOVQ R12, AX
1544 ORQ R13, AX
1545 XORQ R11, AX
1546 MOVQ AX, 128(SP)
1547 XORQ AX, BP
1548 XORQ R8, R14
1549 ROLQ $0x38, R14
1550 NOTQ R13
1551 MOVQ R13, AX
1552 ORQ R14, AX
1553 XORQ R12, AX
1554 MOVQ AX, 136(SP)
1555 ORQ R10, R11
1556 XORQ R14, R11
1557 MOVQ R11, 152(SP)
1558 ANDQ R10, R14
1559 XORQ R13, R14
1560 MOVQ R14, 144(SP)
1561 XORQ R11, R15
1562
1563 // Result s
1564 MOVQ 16(DI), R10
1565 MOVQ 64(DI), R11
1566 MOVQ 112(DI), R12
1567 XORQ DX, R10
1568 MOVQ 120(DI), R13
1569 ROLQ $0x3e, R10
1570 XORQ R8, R11
1571 MOVQ 168(DI), R14
1572 ROLQ $0x37, R11
1573 XORQ R9, R12
1574 MOVQ R10, R9
1575 XORQ CX, R14
1576 ROLQ $0x02, R14
1577 ANDQ R11, R9
1578 XORQ R14, R9
1579 MOVQ R9, 192(SP)
1580 ROLQ $0x27, R12
1581 XORQ R9, R15
1582 NOTQ R11
1583 XORQ BX, R13
1584 MOVQ R11, BX
1585 ANDQ R12, BX
1586 XORQ R10, BX
1587 MOVQ BX, 160(SP)
1588 XORQ BX, SI
1589 ROLQ $0x29, R13
1590 MOVQ R12, CX
1591 ORQ R13, CX
1592 XORQ R11, CX
1593 MOVQ CX, 168(SP)
1594 XORQ CX, BP
1595 MOVQ R13, DX
1596 MOVQ R14, R8
1597 ANDQ R14, DX
1598 ORQ R10, R8
1599 XORQ R12, DX
1600 XORQ R13, R8
1601 MOVQ DX, 176(SP)
1602 MOVQ R8, 184(SP)
1603
1604 // Prepare round
1605 MOVQ BP, BX
1606 ROLQ $0x01, BX
1607 MOVQ 16(SP), R12
1608 XORQ 56(SP), DX
1609 XORQ R15, BX
1610 XORQ 96(SP), R12
1611 XORQ 136(SP), DX
1612 XORQ DX, R12
1613 MOVQ R12, CX
1614 ROLQ $0x01, CX
1615 MOVQ 24(SP), R13
1616 XORQ 64(SP), R8
1617 XORQ SI, CX
1618 XORQ 104(SP), R13
1619 XORQ 144(SP), R8
1620 XORQ R8, R13
1621 MOVQ R13, DX
1622 ROLQ $0x01, DX
1623 MOVQ R15, R8
1624 XORQ BP, DX
1625 ROLQ $0x01, R8
1626 MOVQ SI, R9
1627 XORQ R12, R8
1628 ROLQ $0x01, R9
1629
1630 // Result b
1631 MOVQ (SP), R10
1632 MOVQ 48(SP), R11
1633 XORQ R13, R9
1634 MOVQ 96(SP), R12
1635 MOVQ 144(SP), R13
1636 MOVQ 192(SP), R14
1637 XORQ CX, R11
1638 ROLQ $0x2c, R11
1639 XORQ DX, R12
1640 XORQ BX, R10
1641 ROLQ $0x2b, R12
1642 MOVQ R11, SI
1643 MOVQ $0x8000000000008009, AX
1644 ORQ R12, SI
1645 XORQ R10, AX
1646 XORQ AX, SI
1647 MOVQ SI, (DI)
1648 XORQ R9, R14
1649 ROLQ $0x0e, R14
1650 MOVQ R10, R15
1651 ANDQ R11, R15
1652 XORQ R14, R15
1653 MOVQ R15, 32(DI)
1654 XORQ R8, R13
1655 ROLQ $0x15, R13
1656 MOVQ R13, AX
1657 ANDQ R14, AX
1658 XORQ R12, AX
1659 MOVQ AX, 16(DI)
1660 NOTQ R12
1661 ORQ R10, R14
1662 ORQ R13, R12
1663 XORQ R13, R14
1664 XORQ R11, R12
1665 MOVQ R14, 24(DI)
1666 MOVQ R12, 8(DI)
1667 MOVQ R12, BP
1668
1669 // Result g
1670 MOVQ 72(SP), R11
1671 XORQ R9, R11
1672 MOVQ 80(SP), R12
1673 ROLQ $0x14, R11
1674 XORQ BX, R12
1675 ROLQ $0x03, R12
1676 MOVQ 24(SP), R10
1677 MOVQ R11, AX
1678 ORQ R12, AX
1679 XORQ R8, R10
1680 MOVQ 128(SP), R13
1681 MOVQ 176(SP), R14
1682 ROLQ $0x1c, R10
1683 XORQ R10, AX
1684 MOVQ AX, 40(DI)
1685 XORQ AX, SI
1686 XORQ CX, R13
1687 ROLQ $0x2d, R13
1688 MOVQ R12, AX
1689 ANDQ R13, AX
1690 XORQ R11, AX
1691 MOVQ AX, 48(DI)
1692 XORQ AX, BP
1693 XORQ DX, R14
1694 ROLQ $0x3d, R14
1695 MOVQ R14, AX
1696 ORQ R10, AX
1697 XORQ R13, AX
1698 MOVQ AX, 64(DI)
1699 ANDQ R11, R10
1700 XORQ R14, R10
1701 MOVQ R10, 72(DI)
1702 NOTQ R14
1703 XORQ R10, R15
1704 ORQ R14, R13
1705 XORQ R12, R13
1706 MOVQ R13, 56(DI)
1707
1708 // Result k
1709 MOVQ 8(SP), R10
1710 MOVQ 56(SP), R11
1711 MOVQ 104(SP), R12
1712 MOVQ 152(SP), R13
1713 MOVQ 160(SP), R14
1714 XORQ DX, R11
1715 ROLQ $0x06, R11
1716 XORQ R8, R12
1717 ROLQ $0x19, R12
1718 MOVQ R11, AX
1719 ORQ R12, AX
1720 XORQ CX, R10
1721 ROLQ $0x01, R10
1722 XORQ R10, AX
1723 MOVQ AX, 80(DI)
1724 XORQ AX, SI
1725 XORQ R9, R13
1726 ROLQ $0x08, R13
1727 MOVQ R12, AX
1728 ANDQ R13, AX
1729 XORQ R11, AX
1730 MOVQ AX, 88(DI)
1731 XORQ AX, BP
1732 XORQ BX, R14
1733 ROLQ $0x12, R14
1734 NOTQ R13
1735 MOVQ R13, AX
1736 ANDQ R14, AX
1737 XORQ R12, AX
1738 MOVQ AX, 96(DI)
1739 MOVQ R14, AX
1740 ORQ R10, AX
1741 XORQ R13, AX
1742 MOVQ AX, 104(DI)
1743 ANDQ R11, R10
1744 XORQ R14, R10
1745 MOVQ R10, 112(DI)
1746 XORQ R10, R15
1747
1748 // Result m
1749 MOVQ 40(SP), R11
1750 XORQ BX, R11
1751 MOVQ 88(SP), R12
1752 ROLQ $0x24, R11
1753 XORQ CX, R12
1754 MOVQ 32(SP), R10
1755 ROLQ $0x0a, R12
1756 MOVQ R11, AX
1757 MOVQ 136(SP), R13
1758 ANDQ R12, AX
1759 XORQ R9, R10
1760 MOVQ 184(SP), R14
1761 ROLQ $0x1b, R10
1762 XORQ R10, AX
1763 MOVQ AX, 120(DI)
1764 XORQ AX, SI
1765 XORQ DX, R13
1766 ROLQ $0x0f, R13
1767 MOVQ R12, AX
1768 ORQ R13, AX
1769 XORQ R11, AX
1770 MOVQ AX, 128(DI)
1771 XORQ AX, BP
1772 XORQ R8, R14
1773 ROLQ $0x38, R14
1774 NOTQ R13
1775 MOVQ R13, AX
1776 ORQ R14, AX
1777 XORQ R12, AX
1778 MOVQ AX, 136(DI)
1779 ORQ R10, R11
1780 XORQ R14, R11
1781 MOVQ R11, 152(DI)
1782 ANDQ R10, R14
1783 XORQ R13, R14
1784 MOVQ R14, 144(DI)
1785 XORQ R11, R15
1786
1787 // Result s
1788 MOVQ 16(SP), R10
1789 MOVQ 64(SP), R11
1790 MOVQ 112(SP), R12
1791 XORQ DX, R10
1792 MOVQ 120(SP), R13
1793 ROLQ $0x3e, R10
1794 XORQ R8, R11
1795 MOVQ 168(SP), R14
1796 ROLQ $0x37, R11
1797 XORQ R9, R12
1798 MOVQ R10, R9
1799 XORQ CX, R14
1800 ROLQ $0x02, R14
1801 ANDQ R11, R9
1802 XORQ R14, R9
1803 MOVQ R9, 192(DI)
1804 ROLQ $0x27, R12
1805 XORQ R9, R15
1806 NOTQ R11
1807 XORQ BX, R13
1808 MOVQ R11, BX
1809 ANDQ R12, BX
1810 XORQ R10, BX
1811 MOVQ BX, 160(DI)
1812 XORQ BX, SI
1813 ROLQ $0x29, R13
1814 MOVQ R12, CX
1815 ORQ R13, CX
1816 XORQ R11, CX
1817 MOVQ CX, 168(DI)
1818 XORQ CX, BP
1819 MOVQ R13, DX
1820 MOVQ R14, R8
1821 ANDQ R14, DX
1822 ORQ R10, R8
1823 XORQ R12, DX
1824 XORQ R13, R8
1825 MOVQ DX, 176(DI)
1826 MOVQ R8, 184(DI)
1827
1828 // Prepare round
1829 MOVQ BP, BX
1830 ROLQ $0x01, BX
1831 MOVQ 16(DI), R12
1832 XORQ 56(DI), DX
1833 XORQ R15, BX
1834 XORQ 96(DI), R12
1835 XORQ 136(DI), DX
1836 XORQ DX, R12
1837 MOVQ R12, CX
1838 ROLQ $0x01, CX
1839 MOVQ 24(DI), R13
1840 XORQ 64(DI), R8
1841 XORQ SI, CX
1842 XORQ 104(DI), R13
1843 XORQ 144(DI), R8
1844 XORQ R8, R13
1845 MOVQ R13, DX
1846 ROLQ $0x01, DX
1847 MOVQ R15, R8
1848 XORQ BP, DX
1849 ROLQ $0x01, R8
1850 MOVQ SI, R9
1851 XORQ R12, R8
1852 ROLQ $0x01, R9
1853
1854 // Result b
1855 MOVQ (DI), R10
1856 MOVQ 48(DI), R11
1857 XORQ R13, R9
1858 MOVQ 96(DI), R12
1859 MOVQ 144(DI), R13
1860 MOVQ 192(DI), R14
1861 XORQ CX, R11
1862 ROLQ $0x2c, R11
1863 XORQ DX, R12
1864 XORQ BX, R10
1865 ROLQ $0x2b, R12
1866 MOVQ R11, SI
1867 MOVQ $0x000000000000008a, AX
1868 ORQ R12, SI
1869 XORQ R10, AX
1870 XORQ AX, SI
1871 MOVQ SI, (SP)
1872 XORQ R9, R14
1873 ROLQ $0x0e, R14
1874 MOVQ R10, R15
1875 ANDQ R11, R15
1876 XORQ R14, R15
1877 MOVQ R15, 32(SP)
1878 XORQ R8, R13
1879 ROLQ $0x15, R13
1880 MOVQ R13, AX
1881 ANDQ R14, AX
1882 XORQ R12, AX
1883 MOVQ AX, 16(SP)
1884 NOTQ R12
1885 ORQ R10, R14
1886 ORQ R13, R12
1887 XORQ R13, R14
1888 XORQ R11, R12
1889 MOVQ R14, 24(SP)
1890 MOVQ R12, 8(SP)
1891 MOVQ R12, BP
1892
1893 // Result g
1894 MOVQ 72(DI), R11
1895 XORQ R9, R11
1896 MOVQ 80(DI), R12
1897 ROLQ $0x14, R11
1898 XORQ BX, R12
1899 ROLQ $0x03, R12
1900 MOVQ 24(DI), R10
1901 MOVQ R11, AX
1902 ORQ R12, AX
1903 XORQ R8, R10
1904 MOVQ 128(DI), R13
1905 MOVQ 176(DI), R14
1906 ROLQ $0x1c, R10
1907 XORQ R10, AX
1908 MOVQ AX, 40(SP)
1909 XORQ AX, SI
1910 XORQ CX, R13
1911 ROLQ $0x2d, R13
1912 MOVQ R12, AX
1913 ANDQ R13, AX
1914 XORQ R11, AX
1915 MOVQ AX, 48(SP)
1916 XORQ AX, BP
1917 XORQ DX, R14
1918 ROLQ $0x3d, R14
1919 MOVQ R14, AX
1920 ORQ R10, AX
1921 XORQ R13, AX
1922 MOVQ AX, 64(SP)
1923 ANDQ R11, R10
1924 XORQ R14, R10
1925 MOVQ R10, 72(SP)
1926 NOTQ R14
1927 XORQ R10, R15
1928 ORQ R14, R13
1929 XORQ R12, R13
1930 MOVQ R13, 56(SP)
1931
1932 // Result k
1933 MOVQ 8(DI), R10
1934 MOVQ 56(DI), R11
1935 MOVQ 104(DI), R12
1936 MOVQ 152(DI), R13
1937 MOVQ 160(DI), R14
1938 XORQ DX, R11
1939 ROLQ $0x06, R11
1940 XORQ R8, R12
1941 ROLQ $0x19, R12
1942 MOVQ R11, AX
1943 ORQ R12, AX
1944 XORQ CX, R10
1945 ROLQ $0x01, R10
1946 XORQ R10, AX
1947 MOVQ AX, 80(SP)
1948 XORQ AX, SI
1949 XORQ R9, R13
1950 ROLQ $0x08, R13
1951 MOVQ R12, AX
1952 ANDQ R13, AX
1953 XORQ R11, AX
1954 MOVQ AX, 88(SP)
1955 XORQ AX, BP
1956 XORQ BX, R14
1957 ROLQ $0x12, R14
1958 NOTQ R13
1959 MOVQ R13, AX
1960 ANDQ R14, AX
1961 XORQ R12, AX
1962 MOVQ AX, 96(SP)
1963 MOVQ R14, AX
1964 ORQ R10, AX
1965 XORQ R13, AX
1966 MOVQ AX, 104(SP)
1967 ANDQ R11, R10
1968 XORQ R14, R10
1969 MOVQ R10, 112(SP)
1970 XORQ R10, R15
1971
1972 // Result m
1973 MOVQ 40(DI), R11
1974 XORQ BX, R11
1975 MOVQ 88(DI), R12
1976 ROLQ $0x24, R11
1977 XORQ CX, R12
1978 MOVQ 32(DI), R10
1979 ROLQ $0x0a, R12
1980 MOVQ R11, AX
1981 MOVQ 136(DI), R13
1982 ANDQ R12, AX
1983 XORQ R9, R10
1984 MOVQ 184(DI), R14
1985 ROLQ $0x1b, R10
1986 XORQ R10, AX
1987 MOVQ AX, 120(SP)
1988 XORQ AX, SI
1989 XORQ DX, R13
1990 ROLQ $0x0f, R13
1991 MOVQ R12, AX
1992 ORQ R13, AX
1993 XORQ R11, AX
1994 MOVQ AX, 128(SP)
1995 XORQ AX, BP
1996 XORQ R8, R14
1997 ROLQ $0x38, R14
1998 NOTQ R13
1999 MOVQ R13, AX
2000 ORQ R14, AX
2001 XORQ R12, AX
2002 MOVQ AX, 136(SP)
2003 ORQ R10, R11
2004 XORQ R14, R11
2005 MOVQ R11, 152(SP)
2006 ANDQ R10, R14
2007 XORQ R13, R14
2008 MOVQ R14, 144(SP)
2009 XORQ R11, R15
2010
2011 // Result s
2012 MOVQ 16(DI), R10
2013 MOVQ 64(DI), R11
2014 MOVQ 112(DI), R12
2015 XORQ DX, R10
2016 MOVQ 120(DI), R13
2017 ROLQ $0x3e, R10
2018 XORQ R8, R11
2019 MOVQ 168(DI), R14
2020 ROLQ $0x37, R11
2021 XORQ R9, R12
2022 MOVQ R10, R9
2023 XORQ CX, R14
2024 ROLQ $0x02, R14
2025 ANDQ R11, R9
2026 XORQ R14, R9
2027 MOVQ R9, 192(SP)
2028 ROLQ $0x27, R12
2029 XORQ R9, R15
2030 NOTQ R11
2031 XORQ BX, R13
2032 MOVQ R11, BX
2033 ANDQ R12, BX
2034 XORQ R10, BX
2035 MOVQ BX, 160(SP)
2036 XORQ BX, SI
2037 ROLQ $0x29, R13
2038 MOVQ R12, CX
2039 ORQ R13, CX
2040 XORQ R11, CX
2041 MOVQ CX, 168(SP)
2042 XORQ CX, BP
2043 MOVQ R13, DX
2044 MOVQ R14, R8
2045 ANDQ R14, DX
2046 ORQ R10, R8
2047 XORQ R12, DX
2048 XORQ R13, R8
2049 MOVQ DX, 176(SP)
2050 MOVQ R8, 184(SP)
2051
2052 // Prepare round
2053 MOVQ BP, BX
2054 ROLQ $0x01, BX
2055 MOVQ 16(SP), R12
2056 XORQ 56(SP), DX
2057 XORQ R15, BX
2058 XORQ 96(SP), R12
2059 XORQ 136(SP), DX
2060 XORQ DX, R12
2061 MOVQ R12, CX
2062 ROLQ $0x01, CX
2063 MOVQ 24(SP), R13
2064 XORQ 64(SP), R8
2065 XORQ SI, CX
2066 XORQ 104(SP), R13
2067 XORQ 144(SP), R8
2068 XORQ R8, R13
2069 MOVQ R13, DX
2070 ROLQ $0x01, DX
2071 MOVQ R15, R8
2072 XORQ BP, DX
2073 ROLQ $0x01, R8
2074 MOVQ SI, R9
2075 XORQ R12, R8
2076 ROLQ $0x01, R9
2077
2078 // Result b
2079 MOVQ (SP), R10
2080 MOVQ 48(SP), R11
2081 XORQ R13, R9
2082 MOVQ 96(SP), R12
2083 MOVQ 144(SP), R13
2084 MOVQ 192(SP), R14
2085 XORQ CX, R11
2086 ROLQ $0x2c, R11
2087 XORQ DX, R12
2088 XORQ BX, R10
2089 ROLQ $0x2b, R12
2090 MOVQ R11, SI
2091 MOVQ $0x0000000000000088, AX
2092 ORQ R12, SI
2093 XORQ R10, AX
2094 XORQ AX, SI
2095 MOVQ SI, (DI)
2096 XORQ R9, R14
2097 ROLQ $0x0e, R14
2098 MOVQ R10, R15
2099 ANDQ R11, R15
2100 XORQ R14, R15
2101 MOVQ R15, 32(DI)
2102 XORQ R8, R13
2103 ROLQ $0x15, R13
2104 MOVQ R13, AX
2105 ANDQ R14, AX
2106 XORQ R12, AX
2107 MOVQ AX, 16(DI)
2108 NOTQ R12
2109 ORQ R10, R14
2110 ORQ R13, R12
2111 XORQ R13, R14
2112 XORQ R11, R12
2113 MOVQ R14, 24(DI)
2114 MOVQ R12, 8(DI)
2115 MOVQ R12, BP
2116
2117 // Result g
2118 MOVQ 72(SP), R11
2119 XORQ R9, R11
2120 MOVQ 80(SP), R12
2121 ROLQ $0x14, R11
2122 XORQ BX, R12
2123 ROLQ $0x03, R12
2124 MOVQ 24(SP), R10
2125 MOVQ R11, AX
2126 ORQ R12, AX
2127 XORQ R8, R10
2128 MOVQ 128(SP), R13
2129 MOVQ 176(SP), R14
2130 ROLQ $0x1c, R10
2131 XORQ R10, AX
2132 MOVQ AX, 40(DI)
2133 XORQ AX, SI
2134 XORQ CX, R13
2135 ROLQ $0x2d, R13
2136 MOVQ R12, AX
2137 ANDQ R13, AX
2138 XORQ R11, AX
2139 MOVQ AX, 48(DI)
2140 XORQ AX, BP
2141 XORQ DX, R14
2142 ROLQ $0x3d, R14
2143 MOVQ R14, AX
2144 ORQ R10, AX
2145 XORQ R13, AX
2146 MOVQ AX, 64(DI)
2147 ANDQ R11, R10
2148 XORQ R14, R10
2149 MOVQ R10, 72(DI)
2150 NOTQ R14
2151 XORQ R10, R15
2152 ORQ R14, R13
2153 XORQ R12, R13
2154 MOVQ R13, 56(DI)
2155
2156 // Result k
2157 MOVQ 8(SP), R10
2158 MOVQ 56(SP), R11
2159 MOVQ 104(SP), R12
2160 MOVQ 152(SP), R13
2161 MOVQ 160(SP), R14
2162 XORQ DX, R11
2163 ROLQ $0x06, R11
2164 XORQ R8, R12
2165 ROLQ $0x19, R12
2166 MOVQ R11, AX
2167 ORQ R12, AX
2168 XORQ CX, R10
2169 ROLQ $0x01, R10
2170 XORQ R10, AX
2171 MOVQ AX, 80(DI)
2172 XORQ AX, SI
2173 XORQ R9, R13
2174 ROLQ $0x08, R13
2175 MOVQ R12, AX
2176 ANDQ R13, AX
2177 XORQ R11, AX
2178 MOVQ AX, 88(DI)
2179 XORQ AX, BP
2180 XORQ BX, R14
2181 ROLQ $0x12, R14
2182 NOTQ R13
2183 MOVQ R13, AX
2184 ANDQ R14, AX
2185 XORQ R12, AX
2186 MOVQ AX, 96(DI)
2187 MOVQ R14, AX
2188 ORQ R10, AX
2189 XORQ R13, AX
2190 MOVQ AX, 104(DI)
2191 ANDQ R11, R10
2192 XORQ R14, R10
2193 MOVQ R10, 112(DI)
2194 XORQ R10, R15
2195
2196 // Result m
2197 MOVQ 40(SP), R11
2198 XORQ BX, R11
2199 MOVQ 88(SP), R12
2200 ROLQ $0x24, R11
2201 XORQ CX, R12
2202 MOVQ 32(SP), R10
2203 ROLQ $0x0a, R12
2204 MOVQ R11, AX
2205 MOVQ 136(SP), R13
2206 ANDQ R12, AX
2207 XORQ R9, R10
2208 MOVQ 184(SP), R14
2209 ROLQ $0x1b, R10
2210 XORQ R10, AX
2211 MOVQ AX, 120(DI)
2212 XORQ AX, SI
2213 XORQ DX, R13
2214 ROLQ $0x0f, R13
2215 MOVQ R12, AX
2216 ORQ R13, AX
2217 XORQ R11, AX
2218 MOVQ AX, 128(DI)
2219 XORQ AX, BP
2220 XORQ R8, R14
2221 ROLQ $0x38, R14
2222 NOTQ R13
2223 MOVQ R13, AX
2224 ORQ R14, AX
2225 XORQ R12, AX
2226 MOVQ AX, 136(DI)
2227 ORQ R10, R11
2228 XORQ R14, R11
2229 MOVQ R11, 152(DI)
2230 ANDQ R10, R14
2231 XORQ R13, R14
2232 MOVQ R14, 144(DI)
2233 XORQ R11, R15
2234
2235 // Result s
2236 MOVQ 16(SP), R10
2237 MOVQ 64(SP), R11
2238 MOVQ 112(SP), R12
2239 XORQ DX, R10
2240 MOVQ 120(SP), R13
2241 ROLQ $0x3e, R10
2242 XORQ R8, R11
2243 MOVQ 168(SP), R14
2244 ROLQ $0x37, R11
2245 XORQ R9, R12
2246 MOVQ R10, R9
2247 XORQ CX, R14
2248 ROLQ $0x02, R14
2249 ANDQ R11, R9
2250 XORQ R14, R9
2251 MOVQ R9, 192(DI)
2252 ROLQ $0x27, R12
2253 XORQ R9, R15
2254 NOTQ R11
2255 XORQ BX, R13
2256 MOVQ R11, BX
2257 ANDQ R12, BX
2258 XORQ R10, BX
2259 MOVQ BX, 160(DI)
2260 XORQ BX, SI
2261 ROLQ $0x29, R13
2262 MOVQ R12, CX
2263 ORQ R13, CX
2264 XORQ R11, CX
2265 MOVQ CX, 168(DI)
2266 XORQ CX, BP
2267 MOVQ R13, DX
2268 MOVQ R14, R8
2269 ANDQ R14, DX
2270 ORQ R10, R8
2271 XORQ R12, DX
2272 XORQ R13, R8
2273 MOVQ DX, 176(DI)
2274 MOVQ R8, 184(DI)
2275
2276 // Prepare round
2277 MOVQ BP, BX
2278 ROLQ $0x01, BX
2279 MOVQ 16(DI), R12
2280 XORQ 56(DI), DX
2281 XORQ R15, BX
2282 XORQ 96(DI), R12
2283 XORQ 136(DI), DX
2284 XORQ DX, R12
2285 MOVQ R12, CX
2286 ROLQ $0x01, CX
2287 MOVQ 24(DI), R13
2288 XORQ 64(DI), R8
2289 XORQ SI, CX
2290 XORQ 104(DI), R13
2291 XORQ 144(DI), R8
2292 XORQ R8, R13
2293 MOVQ R13, DX
2294 ROLQ $0x01, DX
2295 MOVQ R15, R8
2296 XORQ BP, DX
2297 ROLQ $0x01, R8
2298 MOVQ SI, R9
2299 XORQ R12, R8
2300 ROLQ $0x01, R9
2301
2302 // Result b
2303 MOVQ (DI), R10
2304 MOVQ 48(DI), R11
2305 XORQ R13, R9
2306 MOVQ 96(DI), R12
2307 MOVQ 144(DI), R13
2308 MOVQ 192(DI), R14
2309 XORQ CX, R11
2310 ROLQ $0x2c, R11
2311 XORQ DX, R12
2312 XORQ BX, R10
2313 ROLQ $0x2b, R12
2314 MOVQ R11, SI
2315 MOVQ $0x0000000080008009, AX
2316 ORQ R12, SI
2317 XORQ R10, AX
2318 XORQ AX, SI
2319 MOVQ SI, (SP)
2320 XORQ R9, R14
2321 ROLQ $0x0e, R14
2322 MOVQ R10, R15
2323 ANDQ R11, R15
2324 XORQ R14, R15
2325 MOVQ R15, 32(SP)
2326 XORQ R8, R13
2327 ROLQ $0x15, R13
2328 MOVQ R13, AX
2329 ANDQ R14, AX
2330 XORQ R12, AX
2331 MOVQ AX, 16(SP)
2332 NOTQ R12
2333 ORQ R10, R14
2334 ORQ R13, R12
2335 XORQ R13, R14
2336 XORQ R11, R12
2337 MOVQ R14, 24(SP)
2338 MOVQ R12, 8(SP)
2339 MOVQ R12, BP
2340
2341 // Result g
2342 MOVQ 72(DI), R11
2343 XORQ R9, R11
2344 MOVQ 80(DI), R12
2345 ROLQ $0x14, R11
2346 XORQ BX, R12
2347 ROLQ $0x03, R12
2348 MOVQ 24(DI), R10
2349 MOVQ R11, AX
2350 ORQ R12, AX
2351 XORQ R8, R10
2352 MOVQ 128(DI), R13
2353 MOVQ 176(DI), R14
2354 ROLQ $0x1c, R10
2355 XORQ R10, AX
2356 MOVQ AX, 40(SP)
2357 XORQ AX, SI
2358 XORQ CX, R13
2359 ROLQ $0x2d, R13
2360 MOVQ R12, AX
2361 ANDQ R13, AX
2362 XORQ R11, AX
2363 MOVQ AX, 48(SP)
2364 XORQ AX, BP
2365 XORQ DX, R14
2366 ROLQ $0x3d, R14
2367 MOVQ R14, AX
2368 ORQ R10, AX
2369 XORQ R13, AX
2370 MOVQ AX, 64(SP)
2371 ANDQ R11, R10
2372 XORQ R14, R10
2373 MOVQ R10, 72(SP)
2374 NOTQ R14
2375 XORQ R10, R15
2376 ORQ R14, R13
2377 XORQ R12, R13
2378 MOVQ R13, 56(SP)
2379
2380 // Result k
2381 MOVQ 8(DI), R10
2382 MOVQ 56(DI), R11
2383 MOVQ 104(DI), R12
2384 MOVQ 152(DI), R13
2385 MOVQ 160(DI), R14
2386 XORQ DX, R11
2387 ROLQ $0x06, R11
2388 XORQ R8, R12
2389 ROLQ $0x19, R12
2390 MOVQ R11, AX
2391 ORQ R12, AX
2392 XORQ CX, R10
2393 ROLQ $0x01, R10
2394 XORQ R10, AX
2395 MOVQ AX, 80(SP)
2396 XORQ AX, SI
2397 XORQ R9, R13
2398 ROLQ $0x08, R13
2399 MOVQ R12, AX
2400 ANDQ R13, AX
2401 XORQ R11, AX
2402 MOVQ AX, 88(SP)
2403 XORQ AX, BP
2404 XORQ BX, R14
2405 ROLQ $0x12, R14
2406 NOTQ R13
2407 MOVQ R13, AX
2408 ANDQ R14, AX
2409 XORQ R12, AX
2410 MOVQ AX, 96(SP)
2411 MOVQ R14, AX
2412 ORQ R10, AX
2413 XORQ R13, AX
2414 MOVQ AX, 104(SP)
2415 ANDQ R11, R10
2416 XORQ R14, R10
2417 MOVQ R10, 112(SP)
2418 XORQ R10, R15
2419
2420 // Result m
2421 MOVQ 40(DI), R11
2422 XORQ BX, R11
2423 MOVQ 88(DI), R12
2424 ROLQ $0x24, R11
2425 XORQ CX, R12
2426 MOVQ 32(DI), R10
2427 ROLQ $0x0a, R12
2428 MOVQ R11, AX
2429 MOVQ 136(DI), R13
2430 ANDQ R12, AX
2431 XORQ R9, R10
2432 MOVQ 184(DI), R14
2433 ROLQ $0x1b, R10
2434 XORQ R10, AX
2435 MOVQ AX, 120(SP)
2436 XORQ AX, SI
2437 XORQ DX, R13
2438 ROLQ $0x0f, R13
2439 MOVQ R12, AX
2440 ORQ R13, AX
2441 XORQ R11, AX
2442 MOVQ AX, 128(SP)
2443 XORQ AX, BP
2444 XORQ R8, R14
2445 ROLQ $0x38, R14
2446 NOTQ R13
2447 MOVQ R13, AX
2448 ORQ R14, AX
2449 XORQ R12, AX
2450 MOVQ AX, 136(SP)
2451 ORQ R10, R11
2452 XORQ R14, R11
2453 MOVQ R11, 152(SP)
2454 ANDQ R10, R14
2455 XORQ R13, R14
2456 MOVQ R14, 144(SP)
2457 XORQ R11, R15
2458
2459 // Result s
2460 MOVQ 16(DI), R10
2461 MOVQ 64(DI), R11
2462 MOVQ 112(DI), R12
2463 XORQ DX, R10
2464 MOVQ 120(DI), R13
2465 ROLQ $0x3e, R10
2466 XORQ R8, R11
2467 MOVQ 168(DI), R14
2468 ROLQ $0x37, R11
2469 XORQ R9, R12
2470 MOVQ R10, R9
2471 XORQ CX, R14
2472 ROLQ $0x02, R14
2473 ANDQ R11, R9
2474 XORQ R14, R9
2475 MOVQ R9, 192(SP)
2476 ROLQ $0x27, R12
2477 XORQ R9, R15
2478 NOTQ R11
2479 XORQ BX, R13
2480 MOVQ R11, BX
2481 ANDQ R12, BX
2482 XORQ R10, BX
2483 MOVQ BX, 160(SP)
2484 XORQ BX, SI
2485 ROLQ $0x29, R13
2486 MOVQ R12, CX
2487 ORQ R13, CX
2488 XORQ R11, CX
2489 MOVQ CX, 168(SP)
2490 XORQ CX, BP
2491 MOVQ R13, DX
2492 MOVQ R14, R8
2493 ANDQ R14, DX
2494 ORQ R10, R8
2495 XORQ R12, DX
2496 XORQ R13, R8
2497 MOVQ DX, 176(SP)
2498 MOVQ R8, 184(SP)
2499
2500 // Prepare round
2501 MOVQ BP, BX
2502 ROLQ $0x01, BX
2503 MOVQ 16(SP), R12
2504 XORQ 56(SP), DX
2505 XORQ R15, BX
2506 XORQ 96(SP), R12
2507 XORQ 136(SP), DX
2508 XORQ DX, R12
2509 MOVQ R12, CX
2510 ROLQ $0x01, CX
2511 MOVQ 24(SP), R13
2512 XORQ 64(SP), R8
2513 XORQ SI, CX
2514 XORQ 104(SP), R13
2515 XORQ 144(SP), R8
2516 XORQ R8, R13
2517 MOVQ R13, DX
2518 ROLQ $0x01, DX
2519 MOVQ R15, R8
2520 XORQ BP, DX
2521 ROLQ $0x01, R8
2522 MOVQ SI, R9
2523 XORQ R12, R8
2524 ROLQ $0x01, R9
2525
2526 // Result b
2527 MOVQ (SP), R10
2528 MOVQ 48(SP), R11
2529 XORQ R13, R9
2530 MOVQ 96(SP), R12
2531 MOVQ 144(SP), R13
2532 MOVQ 192(SP), R14
2533 XORQ CX, R11
2534 ROLQ $0x2c, R11
2535 XORQ DX, R12
2536 XORQ BX, R10
2537 ROLQ $0x2b, R12
2538 MOVQ R11, SI
2539 MOVQ $0x000000008000000a, AX
2540 ORQ R12, SI
2541 XORQ R10, AX
2542 XORQ AX, SI
2543 MOVQ SI, (DI)
2544 XORQ R9, R14
2545 ROLQ $0x0e, R14
2546 MOVQ R10, R15
2547 ANDQ R11, R15
2548 XORQ R14, R15
2549 MOVQ R15, 32(DI)
2550 XORQ R8, R13
2551 ROLQ $0x15, R13
2552 MOVQ R13, AX
2553 ANDQ R14, AX
2554 XORQ R12, AX
2555 MOVQ AX, 16(DI)
2556 NOTQ R12
2557 ORQ R10, R14
2558 ORQ R13, R12
2559 XORQ R13, R14
2560 XORQ R11, R12
2561 MOVQ R14, 24(DI)
2562 MOVQ R12, 8(DI)
2563 MOVQ R12, BP
2564
2565 // Result g
2566 MOVQ 72(SP), R11
2567 XORQ R9, R11
2568 MOVQ 80(SP), R12
2569 ROLQ $0x14, R11
2570 XORQ BX, R12
2571 ROLQ $0x03, R12
2572 MOVQ 24(SP), R10
2573 MOVQ R11, AX
2574 ORQ R12, AX
2575 XORQ R8, R10
2576 MOVQ 128(SP), R13
2577 MOVQ 176(SP), R14
2578 ROLQ $0x1c, R10
2579 XORQ R10, AX
2580 MOVQ AX, 40(DI)
2581 XORQ AX, SI
2582 XORQ CX, R13
2583 ROLQ $0x2d, R13
2584 MOVQ R12, AX
2585 ANDQ R13, AX
2586 XORQ R11, AX
2587 MOVQ AX, 48(DI)
2588 XORQ AX, BP
2589 XORQ DX, R14
2590 ROLQ $0x3d, R14
2591 MOVQ R14, AX
2592 ORQ R10, AX
2593 XORQ R13, AX
2594 MOVQ AX, 64(DI)
2595 ANDQ R11, R10
2596 XORQ R14, R10
2597 MOVQ R10, 72(DI)
2598 NOTQ R14
2599 XORQ R10, R15
2600 ORQ R14, R13
2601 XORQ R12, R13
2602 MOVQ R13, 56(DI)
2603
2604 // Result k
2605 MOVQ 8(SP), R10
2606 MOVQ 56(SP), R11
2607 MOVQ 104(SP), R12
2608 MOVQ 152(SP), R13
2609 MOVQ 160(SP), R14
2610 XORQ DX, R11
2611 ROLQ $0x06, R11
2612 XORQ R8, R12
2613 ROLQ $0x19, R12
2614 MOVQ R11, AX
2615 ORQ R12, AX
2616 XORQ CX, R10
2617 ROLQ $0x01, R10
2618 XORQ R10, AX
2619 MOVQ AX, 80(DI)
2620 XORQ AX, SI
2621 XORQ R9, R13
2622 ROLQ $0x08, R13
2623 MOVQ R12, AX
2624 ANDQ R13, AX
2625 XORQ R11, AX
2626 MOVQ AX, 88(DI)
2627 XORQ AX, BP
2628 XORQ BX, R14
2629 ROLQ $0x12, R14
2630 NOTQ R13
2631 MOVQ R13, AX
2632 ANDQ R14, AX
2633 XORQ R12, AX
2634 MOVQ AX, 96(DI)
2635 MOVQ R14, AX
2636 ORQ R10, AX
2637 XORQ R13, AX
2638 MOVQ AX, 104(DI)
2639 ANDQ R11, R10
2640 XORQ R14, R10
2641 MOVQ R10, 112(DI)
2642 XORQ R10, R15
2643
2644 // Result m
2645 MOVQ 40(SP), R11
2646 XORQ BX, R11
2647 MOVQ 88(SP), R12
2648 ROLQ $0x24, R11
2649 XORQ CX, R12
2650 MOVQ 32(SP), R10
2651 ROLQ $0x0a, R12
2652 MOVQ R11, AX
2653 MOVQ 136(SP), R13
2654 ANDQ R12, AX
2655 XORQ R9, R10
2656 MOVQ 184(SP), R14
2657 ROLQ $0x1b, R10
2658 XORQ R10, AX
2659 MOVQ AX, 120(DI)
2660 XORQ AX, SI
2661 XORQ DX, R13
2662 ROLQ $0x0f, R13
2663 MOVQ R12, AX
2664 ORQ R13, AX
2665 XORQ R11, AX
2666 MOVQ AX, 128(DI)
2667 XORQ AX, BP
2668 XORQ R8, R14
2669 ROLQ $0x38, R14
2670 NOTQ R13
2671 MOVQ R13, AX
2672 ORQ R14, AX
2673 XORQ R12, AX
2674 MOVQ AX, 136(DI)
2675 ORQ R10, R11
2676 XORQ R14, R11
2677 MOVQ R11, 152(DI)
2678 ANDQ R10, R14
2679 XORQ R13, R14
2680 MOVQ R14, 144(DI)
2681 XORQ R11, R15
2682
2683 // Result s
2684 MOVQ 16(SP), R10
2685 MOVQ 64(SP), R11
2686 MOVQ 112(SP), R12
2687 XORQ DX, R10
2688 MOVQ 120(SP), R13
2689 ROLQ $0x3e, R10
2690 XORQ R8, R11
2691 MOVQ 168(SP), R14
2692 ROLQ $0x37, R11
2693 XORQ R9, R12
2694 MOVQ R10, R9
2695 XORQ CX, R14
2696 ROLQ $0x02, R14
2697 ANDQ R11, R9
2698 XORQ R14, R9
2699 MOVQ R9, 192(DI)
2700 ROLQ $0x27, R12
2701 XORQ R9, R15
2702 NOTQ R11
2703 XORQ BX, R13
2704 MOVQ R11, BX
2705 ANDQ R12, BX
2706 XORQ R10, BX
2707 MOVQ BX, 160(DI)
2708 XORQ BX, SI
2709 ROLQ $0x29, R13
2710 MOVQ R12, CX
2711 ORQ R13, CX
2712 XORQ R11, CX
2713 MOVQ CX, 168(DI)
2714 XORQ CX, BP
2715 MOVQ R13, DX
2716 MOVQ R14, R8
2717 ANDQ R14, DX
2718 ORQ R10, R8
2719 XORQ R12, DX
2720 XORQ R13, R8
2721 MOVQ DX, 176(DI)
2722 MOVQ R8, 184(DI)
2723
2724 // Prepare round
2725 MOVQ BP, BX
2726 ROLQ $0x01, BX
2727 MOVQ 16(DI), R12
2728 XORQ 56(DI), DX
2729 XORQ R15, BX
2730 XORQ 96(DI), R12
2731 XORQ 136(DI), DX
2732 XORQ DX, R12
2733 MOVQ R12, CX
2734 ROLQ $0x01, CX
2735 MOVQ 24(DI), R13
2736 XORQ 64(DI), R8
2737 XORQ SI, CX
2738 XORQ 104(DI), R13
2739 XORQ 144(DI), R8
2740 XORQ R8, R13
2741 MOVQ R13, DX
2742 ROLQ $0x01, DX
2743 MOVQ R15, R8
2744 XORQ BP, DX
2745 ROLQ $0x01, R8
2746 MOVQ SI, R9
2747 XORQ R12, R8
2748 ROLQ $0x01, R9
2749
2750 // Result b
2751 MOVQ (DI), R10
2752 MOVQ 48(DI), R11
2753 XORQ R13, R9
2754 MOVQ 96(DI), R12
2755 MOVQ 144(DI), R13
2756 MOVQ 192(DI), R14
2757 XORQ CX, R11
2758 ROLQ $0x2c, R11
2759 XORQ DX, R12
2760 XORQ BX, R10
2761 ROLQ $0x2b, R12
2762 MOVQ R11, SI
2763 MOVQ $0x000000008000808b, AX
2764 ORQ R12, SI
2765 XORQ R10, AX
2766 XORQ AX, SI
2767 MOVQ SI, (SP)
2768 XORQ R9, R14
2769 ROLQ $0x0e, R14
2770 MOVQ R10, R15
2771 ANDQ R11, R15
2772 XORQ R14, R15
2773 MOVQ R15, 32(SP)
2774 XORQ R8, R13
2775 ROLQ $0x15, R13
2776 MOVQ R13, AX
2777 ANDQ R14, AX
2778 XORQ R12, AX
2779 MOVQ AX, 16(SP)
2780 NOTQ R12
2781 ORQ R10, R14
2782 ORQ R13, R12
2783 XORQ R13, R14
2784 XORQ R11, R12
2785 MOVQ R14, 24(SP)
2786 MOVQ R12, 8(SP)
2787 MOVQ R12, BP
2788
2789 // Result g
2790 MOVQ 72(DI), R11
2791 XORQ R9, R11
2792 MOVQ 80(DI), R12
2793 ROLQ $0x14, R11
2794 XORQ BX, R12
2795 ROLQ $0x03, R12
2796 MOVQ 24(DI), R10
2797 MOVQ R11, AX
2798 ORQ R12, AX
2799 XORQ R8, R10
2800 MOVQ 128(DI), R13
2801 MOVQ 176(DI), R14
2802 ROLQ $0x1c, R10
2803 XORQ R10, AX
2804 MOVQ AX, 40(SP)
2805 XORQ AX, SI
2806 XORQ CX, R13
2807 ROLQ $0x2d, R13
2808 MOVQ R12, AX
2809 ANDQ R13, AX
2810 XORQ R11, AX
2811 MOVQ AX, 48(SP)
2812 XORQ AX, BP
2813 XORQ DX, R14
2814 ROLQ $0x3d, R14
2815 MOVQ R14, AX
2816 ORQ R10, AX
2817 XORQ R13, AX
2818 MOVQ AX, 64(SP)
2819 ANDQ R11, R10
2820 XORQ R14, R10
2821 MOVQ R10, 72(SP)
2822 NOTQ R14
2823 XORQ R10, R15
2824 ORQ R14, R13
2825 XORQ R12, R13
2826 MOVQ R13, 56(SP)
2827
2828 // Result k
2829 MOVQ 8(DI), R10
2830 MOVQ 56(DI), R11
2831 MOVQ 104(DI), R12
2832 MOVQ 152(DI), R13
2833 MOVQ 160(DI), R14
2834 XORQ DX, R11
2835 ROLQ $0x06, R11
2836 XORQ R8, R12
2837 ROLQ $0x19, R12
2838 MOVQ R11, AX
2839 ORQ R12, AX
2840 XORQ CX, R10
2841 ROLQ $0x01, R10
2842 XORQ R10, AX
2843 MOVQ AX, 80(SP)
2844 XORQ AX, SI
2845 XORQ R9, R13
2846 ROLQ $0x08, R13
2847 MOVQ R12, AX
2848 ANDQ R13, AX
2849 XORQ R11, AX
2850 MOVQ AX, 88(SP)
2851 XORQ AX, BP
2852 XORQ BX, R14
2853 ROLQ $0x12, R14
2854 NOTQ R13
2855 MOVQ R13, AX
2856 ANDQ R14, AX
2857 XORQ R12, AX
2858 MOVQ AX, 96(SP)
2859 MOVQ R14, AX
2860 ORQ R10, AX
2861 XORQ R13, AX
2862 MOVQ AX, 104(SP)
2863 ANDQ R11, R10
2864 XORQ R14, R10
2865 MOVQ R10, 112(SP)
2866 XORQ R10, R15
2867
2868 // Result m
2869 MOVQ 40(DI), R11
2870 XORQ BX, R11
2871 MOVQ 88(DI), R12
2872 ROLQ $0x24, R11
2873 XORQ CX, R12
2874 MOVQ 32(DI), R10
2875 ROLQ $0x0a, R12
2876 MOVQ R11, AX
2877 MOVQ 136(DI), R13
2878 ANDQ R12, AX
2879 XORQ R9, R10
2880 MOVQ 184(DI), R14
2881 ROLQ $0x1b, R10
2882 XORQ R10, AX
2883 MOVQ AX, 120(SP)
2884 XORQ AX, SI
2885 XORQ DX, R13
2886 ROLQ $0x0f, R13
2887 MOVQ R12, AX
2888 ORQ R13, AX
2889 XORQ R11, AX
2890 MOVQ AX, 128(SP)
2891 XORQ AX, BP
2892 XORQ R8, R14
2893 ROLQ $0x38, R14
2894 NOTQ R13
2895 MOVQ R13, AX
2896 ORQ R14, AX
2897 XORQ R12, AX
2898 MOVQ AX, 136(SP)
2899 ORQ R10, R11
2900 XORQ R14, R11
2901 MOVQ R11, 152(SP)
2902 ANDQ R10, R14
2903 XORQ R13, R14
2904 MOVQ R14, 144(SP)
2905 XORQ R11, R15
2906
2907 // Result s
2908 MOVQ 16(DI), R10
2909 MOVQ 64(DI), R11
2910 MOVQ 112(DI), R12
2911 XORQ DX, R10
2912 MOVQ 120(DI), R13
2913 ROLQ $0x3e, R10
2914 XORQ R8, R11
2915 MOVQ 168(DI), R14
2916 ROLQ $0x37, R11
2917 XORQ R9, R12
2918 MOVQ R10, R9
2919 XORQ CX, R14
2920 ROLQ $0x02, R14
2921 ANDQ R11, R9
2922 XORQ R14, R9
2923 MOVQ R9, 192(SP)
2924 ROLQ $0x27, R12
2925 XORQ R9, R15
2926 NOTQ R11
2927 XORQ BX, R13
2928 MOVQ R11, BX
2929 ANDQ R12, BX
2930 XORQ R10, BX
2931 MOVQ BX, 160(SP)
2932 XORQ BX, SI
2933 ROLQ $0x29, R13
2934 MOVQ R12, CX
2935 ORQ R13, CX
2936 XORQ R11, CX
2937 MOVQ CX, 168(SP)
2938 XORQ CX, BP
2939 MOVQ R13, DX
2940 MOVQ R14, R8
2941 ANDQ R14, DX
2942 ORQ R10, R8
2943 XORQ R12, DX
2944 XORQ R13, R8
2945 MOVQ DX, 176(SP)
2946 MOVQ R8, 184(SP)
2947
2948 // Prepare round
2949 MOVQ BP, BX
2950 ROLQ $0x01, BX
2951 MOVQ 16(SP), R12
2952 XORQ 56(SP), DX
2953 XORQ R15, BX
2954 XORQ 96(SP), R12
2955 XORQ 136(SP), DX
2956 XORQ DX, R12
2957 MOVQ R12, CX
2958 ROLQ $0x01, CX
2959 MOVQ 24(SP), R13
2960 XORQ 64(SP), R8
2961 XORQ SI, CX
2962 XORQ 104(SP), R13
2963 XORQ 144(SP), R8
2964 XORQ R8, R13
2965 MOVQ R13, DX
2966 ROLQ $0x01, DX
2967 MOVQ R15, R8
2968 XORQ BP, DX
2969 ROLQ $0x01, R8
2970 MOVQ SI, R9
2971 XORQ R12, R8
2972 ROLQ $0x01, R9
2973
2974 // Result b
2975 MOVQ (SP), R10
2976 MOVQ 48(SP), R11
2977 XORQ R13, R9
2978 MOVQ 96(SP), R12
2979 MOVQ 144(SP), R13
2980 MOVQ 192(SP), R14
2981 XORQ CX, R11
2982 ROLQ $0x2c, R11
2983 XORQ DX, R12
2984 XORQ BX, R10
2985 ROLQ $0x2b, R12
2986 MOVQ R11, SI
2987 MOVQ $0x800000000000008b, AX
2988 ORQ R12, SI
2989 XORQ R10, AX
2990 XORQ AX, SI
2991 MOVQ SI, (DI)
2992 XORQ R9, R14
2993 ROLQ $0x0e, R14
2994 MOVQ R10, R15
2995 ANDQ R11, R15
2996 XORQ R14, R15
2997 MOVQ R15, 32(DI)
2998 XORQ R8, R13
2999 ROLQ $0x15, R13
3000 MOVQ R13, AX
3001 ANDQ R14, AX
3002 XORQ R12, AX
3003 MOVQ AX, 16(DI)
3004 NOTQ R12
3005 ORQ R10, R14
3006 ORQ R13, R12
3007 XORQ R13, R14
3008 XORQ R11, R12
3009 MOVQ R14, 24(DI)
3010 MOVQ R12, 8(DI)
3011 MOVQ R12, BP
3012
3013 // Result g
3014 MOVQ 72(SP), R11
3015 XORQ R9, R11
3016 MOVQ 80(SP), R12
3017 ROLQ $0x14, R11
3018 XORQ BX, R12
3019 ROLQ $0x03, R12
3020 MOVQ 24(SP), R10
3021 MOVQ R11, AX
3022 ORQ R12, AX
3023 XORQ R8, R10
3024 MOVQ 128(SP), R13
3025 MOVQ 176(SP), R14
3026 ROLQ $0x1c, R10
3027 XORQ R10, AX
3028 MOVQ AX, 40(DI)
3029 XORQ AX, SI
3030 XORQ CX, R13
3031 ROLQ $0x2d, R13
3032 MOVQ R12, AX
3033 ANDQ R13, AX
3034 XORQ R11, AX
3035 MOVQ AX, 48(DI)
3036 XORQ AX, BP
3037 XORQ DX, R14
3038 ROLQ $0x3d, R14
3039 MOVQ R14, AX
3040 ORQ R10, AX
3041 XORQ R13, AX
3042 MOVQ AX, 64(DI)
3043 ANDQ R11, R10
3044 XORQ R14, R10
3045 MOVQ R10, 72(DI)
3046 NOTQ R14
3047 XORQ R10, R15
3048 ORQ R14, R13
3049 XORQ R12, R13
3050 MOVQ R13, 56(DI)
3051
3052 // Result k
3053 MOVQ 8(SP), R10
3054 MOVQ 56(SP), R11
3055 MOVQ 104(SP), R12
3056 MOVQ 152(SP), R13
3057 MOVQ 160(SP), R14
3058 XORQ DX, R11
3059 ROLQ $0x06, R11
3060 XORQ R8, R12
3061 ROLQ $0x19, R12
3062 MOVQ R11, AX
3063 ORQ R12, AX
3064 XORQ CX, R10
3065 ROLQ $0x01, R10
3066 XORQ R10, AX
3067 MOVQ AX, 80(DI)
3068 XORQ AX, SI
3069 XORQ R9, R13
3070 ROLQ $0x08, R13
3071 MOVQ R12, AX
3072 ANDQ R13, AX
3073 XORQ R11, AX
3074 MOVQ AX, 88(DI)
3075 XORQ AX, BP
3076 XORQ BX, R14
3077 ROLQ $0x12, R14
3078 NOTQ R13
3079 MOVQ R13, AX
3080 ANDQ R14, AX
3081 XORQ R12, AX
3082 MOVQ AX, 96(DI)
3083 MOVQ R14, AX
3084 ORQ R10, AX
3085 XORQ R13, AX
3086 MOVQ AX, 104(DI)
3087 ANDQ R11, R10
3088 XORQ R14, R10
3089 MOVQ R10, 112(DI)
3090 XORQ R10, R15
3091
3092 // Result m
3093 MOVQ 40(SP), R11
3094 XORQ BX, R11
3095 MOVQ 88(SP), R12
3096 ROLQ $0x24, R11
3097 XORQ CX, R12
3098 MOVQ 32(SP), R10
3099 ROLQ $0x0a, R12
3100 MOVQ R11, AX
3101 MOVQ 136(SP), R13
3102 ANDQ R12, AX
3103 XORQ R9, R10
3104 MOVQ 184(SP), R14
3105 ROLQ $0x1b, R10
3106 XORQ R10, AX
3107 MOVQ AX, 120(DI)
3108 XORQ AX, SI
3109 XORQ DX, R13
3110 ROLQ $0x0f, R13
3111 MOVQ R12, AX
3112 ORQ R13, AX
3113 XORQ R11, AX
3114 MOVQ AX, 128(DI)
3115 XORQ AX, BP
3116 XORQ R8, R14
3117 ROLQ $0x38, R14
3118 NOTQ R13
3119 MOVQ R13, AX
3120 ORQ R14, AX
3121 XORQ R12, AX
3122 MOVQ AX, 136(DI)
3123 ORQ R10, R11
3124 XORQ R14, R11
3125 MOVQ R11, 152(DI)
3126 ANDQ R10, R14
3127 XORQ R13, R14
3128 MOVQ R14, 144(DI)
3129 XORQ R11, R15
3130
3131 // Result s
3132 MOVQ 16(SP), R10
3133 MOVQ 64(SP), R11
3134 MOVQ 112(SP), R12
3135 XORQ DX, R10
3136 MOVQ 120(SP), R13
3137 ROLQ $0x3e, R10
3138 XORQ R8, R11
3139 MOVQ 168(SP), R14
3140 ROLQ $0x37, R11
3141 XORQ R9, R12
3142 MOVQ R10, R9
3143 XORQ CX, R14
3144 ROLQ $0x02, R14
3145 ANDQ R11, R9
3146 XORQ R14, R9
3147 MOVQ R9, 192(DI)
3148 ROLQ $0x27, R12
3149 XORQ R9, R15
3150 NOTQ R11
3151 XORQ BX, R13
3152 MOVQ R11, BX
3153 ANDQ R12, BX
3154 XORQ R10, BX
3155 MOVQ BX, 160(DI)
3156 XORQ BX, SI
3157 ROLQ $0x29, R13
3158 MOVQ R12, CX
3159 ORQ R13, CX
3160 XORQ R11, CX
3161 MOVQ CX, 168(DI)
3162 XORQ CX, BP
3163 MOVQ R13, DX
3164 MOVQ R14, R8
3165 ANDQ R14, DX
3166 ORQ R10, R8
3167 XORQ R12, DX
3168 XORQ R13, R8
3169 MOVQ DX, 176(DI)
3170 MOVQ R8, 184(DI)
3171
3172 // Prepare round
3173 MOVQ BP, BX
3174 ROLQ $0x01, BX
3175 MOVQ 16(DI), R12
3176 XORQ 56(DI), DX
3177 XORQ R15, BX
3178 XORQ 96(DI), R12
3179 XORQ 136(DI), DX
3180 XORQ DX, R12
3181 MOVQ R12, CX
3182 ROLQ $0x01, CX
3183 MOVQ 24(DI), R13
3184 XORQ 64(DI), R8
3185 XORQ SI, CX
3186 XORQ 104(DI), R13
3187 XORQ 144(DI), R8
3188 XORQ R8, R13
3189 MOVQ R13, DX
3190 ROLQ $0x01, DX
3191 MOVQ R15, R8
3192 XORQ BP, DX
3193 ROLQ $0x01, R8
3194 MOVQ SI, R9
3195 XORQ R12, R8
3196 ROLQ $0x01, R9
3197
3198 // Result b
3199 MOVQ (DI), R10
3200 MOVQ 48(DI), R11
3201 XORQ R13, R9
3202 MOVQ 96(DI), R12
3203 MOVQ 144(DI), R13
3204 MOVQ 192(DI), R14
3205 XORQ CX, R11
3206 ROLQ $0x2c, R11
3207 XORQ DX, R12
3208 XORQ BX, R10
3209 ROLQ $0x2b, R12
3210 MOVQ R11, SI
3211 MOVQ $0x8000000000008089, AX
3212 ORQ R12, SI
3213 XORQ R10, AX
3214 XORQ AX, SI
3215 MOVQ SI, (SP)
3216 XORQ R9, R14
3217 ROLQ $0x0e, R14
3218 MOVQ R10, R15
3219 ANDQ R11, R15
3220 XORQ R14, R15
3221 MOVQ R15, 32(SP)
3222 XORQ R8, R13
3223 ROLQ $0x15, R13
3224 MOVQ R13, AX
3225 ANDQ R14, AX
3226 XORQ R12, AX
3227 MOVQ AX, 16(SP)
3228 NOTQ R12
3229 ORQ R10, R14
3230 ORQ R13, R12
3231 XORQ R13, R14
3232 XORQ R11, R12
3233 MOVQ R14, 24(SP)
3234 MOVQ R12, 8(SP)
3235 MOVQ R12, BP
3236
3237 // Result g
3238 MOVQ 72(DI), R11
3239 XORQ R9, R11
3240 MOVQ 80(DI), R12
3241 ROLQ $0x14, R11
3242 XORQ BX, R12
3243 ROLQ $0x03, R12
3244 MOVQ 24(DI), R10
3245 MOVQ R11, AX
3246 ORQ R12, AX
3247 XORQ R8, R10
3248 MOVQ 128(DI), R13
3249 MOVQ 176(DI), R14
3250 ROLQ $0x1c, R10
3251 XORQ R10, AX
3252 MOVQ AX, 40(SP)
3253 XORQ AX, SI
3254 XORQ CX, R13
3255 ROLQ $0x2d, R13
3256 MOVQ R12, AX
3257 ANDQ R13, AX
3258 XORQ R11, AX
3259 MOVQ AX, 48(SP)
3260 XORQ AX, BP
3261 XORQ DX, R14
3262 ROLQ $0x3d, R14
3263 MOVQ R14, AX
3264 ORQ R10, AX
3265 XORQ R13, AX
3266 MOVQ AX, 64(SP)
3267 ANDQ R11, R10
3268 XORQ R14, R10
3269 MOVQ R10, 72(SP)
3270 NOTQ R14
3271 XORQ R10, R15
3272 ORQ R14, R13
3273 XORQ R12, R13
3274 MOVQ R13, 56(SP)
3275
3276 // Result k
3277 MOVQ 8(DI), R10
3278 MOVQ 56(DI), R11
3279 MOVQ 104(DI), R12
3280 MOVQ 152(DI), R13
3281 MOVQ 160(DI), R14
3282 XORQ DX, R11
3283 ROLQ $0x06, R11
3284 XORQ R8, R12
3285 ROLQ $0x19, R12
3286 MOVQ R11, AX
3287 ORQ R12, AX
3288 XORQ CX, R10
3289 ROLQ $0x01, R10
3290 XORQ R10, AX
3291 MOVQ AX, 80(SP)
3292 XORQ AX, SI
3293 XORQ R9, R13
3294 ROLQ $0x08, R13
3295 MOVQ R12, AX
3296 ANDQ R13, AX
3297 XORQ R11, AX
3298 MOVQ AX, 88(SP)
3299 XORQ AX, BP
3300 XORQ BX, R14
3301 ROLQ $0x12, R14
3302 NOTQ R13
3303 MOVQ R13, AX
3304 ANDQ R14, AX
3305 XORQ R12, AX
3306 MOVQ AX, 96(SP)
3307 MOVQ R14, AX
3308 ORQ R10, AX
3309 XORQ R13, AX
3310 MOVQ AX, 104(SP)
3311 ANDQ R11, R10
3312 XORQ R14, R10
3313 MOVQ R10, 112(SP)
3314 XORQ R10, R15
3315
3316 // Result m
3317 MOVQ 40(DI), R11
3318 XORQ BX, R11
3319 MOVQ 88(DI), R12
3320 ROLQ $0x24, R11
3321 XORQ CX, R12
3322 MOVQ 32(DI), R10
3323 ROLQ $0x0a, R12
3324 MOVQ R11, AX
3325 MOVQ 136(DI), R13
3326 ANDQ R12, AX
3327 XORQ R9, R10
3328 MOVQ 184(DI), R14
3329 ROLQ $0x1b, R10
3330 XORQ R10, AX
3331 MOVQ AX, 120(SP)
3332 XORQ AX, SI
3333 XORQ DX, R13
3334 ROLQ $0x0f, R13
3335 MOVQ R12, AX
3336 ORQ R13, AX
3337 XORQ R11, AX
3338 MOVQ AX, 128(SP)
3339 XORQ AX, BP
3340 XORQ R8, R14
3341 ROLQ $0x38, R14
3342 NOTQ R13
3343 MOVQ R13, AX
3344 ORQ R14, AX
3345 XORQ R12, AX
3346 MOVQ AX, 136(SP)
3347 ORQ R10, R11
3348 XORQ R14, R11
3349 MOVQ R11, 152(SP)
3350 ANDQ R10, R14
3351 XORQ R13, R14
3352 MOVQ R14, 144(SP)
3353 XORQ R11, R15
3354
3355 // Result s
3356 MOVQ 16(DI), R10
3357 MOVQ 64(DI), R11
3358 MOVQ 112(DI), R12
3359 XORQ DX, R10
3360 MOVQ 120(DI), R13
3361 ROLQ $0x3e, R10
3362 XORQ R8, R11
3363 MOVQ 168(DI), R14
3364 ROLQ $0x37, R11
3365 XORQ R9, R12
3366 MOVQ R10, R9
3367 XORQ CX, R14
3368 ROLQ $0x02, R14
3369 ANDQ R11, R9
3370 XORQ R14, R9
3371 MOVQ R9, 192(SP)
3372 ROLQ $0x27, R12
3373 XORQ R9, R15
3374 NOTQ R11
3375 XORQ BX, R13
3376 MOVQ R11, BX
3377 ANDQ R12, BX
3378 XORQ R10, BX
3379 MOVQ BX, 160(SP)
3380 XORQ BX, SI
3381 ROLQ $0x29, R13
3382 MOVQ R12, CX
3383 ORQ R13, CX
3384 XORQ R11, CX
3385 MOVQ CX, 168(SP)
3386 XORQ CX, BP
3387 MOVQ R13, DX
3388 MOVQ R14, R8
3389 ANDQ R14, DX
3390 ORQ R10, R8
3391 XORQ R12, DX
3392 XORQ R13, R8
3393 MOVQ DX, 176(SP)
3394 MOVQ R8, 184(SP)
3395
3396 // Prepare round
3397 MOVQ BP, BX
3398 ROLQ $0x01, BX
3399 MOVQ 16(SP), R12
3400 XORQ 56(SP), DX
3401 XORQ R15, BX
3402 XORQ 96(SP), R12
3403 XORQ 136(SP), DX
3404 XORQ DX, R12
3405 MOVQ R12, CX
3406 ROLQ $0x01, CX
3407 MOVQ 24(SP), R13
3408 XORQ 64(SP), R8
3409 XORQ SI, CX
3410 XORQ 104(SP), R13
3411 XORQ 144(SP), R8
3412 XORQ R8, R13
3413 MOVQ R13, DX
3414 ROLQ $0x01, DX
3415 MOVQ R15, R8
3416 XORQ BP, DX
3417 ROLQ $0x01, R8
3418 MOVQ SI, R9
3419 XORQ R12, R8
3420 ROLQ $0x01, R9
3421
3422 // Result b
3423 MOVQ (SP), R10
3424 MOVQ 48(SP), R11
3425 XORQ R13, R9
3426 MOVQ 96(SP), R12
3427 MOVQ 144(SP), R13
3428 MOVQ 192(SP), R14
3429 XORQ CX, R11
3430 ROLQ $0x2c, R11
3431 XORQ DX, R12
3432 XORQ BX, R10
3433 ROLQ $0x2b, R12
3434 MOVQ R11, SI
3435 MOVQ $0x8000000000008003, AX
3436 ORQ R12, SI
3437 XORQ R10, AX
3438 XORQ AX, SI
3439 MOVQ SI, (DI)
3440 XORQ R9, R14
3441 ROLQ $0x0e, R14
3442 MOVQ R10, R15
3443 ANDQ R11, R15
3444 XORQ R14, R15
3445 MOVQ R15, 32(DI)
3446 XORQ R8, R13
3447 ROLQ $0x15, R13
3448 MOVQ R13, AX
3449 ANDQ R14, AX
3450 XORQ R12, AX
3451 MOVQ AX, 16(DI)
3452 NOTQ R12
3453 ORQ R10, R14
3454 ORQ R13, R12
3455 XORQ R13, R14
3456 XORQ R11, R12
3457 MOVQ R14, 24(DI)
3458 MOVQ R12, 8(DI)
3459 MOVQ R12, BP
3460
3461 // Result g
3462 MOVQ 72(SP), R11
3463 XORQ R9, R11
3464 MOVQ 80(SP), R12
3465 ROLQ $0x14, R11
3466 XORQ BX, R12
3467 ROLQ $0x03, R12
3468 MOVQ 24(SP), R10
3469 MOVQ R11, AX
3470 ORQ R12, AX
3471 XORQ R8, R10
3472 MOVQ 128(SP), R13
3473 MOVQ 176(SP), R14
3474 ROLQ $0x1c, R10
3475 XORQ R10, AX
3476 MOVQ AX, 40(DI)
3477 XORQ AX, SI
3478 XORQ CX, R13
3479 ROLQ $0x2d, R13
3480 MOVQ R12, AX
3481 ANDQ R13, AX
3482 XORQ R11, AX
3483 MOVQ AX, 48(DI)
3484 XORQ AX, BP
3485 XORQ DX, R14
3486 ROLQ $0x3d, R14
3487 MOVQ R14, AX
3488 ORQ R10, AX
3489 XORQ R13, AX
3490 MOVQ AX, 64(DI)
3491 ANDQ R11, R10
3492 XORQ R14, R10
3493 MOVQ R10, 72(DI)
3494 NOTQ R14
3495 XORQ R10, R15
3496 ORQ R14, R13
3497 XORQ R12, R13
3498 MOVQ R13, 56(DI)
3499
3500 // Result k
3501 MOVQ 8(SP), R10
3502 MOVQ 56(SP), R11
3503 MOVQ 104(SP), R12
3504 MOVQ 152(SP), R13
3505 MOVQ 160(SP), R14
3506 XORQ DX, R11
3507 ROLQ $0x06, R11
3508 XORQ R8, R12
3509 ROLQ $0x19, R12
3510 MOVQ R11, AX
3511 ORQ R12, AX
3512 XORQ CX, R10
3513 ROLQ $0x01, R10
3514 XORQ R10, AX
3515 MOVQ AX, 80(DI)
3516 XORQ AX, SI
3517 XORQ R9, R13
3518 ROLQ $0x08, R13
3519 MOVQ R12, AX
3520 ANDQ R13, AX
3521 XORQ R11, AX
3522 MOVQ AX, 88(DI)
3523 XORQ AX, BP
3524 XORQ BX, R14
3525 ROLQ $0x12, R14
3526 NOTQ R13
3527 MOVQ R13, AX
3528 ANDQ R14, AX
3529 XORQ R12, AX
3530 MOVQ AX, 96(DI)
3531 MOVQ R14, AX
3532 ORQ R10, AX
3533 XORQ R13, AX
3534 MOVQ AX, 104(DI)
3535 ANDQ R11, R10
3536 XORQ R14, R10
3537 MOVQ R10, 112(DI)
3538 XORQ R10, R15
3539
3540 // Result m
3541 MOVQ 40(SP), R11
3542 XORQ BX, R11
3543 MOVQ 88(SP), R12
3544 ROLQ $0x24, R11
3545 XORQ CX, R12
3546 MOVQ 32(SP), R10
3547 ROLQ $0x0a, R12
3548 MOVQ R11, AX
3549 MOVQ 136(SP), R13
3550 ANDQ R12, AX
3551 XORQ R9, R10
3552 MOVQ 184(SP), R14
3553 ROLQ $0x1b, R10
3554 XORQ R10, AX
3555 MOVQ AX, 120(DI)
3556 XORQ AX, SI
3557 XORQ DX, R13
3558 ROLQ $0x0f, R13
3559 MOVQ R12, AX
3560 ORQ R13, AX
3561 XORQ R11, AX
3562 MOVQ AX, 128(DI)
3563 XORQ AX, BP
3564 XORQ R8, R14
3565 ROLQ $0x38, R14
3566 NOTQ R13
3567 MOVQ R13, AX
3568 ORQ R14, AX
3569 XORQ R12, AX
3570 MOVQ AX, 136(DI)
3571 ORQ R10, R11
3572 XORQ R14, R11
3573 MOVQ R11, 152(DI)
3574 ANDQ R10, R14
3575 XORQ R13, R14
3576 MOVQ R14, 144(DI)
3577 XORQ R11, R15
3578
3579 // Result s
3580 MOVQ 16(SP), R10
3581 MOVQ 64(SP), R11
3582 MOVQ 112(SP), R12
3583 XORQ DX, R10
3584 MOVQ 120(SP), R13
3585 ROLQ $0x3e, R10
3586 XORQ R8, R11
3587 MOVQ 168(SP), R14
3588 ROLQ $0x37, R11
3589 XORQ R9, R12
3590 MOVQ R10, R9
3591 XORQ CX, R14
3592 ROLQ $0x02, R14
3593 ANDQ R11, R9
3594 XORQ R14, R9
3595 MOVQ R9, 192(DI)
3596 ROLQ $0x27, R12
3597 XORQ R9, R15
3598 NOTQ R11
3599 XORQ BX, R13
3600 MOVQ R11, BX
3601 ANDQ R12, BX
3602 XORQ R10, BX
3603 MOVQ BX, 160(DI)
3604 XORQ BX, SI
3605 ROLQ $0x29, R13
3606 MOVQ R12, CX
3607 ORQ R13, CX
3608 XORQ R11, CX
3609 MOVQ CX, 168(DI)
3610 XORQ CX, BP
3611 MOVQ R13, DX
3612 MOVQ R14, R8
3613 ANDQ R14, DX
3614 ORQ R10, R8
3615 XORQ R12, DX
3616 XORQ R13, R8
3617 MOVQ DX, 176(DI)
3618 MOVQ R8, 184(DI)
3619
3620 // Prepare round
3621 MOVQ BP, BX
3622 ROLQ $0x01, BX
3623 MOVQ 16(DI), R12
3624 XORQ 56(DI), DX
3625 XORQ R15, BX
3626 XORQ 96(DI), R12
3627 XORQ 136(DI), DX
3628 XORQ DX, R12
3629 MOVQ R12, CX
3630 ROLQ $0x01, CX
3631 MOVQ 24(DI), R13
3632 XORQ 64(DI), R8
3633 XORQ SI, CX
3634 XORQ 104(DI), R13
3635 XORQ 144(DI), R8
3636 XORQ R8, R13
3637 MOVQ R13, DX
3638 ROLQ $0x01, DX
3639 MOVQ R15, R8
3640 XORQ BP, DX
3641 ROLQ $0x01, R8
3642 MOVQ SI, R9
3643 XORQ R12, R8
3644 ROLQ $0x01, R9
3645
3646 // Result b
3647 MOVQ (DI), R10
3648 MOVQ 48(DI), R11
3649 XORQ R13, R9
3650 MOVQ 96(DI), R12
3651 MOVQ 144(DI), R13
3652 MOVQ 192(DI), R14
3653 XORQ CX, R11
3654 ROLQ $0x2c, R11
3655 XORQ DX, R12
3656 XORQ BX, R10
3657 ROLQ $0x2b, R12
3658 MOVQ R11, SI
3659 MOVQ $0x8000000000008002, AX
3660 ORQ R12, SI
3661 XORQ R10, AX
3662 XORQ AX, SI
3663 MOVQ SI, (SP)
3664 XORQ R9, R14
3665 ROLQ $0x0e, R14
3666 MOVQ R10, R15
3667 ANDQ R11, R15
3668 XORQ R14, R15
3669 MOVQ R15, 32(SP)
3670 XORQ R8, R13
3671 ROLQ $0x15, R13
3672 MOVQ R13, AX
3673 ANDQ R14, AX
3674 XORQ R12, AX
3675 MOVQ AX, 16(SP)
3676 NOTQ R12
3677 ORQ R10, R14
3678 ORQ R13, R12
3679 XORQ R13, R14
3680 XORQ R11, R12
3681 MOVQ R14, 24(SP)
3682 MOVQ R12, 8(SP)
3683 MOVQ R12, BP
3684
3685 // Result g
3686 MOVQ 72(DI), R11
3687 XORQ R9, R11
3688 MOVQ 80(DI), R12
3689 ROLQ $0x14, R11
3690 XORQ BX, R12
3691 ROLQ $0x03, R12
3692 MOVQ 24(DI), R10
3693 MOVQ R11, AX
3694 ORQ R12, AX
3695 XORQ R8, R10
3696 MOVQ 128(DI), R13
3697 MOVQ 176(DI), R14
3698 ROLQ $0x1c, R10
3699 XORQ R10, AX
3700 MOVQ AX, 40(SP)
3701 XORQ AX, SI
3702 XORQ CX, R13
3703 ROLQ $0x2d, R13
3704 MOVQ R12, AX
3705 ANDQ R13, AX
3706 XORQ R11, AX
3707 MOVQ AX, 48(SP)
3708 XORQ AX, BP
3709 XORQ DX, R14
3710 ROLQ $0x3d, R14
3711 MOVQ R14, AX
3712 ORQ R10, AX
3713 XORQ R13, AX
3714 MOVQ AX, 64(SP)
3715 ANDQ R11, R10
3716 XORQ R14, R10
3717 MOVQ R10, 72(SP)
3718 NOTQ R14
3719 XORQ R10, R15
3720 ORQ R14, R13
3721 XORQ R12, R13
3722 MOVQ R13, 56(SP)
3723
3724 // Result k
3725 MOVQ 8(DI), R10
3726 MOVQ 56(DI), R11
3727 MOVQ 104(DI), R12
3728 MOVQ 152(DI), R13
3729 MOVQ 160(DI), R14
3730 XORQ DX, R11
3731 ROLQ $0x06, R11
3732 XORQ R8, R12
3733 ROLQ $0x19, R12
3734 MOVQ R11, AX
3735 ORQ R12, AX
3736 XORQ CX, R10
3737 ROLQ $0x01, R10
3738 XORQ R10, AX
3739 MOVQ AX, 80(SP)
3740 XORQ AX, SI
3741 XORQ R9, R13
3742 ROLQ $0x08, R13
3743 MOVQ R12, AX
3744 ANDQ R13, AX
3745 XORQ R11, AX
3746 MOVQ AX, 88(SP)
3747 XORQ AX, BP
3748 XORQ BX, R14
3749 ROLQ $0x12, R14
3750 NOTQ R13
3751 MOVQ R13, AX
3752 ANDQ R14, AX
3753 XORQ R12, AX
3754 MOVQ AX, 96(SP)
3755 MOVQ R14, AX
3756 ORQ R10, AX
3757 XORQ R13, AX
3758 MOVQ AX, 104(SP)
3759 ANDQ R11, R10
3760 XORQ R14, R10
3761 MOVQ R10, 112(SP)
3762 XORQ R10, R15
3763
3764 // Result m
3765 MOVQ 40(DI), R11
3766 XORQ BX, R11
3767 MOVQ 88(DI), R12
3768 ROLQ $0x24, R11
3769 XORQ CX, R12
3770 MOVQ 32(DI), R10
3771 ROLQ $0x0a, R12
3772 MOVQ R11, AX
3773 MOVQ 136(DI), R13
3774 ANDQ R12, AX
3775 XORQ R9, R10
3776 MOVQ 184(DI), R14
3777 ROLQ $0x1b, R10
3778 XORQ R10, AX
3779 MOVQ AX, 120(SP)
3780 XORQ AX, SI
3781 XORQ DX, R13
3782 ROLQ $0x0f, R13
3783 MOVQ R12, AX
3784 ORQ R13, AX
3785 XORQ R11, AX
3786 MOVQ AX, 128(SP)
3787 XORQ AX, BP
3788 XORQ R8, R14
3789 ROLQ $0x38, R14
3790 NOTQ R13
3791 MOVQ R13, AX
3792 ORQ R14, AX
3793 XORQ R12, AX
3794 MOVQ AX, 136(SP)
3795 ORQ R10, R11
3796 XORQ R14, R11
3797 MOVQ R11, 152(SP)
3798 ANDQ R10, R14
3799 XORQ R13, R14
3800 MOVQ R14, 144(SP)
3801 XORQ R11, R15
3802
3803 // Result s
3804 MOVQ 16(DI), R10
3805 MOVQ 64(DI), R11
3806 MOVQ 112(DI), R12
3807 XORQ DX, R10
3808 MOVQ 120(DI), R13
3809 ROLQ $0x3e, R10
3810 XORQ R8, R11
3811 MOVQ 168(DI), R14
3812 ROLQ $0x37, R11
3813 XORQ R9, R12
3814 MOVQ R10, R9
3815 XORQ CX, R14
3816 ROLQ $0x02, R14
3817 ANDQ R11, R9
3818 XORQ R14, R9
3819 MOVQ R9, 192(SP)
3820 ROLQ $0x27, R12
3821 XORQ R9, R15
3822 NOTQ R11
3823 XORQ BX, R13
3824 MOVQ R11, BX
3825 ANDQ R12, BX
3826 XORQ R10, BX
3827 MOVQ BX, 160(SP)
3828 XORQ BX, SI
3829 ROLQ $0x29, R13
3830 MOVQ R12, CX
3831 ORQ R13, CX
3832 XORQ R11, CX
3833 MOVQ CX, 168(SP)
3834 XORQ CX, BP
3835 MOVQ R13, DX
3836 MOVQ R14, R8
3837 ANDQ R14, DX
3838 ORQ R10, R8
3839 XORQ R12, DX
3840 XORQ R13, R8
3841 MOVQ DX, 176(SP)
3842 MOVQ R8, 184(SP)
3843
3844 // Prepare round
3845 MOVQ BP, BX
3846 ROLQ $0x01, BX
3847 MOVQ 16(SP), R12
3848 XORQ 56(SP), DX
3849 XORQ R15, BX
3850 XORQ 96(SP), R12
3851 XORQ 136(SP), DX
3852 XORQ DX, R12
3853 MOVQ R12, CX
3854 ROLQ $0x01, CX
3855 MOVQ 24(SP), R13
3856 XORQ 64(SP), R8
3857 XORQ SI, CX
3858 XORQ 104(SP), R13
3859 XORQ 144(SP), R8
3860 XORQ R8, R13
3861 MOVQ R13, DX
3862 ROLQ $0x01, DX
3863 MOVQ R15, R8
3864 XORQ BP, DX
3865 ROLQ $0x01, R8
3866 MOVQ SI, R9
3867 XORQ R12, R8
3868 ROLQ $0x01, R9
3869
3870 // Result b
3871 MOVQ (SP), R10
3872 MOVQ 48(SP), R11
3873 XORQ R13, R9
3874 MOVQ 96(SP), R12
3875 MOVQ 144(SP), R13
3876 MOVQ 192(SP), R14
3877 XORQ CX, R11
3878 ROLQ $0x2c, R11
3879 XORQ DX, R12
3880 XORQ BX, R10
3881 ROLQ $0x2b, R12
3882 MOVQ R11, SI
3883 MOVQ $0x8000000000000080, AX
3884 ORQ R12, SI
3885 XORQ R10, AX
3886 XORQ AX, SI
3887 MOVQ SI, (DI)
3888 XORQ R9, R14
3889 ROLQ $0x0e, R14
3890 MOVQ R10, R15
3891 ANDQ R11, R15
3892 XORQ R14, R15
3893 MOVQ R15, 32(DI)
3894 XORQ R8, R13
3895 ROLQ $0x15, R13
3896 MOVQ R13, AX
3897 ANDQ R14, AX
3898 XORQ R12, AX
3899 MOVQ AX, 16(DI)
3900 NOTQ R12
3901 ORQ R10, R14
3902 ORQ R13, R12
3903 XORQ R13, R14
3904 XORQ R11, R12
3905 MOVQ R14, 24(DI)
3906 MOVQ R12, 8(DI)
3907 MOVQ R12, BP
3908
3909 // Result g
3910 MOVQ 72(SP), R11
3911 XORQ R9, R11
3912 MOVQ 80(SP), R12
3913 ROLQ $0x14, R11
3914 XORQ BX, R12
3915 ROLQ $0x03, R12
3916 MOVQ 24(SP), R10
3917 MOVQ R11, AX
3918 ORQ R12, AX
3919 XORQ R8, R10
3920 MOVQ 128(SP), R13
3921 MOVQ 176(SP), R14
3922 ROLQ $0x1c, R10
3923 XORQ R10, AX
3924 MOVQ AX, 40(DI)
3925 XORQ AX, SI
3926 XORQ CX, R13
3927 ROLQ $0x2d, R13
3928 MOVQ R12, AX
3929 ANDQ R13, AX
3930 XORQ R11, AX
3931 MOVQ AX, 48(DI)
3932 XORQ AX, BP
3933 XORQ DX, R14
3934 ROLQ $0x3d, R14
3935 MOVQ R14, AX
3936 ORQ R10, AX
3937 XORQ R13, AX
3938 MOVQ AX, 64(DI)
3939 ANDQ R11, R10
3940 XORQ R14, R10
3941 MOVQ R10, 72(DI)
3942 NOTQ R14
3943 XORQ R10, R15
3944 ORQ R14, R13
3945 XORQ R12, R13
3946 MOVQ R13, 56(DI)
3947
3948 // Result k
3949 MOVQ 8(SP), R10
3950 MOVQ 56(SP), R11
3951 MOVQ 104(SP), R12
3952 MOVQ 152(SP), R13
3953 MOVQ 160(SP), R14
3954 XORQ DX, R11
3955 ROLQ $0x06, R11
3956 XORQ R8, R12
3957 ROLQ $0x19, R12
3958 MOVQ R11, AX
3959 ORQ R12, AX
3960 XORQ CX, R10
3961 ROLQ $0x01, R10
3962 XORQ R10, AX
3963 MOVQ AX, 80(DI)
3964 XORQ AX, SI
3965 XORQ R9, R13
3966 ROLQ $0x08, R13
3967 MOVQ R12, AX
3968 ANDQ R13, AX
3969 XORQ R11, AX
3970 MOVQ AX, 88(DI)
3971 XORQ AX, BP
3972 XORQ BX, R14
3973 ROLQ $0x12, R14
3974 NOTQ R13
3975 MOVQ R13, AX
3976 ANDQ R14, AX
3977 XORQ R12, AX
3978 MOVQ AX, 96(DI)
3979 MOVQ R14, AX
3980 ORQ R10, AX
3981 XORQ R13, AX
3982 MOVQ AX, 104(DI)
3983 ANDQ R11, R10
3984 XORQ R14, R10
3985 MOVQ R10, 112(DI)
3986 XORQ R10, R15
3987
3988 // Result m
3989 MOVQ 40(SP), R11
3990 XORQ BX, R11
3991 MOVQ 88(SP), R12
3992 ROLQ $0x24, R11
3993 XORQ CX, R12
3994 MOVQ 32(SP), R10
3995 ROLQ $0x0a, R12
3996 MOVQ R11, AX
3997 MOVQ 136(SP), R13
3998 ANDQ R12, AX
3999 XORQ R9, R10
4000 MOVQ 184(SP), R14
4001 ROLQ $0x1b, R10
4002 XORQ R10, AX
4003 MOVQ AX, 120(DI)
4004 XORQ AX, SI
4005 XORQ DX, R13
4006 ROLQ $0x0f, R13
4007 MOVQ R12, AX
4008 ORQ R13, AX
4009 XORQ R11, AX
4010 MOVQ AX, 128(DI)
4011 XORQ AX, BP
4012 XORQ R8, R14
4013 ROLQ $0x38, R14
4014 NOTQ R13
4015 MOVQ R13, AX
4016 ORQ R14, AX
4017 XORQ R12, AX
4018 MOVQ AX, 136(DI)
4019 ORQ R10, R11
4020 XORQ R14, R11
4021 MOVQ R11, 152(DI)
4022 ANDQ R10, R14
4023 XORQ R13, R14
4024 MOVQ R14, 144(DI)
4025 XORQ R11, R15
4026
4027 // Result s
4028 MOVQ 16(SP), R10
4029 MOVQ 64(SP), R11
4030 MOVQ 112(SP), R12
4031 XORQ DX, R10
4032 MOVQ 120(SP), R13
4033 ROLQ $0x3e, R10
4034 XORQ R8, R11
4035 MOVQ 168(SP), R14
4036 ROLQ $0x37, R11
4037 XORQ R9, R12
4038 MOVQ R10, R9
4039 XORQ CX, R14
4040 ROLQ $0x02, R14
4041 ANDQ R11, R9
4042 XORQ R14, R9
4043 MOVQ R9, 192(DI)
4044 ROLQ $0x27, R12
4045 XORQ R9, R15
4046 NOTQ R11
4047 XORQ BX, R13
4048 MOVQ R11, BX
4049 ANDQ R12, BX
4050 XORQ R10, BX
4051 MOVQ BX, 160(DI)
4052 XORQ BX, SI
4053 ROLQ $0x29, R13
4054 MOVQ R12, CX
4055 ORQ R13, CX
4056 XORQ R11, CX
4057 MOVQ CX, 168(DI)
4058 XORQ CX, BP
4059 MOVQ R13, DX
4060 MOVQ R14, R8
4061 ANDQ R14, DX
4062 ORQ R10, R8
4063 XORQ R12, DX
4064 XORQ R13, R8
4065 MOVQ DX, 176(DI)
4066 MOVQ R8, 184(DI)
4067
4068 // Prepare round
4069 MOVQ BP, BX
4070 ROLQ $0x01, BX
4071 MOVQ 16(DI), R12
4072 XORQ 56(DI), DX
4073 XORQ R15, BX
4074 XORQ 96(DI), R12
4075 XORQ 136(DI), DX
4076 XORQ DX, R12
4077 MOVQ R12, CX
4078 ROLQ $0x01, CX
4079 MOVQ 24(DI), R13
4080 XORQ 64(DI), R8
4081 XORQ SI, CX
4082 XORQ 104(DI), R13
4083 XORQ 144(DI), R8
4084 XORQ R8, R13
4085 MOVQ R13, DX
4086 ROLQ $0x01, DX
4087 MOVQ R15, R8
4088 XORQ BP, DX
4089 ROLQ $0x01, R8
4090 MOVQ SI, R9
4091 XORQ R12, R8
4092 ROLQ $0x01, R9
4093
4094 // Result b
4095 MOVQ (DI), R10
4096 MOVQ 48(DI), R11
4097 XORQ R13, R9
4098 MOVQ 96(DI), R12
4099 MOVQ 144(DI), R13
4100 MOVQ 192(DI), R14
4101 XORQ CX, R11
4102 ROLQ $0x2c, R11
4103 XORQ DX, R12
4104 XORQ BX, R10
4105 ROLQ $0x2b, R12
4106 MOVQ R11, SI
4107 MOVQ $0x000000000000800a, AX
4108 ORQ R12, SI
4109 XORQ R10, AX
4110 XORQ AX, SI
4111 MOVQ SI, (SP)
4112 XORQ R9, R14
4113 ROLQ $0x0e, R14
4114 MOVQ R10, R15
4115 ANDQ R11, R15
4116 XORQ R14, R15
4117 MOVQ R15, 32(SP)
4118 XORQ R8, R13
4119 ROLQ $0x15, R13
4120 MOVQ R13, AX
4121 ANDQ R14, AX
4122 XORQ R12, AX
4123 MOVQ AX, 16(SP)
4124 NOTQ R12
4125 ORQ R10, R14
4126 ORQ R13, R12
4127 XORQ R13, R14
4128 XORQ R11, R12
4129 MOVQ R14, 24(SP)
4130 MOVQ R12, 8(SP)
4131 MOVQ R12, BP
4132
4133 // Result g
4134 MOVQ 72(DI), R11
4135 XORQ R9, R11
4136 MOVQ 80(DI), R12
4137 ROLQ $0x14, R11
4138 XORQ BX, R12
4139 ROLQ $0x03, R12
4140 MOVQ 24(DI), R10
4141 MOVQ R11, AX
4142 ORQ R12, AX
4143 XORQ R8, R10
4144 MOVQ 128(DI), R13
4145 MOVQ 176(DI), R14
4146 ROLQ $0x1c, R10
4147 XORQ R10, AX
4148 MOVQ AX, 40(SP)
4149 XORQ AX, SI
4150 XORQ CX, R13
4151 ROLQ $0x2d, R13
4152 MOVQ R12, AX
4153 ANDQ R13, AX
4154 XORQ R11, AX
4155 MOVQ AX, 48(SP)
4156 XORQ AX, BP
4157 XORQ DX, R14
4158 ROLQ $0x3d, R14
4159 MOVQ R14, AX
4160 ORQ R10, AX
4161 XORQ R13, AX
4162 MOVQ AX, 64(SP)
4163 ANDQ R11, R10
4164 XORQ R14, R10
4165 MOVQ R10, 72(SP)
4166 NOTQ R14
4167 XORQ R10, R15
4168 ORQ R14, R13
4169 XORQ R12, R13
4170 MOVQ R13, 56(SP)
4171
4172 // Result k
4173 MOVQ 8(DI), R10
4174 MOVQ 56(DI), R11
4175 MOVQ 104(DI), R12
4176 MOVQ 152(DI), R13
4177 MOVQ 160(DI), R14
4178 XORQ DX, R11
4179 ROLQ $0x06, R11
4180 XORQ R8, R12
4181 ROLQ $0x19, R12
4182 MOVQ R11, AX
4183 ORQ R12, AX
4184 XORQ CX, R10
4185 ROLQ $0x01, R10
4186 XORQ R10, AX
4187 MOVQ AX, 80(SP)
4188 XORQ AX, SI
4189 XORQ R9, R13
4190 ROLQ $0x08, R13
4191 MOVQ R12, AX
4192 ANDQ R13, AX
4193 XORQ R11, AX
4194 MOVQ AX, 88(SP)
4195 XORQ AX, BP
4196 XORQ BX, R14
4197 ROLQ $0x12, R14
4198 NOTQ R13
4199 MOVQ R13, AX
4200 ANDQ R14, AX
4201 XORQ R12, AX
4202 MOVQ AX, 96(SP)
4203 MOVQ R14, AX
4204 ORQ R10, AX
4205 XORQ R13, AX
4206 MOVQ AX, 104(SP)
4207 ANDQ R11, R10
4208 XORQ R14, R10
4209 MOVQ R10, 112(SP)
4210 XORQ R10, R15
4211
4212 // Result m
4213 MOVQ 40(DI), R11
4214 XORQ BX, R11
4215 MOVQ 88(DI), R12
4216 ROLQ $0x24, R11
4217 XORQ CX, R12
4218 MOVQ 32(DI), R10
4219 ROLQ $0x0a, R12
4220 MOVQ R11, AX
4221 MOVQ 136(DI), R13
4222 ANDQ R12, AX
4223 XORQ R9, R10
4224 MOVQ 184(DI), R14
4225 ROLQ $0x1b, R10
4226 XORQ R10, AX
4227 MOVQ AX, 120(SP)
4228 XORQ AX, SI
4229 XORQ DX, R13
4230 ROLQ $0x0f, R13
4231 MOVQ R12, AX
4232 ORQ R13, AX
4233 XORQ R11, AX
4234 MOVQ AX, 128(SP)
4235 XORQ AX, BP
4236 XORQ R8, R14
4237 ROLQ $0x38, R14
4238 NOTQ R13
4239 MOVQ R13, AX
4240 ORQ R14, AX
4241 XORQ R12, AX
4242 MOVQ AX, 136(SP)
4243 ORQ R10, R11
4244 XORQ R14, R11
4245 MOVQ R11, 152(SP)
4246 ANDQ R10, R14
4247 XORQ R13, R14
4248 MOVQ R14, 144(SP)
4249 XORQ R11, R15
4250
4251 // Result s
4252 MOVQ 16(DI), R10
4253 MOVQ 64(DI), R11
4254 MOVQ 112(DI), R12
4255 XORQ DX, R10
4256 MOVQ 120(DI), R13
4257 ROLQ $0x3e, R10
4258 XORQ R8, R11
4259 MOVQ 168(DI), R14
4260 ROLQ $0x37, R11
4261 XORQ R9, R12
4262 MOVQ R10, R9
4263 XORQ CX, R14
4264 ROLQ $0x02, R14
4265 ANDQ R11, R9
4266 XORQ R14, R9
4267 MOVQ R9, 192(SP)
4268 ROLQ $0x27, R12
4269 XORQ R9, R15
4270 NOTQ R11
4271 XORQ BX, R13
4272 MOVQ R11, BX
4273 ANDQ R12, BX
4274 XORQ R10, BX
4275 MOVQ BX, 160(SP)
4276 XORQ BX, SI
4277 ROLQ $0x29, R13
4278 MOVQ R12, CX
4279 ORQ R13, CX
4280 XORQ R11, CX
4281 MOVQ CX, 168(SP)
4282 XORQ CX, BP
4283 MOVQ R13, DX
4284 MOVQ R14, R8
4285 ANDQ R14, DX
4286 ORQ R10, R8
4287 XORQ R12, DX
4288 XORQ R13, R8
4289 MOVQ DX, 176(SP)
4290 MOVQ R8, 184(SP)
4291
4292 // Prepare round
4293 MOVQ BP, BX
4294 ROLQ $0x01, BX
4295 MOVQ 16(SP), R12
4296 XORQ 56(SP), DX
4297 XORQ R15, BX
4298 XORQ 96(SP), R12
4299 XORQ 136(SP), DX
4300 XORQ DX, R12
4301 MOVQ R12, CX
4302 ROLQ $0x01, CX
4303 MOVQ 24(SP), R13
4304 XORQ 64(SP), R8
4305 XORQ SI, CX
4306 XORQ 104(SP), R13
4307 XORQ 144(SP), R8
4308 XORQ R8, R13
4309 MOVQ R13, DX
4310 ROLQ $0x01, DX
4311 MOVQ R15, R8
4312 XORQ BP, DX
4313 ROLQ $0x01, R8
4314 MOVQ SI, R9
4315 XORQ R12, R8
4316 ROLQ $0x01, R9
4317
4318 // Result b
4319 MOVQ (SP), R10
4320 MOVQ 48(SP), R11
4321 XORQ R13, R9
4322 MOVQ 96(SP), R12
4323 MOVQ 144(SP), R13
4324 MOVQ 192(SP), R14
4325 XORQ CX, R11
4326 ROLQ $0x2c, R11
4327 XORQ DX, R12
4328 XORQ BX, R10
4329 ROLQ $0x2b, R12
4330 MOVQ R11, SI
4331 MOVQ $0x800000008000000a, AX
4332 ORQ R12, SI
4333 XORQ R10, AX
4334 XORQ AX, SI
4335 MOVQ SI, (DI)
4336 XORQ R9, R14
4337 ROLQ $0x0e, R14
4338 MOVQ R10, R15
4339 ANDQ R11, R15
4340 XORQ R14, R15
4341 MOVQ R15, 32(DI)
4342 XORQ R8, R13
4343 ROLQ $0x15, R13
4344 MOVQ R13, AX
4345 ANDQ R14, AX
4346 XORQ R12, AX
4347 MOVQ AX, 16(DI)
4348 NOTQ R12
4349 ORQ R10, R14
4350 ORQ R13, R12
4351 XORQ R13, R14
4352 XORQ R11, R12
4353 MOVQ R14, 24(DI)
4354 MOVQ R12, 8(DI)
4355 MOVQ R12, BP
4356
4357 // Result g
4358 MOVQ 72(SP), R11
4359 XORQ R9, R11
4360 MOVQ 80(SP), R12
4361 ROLQ $0x14, R11
4362 XORQ BX, R12
4363 ROLQ $0x03, R12
4364 MOVQ 24(SP), R10
4365 MOVQ R11, AX
4366 ORQ R12, AX
4367 XORQ R8, R10
4368 MOVQ 128(SP), R13
4369 MOVQ 176(SP), R14
4370 ROLQ $0x1c, R10
4371 XORQ R10, AX
4372 MOVQ AX, 40(DI)
4373 XORQ AX, SI
4374 XORQ CX, R13
4375 ROLQ $0x2d, R13
4376 MOVQ R12, AX
4377 ANDQ R13, AX
4378 XORQ R11, AX
4379 MOVQ AX, 48(DI)
4380 XORQ AX, BP
4381 XORQ DX, R14
4382 ROLQ $0x3d, R14
4383 MOVQ R14, AX
4384 ORQ R10, AX
4385 XORQ R13, AX
4386 MOVQ AX, 64(DI)
4387 ANDQ R11, R10
4388 XORQ R14, R10
4389 MOVQ R10, 72(DI)
4390 NOTQ R14
4391 XORQ R10, R15
4392 ORQ R14, R13
4393 XORQ R12, R13
4394 MOVQ R13, 56(DI)
4395
4396 // Result k
4397 MOVQ 8(SP), R10
4398 MOVQ 56(SP), R11
4399 MOVQ 104(SP), R12
4400 MOVQ 152(SP), R13
4401 MOVQ 160(SP), R14
4402 XORQ DX, R11
4403 ROLQ $0x06, R11
4404 XORQ R8, R12
4405 ROLQ $0x19, R12
4406 MOVQ R11, AX
4407 ORQ R12, AX
4408 XORQ CX, R10
4409 ROLQ $0x01, R10
4410 XORQ R10, AX
4411 MOVQ AX, 80(DI)
4412 XORQ AX, SI
4413 XORQ R9, R13
4414 ROLQ $0x08, R13
4415 MOVQ R12, AX
4416 ANDQ R13, AX
4417 XORQ R11, AX
4418 MOVQ AX, 88(DI)
4419 XORQ AX, BP
4420 XORQ BX, R14
4421 ROLQ $0x12, R14
4422 NOTQ R13
4423 MOVQ R13, AX
4424 ANDQ R14, AX
4425 XORQ R12, AX
4426 MOVQ AX, 96(DI)
4427 MOVQ R14, AX
4428 ORQ R10, AX
4429 XORQ R13, AX
4430 MOVQ AX, 104(DI)
4431 ANDQ R11, R10
4432 XORQ R14, R10
4433 MOVQ R10, 112(DI)
4434 XORQ R10, R15
4435
4436 // Result m
4437 MOVQ 40(SP), R11
4438 XORQ BX, R11
4439 MOVQ 88(SP), R12
4440 ROLQ $0x24, R11
4441 XORQ CX, R12
4442 MOVQ 32(SP), R10
4443 ROLQ $0x0a, R12
4444 MOVQ R11, AX
4445 MOVQ 136(SP), R13
4446 ANDQ R12, AX
4447 XORQ R9, R10
4448 MOVQ 184(SP), R14
4449 ROLQ $0x1b, R10
4450 XORQ R10, AX
4451 MOVQ AX, 120(DI)
4452 XORQ AX, SI
4453 XORQ DX, R13
4454 ROLQ $0x0f, R13
4455 MOVQ R12, AX
4456 ORQ R13, AX
4457 XORQ R11, AX
4458 MOVQ AX, 128(DI)
4459 XORQ AX, BP
4460 XORQ R8, R14
4461 ROLQ $0x38, R14
4462 NOTQ R13
4463 MOVQ R13, AX
4464 ORQ R14, AX
4465 XORQ R12, AX
4466 MOVQ AX, 136(DI)
4467 ORQ R10, R11
4468 XORQ R14, R11
4469 MOVQ R11, 152(DI)
4470 ANDQ R10, R14
4471 XORQ R13, R14
4472 MOVQ R14, 144(DI)
4473 XORQ R11, R15
4474
4475 // Result s
4476 MOVQ 16(SP), R10
4477 MOVQ 64(SP), R11
4478 MOVQ 112(SP), R12
4479 XORQ DX, R10
4480 MOVQ 120(SP), R13
4481 ROLQ $0x3e, R10
4482 XORQ R8, R11
4483 MOVQ 168(SP), R14
4484 ROLQ $0x37, R11
4485 XORQ R9, R12
4486 MOVQ R10, R9
4487 XORQ CX, R14
4488 ROLQ $0x02, R14
4489 ANDQ R11, R9
4490 XORQ R14, R9
4491 MOVQ R9, 192(DI)
4492 ROLQ $0x27, R12
4493 XORQ R9, R15
4494 NOTQ R11
4495 XORQ BX, R13
4496 MOVQ R11, BX
4497 ANDQ R12, BX
4498 XORQ R10, BX
4499 MOVQ BX, 160(DI)
4500 XORQ BX, SI
4501 ROLQ $0x29, R13
4502 MOVQ R12, CX
4503 ORQ R13, CX
4504 XORQ R11, CX
4505 MOVQ CX, 168(DI)
4506 XORQ CX, BP
4507 MOVQ R13, DX
4508 MOVQ R14, R8
4509 ANDQ R14, DX
4510 ORQ R10, R8
4511 XORQ R12, DX
4512 XORQ R13, R8
4513 MOVQ DX, 176(DI)
4514 MOVQ R8, 184(DI)
4515
4516 // Prepare round
4517 MOVQ BP, BX
4518 ROLQ $0x01, BX
4519 MOVQ 16(DI), R12
4520 XORQ 56(DI), DX
4521 XORQ R15, BX
4522 XORQ 96(DI), R12
4523 XORQ 136(DI), DX
4524 XORQ DX, R12
4525 MOVQ R12, CX
4526 ROLQ $0x01, CX
4527 MOVQ 24(DI), R13
4528 XORQ 64(DI), R8
4529 XORQ SI, CX
4530 XORQ 104(DI), R13
4531 XORQ 144(DI), R8
4532 XORQ R8, R13
4533 MOVQ R13, DX
4534 ROLQ $0x01, DX
4535 MOVQ R15, R8
4536 XORQ BP, DX
4537 ROLQ $0x01, R8
4538 MOVQ SI, R9
4539 XORQ R12, R8
4540 ROLQ $0x01, R9
4541
4542 // Result b
4543 MOVQ (DI), R10
4544 MOVQ 48(DI), R11
4545 XORQ R13, R9
4546 MOVQ 96(DI), R12
4547 MOVQ 144(DI), R13
4548 MOVQ 192(DI), R14
4549 XORQ CX, R11
4550 ROLQ $0x2c, R11
4551 XORQ DX, R12
4552 XORQ BX, R10
4553 ROLQ $0x2b, R12
4554 MOVQ R11, SI
4555 MOVQ $0x8000000080008081, AX
4556 ORQ R12, SI
4557 XORQ R10, AX
4558 XORQ AX, SI
4559 MOVQ SI, (SP)
4560 XORQ R9, R14
4561 ROLQ $0x0e, R14
4562 MOVQ R10, R15
4563 ANDQ R11, R15
4564 XORQ R14, R15
4565 MOVQ R15, 32(SP)
4566 XORQ R8, R13
4567 ROLQ $0x15, R13
4568 MOVQ R13, AX
4569 ANDQ R14, AX
4570 XORQ R12, AX
4571 MOVQ AX, 16(SP)
4572 NOTQ R12
4573 ORQ R10, R14
4574 ORQ R13, R12
4575 XORQ R13, R14
4576 XORQ R11, R12
4577 MOVQ R14, 24(SP)
4578 MOVQ R12, 8(SP)
4579 MOVQ R12, BP
4580
4581 // Result g
4582 MOVQ 72(DI), R11
4583 XORQ R9, R11
4584 MOVQ 80(DI), R12
4585 ROLQ $0x14, R11
4586 XORQ BX, R12
4587 ROLQ $0x03, R12
4588 MOVQ 24(DI), R10
4589 MOVQ R11, AX
4590 ORQ R12, AX
4591 XORQ R8, R10
4592 MOVQ 128(DI), R13
4593 MOVQ 176(DI), R14
4594 ROLQ $0x1c, R10
4595 XORQ R10, AX
4596 MOVQ AX, 40(SP)
4597 XORQ AX, SI
4598 XORQ CX, R13
4599 ROLQ $0x2d, R13
4600 MOVQ R12, AX
4601 ANDQ R13, AX
4602 XORQ R11, AX
4603 MOVQ AX, 48(SP)
4604 XORQ AX, BP
4605 XORQ DX, R14
4606 ROLQ $0x3d, R14
4607 MOVQ R14, AX
4608 ORQ R10, AX
4609 XORQ R13, AX
4610 MOVQ AX, 64(SP)
4611 ANDQ R11, R10
4612 XORQ R14, R10
4613 MOVQ R10, 72(SP)
4614 NOTQ R14
4615 XORQ R10, R15
4616 ORQ R14, R13
4617 XORQ R12, R13
4618 MOVQ R13, 56(SP)
4619
4620 // Result k
4621 MOVQ 8(DI), R10
4622 MOVQ 56(DI), R11
4623 MOVQ 104(DI), R12
4624 MOVQ 152(DI), R13
4625 MOVQ 160(DI), R14
4626 XORQ DX, R11
4627 ROLQ $0x06, R11
4628 XORQ R8, R12
4629 ROLQ $0x19, R12
4630 MOVQ R11, AX
4631 ORQ R12, AX
4632 XORQ CX, R10
4633 ROLQ $0x01, R10
4634 XORQ R10, AX
4635 MOVQ AX, 80(SP)
4636 XORQ AX, SI
4637 XORQ R9, R13
4638 ROLQ $0x08, R13
4639 MOVQ R12, AX
4640 ANDQ R13, AX
4641 XORQ R11, AX
4642 MOVQ AX, 88(SP)
4643 XORQ AX, BP
4644 XORQ BX, R14
4645 ROLQ $0x12, R14
4646 NOTQ R13
4647 MOVQ R13, AX
4648 ANDQ R14, AX
4649 XORQ R12, AX
4650 MOVQ AX, 96(SP)
4651 MOVQ R14, AX
4652 ORQ R10, AX
4653 XORQ R13, AX
4654 MOVQ AX, 104(SP)
4655 ANDQ R11, R10
4656 XORQ R14, R10
4657 MOVQ R10, 112(SP)
4658 XORQ R10, R15
4659
4660 // Result m
4661 MOVQ 40(DI), R11
4662 XORQ BX, R11
4663 MOVQ 88(DI), R12
4664 ROLQ $0x24, R11
4665 XORQ CX, R12
4666 MOVQ 32(DI), R10
4667 ROLQ $0x0a, R12
4668 MOVQ R11, AX
4669 MOVQ 136(DI), R13
4670 ANDQ R12, AX
4671 XORQ R9, R10
4672 MOVQ 184(DI), R14
4673 ROLQ $0x1b, R10
4674 XORQ R10, AX
4675 MOVQ AX, 120(SP)
4676 XORQ AX, SI
4677 XORQ DX, R13
4678 ROLQ $0x0f, R13
4679 MOVQ R12, AX
4680 ORQ R13, AX
4681 XORQ R11, AX
4682 MOVQ AX, 128(SP)
4683 XORQ AX, BP
4684 XORQ R8, R14
4685 ROLQ $0x38, R14
4686 NOTQ R13
4687 MOVQ R13, AX
4688 ORQ R14, AX
4689 XORQ R12, AX
4690 MOVQ AX, 136(SP)
4691 ORQ R10, R11
4692 XORQ R14, R11
4693 MOVQ R11, 152(SP)
4694 ANDQ R10, R14
4695 XORQ R13, R14
4696 MOVQ R14, 144(SP)
4697 XORQ R11, R15
4698
4699 // Result s
4700 MOVQ 16(DI), R10
4701 MOVQ 64(DI), R11
4702 MOVQ 112(DI), R12
4703 XORQ DX, R10
4704 MOVQ 120(DI), R13
4705 ROLQ $0x3e, R10
4706 XORQ R8, R11
4707 MOVQ 168(DI), R14
4708 ROLQ $0x37, R11
4709 XORQ R9, R12
4710 MOVQ R10, R9
4711 XORQ CX, R14
4712 ROLQ $0x02, R14
4713 ANDQ R11, R9
4714 XORQ R14, R9
4715 MOVQ R9, 192(SP)
4716 ROLQ $0x27, R12
4717 XORQ R9, R15
4718 NOTQ R11
4719 XORQ BX, R13
4720 MOVQ R11, BX
4721 ANDQ R12, BX
4722 XORQ R10, BX
4723 MOVQ BX, 160(SP)
4724 XORQ BX, SI
4725 ROLQ $0x29, R13
4726 MOVQ R12, CX
4727 ORQ R13, CX
4728 XORQ R11, CX
4729 MOVQ CX, 168(SP)
4730 XORQ CX, BP
4731 MOVQ R13, DX
4732 MOVQ R14, R8
4733 ANDQ R14, DX
4734 ORQ R10, R8
4735 XORQ R12, DX
4736 XORQ R13, R8
4737 MOVQ DX, 176(SP)
4738 MOVQ R8, 184(SP)
4739
4740 // Prepare round
4741 MOVQ BP, BX
4742 ROLQ $0x01, BX
4743 MOVQ 16(SP), R12
4744 XORQ 56(SP), DX
4745 XORQ R15, BX
4746 XORQ 96(SP), R12
4747 XORQ 136(SP), DX
4748 XORQ DX, R12
4749 MOVQ R12, CX
4750 ROLQ $0x01, CX
4751 MOVQ 24(SP), R13
4752 XORQ 64(SP), R8
4753 XORQ SI, CX
4754 XORQ 104(SP), R13
4755 XORQ 144(SP), R8
4756 XORQ R8, R13
4757 MOVQ R13, DX
4758 ROLQ $0x01, DX
4759 MOVQ R15, R8
4760 XORQ BP, DX
4761 ROLQ $0x01, R8
4762 MOVQ SI, R9
4763 XORQ R12, R8
4764 ROLQ $0x01, R9
4765
4766 // Result b
4767 MOVQ (SP), R10
4768 MOVQ 48(SP), R11
4769 XORQ R13, R9
4770 MOVQ 96(SP), R12
4771 MOVQ 144(SP), R13
4772 MOVQ 192(SP), R14
4773 XORQ CX, R11
4774 ROLQ $0x2c, R11
4775 XORQ DX, R12
4776 XORQ BX, R10
4777 ROLQ $0x2b, R12
4778 MOVQ R11, SI
4779 MOVQ $0x8000000000008080, AX
4780 ORQ R12, SI
4781 XORQ R10, AX
4782 XORQ AX, SI
4783 MOVQ SI, (DI)
4784 XORQ R9, R14
4785 ROLQ $0x0e, R14
4786 MOVQ R10, R15
4787 ANDQ R11, R15
4788 XORQ R14, R15
4789 MOVQ R15, 32(DI)
4790 XORQ R8, R13
4791 ROLQ $0x15, R13
4792 MOVQ R13, AX
4793 ANDQ R14, AX
4794 XORQ R12, AX
4795 MOVQ AX, 16(DI)
4796 NOTQ R12
4797 ORQ R10, R14
4798 ORQ R13, R12
4799 XORQ R13, R14
4800 XORQ R11, R12
4801 MOVQ R14, 24(DI)
4802 MOVQ R12, 8(DI)
4803 MOVQ R12, BP
4804
4805 // Result g
4806 MOVQ 72(SP), R11
4807 XORQ R9, R11
4808 MOVQ 80(SP), R12
4809 ROLQ $0x14, R11
4810 XORQ BX, R12
4811 ROLQ $0x03, R12
4812 MOVQ 24(SP), R10
4813 MOVQ R11, AX
4814 ORQ R12, AX
4815 XORQ R8, R10
4816 MOVQ 128(SP), R13
4817 MOVQ 176(SP), R14
4818 ROLQ $0x1c, R10
4819 XORQ R10, AX
4820 MOVQ AX, 40(DI)
4821 XORQ AX, SI
4822 XORQ CX, R13
4823 ROLQ $0x2d, R13
4824 MOVQ R12, AX
4825 ANDQ R13, AX
4826 XORQ R11, AX
4827 MOVQ AX, 48(DI)
4828 XORQ AX, BP
4829 XORQ DX, R14
4830 ROLQ $0x3d, R14
4831 MOVQ R14, AX
4832 ORQ R10, AX
4833 XORQ R13, AX
4834 MOVQ AX, 64(DI)
4835 ANDQ R11, R10
4836 XORQ R14, R10
4837 MOVQ R10, 72(DI)
4838 NOTQ R14
4839 XORQ R10, R15
4840 ORQ R14, R13
4841 XORQ R12, R13
4842 MOVQ R13, 56(DI)
4843
4844 // Result k
4845 MOVQ 8(SP), R10
4846 MOVQ 56(SP), R11
4847 MOVQ 104(SP), R12
4848 MOVQ 152(SP), R13
4849 MOVQ 160(SP), R14
4850 XORQ DX, R11
4851 ROLQ $0x06, R11
4852 XORQ R8, R12
4853 ROLQ $0x19, R12
4854 MOVQ R11, AX
4855 ORQ R12, AX
4856 XORQ CX, R10
4857 ROLQ $0x01, R10
4858 XORQ R10, AX
4859 MOVQ AX, 80(DI)
4860 XORQ AX, SI
4861 XORQ R9, R13
4862 ROLQ $0x08, R13
4863 MOVQ R12, AX
4864 ANDQ R13, AX
4865 XORQ R11, AX
4866 MOVQ AX, 88(DI)
4867 XORQ AX, BP
4868 XORQ BX, R14
4869 ROLQ $0x12, R14
4870 NOTQ R13
4871 MOVQ R13, AX
4872 ANDQ R14, AX
4873 XORQ R12, AX
4874 MOVQ AX, 96(DI)
4875 MOVQ R14, AX
4876 ORQ R10, AX
4877 XORQ R13, AX
4878 MOVQ AX, 104(DI)
4879 ANDQ R11, R10
4880 XORQ R14, R10
4881 MOVQ R10, 112(DI)
4882 XORQ R10, R15
4883
4884 // Result m
4885 MOVQ 40(SP), R11
4886 XORQ BX, R11
4887 MOVQ 88(SP), R12
4888 ROLQ $0x24, R11
4889 XORQ CX, R12
4890 MOVQ 32(SP), R10
4891 ROLQ $0x0a, R12
4892 MOVQ R11, AX
4893 MOVQ 136(SP), R13
4894 ANDQ R12, AX
4895 XORQ R9, R10
4896 MOVQ 184(SP), R14
4897 ROLQ $0x1b, R10
4898 XORQ R10, AX
4899 MOVQ AX, 120(DI)
4900 XORQ AX, SI
4901 XORQ DX, R13
4902 ROLQ $0x0f, R13
4903 MOVQ R12, AX
4904 ORQ R13, AX
4905 XORQ R11, AX
4906 MOVQ AX, 128(DI)
4907 XORQ AX, BP
4908 XORQ R8, R14
4909 ROLQ $0x38, R14
4910 NOTQ R13
4911 MOVQ R13, AX
4912 ORQ R14, AX
4913 XORQ R12, AX
4914 MOVQ AX, 136(DI)
4915 ORQ R10, R11
4916 XORQ R14, R11
4917 MOVQ R11, 152(DI)
4918 ANDQ R10, R14
4919 XORQ R13, R14
4920 MOVQ R14, 144(DI)
4921 XORQ R11, R15
4922
4923 // Result s
4924 MOVQ 16(SP), R10
4925 MOVQ 64(SP), R11
4926 MOVQ 112(SP), R12
4927 XORQ DX, R10
4928 MOVQ 120(SP), R13
4929 ROLQ $0x3e, R10
4930 XORQ R8, R11
4931 MOVQ 168(SP), R14
4932 ROLQ $0x37, R11
4933 XORQ R9, R12
4934 MOVQ R10, R9
4935 XORQ CX, R14
4936 ROLQ $0x02, R14
4937 ANDQ R11, R9
4938 XORQ R14, R9
4939 MOVQ R9, 192(DI)
4940 ROLQ $0x27, R12
4941 XORQ R9, R15
4942 NOTQ R11
4943 XORQ BX, R13
4944 MOVQ R11, BX
4945 ANDQ R12, BX
4946 XORQ R10, BX
4947 MOVQ BX, 160(DI)
4948 XORQ BX, SI
4949 ROLQ $0x29, R13
4950 MOVQ R12, CX
4951 ORQ R13, CX
4952 XORQ R11, CX
4953 MOVQ CX, 168(DI)
4954 XORQ CX, BP
4955 MOVQ R13, DX
4956 MOVQ R14, R8
4957 ANDQ R14, DX
4958 ORQ R10, R8
4959 XORQ R12, DX
4960 XORQ R13, R8
4961 MOVQ DX, 176(DI)
4962 MOVQ R8, 184(DI)
4963
4964 // Prepare round
4965 MOVQ BP, BX
4966 ROLQ $0x01, BX
4967 MOVQ 16(DI), R12
4968 XORQ 56(DI), DX
4969 XORQ R15, BX
4970 XORQ 96(DI), R12
4971 XORQ 136(DI), DX
4972 XORQ DX, R12
4973 MOVQ R12, CX
4974 ROLQ $0x01, CX
4975 MOVQ 24(DI), R13
4976 XORQ 64(DI), R8
4977 XORQ SI, CX
4978 XORQ 104(DI), R13
4979 XORQ 144(DI), R8
4980 XORQ R8, R13
4981 MOVQ R13, DX
4982 ROLQ $0x01, DX
4983 MOVQ R15, R8
4984 XORQ BP, DX
4985 ROLQ $0x01, R8
4986 MOVQ SI, R9
4987 XORQ R12, R8
4988 ROLQ $0x01, R9
4989
4990 // Result b
4991 MOVQ (DI), R10
4992 MOVQ 48(DI), R11
4993 XORQ R13, R9
4994 MOVQ 96(DI), R12
4995 MOVQ 144(DI), R13
4996 MOVQ 192(DI), R14
4997 XORQ CX, R11
4998 ROLQ $0x2c, R11
4999 XORQ DX, R12
5000 XORQ BX, R10
5001 ROLQ $0x2b, R12
5002 MOVQ R11, SI
5003 MOVQ $0x0000000080000001, AX
5004 ORQ R12, SI
5005 XORQ R10, AX
5006 XORQ AX, SI
5007 MOVQ SI, (SP)
5008 XORQ R9, R14
5009 ROLQ $0x0e, R14
5010 MOVQ R10, R15
5011 ANDQ R11, R15
5012 XORQ R14, R15
5013 MOVQ R15, 32(SP)
5014 XORQ R8, R13
5015 ROLQ $0x15, R13
5016 MOVQ R13, AX
5017 ANDQ R14, AX
5018 XORQ R12, AX
5019 MOVQ AX, 16(SP)
5020 NOTQ R12
5021 ORQ R10, R14
5022 ORQ R13, R12
5023 XORQ R13, R14
5024 XORQ R11, R12
5025 MOVQ R14, 24(SP)
5026 MOVQ R12, 8(SP)
5027 MOVQ R12, BP
5028
5029 // Result g
5030 MOVQ 72(DI), R11
5031 XORQ R9, R11
5032 MOVQ 80(DI), R12
5033 ROLQ $0x14, R11
5034 XORQ BX, R12
5035 ROLQ $0x03, R12
5036 MOVQ 24(DI), R10
5037 MOVQ R11, AX
5038 ORQ R12, AX
5039 XORQ R8, R10
5040 MOVQ 128(DI), R13
5041 MOVQ 176(DI), R14
5042 ROLQ $0x1c, R10
5043 XORQ R10, AX
5044 MOVQ AX, 40(SP)
5045 XORQ AX, SI
5046 XORQ CX, R13
5047 ROLQ $0x2d, R13
5048 MOVQ R12, AX
5049 ANDQ R13, AX
5050 XORQ R11, AX
5051 MOVQ AX, 48(SP)
5052 XORQ AX, BP
5053 XORQ DX, R14
5054 ROLQ $0x3d, R14
5055 MOVQ R14, AX
5056 ORQ R10, AX
5057 XORQ R13, AX
5058 MOVQ AX, 64(SP)
5059 ANDQ R11, R10
5060 XORQ R14, R10
5061 MOVQ R10, 72(SP)
5062 NOTQ R14
5063 XORQ R10, R15
5064 ORQ R14, R13
5065 XORQ R12, R13
5066 MOVQ R13, 56(SP)
5067
5068 // Result k
5069 MOVQ 8(DI), R10
5070 MOVQ 56(DI), R11
5071 MOVQ 104(DI), R12
5072 MOVQ 152(DI), R13
5073 MOVQ 160(DI), R14
5074 XORQ DX, R11
5075 ROLQ $0x06, R11
5076 XORQ R8, R12
5077 ROLQ $0x19, R12
5078 MOVQ R11, AX
5079 ORQ R12, AX
5080 XORQ CX, R10
5081 ROLQ $0x01, R10
5082 XORQ R10, AX
5083 MOVQ AX, 80(SP)
5084 XORQ AX, SI
5085 XORQ R9, R13
5086 ROLQ $0x08, R13
5087 MOVQ R12, AX
5088 ANDQ R13, AX
5089 XORQ R11, AX
5090 MOVQ AX, 88(SP)
5091 XORQ AX, BP
5092 XORQ BX, R14
5093 ROLQ $0x12, R14
5094 NOTQ R13
5095 MOVQ R13, AX
5096 ANDQ R14, AX
5097 XORQ R12, AX
5098 MOVQ AX, 96(SP)
5099 MOVQ R14, AX
5100 ORQ R10, AX
5101 XORQ R13, AX
5102 MOVQ AX, 104(SP)
5103 ANDQ R11, R10
5104 XORQ R14, R10
5105 MOVQ R10, 112(SP)
5106 XORQ R10, R15
5107
5108 // Result m
5109 MOVQ 40(DI), R11
5110 XORQ BX, R11
5111 MOVQ 88(DI), R12
5112 ROLQ $0x24, R11
5113 XORQ CX, R12
5114 MOVQ 32(DI), R10
5115 ROLQ $0x0a, R12
5116 MOVQ R11, AX
5117 MOVQ 136(DI), R13
5118 ANDQ R12, AX
5119 XORQ R9, R10
5120 MOVQ 184(DI), R14
5121 ROLQ $0x1b, R10
5122 XORQ R10, AX
5123 MOVQ AX, 120(SP)
5124 XORQ AX, SI
5125 XORQ DX, R13
5126 ROLQ $0x0f, R13
5127 MOVQ R12, AX
5128 ORQ R13, AX
5129 XORQ R11, AX
5130 MOVQ AX, 128(SP)
5131 XORQ AX, BP
5132 XORQ R8, R14
5133 ROLQ $0x38, R14
5134 NOTQ R13
5135 MOVQ R13, AX
5136 ORQ R14, AX
5137 XORQ R12, AX
5138 MOVQ AX, 136(SP)
5139 ORQ R10, R11
5140 XORQ R14, R11
5141 MOVQ R11, 152(SP)
5142 ANDQ R10, R14
5143 XORQ R13, R14
5144 MOVQ R14, 144(SP)
5145 XORQ R11, R15
5146
5147 // Result s
5148 MOVQ 16(DI), R10
5149 MOVQ 64(DI), R11
5150 MOVQ 112(DI), R12
5151 XORQ DX, R10
5152 MOVQ 120(DI), R13
5153 ROLQ $0x3e, R10
5154 XORQ R8, R11
5155 MOVQ 168(DI), R14
5156 ROLQ $0x37, R11
5157 XORQ R9, R12
5158 MOVQ R10, R9
5159 XORQ CX, R14
5160 ROLQ $0x02, R14
5161 ANDQ R11, R9
5162 XORQ R14, R9
5163 MOVQ R9, 192(SP)
5164 ROLQ $0x27, R12
5165 XORQ R9, R15
5166 NOTQ R11
5167 XORQ BX, R13
5168 MOVQ R11, BX
5169 ANDQ R12, BX
5170 XORQ R10, BX
5171 MOVQ BX, 160(SP)
5172 XORQ BX, SI
5173 ROLQ $0x29, R13
5174 MOVQ R12, CX
5175 ORQ R13, CX
5176 XORQ R11, CX
5177 MOVQ CX, 168(SP)
5178 XORQ CX, BP
5179 MOVQ R13, DX
5180 MOVQ R14, R8
5181 ANDQ R14, DX
5182 ORQ R10, R8
5183 XORQ R12, DX
5184 XORQ R13, R8
5185 MOVQ DX, 176(SP)
5186 MOVQ R8, 184(SP)
5187
5188 // Prepare round
5189 MOVQ BP, BX
5190 ROLQ $0x01, BX
5191 MOVQ 16(SP), R12
5192 XORQ 56(SP), DX
5193 XORQ R15, BX
5194 XORQ 96(SP), R12
5195 XORQ 136(SP), DX
5196 XORQ DX, R12
5197 MOVQ R12, CX
5198 ROLQ $0x01, CX
5199 MOVQ 24(SP), R13
5200 XORQ 64(SP), R8
5201 XORQ SI, CX
5202 XORQ 104(SP), R13
5203 XORQ 144(SP), R8
5204 XORQ R8, R13
5205 MOVQ R13, DX
5206 ROLQ $0x01, DX
5207 MOVQ R15, R8
5208 XORQ BP, DX
5209 ROLQ $0x01, R8
5210 MOVQ SI, R9
5211 XORQ R12, R8
5212 ROLQ $0x01, R9
5213
5214 // Result b
5215 MOVQ (SP), R10
5216 MOVQ 48(SP), R11
5217 XORQ R13, R9
5218 MOVQ 96(SP), R12
5219 MOVQ 144(SP), R13
5220 MOVQ 192(SP), R14
5221 XORQ CX, R11
5222 ROLQ $0x2c, R11
5223 XORQ DX, R12
5224 XORQ BX, R10
5225 ROLQ $0x2b, R12
5226 MOVQ R11, SI
5227 MOVQ $0x8000000080008008, AX
5228 ORQ R12, SI
5229 XORQ R10, AX
5230 XORQ AX, SI
5231 MOVQ SI, (DI)
5232 XORQ R9, R14
5233 ROLQ $0x0e, R14
5234 MOVQ R10, R15
5235 ANDQ R11, R15
5236 XORQ R14, R15
5237 MOVQ R15, 32(DI)
5238 XORQ R8, R13
5239 ROLQ $0x15, R13
5240 MOVQ R13, AX
5241 ANDQ R14, AX
5242 XORQ R12, AX
5243 MOVQ AX, 16(DI)
5244 NOTQ R12
5245 ORQ R10, R14
5246 ORQ R13, R12
5247 XORQ R13, R14
5248 XORQ R11, R12
5249 MOVQ R14, 24(DI)
5250 MOVQ R12, 8(DI)
5251 NOP
5252
5253 // Result g
5254 MOVQ 72(SP), R11
5255 XORQ R9, R11
5256 MOVQ 80(SP), R12
5257 ROLQ $0x14, R11
5258 XORQ BX, R12
5259 ROLQ $0x03, R12
5260 MOVQ 24(SP), R10
5261 MOVQ R11, AX
5262 ORQ R12, AX
5263 XORQ R8, R10
5264 MOVQ 128(SP), R13
5265 MOVQ 176(SP), R14
5266 ROLQ $0x1c, R10
5267 XORQ R10, AX
5268 MOVQ AX, 40(DI)
5269 NOP
5270 XORQ CX, R13
5271 ROLQ $0x2d, R13
5272 MOVQ R12, AX
5273 ANDQ R13, AX
5274 XORQ R11, AX
5275 MOVQ AX, 48(DI)
5276 NOP
5277 XORQ DX, R14
5278 ROLQ $0x3d, R14
5279 MOVQ R14, AX
5280 ORQ R10, AX
5281 XORQ R13, AX
5282 MOVQ AX, 64(DI)
5283 ANDQ R11, R10
5284 XORQ R14, R10
5285 MOVQ R10, 72(DI)
5286 NOTQ R14
5287 NOP
5288 ORQ R14, R13
5289 XORQ R12, R13
5290 MOVQ R13, 56(DI)
5291
5292 // Result k
5293 MOVQ 8(SP), R10
5294 MOVQ 56(SP), R11
5295 MOVQ 104(SP), R12
5296 MOVQ 152(SP), R13
5297 MOVQ 160(SP), R14
5298 XORQ DX, R11
5299 ROLQ $0x06, R11
5300 XORQ R8, R12
5301 ROLQ $0x19, R12
5302 MOVQ R11, AX
5303 ORQ R12, AX
5304 XORQ CX, R10
5305 ROLQ $0x01, R10
5306 XORQ R10, AX
5307 MOVQ AX, 80(DI)
5308 NOP
5309 XORQ R9, R13
5310 ROLQ $0x08, R13
5311 MOVQ R12, AX
5312 ANDQ R13, AX
5313 XORQ R11, AX
5314 MOVQ AX, 88(DI)
5315 NOP
5316 XORQ BX, R14
5317 ROLQ $0x12, R14
5318 NOTQ R13
5319 MOVQ R13, AX
5320 ANDQ R14, AX
5321 XORQ R12, AX
5322 MOVQ AX, 96(DI)
5323 MOVQ R14, AX
5324 ORQ R10, AX
5325 XORQ R13, AX
5326 MOVQ AX, 104(DI)
5327 ANDQ R11, R10
5328 XORQ R14, R10
5329 MOVQ R10, 112(DI)
5330 NOP
5331
5332 // Result m
5333 MOVQ 40(SP), R11
5334 XORQ BX, R11
5335 MOVQ 88(SP), R12
5336 ROLQ $0x24, R11
5337 XORQ CX, R12
5338 MOVQ 32(SP), R10
5339 ROLQ $0x0a, R12
5340 MOVQ R11, AX
5341 MOVQ 136(SP), R13
5342 ANDQ R12, AX
5343 XORQ R9, R10
5344 MOVQ 184(SP), R14
5345 ROLQ $0x1b, R10
5346 XORQ R10, AX
5347 MOVQ AX, 120(DI)
5348 NOP
5349 XORQ DX, R13
5350 ROLQ $0x0f, R13
5351 MOVQ R12, AX
5352 ORQ R13, AX
5353 XORQ R11, AX
5354 MOVQ AX, 128(DI)
5355 NOP
5356 XORQ R8, R14
5357 ROLQ $0x38, R14
5358 NOTQ R13
5359 MOVQ R13, AX
5360 ORQ R14, AX
5361 XORQ R12, AX
5362 MOVQ AX, 136(DI)
5363 ORQ R10, R11
5364 XORQ R14, R11
5365 MOVQ R11, 152(DI)
5366 ANDQ R10, R14
5367 XORQ R13, R14
5368 MOVQ R14, 144(DI)
5369 NOP
5370
5371 // Result s
5372 MOVQ 16(SP), R10
5373 MOVQ 64(SP), R11
5374 MOVQ 112(SP), R12
5375 XORQ DX, R10
5376 MOVQ 120(SP), R13
5377 ROLQ $0x3e, R10
5378 XORQ R8, R11
5379 MOVQ 168(SP), R14
5380 ROLQ $0x37, R11
5381 XORQ R9, R12
5382 MOVQ R10, R9
5383 XORQ CX, R14
5384 ROLQ $0x02, R14
5385 ANDQ R11, R9
5386 XORQ R14, R9
5387 MOVQ R9, 192(DI)
5388 ROLQ $0x27, R12
5389 NOP
5390 NOTQ R11
5391 XORQ BX, R13
5392 MOVQ R11, BX
5393 ANDQ R12, BX
5394 XORQ R10, BX
5395 MOVQ BX, 160(DI)
5396 NOP
5397 ROLQ $0x29, R13
5398 MOVQ R12, CX
5399 ORQ R13, CX
5400 XORQ R11, CX
5401 MOVQ CX, 168(DI)
5402 NOP
5403 MOVQ R13, DX
5404 MOVQ R14, R8
5405 ANDQ R14, DX
5406 ORQ R10, R8
5407 XORQ R12, DX
5408 XORQ R13, R8
5409 MOVQ DX, 176(DI)
5410 MOVQ R8, 184(DI)
5411
5412 // Revert the internal state to the user state
5413 NOTQ 8(DI)
5414 NOTQ 16(DI)
5415 NOTQ 64(DI)
5416 NOTQ 96(DI)
5417 NOTQ 136(DI)
5418 NOTQ 160(DI)
5419 RET
5420
View as plain text