2 /* Do not modify. This file is auto-generated from poly1305-x86_64.pl. */
10 .hidden poly1305_blocks
14 .type poly1305_init,@function
25 leaq poly1305_blocks(%rip),%r10
26 leaq poly1305_emit(%rip),%r11
27 movq OPENSSL_ia32cap_P+4(%rip),%r9
28 leaq poly1305_blocks_avx(%rip),%rax
29 leaq poly1305_emit_avx(%rip),%rcx
33 leaq poly1305_blocks_avx2(%rip),%rax
36 movq $0x0ffffffc0fffffff,%rax
37 movq $0x0ffffffc0ffffffc,%rcx
47 .size poly1305_init,.-poly1305_init
49 .type poly1305_blocks,@function
58 .cfi_adjust_cfa_offset 8
61 .cfi_adjust_cfa_offset 8
64 .cfi_adjust_cfa_offset 8
67 .cfi_adjust_cfa_offset 8
70 .cfi_adjust_cfa_offset 8
73 .cfi_adjust_cfa_offset 8
157 .cfi_adjust_cfa_offset -48
162 .size poly1305_blocks,.-poly1305_blocks
164 .type poly1305_emit,@function
187 .size poly1305_emit,.-poly1305_emit
188 .type __poly1305_block,@function
230 .size __poly1305_block,.-__poly1305_block
232 .type __poly1305_init_avx,@function
239 leaq 48+64(%rdi),%rdi
242 call __poly1305_block
260 leal (%rax,%rax,4),%eax
262 leal (%rdx,%rdx,4),%edx
277 leal (%rax,%rax,4),%eax
279 leal (%rdx,%rdx,4),%edx
292 leal (%rax,%rax,4),%eax
294 leal (%rdx,%rdx,4),%edx
311 call __poly1305_block
322 leal (%rdx,%rdx,4),%edx
331 leal (%rax,%rax,4),%eax
339 leal (%rdx,%rdx,4),%edx
351 call __poly1305_block
362 leal (%rdx,%rdx,4),%edx
371 leal (%rax,%rax,4),%eax
379 leal (%rdx,%rdx,4),%edx
390 leaq -48-64(%rdi),%rdi
392 .size __poly1305_init_avx,.-__poly1305_init_avx
394 .type poly1305_blocks_avx,@function
417 .cfi_adjust_cfa_offset 8
420 .cfi_adjust_cfa_offset 8
423 .cfi_adjust_cfa_offset 8
426 .cfi_adjust_cfa_offset 8
429 .cfi_adjust_cfa_offset 8
432 .cfi_adjust_cfa_offset 8
447 andq $-2147483648,%r8
450 andq $-2147483648,%r9
486 call __poly1305_block
489 jz .Lstore_base2_64_avx
510 jz .Lstore_base2_26_avx
520 .Lstore_base2_64_avx:
527 .Lstore_base2_26_avx:
548 .cfi_adjust_cfa_offset -48
550 .Lblocks_avx_epilogue:
558 .cfi_adjust_cfa_offset 8
561 .cfi_adjust_cfa_offset 8
564 .cfi_adjust_cfa_offset 8
567 .cfi_adjust_cfa_offset 8
570 .cfi_adjust_cfa_offset 8
573 .cfi_adjust_cfa_offset 8
600 call __poly1305_block
628 call __poly1305_init_avx
647 .cfi_adjust_cfa_offset -48
648 .Lbase2_64_avx_epilogue:
663 .cfi_def_cfa %r11,0x60
669 vmovdqu 48(%rdi),%xmm14
671 leaq .Lconst(%rip),%rcx
675 vmovdqu 32(%rsi),%xmm5
676 vmovdqu 48(%rsi),%xmm6
677 vmovdqa 64(%rcx),%xmm15
679 vpsrldq $6,%xmm5,%xmm7
680 vpsrldq $6,%xmm6,%xmm8
681 vpunpckhqdq %xmm6,%xmm5,%xmm9
682 vpunpcklqdq %xmm6,%xmm5,%xmm5
683 vpunpcklqdq %xmm8,%xmm7,%xmm8
685 vpsrlq $40,%xmm9,%xmm9
686 vpsrlq $26,%xmm5,%xmm6
687 vpand %xmm15,%xmm5,%xmm5
688 vpsrlq $4,%xmm8,%xmm7
689 vpand %xmm15,%xmm6,%xmm6
690 vpsrlq $30,%xmm8,%xmm8
691 vpand %xmm15,%xmm7,%xmm7
692 vpand %xmm15,%xmm8,%xmm8
693 vpor 32(%rcx),%xmm9,%xmm9
698 vmovdqu -48(%rdi),%xmm11
699 vmovdqu -32(%rdi),%xmm12
700 vpshufd $0xEE,%xmm14,%xmm13
701 vpshufd $0x44,%xmm14,%xmm10
702 vmovdqa %xmm13,-144(%r11)
703 vmovdqa %xmm10,0(%rsp)
704 vpshufd $0xEE,%xmm11,%xmm14
705 vmovdqu -16(%rdi),%xmm10
706 vpshufd $0x44,%xmm11,%xmm11
707 vmovdqa %xmm14,-128(%r11)
708 vmovdqa %xmm11,16(%rsp)
709 vpshufd $0xEE,%xmm12,%xmm13
710 vmovdqu 0(%rdi),%xmm11
711 vpshufd $0x44,%xmm12,%xmm12
712 vmovdqa %xmm13,-112(%r11)
713 vmovdqa %xmm12,32(%rsp)
714 vpshufd $0xEE,%xmm10,%xmm14
715 vmovdqu 16(%rdi),%xmm12
716 vpshufd $0x44,%xmm10,%xmm10
717 vmovdqa %xmm14,-96(%r11)
718 vmovdqa %xmm10,48(%rsp)
719 vpshufd $0xEE,%xmm11,%xmm13
720 vmovdqu 32(%rdi),%xmm10
721 vpshufd $0x44,%xmm11,%xmm11
722 vmovdqa %xmm13,-80(%r11)
723 vmovdqa %xmm11,64(%rsp)
724 vpshufd $0xEE,%xmm12,%xmm14
725 vmovdqu 48(%rdi),%xmm11
726 vpshufd $0x44,%xmm12,%xmm12
727 vmovdqa %xmm14,-64(%r11)
728 vmovdqa %xmm12,80(%rsp)
729 vpshufd $0xEE,%xmm10,%xmm13
730 vmovdqu 64(%rdi),%xmm12
731 vpshufd $0x44,%xmm10,%xmm10
732 vmovdqa %xmm13,-48(%r11)
733 vmovdqa %xmm10,96(%rsp)
734 vpshufd $0xEE,%xmm11,%xmm14
735 vpshufd $0x44,%xmm11,%xmm11
736 vmovdqa %xmm14,-32(%r11)
737 vmovdqa %xmm11,112(%rsp)
738 vpshufd $0xEE,%xmm12,%xmm13
739 vmovdqa 0(%rsp),%xmm14
740 vpshufd $0x44,%xmm12,%xmm12
741 vmovdqa %xmm13,-16(%r11)
742 vmovdqa %xmm12,128(%rsp)
768 vpmuludq %xmm5,%xmm14,%xmm10
769 vpmuludq %xmm6,%xmm14,%xmm11
770 vmovdqa %xmm2,32(%r11)
771 vpmuludq %xmm7,%xmm14,%xmm12
772 vmovdqa 16(%rsp),%xmm2
773 vpmuludq %xmm8,%xmm14,%xmm13
774 vpmuludq %xmm9,%xmm14,%xmm14
776 vmovdqa %xmm0,0(%r11)
777 vpmuludq 32(%rsp),%xmm9,%xmm0
778 vmovdqa %xmm1,16(%r11)
779 vpmuludq %xmm8,%xmm2,%xmm1
780 vpaddq %xmm0,%xmm10,%xmm10
781 vpaddq %xmm1,%xmm14,%xmm14
782 vmovdqa %xmm3,48(%r11)
783 vpmuludq %xmm7,%xmm2,%xmm0
784 vpmuludq %xmm6,%xmm2,%xmm1
785 vpaddq %xmm0,%xmm13,%xmm13
786 vmovdqa 48(%rsp),%xmm3
787 vpaddq %xmm1,%xmm12,%xmm12
788 vmovdqa %xmm4,64(%r11)
789 vpmuludq %xmm5,%xmm2,%xmm2
790 vpmuludq %xmm7,%xmm3,%xmm0
791 vpaddq %xmm2,%xmm11,%xmm11
793 vmovdqa 64(%rsp),%xmm4
794 vpaddq %xmm0,%xmm14,%xmm14
795 vpmuludq %xmm6,%xmm3,%xmm1
796 vpmuludq %xmm5,%xmm3,%xmm3
797 vpaddq %xmm1,%xmm13,%xmm13
798 vmovdqa 80(%rsp),%xmm2
799 vpaddq %xmm3,%xmm12,%xmm12
800 vpmuludq %xmm9,%xmm4,%xmm0
801 vpmuludq %xmm8,%xmm4,%xmm4
802 vpaddq %xmm0,%xmm11,%xmm11
803 vmovdqa 96(%rsp),%xmm3
804 vpaddq %xmm4,%xmm10,%xmm10
806 vmovdqa 128(%rsp),%xmm4
807 vpmuludq %xmm6,%xmm2,%xmm1
808 vpmuludq %xmm5,%xmm2,%xmm2
809 vpaddq %xmm1,%xmm14,%xmm14
810 vpaddq %xmm2,%xmm13,%xmm13
811 vpmuludq %xmm9,%xmm3,%xmm0
812 vpmuludq %xmm8,%xmm3,%xmm1
813 vpaddq %xmm0,%xmm12,%xmm12
814 vmovdqu 0(%rsi),%xmm0
815 vpaddq %xmm1,%xmm11,%xmm11
816 vpmuludq %xmm7,%xmm3,%xmm3
817 vpmuludq %xmm7,%xmm4,%xmm7
818 vpaddq %xmm3,%xmm10,%xmm10
820 vmovdqu 16(%rsi),%xmm1
821 vpaddq %xmm7,%xmm11,%xmm11
822 vpmuludq %xmm8,%xmm4,%xmm8
823 vpmuludq %xmm9,%xmm4,%xmm9
824 vpsrldq $6,%xmm0,%xmm2
825 vpaddq %xmm8,%xmm12,%xmm12
826 vpaddq %xmm9,%xmm13,%xmm13
827 vpsrldq $6,%xmm1,%xmm3
828 vpmuludq 112(%rsp),%xmm5,%xmm9
829 vpmuludq %xmm6,%xmm4,%xmm5
830 vpunpckhqdq %xmm1,%xmm0,%xmm4
831 vpaddq %xmm9,%xmm14,%xmm14
832 vmovdqa -144(%r11),%xmm9
833 vpaddq %xmm5,%xmm10,%xmm10
835 vpunpcklqdq %xmm1,%xmm0,%xmm0
836 vpunpcklqdq %xmm3,%xmm2,%xmm3
839 vpsrldq $5,%xmm4,%xmm4
840 vpsrlq $26,%xmm0,%xmm1
841 vpand %xmm15,%xmm0,%xmm0
842 vpsrlq $4,%xmm3,%xmm2
843 vpand %xmm15,%xmm1,%xmm1
844 vpand 0(%rcx),%xmm4,%xmm4
845 vpsrlq $30,%xmm3,%xmm3
846 vpand %xmm15,%xmm2,%xmm2
847 vpand %xmm15,%xmm3,%xmm3
848 vpor 32(%rcx),%xmm4,%xmm4
850 vpaddq 0(%r11),%xmm0,%xmm0
851 vpaddq 16(%r11),%xmm1,%xmm1
852 vpaddq 32(%r11),%xmm2,%xmm2
853 vpaddq 48(%r11),%xmm3,%xmm3
854 vpaddq 64(%r11),%xmm4,%xmm4
870 vpmuludq %xmm0,%xmm9,%xmm5
871 vpmuludq %xmm1,%xmm9,%xmm6
872 vpaddq %xmm5,%xmm10,%xmm10
873 vpaddq %xmm6,%xmm11,%xmm11
874 vmovdqa -128(%r11),%xmm7
875 vpmuludq %xmm2,%xmm9,%xmm5
876 vpmuludq %xmm3,%xmm9,%xmm6
877 vpaddq %xmm5,%xmm12,%xmm12
878 vpaddq %xmm6,%xmm13,%xmm13
879 vpmuludq %xmm4,%xmm9,%xmm9
880 vpmuludq -112(%r11),%xmm4,%xmm5
881 vpaddq %xmm9,%xmm14,%xmm14
883 vpaddq %xmm5,%xmm10,%xmm10
884 vpmuludq %xmm2,%xmm7,%xmm6
885 vpmuludq %xmm3,%xmm7,%xmm5
886 vpaddq %xmm6,%xmm13,%xmm13
887 vmovdqa -96(%r11),%xmm8
888 vpaddq %xmm5,%xmm14,%xmm14
889 vpmuludq %xmm1,%xmm7,%xmm6
890 vpmuludq %xmm0,%xmm7,%xmm7
891 vpaddq %xmm6,%xmm12,%xmm12
892 vpaddq %xmm7,%xmm11,%xmm11
894 vmovdqa -80(%r11),%xmm9
895 vpmuludq %xmm2,%xmm8,%xmm5
896 vpmuludq %xmm1,%xmm8,%xmm6
897 vpaddq %xmm5,%xmm14,%xmm14
898 vpaddq %xmm6,%xmm13,%xmm13
899 vmovdqa -64(%r11),%xmm7
900 vpmuludq %xmm0,%xmm8,%xmm8
901 vpmuludq %xmm4,%xmm9,%xmm5
902 vpaddq %xmm8,%xmm12,%xmm12
903 vpaddq %xmm5,%xmm11,%xmm11
904 vmovdqa -48(%r11),%xmm8
905 vpmuludq %xmm3,%xmm9,%xmm9
906 vpmuludq %xmm1,%xmm7,%xmm6
907 vpaddq %xmm9,%xmm10,%xmm10
909 vmovdqa -16(%r11),%xmm9
910 vpaddq %xmm6,%xmm14,%xmm14
911 vpmuludq %xmm0,%xmm7,%xmm7
912 vpmuludq %xmm4,%xmm8,%xmm5
913 vpaddq %xmm7,%xmm13,%xmm13
914 vpaddq %xmm5,%xmm12,%xmm12
915 vmovdqu 32(%rsi),%xmm5
916 vpmuludq %xmm3,%xmm8,%xmm7
917 vpmuludq %xmm2,%xmm8,%xmm8
918 vpaddq %xmm7,%xmm11,%xmm11
919 vmovdqu 48(%rsi),%xmm6
920 vpaddq %xmm8,%xmm10,%xmm10
922 vpmuludq %xmm2,%xmm9,%xmm2
923 vpmuludq %xmm3,%xmm9,%xmm3
924 vpsrldq $6,%xmm5,%xmm7
925 vpaddq %xmm2,%xmm11,%xmm11
926 vpmuludq %xmm4,%xmm9,%xmm4
927 vpsrldq $6,%xmm6,%xmm8
928 vpaddq %xmm3,%xmm12,%xmm2
929 vpaddq %xmm4,%xmm13,%xmm3
930 vpmuludq -32(%r11),%xmm0,%xmm4
931 vpmuludq %xmm1,%xmm9,%xmm0
932 vpunpckhqdq %xmm6,%xmm5,%xmm9
933 vpaddq %xmm4,%xmm14,%xmm4
934 vpaddq %xmm0,%xmm10,%xmm0
936 vpunpcklqdq %xmm6,%xmm5,%xmm5
937 vpunpcklqdq %xmm8,%xmm7,%xmm8
940 vpsrldq $5,%xmm9,%xmm9
941 vpsrlq $26,%xmm5,%xmm6
942 vmovdqa 0(%rsp),%xmm14
943 vpand %xmm15,%xmm5,%xmm5
944 vpsrlq $4,%xmm8,%xmm7
945 vpand %xmm15,%xmm6,%xmm6
946 vpand 0(%rcx),%xmm9,%xmm9
947 vpsrlq $30,%xmm8,%xmm8
948 vpand %xmm15,%xmm7,%xmm7
949 vpand %xmm15,%xmm8,%xmm8
950 vpor 32(%rcx),%xmm9,%xmm9
956 vpsrlq $26,%xmm3,%xmm13
957 vpand %xmm15,%xmm3,%xmm3
958 vpaddq %xmm13,%xmm4,%xmm4
960 vpsrlq $26,%xmm0,%xmm10
961 vpand %xmm15,%xmm0,%xmm0
962 vpaddq %xmm10,%xmm11,%xmm1
964 vpsrlq $26,%xmm4,%xmm10
965 vpand %xmm15,%xmm4,%xmm4
967 vpsrlq $26,%xmm1,%xmm11
968 vpand %xmm15,%xmm1,%xmm1
969 vpaddq %xmm11,%xmm2,%xmm2
971 vpaddq %xmm10,%xmm0,%xmm0
972 vpsllq $2,%xmm10,%xmm10
973 vpaddq %xmm10,%xmm0,%xmm0
975 vpsrlq $26,%xmm2,%xmm12
976 vpand %xmm15,%xmm2,%xmm2
977 vpaddq %xmm12,%xmm3,%xmm3
979 vpsrlq $26,%xmm0,%xmm10
980 vpand %xmm15,%xmm0,%xmm0
981 vpaddq %xmm10,%xmm1,%xmm1
983 vpsrlq $26,%xmm3,%xmm13
984 vpand %xmm15,%xmm3,%xmm3
985 vpaddq %xmm13,%xmm4,%xmm4
993 vpshufd $0x10,%xmm14,%xmm14
997 vpaddq %xmm2,%xmm7,%xmm7
998 vpaddq %xmm0,%xmm5,%xmm5
999 vpaddq %xmm1,%xmm6,%xmm6
1000 vpaddq %xmm3,%xmm8,%xmm8
1001 vpaddq %xmm4,%xmm9,%xmm9
1004 vmovdqa %xmm2,32(%r11)
1005 vmovdqa %xmm0,0(%r11)
1006 vmovdqa %xmm1,16(%r11)
1007 vmovdqa %xmm3,48(%r11)
1008 vmovdqa %xmm4,64(%r11)
1016 vpmuludq %xmm7,%xmm14,%xmm12
1017 vpmuludq %xmm5,%xmm14,%xmm10
1018 vpshufd $0x10,-48(%rdi),%xmm2
1019 vpmuludq %xmm6,%xmm14,%xmm11
1020 vpmuludq %xmm8,%xmm14,%xmm13
1021 vpmuludq %xmm9,%xmm14,%xmm14
1023 vpmuludq %xmm8,%xmm2,%xmm0
1024 vpaddq %xmm0,%xmm14,%xmm14
1025 vpshufd $0x10,-32(%rdi),%xmm3
1026 vpmuludq %xmm7,%xmm2,%xmm1
1027 vpaddq %xmm1,%xmm13,%xmm13
1028 vpshufd $0x10,-16(%rdi),%xmm4
1029 vpmuludq %xmm6,%xmm2,%xmm0
1030 vpaddq %xmm0,%xmm12,%xmm12
1031 vpmuludq %xmm5,%xmm2,%xmm2
1032 vpaddq %xmm2,%xmm11,%xmm11
1033 vpmuludq %xmm9,%xmm3,%xmm3
1034 vpaddq %xmm3,%xmm10,%xmm10
1036 vpshufd $0x10,0(%rdi),%xmm2
1037 vpmuludq %xmm7,%xmm4,%xmm1
1038 vpaddq %xmm1,%xmm14,%xmm14
1039 vpmuludq %xmm6,%xmm4,%xmm0
1040 vpaddq %xmm0,%xmm13,%xmm13
1041 vpshufd $0x10,16(%rdi),%xmm3
1042 vpmuludq %xmm5,%xmm4,%xmm4
1043 vpaddq %xmm4,%xmm12,%xmm12
1044 vpmuludq %xmm9,%xmm2,%xmm1
1045 vpaddq %xmm1,%xmm11,%xmm11
1046 vpshufd $0x10,32(%rdi),%xmm4
1047 vpmuludq %xmm8,%xmm2,%xmm2
1048 vpaddq %xmm2,%xmm10,%xmm10
1050 vpmuludq %xmm6,%xmm3,%xmm0
1051 vpaddq %xmm0,%xmm14,%xmm14
1052 vpmuludq %xmm5,%xmm3,%xmm3
1053 vpaddq %xmm3,%xmm13,%xmm13
1054 vpshufd $0x10,48(%rdi),%xmm2
1055 vpmuludq %xmm9,%xmm4,%xmm1
1056 vpaddq %xmm1,%xmm12,%xmm12
1057 vpshufd $0x10,64(%rdi),%xmm3
1058 vpmuludq %xmm8,%xmm4,%xmm0
1059 vpaddq %xmm0,%xmm11,%xmm11
1060 vpmuludq %xmm7,%xmm4,%xmm4
1061 vpaddq %xmm4,%xmm10,%xmm10
1063 vpmuludq %xmm5,%xmm2,%xmm2
1064 vpaddq %xmm2,%xmm14,%xmm14
1065 vpmuludq %xmm9,%xmm3,%xmm1
1066 vpaddq %xmm1,%xmm13,%xmm13
1067 vpmuludq %xmm8,%xmm3,%xmm0
1068 vpaddq %xmm0,%xmm12,%xmm12
1069 vpmuludq %xmm7,%xmm3,%xmm1
1070 vpaddq %xmm1,%xmm11,%xmm11
1071 vpmuludq %xmm6,%xmm3,%xmm3
1072 vpaddq %xmm3,%xmm10,%xmm10
1076 vmovdqu 0(%rsi),%xmm0
1077 vmovdqu 16(%rsi),%xmm1
1079 vpsrldq $6,%xmm0,%xmm2
1080 vpsrldq $6,%xmm1,%xmm3
1081 vpunpckhqdq %xmm1,%xmm0,%xmm4
1082 vpunpcklqdq %xmm1,%xmm0,%xmm0
1083 vpunpcklqdq %xmm3,%xmm2,%xmm3
1085 vpsrlq $40,%xmm4,%xmm4
1086 vpsrlq $26,%xmm0,%xmm1
1087 vpand %xmm15,%xmm0,%xmm0
1088 vpsrlq $4,%xmm3,%xmm2
1089 vpand %xmm15,%xmm1,%xmm1
1090 vpsrlq $30,%xmm3,%xmm3
1091 vpand %xmm15,%xmm2,%xmm2
1092 vpand %xmm15,%xmm3,%xmm3
1093 vpor 32(%rcx),%xmm4,%xmm4
1095 vpshufd $0x32,-64(%rdi),%xmm9
1096 vpaddq 0(%r11),%xmm0,%xmm0
1097 vpaddq 16(%r11),%xmm1,%xmm1
1098 vpaddq 32(%r11),%xmm2,%xmm2
1099 vpaddq 48(%r11),%xmm3,%xmm3
1100 vpaddq 64(%r11),%xmm4,%xmm4
1105 vpmuludq %xmm0,%xmm9,%xmm5
1106 vpaddq %xmm5,%xmm10,%xmm10
1107 vpmuludq %xmm1,%xmm9,%xmm6
1108 vpaddq %xmm6,%xmm11,%xmm11
1109 vpmuludq %xmm2,%xmm9,%xmm5
1110 vpaddq %xmm5,%xmm12,%xmm12
1111 vpshufd $0x32,-48(%rdi),%xmm7
1112 vpmuludq %xmm3,%xmm9,%xmm6
1113 vpaddq %xmm6,%xmm13,%xmm13
1114 vpmuludq %xmm4,%xmm9,%xmm9
1115 vpaddq %xmm9,%xmm14,%xmm14
1117 vpmuludq %xmm3,%xmm7,%xmm5
1118 vpaddq %xmm5,%xmm14,%xmm14
1119 vpshufd $0x32,-32(%rdi),%xmm8
1120 vpmuludq %xmm2,%xmm7,%xmm6
1121 vpaddq %xmm6,%xmm13,%xmm13
1122 vpshufd $0x32,-16(%rdi),%xmm9
1123 vpmuludq %xmm1,%xmm7,%xmm5
1124 vpaddq %xmm5,%xmm12,%xmm12
1125 vpmuludq %xmm0,%xmm7,%xmm7
1126 vpaddq %xmm7,%xmm11,%xmm11
1127 vpmuludq %xmm4,%xmm8,%xmm8
1128 vpaddq %xmm8,%xmm10,%xmm10
1130 vpshufd $0x32,0(%rdi),%xmm7
1131 vpmuludq %xmm2,%xmm9,%xmm6
1132 vpaddq %xmm6,%xmm14,%xmm14
1133 vpmuludq %xmm1,%xmm9,%xmm5
1134 vpaddq %xmm5,%xmm13,%xmm13
1135 vpshufd $0x32,16(%rdi),%xmm8
1136 vpmuludq %xmm0,%xmm9,%xmm9
1137 vpaddq %xmm9,%xmm12,%xmm12
1138 vpmuludq %xmm4,%xmm7,%xmm6
1139 vpaddq %xmm6,%xmm11,%xmm11
1140 vpshufd $0x32,32(%rdi),%xmm9
1141 vpmuludq %xmm3,%xmm7,%xmm7
1142 vpaddq %xmm7,%xmm10,%xmm10
1144 vpmuludq %xmm1,%xmm8,%xmm5
1145 vpaddq %xmm5,%xmm14,%xmm14
1146 vpmuludq %xmm0,%xmm8,%xmm8
1147 vpaddq %xmm8,%xmm13,%xmm13
1148 vpshufd $0x32,48(%rdi),%xmm7
1149 vpmuludq %xmm4,%xmm9,%xmm6
1150 vpaddq %xmm6,%xmm12,%xmm12
1151 vpshufd $0x32,64(%rdi),%xmm8
1152 vpmuludq %xmm3,%xmm9,%xmm5
1153 vpaddq %xmm5,%xmm11,%xmm11
1154 vpmuludq %xmm2,%xmm9,%xmm9
1155 vpaddq %xmm9,%xmm10,%xmm10
1157 vpmuludq %xmm0,%xmm7,%xmm7
1158 vpaddq %xmm7,%xmm14,%xmm14
1159 vpmuludq %xmm4,%xmm8,%xmm6
1160 vpaddq %xmm6,%xmm13,%xmm13
1161 vpmuludq %xmm3,%xmm8,%xmm5
1162 vpaddq %xmm5,%xmm12,%xmm12
1163 vpmuludq %xmm2,%xmm8,%xmm6
1164 vpaddq %xmm6,%xmm11,%xmm11
1165 vpmuludq %xmm1,%xmm8,%xmm8
1166 vpaddq %xmm8,%xmm10,%xmm10
1172 vpsrldq $8,%xmm14,%xmm9
1173 vpsrldq $8,%xmm13,%xmm8
1174 vpsrldq $8,%xmm11,%xmm6
1175 vpsrldq $8,%xmm10,%xmm5
1176 vpsrldq $8,%xmm12,%xmm7
1177 vpaddq %xmm8,%xmm13,%xmm13
1178 vpaddq %xmm9,%xmm14,%xmm14
1179 vpaddq %xmm5,%xmm10,%xmm10
1180 vpaddq %xmm6,%xmm11,%xmm11
1181 vpaddq %xmm7,%xmm12,%xmm12
1186 vpsrlq $26,%xmm13,%xmm3
1187 vpand %xmm15,%xmm13,%xmm13
1188 vpaddq %xmm3,%xmm14,%xmm14
1190 vpsrlq $26,%xmm10,%xmm0
1191 vpand %xmm15,%xmm10,%xmm10
1192 vpaddq %xmm0,%xmm11,%xmm11
1194 vpsrlq $26,%xmm14,%xmm4
1195 vpand %xmm15,%xmm14,%xmm14
1197 vpsrlq $26,%xmm11,%xmm1
1198 vpand %xmm15,%xmm11,%xmm11
1199 vpaddq %xmm1,%xmm12,%xmm12
1201 vpaddq %xmm4,%xmm10,%xmm10
1202 vpsllq $2,%xmm4,%xmm4
1203 vpaddq %xmm4,%xmm10,%xmm10
1205 vpsrlq $26,%xmm12,%xmm2
1206 vpand %xmm15,%xmm12,%xmm12
1207 vpaddq %xmm2,%xmm13,%xmm13
1209 vpsrlq $26,%xmm10,%xmm0
1210 vpand %xmm15,%xmm10,%xmm10
1211 vpaddq %xmm0,%xmm11,%xmm11
1213 vpsrlq $26,%xmm13,%xmm3
1214 vpand %xmm15,%xmm13,%xmm13
1215 vpaddq %xmm3,%xmm14,%xmm14
1217 vmovd %xmm10,-112(%rdi)
1218 vmovd %xmm11,-108(%rdi)
1219 vmovd %xmm12,-104(%rdi)
1220 vmovd %xmm13,-100(%rdi)
1221 vmovd %xmm14,-96(%rdi)
1227 .size poly1305_blocks_avx,.-poly1305_blocks_avx
1229 .type poly1305_emit_avx,@function
1282 .size poly1305_emit_avx,.-poly1305_emit_avx
1283 .type poly1305_blocks_avx2,@function
1285 poly1305_blocks_avx2:
1306 .cfi_adjust_cfa_offset 8
1307 .cfi_offset %rbx,-16
1309 .cfi_adjust_cfa_offset 8
1310 .cfi_offset %rbp,-24
1312 .cfi_adjust_cfa_offset 8
1313 .cfi_offset %r12,-32
1315 .cfi_adjust_cfa_offset 8
1316 .cfi_offset %r13,-40
1318 .cfi_adjust_cfa_offset 8
1319 .cfi_offset %r14,-48
1321 .cfi_adjust_cfa_offset 8
1322 .cfi_offset %r15,-56
1336 andq $-2147483648,%r8
1339 andq $-2147483648,%r9
1370 .Lbase2_26_pre_avx2:
1377 call __poly1305_block
1381 jnz .Lbase2_26_pre_avx2
1384 jz .Lstore_base2_64_avx2
1393 andq $0x3ffffff,%rax
1395 andq $0x3ffffff,%rdx
1399 andq $0x3ffffff,%r14
1401 andq $0x3ffffff,%rbx
1405 jz .Lstore_base2_26_avx2
1415 .Lstore_base2_64_avx2:
1422 .Lstore_base2_26_avx2:
1443 .cfi_adjust_cfa_offset -48
1445 .Lblocks_avx2_epilogue:
1453 .cfi_adjust_cfa_offset 8
1454 .cfi_offset %rbx,-16
1456 .cfi_adjust_cfa_offset 8
1457 .cfi_offset %rbp,-24
1459 .cfi_adjust_cfa_offset 8
1460 .cfi_offset %r12,-32
1462 .cfi_adjust_cfa_offset 8
1463 .cfi_offset %r13,-40
1465 .cfi_adjust_cfa_offset 8
1466 .cfi_offset %r14,-48
1468 .cfi_adjust_cfa_offset 8
1469 .cfi_offset %r15,-56
1470 .Lbase2_64_avx2_body:
1489 .Lbase2_64_pre_avx2:
1496 call __poly1305_block
1500 jnz .Lbase2_64_pre_avx2
1510 andq $0x3ffffff,%rax
1512 andq $0x3ffffff,%rdx
1516 andq $0x3ffffff,%r14
1518 andq $0x3ffffff,%rbx
1528 call __poly1305_init_avx
1532 movl OPENSSL_ia32cap_P+8(%rip),%r10d
1533 movl $3221291008,%r11d
1549 .cfi_adjust_cfa_offset -48
1550 .Lbase2_64_avx2_epilogue:
1557 movl OPENSSL_ia32cap_P+8(%rip),%r10d
1561 vmovd 12(%rdi),%xmm3
1562 vmovd 16(%rdi),%xmm4
1566 .cfi_def_cfa %r11,16
1568 leaq .Lconst(%rip),%rcx
1569 leaq 48+64(%rdi),%rdi
1570 vmovdqa 96(%rcx),%ymm7
1573 vmovdqu -64(%rdi),%xmm9
1575 vmovdqu -48(%rdi),%xmm10
1576 vmovdqu -32(%rdi),%xmm6
1577 vmovdqu -16(%rdi),%xmm11
1578 vmovdqu 0(%rdi),%xmm12
1579 vmovdqu 16(%rdi),%xmm13
1581 vmovdqu 32(%rdi),%xmm14
1582 vpermd %ymm9,%ymm7,%ymm9
1583 vmovdqu 48(%rdi),%xmm15
1584 vpermd %ymm10,%ymm7,%ymm10
1585 vmovdqu 64(%rdi),%xmm5
1586 vpermd %ymm6,%ymm7,%ymm6
1587 vmovdqa %ymm9,0(%rsp)
1588 vpermd %ymm11,%ymm7,%ymm11
1589 vmovdqa %ymm10,32-144(%rax)
1590 vpermd %ymm12,%ymm7,%ymm12
1591 vmovdqa %ymm6,64-144(%rax)
1592 vpermd %ymm13,%ymm7,%ymm13
1593 vmovdqa %ymm11,96-144(%rax)
1594 vpermd %ymm14,%ymm7,%ymm14
1595 vmovdqa %ymm12,128-144(%rax)
1596 vpermd %ymm15,%ymm7,%ymm15
1597 vmovdqa %ymm13,160-144(%rax)
1598 vpermd %ymm5,%ymm7,%ymm5
1599 vmovdqa %ymm14,192-144(%rax)
1600 vmovdqa %ymm15,224-144(%rax)
1601 vmovdqa %ymm5,256-144(%rax)
1602 vmovdqa 64(%rcx),%ymm5
1606 vmovdqu 0(%rsi),%xmm7
1607 vmovdqu 16(%rsi),%xmm8
1608 vinserti128 $1,32(%rsi),%ymm7,%ymm7
1609 vinserti128 $1,48(%rsi),%ymm8,%ymm8
1612 vpsrldq $6,%ymm7,%ymm9
1613 vpsrldq $6,%ymm8,%ymm10
1614 vpunpckhqdq %ymm8,%ymm7,%ymm6
1615 vpunpcklqdq %ymm10,%ymm9,%ymm9
1616 vpunpcklqdq %ymm8,%ymm7,%ymm7
1618 vpsrlq $30,%ymm9,%ymm10
1619 vpsrlq $4,%ymm9,%ymm9
1620 vpsrlq $26,%ymm7,%ymm8
1621 vpsrlq $40,%ymm6,%ymm6
1622 vpand %ymm5,%ymm9,%ymm9
1623 vpand %ymm5,%ymm7,%ymm7
1624 vpand %ymm5,%ymm8,%ymm8
1625 vpand %ymm5,%ymm10,%ymm10
1626 vpor 32(%rcx),%ymm6,%ymm6
1628 vpaddq %ymm2,%ymm9,%ymm2
1643 vpaddq %ymm0,%ymm7,%ymm0
1644 vmovdqa 0(%rsp),%ymm7
1645 vpaddq %ymm1,%ymm8,%ymm1
1646 vmovdqa 32(%rsp),%ymm8
1647 vpaddq %ymm3,%ymm10,%ymm3
1648 vmovdqa 96(%rsp),%ymm9
1649 vpaddq %ymm4,%ymm6,%ymm4
1650 vmovdqa 48(%rax),%ymm10
1651 vmovdqa 112(%rax),%ymm5
1668 vpmuludq %ymm2,%ymm7,%ymm13
1669 vpmuludq %ymm2,%ymm8,%ymm14
1670 vpmuludq %ymm2,%ymm9,%ymm15
1671 vpmuludq %ymm2,%ymm10,%ymm11
1672 vpmuludq %ymm2,%ymm5,%ymm12
1674 vpmuludq %ymm0,%ymm8,%ymm6
1675 vpmuludq %ymm1,%ymm8,%ymm2
1676 vpaddq %ymm6,%ymm12,%ymm12
1677 vpaddq %ymm2,%ymm13,%ymm13
1678 vpmuludq %ymm3,%ymm8,%ymm6
1679 vpmuludq 64(%rsp),%ymm4,%ymm2
1680 vpaddq %ymm6,%ymm15,%ymm15
1681 vpaddq %ymm2,%ymm11,%ymm11
1682 vmovdqa -16(%rax),%ymm8
1684 vpmuludq %ymm0,%ymm7,%ymm6
1685 vpmuludq %ymm1,%ymm7,%ymm2
1686 vpaddq %ymm6,%ymm11,%ymm11
1687 vpaddq %ymm2,%ymm12,%ymm12
1688 vpmuludq %ymm3,%ymm7,%ymm6
1689 vpmuludq %ymm4,%ymm7,%ymm2
1690 vmovdqu 0(%rsi),%xmm7
1691 vpaddq %ymm6,%ymm14,%ymm14
1692 vpaddq %ymm2,%ymm15,%ymm15
1693 vinserti128 $1,32(%rsi),%ymm7,%ymm7
1695 vpmuludq %ymm3,%ymm8,%ymm6
1696 vpmuludq %ymm4,%ymm8,%ymm2
1697 vmovdqu 16(%rsi),%xmm8
1698 vpaddq %ymm6,%ymm11,%ymm11
1699 vpaddq %ymm2,%ymm12,%ymm12
1700 vmovdqa 16(%rax),%ymm2
1701 vpmuludq %ymm1,%ymm9,%ymm6
1702 vpmuludq %ymm0,%ymm9,%ymm9
1703 vpaddq %ymm6,%ymm14,%ymm14
1704 vpaddq %ymm9,%ymm13,%ymm13
1705 vinserti128 $1,48(%rsi),%ymm8,%ymm8
1708 vpmuludq %ymm1,%ymm2,%ymm6
1709 vpmuludq %ymm0,%ymm2,%ymm2
1710 vpsrldq $6,%ymm7,%ymm9
1711 vpaddq %ymm6,%ymm15,%ymm15
1712 vpaddq %ymm2,%ymm14,%ymm14
1713 vpmuludq %ymm3,%ymm10,%ymm6
1714 vpmuludq %ymm4,%ymm10,%ymm2
1715 vpsrldq $6,%ymm8,%ymm10
1716 vpaddq %ymm6,%ymm12,%ymm12
1717 vpaddq %ymm2,%ymm13,%ymm13
1718 vpunpckhqdq %ymm8,%ymm7,%ymm6
1720 vpmuludq %ymm3,%ymm5,%ymm3
1721 vpmuludq %ymm4,%ymm5,%ymm4
1722 vpunpcklqdq %ymm8,%ymm7,%ymm7
1723 vpaddq %ymm3,%ymm13,%ymm2
1724 vpaddq %ymm4,%ymm14,%ymm3
1725 vpunpcklqdq %ymm10,%ymm9,%ymm10
1726 vpmuludq 80(%rax),%ymm0,%ymm4
1727 vpmuludq %ymm1,%ymm5,%ymm0
1728 vmovdqa 64(%rcx),%ymm5
1729 vpaddq %ymm4,%ymm15,%ymm4
1730 vpaddq %ymm0,%ymm11,%ymm0
1735 vpsrlq $26,%ymm3,%ymm14
1736 vpand %ymm5,%ymm3,%ymm3
1737 vpaddq %ymm14,%ymm4,%ymm4
1739 vpsrlq $26,%ymm0,%ymm11
1740 vpand %ymm5,%ymm0,%ymm0
1741 vpaddq %ymm11,%ymm12,%ymm1
1743 vpsrlq $26,%ymm4,%ymm15
1744 vpand %ymm5,%ymm4,%ymm4
1746 vpsrlq $4,%ymm10,%ymm9
1748 vpsrlq $26,%ymm1,%ymm12
1749 vpand %ymm5,%ymm1,%ymm1
1750 vpaddq %ymm12,%ymm2,%ymm2
1752 vpaddq %ymm15,%ymm0,%ymm0
1753 vpsllq $2,%ymm15,%ymm15
1754 vpaddq %ymm15,%ymm0,%ymm0
1756 vpand %ymm5,%ymm9,%ymm9
1757 vpsrlq $26,%ymm7,%ymm8
1759 vpsrlq $26,%ymm2,%ymm13
1760 vpand %ymm5,%ymm2,%ymm2
1761 vpaddq %ymm13,%ymm3,%ymm3
1763 vpaddq %ymm9,%ymm2,%ymm2
1764 vpsrlq $30,%ymm10,%ymm10
1766 vpsrlq $26,%ymm0,%ymm11
1767 vpand %ymm5,%ymm0,%ymm0
1768 vpaddq %ymm11,%ymm1,%ymm1
1770 vpsrlq $40,%ymm6,%ymm6
1772 vpsrlq $26,%ymm3,%ymm14
1773 vpand %ymm5,%ymm3,%ymm3
1774 vpaddq %ymm14,%ymm4,%ymm4
1776 vpand %ymm5,%ymm7,%ymm7
1777 vpand %ymm5,%ymm8,%ymm8
1778 vpand %ymm5,%ymm10,%ymm10
1779 vpor 32(%rcx),%ymm6,%ymm6
1793 vpaddq %ymm0,%ymm7,%ymm0
1794 vmovdqu 4(%rsp),%ymm7
1795 vpaddq %ymm1,%ymm8,%ymm1
1796 vmovdqu 36(%rsp),%ymm8
1797 vpaddq %ymm3,%ymm10,%ymm3
1798 vmovdqu 100(%rsp),%ymm9
1799 vpaddq %ymm4,%ymm6,%ymm4
1800 vmovdqu 52(%rax),%ymm10
1801 vmovdqu 116(%rax),%ymm5
1803 vpmuludq %ymm2,%ymm7,%ymm13
1804 vpmuludq %ymm2,%ymm8,%ymm14
1805 vpmuludq %ymm2,%ymm9,%ymm15
1806 vpmuludq %ymm2,%ymm10,%ymm11
1807 vpmuludq %ymm2,%ymm5,%ymm12
1809 vpmuludq %ymm0,%ymm8,%ymm6
1810 vpmuludq %ymm1,%ymm8,%ymm2
1811 vpaddq %ymm6,%ymm12,%ymm12
1812 vpaddq %ymm2,%ymm13,%ymm13
1813 vpmuludq %ymm3,%ymm8,%ymm6
1814 vpmuludq 68(%rsp),%ymm4,%ymm2
1815 vpaddq %ymm6,%ymm15,%ymm15
1816 vpaddq %ymm2,%ymm11,%ymm11
1818 vpmuludq %ymm0,%ymm7,%ymm6
1819 vpmuludq %ymm1,%ymm7,%ymm2
1820 vpaddq %ymm6,%ymm11,%ymm11
1821 vmovdqu -12(%rax),%ymm8
1822 vpaddq %ymm2,%ymm12,%ymm12
1823 vpmuludq %ymm3,%ymm7,%ymm6
1824 vpmuludq %ymm4,%ymm7,%ymm2
1825 vpaddq %ymm6,%ymm14,%ymm14
1826 vpaddq %ymm2,%ymm15,%ymm15
1828 vpmuludq %ymm3,%ymm8,%ymm6
1829 vpmuludq %ymm4,%ymm8,%ymm2
1830 vpaddq %ymm6,%ymm11,%ymm11
1831 vpaddq %ymm2,%ymm12,%ymm12
1832 vmovdqu 20(%rax),%ymm2
1833 vpmuludq %ymm1,%ymm9,%ymm6
1834 vpmuludq %ymm0,%ymm9,%ymm9
1835 vpaddq %ymm6,%ymm14,%ymm14
1836 vpaddq %ymm9,%ymm13,%ymm13
1838 vpmuludq %ymm1,%ymm2,%ymm6
1839 vpmuludq %ymm0,%ymm2,%ymm2
1840 vpaddq %ymm6,%ymm15,%ymm15
1841 vpaddq %ymm2,%ymm14,%ymm14
1842 vpmuludq %ymm3,%ymm10,%ymm6
1843 vpmuludq %ymm4,%ymm10,%ymm2
1844 vpaddq %ymm6,%ymm12,%ymm12
1845 vpaddq %ymm2,%ymm13,%ymm13
1847 vpmuludq %ymm3,%ymm5,%ymm3
1848 vpmuludq %ymm4,%ymm5,%ymm4
1849 vpaddq %ymm3,%ymm13,%ymm2
1850 vpaddq %ymm4,%ymm14,%ymm3
1851 vpmuludq 84(%rax),%ymm0,%ymm4
1852 vpmuludq %ymm1,%ymm5,%ymm0
1853 vmovdqa 64(%rcx),%ymm5
1854 vpaddq %ymm4,%ymm15,%ymm4
1855 vpaddq %ymm0,%ymm11,%ymm0
1860 vpsrldq $8,%ymm12,%ymm8
1861 vpsrldq $8,%ymm2,%ymm9
1862 vpsrldq $8,%ymm3,%ymm10
1863 vpsrldq $8,%ymm4,%ymm6
1864 vpsrldq $8,%ymm0,%ymm7
1865 vpaddq %ymm8,%ymm12,%ymm12
1866 vpaddq %ymm9,%ymm2,%ymm2
1867 vpaddq %ymm10,%ymm3,%ymm3
1868 vpaddq %ymm6,%ymm4,%ymm4
1869 vpaddq %ymm7,%ymm0,%ymm0
1871 vpermq $0x2,%ymm3,%ymm10
1872 vpermq $0x2,%ymm4,%ymm6
1873 vpermq $0x2,%ymm0,%ymm7
1874 vpermq $0x2,%ymm12,%ymm8
1875 vpermq $0x2,%ymm2,%ymm9
1876 vpaddq %ymm10,%ymm3,%ymm3
1877 vpaddq %ymm6,%ymm4,%ymm4
1878 vpaddq %ymm7,%ymm0,%ymm0
1879 vpaddq %ymm8,%ymm12,%ymm12
1880 vpaddq %ymm9,%ymm2,%ymm2
1885 vpsrlq $26,%ymm3,%ymm14
1886 vpand %ymm5,%ymm3,%ymm3
1887 vpaddq %ymm14,%ymm4,%ymm4
1889 vpsrlq $26,%ymm0,%ymm11
1890 vpand %ymm5,%ymm0,%ymm0
1891 vpaddq %ymm11,%ymm12,%ymm1
1893 vpsrlq $26,%ymm4,%ymm15
1894 vpand %ymm5,%ymm4,%ymm4
1896 vpsrlq $26,%ymm1,%ymm12
1897 vpand %ymm5,%ymm1,%ymm1
1898 vpaddq %ymm12,%ymm2,%ymm2
1900 vpaddq %ymm15,%ymm0,%ymm0
1901 vpsllq $2,%ymm15,%ymm15
1902 vpaddq %ymm15,%ymm0,%ymm0
1904 vpsrlq $26,%ymm2,%ymm13
1905 vpand %ymm5,%ymm2,%ymm2
1906 vpaddq %ymm13,%ymm3,%ymm3
1908 vpsrlq $26,%ymm0,%ymm11
1909 vpand %ymm5,%ymm0,%ymm0
1910 vpaddq %ymm11,%ymm1,%ymm1
1912 vpsrlq $26,%ymm3,%ymm14
1913 vpand %ymm5,%ymm3,%ymm3
1914 vpaddq %ymm14,%ymm4,%ymm4
1916 vmovd %xmm0,-112(%rdi)
1917 vmovd %xmm1,-108(%rdi)
1918 vmovd %xmm2,-104(%rdi)
1919 vmovd %xmm3,-100(%rdi)
1920 vmovd %xmm4,-96(%rdi)
1926 .size poly1305_blocks_avx2,.-poly1305_blocks_avx2
1930 .long 0x0ffffff,0,0x0ffffff,0,0x0ffffff,0,0x0ffffff,0
1932 .long 16777216,0,16777216,0,16777216,0,16777216,0
1934 .long 0x3ffffff,0,0x3ffffff,0,0x3ffffff,0,0x3ffffff,0
1936 .long 2,2,2,3,2,0,2,1
1938 .long 0,0,0,1, 0,2,0,3, 0,4,0,5, 0,6,0,7
1941 .long 0,1,1,2,2,3,7,7
1945 .quad 0xfffffffffff,0xfffffffffff,0x3ffffffffff,0xffffffffffffffff
1953 .quad 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff
1954 .quad 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff
1956 .quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff
1957 .quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff
1958 .byte 80,111,108,121,49,51,48,53,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
1960 .globl xor128_encrypt_n_pad
1961 .type xor128_encrypt_n_pad,@function
1963 xor128_encrypt_n_pad:
1971 movdqu (%rsi,%rdx,1),%xmm0
1973 movdqu %xmm0,(%rdi,%rdx,1)
1987 movb (%rsi,%rdx,1),%al
1989 movb %al,(%rdi,%rdx,1)
2005 .size xor128_encrypt_n_pad,.-xor128_encrypt_n_pad
2007 .globl xor128_decrypt_n_pad
2008 .type xor128_decrypt_n_pad,@function
2010 xor128_decrypt_n_pad:
2018 movdqu (%rsi,%rdx,1),%xmm0
2021 movdqu %xmm1,(%rdi,%rdx,1)
2037 movb (%rsi,%rdx,1),%r11b
2040 movb %al,(%rdi,%rdx,1)
2056 .size xor128_decrypt_n_pad,.-xor128_decrypt_n_pad