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...
This commit is contained in:
Andy Polyakov 2004-12-01 15:28:18 +00:00
parent 1862dae862
commit 7c69478064

View file

@ -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));