| .file "bf-686.s" |
| .text |
| .globl _BF_encrypt |
| .align 4 |
| _BF_encrypt: |
| L_BF_encrypt_begin: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| # Load the 2 words |
| |
| movl 20(%esp),%eax |
| movl (%eax),%ecx |
| movl 4(%eax),%edx |
| |
| # P pointer, s and enc flag |
| |
| movl 24(%esp),%edi |
| xorl %eax,%eax |
| xorl %ebx,%ebx |
| xorl (%edi),%ecx |
| |
| # Round 0 |
| |
| rorl $16,%ecx |
| movl 4(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 1 |
| |
| rorl $16,%edx |
| movl 8(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 2 |
| |
| rorl $16,%ecx |
| movl 12(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 3 |
| |
| rorl $16,%edx |
| movl 16(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 4 |
| |
| rorl $16,%ecx |
| movl 20(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 5 |
| |
| rorl $16,%edx |
| movl 24(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 6 |
| |
| rorl $16,%ecx |
| movl 28(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 7 |
| |
| rorl $16,%edx |
| movl 32(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 8 |
| |
| rorl $16,%ecx |
| movl 36(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 9 |
| |
| rorl $16,%edx |
| movl 40(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 10 |
| |
| rorl $16,%ecx |
| movl 44(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 11 |
| |
| rorl $16,%edx |
| movl 48(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 12 |
| |
| rorl $16,%ecx |
| movl 52(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 13 |
| |
| rorl $16,%edx |
| movl 56(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 14 |
| |
| rorl $16,%ecx |
| movl 60(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 15 |
| |
| rorl $16,%edx |
| movl 64(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| xorl 68(%edi),%edx |
| movl 20(%esp),%eax |
| movl %edx,(%eax) |
| movl %ecx,4(%eax) |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .globl _BF_decrypt |
| .align 4 |
| _BF_decrypt: |
| L_BF_decrypt_begin: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| # Load the 2 words |
| |
| movl 20(%esp),%eax |
| movl (%eax),%ecx |
| movl 4(%eax),%edx |
| |
| # P pointer, s and enc flag |
| |
| movl 24(%esp),%edi |
| xorl %eax,%eax |
| xorl %ebx,%ebx |
| xorl 68(%edi),%ecx |
| |
| # Round 16 |
| |
| rorl $16,%ecx |
| movl 64(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 15 |
| |
| rorl $16,%edx |
| movl 60(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 14 |
| |
| rorl $16,%ecx |
| movl 56(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 13 |
| |
| rorl $16,%edx |
| movl 52(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 12 |
| |
| rorl $16,%ecx |
| movl 48(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 11 |
| |
| rorl $16,%edx |
| movl 44(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 10 |
| |
| rorl $16,%ecx |
| movl 40(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 9 |
| |
| rorl $16,%edx |
| movl 36(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 8 |
| |
| rorl $16,%ecx |
| movl 32(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 7 |
| |
| rorl $16,%edx |
| movl 28(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 6 |
| |
| rorl $16,%ecx |
| movl 24(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 5 |
| |
| rorl $16,%edx |
| movl 20(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 4 |
| |
| rorl $16,%ecx |
| movl 16(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 3 |
| |
| rorl $16,%edx |
| movl 12(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| |
| # Round 2 |
| |
| rorl $16,%ecx |
| movl 8(%edi),%esi |
| movb %ch,%al |
| movb %cl,%bl |
| rorl $16,%ecx |
| xorl %esi,%edx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %ch,%al |
| movb %cl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%edx |
| |
| # Round 1 |
| |
| rorl $16,%edx |
| movl 4(%edi),%esi |
| movb %dh,%al |
| movb %dl,%bl |
| rorl $16,%edx |
| xorl %esi,%ecx |
| movl 72(%edi,%eax,4),%esi |
| movl 1096(%edi,%ebx,4),%ebp |
| movb %dh,%al |
| movb %dl,%bl |
| addl %ebp,%esi |
| movl 2120(%edi,%eax,4),%eax |
| xorl %eax,%esi |
| movl 3144(%edi,%ebx,4),%ebp |
| addl %ebp,%esi |
| xorl %eax,%eax |
| xorl %esi,%ecx |
| xorl (%edi),%edx |
| movl 20(%esp),%eax |
| movl %edx,(%eax) |
| movl %ecx,4(%eax) |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .globl _BF_cbc_encrypt |
| .align 4 |
| _BF_cbc_encrypt: |
| L_BF_cbc_encrypt_begin: |
| |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| movl 28(%esp),%ebp |
| # getting iv ptr from parameter 4 |
| |
| movl 36(%esp),%ebx |
| movl (%ebx),%esi |
| movl 4(%ebx),%edi |
| pushl %edi |
| pushl %esi |
| pushl %edi |
| pushl %esi |
| movl %esp,%ebx |
| movl 36(%esp),%esi |
| movl 40(%esp),%edi |
| # getting encrypt flag from parameter 5 |
| |
| movl 56(%esp),%ecx |
| # get and push parameter 3 |
| |
| movl 48(%esp),%eax |
| pushl %eax |
| pushl %ebx |
| cmpl $0,%ecx |
| jz L000decrypt |
| andl $4294967288,%ebp |
| movl 8(%esp),%eax |
| movl 12(%esp),%ebx |
| jz L001encrypt_finish |
| L002encrypt_loop: |
| movl (%esi),%ecx |
| movl 4(%esi),%edx |
| xorl %ecx,%eax |
| xorl %edx,%ebx |
| bswap %eax |
| bswap %ebx |
| movl %eax,8(%esp) |
| movl %ebx,12(%esp) |
| call L_BF_encrypt_begin |
| movl 8(%esp),%eax |
| movl 12(%esp),%ebx |
| bswap %eax |
| bswap %ebx |
| movl %eax,(%edi) |
| movl %ebx,4(%edi) |
| addl $8,%esi |
| addl $8,%edi |
| subl $8,%ebp |
| jnz L002encrypt_loop |
| L001encrypt_finish: |
| movl 52(%esp),%ebp |
| andl $7,%ebp |
| jz L003finish |
| call L004PIC_point |
| L004PIC_point: |
| popl %edx |
| leal L005cbc_enc_jmp_table-L004PIC_point(%edx),%ecx |
| movl (%ecx,%ebp,4),%ebp |
| addl %edx,%ebp |
| xorl %ecx,%ecx |
| xorl %edx,%edx |
| jmp *%ebp |
| L006ej7: |
| movb 6(%esi),%dh |
| shll $8,%edx |
| L007ej6: |
| movb 5(%esi),%dh |
| L008ej5: |
| movb 4(%esi),%dl |
| L009ej4: |
| movl (%esi),%ecx |
| jmp L010ejend |
| L011ej3: |
| movb 2(%esi),%ch |
| shll $8,%ecx |
| L012ej2: |
| movb 1(%esi),%ch |
| L013ej1: |
| movb (%esi),%cl |
| L010ejend: |
| xorl %ecx,%eax |
| xorl %edx,%ebx |
| bswap %eax |
| bswap %ebx |
| movl %eax,8(%esp) |
| movl %ebx,12(%esp) |
| call L_BF_encrypt_begin |
| movl 8(%esp),%eax |
| movl 12(%esp),%ebx |
| bswap %eax |
| bswap %ebx |
| movl %eax,(%edi) |
| movl %ebx,4(%edi) |
| jmp L003finish |
| L000decrypt: |
| andl $4294967288,%ebp |
| movl 16(%esp),%eax |
| movl 20(%esp),%ebx |
| jz L014decrypt_finish |
| L015decrypt_loop: |
| movl (%esi),%eax |
| movl 4(%esi),%ebx |
| bswap %eax |
| bswap %ebx |
| movl %eax,8(%esp) |
| movl %ebx,12(%esp) |
| call L_BF_decrypt_begin |
| movl 8(%esp),%eax |
| movl 12(%esp),%ebx |
| bswap %eax |
| bswap %ebx |
| movl 16(%esp),%ecx |
| movl 20(%esp),%edx |
| xorl %eax,%ecx |
| xorl %ebx,%edx |
| movl (%esi),%eax |
| movl 4(%esi),%ebx |
| movl %ecx,(%edi) |
| movl %edx,4(%edi) |
| movl %eax,16(%esp) |
| movl %ebx,20(%esp) |
| addl $8,%esi |
| addl $8,%edi |
| subl $8,%ebp |
| jnz L015decrypt_loop |
| L014decrypt_finish: |
| movl 52(%esp),%ebp |
| andl $7,%ebp |
| jz L003finish |
| movl (%esi),%eax |
| movl 4(%esi),%ebx |
| bswap %eax |
| bswap %ebx |
| movl %eax,8(%esp) |
| movl %ebx,12(%esp) |
| call L_BF_decrypt_begin |
| movl 8(%esp),%eax |
| movl 12(%esp),%ebx |
| bswap %eax |
| bswap %ebx |
| movl 16(%esp),%ecx |
| movl 20(%esp),%edx |
| xorl %eax,%ecx |
| xorl %ebx,%edx |
| movl (%esi),%eax |
| movl 4(%esi),%ebx |
| L016dj7: |
| rorl $16,%edx |
| movb %dl,6(%edi) |
| shrl $16,%edx |
| L017dj6: |
| movb %dh,5(%edi) |
| L018dj5: |
| movb %dl,4(%edi) |
| L019dj4: |
| movl %ecx,(%edi) |
| jmp L020djend |
| L021dj3: |
| rorl $16,%ecx |
| movb %cl,2(%edi) |
| shll $16,%ecx |
| L022dj2: |
| movb %ch,1(%esi) |
| L023dj1: |
| movb %cl,(%esi) |
| L020djend: |
| jmp L003finish |
| L003finish: |
| movl 60(%esp),%ecx |
| addl $24,%esp |
| movl %eax,(%ecx) |
| movl %ebx,4(%ecx) |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .align 6,0x90 |
| L005cbc_enc_jmp_table: |
| .long 0 |
| .long L013ej1-L004PIC_point |
| .long L012ej2-L004PIC_point |
| .long L011ej3-L004PIC_point |
| .long L009ej4-L004PIC_point |
| .long L008ej5-L004PIC_point |
| .long L007ej6-L004PIC_point |
| .long L006ej7-L004PIC_point |
| .align 6,0x90 |