.file "aes-decrypt-internal.asm" .text .align 4 .globl _nettle_aes_decrypt _nettle_aes_decrypt: pushl %ebx pushl %ebp pushl %esi pushl %edi subl $8, %esp movl 36(%esp), %ebp testl %ebp,%ebp jz .Lend .Lblock_loop: movl 28(%esp),%esi movl 44(%esp),%edi movl (%edi),%eax movl 4(%edi),%ebx movl 8(%edi),%ecx movl 12(%edi),%edx xorl (%esi),%eax xorl 4(%esi),%ebx xorl 8(%esi),%ecx xorl 12(%esi),%edx addl $16, 44(%esp) movl 32(%esp), %ebp movl 240 (%esi),%edi subl $1,%edi movl %edi, (%esp) addl $16,%esi movl %esi,4(%esp) .align 4 .Lround_loop: movl %eax, %esi andl $0xff, %esi movl 256 (%ebp, %esi,4),%edi movl %edx, %esi shrl $8,%esi andl $0xff,%esi xorl 1280 (%ebp, %esi, 4),%edi movl %ecx,%esi shrl $16,%esi andl $0xff,%esi xorl 2304 (%ebp, %esi, 4),%edi movl %ebx,%esi shrl $24,%esi andl $0xff,%esi xorl 3328 (%ebp, %esi, 4),%edi pushl %edi movl %ebx, %esi andl $0xff, %esi movl 256 (%ebp, %esi,4),%edi movl %eax, %esi shrl $8,%esi andl $0xff,%esi xorl 1280 (%ebp, %esi, 4),%edi movl %edx,%esi shrl $16,%esi andl $0xff,%esi xorl 2304 (%ebp, %esi, 4),%edi movl %ecx,%esi shrl $24,%esi andl $0xff,%esi xorl 3328 (%ebp, %esi, 4),%edi pushl %edi movl %ecx, %esi andl $0xff, %esi movl 256 (%ebp, %esi,4),%edi movl %ebx, %esi shrl $8,%esi andl $0xff,%esi xorl 1280 (%ebp, %esi, 4),%edi movl %eax,%esi shrl $16,%esi andl $0xff,%esi xorl 2304 (%ebp, %esi, 4),%edi movl %edx,%esi shrl $24,%esi andl $0xff,%esi xorl 3328 (%ebp, %esi, 4),%edi pushl %edi movl %edx, %esi andl $0xff, %esi movl 256 (%ebp, %esi,4),%edi movl %ecx, %esi shrl $8,%esi andl $0xff,%esi xorl 1280 (%ebp, %esi, 4),%edi movl %ebx,%esi shrl $16,%esi andl $0xff,%esi xorl 2304 (%ebp, %esi, 4),%edi movl %eax,%esi shrl $24,%esi andl $0xff,%esi xorl 3328 (%ebp, %esi, 4),%edi movl %edi,%edx popl %ecx popl %ebx popl %eax movl 4(%esp), %esi xorl (%esi),%eax xorl 4(%esi),%ebx xorl 8(%esi),%ecx xorl 12(%esi),%edx addl $16,4(%esp) decl (%esp) jnz .Lround_loop movl %eax,%edi andl $0x000000ff,%edi movl %edx,%esi andl $0x0000ff00,%esi orl %esi, %edi movl %ecx,%esi andl $0x00ff0000,%esi orl %esi, %edi movl %ebx,%esi andl $0xff000000,%esi orl %esi, %edi pushl %edi movl %ebx,%edi andl $0x000000ff,%edi movl %eax,%esi andl $0x0000ff00,%esi orl %esi, %edi movl %edx,%esi andl $0x00ff0000,%esi orl %esi, %edi movl %ecx,%esi andl $0xff000000,%esi orl %esi, %edi pushl %edi movl %ecx,%edi andl $0x000000ff,%edi movl %ebx,%esi andl $0x0000ff00,%esi orl %esi, %edi movl %eax,%esi andl $0x00ff0000,%esi orl %esi, %edi movl %edx,%esi andl $0xff000000,%esi orl %esi, %edi pushl %edi movl %edx,%edi andl $0x000000ff,%edi movl %ecx,%esi andl $0x0000ff00,%esi orl %esi, %edi movl %ebx,%esi andl $0x00ff0000,%esi orl %esi, %edi movl %eax,%esi andl $0xff000000,%esi orl %esi, %edi movl %edi,%edx popl %ecx popl %ebx popl %eax mov $4,%edi .Lsubst: movl %eax,%esi andl $0x000000ff,%esi movb 0 (%ebp, %esi),%al roll $8,%eax movl %ebx,%esi andl $0x000000ff,%esi movb 0 (%ebp, %esi),%bl roll $8,%ebx movl %ecx,%esi andl $0x000000ff,%esi movb 0 (%ebp, %esi),%cl roll $8,%ecx movl %edx,%esi andl $0x000000ff,%esi movb 0 (%ebp, %esi),%dl roll $8,%edx decl %edi jnz .Lsubst movl 40(%esp),%edi movl 4(%esp), %esi xorl (%esi),%eax xorl 4(%esi),%ebx xorl 8(%esi),%ecx xorl 12(%esi),%edx movl %eax,(%edi) movl %ebx,4(%edi) movl %ecx,8(%edi) movl %edx,12(%edi) addl $16, 40(%esp) subl $16, 36(%esp) jnz .Lblock_loop .Lend: addl $8, %esp popl %edi popl %esi popl %ebp popl %ebx ret