diff --git a/sparc/aes.asm b/sparc/aes.asm
index 20dee610bd73009dc5ce7638ac2e359bd6a3c49a..f703cc8797e2ef22949aeacf12deff1d51ae2a8c 100644
--- a/sparc/aes.asm
+++ b/sparc/aes.asm
@@ -67,6 +67,14 @@ _aes_crypt:
 .Lblock_loop:
 	! Read src, and add initial subkey
 	mov	-4, i
+	! Read src, and add initial subkey
+	! mov	-4, i
+	! Difference between ctx and src
+	sub	ctx, src, %g2
+	! Difference between wtxt and src
+	sub	wtxt, src, %g3
+	! For stop condition
+	add	src, 12, %g4
 .Lsource_loop:
 	add	i, 4, i
 	
@@ -80,13 +88,15 @@ _aes_crypt:
 	
 	ldub	[src], t0
 	sll	t1, 8, t1
-	ld	[ctx+i], %g3
+	! Get subkey
+	ld	[ctx+i], t2
 	or	t3, t1, t3
 	
 	or	t3, t0, t3
-	xor	t3, %g3, t3
+	xor	t3, t2, t3
 	add	src, 4, src
-	cmp	i, 8
+	! cmp	i, 8
+	cmp	src, %g4
 	bleu	.Lsource_loop
 	
 	st	t3, [wtxt+i]