blob: 49694169c118ff6046f65e8da8f0128d3a3ec2c8 [file] [log] [blame]
.file "des-586.s"
.text
.globl _DES_SPtrans
.align 4
__x86_DES_encrypt:
pushl %ecx
# Round 0
movl (%ecx),%eax
xorl %ebx,%ebx
movl 4(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 1
movl 8(%ecx),%eax
xorl %ebx,%ebx
movl 12(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 2
movl 16(%ecx),%eax
xorl %ebx,%ebx
movl 20(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 3
movl 24(%ecx),%eax
xorl %ebx,%ebx
movl 28(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 4
movl 32(%ecx),%eax
xorl %ebx,%ebx
movl 36(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 5
movl 40(%ecx),%eax
xorl %ebx,%ebx
movl 44(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 6
movl 48(%ecx),%eax
xorl %ebx,%ebx
movl 52(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 7
movl 56(%ecx),%eax
xorl %ebx,%ebx
movl 60(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 8
movl 64(%ecx),%eax
xorl %ebx,%ebx
movl 68(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 9
movl 72(%ecx),%eax
xorl %ebx,%ebx
movl 76(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 10
movl 80(%ecx),%eax
xorl %ebx,%ebx
movl 84(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 11
movl 88(%ecx),%eax
xorl %ebx,%ebx
movl 92(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 12
movl 96(%ecx),%eax
xorl %ebx,%ebx
movl 100(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 13
movl 104(%ecx),%eax
xorl %ebx,%ebx
movl 108(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 14
movl 112(%ecx),%eax
xorl %ebx,%ebx
movl 116(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 15
movl 120(%ecx),%eax
xorl %ebx,%ebx
movl 124(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
addl $4,%esp
ret
.align 4
__x86_DES_decrypt:
pushl %ecx
# Round 15
movl 120(%ecx),%eax
xorl %ebx,%ebx
movl 124(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 14
movl 112(%ecx),%eax
xorl %ebx,%ebx
movl 116(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 13
movl 104(%ecx),%eax
xorl %ebx,%ebx
movl 108(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 12
movl 96(%ecx),%eax
xorl %ebx,%ebx
movl 100(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 11
movl 88(%ecx),%eax
xorl %ebx,%ebx
movl 92(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 10
movl 80(%ecx),%eax
xorl %ebx,%ebx
movl 84(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 9
movl 72(%ecx),%eax
xorl %ebx,%ebx
movl 76(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 8
movl 64(%ecx),%eax
xorl %ebx,%ebx
movl 68(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 7
movl 56(%ecx),%eax
xorl %ebx,%ebx
movl 60(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 6
movl 48(%ecx),%eax
xorl %ebx,%ebx
movl 52(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 5
movl 40(%ecx),%eax
xorl %ebx,%ebx
movl 44(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 4
movl 32(%ecx),%eax
xorl %ebx,%ebx
movl 36(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 3
movl 24(%ecx),%eax
xorl %ebx,%ebx
movl 28(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 2
movl 16(%ecx),%eax
xorl %ebx,%ebx
movl 20(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
# Round 1
movl 8(%ecx),%eax
xorl %ebx,%ebx
movl 12(%ecx),%edx
xorl %esi,%eax
xorl %ecx,%ecx
xorl %esi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%edi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%edi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%edi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%edi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%edi
xorl 0x700(%ebp,%ecx,1),%edi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%edi
xorl 0x500(%ebp,%edx,1),%edi
# Round 0
movl (%ecx),%eax
xorl %ebx,%ebx
movl 4(%ecx),%edx
xorl %edi,%eax
xorl %ecx,%ecx
xorl %edi,%edx
andl $0xfcfcfcfc,%eax
andl $0xcfcfcfcf,%edx
movb %al,%bl
movb %ah,%cl
rorl $4,%edx
xorl (%ebp,%ebx,1),%esi
movb %dl,%bl
xorl 0x200(%ebp,%ecx,1),%esi
movb %dh,%cl
shrl $16,%eax
xorl 0x100(%ebp,%ebx,1),%esi
movb %ah,%bl
shrl $16,%edx
xorl 0x300(%ebp,%ecx,1),%esi
movb %dh,%cl
andl $0xff,%eax
andl $0xff,%edx
xorl 0x600(%ebp,%ebx,1),%esi
xorl 0x700(%ebp,%ecx,1),%esi
movl (%esp),%ecx
xorl 0x400(%ebp,%eax,1),%esi
xorl 0x500(%ebp,%edx,1),%esi
addl $4,%esp
ret
.globl _DES_encrypt1
.align 4
_DES_encrypt1:
L_DES_encrypt1_begin:
pushl %esi
pushl %edi
# Load the 2 words
movl 12(%esp),%esi
xorl %ecx,%ecx
pushl %ebx
pushl %ebp
movl (%esi),%eax
movl 28(%esp),%ebx
movl 4(%esi),%edi
# IP
roll $4,%eax
movl %eax,%esi
xorl %edi,%eax
andl $0xf0f0f0f0,%eax
xorl %eax,%esi
xorl %eax,%edi
roll $20,%edi
movl %edi,%eax
xorl %esi,%edi
andl $0xfff0000f,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $14,%eax
movl %eax,%edi
xorl %esi,%eax
andl $0x33333333,%eax
xorl %eax,%edi
xorl %eax,%esi
roll $22,%esi
movl %esi,%eax
xorl %edi,%esi
andl $0x03fc03fc,%esi
xorl %esi,%eax
xorl %esi,%edi
roll $9,%eax
movl %eax,%esi
xorl %edi,%eax
andl $0xaaaaaaaa,%eax
xorl %eax,%esi
xorl %eax,%edi
roll $1,%edi
call L000pic_point
L000pic_point:
popl %ebp
leal _DES_SPtrans-L000pic_point(%ebp),%ebp
movl 24(%esp),%ecx
cmpl $0,%ebx
je L001decrypt
call __x86_DES_encrypt
jmp L002done
L001decrypt:
call __x86_DES_decrypt
L002done:
# FP
movl 20(%esp),%edx
rorl $1,%esi
movl %edi,%eax
xorl %esi,%edi
andl $0xaaaaaaaa,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $23,%eax
movl %eax,%edi
xorl %esi,%eax
andl $0x03fc03fc,%eax
xorl %eax,%edi
xorl %eax,%esi
roll $10,%edi
movl %edi,%eax
xorl %esi,%edi
andl $0x33333333,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $18,%esi
movl %esi,%edi
xorl %eax,%esi
andl $0xfff0000f,%esi
xorl %esi,%edi
xorl %esi,%eax
roll $12,%edi
movl %edi,%esi
xorl %eax,%edi
andl $0xf0f0f0f0,%edi
xorl %edi,%esi
xorl %edi,%eax
rorl $4,%eax
movl %eax,(%edx)
movl %esi,4(%edx)
popl %ebp
popl %ebx
popl %edi
popl %esi
ret
.globl _DES_encrypt2
.align 4
_DES_encrypt2:
L_DES_encrypt2_begin:
pushl %esi
pushl %edi
# Load the 2 words
movl 12(%esp),%eax
xorl %ecx,%ecx
pushl %ebx
pushl %ebp
movl (%eax),%esi
movl 28(%esp),%ebx
roll $3,%esi
movl 4(%eax),%edi
roll $3,%edi
call L003pic_point
L003pic_point:
popl %ebp
leal _DES_SPtrans-L003pic_point(%ebp),%ebp
movl 24(%esp),%ecx
cmpl $0,%ebx
je L004decrypt
call __x86_DES_encrypt
jmp L005done
L004decrypt:
call __x86_DES_decrypt
L005done:
# Fixup
rorl $3,%edi
movl 20(%esp),%eax
rorl $3,%esi
movl %edi,(%eax)
movl %esi,4(%eax)
popl %ebp
popl %ebx
popl %edi
popl %esi
ret
.globl _DES_encrypt3
.align 4
_DES_encrypt3:
L_DES_encrypt3_begin:
pushl %ebx
movl 8(%esp),%ebx
pushl %ebp
pushl %esi
pushl %edi
# Load the data words
movl (%ebx),%edi
movl 4(%ebx),%esi
subl $12,%esp
# IP
roll $4,%edi
movl %edi,%edx
xorl %esi,%edi
andl $0xf0f0f0f0,%edi
xorl %edi,%edx
xorl %edi,%esi
roll $20,%esi
movl %esi,%edi
xorl %edx,%esi
andl $0xfff0000f,%esi
xorl %esi,%edi
xorl %esi,%edx
roll $14,%edi
movl %edi,%esi
xorl %edx,%edi
andl $0x33333333,%edi
xorl %edi,%esi
xorl %edi,%edx
roll $22,%edx
movl %edx,%edi
xorl %esi,%edx
andl $0x03fc03fc,%edx
xorl %edx,%edi
xorl %edx,%esi
roll $9,%edi
movl %edi,%edx
xorl %esi,%edi
andl $0xaaaaaaaa,%edi
xorl %edi,%edx
xorl %edi,%esi
rorl $3,%edx
rorl $2,%esi
movl %esi,4(%ebx)
movl 36(%esp),%eax
movl %edx,(%ebx)
movl 40(%esp),%edi
movl 44(%esp),%esi
movl $1,8(%esp)
movl %eax,4(%esp)
movl %ebx,(%esp)
call L_DES_encrypt2_begin
movl $0,8(%esp)
movl %edi,4(%esp)
movl %ebx,(%esp)
call L_DES_encrypt2_begin
movl $1,8(%esp)
movl %esi,4(%esp)
movl %ebx,(%esp)
call L_DES_encrypt2_begin
addl $12,%esp
movl (%ebx),%edi
movl 4(%ebx),%esi
# FP
roll $2,%esi
roll $3,%edi
movl %edi,%eax
xorl %esi,%edi
andl $0xaaaaaaaa,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $23,%eax
movl %eax,%edi
xorl %esi,%eax
andl $0x03fc03fc,%eax
xorl %eax,%edi
xorl %eax,%esi
roll $10,%edi
movl %edi,%eax
xorl %esi,%edi
andl $0x33333333,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $18,%esi
movl %esi,%edi
xorl %eax,%esi
andl $0xfff0000f,%esi
xorl %esi,%edi
xorl %esi,%eax
roll $12,%edi
movl %edi,%esi
xorl %eax,%edi
andl $0xf0f0f0f0,%edi
xorl %edi,%esi
xorl %edi,%eax
rorl $4,%eax
movl %eax,(%ebx)
movl %esi,4(%ebx)
popl %edi
popl %esi
popl %ebp
popl %ebx
ret
.globl _DES_decrypt3
.align 4
_DES_decrypt3:
L_DES_decrypt3_begin:
pushl %ebx
movl 8(%esp),%ebx
pushl %ebp
pushl %esi
pushl %edi
# Load the data words
movl (%ebx),%edi
movl 4(%ebx),%esi
subl $12,%esp
# IP
roll $4,%edi
movl %edi,%edx
xorl %esi,%edi
andl $0xf0f0f0f0,%edi
xorl %edi,%edx
xorl %edi,%esi
roll $20,%esi
movl %esi,%edi
xorl %edx,%esi
andl $0xfff0000f,%esi
xorl %esi,%edi
xorl %esi,%edx
roll $14,%edi
movl %edi,%esi
xorl %edx,%edi
andl $0x33333333,%edi
xorl %edi,%esi
xorl %edi,%edx
roll $22,%edx
movl %edx,%edi
xorl %esi,%edx
andl $0x03fc03fc,%edx
xorl %edx,%edi
xorl %edx,%esi
roll $9,%edi
movl %edi,%edx
xorl %esi,%edi
andl $0xaaaaaaaa,%edi
xorl %edi,%edx
xorl %edi,%esi
rorl $3,%edx
rorl $2,%esi
movl %esi,4(%ebx)
movl 36(%esp),%esi
movl %edx,(%ebx)
movl 40(%esp),%edi
movl 44(%esp),%eax
movl $0,8(%esp)
movl %eax,4(%esp)
movl %ebx,(%esp)
call L_DES_encrypt2_begin
movl $1,8(%esp)
movl %edi,4(%esp)
movl %ebx,(%esp)
call L_DES_encrypt2_begin
movl $0,8(%esp)
movl %esi,4(%esp)
movl %ebx,(%esp)
call L_DES_encrypt2_begin
addl $12,%esp
movl (%ebx),%edi
movl 4(%ebx),%esi
# FP
roll $2,%esi
roll $3,%edi
movl %edi,%eax
xorl %esi,%edi
andl $0xaaaaaaaa,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $23,%eax
movl %eax,%edi
xorl %esi,%eax
andl $0x03fc03fc,%eax
xorl %eax,%edi
xorl %eax,%esi
roll $10,%edi
movl %edi,%eax
xorl %esi,%edi
andl $0x33333333,%edi
xorl %edi,%eax
xorl %edi,%esi
roll $18,%esi
movl %esi,%edi
xorl %eax,%esi
andl $0xfff0000f,%esi
xorl %esi,%edi
xorl %esi,%eax
roll $12,%edi
movl %edi,%esi
xorl %eax,%edi
andl $0xf0f0f0f0,%edi
xorl %edi,%esi
xorl %edi,%eax
rorl $4,%eax
movl %eax,(%ebx)
movl %esi,4(%ebx)
popl %edi
popl %esi
popl %ebp
popl %ebx
ret
.globl _DES_ncbc_encrypt
.align 4
_DES_ncbc_encrypt:
L_DES_ncbc_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 5
pushl %ecx
# get and push parameter 3
movl 52(%esp),%eax
pushl %eax
pushl %ebx
cmpl $0,%ecx
jz L006decrypt
andl $4294967288,%ebp
movl 12(%esp),%eax
movl 16(%esp),%ebx
jz L007encrypt_finish
L008encrypt_loop:
movl (%esi),%ecx
movl 4(%esi),%edx
xorl %ecx,%eax
xorl %edx,%ebx
movl %eax,12(%esp)
movl %ebx,16(%esp)
call L_DES_encrypt1_begin
movl 12(%esp),%eax
movl 16(%esp),%ebx
movl %eax,(%edi)
movl %ebx,4(%edi)
addl $8,%esi
addl $8,%edi
subl $8,%ebp
jnz L008encrypt_loop
L007encrypt_finish:
movl 56(%esp),%ebp
andl $7,%ebp
jz L009finish
call L010PIC_point
L010PIC_point:
popl %edx
leal L011cbc_enc_jmp_table-L010PIC_point(%edx),%ecx
movl (%ecx,%ebp,4),%ebp
addl %edx,%ebp
xorl %ecx,%ecx
xorl %edx,%edx
jmp *%ebp
L012ej7:
movb 6(%esi),%dh
shll $8,%edx
L013ej6:
movb 5(%esi),%dh
L014ej5:
movb 4(%esi),%dl
L015ej4:
movl (%esi),%ecx
jmp L016ejend
L017ej3:
movb 2(%esi),%ch
shll $8,%ecx
L018ej2:
movb 1(%esi),%ch
L019ej1:
movb (%esi),%cl
L016ejend:
xorl %ecx,%eax
xorl %edx,%ebx
movl %eax,12(%esp)
movl %ebx,16(%esp)
call L_DES_encrypt1_begin
movl 12(%esp),%eax
movl 16(%esp),%ebx
movl %eax,(%edi)
movl %ebx,4(%edi)
jmp L009finish
L006decrypt:
andl $4294967288,%ebp
movl 20(%esp),%eax
movl 24(%esp),%ebx
jz L020decrypt_finish
L021decrypt_loop:
movl (%esi),%eax
movl 4(%esi),%ebx
movl %eax,12(%esp)
movl %ebx,16(%esp)
call L_DES_encrypt1_begin
movl 12(%esp),%eax
movl 16(%esp),%ebx
movl 20(%esp),%ecx
movl 24(%esp),%edx
xorl %eax,%ecx
xorl %ebx,%edx
movl (%esi),%eax
movl 4(%esi),%ebx
movl %ecx,(%edi)
movl %edx,4(%edi)
movl %eax,20(%esp)
movl %ebx,24(%esp)
addl $8,%esi
addl $8,%edi
subl $8,%ebp
jnz L021decrypt_loop
L020decrypt_finish:
movl 56(%esp),%ebp
andl $7,%ebp
jz L009finish
movl (%esi),%eax
movl 4(%esi),%ebx
movl %eax,12(%esp)
movl %ebx,16(%esp)
call L_DES_encrypt1_begin
movl 12(%esp),%eax
movl 16(%esp),%ebx
movl 20(%esp),%ecx
movl 24(%esp),%edx
xorl %eax,%ecx
xorl %ebx,%edx
movl (%esi),%eax
movl 4(%esi),%ebx
L022dj7:
rorl $16,%edx
movb %dl,6(%edi)
shrl $16,%edx
L023dj6:
movb %dh,5(%edi)
L024dj5:
movb %dl,4(%edi)
L025dj4:
movl %ecx,(%edi)
jmp L026djend
L027dj3:
rorl $16,%ecx
movb %cl,2(%edi)
shll $16,%ecx
L028dj2:
movb %ch,1(%esi)
L029dj1:
movb %cl,(%esi)
L026djend:
jmp L009finish
L009finish:
movl 64(%esp),%ecx
addl $28,%esp
movl %eax,(%ecx)
movl %ebx,4(%ecx)
popl %edi
popl %esi
popl %ebx
popl %ebp
ret
.align 6,0x90
L011cbc_enc_jmp_table:
.long 0
.long L019ej1-L010PIC_point
.long L018ej2-L010PIC_point
.long L017ej3-L010PIC_point
.long L015ej4-L010PIC_point
.long L014ej5-L010PIC_point
.long L013ej6-L010PIC_point
.long L012ej7-L010PIC_point
.align 6,0x90
.globl _DES_ede3_cbc_encrypt
.align 4
_DES_ede3_cbc_encrypt:
L_DES_ede3_cbc_encrypt_begin:
pushl %ebp
pushl %ebx
pushl %esi
pushl %edi
movl 28(%esp),%ebp
# getting iv ptr from parameter 6
movl 44(%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 7
movl 64(%esp),%ecx
# get and push parameter 5
movl 56(%esp),%eax
pushl %eax
# get and push parameter 4
movl 56(%esp),%eax
pushl %eax
# get and push parameter 3
movl 56(%esp),%eax
pushl %eax
pushl %ebx
cmpl $0,%ecx
jz L030decrypt
andl $4294967288,%ebp
movl 16(%esp),%eax
movl 20(%esp),%ebx
jz L031encrypt_finish
L032encrypt_loop:
movl (%esi),%ecx
movl 4(%esi),%edx
xorl %ecx,%eax
xorl %edx,%ebx
movl %eax,16(%esp)
movl %ebx,20(%esp)
call L_DES_encrypt3_begin
movl 16(%esp),%eax
movl 20(%esp),%ebx
movl %eax,(%edi)
movl %ebx,4(%edi)
addl $8,%esi
addl $8,%edi
subl $8,%ebp
jnz L032encrypt_loop
L031encrypt_finish:
movl 60(%esp),%ebp
andl $7,%ebp
jz L033finish
call L034PIC_point
L034PIC_point:
popl %edx
leal L035cbc_enc_jmp_table-L034PIC_point(%edx),%ecx
movl (%ecx,%ebp,4),%ebp
addl %edx,%ebp
xorl %ecx,%ecx
xorl %edx,%edx
jmp *%ebp
L036ej7:
movb 6(%esi),%dh
shll $8,%edx
L037ej6:
movb 5(%esi),%dh
L038ej5:
movb 4(%esi),%dl
L039ej4:
movl (%esi),%ecx
jmp L040ejend
L041ej3:
movb 2(%esi),%ch
shll $8,%ecx
L042ej2:
movb 1(%esi),%ch
L043ej1:
movb (%esi),%cl
L040ejend:
xorl %ecx,%eax
xorl %edx,%ebx
movl %eax,16(%esp)
movl %ebx,20(%esp)
call L_DES_encrypt3_begin
movl 16(%esp),%eax
movl 20(%esp),%ebx
movl %eax,(%edi)
movl %ebx,4(%edi)
jmp L033finish
L030decrypt:
andl $4294967288,%ebp
movl 24(%esp),%eax
movl 28(%esp),%ebx
jz L044decrypt_finish
L045decrypt_loop:
movl (%esi),%eax
movl 4(%esi),%ebx
movl %eax,16(%esp)
movl %ebx,20(%esp)
call L_DES_decrypt3_begin
movl 16(%esp),%eax
movl 20(%esp),%ebx
movl 24(%esp),%ecx
movl 28(%esp),%edx
xorl %eax,%ecx
xorl %ebx,%edx
movl (%esi),%eax
movl 4(%esi),%ebx
movl %ecx,(%edi)
movl %edx,4(%edi)
movl %eax,24(%esp)
movl %ebx,28(%esp)
addl $8,%esi
addl $8,%edi
subl $8,%ebp
jnz L045decrypt_loop
L044decrypt_finish:
movl 60(%esp),%ebp
andl $7,%ebp
jz L033finish
movl (%esi),%eax
movl 4(%esi),%ebx
movl %eax,16(%esp)
movl %ebx,20(%esp)
call L_DES_decrypt3_begin
movl 16(%esp),%eax
movl 20(%esp),%ebx
movl 24(%esp),%ecx
movl 28(%esp),%edx
xorl %eax,%ecx
xorl %ebx,%edx
movl (%esi),%eax
movl 4(%esi),%ebx
L046dj7:
rorl $16,%edx
movb %dl,6(%edi)
shrl $16,%edx
L047dj6:
movb %dh,5(%edi)
L048dj5:
movb %dl,4(%edi)
L049dj4:
movl %ecx,(%edi)
jmp L050djend
L051dj3:
rorl $16,%ecx
movb %cl,2(%edi)
shll $16,%ecx
L052dj2:
movb %ch,1(%esi)
L053dj1:
movb %cl,(%esi)
L050djend:
jmp L033finish
L033finish:
movl 76(%esp),%ecx
addl $32,%esp
movl %eax,(%ecx)
movl %ebx,4(%ecx)
popl %edi
popl %esi
popl %ebx
popl %ebp
ret
.align 6,0x90
L035cbc_enc_jmp_table:
.long 0
.long L043ej1-L034PIC_point
.long L042ej2-L034PIC_point
.long L041ej3-L034PIC_point
.long L039ej4-L034PIC_point
.long L038ej5-L034PIC_point
.long L037ej6-L034PIC_point
.long L036ej7-L034PIC_point
.align 6,0x90
.align 6,0x90
_DES_SPtrans:
.long 34080768,524288,33554434,34080770
.long 33554432,526338,524290,33554434
.long 526338,34080768,34078720,2050
.long 33556482,33554432,0,524290
.long 524288,2,33556480,526336
.long 34080770,34078720,2050,33556480
.long 2,2048,526336,34078722
.long 2048,33556482,34078722,0
.long 0,34080770,33556480,524290
.long 34080768,524288,2050,33556480
.long 34078722,2048,526336,33554434
.long 526338,2,33554434,34078720
.long 34080770,526336,34078720,33556482
.long 33554432,2050,524290,0
.long 524288,33554432,33556482,34080768
.long 2,34078722,2048,526338
.long 1074823184,0,1081344,1074790400
.long 1073741840,32784,1073774592,1081344
.long 32768,1074790416,16,1073774592
.long 1048592,1074823168,1074790400,16
.long 1048576,1073774608,1074790416,32768
.long 1081360,1073741824,0,1048592
.long 1073774608,1081360,1074823168,1073741840
.long 1073741824,1048576,32784,1074823184
.long 1048592,1074823168,1073774592,1081360
.long 1074823184,1048592,1073741840,0
.long 1073741824,32784,1048576,1074790416
.long 32768,1073741824,1081360,1073774608
.long 1074823168,32768,0,1073741840
.long 16,1074823184,1081344,1074790400
.long 1074790416,1048576,32784,1073774592
.long 1073774608,16,1074790400,1081344
.long 67108865,67371264,256,67109121
.long 262145,67108864,67109121,262400
.long 67109120,262144,67371008,1
.long 67371265,257,1,67371009
.long 0,262145,67371264,256
.long 257,67371265,262144,67108865
.long 67371009,67109120,262401,67371008
.long 262400,0,67108864,262401
.long 67371264,256,1,262144
.long 257,262145,67371008,67109121
.long 0,67371264,262400,67371009
.long 262145,67108864,67371265,1
.long 262401,67108865,67108864,67371265
.long 262144,67109120,67109121,262400
.long 67109120,0,67371009,257
.long 67108865,262401,256,67371008
.long 4198408,268439552,8,272633864
.long 0,272629760,268439560,4194312
.long 272633856,268435464,268435456,4104
.long 268435464,4198408,4194304,268435456
.long 272629768,4198400,4096,8
.long 4198400,268439560,272629760,4096
.long 4104,0,4194312,272633856
.long 268439552,272629768,272633864,4194304
.long 272629768,4104,4194304,268435464
.long 4198400,268439552,8,272629760
.long 268439560,0,4096,4194312
.long 0,272629768,272633856,4096
.long 268435456,272633864,4198408,4194304
.long 272633864,8,268439552,4198408
.long 4194312,4198400,272629760,268439560
.long 4104,268435456,268435464,272633856
.long 134217728,65536,1024,134284320
.long 134283296,134218752,66592,134283264
.long 65536,32,134217760,66560
.long 134218784,134283296,134284288,0
.long 66560,134217728,65568,1056
.long 134218752,66592,0,134217760
.long 32,134218784,134284320,65568
.long 134283264,1024,1056,134284288
.long 134284288,134218784,65568,134283264
.long 65536,32,134217760,134218752
.long 134217728,66560,134284320,0
.long 66592,134217728,1024,65568
.long 134218784,1024,0,134284320
.long 134283296,134284288,1056,65536
.long 66560,134283296,134218752,1056
.long 32,66592,134283264,134217760
.long 2147483712,2097216,0,2149588992
.long 2097216,8192,2147491904,2097152
.long 8256,2149589056,2105344,2147483648
.long 2147491840,2147483712,2149580800,2105408
.long 2097152,2147491904,2149580864,0
.long 8192,64,2149588992,2149580864
.long 2149589056,2149580800,2147483648,8256
.long 64,2105344,2105408,2147491840
.long 8256,2147483648,2147491840,2105408
.long 2149588992,2097216,0,2147491840
.long 2147483648,8192,2149580864,2097152
.long 2097216,2149589056,2105344,64
.long 2149589056,2105344,2097152,2147491904
.long 2147483712,2149580800,2105408,0
.long 8192,2147483712,2147491904,2149588992
.long 2149580800,8256,64,2149580864
.long 16384,512,16777728,16777220
.long 16794116,16388,16896,0
.long 16777216,16777732,516,16793600
.long 4,16794112,16793600,516
.long 16777732,16384,16388,16794116
.long 0,16777728,16777220,16896
.long 16793604,16900,16794112,4
.long 16900,16793604,512,16777216
.long 16900,16793600,16793604,516
.long 16384,512,16777216,16793604
.long 16777732,16900,16896,0
.long 512,16777220,4,16777728
.long 0,16777732,16777728,16896
.long 516,16384,16794116,16777216
.long 16794112,4,16388,16794116
.long 16777220,16794112,16793600,16388
.long 545259648,545390592,131200,0
.long 537001984,8388736,545259520,545390720
.long 128,536870912,8519680,131200
.long 8519808,537002112,536871040,545259520
.long 131072,8519808,8388736,537001984
.long 545390720,536871040,0,8519680
.long 536870912,8388608,537002112,545259648
.long 8388608,131072,545390592,128
.long 8388608,131072,536871040,545390720
.long 131200,536870912,0,8519680
.long 545259648,537002112,537001984,8388736
.long 545390592,128,8388736,537001984
.long 545390720,8388608,545259520,536871040
.long 8519680,131200,537002112,545259520
.long 128,545390592,8519808,0
.long 536870912,545259648,131072,8519808