deps/openssl/asm/x86-macosx-gas/des/des-586.s

Summary

Maintainability
Test Coverage
.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