diff --git a/sparc/aes.asm b/sparc/aes.asm
index cd7523500a6b1697ff06d409539ad58624daab53..bc5ad0e9f9872933cf2559ecb50b96f77035ac1c 100644
--- a/sparc/aes.asm
+++ b/sparc/aes.asm
@@ -214,100 +214,103 @@ C 	xor	t0, t1, t0
 C 	st	t0, [tmp]
 
 	C i = 1
-	ld	[IDX1+4], t1		! 1
-	
-	ldub	[wtxt+t1], t1		! 1
-	ld	[IDX3+4], t3		! 3
-	
-	sll	t1, 2, t1		! 1
-	ld	[wtxt+4], t0		! 0
-	! IDX2(j) = j XOR 2
-	lduh	[wtxt+12], t2		! 2
-	and	t0, 255, t0		! 0
-	
-	ldub	[wtxt+t3], t3		! 3
-	sll	t0, 2, t0		! 0
-	ld	[T0+t0], t0		! 0
-	and	t2, 255, t2		! 2
-	
-	ld	[T1+t1], t1		! 1
-	sll	t2, 2, t2		! 2
-	ld	[T2+t2], t2		! 2
-	sll	t3, 2, t3		! 3
-	
-	ld	[T3+t3], t3		! 3
-	xor	t0, t1, t0		! 0, 1
-	xor	t0, t2, t0		! 0, 1, 2
-	! Fetch roundkey
-	ld	[key+4], t1
-	
-	xor	t0, t3, t0		! 0, 1, 2, 3
-	xor	t0, t1, t0
-	st	t0, [tmp+4]
+	AES_ROUND(4)
+C 	ld	[IDX1+4], t1		! 1
+C 	
+C 	ldub	[wtxt+t1], t1		! 1
+C 	ld	[IDX3+4], t3		! 3
+C 	
+C 	sll	t1, 2, t1		! 1
+C 	ld	[wtxt+4], t0		! 0
+C 	! IDX2(j) = j XOR 2
+C 	lduh	[wtxt+12], t2		! 2
+C 	and	t0, 255, t0		! 0
+C 	
+C 	ldub	[wtxt+t3], t3		! 3
+C 	sll	t0, 2, t0		! 0
+C 	ld	[T0+t0], t0		! 0
+C 	and	t2, 255, t2		! 2
+C 	
+C 	ld	[T1+t1], t1		! 1
+C 	sll	t2, 2, t2		! 2
+C 	ld	[T2+t2], t2		! 2
+C 	sll	t3, 2, t3		! 3
+C 	
+C 	ld	[T3+t3], t3		! 3
+C 	xor	t0, t1, t0		! 0, 1
+C 	xor	t0, t2, t0		! 0, 1, 2
+C 	! Fetch roundkey
+C 	ld	[key+4], t1
+C 	
+C 	xor	t0, t3, t0		! 0, 1, 2, 3
+C 	xor	t0, t1, t0
+C 	st	t0, [tmp+4]
 
 	C = 2
-	ld	[IDX1+8], t1		! 1
-	
-	ldub	[wtxt+t1], t1		! 1
-	ld	[IDX3+8], t3		! 3
-	
-	sll	t1, 2, t1		! 1
-	ld	[wtxt+8], t0		! 0
-	! IDX2(j) = j XOR 2
-	lduh	[wtxt], t2		! 2
-	and	t0, 255, t0		! 0
-	
-	ldub	[wtxt+t3], t3		! 3
-	sll	t0, 2, t0		! 0
-	ld	[T0+t0], t0		! 0
-	and	t2, 255, t2		! 2
-	
-	ld	[T1+t1], t1		! 1
-	sll	t2, 2, t2		! 2
-	ld	[T2+t2], t2		! 2
-	sll	t3, 2, t3		! 3
-	
-	ld	[T3+t3], t3		! 3
-	xor	t0, t1, t0		! 0, 1
-	xor	t0, t2, t0		! 0, 1, 2
-	! Fetch roundkey
-	ld	[key+8], t1
-	
-	xor	t0, t3, t0		! 0, 1, 2, 3
-	xor	t0, t1, t0
-	st	t0, [tmp+8]
+	AES_ROUND(8)
+C 	ld	[IDX1+8], t1		! 1
+C 	
+C 	ldub	[wtxt+t1], t1		! 1
+C 	ld	[IDX3+8], t3		! 3
+C 	
+C 	sll	t1, 2, t1		! 1
+C 	ld	[wtxt+8], t0		! 0
+C 	! IDX2(j) = j XOR 2
+C 	lduh	[wtxt], t2		! 2
+C 	and	t0, 255, t0		! 0
+C 	
+C 	ldub	[wtxt+t3], t3		! 3
+C 	sll	t0, 2, t0		! 0
+C 	ld	[T0+t0], t0		! 0
+C 	and	t2, 255, t2		! 2
+C 	
+C 	ld	[T1+t1], t1		! 1
+C 	sll	t2, 2, t2		! 2
+C 	ld	[T2+t2], t2		! 2
+C 	sll	t3, 2, t3		! 3
+C 	
+C 	ld	[T3+t3], t3		! 3
+C 	xor	t0, t1, t0		! 0, 1
+C 	xor	t0, t2, t0		! 0, 1, 2
+C 	! Fetch roundkey
+C 	ld	[key+8], t1
+C 	
+C 	xor	t0, t3, t0		! 0, 1, 2, 3
+C 	xor	t0, t1, t0
+C 	st	t0, [tmp+8]
 
 	C = 3
-	ld	[IDX1+12], t1		! 1
-	
-	ldub	[wtxt+t1], t1		! 1
-	ld	[IDX3+12], t3		! 3
-	
-	sll	t1, 2, t1		! 1
-	ld	[wtxt+12], t0		! 0
-	! IDX2(j) = j XOR 2
-	lduh	[wtxt+4], t2		! 2
-	and	t0, 255, t0		! 0
-	
-	ldub	[wtxt+t3], t3		! 3
-	sll	t0, 2, t0		! 0
-	ld	[T0+t0], t0		! 0
-	and	t2, 255, t2		! 2
-	
-	ld	[T1+t1], t1		! 1
-	sll	t2, 2, t2		! 2
-	ld	[T2+t2], t2		! 2
-	sll	t3, 2, t3		! 3
-	
-	ld	[T3+t3], t3		! 3
-	xor	t0, t1, t0		! 0, 1
-	xor	t0, t2, t0		! 0, 1, 2
-	! Fetch roundkey
-	ld	[key+12], t1
-	
-	xor	t0, t3, t0		! 0, 1, 2, 3
-	xor	t0, t1, t0
-	st	t0, [tmp+12]
+	AES_ROUND(12)
+C 	ld	[IDX1+12], t1		! 1
+C 	
+C 	ldub	[wtxt+t1], t1		! 1
+C 	ld	[IDX3+12], t3		! 3
+C 	
+C 	sll	t1, 2, t1		! 1
+C 	ld	[wtxt+12], t0		! 0
+C 	! IDX2(j) = j XOR 2
+C 	lduh	[wtxt+4], t2		! 2
+C 	and	t0, 255, t0		! 0
+C 	
+C 	ldub	[wtxt+t3], t3		! 3
+C 	sll	t0, 2, t0		! 0
+C 	ld	[T0+t0], t0		! 0
+C 	and	t2, 255, t2		! 2
+C 	
+C 	ld	[T1+t1], t1		! 1
+C 	sll	t2, 2, t2		! 2
+C 	ld	[T2+t2], t2		! 2
+C 	sll	t3, 2, t3		! 3
+C 	
+C 	ld	[T3+t3], t3		! 3
+C 	xor	t0, t1, t0		! 0, 1
+C 	xor	t0, t2, t0		! 0, 1, 2
+C 	! Fetch roundkey
+C 	ld	[key+12], t1
+C 	
+C 	xor	t0, t3, t0		! 0, 1, 2, 3
+C 	xor	t0, t1, t0
+C 	st	t0, [tmp+12]
 			
 	C Unrolled inner loop ends