git: 181a04415a8b - main - lib/libmd: replace SHA-1 implementation with Go's implementation

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Wed, 14 May 2025 23:40:37 UTC
The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/src/commit/?id=181a04415a8b3a3fe8be4b986dce550f09cbb415

commit 181a04415a8b3a3fe8be4b986dce550f09cbb415
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2024-05-28 14:17:42 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2025-05-14 23:39:58 +0000

    lib/libmd: replace SHA-1 implementation with Go's implementation
    
    This lays the foundation for importing Go's excellent assembly
    implementations of the SHA-1 block function.
    
    No performance changes observed on amd64.
    
    Reviewed by:    getz
    Differential Revision:  https://reviews.freebsd.org/D45444
---
 lib/libmd/Makefile   |    6 +-
 lib/libmd/i386/sha.S | 1951 --------------------------------------------------
 lib/libmd/sha1c.c    |  654 ++++++-----------
 3 files changed, 214 insertions(+), 2397 deletions(-)

diff --git a/lib/libmd/Makefile b/lib/libmd/Makefile
index d8c32063d6ce..427da5b9d68f 100644
--- a/lib/libmd/Makefile
+++ b/lib/libmd/Makefile
@@ -117,8 +117,8 @@ USE_ASM_SOURCES:=0
 .endif
 
 .if ${USE_ASM_SOURCES} != 0
-.if exists(${MACHINE_ARCH}/sha.S)
-SRCS+=	sha.S
+.if exists(${MACHINE_ARCH}/sha1block.S)
+SRCS+=	sha1block.S
 CFLAGS+= -DSHA1_ASM
 .endif
 .if exists(${MACHINE_ARCH}/rmd160.S)
@@ -135,7 +135,7 @@ CFLAGS+= -DSKEIN_ASM -DSKEIN_USE_ASM=1792 # list of block functions to replace w
 # the assembly vs C versions, and skein_block needs to be rebuilt if it changes.
 skein_block.o skein_block.pico: Makefile
 .endif
-.if exists(${MACHINE_ARCH}/sha.S) || exists(${MACHINE_ARCH}/rmd160.S) || exists(${MACHINE_ARCH}/skein_block_asm.S)
+.if exists(${MACHINE_ARCH}/rmd160.S) || exists(${MACHINE_ARCH}/skein_block_asm.S)
 ACFLAGS+= -DELF -Wa,--noexecstack
 .endif
 .if ${MACHINE_CPUARCH} == "aarch64"
diff --git a/lib/libmd/i386/sha.S b/lib/libmd/i386/sha.S
deleted file mode 100644
index 3bb54aa9b251..000000000000
--- a/lib/libmd/i386/sha.S
+++ /dev/null
@@ -1,1951 +0,0 @@
-/* -*- Fundamental -*- Emacs' assembler mode hoses this file */
-#ifndef PIC
-/* Run the C pre-processor over this file with one of the following defined
- * ELF - elf object files,
- * OUT - a.out object files,
- * BSDI - BSDI style a.out object files
- * SOL - Solaris style elf
- */
-
-#define TYPE(a,b)       .type   a,b
-#define SIZE(a,b)       .size   a,b
-
-#if defined(OUT) || defined(BSDI)
-#define sha1_block_x86 _sha1_block_x86
-
-#endif
-
-#ifdef OUT
-#define OK	1
-#define ALIGN	4
-#endif
-
-#ifdef BSDI
-#define OK              1
-#define ALIGN           4
-#undef SIZE
-#undef TYPE
-#define SIZE(a,b)
-#define TYPE(a,b)
-#endif
-
-#if defined(ELF) || defined(SOL)
-#define OK              1
-#define ALIGN           4
-#endif
-
-#ifndef OK
-You need to define one of
-ELF - elf systems - linux-elf, NetBSD and DG-UX
-OUT - a.out systems - linux-a.out and FreeBSD
-SOL - solaris systems, which are elf with strange comment lines
-BSDI - a.out with a very primative version of as.
-#endif
-
-/* Let the Assembler begin :-) */
-	/* Don't even think of reading this code */
-	/* It was automatically generated by sha1-586.pl */
-	/* Which is a perl program used to generate the x86 assember for */
-	/* any of elf, a.out, BSDI,Win32, or Solaris */
-	/* eric <eay@cryptsoft.com> */
-
-	.file	"sha1-586.s"
-	.version	"01.01"
-gcc2_compiled.:
-.text
-	.p2align ALIGN
-.globl sha1_block_x86
-	TYPE(sha1_block_x86,@function)
-sha1_block_x86:
-	pushl	%esi
-	pushl	%ebp
-	movl	20(%esp),	%eax
-	movl	16(%esp),	%esi
-	addl	%esi,		%eax
-	movl	12(%esp),	%ebp
-	pushl	%ebx
-	subl	$64,		%eax
-	pushl	%edi
-	movl	4(%ebp),	%ebx
-	subl	$72,		%esp
-	movl	12(%ebp),	%edx
-	movl	16(%ebp),	%edi
-	movl	8(%ebp),	%ecx
-	movl	%eax,		68(%esp)
-	/* First we need to setup the X array */
-	movl	(%esi),		%eax
-.L000start:
-	/* First, load the words onto the stack in network byte order */
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		(%esp)
-	movl	4(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		4(%esp)
-	movl	8(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		8(%esp)
-	movl	12(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		12(%esp)
-	movl	16(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		16(%esp)
-	movl	20(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		20(%esp)
-	movl	24(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		24(%esp)
-	movl	28(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		28(%esp)
-	movl	32(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		32(%esp)
-	movl	36(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		36(%esp)
-	movl	40(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		40(%esp)
-	movl	44(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		44(%esp)
-	movl	48(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		48(%esp)
-	movl	52(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		52(%esp)
-	movl	56(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		56(%esp)
-	movl	60(%esi),	%eax
-.byte 15
-.byte 200		/* bswapl  %eax */
-	movl	%eax,		60(%esp)
-	/* We now have the X array on the stack */
-	/* starting at sp-4 */
-	movl	%esi,		64(%esp)
-
-	/* Start processing */
-	movl	(%ebp),		%eax
-	/* 00_15 0 */
-	movl	%ecx,		%esi
-	movl	%eax,		%ebp
-	xorl	%edx,		%esi
-	roll	$5,		%ebp
-	andl	%ebx,		%esi
-	addl	%edi,		%ebp
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	movl	(%esp),		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	xorl	%edx,		%esi
-	leal	1518500249(%ebp,%edi,1),%ebp
-	movl	%ebx,		%edi
-	addl	%ebp,		%esi
-	xorl	%ecx,		%edi
-	movl	%esi,		%ebp
-	andl	%eax,		%edi
-	roll	$5,		%ebp
-	addl	%edx,		%ebp
-	movl	4(%esp),	%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	xorl	%ecx,		%edi
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	leal	1518500249(%ebp,%edx,1),%ebp
-	addl	%ebp,		%edi
-	/* 00_15 2 */
-	movl	%eax,		%edx
-	movl	%edi,		%ebp
-	xorl	%ebx,		%edx
-	roll	$5,		%ebp
-	andl	%esi,		%edx
-	addl	%ecx,		%ebp
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	movl	8(%esp),	%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	xorl	%ebx,		%edx
-	leal	1518500249(%ebp,%ecx,1),%ebp
-	movl	%esi,		%ecx
-	addl	%ebp,		%edx
-	xorl	%eax,		%ecx
-	movl	%edx,		%ebp
-	andl	%edi,		%ecx
-	roll	$5,		%ebp
-	addl	%ebx,		%ebp
-	movl	12(%esp),	%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	xorl	%eax,		%ecx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	leal	1518500249(%ebp,%ebx,1),%ebp
-	addl	%ebp,		%ecx
-	/* 00_15 4 */
-	movl	%edi,		%ebx
-	movl	%ecx,		%ebp
-	xorl	%esi,		%ebx
-	roll	$5,		%ebp
-	andl	%edx,		%ebx
-	addl	%eax,		%ebp
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	movl	16(%esp),	%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	xorl	%esi,		%ebx
-	leal	1518500249(%ebp,%eax,1),%ebp
-	movl	%edx,		%eax
-	addl	%ebp,		%ebx
-	xorl	%edi,		%eax
-	movl	%ebx,		%ebp
-	andl	%ecx,		%eax
-	roll	$5,		%ebp
-	addl	%esi,		%ebp
-	movl	20(%esp),	%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	xorl	%edi,		%eax
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	leal	1518500249(%ebp,%esi,1),%ebp
-	addl	%ebp,		%eax
-	/* 00_15 6 */
-	movl	%ecx,		%esi
-	movl	%eax,		%ebp
-	xorl	%edx,		%esi
-	roll	$5,		%ebp
-	andl	%ebx,		%esi
-	addl	%edi,		%ebp
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	movl	24(%esp),	%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	xorl	%edx,		%esi
-	leal	1518500249(%ebp,%edi,1),%ebp
-	movl	%ebx,		%edi
-	addl	%ebp,		%esi
-	xorl	%ecx,		%edi
-	movl	%esi,		%ebp
-	andl	%eax,		%edi
-	roll	$5,		%ebp
-	addl	%edx,		%ebp
-	movl	28(%esp),	%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	xorl	%ecx,		%edi
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	leal	1518500249(%ebp,%edx,1),%ebp
-	addl	%ebp,		%edi
-	/* 00_15 8 */
-	movl	%eax,		%edx
-	movl	%edi,		%ebp
-	xorl	%ebx,		%edx
-	roll	$5,		%ebp
-	andl	%esi,		%edx
-	addl	%ecx,		%ebp
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	movl	32(%esp),	%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	xorl	%ebx,		%edx
-	leal	1518500249(%ebp,%ecx,1),%ebp
-	movl	%esi,		%ecx
-	addl	%ebp,		%edx
-	xorl	%eax,		%ecx
-	movl	%edx,		%ebp
-	andl	%edi,		%ecx
-	roll	$5,		%ebp
-	addl	%ebx,		%ebp
-	movl	36(%esp),	%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	xorl	%eax,		%ecx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	leal	1518500249(%ebp,%ebx,1),%ebp
-	addl	%ebp,		%ecx
-	/* 00_15 10 */
-	movl	%edi,		%ebx
-	movl	%ecx,		%ebp
-	xorl	%esi,		%ebx
-	roll	$5,		%ebp
-	andl	%edx,		%ebx
-	addl	%eax,		%ebp
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	movl	40(%esp),	%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	xorl	%esi,		%ebx
-	leal	1518500249(%ebp,%eax,1),%ebp
-	movl	%edx,		%eax
-	addl	%ebp,		%ebx
-	xorl	%edi,		%eax
-	movl	%ebx,		%ebp
-	andl	%ecx,		%eax
-	roll	$5,		%ebp
-	addl	%esi,		%ebp
-	movl	44(%esp),	%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	xorl	%edi,		%eax
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	leal	1518500249(%ebp,%esi,1),%ebp
-	addl	%ebp,		%eax
-	/* 00_15 12 */
-	movl	%ecx,		%esi
-	movl	%eax,		%ebp
-	xorl	%edx,		%esi
-	roll	$5,		%ebp
-	andl	%ebx,		%esi
-	addl	%edi,		%ebp
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	movl	48(%esp),	%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	xorl	%edx,		%esi
-	leal	1518500249(%ebp,%edi,1),%ebp
-	movl	%ebx,		%edi
-	addl	%ebp,		%esi
-	xorl	%ecx,		%edi
-	movl	%esi,		%ebp
-	andl	%eax,		%edi
-	roll	$5,		%ebp
-	addl	%edx,		%ebp
-	movl	52(%esp),	%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	xorl	%ecx,		%edi
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	leal	1518500249(%ebp,%edx,1),%ebp
-	addl	%ebp,		%edi
-	/* 00_15 14 */
-	movl	%eax,		%edx
-	movl	%edi,		%ebp
-	xorl	%ebx,		%edx
-	roll	$5,		%ebp
-	andl	%esi,		%edx
-	addl	%ecx,		%ebp
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	movl	56(%esp),	%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	xorl	%ebx,		%edx
-	leal	1518500249(%ebp,%ecx,1),%ebp
-	movl	%esi,		%ecx
-	addl	%ebp,		%edx
-	xorl	%eax,		%ecx
-	movl	%edx,		%ebp
-	andl	%edi,		%ecx
-	roll	$5,		%ebp
-	addl	%ebx,		%ebp
-	movl	60(%esp),	%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	xorl	%eax,		%ecx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	leal	1518500249(%ebp,%ebx,1),%ebp
-	addl	%ebp,		%ecx
-	/* 16_19 16 */
-	nop
-	movl	(%esp),		%ebp
-	movl	8(%esp),	%ebx
-	xorl	%ebp,		%ebx
-	movl	32(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	52(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	%edi,		%ebp
-.byte 209
-.byte 195		/* roll $1 %ebx */
-	xorl	%esi,		%ebp
-	movl	%ebx,		(%esp)
-	andl	%edx,		%ebp
-	leal	1518500249(%ebx,%eax,1),%ebx
-	xorl	%esi,		%ebp
-	movl	%ecx,		%eax
-	addl	%ebp,		%ebx
-	roll	$5,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%eax,		%ebx
-	movl	4(%esp),	%eax
-	movl	12(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	36(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	56(%esp),	%ebp
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	xorl	%ebp,		%eax
-.byte 209
-.byte 192		/* roll $1 %eax */
-	movl	%edx,		%ebp
-	xorl	%edi,		%ebp
-	movl	%eax,		4(%esp)
-	andl	%ecx,		%ebp
-	leal	1518500249(%eax,%esi,1),%eax
-	xorl	%edi,		%ebp
-	movl	%ebx,		%esi
-	roll	$5,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%esi,		%eax
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%ebp,		%eax
-	/* 16_19 18 */
-	movl	8(%esp),	%ebp
-	movl	16(%esp),	%esi
-	xorl	%ebp,		%esi
-	movl	40(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	60(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	%ecx,		%ebp
-.byte 209
-.byte 198		/* roll $1 %esi */
-	xorl	%edx,		%ebp
-	movl	%esi,		8(%esp)
-	andl	%ebx,		%ebp
-	leal	1518500249(%esi,%edi,1),%esi
-	xorl	%edx,		%ebp
-	movl	%eax,		%edi
-	addl	%ebp,		%esi
-	roll	$5,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%edi,		%esi
-	movl	12(%esp),	%edi
-	movl	20(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	44(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	(%esp),		%ebp
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	xorl	%ebp,		%edi
-.byte 209
-.byte 199		/* roll $1 %edi */
-	movl	%ebx,		%ebp
-	xorl	%ecx,		%ebp
-	movl	%edi,		12(%esp)
-	andl	%eax,		%ebp
-	leal	1518500249(%edi,%edx,1),%edi
-	xorl	%ecx,		%ebp
-	movl	%esi,		%edx
-	roll	$5,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%edx,		%edi
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%ebp,		%edi
-	/* 20_39 20 */
-	movl	16(%esp),	%edx
-	movl	24(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	48(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	4(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	%esi,		%ebp
-.byte 209
-.byte 194		/* roll $1 %edx */
-	xorl	%eax,		%ebp
-	movl	%edx,		16(%esp)
-	xorl	%ebx,		%ebp
-	leal	1859775393(%edx,%ecx,1),%edx
-	movl	%edi,		%ecx
-	roll	$5,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ebp,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ecx,		%edx
-	/* 20_39 21 */
-	movl	20(%esp),	%ecx
-	movl	28(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	52(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	8(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	%edi,		%ebp
-.byte 209
-.byte 193		/* roll $1 %ecx */
-	xorl	%esi,		%ebp
-	movl	%ecx,		20(%esp)
-	xorl	%eax,		%ebp
-	leal	1859775393(%ecx,%ebx,1),%ecx
-	movl	%edx,		%ebx
-	roll	$5,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebp,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebx,		%ecx
-	/* 20_39 22 */
-	movl	24(%esp),	%ebx
-	movl	32(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	56(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	12(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	%edx,		%ebp
-.byte 209
-.byte 195		/* roll $1 %ebx */
-	xorl	%edi,		%ebp
-	movl	%ebx,		24(%esp)
-	xorl	%esi,		%ebp
-	leal	1859775393(%ebx,%eax,1),%ebx
-	movl	%ecx,		%eax
-	roll	$5,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%ebp,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%eax,		%ebx
-	/* 20_39 23 */
-	movl	28(%esp),	%eax
-	movl	36(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	60(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	16(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	%ecx,		%ebp
-.byte 209
-.byte 192		/* roll $1 %eax */
-	xorl	%edx,		%ebp
-	movl	%eax,		28(%esp)
-	xorl	%edi,		%ebp
-	leal	1859775393(%eax,%esi,1),%eax
-	movl	%ebx,		%esi
-	roll	$5,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%ebp,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%esi,		%eax
-	/* 20_39 24 */
-	movl	32(%esp),	%esi
-	movl	40(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	(%esp),		%ebp
-	xorl	%ebp,		%esi
-	movl	20(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	%ebx,		%ebp
-.byte 209
-.byte 198		/* roll $1 %esi */
-	xorl	%ecx,		%ebp
-	movl	%esi,		32(%esp)
-	xorl	%edx,		%ebp
-	leal	1859775393(%esi,%edi,1),%esi
-	movl	%eax,		%edi
-	roll	$5,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%ebp,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%edi,		%esi
-	/* 20_39 25 */
-	movl	36(%esp),	%edi
-	movl	44(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	4(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	%eax,		%ebp
-.byte 209
-.byte 199		/* roll $1 %edi */
-	xorl	%ebx,		%ebp
-	movl	%edi,		36(%esp)
-	xorl	%ecx,		%ebp
-	leal	1859775393(%edi,%edx,1),%edi
-	movl	%esi,		%edx
-	roll	$5,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%ebp,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%edx,		%edi
-	/* 20_39 26 */
-	movl	40(%esp),	%edx
-	movl	48(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	8(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	28(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	%esi,		%ebp
-.byte 209
-.byte 194		/* roll $1 %edx */
-	xorl	%eax,		%ebp
-	movl	%edx,		40(%esp)
-	xorl	%ebx,		%ebp
-	leal	1859775393(%edx,%ecx,1),%edx
-	movl	%edi,		%ecx
-	roll	$5,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ebp,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ecx,		%edx
-	/* 20_39 27 */
-	movl	44(%esp),	%ecx
-	movl	52(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	12(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	32(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	%edi,		%ebp
-.byte 209
-.byte 193		/* roll $1 %ecx */
-	xorl	%esi,		%ebp
-	movl	%ecx,		44(%esp)
-	xorl	%eax,		%ebp
-	leal	1859775393(%ecx,%ebx,1),%ecx
-	movl	%edx,		%ebx
-	roll	$5,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebp,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebx,		%ecx
-	/* 20_39 28 */
-	movl	48(%esp),	%ebx
-	movl	56(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	16(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	36(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	%edx,		%ebp
-.byte 209
-.byte 195		/* roll $1 %ebx */
-	xorl	%edi,		%ebp
-	movl	%ebx,		48(%esp)
-	xorl	%esi,		%ebp
-	leal	1859775393(%ebx,%eax,1),%ebx
-	movl	%ecx,		%eax
-	roll	$5,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%ebp,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%eax,		%ebx
-	/* 20_39 29 */
-	movl	52(%esp),	%eax
-	movl	60(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	20(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	40(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	%ecx,		%ebp
-.byte 209
-.byte 192		/* roll $1 %eax */
-	xorl	%edx,		%ebp
-	movl	%eax,		52(%esp)
-	xorl	%edi,		%ebp
-	leal	1859775393(%eax,%esi,1),%eax
-	movl	%ebx,		%esi
-	roll	$5,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%ebp,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%esi,		%eax
-	/* 20_39 30 */
-	movl	56(%esp),	%esi
-	movl	(%esp),		%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	44(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	%ebx,		%ebp
-.byte 209
-.byte 198		/* roll $1 %esi */
-	xorl	%ecx,		%ebp
-	movl	%esi,		56(%esp)
-	xorl	%edx,		%ebp
-	leal	1859775393(%esi,%edi,1),%esi
-	movl	%eax,		%edi
-	roll	$5,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%ebp,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%edi,		%esi
-	/* 20_39 31 */
-	movl	60(%esp),	%edi
-	movl	4(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	28(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	48(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	%eax,		%ebp
-.byte 209
-.byte 199		/* roll $1 %edi */
-	xorl	%ebx,		%ebp
-	movl	%edi,		60(%esp)
-	xorl	%ecx,		%ebp
-	leal	1859775393(%edi,%edx,1),%edi
-	movl	%esi,		%edx
-	roll	$5,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%ebp,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%edx,		%edi
-	/* 20_39 32 */
-	movl	(%esp),		%edx
-	movl	8(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	32(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	52(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	%esi,		%ebp
-.byte 209
-.byte 194		/* roll $1 %edx */
-	xorl	%eax,		%ebp
-	movl	%edx,		(%esp)
-	xorl	%ebx,		%ebp
-	leal	1859775393(%edx,%ecx,1),%edx
-	movl	%edi,		%ecx
-	roll	$5,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ebp,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ecx,		%edx
-	/* 20_39 33 */
-	movl	4(%esp),	%ecx
-	movl	12(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	36(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	56(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	%edi,		%ebp
-.byte 209
-.byte 193		/* roll $1 %ecx */
-	xorl	%esi,		%ebp
-	movl	%ecx,		4(%esp)
-	xorl	%eax,		%ebp
-	leal	1859775393(%ecx,%ebx,1),%ecx
-	movl	%edx,		%ebx
-	roll	$5,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebp,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebx,		%ecx
-	/* 20_39 34 */
-	movl	8(%esp),	%ebx
-	movl	16(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	40(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	60(%esp),	%ebp
-	xorl	%ebp,		%ebx
-	movl	%edx,		%ebp
-.byte 209
-.byte 195		/* roll $1 %ebx */
-	xorl	%edi,		%ebp
-	movl	%ebx,		8(%esp)
-	xorl	%esi,		%ebp
-	leal	1859775393(%ebx,%eax,1),%ebx
-	movl	%ecx,		%eax
-	roll	$5,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%ebp,		%eax
-.byte 209
-.byte 202		/* rorl $1 %edx */
-	addl	%eax,		%ebx
-	/* 20_39 35 */
-	movl	12(%esp),	%eax
-	movl	20(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	44(%esp),	%ebp
-	xorl	%ebp,		%eax
-	movl	(%esp),		%ebp
-	xorl	%ebp,		%eax
-	movl	%ecx,		%ebp
-.byte 209
-.byte 192		/* roll $1 %eax */
-	xorl	%edx,		%ebp
-	movl	%eax,		12(%esp)
-	xorl	%edi,		%ebp
-	leal	1859775393(%eax,%esi,1),%eax
-	movl	%ebx,		%esi
-	roll	$5,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%ebp,		%esi
-.byte 209
-.byte 201		/* rorl $1 %ecx */
-	addl	%esi,		%eax
-	/* 20_39 36 */
-	movl	16(%esp),	%esi
-	movl	24(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	48(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	4(%esp),	%ebp
-	xorl	%ebp,		%esi
-	movl	%ebx,		%ebp
-.byte 209
-.byte 198		/* roll $1 %esi */
-	xorl	%ecx,		%ebp
-	movl	%esi,		16(%esp)
-	xorl	%edx,		%ebp
-	leal	1859775393(%esi,%edi,1),%esi
-	movl	%eax,		%edi
-	roll	$5,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%ebp,		%edi
-.byte 209
-.byte 203		/* rorl $1 %ebx */
-	addl	%edi,		%esi
-	/* 20_39 37 */
-	movl	20(%esp),	%edi
-	movl	28(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	52(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	8(%esp),	%ebp
-	xorl	%ebp,		%edi
-	movl	%eax,		%ebp
-.byte 209
-.byte 199		/* roll $1 %edi */
-	xorl	%ebx,		%ebp
-	movl	%edi,		20(%esp)
-	xorl	%ecx,		%ebp
-	leal	1859775393(%edi,%edx,1),%edi
-	movl	%esi,		%edx
-	roll	$5,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%ebp,		%edx
-.byte 209
-.byte 200		/* rorl $1 %eax */
-	addl	%edx,		%edi
-	/* 20_39 38 */
-	movl	24(%esp),	%edx
-	movl	32(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	56(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	12(%esp),	%ebp
-	xorl	%ebp,		%edx
-	movl	%esi,		%ebp
-.byte 209
-.byte 194		/* roll $1 %edx */
-	xorl	%eax,		%ebp
-	movl	%edx,		24(%esp)
-	xorl	%ebx,		%ebp
-	leal	1859775393(%edx,%ecx,1),%edx
-	movl	%edi,		%ecx
-	roll	$5,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ebp,		%ecx
-.byte 209
-.byte 206		/* rorl $1 %esi */
-	addl	%ecx,		%edx
-	/* 20_39 39 */
-	movl	28(%esp),	%ecx
-	movl	36(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	60(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	16(%esp),	%ebp
-	xorl	%ebp,		%ecx
-	movl	%edi,		%ebp
-.byte 209
-.byte 193		/* roll $1 %ecx */
-	xorl	%esi,		%ebp
-	movl	%ecx,		28(%esp)
-	xorl	%eax,		%ebp
-	leal	1859775393(%ecx,%ebx,1),%ecx
-	movl	%edx,		%ebx
-	roll	$5,		%ebx
-.byte 209
-.byte 207		/* rorl $1 %edi */
-	addl	%ebp,		%ebx
*** 1712 LINES SKIPPED ***