Blob Blame History Raw
# Copyright (c) 2011-2016, Andy Polyakov <appro@openssl.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 
#     * Redistributions of source code must retain copyright notices,
#      this list of conditions and the following disclaimer.
#
#     * Redistributions in binary form must reproduce the above
#      copyright notice, this list of conditions and the following
#      disclaimer in the documentation and/or other materials
#      provided with the distribution.
#
#     * Neither the name of the Andy Polyakov nor the names of its
#      copyright holder and contributors may be used to endorse or
#      promote products derived from this software without specific
#      prior written permission.
#
# ALTERNATIVELY, provided that this notice is retained in full, this
# product may be distributed under the terms of the GNU General Public
# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
# those given above.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# *** This file is auto-generated ***
#
.text
.globl	_sha256_block_data_order
.align	4
_sha256_block_data_order:
L_sha256_block_data_order_begin:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	movl	20(%esp),%esi
	movl	24(%esp),%edi
	movl	28(%esp),%eax
	movl	%esp,%ebx
	call	L000pic_point
L000pic_point:
	popl	%ebp
	leal	L001K256-L000pic_point(%ebp),%ebp
	subl	$16,%esp
	andl	$-64,%esp
	shll	$6,%eax
	addl	%edi,%eax
	movl	%esi,(%esp)
	movl	%edi,4(%esp)
	movl	%eax,8(%esp)
	movl	%ebx,12(%esp)
	jmp	L002loop
.align	4,0x90
L002loop:
	movl	(%edi),%eax
	movl	4(%edi),%ebx
	movl	8(%edi),%ecx
	bswap	%eax
	movl	12(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	movl	16(%edi),%eax
	movl	20(%edi),%ebx
	movl	24(%edi),%ecx
	bswap	%eax
	movl	28(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	movl	32(%edi),%eax
	movl	36(%edi),%ebx
	movl	40(%edi),%ecx
	bswap	%eax
	movl	44(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	movl	48(%edi),%eax
	movl	52(%edi),%ebx
	movl	56(%edi),%ecx
	bswap	%eax
	movl	60(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	addl	$64,%edi
	leal	-36(%esp),%esp
	movl	%edi,104(%esp)
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	8(%esi),%ecx
	movl	12(%esi),%edi
	movl	%ebx,8(%esp)
	xorl	%ecx,%ebx
	movl	%ecx,12(%esp)
	movl	%edi,16(%esp)
	movl	%ebx,(%esp)
	movl	16(%esi),%edx
	movl	20(%esi),%ebx
	movl	24(%esi),%ecx
	movl	28(%esi),%edi
	movl	%ebx,24(%esp)
	movl	%ecx,28(%esp)
	movl	%edi,32(%esp)
.align	4,0x90
L00300_15:
	movl	%edx,%ecx
	movl	24(%esp),%esi
	rorl	$14,%ecx
	movl	28(%esp),%edi
	xorl	%edx,%ecx
	xorl	%edi,%esi
	movl	96(%esp),%ebx
	rorl	$5,%ecx
	andl	%edx,%esi
	movl	%edx,20(%esp)
	xorl	%ecx,%edx
	addl	32(%esp),%ebx
	xorl	%edi,%esi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%esi,%ebx
	rorl	$9,%ecx
	addl	%edx,%ebx
	movl	8(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,4(%esp)
	leal	-4(%esp),%esp
	rorl	$11,%ecx
	movl	(%ebp),%esi
	xorl	%eax,%ecx
	movl	20(%esp),%edx
	xorl	%edi,%eax
	rorl	$2,%ecx
	addl	%esi,%ebx
	movl	%eax,(%esp)
	addl	%ebx,%edx
	andl	4(%esp),%eax
	addl	%ecx,%ebx
	xorl	%edi,%eax
	addl	$4,%ebp
	addl	%ebx,%eax
	cmpl	$3248222580,%esi
	jne	L00300_15
	movl	156(%esp),%ecx
	jmp	L00416_63
.align	4,0x90
L00416_63:
	movl	%ecx,%ebx
	movl	104(%esp),%esi
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	160(%esp),%ebx
	shrl	$10,%edi
	addl	124(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	24(%esp),%esi
	rorl	$14,%ecx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%edx,%ecx
	xorl	%edi,%esi
	movl	%ebx,96(%esp)
	rorl	$5,%ecx
	andl	%edx,%esi
	movl	%edx,20(%esp)
	xorl	%ecx,%edx
	addl	32(%esp),%ebx
	xorl	%edi,%esi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%esi,%ebx
	rorl	$9,%ecx
	addl	%edx,%ebx
	movl	8(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,4(%esp)
	leal	-4(%esp),%esp
	rorl	$11,%ecx
	movl	(%ebp),%esi
	xorl	%eax,%ecx
	movl	20(%esp),%edx
	xorl	%edi,%eax
	rorl	$2,%ecx
	addl	%esi,%ebx
	movl	%eax,(%esp)
	addl	%ebx,%edx
	andl	4(%esp),%eax
	addl	%ecx,%ebx
	xorl	%edi,%eax
	movl	156(%esp),%ecx
	addl	$4,%ebp
	addl	%ebx,%eax
	cmpl	$3329325298,%esi
	jne	L00416_63
	movl	356(%esp),%esi
	movl	8(%esp),%ebx
	movl	16(%esp),%ecx
	addl	(%esi),%eax
	addl	4(%esi),%ebx
	addl	8(%esi),%edi
	addl	12(%esi),%ecx
	movl	%eax,(%esi)
	movl	%ebx,4(%esi)
	movl	%edi,8(%esi)
	movl	%ecx,12(%esi)
	movl	24(%esp),%eax
	movl	28(%esp),%ebx
	movl	32(%esp),%ecx
	movl	360(%esp),%edi
	addl	16(%esi),%edx
	addl	20(%esi),%eax
	addl	24(%esi),%ebx
	addl	28(%esi),%ecx
	movl	%edx,16(%esi)
	movl	%eax,20(%esi)
	movl	%ebx,24(%esi)
	movl	%ecx,28(%esi)
	leal	356(%esp),%esp
	subl	$256,%ebp
	cmpl	8(%esp),%edi
	jb	L002loop
	movl	12(%esp),%esp
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.align	5,0x90
L005loop_shrd:
	movl	(%edi),%eax
	movl	4(%edi),%ebx
	movl	8(%edi),%ecx
	bswap	%eax
	movl	12(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	movl	16(%edi),%eax
	movl	20(%edi),%ebx
	movl	24(%edi),%ecx
	bswap	%eax
	movl	28(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	movl	32(%edi),%eax
	movl	36(%edi),%ebx
	movl	40(%edi),%ecx
	bswap	%eax
	movl	44(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	movl	48(%edi),%eax
	movl	52(%edi),%ebx
	movl	56(%edi),%ecx
	bswap	%eax
	movl	60(%edi),%edx
	bswap	%ebx
	pushl	%eax
	bswap	%ecx
	pushl	%ebx
	bswap	%edx
	pushl	%ecx
	pushl	%edx
	addl	$64,%edi
	leal	-36(%esp),%esp
	movl	%edi,104(%esp)
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	8(%esi),%ecx
	movl	12(%esi),%edi
	movl	%ebx,8(%esp)
	xorl	%ecx,%ebx
	movl	%ecx,12(%esp)
	movl	%edi,16(%esp)
	movl	%ebx,(%esp)
	movl	16(%esi),%edx
	movl	20(%esi),%ebx
	movl	24(%esi),%ecx
	movl	28(%esi),%edi
	movl	%ebx,24(%esp)
	movl	%ecx,28(%esp)
	movl	%edi,32(%esp)
.align	4,0x90
L00600_15_shrd:
	movl	%edx,%ecx
	movl	24(%esp),%esi
	shrdl	$14,%ecx,%ecx
	movl	28(%esp),%edi
	xorl	%edx,%ecx
	xorl	%edi,%esi
	movl	96(%esp),%ebx
	shrdl	$5,%ecx,%ecx
	andl	%edx,%esi
	movl	%edx,20(%esp)
	xorl	%ecx,%edx
	addl	32(%esp),%ebx
	xorl	%edi,%esi
	shrdl	$6,%edx,%edx
	movl	%eax,%ecx
	addl	%esi,%ebx
	shrdl	$9,%ecx,%ecx
	addl	%edx,%ebx
	movl	8(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,4(%esp)
	leal	-4(%esp),%esp
	shrdl	$11,%ecx,%ecx
	movl	(%ebp),%esi
	xorl	%eax,%ecx
	movl	20(%esp),%edx
	xorl	%edi,%eax
	shrdl	$2,%ecx,%ecx
	addl	%esi,%ebx
	movl	%eax,(%esp)
	addl	%ebx,%edx
	andl	4(%esp),%eax
	addl	%ecx,%ebx
	xorl	%edi,%eax
	addl	$4,%ebp
	addl	%ebx,%eax
	cmpl	$3248222580,%esi
	jne	L00600_15_shrd
	movl	156(%esp),%ecx
	jmp	L00716_63_shrd
.align	4,0x90
L00716_63_shrd:
	movl	%ecx,%ebx
	movl	104(%esp),%esi
	shrdl	$11,%ecx,%ecx
	movl	%esi,%edi
	shrdl	$2,%esi,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	shrdl	$7,%ecx,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	shrdl	$17,%esi,%esi
	addl	160(%esp),%ebx
	shrl	$10,%edi
	addl	124(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	24(%esp),%esi
	shrdl	$14,%ecx,%ecx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%edx,%ecx
	xorl	%edi,%esi
	movl	%ebx,96(%esp)
	shrdl	$5,%ecx,%ecx
	andl	%edx,%esi
	movl	%edx,20(%esp)
	xorl	%ecx,%edx
	addl	32(%esp),%ebx
	xorl	%edi,%esi
	shrdl	$6,%edx,%edx
	movl	%eax,%ecx
	addl	%esi,%ebx
	shrdl	$9,%ecx,%ecx
	addl	%edx,%ebx
	movl	8(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,4(%esp)
	leal	-4(%esp),%esp
	shrdl	$11,%ecx,%ecx
	movl	(%ebp),%esi
	xorl	%eax,%ecx
	movl	20(%esp),%edx
	xorl	%edi,%eax
	shrdl	$2,%ecx,%ecx
	addl	%esi,%ebx
	movl	%eax,(%esp)
	addl	%ebx,%edx
	andl	4(%esp),%eax
	addl	%ecx,%ebx
	xorl	%edi,%eax
	movl	156(%esp),%ecx
	addl	$4,%ebp
	addl	%ebx,%eax
	cmpl	$3329325298,%esi
	jne	L00716_63_shrd
	movl	356(%esp),%esi
	movl	8(%esp),%ebx
	movl	16(%esp),%ecx
	addl	(%esi),%eax
	addl	4(%esi),%ebx
	addl	8(%esi),%edi
	addl	12(%esi),%ecx
	movl	%eax,(%esi)
	movl	%ebx,4(%esi)
	movl	%edi,8(%esi)
	movl	%ecx,12(%esi)
	movl	24(%esp),%eax
	movl	28(%esp),%ebx
	movl	32(%esp),%ecx
	movl	360(%esp),%edi
	addl	16(%esi),%edx
	addl	20(%esi),%eax
	addl	24(%esi),%ebx
	addl	28(%esi),%ecx
	movl	%edx,16(%esi)
	movl	%eax,20(%esi)
	movl	%ebx,24(%esi)
	movl	%ecx,28(%esi)
	leal	356(%esp),%esp
	subl	$256,%ebp
	cmpl	8(%esp),%edi
	jb	L005loop_shrd
	movl	12(%esp),%esp
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.align	6,0x90
L001K256:
.long	1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298
.long	66051,67438087,134810123,202182159
.byte	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
.byte	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
.byte	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
.byte	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
.byte	62,0
.align	4,0x90
L008unrolled:
	leal	-96(%esp),%esp
	movl	(%esi),%eax
	movl	4(%esi),%ebp
	movl	8(%esi),%ecx
	movl	12(%esi),%ebx
	movl	%ebp,4(%esp)
	xorl	%ecx,%ebp
	movl	%ecx,8(%esp)
	movl	%ebx,12(%esp)
	movl	16(%esi),%edx
	movl	20(%esi),%ebx
	movl	24(%esi),%ecx
	movl	28(%esi),%esi
	movl	%ebx,20(%esp)
	movl	%ecx,24(%esp)
	movl	%esi,28(%esp)
	jmp	L009grand_loop
.align	4,0x90
L009grand_loop:
	movl	(%edi),%ebx
	movl	4(%edi),%ecx
	bswap	%ebx
	movl	8(%edi),%esi
	bswap	%ecx
	movl	%ebx,32(%esp)
	bswap	%esi
	movl	%ecx,36(%esp)
	movl	%esi,40(%esp)
	movl	12(%edi),%ebx
	movl	16(%edi),%ecx
	bswap	%ebx
	movl	20(%edi),%esi
	bswap	%ecx
	movl	%ebx,44(%esp)
	bswap	%esi
	movl	%ecx,48(%esp)
	movl	%esi,52(%esp)
	movl	24(%edi),%ebx
	movl	28(%edi),%ecx
	bswap	%ebx
	movl	32(%edi),%esi
	bswap	%ecx
	movl	%ebx,56(%esp)
	bswap	%esi
	movl	%ecx,60(%esp)
	movl	%esi,64(%esp)
	movl	36(%edi),%ebx
	movl	40(%edi),%ecx
	bswap	%ebx
	movl	44(%edi),%esi
	bswap	%ecx
	movl	%ebx,68(%esp)
	bswap	%esi
	movl	%ecx,72(%esp)
	movl	%esi,76(%esp)
	movl	48(%edi),%ebx
	movl	52(%edi),%ecx
	bswap	%ebx
	movl	56(%edi),%esi
	bswap	%ecx
	movl	%ebx,80(%esp)
	bswap	%esi
	movl	%ecx,84(%esp)
	movl	%esi,88(%esp)
	movl	60(%edi),%ebx
	addl	$64,%edi
	bswap	%ebx
	movl	%edi,100(%esp)
	movl	%ebx,92(%esp)
	movl	%edx,%ecx
	movl	20(%esp),%esi
	rorl	$14,%edx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	32(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1116352408(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	36(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1899447441(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	12(%esp),%esi
	rorl	$14,%edx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	40(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3049323471(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	44(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3921009573(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	4(%esp),%esi
	rorl	$14,%edx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	48(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	961987163(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	(%esp),%ecx
	rorl	$14,%edx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	52(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1508970993(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	28(%esp),%esi
	rorl	$14,%edx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	56(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2453635748(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	60(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2870763221(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	20(%esp),%esi
	rorl	$14,%edx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	64(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3624381080(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	68(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	310598401(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	12(%esp),%esi
	rorl	$14,%edx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	72(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	607225278(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	76(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1426881987(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	4(%esp),%esi
	rorl	$14,%edx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	80(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1925078388(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	(%esp),%ecx
	rorl	$14,%edx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	84(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2162078206(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	%edx,%ecx
	movl	28(%esp),%esi
	rorl	$14,%edx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	88(%esp),%ebx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2614888103(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	%edx,%esi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	92(%esp),%ebx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3248222580(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	36(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	88(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	32(%esp),%ebx
	shrl	$10,%edi
	addl	68(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	20(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,32(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3835390401(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	40(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	92(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	36(%esp),%ebx
	shrl	$10,%edi
	addl	72(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,36(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	4022224774(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	44(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	32(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	40(%esp),%ebx
	shrl	$10,%edi
	addl	76(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	12(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,40(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	264347078(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	48(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	36(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	44(%esp),%ebx
	shrl	$10,%edi
	addl	80(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,44(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	604807628(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	52(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	40(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	48(%esp),%ebx
	shrl	$10,%edi
	addl	84(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	4(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,48(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	770255983(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	56(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	44(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	52(%esp),%ebx
	shrl	$10,%edi
	addl	88(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,52(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1249150122(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	60(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	48(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	56(%esp),%ebx
	shrl	$10,%edi
	addl	92(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	28(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,56(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1555081692(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	64(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	52(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	60(%esp),%ebx
	shrl	$10,%edi
	addl	32(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,60(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1996064986(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	68(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	56(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	64(%esp),%ebx
	shrl	$10,%edi
	addl	36(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	20(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,64(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2554220882(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	72(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	60(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	68(%esp),%ebx
	shrl	$10,%edi
	addl	40(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,68(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2821834349(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	76(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	64(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	72(%esp),%ebx
	shrl	$10,%edi
	addl	44(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	12(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,72(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2952996808(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	80(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	68(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	76(%esp),%ebx
	shrl	$10,%edi
	addl	48(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,76(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3210313671(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	84(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	72(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	80(%esp),%ebx
	shrl	$10,%edi
	addl	52(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	4(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,80(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3336571891(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	88(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	76(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	84(%esp),%ebx
	shrl	$10,%edi
	addl	56(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,84(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3584528711(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	92(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	80(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	88(%esp),%ebx
	shrl	$10,%edi
	addl	60(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	28(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,88(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	113926993(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	32(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	84(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	92(%esp),%ebx
	shrl	$10,%edi
	addl	64(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,92(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	338241895(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	36(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	88(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	32(%esp),%ebx
	shrl	$10,%edi
	addl	68(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	20(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,32(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	666307205(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	40(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	92(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	36(%esp),%ebx
	shrl	$10,%edi
	addl	72(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,36(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	773529912(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	44(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	32(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	40(%esp),%ebx
	shrl	$10,%edi
	addl	76(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	12(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,40(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1294757372(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	48(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	36(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	44(%esp),%ebx
	shrl	$10,%edi
	addl	80(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,44(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1396182291(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	52(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	40(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	48(%esp),%ebx
	shrl	$10,%edi
	addl	84(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	4(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,48(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1695183700(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	56(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	44(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	52(%esp),%ebx
	shrl	$10,%edi
	addl	88(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,52(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1986661051(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	60(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	48(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	56(%esp),%ebx
	shrl	$10,%edi
	addl	92(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	28(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,56(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2177026350(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	64(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	52(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	60(%esp),%ebx
	shrl	$10,%edi
	addl	32(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,60(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2456956037(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	68(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	56(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	64(%esp),%ebx
	shrl	$10,%edi
	addl	36(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	20(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,64(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2730485921(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	72(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	60(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	68(%esp),%ebx
	shrl	$10,%edi
	addl	40(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,68(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2820302411(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	76(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	64(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	72(%esp),%ebx
	shrl	$10,%edi
	addl	44(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	12(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,72(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3259730800(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	80(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	68(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	76(%esp),%ebx
	shrl	$10,%edi
	addl	48(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,76(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3345764771(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	84(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	72(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	80(%esp),%ebx
	shrl	$10,%edi
	addl	52(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	4(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,80(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3516065817(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	88(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	76(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	84(%esp),%ebx
	shrl	$10,%edi
	addl	56(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,84(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3600352804(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	92(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	80(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	88(%esp),%ebx
	shrl	$10,%edi
	addl	60(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	28(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,88(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	4094571909(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	32(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	84(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	92(%esp),%ebx
	shrl	$10,%edi
	addl	64(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,92(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	275423344(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	36(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	88(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	32(%esp),%ebx
	shrl	$10,%edi
	addl	68(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	20(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,32(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	430227734(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	40(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	92(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	36(%esp),%ebx
	shrl	$10,%edi
	addl	72(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,36(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	506948616(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	44(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	32(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	40(%esp),%ebx
	shrl	$10,%edi
	addl	76(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	12(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,40(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	659060556(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	48(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	36(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	44(%esp),%ebx
	shrl	$10,%edi
	addl	80(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,44(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	883997877(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	52(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	40(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	48(%esp),%ebx
	shrl	$10,%edi
	addl	84(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	4(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,48(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	958139571(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	56(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	44(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	52(%esp),%ebx
	shrl	$10,%edi
	addl	88(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,52(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1322822218(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	60(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	48(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	56(%esp),%ebx
	shrl	$10,%edi
	addl	92(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	28(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,56(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1537002063(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	64(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	52(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	60(%esp),%ebx
	shrl	$10,%edi
	addl	32(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,60(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	1747873779(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	68(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	56(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	64(%esp),%ebx
	shrl	$10,%edi
	addl	36(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	20(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	24(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,64(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,16(%esp)
	xorl	%ecx,%edx
	addl	28(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	4(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	1955562222(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	72(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	12(%esp),%edx
	addl	%ecx,%ebp
	movl	60(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	68(%esp),%ebx
	shrl	$10,%edi
	addl	40(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	16(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	20(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,68(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,12(%esp)
	xorl	%esi,%edx
	addl	24(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,28(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2024104815(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	76(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	8(%esp),%edx
	addl	%esi,%eax
	movl	64(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	72(%esp),%ebx
	shrl	$10,%edi
	addl	44(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	12(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	16(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,72(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,8(%esp)
	xorl	%ecx,%edx
	addl	20(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	28(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,24(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2227730452(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	80(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	4(%esp),%edx
	addl	%ecx,%ebp
	movl	68(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	76(%esp),%ebx
	shrl	$10,%edi
	addl	48(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	8(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	12(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,76(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,4(%esp)
	xorl	%esi,%edx
	addl	16(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	24(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,20(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2361852424(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	84(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	(%esp),%edx
	addl	%esi,%eax
	movl	72(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	80(%esp),%ebx
	shrl	$10,%edi
	addl	52(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	4(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	8(%esp),%edi
	xorl	%ecx,%edx
	movl	%ebx,80(%esp)
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,(%esp)
	xorl	%ecx,%edx
	addl	12(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	20(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,16(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	2428436474(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	88(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	28(%esp),%edx
	addl	%ecx,%ebp
	movl	76(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	84(%esp),%ebx
	shrl	$10,%edi
	addl	56(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	4(%esp),%edi
	xorl	%esi,%edx
	movl	%ebx,84(%esp)
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,28(%esp)
	xorl	%esi,%edx
	addl	8(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	16(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,12(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	2756734187(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	movl	92(%esp),%ecx
	rorl	$2,%esi
	addl	%edx,%eax
	addl	24(%esp),%edx
	addl	%esi,%eax
	movl	80(%esp),%esi
	movl	%ecx,%ebx
	rorl	$11,%ecx
	movl	%esi,%edi
	rorl	$2,%esi
	xorl	%ebx,%ecx
	shrl	$3,%ebx
	rorl	$7,%ecx
	xorl	%edi,%esi
	xorl	%ecx,%ebx
	rorl	$17,%esi
	addl	88(%esp),%ebx
	shrl	$10,%edi
	addl	60(%esp),%ebx
	movl	%edx,%ecx
	xorl	%esi,%edi
	movl	28(%esp),%esi
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	(%esp),%edi
	xorl	%ecx,%edx
	xorl	%edi,%esi
	rorl	$5,%edx
	andl	%ecx,%esi
	movl	%ecx,24(%esp)
	xorl	%ecx,%edx
	addl	4(%esp),%ebx
	xorl	%esi,%edi
	rorl	$6,%edx
	movl	%eax,%ecx
	addl	%edi,%ebx
	rorl	$9,%ecx
	movl	%eax,%esi
	movl	12(%esp),%edi
	xorl	%eax,%ecx
	movl	%eax,8(%esp)
	xorl	%edi,%eax
	rorl	$11,%ecx
	andl	%eax,%ebp
	leal	3204031479(%ebx,%edx,1),%edx
	xorl	%esi,%ecx
	xorl	%edi,%ebp
	movl	32(%esp),%esi
	rorl	$2,%ecx
	addl	%edx,%ebp
	addl	20(%esp),%edx
	addl	%ecx,%ebp
	movl	84(%esp),%ecx
	movl	%esi,%ebx
	rorl	$11,%esi
	movl	%ecx,%edi
	rorl	$2,%ecx
	xorl	%ebx,%esi
	shrl	$3,%ebx
	rorl	$7,%esi
	xorl	%edi,%ecx
	xorl	%esi,%ebx
	rorl	$17,%ecx
	addl	92(%esp),%ebx
	shrl	$10,%edi
	addl	64(%esp),%ebx
	movl	%edx,%esi
	xorl	%ecx,%edi
	movl	24(%esp),%ecx
	rorl	$14,%edx
	addl	%edi,%ebx
	movl	28(%esp),%edi
	xorl	%esi,%edx
	xorl	%edi,%ecx
	rorl	$5,%edx
	andl	%esi,%ecx
	movl	%esi,20(%esp)
	xorl	%esi,%edx
	addl	(%esp),%ebx
	xorl	%ecx,%edi
	rorl	$6,%edx
	movl	%ebp,%esi
	addl	%edi,%ebx
	rorl	$9,%esi
	movl	%ebp,%ecx
	movl	8(%esp),%edi
	xorl	%ebp,%esi
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	rorl	$11,%esi
	andl	%ebp,%eax
	leal	3329325298(%ebx,%edx,1),%edx
	xorl	%ecx,%esi
	xorl	%edi,%eax
	rorl	$2,%esi
	addl	%edx,%eax
	addl	16(%esp),%edx
	addl	%esi,%eax
	movl	96(%esp),%esi
	xorl	%edi,%ebp
	movl	12(%esp),%ecx
	addl	(%esi),%eax
	addl	4(%esi),%ebp
	addl	8(%esi),%edi
	addl	12(%esi),%ecx
	movl	%eax,(%esi)
	movl	%ebp,4(%esi)
	movl	%edi,8(%esi)
	movl	%ecx,12(%esi)
	movl	%ebp,4(%esp)
	xorl	%edi,%ebp
	movl	%edi,8(%esp)
	movl	%ecx,12(%esp)
	movl	20(%esp),%edi
	movl	24(%esp),%ebx
	movl	28(%esp),%ecx
	addl	16(%esi),%edx
	addl	20(%esi),%edi
	addl	24(%esi),%ebx
	addl	28(%esi),%ecx
	movl	%edx,16(%esi)
	movl	%edi,20(%esi)
	movl	%ebx,24(%esi)
	movl	%ecx,28(%esi)
	movl	%edi,20(%esp)
	movl	100(%esp),%edi
	movl	%ebx,24(%esp)
	movl	%ecx,28(%esp)
	cmpl	104(%esp),%edi
	jb	L009grand_loop
	movl	108(%esp),%esp
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret