2 /* Do not modify. This file is auto-generated from chacha-x86_64.pl. */
21 .byte 0x2,0x3,0x0,0x1, 0x6,0x7,0x4,0x5, 0xa,0xb,0x8,0x9, 0xe,0xf,0xc,0xd
23 .byte 0x3,0x0,0x1,0x2, 0x7,0x4,0x5,0x6, 0xb,0x8,0x9,0xa, 0xf,0xc,0xd,0xe
25 .long 2,0,0,0, 2,0,0,0
28 .long 0,0,0,0, 1,0,0,0, 2,0,0,0, 3,0,0,0
30 .long 4,0,0,0, 4,0,0,0, 4,0,0,0, 4,0,0,0
32 .long 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
34 .long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
36 .byte 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107,0
37 .byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
39 .type ChaCha20_ctr32,@function
45 movq OPENSSL_ia32cap_P+4(%rip),%r10
50 .cfi_adjust_cfa_offset 8
53 .cfi_adjust_cfa_offset 8
56 .cfi_adjust_cfa_offset 8
59 .cfi_adjust_cfa_offset 8
62 .cfi_adjust_cfa_offset 8
65 .cfi_adjust_cfa_offset 8
68 .cfi_adjust_cfa_offset 64+24
75 movdqa .Lone(%rip),%xmm4
102 .byte 102,72,15,126,214
103 movq %rdi,64+16(%rsp)
222 movq 64+16(%rsp),%rdi
224 addl $0x61707865,%eax
225 addl $0x3320646e,%ebx
226 addl $0x79622d32,%ecx
227 addl $0x6b206574,%edx
249 movdqu 32(%rsi),%xmm0
257 movdqa %xmm2,32(%rsp)
268 movdqu %xmm0,32(%rdi)
291 movdqa %xmm1,32(%rsp)
298 movzbl (%rsi,%rbx,1),%eax
299 movzbl (%rsp,%rbx,1),%edx
302 movb %al,-1(%rdi,%rbx,1)
307 leaq 64+24+48(%rsp),%rsi
322 .cfi_def_cfa_register %rsp
326 .size ChaCha20_ctr32,.-ChaCha20_ctr32
327 .type ChaCha20_ssse3,@function
333 .cfi_def_cfa_register %r9
342 movdqa .Lsigma(%rip),%xmm0
344 movdqu 16(%rcx),%xmm2
346 movdqa .Lrot16(%rip),%xmm6
347 movdqa .Lrot24(%rip),%xmm7
350 movdqa %xmm1,16(%rsp)
351 movdqa %xmm2,32(%rsp)
352 movdqa %xmm3,48(%rsp)
358 movdqa .Lone(%rip),%xmm3
360 movdqa 16(%rsp),%xmm1
361 movdqa 32(%rsp),%xmm2
364 movdqa %xmm3,48(%rsp)
371 .byte 102,15,56,0,222
380 .byte 102,15,56,0,223
387 pshufd $78,%xmm2,%xmm2
388 pshufd $57,%xmm1,%xmm1
389 pshufd $147,%xmm3,%xmm3
393 .byte 102,15,56,0,222
402 .byte 102,15,56,0,223
409 pshufd $78,%xmm2,%xmm2
410 pshufd $147,%xmm1,%xmm1
411 pshufd $57,%xmm3,%xmm3
423 movdqu 16(%rsi),%xmm5
425 movdqu 32(%rsi),%xmm4
427 movdqu 48(%rsi),%xmm5
433 movdqu %xmm1,16(%rdi)
434 movdqu %xmm2,32(%rdi)
435 movdqu %xmm3,48(%rdi)
439 jnz .Loop_outer_ssse3
446 movdqa %xmm1,16(%rsp)
447 movdqa %xmm2,32(%rsp)
448 movdqa %xmm3,48(%rsp)
452 movzbl (%rsi,%r8,1),%eax
453 movzbl (%rsp,%r8,1),%ecx
456 movb %al,-1(%rdi,%r8,1)
462 .cfi_def_cfa_register %rsp
466 .size ChaCha20_ssse3,.-ChaCha20_ssse3
467 .type ChaCha20_128,@function
473 .cfi_def_cfa_register %r9
475 movdqa .Lsigma(%rip),%xmm8
477 movdqu 16(%rcx),%xmm2
479 movdqa .Lone(%rip),%xmm1
480 movdqa .Lrot16(%rip),%xmm6
481 movdqa .Lrot24(%rip),%xmm7
486 movdqa %xmm9,16(%rsp)
488 movdqa %xmm2,32(%rsp)
490 movdqa %xmm3,48(%rsp)
500 .byte 102,15,56,0,222
501 .byte 102,15,56,0,206
518 .byte 102,15,56,0,223
519 .byte 102,15,56,0,207
532 pshufd $78,%xmm2,%xmm2
533 pshufd $57,%xmm9,%xmm9
534 pshufd $147,%xmm3,%xmm3
535 pshufd $78,%xmm0,%xmm0
536 pshufd $57,%xmm11,%xmm11
537 pshufd $147,%xmm1,%xmm1
542 .byte 102,15,56,0,222
543 .byte 102,15,56,0,206
560 .byte 102,15,56,0,223
561 .byte 102,15,56,0,207
574 pshufd $78,%xmm2,%xmm2
575 pshufd $147,%xmm9,%xmm9
576 pshufd $57,%xmm3,%xmm3
577 pshufd $78,%xmm0,%xmm0
578 pshufd $147,%xmm11,%xmm11
579 pshufd $57,%xmm1,%xmm1
586 paddd .Lone(%rip),%xmm1
588 paddd 16(%rsp),%xmm11
593 movdqu 16(%rsi),%xmm5
595 movdqu 32(%rsi),%xmm4
597 movdqu 48(%rsi),%xmm5
599 movdqu 64(%rsi),%xmm4
601 movdqu 80(%rsi),%xmm5
603 movdqu 96(%rsi),%xmm4
605 movdqu 112(%rsi),%xmm5
610 movdqu %xmm9,16(%rdi)
611 movdqu %xmm2,32(%rdi)
612 movdqu %xmm3,48(%rdi)
613 movdqu %xmm10,64(%rdi)
614 movdqu %xmm11,80(%rdi)
615 movdqu %xmm0,96(%rdi)
616 movdqu %xmm1,112(%rdi)
618 .cfi_def_cfa_register %rsp
622 .size ChaCha20_128,.-ChaCha20_128
623 .type ChaCha20_4x,@function
629 .cfi_def_cfa_register %r9
639 je .Ldo_sse3_after_all
643 movdqa .Lsigma(%rip),%xmm11
645 movdqu 16(%rcx),%xmm7
648 leaq .Lrot16(%rip),%r10
649 leaq .Lrot24(%rip),%r11
651 pshufd $0x00,%xmm11,%xmm8
652 pshufd $0x55,%xmm11,%xmm9
653 movdqa %xmm8,64(%rsp)
654 pshufd $0xaa,%xmm11,%xmm10
655 movdqa %xmm9,80(%rsp)
656 pshufd $0xff,%xmm11,%xmm11
657 movdqa %xmm10,96(%rsp)
658 movdqa %xmm11,112(%rsp)
660 pshufd $0x00,%xmm15,%xmm12
661 pshufd $0x55,%xmm15,%xmm13
662 movdqa %xmm12,128-256(%rcx)
663 pshufd $0xaa,%xmm15,%xmm14
664 movdqa %xmm13,144-256(%rcx)
665 pshufd $0xff,%xmm15,%xmm15
666 movdqa %xmm14,160-256(%rcx)
667 movdqa %xmm15,176-256(%rcx)
669 pshufd $0x00,%xmm7,%xmm4
670 pshufd $0x55,%xmm7,%xmm5
671 movdqa %xmm4,192-256(%rcx)
672 pshufd $0xaa,%xmm7,%xmm6
673 movdqa %xmm5,208-256(%rcx)
674 pshufd $0xff,%xmm7,%xmm7
675 movdqa %xmm6,224-256(%rcx)
676 movdqa %xmm7,240-256(%rcx)
678 pshufd $0x00,%xmm3,%xmm0
679 pshufd $0x55,%xmm3,%xmm1
680 paddd .Linc(%rip),%xmm0
681 pshufd $0xaa,%xmm3,%xmm2
682 movdqa %xmm1,272-256(%rcx)
683 pshufd $0xff,%xmm3,%xmm3
684 movdqa %xmm2,288-256(%rcx)
685 movdqa %xmm3,304-256(%rcx)
691 movdqa 64(%rsp),%xmm8
692 movdqa 80(%rsp),%xmm9
693 movdqa 96(%rsp),%xmm10
694 movdqa 112(%rsp),%xmm11
695 movdqa 128-256(%rcx),%xmm12
696 movdqa 144-256(%rcx),%xmm13
697 movdqa 160-256(%rcx),%xmm14
698 movdqa 176-256(%rcx),%xmm15
699 movdqa 192-256(%rcx),%xmm4
700 movdqa 208-256(%rcx),%xmm5
701 movdqa 224-256(%rcx),%xmm6
702 movdqa 240-256(%rcx),%xmm7
703 movdqa 256-256(%rcx),%xmm0
704 movdqa 272-256(%rcx),%xmm1
705 movdqa 288-256(%rcx),%xmm2
706 movdqa 304-256(%rcx),%xmm3
707 paddd .Lfour(%rip),%xmm0
710 movdqa %xmm6,32(%rsp)
711 movdqa %xmm7,48(%rsp)
714 movdqa %xmm0,256-256(%rcx)
723 .byte 102,15,56,0,199
724 .byte 102,15,56,0,207
742 .byte 102,15,56,0,198
743 .byte 102,15,56,0,206
758 movdqa %xmm5,16(%rsp)
759 movdqa 32(%rsp),%xmm4
760 movdqa 48(%rsp),%xmm5
765 .byte 102,15,56,0,215
766 .byte 102,15,56,0,223
784 .byte 102,15,56,0,214
785 .byte 102,15,56,0,222
803 .byte 102,15,56,0,223
804 .byte 102,15,56,0,199
822 .byte 102,15,56,0,222
823 .byte 102,15,56,0,198
837 movdqa %xmm4,32(%rsp)
838 movdqa %xmm5,48(%rsp)
840 movdqa 16(%rsp),%xmm5
845 .byte 102,15,56,0,207
846 .byte 102,15,56,0,215
864 .byte 102,15,56,0,206
865 .byte 102,15,56,0,214
884 paddd 96(%rsp),%xmm10
885 paddd 112(%rsp),%xmm11
888 punpckldq %xmm9,%xmm8
890 punpckldq %xmm11,%xmm10
891 punpckhdq %xmm9,%xmm6
892 punpckhdq %xmm11,%xmm7
894 punpcklqdq %xmm10,%xmm8
896 punpcklqdq %xmm7,%xmm6
897 punpckhqdq %xmm10,%xmm9
898 punpckhqdq %xmm7,%xmm11
899 paddd 128-256(%rcx),%xmm12
900 paddd 144-256(%rcx),%xmm13
901 paddd 160-256(%rcx),%xmm14
902 paddd 176-256(%rcx),%xmm15
905 movdqa %xmm9,16(%rsp)
906 movdqa 32(%rsp),%xmm8
907 movdqa 48(%rsp),%xmm9
910 punpckldq %xmm13,%xmm12
912 punpckldq %xmm15,%xmm14
913 punpckhdq %xmm13,%xmm10
914 punpckhdq %xmm15,%xmm7
916 punpcklqdq %xmm14,%xmm12
918 punpcklqdq %xmm7,%xmm10
919 punpckhqdq %xmm14,%xmm13
920 punpckhqdq %xmm7,%xmm15
921 paddd 192-256(%rcx),%xmm4
922 paddd 208-256(%rcx),%xmm5
923 paddd 224-256(%rcx),%xmm8
924 paddd 240-256(%rcx),%xmm9
926 movdqa %xmm6,32(%rsp)
927 movdqa %xmm11,48(%rsp)
930 punpckldq %xmm5,%xmm4
932 punpckldq %xmm9,%xmm8
933 punpckhdq %xmm5,%xmm14
934 punpckhdq %xmm9,%xmm7
936 punpcklqdq %xmm8,%xmm4
938 punpcklqdq %xmm7,%xmm14
939 punpckhqdq %xmm8,%xmm5
940 punpckhqdq %xmm7,%xmm9
941 paddd 256-256(%rcx),%xmm0
942 paddd 272-256(%rcx),%xmm1
943 paddd 288-256(%rcx),%xmm2
944 paddd 304-256(%rcx),%xmm3
947 punpckldq %xmm1,%xmm0
949 punpckldq %xmm3,%xmm2
950 punpckhdq %xmm1,%xmm8
951 punpckhdq %xmm3,%xmm7
953 punpcklqdq %xmm2,%xmm0
955 punpcklqdq %xmm7,%xmm8
956 punpckhqdq %xmm2,%xmm1
957 punpckhqdq %xmm7,%xmm3
962 movdqu 16(%rsi),%xmm11
963 movdqu 32(%rsi),%xmm2
964 movdqu 48(%rsi),%xmm7
971 movdqu 64(%rsi),%xmm6
972 movdqu %xmm11,16(%rdi)
973 movdqu 80(%rsi),%xmm11
974 movdqu %xmm2,32(%rdi)
975 movdqu 96(%rsi),%xmm2
976 movdqu %xmm7,48(%rdi)
977 movdqu 112(%rsi),%xmm7
984 movdqu %xmm6,64(%rdi)
986 movdqu %xmm11,80(%rdi)
987 movdqu 16(%rsi),%xmm11
988 movdqu %xmm2,96(%rdi)
989 movdqu 32(%rsi),%xmm2
990 movdqu %xmm7,112(%rdi)
992 movdqu 48(%rsi),%xmm7
999 movdqu 64(%rsi),%xmm6
1000 movdqu %xmm11,16(%rdi)
1001 movdqu 80(%rsi),%xmm11
1002 movdqu %xmm2,32(%rdi)
1003 movdqu 96(%rsi),%xmm2
1004 movdqu %xmm7,48(%rdi)
1005 movdqu 112(%rsi),%xmm7
1011 movdqu %xmm6,64(%rdi)
1012 movdqu %xmm11,80(%rdi)
1013 movdqu %xmm2,96(%rdi)
1014 movdqu %xmm7,112(%rdi)
1033 movdqa %xmm12,16(%rsp)
1034 movdqa %xmm4,32(%rsp)
1035 movdqa %xmm0,48(%rsp)
1040 movdqu 0(%rsi),%xmm6
1041 movdqu 16(%rsi),%xmm11
1042 movdqu 32(%rsi),%xmm2
1043 movdqu 48(%rsi),%xmm7
1048 movdqu %xmm6,0(%rdi)
1049 movdqu %xmm11,16(%rdi)
1050 movdqu %xmm2,32(%rdi)
1051 movdqu %xmm7,48(%rdi)
1054 movdqa 16(%rsp),%xmm6
1057 movdqa %xmm6,0(%rsp)
1058 movdqa %xmm13,16(%rsp)
1060 movdqa %xmm5,32(%rsp)
1062 movdqa %xmm1,48(%rsp)
1067 movdqu 0(%rsi),%xmm6
1068 movdqu 16(%rsi),%xmm11
1069 movdqu 32(%rsi),%xmm2
1070 movdqu 48(%rsi),%xmm7
1076 movdqu %xmm6,0(%rdi)
1077 movdqu 64(%rsi),%xmm6
1078 movdqu %xmm11,16(%rdi)
1079 movdqu 80(%rsi),%xmm11
1080 movdqu %xmm2,32(%rdi)
1081 movdqu 96(%rsi),%xmm2
1082 movdqu %xmm7,48(%rdi)
1083 movdqu 112(%rsi),%xmm7
1088 movdqu %xmm6,64(%rdi)
1089 movdqu %xmm11,80(%rdi)
1090 movdqu %xmm2,96(%rdi)
1091 movdqu %xmm7,112(%rdi)
1094 movdqa 32(%rsp),%xmm6
1097 movdqa %xmm6,0(%rsp)
1098 movdqa %xmm10,16(%rsp)
1100 movdqa %xmm14,32(%rsp)
1102 movdqa %xmm8,48(%rsp)
1107 movdqu 0(%rsi),%xmm6
1108 movdqu 16(%rsi),%xmm11
1109 movdqu 32(%rsi),%xmm2
1110 movdqu 48(%rsi),%xmm7
1116 movdqu %xmm6,0(%rdi)
1117 movdqu 64(%rsi),%xmm6
1118 movdqu %xmm11,16(%rdi)
1119 movdqu 80(%rsi),%xmm11
1120 movdqu %xmm2,32(%rdi)
1121 movdqu 96(%rsi),%xmm2
1122 movdqu %xmm7,48(%rdi)
1123 movdqu 112(%rsi),%xmm7
1130 movdqu %xmm6,64(%rdi)
1131 movdqu 0(%rsi),%xmm6
1132 movdqu %xmm11,80(%rdi)
1133 movdqu 16(%rsi),%xmm11
1134 movdqu %xmm2,96(%rdi)
1135 movdqu 32(%rsi),%xmm2
1136 movdqu %xmm7,112(%rdi)
1138 movdqu 48(%rsi),%xmm7
1143 movdqu %xmm6,0(%rdi)
1144 movdqu %xmm11,16(%rdi)
1145 movdqu %xmm2,32(%rdi)
1146 movdqu %xmm7,48(%rdi)
1149 movdqa 48(%rsp),%xmm6
1152 movdqa %xmm6,0(%rsp)
1153 movdqa %xmm15,16(%rsp)
1155 movdqa %xmm9,32(%rsp)
1157 movdqa %xmm3,48(%rsp)
1160 movzbl (%rsi,%r10,1),%eax
1161 movzbl (%rsp,%r10,1),%ecx
1164 movb %al,-1(%rdi,%r10,1)
1170 .cfi_def_cfa_register %rsp
1174 .size ChaCha20_4x,.-ChaCha20_4x
1175 .type ChaCha20_4xop,@function
1181 .cfi_def_cfa_register %r9
1185 vmovdqa .Lsigma(%rip),%xmm11
1186 vmovdqu (%rcx),%xmm3
1187 vmovdqu 16(%rcx),%xmm15
1191 vpshufd $0x00,%xmm11,%xmm8
1192 vpshufd $0x55,%xmm11,%xmm9
1193 vmovdqa %xmm8,64(%rsp)
1194 vpshufd $0xaa,%xmm11,%xmm10
1195 vmovdqa %xmm9,80(%rsp)
1196 vpshufd $0xff,%xmm11,%xmm11
1197 vmovdqa %xmm10,96(%rsp)
1198 vmovdqa %xmm11,112(%rsp)
1200 vpshufd $0x00,%xmm3,%xmm0
1201 vpshufd $0x55,%xmm3,%xmm1
1202 vmovdqa %xmm0,128-256(%rcx)
1203 vpshufd $0xaa,%xmm3,%xmm2
1204 vmovdqa %xmm1,144-256(%rcx)
1205 vpshufd $0xff,%xmm3,%xmm3
1206 vmovdqa %xmm2,160-256(%rcx)
1207 vmovdqa %xmm3,176-256(%rcx)
1209 vpshufd $0x00,%xmm15,%xmm12
1210 vpshufd $0x55,%xmm15,%xmm13
1211 vmovdqa %xmm12,192-256(%rcx)
1212 vpshufd $0xaa,%xmm15,%xmm14
1213 vmovdqa %xmm13,208-256(%rcx)
1214 vpshufd $0xff,%xmm15,%xmm15
1215 vmovdqa %xmm14,224-256(%rcx)
1216 vmovdqa %xmm15,240-256(%rcx)
1218 vpshufd $0x00,%xmm7,%xmm4
1219 vpshufd $0x55,%xmm7,%xmm5
1220 vpaddd .Linc(%rip),%xmm4,%xmm4
1221 vpshufd $0xaa,%xmm7,%xmm6
1222 vmovdqa %xmm5,272-256(%rcx)
1223 vpshufd $0xff,%xmm7,%xmm7
1224 vmovdqa %xmm6,288-256(%rcx)
1225 vmovdqa %xmm7,304-256(%rcx)
1231 vmovdqa 64(%rsp),%xmm8
1232 vmovdqa 80(%rsp),%xmm9
1233 vmovdqa 96(%rsp),%xmm10
1234 vmovdqa 112(%rsp),%xmm11
1235 vmovdqa 128-256(%rcx),%xmm0
1236 vmovdqa 144-256(%rcx),%xmm1
1237 vmovdqa 160-256(%rcx),%xmm2
1238 vmovdqa 176-256(%rcx),%xmm3
1239 vmovdqa 192-256(%rcx),%xmm12
1240 vmovdqa 208-256(%rcx),%xmm13
1241 vmovdqa 224-256(%rcx),%xmm14
1242 vmovdqa 240-256(%rcx),%xmm15
1243 vmovdqa 256-256(%rcx),%xmm4
1244 vmovdqa 272-256(%rcx),%xmm5
1245 vmovdqa 288-256(%rcx),%xmm6
1246 vmovdqa 304-256(%rcx),%xmm7
1247 vpaddd .Lfour(%rip),%xmm4,%xmm4
1251 vmovdqa %xmm4,256-256(%rcx)
1256 vpaddd %xmm0,%xmm8,%xmm8
1257 vpaddd %xmm1,%xmm9,%xmm9
1258 vpaddd %xmm2,%xmm10,%xmm10
1259 vpaddd %xmm3,%xmm11,%xmm11
1260 vpxor %xmm4,%xmm8,%xmm4
1261 vpxor %xmm5,%xmm9,%xmm5
1262 vpxor %xmm6,%xmm10,%xmm6
1263 vpxor %xmm7,%xmm11,%xmm7
1264 .byte 143,232,120,194,228,16
1265 .byte 143,232,120,194,237,16
1266 .byte 143,232,120,194,246,16
1267 .byte 143,232,120,194,255,16
1268 vpaddd %xmm4,%xmm12,%xmm12
1269 vpaddd %xmm5,%xmm13,%xmm13
1270 vpaddd %xmm6,%xmm14,%xmm14
1271 vpaddd %xmm7,%xmm15,%xmm15
1272 vpxor %xmm0,%xmm12,%xmm0
1273 vpxor %xmm1,%xmm13,%xmm1
1274 vpxor %xmm14,%xmm2,%xmm2
1275 vpxor %xmm15,%xmm3,%xmm3
1276 .byte 143,232,120,194,192,12
1277 .byte 143,232,120,194,201,12
1278 .byte 143,232,120,194,210,12
1279 .byte 143,232,120,194,219,12
1280 vpaddd %xmm8,%xmm0,%xmm8
1281 vpaddd %xmm9,%xmm1,%xmm9
1282 vpaddd %xmm2,%xmm10,%xmm10
1283 vpaddd %xmm3,%xmm11,%xmm11
1284 vpxor %xmm4,%xmm8,%xmm4
1285 vpxor %xmm5,%xmm9,%xmm5
1286 vpxor %xmm6,%xmm10,%xmm6
1287 vpxor %xmm7,%xmm11,%xmm7
1288 .byte 143,232,120,194,228,8
1289 .byte 143,232,120,194,237,8
1290 .byte 143,232,120,194,246,8
1291 .byte 143,232,120,194,255,8
1292 vpaddd %xmm4,%xmm12,%xmm12
1293 vpaddd %xmm5,%xmm13,%xmm13
1294 vpaddd %xmm6,%xmm14,%xmm14
1295 vpaddd %xmm7,%xmm15,%xmm15
1296 vpxor %xmm0,%xmm12,%xmm0
1297 vpxor %xmm1,%xmm13,%xmm1
1298 vpxor %xmm14,%xmm2,%xmm2
1299 vpxor %xmm15,%xmm3,%xmm3
1300 .byte 143,232,120,194,192,7
1301 .byte 143,232,120,194,201,7
1302 .byte 143,232,120,194,210,7
1303 .byte 143,232,120,194,219,7
1304 vpaddd %xmm1,%xmm8,%xmm8
1305 vpaddd %xmm2,%xmm9,%xmm9
1306 vpaddd %xmm3,%xmm10,%xmm10
1307 vpaddd %xmm0,%xmm11,%xmm11
1308 vpxor %xmm7,%xmm8,%xmm7
1309 vpxor %xmm4,%xmm9,%xmm4
1310 vpxor %xmm5,%xmm10,%xmm5
1311 vpxor %xmm6,%xmm11,%xmm6
1312 .byte 143,232,120,194,255,16
1313 .byte 143,232,120,194,228,16
1314 .byte 143,232,120,194,237,16
1315 .byte 143,232,120,194,246,16
1316 vpaddd %xmm7,%xmm14,%xmm14
1317 vpaddd %xmm4,%xmm15,%xmm15
1318 vpaddd %xmm5,%xmm12,%xmm12
1319 vpaddd %xmm6,%xmm13,%xmm13
1320 vpxor %xmm1,%xmm14,%xmm1
1321 vpxor %xmm2,%xmm15,%xmm2
1322 vpxor %xmm12,%xmm3,%xmm3
1323 vpxor %xmm13,%xmm0,%xmm0
1324 .byte 143,232,120,194,201,12
1325 .byte 143,232,120,194,210,12
1326 .byte 143,232,120,194,219,12
1327 .byte 143,232,120,194,192,12
1328 vpaddd %xmm8,%xmm1,%xmm8
1329 vpaddd %xmm9,%xmm2,%xmm9
1330 vpaddd %xmm3,%xmm10,%xmm10
1331 vpaddd %xmm0,%xmm11,%xmm11
1332 vpxor %xmm7,%xmm8,%xmm7
1333 vpxor %xmm4,%xmm9,%xmm4
1334 vpxor %xmm5,%xmm10,%xmm5
1335 vpxor %xmm6,%xmm11,%xmm6
1336 .byte 143,232,120,194,255,8
1337 .byte 143,232,120,194,228,8
1338 .byte 143,232,120,194,237,8
1339 .byte 143,232,120,194,246,8
1340 vpaddd %xmm7,%xmm14,%xmm14
1341 vpaddd %xmm4,%xmm15,%xmm15
1342 vpaddd %xmm5,%xmm12,%xmm12
1343 vpaddd %xmm6,%xmm13,%xmm13
1344 vpxor %xmm1,%xmm14,%xmm1
1345 vpxor %xmm2,%xmm15,%xmm2
1346 vpxor %xmm12,%xmm3,%xmm3
1347 vpxor %xmm13,%xmm0,%xmm0
1348 .byte 143,232,120,194,201,7
1349 .byte 143,232,120,194,210,7
1350 .byte 143,232,120,194,219,7
1351 .byte 143,232,120,194,192,7
1355 vpaddd 64(%rsp),%xmm8,%xmm8
1356 vpaddd 80(%rsp),%xmm9,%xmm9
1357 vpaddd 96(%rsp),%xmm10,%xmm10
1358 vpaddd 112(%rsp),%xmm11,%xmm11
1360 vmovdqa %xmm14,32(%rsp)
1361 vmovdqa %xmm15,48(%rsp)
1363 vpunpckldq %xmm9,%xmm8,%xmm14
1364 vpunpckldq %xmm11,%xmm10,%xmm15
1365 vpunpckhdq %xmm9,%xmm8,%xmm8
1366 vpunpckhdq %xmm11,%xmm10,%xmm10
1367 vpunpcklqdq %xmm15,%xmm14,%xmm9
1368 vpunpckhqdq %xmm15,%xmm14,%xmm14
1369 vpunpcklqdq %xmm10,%xmm8,%xmm11
1370 vpunpckhqdq %xmm10,%xmm8,%xmm8
1371 vpaddd 128-256(%rcx),%xmm0,%xmm0
1372 vpaddd 144-256(%rcx),%xmm1,%xmm1
1373 vpaddd 160-256(%rcx),%xmm2,%xmm2
1374 vpaddd 176-256(%rcx),%xmm3,%xmm3
1376 vmovdqa %xmm9,0(%rsp)
1377 vmovdqa %xmm14,16(%rsp)
1378 vmovdqa 32(%rsp),%xmm9
1379 vmovdqa 48(%rsp),%xmm14
1381 vpunpckldq %xmm1,%xmm0,%xmm10
1382 vpunpckldq %xmm3,%xmm2,%xmm15
1383 vpunpckhdq %xmm1,%xmm0,%xmm0
1384 vpunpckhdq %xmm3,%xmm2,%xmm2
1385 vpunpcklqdq %xmm15,%xmm10,%xmm1
1386 vpunpckhqdq %xmm15,%xmm10,%xmm10
1387 vpunpcklqdq %xmm2,%xmm0,%xmm3
1388 vpunpckhqdq %xmm2,%xmm0,%xmm0
1389 vpaddd 192-256(%rcx),%xmm12,%xmm12
1390 vpaddd 208-256(%rcx),%xmm13,%xmm13
1391 vpaddd 224-256(%rcx),%xmm9,%xmm9
1392 vpaddd 240-256(%rcx),%xmm14,%xmm14
1394 vpunpckldq %xmm13,%xmm12,%xmm2
1395 vpunpckldq %xmm14,%xmm9,%xmm15
1396 vpunpckhdq %xmm13,%xmm12,%xmm12
1397 vpunpckhdq %xmm14,%xmm9,%xmm9
1398 vpunpcklqdq %xmm15,%xmm2,%xmm13
1399 vpunpckhqdq %xmm15,%xmm2,%xmm2
1400 vpunpcklqdq %xmm9,%xmm12,%xmm14
1401 vpunpckhqdq %xmm9,%xmm12,%xmm12
1402 vpaddd 256-256(%rcx),%xmm4,%xmm4
1403 vpaddd 272-256(%rcx),%xmm5,%xmm5
1404 vpaddd 288-256(%rcx),%xmm6,%xmm6
1405 vpaddd 304-256(%rcx),%xmm7,%xmm7
1407 vpunpckldq %xmm5,%xmm4,%xmm9
1408 vpunpckldq %xmm7,%xmm6,%xmm15
1409 vpunpckhdq %xmm5,%xmm4,%xmm4
1410 vpunpckhdq %xmm7,%xmm6,%xmm6
1411 vpunpcklqdq %xmm15,%xmm9,%xmm5
1412 vpunpckhqdq %xmm15,%xmm9,%xmm9
1413 vpunpcklqdq %xmm6,%xmm4,%xmm7
1414 vpunpckhqdq %xmm6,%xmm4,%xmm4
1415 vmovdqa 0(%rsp),%xmm6
1416 vmovdqa 16(%rsp),%xmm15
1421 vpxor 0(%rsi),%xmm6,%xmm6
1422 vpxor 16(%rsi),%xmm1,%xmm1
1423 vpxor 32(%rsi),%xmm13,%xmm13
1424 vpxor 48(%rsi),%xmm5,%xmm5
1425 vpxor 64(%rsi),%xmm15,%xmm15
1426 vpxor 80(%rsi),%xmm10,%xmm10
1427 vpxor 96(%rsi),%xmm2,%xmm2
1428 vpxor 112(%rsi),%xmm9,%xmm9
1430 vpxor 0(%rsi),%xmm11,%xmm11
1431 vpxor 16(%rsi),%xmm3,%xmm3
1432 vpxor 32(%rsi),%xmm14,%xmm14
1433 vpxor 48(%rsi),%xmm7,%xmm7
1434 vpxor 64(%rsi),%xmm8,%xmm8
1435 vpxor 80(%rsi),%xmm0,%xmm0
1436 vpxor 96(%rsi),%xmm12,%xmm12
1437 vpxor 112(%rsi),%xmm4,%xmm4
1440 vmovdqu %xmm6,0(%rdi)
1441 vmovdqu %xmm1,16(%rdi)
1442 vmovdqu %xmm13,32(%rdi)
1443 vmovdqu %xmm5,48(%rdi)
1444 vmovdqu %xmm15,64(%rdi)
1445 vmovdqu %xmm10,80(%rdi)
1446 vmovdqu %xmm2,96(%rdi)
1447 vmovdqu %xmm9,112(%rdi)
1449 vmovdqu %xmm11,0(%rdi)
1450 vmovdqu %xmm3,16(%rdi)
1451 vmovdqu %xmm14,32(%rdi)
1452 vmovdqu %xmm7,48(%rdi)
1453 vmovdqu %xmm8,64(%rdi)
1454 vmovdqu %xmm0,80(%rdi)
1455 vmovdqu %xmm12,96(%rdi)
1456 vmovdqu %xmm4,112(%rdi)
1467 jae .L192_or_more4xop
1469 jae .L128_or_more4xop
1471 jae .L64_or_more4xop
1474 vmovdqa %xmm6,0(%rsp)
1475 vmovdqa %xmm1,16(%rsp)
1476 vmovdqa %xmm13,32(%rsp)
1477 vmovdqa %xmm5,48(%rsp)
1482 vpxor 0(%rsi),%xmm6,%xmm6
1483 vpxor 16(%rsi),%xmm1,%xmm1
1484 vpxor 32(%rsi),%xmm13,%xmm13
1485 vpxor 48(%rsi),%xmm5,%xmm5
1486 vmovdqu %xmm6,0(%rdi)
1487 vmovdqu %xmm1,16(%rdi)
1488 vmovdqu %xmm13,32(%rdi)
1489 vmovdqu %xmm5,48(%rdi)
1493 vmovdqa %xmm15,0(%rsp)
1495 vmovdqa %xmm10,16(%rsp)
1497 vmovdqa %xmm2,32(%rsp)
1499 vmovdqa %xmm9,48(%rsp)
1504 vpxor 0(%rsi),%xmm6,%xmm6
1505 vpxor 16(%rsi),%xmm1,%xmm1
1506 vpxor 32(%rsi),%xmm13,%xmm13
1507 vpxor 48(%rsi),%xmm5,%xmm5
1508 vpxor 64(%rsi),%xmm15,%xmm15
1509 vpxor 80(%rsi),%xmm10,%xmm10
1510 vpxor 96(%rsi),%xmm2,%xmm2
1511 vpxor 112(%rsi),%xmm9,%xmm9
1513 vmovdqu %xmm6,0(%rdi)
1514 vmovdqu %xmm1,16(%rdi)
1515 vmovdqu %xmm13,32(%rdi)
1516 vmovdqu %xmm5,48(%rdi)
1517 vmovdqu %xmm15,64(%rdi)
1518 vmovdqu %xmm10,80(%rdi)
1519 vmovdqu %xmm2,96(%rdi)
1520 vmovdqu %xmm9,112(%rdi)
1524 vmovdqa %xmm11,0(%rsp)
1526 vmovdqa %xmm3,16(%rsp)
1528 vmovdqa %xmm14,32(%rsp)
1530 vmovdqa %xmm7,48(%rsp)
1535 vpxor 0(%rsi),%xmm6,%xmm6
1536 vpxor 16(%rsi),%xmm1,%xmm1
1537 vpxor 32(%rsi),%xmm13,%xmm13
1538 vpxor 48(%rsi),%xmm5,%xmm5
1539 vpxor 64(%rsi),%xmm15,%xmm15
1540 vpxor 80(%rsi),%xmm10,%xmm10
1541 vpxor 96(%rsi),%xmm2,%xmm2
1542 vpxor 112(%rsi),%xmm9,%xmm9
1544 vpxor 0(%rsi),%xmm11,%xmm11
1545 vpxor 16(%rsi),%xmm3,%xmm3
1546 vpxor 32(%rsi),%xmm14,%xmm14
1547 vpxor 48(%rsi),%xmm7,%xmm7
1549 vmovdqu %xmm6,0(%rdi)
1550 vmovdqu %xmm1,16(%rdi)
1551 vmovdqu %xmm13,32(%rdi)
1552 vmovdqu %xmm5,48(%rdi)
1553 vmovdqu %xmm15,64(%rdi)
1554 vmovdqu %xmm10,80(%rdi)
1555 vmovdqu %xmm2,96(%rdi)
1556 vmovdqu %xmm9,112(%rdi)
1558 vmovdqu %xmm11,0(%rdi)
1559 vmovdqu %xmm3,16(%rdi)
1560 vmovdqu %xmm14,32(%rdi)
1561 vmovdqu %xmm7,48(%rdi)
1565 vmovdqa %xmm8,0(%rsp)
1567 vmovdqa %xmm0,16(%rsp)
1569 vmovdqa %xmm12,32(%rsp)
1571 vmovdqa %xmm4,48(%rsp)
1574 movzbl (%rsi,%r10,1),%eax
1575 movzbl (%rsp,%r10,1),%ecx
1578 movb %al,-1(%rdi,%r10,1)
1585 .cfi_def_cfa_register %rsp
1589 .size ChaCha20_4xop,.-ChaCha20_4xop
1590 .type ChaCha20_8x,@function
1596 .cfi_def_cfa_register %r9
1610 vbroadcasti128 .Lsigma(%rip),%ymm11
1611 vbroadcasti128 (%rcx),%ymm3
1612 vbroadcasti128 16(%rcx),%ymm15
1613 vbroadcasti128 (%r8),%ymm7
1616 leaq .Lrot16(%rip),%r10
1617 leaq .Lrot24(%rip),%r11
1619 vpshufd $0x00,%ymm11,%ymm8
1620 vpshufd $0x55,%ymm11,%ymm9
1621 vmovdqa %ymm8,128-256(%rcx)
1622 vpshufd $0xaa,%ymm11,%ymm10
1623 vmovdqa %ymm9,160-256(%rcx)
1624 vpshufd $0xff,%ymm11,%ymm11
1625 vmovdqa %ymm10,192-256(%rcx)
1626 vmovdqa %ymm11,224-256(%rcx)
1628 vpshufd $0x00,%ymm3,%ymm0
1629 vpshufd $0x55,%ymm3,%ymm1
1630 vmovdqa %ymm0,256-256(%rcx)
1631 vpshufd $0xaa,%ymm3,%ymm2
1632 vmovdqa %ymm1,288-256(%rcx)
1633 vpshufd $0xff,%ymm3,%ymm3
1634 vmovdqa %ymm2,320-256(%rcx)
1635 vmovdqa %ymm3,352-256(%rcx)
1637 vpshufd $0x00,%ymm15,%ymm12
1638 vpshufd $0x55,%ymm15,%ymm13
1639 vmovdqa %ymm12,384-512(%rax)
1640 vpshufd $0xaa,%ymm15,%ymm14
1641 vmovdqa %ymm13,416-512(%rax)
1642 vpshufd $0xff,%ymm15,%ymm15
1643 vmovdqa %ymm14,448-512(%rax)
1644 vmovdqa %ymm15,480-512(%rax)
1646 vpshufd $0x00,%ymm7,%ymm4
1647 vpshufd $0x55,%ymm7,%ymm5
1648 vpaddd .Lincy(%rip),%ymm4,%ymm4
1649 vpshufd $0xaa,%ymm7,%ymm6
1650 vmovdqa %ymm5,544-512(%rax)
1651 vpshufd $0xff,%ymm7,%ymm7
1652 vmovdqa %ymm6,576-512(%rax)
1653 vmovdqa %ymm7,608-512(%rax)
1659 vmovdqa 128-256(%rcx),%ymm8
1660 vmovdqa 160-256(%rcx),%ymm9
1661 vmovdqa 192-256(%rcx),%ymm10
1662 vmovdqa 224-256(%rcx),%ymm11
1663 vmovdqa 256-256(%rcx),%ymm0
1664 vmovdqa 288-256(%rcx),%ymm1
1665 vmovdqa 320-256(%rcx),%ymm2
1666 vmovdqa 352-256(%rcx),%ymm3
1667 vmovdqa 384-512(%rax),%ymm12
1668 vmovdqa 416-512(%rax),%ymm13
1669 vmovdqa 448-512(%rax),%ymm14
1670 vmovdqa 480-512(%rax),%ymm15
1671 vmovdqa 512-512(%rax),%ymm4
1672 vmovdqa 544-512(%rax),%ymm5
1673 vmovdqa 576-512(%rax),%ymm6
1674 vmovdqa 608-512(%rax),%ymm7
1675 vpaddd .Leight(%rip),%ymm4,%ymm4
1678 vmovdqa %ymm14,64(%rsp)
1679 vmovdqa %ymm15,96(%rsp)
1680 vbroadcasti128 (%r10),%ymm15
1681 vmovdqa %ymm4,512-512(%rax)
1687 vpaddd %ymm0,%ymm8,%ymm8
1688 vpxor %ymm4,%ymm8,%ymm4
1689 vpshufb %ymm15,%ymm4,%ymm4
1690 vpaddd %ymm1,%ymm9,%ymm9
1691 vpxor %ymm5,%ymm9,%ymm5
1692 vpshufb %ymm15,%ymm5,%ymm5
1693 vpaddd %ymm4,%ymm12,%ymm12
1694 vpxor %ymm0,%ymm12,%ymm0
1695 vpslld $12,%ymm0,%ymm14
1696 vpsrld $20,%ymm0,%ymm0
1697 vpor %ymm0,%ymm14,%ymm0
1698 vbroadcasti128 (%r11),%ymm14
1699 vpaddd %ymm5,%ymm13,%ymm13
1700 vpxor %ymm1,%ymm13,%ymm1
1701 vpslld $12,%ymm1,%ymm15
1702 vpsrld $20,%ymm1,%ymm1
1703 vpor %ymm1,%ymm15,%ymm1
1704 vpaddd %ymm0,%ymm8,%ymm8
1705 vpxor %ymm4,%ymm8,%ymm4
1706 vpshufb %ymm14,%ymm4,%ymm4
1707 vpaddd %ymm1,%ymm9,%ymm9
1708 vpxor %ymm5,%ymm9,%ymm5
1709 vpshufb %ymm14,%ymm5,%ymm5
1710 vpaddd %ymm4,%ymm12,%ymm12
1711 vpxor %ymm0,%ymm12,%ymm0
1712 vpslld $7,%ymm0,%ymm15
1713 vpsrld $25,%ymm0,%ymm0
1714 vpor %ymm0,%ymm15,%ymm0
1715 vbroadcasti128 (%r10),%ymm15
1716 vpaddd %ymm5,%ymm13,%ymm13
1717 vpxor %ymm1,%ymm13,%ymm1
1718 vpslld $7,%ymm1,%ymm14
1719 vpsrld $25,%ymm1,%ymm1
1720 vpor %ymm1,%ymm14,%ymm1
1721 vmovdqa %ymm12,0(%rsp)
1722 vmovdqa %ymm13,32(%rsp)
1723 vmovdqa 64(%rsp),%ymm12
1724 vmovdqa 96(%rsp),%ymm13
1725 vpaddd %ymm2,%ymm10,%ymm10
1726 vpxor %ymm6,%ymm10,%ymm6
1727 vpshufb %ymm15,%ymm6,%ymm6
1728 vpaddd %ymm3,%ymm11,%ymm11
1729 vpxor %ymm7,%ymm11,%ymm7
1730 vpshufb %ymm15,%ymm7,%ymm7
1731 vpaddd %ymm6,%ymm12,%ymm12
1732 vpxor %ymm2,%ymm12,%ymm2
1733 vpslld $12,%ymm2,%ymm14
1734 vpsrld $20,%ymm2,%ymm2
1735 vpor %ymm2,%ymm14,%ymm2
1736 vbroadcasti128 (%r11),%ymm14
1737 vpaddd %ymm7,%ymm13,%ymm13
1738 vpxor %ymm3,%ymm13,%ymm3
1739 vpslld $12,%ymm3,%ymm15
1740 vpsrld $20,%ymm3,%ymm3
1741 vpor %ymm3,%ymm15,%ymm3
1742 vpaddd %ymm2,%ymm10,%ymm10
1743 vpxor %ymm6,%ymm10,%ymm6
1744 vpshufb %ymm14,%ymm6,%ymm6
1745 vpaddd %ymm3,%ymm11,%ymm11
1746 vpxor %ymm7,%ymm11,%ymm7
1747 vpshufb %ymm14,%ymm7,%ymm7
1748 vpaddd %ymm6,%ymm12,%ymm12
1749 vpxor %ymm2,%ymm12,%ymm2
1750 vpslld $7,%ymm2,%ymm15
1751 vpsrld $25,%ymm2,%ymm2
1752 vpor %ymm2,%ymm15,%ymm2
1753 vbroadcasti128 (%r10),%ymm15
1754 vpaddd %ymm7,%ymm13,%ymm13
1755 vpxor %ymm3,%ymm13,%ymm3
1756 vpslld $7,%ymm3,%ymm14
1757 vpsrld $25,%ymm3,%ymm3
1758 vpor %ymm3,%ymm14,%ymm3
1759 vpaddd %ymm1,%ymm8,%ymm8
1760 vpxor %ymm7,%ymm8,%ymm7
1761 vpshufb %ymm15,%ymm7,%ymm7
1762 vpaddd %ymm2,%ymm9,%ymm9
1763 vpxor %ymm4,%ymm9,%ymm4
1764 vpshufb %ymm15,%ymm4,%ymm4
1765 vpaddd %ymm7,%ymm12,%ymm12
1766 vpxor %ymm1,%ymm12,%ymm1
1767 vpslld $12,%ymm1,%ymm14
1768 vpsrld $20,%ymm1,%ymm1
1769 vpor %ymm1,%ymm14,%ymm1
1770 vbroadcasti128 (%r11),%ymm14
1771 vpaddd %ymm4,%ymm13,%ymm13
1772 vpxor %ymm2,%ymm13,%ymm2
1773 vpslld $12,%ymm2,%ymm15
1774 vpsrld $20,%ymm2,%ymm2
1775 vpor %ymm2,%ymm15,%ymm2
1776 vpaddd %ymm1,%ymm8,%ymm8
1777 vpxor %ymm7,%ymm8,%ymm7
1778 vpshufb %ymm14,%ymm7,%ymm7
1779 vpaddd %ymm2,%ymm9,%ymm9
1780 vpxor %ymm4,%ymm9,%ymm4
1781 vpshufb %ymm14,%ymm4,%ymm4
1782 vpaddd %ymm7,%ymm12,%ymm12
1783 vpxor %ymm1,%ymm12,%ymm1
1784 vpslld $7,%ymm1,%ymm15
1785 vpsrld $25,%ymm1,%ymm1
1786 vpor %ymm1,%ymm15,%ymm1
1787 vbroadcasti128 (%r10),%ymm15
1788 vpaddd %ymm4,%ymm13,%ymm13
1789 vpxor %ymm2,%ymm13,%ymm2
1790 vpslld $7,%ymm2,%ymm14
1791 vpsrld $25,%ymm2,%ymm2
1792 vpor %ymm2,%ymm14,%ymm2
1793 vmovdqa %ymm12,64(%rsp)
1794 vmovdqa %ymm13,96(%rsp)
1795 vmovdqa 0(%rsp),%ymm12
1796 vmovdqa 32(%rsp),%ymm13
1797 vpaddd %ymm3,%ymm10,%ymm10
1798 vpxor %ymm5,%ymm10,%ymm5
1799 vpshufb %ymm15,%ymm5,%ymm5
1800 vpaddd %ymm0,%ymm11,%ymm11
1801 vpxor %ymm6,%ymm11,%ymm6
1802 vpshufb %ymm15,%ymm6,%ymm6
1803 vpaddd %ymm5,%ymm12,%ymm12
1804 vpxor %ymm3,%ymm12,%ymm3
1805 vpslld $12,%ymm3,%ymm14
1806 vpsrld $20,%ymm3,%ymm3
1807 vpor %ymm3,%ymm14,%ymm3
1808 vbroadcasti128 (%r11),%ymm14
1809 vpaddd %ymm6,%ymm13,%ymm13
1810 vpxor %ymm0,%ymm13,%ymm0
1811 vpslld $12,%ymm0,%ymm15
1812 vpsrld $20,%ymm0,%ymm0
1813 vpor %ymm0,%ymm15,%ymm0
1814 vpaddd %ymm3,%ymm10,%ymm10
1815 vpxor %ymm5,%ymm10,%ymm5
1816 vpshufb %ymm14,%ymm5,%ymm5
1817 vpaddd %ymm0,%ymm11,%ymm11
1818 vpxor %ymm6,%ymm11,%ymm6
1819 vpshufb %ymm14,%ymm6,%ymm6
1820 vpaddd %ymm5,%ymm12,%ymm12
1821 vpxor %ymm3,%ymm12,%ymm3
1822 vpslld $7,%ymm3,%ymm15
1823 vpsrld $25,%ymm3,%ymm3
1824 vpor %ymm3,%ymm15,%ymm3
1825 vbroadcasti128 (%r10),%ymm15
1826 vpaddd %ymm6,%ymm13,%ymm13
1827 vpxor %ymm0,%ymm13,%ymm0
1828 vpslld $7,%ymm0,%ymm14
1829 vpsrld $25,%ymm0,%ymm0
1830 vpor %ymm0,%ymm14,%ymm0
1835 vpaddd 128-256(%rcx),%ymm8,%ymm8
1836 vpaddd 160-256(%rcx),%ymm9,%ymm9
1837 vpaddd 192-256(%rcx),%ymm10,%ymm10
1838 vpaddd 224-256(%rcx),%ymm11,%ymm11
1840 vpunpckldq %ymm9,%ymm8,%ymm14
1841 vpunpckldq %ymm11,%ymm10,%ymm15
1842 vpunpckhdq %ymm9,%ymm8,%ymm8
1843 vpunpckhdq %ymm11,%ymm10,%ymm10
1844 vpunpcklqdq %ymm15,%ymm14,%ymm9
1845 vpunpckhqdq %ymm15,%ymm14,%ymm14
1846 vpunpcklqdq %ymm10,%ymm8,%ymm11
1847 vpunpckhqdq %ymm10,%ymm8,%ymm8
1848 vpaddd 256-256(%rcx),%ymm0,%ymm0
1849 vpaddd 288-256(%rcx),%ymm1,%ymm1
1850 vpaddd 320-256(%rcx),%ymm2,%ymm2
1851 vpaddd 352-256(%rcx),%ymm3,%ymm3
1853 vpunpckldq %ymm1,%ymm0,%ymm10
1854 vpunpckldq %ymm3,%ymm2,%ymm15
1855 vpunpckhdq %ymm1,%ymm0,%ymm0
1856 vpunpckhdq %ymm3,%ymm2,%ymm2
1857 vpunpcklqdq %ymm15,%ymm10,%ymm1
1858 vpunpckhqdq %ymm15,%ymm10,%ymm10
1859 vpunpcklqdq %ymm2,%ymm0,%ymm3
1860 vpunpckhqdq %ymm2,%ymm0,%ymm0
1861 vperm2i128 $0x20,%ymm1,%ymm9,%ymm15
1862 vperm2i128 $0x31,%ymm1,%ymm9,%ymm1
1863 vperm2i128 $0x20,%ymm10,%ymm14,%ymm9
1864 vperm2i128 $0x31,%ymm10,%ymm14,%ymm10
1865 vperm2i128 $0x20,%ymm3,%ymm11,%ymm14
1866 vperm2i128 $0x31,%ymm3,%ymm11,%ymm3
1867 vperm2i128 $0x20,%ymm0,%ymm8,%ymm11
1868 vperm2i128 $0x31,%ymm0,%ymm8,%ymm0
1869 vmovdqa %ymm15,0(%rsp)
1870 vmovdqa %ymm9,32(%rsp)
1871 vmovdqa 64(%rsp),%ymm15
1872 vmovdqa 96(%rsp),%ymm9
1874 vpaddd 384-512(%rax),%ymm12,%ymm12
1875 vpaddd 416-512(%rax),%ymm13,%ymm13
1876 vpaddd 448-512(%rax),%ymm15,%ymm15
1877 vpaddd 480-512(%rax),%ymm9,%ymm9
1879 vpunpckldq %ymm13,%ymm12,%ymm2
1880 vpunpckldq %ymm9,%ymm15,%ymm8
1881 vpunpckhdq %ymm13,%ymm12,%ymm12
1882 vpunpckhdq %ymm9,%ymm15,%ymm15
1883 vpunpcklqdq %ymm8,%ymm2,%ymm13
1884 vpunpckhqdq %ymm8,%ymm2,%ymm2
1885 vpunpcklqdq %ymm15,%ymm12,%ymm9
1886 vpunpckhqdq %ymm15,%ymm12,%ymm12
1887 vpaddd 512-512(%rax),%ymm4,%ymm4
1888 vpaddd 544-512(%rax),%ymm5,%ymm5
1889 vpaddd 576-512(%rax),%ymm6,%ymm6
1890 vpaddd 608-512(%rax),%ymm7,%ymm7
1892 vpunpckldq %ymm5,%ymm4,%ymm15
1893 vpunpckldq %ymm7,%ymm6,%ymm8
1894 vpunpckhdq %ymm5,%ymm4,%ymm4
1895 vpunpckhdq %ymm7,%ymm6,%ymm6
1896 vpunpcklqdq %ymm8,%ymm15,%ymm5
1897 vpunpckhqdq %ymm8,%ymm15,%ymm15
1898 vpunpcklqdq %ymm6,%ymm4,%ymm7
1899 vpunpckhqdq %ymm6,%ymm4,%ymm4
1900 vperm2i128 $0x20,%ymm5,%ymm13,%ymm8
1901 vperm2i128 $0x31,%ymm5,%ymm13,%ymm5
1902 vperm2i128 $0x20,%ymm15,%ymm2,%ymm13
1903 vperm2i128 $0x31,%ymm15,%ymm2,%ymm15
1904 vperm2i128 $0x20,%ymm7,%ymm9,%ymm2
1905 vperm2i128 $0x31,%ymm7,%ymm9,%ymm7
1906 vperm2i128 $0x20,%ymm4,%ymm12,%ymm9
1907 vperm2i128 $0x31,%ymm4,%ymm12,%ymm4
1908 vmovdqa 0(%rsp),%ymm6
1909 vmovdqa 32(%rsp),%ymm12
1914 vpxor 0(%rsi),%ymm6,%ymm6
1915 vpxor 32(%rsi),%ymm8,%ymm8
1916 vpxor 64(%rsi),%ymm1,%ymm1
1917 vpxor 96(%rsi),%ymm5,%ymm5
1919 vmovdqu %ymm6,0(%rdi)
1920 vmovdqu %ymm8,32(%rdi)
1921 vmovdqu %ymm1,64(%rdi)
1922 vmovdqu %ymm5,96(%rdi)
1925 vpxor 0(%rsi),%ymm12,%ymm12
1926 vpxor 32(%rsi),%ymm13,%ymm13
1927 vpxor 64(%rsi),%ymm10,%ymm10
1928 vpxor 96(%rsi),%ymm15,%ymm15
1930 vmovdqu %ymm12,0(%rdi)
1931 vmovdqu %ymm13,32(%rdi)
1932 vmovdqu %ymm10,64(%rdi)
1933 vmovdqu %ymm15,96(%rdi)
1936 vpxor 0(%rsi),%ymm14,%ymm14
1937 vpxor 32(%rsi),%ymm2,%ymm2
1938 vpxor 64(%rsi),%ymm3,%ymm3
1939 vpxor 96(%rsi),%ymm7,%ymm7
1941 vmovdqu %ymm14,0(%rdi)
1942 vmovdqu %ymm2,32(%rdi)
1943 vmovdqu %ymm3,64(%rdi)
1944 vmovdqu %ymm7,96(%rdi)
1947 vpxor 0(%rsi),%ymm11,%ymm11
1948 vpxor 32(%rsi),%ymm9,%ymm9
1949 vpxor 64(%rsi),%ymm0,%ymm0
1950 vpxor 96(%rsi),%ymm4,%ymm4
1952 vmovdqu %ymm11,0(%rdi)
1953 vmovdqu %ymm9,32(%rdi)
1954 vmovdqu %ymm0,64(%rdi)
1955 vmovdqu %ymm4,96(%rdi)
1980 vmovdqa %ymm6,0(%rsp)
1981 vmovdqa %ymm8,32(%rsp)
1986 vpxor 0(%rsi),%ymm6,%ymm6
1987 vpxor 32(%rsi),%ymm8,%ymm8
1988 vmovdqu %ymm6,0(%rdi)
1989 vmovdqu %ymm8,32(%rdi)
1994 vmovdqa %ymm1,0(%rsp)
1997 vmovdqa %ymm5,32(%rsp)
2002 vpxor 0(%rsi),%ymm6,%ymm6
2003 vpxor 32(%rsi),%ymm8,%ymm8
2004 vpxor 64(%rsi),%ymm1,%ymm1
2005 vpxor 96(%rsi),%ymm5,%ymm5
2006 vmovdqu %ymm6,0(%rdi)
2007 vmovdqu %ymm8,32(%rdi)
2008 vmovdqu %ymm1,64(%rdi)
2009 vmovdqu %ymm5,96(%rdi)
2014 vmovdqa %ymm12,0(%rsp)
2017 vmovdqa %ymm13,32(%rsp)
2022 vpxor 0(%rsi),%ymm6,%ymm6
2023 vpxor 32(%rsi),%ymm8,%ymm8
2024 vpxor 64(%rsi),%ymm1,%ymm1
2025 vpxor 96(%rsi),%ymm5,%ymm5
2026 vpxor 128(%rsi),%ymm12,%ymm12
2027 vpxor 160(%rsi),%ymm13,%ymm13
2028 vmovdqu %ymm6,0(%rdi)
2029 vmovdqu %ymm8,32(%rdi)
2030 vmovdqu %ymm1,64(%rdi)
2031 vmovdqu %ymm5,96(%rdi)
2032 vmovdqu %ymm12,128(%rdi)
2033 vmovdqu %ymm13,160(%rdi)
2038 vmovdqa %ymm10,0(%rsp)
2041 vmovdqa %ymm15,32(%rsp)
2046 vpxor 0(%rsi),%ymm6,%ymm6
2047 vpxor 32(%rsi),%ymm8,%ymm8
2048 vpxor 64(%rsi),%ymm1,%ymm1
2049 vpxor 96(%rsi),%ymm5,%ymm5
2050 vpxor 128(%rsi),%ymm12,%ymm12
2051 vpxor 160(%rsi),%ymm13,%ymm13
2052 vpxor 192(%rsi),%ymm10,%ymm10
2053 vpxor 224(%rsi),%ymm15,%ymm15
2054 vmovdqu %ymm6,0(%rdi)
2055 vmovdqu %ymm8,32(%rdi)
2056 vmovdqu %ymm1,64(%rdi)
2057 vmovdqu %ymm5,96(%rdi)
2058 vmovdqu %ymm12,128(%rdi)
2059 vmovdqu %ymm13,160(%rdi)
2060 vmovdqu %ymm10,192(%rdi)
2061 vmovdqu %ymm15,224(%rdi)
2066 vmovdqa %ymm14,0(%rsp)
2069 vmovdqa %ymm2,32(%rsp)
2074 vpxor 0(%rsi),%ymm6,%ymm6
2075 vpxor 32(%rsi),%ymm8,%ymm8
2076 vpxor 64(%rsi),%ymm1,%ymm1
2077 vpxor 96(%rsi),%ymm5,%ymm5
2078 vpxor 128(%rsi),%ymm12,%ymm12
2079 vpxor 160(%rsi),%ymm13,%ymm13
2080 vpxor 192(%rsi),%ymm10,%ymm10
2081 vpxor 224(%rsi),%ymm15,%ymm15
2082 vpxor 256(%rsi),%ymm14,%ymm14
2083 vpxor 288(%rsi),%ymm2,%ymm2
2084 vmovdqu %ymm6,0(%rdi)
2085 vmovdqu %ymm8,32(%rdi)
2086 vmovdqu %ymm1,64(%rdi)
2087 vmovdqu %ymm5,96(%rdi)
2088 vmovdqu %ymm12,128(%rdi)
2089 vmovdqu %ymm13,160(%rdi)
2090 vmovdqu %ymm10,192(%rdi)
2091 vmovdqu %ymm15,224(%rdi)
2092 vmovdqu %ymm14,256(%rdi)
2093 vmovdqu %ymm2,288(%rdi)
2098 vmovdqa %ymm3,0(%rsp)
2101 vmovdqa %ymm7,32(%rsp)
2106 vpxor 0(%rsi),%ymm6,%ymm6
2107 vpxor 32(%rsi),%ymm8,%ymm8
2108 vpxor 64(%rsi),%ymm1,%ymm1
2109 vpxor 96(%rsi),%ymm5,%ymm5
2110 vpxor 128(%rsi),%ymm12,%ymm12
2111 vpxor 160(%rsi),%ymm13,%ymm13
2112 vpxor 192(%rsi),%ymm10,%ymm10
2113 vpxor 224(%rsi),%ymm15,%ymm15
2114 vpxor 256(%rsi),%ymm14,%ymm14
2115 vpxor 288(%rsi),%ymm2,%ymm2
2116 vpxor 320(%rsi),%ymm3,%ymm3
2117 vpxor 352(%rsi),%ymm7,%ymm7
2118 vmovdqu %ymm6,0(%rdi)
2119 vmovdqu %ymm8,32(%rdi)
2120 vmovdqu %ymm1,64(%rdi)
2121 vmovdqu %ymm5,96(%rdi)
2122 vmovdqu %ymm12,128(%rdi)
2123 vmovdqu %ymm13,160(%rdi)
2124 vmovdqu %ymm10,192(%rdi)
2125 vmovdqu %ymm15,224(%rdi)
2126 vmovdqu %ymm14,256(%rdi)
2127 vmovdqu %ymm2,288(%rdi)
2128 vmovdqu %ymm3,320(%rdi)
2129 vmovdqu %ymm7,352(%rdi)
2134 vmovdqa %ymm11,0(%rsp)
2137 vmovdqa %ymm9,32(%rsp)
2142 vpxor 0(%rsi),%ymm6,%ymm6
2143 vpxor 32(%rsi),%ymm8,%ymm8
2144 vpxor 64(%rsi),%ymm1,%ymm1
2145 vpxor 96(%rsi),%ymm5,%ymm5
2146 vpxor 128(%rsi),%ymm12,%ymm12
2147 vpxor 160(%rsi),%ymm13,%ymm13
2148 vpxor 192(%rsi),%ymm10,%ymm10
2149 vpxor 224(%rsi),%ymm15,%ymm15
2150 vpxor 256(%rsi),%ymm14,%ymm14
2151 vpxor 288(%rsi),%ymm2,%ymm2
2152 vpxor 320(%rsi),%ymm3,%ymm3
2153 vpxor 352(%rsi),%ymm7,%ymm7
2154 vpxor 384(%rsi),%ymm11,%ymm11
2155 vpxor 416(%rsi),%ymm9,%ymm9
2156 vmovdqu %ymm6,0(%rdi)
2157 vmovdqu %ymm8,32(%rdi)
2158 vmovdqu %ymm1,64(%rdi)
2159 vmovdqu %ymm5,96(%rdi)
2160 vmovdqu %ymm12,128(%rdi)
2161 vmovdqu %ymm13,160(%rdi)
2162 vmovdqu %ymm10,192(%rdi)
2163 vmovdqu %ymm15,224(%rdi)
2164 vmovdqu %ymm14,256(%rdi)
2165 vmovdqu %ymm2,288(%rdi)
2166 vmovdqu %ymm3,320(%rdi)
2167 vmovdqu %ymm7,352(%rdi)
2168 vmovdqu %ymm11,384(%rdi)
2169 vmovdqu %ymm9,416(%rdi)
2174 vmovdqa %ymm0,0(%rsp)
2177 vmovdqa %ymm4,32(%rsp)
2180 movzbl (%rsi,%r10,1),%eax
2181 movzbl (%rsp,%r10,1),%ecx
2184 movb %al,-1(%rdi,%r10,1)
2191 .cfi_def_cfa_register %rsp
2195 .size ChaCha20_8x,.-ChaCha20_8x