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