diff --git a/x86/aes-decrypt.asm b/x86/aes-decrypt.asm
index b98e49128449552fa565d1222f493421ea378dce..a56a5fa0be0f0ef45e287f9eee01f87f14eb182f 100644
--- a/x86/aes-decrypt.asm
+++ b/x86/aes-decrypt.asm
@@ -74,7 +74,9 @@ aes_decrypt:
 	popl	%ecx
 	popl	%ebx
 	popl	%eax
+	
 	popl	%esi
+	
 	xorl	(%esi),%eax	C  add current session key to plaintext
 	xorl	4(%esi),%ebx
 	xorl	8(%esi),%ecx
@@ -86,65 +88,19 @@ aes_decrypt:
 	C Foo?
 	xchgl	%ebx,%edx
 
-	C // last round
-	C // first column
-	C a b c d
-	movl	%eax,%edi
-	andl	$0x000000ff,%edi
-	movl	%ebx,%ebp
-	andl	$0x0000ff00,%ebp
-	orl	%ebp,%edi
-	movl	%ecx,%ebp
-	andl	$0x00ff0000,%ebp
-	orl	%ebp,%edi
-	movl	%edx,%ebp
-	andl	$0xff000000,%ebp
-	orl	%ebp,%edi
+	C last round
+
+	AES_LAST_ROUND(a,b,c,d)
 	pushl	%edi
 
-	C // second column
-	C b c d a
-	movl	%eax,%edi
-	andl	$0xff000000,%edi
-	movl	%ebx,%ebp
-	andl	$0x000000ff,%ebp
-	orl	%ebp,%edi
-	movl	%ecx,%ebp
-	andl	$0x0000ff00,%ebp
-	orl	%ebp,%edi
-	movl	%edx,%ebp
-	andl	$0x00ff0000,%ebp
-	orl	%ebp,%edi
+	AES_LAST_ROUND(b,c,d,a)
 	pushl	%edi
 
-	C // third column
-	C c d a b
-	movl	%eax,%edi
-	andl	$0x00ff0000,%edi
-	movl	%ebx,%ebp
-	andl	$0xff000000,%ebp
-	orl	%ebp,%edi
-	movl	%ecx,%ebp
-	andl	$0x000000ff,%ebp
-	orl	%ebp,%edi
-	movl	%edx,%ebp
-	andl	$0x0000ff00,%ebp
-	orl	%ebp,%edi
+	AES_LAST_ROUND(c,d,a,b)
 	pushl	%edi
 
-	C // fourth column
-	C d a b c
-	movl	%eax,%edi
-	andl	$0x0000ff00,%edi
-	movl	%ebx,%ebp
-	andl	$0x00ff0000,%ebp
-	orl	%ebp,%edi
-	movl	%ecx,%ebp
-	andl	$0xff000000,%ebp
-	orl	%ebp,%edi
-	movl	%edx,%ebp
-	andl	$0x000000ff,%ebp
-	orl	%ebp,%edi
+	AES_LAST_ROUND(d,a,b,c)
+	
 	movl	%edi,%edx
 	popl	%ecx
 	popl	%ebx