RFE (Bug 285932) add faster sha implementation for studio. NSS_PERFORMANCE_HACKS_BRANCH
authorsaul.edwards%sun.com
Tue, 16 Aug 2005 22:45:41 +0000
branchNSS_PERFORMANCE_HACKS_BRANCH
changeset 6012 135e1bae64eff2441e9585088159ca9f572c276c
parent 6011 a9c076ed98fc9ef9d2db4350921b20d3bcd5a0b3
child 6013 02dbef042c94a71f7c972ac5a02c3671022bf49e
push idunknown
push userunknown
push dateunknown
bugs285932
RFE (Bug 285932) add faster sha implementation for studio.
security/nss/lib/freebl/Makefile
security/nss/lib/freebl/manifest.mn
security/nss/lib/freebl/sha-fast-amd64-sun.s
--- a/security/nss/lib/freebl/Makefile
+++ b/security/nss/lib/freebl/Makefile
@@ -303,19 +303,20 @@ else
     endif
     ifeq ($(USE_64),1)
 	# Solaris for AMD64
 	ifdef NS_USE_GCC
 	    ASFILES  = arcfour-amd64-gas.s mpi_amd64_gas.s
 	    ASFLAGS += -march=opteron -m64 -fPIC
 	    MPI_SRCS += mp_comba.c
 	else
-	    ASFILES  = arcfour-amd64-sun.s mpi_amd64_sun.s
+	    ASFILES  = arcfour-amd64-sun.s mpi_amd64_sun.s sha-fast-amd64-sun.s
 	    ASFILES += mp_comba_amd64_sun.s
 	    ASFLAGS += -xarch=generic64 -K PIC
+	    SHA_SRCS =
 	endif
 	DEFINES += -DNSS_BEVAND_ARCFOUR -DMPI_AMD64 -DMP_ASSEMBLY_MULTIPLY
 	DEFINES += -DNSS_USE_COMBA
 	MPI_SRCS += mpi_amd64.c
     else
 	# Solaris x86
 	DEFINES += -D_X86_
 	DEFINES += -DMP_USE_UINT_DIGIT
--- a/security/nss/lib/freebl/manifest.mn
+++ b/security/nss/lib/freebl/manifest.mn
@@ -100,22 +100,23 @@ ECL_SRCS = ecl.c ecl_curve.c ecl_mult.c 
 	ec2_aff.c ec2_mont.c ec2_proj.c \
 	ec2_163.c ec2_193.c ec2_233.c \
 	ecp_aff.c ecp_jac.c ecp_mont.c \
 	ecp_192.c ecp_224.c \
 	ec_naf.c ecp_jm.c
 else
 ECL_SRCS = $(NULL)
 endif
+SHA_SRCS = sha_fast.c
 
 CSRCS = \
 	ldvector.c \
 	prng_fips1861.c \
 	sysrand.c \
-	sha_fast.c \
+	$(SHA_SRCS) \
 	md2.c \
 	md5.c \
 	sha512.c \
 	alghmac.c \
 	rawhash.c \
 	alg2268.c \
 	arcfour.c \
 	arcfive.c \
new file mode 100644
--- /dev/null
+++ b/security/nss/lib/freebl/sha-fast-amd64-sun.s
@@ -0,0 +1,2142 @@
+//* ***** BEGIN LICENSE BLOCK *****
+/ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+/ *
+/ * The contents of this file are subject to the Mozilla Public License Version
+/ * 1.1 (the "License"); you may not use this file except in compliance with
+/ * the License. You may obtain a copy of the License at
+/ * http://www.mozilla.org/MPL/
+/ *
+/ * Software distributed under the License is distributed on an "AS IS" basis,
+/ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+/ * for the specific language governing rights and limitations under the
+/ * License.
+/ *
+/ * The Original Code is SHA 180-1 Reference Implementation (Optimized).
+/ *
+/ * The Initial Developer of the Original Code is
+/ * Paul Kocher of Cryptography Research.
+/ * Portions created by the Initial Developer are Copyright (C) 1995-9
+/ * the Initial Developer. All Rights Reserved.
+/ *
+/ * Contributor(s):
+/ *
+/ * Alternatively, the contents of this file may be used under the terms of
+/ * either the GNU General Public License Version 2 or later (the "GPL"), or
+/ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+/ * in which case the provisions of the GPL or the LGPL are applicable instead
+/ * of those above. If you wish to allow use of your version of this file only
+/ * under the terms of either the GPL or the LGPL, and not to allow others to
+/ * use your version of this file under the terms of the MPL, indicate your
+/ * decision by deleting the provisions above and replace them with the notice
+/ * and other provisions required by the GPL or the LGPL. If you do not delete
+/ * the provisions above, a recipient may use your version of this file under
+/ * the terms of any one of the MPL, the GPL or the LGPL.
+/ *
+/ * ***** END LICENSE BLOCK ***** */
+
+        .file   "sha_fast.c"
+        .text
+        .align 16
+.globl SHA1_Begin
+        .type   SHA1_Begin, @function
+SHA1_Begin:
+.LFB4:
+        movl    $4023233417, %ecx
+        movl    $2562383102, %edx
+        movl    $3285377520, %eax
+        movq    $0, 64(%rdi)
+        movq    $1732584193, 72(%rdi)
+        movq    %rcx, 80(%rdi)
+        movq    %rdx, 88(%rdi)
+        movq    $271733878, 96(%rdi)
+        movq    %rax, 104(%rdi)
+        ret
+.LFE4:
+        .size   SHA1_Begin, .-SHA1_Begin
+        .align 16
+        .type   shaCompress, @function
+shaCompress:
+.LFB7:
+        pushq   %r15
+.LCFI0:
+        pushq   %r14
+.LCFI1:
+        pushq   %r13
+.LCFI2:
+        pushq   %r12
+.LCFI3:
+        movq    -88(%rdi), %r12
+        movq    -80(%rdi), %r10
+        movq    -72(%rdi), %r13
+        movq    -64(%rdi), %r8
+        pushq   %rbx
+.LCFI4:
+        movq    -56(%rdi), %rcx
+        movl    (%rsi), %eax
+        movl    %r12d, %edx
+        movq    %r13, %r9
+        roll    $5, %edx
+        movl    4(%rsi), %ebx
+        xorq    %r8, %r9 
+/APP
+        bswap %eax
+/NO_APP
+        andq    %r10, %r9
+        mov     %eax, %r15d
+        roll    $30, %r10d
+        movq    %r15, -48(%rdi)
+        xorq    %r8, %r9 
+        movq    -48(%rdi), %r14
+        addq    %r9, %rdx
+        movq    %r10, %rax
+        movl    %r12d, %r15d
+        addq    %rcx, %rdx
+        xorq    %r13, %rax 
+        roll    $30, %r15d
+        leaq    1518500249(%rdx,%r14), %rdx
+        andq    %r12, %rax
+        movq    %r15, %r12
+/APP
+        bswap %ebx
+/NO_APP
+        movl    %edx, %ecx
+        mov     %ebx, %r11d
+        xorq    %r13, %rax 
+        movq    %r11, -40(%rdi)
+        roll    $5, %ecx
+        movq    -40(%rdi), %r9
+        addq    %rax, %rcx
+        xorq    %r10, %r12 
+        movl    8(%rsi), %r14d
+        addq    %r8, %rcx
+        andq    %rdx, %r12
+        movl    %edx, %r11d
+        leaq    1518500249(%rcx,%r9), %rcx
+        xorq    %r10, %r12 
+        roll    $30, %r11d
+/APP
+        bswap %r14d
+/NO_APP
+        movl    %ecx, %r8d
+        mov     %r14d, %ebx
+        movl    12(%rsi), %r9d
+        movq    %rbx, -32(%rdi)
+        roll    $5, %r8d
+        movq    -32(%rdi), %rax
+        addq    %r12, %r8
+        movq    %r11, %r12
+        movl    %ecx, %ebx
+        addq    %r13, %r8
+        xorq    %r15, %r12 
+        roll    $30, %ebx
+        leaq    1518500249(%r8,%rax), %r8
+        andq    %rcx, %r12
+        movl    16(%rsi), %eax
+/APP
+        bswap %r9d
+/NO_APP
+        movl    %r8d, %edx
+        mov     %r9d, %r14d
+        xorq    %r15, %r12 
+        movq    %r14, -24(%rdi)
+        roll    $5, %edx
+        movq    -24(%rdi), %r13
+        addq    %r12, %rdx
+        movq    %rbx, %r12
+        movl    %r8d, %r14d
+        addq    %r10, %rdx
+        leaq    1518500249(%rdx,%r13), %rdx
+        movl    20(%rsi), %r13d
+/APP
+        bswap %eax
+/NO_APP
+        movl    %edx, %ecx
+        mov     %eax, %r9d
+        roll    $5, %ecx
+        xorq    %r11, %r12 
+        movq    %r9, -16(%rdi)
+        andq    %r8, %r12
+        movq    -16(%rdi), %r10
+        roll    $30, %r14d
+        xorq    %r11, %r12 
+        movq    %r14, %rax
+        movl    %edx, %r9d
+        addq    %r12, %rcx
+        xorq    %rbx, %rax 
+        roll    $30, %r9d
+        addq    %r15, %rcx
+        andq    %rdx, %rax
+        leaq    1518500249(%rcx,%r10), %rcx
+        xorq    %rbx, %rax 
+        movl    24(%rsi), %r10d
+/APP
+        bswap %r13d
+/NO_APP
+        movl    %ecx, %r8d
+        mov     %r13d, %r15d
+        movq    %r15, -8(%rdi)
+        roll    $5, %r8d
+        movq    -8(%rdi), %r12
+        addq    %rax, %r8
+        movl    %ecx, %r15d
+        addq    %r11, %r8
+        movq    %r9, %r11
+        roll    $30, %r15d
+        leaq    1518500249(%r8,%r12), %r8
+        xorq    %r14, %r11 
+        movl    28(%rsi), %r12d
+/APP
+        bswap %r10d
+/NO_APP
+        andq    %rcx, %r11
+        mov     %r10d, %r13d
+        movl    %r8d, %edx
+        movq    %r13, (%rdi)
+        xorq    %r14, %r11 
+        movq    (%rdi), %rax
+        roll    $5, %edx
+        movq    %r15, %r10
+        movl    %r8d, %r13d
+        addq    %r11, %rdx
+        xorq    %r9, %r10 
+        roll    $30, %r13d
+        addq    %rbx, %rdx
+        andq    %r8, %r10
+        leaq    1518500249(%rdx,%rax), %rdx
+        xorq    %r9, %r10 
+        movl    32(%rsi), %eax
+/APP
+        bswap %r12d
+/NO_APP
+        movl    %edx, %ecx
+        mov     %r12d, %ebx
+        movq    %rbx, 8(%rdi)
+        roll    $5, %ecx
+        movq    8(%rdi), %r11
+        addq    %r10, %rcx
+        movq    %r13, %r10
+        movl    %edx, %ebx
+        addq    %r14, %rcx
+        leaq    1518500249(%rcx,%r11), %rcx
+/APP
+        bswap %eax
+/NO_APP
+        movl    %ecx, %r8d
+        mov     %eax, %r12d
+        roll    $5, %r8d
+        xorq    %r15, %r10 
+        movq    %r12, 16(%rdi)
+        andq    %rdx, %r10
+        movq    16(%rdi), %r14
+        roll    $30, %ebx
+        xorq    %r15, %r10 
+        movq    %rbx, %rax
+        movl    36(%rsi), %r11d
+        addq    %r10, %r8
+        xorq    %r13, %rax 
+        movl    %ecx, %r12d
+        addq    %r9, %r8
+        andq    %rcx, %rax
+        roll    $30, %r12d
+        leaq    1518500249(%r8,%r14), %r8
+        xorq    %r13, %rax 
+        movl    40(%rsi), %r14d
+/APP
+        bswap %r11d
+/NO_APP
+        movl    %r8d, %edx
+        mov     %r11d, %r9d
+        movq    %r12, %r11
+        movq    %r9, 24(%rdi)
+        roll    $5, %edx
+        movq    24(%rdi), %r10
+        addq    %rax, %rdx
+        xorq    %rbx, %r11 
+        movl    %r8d, %r9d
+        addq    %r15, %rdx
+        andq    %r8, %r11
+        roll    $30, %r9d
+        leaq    1518500249(%rdx,%r10), %rdx
+        xorq    %rbx, %r11 
+        movl    44(%rsi), %r10d
+/APP
+        bswap %r14d
+/NO_APP
+        movl    %edx, %ecx
+        mov     %r14d, %r15d
+        movq    %r15, 32(%rdi)
+        roll    $5, %ecx
+        movq    32(%rdi), %rax
+        addq    %r11, %rcx
+        movq    %r9, %r11
+        movl    %edx, %r15d
+        addq    %r13, %rcx
+        xorq    %r12, %r11 
+        roll    $30, %r15d
+        leaq    1518500249(%rcx,%rax), %rcx
+        andq    %rdx, %r11
+        movl    48(%rsi), %eax
+/APP
+        bswap %r10d
+/NO_APP
+        movl    %ecx, %r8d
+        mov     %r10d, %r14d
+        xorq    %r12, %r11 
+        movq    %r14, 40(%rdi)
+        roll    $5, %r8d
+        movq    40(%rdi), %r13
+        addq    %r11, %r8
+        movq    %r15, %r10
+        movl    %ecx, %r14d
+        addq    %rbx, %r8
+        xorq    %r9, %r10 
+        leaq    1518500249(%r8,%r13), %r8
+        movl    52(%rsi), %r13d
+/APP
+        bswap %eax
+/NO_APP
+        movl    %r8d, %edx
+        mov     %eax, %ebx
+        roll    $5, %edx
+        andq    %rcx, %r10
+        movq    %rbx, 48(%rdi)
+        xorq    %r9, %r10 
+        movq    48(%rdi), %r11
+        roll    $30, %r14d
+        addq    %r10, %rdx
+        movq    %r14, %rax
+        movl    %r8d, %ebx
+        addq    %r12, %rdx
+        xorq    %r15, %rax 
+        roll    $30, %ebx
+        leaq    1518500249(%rdx,%r11), %rdx
+        andq    %r8, %rax
+        movl    56(%rsi), %r11d
+/APP
+        bswap %r13d
+/NO_APP
+        movl    %edx, %ecx
+        mov     %r13d, %r12d
+        xorq    %r15, %rax 
+        movq    %r12, 56(%rdi)
+        roll    $5, %ecx
+        movq    56(%rdi), %r10
+        addq    %rax, %rcx
+        movl    %edx, %r12d
+        addq    %r9, %rcx
+        movq    %rbx, %r9
+        roll    $30, %r12d
+        leaq    1518500249(%rcx,%r10), %rcx
+        xorq    %r14, %r9 
+        movl    60(%rsi), %r10d
+/APP
+        bswap %r11d
+/NO_APP
+        andq    %rdx, %r9
+        mov     %r11d, %r13d
+        movl    %ecx, %r8d
+        movq    %r13, 64(%rdi)
+        xorq    %r14, %r9 
+        movq    64(%rdi), %rax
+        roll    $5, %r8d
+        movq    %r12, %r11
+        movl    %ecx, %r13d
+        addq    %r9, %r8
+        xorq    %rbx, %r11 
+        roll    $30, %r13d
+        addq    %r15, %r8
+        andq    %rcx, %r11
+        leaq    1518500249(%r8,%rax), %r8
+        xorq    %rbx, %r11 
+/APP
+        bswap %r10d
+/NO_APP
+        movl    %r8d, %esi
+        mov     %r10d, %r15d
+        movq    %r15, 72(%rdi)
+        roll    $5, %esi
+        movq    72(%rdi), %r9
+        movq    56(%rdi), %r10
+        movq    16(%rdi), %rcx
+        addq    %r11, %rsi
+        movq    -32(%rdi), %rdx
+        addq    %r14, %rsi
+        movq    -48(%rdi), %rax
+        leaq    1518500249(%rsi,%r9), %r14
+        movq    %r13, %r11
+        movl    %r8d, %r15d
+        xorq    %rcx, %r10 
+        xorq    %rdx, %r10 
+        movl    %r14d, %ecx
+        xorl    %eax, %r10d
+        roll    %r10d
+        roll    $5, %ecx
+        xorq    %r12, %r11 
+        andq    %r8, %r11
+        movq    %r10, -48(%rdi)
+        movq    -48(%rdi), %r9
+        xorq    %r12, %r11 
+        roll    $30, %r15d
+        movl    %r14d, %r10d
+        addq    %r11, %rcx
+        movq    64(%rdi), %r11
+        movq    24(%rdi), %rdx
+        addq    %rbx, %rcx
+        movq    -24(%rdi), %rbx
+        movq    -40(%rdi), %rax
+        leaq    1518500249(%rcx,%r9), %rcx
+        movq    %r15, %r8
+        roll    $30, %r10d
+        xorq    %rdx, %r11 
+        xorq    %r13, %r8 
+        xorq    %rbx, %r11 
+        andq    %r14, %r8
+        movl    %ecx, %r9d
+        xorl    %eax, %r11d
+        xorq    %r13, %r8 
+        roll    $5, %r9d
+        roll    %r11d
+        addq    %r8, %r9
+        movq    %r10, %rax
+        movq    %r11, -40(%rdi)
+        movq    -40(%rdi), %rsi
+        addq    %r12, %r9
+        movq    72(%rdi), %rbx
+        movq    32(%rdi), %rdx
+        xorq    %r15, %rax 
+        movq    -16(%rdi), %r14
+        movq    -32(%rdi), %r12
+        andq    %rcx, %rax
+        leaq    1518500249(%r9,%rsi), %r9
+        xorq    %r15, %rax 
+        movl    %ecx, %r11d
+        xorq    %rdx, %rbx 
+        roll    $30, %r11d
+        xorq    %r14, %rbx 
+        movl    %r9d, %esi
+        xorl    %r12d, %ebx
+        roll    $5, %esi
+        roll    %ebx
+        addq    %rax, %rsi
+        movq    %rbx, -32(%rdi)
+        movq    -32(%rdi), %r8
+        addq    %r13, %rsi
+        movq    -48(%rdi), %r12
+        movq    40(%rdi), %rdx
+        movq    %r11, %r13
+        movq    -8(%rdi), %r14
+        movq    -24(%rdi), %rcx
+        movl    %r9d, %ebx
+        leaq    1518500249(%rsi,%r8), %rsi
+        xorq    %rdx, %r12 
+        xorq    %r14, %r12 
+        movl    %esi, %r8d
+        xorl    %ecx, %r12d
+        roll    %r12d
+        roll    $5, %r8d
+        xorq    %r10, %r13 
+        andq    %r9, %r13
+        movq    %r12, -24(%rdi)
+        movq    -24(%rdi), %rax
+        xorq    %r10, %r13 
+        roll    $30, %ebx
+        movl    %esi, %r12d
+        addq    %r13, %r8
+        xorq    %rbx, %rsi 
+        roll    $30, %r12d
+        addq    %r15, %r8
+        movq    -40(%rdi), %r15
+        movq    48(%rdi), %rdx
+        movq    (%rdi), %r14
+        movq    -16(%rdi), %r9
+        leaq    1518500249(%r8,%rax), %r13
+        xorq    %r11, %rsi 
+        xorq    %rdx, %r15 
+        movl    %r13d, %ecx
+        xorq    %r14, %r15 
+        roll    $5, %ecx
+        xorl    %r9d, %r15d
+        addq    %rsi, %rcx
+        roll    %r15d
+        addq    %r10, %rcx
+        movq    %r15, -16(%rdi)
+        movq    -16(%rdi), %rsi
+        movl    %r13d, %r15d
+        movq    -32(%rdi), %r14
+        movq    56(%rdi), %rax
+        xorq    %r12, %r13 
+        movq    8(%rdi), %rdx
+        movq    -8(%rdi), %r10
+        xorq    %rbx, %r13 
+        leaq    1859775393(%rcx,%rsi), %r9
+        roll    $30, %r15d
+        xorq    %rax, %r14 
+        xorq    %rdx, %r14 
+        movl    %r9d, %esi
+        xorl    %r10d, %r14d
+        roll    $5, %esi
+        roll    %r14d
+        addq    %r13, %rsi
+        movq    %r14, -8(%rdi)
+        movq    -8(%rdi), %r8
+        addq    %r11, %rsi
+        movq    -24(%rdi), %r13
+        movq    64(%rdi), %rax
+        movl    %r9d, %r14d
+        movq    16(%rdi), %rdx
+        movq    (%rdi), %r11
+        xorq    %r15, %r9 
+        leaq    1859775393(%rsi,%r8), %r10
+        xorq    %rax, %r13 
+        xorq    %rdx, %r13 
+        movl    %r10d, %r8d
+        xorl    %r11d, %r13d
+        roll    $5, %r8d
+        roll    %r13d
+        xorq    %r12, %r9 
+        roll    $30, %r14d
+        addq    %r9, %r8
+        movq    %r13, (%rdi)
+        movq    (%rdi), %rcx
+        addq    %rbx, %r8
+        movq    -16(%rdi), %rbx
+        movq    72(%rdi), %rax
+        movq    24(%rdi), %rdx
+        movq    8(%rdi), %r9
+        movl    %r10d, %r13d
+        leaq    1859775393(%r8,%rcx), %r11
+        xorq    %r14, %r10 
+        roll    $30, %r13d
+        xorq    %rax, %rbx 
+        xorq    %r15, %r10 
+        xorq    %rdx, %rbx 
+        movl    %r11d, %ecx
+        xorl    %r9d, %ebx
+        roll    $5, %ecx
+        roll    %ebx
+        addq    %r10, %rcx
+        movq    %rbx, 8(%rdi)
+        movq    8(%rdi), %rsi
+        addq    %r12, %rcx
+        movq    -8(%rdi), %r12
+        movq    -48(%rdi), %rax
+        movl    %r11d, %ebx
+        movq    32(%rdi), %rdx
+        movq    16(%rdi), %r9
+        xorq    %r13, %r11 
+        leaq    1859775393(%rcx,%rsi), %r10
+        xorq    %r14, %r11 
+        roll    $30, %ebx
+        xorq    %rax, %r12 
+        xorq    %rdx, %r12 
+        movl    %r10d, %esi
+        xorl    %r9d, %r12d
+        roll    $5, %esi
+        roll    %r12d
+        addq    %r11, %rsi
+        movq    %r12, 16(%rdi)
+        addq    %r15, %rsi
+        movq    16(%rdi), %r8
+        movq    (%rdi), %r15
+        movq    -40(%rdi), %rax
+        movl    %r10d, %r12d
+        movq    40(%rdi), %rdx
+        movq    24(%rdi), %r9
+        xorq    %rbx, %r10 
+        leaq    1859775393(%rsi,%r8), %r11
+        xorq    %r13, %r10 
+        xorq    %rax, %r15 
+        xorq    %rdx, %r15 
+        movl    %r11d, %r8d
+        xorl    %r9d, %r15d
+        roll    $5, %r8d
+        roll    %r15d
+        addq    %r10, %r8
+        movq    %r15, 24(%rdi)
+        movq    24(%rdi), %rcx
+        addq    %r14, %r8
+        movq    8(%rdi), %r14
+        movq    -32(%rdi), %rax
+        roll    $30, %r12d
+        movq    48(%rdi), %rdx
+        movq    32(%rdi), %r10
+        movl    %r11d, %r15d
+        leaq    1859775393(%r8,%rcx), %r9
+        xorq    %r12, %r11 
+        roll    $30, %r15d
+        xorq    %rax, %r14 
+        xorq    %rbx, %r11 
+        xorq    %rdx, %r14 
+        movl    %r9d, %ecx
+        xorl    %r10d, %r14d
+        roll    $5, %ecx
+        roll    %r14d
+        addq    %r11, %rcx
+        movq    %r14, 32(%rdi)
+        addq    %r13, %rcx
+        movq    32(%rdi), %rsi
+        movq    16(%rdi), %r13
+        movq    -24(%rdi), %rax
+        movl    %r9d, %r14d
+        movq    56(%rdi), %rdx
+        movq    40(%rdi), %r11
+        xorq    %r15, %r9 
+        leaq    1859775393(%rcx,%rsi), %r10
+        xorq    %r12, %r9 
+        roll    $30, %r14d
+        xorq    %rax, %r13 
+        xorq    %rdx, %r13 
+        movl    %r10d, %esi
+        xorl    %r11d, %r13d
+        roll    $5, %esi
+        roll    %r13d
+        addq    %r9, %rsi
+        movq    %r13, 40(%rdi)
+        movq    40(%rdi), %r8
+        addq    %rbx, %rsi
+        movq    24(%rdi), %rbx
+        movq    -16(%rdi), %rax
+        movl    %r10d, %r13d
+        movq    64(%rdi), %rdx
+        movq    48(%rdi), %r9
+        xorq    %r14, %r10 
+        leaq    1859775393(%rsi,%r8), %r11
+        xorq    %r15, %r10 
+        roll    $30, %r13d
+        xorq    %rax, %rbx 
+        xorq    %rdx, %rbx 
+        movl    %r11d, %r8d
+        xorl    %r9d, %ebx
+        roll    $5, %r8d
+        roll    %ebx
+        addq    %r10, %r8
+        movq    %rbx, 48(%rdi)
+        addq    %r12, %r8
+        movq    48(%rdi), %rcx
+        movq    32(%rdi), %r12
+        movq    -8(%rdi), %rax
+        movl    %r11d, %ebx
+        movq    72(%rdi), %rdx
+        movq    56(%rdi), %r9
+        leaq    1859775393(%r8,%rcx), %r10
+        xorq    %rax, %r12 
+        xorq    %rdx, %r12 
+        movl    %r10d, %ecx
+        xorl    %r9d, %r12d
+        xorq    %r13, %r11 
+        roll    $5, %ecx
+        xorq    %r14, %r11 
+        roll    %r12d
+        roll    $30, %ebx
+        addq    %r11, %rcx
+        movq    %r12, 56(%rdi)
+        movq    56(%rdi), %rsi
+        addq    %r15, %rcx
+        movq    40(%rdi), %r15
+        movq    (%rdi), %rax
+        movq    -48(%rdi), %rdx
+        movq    64(%rdi), %r9
+        movl    %r10d, %r12d
+        leaq    1859775393(%rcx,%rsi), %r11
+        xorq    %rbx, %r10 
+        roll    $30, %r12d
+        xorq    %rax, %r15 
+        xorq    %r13, %r10 
+        xorq    %rdx, %r15 
+        movl    %r11d, %esi
+        xorl    %r9d, %r15d
+        roll    $5, %esi
+        roll    %r15d
+        addq    %r10, %rsi
+        movq    %r15, 64(%rdi)
+        movq    64(%rdi), %r8
+        addq    %r14, %rsi
+        movq    48(%rdi), %r14
+        movq    8(%rdi), %rax
+        movl    %r11d, %r15d
+        movq    -40(%rdi), %rdx
+        movq    72(%rdi), %r10
+        xorq    %r12, %r11 
+        leaq    1859775393(%rsi,%r8), %r9
+        xorq    %rbx, %r11 
+        roll    $30, %r15d
+        xorq    %rax, %r14 
+        xorq    %rdx, %r14 
+        movl    %r9d, %r8d
+        xorl    %r10d, %r14d
+        roll    $5, %r8d
+        roll    %r14d
+        addq    %r11, %r8
+        movq    %r14, 72(%rdi)
+        addq    %r13, %r8
+        movq    72(%rdi), %rcx
+        movq    56(%rdi), %r13
+        movq    16(%rdi), %rax
+        movl    %r9d, %r14d
+        movq    -32(%rdi), %rdx
+        movq    -48(%rdi), %r11
+        leaq    1859775393(%r8,%rcx), %r10
+        xorq    %rax, %r13 
+        xorq    %rdx, %r13 
+        movl    %r10d, %ecx
+        xorl    %r11d, %r13d
+        roll    $5, %ecx
+        roll    %r13d
+        xorq    %r15, %r9 
+        roll    $30, %r14d
+        xorq    %r12, %r9 
+        movq    %r13, -48(%rdi)
+        movq    -48(%rdi), %rsi
+        addq    %r9, %rcx
+        movl    %r10d, %r13d
+        xorq    %r14, %r10 
+        addq    %rbx, %rcx
+        movq    64(%rdi), %rbx
+        movq    24(%rdi), %rax
+        movq    -24(%rdi), %rdx
+        leaq    1859775393(%rcx,%rsi), %r11
+        movq    -40(%rdi), %r9
+        xorq    %r15, %r10 
+        roll    $30, %r13d
+        xorq    %rax, %rbx 
+        movl    %r11d, %esi
+        xorq    %rdx, %rbx 
+        roll    $5, %esi
+        xorl    %r9d, %ebx
+        addq    %r10, %rsi
+        roll    %ebx
+        addq    %r12, %rsi
+        movq    %rbx, -40(%rdi)
+        movq    -40(%rdi), %r8
+        movl    %r11d, %ebx
+        movq    72(%rdi), %r12
+        movq    32(%rdi), %rax
+        xorq    %r13, %r11 
+        movq    -16(%rdi), %rdx
+        movq    -32(%rdi), %r9
+        xorq    %r14, %r11 
+        leaq    1859775393(%rsi,%r8), %r10
+        roll    $30, %ebx
+        xorq    %rax, %r12 
+        xorq    %rdx, %r12 
+        movl    %r10d, %r8d
+        xorl    %r9d, %r12d
+        roll    $5, %r8d
+        roll    %r12d
+        addq    %r11, %r8
+        movq    %r12, -32(%rdi)
+        movq    -32(%rdi), %rcx
+        addq    %r15, %r8
+        movq    -48(%rdi), %r15
+        movq    40(%rdi), %rax
+        movl    %r10d, %r12d
+        movq    -8(%rdi), %rdx
+        movq    -24(%rdi), %r9
+        xorq    %rbx, %r10 
+        leaq    1859775393(%r8,%rcx), %r11
+        xorq    %r13, %r10 
+        xorq    %rax, %r15 
+        xorq    %rdx, %r15 
+        movl    %r11d, %ecx
+        xorl    %r9d, %r15d
+        roll    $5, %ecx
+        roll    %r15d
+        addq    %r10, %rcx
+        addq    %r14, %rcx
+        movq    %r15, -24(%rdi)
+        movq    -24(%rdi), %rsi
+        movq    -40(%rdi), %r14
+        movq    48(%rdi), %rax
+        roll    $30, %r12d
+        movq    (%rdi), %rdx
+        movq    -16(%rdi), %r10
+        movl    %r11d, %r15d
+        leaq    1859775393(%rcx,%rsi), %r9
+        xorq    %r12, %r11 
+        roll    $30, %r15d
+        xorq    %rax, %r14 
+        xorq    %rbx, %r11 
+        xorq    %rdx, %r14 
+        movl    %r9d, %esi
+        xorl    %r10d, %r14d
+        roll    $5, %esi
+        roll    %r14d
+        addq    %r11, %rsi
+        movq    %r14, -16(%rdi)
+        movq    -16(%rdi), %r8
+        addq    %r13, %rsi
+        movq    -32(%rdi), %r11
+        movq    56(%rdi), %rax
+        movl    %r9d, %r14d
+        movq    8(%rdi), %rdx
+        movq    -8(%rdi), %r10
+        xorq    %r15, %r9 
+        leaq    1859775393(%rsi,%r8), %r13
+        xorq    %r12, %r9 
+        roll    $30, %r14d
+        xorq    %rax, %r11 
+        xorq    %rdx, %r11 
+        movl    %r13d, %r8d
+        xorl    %r10d, %r11d
+        roll    $5, %r8d
+        movl    %r13d, %r10d
+        roll    %r11d
+        addq    %r9, %r8
+        xorq    %r14, %r13 
+        movq    %r11, -8(%rdi)
+        addq    %rbx, %r8
+        movq    -8(%rdi), %rbx
+        movq    -24(%rdi), %r9
+        movq    64(%rdi), %rax
+        xorq    %r15, %r13 
+        movq    16(%rdi), %rdx
+        movq    (%rdi), %rcx
+        leaq    1859775393(%r8,%rbx), %r11
+        xorq    %rax, %r9 
+        xorq    %rdx, %r9 
+        movl    %r11d, %ebx
+        xorl    %ecx, %r9d
+        roll    $5, %ebx
+        roll    %r9d
+        addq    %r13, %rbx
+        movq    %r9, (%rdi)
+        movq    (%rdi), %rsi
+        addq    %r12, %rbx
+        movq    -16(%rdi), %r12
+        movq    72(%rdi), %r13
+        movl    %r11d, %r9d
+        leaq    1859775393(%rbx,%rsi), %rcx
+        movl    %r10d, %ebx
+        movq    24(%rdi), %r10
+        movq    8(%rdi), %rax
+        xorq    %r13, %r12 
+        roll    $30, %ebx
+        movl    %ecx, %esi
+        xorq    %r10, %r12 
+        xorq    %rbx, %r11 
+        roll    $5, %esi
+        xorl    %eax, %r12d
+        xorq    %r14, %r11 
+        roll    $30, %r9d
+        roll    %r12d
+        addq    %r11, %rsi
+        movq    %rcx, %rax
+        movq    %r12, 8(%rdi)
+        movq    8(%rdi), %rdx
+        addq    %r15, %rsi
+        movq    -8(%rdi), %r11
+        movq    -48(%rdi), %r13
+        movl    %ecx, %r12d
+        movq    32(%rdi), %r10
+        movq    16(%rdi), %r8
+        orq     %r9, %rcx
+        leaq    1859775393(%rsi,%rdx), %rsi
+        andq    %rbx, %rcx
+        andq    %r9, %rax
+        xorq    %r13, %r11 
+        orq     %rcx, %rax
+        roll    $30, %r12d
+        xorq    %r10, %r11 
+        movq    %rsi, %r10
+        xorl    %r8d, %r11d
+        movl    %esi, %r8d
+        andq    %r12, %r10
+        roll    %r11d
+        roll    $5, %r8d
+        movq    %r11, 16(%rdi)
+        addq    %rax, %r8
+        movq    16(%rdi), %r15
+        movq    (%rdi), %r13
+        movq    -40(%rdi), %rdx
+        addq    %r14, %r8
+        movq    40(%rdi), %r14
+        movq    24(%rdi), %rcx
+        movl    %esi, %r11d
+        addq    %r15, %r8
+        movl    $2400959708, %r15d
+        orq     %r12, %rsi
+        xorq    %rdx, %r13 
+        addq    %r15, %r8
+        andq    %r9, %rsi
+        xorq    %r14, %r13 
+        orq     %rsi, %r10
+        xorl    %ecx, %r13d
+        movl    %r8d, %ecx
+        roll    %r13d
+        roll    $5, %ecx
+        movq    %r13, 24(%rdi)
+        addq    %r10, %rcx
+        movq    24(%rdi), %rax
+        movq    8(%rdi), %r14
+        movq    -32(%rdi), %rdx
+        addq    %rbx, %rcx
+        movq    48(%rdi), %rbx
+        movq    32(%rdi), %rsi
+        roll    $30, %r11d
+        addq    %rax, %rcx
+        movl    %r8d, %r13d
+        movq    %r8, %r10
+        xorq    %rdx, %r14 
+        addq    %r15, %rcx
+        orq     %r11, %r8
+        xorq    %rbx, %r14 
+        andq    %r12, %r8
+        andq    %r11, %r10
+        xorl    %esi, %r14d
+        movl    %ecx, %esi
+        orq     %r8, %r10
+        roll    $5, %esi
+        roll    %r14d
+        roll    $30, %r13d
+        addq    %r10, %rsi
+        movq    %r14, 32(%rdi)
+        movq    32(%rdi), %rax
+        addq    %r9, %rsi
+        movq    16(%rdi), %r9
+        movq    -24(%rdi), %rdx
+        movq    56(%rdi), %rbx
+        movq    40(%rdi), %r8
+        movl    %ecx, %r14d
+        addq    %rax, %rsi
+        movq    %rcx, %r10
+        orq     %r13, %rcx
+        xorq    %rdx, %r9 
+        addq    %r15, %rsi
+        andq    %r11, %rcx
+        xorq    %rbx, %r9 
+        andq    %r13, %r10
+        roll    $30, %r14d
+        xorl    %r8d, %r9d
+        movl    %esi, %r8d
+        orq     %rcx, %r10
+        roll    %r9d
+        roll    $5, %r8d
+        movq    %r9, 40(%rdi)
+        addq    %r10, %r8
+        movq    40(%rdi), %rax
+        movq    24(%rdi), %r10
+        movq    -16(%rdi), %rdx
+        addq    %r12, %r8
+        movq    64(%rdi), %rbx
+        movq    48(%rdi), %rcx
+        movl    %esi, %r9d
+        addq    %rax, %r8
+        movq    %rsi, %r12
+        xorq    %rdx, %r10 
+        addq    %r15, %r8
+        xorq    %rbx, %r10 
+        orq     %r14, %rsi
+        andq    %r14, %r12
+        andq    %r13, %rsi
+        xorl    %ecx, %r10d
+        movl    %r8d, %ecx
+        orq     %rsi, %r12
+        roll    %r10d
+        roll    $5, %ecx
+        movq    %r10, 48(%rdi)
+        addq    %r12, %rcx
+        movq    48(%rdi), %rax
+        movq    32(%rdi), %r12
+        movq    -8(%rdi), %rdx
+        addq    %r11, %rcx
+        movq    72(%rdi), %rbx
+        movq    56(%rdi), %rsi
+        roll    $30, %r9d
+        addq    %rax, %rcx
+        movl    %r8d, %r10d
+        movq    %r8, %r11
+        xorq    %rdx, %r12 
+        addq    %r15, %rcx
+        orq     %r9, %r8
+        xorq    %rbx, %r12 
+        andq    %r14, %r8
+        andq    %r9, %r11
+        xorl    %esi, %r12d
+        movl    %ecx, %esi
+        orq     %r8, %r11
+        roll    %r12d
+        roll    $5, %esi
+        roll    $30, %r10d
+        movq    %r12, 56(%rdi)
+        addq    %r11, %rsi
+        movq    56(%rdi), %rax
+        movq    40(%rdi), %r11
+        movq    (%rdi), %rdx
+        addq    %r13, %rsi
+        movq    -48(%rdi), %rbx
+        movq    64(%rdi), %r8
+        movq    %rcx, %r13
+        addq    %rax, %rsi
+        andq    %r10, %r13
+        movl    %ecx, %r12d
+        xorq    %rdx, %r11 
+        addq    %r15, %rsi
+        xorq    %rbx, %r11 
+        xorl    %r8d, %r11d
+        movl    %esi, %r8d
+        roll    %r11d
+        roll    $5, %r8d
+        orq     %r10, %rcx
+        andq    %r9, %rcx
+        movq    %r11, 64(%rdi)
+        movq    64(%rdi), %rax
+        orq     %rcx, %r13
+        roll    $30, %r12d
+        movl    %esi, %r11d
+        addq    %r13, %r8
+        movq    48(%rdi), %r13
+        movq    8(%rdi), %rdx
+        movq    -40(%rdi), %rbx
+        addq    %r14, %r8
+        movq    72(%rdi), %rcx
+        addq    %rax, %r8
+        movq    %rsi, %r14
+        orq     %r12, %rsi
+        xorq    %rdx, %r13 
+        addq    %r15, %r8
+        andq    %r10, %rsi
+        xorq    %rbx, %r13 
+        andq    %r12, %r14
+        roll    $30, %r11d
+        xorl    %ecx, %r13d
+        movl    %r8d, %ecx
+        orq     %rsi, %r14
+        roll    %r13d
+        roll    $5, %ecx
+        movq    %r13, 72(%rdi)
+        addq    %r14, %rcx
+        movq    72(%rdi), %rax
+        movq    56(%rdi), %r14
+        movq    16(%rdi), %rdx
+        addq    %r9, %rcx
+        movq    -32(%rdi), %rbx
+        movq    -48(%rdi), %rsi
+        movl    %r8d, %r13d
+        addq    %rax, %rcx
+        movq    %r8, %r9
+        orq     %r11, %r8
+        xorq    %rdx, %r14 
+        addq    %r15, %rcx
+        andq    %r12, %r8
+        xorq    %rbx, %r14 
+        andq    %r11, %r9
+        xorl    %esi, %r14d
+        movl    %ecx, %esi
+        orq     %r8, %r9
+        roll    $5, %esi
+        roll    %r14d
+        addq    %r9, %rsi
+        movq    %r14, -48(%rdi)
+        movq    -48(%rdi), %rax
+        addq    %r10, %rsi
+        movq    64(%rdi), %r10
+        movq    24(%rdi), %rdx
+        movq    -24(%rdi), %rbx
+        movq    -40(%rdi), %r8
+        movl    %ecx, %r14d
+        addq    %rax, %rsi
+        roll    $30, %r13d
+        movq    %rcx, %r9
+        xorq    %rdx, %r10 
+        addq    %r15, %rsi
+        orq     %r13, %rcx
+        xorq    %rbx, %r10 
+        andq    %r11, %rcx
+        andq    %r13, %r9
+        xorl    %r8d, %r10d
+        movl    %esi, %r8d
+        orq     %rcx, %r9
+        roll    $5, %r8d
+        roll    %r10d
+        roll    $30, %r14d
+        addq    %r9, %r8
+        movq    %r10, -40(%rdi)
+        movq    -40(%rdi), %rax
+        addq    %r12, %r8
+        movq    72(%rdi), %r12
+        movq    32(%rdi), %rdx
+        movq    -16(%rdi), %rbx
+        movq    -32(%rdi), %rcx
+        movl    %esi, %r10d
+        addq    %rax, %r8
+        movq    %rsi, %r9
+        orq     %r14, %rsi
+        xorq    %rdx, %r12 
+        addq    %r15, %r8
+        andq    %r13, %rsi
+        xorq    %rbx, %r12 
+        andq    %r14, %r9
+        roll    $30, %r10d
+        xorl    %ecx, %r12d
+        movl    %r8d, %ecx
+        orq     %rsi, %r9
+        roll    $5, %ecx
+        roll    %r12d
+        addq    %r9, %rcx
+        movq    %r12, -32(%rdi)
+        movq    -32(%rdi), %rax
+        addq    %r11, %rcx
+        movq    -48(%rdi), %r11
+        movq    40(%rdi), %rdx
+        movq    -8(%rdi), %rbx
+        movq    -24(%rdi), %rsi
+        movl    %r8d, %r12d
+        addq    %rax, %rcx
+        movq    %r8, %r9
+        xorq    %rdx, %r11 
+        addq    %r15, %rcx
+        xorq    %rbx, %r11 
+        xorl    %esi, %r11d
+        orq     %r10, %r8
+        andq    %r10, %r9
+        andq    %r14, %r8
+        movl    %ecx, %esi
+        roll    %r11d
+        orq     %r8, %r9
+        roll    $5, %esi
+        movq    %r11, -24(%rdi)
+        addq    %r9, %rsi
+        movq    -24(%rdi), %rax
+        roll    $30, %r12d
+        addq    %r13, %rsi
+        movq    -40(%rdi), %r13
+        movq    48(%rdi), %rdx
+        movq    (%rdi), %rbx
+        movq    -16(%rdi), %r8
+        movl    %ecx, %r11d
+        addq    %rax, %rsi
+        movq    %rcx, %r9
+        orq     %r12, %rcx
+        xorq    %rdx, %r13 
+        addq    %r15, %rsi
+        andq    %r10, %rcx
+        xorq    %rbx, %r13 
+        andq    %r12, %r9
+        roll    $30, %r11d
+        xorl    %r8d, %r13d
+        movl    %esi, %r8d
+        orq     %rcx, %r9
+        roll    %r13d
+        roll    $5, %r8d
+        movq    %r13, -16(%rdi)
+        addq    %r9, %r8
+        movq    -16(%rdi), %rax
+        movq    -32(%rdi), %r9
+        movq    56(%rdi), %rdx
+        addq    %r14, %r8
+        movq    8(%rdi), %rcx
+        movq    -8(%rdi), %rbx
+        movl    %esi, %r13d
+        addq    %rax, %r8
+        movq    %rsi, %r14
+        orq     %r11, %rsi
+        xorq    %rdx, %r9 
+        addq    %r15, %r8
+        andq    %r11, %r14
+        xorq    %rcx, %r9 
+        xorl    %ebx, %r9d
+        movl    %r8d, %ebx
+        roll    %r9d
+        roll    $5, %ebx
+        andq    %r12, %rsi
+        orq     %rsi, %r14
+        movq    %r9, -8(%rdi)
+        movq    -8(%rdi), %rax
+        addq    %r14, %rbx
+        movq    -24(%rdi), %r14
+        movq    64(%rdi), %rdx
+        movq    16(%rdi), %rcx
+        addq    %r10, %rbx
+        movq    (%rdi), %rsi
+        roll    $30, %r13d
+        addq    %rax, %rbx
+        movl    %r8d, %r9d
+        xorq    %rdx, %r14 
+        addq    %r15, %rbx
+        movq    %r8, %r10
+        xorq    %rcx, %r14 
+        orq     %r13, %r8
+        andq    %r13, %r10
+        andq    %r11, %r8
+        xorl    %esi, %r14d
+        movl    %ebx, %esi
+        orq     %r8, %r10
+        roll    $5, %esi
+        roll    %r14d
+        addq    %r10, %rsi
+        movq    %r14, (%rdi)
+        movq    (%rdi), %rax
+        addq    %r12, %rsi
+        movq    -16(%rdi), %r12
+        movq    72(%rdi), %rdx
+        movq    24(%rdi), %rcx
+        movq    8(%rdi), %r8
+        roll    $30, %r9d
+        addq    %rax, %rsi
+        movl    %ebx, %r14d
+        movq    %rbx, %r10
+        xorq    %rdx, %r12 
+        addq    %r15, %rsi
+        orq     %r9, %rbx
+        xorq    %rcx, %r12 
+        andq    %r13, %rbx
+        andq    %r9, %r10
+        xorl    %r8d, %r12d
+        movl    %esi, %r8d
+        orq     %rbx, %r10
+        roll    %r12d
+        roll    $5, %r8d
+        movq    %r12, 8(%rdi)
+        movq    8(%rdi), %rax
+        addq    %r10, %r8
+        movq    -8(%rdi), %rbx
+        movq    -48(%rdi), %rdx
+        addq    %r11, %r8
+        movq    32(%rdi), %r11
+        movq    16(%rdi), %rcx
+        movl    %esi, %r12d
+        addq    %rax, %r8
+        movq    %rsi, %r10
+        addq    %r15, %r8
+        xorq    %rdx, %rbx 
+        roll    $30, %r14d
+        xorq    %r11, %rbx 
+        orq     %r14, %rsi
+        andq    %r14, %r10
+        xorl    %ecx, %ebx
+        andq    %r9, %rsi
+        movl    %r8d, %ecx
+        roll    %ebx
+        orq     %rsi, %r10
+        roll    $5, %ecx
+        movq    %rbx, 16(%rdi)
+        movq    16(%rdi), %rsi
+        addq    %r10, %rcx
+        movq    (%rdi), %r11
+        movq    -40(%rdi), %rax
+        addq    %r13, %rcx
+        movq    40(%rdi), %rdx
+        movq    24(%rdi), %r13
+        roll    $30, %r12d
+        addq    %rsi, %rcx
+        movl    %r8d, %ebx
+        movq    %r8, %r10
+        xorq    %rax, %r11 
+        addq    %r15, %rcx
+        orq     %r12, %r8
+        xorq    %rdx, %r11 
+        andq    %r14, %r8
+        andq    %r12, %r10
+        xorl    %r13d, %r11d
+        movl    %ecx, %r13d
+        orq     %r8, %r10
+        roll    %r11d
+        roll    $5, %r13d
+        roll    $30, %ebx
+        movq    %r11, 24(%rdi)
+        addq    %r10, %r13
+        movq    24(%rdi), %rsi
+        movq    8(%rdi), %r10
+        movq    -32(%rdi), %rax
+        addq    %r9, %r13
+        movq    48(%rdi), %rdx
+        movq    32(%rdi), %r8
+        movl    %ecx, %r11d
+        addq    %rsi, %r13
+        movq    %rcx, %r9
+        xorq    %rax, %r10 
+        addq    %r15, %r13
+        xorq    %rdx, %r10 
+        xorl    %r8d, %r10d
+        movl    %r13d, %r8d
+        roll    %r10d
+        orq     %rbx, %rcx
+        andq    %rbx, %r9
+        movq    %r10, 32(%rdi)
+        andq    %r12, %rcx
+        movl    %r13d, %r10d
+        orq     %rcx, %r9
+        roll    $5, %r10d
+        movq    32(%rdi), %rsi
+        addq    %r9, %r10
+        roll    $30, %r11d
+        movq    %r13, %rcx
+        addq    %r14, %r10
+        movq    16(%rdi), %r14
+        movq    -24(%rdi), %rax
+        movq    56(%rdi), %rdx
+        movq    40(%rdi), %r9
+        addq    %rsi, %r10
+        addq    %r15, %r10
+        orq     %r11, %r13
+        andq    %r11, %rcx
+        xorq    %rax, %r14 
+        andq    %rbx, %r13
+        xorq    %rdx, %r14 
+        orq     %r13, %rcx
+        xorl    %r9d, %r14d
+        movl    %r10d, %r9d
+        roll    %r14d
+        roll    $5, %r9d
+        movq    %r14, 40(%rdi)
+        movq    40(%rdi), %rsi
+        addq    %rcx, %r9
+        movq    24(%rdi), %r13
+        addq    %r12, %r9
+        movq    -16(%rdi), %r12
+        movq    64(%rdi), %rax
+        movl    %r10d, %r14d
+        addq    %rsi, %r9
+        movl    %r8d, %esi
+        addq    %r15, %r9
+        movq    48(%rdi), %r15
+        xorq    %r12, %r13 
+        roll    $30, %esi
+        xorq    %rax, %r13 
+        xorq    %rsi, %r10 
+        xorl    %r15d, %r13d
+        movl    %r9d, %r15d
+        xorq    %r11, %r10 
+        roll    $5, %r15d
+        roll    %r13d
+        addq    %r10, %r15
+        movq    %r13, 48(%rdi)
+        movq    48(%rdi), %r10
+        addq    %rbx, %r15
+        movq    32(%rdi), %rbx
+        movq    -8(%rdi), %r8
+        movq    72(%rdi), %rdx
+        movq    56(%rdi), %rcx
+        roll    $30, %r14d
+        addq    %r10, %r15
+        movl    $3395469782, %r10d
+        movl    %r9d, %r13d
+        xorq    %r8, %rbx 
+        addq    %r10, %r15
+        xorq    %r14, %r9 
+        xorq    %rdx, %rbx 
+        xorq    %rsi, %r9 
+        roll    $30, %r13d
+        xorl    %ecx, %ebx
+        movl    %r15d, %ecx
+        roll    %ebx
+        roll    $5, %ecx
+        movq    %rbx, 56(%rdi)
+        addq    %r9, %rcx
+        movq    56(%rdi), %r12
+        movq    40(%rdi), %r9
+        movq    (%rdi), %rax
+        addq    %r11, %rcx
+        movq    -48(%rdi), %r8
+        movq    64(%rdi), %r11
+        movl    %r15d, %ebx
+        addq    %r12, %rcx
+        xorq    %r13, %r15 
+        roll    $30, %ebx
+        xorq    %rax, %r9 
+        addq    %r10, %rcx
+        xorq    %r14, %r15 
+        xorq    %r8, %r9 
+        xorl    %r11d, %r9d
+        movl    %ecx, %r11d
+        roll    %r9d
+        roll    $5, %r11d
+        movq    %r9, 64(%rdi)
+        addq    %r15, %r11
+        movq    64(%rdi), %rdx
+        movq    48(%rdi), %r15
+        movq    8(%rdi), %r12
+        addq    %rsi, %r11
+        movq    -40(%rdi), %rax
+        movq    72(%rdi), %r8
+        movl    %ecx, %r9d
+        addq    %rdx, %r11
+        xorq    %r12, %r15 
+        addq    %r10, %r11
+        xorq    %rax, %r15 
+        xorl    %r8d, %r15d
+        movl    %r11d, %r8d
+        roll    %r15d
+        roll    $5, %r8d
+        xorq    %rbx, %rcx 
+        xorq    %r13, %rcx 
+        movq    %r15, 72(%rdi)
+        movq    72(%rdi), %rsi
+        addq    %rcx, %r8
+        movq    56(%rdi), %r12
+        movq    16(%rdi), %rcx
+        movq    -32(%rdi), %rdx
+        addq    %r14, %r8
+        movq    -48(%rdi), %r14
+        addq    %rsi, %r8
+        roll    $30, %r9d
+        movl    %r11d, %r15d
+        xorq    %rcx, %r12 
+        addq    %r10, %r8
+        xorq    %r9, %r11 
+        xorq    %rdx, %r12 
+        xorq    %rbx, %r11 
+        roll    $30, %r15d
+        xorl    %r14d, %r12d
+        movl    %r8d, %r14d
+        roll    $5, %r14d
+        roll    %r12d
+        addq    %r11, %r14
+        movq    %r12, -48(%rdi)
+        movq    -48(%rdi), %rax
+        addq    %r13, %r14
+        movq    64(%rdi), %r13
+        movq    24(%rdi), %rsi
+        movq    -24(%rdi), %rcx
+        movq    -40(%rdi), %r11
+        movl    %r8d, %r12d
+        addq    %rax, %r14
+        xorq    %r15, %r8 
+        roll    $30, %r12d
+        xorq    %rsi, %r13 
+        addq    %r10, %r14
+        xorq    %r9, %r8 
+        xorq    %rcx, %r13 
+        xorl    %r11d, %r13d
+        movl    %r14d, %r11d
+        roll    $5, %r11d
+        roll    %r13d
+        addq    %r8, %r11
+        movq    %r13, -40(%rdi)
+        movq    -40(%rdi), %rdx
+        addq    %rbx, %r11
+        movq    72(%rdi), %rbx
+        movq    32(%rdi), %rax
+        movq    -16(%rdi), %rsi
+        movq    -32(%rdi), %r8
+        movl    %r14d, %r13d
+        addq    %rdx, %r11
+        xorq    %rax, %rbx 
+        addq    %r10, %r11
+        xorq    %rsi, %rbx 
+        xorl    %r8d, %ebx
+        xorq    %r12, %r14 
+        movl    %r11d, %r8d
+        xorq    %r15, %r14 
+        roll    %ebx
+        roll    $5, %r8d
+        movq    %rbx, -32(%rdi)
+        addq    %r14, %r8
+        movq    -32(%rdi), %rcx
+        movq    -48(%rdi), %r14
+        movq    40(%rdi), %rdx
+        addq    %r9, %r8
+        movq    -8(%rdi), %rax
+        movq    -24(%rdi), %r9
+        roll    $30, %r13d
+        addq    %rcx, %r8
+        movl    %r11d, %ebx
+        xorq    %r13, %r11 
+        xorq    %rdx, %r14 
+        addq    %r10, %r8
+        xorq    %r12, %r11 
+        xorq    %rax, %r14 
+        roll    $30, %ebx
+        xorl    %r9d, %r14d
+        movl    %r8d, %r9d
+        roll    $5, %r9d
+        roll    %r14d
+        addq    %r11, %r9
+        movq    %r14, -24(%rdi)
+        movq    -24(%rdi), %rsi
+        addq    %r15, %r9
+        movq    -40(%rdi), %r15
+        movq    48(%rdi), %rcx
+        movq    (%rdi), %rdx
+        movq    -16(%rdi), %r11
+        movl    %r8d, %r14d
+        addq    %rsi, %r9
+        xorq    %rbx, %r8 
+        xorq    %rcx, %r15 
+        addq    %r10, %r9
+        xorq    %r13, %r8 
+        xorq    %rdx, %r15 
+        xorl    %r11d, %r15d
+        movl    %r9d, %r11d
+        roll    %r15d
+        roll    $5, %r11d
+        movq    %r15, -16(%rdi)
+        addq    %r8, %r11
+        movq    -16(%rdi), %rax
+        addq    %r12, %r11
+        movq    -32(%rdi), %r12
+        movq    56(%rdi), %rsi
+        movq    8(%rdi), %rcx
+        movq    -8(%rdi), %r8
+        movl    %r9d, %r15d
+        addq    %rax, %r11
+        addq    %r10, %r11
+        roll    $30, %r14d
+        xorq    %rsi, %r12 
+        xorq    %rcx, %r12 
+        xorq    %r14, %r9 
+        roll    $30, %r15d
+        xorl    %r8d, %r12d
+        movl    %r11d, %r8d
+        xorq    %rbx, %r9 
+        roll    $5, %r8d
+        roll    %r12d
+        addq    %r9, %r8
+        movq    %r12, -8(%rdi)
+        movq    -8(%rdi), %rdx
+        addq    %r13, %r8
+        movq    -24(%rdi), %r13
+        movq    64(%rdi), %rax
+        movq    16(%rdi), %rsi
+        movq    (%rdi), %rcx
+        movl    %r11d, %r12d
+        addq    %rdx, %r8
+        xorq    %r15, %r11 
+        roll    $30, %r12d
+        xorq    %rax, %r13 
+        addq    %r10, %r8
+        xorq    %r14, %r11 
+        xorq    %rsi, %r13 
+        xorl    %ecx, %r13d
+        movl    %r8d, %ecx
+        roll    $5, %ecx
+        roll    %r13d
+        addq    %r11, %rcx
+        movq    %r13, (%rdi)
+        movq    (%rdi), %r9
+        addq    %rbx, %rcx
+        movq    -16(%rdi), %rbx
+        movq    72(%rdi), %rdx
+        movq    24(%rdi), %rax
+        movq    8(%rdi), %rsi
+        movl    %r8d, %r13d
+        addq    %r9, %rcx
+        xorq    %r12, %r8 
+        xorq    %rdx, %rbx 
+        addq    %r10, %rcx
+        xorq    %r15, %r8 
+        xorq    %rax, %rbx 
+        xorl    %esi, %ebx
+        movl    %ecx, %esi
+        roll    $5, %esi
+        roll    %ebx
+        addq    %r8, %rsi
+        movq    %rbx, 8(%rdi)
+        movq    8(%rdi), %r11
+        addq    %r14, %rsi
+        movq    -8(%rdi), %r14
+        movq    -48(%rdi), %r9
+        movq    32(%rdi), %rdx
+        movq    16(%rdi), %r8
+        roll    $30, %r13d
+        addq    %r11, %rsi
+        movl    %ecx, %ebx
+        xorq    %r13, %rcx 
+        xorq    %r9, %r14 
+        addq    %r10, %rsi
+        xorq    %r12, %rcx 
+        xorq    %rdx, %r14 
+        roll    $30, %ebx
+        xorl    %r8d, %r14d
+        movl    %esi, %r8d
+        roll    $5, %r8d
+        roll    %r14d
+        addq    %rcx, %r8
+        movq    %r14, 16(%rdi)
+        movq    16(%rdi), %rax
+        addq    %r15, %r8
+        movq    (%rdi), %r15
+        movq    -40(%rdi), %r11
+        movq    40(%rdi), %r9
+        movq    24(%rdi), %rcx
+        movl    %esi, %r14d
+        addq    %rax, %r8
+        xorq    %rbx, %rsi 
+        roll    $30, %r14d
+        xorq    %r11, %r15 
+        addq    %r10, %r8
+        xorq    %r13, %rsi 
+        xorq    %r9, %r15 
+        xorl    %ecx, %r15d
+        movl    %r8d, %ecx
+        roll    %r15d
+        roll    $5, %ecx
+        movq    %r15, 24(%rdi)
+        addq    %rsi, %rcx
+        movq    24(%rdi), %rdx
+        movq    8(%rdi), %r11
+        movq    -32(%rdi), %rax
+        addq    %r12, %rcx
+        movq    48(%rdi), %r12
+        movq    32(%rdi), %rsi
+        movl    %r8d, %r15d
+        addq    %rdx, %rcx
+        xorq    %rax, %r11 
+        addq    %r10, %rcx
+        xorq    %r12, %r11 
+        xorl    %esi, %r11d
+        movl    %ecx, %esi
+        roll    %r11d
+        movq    %r11, 32(%rdi)
+        movl    %ecx, %r11d
+        movq    32(%rdi), %r9
+        roll    $5, %r11d
+        xorq    %r14, %r8 
+        movq    16(%rdi), %r12
+        xorq    %rbx, %r8 
+        movq    -24(%rdi), %rdx
+        movq    56(%rdi), %rax
+        addq    %r8, %r11
+        movq    40(%rdi), %r8
+        roll    $30, %r15d
+        addq    %r13, %r11
+        xorq    %r15, %rcx 
+        addq    %r9, %r11
+        xorq    %rdx, %r12 
+        xorq    %r14, %rcx 
+        addq    %r10, %r11
+        xorq    %rax, %r12 
+        xorl    %r8d, %r12d
+        movl    %r11d, %r8d
+        roll    $5, %r8d
+        roll    %r12d
+        addq    %rcx, %r8
+        movq    %r12, 40(%rdi)
+        movq    40(%rdi), %r13
+        addq    %rbx, %r8
+        movq    24(%rdi), %rbx
+        movq    -16(%rdi), %r9
+        movq    64(%rdi), %rdx
+        movq    48(%rdi), %rcx
+        movl    %r11d, %r12d
+        addq    %r13, %r8
+        movl    %esi, %r13d
+        roll    $30, %r12d
+        xorq    %r9, %rbx 
+        addq    %r10, %r8
+        roll    $30, %r13d
+        xorq    %rdx, %rbx 
+        xorq    %r13, %r11 
+        xorl    %ecx, %ebx
+        movl    %r8d, %ecx
+        xorq    %r15, %r11 
+        roll    %ebx
+        roll    $5, %ecx
+        movq    %rbx, 48(%rdi)
+        addq    %r11, %rcx
+        movq    48(%rdi), %rax
+        movq    32(%rdi), %r11
+        movq    -8(%rdi), %rsi
+        addq    %r14, %rcx
+        movq    72(%rdi), %r9
+        movq    56(%rdi), %r14
+        movl    %r8d, %ebx
+        addq    %rax, %rcx
+        xorq    %rsi, %r11 
+        addq    %r10, %rcx
+        xorq    %r9, %r11 
+        xorl    %r14d, %r11d
+        xorq    %r12, %r8 
+        movl    %ecx, %r14d
+        xorq    %r13, %r8 
+        roll    %r11d
+        roll    $5, %r14d
+        movq    %r11, 56(%rdi)
+        addq    %r8, %r14
+        movq    56(%rdi), %rdx
+        movq    40(%rdi), %r8
+        movq    (%rdi), %rax
+        addq    %r15, %r14
+        movq    -48(%rdi), %r15
+        movq    64(%rdi), %rsi
+        roll    $30, %ebx
+        addq    %rdx, %r14
+        movl    %ecx, %r11d
+        xorq    %rbx, %rcx 
+        xorq    %rax, %r8 
+        addq    %r10, %r14
+        xorq    %r12, %rcx 
+        xorq    %r15, %r8 
+        roll    $30, %r11d
+        xorl    %esi, %r8d
+        movl    %r14d, %esi
+        roll    %r8d
+        roll    $5, %esi
+        movq    %r8, 64(%rdi)
+        movq    64(%rdi), %r9
+        addq    %rcx, %rsi
+        movq    48(%rdi), %r15
+        movq    8(%rdi), %rcx
+        addq    %r13, %rsi
+        movq    -40(%rdi), %rdx
+        movq    72(%rdi), %rax
+        movl    %r14d, %r8d
+        addq    %r9, %rsi
+        xorq    %r11, %r14 
+        addq    %r10, %rsi
+        xorq    %rcx, %r15 
+        xorq    %rbx, %r14 
+        xorq    %rdx, %r15 
+        movl    %esi, %r13d
+        xorl    %eax, %r15d
+        roll    $5, %r13d
+        roll    %r15d
+        addq    %r14, %r13
+        movq    %r15, 72(%rdi)
+        addq    %r12, %r13
+        movq    72(%rdi), %r12
+        addq    %r12, %r13
+        addq    %r10, %r13
+        movq    -88(%rdi), %r10
+        roll    $30, %r8d
+        addq    %r13, %r10
+        movq    %r10, -88(%rdi)
+        movq    -80(%rdi), %r9
+        addq    %rsi, %r9
+        movq    %r9, -80(%rdi)
+        movq    -72(%rdi), %rcx
+        addq    %r8, %rcx
+        movq    %rcx, -72(%rdi)
+        movq    -64(%rdi), %rdx
+        addq    %r11, %rdx
+        movq    %rdx, -64(%rdi)
+        movq    -56(%rdi), %rax
+        addq    %rbx, %rax
+        popq    %rbx
+        popq    %r12
+        popq    %r13
+        popq    %r14
+        popq    %r15
+        movq    %rax, -56(%rdi)
+        ret
+.LFE7:
+        .size   shaCompress, .-shaCompress
+        .align 16
+.globl SHA1_Update
+        .type   SHA1_Update, @function
+SHA1_Update:
+.LFB5:
+        pushq   %rbp
+.LCFI5:
+        movq    %rsp, %rbp
+.LCFI6:
+        movq    %r13, -24(%rbp)
+.LCFI7:
+        movq    %r14, -16(%rbp)
+.LCFI8:
+        movl    %edx, %r13d
+        movq    %r15, -8(%rbp)
+.LCFI9:
+        movq    %rbx, -40(%rbp)
+.LCFI10:
+        movq    %rdi, %r15
+        movq    %r12, -32(%rbp)
+.LCFI11:
+        subq    $48, %rsp
+.LCFI12:
+        testl   %edx, %edx
+        movq    %rsi, %r14
+        je      .L243
+        movq    64(%rdi), %rdx
+        mov     %r13d, %ecx
+        leaq    (%rdx,%rcx), %rax
+        movq    %rax, 64(%rdi)
+        movl    %edx, %eax
+        andl    $63, %eax
+        movl    %eax, -44(%rbp)
+        jne     .L256
+.L245:
+        cmpl    $63, %r13d
+        jbe     .L253
+        leaq    160(%r15), %rbx
+        .align 16
+.L250:
+        movq    %r14, %rsi
+        subl    $64, %r13d
+        movq    %rbx, %rdi
+        call    shaCompress
+        addq    $64, %r14
+        cmpl    $63, %r13d
+        ja      .L250
+.L253:
+        testl   %r13d, %r13d
+        je      .L243
+        mov     %r13d, %edx
+        movq    %r14, %rsi
+        movq    %r15, %rdi
+        movq    -40(%rbp), %rbx
+        movq    -32(%rbp), %r12
+        movq    -24(%rbp), %r13
+        movq    -16(%rbp), %r14
+        movq    -8(%rbp), %r15
+        leave
+        jmp     memcpy@PLT
+        .align 16
+.L243:
+        movq    -40(%rbp), %rbx
+        movq    -32(%rbp), %r12
+        movq    -24(%rbp), %r13
+        movq    -16(%rbp), %r14
+        movq    -8(%rbp), %r15
+        leave
+        ret
+.L256:
+        movl    $64, %ebx
+        mov     %eax, %edi
+        subl    %eax, %ebx
+        cmpl    %ebx, %r13d
+        cmovb   %r13d, %ebx
+        addq    %r15, %rdi
+        mov     %ebx, %r12d
+        subl    %ebx, %r13d
+        movq    %r12, %rdx
+        addq    %r12, %r14
+        call    memcpy@PLT
+        addl    -44(%rbp), %ebx
+        andl    $63, %ebx
+        jne     .L245
+        leaq    160(%r15), %rdi
+        movq    %r15, %rsi
+        call    shaCompress
+        jmp     .L245
+.LFE5:
+        .size   SHA1_Update, .-SHA1_Update
+        .section        .rodata
+        .align 32
+        .type   bulk_pad.0, @object
+        .size   bulk_pad.0, 64
+bulk_pad.0:
+        .byte   -128
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .byte   0
+        .text
+        .align 16
+.globl SHA1_End
+        .type   SHA1_End, @function
+SHA1_End:
+.LFB6:
+        pushq   %rbp
+.LCFI13:
+        movq    %rsp, %rbp
+.LCFI14:
+        movq    %r12, -24(%rbp)
+.LCFI15:
+        movq    %r13, -16(%rbp)
+.LCFI16:
+        movq    %rsi, %r13
+        movq    %r14, -8(%rbp)
+.LCFI17:
+        movq    %rbx, -32(%rbp)
+.LCFI18:
+        subq    $32, %rsp
+.LCFI19:
+        movq    64(%rdi), %rbx
+        movq    %rdx, %r14
+        movl    $119, %edx
+        leaq    bulk_pad.0(%rip), %rsi
+        movq    %rdi, %r12
+        movl    %ebx, %r8d
+        salq    $3, %rbx
+        andl    $63, %r8d
+        subl    %r8d, %edx
+        andl    $63, %edx
+        incl    %edx
+        call    SHA1_Update@PLT
+        movq    %rbx, %rdi
+        movq    %r12, %rsi
+        shrq    $32, %rdi
+/APP
+        bswap %edi
+/NO_APP
+        movl    %edi, 56(%r12)
+        leaq    160(%r12), %rdi
+/APP
+        bswap %ebx
+/NO_APP
+        movl    %ebx, 60(%r12)
+        call    shaCompress
+        movl    72(%r12), %esi
+        movl    80(%r12), %ebx
+        movl    88(%r12), %ecx
+        movl    96(%r12), %edx
+        movl    104(%r12), %eax
+        movq    8(%rsp), %r12
+/APP
+        bswap %ebx
+        bswap %esi
+/NO_APP
+        movl    %ebx, 4(%r13)
+        movl    %esi, (%r13)
+/APP
+        bswap %ecx
+        bswap %edx
+/NO_APP
+        movl    %ecx, 8(%r13)
+        movl    %edx, 12(%r13)
+/APP
+        bswap %eax
+/NO_APP
+        movq    (%rsp), %rbx
+        movl    %eax, 16(%r13)
+        movl    $20, (%r14)
+        movq    16(%rsp), %r13
+        movq    24(%rsp), %r14
+        leave
+        ret
+.LFE6:
+        .size   SHA1_End, .-SHA1_End
+        .align 16
+.globl SHA1_NewContext
+        .type   SHA1_NewContext, @function
+SHA1_NewContext:
+.LFB8:
+        movl    $248, %edi
+        jmp     PORT_Alloc@PLT
+.LFE8:
+        .size   SHA1_NewContext, .-SHA1_NewContext
+        .align 16
+.globl SHA1_DestroyContext
+        .type   SHA1_DestroyContext, @function
+SHA1_DestroyContext:
+.LFB9:
+        pushq   %rbp
+.LCFI20:
+        movl    $248, %edx
+        movq    %rsp, %rbp
+.LCFI21:
+        movq    %rbx, -16(%rbp)
+.LCFI22:
+        movq    %r12, -8(%rbp)
+.LCFI23:
+        movl    %esi, %ebx
+        subq    $16, %rsp
+.LCFI24:
+        xorl    %esi, %esi
+        movq    %rdi, %r12
+        call    memset@PLT
+        testl   %ebx, %ebx
+        jne     .L268
+        movq    (%rsp), %rbx
+        movq    8(%rsp), %r12
+        leave
+        ret
+        .align 16
+.L268:
+        movq    %r12, %rdi
+        movq    (%rsp), %rbx
+        movq    8(%rsp), %r12
+        leave
+        jmp     PORT_Free@PLT
+.LFE9:
+        .size   SHA1_DestroyContext, .-SHA1_DestroyContext
+        .align 16
+.globl SHA1_HashBuf
+        .type   SHA1_HashBuf, @function
+SHA1_HashBuf:
+.LFB10:
+        pushq   %rbp
+.LCFI25:
+        movq    %rsp, %rbp
+.LCFI26:
+        movq    %rbx, -32(%rbp)
+.LCFI27:
+        leaq    -288(%rbp), %rbx
+        movq    %r12, -24(%rbp)
+.LCFI28:
+        movq    %r13, -16(%rbp)
+.LCFI29:
+        movq    %r14, -8(%rbp)
+.LCFI30:
+        movq    %rsi, %r13
+        subq    $304, %rsp
+.LCFI31:
+        movq    %rdi, %r14
+        movl    %edx, %r12d
+        movq    %rbx, %rdi
+        call    SHA1_Begin@PLT
+        movl    %r12d, %edx
+        movq    %r13, %rsi
+        movq    %rbx, %rdi
+        call    SHA1_Update@PLT
+        leaq    -292(%rbp), %rdx
+        movq    %r14, %rsi
+        movq    %rbx, %rdi
+        movl    $20, %ecx
+        call    SHA1_End@PLT
+        movq    -32(%rbp), %rbx
+        movq    -24(%rbp), %r12
+        xorl    %eax, %eax
+        movq    -16(%rbp), %r13
+        movq    -8(%rbp), %r14
+        leave
+        ret
+.LFE10:
+        .size   SHA1_HashBuf, .-SHA1_HashBuf
+        .align 16
+.globl SHA1_Hash
+        .type   SHA1_Hash, @function
+SHA1_Hash:
+.LFB11:
+        pushq   %rbp
+.LCFI32:
+        movq    %rsp, %rbp
+.LCFI33:
+        movq    %rbx, -16(%rbp)
+.LCFI34:
+        movq    %r12, -8(%rbp)
+.LCFI35:
+        movq    %rsi, %rbx
+        subq    $16, %rsp
+.LCFI36:
+        movq    %rdi, %r12
+        movq    %rsi, %rdi
+        call    strlen@PLT
+        movq    %rbx, %rsi
+        movq    %r12, %rdi
+        movq    (%rsp), %rbx
+        movq    8(%rsp), %r12
+        leave
+        movl    %eax, %edx
+        jmp     SHA1_HashBuf@PLT
+.LFE11:
+        .size   SHA1_Hash, .-SHA1_Hash
+        .align 16
+.globl SHA1_FlattenSize
+        .type   SHA1_FlattenSize, @function
+SHA1_FlattenSize:
+.LFB12:
+        movl    $248, %eax
+        ret
+.LFE12:
+        .size   SHA1_FlattenSize, .-SHA1_FlattenSize
+        .align 16
+.globl SHA1_Flatten
+        .type   SHA1_Flatten, @function
+SHA1_Flatten:
+.LFB13:
+        pushq   %rbp
+.LCFI37:
+        movq    %rsi, %rax
+        movl    $248, %edx
+        movq    %rdi, %rsi
+        movq    %rax, %rdi
+        movq    %rsp, %rbp
+.LCFI38:
+        call    memcpy@PLT
+        leave
+        xorl    %eax, %eax
+        ret
+.LFE13:
+        .size   SHA1_Flatten, .-SHA1_Flatten
+        .align 16
+.globl SHA1_Resurrect
+        .type   SHA1_Resurrect, @function
+SHA1_Resurrect:
+.LFB14:
+        pushq   %rbp
+.LCFI39:
+        movq    %rsp, %rbp
+.LCFI40:
+        movq    %rbx, -16(%rbp)
+.LCFI41:
+        movq    %r12, -8(%rbp)
+.LCFI42:
+        subq    $16, %rsp
+.LCFI43:
+        movq    %rdi, %r12
+        call    SHA1_NewContext@PLT
+        movq    %rax, %rbx
+        xorl    %eax, %eax
+        testq   %rbx, %rbx
+        je      .L273
+        movl    $248, %edx
+        movq    %r12, %rsi
+        movq    %rbx, %rdi
+        call    memcpy@PLT
+        movq    %rbx, %rax
+.L273:
+        movq    (%rsp), %rbx
+        movq    8(%rsp), %r12
+        leave
+        ret
+.LFE14:
+        .size   SHA1_Resurrect, .-SHA1_Resurrect
+        .align 16
+.globl SHA1_Clone
+        .type   SHA1_Clone, @function
+SHA1_Clone:
+.LFB15:
+        movl    $248, %edx
+        jmp     memcpy@PLT
+.LFE15:
+        .size   SHA1_Clone, .-SHA1_Clone
+        .align 16
+.globl SHA1_TraceState
+        .type   SHA1_TraceState, @function
+SHA1_TraceState:
+.LFB16:
+        movl    $-5992, %edi
+        jmp     PORT_SetError@PLT
+.LFE16:
+        .size   SHA1_TraceState, .-SHA1_TraceState