.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 Ldes_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 Ldes_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: Ldes_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