Rev: src/nettle/x86/aes-decrypt.asm:1.8
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
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