The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/crypto/des/arch/i386/des_enc.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $NetBSD: des_enc.S,v 1.1 2001/09/09 11:01:02 tls Exp $ */
    2 /* $FreeBSD$ */
    3 
    4 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
    5  * All rights reserved.
    6  *
    7  * This package is an SSL implementation written
    8  * by Eric Young (eay@cryptsoft.com).
    9  * The implementation was written so as to conform with Netscapes SSL.
   10  *
   11  * This library is free for commercial and non-commercial use as long as
   12  * the following conditions are aheared to.  The following conditions
   13  * apply to all code found in this distribution, be it the RC4, RSA,
   14  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
   15  * included with this distribution is covered by the same copyright terms
   16  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
   17  *
   18  * Copyright remains Eric Young's, and as such any Copyright notices in
   19  * the code are not to be removed.
   20  * If this package is used in a product, Eric Young should be given attribution
   21  * as the author of the parts of the library used.
   22  * This can be in the form of a textual message at program startup or
   23  * in documentation (online or textual) provided with the package.
   24  *
   25  * Redistribution and use in source and binary forms, with or without
   26  * modification, are permitted provided that the following conditions
   27  * are met:
   28  * 1. Redistributions of source code must retain the copyright
   29  *    notice, this list of conditions and the following disclaimer.
   30  * 2. Redistributions in binary form must reproduce the above copyright
   31  *    notice, this list of conditions and the following disclaimer in the
   32  *    documentation and/or other materials provided with the distribution.
   33  * 3. All advertising materials mentioning features or use of this software
   34  *    must display the following acknowledgement:
   35  *    "This product includes cryptographic software written by
   36  *     Eric Young (eay@cryptsoft.com)"
   37  *    The word 'cryptographic' can be left out if the rouines from the library
   38  *    being used are not cryptographic related :-).
   39  * 4. If you include any Windows specific code (or a derivative thereof) from
   40  *    the apps directory (application code) you must include an acknowledgement:
   41  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
   42  *
   43  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
   44  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   45  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   46  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   47  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   48  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   49  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   50  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   51  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   52  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   53  * SUCH DAMAGE.
   54  *
   55  * The licence and distribution terms for any publically available version or
   56  * derivative of this code cannot be changed.  i.e. this code cannot simply be
   57  * copied and put under another distribution licence
   58  * [including the GNU Public Licence.]
   59  */
   60 
   61 /*
   62  * Modified from the output of `perl des686.pl elf' by 
   63  * Thor Lancelot Simon <tls@netbsd.org>
   64  */
   65 
   66 #include <i386/include/asm.h>
   67 #define _C_LABEL        CNAME
   68 
   69 ENTRY(des_encrypt1)
   70         pushl   %esi
   71         pushl   %edi
   72 
   73         /* Load the 2 words */
   74         movl    12(%esp),       %esi
   75         xorl    %ecx,           %ecx
   76         pushl   %ebx
   77         pushl   %ebp
   78         movl    (%esi),         %eax
   79         movl    28(%esp),       %ebx
   80         movl    4(%esi),        %edi
   81 
   82         /* IP */
   83         roll    $4,             %eax
   84         movl    %eax,           %esi
   85         xorl    %edi,           %eax
   86         andl    $0xf0f0f0f0,    %eax
   87         xorl    %eax,           %esi
   88         xorl    %eax,           %edi
   89 
   90         roll    $20,            %edi
   91         movl    %edi,           %eax
   92         xorl    %esi,           %edi
   93         andl    $0xfff0000f,    %edi
   94         xorl    %edi,           %eax
   95         xorl    %edi,           %esi
   96 
   97         roll    $14,            %eax
   98         movl    %eax,           %edi
   99         xorl    %esi,           %eax
  100         andl    $0x33333333,    %eax
  101         xorl    %eax,           %edi
  102         xorl    %eax,           %esi
  103 
  104         roll    $22,            %esi
  105         movl    %esi,           %eax
  106         xorl    %edi,           %esi
  107         andl    $0x03fc03fc,    %esi
  108         xorl    %esi,           %eax
  109         xorl    %esi,           %edi
  110 
  111         roll    $9,             %eax
  112         movl    %eax,           %esi
  113         xorl    %edi,           %eax
  114         andl    $0xaaaaaaaa,    %eax
  115         xorl    %eax,           %esi
  116         xorl    %eax,           %edi
  117 
  118 .byte 209
  119 .byte 199               # roll $1 %edi 
  120         movl    24(%esp),       %ebp
  121         cmpl    $0,             %ebx
  122         je      .L000start_decrypt
  123 
  124         /* Round 0 */
  125         movl    (%ebp),         %eax
  126         xorl    %ebx,           %ebx
  127         movl    4(%ebp),        %edx
  128         xorl    %esi,           %eax
  129         xorl    %esi,           %edx
  130         andl    $0xfcfcfcfc,    %eax
  131         andl    $0xcfcfcfcf,    %edx
  132         movb    %al,            %bl
  133         movb    %ah,            %cl
  134         rorl    $4,             %edx
  135         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  136         movb    %dl,            %bl
  137         xorl    %ebp,           %edi
  138         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  139         xorl    %ebp,           %edi
  140         movb    %dh,            %cl
  141         shrl    $16,            %eax
  142         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  143         xorl    %ebp,           %edi
  144         movb    %ah,            %bl
  145         shrl    $16,            %edx
  146         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  147         xorl    %ebp,           %edi
  148         movl    24(%esp),       %ebp
  149         movb    %dh,            %cl
  150         andl    $0xff,          %eax
  151         andl    $0xff,          %edx
  152         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  153         xorl    %ebx,           %edi
  154         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  155         xorl    %ebx,           %edi
  156         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  157         xorl    %ebx,           %edi
  158         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  159         xorl    %ebx,           %edi
  160 
  161         /* Round 1 */
  162         movl    8(%ebp),        %eax
  163         xorl    %ebx,           %ebx
  164         movl    12(%ebp),       %edx
  165         xorl    %edi,           %eax
  166         xorl    %edi,           %edx
  167         andl    $0xfcfcfcfc,    %eax
  168         andl    $0xcfcfcfcf,    %edx
  169         movb    %al,            %bl
  170         movb    %ah,            %cl
  171         rorl    $4,             %edx
  172         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  173         movb    %dl,            %bl
  174         xorl    %ebp,           %esi
  175         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  176         xorl    %ebp,           %esi
  177         movb    %dh,            %cl
  178         shrl    $16,            %eax
  179         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  180         xorl    %ebp,           %esi
  181         movb    %ah,            %bl
  182         shrl    $16,            %edx
  183         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  184         xorl    %ebp,           %esi
  185         movl    24(%esp),       %ebp
  186         movb    %dh,            %cl
  187         andl    $0xff,          %eax
  188         andl    $0xff,          %edx
  189         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  190         xorl    %ebx,           %esi
  191         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  192         xorl    %ebx,           %esi
  193         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  194         xorl    %ebx,           %esi
  195         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  196         xorl    %ebx,           %esi
  197 
  198         /* Round 2 */
  199         movl    16(%ebp),       %eax
  200         xorl    %ebx,           %ebx
  201         movl    20(%ebp),       %edx
  202         xorl    %esi,           %eax
  203         xorl    %esi,           %edx
  204         andl    $0xfcfcfcfc,    %eax
  205         andl    $0xcfcfcfcf,    %edx
  206         movb    %al,            %bl
  207         movb    %ah,            %cl
  208         rorl    $4,             %edx
  209         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  210         movb    %dl,            %bl
  211         xorl    %ebp,           %edi
  212         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  213         xorl    %ebp,           %edi
  214         movb    %dh,            %cl
  215         shrl    $16,            %eax
  216         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  217         xorl    %ebp,           %edi
  218         movb    %ah,            %bl
  219         shrl    $16,            %edx
  220         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  221         xorl    %ebp,           %edi
  222         movl    24(%esp),       %ebp
  223         movb    %dh,            %cl
  224         andl    $0xff,          %eax
  225         andl    $0xff,          %edx
  226         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  227         xorl    %ebx,           %edi
  228         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  229         xorl    %ebx,           %edi
  230         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  231         xorl    %ebx,           %edi
  232         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  233         xorl    %ebx,           %edi
  234 
  235         /* Round 3 */
  236         movl    24(%ebp),       %eax
  237         xorl    %ebx,           %ebx
  238         movl    28(%ebp),       %edx
  239         xorl    %edi,           %eax
  240         xorl    %edi,           %edx
  241         andl    $0xfcfcfcfc,    %eax
  242         andl    $0xcfcfcfcf,    %edx
  243         movb    %al,            %bl
  244         movb    %ah,            %cl
  245         rorl    $4,             %edx
  246         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  247         movb    %dl,            %bl
  248         xorl    %ebp,           %esi
  249         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  250         xorl    %ebp,           %esi
  251         movb    %dh,            %cl
  252         shrl    $16,            %eax
  253         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  254         xorl    %ebp,           %esi
  255         movb    %ah,            %bl
  256         shrl    $16,            %edx
  257         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  258         xorl    %ebp,           %esi
  259         movl    24(%esp),       %ebp
  260         movb    %dh,            %cl
  261         andl    $0xff,          %eax
  262         andl    $0xff,          %edx
  263         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  264         xorl    %ebx,           %esi
  265         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  266         xorl    %ebx,           %esi
  267         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  268         xorl    %ebx,           %esi
  269         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  270         xorl    %ebx,           %esi
  271 
  272         /* Round 4 */
  273         movl    32(%ebp),       %eax
  274         xorl    %ebx,           %ebx
  275         movl    36(%ebp),       %edx
  276         xorl    %esi,           %eax
  277         xorl    %esi,           %edx
  278         andl    $0xfcfcfcfc,    %eax
  279         andl    $0xcfcfcfcf,    %edx
  280         movb    %al,            %bl
  281         movb    %ah,            %cl
  282         rorl    $4,             %edx
  283         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  284         movb    %dl,            %bl
  285         xorl    %ebp,           %edi
  286         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  287         xorl    %ebp,           %edi
  288         movb    %dh,            %cl
  289         shrl    $16,            %eax
  290         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  291         xorl    %ebp,           %edi
  292         movb    %ah,            %bl
  293         shrl    $16,            %edx
  294         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  295         xorl    %ebp,           %edi
  296         movl    24(%esp),       %ebp
  297         movb    %dh,            %cl
  298         andl    $0xff,          %eax
  299         andl    $0xff,          %edx
  300         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  301         xorl    %ebx,           %edi
  302         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  303         xorl    %ebx,           %edi
  304         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  305         xorl    %ebx,           %edi
  306         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  307         xorl    %ebx,           %edi
  308 
  309         /* Round 5 */
  310         movl    40(%ebp),       %eax
  311         xorl    %ebx,           %ebx
  312         movl    44(%ebp),       %edx
  313         xorl    %edi,           %eax
  314         xorl    %edi,           %edx
  315         andl    $0xfcfcfcfc,    %eax
  316         andl    $0xcfcfcfcf,    %edx
  317         movb    %al,            %bl
  318         movb    %ah,            %cl
  319         rorl    $4,             %edx
  320         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  321         movb    %dl,            %bl
  322         xorl    %ebp,           %esi
  323         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  324         xorl    %ebp,           %esi
  325         movb    %dh,            %cl
  326         shrl    $16,            %eax
  327         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  328         xorl    %ebp,           %esi
  329         movb    %ah,            %bl
  330         shrl    $16,            %edx
  331         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  332         xorl    %ebp,           %esi
  333         movl    24(%esp),       %ebp
  334         movb    %dh,            %cl
  335         andl    $0xff,          %eax
  336         andl    $0xff,          %edx
  337         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  338         xorl    %ebx,           %esi
  339         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  340         xorl    %ebx,           %esi
  341         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  342         xorl    %ebx,           %esi
  343         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  344         xorl    %ebx,           %esi
  345 
  346         /* Round 6 */
  347         movl    48(%ebp),       %eax
  348         xorl    %ebx,           %ebx
  349         movl    52(%ebp),       %edx
  350         xorl    %esi,           %eax
  351         xorl    %esi,           %edx
  352         andl    $0xfcfcfcfc,    %eax
  353         andl    $0xcfcfcfcf,    %edx
  354         movb    %al,            %bl
  355         movb    %ah,            %cl
  356         rorl    $4,             %edx
  357         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  358         movb    %dl,            %bl
  359         xorl    %ebp,           %edi
  360         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  361         xorl    %ebp,           %edi
  362         movb    %dh,            %cl
  363         shrl    $16,            %eax
  364         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  365         xorl    %ebp,           %edi
  366         movb    %ah,            %bl
  367         shrl    $16,            %edx
  368         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  369         xorl    %ebp,           %edi
  370         movl    24(%esp),       %ebp
  371         movb    %dh,            %cl
  372         andl    $0xff,          %eax
  373         andl    $0xff,          %edx
  374         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  375         xorl    %ebx,           %edi
  376         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  377         xorl    %ebx,           %edi
  378         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  379         xorl    %ebx,           %edi
  380         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  381         xorl    %ebx,           %edi
  382 
  383         /* Round 7 */
  384         movl    56(%ebp),       %eax
  385         xorl    %ebx,           %ebx
  386         movl    60(%ebp),       %edx
  387         xorl    %edi,           %eax
  388         xorl    %edi,           %edx
  389         andl    $0xfcfcfcfc,    %eax
  390         andl    $0xcfcfcfcf,    %edx
  391         movb    %al,            %bl
  392         movb    %ah,            %cl
  393         rorl    $4,             %edx
  394         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  395         movb    %dl,            %bl
  396         xorl    %ebp,           %esi
  397         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  398         xorl    %ebp,           %esi
  399         movb    %dh,            %cl
  400         shrl    $16,            %eax
  401         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  402         xorl    %ebp,           %esi
  403         movb    %ah,            %bl
  404         shrl    $16,            %edx
  405         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  406         xorl    %ebp,           %esi
  407         movl    24(%esp),       %ebp
  408         movb    %dh,            %cl
  409         andl    $0xff,          %eax
  410         andl    $0xff,          %edx
  411         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  412         xorl    %ebx,           %esi
  413         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  414         xorl    %ebx,           %esi
  415         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  416         xorl    %ebx,           %esi
  417         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  418         xorl    %ebx,           %esi
  419 
  420         /* Round 8 */
  421         movl    64(%ebp),       %eax
  422         xorl    %ebx,           %ebx
  423         movl    68(%ebp),       %edx
  424         xorl    %esi,           %eax
  425         xorl    %esi,           %edx
  426         andl    $0xfcfcfcfc,    %eax
  427         andl    $0xcfcfcfcf,    %edx
  428         movb    %al,            %bl
  429         movb    %ah,            %cl
  430         rorl    $4,             %edx
  431         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  432         movb    %dl,            %bl
  433         xorl    %ebp,           %edi
  434         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  435         xorl    %ebp,           %edi
  436         movb    %dh,            %cl
  437         shrl    $16,            %eax
  438         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  439         xorl    %ebp,           %edi
  440         movb    %ah,            %bl
  441         shrl    $16,            %edx
  442         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  443         xorl    %ebp,           %edi
  444         movl    24(%esp),       %ebp
  445         movb    %dh,            %cl
  446         andl    $0xff,          %eax
  447         andl    $0xff,          %edx
  448         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  449         xorl    %ebx,           %edi
  450         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  451         xorl    %ebx,           %edi
  452         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  453         xorl    %ebx,           %edi
  454         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  455         xorl    %ebx,           %edi
  456 
  457         /* Round 9 */
  458         movl    72(%ebp),       %eax
  459         xorl    %ebx,           %ebx
  460         movl    76(%ebp),       %edx
  461         xorl    %edi,           %eax
  462         xorl    %edi,           %edx
  463         andl    $0xfcfcfcfc,    %eax
  464         andl    $0xcfcfcfcf,    %edx
  465         movb    %al,            %bl
  466         movb    %ah,            %cl
  467         rorl    $4,             %edx
  468         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  469         movb    %dl,            %bl
  470         xorl    %ebp,           %esi
  471         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  472         xorl    %ebp,           %esi
  473         movb    %dh,            %cl
  474         shrl    $16,            %eax
  475         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  476         xorl    %ebp,           %esi
  477         movb    %ah,            %bl
  478         shrl    $16,            %edx
  479         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  480         xorl    %ebp,           %esi
  481         movl    24(%esp),       %ebp
  482         movb    %dh,            %cl
  483         andl    $0xff,          %eax
  484         andl    $0xff,          %edx
  485         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  486         xorl    %ebx,           %esi
  487         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  488         xorl    %ebx,           %esi
  489         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  490         xorl    %ebx,           %esi
  491         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  492         xorl    %ebx,           %esi
  493 
  494         /* Round 10 */
  495         movl    80(%ebp),       %eax
  496         xorl    %ebx,           %ebx
  497         movl    84(%ebp),       %edx
  498         xorl    %esi,           %eax
  499         xorl    %esi,           %edx
  500         andl    $0xfcfcfcfc,    %eax
  501         andl    $0xcfcfcfcf,    %edx
  502         movb    %al,            %bl
  503         movb    %ah,            %cl
  504         rorl    $4,             %edx
  505         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  506         movb    %dl,            %bl
  507         xorl    %ebp,           %edi
  508         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  509         xorl    %ebp,           %edi
  510         movb    %dh,            %cl
  511         shrl    $16,            %eax
  512         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  513         xorl    %ebp,           %edi
  514         movb    %ah,            %bl
  515         shrl    $16,            %edx
  516         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  517         xorl    %ebp,           %edi
  518         movl    24(%esp),       %ebp
  519         movb    %dh,            %cl
  520         andl    $0xff,          %eax
  521         andl    $0xff,          %edx
  522         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  523         xorl    %ebx,           %edi
  524         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  525         xorl    %ebx,           %edi
  526         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  527         xorl    %ebx,           %edi
  528         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  529         xorl    %ebx,           %edi
  530 
  531         /* Round 11 */
  532         movl    88(%ebp),       %eax
  533         xorl    %ebx,           %ebx
  534         movl    92(%ebp),       %edx
  535         xorl    %edi,           %eax
  536         xorl    %edi,           %edx
  537         andl    $0xfcfcfcfc,    %eax
  538         andl    $0xcfcfcfcf,    %edx
  539         movb    %al,            %bl
  540         movb    %ah,            %cl
  541         rorl    $4,             %edx
  542         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  543         movb    %dl,            %bl
  544         xorl    %ebp,           %esi
  545         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  546         xorl    %ebp,           %esi
  547         movb    %dh,            %cl
  548         shrl    $16,            %eax
  549         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  550         xorl    %ebp,           %esi
  551         movb    %ah,            %bl
  552         shrl    $16,            %edx
  553         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  554         xorl    %ebp,           %esi
  555         movl    24(%esp),       %ebp
  556         movb    %dh,            %cl
  557         andl    $0xff,          %eax
  558         andl    $0xff,          %edx
  559         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  560         xorl    %ebx,           %esi
  561         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  562         xorl    %ebx,           %esi
  563         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  564         xorl    %ebx,           %esi
  565         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  566         xorl    %ebx,           %esi
  567 
  568         /* Round 12 */
  569         movl    96(%ebp),       %eax
  570         xorl    %ebx,           %ebx
  571         movl    100(%ebp),      %edx
  572         xorl    %esi,           %eax
  573         xorl    %esi,           %edx
  574         andl    $0xfcfcfcfc,    %eax
  575         andl    $0xcfcfcfcf,    %edx
  576         movb    %al,            %bl
  577         movb    %ah,            %cl
  578         rorl    $4,             %edx
  579         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  580         movb    %dl,            %bl
  581         xorl    %ebp,           %edi
  582         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  583         xorl    %ebp,           %edi
  584         movb    %dh,            %cl
  585         shrl    $16,            %eax
  586         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  587         xorl    %ebp,           %edi
  588         movb    %ah,            %bl
  589         shrl    $16,            %edx
  590         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  591         xorl    %ebp,           %edi
  592         movl    24(%esp),       %ebp
  593         movb    %dh,            %cl
  594         andl    $0xff,          %eax
  595         andl    $0xff,          %edx
  596         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  597         xorl    %ebx,           %edi
  598         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  599         xorl    %ebx,           %edi
  600         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  601         xorl    %ebx,           %edi
  602         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  603         xorl    %ebx,           %edi
  604 
  605         /* Round 13 */
  606         movl    104(%ebp),      %eax
  607         xorl    %ebx,           %ebx
  608         movl    108(%ebp),      %edx
  609         xorl    %edi,           %eax
  610         xorl    %edi,           %edx
  611         andl    $0xfcfcfcfc,    %eax
  612         andl    $0xcfcfcfcf,    %edx
  613         movb    %al,            %bl
  614         movb    %ah,            %cl
  615         rorl    $4,             %edx
  616         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  617         movb    %dl,            %bl
  618         xorl    %ebp,           %esi
  619         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  620         xorl    %ebp,           %esi
  621         movb    %dh,            %cl
  622         shrl    $16,            %eax
  623         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  624         xorl    %ebp,           %esi
  625         movb    %ah,            %bl
  626         shrl    $16,            %edx
  627         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  628         xorl    %ebp,           %esi
  629         movl    24(%esp),       %ebp
  630         movb    %dh,            %cl
  631         andl    $0xff,          %eax
  632         andl    $0xff,          %edx
  633         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  634         xorl    %ebx,           %esi
  635         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  636         xorl    %ebx,           %esi
  637         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  638         xorl    %ebx,           %esi
  639         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  640         xorl    %ebx,           %esi
  641 
  642         /* Round 14 */
  643         movl    112(%ebp),      %eax
  644         xorl    %ebx,           %ebx
  645         movl    116(%ebp),      %edx
  646         xorl    %esi,           %eax
  647         xorl    %esi,           %edx
  648         andl    $0xfcfcfcfc,    %eax
  649         andl    $0xcfcfcfcf,    %edx
  650         movb    %al,            %bl
  651         movb    %ah,            %cl
  652         rorl    $4,             %edx
  653         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  654         movb    %dl,            %bl
  655         xorl    %ebp,           %edi
  656         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  657         xorl    %ebp,           %edi
  658         movb    %dh,            %cl
  659         shrl    $16,            %eax
  660         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  661         xorl    %ebp,           %edi
  662         movb    %ah,            %bl
  663         shrl    $16,            %edx
  664         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  665         xorl    %ebp,           %edi
  666         movl    24(%esp),       %ebp
  667         movb    %dh,            %cl
  668         andl    $0xff,          %eax
  669         andl    $0xff,          %edx
  670         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  671         xorl    %ebx,           %edi
  672         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  673         xorl    %ebx,           %edi
  674         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  675         xorl    %ebx,           %edi
  676         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  677         xorl    %ebx,           %edi
  678 
  679         /* Round 15 */
  680         movl    120(%ebp),      %eax
  681         xorl    %ebx,           %ebx
  682         movl    124(%ebp),      %edx
  683         xorl    %edi,           %eax
  684         xorl    %edi,           %edx
  685         andl    $0xfcfcfcfc,    %eax
  686         andl    $0xcfcfcfcf,    %edx
  687         movb    %al,            %bl
  688         movb    %ah,            %cl
  689         rorl    $4,             %edx
  690         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  691         movb    %dl,            %bl
  692         xorl    %ebp,           %esi
  693         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  694         xorl    %ebp,           %esi
  695         movb    %dh,            %cl
  696         shrl    $16,            %eax
  697         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  698         xorl    %ebp,           %esi
  699         movb    %ah,            %bl
  700         shrl    $16,            %edx
  701         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  702         xorl    %ebp,           %esi
  703         movl    24(%esp),       %ebp
  704         movb    %dh,            %cl
  705         andl    $0xff,          %eax
  706         andl    $0xff,          %edx
  707         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  708         xorl    %ebx,           %esi
  709         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  710         xorl    %ebx,           %esi
  711         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  712         xorl    %ebx,           %esi
  713         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  714         xorl    %ebx,           %esi
  715         jmp     .L001end
  716 .L000start_decrypt:
  717 
  718         /* Round 15 */
  719         movl    120(%ebp),      %eax
  720         xorl    %ebx,           %ebx
  721         movl    124(%ebp),      %edx
  722         xorl    %esi,           %eax
  723         xorl    %esi,           %edx
  724         andl    $0xfcfcfcfc,    %eax
  725         andl    $0xcfcfcfcf,    %edx
  726         movb    %al,            %bl
  727         movb    %ah,            %cl
  728         rorl    $4,             %edx
  729         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  730         movb    %dl,            %bl
  731         xorl    %ebp,           %edi
  732         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  733         xorl    %ebp,           %edi
  734         movb    %dh,            %cl
  735         shrl    $16,            %eax
  736         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  737         xorl    %ebp,           %edi
  738         movb    %ah,            %bl
  739         shrl    $16,            %edx
  740         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  741         xorl    %ebp,           %edi
  742         movl    24(%esp),       %ebp
  743         movb    %dh,            %cl
  744         andl    $0xff,          %eax
  745         andl    $0xff,          %edx
  746         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  747         xorl    %ebx,           %edi
  748         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  749         xorl    %ebx,           %edi
  750         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  751         xorl    %ebx,           %edi
  752         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  753         xorl    %ebx,           %edi
  754 
  755         /* Round 14 */
  756         movl    112(%ebp),      %eax
  757         xorl    %ebx,           %ebx
  758         movl    116(%ebp),      %edx
  759         xorl    %edi,           %eax
  760         xorl    %edi,           %edx
  761         andl    $0xfcfcfcfc,    %eax
  762         andl    $0xcfcfcfcf,    %edx
  763         movb    %al,            %bl
  764         movb    %ah,            %cl
  765         rorl    $4,             %edx
  766         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  767         movb    %dl,            %bl
  768         xorl    %ebp,           %esi
  769         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  770         xorl    %ebp,           %esi
  771         movb    %dh,            %cl
  772         shrl    $16,            %eax
  773         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  774         xorl    %ebp,           %esi
  775         movb    %ah,            %bl
  776         shrl    $16,            %edx
  777         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  778         xorl    %ebp,           %esi
  779         movl    24(%esp),       %ebp
  780         movb    %dh,            %cl
  781         andl    $0xff,          %eax
  782         andl    $0xff,          %edx
  783         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  784         xorl    %ebx,           %esi
  785         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  786         xorl    %ebx,           %esi
  787         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  788         xorl    %ebx,           %esi
  789         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  790         xorl    %ebx,           %esi
  791 
  792         /* Round 13 */
  793         movl    104(%ebp),      %eax
  794         xorl    %ebx,           %ebx
  795         movl    108(%ebp),      %edx
  796         xorl    %esi,           %eax
  797         xorl    %esi,           %edx
  798         andl    $0xfcfcfcfc,    %eax
  799         andl    $0xcfcfcfcf,    %edx
  800         movb    %al,            %bl
  801         movb    %ah,            %cl
  802         rorl    $4,             %edx
  803         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  804         movb    %dl,            %bl
  805         xorl    %ebp,           %edi
  806         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  807         xorl    %ebp,           %edi
  808         movb    %dh,            %cl
  809         shrl    $16,            %eax
  810         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  811         xorl    %ebp,           %edi
  812         movb    %ah,            %bl
  813         shrl    $16,            %edx
  814         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  815         xorl    %ebp,           %edi
  816         movl    24(%esp),       %ebp
  817         movb    %dh,            %cl
  818         andl    $0xff,          %eax
  819         andl    $0xff,          %edx
  820         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  821         xorl    %ebx,           %edi
  822         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  823         xorl    %ebx,           %edi
  824         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  825         xorl    %ebx,           %edi
  826         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  827         xorl    %ebx,           %edi
  828 
  829         /* Round 12 */
  830         movl    96(%ebp),       %eax
  831         xorl    %ebx,           %ebx
  832         movl    100(%ebp),      %edx
  833         xorl    %edi,           %eax
  834         xorl    %edi,           %edx
  835         andl    $0xfcfcfcfc,    %eax
  836         andl    $0xcfcfcfcf,    %edx
  837         movb    %al,            %bl
  838         movb    %ah,            %cl
  839         rorl    $4,             %edx
  840         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  841         movb    %dl,            %bl
  842         xorl    %ebp,           %esi
  843         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  844         xorl    %ebp,           %esi
  845         movb    %dh,            %cl
  846         shrl    $16,            %eax
  847         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  848         xorl    %ebp,           %esi
  849         movb    %ah,            %bl
  850         shrl    $16,            %edx
  851         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  852         xorl    %ebp,           %esi
  853         movl    24(%esp),       %ebp
  854         movb    %dh,            %cl
  855         andl    $0xff,          %eax
  856         andl    $0xff,          %edx
  857         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  858         xorl    %ebx,           %esi
  859         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  860         xorl    %ebx,           %esi
  861         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  862         xorl    %ebx,           %esi
  863         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  864         xorl    %ebx,           %esi
  865 
  866         /* Round 11 */
  867         movl    88(%ebp),       %eax
  868         xorl    %ebx,           %ebx
  869         movl    92(%ebp),       %edx
  870         xorl    %esi,           %eax
  871         xorl    %esi,           %edx
  872         andl    $0xfcfcfcfc,    %eax
  873         andl    $0xcfcfcfcf,    %edx
  874         movb    %al,            %bl
  875         movb    %ah,            %cl
  876         rorl    $4,             %edx
  877         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  878         movb    %dl,            %bl
  879         xorl    %ebp,           %edi
  880         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  881         xorl    %ebp,           %edi
  882         movb    %dh,            %cl
  883         shrl    $16,            %eax
  884         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  885         xorl    %ebp,           %edi
  886         movb    %ah,            %bl
  887         shrl    $16,            %edx
  888         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  889         xorl    %ebp,           %edi
  890         movl    24(%esp),       %ebp
  891         movb    %dh,            %cl
  892         andl    $0xff,          %eax
  893         andl    $0xff,          %edx
  894         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  895         xorl    %ebx,           %edi
  896         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  897         xorl    %ebx,           %edi
  898         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  899         xorl    %ebx,           %edi
  900         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  901         xorl    %ebx,           %edi
  902 
  903         /* Round 10 */
  904         movl    80(%ebp),       %eax
  905         xorl    %ebx,           %ebx
  906         movl    84(%ebp),       %edx
  907         xorl    %edi,           %eax
  908         xorl    %edi,           %edx
  909         andl    $0xfcfcfcfc,    %eax
  910         andl    $0xcfcfcfcf,    %edx
  911         movb    %al,            %bl
  912         movb    %ah,            %cl
  913         rorl    $4,             %edx
  914         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  915         movb    %dl,            %bl
  916         xorl    %ebp,           %esi
  917         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  918         xorl    %ebp,           %esi
  919         movb    %dh,            %cl
  920         shrl    $16,            %eax
  921         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  922         xorl    %ebp,           %esi
  923         movb    %ah,            %bl
  924         shrl    $16,            %edx
  925         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  926         xorl    %ebp,           %esi
  927         movl    24(%esp),       %ebp
  928         movb    %dh,            %cl
  929         andl    $0xff,          %eax
  930         andl    $0xff,          %edx
  931         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  932         xorl    %ebx,           %esi
  933         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  934         xorl    %ebx,           %esi
  935         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  936         xorl    %ebx,           %esi
  937         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  938         xorl    %ebx,           %esi
  939 
  940         /* Round 9 */
  941         movl    72(%ebp),       %eax
  942         xorl    %ebx,           %ebx
  943         movl    76(%ebp),       %edx
  944         xorl    %esi,           %eax
  945         xorl    %esi,           %edx
  946         andl    $0xfcfcfcfc,    %eax
  947         andl    $0xcfcfcfcf,    %edx
  948         movb    %al,            %bl
  949         movb    %ah,            %cl
  950         rorl    $4,             %edx
  951         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  952         movb    %dl,            %bl
  953         xorl    %ebp,           %edi
  954         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  955         xorl    %ebp,           %edi
  956         movb    %dh,            %cl
  957         shrl    $16,            %eax
  958         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  959         xorl    %ebp,           %edi
  960         movb    %ah,            %bl
  961         shrl    $16,            %edx
  962         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
  963         xorl    %ebp,           %edi
  964         movl    24(%esp),       %ebp
  965         movb    %dh,            %cl
  966         andl    $0xff,          %eax
  967         andl    $0xff,          %edx
  968         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
  969         xorl    %ebx,           %edi
  970         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
  971         xorl    %ebx,           %edi
  972         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
  973         xorl    %ebx,           %edi
  974         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
  975         xorl    %ebx,           %edi
  976 
  977         /* Round 8 */
  978         movl    64(%ebp),       %eax
  979         xorl    %ebx,           %ebx
  980         movl    68(%ebp),       %edx
  981         xorl    %edi,           %eax
  982         xorl    %edi,           %edx
  983         andl    $0xfcfcfcfc,    %eax
  984         andl    $0xcfcfcfcf,    %edx
  985         movb    %al,            %bl
  986         movb    %ah,            %cl
  987         rorl    $4,             %edx
  988         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
  989         movb    %dl,            %bl
  990         xorl    %ebp,           %esi
  991         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
  992         xorl    %ebp,           %esi
  993         movb    %dh,            %cl
  994         shrl    $16,            %eax
  995         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
  996         xorl    %ebp,           %esi
  997         movb    %ah,            %bl
  998         shrl    $16,            %edx
  999         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1000         xorl    %ebp,           %esi
 1001         movl    24(%esp),       %ebp
 1002         movb    %dh,            %cl
 1003         andl    $0xff,          %eax
 1004         andl    $0xff,          %edx
 1005         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1006         xorl    %ebx,           %esi
 1007         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1008         xorl    %ebx,           %esi
 1009         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1010         xorl    %ebx,           %esi
 1011         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1012         xorl    %ebx,           %esi
 1013 
 1014         /* Round 7 */
 1015         movl    56(%ebp),       %eax
 1016         xorl    %ebx,           %ebx
 1017         movl    60(%ebp),       %edx
 1018         xorl    %esi,           %eax
 1019         xorl    %esi,           %edx
 1020         andl    $0xfcfcfcfc,    %eax
 1021         andl    $0xcfcfcfcf,    %edx
 1022         movb    %al,            %bl
 1023         movb    %ah,            %cl
 1024         rorl    $4,             %edx
 1025         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1026         movb    %dl,            %bl
 1027         xorl    %ebp,           %edi
 1028         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1029         xorl    %ebp,           %edi
 1030         movb    %dh,            %cl
 1031         shrl    $16,            %eax
 1032         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1033         xorl    %ebp,           %edi
 1034         movb    %ah,            %bl
 1035         shrl    $16,            %edx
 1036         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1037         xorl    %ebp,           %edi
 1038         movl    24(%esp),       %ebp
 1039         movb    %dh,            %cl
 1040         andl    $0xff,          %eax
 1041         andl    $0xff,          %edx
 1042         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1043         xorl    %ebx,           %edi
 1044         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1045         xorl    %ebx,           %edi
 1046         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1047         xorl    %ebx,           %edi
 1048         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1049         xorl    %ebx,           %edi
 1050 
 1051         /* Round 6 */
 1052         movl    48(%ebp),       %eax
 1053         xorl    %ebx,           %ebx
 1054         movl    52(%ebp),       %edx
 1055         xorl    %edi,           %eax
 1056         xorl    %edi,           %edx
 1057         andl    $0xfcfcfcfc,    %eax
 1058         andl    $0xcfcfcfcf,    %edx
 1059         movb    %al,            %bl
 1060         movb    %ah,            %cl
 1061         rorl    $4,             %edx
 1062         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1063         movb    %dl,            %bl
 1064         xorl    %ebp,           %esi
 1065         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1066         xorl    %ebp,           %esi
 1067         movb    %dh,            %cl
 1068         shrl    $16,            %eax
 1069         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1070         xorl    %ebp,           %esi
 1071         movb    %ah,            %bl
 1072         shrl    $16,            %edx
 1073         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1074         xorl    %ebp,           %esi
 1075         movl    24(%esp),       %ebp
 1076         movb    %dh,            %cl
 1077         andl    $0xff,          %eax
 1078         andl    $0xff,          %edx
 1079         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1080         xorl    %ebx,           %esi
 1081         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1082         xorl    %ebx,           %esi
 1083         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1084         xorl    %ebx,           %esi
 1085         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1086         xorl    %ebx,           %esi
 1087 
 1088         /* Round 5 */
 1089         movl    40(%ebp),       %eax
 1090         xorl    %ebx,           %ebx
 1091         movl    44(%ebp),       %edx
 1092         xorl    %esi,           %eax
 1093         xorl    %esi,           %edx
 1094         andl    $0xfcfcfcfc,    %eax
 1095         andl    $0xcfcfcfcf,    %edx
 1096         movb    %al,            %bl
 1097         movb    %ah,            %cl
 1098         rorl    $4,             %edx
 1099         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1100         movb    %dl,            %bl
 1101         xorl    %ebp,           %edi
 1102         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1103         xorl    %ebp,           %edi
 1104         movb    %dh,            %cl
 1105         shrl    $16,            %eax
 1106         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1107         xorl    %ebp,           %edi
 1108         movb    %ah,            %bl
 1109         shrl    $16,            %edx
 1110         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1111         xorl    %ebp,           %edi
 1112         movl    24(%esp),       %ebp
 1113         movb    %dh,            %cl
 1114         andl    $0xff,          %eax
 1115         andl    $0xff,          %edx
 1116         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1117         xorl    %ebx,           %edi
 1118         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1119         xorl    %ebx,           %edi
 1120         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1121         xorl    %ebx,           %edi
 1122         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1123         xorl    %ebx,           %edi
 1124 
 1125         /* Round 4 */
 1126         movl    32(%ebp),       %eax
 1127         xorl    %ebx,           %ebx
 1128         movl    36(%ebp),       %edx
 1129         xorl    %edi,           %eax
 1130         xorl    %edi,           %edx
 1131         andl    $0xfcfcfcfc,    %eax
 1132         andl    $0xcfcfcfcf,    %edx
 1133         movb    %al,            %bl
 1134         movb    %ah,            %cl
 1135         rorl    $4,             %edx
 1136         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1137         movb    %dl,            %bl
 1138         xorl    %ebp,           %esi
 1139         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1140         xorl    %ebp,           %esi
 1141         movb    %dh,            %cl
 1142         shrl    $16,            %eax
 1143         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1144         xorl    %ebp,           %esi
 1145         movb    %ah,            %bl
 1146         shrl    $16,            %edx
 1147         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1148         xorl    %ebp,           %esi
 1149         movl    24(%esp),       %ebp
 1150         movb    %dh,            %cl
 1151         andl    $0xff,          %eax
 1152         andl    $0xff,          %edx
 1153         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1154         xorl    %ebx,           %esi
 1155         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1156         xorl    %ebx,           %esi
 1157         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1158         xorl    %ebx,           %esi
 1159         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1160         xorl    %ebx,           %esi
 1161 
 1162         /* Round 3 */
 1163         movl    24(%ebp),       %eax
 1164         xorl    %ebx,           %ebx
 1165         movl    28(%ebp),       %edx
 1166         xorl    %esi,           %eax
 1167         xorl    %esi,           %edx
 1168         andl    $0xfcfcfcfc,    %eax
 1169         andl    $0xcfcfcfcf,    %edx
 1170         movb    %al,            %bl
 1171         movb    %ah,            %cl
 1172         rorl    $4,             %edx
 1173         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1174         movb    %dl,            %bl
 1175         xorl    %ebp,           %edi
 1176         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1177         xorl    %ebp,           %edi
 1178         movb    %dh,            %cl
 1179         shrl    $16,            %eax
 1180         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1181         xorl    %ebp,           %edi
 1182         movb    %ah,            %bl
 1183         shrl    $16,            %edx
 1184         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1185         xorl    %ebp,           %edi
 1186         movl    24(%esp),       %ebp
 1187         movb    %dh,            %cl
 1188         andl    $0xff,          %eax
 1189         andl    $0xff,          %edx
 1190         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1191         xorl    %ebx,           %edi
 1192         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1193         xorl    %ebx,           %edi
 1194         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1195         xorl    %ebx,           %edi
 1196         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1197         xorl    %ebx,           %edi
 1198 
 1199         /* Round 2 */
 1200         movl    16(%ebp),       %eax
 1201         xorl    %ebx,           %ebx
 1202         movl    20(%ebp),       %edx
 1203         xorl    %edi,           %eax
 1204         xorl    %edi,           %edx
 1205         andl    $0xfcfcfcfc,    %eax
 1206         andl    $0xcfcfcfcf,    %edx
 1207         movb    %al,            %bl
 1208         movb    %ah,            %cl
 1209         rorl    $4,             %edx
 1210         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1211         movb    %dl,            %bl
 1212         xorl    %ebp,           %esi
 1213         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1214         xorl    %ebp,           %esi
 1215         movb    %dh,            %cl
 1216         shrl    $16,            %eax
 1217         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1218         xorl    %ebp,           %esi
 1219         movb    %ah,            %bl
 1220         shrl    $16,            %edx
 1221         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1222         xorl    %ebp,           %esi
 1223         movl    24(%esp),       %ebp
 1224         movb    %dh,            %cl
 1225         andl    $0xff,          %eax
 1226         andl    $0xff,          %edx
 1227         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1228         xorl    %ebx,           %esi
 1229         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1230         xorl    %ebx,           %esi
 1231         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1232         xorl    %ebx,           %esi
 1233         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1234         xorl    %ebx,           %esi
 1235 
 1236         /* Round 1 */
 1237         movl    8(%ebp),        %eax
 1238         xorl    %ebx,           %ebx
 1239         movl    12(%ebp),       %edx
 1240         xorl    %esi,           %eax
 1241         xorl    %esi,           %edx
 1242         andl    $0xfcfcfcfc,    %eax
 1243         andl    $0xcfcfcfcf,    %edx
 1244         movb    %al,            %bl
 1245         movb    %ah,            %cl
 1246         rorl    $4,             %edx
 1247         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1248         movb    %dl,            %bl
 1249         xorl    %ebp,           %edi
 1250         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1251         xorl    %ebp,           %edi
 1252         movb    %dh,            %cl
 1253         shrl    $16,            %eax
 1254         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1255         xorl    %ebp,           %edi
 1256         movb    %ah,            %bl
 1257         shrl    $16,            %edx
 1258         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1259         xorl    %ebp,           %edi
 1260         movl    24(%esp),       %ebp
 1261         movb    %dh,            %cl
 1262         andl    $0xff,          %eax
 1263         andl    $0xff,          %edx
 1264         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1265         xorl    %ebx,           %edi
 1266         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1267         xorl    %ebx,           %edi
 1268         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1269         xorl    %ebx,           %edi
 1270         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1271         xorl    %ebx,           %edi
 1272 
 1273         /* Round 0 */
 1274         movl    (%ebp),         %eax
 1275         xorl    %ebx,           %ebx
 1276         movl    4(%ebp),        %edx
 1277         xorl    %edi,           %eax
 1278         xorl    %edi,           %edx
 1279         andl    $0xfcfcfcfc,    %eax
 1280         andl    $0xcfcfcfcf,    %edx
 1281         movb    %al,            %bl
 1282         movb    %ah,            %cl
 1283         rorl    $4,             %edx
 1284         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1285         movb    %dl,            %bl
 1286         xorl    %ebp,           %esi
 1287         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1288         xorl    %ebp,           %esi
 1289         movb    %dh,            %cl
 1290         shrl    $16,            %eax
 1291         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1292         xorl    %ebp,           %esi
 1293         movb    %ah,            %bl
 1294         shrl    $16,            %edx
 1295         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1296         xorl    %ebp,           %esi
 1297         movl    24(%esp),       %ebp
 1298         movb    %dh,            %cl
 1299         andl    $0xff,          %eax
 1300         andl    $0xff,          %edx
 1301         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1302         xorl    %ebx,           %esi
 1303         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1304         xorl    %ebx,           %esi
 1305         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1306         xorl    %ebx,           %esi
 1307         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1308         xorl    %ebx,           %esi
 1309 .L001end:
 1310 
 1311         /* FP */
 1312         movl    20(%esp),       %edx
 1313 .byte 209
 1314 .byte 206               # rorl $1 %esi 
 1315         movl    %edi,           %eax
 1316         xorl    %esi,           %edi
 1317         andl    $0xaaaaaaaa,    %edi
 1318         xorl    %edi,           %eax
 1319         xorl    %edi,           %esi
 1320 
 1321         roll    $23,            %eax
 1322         movl    %eax,           %edi
 1323         xorl    %esi,           %eax
 1324         andl    $0x03fc03fc,    %eax
 1325         xorl    %eax,           %edi
 1326         xorl    %eax,           %esi
 1327 
 1328         roll    $10,            %edi
 1329         movl    %edi,           %eax
 1330         xorl    %esi,           %edi
 1331         andl    $0x33333333,    %edi
 1332         xorl    %edi,           %eax
 1333         xorl    %edi,           %esi
 1334 
 1335         roll    $18,            %esi
 1336         movl    %esi,           %edi
 1337         xorl    %eax,           %esi
 1338         andl    $0xfff0000f,    %esi
 1339         xorl    %esi,           %edi
 1340         xorl    %esi,           %eax
 1341 
 1342         roll    $12,            %edi
 1343         movl    %edi,           %esi
 1344         xorl    %eax,           %edi
 1345         andl    $0xf0f0f0f0,    %edi
 1346         xorl    %edi,           %esi
 1347         xorl    %edi,           %eax
 1348 
 1349         rorl    $4,             %eax
 1350         movl    %eax,           (%edx)
 1351         movl    %esi,           4(%edx)
 1352         popl    %ebp
 1353         popl    %ebx
 1354         popl    %edi
 1355         popl    %esi
 1356         ret
 1357 END(des_encrypt1)
 1358 
 1359 ENTRY(des_encrypt2)
 1360         pushl   %esi
 1361         pushl   %edi
 1362 
 1363         /* Load the 2 words */
 1364         movl    12(%esp),       %eax
 1365         xorl    %ecx,           %ecx
 1366         pushl   %ebx
 1367         pushl   %ebp
 1368         movl    (%eax),         %esi
 1369         movl    28(%esp),       %ebx
 1370         roll    $3,             %esi
 1371         movl    4(%eax),        %edi
 1372         roll    $3,             %edi
 1373         movl    24(%esp),       %ebp
 1374         cmpl    $0,             %ebx
 1375         je      .L002start_decrypt
 1376 
 1377         /* Round 0 */
 1378         movl    (%ebp),         %eax
 1379         xorl    %ebx,           %ebx
 1380         movl    4(%ebp),        %edx
 1381         xorl    %esi,           %eax
 1382         xorl    %esi,           %edx
 1383         andl    $0xfcfcfcfc,    %eax
 1384         andl    $0xcfcfcfcf,    %edx
 1385         movb    %al,            %bl
 1386         movb    %ah,            %cl
 1387         rorl    $4,             %edx
 1388         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1389         movb    %dl,            %bl
 1390         xorl    %ebp,           %edi
 1391         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1392         xorl    %ebp,           %edi
 1393         movb    %dh,            %cl
 1394         shrl    $16,            %eax
 1395         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1396         xorl    %ebp,           %edi
 1397         movb    %ah,            %bl
 1398         shrl    $16,            %edx
 1399         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1400         xorl    %ebp,           %edi
 1401         movl    24(%esp),       %ebp
 1402         movb    %dh,            %cl
 1403         andl    $0xff,          %eax
 1404         andl    $0xff,          %edx
 1405         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1406         xorl    %ebx,           %edi
 1407         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1408         xorl    %ebx,           %edi
 1409         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1410         xorl    %ebx,           %edi
 1411         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1412         xorl    %ebx,           %edi
 1413 
 1414         /* Round 1 */
 1415         movl    8(%ebp),        %eax
 1416         xorl    %ebx,           %ebx
 1417         movl    12(%ebp),       %edx
 1418         xorl    %edi,           %eax
 1419         xorl    %edi,           %edx
 1420         andl    $0xfcfcfcfc,    %eax
 1421         andl    $0xcfcfcfcf,    %edx
 1422         movb    %al,            %bl
 1423         movb    %ah,            %cl
 1424         rorl    $4,             %edx
 1425         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1426         movb    %dl,            %bl
 1427         xorl    %ebp,           %esi
 1428         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1429         xorl    %ebp,           %esi
 1430         movb    %dh,            %cl
 1431         shrl    $16,            %eax
 1432         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1433         xorl    %ebp,           %esi
 1434         movb    %ah,            %bl
 1435         shrl    $16,            %edx
 1436         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1437         xorl    %ebp,           %esi
 1438         movl    24(%esp),       %ebp
 1439         movb    %dh,            %cl
 1440         andl    $0xff,          %eax
 1441         andl    $0xff,          %edx
 1442         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1443         xorl    %ebx,           %esi
 1444         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1445         xorl    %ebx,           %esi
 1446         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1447         xorl    %ebx,           %esi
 1448         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1449         xorl    %ebx,           %esi
 1450 
 1451         /* Round 2 */
 1452         movl    16(%ebp),       %eax
 1453         xorl    %ebx,           %ebx
 1454         movl    20(%ebp),       %edx
 1455         xorl    %esi,           %eax
 1456         xorl    %esi,           %edx
 1457         andl    $0xfcfcfcfc,    %eax
 1458         andl    $0xcfcfcfcf,    %edx
 1459         movb    %al,            %bl
 1460         movb    %ah,            %cl
 1461         rorl    $4,             %edx
 1462         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1463         movb    %dl,            %bl
 1464         xorl    %ebp,           %edi
 1465         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1466         xorl    %ebp,           %edi
 1467         movb    %dh,            %cl
 1468         shrl    $16,            %eax
 1469         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1470         xorl    %ebp,           %edi
 1471         movb    %ah,            %bl
 1472         shrl    $16,            %edx
 1473         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1474         xorl    %ebp,           %edi
 1475         movl    24(%esp),       %ebp
 1476         movb    %dh,            %cl
 1477         andl    $0xff,          %eax
 1478         andl    $0xff,          %edx
 1479         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1480         xorl    %ebx,           %edi
 1481         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1482         xorl    %ebx,           %edi
 1483         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1484         xorl    %ebx,           %edi
 1485         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1486         xorl    %ebx,           %edi
 1487 
 1488         /* Round 3 */
 1489         movl    24(%ebp),       %eax
 1490         xorl    %ebx,           %ebx
 1491         movl    28(%ebp),       %edx
 1492         xorl    %edi,           %eax
 1493         xorl    %edi,           %edx
 1494         andl    $0xfcfcfcfc,    %eax
 1495         andl    $0xcfcfcfcf,    %edx
 1496         movb    %al,            %bl
 1497         movb    %ah,            %cl
 1498         rorl    $4,             %edx
 1499         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1500         movb    %dl,            %bl
 1501         xorl    %ebp,           %esi
 1502         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1503         xorl    %ebp,           %esi
 1504         movb    %dh,            %cl
 1505         shrl    $16,            %eax
 1506         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1507         xorl    %ebp,           %esi
 1508         movb    %ah,            %bl
 1509         shrl    $16,            %edx
 1510         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1511         xorl    %ebp,           %esi
 1512         movl    24(%esp),       %ebp
 1513         movb    %dh,            %cl
 1514         andl    $0xff,          %eax
 1515         andl    $0xff,          %edx
 1516         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1517         xorl    %ebx,           %esi
 1518         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1519         xorl    %ebx,           %esi
 1520         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1521         xorl    %ebx,           %esi
 1522         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1523         xorl    %ebx,           %esi
 1524 
 1525         /* Round 4 */
 1526         movl    32(%ebp),       %eax
 1527         xorl    %ebx,           %ebx
 1528         movl    36(%ebp),       %edx
 1529         xorl    %esi,           %eax
 1530         xorl    %esi,           %edx
 1531         andl    $0xfcfcfcfc,    %eax
 1532         andl    $0xcfcfcfcf,    %edx
 1533         movb    %al,            %bl
 1534         movb    %ah,            %cl
 1535         rorl    $4,             %edx
 1536         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1537         movb    %dl,            %bl
 1538         xorl    %ebp,           %edi
 1539         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1540         xorl    %ebp,           %edi
 1541         movb    %dh,            %cl
 1542         shrl    $16,            %eax
 1543         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1544         xorl    %ebp,           %edi
 1545         movb    %ah,            %bl
 1546         shrl    $16,            %edx
 1547         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1548         xorl    %ebp,           %edi
 1549         movl    24(%esp),       %ebp
 1550         movb    %dh,            %cl
 1551         andl    $0xff,          %eax
 1552         andl    $0xff,          %edx
 1553         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1554         xorl    %ebx,           %edi
 1555         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1556         xorl    %ebx,           %edi
 1557         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1558         xorl    %ebx,           %edi
 1559         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1560         xorl    %ebx,           %edi
 1561 
 1562         /* Round 5 */
 1563         movl    40(%ebp),       %eax
 1564         xorl    %ebx,           %ebx
 1565         movl    44(%ebp),       %edx
 1566         xorl    %edi,           %eax
 1567         xorl    %edi,           %edx
 1568         andl    $0xfcfcfcfc,    %eax
 1569         andl    $0xcfcfcfcf,    %edx
 1570         movb    %al,            %bl
 1571         movb    %ah,            %cl
 1572         rorl    $4,             %edx
 1573         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1574         movb    %dl,            %bl
 1575         xorl    %ebp,           %esi
 1576         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1577         xorl    %ebp,           %esi
 1578         movb    %dh,            %cl
 1579         shrl    $16,            %eax
 1580         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1581         xorl    %ebp,           %esi
 1582         movb    %ah,            %bl
 1583         shrl    $16,            %edx
 1584         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1585         xorl    %ebp,           %esi
 1586         movl    24(%esp),       %ebp
 1587         movb    %dh,            %cl
 1588         andl    $0xff,          %eax
 1589         andl    $0xff,          %edx
 1590         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1591         xorl    %ebx,           %esi
 1592         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1593         xorl    %ebx,           %esi
 1594         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1595         xorl    %ebx,           %esi
 1596         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1597         xorl    %ebx,           %esi
 1598 
 1599         /* Round 6 */
 1600         movl    48(%ebp),       %eax
 1601         xorl    %ebx,           %ebx
 1602         movl    52(%ebp),       %edx
 1603         xorl    %esi,           %eax
 1604         xorl    %esi,           %edx
 1605         andl    $0xfcfcfcfc,    %eax
 1606         andl    $0xcfcfcfcf,    %edx
 1607         movb    %al,            %bl
 1608         movb    %ah,            %cl
 1609         rorl    $4,             %edx
 1610         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1611         movb    %dl,            %bl
 1612         xorl    %ebp,           %edi
 1613         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1614         xorl    %ebp,           %edi
 1615         movb    %dh,            %cl
 1616         shrl    $16,            %eax
 1617         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1618         xorl    %ebp,           %edi
 1619         movb    %ah,            %bl
 1620         shrl    $16,            %edx
 1621         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1622         xorl    %ebp,           %edi
 1623         movl    24(%esp),       %ebp
 1624         movb    %dh,            %cl
 1625         andl    $0xff,          %eax
 1626         andl    $0xff,          %edx
 1627         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1628         xorl    %ebx,           %edi
 1629         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1630         xorl    %ebx,           %edi
 1631         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1632         xorl    %ebx,           %edi
 1633         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1634         xorl    %ebx,           %edi
 1635 
 1636         /* Round 7 */
 1637         movl    56(%ebp),       %eax
 1638         xorl    %ebx,           %ebx
 1639         movl    60(%ebp),       %edx
 1640         xorl    %edi,           %eax
 1641         xorl    %edi,           %edx
 1642         andl    $0xfcfcfcfc,    %eax
 1643         andl    $0xcfcfcfcf,    %edx
 1644         movb    %al,            %bl
 1645         movb    %ah,            %cl
 1646         rorl    $4,             %edx
 1647         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1648         movb    %dl,            %bl
 1649         xorl    %ebp,           %esi
 1650         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1651         xorl    %ebp,           %esi
 1652         movb    %dh,            %cl
 1653         shrl    $16,            %eax
 1654         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1655         xorl    %ebp,           %esi
 1656         movb    %ah,            %bl
 1657         shrl    $16,            %edx
 1658         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1659         xorl    %ebp,           %esi
 1660         movl    24(%esp),       %ebp
 1661         movb    %dh,            %cl
 1662         andl    $0xff,          %eax
 1663         andl    $0xff,          %edx
 1664         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1665         xorl    %ebx,           %esi
 1666         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1667         xorl    %ebx,           %esi
 1668         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1669         xorl    %ebx,           %esi
 1670         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1671         xorl    %ebx,           %esi
 1672 
 1673         /* Round 8 */
 1674         movl    64(%ebp),       %eax
 1675         xorl    %ebx,           %ebx
 1676         movl    68(%ebp),       %edx
 1677         xorl    %esi,           %eax
 1678         xorl    %esi,           %edx
 1679         andl    $0xfcfcfcfc,    %eax
 1680         andl    $0xcfcfcfcf,    %edx
 1681         movb    %al,            %bl
 1682         movb    %ah,            %cl
 1683         rorl    $4,             %edx
 1684         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1685         movb    %dl,            %bl
 1686         xorl    %ebp,           %edi
 1687         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1688         xorl    %ebp,           %edi
 1689         movb    %dh,            %cl
 1690         shrl    $16,            %eax
 1691         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1692         xorl    %ebp,           %edi
 1693         movb    %ah,            %bl
 1694         shrl    $16,            %edx
 1695         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1696         xorl    %ebp,           %edi
 1697         movl    24(%esp),       %ebp
 1698         movb    %dh,            %cl
 1699         andl    $0xff,          %eax
 1700         andl    $0xff,          %edx
 1701         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1702         xorl    %ebx,           %edi
 1703         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1704         xorl    %ebx,           %edi
 1705         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1706         xorl    %ebx,           %edi
 1707         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1708         xorl    %ebx,           %edi
 1709 
 1710         /* Round 9 */
 1711         movl    72(%ebp),       %eax
 1712         xorl    %ebx,           %ebx
 1713         movl    76(%ebp),       %edx
 1714         xorl    %edi,           %eax
 1715         xorl    %edi,           %edx
 1716         andl    $0xfcfcfcfc,    %eax
 1717         andl    $0xcfcfcfcf,    %edx
 1718         movb    %al,            %bl
 1719         movb    %ah,            %cl
 1720         rorl    $4,             %edx
 1721         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1722         movb    %dl,            %bl
 1723         xorl    %ebp,           %esi
 1724         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1725         xorl    %ebp,           %esi
 1726         movb    %dh,            %cl
 1727         shrl    $16,            %eax
 1728         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1729         xorl    %ebp,           %esi
 1730         movb    %ah,            %bl
 1731         shrl    $16,            %edx
 1732         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1733         xorl    %ebp,           %esi
 1734         movl    24(%esp),       %ebp
 1735         movb    %dh,            %cl
 1736         andl    $0xff,          %eax
 1737         andl    $0xff,          %edx
 1738         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1739         xorl    %ebx,           %esi
 1740         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1741         xorl    %ebx,           %esi
 1742         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1743         xorl    %ebx,           %esi
 1744         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1745         xorl    %ebx,           %esi
 1746 
 1747         /* Round 10 */
 1748         movl    80(%ebp),       %eax
 1749         xorl    %ebx,           %ebx
 1750         movl    84(%ebp),       %edx
 1751         xorl    %esi,           %eax
 1752         xorl    %esi,           %edx
 1753         andl    $0xfcfcfcfc,    %eax
 1754         andl    $0xcfcfcfcf,    %edx
 1755         movb    %al,            %bl
 1756         movb    %ah,            %cl
 1757         rorl    $4,             %edx
 1758         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1759         movb    %dl,            %bl
 1760         xorl    %ebp,           %edi
 1761         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1762         xorl    %ebp,           %edi
 1763         movb    %dh,            %cl
 1764         shrl    $16,            %eax
 1765         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1766         xorl    %ebp,           %edi
 1767         movb    %ah,            %bl
 1768         shrl    $16,            %edx
 1769         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1770         xorl    %ebp,           %edi
 1771         movl    24(%esp),       %ebp
 1772         movb    %dh,            %cl
 1773         andl    $0xff,          %eax
 1774         andl    $0xff,          %edx
 1775         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1776         xorl    %ebx,           %edi
 1777         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1778         xorl    %ebx,           %edi
 1779         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1780         xorl    %ebx,           %edi
 1781         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1782         xorl    %ebx,           %edi
 1783 
 1784         /* Round 11 */
 1785         movl    88(%ebp),       %eax
 1786         xorl    %ebx,           %ebx
 1787         movl    92(%ebp),       %edx
 1788         xorl    %edi,           %eax
 1789         xorl    %edi,           %edx
 1790         andl    $0xfcfcfcfc,    %eax
 1791         andl    $0xcfcfcfcf,    %edx
 1792         movb    %al,            %bl
 1793         movb    %ah,            %cl
 1794         rorl    $4,             %edx
 1795         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1796         movb    %dl,            %bl
 1797         xorl    %ebp,           %esi
 1798         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1799         xorl    %ebp,           %esi
 1800         movb    %dh,            %cl
 1801         shrl    $16,            %eax
 1802         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1803         xorl    %ebp,           %esi
 1804         movb    %ah,            %bl
 1805         shrl    $16,            %edx
 1806         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1807         xorl    %ebp,           %esi
 1808         movl    24(%esp),       %ebp
 1809         movb    %dh,            %cl
 1810         andl    $0xff,          %eax
 1811         andl    $0xff,          %edx
 1812         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1813         xorl    %ebx,           %esi
 1814         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1815         xorl    %ebx,           %esi
 1816         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1817         xorl    %ebx,           %esi
 1818         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1819         xorl    %ebx,           %esi
 1820 
 1821         /* Round 12 */
 1822         movl    96(%ebp),       %eax
 1823         xorl    %ebx,           %ebx
 1824         movl    100(%ebp),      %edx
 1825         xorl    %esi,           %eax
 1826         xorl    %esi,           %edx
 1827         andl    $0xfcfcfcfc,    %eax
 1828         andl    $0xcfcfcfcf,    %edx
 1829         movb    %al,            %bl
 1830         movb    %ah,            %cl
 1831         rorl    $4,             %edx
 1832         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1833         movb    %dl,            %bl
 1834         xorl    %ebp,           %edi
 1835         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1836         xorl    %ebp,           %edi
 1837         movb    %dh,            %cl
 1838         shrl    $16,            %eax
 1839         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1840         xorl    %ebp,           %edi
 1841         movb    %ah,            %bl
 1842         shrl    $16,            %edx
 1843         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1844         xorl    %ebp,           %edi
 1845         movl    24(%esp),       %ebp
 1846         movb    %dh,            %cl
 1847         andl    $0xff,          %eax
 1848         andl    $0xff,          %edx
 1849         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1850         xorl    %ebx,           %edi
 1851         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1852         xorl    %ebx,           %edi
 1853         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1854         xorl    %ebx,           %edi
 1855         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1856         xorl    %ebx,           %edi
 1857 
 1858         /* Round 13 */
 1859         movl    104(%ebp),      %eax
 1860         xorl    %ebx,           %ebx
 1861         movl    108(%ebp),      %edx
 1862         xorl    %edi,           %eax
 1863         xorl    %edi,           %edx
 1864         andl    $0xfcfcfcfc,    %eax
 1865         andl    $0xcfcfcfcf,    %edx
 1866         movb    %al,            %bl
 1867         movb    %ah,            %cl
 1868         rorl    $4,             %edx
 1869         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1870         movb    %dl,            %bl
 1871         xorl    %ebp,           %esi
 1872         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1873         xorl    %ebp,           %esi
 1874         movb    %dh,            %cl
 1875         shrl    $16,            %eax
 1876         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1877         xorl    %ebp,           %esi
 1878         movb    %ah,            %bl
 1879         shrl    $16,            %edx
 1880         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1881         xorl    %ebp,           %esi
 1882         movl    24(%esp),       %ebp
 1883         movb    %dh,            %cl
 1884         andl    $0xff,          %eax
 1885         andl    $0xff,          %edx
 1886         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1887         xorl    %ebx,           %esi
 1888         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1889         xorl    %ebx,           %esi
 1890         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1891         xorl    %ebx,           %esi
 1892         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1893         xorl    %ebx,           %esi
 1894 
 1895         /* Round 14 */
 1896         movl    112(%ebp),      %eax
 1897         xorl    %ebx,           %ebx
 1898         movl    116(%ebp),      %edx
 1899         xorl    %esi,           %eax
 1900         xorl    %esi,           %edx
 1901         andl    $0xfcfcfcfc,    %eax
 1902         andl    $0xcfcfcfcf,    %edx
 1903         movb    %al,            %bl
 1904         movb    %ah,            %cl
 1905         rorl    $4,             %edx
 1906         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1907         movb    %dl,            %bl
 1908         xorl    %ebp,           %edi
 1909         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1910         xorl    %ebp,           %edi
 1911         movb    %dh,            %cl
 1912         shrl    $16,            %eax
 1913         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1914         xorl    %ebp,           %edi
 1915         movb    %ah,            %bl
 1916         shrl    $16,            %edx
 1917         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1918         xorl    %ebp,           %edi
 1919         movl    24(%esp),       %ebp
 1920         movb    %dh,            %cl
 1921         andl    $0xff,          %eax
 1922         andl    $0xff,          %edx
 1923         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1924         xorl    %ebx,           %edi
 1925         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1926         xorl    %ebx,           %edi
 1927         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1928         xorl    %ebx,           %edi
 1929         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1930         xorl    %ebx,           %edi
 1931 
 1932         /* Round 15 */
 1933         movl    120(%ebp),      %eax
 1934         xorl    %ebx,           %ebx
 1935         movl    124(%ebp),      %edx
 1936         xorl    %edi,           %eax
 1937         xorl    %edi,           %edx
 1938         andl    $0xfcfcfcfc,    %eax
 1939         andl    $0xcfcfcfcf,    %edx
 1940         movb    %al,            %bl
 1941         movb    %ah,            %cl
 1942         rorl    $4,             %edx
 1943         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1944         movb    %dl,            %bl
 1945         xorl    %ebp,           %esi
 1946         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1947         xorl    %ebp,           %esi
 1948         movb    %dh,            %cl
 1949         shrl    $16,            %eax
 1950         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1951         xorl    %ebp,           %esi
 1952         movb    %ah,            %bl
 1953         shrl    $16,            %edx
 1954         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1955         xorl    %ebp,           %esi
 1956         movl    24(%esp),       %ebp
 1957         movb    %dh,            %cl
 1958         andl    $0xff,          %eax
 1959         andl    $0xff,          %edx
 1960         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 1961         xorl    %ebx,           %esi
 1962         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 1963         xorl    %ebx,           %esi
 1964         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 1965         xorl    %ebx,           %esi
 1966         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 1967         xorl    %ebx,           %esi
 1968         jmp     .L003end
 1969 .L002start_decrypt:
 1970 
 1971         /* Round 15 */
 1972         movl    120(%ebp),      %eax
 1973         xorl    %ebx,           %ebx
 1974         movl    124(%ebp),      %edx
 1975         xorl    %esi,           %eax
 1976         xorl    %esi,           %edx
 1977         andl    $0xfcfcfcfc,    %eax
 1978         andl    $0xcfcfcfcf,    %edx
 1979         movb    %al,            %bl
 1980         movb    %ah,            %cl
 1981         rorl    $4,             %edx
 1982         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 1983         movb    %dl,            %bl
 1984         xorl    %ebp,           %edi
 1985         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1986         xorl    %ebp,           %edi
 1987         movb    %dh,            %cl
 1988         shrl    $16,            %eax
 1989         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 1990         xorl    %ebp,           %edi
 1991         movb    %ah,            %bl
 1992         shrl    $16,            %edx
 1993         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 1994         xorl    %ebp,           %edi
 1995         movl    24(%esp),       %ebp
 1996         movb    %dh,            %cl
 1997         andl    $0xff,          %eax
 1998         andl    $0xff,          %edx
 1999         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2000         xorl    %ebx,           %edi
 2001         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2002         xorl    %ebx,           %edi
 2003         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2004         xorl    %ebx,           %edi
 2005         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2006         xorl    %ebx,           %edi
 2007 
 2008         /* Round 14 */
 2009         movl    112(%ebp),      %eax
 2010         xorl    %ebx,           %ebx
 2011         movl    116(%ebp),      %edx
 2012         xorl    %edi,           %eax
 2013         xorl    %edi,           %edx
 2014         andl    $0xfcfcfcfc,    %eax
 2015         andl    $0xcfcfcfcf,    %edx
 2016         movb    %al,            %bl
 2017         movb    %ah,            %cl
 2018         rorl    $4,             %edx
 2019         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2020         movb    %dl,            %bl
 2021         xorl    %ebp,           %esi
 2022         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2023         xorl    %ebp,           %esi
 2024         movb    %dh,            %cl
 2025         shrl    $16,            %eax
 2026         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2027         xorl    %ebp,           %esi
 2028         movb    %ah,            %bl
 2029         shrl    $16,            %edx
 2030         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2031         xorl    %ebp,           %esi
 2032         movl    24(%esp),       %ebp
 2033         movb    %dh,            %cl
 2034         andl    $0xff,          %eax
 2035         andl    $0xff,          %edx
 2036         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2037         xorl    %ebx,           %esi
 2038         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2039         xorl    %ebx,           %esi
 2040         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2041         xorl    %ebx,           %esi
 2042         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2043         xorl    %ebx,           %esi
 2044 
 2045         /* Round 13 */
 2046         movl    104(%ebp),      %eax
 2047         xorl    %ebx,           %ebx
 2048         movl    108(%ebp),      %edx
 2049         xorl    %esi,           %eax
 2050         xorl    %esi,           %edx
 2051         andl    $0xfcfcfcfc,    %eax
 2052         andl    $0xcfcfcfcf,    %edx
 2053         movb    %al,            %bl
 2054         movb    %ah,            %cl
 2055         rorl    $4,             %edx
 2056         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2057         movb    %dl,            %bl
 2058         xorl    %ebp,           %edi
 2059         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2060         xorl    %ebp,           %edi
 2061         movb    %dh,            %cl
 2062         shrl    $16,            %eax
 2063         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2064         xorl    %ebp,           %edi
 2065         movb    %ah,            %bl
 2066         shrl    $16,            %edx
 2067         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2068         xorl    %ebp,           %edi
 2069         movl    24(%esp),       %ebp
 2070         movb    %dh,            %cl
 2071         andl    $0xff,          %eax
 2072         andl    $0xff,          %edx
 2073         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2074         xorl    %ebx,           %edi
 2075         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2076         xorl    %ebx,           %edi
 2077         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2078         xorl    %ebx,           %edi
 2079         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2080         xorl    %ebx,           %edi
 2081 
 2082         /* Round 12 */
 2083         movl    96(%ebp),       %eax
 2084         xorl    %ebx,           %ebx
 2085         movl    100(%ebp),      %edx
 2086         xorl    %edi,           %eax
 2087         xorl    %edi,           %edx
 2088         andl    $0xfcfcfcfc,    %eax
 2089         andl    $0xcfcfcfcf,    %edx
 2090         movb    %al,            %bl
 2091         movb    %ah,            %cl
 2092         rorl    $4,             %edx
 2093         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2094         movb    %dl,            %bl
 2095         xorl    %ebp,           %esi
 2096         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2097         xorl    %ebp,           %esi
 2098         movb    %dh,            %cl
 2099         shrl    $16,            %eax
 2100         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2101         xorl    %ebp,           %esi
 2102         movb    %ah,            %bl
 2103         shrl    $16,            %edx
 2104         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2105         xorl    %ebp,           %esi
 2106         movl    24(%esp),       %ebp
 2107         movb    %dh,            %cl
 2108         andl    $0xff,          %eax
 2109         andl    $0xff,          %edx
 2110         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2111         xorl    %ebx,           %esi
 2112         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2113         xorl    %ebx,           %esi
 2114         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2115         xorl    %ebx,           %esi
 2116         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2117         xorl    %ebx,           %esi
 2118 
 2119         /* Round 11 */
 2120         movl    88(%ebp),       %eax
 2121         xorl    %ebx,           %ebx
 2122         movl    92(%ebp),       %edx
 2123         xorl    %esi,           %eax
 2124         xorl    %esi,           %edx
 2125         andl    $0xfcfcfcfc,    %eax
 2126         andl    $0xcfcfcfcf,    %edx
 2127         movb    %al,            %bl
 2128         movb    %ah,            %cl
 2129         rorl    $4,             %edx
 2130         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2131         movb    %dl,            %bl
 2132         xorl    %ebp,           %edi
 2133         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2134         xorl    %ebp,           %edi
 2135         movb    %dh,            %cl
 2136         shrl    $16,            %eax
 2137         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2138         xorl    %ebp,           %edi
 2139         movb    %ah,            %bl
 2140         shrl    $16,            %edx
 2141         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2142         xorl    %ebp,           %edi
 2143         movl    24(%esp),       %ebp
 2144         movb    %dh,            %cl
 2145         andl    $0xff,          %eax
 2146         andl    $0xff,          %edx
 2147         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2148         xorl    %ebx,           %edi
 2149         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2150         xorl    %ebx,           %edi
 2151         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2152         xorl    %ebx,           %edi
 2153         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2154         xorl    %ebx,           %edi
 2155 
 2156         /* Round 10 */
 2157         movl    80(%ebp),       %eax
 2158         xorl    %ebx,           %ebx
 2159         movl    84(%ebp),       %edx
 2160         xorl    %edi,           %eax
 2161         xorl    %edi,           %edx
 2162         andl    $0xfcfcfcfc,    %eax
 2163         andl    $0xcfcfcfcf,    %edx
 2164         movb    %al,            %bl
 2165         movb    %ah,            %cl
 2166         rorl    $4,             %edx
 2167         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2168         movb    %dl,            %bl
 2169         xorl    %ebp,           %esi
 2170         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2171         xorl    %ebp,           %esi
 2172         movb    %dh,            %cl
 2173         shrl    $16,            %eax
 2174         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2175         xorl    %ebp,           %esi
 2176         movb    %ah,            %bl
 2177         shrl    $16,            %edx
 2178         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2179         xorl    %ebp,           %esi
 2180         movl    24(%esp),       %ebp
 2181         movb    %dh,            %cl
 2182         andl    $0xff,          %eax
 2183         andl    $0xff,          %edx
 2184         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2185         xorl    %ebx,           %esi
 2186         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2187         xorl    %ebx,           %esi
 2188         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2189         xorl    %ebx,           %esi
 2190         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2191         xorl    %ebx,           %esi
 2192 
 2193         /* Round 9 */
 2194         movl    72(%ebp),       %eax
 2195         xorl    %ebx,           %ebx
 2196         movl    76(%ebp),       %edx
 2197         xorl    %esi,           %eax
 2198         xorl    %esi,           %edx
 2199         andl    $0xfcfcfcfc,    %eax
 2200         andl    $0xcfcfcfcf,    %edx
 2201         movb    %al,            %bl
 2202         movb    %ah,            %cl
 2203         rorl    $4,             %edx
 2204         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2205         movb    %dl,            %bl
 2206         xorl    %ebp,           %edi
 2207         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2208         xorl    %ebp,           %edi
 2209         movb    %dh,            %cl
 2210         shrl    $16,            %eax
 2211         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2212         xorl    %ebp,           %edi
 2213         movb    %ah,            %bl
 2214         shrl    $16,            %edx
 2215         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2216         xorl    %ebp,           %edi
 2217         movl    24(%esp),       %ebp
 2218         movb    %dh,            %cl
 2219         andl    $0xff,          %eax
 2220         andl    $0xff,          %edx
 2221         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2222         xorl    %ebx,           %edi
 2223         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2224         xorl    %ebx,           %edi
 2225         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2226         xorl    %ebx,           %edi
 2227         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2228         xorl    %ebx,           %edi
 2229 
 2230         /* Round 8 */
 2231         movl    64(%ebp),       %eax
 2232         xorl    %ebx,           %ebx
 2233         movl    68(%ebp),       %edx
 2234         xorl    %edi,           %eax
 2235         xorl    %edi,           %edx
 2236         andl    $0xfcfcfcfc,    %eax
 2237         andl    $0xcfcfcfcf,    %edx
 2238         movb    %al,            %bl
 2239         movb    %ah,            %cl
 2240         rorl    $4,             %edx
 2241         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2242         movb    %dl,            %bl
 2243         xorl    %ebp,           %esi
 2244         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2245         xorl    %ebp,           %esi
 2246         movb    %dh,            %cl
 2247         shrl    $16,            %eax
 2248         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2249         xorl    %ebp,           %esi
 2250         movb    %ah,            %bl
 2251         shrl    $16,            %edx
 2252         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2253         xorl    %ebp,           %esi
 2254         movl    24(%esp),       %ebp
 2255         movb    %dh,            %cl
 2256         andl    $0xff,          %eax
 2257         andl    $0xff,          %edx
 2258         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2259         xorl    %ebx,           %esi
 2260         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2261         xorl    %ebx,           %esi
 2262         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2263         xorl    %ebx,           %esi
 2264         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2265         xorl    %ebx,           %esi
 2266 
 2267         /* Round 7 */
 2268         movl    56(%ebp),       %eax
 2269         xorl    %ebx,           %ebx
 2270         movl    60(%ebp),       %edx
 2271         xorl    %esi,           %eax
 2272         xorl    %esi,           %edx
 2273         andl    $0xfcfcfcfc,    %eax
 2274         andl    $0xcfcfcfcf,    %edx
 2275         movb    %al,            %bl
 2276         movb    %ah,            %cl
 2277         rorl    $4,             %edx
 2278         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2279         movb    %dl,            %bl
 2280         xorl    %ebp,           %edi
 2281         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2282         xorl    %ebp,           %edi
 2283         movb    %dh,            %cl
 2284         shrl    $16,            %eax
 2285         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2286         xorl    %ebp,           %edi
 2287         movb    %ah,            %bl
 2288         shrl    $16,            %edx
 2289         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2290         xorl    %ebp,           %edi
 2291         movl    24(%esp),       %ebp
 2292         movb    %dh,            %cl
 2293         andl    $0xff,          %eax
 2294         andl    $0xff,          %edx
 2295         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2296         xorl    %ebx,           %edi
 2297         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2298         xorl    %ebx,           %edi
 2299         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2300         xorl    %ebx,           %edi
 2301         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2302         xorl    %ebx,           %edi
 2303 
 2304         /* Round 6 */
 2305         movl    48(%ebp),       %eax
 2306         xorl    %ebx,           %ebx
 2307         movl    52(%ebp),       %edx
 2308         xorl    %edi,           %eax
 2309         xorl    %edi,           %edx
 2310         andl    $0xfcfcfcfc,    %eax
 2311         andl    $0xcfcfcfcf,    %edx
 2312         movb    %al,            %bl
 2313         movb    %ah,            %cl
 2314         rorl    $4,             %edx
 2315         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2316         movb    %dl,            %bl
 2317         xorl    %ebp,           %esi
 2318         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2319         xorl    %ebp,           %esi
 2320         movb    %dh,            %cl
 2321         shrl    $16,            %eax
 2322         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2323         xorl    %ebp,           %esi
 2324         movb    %ah,            %bl
 2325         shrl    $16,            %edx
 2326         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2327         xorl    %ebp,           %esi
 2328         movl    24(%esp),       %ebp
 2329         movb    %dh,            %cl
 2330         andl    $0xff,          %eax
 2331         andl    $0xff,          %edx
 2332         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2333         xorl    %ebx,           %esi
 2334         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2335         xorl    %ebx,           %esi
 2336         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2337         xorl    %ebx,           %esi
 2338         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2339         xorl    %ebx,           %esi
 2340 
 2341         /* Round 5 */
 2342         movl    40(%ebp),       %eax
 2343         xorl    %ebx,           %ebx
 2344         movl    44(%ebp),       %edx
 2345         xorl    %esi,           %eax
 2346         xorl    %esi,           %edx
 2347         andl    $0xfcfcfcfc,    %eax
 2348         andl    $0xcfcfcfcf,    %edx
 2349         movb    %al,            %bl
 2350         movb    %ah,            %cl
 2351         rorl    $4,             %edx
 2352         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2353         movb    %dl,            %bl
 2354         xorl    %ebp,           %edi
 2355         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2356         xorl    %ebp,           %edi
 2357         movb    %dh,            %cl
 2358         shrl    $16,            %eax
 2359         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2360         xorl    %ebp,           %edi
 2361         movb    %ah,            %bl
 2362         shrl    $16,            %edx
 2363         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2364         xorl    %ebp,           %edi
 2365         movl    24(%esp),       %ebp
 2366         movb    %dh,            %cl
 2367         andl    $0xff,          %eax
 2368         andl    $0xff,          %edx
 2369         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2370         xorl    %ebx,           %edi
 2371         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2372         xorl    %ebx,           %edi
 2373         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2374         xorl    %ebx,           %edi
 2375         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2376         xorl    %ebx,           %edi
 2377 
 2378         /* Round 4 */
 2379         movl    32(%ebp),       %eax
 2380         xorl    %ebx,           %ebx
 2381         movl    36(%ebp),       %edx
 2382         xorl    %edi,           %eax
 2383         xorl    %edi,           %edx
 2384         andl    $0xfcfcfcfc,    %eax
 2385         andl    $0xcfcfcfcf,    %edx
 2386         movb    %al,            %bl
 2387         movb    %ah,            %cl
 2388         rorl    $4,             %edx
 2389         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2390         movb    %dl,            %bl
 2391         xorl    %ebp,           %esi
 2392         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2393         xorl    %ebp,           %esi
 2394         movb    %dh,            %cl
 2395         shrl    $16,            %eax
 2396         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2397         xorl    %ebp,           %esi
 2398         movb    %ah,            %bl
 2399         shrl    $16,            %edx
 2400         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2401         xorl    %ebp,           %esi
 2402         movl    24(%esp),       %ebp
 2403         movb    %dh,            %cl
 2404         andl    $0xff,          %eax
 2405         andl    $0xff,          %edx
 2406         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2407         xorl    %ebx,           %esi
 2408         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2409         xorl    %ebx,           %esi
 2410         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2411         xorl    %ebx,           %esi
 2412         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2413         xorl    %ebx,           %esi
 2414 
 2415         /* Round 3 */
 2416         movl    24(%ebp),       %eax
 2417         xorl    %ebx,           %ebx
 2418         movl    28(%ebp),       %edx
 2419         xorl    %esi,           %eax
 2420         xorl    %esi,           %edx
 2421         andl    $0xfcfcfcfc,    %eax
 2422         andl    $0xcfcfcfcf,    %edx
 2423         movb    %al,            %bl
 2424         movb    %ah,            %cl
 2425         rorl    $4,             %edx
 2426         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2427         movb    %dl,            %bl
 2428         xorl    %ebp,           %edi
 2429         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2430         xorl    %ebp,           %edi
 2431         movb    %dh,            %cl
 2432         shrl    $16,            %eax
 2433         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2434         xorl    %ebp,           %edi
 2435         movb    %ah,            %bl
 2436         shrl    $16,            %edx
 2437         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2438         xorl    %ebp,           %edi
 2439         movl    24(%esp),       %ebp
 2440         movb    %dh,            %cl
 2441         andl    $0xff,          %eax
 2442         andl    $0xff,          %edx
 2443         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2444         xorl    %ebx,           %edi
 2445         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2446         xorl    %ebx,           %edi
 2447         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2448         xorl    %ebx,           %edi
 2449         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2450         xorl    %ebx,           %edi
 2451 
 2452         /* Round 2 */
 2453         movl    16(%ebp),       %eax
 2454         xorl    %ebx,           %ebx
 2455         movl    20(%ebp),       %edx
 2456         xorl    %edi,           %eax
 2457         xorl    %edi,           %edx
 2458         andl    $0xfcfcfcfc,    %eax
 2459         andl    $0xcfcfcfcf,    %edx
 2460         movb    %al,            %bl
 2461         movb    %ah,            %cl
 2462         rorl    $4,             %edx
 2463         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2464         movb    %dl,            %bl
 2465         xorl    %ebp,           %esi
 2466         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2467         xorl    %ebp,           %esi
 2468         movb    %dh,            %cl
 2469         shrl    $16,            %eax
 2470         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2471         xorl    %ebp,           %esi
 2472         movb    %ah,            %bl
 2473         shrl    $16,            %edx
 2474         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2475         xorl    %ebp,           %esi
 2476         movl    24(%esp),       %ebp
 2477         movb    %dh,            %cl
 2478         andl    $0xff,          %eax
 2479         andl    $0xff,          %edx
 2480         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2481         xorl    %ebx,           %esi
 2482         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2483         xorl    %ebx,           %esi
 2484         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2485         xorl    %ebx,           %esi
 2486         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2487         xorl    %ebx,           %esi
 2488 
 2489         /* Round 1 */
 2490         movl    8(%ebp),        %eax
 2491         xorl    %ebx,           %ebx
 2492         movl    12(%ebp),       %edx
 2493         xorl    %esi,           %eax
 2494         xorl    %esi,           %edx
 2495         andl    $0xfcfcfcfc,    %eax
 2496         andl    $0xcfcfcfcf,    %edx
 2497         movb    %al,            %bl
 2498         movb    %ah,            %cl
 2499         rorl    $4,             %edx
 2500         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2501         movb    %dl,            %bl
 2502         xorl    %ebp,           %edi
 2503         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2504         xorl    %ebp,           %edi
 2505         movb    %dh,            %cl
 2506         shrl    $16,            %eax
 2507         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2508         xorl    %ebp,           %edi
 2509         movb    %ah,            %bl
 2510         shrl    $16,            %edx
 2511         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2512         xorl    %ebp,           %edi
 2513         movl    24(%esp),       %ebp
 2514         movb    %dh,            %cl
 2515         andl    $0xff,          %eax
 2516         andl    $0xff,          %edx
 2517         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2518         xorl    %ebx,           %edi
 2519         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2520         xorl    %ebx,           %edi
 2521         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2522         xorl    %ebx,           %edi
 2523         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2524         xorl    %ebx,           %edi
 2525 
 2526         /* Round 0 */
 2527         movl    (%ebp),         %eax
 2528         xorl    %ebx,           %ebx
 2529         movl    4(%ebp),        %edx
 2530         xorl    %edi,           %eax
 2531         xorl    %edi,           %edx
 2532         andl    $0xfcfcfcfc,    %eax
 2533         andl    $0xcfcfcfcf,    %edx
 2534         movb    %al,            %bl
 2535         movb    %ah,            %cl
 2536         rorl    $4,             %edx
 2537         movl          _C_LABEL(des_SPtrans)(%ebx),%ebp
 2538         movb    %dl,            %bl
 2539         xorl    %ebp,           %esi
 2540         movl    0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2541         xorl    %ebp,           %esi
 2542         movb    %dh,            %cl
 2543         shrl    $16,            %eax
 2544         movl    0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
 2545         xorl    %ebp,           %esi
 2546         movb    %ah,            %bl
 2547         shrl    $16,            %edx
 2548         movl    0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
 2549         xorl    %ebp,           %esi
 2550         movl    24(%esp),       %ebp
 2551         movb    %dh,            %cl
 2552         andl    $0xff,          %eax
 2553         andl    $0xff,          %edx
 2554         movl    0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
 2555         xorl    %ebx,           %esi
 2556         movl    0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
 2557         xorl    %ebx,           %esi
 2558         movl    0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
 2559         xorl    %ebx,           %esi
 2560         movl    0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
 2561         xorl    %ebx,           %esi
 2562 .L003end:
 2563 
 2564         /* Fixup */
 2565         rorl    $3,             %edi
 2566         movl    20(%esp),       %eax
 2567         rorl    $3,             %esi
 2568         movl    %edi,           (%eax)
 2569         movl    %esi,           4(%eax)
 2570         popl    %ebp
 2571         popl    %ebx
 2572         popl    %edi
 2573         popl    %esi
 2574         ret
 2575 END(des_encrypt2)
 2576 
 2577 ENTRY(des_encrypt3)
 2578         pushl   %ebx
 2579         movl    8(%esp),        %ebx
 2580         pushl   %ebp
 2581         pushl   %esi
 2582         pushl   %edi
 2583 
 2584         /* Load the data words */
 2585         movl    (%ebx),         %edi
 2586         movl    4(%ebx),        %esi
 2587         subl    $12,            %esp
 2588 
 2589         /* IP */
 2590         roll    $4,             %edi
 2591         movl    %edi,           %edx
 2592         xorl    %esi,           %edi
 2593         andl    $0xf0f0f0f0,    %edi
 2594         xorl    %edi,           %edx
 2595         xorl    %edi,           %esi
 2596 
 2597         roll    $20,            %esi
 2598         movl    %esi,           %edi
 2599         xorl    %edx,           %esi
 2600         andl    $0xfff0000f,    %esi
 2601         xorl    %esi,           %edi
 2602         xorl    %esi,           %edx
 2603 
 2604         roll    $14,            %edi
 2605         movl    %edi,           %esi
 2606         xorl    %edx,           %edi
 2607         andl    $0x33333333,    %edi
 2608         xorl    %edi,           %esi
 2609         xorl    %edi,           %edx
 2610 
 2611         roll    $22,            %edx
 2612         movl    %edx,           %edi
 2613         xorl    %esi,           %edx
 2614         andl    $0x03fc03fc,    %edx
 2615         xorl    %edx,           %edi
 2616         xorl    %edx,           %esi
 2617 
 2618         roll    $9,             %edi
 2619         movl    %edi,           %edx
 2620         xorl    %esi,           %edi
 2621         andl    $0xaaaaaaaa,    %edi
 2622         xorl    %edi,           %edx
 2623         xorl    %edi,           %esi
 2624 
 2625         rorl    $3,             %edx
 2626         rorl    $2,             %esi
 2627         movl    %esi,           4(%ebx)
 2628         movl    36(%esp),       %eax
 2629         movl    %edx,           (%ebx)
 2630         movl    40(%esp),       %edi
 2631         movl    44(%esp),       %esi
 2632         movl    $1,             8(%esp)
 2633         movl    %eax,           4(%esp)
 2634         movl    %ebx,           (%esp)
 2635         call    _C_LABEL(des_encrypt2)
 2636         movl    $0,             8(%esp)
 2637         movl    %edi,           4(%esp)
 2638         movl    %ebx,           (%esp)
 2639         call    _C_LABEL(des_encrypt2)
 2640         movl    $1,             8(%esp)
 2641         movl    %esi,           4(%esp)
 2642         movl    %ebx,           (%esp)
 2643         call    _C_LABEL(des_encrypt2)
 2644         addl    $12,            %esp
 2645         movl    (%ebx),         %edi
 2646         movl    4(%ebx),        %esi
 2647 
 2648         /* FP */
 2649         roll    $2,             %esi
 2650         roll    $3,             %edi
 2651         movl    %edi,           %eax
 2652         xorl    %esi,           %edi
 2653         andl    $0xaaaaaaaa,    %edi
 2654         xorl    %edi,           %eax
 2655         xorl    %edi,           %esi
 2656 
 2657         roll    $23,            %eax
 2658         movl    %eax,           %edi
 2659         xorl    %esi,           %eax
 2660         andl    $0x03fc03fc,    %eax
 2661         xorl    %eax,           %edi
 2662         xorl    %eax,           %esi
 2663 
 2664         roll    $10,            %edi
 2665         movl    %edi,           %eax
 2666         xorl    %esi,           %edi
 2667         andl    $0x33333333,    %edi
 2668         xorl    %edi,           %eax
 2669         xorl    %edi,           %esi
 2670 
 2671         roll    $18,            %esi
 2672         movl    %esi,           %edi
 2673         xorl    %eax,           %esi
 2674         andl    $0xfff0000f,    %esi
 2675         xorl    %esi,           %edi
 2676         xorl    %esi,           %eax
 2677 
 2678         roll    $12,            %edi
 2679         movl    %edi,           %esi
 2680         xorl    %eax,           %edi
 2681         andl    $0xf0f0f0f0,    %edi
 2682         xorl    %edi,           %esi
 2683         xorl    %edi,           %eax
 2684 
 2685         rorl    $4,             %eax
 2686         movl    %eax,           (%ebx)
 2687         movl    %esi,           4(%ebx)
 2688         popl    %edi
 2689         popl    %esi
 2690         popl    %ebp
 2691         popl    %ebx
 2692         ret
 2693 END(des_encrypt3)
 2694 
 2695 ENTRY(des_decrypt3)
 2696         pushl   %ebx
 2697         movl    8(%esp),        %ebx
 2698         pushl   %ebp
 2699         pushl   %esi
 2700         pushl   %edi
 2701 
 2702         /* Load the data words */
 2703         movl    (%ebx),         %edi
 2704         movl    4(%ebx),        %esi
 2705         subl    $12,            %esp
 2706 
 2707         /* IP */
 2708         roll    $4,             %edi
 2709         movl    %edi,           %edx
 2710         xorl    %esi,           %edi
 2711         andl    $0xf0f0f0f0,    %edi
 2712         xorl    %edi,           %edx
 2713         xorl    %edi,           %esi
 2714 
 2715         roll    $20,            %esi
 2716         movl    %esi,           %edi
 2717         xorl    %edx,           %esi
 2718         andl    $0xfff0000f,    %esi
 2719         xorl    %esi,           %edi
 2720         xorl    %esi,           %edx
 2721 
 2722         roll    $14,            %edi
 2723         movl    %edi,           %esi
 2724         xorl    %edx,           %edi
 2725         andl    $0x33333333,    %edi
 2726         xorl    %edi,           %esi
 2727         xorl    %edi,           %edx
 2728 
 2729         roll    $22,            %edx
 2730         movl    %edx,           %edi
 2731         xorl    %esi,           %edx
 2732         andl    $0x03fc03fc,    %edx
 2733         xorl    %edx,           %edi
 2734         xorl    %edx,           %esi
 2735 
 2736         roll    $9,             %edi
 2737         movl    %edi,           %edx
 2738         xorl    %esi,           %edi
 2739         andl    $0xaaaaaaaa,    %edi
 2740         xorl    %edi,           %edx
 2741         xorl    %edi,           %esi
 2742 
 2743         rorl    $3,             %edx
 2744         rorl    $2,             %esi
 2745         movl    %esi,           4(%ebx)
 2746         movl    36(%esp),       %esi
 2747         movl    %edx,           (%ebx)
 2748         movl    40(%esp),       %edi
 2749         movl    44(%esp),       %eax
 2750         movl    $0,             8(%esp)
 2751         movl    %eax,           4(%esp)
 2752         movl    %ebx,           (%esp)
 2753         call    _C_LABEL(des_encrypt2)
 2754         movl    $1,             8(%esp)
 2755         movl    %edi,           4(%esp)
 2756         movl    %ebx,           (%esp)
 2757         call    _C_LABEL(des_encrypt2)
 2758         movl    $0,             8(%esp)
 2759         movl    %esi,           4(%esp)
 2760         movl    %ebx,           (%esp)
 2761         call    _C_LABEL(des_encrypt2)
 2762         addl    $12,            %esp
 2763         movl    (%ebx),         %edi
 2764         movl    4(%ebx),        %esi
 2765 
 2766         /* FP */
 2767         roll    $2,             %esi
 2768         roll    $3,             %edi
 2769         movl    %edi,           %eax
 2770         xorl    %esi,           %edi
 2771         andl    $0xaaaaaaaa,    %edi
 2772         xorl    %edi,           %eax
 2773         xorl    %edi,           %esi
 2774 
 2775         roll    $23,            %eax
 2776         movl    %eax,           %edi
 2777         xorl    %esi,           %eax
 2778         andl    $0x03fc03fc,    %eax
 2779         xorl    %eax,           %edi
 2780         xorl    %eax,           %esi
 2781 
 2782         roll    $10,            %edi
 2783         movl    %edi,           %eax
 2784         xorl    %esi,           %edi
 2785         andl    $0x33333333,    %edi
 2786         xorl    %edi,           %eax
 2787         xorl    %edi,           %esi
 2788 
 2789         roll    $18,            %esi
 2790         movl    %esi,           %edi
 2791         xorl    %eax,           %esi
 2792         andl    $0xfff0000f,    %esi
 2793         xorl    %esi,           %edi
 2794         xorl    %esi,           %eax
 2795 
 2796         roll    $12,            %edi
 2797         movl    %edi,           %esi
 2798         xorl    %eax,           %edi
 2799         andl    $0xf0f0f0f0,    %edi
 2800         xorl    %edi,           %esi
 2801         xorl    %edi,           %eax
 2802 
 2803         rorl    $4,             %eax
 2804         movl    %eax,           (%ebx)
 2805         movl    %esi,           4(%ebx)
 2806         popl    %edi
 2807         popl    %esi
 2808         popl    %ebp
 2809         popl    %ebx
 2810         ret
 2811 END(des_decrypt3)

Cache object: 75cb2e7553b96f6b0bf8aeec20baacca


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.