diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2022-01-03 01:57:29 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2022-01-03 12:57:36 +0100 |
commit | 05fd13ebec869fc5e6f226481a2405a2685e8db1 (patch) | |
tree | bd112a629c547af9bb2a974d1b47fd5f193c3813 | |
parent | 5c0c5582319a5123635c9fd62f8e99ef01cceb3f (diff) | |
download | busybox-w32-05fd13ebec869fc5e6f226481a2405a2685e8db1.tar.gz busybox-w32-05fd13ebec869fc5e6f226481a2405a2685e8db1.tar.bz2 busybox-w32-05fd13ebec869fc5e6f226481a2405a2685e8db1.zip |
libbb/sha1: x86_64 version: move to a separate .S file, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | libbb/Kbuild.src | 1 | ||||
-rw-r--r-- | libbb/hash_md5_sha.c | 392 | ||||
-rw-r--r-- | libbb/hash_md5_sha_x86-64.S | 1349 |
3 files changed, 1353 insertions, 389 deletions
diff --git a/libbb/Kbuild.src b/libbb/Kbuild.src index 2fa239857..19b8aad60 100644 --- a/libbb/Kbuild.src +++ b/libbb/Kbuild.src | |||
@@ -56,6 +56,7 @@ lib-y += login.o | |||
56 | lib-y += make_directory.o | 56 | lib-y += make_directory.o |
57 | lib-y += makedev.o | 57 | lib-y += makedev.o |
58 | lib-y += hash_md5_sha.o | 58 | lib-y += hash_md5_sha.o |
59 | lib-y += hash_md5_sha_x86-64.o | ||
59 | # Alternative (disabled) MD5 implementation | 60 | # Alternative (disabled) MD5 implementation |
60 | #lib-y += hash_md5prime.o | 61 | #lib-y += hash_md5prime.o |
61 | lib-y += messages.o | 62 | lib-y += messages.o |
diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c index 7eca3de4d..ee19c1cb7 100644 --- a/libbb/hash_md5_sha.c +++ b/libbb/hash_md5_sha.c | |||
@@ -696,397 +696,11 @@ static void FAST_FUNC sha1_process_block64(sha1_ctx_t *ctx UNUSED_PARAM) | |||
696 | #undef RCONST | 696 | #undef RCONST |
697 | } | 697 | } |
698 | # elif defined(__GNUC__) && defined(__x86_64__) | 698 | # elif defined(__GNUC__) && defined(__x86_64__) |
699 | static void FAST_FUNC sha1_process_block64(sha1_ctx_t *ctx UNUSED_PARAM) | ||
700 | { | ||
701 | BUILD_BUG_ON(offsetof(sha1_ctx_t, hash) != 80); | ||
702 | asm( | ||
703 | "\n\ | ||
704 | pushq %r15 # \n\ | ||
705 | pushq %r14 # \n\ | ||
706 | pushq %r13 # \n\ | ||
707 | pushq %r12 # \n\ | ||
708 | pushq %rbp # \n\ | ||
709 | pushq %rbx # \n\ | ||
710 | pushq %rdi # we need ctx at the end \n\ | ||
711 | \n\ | ||
712 | #Register and stack use: \n\ | ||
713 | # eax..edx: a..d \n\ | ||
714 | # ebp: e \n\ | ||
715 | # esi,edi: temps \n\ | ||
716 | # -32+4*n(%rsp),r8...r15: W[0..7,8..15] \n\ | ||
717 | .macro loadW n,r \n\ | ||
718 | .if \\n == 0 \n\ | ||
719 | movl -32+4*0(%rsp),\\r \n\ | ||
720 | .endif \n\ | ||
721 | .if \\n == 1 \n\ | ||
722 | movl -32+4*1(%rsp),\\r \n\ | ||
723 | .endif \n\ | ||
724 | .if \\n == 2 \n\ | ||
725 | movl -32+4*2(%rsp),\\r \n\ | ||
726 | .endif \n\ | ||
727 | .if \\n == 3 \n\ | ||
728 | movl -32+4*3(%rsp),\\r \n\ | ||
729 | .endif \n\ | ||
730 | .if \\n == 4 \n\ | ||
731 | movl -32+4*4(%rsp),\\r \n\ | ||
732 | .endif \n\ | ||
733 | .if \\n == 5 \n\ | ||
734 | movl -32+4*5(%rsp),\\r \n\ | ||
735 | .endif \n\ | ||
736 | .if \\n == 6 \n\ | ||
737 | movl -32+4*6(%rsp),\\r \n\ | ||
738 | .endif \n\ | ||
739 | .if \\n == 7 \n\ | ||
740 | movl -32+4*7(%rsp),\\r \n\ | ||
741 | .endif \n\ | ||
742 | .if \\n == 8 \n\ | ||
743 | movl %r8d,\\r \n\ | ||
744 | .endif \n\ | ||
745 | .if \\n == 9 \n\ | ||
746 | movl %r9d,\\r \n\ | ||
747 | .endif \n\ | ||
748 | .if \\n == 10 \n\ | ||
749 | movl %r10d,\\r \n\ | ||
750 | .endif \n\ | ||
751 | .if \\n == 11 \n\ | ||
752 | movl %r11d,\\r \n\ | ||
753 | .endif \n\ | ||
754 | .if \\n == 12 \n\ | ||
755 | movl %r12d,\\r \n\ | ||
756 | .endif \n\ | ||
757 | .if \\n == 13 \n\ | ||
758 | movl %r13d,\\r \n\ | ||
759 | .endif \n\ | ||
760 | .if \\n == 14 \n\ | ||
761 | movl %r14d,\\r \n\ | ||
762 | .endif \n\ | ||
763 | .if \\n == 15 \n\ | ||
764 | movl %r15d,\\r \n\ | ||
765 | .endif \n\ | ||
766 | .endm \n\ | ||
767 | \n\ | ||
768 | .macro storeW r,n \n\ | ||
769 | .if \\n == 0 \n\ | ||
770 | movl \\r,-32+4*0(%rsp) \n\ | ||
771 | .endif \n\ | ||
772 | .if \\n == 1 \n\ | ||
773 | movl \\r,-32+4*1(%rsp) \n\ | ||
774 | .endif \n\ | ||
775 | .if \\n == 2 \n\ | ||
776 | movl \\r,-32+4*2(%rsp) \n\ | ||
777 | .endif \n\ | ||
778 | .if \\n == 3 \n\ | ||
779 | movl \\r,-32+4*3(%rsp) \n\ | ||
780 | .endif \n\ | ||
781 | .if \\n == 4 \n\ | ||
782 | movl \\r,-32+4*4(%rsp) \n\ | ||
783 | .endif \n\ | ||
784 | .if \\n == 5 \n\ | ||
785 | movl \\r,-32+4*5(%rsp) \n\ | ||
786 | .endif \n\ | ||
787 | .if \\n == 6 \n\ | ||
788 | movl \\r,-32+4*6(%rsp) \n\ | ||
789 | .endif \n\ | ||
790 | .if \\n == 7 \n\ | ||
791 | movl \\r,-32+4*7(%rsp) \n\ | ||
792 | .endif \n\ | ||
793 | .if \\n == 8 \n\ | ||
794 | movl \\r,%r8d \n\ | ||
795 | .endif \n\ | ||
796 | .if \\n == 9 \n\ | ||
797 | movl \\r,%r9d \n\ | ||
798 | .endif \n\ | ||
799 | .if \\n == 10 \n\ | ||
800 | movl \\r,%r10d \n\ | ||
801 | .endif \n\ | ||
802 | .if \\n == 11 \n\ | ||
803 | movl \\r,%r11d \n\ | ||
804 | .endif \n\ | ||
805 | .if \\n == 12 \n\ | ||
806 | movl \\r,%r12d \n\ | ||
807 | .endif \n\ | ||
808 | .if \\n == 13 \n\ | ||
809 | movl \\r,%r13d \n\ | ||
810 | .endif \n\ | ||
811 | .if \\n == 14 \n\ | ||
812 | movl \\r,%r14d \n\ | ||
813 | .endif \n\ | ||
814 | .if \\n == 15 \n\ | ||
815 | movl \\r,%r15d \n\ | ||
816 | .endif \n\ | ||
817 | .endm \n\ | ||
818 | \n\ | ||
819 | .macro xorW n,r \n\ | ||
820 | .if \\n == 0 \n\ | ||
821 | xorl -32+4*0(%rsp),\\r \n\ | ||
822 | .endif \n\ | ||
823 | .if \\n == 1 \n\ | ||
824 | xorl -32+4*1(%rsp),\\r \n\ | ||
825 | .endif \n\ | ||
826 | .if \\n == 2 \n\ | ||
827 | xorl -32+4*2(%rsp),\\r \n\ | ||
828 | .endif \n\ | ||
829 | .if \\n == 3 \n\ | ||
830 | xorl -32+4*3(%rsp),\\r \n\ | ||
831 | .endif \n\ | ||
832 | .if \\n == 4 \n\ | ||
833 | xorl -32+4*4(%rsp),\\r \n\ | ||
834 | .endif \n\ | ||
835 | .if \\n == 5 \n\ | ||
836 | xorl -32+4*5(%rsp),\\r \n\ | ||
837 | .endif \n\ | ||
838 | .if \\n == 6 \n\ | ||
839 | xorl -32+4*6(%rsp),\\r \n\ | ||
840 | .endif \n\ | ||
841 | .if \\n == 7 \n\ | ||
842 | xorl -32+4*7(%rsp),\\r \n\ | ||
843 | .endif \n\ | ||
844 | .if \\n == 8 \n\ | ||
845 | xorl %r8d,\\r \n\ | ||
846 | .endif \n\ | ||
847 | .if \\n == 9 \n\ | ||
848 | xorl %r9d,\\r \n\ | ||
849 | .endif \n\ | ||
850 | .if \\n == 10 \n\ | ||
851 | xorl %r10d,\\r \n\ | ||
852 | .endif \n\ | ||
853 | .if \\n == 11 \n\ | ||
854 | xorl %r11d,\\r \n\ | ||
855 | .endif \n\ | ||
856 | .if \\n == 12 \n\ | ||
857 | xorl %r12d,\\r \n\ | ||
858 | .endif \n\ | ||
859 | .if \\n == 13 \n\ | ||
860 | xorl %r13d,\\r \n\ | ||
861 | .endif \n\ | ||
862 | .if \\n == 14 \n\ | ||
863 | xorl %r14d,\\r \n\ | ||
864 | .endif \n\ | ||
865 | .if \\n == 15 \n\ | ||
866 | xorl %r15d,\\r \n\ | ||
867 | .endif \n\ | ||
868 | .endm \n\ | ||
869 | \n\ | ||
870 | movq 4*8(%rdi), %r8 \n\ | ||
871 | bswap %r8 \n\ | ||
872 | movl %r8d, %r9d \n\ | ||
873 | shrq $32, %r8 \n\ | ||
874 | movq 4*10(%rdi), %r10 \n\ | ||
875 | bswap %r10 \n\ | ||
876 | movl %r10d, %r11d \n\ | ||
877 | shrq $32, %r10 \n\ | ||
878 | movq 4*12(%rdi), %r12 \n\ | ||
879 | bswap %r12 \n\ | ||
880 | movl %r12d, %r13d \n\ | ||
881 | shrq $32, %r12 \n\ | ||
882 | movq 4*14(%rdi), %r14 \n\ | ||
883 | bswap %r14 \n\ | ||
884 | movl %r14d, %r15d \n\ | ||
885 | shrq $32, %r14 \n\ | ||
886 | \n\ | ||
887 | movl $3, %eax \n\ | ||
888 | 1: \n\ | ||
889 | movq (%rdi,%rax,8), %rsi \n\ | ||
890 | bswap %rsi \n\ | ||
891 | rolq $32, %rsi \n\ | ||
892 | movq %rsi, -32(%rsp,%rax,8) \n\ | ||
893 | decl %eax \n\ | ||
894 | jns 1b \n\ | ||
895 | movl 80(%rdi), %eax # a = ctx->hash[0] \n\ | ||
896 | movl 84(%rdi), %ebx # b = ctx->hash[1] \n\ | ||
897 | movl 88(%rdi), %ecx # c = ctx->hash[2] \n\ | ||
898 | movl 92(%rdi), %edx # d = ctx->hash[3] \n\ | ||
899 | movl 96(%rdi), %ebp # e = ctx->hash[4] \n\ | ||
900 | " | ||
901 | #define RD1As(a,b,c,d,e, n, RCONST) \ | ||
902 | "\n\ | ||
903 | ##loadW "n", %esi # n=0, W[0] already in %esi \n\ | ||
904 | movl %e"c", %edi # c \n\ | ||
905 | xorl %e"d", %edi # ^d \n\ | ||
906 | andl %e"b", %edi # &b \n\ | ||
907 | xorl %e"d", %edi # (((c ^ d) & b) ^ d) \n\ | ||
908 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + W[n] \n\ | ||
909 | addl %edi, %e"e" # e += (((c ^ d) & b) ^ d) \n\ | ||
910 | movl %e"a", %esi # \n\ | ||
911 | roll $5, %esi # rotl32(a,5) \n\ | ||
912 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
913 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
914 | " | ||
915 | #define RD1Bs(a,b,c,d,e, n, RCONST) \ | ||
916 | "\n\ | ||
917 | loadW "n", %esi # W[n] \n\ | ||
918 | movl %e"c", %edi # c \n\ | ||
919 | xorl %e"d", %edi # ^d \n\ | ||
920 | andl %e"b", %edi # &b \n\ | ||
921 | xorl %e"d", %edi # (((c ^ d) & b) ^ d) \n\ | ||
922 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + W[n] \n\ | ||
923 | addl %edi, %e"e" # e += (((c ^ d) & b) ^ d) \n\ | ||
924 | movl %e"a", %esi # \n\ | ||
925 | roll $5, %esi # rotl32(a,5) \n\ | ||
926 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
927 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
928 | " | ||
929 | #define RD1Cs(a,b,c,d,e, n, RCONST) \ | ||
930 | "\n\ | ||
931 | movl %e"c", %edi # c \n\ | ||
932 | xorl %e"d", %edi # ^d \n\ | ||
933 | andl %e"b", %edi # &b \n\ | ||
934 | xorl %e"d", %edi # (((c ^ d) & b) ^ d) \n\ | ||
935 | leal "RCONST"(%r"e",%r"n"), %e"e" # e += RCONST + W[n] \n\ | ||
936 | addl %edi, %e"e" # e += (((c ^ d) & b) ^ d) \n\ | ||
937 | movl %e"a", %esi # \n\ | ||
938 | roll $5, %esi # rotl32(a,5) \n\ | ||
939 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
940 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
941 | " | ||
942 | #define RD1Ds(a,b,c,d,e, n13,n8,n2,n, RCONST) \ | ||
943 | "\n\ | ||
944 | loadW "n13", %esi # W[(n+13) & 15] \n\ | ||
945 | xorW "n8", %esi # ^W[(n+8) & 15] \n\ | ||
946 | xorW "n2", %esi # ^W[(n+2) & 15] \n\ | ||
947 | xorW "n", %esi # ^W[n & 15] \n\ | ||
948 | roll %esi # \n\ | ||
949 | storeW %esi, "n" # store to W[n & 15] \n\ | ||
950 | movl %e"c", %edi # c \n\ | ||
951 | xorl %e"d", %edi # ^d \n\ | ||
952 | andl %e"b", %edi # &b \n\ | ||
953 | xorl %e"d", %edi # (((c ^ d) & b) ^ d) \n\ | ||
954 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + mixed_W \n\ | ||
955 | addl %edi, %e"e" # e += (((c ^ d) & b) ^ d) \n\ | ||
956 | movl %e"a", %esi # \n\ | ||
957 | roll $5, %esi # rotl32(a,5) \n\ | ||
958 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
959 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
960 | " | ||
961 | #define RD1A(a,b,c,d,e, n) RD1As(STR(a),STR(b),STR(c),STR(d),STR(e), STR(n), STR(RCONST)) | ||
962 | #define RD1B(a,b,c,d,e, n) RD1Bs(STR(a),STR(b),STR(c),STR(d),STR(e), STR(n), STR(RCONST)) | ||
963 | #define RD1C(a,b,c,d,e, n) RD1Cs(STR(a),STR(b),STR(c),STR(d),STR(e), STR(n), STR(RCONST)) | ||
964 | #define RD1D(a,b,c,d,e, n) RD1Ds(STR(a),STR(b),STR(c),STR(d),STR(e), STR(((n+13)&15)), STR(((n+8)&15)), STR(((n+2)&15)), STR(((n)&15)), STR(RCONST)) | ||
965 | #undef RCONST | ||
966 | #define RCONST 0x5A827999 | ||
967 | RD1A(ax,bx,cx,dx,bp, 0) RD1B(bp,ax,bx,cx,dx, 1) RD1B(dx,bp,ax,bx,cx, 2) RD1B(cx,dx,bp,ax,bx, 3) RD1B(bx,cx,dx,bp,ax, 4) | ||
968 | RD1B(ax,bx,cx,dx,bp, 5) RD1B(bp,ax,bx,cx,dx, 6) RD1B(dx,bp,ax,bx,cx, 7) RD1C(cx,dx,bp,ax,bx, 8) RD1C(bx,cx,dx,bp,ax, 9) | ||
969 | RD1C(ax,bx,cx,dx,bp,10) RD1C(bp,ax,bx,cx,dx,11) RD1C(dx,bp,ax,bx,cx,12) RD1C(cx,dx,bp,ax,bx,13) RD1C(bx,cx,dx,bp,ax,14) | ||
970 | RD1C(ax,bx,cx,dx,bp,15) RD1D(bp,ax,bx,cx,dx,16) RD1D(dx,bp,ax,bx,cx,17) RD1D(cx,dx,bp,ax,bx,18) RD1D(bx,cx,dx,bp,ax,19) | ||
971 | #define RD2s(a,b,c,d,e, n13,n8,n2,n, RCONST) \ | ||
972 | "\n\ | ||
973 | loadW "n13", %esi # W[(n+13) & 15] \n\ | ||
974 | xorW "n8", %esi # ^W[(n+8) & 15] \n\ | ||
975 | xorW "n2", %esi # ^W[(n+2) & 15] \n\ | ||
976 | xorW "n", %esi # ^W[n & 15] \n\ | ||
977 | roll %esi # \n\ | ||
978 | storeW %esi, "n" # store to W[n & 15] \n\ | ||
979 | movl %e"c", %edi # c \n\ | ||
980 | xorl %e"d", %edi # ^d \n\ | ||
981 | xorl %e"b", %edi # ^b \n\ | ||
982 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + mixed_W \n\ | ||
983 | addl %edi, %e"e" # e += (c ^ d ^ b) \n\ | ||
984 | movl %e"a", %esi # \n\ | ||
985 | roll $5, %esi # rotl32(a,5) \n\ | ||
986 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
987 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
988 | " | ||
989 | #define RD2(a,b,c,d,e, n) RD2s(STR(a),STR(b),STR(c),STR(d),STR(e), STR(((20+n+13)&15)), STR(((20+n+8)&15)), STR(((20+n+2)&15)), STR(((20+n)&15)), STR(RCONST)) | ||
990 | #undef RCONST | ||
991 | #define RCONST 0x6ED9EBA1 | ||
992 | RD2(ax,bx,cx,dx,bp, 0) RD2(bp,ax,bx,cx,dx, 1) RD2(dx,bp,ax,bx,cx, 2) RD2(cx,dx,bp,ax,bx, 3) RD2(bx,cx,dx,bp,ax, 4) | ||
993 | RD2(ax,bx,cx,dx,bp, 5) RD2(bp,ax,bx,cx,dx, 6) RD2(dx,bp,ax,bx,cx, 7) RD2(cx,dx,bp,ax,bx, 8) RD2(bx,cx,dx,bp,ax, 9) | ||
994 | RD2(ax,bx,cx,dx,bp,10) RD2(bp,ax,bx,cx,dx,11) RD2(dx,bp,ax,bx,cx,12) RD2(cx,dx,bp,ax,bx,13) RD2(bx,cx,dx,bp,ax,14) | ||
995 | RD2(ax,bx,cx,dx,bp,15) RD2(bp,ax,bx,cx,dx,16) RD2(dx,bp,ax,bx,cx,17) RD2(cx,dx,bp,ax,bx,18) RD2(bx,cx,dx,bp,ax,19) | ||
996 | |||
997 | #define RD3s(a,b,c,d,e, n13,n8,n2,n, RCONST) \ | ||
998 | "\n\ | ||
999 | movl %e"b", %edi # di: b \n\ | ||
1000 | movl %e"b", %esi # si: b \n\ | ||
1001 | orl %e"c", %edi # di: b | c \n\ | ||
1002 | andl %e"c", %esi # si: b & c \n\ | ||
1003 | andl %e"d", %edi # di: (b | c) & d \n\ | ||
1004 | orl %esi, %edi # ((b | c) & d) | (b & c) \n\ | ||
1005 | loadW "n13", %esi # W[(n+13) & 15] \n\ | ||
1006 | xorW "n8", %esi # ^W[(n+8) & 15] \n\ | ||
1007 | xorW "n2", %esi # ^W[(n+2) & 15] \n\ | ||
1008 | xorW "n", %esi # ^W[n & 15] \n\ | ||
1009 | roll %esi # \n\ | ||
1010 | storeW %esi, "n" # store to W[n & 15] \n\ | ||
1011 | addl %edi, %e"e" # += ((b | c) & d) | (b & c)\n\ | ||
1012 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + mixed_W \n\ | ||
1013 | movl %e"a", %esi # \n\ | ||
1014 | roll $5, %esi # rotl32(a,5) \n\ | ||
1015 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
1016 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
1017 | " | ||
1018 | #define RD3(a,b,c,d,e, n) RD3s(STR(a),STR(b),STR(c),STR(d),STR(e), STR(((40+n+13)&15)), STR(((40+n+8)&15)), STR(((40+n+2)&15)), STR(((40+n)&15)), STR(RCONST)) | ||
1019 | #undef RCONST | ||
1020 | //#define RCONST 0x8F1BBCDC "out of range for signed 32bit displacement" | ||
1021 | #define RCONST -0x70e44324 | ||
1022 | RD3(ax,bx,cx,dx,bp, 0) RD3(bp,ax,bx,cx,dx, 1) RD3(dx,bp,ax,bx,cx, 2) RD3(cx,dx,bp,ax,bx, 3) RD3(bx,cx,dx,bp,ax, 4) | ||
1023 | RD3(ax,bx,cx,dx,bp, 5) RD3(bp,ax,bx,cx,dx, 6) RD3(dx,bp,ax,bx,cx, 7) RD3(cx,dx,bp,ax,bx, 8) RD3(bx,cx,dx,bp,ax, 9) | ||
1024 | RD3(ax,bx,cx,dx,bp,10) RD3(bp,ax,bx,cx,dx,11) RD3(dx,bp,ax,bx,cx,12) RD3(cx,dx,bp,ax,bx,13) RD3(bx,cx,dx,bp,ax,14) | ||
1025 | RD3(ax,bx,cx,dx,bp,15) RD3(bp,ax,bx,cx,dx,16) RD3(dx,bp,ax,bx,cx,17) RD3(cx,dx,bp,ax,bx,18) RD3(bx,cx,dx,bp,ax,19) | ||
1026 | 699 | ||
1027 | #define RD4As(a,b,c,d,e, n13,n8,n2,n, RCONST) \ | 700 | /* in hash_md5_sha_x86-64.S */ |
1028 | "\n\ | 701 | struct ASM_expects_80 { char t[1 - 2*(offsetof(sha1_ctx_t, hash) != 80)]; }; |
1029 | loadW "n13", %esi # W[(n+13) & 15] \n\ | 702 | void FAST_FUNC sha1_process_block64(sha1_ctx_t *ctx UNUSED_PARAM); |
1030 | xorW "n8", %esi # ^W[(n+8) & 15] \n\ | ||
1031 | xorW "n2", %esi # ^W[(n+2) & 15] \n\ | ||
1032 | xorW "n", %esi # ^W[n & 15] \n\ | ||
1033 | roll %esi # \n\ | ||
1034 | storeW %esi, "n" # store to W[n & 15] \n\ | ||
1035 | movl %e"c", %edi # c \n\ | ||
1036 | xorl %e"d", %edi # ^d \n\ | ||
1037 | xorl %e"b", %edi # ^b \n\ | ||
1038 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + mixed_W \n\ | ||
1039 | addl %edi, %e"e" # e += (c ^ d ^ b) \n\ | ||
1040 | movl %e"a", %esi # \n\ | ||
1041 | roll $5, %esi # rotl32(a,5) \n\ | ||
1042 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
1043 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
1044 | " | ||
1045 | #define RD4Bs(a,b,c,d,e, n13,n8,n2,n, RCONST) \ | ||
1046 | "\n\ | ||
1047 | loadW "n13", %esi # W[(n+13) & 15] \n\ | ||
1048 | xorW "n8", %esi # ^W[(n+8) & 15] \n\ | ||
1049 | xorW "n2", %esi # ^W[(n+2) & 15] \n\ | ||
1050 | xorW "n", %esi # ^W[n & 15] \n\ | ||
1051 | roll %esi # \n\ | ||
1052 | #storeW %esi, "n" # store to W[n & 15] elided \n\ | ||
1053 | movl %e"c", %edi # c \n\ | ||
1054 | xorl %e"d", %edi # ^d \n\ | ||
1055 | xorl %e"b", %edi # ^b \n\ | ||
1056 | leal "RCONST"(%r"e",%rsi), %e"e" # e += RCONST + mixed_W \n\ | ||
1057 | addl %edi, %e"e" # e += (c ^ d ^ b) \n\ | ||
1058 | movl %e"a", %esi # \n\ | ||
1059 | roll $5, %esi # rotl32(a,5) \n\ | ||
1060 | addl %esi, %e"e" # e += rotl32(a,5) \n\ | ||
1061 | rorl $2, %e"b" # b = rotl32(b,30) \n\ | ||
1062 | " | ||
1063 | #define RD4A(a,b,c,d,e, n) RD4As(STR(a),STR(b),STR(c),STR(d),STR(e), STR(((60+n+13)&15)), STR(((60+n+8)&15)), STR(((60+n+2)&15)), STR(((60+n)&15)), STR(RCONST)) | ||
1064 | #define RD4B(a,b,c,d,e, n) RD4Bs(STR(a),STR(b),STR(c),STR(d),STR(e), STR(((60+n+13)&15)), STR(((60+n+8)&15)), STR(((60+n+2)&15)), STR(((60+n)&15)), STR(RCONST)) | ||
1065 | #undef RCONST | ||
1066 | //#define RCONST 0xCA62C1D6 "out of range for signed 32bit displacement" | ||
1067 | #define RCONST -0x359d3e2a | ||
1068 | RD4A(ax,bx,cx,dx,bp, 0) RD4A(bp,ax,bx,cx,dx, 1) RD4A(dx,bp,ax,bx,cx, 2) RD4A(cx,dx,bp,ax,bx, 3) RD4A(bx,cx,dx,bp,ax, 4) | ||
1069 | RD4A(ax,bx,cx,dx,bp, 5) RD4A(bp,ax,bx,cx,dx, 6) RD4A(dx,bp,ax,bx,cx, 7) RD4A(cx,dx,bp,ax,bx, 8) RD4A(bx,cx,dx,bp,ax, 9) | ||
1070 | RD4A(ax,bx,cx,dx,bp,10) RD4A(bp,ax,bx,cx,dx,11) RD4A(dx,bp,ax,bx,cx,12) RD4A(cx,dx,bp,ax,bx,13) RD4A(bx,cx,dx,bp,ax,14) | ||
1071 | RD4A(ax,bx,cx,dx,bp,15) RD4A(bp,ax,bx,cx,dx,16) RD4B(dx,bp,ax,bx,cx,17) RD4B(cx,dx,bp,ax,bx,18) RD4B(bx,cx,dx,bp,ax,19) | ||
1072 | 703 | ||
1073 | "\n\ | ||
1074 | popq %rdi # \n\ | ||
1075 | addl %eax, 80(%rdi) # ctx->hash[0] += a \n\ | ||
1076 | addl %ebx, 84(%rdi) # ctx->hash[1] += b \n\ | ||
1077 | addl %ecx, 88(%rdi) # ctx->hash[2] += c \n\ | ||
1078 | addl %edx, 92(%rdi) # ctx->hash[3] += d \n\ | ||
1079 | addl %ebp, 96(%rdi) # ctx->hash[4] += e \n\ | ||
1080 | popq %rbx # \n\ | ||
1081 | popq %rbp # \n\ | ||
1082 | popq %r12 # \n\ | ||
1083 | popq %r13 # \n\ | ||
1084 | popq %r14 # \n\ | ||
1085 | popq %r15 # \n\ | ||
1086 | " | ||
1087 | ); /* asm */ | ||
1088 | #undef RCONST | ||
1089 | } | ||
1090 | # else | 704 | # else |
1091 | /* Fast, fully-unrolled SHA1. +3800 bytes of code on x86. | 705 | /* Fast, fully-unrolled SHA1. +3800 bytes of code on x86. |
1092 | * It seems further speedup can be achieved by handling more than | 706 | * It seems further speedup can be achieved by handling more than |
diff --git a/libbb/hash_md5_sha_x86-64.S b/libbb/hash_md5_sha_x86-64.S new file mode 100644 index 000000000..466cd9ae9 --- /dev/null +++ b/libbb/hash_md5_sha_x86-64.S | |||
@@ -0,0 +1,1349 @@ | |||
1 | ### Generated by hash_md5_sha_x86-64.S.sh ### | ||
2 | #if defined(__GNUC__) && defined(__x86_64__) | ||
3 | .section .text.sha1_process_block64,"ax",@progbits | ||
4 | .globl sha1_process_block64 | ||
5 | .hidden sha1_process_block64 | ||
6 | .type sha1_process_block64, @function | ||
7 | sha1_process_block64: | ||
8 | pushq %r15 # | ||
9 | pushq %r14 # | ||
10 | pushq %r13 # | ||
11 | pushq %r12 # | ||
12 | pushq %rbp # | ||
13 | pushq %rbx # | ||
14 | pushq %rdi # we need ctx at the end | ||
15 | |||
16 | #Register and stack use: | ||
17 | # eax..edx: a..d | ||
18 | # ebp: e | ||
19 | # esi,edi: temps | ||
20 | # -32+4*n(%rsp),r8...r15: W[0..7,8..15] | ||
21 | |||
22 | movq 4*8(%rdi), %r8 | ||
23 | bswapq %r8 | ||
24 | movl %r8d, %r9d | ||
25 | shrq $32, %r8 | ||
26 | movq 4*10(%rdi), %r10 | ||
27 | bswapq %r10 | ||
28 | movl %r10d, %r11d | ||
29 | shrq $32, %r10 | ||
30 | movq 4*12(%rdi), %r12 | ||
31 | bswapq %r12 | ||
32 | movl %r12d, %r13d | ||
33 | shrq $32, %r12 | ||
34 | movq 4*14(%rdi), %r14 | ||
35 | bswapq %r14 | ||
36 | movl %r14d, %r15d | ||
37 | shrq $32, %r14 | ||
38 | |||
39 | movl $3, %eax | ||
40 | 1: | ||
41 | movq (%rdi,%rax,8), %rsi | ||
42 | bswapq %rsi | ||
43 | rolq $32, %rsi | ||
44 | movq %rsi, -32(%rsp,%rax,8) | ||
45 | decl %eax | ||
46 | jns 1b | ||
47 | movl 80(%rdi), %eax # a = ctx->hash[0] | ||
48 | movl 84(%rdi), %ebx # b = ctx->hash[1] | ||
49 | movl 88(%rdi), %ecx # c = ctx->hash[2] | ||
50 | movl 92(%rdi), %edx # d = ctx->hash[3] | ||
51 | movl 96(%rdi), %ebp # e = ctx->hash[4] | ||
52 | |||
53 | # 0 | ||
54 | # W[0], already in %esi | ||
55 | movl %ecx, %edi # c | ||
56 | xorl %edx, %edi # ^d | ||
57 | andl %ebx, %edi # &b | ||
58 | xorl %edx, %edi # (((c ^ d) & b) ^ d) | ||
59 | leal 0x5A827999(%rbp,%rsi),%ebp # e += RCONST + W[n] | ||
60 | addl %edi, %ebp # e += (((c ^ d) & b) ^ d) | ||
61 | movl %eax, %esi # | ||
62 | roll $5, %esi # rotl32(a,5) | ||
63 | addl %esi, %ebp # e += rotl32(a,5) | ||
64 | rorl $2, %ebx # b = rotl32(b,30) | ||
65 | # 1 | ||
66 | movl -32+4*1(%rsp), %esi # W[n] | ||
67 | movl %ebx, %edi # c | ||
68 | xorl %ecx, %edi # ^d | ||
69 | andl %eax, %edi # &b | ||
70 | xorl %ecx, %edi # (((c ^ d) & b) ^ d) | ||
71 | leal 0x5A827999(%rdx,%rsi),%edx # e += RCONST + W[n] | ||
72 | addl %edi, %edx # e += (((c ^ d) & b) ^ d) | ||
73 | movl %ebp, %esi # | ||
74 | roll $5, %esi # rotl32(a,5) | ||
75 | addl %esi, %edx # e += rotl32(a,5) | ||
76 | rorl $2, %eax # b = rotl32(b,30) | ||
77 | # 2 | ||
78 | movl -32+4*2(%rsp), %esi # W[n] | ||
79 | movl %eax, %edi # c | ||
80 | xorl %ebx, %edi # ^d | ||
81 | andl %ebp, %edi # &b | ||
82 | xorl %ebx, %edi # (((c ^ d) & b) ^ d) | ||
83 | leal 0x5A827999(%rcx,%rsi),%ecx # e += RCONST + W[n] | ||
84 | addl %edi, %ecx # e += (((c ^ d) & b) ^ d) | ||
85 | movl %edx, %esi # | ||
86 | roll $5, %esi # rotl32(a,5) | ||
87 | addl %esi, %ecx # e += rotl32(a,5) | ||
88 | rorl $2, %ebp # b = rotl32(b,30) | ||
89 | # 3 | ||
90 | movl -32+4*3(%rsp), %esi # W[n] | ||
91 | movl %ebp, %edi # c | ||
92 | xorl %eax, %edi # ^d | ||
93 | andl %edx, %edi # &b | ||
94 | xorl %eax, %edi # (((c ^ d) & b) ^ d) | ||
95 | leal 0x5A827999(%rbx,%rsi),%ebx # e += RCONST + W[n] | ||
96 | addl %edi, %ebx # e += (((c ^ d) & b) ^ d) | ||
97 | movl %ecx, %esi # | ||
98 | roll $5, %esi # rotl32(a,5) | ||
99 | addl %esi, %ebx # e += rotl32(a,5) | ||
100 | rorl $2, %edx # b = rotl32(b,30) | ||
101 | # 4 | ||
102 | movl -32+4*4(%rsp), %esi # W[n] | ||
103 | movl %edx, %edi # c | ||
104 | xorl %ebp, %edi # ^d | ||
105 | andl %ecx, %edi # &b | ||
106 | xorl %ebp, %edi # (((c ^ d) & b) ^ d) | ||
107 | leal 0x5A827999(%rax,%rsi),%eax # e += RCONST + W[n] | ||
108 | addl %edi, %eax # e += (((c ^ d) & b) ^ d) | ||
109 | movl %ebx, %esi # | ||
110 | roll $5, %esi # rotl32(a,5) | ||
111 | addl %esi, %eax # e += rotl32(a,5) | ||
112 | rorl $2, %ecx # b = rotl32(b,30) | ||
113 | # 5 | ||
114 | movl -32+4*5(%rsp), %esi # W[n] | ||
115 | movl %ecx, %edi # c | ||
116 | xorl %edx, %edi # ^d | ||
117 | andl %ebx, %edi # &b | ||
118 | xorl %edx, %edi # (((c ^ d) & b) ^ d) | ||
119 | leal 0x5A827999(%rbp,%rsi),%ebp # e += RCONST + W[n] | ||
120 | addl %edi, %ebp # e += (((c ^ d) & b) ^ d) | ||
121 | movl %eax, %esi # | ||
122 | roll $5, %esi # rotl32(a,5) | ||
123 | addl %esi, %ebp # e += rotl32(a,5) | ||
124 | rorl $2, %ebx # b = rotl32(b,30) | ||
125 | # 6 | ||
126 | movl -32+4*6(%rsp), %esi # W[n] | ||
127 | movl %ebx, %edi # c | ||
128 | xorl %ecx, %edi # ^d | ||
129 | andl %eax, %edi # &b | ||
130 | xorl %ecx, %edi # (((c ^ d) & b) ^ d) | ||
131 | leal 0x5A827999(%rdx,%rsi),%edx # e += RCONST + W[n] | ||
132 | addl %edi, %edx # e += (((c ^ d) & b) ^ d) | ||
133 | movl %ebp, %esi # | ||
134 | roll $5, %esi # rotl32(a,5) | ||
135 | addl %esi, %edx # e += rotl32(a,5) | ||
136 | rorl $2, %eax # b = rotl32(b,30) | ||
137 | # 7 | ||
138 | movl -32+4*7(%rsp), %esi # W[n] | ||
139 | movl %eax, %edi # c | ||
140 | xorl %ebx, %edi # ^d | ||
141 | andl %ebp, %edi # &b | ||
142 | xorl %ebx, %edi # (((c ^ d) & b) ^ d) | ||
143 | leal 0x5A827999(%rcx,%rsi),%ecx # e += RCONST + W[n] | ||
144 | addl %edi, %ecx # e += (((c ^ d) & b) ^ d) | ||
145 | movl %edx, %esi # | ||
146 | roll $5, %esi # rotl32(a,5) | ||
147 | addl %esi, %ecx # e += rotl32(a,5) | ||
148 | rorl $2, %ebp # b = rotl32(b,30) | ||
149 | # 8 | ||
150 | # W[n], in %r8 | ||
151 | movl %ebp, %edi # c | ||
152 | xorl %eax, %edi # ^d | ||
153 | andl %edx, %edi # &b | ||
154 | xorl %eax, %edi # (((c ^ d) & b) ^ d) | ||
155 | leal 0x5A827999(%rbx,%r8),%ebx # e += RCONST + W[n] | ||
156 | addl %edi, %ebx # e += (((c ^ d) & b) ^ d) | ||
157 | movl %ecx, %esi # | ||
158 | roll $5, %esi # rotl32(a,5) | ||
159 | addl %esi, %ebx # e += rotl32(a,5) | ||
160 | rorl $2, %edx # b = rotl32(b,30) | ||
161 | # 9 | ||
162 | # W[n], in %r9 | ||
163 | movl %edx, %edi # c | ||
164 | xorl %ebp, %edi # ^d | ||
165 | andl %ecx, %edi # &b | ||
166 | xorl %ebp, %edi # (((c ^ d) & b) ^ d) | ||
167 | leal 0x5A827999(%rax,%r9),%eax # e += RCONST + W[n] | ||
168 | addl %edi, %eax # e += (((c ^ d) & b) ^ d) | ||
169 | movl %ebx, %esi # | ||
170 | roll $5, %esi # rotl32(a,5) | ||
171 | addl %esi, %eax # e += rotl32(a,5) | ||
172 | rorl $2, %ecx # b = rotl32(b,30) | ||
173 | # 10 | ||
174 | # W[n], in %r10 | ||
175 | movl %ecx, %edi # c | ||
176 | xorl %edx, %edi # ^d | ||
177 | andl %ebx, %edi # &b | ||
178 | xorl %edx, %edi # (((c ^ d) & b) ^ d) | ||
179 | leal 0x5A827999(%rbp,%r10),%ebp # e += RCONST + W[n] | ||
180 | addl %edi, %ebp # e += (((c ^ d) & b) ^ d) | ||
181 | movl %eax, %esi # | ||
182 | roll $5, %esi # rotl32(a,5) | ||
183 | addl %esi, %ebp # e += rotl32(a,5) | ||
184 | rorl $2, %ebx # b = rotl32(b,30) | ||
185 | # 11 | ||
186 | # W[n], in %r11 | ||
187 | movl %ebx, %edi # c | ||
188 | xorl %ecx, %edi # ^d | ||
189 | andl %eax, %edi # &b | ||
190 | xorl %ecx, %edi # (((c ^ d) & b) ^ d) | ||
191 | leal 0x5A827999(%rdx,%r11),%edx # e += RCONST + W[n] | ||
192 | addl %edi, %edx # e += (((c ^ d) & b) ^ d) | ||
193 | movl %ebp, %esi # | ||
194 | roll $5, %esi # rotl32(a,5) | ||
195 | addl %esi, %edx # e += rotl32(a,5) | ||
196 | rorl $2, %eax # b = rotl32(b,30) | ||
197 | # 12 | ||
198 | # W[n], in %r12 | ||
199 | movl %eax, %edi # c | ||
200 | xorl %ebx, %edi # ^d | ||
201 | andl %ebp, %edi # &b | ||
202 | xorl %ebx, %edi # (((c ^ d) & b) ^ d) | ||
203 | leal 0x5A827999(%rcx,%r12),%ecx # e += RCONST + W[n] | ||
204 | addl %edi, %ecx # e += (((c ^ d) & b) ^ d) | ||
205 | movl %edx, %esi # | ||
206 | roll $5, %esi # rotl32(a,5) | ||
207 | addl %esi, %ecx # e += rotl32(a,5) | ||
208 | rorl $2, %ebp # b = rotl32(b,30) | ||
209 | # 13 | ||
210 | # W[n], in %r13 | ||
211 | movl %ebp, %edi # c | ||
212 | xorl %eax, %edi # ^d | ||
213 | andl %edx, %edi # &b | ||
214 | xorl %eax, %edi # (((c ^ d) & b) ^ d) | ||
215 | leal 0x5A827999(%rbx,%r13),%ebx # e += RCONST + W[n] | ||
216 | addl %edi, %ebx # e += (((c ^ d) & b) ^ d) | ||
217 | movl %ecx, %esi # | ||
218 | roll $5, %esi # rotl32(a,5) | ||
219 | addl %esi, %ebx # e += rotl32(a,5) | ||
220 | rorl $2, %edx # b = rotl32(b,30) | ||
221 | # 14 | ||
222 | # W[n], in %r14 | ||
223 | movl %edx, %edi # c | ||
224 | xorl %ebp, %edi # ^d | ||
225 | andl %ecx, %edi # &b | ||
226 | xorl %ebp, %edi # (((c ^ d) & b) ^ d) | ||
227 | leal 0x5A827999(%rax,%r14),%eax # e += RCONST + W[n] | ||
228 | addl %edi, %eax # e += (((c ^ d) & b) ^ d) | ||
229 | movl %ebx, %esi # | ||
230 | roll $5, %esi # rotl32(a,5) | ||
231 | addl %esi, %eax # e += rotl32(a,5) | ||
232 | rorl $2, %ecx # b = rotl32(b,30) | ||
233 | # 15 | ||
234 | # W[n], in %r15 | ||
235 | movl %ecx, %edi # c | ||
236 | xorl %edx, %edi # ^d | ||
237 | andl %ebx, %edi # &b | ||
238 | xorl %edx, %edi # (((c ^ d) & b) ^ d) | ||
239 | leal 0x5A827999(%rbp,%r15),%ebp # e += RCONST + W[n] | ||
240 | addl %edi, %ebp # e += (((c ^ d) & b) ^ d) | ||
241 | movl %eax, %esi # | ||
242 | roll $5, %esi # rotl32(a,5) | ||
243 | addl %esi, %ebp # e += rotl32(a,5) | ||
244 | rorl $2, %ebx # b = rotl32(b,30) | ||
245 | # 16 | ||
246 | movl %r13d, %esi # W[(n+13) & 15] | ||
247 | xorl %r8d, %esi # ^W[(n+8) & 15] | ||
248 | xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15] | ||
249 | xorl -32+4*0(%rsp), %esi # ^W[n & 15] | ||
250 | roll %esi # | ||
251 | movl %esi, -32+4*0(%rsp) # store to W[n & 15] | ||
252 | movl %ebx, %edi # c | ||
253 | xorl %ecx, %edi # ^d | ||
254 | andl %eax, %edi # &b | ||
255 | xorl %ecx, %edi # (((c ^ d) & b) ^ d) | ||
256 | leal 0x5A827999(%rdx,%rsi),%edx # e += RCONST + W[n] | ||
257 | addl %edi, %edx # e += (((c ^ d) & b) ^ d) | ||
258 | movl %ebp, %esi # | ||
259 | roll $5, %esi # rotl32(a,5) | ||
260 | addl %esi, %edx # e += rotl32(a,5) | ||
261 | rorl $2, %eax # b = rotl32(b,30) | ||
262 | # 17 | ||
263 | movl %r14d, %esi # W[(n+13) & 15] | ||
264 | xorl %r9d, %esi # ^W[(n+8) & 15] | ||
265 | xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15] | ||
266 | xorl -32+4*1(%rsp), %esi # ^W[n & 15] | ||
267 | roll %esi # | ||
268 | movl %esi, -32+4*1(%rsp) # store to W[n & 15] | ||
269 | movl %eax, %edi # c | ||
270 | xorl %ebx, %edi # ^d | ||
271 | andl %ebp, %edi # &b | ||
272 | xorl %ebx, %edi # (((c ^ d) & b) ^ d) | ||
273 | leal 0x5A827999(%rcx,%rsi),%ecx # e += RCONST + W[n] | ||
274 | addl %edi, %ecx # e += (((c ^ d) & b) ^ d) | ||
275 | movl %edx, %esi # | ||
276 | roll $5, %esi # rotl32(a,5) | ||
277 | addl %esi, %ecx # e += rotl32(a,5) | ||
278 | rorl $2, %ebp # b = rotl32(b,30) | ||
279 | # 18 | ||
280 | movl %r15d, %esi # W[(n+13) & 15] | ||
281 | xorl %r10d, %esi # ^W[(n+8) & 15] | ||
282 | xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15] | ||
283 | xorl -32+4*2(%rsp), %esi # ^W[n & 15] | ||
284 | roll %esi # | ||
285 | movl %esi, -32+4*2(%rsp) # store to W[n & 15] | ||
286 | movl %ebp, %edi # c | ||
287 | xorl %eax, %edi # ^d | ||
288 | andl %edx, %edi # &b | ||
289 | xorl %eax, %edi # (((c ^ d) & b) ^ d) | ||
290 | leal 0x5A827999(%rbx,%rsi),%ebx # e += RCONST + W[n] | ||
291 | addl %edi, %ebx # e += (((c ^ d) & b) ^ d) | ||
292 | movl %ecx, %esi # | ||
293 | roll $5, %esi # rotl32(a,5) | ||
294 | addl %esi, %ebx # e += rotl32(a,5) | ||
295 | rorl $2, %edx # b = rotl32(b,30) | ||
296 | # 19 | ||
297 | movl -32+4*0(%rsp), %esi # W[(n+13) & 15] | ||
298 | xorl %r11d, %esi # ^W[(n+8) & 15] | ||
299 | xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15] | ||
300 | xorl -32+4*3(%rsp), %esi # ^W[n & 15] | ||
301 | roll %esi # | ||
302 | movl %esi, -32+4*3(%rsp) # store to W[n & 15] | ||
303 | movl %edx, %edi # c | ||
304 | xorl %ebp, %edi # ^d | ||
305 | andl %ecx, %edi # &b | ||
306 | xorl %ebp, %edi # (((c ^ d) & b) ^ d) | ||
307 | leal 0x5A827999(%rax,%rsi),%eax # e += RCONST + W[n] | ||
308 | addl %edi, %eax # e += (((c ^ d) & b) ^ d) | ||
309 | movl %ebx, %esi # | ||
310 | roll $5, %esi # rotl32(a,5) | ||
311 | addl %esi, %eax # e += rotl32(a,5) | ||
312 | rorl $2, %ecx # b = rotl32(b,30) | ||
313 | # 20 | ||
314 | movl -32+4*1(%rsp), %esi # W[(n+13) & 15] | ||
315 | xorl %r12d, %esi # ^W[(n+8) & 15] | ||
316 | xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15] | ||
317 | xorl -32+4*4(%rsp), %esi # ^W[n & 15] | ||
318 | roll %esi # | ||
319 | movl %esi, -32+4*4(%rsp) # store to W[n & 15] | ||
320 | movl %ecx, %edi # c | ||
321 | xorl %edx, %edi # ^d | ||
322 | xorl %ebx, %edi # ^b | ||
323 | leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
324 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
325 | movl %eax, %esi # | ||
326 | roll $5, %esi # rotl32(a,5) | ||
327 | addl %esi, %ebp # e += rotl32(a,5) | ||
328 | rorl $2, %ebx # b = rotl32(b,30) | ||
329 | # 21 | ||
330 | movl -32+4*2(%rsp), %esi # W[(n+13) & 15] | ||
331 | xorl %r13d, %esi # ^W[(n+8) & 15] | ||
332 | xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15] | ||
333 | xorl -32+4*5(%rsp), %esi # ^W[n & 15] | ||
334 | roll %esi # | ||
335 | movl %esi, -32+4*5(%rsp) # store to W[n & 15] | ||
336 | movl %ebx, %edi # c | ||
337 | xorl %ecx, %edi # ^d | ||
338 | xorl %eax, %edi # ^b | ||
339 | leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
340 | addl %edi, %edx # e += (c ^ d ^ b) | ||
341 | movl %ebp, %esi # | ||
342 | roll $5, %esi # rotl32(a,5) | ||
343 | addl %esi, %edx # e += rotl32(a,5) | ||
344 | rorl $2, %eax # b = rotl32(b,30) | ||
345 | # 22 | ||
346 | movl -32+4*3(%rsp), %esi # W[(n+13) & 15] | ||
347 | xorl %r14d, %esi # ^W[(n+8) & 15] | ||
348 | xorl %r8d, %esi # ^W[(n+2) & 15] | ||
349 | xorl -32+4*6(%rsp), %esi # ^W[n & 15] | ||
350 | roll %esi # | ||
351 | movl %esi, -32+4*6(%rsp) # store to W[n & 15] | ||
352 | movl %eax, %edi # c | ||
353 | xorl %ebx, %edi # ^d | ||
354 | xorl %ebp, %edi # ^b | ||
355 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
356 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
357 | movl %edx, %esi # | ||
358 | roll $5, %esi # rotl32(a,5) | ||
359 | addl %esi, %ecx # e += rotl32(a,5) | ||
360 | rorl $2, %ebp # b = rotl32(b,30) | ||
361 | # 23 | ||
362 | movl -32+4*4(%rsp), %esi # W[(n+13) & 15] | ||
363 | xorl %r15d, %esi # ^W[(n+8) & 15] | ||
364 | xorl %r9d, %esi # ^W[(n+2) & 15] | ||
365 | xorl -32+4*7(%rsp), %esi # ^W[n & 15] | ||
366 | roll %esi # | ||
367 | movl %esi, -32+4*7(%rsp) # store to W[n & 15] | ||
368 | movl %ebp, %edi # c | ||
369 | xorl %eax, %edi # ^d | ||
370 | xorl %edx, %edi # ^b | ||
371 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
372 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
373 | movl %ecx, %esi # | ||
374 | roll $5, %esi # rotl32(a,5) | ||
375 | addl %esi, %ebx # e += rotl32(a,5) | ||
376 | rorl $2, %edx # b = rotl32(b,30) | ||
377 | # 24 | ||
378 | movl -32+4*5(%rsp), %esi # W[(n+13) & 15] | ||
379 | xorl -32+4*0(%rsp), %esi # ^W[(n+8) & 15] | ||
380 | xorl %r10d, %esi # ^W[(n+2) & 15] | ||
381 | xorl %r8d, %esi # ^W[n & 15] | ||
382 | roll %esi # | ||
383 | movl %esi, %r8d # store to W[n & 15] | ||
384 | movl %edx, %edi # c | ||
385 | xorl %ebp, %edi # ^d | ||
386 | xorl %ecx, %edi # ^b | ||
387 | leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
388 | addl %edi, %eax # e += (c ^ d ^ b) | ||
389 | movl %ebx, %esi # | ||
390 | roll $5, %esi # rotl32(a,5) | ||
391 | addl %esi, %eax # e += rotl32(a,5) | ||
392 | rorl $2, %ecx # b = rotl32(b,30) | ||
393 | # 25 | ||
394 | movl -32+4*6(%rsp), %esi # W[(n+13) & 15] | ||
395 | xorl -32+4*1(%rsp), %esi # ^W[(n+8) & 15] | ||
396 | xorl %r11d, %esi # ^W[(n+2) & 15] | ||
397 | xorl %r9d, %esi # ^W[n & 15] | ||
398 | roll %esi # | ||
399 | movl %esi, %r9d # store to W[n & 15] | ||
400 | movl %ecx, %edi # c | ||
401 | xorl %edx, %edi # ^d | ||
402 | xorl %ebx, %edi # ^b | ||
403 | leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
404 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
405 | movl %eax, %esi # | ||
406 | roll $5, %esi # rotl32(a,5) | ||
407 | addl %esi, %ebp # e += rotl32(a,5) | ||
408 | rorl $2, %ebx # b = rotl32(b,30) | ||
409 | # 26 | ||
410 | movl -32+4*7(%rsp), %esi # W[(n+13) & 15] | ||
411 | xorl -32+4*2(%rsp), %esi # ^W[(n+8) & 15] | ||
412 | xorl %r12d, %esi # ^W[(n+2) & 15] | ||
413 | xorl %r10d, %esi # ^W[n & 15] | ||
414 | roll %esi # | ||
415 | movl %esi, %r10d # store to W[n & 15] | ||
416 | movl %ebx, %edi # c | ||
417 | xorl %ecx, %edi # ^d | ||
418 | xorl %eax, %edi # ^b | ||
419 | leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
420 | addl %edi, %edx # e += (c ^ d ^ b) | ||
421 | movl %ebp, %esi # | ||
422 | roll $5, %esi # rotl32(a,5) | ||
423 | addl %esi, %edx # e += rotl32(a,5) | ||
424 | rorl $2, %eax # b = rotl32(b,30) | ||
425 | # 27 | ||
426 | movl %r8d, %esi # W[(n+13) & 15] | ||
427 | xorl -32+4*3(%rsp), %esi # ^W[(n+8) & 15] | ||
428 | xorl %r13d, %esi # ^W[(n+2) & 15] | ||
429 | xorl %r11d, %esi # ^W[n & 15] | ||
430 | roll %esi # | ||
431 | movl %esi, %r11d # store to W[n & 15] | ||
432 | movl %eax, %edi # c | ||
433 | xorl %ebx, %edi # ^d | ||
434 | xorl %ebp, %edi # ^b | ||
435 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
436 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
437 | movl %edx, %esi # | ||
438 | roll $5, %esi # rotl32(a,5) | ||
439 | addl %esi, %ecx # e += rotl32(a,5) | ||
440 | rorl $2, %ebp # b = rotl32(b,30) | ||
441 | # 28 | ||
442 | movl %r9d, %esi # W[(n+13) & 15] | ||
443 | xorl -32+4*4(%rsp), %esi # ^W[(n+8) & 15] | ||
444 | xorl %r14d, %esi # ^W[(n+2) & 15] | ||
445 | xorl %r12d, %esi # ^W[n & 15] | ||
446 | roll %esi # | ||
447 | movl %esi, %r12d # store to W[n & 15] | ||
448 | movl %ebp, %edi # c | ||
449 | xorl %eax, %edi # ^d | ||
450 | xorl %edx, %edi # ^b | ||
451 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
452 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
453 | movl %ecx, %esi # | ||
454 | roll $5, %esi # rotl32(a,5) | ||
455 | addl %esi, %ebx # e += rotl32(a,5) | ||
456 | rorl $2, %edx # b = rotl32(b,30) | ||
457 | # 29 | ||
458 | movl %r10d, %esi # W[(n+13) & 15] | ||
459 | xorl -32+4*5(%rsp), %esi # ^W[(n+8) & 15] | ||
460 | xorl %r15d, %esi # ^W[(n+2) & 15] | ||
461 | xorl %r13d, %esi # ^W[n & 15] | ||
462 | roll %esi # | ||
463 | movl %esi, %r13d # store to W[n & 15] | ||
464 | movl %edx, %edi # c | ||
465 | xorl %ebp, %edi # ^d | ||
466 | xorl %ecx, %edi # ^b | ||
467 | leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
468 | addl %edi, %eax # e += (c ^ d ^ b) | ||
469 | movl %ebx, %esi # | ||
470 | roll $5, %esi # rotl32(a,5) | ||
471 | addl %esi, %eax # e += rotl32(a,5) | ||
472 | rorl $2, %ecx # b = rotl32(b,30) | ||
473 | # 30 | ||
474 | movl %r11d, %esi # W[(n+13) & 15] | ||
475 | xorl -32+4*6(%rsp), %esi # ^W[(n+8) & 15] | ||
476 | xorl -32+4*0(%rsp), %esi # ^W[(n+2) & 15] | ||
477 | xorl %r14d, %esi # ^W[n & 15] | ||
478 | roll %esi # | ||
479 | movl %esi, %r14d # store to W[n & 15] | ||
480 | movl %ecx, %edi # c | ||
481 | xorl %edx, %edi # ^d | ||
482 | xorl %ebx, %edi # ^b | ||
483 | leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
484 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
485 | movl %eax, %esi # | ||
486 | roll $5, %esi # rotl32(a,5) | ||
487 | addl %esi, %ebp # e += rotl32(a,5) | ||
488 | rorl $2, %ebx # b = rotl32(b,30) | ||
489 | # 31 | ||
490 | movl %r12d, %esi # W[(n+13) & 15] | ||
491 | xorl -32+4*7(%rsp), %esi # ^W[(n+8) & 15] | ||
492 | xorl -32+4*1(%rsp), %esi # ^W[(n+2) & 15] | ||
493 | xorl %r15d, %esi # ^W[n & 15] | ||
494 | roll %esi # | ||
495 | movl %esi, %r15d # store to W[n & 15] | ||
496 | movl %ebx, %edi # c | ||
497 | xorl %ecx, %edi # ^d | ||
498 | xorl %eax, %edi # ^b | ||
499 | leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
500 | addl %edi, %edx # e += (c ^ d ^ b) | ||
501 | movl %ebp, %esi # | ||
502 | roll $5, %esi # rotl32(a,5) | ||
503 | addl %esi, %edx # e += rotl32(a,5) | ||
504 | rorl $2, %eax # b = rotl32(b,30) | ||
505 | # 32 | ||
506 | movl %r13d, %esi # W[(n+13) & 15] | ||
507 | xorl %r8d, %esi # ^W[(n+8) & 15] | ||
508 | xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15] | ||
509 | xorl -32+4*0(%rsp), %esi # ^W[n & 15] | ||
510 | roll %esi # | ||
511 | movl %esi, -32+4*0(%rsp) # store to W[n & 15] | ||
512 | movl %eax, %edi # c | ||
513 | xorl %ebx, %edi # ^d | ||
514 | xorl %ebp, %edi # ^b | ||
515 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
516 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
517 | movl %edx, %esi # | ||
518 | roll $5, %esi # rotl32(a,5) | ||
519 | addl %esi, %ecx # e += rotl32(a,5) | ||
520 | rorl $2, %ebp # b = rotl32(b,30) | ||
521 | # 33 | ||
522 | movl %r14d, %esi # W[(n+13) & 15] | ||
523 | xorl %r9d, %esi # ^W[(n+8) & 15] | ||
524 | xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15] | ||
525 | xorl -32+4*1(%rsp), %esi # ^W[n & 15] | ||
526 | roll %esi # | ||
527 | movl %esi, -32+4*1(%rsp) # store to W[n & 15] | ||
528 | movl %ebp, %edi # c | ||
529 | xorl %eax, %edi # ^d | ||
530 | xorl %edx, %edi # ^b | ||
531 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
532 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
533 | movl %ecx, %esi # | ||
534 | roll $5, %esi # rotl32(a,5) | ||
535 | addl %esi, %ebx # e += rotl32(a,5) | ||
536 | rorl $2, %edx # b = rotl32(b,30) | ||
537 | # 34 | ||
538 | movl %r15d, %esi # W[(n+13) & 15] | ||
539 | xorl %r10d, %esi # ^W[(n+8) & 15] | ||
540 | xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15] | ||
541 | xorl -32+4*2(%rsp), %esi # ^W[n & 15] | ||
542 | roll %esi # | ||
543 | movl %esi, -32+4*2(%rsp) # store to W[n & 15] | ||
544 | movl %edx, %edi # c | ||
545 | xorl %ebp, %edi # ^d | ||
546 | xorl %ecx, %edi # ^b | ||
547 | leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
548 | addl %edi, %eax # e += (c ^ d ^ b) | ||
549 | movl %ebx, %esi # | ||
550 | roll $5, %esi # rotl32(a,5) | ||
551 | addl %esi, %eax # e += rotl32(a,5) | ||
552 | rorl $2, %ecx # b = rotl32(b,30) | ||
553 | # 35 | ||
554 | movl -32+4*0(%rsp), %esi # W[(n+13) & 15] | ||
555 | xorl %r11d, %esi # ^W[(n+8) & 15] | ||
556 | xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15] | ||
557 | xorl -32+4*3(%rsp), %esi # ^W[n & 15] | ||
558 | roll %esi # | ||
559 | movl %esi, -32+4*3(%rsp) # store to W[n & 15] | ||
560 | movl %ecx, %edi # c | ||
561 | xorl %edx, %edi # ^d | ||
562 | xorl %ebx, %edi # ^b | ||
563 | leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
564 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
565 | movl %eax, %esi # | ||
566 | roll $5, %esi # rotl32(a,5) | ||
567 | addl %esi, %ebp # e += rotl32(a,5) | ||
568 | rorl $2, %ebx # b = rotl32(b,30) | ||
569 | # 36 | ||
570 | movl -32+4*1(%rsp), %esi # W[(n+13) & 15] | ||
571 | xorl %r12d, %esi # ^W[(n+8) & 15] | ||
572 | xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15] | ||
573 | xorl -32+4*4(%rsp), %esi # ^W[n & 15] | ||
574 | roll %esi # | ||
575 | movl %esi, -32+4*4(%rsp) # store to W[n & 15] | ||
576 | movl %ebx, %edi # c | ||
577 | xorl %ecx, %edi # ^d | ||
578 | xorl %eax, %edi # ^b | ||
579 | leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
580 | addl %edi, %edx # e += (c ^ d ^ b) | ||
581 | movl %ebp, %esi # | ||
582 | roll $5, %esi # rotl32(a,5) | ||
583 | addl %esi, %edx # e += rotl32(a,5) | ||
584 | rorl $2, %eax # b = rotl32(b,30) | ||
585 | # 37 | ||
586 | movl -32+4*2(%rsp), %esi # W[(n+13) & 15] | ||
587 | xorl %r13d, %esi # ^W[(n+8) & 15] | ||
588 | xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15] | ||
589 | xorl -32+4*5(%rsp), %esi # ^W[n & 15] | ||
590 | roll %esi # | ||
591 | movl %esi, -32+4*5(%rsp) # store to W[n & 15] | ||
592 | movl %eax, %edi # c | ||
593 | xorl %ebx, %edi # ^d | ||
594 | xorl %ebp, %edi # ^b | ||
595 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
596 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
597 | movl %edx, %esi # | ||
598 | roll $5, %esi # rotl32(a,5) | ||
599 | addl %esi, %ecx # e += rotl32(a,5) | ||
600 | rorl $2, %ebp # b = rotl32(b,30) | ||
601 | # 38 | ||
602 | movl -32+4*3(%rsp), %esi # W[(n+13) & 15] | ||
603 | xorl %r14d, %esi # ^W[(n+8) & 15] | ||
604 | xorl %r8d, %esi # ^W[(n+2) & 15] | ||
605 | xorl -32+4*6(%rsp), %esi # ^W[n & 15] | ||
606 | roll %esi # | ||
607 | movl %esi, -32+4*6(%rsp) # store to W[n & 15] | ||
608 | movl %ebp, %edi # c | ||
609 | xorl %eax, %edi # ^d | ||
610 | xorl %edx, %edi # ^b | ||
611 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
612 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
613 | movl %ecx, %esi # | ||
614 | roll $5, %esi # rotl32(a,5) | ||
615 | addl %esi, %ebx # e += rotl32(a,5) | ||
616 | rorl $2, %edx # b = rotl32(b,30) | ||
617 | # 39 | ||
618 | movl -32+4*4(%rsp), %esi # W[(n+13) & 15] | ||
619 | xorl %r15d, %esi # ^W[(n+8) & 15] | ||
620 | xorl %r9d, %esi # ^W[(n+2) & 15] | ||
621 | xorl -32+4*7(%rsp), %esi # ^W[n & 15] | ||
622 | roll %esi # | ||
623 | movl %esi, -32+4*7(%rsp) # store to W[n & 15] | ||
624 | movl %edx, %edi # c | ||
625 | xorl %ebp, %edi # ^d | ||
626 | xorl %ecx, %edi # ^b | ||
627 | leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
628 | addl %edi, %eax # e += (c ^ d ^ b) | ||
629 | movl %ebx, %esi # | ||
630 | roll $5, %esi # rotl32(a,5) | ||
631 | addl %esi, %eax # e += rotl32(a,5) | ||
632 | rorl $2, %ecx # b = rotl32(b,30) | ||
633 | # 40 | ||
634 | movl %ebx, %edi # di: b | ||
635 | movl %ebx, %esi # si: b | ||
636 | orl %ecx, %edi # di: b | c | ||
637 | andl %ecx, %esi # si: b & c | ||
638 | andl %edx, %edi # di: (b | c) & d | ||
639 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
640 | movl -32+4*5(%rsp), %esi # W[(n+13) & 15] | ||
641 | xorl -32+4*0(%rsp), %esi # ^W[(n+8) & 15] | ||
642 | xorl %r10d, %esi # ^W[(n+2) & 15] | ||
643 | xorl %r8d, %esi # ^W[n & 15] | ||
644 | roll %esi # | ||
645 | movl %esi, %r8d # store to W[n & 15] | ||
646 | addl %edi, %ebp # += ((b | c) & d) | (b & c) | ||
647 | leal -0x70e44324(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
648 | movl %eax, %esi # | ||
649 | roll $5, %esi # rotl32(a,5) | ||
650 | addl %esi, %ebp # e += rotl32(a,5) | ||
651 | rorl $2, %ebx # b = rotl32(b,30) | ||
652 | # 41 | ||
653 | movl %eax, %edi # di: b | ||
654 | movl %eax, %esi # si: b | ||
655 | orl %ebx, %edi # di: b | c | ||
656 | andl %ebx, %esi # si: b & c | ||
657 | andl %ecx, %edi # di: (b | c) & d | ||
658 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
659 | movl -32+4*6(%rsp), %esi # W[(n+13) & 15] | ||
660 | xorl -32+4*1(%rsp), %esi # ^W[(n+8) & 15] | ||
661 | xorl %r11d, %esi # ^W[(n+2) & 15] | ||
662 | xorl %r9d, %esi # ^W[n & 15] | ||
663 | roll %esi # | ||
664 | movl %esi, %r9d # store to W[n & 15] | ||
665 | addl %edi, %edx # += ((b | c) & d) | (b & c) | ||
666 | leal -0x70e44324(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
667 | movl %ebp, %esi # | ||
668 | roll $5, %esi # rotl32(a,5) | ||
669 | addl %esi, %edx # e += rotl32(a,5) | ||
670 | rorl $2, %eax # b = rotl32(b,30) | ||
671 | # 42 | ||
672 | movl %ebp, %edi # di: b | ||
673 | movl %ebp, %esi # si: b | ||
674 | orl %eax, %edi # di: b | c | ||
675 | andl %eax, %esi # si: b & c | ||
676 | andl %ebx, %edi # di: (b | c) & d | ||
677 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
678 | movl -32+4*7(%rsp), %esi # W[(n+13) & 15] | ||
679 | xorl -32+4*2(%rsp), %esi # ^W[(n+8) & 15] | ||
680 | xorl %r12d, %esi # ^W[(n+2) & 15] | ||
681 | xorl %r10d, %esi # ^W[n & 15] | ||
682 | roll %esi # | ||
683 | movl %esi, %r10d # store to W[n & 15] | ||
684 | addl %edi, %ecx # += ((b | c) & d) | (b & c) | ||
685 | leal -0x70e44324(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
686 | movl %edx, %esi # | ||
687 | roll $5, %esi # rotl32(a,5) | ||
688 | addl %esi, %ecx # e += rotl32(a,5) | ||
689 | rorl $2, %ebp # b = rotl32(b,30) | ||
690 | # 43 | ||
691 | movl %edx, %edi # di: b | ||
692 | movl %edx, %esi # si: b | ||
693 | orl %ebp, %edi # di: b | c | ||
694 | andl %ebp, %esi # si: b & c | ||
695 | andl %eax, %edi # di: (b | c) & d | ||
696 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
697 | movl %r8d, %esi # W[(n+13) & 15] | ||
698 | xorl -32+4*3(%rsp), %esi # ^W[(n+8) & 15] | ||
699 | xorl %r13d, %esi # ^W[(n+2) & 15] | ||
700 | xorl %r11d, %esi # ^W[n & 15] | ||
701 | roll %esi # | ||
702 | movl %esi, %r11d # store to W[n & 15] | ||
703 | addl %edi, %ebx # += ((b | c) & d) | (b & c) | ||
704 | leal -0x70e44324(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
705 | movl %ecx, %esi # | ||
706 | roll $5, %esi # rotl32(a,5) | ||
707 | addl %esi, %ebx # e += rotl32(a,5) | ||
708 | rorl $2, %edx # b = rotl32(b,30) | ||
709 | # 44 | ||
710 | movl %ecx, %edi # di: b | ||
711 | movl %ecx, %esi # si: b | ||
712 | orl %edx, %edi # di: b | c | ||
713 | andl %edx, %esi # si: b & c | ||
714 | andl %ebp, %edi # di: (b | c) & d | ||
715 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
716 | movl %r9d, %esi # W[(n+13) & 15] | ||
717 | xorl -32+4*4(%rsp), %esi # ^W[(n+8) & 15] | ||
718 | xorl %r14d, %esi # ^W[(n+2) & 15] | ||
719 | xorl %r12d, %esi # ^W[n & 15] | ||
720 | roll %esi # | ||
721 | movl %esi, %r12d # store to W[n & 15] | ||
722 | addl %edi, %eax # += ((b | c) & d) | (b & c) | ||
723 | leal -0x70e44324(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
724 | movl %ebx, %esi # | ||
725 | roll $5, %esi # rotl32(a,5) | ||
726 | addl %esi, %eax # e += rotl32(a,5) | ||
727 | rorl $2, %ecx # b = rotl32(b,30) | ||
728 | # 45 | ||
729 | movl %ebx, %edi # di: b | ||
730 | movl %ebx, %esi # si: b | ||
731 | orl %ecx, %edi # di: b | c | ||
732 | andl %ecx, %esi # si: b & c | ||
733 | andl %edx, %edi # di: (b | c) & d | ||
734 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
735 | movl %r10d, %esi # W[(n+13) & 15] | ||
736 | xorl -32+4*5(%rsp), %esi # ^W[(n+8) & 15] | ||
737 | xorl %r15d, %esi # ^W[(n+2) & 15] | ||
738 | xorl %r13d, %esi # ^W[n & 15] | ||
739 | roll %esi # | ||
740 | movl %esi, %r13d # store to W[n & 15] | ||
741 | addl %edi, %ebp # += ((b | c) & d) | (b & c) | ||
742 | leal -0x70e44324(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
743 | movl %eax, %esi # | ||
744 | roll $5, %esi # rotl32(a,5) | ||
745 | addl %esi, %ebp # e += rotl32(a,5) | ||
746 | rorl $2, %ebx # b = rotl32(b,30) | ||
747 | # 46 | ||
748 | movl %eax, %edi # di: b | ||
749 | movl %eax, %esi # si: b | ||
750 | orl %ebx, %edi # di: b | c | ||
751 | andl %ebx, %esi # si: b & c | ||
752 | andl %ecx, %edi # di: (b | c) & d | ||
753 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
754 | movl %r11d, %esi # W[(n+13) & 15] | ||
755 | xorl -32+4*6(%rsp), %esi # ^W[(n+8) & 15] | ||
756 | xorl -32+4*0(%rsp), %esi # ^W[(n+2) & 15] | ||
757 | xorl %r14d, %esi # ^W[n & 15] | ||
758 | roll %esi # | ||
759 | movl %esi, %r14d # store to W[n & 15] | ||
760 | addl %edi, %edx # += ((b | c) & d) | (b & c) | ||
761 | leal -0x70e44324(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
762 | movl %ebp, %esi # | ||
763 | roll $5, %esi # rotl32(a,5) | ||
764 | addl %esi, %edx # e += rotl32(a,5) | ||
765 | rorl $2, %eax # b = rotl32(b,30) | ||
766 | # 47 | ||
767 | movl %ebp, %edi # di: b | ||
768 | movl %ebp, %esi # si: b | ||
769 | orl %eax, %edi # di: b | c | ||
770 | andl %eax, %esi # si: b & c | ||
771 | andl %ebx, %edi # di: (b | c) & d | ||
772 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
773 | movl %r12d, %esi # W[(n+13) & 15] | ||
774 | xorl -32+4*7(%rsp), %esi # ^W[(n+8) & 15] | ||
775 | xorl -32+4*1(%rsp), %esi # ^W[(n+2) & 15] | ||
776 | xorl %r15d, %esi # ^W[n & 15] | ||
777 | roll %esi # | ||
778 | movl %esi, %r15d # store to W[n & 15] | ||
779 | addl %edi, %ecx # += ((b | c) & d) | (b & c) | ||
780 | leal -0x70e44324(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
781 | movl %edx, %esi # | ||
782 | roll $5, %esi # rotl32(a,5) | ||
783 | addl %esi, %ecx # e += rotl32(a,5) | ||
784 | rorl $2, %ebp # b = rotl32(b,30) | ||
785 | # 48 | ||
786 | movl %edx, %edi # di: b | ||
787 | movl %edx, %esi # si: b | ||
788 | orl %ebp, %edi # di: b | c | ||
789 | andl %ebp, %esi # si: b & c | ||
790 | andl %eax, %edi # di: (b | c) & d | ||
791 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
792 | movl %r13d, %esi # W[(n+13) & 15] | ||
793 | xorl %r8d, %esi # ^W[(n+8) & 15] | ||
794 | xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15] | ||
795 | xorl -32+4*0(%rsp), %esi # ^W[n & 15] | ||
796 | roll %esi # | ||
797 | movl %esi, -32+4*0(%rsp) # store to W[n & 15] | ||
798 | addl %edi, %ebx # += ((b | c) & d) | (b & c) | ||
799 | leal -0x70e44324(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
800 | movl %ecx, %esi # | ||
801 | roll $5, %esi # rotl32(a,5) | ||
802 | addl %esi, %ebx # e += rotl32(a,5) | ||
803 | rorl $2, %edx # b = rotl32(b,30) | ||
804 | # 49 | ||
805 | movl %ecx, %edi # di: b | ||
806 | movl %ecx, %esi # si: b | ||
807 | orl %edx, %edi # di: b | c | ||
808 | andl %edx, %esi # si: b & c | ||
809 | andl %ebp, %edi # di: (b | c) & d | ||
810 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
811 | movl %r14d, %esi # W[(n+13) & 15] | ||
812 | xorl %r9d, %esi # ^W[(n+8) & 15] | ||
813 | xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15] | ||
814 | xorl -32+4*1(%rsp), %esi # ^W[n & 15] | ||
815 | roll %esi # | ||
816 | movl %esi, -32+4*1(%rsp) # store to W[n & 15] | ||
817 | addl %edi, %eax # += ((b | c) & d) | (b & c) | ||
818 | leal -0x70e44324(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
819 | movl %ebx, %esi # | ||
820 | roll $5, %esi # rotl32(a,5) | ||
821 | addl %esi, %eax # e += rotl32(a,5) | ||
822 | rorl $2, %ecx # b = rotl32(b,30) | ||
823 | # 50 | ||
824 | movl %ebx, %edi # di: b | ||
825 | movl %ebx, %esi # si: b | ||
826 | orl %ecx, %edi # di: b | c | ||
827 | andl %ecx, %esi # si: b & c | ||
828 | andl %edx, %edi # di: (b | c) & d | ||
829 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
830 | movl %r15d, %esi # W[(n+13) & 15] | ||
831 | xorl %r10d, %esi # ^W[(n+8) & 15] | ||
832 | xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15] | ||
833 | xorl -32+4*2(%rsp), %esi # ^W[n & 15] | ||
834 | roll %esi # | ||
835 | movl %esi, -32+4*2(%rsp) # store to W[n & 15] | ||
836 | addl %edi, %ebp # += ((b | c) & d) | (b & c) | ||
837 | leal -0x70e44324(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
838 | movl %eax, %esi # | ||
839 | roll $5, %esi # rotl32(a,5) | ||
840 | addl %esi, %ebp # e += rotl32(a,5) | ||
841 | rorl $2, %ebx # b = rotl32(b,30) | ||
842 | # 51 | ||
843 | movl %eax, %edi # di: b | ||
844 | movl %eax, %esi # si: b | ||
845 | orl %ebx, %edi # di: b | c | ||
846 | andl %ebx, %esi # si: b & c | ||
847 | andl %ecx, %edi # di: (b | c) & d | ||
848 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
849 | movl -32+4*0(%rsp), %esi # W[(n+13) & 15] | ||
850 | xorl %r11d, %esi # ^W[(n+8) & 15] | ||
851 | xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15] | ||
852 | xorl -32+4*3(%rsp), %esi # ^W[n & 15] | ||
853 | roll %esi # | ||
854 | movl %esi, -32+4*3(%rsp) # store to W[n & 15] | ||
855 | addl %edi, %edx # += ((b | c) & d) | (b & c) | ||
856 | leal -0x70e44324(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
857 | movl %ebp, %esi # | ||
858 | roll $5, %esi # rotl32(a,5) | ||
859 | addl %esi, %edx # e += rotl32(a,5) | ||
860 | rorl $2, %eax # b = rotl32(b,30) | ||
861 | # 52 | ||
862 | movl %ebp, %edi # di: b | ||
863 | movl %ebp, %esi # si: b | ||
864 | orl %eax, %edi # di: b | c | ||
865 | andl %eax, %esi # si: b & c | ||
866 | andl %ebx, %edi # di: (b | c) & d | ||
867 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
868 | movl -32+4*1(%rsp), %esi # W[(n+13) & 15] | ||
869 | xorl %r12d, %esi # ^W[(n+8) & 15] | ||
870 | xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15] | ||
871 | xorl -32+4*4(%rsp), %esi # ^W[n & 15] | ||
872 | roll %esi # | ||
873 | movl %esi, -32+4*4(%rsp) # store to W[n & 15] | ||
874 | addl %edi, %ecx # += ((b | c) & d) | (b & c) | ||
875 | leal -0x70e44324(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
876 | movl %edx, %esi # | ||
877 | roll $5, %esi # rotl32(a,5) | ||
878 | addl %esi, %ecx # e += rotl32(a,5) | ||
879 | rorl $2, %ebp # b = rotl32(b,30) | ||
880 | # 53 | ||
881 | movl %edx, %edi # di: b | ||
882 | movl %edx, %esi # si: b | ||
883 | orl %ebp, %edi # di: b | c | ||
884 | andl %ebp, %esi # si: b & c | ||
885 | andl %eax, %edi # di: (b | c) & d | ||
886 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
887 | movl -32+4*2(%rsp), %esi # W[(n+13) & 15] | ||
888 | xorl %r13d, %esi # ^W[(n+8) & 15] | ||
889 | xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15] | ||
890 | xorl -32+4*5(%rsp), %esi # ^W[n & 15] | ||
891 | roll %esi # | ||
892 | movl %esi, -32+4*5(%rsp) # store to W[n & 15] | ||
893 | addl %edi, %ebx # += ((b | c) & d) | (b & c) | ||
894 | leal -0x70e44324(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
895 | movl %ecx, %esi # | ||
896 | roll $5, %esi # rotl32(a,5) | ||
897 | addl %esi, %ebx # e += rotl32(a,5) | ||
898 | rorl $2, %edx # b = rotl32(b,30) | ||
899 | # 54 | ||
900 | movl %ecx, %edi # di: b | ||
901 | movl %ecx, %esi # si: b | ||
902 | orl %edx, %edi # di: b | c | ||
903 | andl %edx, %esi # si: b & c | ||
904 | andl %ebp, %edi # di: (b | c) & d | ||
905 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
906 | movl -32+4*3(%rsp), %esi # W[(n+13) & 15] | ||
907 | xorl %r14d, %esi # ^W[(n+8) & 15] | ||
908 | xorl %r8d, %esi # ^W[(n+2) & 15] | ||
909 | xorl -32+4*6(%rsp), %esi # ^W[n & 15] | ||
910 | roll %esi # | ||
911 | movl %esi, -32+4*6(%rsp) # store to W[n & 15] | ||
912 | addl %edi, %eax # += ((b | c) & d) | (b & c) | ||
913 | leal -0x70e44324(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
914 | movl %ebx, %esi # | ||
915 | roll $5, %esi # rotl32(a,5) | ||
916 | addl %esi, %eax # e += rotl32(a,5) | ||
917 | rorl $2, %ecx # b = rotl32(b,30) | ||
918 | # 55 | ||
919 | movl %ebx, %edi # di: b | ||
920 | movl %ebx, %esi # si: b | ||
921 | orl %ecx, %edi # di: b | c | ||
922 | andl %ecx, %esi # si: b & c | ||
923 | andl %edx, %edi # di: (b | c) & d | ||
924 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
925 | movl -32+4*4(%rsp), %esi # W[(n+13) & 15] | ||
926 | xorl %r15d, %esi # ^W[(n+8) & 15] | ||
927 | xorl %r9d, %esi # ^W[(n+2) & 15] | ||
928 | xorl -32+4*7(%rsp), %esi # ^W[n & 15] | ||
929 | roll %esi # | ||
930 | movl %esi, -32+4*7(%rsp) # store to W[n & 15] | ||
931 | addl %edi, %ebp # += ((b | c) & d) | (b & c) | ||
932 | leal -0x70e44324(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
933 | movl %eax, %esi # | ||
934 | roll $5, %esi # rotl32(a,5) | ||
935 | addl %esi, %ebp # e += rotl32(a,5) | ||
936 | rorl $2, %ebx # b = rotl32(b,30) | ||
937 | # 56 | ||
938 | movl %eax, %edi # di: b | ||
939 | movl %eax, %esi # si: b | ||
940 | orl %ebx, %edi # di: b | c | ||
941 | andl %ebx, %esi # si: b & c | ||
942 | andl %ecx, %edi # di: (b | c) & d | ||
943 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
944 | movl -32+4*5(%rsp), %esi # W[(n+13) & 15] | ||
945 | xorl -32+4*0(%rsp), %esi # ^W[(n+8) & 15] | ||
946 | xorl %r10d, %esi # ^W[(n+2) & 15] | ||
947 | xorl %r8d, %esi # ^W[n & 15] | ||
948 | roll %esi # | ||
949 | movl %esi, %r8d # store to W[n & 15] | ||
950 | addl %edi, %edx # += ((b | c) & d) | (b & c) | ||
951 | leal -0x70e44324(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
952 | movl %ebp, %esi # | ||
953 | roll $5, %esi # rotl32(a,5) | ||
954 | addl %esi, %edx # e += rotl32(a,5) | ||
955 | rorl $2, %eax # b = rotl32(b,30) | ||
956 | # 57 | ||
957 | movl %ebp, %edi # di: b | ||
958 | movl %ebp, %esi # si: b | ||
959 | orl %eax, %edi # di: b | c | ||
960 | andl %eax, %esi # si: b & c | ||
961 | andl %ebx, %edi # di: (b | c) & d | ||
962 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
963 | movl -32+4*6(%rsp), %esi # W[(n+13) & 15] | ||
964 | xorl -32+4*1(%rsp), %esi # ^W[(n+8) & 15] | ||
965 | xorl %r11d, %esi # ^W[(n+2) & 15] | ||
966 | xorl %r9d, %esi # ^W[n & 15] | ||
967 | roll %esi # | ||
968 | movl %esi, %r9d # store to W[n & 15] | ||
969 | addl %edi, %ecx # += ((b | c) & d) | (b & c) | ||
970 | leal -0x70e44324(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
971 | movl %edx, %esi # | ||
972 | roll $5, %esi # rotl32(a,5) | ||
973 | addl %esi, %ecx # e += rotl32(a,5) | ||
974 | rorl $2, %ebp # b = rotl32(b,30) | ||
975 | # 58 | ||
976 | movl %edx, %edi # di: b | ||
977 | movl %edx, %esi # si: b | ||
978 | orl %ebp, %edi # di: b | c | ||
979 | andl %ebp, %esi # si: b & c | ||
980 | andl %eax, %edi # di: (b | c) & d | ||
981 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
982 | movl -32+4*7(%rsp), %esi # W[(n+13) & 15] | ||
983 | xorl -32+4*2(%rsp), %esi # ^W[(n+8) & 15] | ||
984 | xorl %r12d, %esi # ^W[(n+2) & 15] | ||
985 | xorl %r10d, %esi # ^W[n & 15] | ||
986 | roll %esi # | ||
987 | movl %esi, %r10d # store to W[n & 15] | ||
988 | addl %edi, %ebx # += ((b | c) & d) | (b & c) | ||
989 | leal -0x70e44324(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
990 | movl %ecx, %esi # | ||
991 | roll $5, %esi # rotl32(a,5) | ||
992 | addl %esi, %ebx # e += rotl32(a,5) | ||
993 | rorl $2, %edx # b = rotl32(b,30) | ||
994 | # 59 | ||
995 | movl %ecx, %edi # di: b | ||
996 | movl %ecx, %esi # si: b | ||
997 | orl %edx, %edi # di: b | c | ||
998 | andl %edx, %esi # si: b & c | ||
999 | andl %ebp, %edi # di: (b | c) & d | ||
1000 | orl %esi, %edi # ((b | c) & d) | (b & c) | ||
1001 | movl %r8d, %esi # W[(n+13) & 15] | ||
1002 | xorl -32+4*3(%rsp), %esi # ^W[(n+8) & 15] | ||
1003 | xorl %r13d, %esi # ^W[(n+2) & 15] | ||
1004 | xorl %r11d, %esi # ^W[n & 15] | ||
1005 | roll %esi # | ||
1006 | movl %esi, %r11d # store to W[n & 15] | ||
1007 | addl %edi, %eax # += ((b | c) & d) | (b & c) | ||
1008 | leal -0x70e44324(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
1009 | movl %ebx, %esi # | ||
1010 | roll $5, %esi # rotl32(a,5) | ||
1011 | addl %esi, %eax # e += rotl32(a,5) | ||
1012 | rorl $2, %ecx # b = rotl32(b,30) | ||
1013 | # 60 | ||
1014 | movl %r9d, %esi # W[(n+13) & 15] | ||
1015 | xorl -32+4*4(%rsp), %esi # ^W[(n+8) & 15] | ||
1016 | xorl %r14d, %esi # ^W[(n+2) & 15] | ||
1017 | xorl %r12d, %esi # ^W[n & 15] | ||
1018 | roll %esi # | ||
1019 | movl %esi, %r12d # store to W[n & 15] | ||
1020 | movl %ecx, %edi # c | ||
1021 | xorl %edx, %edi # ^d | ||
1022 | xorl %ebx, %edi # ^b | ||
1023 | leal -0x359d3e2a(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
1024 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
1025 | movl %eax, %esi # | ||
1026 | roll $5, %esi # rotl32(a,5) | ||
1027 | addl %esi, %ebp # e += rotl32(a,5) | ||
1028 | rorl $2, %ebx # b = rotl32(b,30) | ||
1029 | # 61 | ||
1030 | movl %r10d, %esi # W[(n+13) & 15] | ||
1031 | xorl -32+4*5(%rsp), %esi # ^W[(n+8) & 15] | ||
1032 | xorl %r15d, %esi # ^W[(n+2) & 15] | ||
1033 | xorl %r13d, %esi # ^W[n & 15] | ||
1034 | roll %esi # | ||
1035 | movl %esi, %r13d # store to W[n & 15] | ||
1036 | movl %ebx, %edi # c | ||
1037 | xorl %ecx, %edi # ^d | ||
1038 | xorl %eax, %edi # ^b | ||
1039 | leal -0x359d3e2a(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
1040 | addl %edi, %edx # e += (c ^ d ^ b) | ||
1041 | movl %ebp, %esi # | ||
1042 | roll $5, %esi # rotl32(a,5) | ||
1043 | addl %esi, %edx # e += rotl32(a,5) | ||
1044 | rorl $2, %eax # b = rotl32(b,30) | ||
1045 | # 62 | ||
1046 | movl %r11d, %esi # W[(n+13) & 15] | ||
1047 | xorl -32+4*6(%rsp), %esi # ^W[(n+8) & 15] | ||
1048 | xorl -32+4*0(%rsp), %esi # ^W[(n+2) & 15] | ||
1049 | xorl %r14d, %esi # ^W[n & 15] | ||
1050 | roll %esi # | ||
1051 | movl %esi, %r14d # store to W[n & 15] | ||
1052 | movl %eax, %edi # c | ||
1053 | xorl %ebx, %edi # ^d | ||
1054 | xorl %ebp, %edi # ^b | ||
1055 | leal -0x359d3e2a(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
1056 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
1057 | movl %edx, %esi # | ||
1058 | roll $5, %esi # rotl32(a,5) | ||
1059 | addl %esi, %ecx # e += rotl32(a,5) | ||
1060 | rorl $2, %ebp # b = rotl32(b,30) | ||
1061 | # 63 | ||
1062 | movl %r12d, %esi # W[(n+13) & 15] | ||
1063 | xorl -32+4*7(%rsp), %esi # ^W[(n+8) & 15] | ||
1064 | xorl -32+4*1(%rsp), %esi # ^W[(n+2) & 15] | ||
1065 | xorl %r15d, %esi # ^W[n & 15] | ||
1066 | roll %esi # | ||
1067 | movl %esi, %r15d # store to W[n & 15] | ||
1068 | movl %ebp, %edi # c | ||
1069 | xorl %eax, %edi # ^d | ||
1070 | xorl %edx, %edi # ^b | ||
1071 | leal -0x359d3e2a(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
1072 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
1073 | movl %ecx, %esi # | ||
1074 | roll $5, %esi # rotl32(a,5) | ||
1075 | addl %esi, %ebx # e += rotl32(a,5) | ||
1076 | rorl $2, %edx # b = rotl32(b,30) | ||
1077 | # 64 | ||
1078 | movl %r13d, %esi # W[(n+13) & 15] | ||
1079 | xorl %r8d, %esi # ^W[(n+8) & 15] | ||
1080 | xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15] | ||
1081 | xorl -32+4*0(%rsp), %esi # ^W[n & 15] | ||
1082 | roll %esi # | ||
1083 | movl %esi, -32+4*0(%rsp) # store to W[n & 15] | ||
1084 | movl %edx, %edi # c | ||
1085 | xorl %ebp, %edi # ^d | ||
1086 | xorl %ecx, %edi # ^b | ||
1087 | leal -0x359d3e2a(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
1088 | addl %edi, %eax # e += (c ^ d ^ b) | ||
1089 | movl %ebx, %esi # | ||
1090 | roll $5, %esi # rotl32(a,5) | ||
1091 | addl %esi, %eax # e += rotl32(a,5) | ||
1092 | rorl $2, %ecx # b = rotl32(b,30) | ||
1093 | # 65 | ||
1094 | movl %r14d, %esi # W[(n+13) & 15] | ||
1095 | xorl %r9d, %esi # ^W[(n+8) & 15] | ||
1096 | xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15] | ||
1097 | xorl -32+4*1(%rsp), %esi # ^W[n & 15] | ||
1098 | roll %esi # | ||
1099 | movl %esi, -32+4*1(%rsp) # store to W[n & 15] | ||
1100 | movl %ecx, %edi # c | ||
1101 | xorl %edx, %edi # ^d | ||
1102 | xorl %ebx, %edi # ^b | ||
1103 | leal -0x359d3e2a(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
1104 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
1105 | movl %eax, %esi # | ||
1106 | roll $5, %esi # rotl32(a,5) | ||
1107 | addl %esi, %ebp # e += rotl32(a,5) | ||
1108 | rorl $2, %ebx # b = rotl32(b,30) | ||
1109 | # 66 | ||
1110 | movl %r15d, %esi # W[(n+13) & 15] | ||
1111 | xorl %r10d, %esi # ^W[(n+8) & 15] | ||
1112 | xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15] | ||
1113 | xorl -32+4*2(%rsp), %esi # ^W[n & 15] | ||
1114 | roll %esi # | ||
1115 | movl %esi, -32+4*2(%rsp) # store to W[n & 15] | ||
1116 | movl %ebx, %edi # c | ||
1117 | xorl %ecx, %edi # ^d | ||
1118 | xorl %eax, %edi # ^b | ||
1119 | leal -0x359d3e2a(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
1120 | addl %edi, %edx # e += (c ^ d ^ b) | ||
1121 | movl %ebp, %esi # | ||
1122 | roll $5, %esi # rotl32(a,5) | ||
1123 | addl %esi, %edx # e += rotl32(a,5) | ||
1124 | rorl $2, %eax # b = rotl32(b,30) | ||
1125 | # 67 | ||
1126 | movl -32+4*0(%rsp), %esi # W[(n+13) & 15] | ||
1127 | xorl %r11d, %esi # ^W[(n+8) & 15] | ||
1128 | xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15] | ||
1129 | xorl -32+4*3(%rsp), %esi # ^W[n & 15] | ||
1130 | roll %esi # | ||
1131 | movl %esi, -32+4*3(%rsp) # store to W[n & 15] | ||
1132 | movl %eax, %edi # c | ||
1133 | xorl %ebx, %edi # ^d | ||
1134 | xorl %ebp, %edi # ^b | ||
1135 | leal -0x359d3e2a(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
1136 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
1137 | movl %edx, %esi # | ||
1138 | roll $5, %esi # rotl32(a,5) | ||
1139 | addl %esi, %ecx # e += rotl32(a,5) | ||
1140 | rorl $2, %ebp # b = rotl32(b,30) | ||
1141 | # 68 | ||
1142 | movl -32+4*1(%rsp), %esi # W[(n+13) & 15] | ||
1143 | xorl %r12d, %esi # ^W[(n+8) & 15] | ||
1144 | xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15] | ||
1145 | xorl -32+4*4(%rsp), %esi # ^W[n & 15] | ||
1146 | roll %esi # | ||
1147 | movl %esi, -32+4*4(%rsp) # store to W[n & 15] | ||
1148 | movl %ebp, %edi # c | ||
1149 | xorl %eax, %edi # ^d | ||
1150 | xorl %edx, %edi # ^b | ||
1151 | leal -0x359d3e2a(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
1152 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
1153 | movl %ecx, %esi # | ||
1154 | roll $5, %esi # rotl32(a,5) | ||
1155 | addl %esi, %ebx # e += rotl32(a,5) | ||
1156 | rorl $2, %edx # b = rotl32(b,30) | ||
1157 | # 69 | ||
1158 | movl -32+4*2(%rsp), %esi # W[(n+13) & 15] | ||
1159 | xorl %r13d, %esi # ^W[(n+8) & 15] | ||
1160 | xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15] | ||
1161 | xorl -32+4*5(%rsp), %esi # ^W[n & 15] | ||
1162 | roll %esi # | ||
1163 | movl %esi, -32+4*5(%rsp) # store to W[n & 15] | ||
1164 | movl %edx, %edi # c | ||
1165 | xorl %ebp, %edi # ^d | ||
1166 | xorl %ecx, %edi # ^b | ||
1167 | leal -0x359d3e2a(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
1168 | addl %edi, %eax # e += (c ^ d ^ b) | ||
1169 | movl %ebx, %esi # | ||
1170 | roll $5, %esi # rotl32(a,5) | ||
1171 | addl %esi, %eax # e += rotl32(a,5) | ||
1172 | rorl $2, %ecx # b = rotl32(b,30) | ||
1173 | # 70 | ||
1174 | movl -32+4*3(%rsp), %esi # W[(n+13) & 15] | ||
1175 | xorl %r14d, %esi # ^W[(n+8) & 15] | ||
1176 | xorl %r8d, %esi # ^W[(n+2) & 15] | ||
1177 | xorl -32+4*6(%rsp), %esi # ^W[n & 15] | ||
1178 | roll %esi # | ||
1179 | movl %esi, -32+4*6(%rsp) # store to W[n & 15] | ||
1180 | movl %ecx, %edi # c | ||
1181 | xorl %edx, %edi # ^d | ||
1182 | xorl %ebx, %edi # ^b | ||
1183 | leal -0x359d3e2a(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
1184 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
1185 | movl %eax, %esi # | ||
1186 | roll $5, %esi # rotl32(a,5) | ||
1187 | addl %esi, %ebp # e += rotl32(a,5) | ||
1188 | rorl $2, %ebx # b = rotl32(b,30) | ||
1189 | # 71 | ||
1190 | movl -32+4*4(%rsp), %esi # W[(n+13) & 15] | ||
1191 | xorl %r15d, %esi # ^W[(n+8) & 15] | ||
1192 | xorl %r9d, %esi # ^W[(n+2) & 15] | ||
1193 | xorl -32+4*7(%rsp), %esi # ^W[n & 15] | ||
1194 | roll %esi # | ||
1195 | movl %esi, -32+4*7(%rsp) # store to W[n & 15] | ||
1196 | movl %ebx, %edi # c | ||
1197 | xorl %ecx, %edi # ^d | ||
1198 | xorl %eax, %edi # ^b | ||
1199 | leal -0x359d3e2a(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
1200 | addl %edi, %edx # e += (c ^ d ^ b) | ||
1201 | movl %ebp, %esi # | ||
1202 | roll $5, %esi # rotl32(a,5) | ||
1203 | addl %esi, %edx # e += rotl32(a,5) | ||
1204 | rorl $2, %eax # b = rotl32(b,30) | ||
1205 | # 72 | ||
1206 | movl -32+4*5(%rsp), %esi # W[(n+13) & 15] | ||
1207 | xorl -32+4*0(%rsp), %esi # ^W[(n+8) & 15] | ||
1208 | xorl %r10d, %esi # ^W[(n+2) & 15] | ||
1209 | xorl %r8d, %esi # ^W[n & 15] | ||
1210 | roll %esi # | ||
1211 | movl %esi, %r8d # store to W[n & 15] | ||
1212 | movl %eax, %edi # c | ||
1213 | xorl %ebx, %edi # ^d | ||
1214 | xorl %ebp, %edi # ^b | ||
1215 | leal -0x359d3e2a(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
1216 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
1217 | movl %edx, %esi # | ||
1218 | roll $5, %esi # rotl32(a,5) | ||
1219 | addl %esi, %ecx # e += rotl32(a,5) | ||
1220 | rorl $2, %ebp # b = rotl32(b,30) | ||
1221 | # 73 | ||
1222 | movl -32+4*6(%rsp), %esi # W[(n+13) & 15] | ||
1223 | xorl -32+4*1(%rsp), %esi # ^W[(n+8) & 15] | ||
1224 | xorl %r11d, %esi # ^W[(n+2) & 15] | ||
1225 | xorl %r9d, %esi # ^W[n & 15] | ||
1226 | roll %esi # | ||
1227 | movl %esi, %r9d # store to W[n & 15] | ||
1228 | movl %ebp, %edi # c | ||
1229 | xorl %eax, %edi # ^d | ||
1230 | xorl %edx, %edi # ^b | ||
1231 | leal -0x359d3e2a(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
1232 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
1233 | movl %ecx, %esi # | ||
1234 | roll $5, %esi # rotl32(a,5) | ||
1235 | addl %esi, %ebx # e += rotl32(a,5) | ||
1236 | rorl $2, %edx # b = rotl32(b,30) | ||
1237 | # 74 | ||
1238 | movl -32+4*7(%rsp), %esi # W[(n+13) & 15] | ||
1239 | xorl -32+4*2(%rsp), %esi # ^W[(n+8) & 15] | ||
1240 | xorl %r12d, %esi # ^W[(n+2) & 15] | ||
1241 | xorl %r10d, %esi # ^W[n & 15] | ||
1242 | roll %esi # | ||
1243 | movl %esi, %r10d # store to W[n & 15] | ||
1244 | movl %edx, %edi # c | ||
1245 | xorl %ebp, %edi # ^d | ||
1246 | xorl %ecx, %edi # ^b | ||
1247 | leal -0x359d3e2a(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
1248 | addl %edi, %eax # e += (c ^ d ^ b) | ||
1249 | movl %ebx, %esi # | ||
1250 | roll $5, %esi # rotl32(a,5) | ||
1251 | addl %esi, %eax # e += rotl32(a,5) | ||
1252 | rorl $2, %ecx # b = rotl32(b,30) | ||
1253 | # 75 | ||
1254 | movl %r8d, %esi # W[(n+13) & 15] | ||
1255 | xorl -32+4*3(%rsp), %esi # ^W[(n+8) & 15] | ||
1256 | xorl %r13d, %esi # ^W[(n+2) & 15] | ||
1257 | xorl %r11d, %esi # ^W[n & 15] | ||
1258 | roll %esi # | ||
1259 | movl %esi, %r11d # store to W[n & 15] | ||
1260 | movl %ecx, %edi # c | ||
1261 | xorl %edx, %edi # ^d | ||
1262 | xorl %ebx, %edi # ^b | ||
1263 | leal -0x359d3e2a(%rbp,%rsi), %ebp # e += RCONST + mixed_W | ||
1264 | addl %edi, %ebp # e += (c ^ d ^ b) | ||
1265 | movl %eax, %esi # | ||
1266 | roll $5, %esi # rotl32(a,5) | ||
1267 | addl %esi, %ebp # e += rotl32(a,5) | ||
1268 | rorl $2, %ebx # b = rotl32(b,30) | ||
1269 | # 76 | ||
1270 | movl %r9d, %esi # W[(n+13) & 15] | ||
1271 | xorl -32+4*4(%rsp), %esi # ^W[(n+8) & 15] | ||
1272 | xorl %r14d, %esi # ^W[(n+2) & 15] | ||
1273 | xorl %r12d, %esi # ^W[n & 15] | ||
1274 | roll %esi # | ||
1275 | movl %esi, %r12d # store to W[n & 15] | ||
1276 | movl %ebx, %edi # c | ||
1277 | xorl %ecx, %edi # ^d | ||
1278 | xorl %eax, %edi # ^b | ||
1279 | leal -0x359d3e2a(%rdx,%rsi), %edx # e += RCONST + mixed_W | ||
1280 | addl %edi, %edx # e += (c ^ d ^ b) | ||
1281 | movl %ebp, %esi # | ||
1282 | roll $5, %esi # rotl32(a,5) | ||
1283 | addl %esi, %edx # e += rotl32(a,5) | ||
1284 | rorl $2, %eax # b = rotl32(b,30) | ||
1285 | # 77 | ||
1286 | movl %r10d, %esi # W[(n+13) & 15] | ||
1287 | xorl -32+4*5(%rsp), %esi # ^W[(n+8) & 15] | ||
1288 | xorl %r15d, %esi # ^W[(n+2) & 15] | ||
1289 | xorl %r13d, %esi # ^W[n & 15] | ||
1290 | roll %esi # | ||
1291 | # store to W[n & 15] - unused, not done | ||
1292 | movl %eax, %edi # c | ||
1293 | xorl %ebx, %edi # ^d | ||
1294 | xorl %ebp, %edi # ^b | ||
1295 | leal -0x359d3e2a(%rcx,%rsi), %ecx # e += RCONST + mixed_W | ||
1296 | addl %edi, %ecx # e += (c ^ d ^ b) | ||
1297 | movl %edx, %esi # | ||
1298 | roll $5, %esi # rotl32(a,5) | ||
1299 | addl %esi, %ecx # e += rotl32(a,5) | ||
1300 | rorl $2, %ebp # b = rotl32(b,30) | ||
1301 | # 78 | ||
1302 | movl %r11d, %esi # W[(n+13) & 15] | ||
1303 | xorl -32+4*6(%rsp), %esi # ^W[(n+8) & 15] | ||
1304 | xorl -32+4*0(%rsp), %esi # ^W[(n+2) & 15] | ||
1305 | xorl %r14d, %esi # ^W[n & 15] | ||
1306 | roll %esi # | ||
1307 | # store to W[n & 15] - unused, not done | ||
1308 | movl %ebp, %edi # c | ||
1309 | xorl %eax, %edi # ^d | ||
1310 | xorl %edx, %edi # ^b | ||
1311 | leal -0x359d3e2a(%rbx,%rsi), %ebx # e += RCONST + mixed_W | ||
1312 | addl %edi, %ebx # e += (c ^ d ^ b) | ||
1313 | movl %ecx, %esi # | ||
1314 | roll $5, %esi # rotl32(a,5) | ||
1315 | addl %esi, %ebx # e += rotl32(a,5) | ||
1316 | rorl $2, %edx # b = rotl32(b,30) | ||
1317 | # 79 | ||
1318 | movl %r12d, %esi # W[(n+13) & 15] | ||
1319 | xorl -32+4*7(%rsp), %esi # ^W[(n+8) & 15] | ||
1320 | xorl -32+4*1(%rsp), %esi # ^W[(n+2) & 15] | ||
1321 | xorl %r15d, %esi # ^W[n & 15] | ||
1322 | roll %esi # | ||
1323 | # store to W[n & 15] - unused, not done | ||
1324 | movl %edx, %edi # c | ||
1325 | xorl %ebp, %edi # ^d | ||
1326 | xorl %ecx, %edi # ^b | ||
1327 | leal -0x359d3e2a(%rax,%rsi), %eax # e += RCONST + mixed_W | ||
1328 | addl %edi, %eax # e += (c ^ d ^ b) | ||
1329 | movl %ebx, %esi # | ||
1330 | roll $5, %esi # rotl32(a,5) | ||
1331 | addl %esi, %eax # e += rotl32(a,5) | ||
1332 | rorl $2, %ecx # b = rotl32(b,30) | ||
1333 | |||
1334 | popq %rdi # | ||
1335 | addl %eax, 80(%rdi) # ctx->hash[0] += a | ||
1336 | addl %ebx, 84(%rdi) # ctx->hash[1] += b | ||
1337 | addl %ecx, 88(%rdi) # ctx->hash[2] += c | ||
1338 | addl %edx, 92(%rdi) # ctx->hash[3] += d | ||
1339 | addl %ebp, 96(%rdi) # ctx->hash[4] += e | ||
1340 | popq %rbx # | ||
1341 | popq %rbp # | ||
1342 | popq %r12 # | ||
1343 | popq %r13 # | ||
1344 | popq %r14 # | ||
1345 | popq %r15 # | ||
1346 | |||
1347 | ret | ||
1348 | .size sha1_process_block64, .-sha1_process_block64 | ||
1349 | #endif | ||