diff --git a/sparc/aes.asm b/sparc/aes.asm
index f51444ff250f256c6dc9d2f4751e40db2e888b44..4be8f923fd64e6f2f12896540706cafa3e5f5315 100644
--- a/sparc/aes.asm
+++ b/sparc/aes.asm
@@ -15,7 +15,7 @@ include(`asm.m4')
 define(ctx, %i0)
 define(T, %i1)
 define(length, %i2)
-define(dst, %o3)
+define(dst, %i3)
 define(src, %o2)
 
 define(wtxt, %l2)
@@ -25,8 +25,7 @@ _aes_crypt:
 	save	%sp, -136, %sp
 
 ! Why this moving around of the input parameters?
-	! mov	%i2, length
-	mov	%i3, dst
+	!mov	%i3, dst
 	cmp	length, 0
 	be	.Lend
 	mov	%i4, src
@@ -74,15 +73,15 @@ _aes_crypt:
 	! or	%g3, %g2, %g2
 	! sll	%g2, 8, %g2
 	! 
-	! ld	[ctx+%i3], %g3
+	! ld	[ctx+%o3], %g3
 	! xor	%g3, %g2, %g2
 	! 
 	! add	src, 4, src
 	! st	%g2, [wtxt+%o4]
 	! 
-	! cmp	%i3, 8
+	! cmp	%o3, 8
 	! bleu	.Lsource_loop
-	! add	%i3, 4, %i3
+	! add	%o3, 4, %o3
 
 	ld	[ctx + AES_NROUNDS], %g2
 	mov	1, %g1
@@ -94,8 +93,8 @@ _aes_crypt:
 	! wtxt
 	mov	%l1, %g4
 
-	! 4*i:	%i3
-	mov	0, %i3
+	! 4*i:	%o3
+	mov	0, %o3
 .Lround_loop:
 	add	T, AES_SIDX3, %i4
 .Linner_loop:
@@ -113,7 +112,7 @@ _aes_crypt:
 	sll	%o0, 2, %o0
 	
 	! wtxt[j]
-	ld	[%g4+%i3], %o5
+	ld	[%g4+%o3], %o5
 	
 	! wtxt[IDX2...]
 	lduh	[%g4+%o4], %g3
@@ -142,17 +141,17 @@ _aes_crypt:
 	add	%i4, 4, %i4
 	
 	xor	%g2, %g3, %g2
-	st	%g2, [%l0+%i3]
+	st	%g2, [%l0+%o3]
 
-	cmp	%i3, 8
+	cmp	%o3, 8
 
 	bleu	.Linner_loop
-	add	%i3, 4, %i3
+	add	%o3, 4, %o3
 	
 	sll	%g1, 4, %g2
 	add	%g2, ctx, %o0
 	mov	0, %i5
-	mov	%l1, %i3
+	mov	%l1, %o3
 	mov	tmp, %o4
 .Lroundkey_loop:
 	sll	%i5, 2, %g2
@@ -161,13 +160,13 @@ _aes_crypt:
 	ld	[%o4+%g2], %g3
 	cmp	%i5, 3
 	xor	%g3, %o5, %g3
-	st	%g3, [%i3+%g2]
+	st	%g3, [%o3+%g2]
 	bleu	.Lroundkey_loop
 	add	%o0, 4, %o0
 	add	%g1, 1, %g1
 	cmp	%g1, %o7
 	blu	.Lround_loop
-	mov	0, %i3
+	mov	0, %o3
 
 	sll	%g1, 4, %g2
 	
@@ -181,7 +180,7 @@ _aes_crypt:
 	sll	%o1, 2, %i5
 	sll	%g2, 2, %g2
 	add	%g1, %g2, %g2
-	ldub	[%g2+2], %i3
+	ldub	[%g2+2], %o3
 	add	%i5, dst, %i4
 	ld	[%g4-16], %g3
 	add	%o1, 1, %o1
@@ -191,15 +190,15 @@ _aes_crypt:
 	and	%g2, 255, %g2
 	ld	[%g4], %o5
 	and	%o4, 255, %o4
-	ldub	[T+%i3], %o0
+	ldub	[T+%o3], %o0
 	sll	%o5, 2, %o5
 	ldub	[T+%g2], %g3
 	sll	%o0, 8, %o0
-	ldub	[%g1+%o5], %i3
+	ldub	[%g1+%o5], %o3
 	or	%g3, %o0, %g3
 	ldub	[T+%o4], %g2
 	cmp	%o1, 3
-	ldub	[T+%i3], %o5
+	ldub	[T+%o3], %o5
 	sll	%g2, 16, %g2
 	or	%g3, %g2, %g3
 	ld	[%o7], %g2