diff --git a/x86/aes-decrypt-internal.asm b/x86/aes-decrypt-internal.asm
index ff94fa8f993ca0db48474a2dcfb954ba6e031609..dffad28223292a248c884fd6f517fac3e8445711 100644
--- a/x86/aes-decrypt-internal.asm
+++ b/x86/aes-decrypt-internal.asm
@@ -72,6 +72,8 @@ PROLOGUE(_nettle_aes_decrypt)
 	testl	%ebp,%ebp
 	jz	.Lend
 
+	shrl	$4, FRAME_LENGTH
+	
 .Lblock_loop:
 	movl	FRAME_CTX,KEY	C  address of context struct ctx
 	C  get number of rounds to do from ctx struct	
@@ -150,10 +152,8 @@ PROLOGUE(_nettle_aes_decrypt)
 	AES_STORE(SA,SB,SC,SD, KEY, TMP)
 	
 	addl	$16, FRAME_DST		C Increment destination pointer
-	subl	$16, FRAME_LENGTH	C Length
+	decl	FRAME_LENGTH
 
-	C NOTE: Will loop forever if input data is not an
-	C integer number of blocks.
 	jnz	.Lblock_loop
 
 .Lend:
diff --git a/x86/aes-encrypt-internal.asm b/x86/aes-encrypt-internal.asm
index dc573948e511b53ac4adfbbb375df2b60ff0eb7e..a651785156ffc6eb762225177aa65593fb0967c3 100644
--- a/x86/aes-encrypt-internal.asm
+++ b/x86/aes-encrypt-internal.asm
@@ -72,6 +72,7 @@ PROLOGUE(_nettle_aes_encrypt)
 	testl	%ebp,%ebp
 	jz	.Lend
 
+	shrl	$4, FRAME_LENGTH
 .Lblock_loop:
 	movl	FRAME_CTX,KEY	C  address of context struct ctx
 	C  get number of rounds to do from ctx struct	
@@ -150,10 +151,8 @@ PROLOGUE(_nettle_aes_encrypt)
 	AES_STORE(SA,SB,SC,SD, KEY, TMP)
 	
 	addl	$16, FRAME_DST		C Increment destination pointer
-	subl	$16, FRAME_LENGTH	C Length
+	decl	FRAME_LENGTH		C Length
 
-	C NOTE: Will loop forever if input data is not an
-	C integer number of blocks.
 	jnz	.Lblock_loop
 
 .Lend: