1169689Skan/* $NetBSD: bf_enc_686.S,v 1.1 2001/09/09 11:01:02 tls Exp $ */ 250397Sobrien/* $FreeBSD$ */ 3169689Skan 4169689Skan/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 550397Sobrien * All rights reserved. 690075Sobrien * 750397Sobrien * This package is an SSL implementation written 890075Sobrien * by Eric Young (eay@cryptsoft.com). 990075Sobrien * The implementation was written so as to conform with Netscapes SSL. 1090075Sobrien * 1190075Sobrien * This library is free for commercial and non-commercial use as long as 1250397Sobrien * the following conditions are aheared to. The following conditions 1390075Sobrien * apply to all code found in this distribution, be it the RC4, RSA, 1490075Sobrien * lhash, DES, etc., code; not just the SSL code. The SSL documentation 1590075Sobrien * included with this distribution is covered by the same copyright terms 1690075Sobrien * except that the holder is Tim Hudson (tjh@cryptsoft.com). 1750397Sobrien * 1850397Sobrien * Copyright remains Eric Young's, and as such any Copyright notices in 1990075Sobrien * the code are not to be removed. 20169689Skan * If this package is used in a product, Eric Young should be given attribution 21169689Skan * as the author of the parts of the library used. 2250397Sobrien * This can be in the form of a textual message at program startup or 2350397Sobrien * in documentation (online or textual) provided with the package. 2450397Sobrien * 2550397Sobrien * Redistribution and use in source and binary forms, with or without 2650397Sobrien * modification, are permitted provided that the following conditions 2750397Sobrien * are met: 2850397Sobrien * 1. Redistributions of source code must retain the copyright 2950397Sobrien * notice, this list of conditions and the following disclaimer. 3090075Sobrien * 2. Redistributions in binary form must reproduce the above copyright 3190075Sobrien * notice, this list of conditions and the following disclaimer in the 3250397Sobrien * documentation and/or other materials provided with the distribution. 3390075Sobrien * 3. All advertising materials mentioning features or use of this software 3490075Sobrien * must display the following acknowledgement: 3590075Sobrien * "This product includes cryptographic software written by 3690075Sobrien * Eric Young (eay@cryptsoft.com)" 3790075Sobrien * The word 'cryptographic' can be left out if the rouines from the library 3890075Sobrien * being used are not cryptographic related :-). 3950397Sobrien * 4. If you include any Windows specific code (or a derivative thereof) from 4050397Sobrien * the apps directory (application code) you must include an acknowledgement: 4190075Sobrien * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 4250397Sobrien * 4350397Sobrien * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 4450397Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4550397Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4650397Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 4750397Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 4850397Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 4950397Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50169689Skan * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 5150397Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 5250397Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 5350397Sobrien * SUCH DAMAGE. 5490075Sobrien * 55169689Skan * The licence and distribution terms for any publically available version or 5690075Sobrien * derivative of this code cannot be changed. i.e. this code cannot simply be 5790075Sobrien * copied and put under another distribution licence 5890075Sobrien * [including the GNU Public Licence.] 5950397Sobrien */ 60169689Skan 61169689Skan/* 62169689Skan * Modified from the output of `perl bf-686.pl elf' by 63169689Skan * Jason R. Thorpe <thorpej@zembu.com> and Thor Lancelot Simon 64169689Skan * <tls@netbsd.org> 65169689Skan */ 66169689Skan 6750397Sobrien#include <i386/include/asm.h> 68169689Skan#define _C_LABEL CNAME 69169689Skan 70169689SkanENTRY(BF_encrypt) 71169689Skan pushl %ebp 72169689Skan pushl %ebx 73169689Skan pushl %esi 74169689Skan pushl %edi 75169689Skan 76169689Skan 77169689Skan /* Load the 2 words */ 78169689Skan movl 20(%esp), %eax 79169689Skan movl (%eax), %ecx 8050397Sobrien movl 4(%eax), %edx 8190075Sobrien 82117395Skan /* P pointer, s and enc flag */ 83169689Skan movl 24(%esp), %edi 84169689Skan xorl %eax, %eax 85169689Skan xorl %ebx, %ebx 86169689Skan xorl (%edi), %ecx 87169689Skan 88169689Skan /* Round 0 */ 89169689Skan rorl $16, %ecx 90169689Skan movl 4(%edi), %esi 91169689Skan movb %ch, %al 92169689Skan movb %cl, %bl 93169689Skan rorl $16, %ecx 94169689Skan xorl %esi, %edx 9590075Sobrien movl 72(%edi,%eax,4),%esi 9650397Sobrien movl 1096(%edi,%ebx,4),%ebp 97169689Skan movb %ch, %al 98169689Skan movb %cl, %bl 99169689Skan addl %ebp, %esi 100169689Skan movl 2120(%edi,%eax,4),%eax 101169689Skan xorl %eax, %esi 102169689Skan movl 3144(%edi,%ebx,4),%ebp 103169689Skan addl %ebp, %esi 10450397Sobrien xorl %eax, %eax 10590075Sobrien xorl %esi, %edx 10650397Sobrien 107169689Skan /* Round 1 */ 10850397Sobrien rorl $16, %edx 10950397Sobrien movl 8(%edi), %esi 11050397Sobrien movb %dh, %al 11150397Sobrien movb %dl, %bl 11250397Sobrien rorl $16, %edx 11350397Sobrien xorl %esi, %ecx 11490075Sobrien movl 72(%edi,%eax,4),%esi 11550397Sobrien movl 1096(%edi,%ebx,4),%ebp 11650397Sobrien movb %dh, %al 11750397Sobrien movb %dl, %bl 11850397Sobrien addl %ebp, %esi 11950397Sobrien movl 2120(%edi,%eax,4),%eax 12050397Sobrien xorl %eax, %esi 12190075Sobrien movl 3144(%edi,%ebx,4),%ebp 12290075Sobrien addl %ebp, %esi 12390075Sobrien xorl %eax, %eax 12490075Sobrien xorl %esi, %ecx 12590075Sobrien 12690075Sobrien /* Round 2 */ 12790075Sobrien rorl $16, %ecx 12890075Sobrien movl 12(%edi), %esi 12990075Sobrien movb %ch, %al 13090075Sobrien movb %cl, %bl 13190075Sobrien rorl $16, %ecx 13250397Sobrien xorl %esi, %edx 133117395Skan movl 72(%edi,%eax,4),%esi 13450397Sobrien movl 1096(%edi,%ebx,4),%ebp 13550397Sobrien movb %ch, %al 136169689Skan movb %cl, %bl 137169689Skan addl %ebp, %esi 13890075Sobrien movl 2120(%edi,%eax,4),%eax 13990075Sobrien xorl %eax, %esi 14090075Sobrien movl 3144(%edi,%ebx,4),%ebp 14190075Sobrien addl %ebp, %esi 14290075Sobrien xorl %eax, %eax 14390075Sobrien xorl %esi, %edx 144117395Skan 14590075Sobrien /* Round 3 */ 14690075Sobrien rorl $16, %edx 14790075Sobrien movl 16(%edi), %esi 14890075Sobrien movb %dh, %al 14990075Sobrien movb %dl, %bl 15090075Sobrien rorl $16, %edx 15190075Sobrien xorl %esi, %ecx 15290075Sobrien movl 72(%edi,%eax,4),%esi 15390075Sobrien movl 1096(%edi,%ebx,4),%ebp 15490075Sobrien movb %dh, %al 15590075Sobrien movb %dl, %bl 156117395Skan addl %ebp, %esi 15790075Sobrien movl 2120(%edi,%eax,4),%eax 15890075Sobrien xorl %eax, %esi 15990075Sobrien movl 3144(%edi,%ebx,4),%ebp 16090075Sobrien addl %ebp, %esi 16190075Sobrien xorl %eax, %eax 16290075Sobrien xorl %esi, %ecx 163117395Skan 164169689Skan /* Round 4 */ 165117395Skan rorl $16, %ecx 16690075Sobrien movl 20(%edi), %esi 16790075Sobrien movb %ch, %al 168117395Skan movb %cl, %bl 169117395Skan rorl $16, %ecx 17090075Sobrien xorl %esi, %edx 17190075Sobrien movl 72(%edi,%eax,4),%esi 17290075Sobrien movl 1096(%edi,%ebx,4),%ebp 173117395Skan movb %ch, %al 17490075Sobrien movb %cl, %bl 17590075Sobrien addl %ebp, %esi 17690075Sobrien movl 2120(%edi,%eax,4),%eax 17790075Sobrien xorl %eax, %esi 17890075Sobrien movl 3144(%edi,%ebx,4),%ebp 179117395Skan addl %ebp, %esi 18090075Sobrien xorl %eax, %eax 18190075Sobrien xorl %esi, %edx 18290075Sobrien 18390075Sobrien /* Round 5 */ 18490075Sobrien rorl $16, %edx 18590075Sobrien movl 24(%edi), %esi 18690075Sobrien movb %dh, %al 18790075Sobrien movb %dl, %bl 18890075Sobrien rorl $16, %edx 18990075Sobrien xorl %esi, %ecx 19090075Sobrien movl 72(%edi,%eax,4),%esi 19190075Sobrien movl 1096(%edi,%ebx,4),%ebp 19290075Sobrien movb %dh, %al 19390075Sobrien movb %dl, %bl 19490075Sobrien addl %ebp, %esi 19590075Sobrien movl 2120(%edi,%eax,4),%eax 19690075Sobrien xorl %eax, %esi 19790075Sobrien movl 3144(%edi,%ebx,4),%ebp 19890075Sobrien addl %ebp, %esi 199117395Skan xorl %eax, %eax 20090075Sobrien xorl %esi, %ecx 201169689Skan 20290075Sobrien /* Round 6 */ 20390075Sobrien rorl $16, %ecx 20490075Sobrien movl 28(%edi), %esi 20590075Sobrien movb %ch, %al 20690075Sobrien movb %cl, %bl 20790075Sobrien rorl $16, %ecx 20890075Sobrien xorl %esi, %edx 20990075Sobrien movl 72(%edi,%eax,4),%esi 210117395Skan movl 1096(%edi,%ebx,4),%ebp 21190075Sobrien movb %ch, %al 21290075Sobrien movb %cl, %bl 21390075Sobrien addl %ebp, %esi 21490075Sobrien movl 2120(%edi,%eax,4),%eax 21590075Sobrien xorl %eax, %esi 216169689Skan movl 3144(%edi,%ebx,4),%ebp 217117395Skan addl %ebp, %esi 21890075Sobrien xorl %eax, %eax 21990075Sobrien xorl %esi, %edx 22090075Sobrien 22190075Sobrien /* Round 7 */ 22290075Sobrien rorl $16, %edx 22390075Sobrien movl 32(%edi), %esi 22490075Sobrien movb %dh, %al 22590075Sobrien movb %dl, %bl 22690075Sobrien rorl $16, %edx 22790075Sobrien xorl %esi, %ecx 22890075Sobrien movl 72(%edi,%eax,4),%esi 22990075Sobrien movl 1096(%edi,%ebx,4),%ebp 23090075Sobrien movb %dh, %al 23190075Sobrien movb %dl, %bl 23290075Sobrien addl %ebp, %esi 23390075Sobrien movl 2120(%edi,%eax,4),%eax 23490075Sobrien xorl %eax, %esi 23590075Sobrien movl 3144(%edi,%ebx,4),%ebp 236117395Skan addl %ebp, %esi 23790075Sobrien xorl %eax, %eax 23890075Sobrien xorl %esi, %ecx 239169689Skan 24090075Sobrien /* Round 8 */ 24190075Sobrien rorl $16, %ecx 24290075Sobrien movl 36(%edi), %esi 24390075Sobrien movb %ch, %al 244117395Skan movb %cl, %bl 24590075Sobrien rorl $16, %ecx 24690075Sobrien xorl %esi, %edx 24790075Sobrien movl 72(%edi,%eax,4),%esi 248169689Skan movl 1096(%edi,%ebx,4),%ebp 24990075Sobrien movb %ch, %al 25090075Sobrien movb %cl, %bl 25190075Sobrien addl %ebp, %esi 25290075Sobrien movl 2120(%edi,%eax,4),%eax 25390075Sobrien xorl %eax, %esi 25490075Sobrien movl 3144(%edi,%ebx,4),%ebp 25590075Sobrien addl %ebp, %esi 256117395Skan xorl %eax, %eax 25790075Sobrien xorl %esi, %edx 25890075Sobrien 25990075Sobrien /* Round 9 */ 260169689Skan rorl $16, %edx 26190075Sobrien movl 40(%edi), %esi 262169689Skan movb %dh, %al 26390075Sobrien movb %dl, %bl 26490075Sobrien rorl $16, %edx 265117395Skan xorl %esi, %ecx 26690075Sobrien movl 72(%edi,%eax,4),%esi 26790075Sobrien movl 1096(%edi,%ebx,4),%ebp 26890075Sobrien movb %dh, %al 26990075Sobrien movb %dl, %bl 270117395Skan addl %ebp, %esi 27190075Sobrien movl 2120(%edi,%eax,4),%eax 27290075Sobrien xorl %eax, %esi 273169689Skan movl 3144(%edi,%ebx,4),%ebp 27490075Sobrien addl %ebp, %esi 27590075Sobrien xorl %eax, %eax 27690075Sobrien xorl %esi, %ecx 27790075Sobrien 27890075Sobrien /* Round 10 */ 27990075Sobrien rorl $16, %ecx 28090075Sobrien movl 44(%edi), %esi 28190075Sobrien movb %ch, %al 28290075Sobrien movb %cl, %bl 283117395Skan rorl $16, %ecx 28490075Sobrien xorl %esi, %edx 28590075Sobrien movl 72(%edi,%eax,4),%esi 28690075Sobrien movl 1096(%edi,%ebx,4),%ebp 28790075Sobrien movb %ch, %al 28890075Sobrien movb %cl, %bl 289169689Skan addl %ebp, %esi 29090075Sobrien movl 2120(%edi,%eax,4),%eax 29190075Sobrien xorl %eax, %esi 29290075Sobrien movl 3144(%edi,%ebx,4),%ebp 29390075Sobrien addl %ebp, %esi 29490075Sobrien xorl %eax, %eax 29590075Sobrien xorl %esi, %edx 29690075Sobrien 29790075Sobrien /* Round 11 */ 29890075Sobrien rorl $16, %edx 29990075Sobrien movl 48(%edi), %esi 30090075Sobrien movb %dh, %al 30190075Sobrien movb %dl, %bl 302117395Skan rorl $16, %edx 30390075Sobrien xorl %esi, %ecx 30490075Sobrien movl 72(%edi,%eax,4),%esi 30590075Sobrien movl 1096(%edi,%ebx,4),%ebp 306117395Skan movb %dh, %al 30790075Sobrien movb %dl, %bl 308169689Skan addl %ebp, %esi 309117395Skan movl 2120(%edi,%eax,4),%eax 310117395Skan xorl %eax, %esi 311117395Skan movl 3144(%edi,%ebx,4),%ebp 312117395Skan addl %ebp, %esi 313117395Skan xorl %eax, %eax 314117395Skan xorl %esi, %ecx 31590075Sobrien 31690075Sobrien /* Round 12 */ 31790075Sobrien rorl $16, %ecx 31890075Sobrien movl 52(%edi), %esi 31990075Sobrien movb %ch, %al 32090075Sobrien movb %cl, %bl 32190075Sobrien rorl $16, %ecx 322117395Skan xorl %esi, %edx 32390075Sobrien movl 72(%edi,%eax,4),%esi 32490075Sobrien movl 1096(%edi,%ebx,4),%ebp 32590075Sobrien movb %ch, %al 326169689Skan movb %cl, %bl 327117395Skan addl %ebp, %esi 32890075Sobrien movl 2120(%edi,%eax,4),%eax 329117395Skan xorl %eax, %esi 33090075Sobrien movl 3144(%edi,%ebx,4),%ebp 33190075Sobrien addl %ebp, %esi 33290075Sobrien xorl %eax, %eax 33390075Sobrien xorl %esi, %edx 33490075Sobrien 33590075Sobrien /* Round 13 */ 33690075Sobrien rorl $16, %edx 33790075Sobrien movl 56(%edi), %esi 338117395Skan movb %dh, %al 33990075Sobrien movb %dl, %bl 34090075Sobrien rorl $16, %edx 341169689Skan xorl %esi, %ecx 34290075Sobrien movl 72(%edi,%eax,4),%esi 34390075Sobrien movl 1096(%edi,%ebx,4),%ebp 34490075Sobrien movb %dh, %al 34590075Sobrien movb %dl, %bl 34690075Sobrien addl %ebp, %esi 34790075Sobrien movl 2120(%edi,%eax,4),%eax 348117395Skan xorl %eax, %esi 34990075Sobrien movl 3144(%edi,%ebx,4),%ebp 35090075Sobrien addl %ebp, %esi 351169689Skan xorl %eax, %eax 35290075Sobrien xorl %esi, %ecx 35390075Sobrien 35490075Sobrien /* Round 14 */ 35590075Sobrien rorl $16, %ecx 35690075Sobrien movl 60(%edi), %esi 35790075Sobrien movb %ch, %al 35890075Sobrien movb %cl, %bl 359117395Skan rorl $16, %ecx 36090075Sobrien xorl %esi, %edx 36190075Sobrien movl 72(%edi,%eax,4),%esi 362169689Skan movl 1096(%edi,%ebx,4),%ebp 36390075Sobrien movb %ch, %al 36490075Sobrien movb %cl, %bl 36590075Sobrien addl %ebp, %esi 36690075Sobrien movl 2120(%edi,%eax,4),%eax 36790075Sobrien xorl %eax, %esi 36890075Sobrien movl 3144(%edi,%ebx,4),%ebp 36990075Sobrien addl %ebp, %esi 37090075Sobrien xorl %eax, %eax 371169689Skan xorl %esi, %edx 372169689Skan 37390075Sobrien /* Round 15 */ 37490075Sobrien rorl $16, %edx 37590075Sobrien movl 64(%edi), %esi 37690075Sobrien movb %dh, %al 37790075Sobrien movb %dl, %bl 37890075Sobrien rorl $16, %edx 37990075Sobrien xorl %esi, %ecx 38090075Sobrien movl 72(%edi,%eax,4),%esi 38190075Sobrien movl 1096(%edi,%ebx,4),%ebp 38290075Sobrien movb %dh, %al 383169689Skan movb %dl, %bl 384169689Skan addl %ebp, %esi 38590075Sobrien movl 2120(%edi,%eax,4),%eax 38690075Sobrien xorl %eax, %esi 38790075Sobrien movl 3144(%edi,%ebx,4),%ebp 38890075Sobrien addl %ebp, %esi 38990075Sobrien xorl %eax, %eax 39090075Sobrien xorl %esi, %ecx 39190075Sobrien xorl 68(%edi), %edx 39290075Sobrien movl 20(%esp), %eax 39390075Sobrien movl %edx, (%eax) 39490075Sobrien movl %ecx, 4(%eax) 395169689Skan popl %edi 396169689Skan popl %esi 397169689Skan popl %ebx 39890075Sobrien popl %ebp 39990075Sobrien ret 40090075Sobrien.L_BF_encrypt_end: 40190075Sobrien .size _C_LABEL(BF_encrypt),.L_BF_encrypt_end-_C_LABEL(BF_encrypt) 40290075Sobrien 40390075SobrienENTRY(BF_decrypt) 40490075Sobrien pushl %ebp 40590075Sobrien pushl %ebx 40690075Sobrien pushl %esi 40790075Sobrien pushl %edi 408169689Skan 409169689Skan 41090075Sobrien /* Load the 2 words */ 41190075Sobrien movl 20(%esp), %eax 41290075Sobrien movl (%eax), %ecx 41390075Sobrien movl 4(%eax), %edx 41490075Sobrien 41590075Sobrien /* P pointer, s and enc flag */ 41690075Sobrien movl 24(%esp), %edi 41790075Sobrien xorl %eax, %eax 41890075Sobrien xorl %ebx, %ebx 41990075Sobrien xorl 68(%edi), %ecx 420169689Skan 421169689Skan /* Round 16 */ 42290075Sobrien rorl $16, %ecx 42390075Sobrien movl 64(%edi), %esi 42490075Sobrien movb %ch, %al 42590075Sobrien movb %cl, %bl 42690075Sobrien rorl $16, %ecx 42790075Sobrien xorl %esi, %edx 42890075Sobrien movl 72(%edi,%eax,4),%esi 42990075Sobrien movl 1096(%edi,%ebx,4),%ebp 43090075Sobrien movb %ch, %al 43190075Sobrien movb %cl, %bl 43290075Sobrien addl %ebp, %esi 43390075Sobrien movl 2120(%edi,%eax,4),%eax 43490075Sobrien xorl %eax, %esi 43590075Sobrien movl 3144(%edi,%ebx,4),%ebp 436169689Skan addl %ebp, %esi 43750397Sobrien xorl %eax, %eax 43850397Sobrien xorl %esi, %edx 43950397Sobrien 44050397Sobrien /* Round 15 */ 44150397Sobrien rorl $16, %edx 44250397Sobrien movl 60(%edi), %esi 44350397Sobrien movb %dh, %al 444169689Skan movb %dl, %bl 44550397Sobrien rorl $16, %edx 44650397Sobrien xorl %esi, %ecx 44750397Sobrien movl 72(%edi,%eax,4),%esi 448169689Skan movl 1096(%edi,%ebx,4),%ebp 44950397Sobrien movb %dh, %al 45090075Sobrien movb %dl, %bl 45190075Sobrien addl %ebp, %esi 45250397Sobrien movl 2120(%edi,%eax,4),%eax 45350397Sobrien xorl %eax, %esi 45450397Sobrien movl 3144(%edi,%ebx,4),%ebp 45550397Sobrien addl %ebp, %esi 45650397Sobrien xorl %eax, %eax 45750397Sobrien xorl %esi, %ecx 458169689Skan 45950397Sobrien /* Round 14 */ 46050397Sobrien rorl $16, %ecx 46150397Sobrien movl 56(%edi), %esi 46250397Sobrien movb %ch, %al 46350397Sobrien movb %cl, %bl 46450397Sobrien rorl $16, %ecx 46550397Sobrien xorl %esi, %edx 46650397Sobrien movl 72(%edi,%eax,4),%esi 467169689Skan movl 1096(%edi,%ebx,4),%ebp 46850397Sobrien movb %ch, %al 46950397Sobrien movb %cl, %bl 47090075Sobrien addl %ebp, %esi 47190075Sobrien movl 2120(%edi,%eax,4),%eax 47290075Sobrien xorl %eax, %esi 47390075Sobrien movl 3144(%edi,%ebx,4),%ebp 474169689Skan addl %ebp, %esi 47590075Sobrien xorl %eax, %eax 47690075Sobrien xorl %esi, %edx 47750397Sobrien 47850397Sobrien /* Round 13 */ 47950397Sobrien rorl $16, %edx 48050397Sobrien movl 52(%edi), %esi 481169689Skan movb %dh, %al 48250397Sobrien movb %dl, %bl 48350397Sobrien rorl $16, %edx 48450397Sobrien xorl %esi, %ecx 48550397Sobrien movl 72(%edi,%eax,4),%esi 48650397Sobrien movl 1096(%edi,%ebx,4),%ebp 48750397Sobrien movb %dh, %al 48850397Sobrien movb %dl, %bl 48950397Sobrien addl %ebp, %esi 490169689Skan movl 2120(%edi,%eax,4),%eax 49150397Sobrien xorl %eax, %esi 49250397Sobrien movl 3144(%edi,%ebx,4),%ebp 49350397Sobrien addl %ebp, %esi 49450397Sobrien xorl %eax, %eax 49550397Sobrien xorl %esi, %ecx 49650397Sobrien 49750397Sobrien /* Round 12 */ 49850397Sobrien rorl $16, %ecx 499169689Skan movl 48(%edi), %esi 50050397Sobrien movb %ch, %al 50150397Sobrien movb %cl, %bl 50250397Sobrien rorl $16, %ecx 50350397Sobrien xorl %esi, %edx 504169689Skan movl 72(%edi,%eax,4),%esi 505169689Skan movl 1096(%edi,%ebx,4),%ebp 506169689Skan movb %ch, %al 507169689Skan movb %cl, %bl 508169689Skan addl %ebp, %esi 509169689Skan movl 2120(%edi,%eax,4),%eax 510169689Skan xorl %eax, %esi 511169689Skan movl 3144(%edi,%ebx,4),%ebp 512169689Skan addl %ebp, %esi 513169689Skan xorl %eax, %eax 514169689Skan xorl %esi, %edx 515169689Skan 516169689Skan /* Round 11 */ 517169689Skan rorl $16, %edx 518169689Skan movl 44(%edi), %esi 519169689Skan movb %dh, %al 520169689Skan movb %dl, %bl 521169689Skan rorl $16, %edx 522169689Skan xorl %esi, %ecx 523169689Skan movl 72(%edi,%eax,4),%esi 524169689Skan movl 1096(%edi,%ebx,4),%ebp 525169689Skan movb %dh, %al 526169689Skan movb %dl, %bl 527169689Skan addl %ebp, %esi 528169689Skan movl 2120(%edi,%eax,4),%eax 529169689Skan xorl %eax, %esi 530169689Skan movl 3144(%edi,%ebx,4),%ebp 531169689Skan addl %ebp, %esi 532169689Skan xorl %eax, %eax 533169689Skan xorl %esi, %ecx 534169689Skan 535169689Skan /* Round 10 */ 536169689Skan rorl $16, %ecx 537169689Skan movl 40(%edi), %esi 538169689Skan movb %ch, %al 539169689Skan movb %cl, %bl 540169689Skan rorl $16, %ecx 541169689Skan xorl %esi, %edx 54290075Sobrien movl 72(%edi,%eax,4),%esi 54390075Sobrien movl 1096(%edi,%ebx,4),%ebp 54490075Sobrien movb %ch, %al 54590075Sobrien movb %cl, %bl 546 addl %ebp, %esi 547 movl 2120(%edi,%eax,4),%eax 548 xorl %eax, %esi 549 movl 3144(%edi,%ebx,4),%ebp 550 addl %ebp, %esi 551 xorl %eax, %eax 552 xorl %esi, %edx 553 554 /* Round 9 */ 555 rorl $16, %edx 556 movl 36(%edi), %esi 557 movb %dh, %al 558 movb %dl, %bl 559 rorl $16, %edx 560 xorl %esi, %ecx 561 movl 72(%edi,%eax,4),%esi 562 movl 1096(%edi,%ebx,4),%ebp 563 movb %dh, %al 564 movb %dl, %bl 565 addl %ebp, %esi 566 movl 2120(%edi,%eax,4),%eax 567 xorl %eax, %esi 568 movl 3144(%edi,%ebx,4),%ebp 569 addl %ebp, %esi 570 xorl %eax, %eax 571 xorl %esi, %ecx 572 573 /* Round 8 */ 574 rorl $16, %ecx 575 movl 32(%edi), %esi 576 movb %ch, %al 577 movb %cl, %bl 578 rorl $16, %ecx 579 xorl %esi, %edx 580 movl 72(%edi,%eax,4),%esi 581 movl 1096(%edi,%ebx,4),%ebp 582 movb %ch, %al 583 movb %cl, %bl 584 addl %ebp, %esi 585 movl 2120(%edi,%eax,4),%eax 586 xorl %eax, %esi 587 movl 3144(%edi,%ebx,4),%ebp 588 addl %ebp, %esi 589 xorl %eax, %eax 590 xorl %esi, %edx 591 592 /* Round 7 */ 593 rorl $16, %edx 594 movl 28(%edi), %esi 595 movb %dh, %al 596 movb %dl, %bl 597 rorl $16, %edx 598 xorl %esi, %ecx 599 movl 72(%edi,%eax,4),%esi 600 movl 1096(%edi,%ebx,4),%ebp 601 movb %dh, %al 602 movb %dl, %bl 603 addl %ebp, %esi 604 movl 2120(%edi,%eax,4),%eax 605 xorl %eax, %esi 606 movl 3144(%edi,%ebx,4),%ebp 607 addl %ebp, %esi 608 xorl %eax, %eax 609 xorl %esi, %ecx 610 611 /* Round 6 */ 612 rorl $16, %ecx 613 movl 24(%edi), %esi 614 movb %ch, %al 615 movb %cl, %bl 616 rorl $16, %ecx 617 xorl %esi, %edx 618 movl 72(%edi,%eax,4),%esi 619 movl 1096(%edi,%ebx,4),%ebp 620 movb %ch, %al 621 movb %cl, %bl 622 addl %ebp, %esi 623 movl 2120(%edi,%eax,4),%eax 624 xorl %eax, %esi 625 movl 3144(%edi,%ebx,4),%ebp 626 addl %ebp, %esi 627 xorl %eax, %eax 628 xorl %esi, %edx 629 630 /* Round 5 */ 631 rorl $16, %edx 632 movl 20(%edi), %esi 633 movb %dh, %al 634 movb %dl, %bl 635 rorl $16, %edx 636 xorl %esi, %ecx 637 movl 72(%edi,%eax,4),%esi 638 movl 1096(%edi,%ebx,4),%ebp 639 movb %dh, %al 640 movb %dl, %bl 641 addl %ebp, %esi 642 movl 2120(%edi,%eax,4),%eax 643 xorl %eax, %esi 644 movl 3144(%edi,%ebx,4),%ebp 645 addl %ebp, %esi 646 xorl %eax, %eax 647 xorl %esi, %ecx 648 649 /* Round 4 */ 650 rorl $16, %ecx 651 movl 16(%edi), %esi 652 movb %ch, %al 653 movb %cl, %bl 654 rorl $16, %ecx 655 xorl %esi, %edx 656 movl 72(%edi,%eax,4),%esi 657 movl 1096(%edi,%ebx,4),%ebp 658 movb %ch, %al 659 movb %cl, %bl 660 addl %ebp, %esi 661 movl 2120(%edi,%eax,4),%eax 662 xorl %eax, %esi 663 movl 3144(%edi,%ebx,4),%ebp 664 addl %ebp, %esi 665 xorl %eax, %eax 666 xorl %esi, %edx 667 668 /* Round 3 */ 669 rorl $16, %edx 670 movl 12(%edi), %esi 671 movb %dh, %al 672 movb %dl, %bl 673 rorl $16, %edx 674 xorl %esi, %ecx 675 movl 72(%edi,%eax,4),%esi 676 movl 1096(%edi,%ebx,4),%ebp 677 movb %dh, %al 678 movb %dl, %bl 679 addl %ebp, %esi 680 movl 2120(%edi,%eax,4),%eax 681 xorl %eax, %esi 682 movl 3144(%edi,%ebx,4),%ebp 683 addl %ebp, %esi 684 xorl %eax, %eax 685 xorl %esi, %ecx 686 687 /* Round 2 */ 688 rorl $16, %ecx 689 movl 8(%edi), %esi 690 movb %ch, %al 691 movb %cl, %bl 692 rorl $16, %ecx 693 xorl %esi, %edx 694 movl 72(%edi,%eax,4),%esi 695 movl 1096(%edi,%ebx,4),%ebp 696 movb %ch, %al 697 movb %cl, %bl 698 addl %ebp, %esi 699 movl 2120(%edi,%eax,4),%eax 700 xorl %eax, %esi 701 movl 3144(%edi,%ebx,4),%ebp 702 addl %ebp, %esi 703 xorl %eax, %eax 704 xorl %esi, %edx 705 706 /* Round 1 */ 707 rorl $16, %edx 708 movl 4(%edi), %esi 709 movb %dh, %al 710 movb %dl, %bl 711 rorl $16, %edx 712 xorl %esi, %ecx 713 movl 72(%edi,%eax,4),%esi 714 movl 1096(%edi,%ebx,4),%ebp 715 movb %dh, %al 716 movb %dl, %bl 717 addl %ebp, %esi 718 movl 2120(%edi,%eax,4),%eax 719 xorl %eax, %esi 720 movl 3144(%edi,%ebx,4),%ebp 721 addl %ebp, %esi 722 xorl %eax, %eax 723 xorl %esi, %ecx 724 xorl (%edi), %edx 725 movl 20(%esp), %eax 726 movl %edx, (%eax) 727 movl %ecx, 4(%eax) 728 popl %edi 729 popl %esi 730 popl %ebx 731 popl %ebp 732 ret 733 .L_BF_decrypt_end: 734 .size _C_LABEL(BF_decrypt),.L_BF_decrypt_end-_C_LABEL(BF_decrypt) 735