pushl %edi
AES_ROUND(_aes_decrypt_table,c,d,a,b)
-C C // Third column
-C C c d a b
-C movl %ecx,%esi C copy first in
-C andl $0x000000ff,%esi C clear all but offset
-C shll $2,%esi C index in itbl1
-C movl AES_TABLE0 + _aes_decrypt_table (%esi),%edi
-C movl %edx,%esi C second one
-C shrl $6,%esi
-C andl $0x000003fc,%esi C clear all but offset bytes
-C xorl AES_TABLE1 + _aes_decrypt_table (%esi),%edi
-C movl %eax,%esi C third one
-C shrl $14,%esi
-C andl $0x000003fc,%esi
-C xorl AES_TABLE2 + _aes_decrypt_table (%esi),%edi
-C movl %ebx,%esi C fourth one
-C shrl $22,%esi
-C andl $0x000003fc,%esi
-C xorl AES_TABLE3 + _aes_decrypt_table (%esi),%edi
pushl %edi C save first on stack
- C // Fourth column
- C b c d a
- movl %ebx,%esi C copy first in
- andl $0x000000ff,%esi C clear all but offset
- shll $2,%esi C index in itbl1
- movl AES_TABLE0 + _aes_decrypt_table (%esi),%edi
- movl %ecx,%esi C second one
- shrl $6,%esi
- andl $0x000003fc,%esi C clear all but offset bytes
- xorl AES_TABLE1 + _aes_decrypt_table (%esi),%edi
- movl %edx,%esi C third one
- shrl $14,%esi
- andl $0x000003fc,%esi
- xorl AES_TABLE2 + _aes_decrypt_table (%esi),%edi
- movl %eax,%esi C fourth one
- shrl $22,%esi
- andl $0x000003fc,%esi
- xorl AES_TABLE3 + _aes_decrypt_table (%esi),%edi
+ AES_ROUND(_aes_decrypt_table,b,c,d,a)
movl %edi,%edx
popl %ecx