Whoops, missed one.

Whoops, missed one.

--- crypto/des/asm/dx86unix.cpp
+++ crypto/des/asm/dx86unix.cpp
@@ -1,3202 +0,0 @@
-/* Run the C pre-processor over this file with one of the following defined
- * ELF - elf object files,
- * OUT - a.out object files,
- * BSDI - BSDI style a.out object files
- * SOL - Solaris style elf
- */
-
-#define TYPE(a,b)       .type   a,b
-#define SIZE(a,b)       .size   a,b
-
-#if defined(OUT) || defined(BSDI)
-#define des_SPtrans _des_SPtrans
-#define des_encrypt _des_encrypt
-#define des_encrypt2 _des_encrypt2
-#define des_encrypt3 _des_encrypt3
-#define des_decrypt3 _des_decrypt3
-#define des_ncbc_encrypt _des_ncbc_encrypt
-#define des_ede3_cbc_encrypt _des_ede3_cbc_encrypt
-
-#endif
-
-#ifdef OUT
-#define OK	1
-#define ALIGN	4
-#endif
-
-#ifdef BSDI
-#define OK              1
-#define ALIGN           4
-#undef SIZE
-#undef TYPE
-#define SIZE(a,b)
-#define TYPE(a,b)
-#endif
-
-#if defined(ELF) || defined(SOL)
-#define OK              1
-#define ALIGN           16
-#endif
-
-#ifndef OK
-You need to define one of
-ELF - elf systems - linux-elf, NetBSD and DG-UX
-OUT - a.out systems - linux-a.out and FreeBSD
-SOL - solaris systems, which are elf with strange comment lines
-BSDI - a.out with a very primative version of as.
-#endif
-
-/* Let the Assembler begin :-) */
-	/* Don't even think of reading this code */
-	/* It was automatically generated by des-586.pl */
-	/* Which is a perl program used to generate the x86 assember for */
-	/* any of elf, a.out, BSDI,Win32, or Solaris */
-	/* eric <eay@cryptsoft.com> */
-
-	.file	"des-586.s"
-	.version	"01.01"
-gcc2_compiled.:
-.text
-	.align ALIGN
-.globl des_encrypt
-	TYPE(des_encrypt,@function)
-des_encrypt:
-	pushl	%esi
-	pushl	%edi
-
-	/* Load the 2 words */
-	movl	12(%esp),	%esi
-	xorl	%ecx,		%ecx
-	pushl	%ebx
-	pushl	%ebp
-	movl	(%esi),		%eax
-	movl	28(%esp),	%ebx
-	movl	4(%esi),	%edi
-
-	/* IP */
-	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
-
-.byte 209
-.byte 199		/* roll $1 %edi */
-	movl	24(%esp),	%ebp
-	cmpl	$0,		%ebx
-	je	.L000start_decrypt
-
-	/* Round 0 */
-	movl	(%ebp),		%eax
-	xorl	%ebx,		%ebx
-	movl	4(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 1 */
-	movl	8(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	12(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 2 */
-	movl	16(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	20(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 3 */
-	movl	24(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	28(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 4 */
-	movl	32(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	36(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 5 */
-	movl	40(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	44(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 6 */
-	movl	48(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	52(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 7 */
-	movl	56(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	60(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 8 */
-	movl	64(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	68(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 9 */
-	movl	72(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	76(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 10 */
-	movl	80(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	84(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 11 */
-	movl	88(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	92(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 12 */
-	movl	96(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	100(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 13 */
-	movl	104(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	108(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 14 */
-	movl	112(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	116(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 15 */
-	movl	120(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	124(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-	jmp	.L001end
-.L000start_decrypt:
-
-	/* Round 15 */
-	movl	120(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	124(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 14 */
-	movl	112(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	116(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 13 */
-	movl	104(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	108(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 12 */
-	movl	96(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	100(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 11 */
-	movl	88(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	92(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 10 */
-	movl	80(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	84(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 9 */
-	movl	72(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	76(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 8 */
-	movl	64(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	68(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 7 */
-	movl	56(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	60(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 6 */
-	movl	48(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	52(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 5 */
-	movl	40(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	44(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 4 */
-	movl	32(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	36(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 3 */
-	movl	24(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	28(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 2 */
-	movl	16(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	20(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 1 */
-	movl	8(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	12(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 0 */
-	movl	(%ebp),		%eax
-	xorl	%ebx,		%ebx
-	movl	4(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-.L001end:
-
-	/* FP */
-	movl	20(%esp),	%edx
-.byte 209
-.byte 206		/* 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
-.des_encrypt_end:
-	SIZE(des_encrypt,.des_encrypt_end-des_encrypt)
-.ident	"desasm.pl"
-.text
-	.align ALIGN
-.globl des_encrypt2
-	TYPE(des_encrypt2,@function)
-des_encrypt2:
-	pushl	%esi
-	pushl	%edi
-
-	/* Load the 2 words */
-	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
-	movl	24(%esp),	%ebp
-	cmpl	$0,		%ebx
-	je	.L002start_decrypt
-
-	/* Round 0 */
-	movl	(%ebp),		%eax
-	xorl	%ebx,		%ebx
-	movl	4(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 1 */
-	movl	8(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	12(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 2 */
-	movl	16(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	20(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 3 */
-	movl	24(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	28(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 4 */
-	movl	32(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	36(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 5 */
-	movl	40(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	44(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 6 */
-	movl	48(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	52(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 7 */
-	movl	56(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	60(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 8 */
-	movl	64(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	68(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 9 */
-	movl	72(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	76(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 10 */
-	movl	80(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	84(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 11 */
-	movl	88(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	92(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 12 */
-	movl	96(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	100(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 13 */
-	movl	104(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	108(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 14 */
-	movl	112(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	116(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 15 */
-	movl	120(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	124(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-	jmp	.L003end
-.L002start_decrypt:
-
-	/* Round 15 */
-	movl	120(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	124(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 14 */
-	movl	112(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	116(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 13 */
-	movl	104(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	108(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 12 */
-	movl	96(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	100(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 11 */
-	movl	88(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	92(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 10 */
-	movl	80(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	84(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 9 */
-	movl	72(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	76(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 8 */
-	movl	64(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	68(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 7 */
-	movl	56(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	60(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 6 */
-	movl	48(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	52(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 5 */
-	movl	40(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	44(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 4 */
-	movl	32(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	36(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 3 */
-	movl	24(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	28(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 2 */
-	movl	16(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	20(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-
-	/* Round 1 */
-	movl	8(%ebp),	%eax
-	xorl	%ebx,		%ebx
-	movl	12(%ebp),	%edx
-	xorl	%esi,		%eax
-	xorl	%esi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%edi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%edi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%edi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%edi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%edi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%edi
-
-	/* Round 0 */
-	movl	(%ebp),		%eax
-	xorl	%ebx,		%ebx
-	movl	4(%ebp),	%edx
-	xorl	%edi,		%eax
-	xorl	%edi,		%edx
-	andl	$0xfcfcfcfc,	%eax
-	andl	$0xcfcfcfcf,	%edx
-	movb	%al,		%bl
-	movb	%ah,		%cl
-	rorl	$4,		%edx
-	movl	      des_SPtrans(%ebx),%ebp
-	movb	%dl,		%bl
-	xorl	%ebp,		%esi
-	movl	0x200+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movb	%dh,		%cl
-	shrl	$16,		%eax
-	movl	0x100+des_SPtrans(%ebx),%ebp
-	xorl	%ebp,		%esi
-	movb	%ah,		%bl
-	shrl	$16,		%edx
-	movl	0x300+des_SPtrans(%ecx),%ebp
-	xorl	%ebp,		%esi
-	movl	24(%esp),	%ebp
-	movb	%dh,		%cl
-	andl	$0xff,		%eax
-	andl	$0xff,		%edx
-	movl	0x600+des_SPtrans(%ebx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x700+des_SPtrans(%ecx),%ebx
-	xorl	%ebx,		%esi
-	movl	0x400+des_SPtrans(%eax),%ebx
-	xorl	%ebx,		%esi
-	movl	0x500+des_SPtrans(%edx),%ebx
-	xorl	%ebx,		%esi
-.L003end:
-
-	/* Fixup */
-	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
-.des_encrypt2_end:
-	SIZE(des_encrypt2,.des_encrypt2_end-des_encrypt2)
-.ident	"desasm.pl"
-.text
-	.align ALIGN
-.globl des_encrypt3
-	TYPE(des_encrypt3,@function)
-des_encrypt3:
-	pushl	%ebx
-	movl	8(%esp),	%ebx
-	pushl	%ebp
-	pushl	%esi
-	pushl	%edi
-
-	/* Load the data words */
-	movl	(%ebx),		%edi
-	movl	4(%ebx),	%esi
-	subl	$12,		%esp
-
-	/* IP */
-	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	des_encrypt2
-	movl	$0,		8(%esp)
-	movl	%edi,		4(%esp)
-	movl	%ebx,		(%esp)
-	call	des_encrypt2
-	movl	$1,		8(%esp)
-	movl	%esi,		4(%esp)
-	movl	%ebx,		(%esp)
-	call	des_encrypt2
-	addl	$12,		%esp
-	movl	(%ebx),		%edi
-	movl	4(%ebx),	%esi
-
-	/* FP */
-	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
-.des_encrypt3_end:
-	SIZE(des_encrypt3,.des_encrypt3_end-des_encrypt3)
-.ident	"desasm.pl"
-.text
-	.align ALIGN
-.globl des_decrypt3
-	TYPE(des_decrypt3,@function)
-des_decrypt3:
-	pushl	%ebx
-	movl	8(%esp),	%ebx
-	pushl	%ebp
-	pushl	%esi
-	pushl	%edi
-
-	/* Load the data words */
-	movl	(%ebx),		%edi
-	movl	4(%ebx),	%esi
-	subl	$12,		%esp
-
-	/* IP */
-	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	des_encrypt2
-	movl	$1,		8(%esp)
-	movl	%edi,		4(%esp)
-	movl	%ebx,		(%esp)
-	call	des_encrypt2
-	movl	$0,		8(%esp)
-	movl	%esi,		4(%esp)
-	movl	%ebx,		(%esp)
-	call	des_encrypt2
-	addl	$12,		%esp
-	movl	(%ebx),		%edi
-	movl	4(%ebx),	%esi
-
-	/* FP */
-	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
-.des_decrypt3_end:
-	SIZE(des_decrypt3,.des_decrypt3_end-des_decrypt3)
-.ident	"desasm.pl"
-.text
-	.align ALIGN
-.globl des_ncbc_encrypt
-	TYPE(des_ncbc_encrypt,@function)
-des_ncbc_encrypt:
-
-	pushl	%ebp
-	pushl	%ebx
-	pushl	%esi
-	pushl	%edi
-	movl	28(%esp),	%ebp
-	/* getting iv ptr from parameter 4 */
-	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
-	/* getting encrypt flag from parameter 5 */
-	movl	56(%esp),	%ecx
-	/* get and push parameter 5 */
-	pushl	%ecx
-	/* get and push parameter 3 */
-	movl	52(%esp),	%eax
-	pushl	%eax
-	pushl	%ebx
-	cmpl	$0,		%ecx
-	jz	.L004decrypt
-	andl	$4294967288,	%ebp
-	movl	12(%esp),	%eax
-	movl	16(%esp),	%ebx
-	jz	.L005encrypt_finish
-.L006encrypt_loop:
-	movl	(%esi),		%ecx
-	movl	4(%esi),	%edx
-	xorl	%ecx,		%eax
-	xorl	%edx,		%ebx
-	movl	%eax,		12(%esp)
-	movl	%ebx,		16(%esp)
-	call	des_encrypt
-	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	.L006encrypt_loop
-.L005encrypt_finish:
-	movl	56(%esp),	%ebp
-	andl	$7,		%ebp
-	jz	.L007finish
-	xorl	%ecx,		%ecx
-	xorl	%edx,		%edx
-	movl	.L008cbc_enc_jmp_table(,%ebp,4),%ebp
-	jmp	*%ebp
-.L009ej7:
-	movb	6(%esi),	%dh
-	sall	$8,		%edx
-.L010ej6:
-	movb	5(%esi),	%dh
-.L011ej5:
-	movb	4(%esi),	%dl
-.L012ej4:
-	movl	(%esi),		%ecx
-	jmp	.L013ejend
-.L014ej3:
-	movb	2(%esi),	%ch
-	sall	$8,		%ecx
-.L015ej2:
-	movb	1(%esi),	%ch
-.L016ej1:
-	movb	(%esi),		%cl
-.L013ejend:
-	xorl	%ecx,		%eax
-	xorl	%edx,		%ebx
-	movl	%eax,		12(%esp)
-	movl	%ebx,		16(%esp)
-	call	des_encrypt
-	movl	12(%esp),	%eax
-	movl	16(%esp),	%ebx
-	movl	%eax,		(%edi)
-	movl	%ebx,		4(%edi)
-	jmp	.L007finish
-.align ALIGN
-.L004decrypt:
-	andl	$4294967288,	%ebp
-	movl	20(%esp),	%eax
-	movl	24(%esp),	%ebx
-	jz	.L017decrypt_finish
-.L018decrypt_loop:
-	movl	(%esi),		%eax
-	movl	4(%esi),	%ebx
-	movl	%eax,		12(%esp)
-	movl	%ebx,		16(%esp)
-	call	des_encrypt
-	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	.L018decrypt_loop
-.L017decrypt_finish:
-	movl	56(%esp),	%ebp
-	andl	$7,		%ebp
-	jz	.L007finish
-	movl	(%esi),		%eax
-	movl	4(%esi),	%ebx
-	movl	%eax,		12(%esp)
-	movl	%ebx,		16(%esp)
-	call	des_encrypt
-	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
-.L019dj7:
-	rorl	$16,		%edx
-	movb	%dl,		6(%edi)
-	shrl	$16,		%edx
-.L020dj6:
-	movb	%dh,		5(%edi)
-.L021dj5:
-	movb	%dl,		4(%edi)
-.L022dj4:
-	movl	%ecx,		(%edi)
-	jmp	.L023djend
-.L024dj3:
-	rorl	$16,		%ecx
-	movb	%cl,		2(%edi)
-	sall	$16,		%ecx
-.L025dj2:
-	movb	%ch,		1(%esi)
-.L026dj1:
-	movb	%cl,		(%esi)
-.L023djend:
-	jmp	.L007finish
-.align ALIGN
-.L007finish:
-	movl	64(%esp),	%ecx
-	addl	$28,		%esp
-	movl	%eax,		(%ecx)
-	movl	%ebx,		4(%ecx)
-	popl	%edi
-	popl	%esi
-	popl	%ebx
-	popl	%ebp
-	ret
-.align ALIGN
-.L008cbc_enc_jmp_table:
-	.long 0
-	.long .L016ej1
-	.long .L015ej2
-	.long .L014ej3
-	.long .L012ej4
-	.long .L011ej5
-	.long .L010ej6
-	.long .L009ej7
-.align ALIGN
-.L027cbc_dec_jmp_table:
-	.long 0
-	.long .L026dj1
-	.long .L025dj2
-	.long .L024dj3
-	.long .L022dj4
-	.long .L021dj5
-	.long .L020dj6
-	.long .L019dj7
-.des_ncbc_encrypt_end:
-	SIZE(des_ncbc_encrypt,.des_ncbc_encrypt_end-des_ncbc_encrypt)
-.ident	"desasm.pl"
-.text
-	.align ALIGN
-.globl des_ede3_cbc_encrypt
-	TYPE(des_ede3_cbc_encrypt,@function)
-des_ede3_cbc_encrypt:
-
-	pushl	%ebp
-	pushl	%ebx
-	pushl	%esi
-	pushl	%edi
-	movl	28(%esp),	%ebp
-	/* getting iv ptr from parameter 6 */
-	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
-	/* getting encrypt flag from parameter 7 */
-	movl	64(%esp),	%ecx
-	/* get and push parameter 5 */
-	movl	56(%esp),	%eax
-	pushl	%eax
-	/* get and push parameter 4 */
-	movl	56(%esp),	%eax
-	pushl	%eax
-	/* get and push parameter 3 */
-	movl	56(%esp),	%eax
-	pushl	%eax
-	pushl	%ebx
-	cmpl	$0,		%ecx
-	jz	.L028decrypt
-	andl	$4294967288,	%ebp
-	movl	16(%esp),	%eax
-	movl	20(%esp),	%ebx
-	jz	.L029encrypt_finish
-.L030encrypt_loop:
-	movl	(%esi),		%ecx
-	movl	4(%esi),	%edx
-	xorl	%ecx,		%eax
-	xorl	%edx,		%ebx
-	movl	%eax,		16(%esp)
-	movl	%ebx,		20(%esp)
-	call	des_encrypt3
-	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	.L030encrypt_loop
-.L029encrypt_finish:
-	movl	60(%esp),	%ebp
-	andl	$7,		%ebp
-	jz	.L031finish
-	xorl	%ecx,		%ecx
-	xorl	%edx,		%edx
-	movl	.L032cbc_enc_jmp_table(,%ebp,4),%ebp
-	jmp	*%ebp
-.L033ej7:
-	movb	6(%esi),	%dh
-	sall	$8,		%edx
-.L034ej6:
-	movb	5(%esi),	%dh
-.L035ej5:
-	movb	4(%esi),	%dl
-.L036ej4:
-	movl	(%esi),		%ecx
-	jmp	.L037ejend
-.L038ej3:
-	movb	2(%esi),	%ch
-	sall	$8,		%ecx
-.L039ej2:
-	movb	1(%esi),	%ch
-.L040ej1:
-	movb	(%esi),		%cl
-.L037ejend:
-	xorl	%ecx,		%eax
-	xorl	%edx,		%ebx
-	movl	%eax,		16(%esp)
-	movl	%ebx,		20(%esp)
-	call	des_encrypt3
-	movl	16(%esp),	%eax
-	movl	20(%esp),	%ebx
-	movl	%eax,		(%edi)
-	movl	%ebx,		4(%edi)
-	jmp	.L031finish
-.align ALIGN
-.L028decrypt:
-	andl	$4294967288,	%ebp
-	movl	24(%esp),	%eax
-	movl	28(%esp),	%ebx
-	jz	.L041decrypt_finish
-.L042decrypt_loop:
-	movl	(%esi),		%eax
-	movl	4(%esi),	%ebx
-	movl	%eax,		16(%esp)
-	movl	%ebx,		20(%esp)
-	call	des_decrypt3
-	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	.L042decrypt_loop
-.L041decrypt_finish:
-	movl	60(%esp),	%ebp
-	andl	$7,		%ebp
-	jz	.L031finish
-	movl	(%esi),		%eax
-	movl	4(%esi),	%ebx
-	movl	%eax,		16(%esp)
-	movl	%ebx,		20(%esp)
-	call	des_decrypt3
-	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
-.L043dj7:
-	rorl	$16,		%edx
-	movb	%dl,		6(%edi)
-	shrl	$16,		%edx
-.L044dj6:
-	movb	%dh,		5(%edi)
-.L045dj5:
-	movb	%dl,		4(%edi)
-.L046dj4:
-	movl	%ecx,		(%edi)
-	jmp	.L047djend
-.L048dj3:
-	rorl	$16,		%ecx
-	movb	%cl,		2(%edi)
-	sall	$16,		%ecx
-.L049dj2:
-	movb	%ch,		1(%esi)
-.L050dj1:
-	movb	%cl,		(%esi)
-.L047djend:
-	jmp	.L031finish
-.align ALIGN
-.L031finish:
-	movl	76(%esp),	%ecx
-	addl	$32,		%esp
-	movl	%eax,		(%ecx)
-	movl	%ebx,		4(%ecx)
-	popl	%edi
-	popl	%esi
-	popl	%ebx
-	popl	%ebp
-	ret
-.align ALIGN
-.L032cbc_enc_jmp_table:
-	.long 0
-	.long .L040ej1
-	.long .L039ej2
-	.long .L038ej3
-	.long .L036ej4
-	.long .L035ej5
-	.long .L034ej6
-	.long .L033ej7
-.align ALIGN
-.L051cbc_dec_jmp_table:
-	.long 0
-	.long .L050dj1
-	.long .L049dj2
-	.long .L048dj3
-	.long .L046dj4
-	.long .L045dj5
-	.long .L044dj6
-	.long .L043dj7
-.des_ede3_cbc_encrypt_end:
-	SIZE(des_ede3_cbc_encrypt,.des_ede3_cbc_encrypt_end-des_ede3_cbc_encrypt)
-.ident	"desasm.pl"


database: lister: add a filtering option

Add a possibility to pass a filter functor receiving a full path
to a directory entry and returning a boolean value: TRUE if an
entry should be enumerated and FALSE - if it should be filtered out.

Signed-off-by: Vlad Zolotarov <976c0f8d0852ed6439ad273880b400a75a7c41d0@cloudius-systems.com>
Message-Id: <1451911734-26511-2-git-send-email-976c0f8d0852ed6439ad273880b400a75a7c41d0@cloudius-systems.com>

--- database.cc
+++ database.cc
@@ -358,23 +358,32 @@
 class lister {
 public:
     using dir_entry_types = std::unordered_set<directory_entry_type, enum_hash<directory_entry_type>>;
+    using walker_type = std::function<future<> (directory_entry)>;
+    using filter_type = std::function<bool (const sstring&)>;
 private:
     file _f;
-    std::function<future<> (directory_entry de)> _walker;
+    walker_type _walker;
+    filter_type _filter;
     dir_entry_types _expected_type;
     subscription<directory_entry> _listing;
     sstring _dirname;

 public:
-    lister(file f, dir_entry_types type, std::function<future<> (directory_entry)> walker, sstring dirname)
+    lister(file f, dir_entry_types type, walker_type walker, sstring dirname)
             : _f(std::move(f))
             , _walker(std::move(walker))
+            , _filter([] (const sstring& fname) { return true; })
             , _expected_type(type)
             , _listing(_f.list_directory([this] (directory_entry de) { return _visit(de); }))
             , _dirname(dirname) {
     }

-    static future<> scan_dir(sstring name, dir_entry_types type, std::function<future<> (directory_entry)> walker);
+    lister(file f, dir_entry_types type, walker_type walker, filter_type filter, sstring dirname)
+            : lister(std::move(f), type, std::move(walker), dirname) {
+        _filter = std::move(filter);
+    }
+
+    static future<> scan_dir(sstring name, dir_entry_types type, walker_type walker, filter_type filter = [] (const sstring& fname) { return true; });
 protected:
     future<> _visit(directory_entry de) {

@@ -383,6 +392,12 @@
             if ((!_expected_type.count(*(de.type))) || (de.name[0] == '.')) {
                 return make_ready_future<>();
             }
+
+            // apply a filter
+            if (!_filter(_dirname + "/" + de.name)) {
+                return make_ready_future<>();
+            }
+
             return _walker(de);
         });

@@ -403,9 +418,9 @@
 };

-future<> lister::scan_dir(sstring name, lister::dir_entry_types type, std::function<future<> (directory_entry)> walker) {
-    return engine().open_directory(name).then([type, walker = std::move(walker), name] (file f) {
-        auto l = make_lw_shared<lister>(std::move(f), type, walker, name);
+future<> lister::scan_dir(sstring name, lister::dir_entry_types type, walker_type walker, filter_type filter) {
+    return engine().open_directory(name).then([type, walker = std::move(walker), filter = std::move(filter), name] (file f) {
+        auto l = make_lw_shared<lister>(std::move(f), type, walker, filter, name);
         return l->done().then([l] { });
     });
 }


fuzzer: Call fuzz_add_mime_part() when parsing TLV

fuzz_add_mime_part() was not being called when MIME TLVs were being
parsed. Fix this.

Fixes #8

--- curl_fuzzer.cc
+++ curl_fuzzer.cc
@@ -478,6 +478,9 @@
       }

       fuzz->part = curl_mime_addpart(fuzz->mime);
+
+      /* This TLV may have sub TLVs. */
+      fuzz_add_mime_part(tlv, fuzz->part);
       break;

     /* Define a set of u32 options. */
@@ -767,4 +770,4 @@
   }

   return(rc);
-}+}


workaround qCompilerAndStdLib_constexpr_StaticDataMember_Buggy for SmallStackBuffer<> guard template

--- Library/Sources/Stroika/Foundation/Memory/SmallStackBuffer.inl
+++ Library/Sources/Stroika/Foundation/Memory/SmallStackBuffer.inl
@@ -181,6 +181,11 @@
             constexpr   Byte    SmallStackBuffer<T, BUF_SIZE>::kGuard1_[8]  =   { 0x45, 0x23, 0x12, 0x56, 0x99, 0x76, 0x12, 0x55, };
             template    <typename   T, size_t BUF_SIZE>
             constexpr   Byte    SmallStackBuffer<T, BUF_SIZE>::kGuard2_[8]  =   { 0x15, 0x32, 0xa5, 0x16, 0x15, 0x7a, 0x90, 0x10, };
+#elif   qCompilerAndStdLib_constexpr_StaticDataMember_Buggy
+            template    <typename   T, size_t BUF_SIZE>
+            constexpr   Byte    SmallStackBuffer<T, BUF_SIZE>::kGuard1_[8];
+            template    <typename   T, size_t BUF_SIZE>
+            constexpr   Byte    SmallStackBuffer<T, BUF_SIZE>::kGuard2_[8];
 #endif
             template    <typename   T, size_t BUF_SIZE>
             void    SmallStackBuffer<T, BUF_SIZE>::ValidateGuards_ ()


- no problem to use it as QMessageBox::Critical in windows, so i changed it to use it instead

--- qtOgitor/src/shortcuts.cpp
+++ qtOgitor/src/shortcuts.cpp
@@ -49,7 +49,7 @@
        msgBox.setText("Some function wanted the instance of the\nShortcuts class what is nonexistent at the moment.\nThis is probably a bug.");
        msgBox.setWindowTitle("Shortcut instance not found!");
 #if OGRE_PLATFORM != OGRE_PLATFORM_LINUX
-       msgBox.setIcon(QMessageBox::Icon::Critical);
+       msgBox.setIcon(QMessageBox::Critical);
 #endif
        msgBox.exec();
     }


fixed builtin package name

fixed builtin package name

git-svn-id: 731cf940be17b05b95996f49c490bc05776e55d7@130 ea8d5007-eb21-0410-b261-ccb3ea6e24a9

--- generator/setupgenerator.cpp
+++ generator/setupgenerator.cpp
@@ -126,7 +126,7 @@
       s << "void PythonQt_init_" << shortPackName << "() {" << endl;

       if (shortPackName.endsWith("Builtin")) {
-        shortPackName = shortPackName.mid(shortPackName.length()-strlen("builtin"));
+        shortPackName = shortPackName.mid(0, shortPackName.length()-strlen("builtin"));
       }

       QStringList cppClassNames;


address review comments

address review comments

--- tensorflow/core/grappler/costs/op_level_cost_estimator.cc
+++ tensorflow/core/grappler/costs/op_level_cost_estimator.cc
@@ -623,7 +623,7 @@
   // Only check equality when both sizes are known (in other words, when
   // neither is set to a minimum dimension size of 1).
   if (iz != 1 && kz != 1) {
-    CHECK(iz % kz == 0) << "Input channel " << iz << " is not a multiple of filter channel " << kz << ".";
+    CHECK_EQ(iz % kz, 0) << "Input channel " << iz << " is not a multiple of filter channel " << kz << ".";
   } else {
     iz = std::max<int64>(iz, filter_shape.dim(in_channel_index).size());
   }
@@ -1434,7 +1434,7 @@
   int64 oz = iz;

   OpLevelCostEstimator::ConvolutionDimensions conv_dims = {
-      batch, ix, iy, iz, kx, ky, oz, ox, oy, sx, sy, padding};
+      batch, ix, iy, iz, kx, ky, kz, oz, ox, oy, sx, sy, padding};
   return conv_dims;
 }


Class documentation added

Class documentation added

git-svn-id: acec3fd5b7ea1eb9e79d6329d318e8118ee2e14f@38196 27541ba8-7e3a-0410-8455-c3a389f83636

--- geom/geom/src/TGeoMedium.cxx
+++ geom/geom/src/TGeoMedium.cxx
@@ -10,9 +10,16 @@
  *************************************************************************/

 ////////////////////////////////////////////////////////////////////////////////
-// Full description with examples and pictures
-//
-//
+// Media are used to store properties related to tracking and which are useful
+// only when using geometry with a particle transport MC package (via VMC). One
+// may define several tracking media for a given material. The media ID are user
+// defined values that are not used by the geometry package. In case geometry
+// is used via VMC (in GEANT) these numbers are overwritten, so one can only
+// rely on these values after gMC->FinishGeometry() is called.
+// The media parameters are inspired from GEANT3 and the values defined make sense
+// in context of GEANT (3 but also 4) or FLUKA interfaces.
+////////////////////////////////////////////////////////////////////////////////
+
 #include "Riostream.h"
 #include "TGeoManager.h"
 #include "TGeoMedium.h"


Removed wrong RSI comment.

Removed wrong RSI comment.

--- src/rdb_protocol/store.cc
+++ src/rdb_protocol/store.cc
@@ -132,8 +132,6 @@
             rassert(rget.optargs.size() != 0);
         }

-        // RSI: This looks like a contendor for uselessly early env construction,
-        // maybe it's used in sindex function eval.
         ql::env_t ql_env(ctx, interruptor, rget.optargs, trace,
                          cluster_version_t::LATEST_DISK);


Added a TODO note

Added a TODO note

--- tests/Replication2/ReplicatedLog/LogFollowerCompactionTest.cpp
+++ tests/Replication2/ReplicatedLog/LogFollowerCompactionTest.cpp
@@ -77,3 +77,9 @@
   ASSERT_EQ(firstUncompactedIdx, compactedLog.getFirstIndex());
   ASSERT_EQ(latestIdx, compactedLog.getLastIndex());
 }
+
+// TODO Add a test that runs a `checkCompaction` during an appendEntries,
+//      specifically after core->insertAsync is called (and the new InMemoryLog
+//      is created), and before the new InMemoryLog is applied.
+//      We probably need another Mock for the PersistedLog, so we can control
+//      when the core->insertAsync promise will be resolved.


[tf.data] Remove unnecessary BackgroundWorker from MultiDeviceIteratorGetNextFromShardOp.

The underlying MultiDeviceIterator::GetNextFromShard() method is non-blocking, so we can call it directly from the inter-op threadpool thread. This can save O(num_devices * num_iterators) threads from each process that uses a MultiDeviceIterator, and would prevent unnecessary serialization in the case that the GetNextFromShard op is shared between multiple callers (e.g. under Eager mode's kernel cache).

PiperOrigin-RevId: 236649650

--- tensorflow/core/kernels/data/multi_device_iterator_ops.cc
+++ tensorflow/core/kernels/data/multi_device_iterator_ops.cc
@@ -529,9 +529,7 @@
 class MultiDeviceIteratorGetNextFromShardOp : public AsyncOpKernel {
  public:
   explicit MultiDeviceIteratorGetNextFromShardOp(OpKernelConstruction* ctx)
-      : AsyncOpKernel(ctx),
-        background_worker_(ctx->env(),
-                           "tf_data_multi_device_iterator_get_next") {}
+      : AsyncOpKernel(ctx) {}

   void ComputeAsync(OpKernelContext* ctx, DoneCallback done) override {
     const Tensor* tensor_shard_num;
@@ -546,34 +544,27 @@
     MultiDeviceIterator* iterator;
     OP_REQUIRES_OK_ASYNC(
         ctx, LookupResource(ctx, HandleFromInput(ctx, 0), &iterator), done);
-    background_worker_.Schedule(std::bind(
-        [ctx, iterator, shard_num, incarnation_id](DoneCallback done) {
-          MultiDeviceIteratorCallback callback = std::bind(
-              [ctx](const HostBufferElement& elem, DoneCallback done) {
-                // iterator->Unref();
-                Status s = elem.status;
-                if (!s.ok()) {
-                  ctx->SetStatus(s);
-                } else if (elem.end_of_sequence) {
-                  ctx->SetStatus(errors::OutOfRange("End of sequence"));
-                } else {
-                  for (int i = 0; i < elem.value.size(); ++i) {
-                    ctx->set_output(i, elem.value[i]);
-                  }
-                }
-                done();
-              },
-              std::placeholders::_1, std::move(done));
-
-          iterator->GetNextFromShard(ctx, shard_num, incarnation_id,
-                                     std::move(callback));
-          iterator->Unref();
+
+    MultiDeviceIteratorCallback callback = std::bind(
+        [ctx](const HostBufferElement& elem, DoneCallback done) {
+          // iterator->Unref();
+          Status s = elem.status;
+          if (!s.ok()) {
+            ctx->SetStatus(s);
+          } else if (elem.end_of_sequence) {
+            ctx->SetStatus(errors::OutOfRange("End of sequence"));
+          } else {
+            for (int i = 0; i < elem.value.size(); ++i) {
+              ctx->set_output(i, elem.value[i]);
+            }
+          }
+          done();
         },
-        std::move(done)));
-  }
-
- private:
-  BackgroundWorker background_worker_;
+        std::placeholders::_1, std::move(done));
+
+    iterator->GetNextFromShard(ctx, shard_num, incarnation_id, callback);
+    iterator->Unref();
+  }
 };

 REGISTER_KERNEL_BUILDER(


Fixed broken comment in TGeoVolume.cxx preventing displaying correctly the reference guide

(cherry picked from commit 329eedd11a2c688f01857dbcf39f6b6094d21f7c)

--- geom/geom/src/TGeoVolume.cxx
+++ geom/geom/src/TGeoVolume.cxx
@@ -167,7 +167,7 @@
 // One needs to know that navigation inside geometry parts MANY nodes is much
 // slower. Any overlapping part can be defined based on composite shapes - this
 // is always recommended.
-
+//
 //   Replicating volumes
 // -----------------------
 //


minor bugfix.

minor bugfix.

--- src/rdmc/verbs_helper.cpp
+++ src/rdmc/verbs_helper.cpp
@@ -282,7 +282,7 @@
     local_config.dev_name = strdup(derecho::getConfString(CONF_RDMA_DOMAIN).c_str());
     fprintf(stdout, "found %d device(s)\n", num_devices);
     /* search for the specific device we want to work with */
-    for(i = 1; i < num_devices; i++) {
+    for(i = 0; i < num_devices; i++) {
         if(!local_config.dev_name) {
             local_config.dev_name = strdup(ibv_get_device_name(dev_list[i]));
             fprintf(stdout, "device not specified, using first one found: %s\n",


[tflite] fix allow fp16 in_tflite benchmark model

interpreter_->SetAllowFp16PrecisionForFp32() should be called
before setting delegate

--- tensorflow/lite/tools/benchmark/benchmark_tflite_model.cc
+++ tensorflow/lite/tools/benchmark/benchmark_tflite_model.cc
@@ -428,6 +428,7 @@
   }

   interpreter_->UseNNAPI(params_.Get<bool>("use_legacy_nnapi"));
+  interpreter_->SetAllowFp16PrecisionForFp32(params_.Get<bool>("allow_fp16"));

   delegates_ = GetDelegates();
   for (const auto& delegate : delegates_) {
@@ -439,7 +440,6 @@
     }
   }

-  interpreter_->SetAllowFp16PrecisionForFp32(params_.Get<bool>("allow_fp16"));

   auto interpreter_inputs = interpreter_->inputs();


change bin size for TPC-FMD container with ptdff

--- PWGCF/Correlations/DPhi/AliAnalysisTaskSEpPbCorrelationsYS.cxx
+++ PWGCF/Correlations/DPhi/AliAnalysisTaskSEpPbCorrelationsYS.cxx
@@ -683,22 +683,22 @@
    fHist_V0Stat->GetXaxis()->SetBinLabel(13, "AP cut for K0s");
    fOutputList->Add(fHist_V0Stat);

-   fHistzvertex = new TH1F("fHistzvertex", ";VZ;count", 60, -15, 15);
+   fHistzvertex = new TH1F("fHistzvertex", ";VZ;count", 120, -15, 15);
    fOutputList->Add(fHistzvertex);

    Double_t fmaxcent;
    Int_t fncentbin=100;
       if(fCentType=="Manual"){
-     if(fcollisiontype=="PbPb"){
-       fmaxcent=3000;
-       fncentbin=1000;
-     }else{
-       fmaxcent=200;
-     }
+	if(fcollisiontype=="PbPb"){
+	  fmaxcent=3000;
+	  fncentbin=1000;
+	}else{
+	  fmaxcent=200;
+	}
    }else{
 	if (fcollisiontype.Contains("HMPP")) fmaxcent=1.;
 	else fmaxcent=100.;
-   }
+      }

    fHistCentrality = new TH1F("fHistCentrality", ";centrality;count", 100, 0, fmaxcent);
@@ -1301,7 +1301,8 @@
      fHistTriggerTrackMix->SetVarTitle(1,"eta");
      //    fHistTriggerTrackMix->SetVarTitle(2,"z vertex");
    }else if(fAnaMode=="TPCFMD" ||fAnaMode=="TPCFMDC"||fAnaMode=="ITSFMD" || fAnaMode=="ITSFMDC"){
-     Double_t binning_pt_lead_trig[5] = {0.2, 0.5, 1.0, 3.0, 8.0};
+     //     Double_t binning_pt_lead_trig[5] = {0.2, 0.5, 1.0, 3.0, 8.0};
+     Double_t binning_pt_lead_trig[] = {0.2, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5,3.0,4.0};

      const Int_t nEvtVarsFMD = 4;
      Int_t netabin;
@@ -1319,7 +1320,7 @@
      }
      */
      Int_t ntpcpt;
-     if(fptdiff) ntpcpt=4;
+     if(fptdiff) ntpcpt=8;
      else ntpcpt=1;
      const Int_t iEvtBinFMD[4] = {ntpcpt,ncentbin,10,netabin};
      Double_t binning_eta_tpcfmd[5]={-0.8,-0.4,-0.,0.4,0.8};
@@ -1518,8 +1519,8 @@
        ndetatpcfmd=33;
        nfmdbin=17;
      }
-
-     Double_t binning_pt_fmdtpc[5] = {0.2, 0.5, 1.0, 3.0, 8.0};
+     Double_t binning_pt_fmdtpc[] = {0.2, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5,3.0,4.0};
+     //     Double_t binning_pt_fmdtpc[5] = {0.2, 0.5, 1.0, 3.0, 8.0};
      /*
      Int_t ncentbin;
      if(fCentType=="Manual") {
@@ -1532,7 +1533,7 @@
      Int_t ntpcpt;
      Int_t nphibin=0;
      if(fptdiff){
-       ntpcpt=4;
+       ntpcpt=8;
        nphibin=36;
      }else{
        ntpcpt=1;
@@ -1541,9 +1542,15 @@
      //     const Int_t iTrackBin_tpcfmd[7]={ndetatpcfmd,1,nfmdbin,ncentbin,72,10,4};
      Int_t nCFStepstpcfmd=1;
      const Int_t iTrackBin_tpcfmd[7]={ndetatpcfmd,ntpcpt,nfmdbin,ncentbin,nphibin,10,4};
-     fHistReconstTrack = new AliTHn("fHistReconstTrack", "fHistReconstTrack", nCFStepstpcfmd, 7, iTrackBin_tpcfmd);
-     fHistReconstTrackMix= new AliTHn("fHistReconstTrackMix", "fHistReconstTrackMix", nCFStepstpcfmd, 7,iTrackBin_tpcfmd);
-     if(fAnaMode=="TPCFMD") {
+     const Int_t iTrackBin_tpcfmd_ptdiff[6]={ndetatpcfmd,ntpcpt,nfmdbin,ncentbin,nphibin,10};
+     if(!fptdiff){
+       fHistReconstTrack = new AliTHn("fHistReconstTrack", "fHistReconstTrack", nCFStepstpcfmd, 7, iTrackBin_tpcfmd);
+       fHistReconstTrackMix= new AliTHn("fHistReconstTrackMix", "fHistReconstTrackMix", nCFStepstpcfmd, 7,iTrackBin_tpcfmd);
+     }else{
+       fHistReconstTrack = new AliTHn("fHistReconstTrack", "fHistReconstTrack", nCFStepstpcfmd, 6, iTrackBin_tpcfmd_ptdiff);
+       fHistReconstTrackMix= new AliTHn("fHistReconstTrackMix", "fHistReconstTrackMix", nCFStepstpcfmd, 6,iTrackBin_tpcfmd_ptdiff);
+     }
+       if(fAnaMode=="TPCFMD") {
        fHistReconstTrack->SetBinLimits(0,binning_detaFMDTPC);
        fHistReconstTrack->SetBinLimits(2,binning_etafmd_tpcfmda);
        //Mixed Events
@@ -1573,17 +1580,18 @@

      if(fptdiff)fHistReconstTrack->SetBinLimits(4,binning_dphi_reduce);
      else fHistReconstTrack->SetBinLimits(4,binning_dphi);
+
      fHistReconstTrack->SetBinLimits(5,-10.,10.);
-     fHistReconstTrack->SetBinLimits(6,-0.8,0.8);
+     if(!fptdiff) fHistReconstTrack->SetBinLimits(6,-0.8,0.8);
      fHistReconstTrack->SetVarTitle(0,"#Delta#eta");
      fHistReconstTrack->SetVarTitle(1,"p_{T} GeV/c");
      fHistReconstTrack->SetVarTitle(2,"FMD Eta");
      fHistReconstTrack->SetVarTitle(3,"centrality");
      fHistReconstTrack->SetVarTitle(4,"#Delta#phi");
      fHistReconstTrack->SetVarTitle(5,"z vertex");
-     fHistReconstTrack->SetVarTitle(6,"TPC eta");
+     if(!fptdiff)fHistReconstTrack->SetVarTitle(6,"TPC eta");

-     if(fptdiff)     fHistReconstTrackMix->SetBinLimits(1,binning_pt_fmdtpc);
+     if(fptdiff) fHistReconstTrackMix->SetBinLimits(1,binning_pt_fmdtpc);
      else fHistReconstTrackMix->SetBinLimits(1,fPtMin,fPtMax);

      if(fCentType=="Manual"){
@@ -1601,14 +1609,14 @@
      if(fptdiff)fHistReconstTrackMix->SetBinLimits(4,binning_dphi_reduce);
      else fHistReconstTrackMix->SetBinLimits(4,binning_dphi);
      fHistReconstTrackMix->SetBinLimits(5,-10.,10.);
-     fHistReconstTrackMix->SetBinLimits(6,-0.8,0.8);
+     if(!fptdiff) fHistReconstTrackMix->SetBinLimits(6,-0.8,0.8);
      fHistReconstTrackMix->SetVarTitle(0,"#Delta#eta");
      fHistReconstTrackMix->SetVarTitle(1,"p_{T} GeV/c");
      fHistReconstTrackMix->SetVarTitle(2,"FMD Eta");
      fHistReconstTrackMix->SetVarTitle(3,"centrality");
      fHistReconstTrackMix->SetVarTitle(4,"#Delta#phi");
      fHistReconstTrackMix->SetVarTitle(5,"z vertex");
-     fHistReconstTrackMix->SetVarTitle(6,"TPC eta");
+     if(!fptdiff)fHistReconstTrackMix->SetVarTitle(6,"TPC eta");

    }else if(fAnaMode=="FMDFMD" ||fAnaMode=="FMDFMD_Ctrig"){
      const Int_t nTrackVars_fmdfmd = 6;
@@ -1832,6 +1840,7 @@
 	   fHistReconstTrackMix->SetVarTitle(4,"z vertex");
 	   fHistReconstTrackMix->SetVarTitle(5,"ITS Eta");
    }
+
    fOutputList1->Add(fHistReconstTrack);
    fOutputList1->Add(fHistReconstTrackMix);

@@ -1969,29 +1978,38 @@
 void AliAnalysisTaskSEpPbCorrelationsYS::UserExec(Option_t *) {

   DumpTObjTable("Start analysis");
-   AliAnalysisManager *mgr        = AliAnalysisManager::GetAnalysisManager();
-   AliInputEventHandler *inEvMain = (AliInputEventHandler *)(mgr->GetInputEventHandler());
-   if (!inEvMain)    return;
-
-   if(fasso!="hadron"){
+  AliAnalysisManager *mgr        = AliAnalysisManager::GetAnalysisManager();
+  AliInputEventHandler *inEvMain = (AliInputEventHandler *)(mgr->GetInputEventHandler());
+  if (!inEvMain)    return;
+
+
+  if(fasso!="hadron"){
      fPIDResponse = inEvMain->GetPIDResponse();
      if (!fPIDResponse)    return;
-   }
-
-   if(!fDataType){
-     AliMCEventHandler* mctruth = (AliMCEventHandler*)(mgr->GetMCtruthEventHandler());
-     if(!mctruth)       return;
-     mcEvent=mctruth->MCEvent();//AliMCEvent
-   }
-
-   fEvent = dynamic_cast<AliAODEvent *>(inEvMain->GetEvent());
-   if (!fEvent) {
-     AliWarning("ERROR: fEvent not available \n");
-     return;
-   }
-
-   fHist_Stat->Fill(0);
+  }
+
+  fEvent = dynamic_cast<AliAODEvent *>(inEvMain->GetEvent());
+  if (!fEvent) {
+    AliWarning("ERROR: fEvent not available \n");
+    return;
+  }
+
+  fHist_Stat->Fill(0);
+  if(fcollisiontype=="HMPPV0") fEventCuts.OverrideAutomaticTriggerSelection(AliVEvent::kHighMultV0,true);
+  if(fcollisiontype=="HMPPSPD") fEventCuts.OverrideAutomaticTriggerSelection(AliVEvent::kHighMultSPD,true);
+
+  if (!fEventCuts.AcceptEvent(fEvent)) {
+    PostData(1, fOutputList);
+    PostData(2, fOutputList1);
+    PostData(3, fOutputList2);
+    return;
+  }
+
+
+
+   /*
    if(fcollisiontype=="pPb" || fcollisiontype=="PP"|| fcollisiontype=="PbPb"){
+
      if (!fEventCuts.AcceptEvent(fEvent)) {
        PostData(1, fOutputList);
        PostData(2, fOutputList1);
@@ -2028,7 +2046,9 @@
        PostData(3, fOutputList2);
        return;
      }
-   }     /*else if(fcollisiontype=="PbPb"){
+   }
+   */
+    /*else if(fcollisiontype=="PbPb"){

      //same way as Freja
      // Get the event validation object
@@ -4192,6 +4212,7 @@
   }else if (fAnaMode=="TPCV0A" || fAnaMode=="TPCV0C" || fAnaMode=="TPCFMD" || fAnaMode=="TPCFMDC"){
     Double_t binscontTrig[4];
     Double_t binscont[7];
+    Double_t binscont_ptdiff[6];
     for(Int_t i=0;i<triggerArray->GetEntriesFast();i++){
       AliAssociatedTrackYS* trigger = (AliAssociatedTrackYS*) triggerArray->At(i);
       if(!trigger)continue;
@@ -4212,15 +4233,26 @@
         Float_t associatemultiplicity=associate->Multiplicity();
         Float_t assophi=associate->Phi();
         Float_t assoeta=associate->Eta();
-        binscont[0]=triggerEta-associate->Eta();
-        binscont[1]=triggerPt;
-        binscont[2]=associate->Eta();
-        binscont[3]=centrality;
-        binscont[4]=RangePhi(triggerPhi-associate->Phi());
-        binscont[5]=fPrimaryZVtx;
-	binscont[6]=triggerEta;
+	if(!fptdiff){
+	  binscont[0]=triggerEta-associate->Eta();
+	  binscont[1]=triggerPt;
+	  binscont[2]=associate->Eta();
+	  binscont[3]=centrality;
+	  binscont[4]=RangePhi(triggerPhi-associate->Phi());
+	  binscont[5]=fPrimaryZVtx;
+	  binscont[6]=triggerEta;
+	}else{
+	  binscont_ptdiff[0]=triggerEta-associate->Eta();
+	  binscont_ptdiff[1]=triggerPt;
+	  binscont_ptdiff[2]=associate->Eta();
+	  binscont_ptdiff[3]=centrality;
+	  binscont_ptdiff[4]=RangePhi(triggerPhi-associate->Phi());
+	  binscont_ptdiff[5]=fPrimaryZVtx;
+	}
+
 	//	associateHist->Fill(binscont, 0, (Double_t)associate->Multiplicity()/efficienc);
-	associateHist->Fill(binscont, 0, (Double_t)associate->Multiplicity()*triggermultiplicity);
+	if(!fptdiff)associateHist->Fill(binscont, 0, (Double_t)associate->Multiplicity()*triggermultiplicity);
+	else associateHist->Fill(binscont_ptdiff, 0, (Double_t)associate->Multiplicity()*triggermultiplicity);

       }
     }
@@ -4434,6 +4466,7 @@
       }else if(fAnaMode=="TPCV0A" || fAnaMode=="TPCV0C" || fAnaMode=="TPCFMD" || fAnaMode=="TPCFMDC"){
         Double_t binscontTrig[2];
 	Double_t binscont[7];
+	Double_t binscont_ptdiff[6];
 	//Double_t binscont[6];
         for(Int_t i=0;i<triggerArray->GetEntriesFast();i++){
           AliAssociatedTrackYS* trigger =(AliAssociatedTrackYS*) triggerArray->At(i);
@@ -4461,22 +4494,25 @@
           for (Int_t j=0; j<mixEvents->GetEntriesFast(); j++){
             AliAssociatedTrackYS* associate=(AliAssociatedTrackYS*)  mixEvents->At(j);

-            if(!associate)continue;
-            binscont[0]=triggerEta-associate->Eta();
-            binscont[1]=triggerPt;
-            binscont[2]=associate->Eta();
-            binscont[3]=centrality;
-            binscont[4]=RangePhi(triggerPhi-associate->Phi());
-            binscont[5]=pvxMix;
-	    binscont[6]=triggerEta;
-	    /*
-	    Int_t nstep=999;
-	    if(triggerEta<-0.4) nstep=0;
-	    else if(triggerEta>-0.4 && triggerEta<0) nstep=1;
-	    else if(triggerEta>0 && triggerEta<0.4) nstep=2;
-	    else if(triggerEta>0.4 && triggerEta<0.8) nstep=3;
-	    */
-	    associateHist->Fill(binscont, 0,(Double_t)associate->Multiplicity()*triggermultiplicity/(Double_t)nMix);
+            if(!associate)continue;
+	    if(!fptdiff){
+	      binscont[0]=triggerEta-associate->Eta();
+	      binscont[1]=triggerPt;
+	      binscont[2]=associate->Eta();
+	      binscont[3]=centrality;
+	      binscont[4]=RangePhi(triggerPhi-associate->Phi());
+	      binscont[5]=pvxMix;
+	      binscont[6]=triggerEta;
+	    }else{
+	      binscont_ptdiff[0]=triggerEta-associate->Eta();
+	      binscont_ptdiff[1]=triggerPt;
+	      binscont_ptdiff[2]=associate->Eta();
+	      binscont_ptdiff[3]=centrality;
+	      binscont_ptdiff[4]=RangePhi(triggerPhi-associate->Phi());
+	      binscont_ptdiff[5]=pvxMix;
+	    }
+	    if(!fptdiff)associateHist->Fill(binscont, 0,(Double_t)associate->Multiplicity()*triggermultiplicity/(Double_t)nMix);
+	    else associateHist->Fill(binscont_ptdiff, 0,(Double_t)associate->Multiplicity()*triggermultiplicity/(Double_t)nMix);

           }
         }


PWGCF: AliFemtoV0PurityBgdEstimator:  Recentered the primary vertex of the events to {0,0,0}, and thus also recentered the helices about that new vertex.  This has no effect in the same event case, but is important in the mixed event case.

--- PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoV0PurityBgdEstimator.cxx
+++ PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoV0PurityBgdEstimator.cxx
@@ -248,8 +248,13 @@

   //When the helix was built, it assumed that particles come directly from event vertex
   //This is not useful for me, so I build new ones with more correct (hopefully) origins
-  const AliFmThreeVector<double> tOriginPos(tTrackPos->XatDCA(), tTrackPos->YatDCA(), tTrackPos->ZatDCA());
-  const AliFmThreeVector<double> tOriginNeg(tTrackNeg->XatDCA(), tTrackNeg->YatDCA(), tTrackNeg->ZatDCA());
+  //Also, define relative to event vertex, this is necessary in the mixed event case
+  const AliFmThreeVector<double> tOriginPos(tTrackPos->XatDCA()-tHelixPosOG.Origin().x(),
+                                            tTrackPos->YatDCA()-tHelixPosOG.Origin().y(),
+                                            tTrackPos->ZatDCA()-tHelixPosOG.Origin().z());
+  const AliFmThreeVector<double> tOriginNeg(tTrackNeg->XatDCA()-tHelixNegOG.Origin().x(),
+                                            tTrackNeg->YatDCA()-tHelixNegOG.Origin().y(),
+                                            tTrackNeg->ZatDCA()-tHelixNegOG.Origin().z());

   const AliFmPhysicalHelixD tHelixPos(tHelixPosOG.Curvature(), tHelixPosOG.DipAngle(), tHelixPosOG.Phase(), tOriginPos, tHelixPosOG.H());
   const AliFmPhysicalHelixD tHelixNeg(tHelixNegOG.Curvature(), tHelixNegOG.DipAngle(), tHelixNegOG.Phase(), tOriginNeg, tHelixNegOG.H());
@@ -301,11 +306,17 @@
     delete tTmpTrack;
   }

-  double tPrimVtx[3];
-  tTrackPos->GetPrimaryVertex(tPrimVtx);
-  fFemtoV0->SetprimaryVertex(AliFemtoThreeVector(tPrimVtx));
-
   UseCorrectedDaughterHelices(tTrackPos,tTrackNeg);
+
+  //Due to relative shift above in UseCorrectedDaughterHelices, use the primary vertex = {0,0,0} in
+  //decay length etc. calculations below.
+  //  However, still call AliFemtoV0::SetPrimaryVertex to set primary vertex to actual value,
+  //  as, for now, the position of the event primary vertex is how we distinguish events in IsSameEvent function
+
+  double tEventPrimVtx[3];
+  tTrackPos->GetPrimaryVertex(tEventPrimVtx);
+  fFemtoV0->SetprimaryVertex(AliFemtoThreeVector(tEventPrimVtx));
+  double tPrimVtx[3] = {0., 0., 0.};

   double tDecayLengthV0 = (fFemtoV0->DecayVertexV0X()-tPrimVtx[0])*(fFemtoV0->DecayVertexV0X()-tPrimVtx[0]) +
                           (fFemtoV0->DecayVertexV0Y()-tPrimVtx[1])*(fFemtoV0->DecayVertexV0Y()-tPrimVtx[1]) +


Fix ML selection in case of no ML selector

--- PWGHF/vertexingHF/vHFML/AliAnalysisTaskSEDstarPolarization.cxx
+++ PWGHF/vertexingHF/vHFML/AliAnalysisTaskSEDstarPolarization.cxx
@@ -719,12 +719,12 @@
             }
         }
         else {
-            if (isSelected == 1 || isSelected == 3) {
+            if ((fDecChannel == kD0toKpi && (isSelected == 1 || isSelected == 3)) || isSelected) {
                 if (!fMLResponse->IsSelectedMultiClass(modelPred, d, fAOD->GetMagneticField(), pidHF, 0))
                     isMLsel -= 1;
                 scores = modelPred;
             }
-            if (isSelected >= 2) {
+            if (fDecChannel == kD0toKpi && isSelected >= 2) {
                 if (!fMLResponse->IsSelectedMultiClass(modelPred, d, fAOD->GetMagneticField(), pidHF, 1))
                     isMLsel -= 2;
                 scoresSecond = modelPred;


Ticked and exceptioned items now should return their uid in the exception message.

--- 0.56.b/graysvr/CSector.cpp
+++ 0.56.b/graysvr/CSector.cpp
@@ -1091,14 +1091,28 @@
 				pItem->SetTimeout(-1);
 			}
 		}
+#ifdef _WIN32
 		EXC_CATCHSUB("Sector");

 		EXC_DEBUGSUB_START;
 		CPointMap pt = GetBasePoint();
-		g_Log.EventDebug("item 0%lx '%s' [timer=%d, type=%d]\n", pItem->GetUID(), pItem->GetName(), pItem->GetTimerAdjusted(), (int)pItem->GetType());
+		g_Log.EventError("item 0%lx '%s' [timer=%d, type=%d]\n", pItem->GetUID(), pItem->GetName(), pItem->GetTimerAdjusted(), (int)pItem->GetType());
 		g_Log.EventDebug("sector #%d [%d,%d,%d,%d]\n", GetIndex(),  pt.m_x, pt.m_y, pt.m_z, pt.m_map);

 		EXC_DEBUGSUB_END;
+#else
+		}
+		catch ( CGrayError &e )
+		{
+			g_Log.EventError("CGrayError: item 0%lx '%s' [timer=%d, type=%d]\n", pItem->GetUID(), pItem->GetName(), pItem->GetTimerAdjusted(), (int)pItem->GetType());
+			EXC_CATCH_SUB(&e, a);
+		}
+		catch (...)
+		{
+			g_Log.EventError("...: item 0%lx '%s' [timer=%d, type=%d]\n", pItem->GetUID(), pItem->GetName(), pItem->GetTimerAdjusted(), (int)pItem->GetType());
+			EXC_CATCH_SUB(NULL, a);
+		}
+#endif
 	}

 	g_Serv.m_Profile.Start( PROFILE_OVERHEAD );