From 7c69478064ffc1a17d8b7f44d06f813fc0f257b8 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Wed, 1 Dec 2004 15:28:18 +0000 Subject: [PATCH] I've introduced a bug to i386 RC4 assembler, which would emerge with certain mix of calls to RC4 routine not covered by rc4test.c. It's fixed now. In addition this patch inadvertently fixes minor performance problem: in 0.9.7 context P4 was performing 12% slower than the original implementation... --- crypto/rc4/asm/rc4-586.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/rc4/asm/rc4-586.pl b/crypto/rc4/asm/rc4-586.pl index 07b2bc6fcd..d6e98f0811 100644 --- a/crypto/rc4/asm/rc4-586.pl +++ b/crypto/rc4/asm/rc4-586.pl @@ -68,13 +68,13 @@ sub RC4_loop # &mov( $tx, &DWP(0,$d,$x,4)) if $p < 0; &add( &LB($y), &LB($tx)); - &inc( &LB($x)); # NEXT ROUND &mov( $ty, &DWP(0,$d,$y,4)); # XXX - &mov( &DWP(-4,$d,$x,4),$ty); # AGI + &mov( &DWP(0,$d,$x,4),$ty); &add( $ty, $tx); &mov( &DWP(0,$d,$y,4),$tx); &and( $ty, 0xff); + &inc( &LB($x)); # NEXT ROUND &mov( $tx, &DWP(0,$d,$x,4)) if $p < 1; # NEXT ROUND &mov( $ty, &DWP(0,$d,$ty,4)); -- 2.34.1