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