| /* |
| * !/usr/bin/env perl |
| * |
| * ==================================================================== |
| * Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL |
| * project. The module is, however, dual licensed under OpenSSL and |
| * CRYPTOGAMS licenses depending on where you obtain it. For further |
| * details see http://www.openssl.org/~appro/cryptogams/. |
| * ==================================================================== |
| * |
| * sha1_block procedure for x86_64. |
| * |
| * It was brought to my attention that on EM64T compiler-generated code |
| * was far behind 32-bit assembler implementation. This is unlike on |
| * Opteron where compiler-generated code was only 15% behind 32-bit |
| * assembler, which originally made it hard to motivate the effort. |
| * There was suggestion to mechanically translate 32-bit code, but I |
| * dismissed it, reasoning that x86_64 offers enough register bank |
| * capacity to fully utilize SHA-1 parallelism. Therefore this fresh |
| * implementation:-) However! While 64-bit code does performs better |
| * on Opteron, I failed to beat 32-bit assembler on EM64T core. Well, |
| * x86_64 does offer larger *addressable* bank, but out-of-order core |
| * reaches for even more registers through dynamic aliasing, and EM64T |
| * core must have managed to run-time optimize even 32-bit code just as |
| * good as 64-bit one. Performance improvement is summarized in the |
| * following table: |
| * |
| * gcc 3.4 32-bit asm cycles/byte |
| * Opteron +45% +20% 6.8 |
| * Xeon P4 +65% +0% 9.9 |
| * Core2 +60% +10% 7.0 |
| * |
| * |
| * OpenSolaris OS modifications |
| * |
| * Sun elects to use this software under the BSD license. |
| * |
| * This source originates from OpenSSL file sha1-x86_64.pl at |
| * ftp://ftp.openssl.org/snapshot/openssl-0.9.8-stable-SNAP-20080131.tar.gz |
| * (presumably for future OpenSSL release 0.9.8h), with these changes: |
| * |
| * 1. Added perl "use strict" and declared variables. |
| * |
| * 2. Added OpenSolaris ENTRY_NP/SET_SIZE macros from |
| * /usr/include/sys/asm_linkage.h, .ident keywords, and lint(1B) guards. |
| * |
| * 3. Removed x86_64-xlate.pl script (not needed for as(1) or gas(1) |
| * assemblers). |
| * |
| */ |
| |
| /* |
| * This file was generated by a perl script (sha1-x86_64.pl). The comments from |
| * the original file have been pasted above. |
| */ |
| |
| #if defined(lint) || defined(__lint) |
| #include <sys/stdint.h> |
| #include <sys/sha1.h> |
| |
| |
| /* ARGSUSED */ |
| void |
| sha1_block_data_order(SHA1_CTX *ctx, const void *inpp, size_t blocks) |
| { |
| } |
| |
| #else |
| #define _ASM |
| #include <sys/asm_linkage.h> |
| ENTRY_NP(sha1_block_data_order) |
| push %rbx |
| push %rbp |
| push %r12 |
| mov %rsp,%rax |
| mov %rdi,%r8 # reassigned argument |
| sub $72,%rsp |
| mov %rsi,%r9 # reassigned argument |
| and $-64,%rsp |
| mov %rdx,%r10 # reassigned argument |
| mov %rax,64(%rsp) |
| |
| mov 0(%r8),%edx |
| mov 4(%r8),%esi |
| mov 8(%r8),%edi |
| mov 12(%r8),%ebp |
| mov 16(%r8),%r11d |
| .align 4 |
| .Lloop: |
| mov 0(%r9),%eax |
| bswap %eax |
| mov %eax,0(%rsp) |
| lea 0x5a827999(%eax,%r11d),%r12d |
| mov %edi,%ebx |
| mov 4(%r9),%eax |
| mov %edx,%r11d |
| xor %ebp,%ebx |
| bswap %eax |
| rol $5,%r11d |
| and %esi,%ebx |
| mov %eax,4(%rsp) |
| add %r11d,%r12d |
| xor %ebp,%ebx |
| rol $30,%esi |
| add %ebx,%r12d |
| lea 0x5a827999(%eax,%ebp),%r11d |
| mov %esi,%ebx |
| mov 8(%r9),%eax |
| mov %r12d,%ebp |
| xor %edi,%ebx |
| bswap %eax |
| rol $5,%ebp |
| and %edx,%ebx |
| mov %eax,8(%rsp) |
| add %ebp,%r11d |
| xor %edi,%ebx |
| rol $30,%edx |
| add %ebx,%r11d |
| lea 0x5a827999(%eax,%edi),%ebp |
| mov %edx,%ebx |
| mov 12(%r9),%eax |
| mov %r11d,%edi |
| xor %esi,%ebx |
| bswap %eax |
| rol $5,%edi |
| and %r12d,%ebx |
| mov %eax,12(%rsp) |
| add %edi,%ebp |
| xor %esi,%ebx |
| rol $30,%r12d |
| add %ebx,%ebp |
| lea 0x5a827999(%eax,%esi),%edi |
| mov %r12d,%ebx |
| mov 16(%r9),%eax |
| mov %ebp,%esi |
| xor %edx,%ebx |
| bswap %eax |
| rol $5,%esi |
| and %r11d,%ebx |
| mov %eax,16(%rsp) |
| add %esi,%edi |
| xor %edx,%ebx |
| rol $30,%r11d |
| add %ebx,%edi |
| lea 0x5a827999(%eax,%edx),%esi |
| mov %r11d,%ebx |
| mov 20(%r9),%eax |
| mov %edi,%edx |
| xor %r12d,%ebx |
| bswap %eax |
| rol $5,%edx |
| and %ebp,%ebx |
| mov %eax,20(%rsp) |
| add %edx,%esi |
| xor %r12d,%ebx |
| rol $30,%ebp |
| add %ebx,%esi |
| lea 0x5a827999(%eax,%r12d),%edx |
| mov %ebp,%ebx |
| mov 24(%r9),%eax |
| mov %esi,%r12d |
| xor %r11d,%ebx |
| bswap %eax |
| rol $5,%r12d |
| and %edi,%ebx |
| mov %eax,24(%rsp) |
| add %r12d,%edx |
| xor %r11d,%ebx |
| rol $30,%edi |
| add %ebx,%edx |
| lea 0x5a827999(%eax,%r11d),%r12d |
| mov %edi,%ebx |
| mov 28(%r9),%eax |
| mov %edx,%r11d |
| xor %ebp,%ebx |
| bswap %eax |
| rol $5,%r11d |
| and %esi,%ebx |
| mov %eax,28(%rsp) |
| add %r11d,%r12d |
| xor %ebp,%ebx |
| rol $30,%esi |
| add %ebx,%r12d |
| lea 0x5a827999(%eax,%ebp),%r11d |
| mov %esi,%ebx |
| mov 32(%r9),%eax |
| mov %r12d,%ebp |
| xor %edi,%ebx |
| bswap %eax |
| rol $5,%ebp |
| and %edx,%ebx |
| mov %eax,32(%rsp) |
| add %ebp,%r11d |
| xor %edi,%ebx |
| rol $30,%edx |
| add %ebx,%r11d |
| lea 0x5a827999(%eax,%edi),%ebp |
| mov %edx,%ebx |
| mov 36(%r9),%eax |
| mov %r11d,%edi |
| xor %esi,%ebx |
| bswap %eax |
| rol $5,%edi |
| and %r12d,%ebx |
| mov %eax,36(%rsp) |
| add %edi,%ebp |
| xor %esi,%ebx |
| rol $30,%r12d |
| add %ebx,%ebp |
| lea 0x5a827999(%eax,%esi),%edi |
| mov %r12d,%ebx |
| mov 40(%r9),%eax |
| mov %ebp,%esi |
| xor %edx,%ebx |
| bswap %eax |
| rol $5,%esi |
| and %r11d,%ebx |
| mov %eax,40(%rsp) |
| add %esi,%edi |
| xor %edx,%ebx |
| rol $30,%r11d |
| add %ebx,%edi |
| lea 0x5a827999(%eax,%edx),%esi |
| mov %r11d,%ebx |
| mov 44(%r9),%eax |
| mov %edi,%edx |
| xor %r12d,%ebx |
| bswap %eax |
| rol $5,%edx |
| and %ebp,%ebx |
| mov %eax,44(%rsp) |
| add %edx,%esi |
| xor %r12d,%ebx |
| rol $30,%ebp |
| add %ebx,%esi |
| lea 0x5a827999(%eax,%r12d),%edx |
| mov %ebp,%ebx |
| mov 48(%r9),%eax |
| mov %esi,%r12d |
| xor %r11d,%ebx |
| bswap %eax |
| rol $5,%r12d |
| and %edi,%ebx |
| mov %eax,48(%rsp) |
| add %r12d,%edx |
| xor %r11d,%ebx |
| rol $30,%edi |
| add %ebx,%edx |
| lea 0x5a827999(%eax,%r11d),%r12d |
| mov %edi,%ebx |
| mov 52(%r9),%eax |
| mov %edx,%r11d |
| xor %ebp,%ebx |
| bswap %eax |
| rol $5,%r11d |
| and %esi,%ebx |
| mov %eax,52(%rsp) |
| add %r11d,%r12d |
| xor %ebp,%ebx |
| rol $30,%esi |
| add %ebx,%r12d |
| lea 0x5a827999(%eax,%ebp),%r11d |
| mov %esi,%ebx |
| mov 56(%r9),%eax |
| mov %r12d,%ebp |
| xor %edi,%ebx |
| bswap %eax |
| rol $5,%ebp |
| and %edx,%ebx |
| mov %eax,56(%rsp) |
| add %ebp,%r11d |
| xor %edi,%ebx |
| rol $30,%edx |
| add %ebx,%r11d |
| lea 0x5a827999(%eax,%edi),%ebp |
| mov %edx,%ebx |
| mov 60(%r9),%eax |
| mov %r11d,%edi |
| xor %esi,%ebx |
| bswap %eax |
| rol $5,%edi |
| and %r12d,%ebx |
| mov %eax,60(%rsp) |
| add %edi,%ebp |
| xor %esi,%ebx |
| rol $30,%r12d |
| add %ebx,%ebp |
| lea 0x5a827999(%eax,%esi),%edi |
| mov 0(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 8(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%esi |
| xor 32(%rsp),%eax |
| and %r11d,%ebx |
| add %esi,%edi |
| xor 52(%rsp),%eax |
| xor %edx,%ebx |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,0(%rsp) |
| lea 0x5a827999(%eax,%edx),%esi |
| mov 4(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 12(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edx |
| xor 36(%rsp),%eax |
| and %ebp,%ebx |
| add %edx,%esi |
| xor 56(%rsp),%eax |
| xor %r12d,%ebx |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| mov %eax,4(%rsp) |
| lea 0x5a827999(%eax,%r12d),%edx |
| mov 8(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 16(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%r12d |
| xor 40(%rsp),%eax |
| and %edi,%ebx |
| add %r12d,%edx |
| xor 60(%rsp),%eax |
| xor %r11d,%ebx |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| mov %eax,8(%rsp) |
| lea 0x5a827999(%eax,%r11d),%r12d |
| mov 12(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 20(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%r11d |
| xor 44(%rsp),%eax |
| and %esi,%ebx |
| add %r11d,%r12d |
| xor 0(%rsp),%eax |
| xor %ebp,%ebx |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,12(%rsp) |
| lea 0x5a827999(%eax,%ebp),%r11d |
| mov 16(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 24(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%ebp |
| xor 48(%rsp),%eax |
| and %edx,%ebx |
| add %ebp,%r11d |
| xor 4(%rsp),%eax |
| xor %edi,%ebx |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,16(%rsp) |
| lea 0x6ed9eba1(%eax,%edi),%ebp |
| mov 20(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 28(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 52(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 8(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,20(%rsp) |
| lea 0x6ed9eba1(%eax,%esi),%edi |
| mov 24(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 32(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 56(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 12(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,24(%rsp) |
| lea 0x6ed9eba1(%eax,%edx),%esi |
| mov 28(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 36(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%edx |
| xor 60(%rsp),%eax |
| xor %r12d,%ebx |
| add %edx,%esi |
| xor 16(%rsp),%eax |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| mov %eax,28(%rsp) |
| lea 0x6ed9eba1(%eax,%r12d),%edx |
| mov 32(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 40(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%r12d |
| xor 0(%rsp),%eax |
| xor %r11d,%ebx |
| add %r12d,%edx |
| xor 20(%rsp),%eax |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| mov %eax,32(%rsp) |
| lea 0x6ed9eba1(%eax,%r11d),%r12d |
| mov 36(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 44(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 4(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 24(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,36(%rsp) |
| lea 0x6ed9eba1(%eax,%ebp),%r11d |
| mov 40(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 48(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor 8(%rsp),%eax |
| xor %edi,%ebx |
| add %ebp,%r11d |
| xor 28(%rsp),%eax |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,40(%rsp) |
| lea 0x6ed9eba1(%eax,%edi),%ebp |
| mov 44(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 52(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 12(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 32(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,44(%rsp) |
| lea 0x6ed9eba1(%eax,%esi),%edi |
| mov 48(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 56(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 16(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 36(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,48(%rsp) |
| lea 0x6ed9eba1(%eax,%edx),%esi |
| mov 52(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 60(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%edx |
| xor 20(%rsp),%eax |
| xor %r12d,%ebx |
| add %edx,%esi |
| xor 40(%rsp),%eax |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| mov %eax,52(%rsp) |
| lea 0x6ed9eba1(%eax,%r12d),%edx |
| mov 56(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 0(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%r12d |
| xor 24(%rsp),%eax |
| xor %r11d,%ebx |
| add %r12d,%edx |
| xor 44(%rsp),%eax |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| mov %eax,56(%rsp) |
| lea 0x6ed9eba1(%eax,%r11d),%r12d |
| mov 60(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 4(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 28(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 48(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,60(%rsp) |
| lea 0x6ed9eba1(%eax,%ebp),%r11d |
| mov 0(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 8(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor 32(%rsp),%eax |
| xor %edi,%ebx |
| add %ebp,%r11d |
| xor 52(%rsp),%eax |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,0(%rsp) |
| lea 0x6ed9eba1(%eax,%edi),%ebp |
| mov 4(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 12(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 36(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 56(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,4(%rsp) |
| lea 0x6ed9eba1(%eax,%esi),%edi |
| mov 8(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 16(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 40(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 60(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,8(%rsp) |
| lea 0x6ed9eba1(%eax,%edx),%esi |
| mov 12(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 20(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%edx |
| xor 44(%rsp),%eax |
| xor %r12d,%ebx |
| add %edx,%esi |
| xor 0(%rsp),%eax |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| mov %eax,12(%rsp) |
| lea 0x6ed9eba1(%eax,%r12d),%edx |
| mov 16(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 24(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%r12d |
| xor 48(%rsp),%eax |
| xor %r11d,%ebx |
| add %r12d,%edx |
| xor 4(%rsp),%eax |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| mov %eax,16(%rsp) |
| lea 0x6ed9eba1(%eax,%r11d),%r12d |
| mov 20(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 28(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 52(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 8(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,20(%rsp) |
| lea 0x6ed9eba1(%eax,%ebp),%r11d |
| mov 24(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 32(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor 56(%rsp),%eax |
| xor %edi,%ebx |
| add %ebp,%r11d |
| xor 12(%rsp),%eax |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,24(%rsp) |
| lea 0x6ed9eba1(%eax,%edi),%ebp |
| mov 28(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 36(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 60(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 16(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,28(%rsp) |
| lea 0x6ed9eba1(%eax,%esi),%edi |
| mov 32(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 40(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 0(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 20(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,32(%rsp) |
| lea -0x70e44324(%eax,%edx),%esi |
| mov 36(%rsp),%eax |
| mov %ebp,%ebx |
| mov %ebp,%ecx |
| xor 44(%rsp),%eax |
| mov %edi,%edx |
| and %r11d,%ebx |
| xor 4(%rsp),%eax |
| or %r11d,%ecx |
| rol $5,%edx |
| xor 24(%rsp),%eax |
| and %r12d,%ecx |
| add %edx,%esi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%ebp |
| mov %eax,36(%rsp) |
| add %ebx,%esi |
| lea -0x70e44324(%eax,%r12d),%edx |
| mov 40(%rsp),%eax |
| mov %edi,%ebx |
| mov %edi,%ecx |
| xor 48(%rsp),%eax |
| mov %esi,%r12d |
| and %ebp,%ebx |
| xor 8(%rsp),%eax |
| or %ebp,%ecx |
| rol $5,%r12d |
| xor 28(%rsp),%eax |
| and %r11d,%ecx |
| add %r12d,%edx |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edi |
| mov %eax,40(%rsp) |
| add %ebx,%edx |
| lea -0x70e44324(%eax,%r11d),%r12d |
| mov 44(%rsp),%eax |
| mov %esi,%ebx |
| mov %esi,%ecx |
| xor 52(%rsp),%eax |
| mov %edx,%r11d |
| and %edi,%ebx |
| xor 12(%rsp),%eax |
| or %edi,%ecx |
| rol $5,%r11d |
| xor 32(%rsp),%eax |
| and %ebp,%ecx |
| add %r11d,%r12d |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%esi |
| mov %eax,44(%rsp) |
| add %ebx,%r12d |
| lea -0x70e44324(%eax,%ebp),%r11d |
| mov 48(%rsp),%eax |
| mov %edx,%ebx |
| mov %edx,%ecx |
| xor 56(%rsp),%eax |
| mov %r12d,%ebp |
| and %esi,%ebx |
| xor 16(%rsp),%eax |
| or %esi,%ecx |
| rol $5,%ebp |
| xor 36(%rsp),%eax |
| and %edi,%ecx |
| add %ebp,%r11d |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edx |
| mov %eax,48(%rsp) |
| add %ebx,%r11d |
| lea -0x70e44324(%eax,%edi),%ebp |
| mov 52(%rsp),%eax |
| mov %r12d,%ebx |
| mov %r12d,%ecx |
| xor 60(%rsp),%eax |
| mov %r11d,%edi |
| and %edx,%ebx |
| xor 20(%rsp),%eax |
| or %edx,%ecx |
| rol $5,%edi |
| xor 40(%rsp),%eax |
| and %esi,%ecx |
| add %edi,%ebp |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%r12d |
| mov %eax,52(%rsp) |
| add %ebx,%ebp |
| lea -0x70e44324(%eax,%esi),%edi |
| mov 56(%rsp),%eax |
| mov %r11d,%ebx |
| mov %r11d,%ecx |
| xor 0(%rsp),%eax |
| mov %ebp,%esi |
| and %r12d,%ebx |
| xor 24(%rsp),%eax |
| or %r12d,%ecx |
| rol $5,%esi |
| xor 44(%rsp),%eax |
| and %edx,%ecx |
| add %esi,%edi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%r11d |
| mov %eax,56(%rsp) |
| add %ebx,%edi |
| lea -0x70e44324(%eax,%edx),%esi |
| mov 60(%rsp),%eax |
| mov %ebp,%ebx |
| mov %ebp,%ecx |
| xor 4(%rsp),%eax |
| mov %edi,%edx |
| and %r11d,%ebx |
| xor 28(%rsp),%eax |
| or %r11d,%ecx |
| rol $5,%edx |
| xor 48(%rsp),%eax |
| and %r12d,%ecx |
| add %edx,%esi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%ebp |
| mov %eax,60(%rsp) |
| add %ebx,%esi |
| lea -0x70e44324(%eax,%r12d),%edx |
| mov 0(%rsp),%eax |
| mov %edi,%ebx |
| mov %edi,%ecx |
| xor 8(%rsp),%eax |
| mov %esi,%r12d |
| and %ebp,%ebx |
| xor 32(%rsp),%eax |
| or %ebp,%ecx |
| rol $5,%r12d |
| xor 52(%rsp),%eax |
| and %r11d,%ecx |
| add %r12d,%edx |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edi |
| mov %eax,0(%rsp) |
| add %ebx,%edx |
| lea -0x70e44324(%eax,%r11d),%r12d |
| mov 4(%rsp),%eax |
| mov %esi,%ebx |
| mov %esi,%ecx |
| xor 12(%rsp),%eax |
| mov %edx,%r11d |
| and %edi,%ebx |
| xor 36(%rsp),%eax |
| or %edi,%ecx |
| rol $5,%r11d |
| xor 56(%rsp),%eax |
| and %ebp,%ecx |
| add %r11d,%r12d |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%esi |
| mov %eax,4(%rsp) |
| add %ebx,%r12d |
| lea -0x70e44324(%eax,%ebp),%r11d |
| mov 8(%rsp),%eax |
| mov %edx,%ebx |
| mov %edx,%ecx |
| xor 16(%rsp),%eax |
| mov %r12d,%ebp |
| and %esi,%ebx |
| xor 40(%rsp),%eax |
| or %esi,%ecx |
| rol $5,%ebp |
| xor 60(%rsp),%eax |
| and %edi,%ecx |
| add %ebp,%r11d |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edx |
| mov %eax,8(%rsp) |
| add %ebx,%r11d |
| lea -0x70e44324(%eax,%edi),%ebp |
| mov 12(%rsp),%eax |
| mov %r12d,%ebx |
| mov %r12d,%ecx |
| xor 20(%rsp),%eax |
| mov %r11d,%edi |
| and %edx,%ebx |
| xor 44(%rsp),%eax |
| or %edx,%ecx |
| rol $5,%edi |
| xor 0(%rsp),%eax |
| and %esi,%ecx |
| add %edi,%ebp |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%r12d |
| mov %eax,12(%rsp) |
| add %ebx,%ebp |
| lea -0x70e44324(%eax,%esi),%edi |
| mov 16(%rsp),%eax |
| mov %r11d,%ebx |
| mov %r11d,%ecx |
| xor 24(%rsp),%eax |
| mov %ebp,%esi |
| and %r12d,%ebx |
| xor 48(%rsp),%eax |
| or %r12d,%ecx |
| rol $5,%esi |
| xor 4(%rsp),%eax |
| and %edx,%ecx |
| add %esi,%edi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%r11d |
| mov %eax,16(%rsp) |
| add %ebx,%edi |
| lea -0x70e44324(%eax,%edx),%esi |
| mov 20(%rsp),%eax |
| mov %ebp,%ebx |
| mov %ebp,%ecx |
| xor 28(%rsp),%eax |
| mov %edi,%edx |
| and %r11d,%ebx |
| xor 52(%rsp),%eax |
| or %r11d,%ecx |
| rol $5,%edx |
| xor 8(%rsp),%eax |
| and %r12d,%ecx |
| add %edx,%esi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%ebp |
| mov %eax,20(%rsp) |
| add %ebx,%esi |
| lea -0x70e44324(%eax,%r12d),%edx |
| mov 24(%rsp),%eax |
| mov %edi,%ebx |
| mov %edi,%ecx |
| xor 32(%rsp),%eax |
| mov %esi,%r12d |
| and %ebp,%ebx |
| xor 56(%rsp),%eax |
| or %ebp,%ecx |
| rol $5,%r12d |
| xor 12(%rsp),%eax |
| and %r11d,%ecx |
| add %r12d,%edx |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edi |
| mov %eax,24(%rsp) |
| add %ebx,%edx |
| lea -0x70e44324(%eax,%r11d),%r12d |
| mov 28(%rsp),%eax |
| mov %esi,%ebx |
| mov %esi,%ecx |
| xor 36(%rsp),%eax |
| mov %edx,%r11d |
| and %edi,%ebx |
| xor 60(%rsp),%eax |
| or %edi,%ecx |
| rol $5,%r11d |
| xor 16(%rsp),%eax |
| and %ebp,%ecx |
| add %r11d,%r12d |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%esi |
| mov %eax,28(%rsp) |
| add %ebx,%r12d |
| lea -0x70e44324(%eax,%ebp),%r11d |
| mov 32(%rsp),%eax |
| mov %edx,%ebx |
| mov %edx,%ecx |
| xor 40(%rsp),%eax |
| mov %r12d,%ebp |
| and %esi,%ebx |
| xor 0(%rsp),%eax |
| or %esi,%ecx |
| rol $5,%ebp |
| xor 20(%rsp),%eax |
| and %edi,%ecx |
| add %ebp,%r11d |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edx |
| mov %eax,32(%rsp) |
| add %ebx,%r11d |
| lea -0x70e44324(%eax,%edi),%ebp |
| mov 36(%rsp),%eax |
| mov %r12d,%ebx |
| mov %r12d,%ecx |
| xor 44(%rsp),%eax |
| mov %r11d,%edi |
| and %edx,%ebx |
| xor 4(%rsp),%eax |
| or %edx,%ecx |
| rol $5,%edi |
| xor 24(%rsp),%eax |
| and %esi,%ecx |
| add %edi,%ebp |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%r12d |
| mov %eax,36(%rsp) |
| add %ebx,%ebp |
| lea -0x70e44324(%eax,%esi),%edi |
| mov 40(%rsp),%eax |
| mov %r11d,%ebx |
| mov %r11d,%ecx |
| xor 48(%rsp),%eax |
| mov %ebp,%esi |
| and %r12d,%ebx |
| xor 8(%rsp),%eax |
| or %r12d,%ecx |
| rol $5,%esi |
| xor 28(%rsp),%eax |
| and %edx,%ecx |
| add %esi,%edi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%r11d |
| mov %eax,40(%rsp) |
| add %ebx,%edi |
| lea -0x70e44324(%eax,%edx),%esi |
| mov 44(%rsp),%eax |
| mov %ebp,%ebx |
| mov %ebp,%ecx |
| xor 52(%rsp),%eax |
| mov %edi,%edx |
| and %r11d,%ebx |
| xor 12(%rsp),%eax |
| or %r11d,%ecx |
| rol $5,%edx |
| xor 32(%rsp),%eax |
| and %r12d,%ecx |
| add %edx,%esi |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%ebp |
| mov %eax,44(%rsp) |
| add %ebx,%esi |
| lea -0x70e44324(%eax,%r12d),%edx |
| mov 48(%rsp),%eax |
| mov %edi,%ebx |
| mov %edi,%ecx |
| xor 56(%rsp),%eax |
| mov %esi,%r12d |
| and %ebp,%ebx |
| xor 16(%rsp),%eax |
| or %ebp,%ecx |
| rol $5,%r12d |
| xor 36(%rsp),%eax |
| and %r11d,%ecx |
| add %r12d,%edx |
| rol $1,%eax |
| or %ecx,%ebx |
| rol $30,%edi |
| mov %eax,48(%rsp) |
| add %ebx,%edx |
| lea -0x359d3e2a(%eax,%r11d),%r12d |
| mov 52(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 60(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 20(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 40(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,52(%rsp) |
| lea -0x359d3e2a(%eax,%ebp),%r11d |
| mov 56(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 0(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor 24(%rsp),%eax |
| xor %edi,%ebx |
| add %ebp,%r11d |
| xor 44(%rsp),%eax |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,56(%rsp) |
| lea -0x359d3e2a(%eax,%edi),%ebp |
| mov 60(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 4(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 28(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 48(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,60(%rsp) |
| lea -0x359d3e2a(%eax,%esi),%edi |
| mov 0(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 8(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 32(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 52(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,0(%rsp) |
| lea -0x359d3e2a(%eax,%edx),%esi |
| mov 4(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 12(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%edx |
| xor 36(%rsp),%eax |
| xor %r12d,%ebx |
| add %edx,%esi |
| xor 56(%rsp),%eax |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| mov %eax,4(%rsp) |
| lea -0x359d3e2a(%eax,%r12d),%edx |
| mov 8(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 16(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%r12d |
| xor 40(%rsp),%eax |
| xor %r11d,%ebx |
| add %r12d,%edx |
| xor 60(%rsp),%eax |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| mov %eax,8(%rsp) |
| lea -0x359d3e2a(%eax,%r11d),%r12d |
| mov 12(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 20(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 44(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 0(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,12(%rsp) |
| lea -0x359d3e2a(%eax,%ebp),%r11d |
| mov 16(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 24(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor 48(%rsp),%eax |
| xor %edi,%ebx |
| add %ebp,%r11d |
| xor 4(%rsp),%eax |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,16(%rsp) |
| lea -0x359d3e2a(%eax,%edi),%ebp |
| mov 20(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 28(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 52(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 8(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,20(%rsp) |
| lea -0x359d3e2a(%eax,%esi),%edi |
| mov 24(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 32(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 56(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 12(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,24(%rsp) |
| lea -0x359d3e2a(%eax,%edx),%esi |
| mov 28(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 36(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%edx |
| xor 60(%rsp),%eax |
| xor %r12d,%ebx |
| add %edx,%esi |
| xor 16(%rsp),%eax |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| mov %eax,28(%rsp) |
| lea -0x359d3e2a(%eax,%r12d),%edx |
| mov 32(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 40(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%r12d |
| xor 0(%rsp),%eax |
| xor %r11d,%ebx |
| add %r12d,%edx |
| xor 20(%rsp),%eax |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| mov %eax,32(%rsp) |
| lea -0x359d3e2a(%eax,%r11d),%r12d |
| mov 36(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 44(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 4(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 24(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| mov %eax,36(%rsp) |
| lea -0x359d3e2a(%eax,%ebp),%r11d |
| mov 40(%rsp),%eax |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor 48(%rsp),%eax |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor 8(%rsp),%eax |
| xor %edi,%ebx |
| add %ebp,%r11d |
| xor 28(%rsp),%eax |
| rol $30,%edx |
| add %ebx,%r11d |
| rol $1,%eax |
| mov %eax,40(%rsp) |
| lea -0x359d3e2a(%eax,%edi),%ebp |
| mov 44(%rsp),%eax |
| mov %edx,%ebx |
| mov %r11d,%edi |
| xor 52(%rsp),%eax |
| xor %r12d,%ebx |
| rol $5,%edi |
| xor 12(%rsp),%eax |
| xor %esi,%ebx |
| add %edi,%ebp |
| xor 32(%rsp),%eax |
| rol $30,%r12d |
| add %ebx,%ebp |
| rol $1,%eax |
| mov %eax,44(%rsp) |
| lea -0x359d3e2a(%eax,%esi),%edi |
| mov 48(%rsp),%eax |
| mov %r12d,%ebx |
| mov %ebp,%esi |
| xor 56(%rsp),%eax |
| xor %r11d,%ebx |
| rol $5,%esi |
| xor 16(%rsp),%eax |
| xor %edx,%ebx |
| add %esi,%edi |
| xor 36(%rsp),%eax |
| rol $30,%r11d |
| add %ebx,%edi |
| rol $1,%eax |
| mov %eax,48(%rsp) |
| lea -0x359d3e2a(%eax,%edx),%esi |
| mov 52(%rsp),%eax |
| mov %r11d,%ebx |
| mov %edi,%edx |
| xor 60(%rsp),%eax |
| xor %ebp,%ebx |
| rol $5,%edx |
| xor 20(%rsp),%eax |
| xor %r12d,%ebx |
| add %edx,%esi |
| xor 40(%rsp),%eax |
| rol $30,%ebp |
| add %ebx,%esi |
| rol $1,%eax |
| lea -0x359d3e2a(%eax,%r12d),%edx |
| mov 56(%rsp),%eax |
| mov %ebp,%ebx |
| mov %esi,%r12d |
| xor 0(%rsp),%eax |
| xor %edi,%ebx |
| rol $5,%r12d |
| xor 24(%rsp),%eax |
| xor %r11d,%ebx |
| add %r12d,%edx |
| xor 44(%rsp),%eax |
| rol $30,%edi |
| add %ebx,%edx |
| rol $1,%eax |
| lea -0x359d3e2a(%eax,%r11d),%r12d |
| mov 60(%rsp),%eax |
| mov %edi,%ebx |
| mov %edx,%r11d |
| xor 4(%rsp),%eax |
| xor %esi,%ebx |
| rol $5,%r11d |
| xor 28(%rsp),%eax |
| xor %ebp,%ebx |
| add %r11d,%r12d |
| xor 48(%rsp),%eax |
| rol $30,%esi |
| add %ebx,%r12d |
| rol $1,%eax |
| lea -0x359d3e2a(%eax,%ebp),%r11d |
| mov %esi,%ebx |
| mov %r12d,%ebp |
| xor %edx,%ebx |
| rol $5,%ebp |
| xor %edi,%ebx |
| add %ebp,%r11d |
| rol $30,%edx |
| add %ebx,%r11d |
| // Update and save state information in SHA-1 context |
| add 0(%r8),%r11d |
| add 4(%r8),%r12d |
| add 8(%r8),%edx |
| add 12(%r8),%esi |
| add 16(%r8),%edi |
| mov %r11d,0(%r8) |
| mov %r12d,4(%r8) |
| mov %edx,8(%r8) |
| mov %esi,12(%r8) |
| mov %edi,16(%r8) |
| |
| xchg %r11d,%edx # mov %r11d,%edx |
| xchg %r12d,%esi # mov %r12d,%esi |
| xchg %r11d,%edi # mov %edx,%edi |
| xchg %r12d,%ebp # mov %esi,%ebp |
| # mov %edi,%r11d |
| lea 64(%r9),%r9 |
| sub $1,%r10 |
| jnz .Lloop |
| mov 64(%rsp),%rsp |
| pop %r12 |
| pop %rbp |
| pop %rbx |
| ret |
| SET_SIZE(sha1_block_data_order) |
| |
| .data |
| .asciz "SHA1 block transform for x86_64, CRYPTOGAMS by <appro@openssl.org>" |
| |
| #endif /* lint || __lint */ |
| |
| #ifdef __ELF__ |
| .section .note.GNU-stack,"",%progbits |
| #endif |