.text .globl BF_encrypt .type BF_encrypt,@function .align 16 BF_encrypt: .L_BF_encrypt_begin: pushl %ebp pushl %ebx movl 12(%esp),%ebx movl 16(%esp),%ebp pushl %esi pushl %edi movl (%ebx),%edi movl 4(%ebx),%esi xorl %eax,%eax movl (%ebp),%ebx xorl %ecx,%ecx xorl %ebx,%edi movl 4(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 8(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 12(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 16(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 20(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 24(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 28(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 32(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 36(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 40(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 44(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 48(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 52(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 56(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 60(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 64(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx movl 20(%esp),%eax xorl %ebx,%edi movl 68(%ebp),%edx xorl %edx,%esi movl %edi,4(%eax) movl %esi,(%eax) popl %edi popl %esi popl %ebx popl %ebp ret .size BF_encrypt,.-.L_BF_encrypt_begin .globl BF_decrypt .type BF_decrypt,@function .align 16 BF_decrypt: .L_BF_decrypt_begin: pushl %ebp pushl %ebx movl 12(%esp),%ebx movl 16(%esp),%ebp pushl %esi pushl %edi movl (%ebx),%edi movl 4(%ebx),%esi xorl %eax,%eax movl 68(%ebp),%ebx xorl %ecx,%ecx xorl %ebx,%edi movl 64(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 60(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 56(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 52(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 48(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 44(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 40(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 36(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 32(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 28(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 24(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 20(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 16(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 12(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%edi movl 8(%ebp),%edx movl %edi,%ebx xorl %edx,%esi shrl $16,%ebx movl %edi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx xorl %eax,%eax xorl %ebx,%esi movl 4(%ebp),%edx movl %esi,%ebx xorl %edx,%edi shrl $16,%ebx movl %esi,%edx movb %bh,%al andl $255,%ebx movb %dh,%cl andl $255,%edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax,%ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax,%ebx movl 3144(%ebp,%edx,4),%edx addl %edx,%ebx movl 20(%esp),%eax xorl %ebx,%edi movl (%ebp),%edx xorl %edx,%esi movl %edi,4(%eax) movl %esi,(%eax) popl %edi popl %esi popl %ebx popl %ebp ret .size BF_decrypt,.-.L_BF_decrypt_begin .globl BF_cbc_encrypt .type BF_cbc_encrypt,@function .align 16 BF_cbc_encrypt: .L_BF_cbc_encrypt_begin: pushl %ebp pushl %ebx pushl %esi pushl %edi movl 28(%esp),%ebp 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 movl 56(%esp),%ecx 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 64 .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 64 .size BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin