Path: blob/main/sys/crypto/des/arch/i386/des_enc.S
39566 views
/* $NetBSD: des_enc.S,v 1.1 2001/09/09 11:01:02 tls Exp $ */12/* Copyright (C) 1995-1997 Eric Young ([email protected])3* All rights reserved.4*5* This package is an SSL implementation written6* by Eric Young ([email protected]).7* The implementation was written so as to conform with Netscapes SSL.8*9* This library is free for commercial and non-commercial use as long as10* the following conditions are aheared to. The following conditions11* apply to all code found in this distribution, be it the RC4, RSA,12* lhash, DES, etc., code; not just the SSL code. The SSL documentation13* included with this distribution is covered by the same copyright terms14* except that the holder is Tim Hudson ([email protected]).15*16* Copyright remains Eric Young's, and as such any Copyright notices in17* the code are not to be removed.18* If this package is used in a product, Eric Young should be given attribution19* as the author of the parts of the library used.20* This can be in the form of a textual message at program startup or21* in documentation (online or textual) provided with the package.22*23* Redistribution and use in source and binary forms, with or without24* modification, are permitted provided that the following conditions25* are met:26* 1. Redistributions of source code must retain the copyright27* notice, this list of conditions and the following disclaimer.28* 2. Redistributions in binary form must reproduce the above copyright29* notice, this list of conditions and the following disclaimer in the30* documentation and/or other materials provided with the distribution.31* 3. All advertising materials mentioning features or use of this software32* must display the following acknowledgement:33* "This product includes cryptographic software written by34* Eric Young ([email protected])"35* The word 'cryptographic' can be left out if the rouines from the library36* being used are not cryptographic related :-).37* 4. If you include any Windows specific code (or a derivative thereof) from38* the apps directory (application code) you must include an acknowledgement:39* "This product includes software written by Tim Hudson ([email protected])"40*41* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND42* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE43* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE44* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE45* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL46* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS47* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)48* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT49* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY50* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF51* SUCH DAMAGE.52*53* The licence and distribution terms for any publically available version or54* derivative of this code cannot be changed. i.e. this code cannot simply be55* copied and put under another distribution licence56* [including the GNU Public Licence.]57*/5859/*60* Modified from the output of `perl des686.pl elf' by61* Thor Lancelot Simon <[email protected]>62*/6364#include <i386/include/asm.h>65#define _C_LABEL CNAME6667ENTRY(des_encrypt1)68pushl %esi69pushl %edi7071/* Load the 2 words */72movl 12(%esp), %esi73xorl %ecx, %ecx74pushl %ebx75pushl %ebp76movl (%esi), %eax77movl 28(%esp), %ebx78movl 4(%esi), %edi7980/* IP */81roll $4, %eax82movl %eax, %esi83xorl %edi, %eax84andl $0xf0f0f0f0, %eax85xorl %eax, %esi86xorl %eax, %edi8788roll $20, %edi89movl %edi, %eax90xorl %esi, %edi91andl $0xfff0000f, %edi92xorl %edi, %eax93xorl %edi, %esi9495roll $14, %eax96movl %eax, %edi97xorl %esi, %eax98andl $0x33333333, %eax99xorl %eax, %edi100xorl %eax, %esi101102roll $22, %esi103movl %esi, %eax104xorl %edi, %esi105andl $0x03fc03fc, %esi106xorl %esi, %eax107xorl %esi, %edi108109roll $9, %eax110movl %eax, %esi111xorl %edi, %eax112andl $0xaaaaaaaa, %eax113xorl %eax, %esi114xorl %eax, %edi115116.byte 209117.byte 199 # roll $1 %edi118movl 24(%esp), %ebp119cmpl $0, %ebx120je .L000start_decrypt121122/* Round 0 */123movl (%ebp), %eax124xorl %ebx, %ebx125movl 4(%ebp), %edx126xorl %esi, %eax127xorl %esi, %edx128andl $0xfcfcfcfc, %eax129andl $0xcfcfcfcf, %edx130movb %al, %bl131movb %ah, %cl132rorl $4, %edx133movl _C_LABEL(des_SPtrans)(%ebx),%ebp134movb %dl, %bl135xorl %ebp, %edi136movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp137xorl %ebp, %edi138movb %dh, %cl139shrl $16, %eax140movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp141xorl %ebp, %edi142movb %ah, %bl143shrl $16, %edx144movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp145xorl %ebp, %edi146movl 24(%esp), %ebp147movb %dh, %cl148andl $0xff, %eax149andl $0xff, %edx150movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx151xorl %ebx, %edi152movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx153xorl %ebx, %edi154movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx155xorl %ebx, %edi156movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx157xorl %ebx, %edi158159/* Round 1 */160movl 8(%ebp), %eax161xorl %ebx, %ebx162movl 12(%ebp), %edx163xorl %edi, %eax164xorl %edi, %edx165andl $0xfcfcfcfc, %eax166andl $0xcfcfcfcf, %edx167movb %al, %bl168movb %ah, %cl169rorl $4, %edx170movl _C_LABEL(des_SPtrans)(%ebx),%ebp171movb %dl, %bl172xorl %ebp, %esi173movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp174xorl %ebp, %esi175movb %dh, %cl176shrl $16, %eax177movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp178xorl %ebp, %esi179movb %ah, %bl180shrl $16, %edx181movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp182xorl %ebp, %esi183movl 24(%esp), %ebp184movb %dh, %cl185andl $0xff, %eax186andl $0xff, %edx187movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx188xorl %ebx, %esi189movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx190xorl %ebx, %esi191movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx192xorl %ebx, %esi193movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx194xorl %ebx, %esi195196/* Round 2 */197movl 16(%ebp), %eax198xorl %ebx, %ebx199movl 20(%ebp), %edx200xorl %esi, %eax201xorl %esi, %edx202andl $0xfcfcfcfc, %eax203andl $0xcfcfcfcf, %edx204movb %al, %bl205movb %ah, %cl206rorl $4, %edx207movl _C_LABEL(des_SPtrans)(%ebx),%ebp208movb %dl, %bl209xorl %ebp, %edi210movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp211xorl %ebp, %edi212movb %dh, %cl213shrl $16, %eax214movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp215xorl %ebp, %edi216movb %ah, %bl217shrl $16, %edx218movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp219xorl %ebp, %edi220movl 24(%esp), %ebp221movb %dh, %cl222andl $0xff, %eax223andl $0xff, %edx224movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx225xorl %ebx, %edi226movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx227xorl %ebx, %edi228movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx229xorl %ebx, %edi230movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx231xorl %ebx, %edi232233/* Round 3 */234movl 24(%ebp), %eax235xorl %ebx, %ebx236movl 28(%ebp), %edx237xorl %edi, %eax238xorl %edi, %edx239andl $0xfcfcfcfc, %eax240andl $0xcfcfcfcf, %edx241movb %al, %bl242movb %ah, %cl243rorl $4, %edx244movl _C_LABEL(des_SPtrans)(%ebx),%ebp245movb %dl, %bl246xorl %ebp, %esi247movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp248xorl %ebp, %esi249movb %dh, %cl250shrl $16, %eax251movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp252xorl %ebp, %esi253movb %ah, %bl254shrl $16, %edx255movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp256xorl %ebp, %esi257movl 24(%esp), %ebp258movb %dh, %cl259andl $0xff, %eax260andl $0xff, %edx261movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx262xorl %ebx, %esi263movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx264xorl %ebx, %esi265movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx266xorl %ebx, %esi267movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx268xorl %ebx, %esi269270/* Round 4 */271movl 32(%ebp), %eax272xorl %ebx, %ebx273movl 36(%ebp), %edx274xorl %esi, %eax275xorl %esi, %edx276andl $0xfcfcfcfc, %eax277andl $0xcfcfcfcf, %edx278movb %al, %bl279movb %ah, %cl280rorl $4, %edx281movl _C_LABEL(des_SPtrans)(%ebx),%ebp282movb %dl, %bl283xorl %ebp, %edi284movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp285xorl %ebp, %edi286movb %dh, %cl287shrl $16, %eax288movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp289xorl %ebp, %edi290movb %ah, %bl291shrl $16, %edx292movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp293xorl %ebp, %edi294movl 24(%esp), %ebp295movb %dh, %cl296andl $0xff, %eax297andl $0xff, %edx298movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx299xorl %ebx, %edi300movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx301xorl %ebx, %edi302movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx303xorl %ebx, %edi304movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx305xorl %ebx, %edi306307/* Round 5 */308movl 40(%ebp), %eax309xorl %ebx, %ebx310movl 44(%ebp), %edx311xorl %edi, %eax312xorl %edi, %edx313andl $0xfcfcfcfc, %eax314andl $0xcfcfcfcf, %edx315movb %al, %bl316movb %ah, %cl317rorl $4, %edx318movl _C_LABEL(des_SPtrans)(%ebx),%ebp319movb %dl, %bl320xorl %ebp, %esi321movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp322xorl %ebp, %esi323movb %dh, %cl324shrl $16, %eax325movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp326xorl %ebp, %esi327movb %ah, %bl328shrl $16, %edx329movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp330xorl %ebp, %esi331movl 24(%esp), %ebp332movb %dh, %cl333andl $0xff, %eax334andl $0xff, %edx335movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx336xorl %ebx, %esi337movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx338xorl %ebx, %esi339movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx340xorl %ebx, %esi341movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx342xorl %ebx, %esi343344/* Round 6 */345movl 48(%ebp), %eax346xorl %ebx, %ebx347movl 52(%ebp), %edx348xorl %esi, %eax349xorl %esi, %edx350andl $0xfcfcfcfc, %eax351andl $0xcfcfcfcf, %edx352movb %al, %bl353movb %ah, %cl354rorl $4, %edx355movl _C_LABEL(des_SPtrans)(%ebx),%ebp356movb %dl, %bl357xorl %ebp, %edi358movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp359xorl %ebp, %edi360movb %dh, %cl361shrl $16, %eax362movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp363xorl %ebp, %edi364movb %ah, %bl365shrl $16, %edx366movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp367xorl %ebp, %edi368movl 24(%esp), %ebp369movb %dh, %cl370andl $0xff, %eax371andl $0xff, %edx372movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx373xorl %ebx, %edi374movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx375xorl %ebx, %edi376movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx377xorl %ebx, %edi378movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx379xorl %ebx, %edi380381/* Round 7 */382movl 56(%ebp), %eax383xorl %ebx, %ebx384movl 60(%ebp), %edx385xorl %edi, %eax386xorl %edi, %edx387andl $0xfcfcfcfc, %eax388andl $0xcfcfcfcf, %edx389movb %al, %bl390movb %ah, %cl391rorl $4, %edx392movl _C_LABEL(des_SPtrans)(%ebx),%ebp393movb %dl, %bl394xorl %ebp, %esi395movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp396xorl %ebp, %esi397movb %dh, %cl398shrl $16, %eax399movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp400xorl %ebp, %esi401movb %ah, %bl402shrl $16, %edx403movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp404xorl %ebp, %esi405movl 24(%esp), %ebp406movb %dh, %cl407andl $0xff, %eax408andl $0xff, %edx409movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx410xorl %ebx, %esi411movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx412xorl %ebx, %esi413movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx414xorl %ebx, %esi415movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx416xorl %ebx, %esi417418/* Round 8 */419movl 64(%ebp), %eax420xorl %ebx, %ebx421movl 68(%ebp), %edx422xorl %esi, %eax423xorl %esi, %edx424andl $0xfcfcfcfc, %eax425andl $0xcfcfcfcf, %edx426movb %al, %bl427movb %ah, %cl428rorl $4, %edx429movl _C_LABEL(des_SPtrans)(%ebx),%ebp430movb %dl, %bl431xorl %ebp, %edi432movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp433xorl %ebp, %edi434movb %dh, %cl435shrl $16, %eax436movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp437xorl %ebp, %edi438movb %ah, %bl439shrl $16, %edx440movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp441xorl %ebp, %edi442movl 24(%esp), %ebp443movb %dh, %cl444andl $0xff, %eax445andl $0xff, %edx446movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx447xorl %ebx, %edi448movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx449xorl %ebx, %edi450movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx451xorl %ebx, %edi452movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx453xorl %ebx, %edi454455/* Round 9 */456movl 72(%ebp), %eax457xorl %ebx, %ebx458movl 76(%ebp), %edx459xorl %edi, %eax460xorl %edi, %edx461andl $0xfcfcfcfc, %eax462andl $0xcfcfcfcf, %edx463movb %al, %bl464movb %ah, %cl465rorl $4, %edx466movl _C_LABEL(des_SPtrans)(%ebx),%ebp467movb %dl, %bl468xorl %ebp, %esi469movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp470xorl %ebp, %esi471movb %dh, %cl472shrl $16, %eax473movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp474xorl %ebp, %esi475movb %ah, %bl476shrl $16, %edx477movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp478xorl %ebp, %esi479movl 24(%esp), %ebp480movb %dh, %cl481andl $0xff, %eax482andl $0xff, %edx483movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx484xorl %ebx, %esi485movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx486xorl %ebx, %esi487movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx488xorl %ebx, %esi489movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx490xorl %ebx, %esi491492/* Round 10 */493movl 80(%ebp), %eax494xorl %ebx, %ebx495movl 84(%ebp), %edx496xorl %esi, %eax497xorl %esi, %edx498andl $0xfcfcfcfc, %eax499andl $0xcfcfcfcf, %edx500movb %al, %bl501movb %ah, %cl502rorl $4, %edx503movl _C_LABEL(des_SPtrans)(%ebx),%ebp504movb %dl, %bl505xorl %ebp, %edi506movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp507xorl %ebp, %edi508movb %dh, %cl509shrl $16, %eax510movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp511xorl %ebp, %edi512movb %ah, %bl513shrl $16, %edx514movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp515xorl %ebp, %edi516movl 24(%esp), %ebp517movb %dh, %cl518andl $0xff, %eax519andl $0xff, %edx520movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx521xorl %ebx, %edi522movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx523xorl %ebx, %edi524movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx525xorl %ebx, %edi526movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx527xorl %ebx, %edi528529/* Round 11 */530movl 88(%ebp), %eax531xorl %ebx, %ebx532movl 92(%ebp), %edx533xorl %edi, %eax534xorl %edi, %edx535andl $0xfcfcfcfc, %eax536andl $0xcfcfcfcf, %edx537movb %al, %bl538movb %ah, %cl539rorl $4, %edx540movl _C_LABEL(des_SPtrans)(%ebx),%ebp541movb %dl, %bl542xorl %ebp, %esi543movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp544xorl %ebp, %esi545movb %dh, %cl546shrl $16, %eax547movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp548xorl %ebp, %esi549movb %ah, %bl550shrl $16, %edx551movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp552xorl %ebp, %esi553movl 24(%esp), %ebp554movb %dh, %cl555andl $0xff, %eax556andl $0xff, %edx557movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx558xorl %ebx, %esi559movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx560xorl %ebx, %esi561movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx562xorl %ebx, %esi563movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx564xorl %ebx, %esi565566/* Round 12 */567movl 96(%ebp), %eax568xorl %ebx, %ebx569movl 100(%ebp), %edx570xorl %esi, %eax571xorl %esi, %edx572andl $0xfcfcfcfc, %eax573andl $0xcfcfcfcf, %edx574movb %al, %bl575movb %ah, %cl576rorl $4, %edx577movl _C_LABEL(des_SPtrans)(%ebx),%ebp578movb %dl, %bl579xorl %ebp, %edi580movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp581xorl %ebp, %edi582movb %dh, %cl583shrl $16, %eax584movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp585xorl %ebp, %edi586movb %ah, %bl587shrl $16, %edx588movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp589xorl %ebp, %edi590movl 24(%esp), %ebp591movb %dh, %cl592andl $0xff, %eax593andl $0xff, %edx594movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx595xorl %ebx, %edi596movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx597xorl %ebx, %edi598movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx599xorl %ebx, %edi600movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx601xorl %ebx, %edi602603/* Round 13 */604movl 104(%ebp), %eax605xorl %ebx, %ebx606movl 108(%ebp), %edx607xorl %edi, %eax608xorl %edi, %edx609andl $0xfcfcfcfc, %eax610andl $0xcfcfcfcf, %edx611movb %al, %bl612movb %ah, %cl613rorl $4, %edx614movl _C_LABEL(des_SPtrans)(%ebx),%ebp615movb %dl, %bl616xorl %ebp, %esi617movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp618xorl %ebp, %esi619movb %dh, %cl620shrl $16, %eax621movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp622xorl %ebp, %esi623movb %ah, %bl624shrl $16, %edx625movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp626xorl %ebp, %esi627movl 24(%esp), %ebp628movb %dh, %cl629andl $0xff, %eax630andl $0xff, %edx631movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx632xorl %ebx, %esi633movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx634xorl %ebx, %esi635movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx636xorl %ebx, %esi637movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx638xorl %ebx, %esi639640/* Round 14 */641movl 112(%ebp), %eax642xorl %ebx, %ebx643movl 116(%ebp), %edx644xorl %esi, %eax645xorl %esi, %edx646andl $0xfcfcfcfc, %eax647andl $0xcfcfcfcf, %edx648movb %al, %bl649movb %ah, %cl650rorl $4, %edx651movl _C_LABEL(des_SPtrans)(%ebx),%ebp652movb %dl, %bl653xorl %ebp, %edi654movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp655xorl %ebp, %edi656movb %dh, %cl657shrl $16, %eax658movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp659xorl %ebp, %edi660movb %ah, %bl661shrl $16, %edx662movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp663xorl %ebp, %edi664movl 24(%esp), %ebp665movb %dh, %cl666andl $0xff, %eax667andl $0xff, %edx668movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx669xorl %ebx, %edi670movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx671xorl %ebx, %edi672movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx673xorl %ebx, %edi674movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx675xorl %ebx, %edi676677/* Round 15 */678movl 120(%ebp), %eax679xorl %ebx, %ebx680movl 124(%ebp), %edx681xorl %edi, %eax682xorl %edi, %edx683andl $0xfcfcfcfc, %eax684andl $0xcfcfcfcf, %edx685movb %al, %bl686movb %ah, %cl687rorl $4, %edx688movl _C_LABEL(des_SPtrans)(%ebx),%ebp689movb %dl, %bl690xorl %ebp, %esi691movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp692xorl %ebp, %esi693movb %dh, %cl694shrl $16, %eax695movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp696xorl %ebp, %esi697movb %ah, %bl698shrl $16, %edx699movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp700xorl %ebp, %esi701movl 24(%esp), %ebp702movb %dh, %cl703andl $0xff, %eax704andl $0xff, %edx705movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx706xorl %ebx, %esi707movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx708xorl %ebx, %esi709movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx710xorl %ebx, %esi711movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx712xorl %ebx, %esi713jmp .L001end714.L000start_decrypt:715716/* Round 15 */717movl 120(%ebp), %eax718xorl %ebx, %ebx719movl 124(%ebp), %edx720xorl %esi, %eax721xorl %esi, %edx722andl $0xfcfcfcfc, %eax723andl $0xcfcfcfcf, %edx724movb %al, %bl725movb %ah, %cl726rorl $4, %edx727movl _C_LABEL(des_SPtrans)(%ebx),%ebp728movb %dl, %bl729xorl %ebp, %edi730movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp731xorl %ebp, %edi732movb %dh, %cl733shrl $16, %eax734movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp735xorl %ebp, %edi736movb %ah, %bl737shrl $16, %edx738movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp739xorl %ebp, %edi740movl 24(%esp), %ebp741movb %dh, %cl742andl $0xff, %eax743andl $0xff, %edx744movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx745xorl %ebx, %edi746movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx747xorl %ebx, %edi748movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx749xorl %ebx, %edi750movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx751xorl %ebx, %edi752753/* Round 14 */754movl 112(%ebp), %eax755xorl %ebx, %ebx756movl 116(%ebp), %edx757xorl %edi, %eax758xorl %edi, %edx759andl $0xfcfcfcfc, %eax760andl $0xcfcfcfcf, %edx761movb %al, %bl762movb %ah, %cl763rorl $4, %edx764movl _C_LABEL(des_SPtrans)(%ebx),%ebp765movb %dl, %bl766xorl %ebp, %esi767movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp768xorl %ebp, %esi769movb %dh, %cl770shrl $16, %eax771movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp772xorl %ebp, %esi773movb %ah, %bl774shrl $16, %edx775movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp776xorl %ebp, %esi777movl 24(%esp), %ebp778movb %dh, %cl779andl $0xff, %eax780andl $0xff, %edx781movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx782xorl %ebx, %esi783movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx784xorl %ebx, %esi785movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx786xorl %ebx, %esi787movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx788xorl %ebx, %esi789790/* Round 13 */791movl 104(%ebp), %eax792xorl %ebx, %ebx793movl 108(%ebp), %edx794xorl %esi, %eax795xorl %esi, %edx796andl $0xfcfcfcfc, %eax797andl $0xcfcfcfcf, %edx798movb %al, %bl799movb %ah, %cl800rorl $4, %edx801movl _C_LABEL(des_SPtrans)(%ebx),%ebp802movb %dl, %bl803xorl %ebp, %edi804movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp805xorl %ebp, %edi806movb %dh, %cl807shrl $16, %eax808movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp809xorl %ebp, %edi810movb %ah, %bl811shrl $16, %edx812movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp813xorl %ebp, %edi814movl 24(%esp), %ebp815movb %dh, %cl816andl $0xff, %eax817andl $0xff, %edx818movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx819xorl %ebx, %edi820movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx821xorl %ebx, %edi822movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx823xorl %ebx, %edi824movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx825xorl %ebx, %edi826827/* Round 12 */828movl 96(%ebp), %eax829xorl %ebx, %ebx830movl 100(%ebp), %edx831xorl %edi, %eax832xorl %edi, %edx833andl $0xfcfcfcfc, %eax834andl $0xcfcfcfcf, %edx835movb %al, %bl836movb %ah, %cl837rorl $4, %edx838movl _C_LABEL(des_SPtrans)(%ebx),%ebp839movb %dl, %bl840xorl %ebp, %esi841movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp842xorl %ebp, %esi843movb %dh, %cl844shrl $16, %eax845movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp846xorl %ebp, %esi847movb %ah, %bl848shrl $16, %edx849movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp850xorl %ebp, %esi851movl 24(%esp), %ebp852movb %dh, %cl853andl $0xff, %eax854andl $0xff, %edx855movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx856xorl %ebx, %esi857movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx858xorl %ebx, %esi859movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx860xorl %ebx, %esi861movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx862xorl %ebx, %esi863864/* Round 11 */865movl 88(%ebp), %eax866xorl %ebx, %ebx867movl 92(%ebp), %edx868xorl %esi, %eax869xorl %esi, %edx870andl $0xfcfcfcfc, %eax871andl $0xcfcfcfcf, %edx872movb %al, %bl873movb %ah, %cl874rorl $4, %edx875movl _C_LABEL(des_SPtrans)(%ebx),%ebp876movb %dl, %bl877xorl %ebp, %edi878movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp879xorl %ebp, %edi880movb %dh, %cl881shrl $16, %eax882movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp883xorl %ebp, %edi884movb %ah, %bl885shrl $16, %edx886movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp887xorl %ebp, %edi888movl 24(%esp), %ebp889movb %dh, %cl890andl $0xff, %eax891andl $0xff, %edx892movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx893xorl %ebx, %edi894movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx895xorl %ebx, %edi896movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx897xorl %ebx, %edi898movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx899xorl %ebx, %edi900901/* Round 10 */902movl 80(%ebp), %eax903xorl %ebx, %ebx904movl 84(%ebp), %edx905xorl %edi, %eax906xorl %edi, %edx907andl $0xfcfcfcfc, %eax908andl $0xcfcfcfcf, %edx909movb %al, %bl910movb %ah, %cl911rorl $4, %edx912movl _C_LABEL(des_SPtrans)(%ebx),%ebp913movb %dl, %bl914xorl %ebp, %esi915movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp916xorl %ebp, %esi917movb %dh, %cl918shrl $16, %eax919movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp920xorl %ebp, %esi921movb %ah, %bl922shrl $16, %edx923movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp924xorl %ebp, %esi925movl 24(%esp), %ebp926movb %dh, %cl927andl $0xff, %eax928andl $0xff, %edx929movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx930xorl %ebx, %esi931movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx932xorl %ebx, %esi933movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx934xorl %ebx, %esi935movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx936xorl %ebx, %esi937938/* Round 9 */939movl 72(%ebp), %eax940xorl %ebx, %ebx941movl 76(%ebp), %edx942xorl %esi, %eax943xorl %esi, %edx944andl $0xfcfcfcfc, %eax945andl $0xcfcfcfcf, %edx946movb %al, %bl947movb %ah, %cl948rorl $4, %edx949movl _C_LABEL(des_SPtrans)(%ebx),%ebp950movb %dl, %bl951xorl %ebp, %edi952movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp953xorl %ebp, %edi954movb %dh, %cl955shrl $16, %eax956movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp957xorl %ebp, %edi958movb %ah, %bl959shrl $16, %edx960movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp961xorl %ebp, %edi962movl 24(%esp), %ebp963movb %dh, %cl964andl $0xff, %eax965andl $0xff, %edx966movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx967xorl %ebx, %edi968movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx969xorl %ebx, %edi970movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx971xorl %ebx, %edi972movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx973xorl %ebx, %edi974975/* Round 8 */976movl 64(%ebp), %eax977xorl %ebx, %ebx978movl 68(%ebp), %edx979xorl %edi, %eax980xorl %edi, %edx981andl $0xfcfcfcfc, %eax982andl $0xcfcfcfcf, %edx983movb %al, %bl984movb %ah, %cl985rorl $4, %edx986movl _C_LABEL(des_SPtrans)(%ebx),%ebp987movb %dl, %bl988xorl %ebp, %esi989movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp990xorl %ebp, %esi991movb %dh, %cl992shrl $16, %eax993movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp994xorl %ebp, %esi995movb %ah, %bl996shrl $16, %edx997movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp998xorl %ebp, %esi999movl 24(%esp), %ebp1000movb %dh, %cl1001andl $0xff, %eax1002andl $0xff, %edx1003movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1004xorl %ebx, %esi1005movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1006xorl %ebx, %esi1007movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1008xorl %ebx, %esi1009movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1010xorl %ebx, %esi10111012/* Round 7 */1013movl 56(%ebp), %eax1014xorl %ebx, %ebx1015movl 60(%ebp), %edx1016xorl %esi, %eax1017xorl %esi, %edx1018andl $0xfcfcfcfc, %eax1019andl $0xcfcfcfcf, %edx1020movb %al, %bl1021movb %ah, %cl1022rorl $4, %edx1023movl _C_LABEL(des_SPtrans)(%ebx),%ebp1024movb %dl, %bl1025xorl %ebp, %edi1026movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1027xorl %ebp, %edi1028movb %dh, %cl1029shrl $16, %eax1030movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1031xorl %ebp, %edi1032movb %ah, %bl1033shrl $16, %edx1034movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1035xorl %ebp, %edi1036movl 24(%esp), %ebp1037movb %dh, %cl1038andl $0xff, %eax1039andl $0xff, %edx1040movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1041xorl %ebx, %edi1042movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1043xorl %ebx, %edi1044movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1045xorl %ebx, %edi1046movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1047xorl %ebx, %edi10481049/* Round 6 */1050movl 48(%ebp), %eax1051xorl %ebx, %ebx1052movl 52(%ebp), %edx1053xorl %edi, %eax1054xorl %edi, %edx1055andl $0xfcfcfcfc, %eax1056andl $0xcfcfcfcf, %edx1057movb %al, %bl1058movb %ah, %cl1059rorl $4, %edx1060movl _C_LABEL(des_SPtrans)(%ebx),%ebp1061movb %dl, %bl1062xorl %ebp, %esi1063movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1064xorl %ebp, %esi1065movb %dh, %cl1066shrl $16, %eax1067movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1068xorl %ebp, %esi1069movb %ah, %bl1070shrl $16, %edx1071movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1072xorl %ebp, %esi1073movl 24(%esp), %ebp1074movb %dh, %cl1075andl $0xff, %eax1076andl $0xff, %edx1077movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1078xorl %ebx, %esi1079movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1080xorl %ebx, %esi1081movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1082xorl %ebx, %esi1083movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1084xorl %ebx, %esi10851086/* Round 5 */1087movl 40(%ebp), %eax1088xorl %ebx, %ebx1089movl 44(%ebp), %edx1090xorl %esi, %eax1091xorl %esi, %edx1092andl $0xfcfcfcfc, %eax1093andl $0xcfcfcfcf, %edx1094movb %al, %bl1095movb %ah, %cl1096rorl $4, %edx1097movl _C_LABEL(des_SPtrans)(%ebx),%ebp1098movb %dl, %bl1099xorl %ebp, %edi1100movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1101xorl %ebp, %edi1102movb %dh, %cl1103shrl $16, %eax1104movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1105xorl %ebp, %edi1106movb %ah, %bl1107shrl $16, %edx1108movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1109xorl %ebp, %edi1110movl 24(%esp), %ebp1111movb %dh, %cl1112andl $0xff, %eax1113andl $0xff, %edx1114movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1115xorl %ebx, %edi1116movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1117xorl %ebx, %edi1118movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1119xorl %ebx, %edi1120movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1121xorl %ebx, %edi11221123/* Round 4 */1124movl 32(%ebp), %eax1125xorl %ebx, %ebx1126movl 36(%ebp), %edx1127xorl %edi, %eax1128xorl %edi, %edx1129andl $0xfcfcfcfc, %eax1130andl $0xcfcfcfcf, %edx1131movb %al, %bl1132movb %ah, %cl1133rorl $4, %edx1134movl _C_LABEL(des_SPtrans)(%ebx),%ebp1135movb %dl, %bl1136xorl %ebp, %esi1137movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1138xorl %ebp, %esi1139movb %dh, %cl1140shrl $16, %eax1141movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1142xorl %ebp, %esi1143movb %ah, %bl1144shrl $16, %edx1145movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1146xorl %ebp, %esi1147movl 24(%esp), %ebp1148movb %dh, %cl1149andl $0xff, %eax1150andl $0xff, %edx1151movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1152xorl %ebx, %esi1153movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1154xorl %ebx, %esi1155movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1156xorl %ebx, %esi1157movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1158xorl %ebx, %esi11591160/* Round 3 */1161movl 24(%ebp), %eax1162xorl %ebx, %ebx1163movl 28(%ebp), %edx1164xorl %esi, %eax1165xorl %esi, %edx1166andl $0xfcfcfcfc, %eax1167andl $0xcfcfcfcf, %edx1168movb %al, %bl1169movb %ah, %cl1170rorl $4, %edx1171movl _C_LABEL(des_SPtrans)(%ebx),%ebp1172movb %dl, %bl1173xorl %ebp, %edi1174movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1175xorl %ebp, %edi1176movb %dh, %cl1177shrl $16, %eax1178movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1179xorl %ebp, %edi1180movb %ah, %bl1181shrl $16, %edx1182movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1183xorl %ebp, %edi1184movl 24(%esp), %ebp1185movb %dh, %cl1186andl $0xff, %eax1187andl $0xff, %edx1188movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1189xorl %ebx, %edi1190movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1191xorl %ebx, %edi1192movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1193xorl %ebx, %edi1194movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1195xorl %ebx, %edi11961197/* Round 2 */1198movl 16(%ebp), %eax1199xorl %ebx, %ebx1200movl 20(%ebp), %edx1201xorl %edi, %eax1202xorl %edi, %edx1203andl $0xfcfcfcfc, %eax1204andl $0xcfcfcfcf, %edx1205movb %al, %bl1206movb %ah, %cl1207rorl $4, %edx1208movl _C_LABEL(des_SPtrans)(%ebx),%ebp1209movb %dl, %bl1210xorl %ebp, %esi1211movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1212xorl %ebp, %esi1213movb %dh, %cl1214shrl $16, %eax1215movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1216xorl %ebp, %esi1217movb %ah, %bl1218shrl $16, %edx1219movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1220xorl %ebp, %esi1221movl 24(%esp), %ebp1222movb %dh, %cl1223andl $0xff, %eax1224andl $0xff, %edx1225movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1226xorl %ebx, %esi1227movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1228xorl %ebx, %esi1229movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1230xorl %ebx, %esi1231movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1232xorl %ebx, %esi12331234/* Round 1 */1235movl 8(%ebp), %eax1236xorl %ebx, %ebx1237movl 12(%ebp), %edx1238xorl %esi, %eax1239xorl %esi, %edx1240andl $0xfcfcfcfc, %eax1241andl $0xcfcfcfcf, %edx1242movb %al, %bl1243movb %ah, %cl1244rorl $4, %edx1245movl _C_LABEL(des_SPtrans)(%ebx),%ebp1246movb %dl, %bl1247xorl %ebp, %edi1248movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1249xorl %ebp, %edi1250movb %dh, %cl1251shrl $16, %eax1252movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1253xorl %ebp, %edi1254movb %ah, %bl1255shrl $16, %edx1256movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1257xorl %ebp, %edi1258movl 24(%esp), %ebp1259movb %dh, %cl1260andl $0xff, %eax1261andl $0xff, %edx1262movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1263xorl %ebx, %edi1264movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1265xorl %ebx, %edi1266movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1267xorl %ebx, %edi1268movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1269xorl %ebx, %edi12701271/* Round 0 */1272movl (%ebp), %eax1273xorl %ebx, %ebx1274movl 4(%ebp), %edx1275xorl %edi, %eax1276xorl %edi, %edx1277andl $0xfcfcfcfc, %eax1278andl $0xcfcfcfcf, %edx1279movb %al, %bl1280movb %ah, %cl1281rorl $4, %edx1282movl _C_LABEL(des_SPtrans)(%ebx),%ebp1283movb %dl, %bl1284xorl %ebp, %esi1285movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1286xorl %ebp, %esi1287movb %dh, %cl1288shrl $16, %eax1289movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1290xorl %ebp, %esi1291movb %ah, %bl1292shrl $16, %edx1293movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1294xorl %ebp, %esi1295movl 24(%esp), %ebp1296movb %dh, %cl1297andl $0xff, %eax1298andl $0xff, %edx1299movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1300xorl %ebx, %esi1301movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1302xorl %ebx, %esi1303movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1304xorl %ebx, %esi1305movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1306xorl %ebx, %esi1307.L001end:13081309/* FP */1310movl 20(%esp), %edx1311.byte 2091312.byte 206 # rorl $1 %esi1313movl %edi, %eax1314xorl %esi, %edi1315andl $0xaaaaaaaa, %edi1316xorl %edi, %eax1317xorl %edi, %esi13181319roll $23, %eax1320movl %eax, %edi1321xorl %esi, %eax1322andl $0x03fc03fc, %eax1323xorl %eax, %edi1324xorl %eax, %esi13251326roll $10, %edi1327movl %edi, %eax1328xorl %esi, %edi1329andl $0x33333333, %edi1330xorl %edi, %eax1331xorl %edi, %esi13321333roll $18, %esi1334movl %esi, %edi1335xorl %eax, %esi1336andl $0xfff0000f, %esi1337xorl %esi, %edi1338xorl %esi, %eax13391340roll $12, %edi1341movl %edi, %esi1342xorl %eax, %edi1343andl $0xf0f0f0f0, %edi1344xorl %edi, %esi1345xorl %edi, %eax13461347rorl $4, %eax1348movl %eax, (%edx)1349movl %esi, 4(%edx)1350popl %ebp1351popl %ebx1352popl %edi1353popl %esi1354ret1355END(des_encrypt1)13561357ENTRY(des_encrypt2)1358pushl %esi1359pushl %edi13601361/* Load the 2 words */1362movl 12(%esp), %eax1363xorl %ecx, %ecx1364pushl %ebx1365pushl %ebp1366movl (%eax), %esi1367movl 28(%esp), %ebx1368roll $3, %esi1369movl 4(%eax), %edi1370roll $3, %edi1371movl 24(%esp), %ebp1372cmpl $0, %ebx1373je .L002start_decrypt13741375/* Round 0 */1376movl (%ebp), %eax1377xorl %ebx, %ebx1378movl 4(%ebp), %edx1379xorl %esi, %eax1380xorl %esi, %edx1381andl $0xfcfcfcfc, %eax1382andl $0xcfcfcfcf, %edx1383movb %al, %bl1384movb %ah, %cl1385rorl $4, %edx1386movl _C_LABEL(des_SPtrans)(%ebx),%ebp1387movb %dl, %bl1388xorl %ebp, %edi1389movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1390xorl %ebp, %edi1391movb %dh, %cl1392shrl $16, %eax1393movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1394xorl %ebp, %edi1395movb %ah, %bl1396shrl $16, %edx1397movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1398xorl %ebp, %edi1399movl 24(%esp), %ebp1400movb %dh, %cl1401andl $0xff, %eax1402andl $0xff, %edx1403movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1404xorl %ebx, %edi1405movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1406xorl %ebx, %edi1407movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1408xorl %ebx, %edi1409movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1410xorl %ebx, %edi14111412/* Round 1 */1413movl 8(%ebp), %eax1414xorl %ebx, %ebx1415movl 12(%ebp), %edx1416xorl %edi, %eax1417xorl %edi, %edx1418andl $0xfcfcfcfc, %eax1419andl $0xcfcfcfcf, %edx1420movb %al, %bl1421movb %ah, %cl1422rorl $4, %edx1423movl _C_LABEL(des_SPtrans)(%ebx),%ebp1424movb %dl, %bl1425xorl %ebp, %esi1426movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1427xorl %ebp, %esi1428movb %dh, %cl1429shrl $16, %eax1430movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1431xorl %ebp, %esi1432movb %ah, %bl1433shrl $16, %edx1434movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1435xorl %ebp, %esi1436movl 24(%esp), %ebp1437movb %dh, %cl1438andl $0xff, %eax1439andl $0xff, %edx1440movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1441xorl %ebx, %esi1442movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1443xorl %ebx, %esi1444movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1445xorl %ebx, %esi1446movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1447xorl %ebx, %esi14481449/* Round 2 */1450movl 16(%ebp), %eax1451xorl %ebx, %ebx1452movl 20(%ebp), %edx1453xorl %esi, %eax1454xorl %esi, %edx1455andl $0xfcfcfcfc, %eax1456andl $0xcfcfcfcf, %edx1457movb %al, %bl1458movb %ah, %cl1459rorl $4, %edx1460movl _C_LABEL(des_SPtrans)(%ebx),%ebp1461movb %dl, %bl1462xorl %ebp, %edi1463movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1464xorl %ebp, %edi1465movb %dh, %cl1466shrl $16, %eax1467movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1468xorl %ebp, %edi1469movb %ah, %bl1470shrl $16, %edx1471movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1472xorl %ebp, %edi1473movl 24(%esp), %ebp1474movb %dh, %cl1475andl $0xff, %eax1476andl $0xff, %edx1477movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1478xorl %ebx, %edi1479movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1480xorl %ebx, %edi1481movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1482xorl %ebx, %edi1483movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1484xorl %ebx, %edi14851486/* Round 3 */1487movl 24(%ebp), %eax1488xorl %ebx, %ebx1489movl 28(%ebp), %edx1490xorl %edi, %eax1491xorl %edi, %edx1492andl $0xfcfcfcfc, %eax1493andl $0xcfcfcfcf, %edx1494movb %al, %bl1495movb %ah, %cl1496rorl $4, %edx1497movl _C_LABEL(des_SPtrans)(%ebx),%ebp1498movb %dl, %bl1499xorl %ebp, %esi1500movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1501xorl %ebp, %esi1502movb %dh, %cl1503shrl $16, %eax1504movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1505xorl %ebp, %esi1506movb %ah, %bl1507shrl $16, %edx1508movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1509xorl %ebp, %esi1510movl 24(%esp), %ebp1511movb %dh, %cl1512andl $0xff, %eax1513andl $0xff, %edx1514movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1515xorl %ebx, %esi1516movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1517xorl %ebx, %esi1518movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1519xorl %ebx, %esi1520movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1521xorl %ebx, %esi15221523/* Round 4 */1524movl 32(%ebp), %eax1525xorl %ebx, %ebx1526movl 36(%ebp), %edx1527xorl %esi, %eax1528xorl %esi, %edx1529andl $0xfcfcfcfc, %eax1530andl $0xcfcfcfcf, %edx1531movb %al, %bl1532movb %ah, %cl1533rorl $4, %edx1534movl _C_LABEL(des_SPtrans)(%ebx),%ebp1535movb %dl, %bl1536xorl %ebp, %edi1537movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1538xorl %ebp, %edi1539movb %dh, %cl1540shrl $16, %eax1541movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1542xorl %ebp, %edi1543movb %ah, %bl1544shrl $16, %edx1545movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1546xorl %ebp, %edi1547movl 24(%esp), %ebp1548movb %dh, %cl1549andl $0xff, %eax1550andl $0xff, %edx1551movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1552xorl %ebx, %edi1553movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1554xorl %ebx, %edi1555movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1556xorl %ebx, %edi1557movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1558xorl %ebx, %edi15591560/* Round 5 */1561movl 40(%ebp), %eax1562xorl %ebx, %ebx1563movl 44(%ebp), %edx1564xorl %edi, %eax1565xorl %edi, %edx1566andl $0xfcfcfcfc, %eax1567andl $0xcfcfcfcf, %edx1568movb %al, %bl1569movb %ah, %cl1570rorl $4, %edx1571movl _C_LABEL(des_SPtrans)(%ebx),%ebp1572movb %dl, %bl1573xorl %ebp, %esi1574movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1575xorl %ebp, %esi1576movb %dh, %cl1577shrl $16, %eax1578movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1579xorl %ebp, %esi1580movb %ah, %bl1581shrl $16, %edx1582movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1583xorl %ebp, %esi1584movl 24(%esp), %ebp1585movb %dh, %cl1586andl $0xff, %eax1587andl $0xff, %edx1588movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1589xorl %ebx, %esi1590movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1591xorl %ebx, %esi1592movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1593xorl %ebx, %esi1594movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1595xorl %ebx, %esi15961597/* Round 6 */1598movl 48(%ebp), %eax1599xorl %ebx, %ebx1600movl 52(%ebp), %edx1601xorl %esi, %eax1602xorl %esi, %edx1603andl $0xfcfcfcfc, %eax1604andl $0xcfcfcfcf, %edx1605movb %al, %bl1606movb %ah, %cl1607rorl $4, %edx1608movl _C_LABEL(des_SPtrans)(%ebx),%ebp1609movb %dl, %bl1610xorl %ebp, %edi1611movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1612xorl %ebp, %edi1613movb %dh, %cl1614shrl $16, %eax1615movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1616xorl %ebp, %edi1617movb %ah, %bl1618shrl $16, %edx1619movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1620xorl %ebp, %edi1621movl 24(%esp), %ebp1622movb %dh, %cl1623andl $0xff, %eax1624andl $0xff, %edx1625movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1626xorl %ebx, %edi1627movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1628xorl %ebx, %edi1629movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1630xorl %ebx, %edi1631movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1632xorl %ebx, %edi16331634/* Round 7 */1635movl 56(%ebp), %eax1636xorl %ebx, %ebx1637movl 60(%ebp), %edx1638xorl %edi, %eax1639xorl %edi, %edx1640andl $0xfcfcfcfc, %eax1641andl $0xcfcfcfcf, %edx1642movb %al, %bl1643movb %ah, %cl1644rorl $4, %edx1645movl _C_LABEL(des_SPtrans)(%ebx),%ebp1646movb %dl, %bl1647xorl %ebp, %esi1648movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1649xorl %ebp, %esi1650movb %dh, %cl1651shrl $16, %eax1652movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1653xorl %ebp, %esi1654movb %ah, %bl1655shrl $16, %edx1656movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1657xorl %ebp, %esi1658movl 24(%esp), %ebp1659movb %dh, %cl1660andl $0xff, %eax1661andl $0xff, %edx1662movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1663xorl %ebx, %esi1664movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1665xorl %ebx, %esi1666movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1667xorl %ebx, %esi1668movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1669xorl %ebx, %esi16701671/* Round 8 */1672movl 64(%ebp), %eax1673xorl %ebx, %ebx1674movl 68(%ebp), %edx1675xorl %esi, %eax1676xorl %esi, %edx1677andl $0xfcfcfcfc, %eax1678andl $0xcfcfcfcf, %edx1679movb %al, %bl1680movb %ah, %cl1681rorl $4, %edx1682movl _C_LABEL(des_SPtrans)(%ebx),%ebp1683movb %dl, %bl1684xorl %ebp, %edi1685movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1686xorl %ebp, %edi1687movb %dh, %cl1688shrl $16, %eax1689movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1690xorl %ebp, %edi1691movb %ah, %bl1692shrl $16, %edx1693movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1694xorl %ebp, %edi1695movl 24(%esp), %ebp1696movb %dh, %cl1697andl $0xff, %eax1698andl $0xff, %edx1699movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1700xorl %ebx, %edi1701movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1702xorl %ebx, %edi1703movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1704xorl %ebx, %edi1705movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1706xorl %ebx, %edi17071708/* Round 9 */1709movl 72(%ebp), %eax1710xorl %ebx, %ebx1711movl 76(%ebp), %edx1712xorl %edi, %eax1713xorl %edi, %edx1714andl $0xfcfcfcfc, %eax1715andl $0xcfcfcfcf, %edx1716movb %al, %bl1717movb %ah, %cl1718rorl $4, %edx1719movl _C_LABEL(des_SPtrans)(%ebx),%ebp1720movb %dl, %bl1721xorl %ebp, %esi1722movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1723xorl %ebp, %esi1724movb %dh, %cl1725shrl $16, %eax1726movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1727xorl %ebp, %esi1728movb %ah, %bl1729shrl $16, %edx1730movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1731xorl %ebp, %esi1732movl 24(%esp), %ebp1733movb %dh, %cl1734andl $0xff, %eax1735andl $0xff, %edx1736movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1737xorl %ebx, %esi1738movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1739xorl %ebx, %esi1740movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1741xorl %ebx, %esi1742movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1743xorl %ebx, %esi17441745/* Round 10 */1746movl 80(%ebp), %eax1747xorl %ebx, %ebx1748movl 84(%ebp), %edx1749xorl %esi, %eax1750xorl %esi, %edx1751andl $0xfcfcfcfc, %eax1752andl $0xcfcfcfcf, %edx1753movb %al, %bl1754movb %ah, %cl1755rorl $4, %edx1756movl _C_LABEL(des_SPtrans)(%ebx),%ebp1757movb %dl, %bl1758xorl %ebp, %edi1759movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1760xorl %ebp, %edi1761movb %dh, %cl1762shrl $16, %eax1763movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1764xorl %ebp, %edi1765movb %ah, %bl1766shrl $16, %edx1767movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1768xorl %ebp, %edi1769movl 24(%esp), %ebp1770movb %dh, %cl1771andl $0xff, %eax1772andl $0xff, %edx1773movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1774xorl %ebx, %edi1775movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1776xorl %ebx, %edi1777movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1778xorl %ebx, %edi1779movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1780xorl %ebx, %edi17811782/* Round 11 */1783movl 88(%ebp), %eax1784xorl %ebx, %ebx1785movl 92(%ebp), %edx1786xorl %edi, %eax1787xorl %edi, %edx1788andl $0xfcfcfcfc, %eax1789andl $0xcfcfcfcf, %edx1790movb %al, %bl1791movb %ah, %cl1792rorl $4, %edx1793movl _C_LABEL(des_SPtrans)(%ebx),%ebp1794movb %dl, %bl1795xorl %ebp, %esi1796movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1797xorl %ebp, %esi1798movb %dh, %cl1799shrl $16, %eax1800movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1801xorl %ebp, %esi1802movb %ah, %bl1803shrl $16, %edx1804movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1805xorl %ebp, %esi1806movl 24(%esp), %ebp1807movb %dh, %cl1808andl $0xff, %eax1809andl $0xff, %edx1810movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1811xorl %ebx, %esi1812movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1813xorl %ebx, %esi1814movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1815xorl %ebx, %esi1816movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1817xorl %ebx, %esi18181819/* Round 12 */1820movl 96(%ebp), %eax1821xorl %ebx, %ebx1822movl 100(%ebp), %edx1823xorl %esi, %eax1824xorl %esi, %edx1825andl $0xfcfcfcfc, %eax1826andl $0xcfcfcfcf, %edx1827movb %al, %bl1828movb %ah, %cl1829rorl $4, %edx1830movl _C_LABEL(des_SPtrans)(%ebx),%ebp1831movb %dl, %bl1832xorl %ebp, %edi1833movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1834xorl %ebp, %edi1835movb %dh, %cl1836shrl $16, %eax1837movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1838xorl %ebp, %edi1839movb %ah, %bl1840shrl $16, %edx1841movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1842xorl %ebp, %edi1843movl 24(%esp), %ebp1844movb %dh, %cl1845andl $0xff, %eax1846andl $0xff, %edx1847movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1848xorl %ebx, %edi1849movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1850xorl %ebx, %edi1851movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1852xorl %ebx, %edi1853movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1854xorl %ebx, %edi18551856/* Round 13 */1857movl 104(%ebp), %eax1858xorl %ebx, %ebx1859movl 108(%ebp), %edx1860xorl %edi, %eax1861xorl %edi, %edx1862andl $0xfcfcfcfc, %eax1863andl $0xcfcfcfcf, %edx1864movb %al, %bl1865movb %ah, %cl1866rorl $4, %edx1867movl _C_LABEL(des_SPtrans)(%ebx),%ebp1868movb %dl, %bl1869xorl %ebp, %esi1870movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1871xorl %ebp, %esi1872movb %dh, %cl1873shrl $16, %eax1874movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1875xorl %ebp, %esi1876movb %ah, %bl1877shrl $16, %edx1878movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1879xorl %ebp, %esi1880movl 24(%esp), %ebp1881movb %dh, %cl1882andl $0xff, %eax1883andl $0xff, %edx1884movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1885xorl %ebx, %esi1886movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1887xorl %ebx, %esi1888movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1889xorl %ebx, %esi1890movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1891xorl %ebx, %esi18921893/* Round 14 */1894movl 112(%ebp), %eax1895xorl %ebx, %ebx1896movl 116(%ebp), %edx1897xorl %esi, %eax1898xorl %esi, %edx1899andl $0xfcfcfcfc, %eax1900andl $0xcfcfcfcf, %edx1901movb %al, %bl1902movb %ah, %cl1903rorl $4, %edx1904movl _C_LABEL(des_SPtrans)(%ebx),%ebp1905movb %dl, %bl1906xorl %ebp, %edi1907movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1908xorl %ebp, %edi1909movb %dh, %cl1910shrl $16, %eax1911movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1912xorl %ebp, %edi1913movb %ah, %bl1914shrl $16, %edx1915movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1916xorl %ebp, %edi1917movl 24(%esp), %ebp1918movb %dh, %cl1919andl $0xff, %eax1920andl $0xff, %edx1921movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1922xorl %ebx, %edi1923movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1924xorl %ebx, %edi1925movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1926xorl %ebx, %edi1927movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1928xorl %ebx, %edi19291930/* Round 15 */1931movl 120(%ebp), %eax1932xorl %ebx, %ebx1933movl 124(%ebp), %edx1934xorl %edi, %eax1935xorl %edi, %edx1936andl $0xfcfcfcfc, %eax1937andl $0xcfcfcfcf, %edx1938movb %al, %bl1939movb %ah, %cl1940rorl $4, %edx1941movl _C_LABEL(des_SPtrans)(%ebx),%ebp1942movb %dl, %bl1943xorl %ebp, %esi1944movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1945xorl %ebp, %esi1946movb %dh, %cl1947shrl $16, %eax1948movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1949xorl %ebp, %esi1950movb %ah, %bl1951shrl $16, %edx1952movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1953xorl %ebp, %esi1954movl 24(%esp), %ebp1955movb %dh, %cl1956andl $0xff, %eax1957andl $0xff, %edx1958movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1959xorl %ebx, %esi1960movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx1961xorl %ebx, %esi1962movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx1963xorl %ebx, %esi1964movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx1965xorl %ebx, %esi1966jmp .L003end1967.L002start_decrypt:19681969/* Round 15 */1970movl 120(%ebp), %eax1971xorl %ebx, %ebx1972movl 124(%ebp), %edx1973xorl %esi, %eax1974xorl %esi, %edx1975andl $0xfcfcfcfc, %eax1976andl $0xcfcfcfcf, %edx1977movb %al, %bl1978movb %ah, %cl1979rorl $4, %edx1980movl _C_LABEL(des_SPtrans)(%ebx),%ebp1981movb %dl, %bl1982xorl %ebp, %edi1983movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp1984xorl %ebp, %edi1985movb %dh, %cl1986shrl $16, %eax1987movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp1988xorl %ebp, %edi1989movb %ah, %bl1990shrl $16, %edx1991movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp1992xorl %ebp, %edi1993movl 24(%esp), %ebp1994movb %dh, %cl1995andl $0xff, %eax1996andl $0xff, %edx1997movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx1998xorl %ebx, %edi1999movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2000xorl %ebx, %edi2001movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2002xorl %ebx, %edi2003movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2004xorl %ebx, %edi20052006/* Round 14 */2007movl 112(%ebp), %eax2008xorl %ebx, %ebx2009movl 116(%ebp), %edx2010xorl %edi, %eax2011xorl %edi, %edx2012andl $0xfcfcfcfc, %eax2013andl $0xcfcfcfcf, %edx2014movb %al, %bl2015movb %ah, %cl2016rorl $4, %edx2017movl _C_LABEL(des_SPtrans)(%ebx),%ebp2018movb %dl, %bl2019xorl %ebp, %esi2020movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2021xorl %ebp, %esi2022movb %dh, %cl2023shrl $16, %eax2024movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2025xorl %ebp, %esi2026movb %ah, %bl2027shrl $16, %edx2028movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2029xorl %ebp, %esi2030movl 24(%esp), %ebp2031movb %dh, %cl2032andl $0xff, %eax2033andl $0xff, %edx2034movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2035xorl %ebx, %esi2036movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2037xorl %ebx, %esi2038movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2039xorl %ebx, %esi2040movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2041xorl %ebx, %esi20422043/* Round 13 */2044movl 104(%ebp), %eax2045xorl %ebx, %ebx2046movl 108(%ebp), %edx2047xorl %esi, %eax2048xorl %esi, %edx2049andl $0xfcfcfcfc, %eax2050andl $0xcfcfcfcf, %edx2051movb %al, %bl2052movb %ah, %cl2053rorl $4, %edx2054movl _C_LABEL(des_SPtrans)(%ebx),%ebp2055movb %dl, %bl2056xorl %ebp, %edi2057movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2058xorl %ebp, %edi2059movb %dh, %cl2060shrl $16, %eax2061movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2062xorl %ebp, %edi2063movb %ah, %bl2064shrl $16, %edx2065movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2066xorl %ebp, %edi2067movl 24(%esp), %ebp2068movb %dh, %cl2069andl $0xff, %eax2070andl $0xff, %edx2071movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2072xorl %ebx, %edi2073movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2074xorl %ebx, %edi2075movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2076xorl %ebx, %edi2077movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2078xorl %ebx, %edi20792080/* Round 12 */2081movl 96(%ebp), %eax2082xorl %ebx, %ebx2083movl 100(%ebp), %edx2084xorl %edi, %eax2085xorl %edi, %edx2086andl $0xfcfcfcfc, %eax2087andl $0xcfcfcfcf, %edx2088movb %al, %bl2089movb %ah, %cl2090rorl $4, %edx2091movl _C_LABEL(des_SPtrans)(%ebx),%ebp2092movb %dl, %bl2093xorl %ebp, %esi2094movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2095xorl %ebp, %esi2096movb %dh, %cl2097shrl $16, %eax2098movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2099xorl %ebp, %esi2100movb %ah, %bl2101shrl $16, %edx2102movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2103xorl %ebp, %esi2104movl 24(%esp), %ebp2105movb %dh, %cl2106andl $0xff, %eax2107andl $0xff, %edx2108movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2109xorl %ebx, %esi2110movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2111xorl %ebx, %esi2112movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2113xorl %ebx, %esi2114movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2115xorl %ebx, %esi21162117/* Round 11 */2118movl 88(%ebp), %eax2119xorl %ebx, %ebx2120movl 92(%ebp), %edx2121xorl %esi, %eax2122xorl %esi, %edx2123andl $0xfcfcfcfc, %eax2124andl $0xcfcfcfcf, %edx2125movb %al, %bl2126movb %ah, %cl2127rorl $4, %edx2128movl _C_LABEL(des_SPtrans)(%ebx),%ebp2129movb %dl, %bl2130xorl %ebp, %edi2131movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2132xorl %ebp, %edi2133movb %dh, %cl2134shrl $16, %eax2135movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2136xorl %ebp, %edi2137movb %ah, %bl2138shrl $16, %edx2139movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2140xorl %ebp, %edi2141movl 24(%esp), %ebp2142movb %dh, %cl2143andl $0xff, %eax2144andl $0xff, %edx2145movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2146xorl %ebx, %edi2147movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2148xorl %ebx, %edi2149movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2150xorl %ebx, %edi2151movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2152xorl %ebx, %edi21532154/* Round 10 */2155movl 80(%ebp), %eax2156xorl %ebx, %ebx2157movl 84(%ebp), %edx2158xorl %edi, %eax2159xorl %edi, %edx2160andl $0xfcfcfcfc, %eax2161andl $0xcfcfcfcf, %edx2162movb %al, %bl2163movb %ah, %cl2164rorl $4, %edx2165movl _C_LABEL(des_SPtrans)(%ebx),%ebp2166movb %dl, %bl2167xorl %ebp, %esi2168movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2169xorl %ebp, %esi2170movb %dh, %cl2171shrl $16, %eax2172movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2173xorl %ebp, %esi2174movb %ah, %bl2175shrl $16, %edx2176movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2177xorl %ebp, %esi2178movl 24(%esp), %ebp2179movb %dh, %cl2180andl $0xff, %eax2181andl $0xff, %edx2182movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2183xorl %ebx, %esi2184movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2185xorl %ebx, %esi2186movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2187xorl %ebx, %esi2188movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2189xorl %ebx, %esi21902191/* Round 9 */2192movl 72(%ebp), %eax2193xorl %ebx, %ebx2194movl 76(%ebp), %edx2195xorl %esi, %eax2196xorl %esi, %edx2197andl $0xfcfcfcfc, %eax2198andl $0xcfcfcfcf, %edx2199movb %al, %bl2200movb %ah, %cl2201rorl $4, %edx2202movl _C_LABEL(des_SPtrans)(%ebx),%ebp2203movb %dl, %bl2204xorl %ebp, %edi2205movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2206xorl %ebp, %edi2207movb %dh, %cl2208shrl $16, %eax2209movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2210xorl %ebp, %edi2211movb %ah, %bl2212shrl $16, %edx2213movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2214xorl %ebp, %edi2215movl 24(%esp), %ebp2216movb %dh, %cl2217andl $0xff, %eax2218andl $0xff, %edx2219movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2220xorl %ebx, %edi2221movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2222xorl %ebx, %edi2223movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2224xorl %ebx, %edi2225movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2226xorl %ebx, %edi22272228/* Round 8 */2229movl 64(%ebp), %eax2230xorl %ebx, %ebx2231movl 68(%ebp), %edx2232xorl %edi, %eax2233xorl %edi, %edx2234andl $0xfcfcfcfc, %eax2235andl $0xcfcfcfcf, %edx2236movb %al, %bl2237movb %ah, %cl2238rorl $4, %edx2239movl _C_LABEL(des_SPtrans)(%ebx),%ebp2240movb %dl, %bl2241xorl %ebp, %esi2242movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2243xorl %ebp, %esi2244movb %dh, %cl2245shrl $16, %eax2246movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2247xorl %ebp, %esi2248movb %ah, %bl2249shrl $16, %edx2250movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2251xorl %ebp, %esi2252movl 24(%esp), %ebp2253movb %dh, %cl2254andl $0xff, %eax2255andl $0xff, %edx2256movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2257xorl %ebx, %esi2258movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2259xorl %ebx, %esi2260movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2261xorl %ebx, %esi2262movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2263xorl %ebx, %esi22642265/* Round 7 */2266movl 56(%ebp), %eax2267xorl %ebx, %ebx2268movl 60(%ebp), %edx2269xorl %esi, %eax2270xorl %esi, %edx2271andl $0xfcfcfcfc, %eax2272andl $0xcfcfcfcf, %edx2273movb %al, %bl2274movb %ah, %cl2275rorl $4, %edx2276movl _C_LABEL(des_SPtrans)(%ebx),%ebp2277movb %dl, %bl2278xorl %ebp, %edi2279movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2280xorl %ebp, %edi2281movb %dh, %cl2282shrl $16, %eax2283movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2284xorl %ebp, %edi2285movb %ah, %bl2286shrl $16, %edx2287movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2288xorl %ebp, %edi2289movl 24(%esp), %ebp2290movb %dh, %cl2291andl $0xff, %eax2292andl $0xff, %edx2293movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2294xorl %ebx, %edi2295movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2296xorl %ebx, %edi2297movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2298xorl %ebx, %edi2299movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2300xorl %ebx, %edi23012302/* Round 6 */2303movl 48(%ebp), %eax2304xorl %ebx, %ebx2305movl 52(%ebp), %edx2306xorl %edi, %eax2307xorl %edi, %edx2308andl $0xfcfcfcfc, %eax2309andl $0xcfcfcfcf, %edx2310movb %al, %bl2311movb %ah, %cl2312rorl $4, %edx2313movl _C_LABEL(des_SPtrans)(%ebx),%ebp2314movb %dl, %bl2315xorl %ebp, %esi2316movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2317xorl %ebp, %esi2318movb %dh, %cl2319shrl $16, %eax2320movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2321xorl %ebp, %esi2322movb %ah, %bl2323shrl $16, %edx2324movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2325xorl %ebp, %esi2326movl 24(%esp), %ebp2327movb %dh, %cl2328andl $0xff, %eax2329andl $0xff, %edx2330movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2331xorl %ebx, %esi2332movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2333xorl %ebx, %esi2334movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2335xorl %ebx, %esi2336movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2337xorl %ebx, %esi23382339/* Round 5 */2340movl 40(%ebp), %eax2341xorl %ebx, %ebx2342movl 44(%ebp), %edx2343xorl %esi, %eax2344xorl %esi, %edx2345andl $0xfcfcfcfc, %eax2346andl $0xcfcfcfcf, %edx2347movb %al, %bl2348movb %ah, %cl2349rorl $4, %edx2350movl _C_LABEL(des_SPtrans)(%ebx),%ebp2351movb %dl, %bl2352xorl %ebp, %edi2353movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2354xorl %ebp, %edi2355movb %dh, %cl2356shrl $16, %eax2357movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2358xorl %ebp, %edi2359movb %ah, %bl2360shrl $16, %edx2361movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2362xorl %ebp, %edi2363movl 24(%esp), %ebp2364movb %dh, %cl2365andl $0xff, %eax2366andl $0xff, %edx2367movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2368xorl %ebx, %edi2369movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2370xorl %ebx, %edi2371movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2372xorl %ebx, %edi2373movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2374xorl %ebx, %edi23752376/* Round 4 */2377movl 32(%ebp), %eax2378xorl %ebx, %ebx2379movl 36(%ebp), %edx2380xorl %edi, %eax2381xorl %edi, %edx2382andl $0xfcfcfcfc, %eax2383andl $0xcfcfcfcf, %edx2384movb %al, %bl2385movb %ah, %cl2386rorl $4, %edx2387movl _C_LABEL(des_SPtrans)(%ebx),%ebp2388movb %dl, %bl2389xorl %ebp, %esi2390movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2391xorl %ebp, %esi2392movb %dh, %cl2393shrl $16, %eax2394movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2395xorl %ebp, %esi2396movb %ah, %bl2397shrl $16, %edx2398movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2399xorl %ebp, %esi2400movl 24(%esp), %ebp2401movb %dh, %cl2402andl $0xff, %eax2403andl $0xff, %edx2404movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2405xorl %ebx, %esi2406movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2407xorl %ebx, %esi2408movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2409xorl %ebx, %esi2410movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2411xorl %ebx, %esi24122413/* Round 3 */2414movl 24(%ebp), %eax2415xorl %ebx, %ebx2416movl 28(%ebp), %edx2417xorl %esi, %eax2418xorl %esi, %edx2419andl $0xfcfcfcfc, %eax2420andl $0xcfcfcfcf, %edx2421movb %al, %bl2422movb %ah, %cl2423rorl $4, %edx2424movl _C_LABEL(des_SPtrans)(%ebx),%ebp2425movb %dl, %bl2426xorl %ebp, %edi2427movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2428xorl %ebp, %edi2429movb %dh, %cl2430shrl $16, %eax2431movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2432xorl %ebp, %edi2433movb %ah, %bl2434shrl $16, %edx2435movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2436xorl %ebp, %edi2437movl 24(%esp), %ebp2438movb %dh, %cl2439andl $0xff, %eax2440andl $0xff, %edx2441movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2442xorl %ebx, %edi2443movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2444xorl %ebx, %edi2445movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2446xorl %ebx, %edi2447movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2448xorl %ebx, %edi24492450/* Round 2 */2451movl 16(%ebp), %eax2452xorl %ebx, %ebx2453movl 20(%ebp), %edx2454xorl %edi, %eax2455xorl %edi, %edx2456andl $0xfcfcfcfc, %eax2457andl $0xcfcfcfcf, %edx2458movb %al, %bl2459movb %ah, %cl2460rorl $4, %edx2461movl _C_LABEL(des_SPtrans)(%ebx),%ebp2462movb %dl, %bl2463xorl %ebp, %esi2464movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2465xorl %ebp, %esi2466movb %dh, %cl2467shrl $16, %eax2468movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2469xorl %ebp, %esi2470movb %ah, %bl2471shrl $16, %edx2472movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2473xorl %ebp, %esi2474movl 24(%esp), %ebp2475movb %dh, %cl2476andl $0xff, %eax2477andl $0xff, %edx2478movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2479xorl %ebx, %esi2480movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2481xorl %ebx, %esi2482movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2483xorl %ebx, %esi2484movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2485xorl %ebx, %esi24862487/* Round 1 */2488movl 8(%ebp), %eax2489xorl %ebx, %ebx2490movl 12(%ebp), %edx2491xorl %esi, %eax2492xorl %esi, %edx2493andl $0xfcfcfcfc, %eax2494andl $0xcfcfcfcf, %edx2495movb %al, %bl2496movb %ah, %cl2497rorl $4, %edx2498movl _C_LABEL(des_SPtrans)(%ebx),%ebp2499movb %dl, %bl2500xorl %ebp, %edi2501movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2502xorl %ebp, %edi2503movb %dh, %cl2504shrl $16, %eax2505movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2506xorl %ebp, %edi2507movb %ah, %bl2508shrl $16, %edx2509movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2510xorl %ebp, %edi2511movl 24(%esp), %ebp2512movb %dh, %cl2513andl $0xff, %eax2514andl $0xff, %edx2515movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2516xorl %ebx, %edi2517movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2518xorl %ebx, %edi2519movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2520xorl %ebx, %edi2521movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2522xorl %ebx, %edi25232524/* Round 0 */2525movl (%ebp), %eax2526xorl %ebx, %ebx2527movl 4(%ebp), %edx2528xorl %edi, %eax2529xorl %edi, %edx2530andl $0xfcfcfcfc, %eax2531andl $0xcfcfcfcf, %edx2532movb %al, %bl2533movb %ah, %cl2534rorl $4, %edx2535movl _C_LABEL(des_SPtrans)(%ebx),%ebp2536movb %dl, %bl2537xorl %ebp, %esi2538movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp2539xorl %ebp, %esi2540movb %dh, %cl2541shrl $16, %eax2542movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp2543xorl %ebp, %esi2544movb %ah, %bl2545shrl $16, %edx2546movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp2547xorl %ebp, %esi2548movl 24(%esp), %ebp2549movb %dh, %cl2550andl $0xff, %eax2551andl $0xff, %edx2552movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx2553xorl %ebx, %esi2554movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx2555xorl %ebx, %esi2556movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx2557xorl %ebx, %esi2558movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx2559xorl %ebx, %esi2560.L003end:25612562/* Fixup */2563rorl $3, %edi2564movl 20(%esp), %eax2565rorl $3, %esi2566movl %edi, (%eax)2567movl %esi, 4(%eax)2568popl %ebp2569popl %ebx2570popl %edi2571popl %esi2572ret2573END(des_encrypt2)25742575ENTRY(des_encrypt3)2576pushl %ebx2577movl 8(%esp), %ebx2578pushl %ebp2579pushl %esi2580pushl %edi25812582/* Load the data words */2583movl (%ebx), %edi2584movl 4(%ebx), %esi2585subl $12, %esp25862587/* IP */2588roll $4, %edi2589movl %edi, %edx2590xorl %esi, %edi2591andl $0xf0f0f0f0, %edi2592xorl %edi, %edx2593xorl %edi, %esi25942595roll $20, %esi2596movl %esi, %edi2597xorl %edx, %esi2598andl $0xfff0000f, %esi2599xorl %esi, %edi2600xorl %esi, %edx26012602roll $14, %edi2603movl %edi, %esi2604xorl %edx, %edi2605andl $0x33333333, %edi2606xorl %edi, %esi2607xorl %edi, %edx26082609roll $22, %edx2610movl %edx, %edi2611xorl %esi, %edx2612andl $0x03fc03fc, %edx2613xorl %edx, %edi2614xorl %edx, %esi26152616roll $9, %edi2617movl %edi, %edx2618xorl %esi, %edi2619andl $0xaaaaaaaa, %edi2620xorl %edi, %edx2621xorl %edi, %esi26222623rorl $3, %edx2624rorl $2, %esi2625movl %esi, 4(%ebx)2626movl 36(%esp), %eax2627movl %edx, (%ebx)2628movl 40(%esp), %edi2629movl 44(%esp), %esi2630movl $1, 8(%esp)2631movl %eax, 4(%esp)2632movl %ebx, (%esp)2633call _C_LABEL(des_encrypt2)2634movl $0, 8(%esp)2635movl %edi, 4(%esp)2636movl %ebx, (%esp)2637call _C_LABEL(des_encrypt2)2638movl $1, 8(%esp)2639movl %esi, 4(%esp)2640movl %ebx, (%esp)2641call _C_LABEL(des_encrypt2)2642addl $12, %esp2643movl (%ebx), %edi2644movl 4(%ebx), %esi26452646/* FP */2647roll $2, %esi2648roll $3, %edi2649movl %edi, %eax2650xorl %esi, %edi2651andl $0xaaaaaaaa, %edi2652xorl %edi, %eax2653xorl %edi, %esi26542655roll $23, %eax2656movl %eax, %edi2657xorl %esi, %eax2658andl $0x03fc03fc, %eax2659xorl %eax, %edi2660xorl %eax, %esi26612662roll $10, %edi2663movl %edi, %eax2664xorl %esi, %edi2665andl $0x33333333, %edi2666xorl %edi, %eax2667xorl %edi, %esi26682669roll $18, %esi2670movl %esi, %edi2671xorl %eax, %esi2672andl $0xfff0000f, %esi2673xorl %esi, %edi2674xorl %esi, %eax26752676roll $12, %edi2677movl %edi, %esi2678xorl %eax, %edi2679andl $0xf0f0f0f0, %edi2680xorl %edi, %esi2681xorl %edi, %eax26822683rorl $4, %eax2684movl %eax, (%ebx)2685movl %esi, 4(%ebx)2686popl %edi2687popl %esi2688popl %ebp2689popl %ebx2690ret2691END(des_encrypt3)26922693ENTRY(des_decrypt3)2694pushl %ebx2695movl 8(%esp), %ebx2696pushl %ebp2697pushl %esi2698pushl %edi26992700/* Load the data words */2701movl (%ebx), %edi2702movl 4(%ebx), %esi2703subl $12, %esp27042705/* IP */2706roll $4, %edi2707movl %edi, %edx2708xorl %esi, %edi2709andl $0xf0f0f0f0, %edi2710xorl %edi, %edx2711xorl %edi, %esi27122713roll $20, %esi2714movl %esi, %edi2715xorl %edx, %esi2716andl $0xfff0000f, %esi2717xorl %esi, %edi2718xorl %esi, %edx27192720roll $14, %edi2721movl %edi, %esi2722xorl %edx, %edi2723andl $0x33333333, %edi2724xorl %edi, %esi2725xorl %edi, %edx27262727roll $22, %edx2728movl %edx, %edi2729xorl %esi, %edx2730andl $0x03fc03fc, %edx2731xorl %edx, %edi2732xorl %edx, %esi27332734roll $9, %edi2735movl %edi, %edx2736xorl %esi, %edi2737andl $0xaaaaaaaa, %edi2738xorl %edi, %edx2739xorl %edi, %esi27402741rorl $3, %edx2742rorl $2, %esi2743movl %esi, 4(%ebx)2744movl 36(%esp), %esi2745movl %edx, (%ebx)2746movl 40(%esp), %edi2747movl 44(%esp), %eax2748movl $0, 8(%esp)2749movl %eax, 4(%esp)2750movl %ebx, (%esp)2751call _C_LABEL(des_encrypt2)2752movl $1, 8(%esp)2753movl %edi, 4(%esp)2754movl %ebx, (%esp)2755call _C_LABEL(des_encrypt2)2756movl $0, 8(%esp)2757movl %esi, 4(%esp)2758movl %ebx, (%esp)2759call _C_LABEL(des_encrypt2)2760addl $12, %esp2761movl (%ebx), %edi2762movl 4(%ebx), %esi27632764/* FP */2765roll $2, %esi2766roll $3, %edi2767movl %edi, %eax2768xorl %esi, %edi2769andl $0xaaaaaaaa, %edi2770xorl %edi, %eax2771xorl %edi, %esi27722773roll $23, %eax2774movl %eax, %edi2775xorl %esi, %eax2776andl $0x03fc03fc, %eax2777xorl %eax, %edi2778xorl %eax, %esi27792780roll $10, %edi2781movl %edi, %eax2782xorl %esi, %edi2783andl $0x33333333, %edi2784xorl %edi, %eax2785xorl %edi, %esi27862787roll $18, %esi2788movl %esi, %edi2789xorl %eax, %esi2790andl $0xfff0000f, %esi2791xorl %esi, %edi2792xorl %esi, %eax27932794roll $12, %edi2795movl %edi, %esi2796xorl %eax, %edi2797andl $0xf0f0f0f0, %edi2798xorl %edi, %esi2799xorl %edi, %eax28002801rorl $4, %eax2802movl %eax, (%ebx)2803movl %esi, 4(%ebx)2804popl %edi2805popl %esi2806popl %ebp2807popl %ebx2808ret2809END(des_decrypt3)281028112812