Commit 7c694780 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

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...
parent 1862dae8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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));