diff --git a/sparc/aes.asm b/sparc/aes.asm
index d54f8d963e38ab1e25e5d0e4c41cef5e9b1d2885..8860acb039f31066831b6de4aa78265424c7909b 100644
--- a/sparc/aes.asm
+++ b/sparc/aes.asm
@@ -65,23 +65,47 @@ key_addition_8to32:
 	.type	key_addition32,#function
 	.proc	020
 key_addition32:
-	mov	%o0, %o4
+	! Use %g2 and %g3 as temporaries, %o3 as counter
 	mov	0, %o3
 .LL26:
-	sll	%o3, 2, %g2
-	ld	[%o1+%g2], %g3
+	! Get *txt++
+	ld	[%o0], %g2
+	add	%o0, 4, %o0
+	! Get *keys++
+	ld	[%o1], %g3
+	add	%o1, 4, %o1
+	xor	%g2, %g3, %g3
+	st	%g3, [%o2]
+	! Incrementing %o2 in the delay slot
 	add	%o3, 1, %o3
-	ld	[%o4+%g2], %o0
-	cmp	%o3, 3
-
-	xor	%g3, %o0, %g3
 
+	! FIXME:	 Unroll or inline?
+	cmp	%o3, 3
 	bleu	.LL26
-	st	%g3, [%o2+%g2]
-
+	add	%o2, 4, %o2
+	
 	retl
 	nop
-.LLFE2:
+
+! 	! And three more times
+! 	
+! 	mov	%o0, %o4
+! 	mov	0, %o3
+! .LL26:
+! 	sll	%o3, 2, %g2
+! 	ld	[%o1+%g2], %g3
+! 	add	%o3, 1, %o3
+! 	ld	[%o4+%g2], %o0
+! 	cmp	%o3, 3
+! 
+! 	xor	%g3, %o0, %g3
+! 
+! 	bleu	.LL26
+! 	st	%g3, [%o2+%g2]
+! 
+! 	retl
+! 	nop
+
 .LLfe2:
 	.size	key_addition32,.LLfe2-key_addition32
 	.align 4