	# $FreeBSD: head/secure/lib/libcrypto/i386/des-586.s 238405 2012-07-12 19:30:53Z jkim $
.file	"des-586.s"
.text
.globl	DES_SPtrans
.type	_x86_DES_encrypt,@function
.align	16
_x86_DES_encrypt:
	pushl	%ecx

	movl	(%ecx),%eax
	xorl	%ebx,%ebx
	movl	4(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	8(%ecx),%eax
	xorl	%ebx,%ebx
	movl	12(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	16(%ecx),%eax
	xorl	%ebx,%ebx
	movl	20(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	24(%ecx),%eax
	xorl	%ebx,%ebx
	movl	28(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	32(%ecx),%eax
	xorl	%ebx,%ebx
	movl	36(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	40(%ecx),%eax
	xorl	%ebx,%ebx
	movl	44(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	48(%ecx),%eax
	xorl	%ebx,%ebx
	movl	52(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	56(%ecx),%eax
	xorl	%ebx,%ebx
	movl	60(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	64(%ecx),%eax
	xorl	%ebx,%ebx
	movl	68(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	72(%ecx),%eax
	xorl	%ebx,%ebx
	movl	76(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	80(%ecx),%eax
	xorl	%ebx,%ebx
	movl	84(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	88(%ecx),%eax
	xorl	%ebx,%ebx
	movl	92(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	96(%ecx),%eax
	xorl	%ebx,%ebx
	movl	100(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	104(%ecx),%eax
	xorl	%ebx,%ebx
	movl	108(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	112(%ecx),%eax
	xorl	%ebx,%ebx
	movl	116(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	120(%ecx),%eax
	xorl	%ebx,%ebx
	movl	124(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi
	addl	$4,%esp
	ret
.size	_x86_DES_encrypt,.-_x86_DES_encrypt
.type	_x86_DES_decrypt,@function
.align	16
_x86_DES_decrypt:
	pushl	%ecx

	movl	120(%ecx),%eax
	xorl	%ebx,%ebx
	movl	124(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	112(%ecx),%eax
	xorl	%ebx,%ebx
	movl	116(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	104(%ecx),%eax
	xorl	%ebx,%ebx
	movl	108(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	96(%ecx),%eax
	xorl	%ebx,%ebx
	movl	100(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	88(%ecx),%eax
	xorl	%ebx,%ebx
	movl	92(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	80(%ecx),%eax
	xorl	%ebx,%ebx
	movl	84(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	72(%ecx),%eax
	xorl	%ebx,%ebx
	movl	76(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	64(%ecx),%eax
	xorl	%ebx,%ebx
	movl	68(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	56(%ecx),%eax
	xorl	%ebx,%ebx
	movl	60(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	48(%ecx),%eax
	xorl	%ebx,%ebx
	movl	52(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	40(%ecx),%eax
	xorl	%ebx,%ebx
	movl	44(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	32(%ecx),%eax
	xorl	%ebx,%ebx
	movl	36(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	24(%ecx),%eax
	xorl	%ebx,%ebx
	movl	28(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	16(%ecx),%eax
	xorl	%ebx,%ebx
	movl	20(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi

	movl	8(%ecx),%eax
	xorl	%ebx,%ebx
	movl	12(%ecx),%edx
	xorl	%esi,%eax
	xorl	%ecx,%ecx
	xorl	%esi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%edi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%edi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%edi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%edi
	xorl	0x700(%ebp,%ecx,1),%edi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%edi
	xorl	0x500(%ebp,%edx,1),%edi

	movl	(%ecx),%eax
	xorl	%ebx,%ebx
	movl	4(%ecx),%edx
	xorl	%edi,%eax
	xorl	%ecx,%ecx
	xorl	%edi,%edx
	andl	$0xfcfcfcfc,%eax
	andl	$0xcfcfcfcf,%edx
	movb	%al,%bl
	movb	%ah,%cl
	rorl	$4,%edx
	xorl	(%ebp,%ebx,1),%esi
	movb	%dl,%bl
	xorl	0x200(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	shrl	$16,%eax
	xorl	0x100(%ebp,%ebx,1),%esi
	movb	%ah,%bl
	shrl	$16,%edx
	xorl	0x300(%ebp,%ecx,1),%esi
	movb	%dh,%cl
	andl	$0xff,%eax
	andl	$0xff,%edx
	xorl	0x600(%ebp,%ebx,1),%esi
	xorl	0x700(%ebp,%ecx,1),%esi
	movl	(%esp),%ecx
	xorl	0x400(%ebp,%eax,1),%esi
	xorl	0x500(%ebp,%edx,1),%esi
	addl	$4,%esp
	ret
.size	_x86_DES_decrypt,.-_x86_DES_decrypt
.globl	DES_encrypt1
.type	DES_encrypt1,@function
.align	16
DES_encrypt1:
.L_DES_encrypt1_begin:
	pushl	%esi
	pushl	%edi


	movl	12(%esp),%esi
	xorl	%ecx,%ecx
	pushl	%ebx
	pushl	%ebp
	movl	(%esi),%eax
	movl	28(%esp),%ebx
	movl	4(%esi),%edi


	roll	$4,%eax
	movl	%eax,%esi
	xorl	%edi,%eax
	andl	$0xf0f0f0f0,%eax
	xorl	%eax,%esi
	xorl	%eax,%edi

	roll	$20,%edi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0xfff0000f,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$14,%eax
	movl	%eax,%edi
	xorl	%esi,%eax
	andl	$0x33333333,%eax
	xorl	%eax,%edi
	xorl	%eax,%esi

	roll	$22,%esi
	movl	%esi,%eax
	xorl	%edi,%esi
	andl	$0x03fc03fc,%esi
	xorl	%esi,%eax
	xorl	%esi,%edi

	roll	$9,%eax
	movl	%eax,%esi
	xorl	%edi,%eax
	andl	$0xaaaaaaaa,%eax
	xorl	%eax,%esi
	xorl	%eax,%edi

	roll	$1,%edi
	call	.L000pic_point
.L000pic_point:
	popl	%ebp
	leal	DES_SPtrans-.L000pic_point(%ebp),%ebp
	movl	24(%esp),%ecx
	cmpl	$0,%ebx
	je	.L001decrypt
	call	_x86_DES_encrypt
	jmp	.L002done
.L001decrypt:
	call	_x86_DES_decrypt
.L002done:


	movl	20(%esp),%edx
	rorl	$1,%esi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0xaaaaaaaa,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$23,%eax
	movl	%eax,%edi
	xorl	%esi,%eax
	andl	$0x03fc03fc,%eax
	xorl	%eax,%edi
	xorl	%eax,%esi

	roll	$10,%edi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0x33333333,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$18,%esi
	movl	%esi,%edi
	xorl	%eax,%esi
	andl	$0xfff0000f,%esi
	xorl	%esi,%edi
	xorl	%esi,%eax

	roll	$12,%edi
	movl	%edi,%esi
	xorl	%eax,%edi
	andl	$0xf0f0f0f0,%edi
	xorl	%edi,%esi
	xorl	%edi,%eax

	rorl	$4,%eax
	movl	%eax,(%edx)
	movl	%esi,4(%edx)
	popl	%ebp
	popl	%ebx
	popl	%edi
	popl	%esi
	ret
.size	DES_encrypt1,.-.L_DES_encrypt1_begin
.globl	DES_encrypt2
.type	DES_encrypt2,@function
.align	16
DES_encrypt2:
.L_DES_encrypt2_begin:
	pushl	%esi
	pushl	%edi


	movl	12(%esp),%eax
	xorl	%ecx,%ecx
	pushl	%ebx
	pushl	%ebp
	movl	(%eax),%esi
	movl	28(%esp),%ebx
	roll	$3,%esi
	movl	4(%eax),%edi
	roll	$3,%edi
	call	.L003pic_point
.L003pic_point:
	popl	%ebp
	leal	DES_SPtrans-.L003pic_point(%ebp),%ebp
	movl	24(%esp),%ecx
	cmpl	$0,%ebx
	je	.L004decrypt
	call	_x86_DES_encrypt
	jmp	.L005done
.L004decrypt:
	call	_x86_DES_decrypt
.L005done:


	rorl	$3,%edi
	movl	20(%esp),%eax
	rorl	$3,%esi
	movl	%edi,(%eax)
	movl	%esi,4(%eax)
	popl	%ebp
	popl	%ebx
	popl	%edi
	popl	%esi
	ret
.size	DES_encrypt2,.-.L_DES_encrypt2_begin
.globl	DES_encrypt3
.type	DES_encrypt3,@function
.align	16
DES_encrypt3:
.L_DES_encrypt3_begin:
	pushl	%ebx
	movl	8(%esp),%ebx
	pushl	%ebp
	pushl	%esi
	pushl	%edi


	movl	(%ebx),%edi
	movl	4(%ebx),%esi
	subl	$12,%esp


	roll	$4,%edi
	movl	%edi,%edx
	xorl	%esi,%edi
	andl	$0xf0f0f0f0,%edi
	xorl	%edi,%edx
	xorl	%edi,%esi

	roll	$20,%esi
	movl	%esi,%edi
	xorl	%edx,%esi
	andl	$0xfff0000f,%esi
	xorl	%esi,%edi
	xorl	%esi,%edx

	roll	$14,%edi
	movl	%edi,%esi
	xorl	%edx,%edi
	andl	$0x33333333,%edi
	xorl	%edi,%esi
	xorl	%edi,%edx

	roll	$22,%edx
	movl	%edx,%edi
	xorl	%esi,%edx
	andl	$0x03fc03fc,%edx
	xorl	%edx,%edi
	xorl	%edx,%esi

	roll	$9,%edi
	movl	%edi,%edx
	xorl	%esi,%edi
	andl	$0xaaaaaaaa,%edi
	xorl	%edi,%edx
	xorl	%edi,%esi

	rorl	$3,%edx
	rorl	$2,%esi
	movl	%esi,4(%ebx)
	movl	36(%esp),%eax
	movl	%edx,(%ebx)
	movl	40(%esp),%edi
	movl	44(%esp),%esi
	movl	$1,8(%esp)
	movl	%eax,4(%esp)
	movl	%ebx,(%esp)
	call	.L_DES_encrypt2_begin
	movl	$0,8(%esp)
	movl	%edi,4(%esp)
	movl	%ebx,(%esp)
	call	.L_DES_encrypt2_begin
	movl	$1,8(%esp)
	movl	%esi,4(%esp)
	movl	%ebx,(%esp)
	call	.L_DES_encrypt2_begin
	addl	$12,%esp
	movl	(%ebx),%edi
	movl	4(%ebx),%esi


	roll	$2,%esi
	roll	$3,%edi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0xaaaaaaaa,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$23,%eax
	movl	%eax,%edi
	xorl	%esi,%eax
	andl	$0x03fc03fc,%eax
	xorl	%eax,%edi
	xorl	%eax,%esi

	roll	$10,%edi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0x33333333,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$18,%esi
	movl	%esi,%edi
	xorl	%eax,%esi
	andl	$0xfff0000f,%esi
	xorl	%esi,%edi
	xorl	%esi,%eax

	roll	$12,%edi
	movl	%edi,%esi
	xorl	%eax,%edi
	andl	$0xf0f0f0f0,%edi
	xorl	%edi,%esi
	xorl	%edi,%eax

	rorl	$4,%eax
	movl	%eax,(%ebx)
	movl	%esi,4(%ebx)
	popl	%edi
	popl	%esi
	popl	%ebp
	popl	%ebx
	ret
.size	DES_encrypt3,.-.L_DES_encrypt3_begin
.globl	DES_decrypt3
.type	DES_decrypt3,@function
.align	16
DES_decrypt3:
.L_DES_decrypt3_begin:
	pushl	%ebx
	movl	8(%esp),%ebx
	pushl	%ebp
	pushl	%esi
	pushl	%edi


	movl	(%ebx),%edi
	movl	4(%ebx),%esi
	subl	$12,%esp


	roll	$4,%edi
	movl	%edi,%edx
	xorl	%esi,%edi
	andl	$0xf0f0f0f0,%edi
	xorl	%edi,%edx
	xorl	%edi,%esi

	roll	$20,%esi
	movl	%esi,%edi
	xorl	%edx,%esi
	andl	$0xfff0000f,%esi
	xorl	%esi,%edi
	xorl	%esi,%edx

	roll	$14,%edi
	movl	%edi,%esi
	xorl	%edx,%edi
	andl	$0x33333333,%edi
	xorl	%edi,%esi
	xorl	%edi,%edx

	roll	$22,%edx
	movl	%edx,%edi
	xorl	%esi,%edx
	andl	$0x03fc03fc,%edx
	xorl	%edx,%edi
	xorl	%edx,%esi

	roll	$9,%edi
	movl	%edi,%edx
	xorl	%esi,%edi
	andl	$0xaaaaaaaa,%edi
	xorl	%edi,%edx
	xorl	%edi,%esi

	rorl	$3,%edx
	rorl	$2,%esi
	movl	%esi,4(%ebx)
	movl	36(%esp),%esi
	movl	%edx,(%ebx)
	movl	40(%esp),%edi
	movl	44(%esp),%eax
	movl	$0,8(%esp)
	movl	%eax,4(%esp)
	movl	%ebx,(%esp)
	call	.L_DES_encrypt2_begin
	movl	$1,8(%esp)
	movl	%edi,4(%esp)
	movl	%ebx,(%esp)
	call	.L_DES_encrypt2_begin
	movl	$0,8(%esp)
	movl	%esi,4(%esp)
	movl	%ebx,(%esp)
	call	.L_DES_encrypt2_begin
	addl	$12,%esp
	movl	(%ebx),%edi
	movl	4(%ebx),%esi


	roll	$2,%esi
	roll	$3,%edi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0xaaaaaaaa,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$23,%eax
	movl	%eax,%edi
	xorl	%esi,%eax
	andl	$0x03fc03fc,%eax
	xorl	%eax,%edi
	xorl	%eax,%esi

	roll	$10,%edi
	movl	%edi,%eax
	xorl	%esi,%edi
	andl	$0x33333333,%edi
	xorl	%edi,%eax
	xorl	%edi,%esi

	roll	$18,%esi
	movl	%esi,%edi
	xorl	%eax,%esi
	andl	$0xfff0000f,%esi
	xorl	%esi,%edi
	xorl	%esi,%eax

	roll	$12,%edi
	movl	%edi,%esi
	xorl	%eax,%edi
	andl	$0xf0f0f0f0,%edi
	xorl	%edi,%esi
	xorl	%edi,%eax

	rorl	$4,%eax
	movl	%eax,(%ebx)
	movl	%esi,4(%ebx)
	popl	%edi
	popl	%esi
	popl	%ebp
	popl	%ebx
	ret
.size	DES_decrypt3,.-.L_DES_decrypt3_begin
.globl	DES_ncbc_encrypt
.type	DES_ncbc_encrypt,@function
.align	16
DES_ncbc_encrypt:
.L_DES_ncbc_encrypt_begin:

	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	movl	28(%esp),%ebp

	movl	36(%esp),%ebx
	movl	(%ebx),%esi
	movl	4(%ebx),%edi
	pushl	%edi
	pushl	%esi
	pushl	%edi
	pushl	%esi
	movl	%esp,%ebx
	movl	36(%esp),%esi
	movl	40(%esp),%edi

	movl	56(%esp),%ecx

	pushl	%ecx

	movl	52(%esp),%eax
	pushl	%eax
	pushl	%ebx
	cmpl	$0,%ecx
	jz	.L006decrypt
	andl	$4294967288,%ebp
	movl	12(%esp),%eax
	movl	16(%esp),%ebx
	jz	.L007encrypt_finish
.L008encrypt_loop:
	movl	(%esi),%ecx
	movl	4(%esi),%edx
	xorl	%ecx,%eax
	xorl	%edx,%ebx
	movl	%eax,12(%esp)
	movl	%ebx,16(%esp)
	call	.L_DES_encrypt1_begin
	movl	12(%esp),%eax
	movl	16(%esp),%ebx
	movl	%eax,(%edi)
	movl	%ebx,4(%edi)
	addl	$8,%esi
	addl	$8,%edi
	subl	$8,%ebp
	jnz	.L008encrypt_loop
.L007encrypt_finish:
	movl	56(%esp),%ebp
	andl	$7,%ebp
	jz	.L009finish
	call	.L010PIC_point
.L010PIC_point:
	popl	%edx
	leal	.L011cbc_enc_jmp_table-.L010PIC_point(%edx),%ecx
	movl	(%ecx,%ebp,4),%ebp
	addl	%edx,%ebp
	xorl	%ecx,%ecx
	xorl	%edx,%edx
	jmp	*%ebp
.L012ej7:
	movb	6(%esi),%dh
	shll	$8,%edx
.L013ej6:
	movb	5(%esi),%dh
.L014ej5:
	movb	4(%esi),%dl
.L015ej4:
	movl	(%esi),%ecx
	jmp	.L016ejend
.L017ej3:
	movb	2(%esi),%ch
	shll	$8,%ecx
.L018ej2:
	movb	1(%esi),%ch
.L019ej1:
	movb	(%esi),%cl
.L016ejend:
	xorl	%ecx,%eax
	xorl	%edx,%ebx
	movl	%eax,12(%esp)
	movl	%ebx,16(%esp)
	call	.L_DES_encrypt1_begin
	movl	12(%esp),%eax
	movl	16(%esp),%ebx
	movl	%eax,(%edi)
	movl	%ebx,4(%edi)
	jmp	.L009finish
.L006decrypt:
	andl	$4294967288,%ebp
	movl	20(%esp),%eax
	movl	24(%esp),%ebx
	jz	.L020decrypt_finish
.L021decrypt_loop:
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	%eax,12(%esp)
	movl	%ebx,16(%esp)
	call	.L_DES_encrypt1_begin
	movl	12(%esp),%eax
	movl	16(%esp),%ebx
	movl	20(%esp),%ecx
	movl	24(%esp),%edx
	xorl	%eax,%ecx
	xorl	%ebx,%edx
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	%ecx,(%edi)
	movl	%edx,4(%edi)
	movl	%eax,20(%esp)
	movl	%ebx,24(%esp)
	addl	$8,%esi
	addl	$8,%edi
	subl	$8,%ebp
	jnz	.L021decrypt_loop
.L020decrypt_finish:
	movl	56(%esp),%ebp
	andl	$7,%ebp
	jz	.L009finish
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	%eax,12(%esp)
	movl	%ebx,16(%esp)
	call	.L_DES_encrypt1_begin
	movl	12(%esp),%eax
	movl	16(%esp),%ebx
	movl	20(%esp),%ecx
	movl	24(%esp),%edx
	xorl	%eax,%ecx
	xorl	%ebx,%edx
	movl	(%esi),%eax
	movl	4(%esi),%ebx
.L022dj7:
	rorl	$16,%edx
	movb	%dl,6(%edi)
	shrl	$16,%edx
.L023dj6:
	movb	%dh,5(%edi)
.L024dj5:
	movb	%dl,4(%edi)
.L025dj4:
	movl	%ecx,(%edi)
	jmp	.L026djend
.L027dj3:
	rorl	$16,%ecx
	movb	%cl,2(%edi)
	shll	$16,%ecx
.L028dj2:
	movb	%ch,1(%esi)
.L029dj1:
	movb	%cl,(%esi)
.L026djend:
	jmp	.L009finish
.L009finish:
	movl	64(%esp),%ecx
	addl	$28,%esp
	movl	%eax,(%ecx)
	movl	%ebx,4(%ecx)
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.align	64
.L011cbc_enc_jmp_table:
.long	0
.long	.L019ej1-.L010PIC_point
.long	.L018ej2-.L010PIC_point
.long	.L017ej3-.L010PIC_point
.long	.L015ej4-.L010PIC_point
.long	.L014ej5-.L010PIC_point
.long	.L013ej6-.L010PIC_point
.long	.L012ej7-.L010PIC_point
.align	64
.size	DES_ncbc_encrypt,.-.L_DES_ncbc_encrypt_begin
.globl	DES_ede3_cbc_encrypt
.type	DES_ede3_cbc_encrypt,@function
.align	16
DES_ede3_cbc_encrypt:
.L_DES_ede3_cbc_encrypt_begin:

	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	movl	28(%esp),%ebp

	movl	44(%esp),%ebx
	movl	(%ebx),%esi
	movl	4(%ebx),%edi
	pushl	%edi
	pushl	%esi
	pushl	%edi
	pushl	%esi
	movl	%esp,%ebx
	movl	36(%esp),%esi
	movl	40(%esp),%edi

	movl	64(%esp),%ecx

	movl	56(%esp),%eax
	pushl	%eax

	movl	56(%esp),%eax
	pushl	%eax

	movl	56(%esp),%eax
	pushl	%eax
	pushl	%ebx
	cmpl	$0,%ecx
	jz	.L030decrypt
	andl	$4294967288,%ebp
	movl	16(%esp),%eax
	movl	20(%esp),%ebx
	jz	.L031encrypt_finish
.L032encrypt_loop:
	movl	(%esi),%ecx
	movl	4(%esi),%edx
	xorl	%ecx,%eax
	xorl	%edx,%ebx
	movl	%eax,16(%esp)
	movl	%ebx,20(%esp)
	call	.L_DES_encrypt3_begin
	movl	16(%esp),%eax
	movl	20(%esp),%ebx
	movl	%eax,(%edi)
	movl	%ebx,4(%edi)
	addl	$8,%esi
	addl	$8,%edi
	subl	$8,%ebp
	jnz	.L032encrypt_loop
.L031encrypt_finish:
	movl	60(%esp),%ebp
	andl	$7,%ebp
	jz	.L033finish
	call	.L034PIC_point
.L034PIC_point:
	popl	%edx
	leal	.L035cbc_enc_jmp_table-.L034PIC_point(%edx),%ecx
	movl	(%ecx,%ebp,4),%ebp
	addl	%edx,%ebp
	xorl	%ecx,%ecx
	xorl	%edx,%edx
	jmp	*%ebp
.L036ej7:
	movb	6(%esi),%dh
	shll	$8,%edx
.L037ej6:
	movb	5(%esi),%dh
.L038ej5:
	movb	4(%esi),%dl
.L039ej4:
	movl	(%esi),%ecx
	jmp	.L040ejend
.L041ej3:
	movb	2(%esi),%ch
	shll	$8,%ecx
.L042ej2:
	movb	1(%esi),%ch
.L043ej1:
	movb	(%esi),%cl
.L040ejend:
	xorl	%ecx,%eax
	xorl	%edx,%ebx
	movl	%eax,16(%esp)
	movl	%ebx,20(%esp)
	call	.L_DES_encrypt3_begin
	movl	16(%esp),%eax
	movl	20(%esp),%ebx
	movl	%eax,(%edi)
	movl	%ebx,4(%edi)
	jmp	.L033finish
.L030decrypt:
	andl	$4294967288,%ebp
	movl	24(%esp),%eax
	movl	28(%esp),%ebx
	jz	.L044decrypt_finish
.L045decrypt_loop:
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	%eax,16(%esp)
	movl	%ebx,20(%esp)
	call	.L_DES_decrypt3_begin
	movl	16(%esp),%eax
	movl	20(%esp),%ebx
	movl	24(%esp),%ecx
	movl	28(%esp),%edx
	xorl	%eax,%ecx
	xorl	%ebx,%edx
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	%ecx,(%edi)
	movl	%edx,4(%edi)
	movl	%eax,24(%esp)
	movl	%ebx,28(%esp)
	addl	$8,%esi
	addl	$8,%edi
	subl	$8,%ebp
	jnz	.L045decrypt_loop
.L044decrypt_finish:
	movl	60(%esp),%ebp
	andl	$7,%ebp
	jz	.L033finish
	movl	(%esi),%eax
	movl	4(%esi),%ebx
	movl	%eax,16(%esp)
	movl	%ebx,20(%esp)
	call	.L_DES_decrypt3_begin
	movl	16(%esp),%eax
	movl	20(%esp),%ebx
	movl	24(%esp),%ecx
	movl	28(%esp),%edx
	xorl	%eax,%ecx
	xorl	%ebx,%edx
	movl	(%esi),%eax
	movl	4(%esi),%ebx
.L046dj7:
	rorl	$16,%edx
	movb	%dl,6(%edi)
	shrl	$16,%edx
.L047dj6:
	movb	%dh,5(%edi)
.L048dj5:
	movb	%dl,4(%edi)
.L049dj4:
	movl	%ecx,(%edi)
	jmp	.L050djend
.L051dj3:
	rorl	$16,%ecx
	movb	%cl,2(%edi)
	shll	$16,%ecx
.L052dj2:
	movb	%ch,1(%esi)
.L053dj1:
	movb	%cl,(%esi)
.L050djend:
	jmp	.L033finish
.L033finish:
	movl	76(%esp),%ecx
	addl	$32,%esp
	movl	%eax,(%ecx)
	movl	%ebx,4(%ecx)
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.align	64
.L035cbc_enc_jmp_table:
.long	0
.long	.L043ej1-.L034PIC_point
.long	.L042ej2-.L034PIC_point
.long	.L041ej3-.L034PIC_point
.long	.L039ej4-.L034PIC_point
.long	.L038ej5-.L034PIC_point
.long	.L037ej6-.L034PIC_point
.long	.L036ej7-.L034PIC_point
.align	64
.size	DES_ede3_cbc_encrypt,.-.L_DES_ede3_cbc_encrypt_begin
.align	64
DES_SPtrans:
.long	34080768,524288,33554434,34080770
.long	33554432,526338,524290,33554434
.long	526338,34080768,34078720,2050
.long	33556482,33554432,0,524290
.long	524288,2,33556480,526336
.long	34080770,34078720,2050,33556480
.long	2,2048,526336,34078722
.long	2048,33556482,34078722,0
.long	0,34080770,33556480,524290
.long	34080768,524288,2050,33556480
.long	34078722,2048,526336,33554434
.long	526338,2,33554434,34078720
.long	34080770,526336,34078720,33556482
.long	33554432,2050,524290,0
.long	524288,33554432,33556482,34080768
.long	2,34078722,2048,526338
.long	1074823184,0,1081344,1074790400
.long	1073741840,32784,1073774592,1081344
.long	32768,1074790416,16,1073774592
.long	1048592,1074823168,1074790400,16
.long	1048576,1073774608,1074790416,32768
.long	1081360,1073741824,0,1048592
.long	1073774608,1081360,1074823168,1073741840
.long	1073741824,1048576,32784,1074823184
.long	1048592,1074823168,1073774592,1081360
.long	1074823184,1048592,1073741840,0
.long	1073741824,32784,1048576,1074790416
.long	32768,1073741824,1081360,1073774608
.long	1074823168,32768,0,1073741840
.long	16,1074823184,1081344,1074790400
.long	1074790416,1048576,32784,1073774592
.long	1073774608,16,1074790400,1081344
.long	67108865,67371264,256,67109121
.long	262145,67108864,67109121,262400
.long	67109120,262144,67371008,1
.long	67371265,257,1,67371009
.long	0,262145,67371264,256
.long	257,67371265,262144,67108865
.long	67371009,67109120,262401,67371008
.long	262400,0,67108864,262401
.long	67371264,256,1,262144
.long	257,262145,67371008,67109121
.long	0,67371264,262400,67371009
.long	262145,67108864,67371265,1
.long	262401,67108865,67108864,67371265
.long	262144,67109120,67109121,262400
.long	67109120,0,67371009,257
.long	67108865,262401,256,67371008
.long	4198408,268439552,8,272633864
.long	0,272629760,268439560,4194312
.long	272633856,268435464,268435456,4104
.long	268435464,4198408,4194304,268435456
.long	272629768,4198400,4096,8
.long	4198400,268439560,272629760,4096
.long	4104,0,4194312,272633856
.long	268439552,272629768,272633864,4194304
.long	272629768,4104,4194304,268435464
.long	4198400,268439552,8,272629760
.long	268439560,0,4096,4194312
.long	0,272629768,272633856,4096
.long	268435456,272633864,4198408,4194304
.long	272633864,8,268439552,4198408
.long	4194312,4198400,272629760,268439560
.long	4104,268435456,268435464,272633856
.long	134217728,65536,1024,134284320
.long	134283296,134218752,66592,134283264
.long	65536,32,134217760,66560
.long	134218784,134283296,134284288,0
.long	66560,134217728,65568,1056
.long	134218752,66592,0,134217760
.long	32,134218784,134284320,65568
.long	134283264,1024,1056,134284288
.long	134284288,134218784,65568,134283264
.long	65536,32,134217760,134218752
.long	134217728,66560,134284320,0
.long	66592,134217728,1024,65568
.long	134218784,1024,0,134284320
.long	134283296,134284288,1056,65536
.long	66560,134283296,134218752,1056
.long	32,66592,134283264,134217760
.long	2147483712,2097216,0,2149588992
.long	2097216,8192,2147491904,2097152
.long	8256,2149589056,2105344,2147483648
.long	2147491840,2147483712,2149580800,2105408
.long	2097152,2147491904,2149580864,0
.long	8192,64,2149588992,2149580864
.long	2149589056,2149580800,2147483648,8256
.long	64,2105344,2105408,2147491840
.long	8256,2147483648,2147491840,2105408
.long	2149588992,2097216,0,2147491840
.long	2147483648,8192,2149580864,2097152
.long	2097216,2149589056,2105344,64
.long	2149589056,2105344,2097152,2147491904
.long	2147483712,2149580800,2105408,0
.long	8192,2147483712,2147491904,2149588992
.long	2149580800,8256,64,2149580864
.long	16384,512,16777728,16777220
.long	16794116,16388,16896,0
.long	16777216,16777732,516,16793600
.long	4,16794112,16793600,516
.long	16777732,16384,16388,16794116
.long	0,16777728,16777220,16896
.long	16793604,16900,16794112,4
.long	16900,16793604,512,16777216
.long	16900,16793600,16793604,516
.long	16384,512,16777216,16793604
.long	16777732,16900,16896,0
.long	512,16777220,4,16777728
.long	0,16777732,16777728,16896
.long	516,16384,16794116,16777216
.long	16794112,4,16388,16794116
.long	16777220,16794112,16793600,16388
.long	545259648,545390592,131200,0
.long	537001984,8388736,545259520,545390720
.long	128,536870912,8519680,131200
.long	8519808,537002112,536871040,545259520
.long	131072,8519808,8388736,537001984
.long	545390720,536871040,0,8519680
.long	536870912,8388608,537002112,545259648
.long	8388608,131072,545390592,128
.long	8388608,131072,536871040,545390720
.long	131200,536870912,0,8519680
.long	545259648,537002112,537001984,8388736
.long	545390592,128,8388736,537001984
.long	545390720,8388608,545259520,536871040
.long	8519680,131200,537002112,545259520
.long	128,545390592,8519808,0
.long	536870912,545259648,131072,8519808
