bf_enc_586.S revision 1.5 1 1.5 lukem /* $NetBSD: bf_enc_586.S,v 1.5 2007/12/11 23:13:57 lukem Exp $ */
2 1.1 tls
3 1.1 tls /* Copyright (C) 1995-1998 Eric Young (eay (at) cryptsoft.com)
4 1.1 tls * All rights reserved.
5 1.1 tls *
6 1.1 tls * This package is an SSL implementation written
7 1.1 tls * by Eric Young (eay (at) cryptsoft.com).
8 1.1 tls * The implementation was written so as to conform with Netscapes SSL.
9 1.3 perry *
10 1.1 tls * This library is free for commercial and non-commercial use as long as
11 1.1 tls * the following conditions are aheared to. The following conditions
12 1.1 tls * apply to all code found in this distribution, be it the RC4, RSA,
13 1.1 tls * lhash, DES, etc., code; not just the SSL code. The SSL documentation
14 1.1 tls * included with this distribution is covered by the same copyright terms
15 1.1 tls * except that the holder is Tim Hudson (tjh (at) cryptsoft.com).
16 1.3 perry *
17 1.1 tls * Copyright remains Eric Young's, and as such any Copyright notices in
18 1.1 tls * the code are not to be removed.
19 1.1 tls * If this package is used in a product, Eric Young should be given attribution
20 1.1 tls * as the author of the parts of the library used.
21 1.1 tls * This can be in the form of a textual message at program startup or
22 1.1 tls * in documentation (online or textual) provided with the package.
23 1.3 perry *
24 1.1 tls * Redistribution and use in source and binary forms, with or without
25 1.1 tls * modification, are permitted provided that the following conditions
26 1.1 tls * are met:
27 1.1 tls * 1. Redistributions of source code must retain the copyright
28 1.1 tls * notice, this list of conditions and the following disclaimer.
29 1.1 tls * 2. Redistributions in binary form must reproduce the above copyright
30 1.1 tls * notice, this list of conditions and the following disclaimer in the
31 1.1 tls * documentation and/or other materials provided with the distribution.
32 1.1 tls * 3. All advertising materials mentioning features or use of this software
33 1.1 tls * must display the following acknowledgement:
34 1.1 tls * "This product includes cryptographic software written by
35 1.1 tls * Eric Young (eay (at) cryptsoft.com)"
36 1.1 tls * The word 'cryptographic' can be left out if the rouines from the library
37 1.1 tls * being used are not cryptographic related :-).
38 1.3 perry * 4. If you include any Windows specific code (or a derivative thereof) from
39 1.1 tls * the apps directory (application code) you must include an acknowledgement:
40 1.1 tls * "This product includes software written by Tim Hudson (tjh (at) cryptsoft.com)"
41 1.3 perry *
42 1.1 tls * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
43 1.1 tls * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
44 1.1 tls * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45 1.1 tls * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
46 1.1 tls * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47 1.1 tls * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
48 1.1 tls * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49 1.1 tls * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
50 1.1 tls * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
51 1.1 tls * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52 1.1 tls * SUCH DAMAGE.
53 1.3 perry *
54 1.1 tls * The licence and distribution terms for any publically available version or
55 1.1 tls * derivative of this code cannot be changed. i.e. this code cannot simply be
56 1.1 tls * copied and put under another distribution licence
57 1.1 tls * [including the GNU Public Licence.]
58 1.1 tls */
59 1.1 tls
60 1.1 tls /*
61 1.1 tls * Modified from the output of `perl bf-586.pl elf' by
62 1.1 tls * Jason R. Thorpe <thorpej (at) zembu.com> and Thor Lancelot Simon
63 1.2 keihan * <tls (at) NetBSD.org>
64 1.1 tls */
65 1.1 tls
66 1.1 tls #include <i386/include/asm.h>
67 1.5 lukem __KERNEL_RCSID(1, "$NetBSD: bf_enc_586.S,v 1.5 2007/12/11 23:13:57 lukem Exp $");
68 1.1 tls
69 1.1 tls ENTRY(BF_encrypt)
70 1.1 tls pushl %ebp
71 1.1 tls pushl %ebx
72 1.1 tls movl 12(%esp), %ebx
73 1.1 tls movl 16(%esp), %ebp
74 1.1 tls pushl %esi
75 1.1 tls pushl %edi
76 1.1 tls /* Load the 2 words */
77 1.1 tls movl (%ebx), %edi
78 1.1 tls movl 4(%ebx), %esi
79 1.1 tls xorl %eax, %eax
80 1.1 tls movl (%ebp), %ebx
81 1.1 tls xorl %ecx, %ecx
82 1.1 tls xorl %ebx, %edi
83 1.1 tls
84 1.1 tls /* Round 0 */
85 1.1 tls movl 4(%ebp), %edx
86 1.1 tls movl %edi, %ebx
87 1.1 tls xorl %edx, %esi
88 1.1 tls shrl $16, %ebx
89 1.1 tls movl %edi, %edx
90 1.1 tls movb %bh, %al
91 1.1 tls andl $255, %ebx
92 1.1 tls movb %dh, %cl
93 1.1 tls andl $255, %edx
94 1.1 tls movl 72(%ebp,%eax,4),%eax
95 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
96 1.1 tls addl %eax, %ebx
97 1.1 tls movl 2120(%ebp,%ecx,4),%eax
98 1.1 tls xorl %eax, %ebx
99 1.1 tls movl 3144(%ebp,%edx,4),%edx
100 1.1 tls addl %edx, %ebx
101 1.1 tls xorl %eax, %eax
102 1.1 tls xorl %ebx, %esi
103 1.1 tls
104 1.1 tls /* Round 1 */
105 1.1 tls movl 8(%ebp), %edx
106 1.1 tls movl %esi, %ebx
107 1.1 tls xorl %edx, %edi
108 1.1 tls shrl $16, %ebx
109 1.1 tls movl %esi, %edx
110 1.1 tls movb %bh, %al
111 1.1 tls andl $255, %ebx
112 1.1 tls movb %dh, %cl
113 1.1 tls andl $255, %edx
114 1.1 tls movl 72(%ebp,%eax,4),%eax
115 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
116 1.1 tls addl %eax, %ebx
117 1.1 tls movl 2120(%ebp,%ecx,4),%eax
118 1.1 tls xorl %eax, %ebx
119 1.1 tls movl 3144(%ebp,%edx,4),%edx
120 1.1 tls addl %edx, %ebx
121 1.1 tls xorl %eax, %eax
122 1.1 tls xorl %ebx, %edi
123 1.1 tls
124 1.1 tls /* Round 2 */
125 1.1 tls movl 12(%ebp), %edx
126 1.1 tls movl %edi, %ebx
127 1.1 tls xorl %edx, %esi
128 1.1 tls shrl $16, %ebx
129 1.1 tls movl %edi, %edx
130 1.1 tls movb %bh, %al
131 1.1 tls andl $255, %ebx
132 1.1 tls movb %dh, %cl
133 1.1 tls andl $255, %edx
134 1.1 tls movl 72(%ebp,%eax,4),%eax
135 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
136 1.1 tls addl %eax, %ebx
137 1.1 tls movl 2120(%ebp,%ecx,4),%eax
138 1.1 tls xorl %eax, %ebx
139 1.1 tls movl 3144(%ebp,%edx,4),%edx
140 1.1 tls addl %edx, %ebx
141 1.1 tls xorl %eax, %eax
142 1.1 tls xorl %ebx, %esi
143 1.1 tls
144 1.1 tls /* Round 3 */
145 1.1 tls movl 16(%ebp), %edx
146 1.1 tls movl %esi, %ebx
147 1.1 tls xorl %edx, %edi
148 1.1 tls shrl $16, %ebx
149 1.1 tls movl %esi, %edx
150 1.1 tls movb %bh, %al
151 1.1 tls andl $255, %ebx
152 1.1 tls movb %dh, %cl
153 1.1 tls andl $255, %edx
154 1.1 tls movl 72(%ebp,%eax,4),%eax
155 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
156 1.1 tls addl %eax, %ebx
157 1.1 tls movl 2120(%ebp,%ecx,4),%eax
158 1.1 tls xorl %eax, %ebx
159 1.1 tls movl 3144(%ebp,%edx,4),%edx
160 1.1 tls addl %edx, %ebx
161 1.1 tls xorl %eax, %eax
162 1.1 tls xorl %ebx, %edi
163 1.1 tls
164 1.1 tls /* Round 4 */
165 1.1 tls movl 20(%ebp), %edx
166 1.1 tls movl %edi, %ebx
167 1.1 tls xorl %edx, %esi
168 1.1 tls shrl $16, %ebx
169 1.1 tls movl %edi, %edx
170 1.1 tls movb %bh, %al
171 1.1 tls andl $255, %ebx
172 1.1 tls movb %dh, %cl
173 1.1 tls andl $255, %edx
174 1.1 tls movl 72(%ebp,%eax,4),%eax
175 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
176 1.1 tls addl %eax, %ebx
177 1.1 tls movl 2120(%ebp,%ecx,4),%eax
178 1.1 tls xorl %eax, %ebx
179 1.1 tls movl 3144(%ebp,%edx,4),%edx
180 1.1 tls addl %edx, %ebx
181 1.1 tls xorl %eax, %eax
182 1.1 tls xorl %ebx, %esi
183 1.1 tls
184 1.1 tls /* Round 5 */
185 1.1 tls movl 24(%ebp), %edx
186 1.1 tls movl %esi, %ebx
187 1.1 tls xorl %edx, %edi
188 1.1 tls shrl $16, %ebx
189 1.1 tls movl %esi, %edx
190 1.1 tls movb %bh, %al
191 1.1 tls andl $255, %ebx
192 1.1 tls movb %dh, %cl
193 1.1 tls andl $255, %edx
194 1.1 tls movl 72(%ebp,%eax,4),%eax
195 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
196 1.1 tls addl %eax, %ebx
197 1.1 tls movl 2120(%ebp,%ecx,4),%eax
198 1.1 tls xorl %eax, %ebx
199 1.1 tls movl 3144(%ebp,%edx,4),%edx
200 1.1 tls addl %edx, %ebx
201 1.1 tls xorl %eax, %eax
202 1.1 tls xorl %ebx, %edi
203 1.1 tls
204 1.1 tls /* Round 6 */
205 1.1 tls movl 28(%ebp), %edx
206 1.1 tls movl %edi, %ebx
207 1.1 tls xorl %edx, %esi
208 1.1 tls shrl $16, %ebx
209 1.1 tls movl %edi, %edx
210 1.1 tls movb %bh, %al
211 1.1 tls andl $255, %ebx
212 1.1 tls movb %dh, %cl
213 1.1 tls andl $255, %edx
214 1.1 tls movl 72(%ebp,%eax,4),%eax
215 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
216 1.1 tls addl %eax, %ebx
217 1.1 tls movl 2120(%ebp,%ecx,4),%eax
218 1.1 tls xorl %eax, %ebx
219 1.1 tls movl 3144(%ebp,%edx,4),%edx
220 1.1 tls addl %edx, %ebx
221 1.1 tls xorl %eax, %eax
222 1.1 tls xorl %ebx, %esi
223 1.1 tls
224 1.1 tls /* Round 7 */
225 1.1 tls movl 32(%ebp), %edx
226 1.1 tls movl %esi, %ebx
227 1.1 tls xorl %edx, %edi
228 1.1 tls shrl $16, %ebx
229 1.1 tls movl %esi, %edx
230 1.1 tls movb %bh, %al
231 1.1 tls andl $255, %ebx
232 1.1 tls movb %dh, %cl
233 1.1 tls andl $255, %edx
234 1.1 tls movl 72(%ebp,%eax,4),%eax
235 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
236 1.1 tls addl %eax, %ebx
237 1.1 tls movl 2120(%ebp,%ecx,4),%eax
238 1.1 tls xorl %eax, %ebx
239 1.1 tls movl 3144(%ebp,%edx,4),%edx
240 1.1 tls addl %edx, %ebx
241 1.1 tls xorl %eax, %eax
242 1.1 tls xorl %ebx, %edi
243 1.1 tls
244 1.1 tls /* Round 8 */
245 1.1 tls movl 36(%ebp), %edx
246 1.1 tls movl %edi, %ebx
247 1.1 tls xorl %edx, %esi
248 1.1 tls shrl $16, %ebx
249 1.1 tls movl %edi, %edx
250 1.1 tls movb %bh, %al
251 1.1 tls andl $255, %ebx
252 1.1 tls movb %dh, %cl
253 1.1 tls andl $255, %edx
254 1.1 tls movl 72(%ebp,%eax,4),%eax
255 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
256 1.1 tls addl %eax, %ebx
257 1.1 tls movl 2120(%ebp,%ecx,4),%eax
258 1.1 tls xorl %eax, %ebx
259 1.1 tls movl 3144(%ebp,%edx,4),%edx
260 1.1 tls addl %edx, %ebx
261 1.1 tls xorl %eax, %eax
262 1.1 tls xorl %ebx, %esi
263 1.1 tls
264 1.1 tls /* Round 9 */
265 1.1 tls movl 40(%ebp), %edx
266 1.1 tls movl %esi, %ebx
267 1.1 tls xorl %edx, %edi
268 1.1 tls shrl $16, %ebx
269 1.1 tls movl %esi, %edx
270 1.1 tls movb %bh, %al
271 1.1 tls andl $255, %ebx
272 1.1 tls movb %dh, %cl
273 1.1 tls andl $255, %edx
274 1.1 tls movl 72(%ebp,%eax,4),%eax
275 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
276 1.1 tls addl %eax, %ebx
277 1.1 tls movl 2120(%ebp,%ecx,4),%eax
278 1.1 tls xorl %eax, %ebx
279 1.1 tls movl 3144(%ebp,%edx,4),%edx
280 1.1 tls addl %edx, %ebx
281 1.1 tls xorl %eax, %eax
282 1.1 tls xorl %ebx, %edi
283 1.1 tls
284 1.1 tls /* Round 10 */
285 1.1 tls movl 44(%ebp), %edx
286 1.1 tls movl %edi, %ebx
287 1.1 tls xorl %edx, %esi
288 1.1 tls shrl $16, %ebx
289 1.1 tls movl %edi, %edx
290 1.1 tls movb %bh, %al
291 1.1 tls andl $255, %ebx
292 1.1 tls movb %dh, %cl
293 1.1 tls andl $255, %edx
294 1.1 tls movl 72(%ebp,%eax,4),%eax
295 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
296 1.1 tls addl %eax, %ebx
297 1.1 tls movl 2120(%ebp,%ecx,4),%eax
298 1.1 tls xorl %eax, %ebx
299 1.1 tls movl 3144(%ebp,%edx,4),%edx
300 1.1 tls addl %edx, %ebx
301 1.1 tls xorl %eax, %eax
302 1.1 tls xorl %ebx, %esi
303 1.1 tls
304 1.1 tls /* Round 11 */
305 1.1 tls movl 48(%ebp), %edx
306 1.1 tls movl %esi, %ebx
307 1.1 tls xorl %edx, %edi
308 1.1 tls shrl $16, %ebx
309 1.1 tls movl %esi, %edx
310 1.1 tls movb %bh, %al
311 1.1 tls andl $255, %ebx
312 1.1 tls movb %dh, %cl
313 1.1 tls andl $255, %edx
314 1.1 tls movl 72(%ebp,%eax,4),%eax
315 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
316 1.1 tls addl %eax, %ebx
317 1.1 tls movl 2120(%ebp,%ecx,4),%eax
318 1.1 tls xorl %eax, %ebx
319 1.1 tls movl 3144(%ebp,%edx,4),%edx
320 1.1 tls addl %edx, %ebx
321 1.1 tls xorl %eax, %eax
322 1.1 tls xorl %ebx, %edi
323 1.1 tls
324 1.1 tls /* Round 12 */
325 1.1 tls movl 52(%ebp), %edx
326 1.1 tls movl %edi, %ebx
327 1.1 tls xorl %edx, %esi
328 1.1 tls shrl $16, %ebx
329 1.1 tls movl %edi, %edx
330 1.1 tls movb %bh, %al
331 1.1 tls andl $255, %ebx
332 1.1 tls movb %dh, %cl
333 1.1 tls andl $255, %edx
334 1.1 tls movl 72(%ebp,%eax,4),%eax
335 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
336 1.1 tls addl %eax, %ebx
337 1.1 tls movl 2120(%ebp,%ecx,4),%eax
338 1.1 tls xorl %eax, %ebx
339 1.1 tls movl 3144(%ebp,%edx,4),%edx
340 1.1 tls addl %edx, %ebx
341 1.1 tls xorl %eax, %eax
342 1.1 tls xorl %ebx, %esi
343 1.1 tls
344 1.1 tls /* Round 13 */
345 1.1 tls movl 56(%ebp), %edx
346 1.1 tls movl %esi, %ebx
347 1.1 tls xorl %edx, %edi
348 1.1 tls shrl $16, %ebx
349 1.1 tls movl %esi, %edx
350 1.1 tls movb %bh, %al
351 1.1 tls andl $255, %ebx
352 1.1 tls movb %dh, %cl
353 1.1 tls andl $255, %edx
354 1.1 tls movl 72(%ebp,%eax,4),%eax
355 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
356 1.1 tls addl %eax, %ebx
357 1.1 tls movl 2120(%ebp,%ecx,4),%eax
358 1.1 tls xorl %eax, %ebx
359 1.1 tls movl 3144(%ebp,%edx,4),%edx
360 1.1 tls addl %edx, %ebx
361 1.1 tls xorl %eax, %eax
362 1.1 tls xorl %ebx, %edi
363 1.1 tls
364 1.1 tls /* Round 14 */
365 1.1 tls movl 60(%ebp), %edx
366 1.1 tls movl %edi, %ebx
367 1.1 tls xorl %edx, %esi
368 1.1 tls shrl $16, %ebx
369 1.1 tls movl %edi, %edx
370 1.1 tls movb %bh, %al
371 1.1 tls andl $255, %ebx
372 1.1 tls movb %dh, %cl
373 1.1 tls andl $255, %edx
374 1.1 tls movl 72(%ebp,%eax,4),%eax
375 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
376 1.1 tls addl %eax, %ebx
377 1.1 tls movl 2120(%ebp,%ecx,4),%eax
378 1.1 tls xorl %eax, %ebx
379 1.1 tls movl 3144(%ebp,%edx,4),%edx
380 1.1 tls addl %edx, %ebx
381 1.1 tls xorl %eax, %eax
382 1.1 tls xorl %ebx, %esi
383 1.1 tls
384 1.1 tls /* Round 15 */
385 1.1 tls movl 64(%ebp), %edx
386 1.1 tls movl %esi, %ebx
387 1.1 tls xorl %edx, %edi
388 1.1 tls shrl $16, %ebx
389 1.1 tls movl %esi, %edx
390 1.1 tls movb %bh, %al
391 1.1 tls andl $255, %ebx
392 1.1 tls movb %dh, %cl
393 1.1 tls andl $255, %edx
394 1.1 tls movl 72(%ebp,%eax,4),%eax
395 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
396 1.1 tls addl %eax, %ebx
397 1.1 tls movl 2120(%ebp,%ecx,4),%eax
398 1.1 tls xorl %eax, %ebx
399 1.1 tls movl 3144(%ebp,%edx,4),%edx
400 1.1 tls addl %edx, %ebx
401 1.3 perry # Load parameter 0 (16) enc=1
402 1.1 tls movl 20(%esp), %eax
403 1.1 tls xorl %ebx, %edi
404 1.1 tls movl 68(%ebp), %edx
405 1.1 tls xorl %edx, %esi
406 1.1 tls movl %edi, 4(%eax)
407 1.1 tls movl %esi, (%eax)
408 1.1 tls popl %edi
409 1.1 tls popl %esi
410 1.1 tls popl %ebx
411 1.1 tls popl %ebp
412 1.1 tls ret
413 1.1 tls .L_BF_encrypt_end:
414 1.1 tls .size _C_LABEL(BF_encrypt),.L_BF_encrypt_end-_C_LABEL(BF_encrypt)
415 1.1 tls
416 1.1 tls ENTRY(BF_decrypt)
417 1.1 tls pushl %ebp
418 1.1 tls pushl %ebx
419 1.1 tls movl 12(%esp), %ebx
420 1.1 tls movl 16(%esp), %ebp
421 1.1 tls pushl %esi
422 1.1 tls pushl %edi
423 1.3 perry # Load the 2 words
424 1.1 tls movl (%ebx), %edi
425 1.1 tls movl 4(%ebx), %esi
426 1.1 tls xorl %eax, %eax
427 1.1 tls movl 68(%ebp), %ebx
428 1.1 tls xorl %ecx, %ecx
429 1.1 tls xorl %ebx, %edi
430 1.1 tls
431 1.1 tls /* Round 16 */
432 1.1 tls movl 64(%ebp), %edx
433 1.1 tls movl %edi, %ebx
434 1.1 tls xorl %edx, %esi
435 1.1 tls shrl $16, %ebx
436 1.1 tls movl %edi, %edx
437 1.1 tls movb %bh, %al
438 1.1 tls andl $255, %ebx
439 1.1 tls movb %dh, %cl
440 1.1 tls andl $255, %edx
441 1.1 tls movl 72(%ebp,%eax,4),%eax
442 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
443 1.1 tls addl %eax, %ebx
444 1.1 tls movl 2120(%ebp,%ecx,4),%eax
445 1.1 tls xorl %eax, %ebx
446 1.1 tls movl 3144(%ebp,%edx,4),%edx
447 1.1 tls addl %edx, %ebx
448 1.1 tls xorl %eax, %eax
449 1.1 tls xorl %ebx, %esi
450 1.1 tls
451 1.1 tls /* Round 15 */
452 1.1 tls movl 60(%ebp), %edx
453 1.1 tls movl %esi, %ebx
454 1.1 tls xorl %edx, %edi
455 1.1 tls shrl $16, %ebx
456 1.1 tls movl %esi, %edx
457 1.1 tls movb %bh, %al
458 1.1 tls andl $255, %ebx
459 1.1 tls movb %dh, %cl
460 1.1 tls andl $255, %edx
461 1.1 tls movl 72(%ebp,%eax,4),%eax
462 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
463 1.1 tls addl %eax, %ebx
464 1.1 tls movl 2120(%ebp,%ecx,4),%eax
465 1.1 tls xorl %eax, %ebx
466 1.1 tls movl 3144(%ebp,%edx,4),%edx
467 1.1 tls addl %edx, %ebx
468 1.1 tls xorl %eax, %eax
469 1.1 tls xorl %ebx, %edi
470 1.1 tls
471 1.1 tls /* Round 14 */
472 1.1 tls movl 56(%ebp), %edx
473 1.1 tls movl %edi, %ebx
474 1.1 tls xorl %edx, %esi
475 1.1 tls shrl $16, %ebx
476 1.1 tls movl %edi, %edx
477 1.1 tls movb %bh, %al
478 1.1 tls andl $255, %ebx
479 1.1 tls movb %dh, %cl
480 1.1 tls andl $255, %edx
481 1.1 tls movl 72(%ebp,%eax,4),%eax
482 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
483 1.1 tls addl %eax, %ebx
484 1.1 tls movl 2120(%ebp,%ecx,4),%eax
485 1.1 tls xorl %eax, %ebx
486 1.1 tls movl 3144(%ebp,%edx,4),%edx
487 1.1 tls addl %edx, %ebx
488 1.1 tls xorl %eax, %eax
489 1.1 tls xorl %ebx, %esi
490 1.1 tls
491 1.1 tls /* Round 13 */
492 1.1 tls movl 52(%ebp), %edx
493 1.1 tls movl %esi, %ebx
494 1.1 tls xorl %edx, %edi
495 1.1 tls shrl $16, %ebx
496 1.1 tls movl %esi, %edx
497 1.1 tls movb %bh, %al
498 1.1 tls andl $255, %ebx
499 1.1 tls movb %dh, %cl
500 1.1 tls andl $255, %edx
501 1.1 tls movl 72(%ebp,%eax,4),%eax
502 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
503 1.1 tls addl %eax, %ebx
504 1.1 tls movl 2120(%ebp,%ecx,4),%eax
505 1.1 tls xorl %eax, %ebx
506 1.1 tls movl 3144(%ebp,%edx,4),%edx
507 1.1 tls addl %edx, %ebx
508 1.1 tls xorl %eax, %eax
509 1.1 tls xorl %ebx, %edi
510 1.1 tls
511 1.1 tls /* Round 12 */
512 1.1 tls movl 48(%ebp), %edx
513 1.1 tls movl %edi, %ebx
514 1.1 tls xorl %edx, %esi
515 1.1 tls shrl $16, %ebx
516 1.1 tls movl %edi, %edx
517 1.1 tls movb %bh, %al
518 1.1 tls andl $255, %ebx
519 1.1 tls movb %dh, %cl
520 1.1 tls andl $255, %edx
521 1.1 tls movl 72(%ebp,%eax,4),%eax
522 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
523 1.1 tls addl %eax, %ebx
524 1.1 tls movl 2120(%ebp,%ecx,4),%eax
525 1.1 tls xorl %eax, %ebx
526 1.1 tls movl 3144(%ebp,%edx,4),%edx
527 1.1 tls addl %edx, %ebx
528 1.1 tls xorl %eax, %eax
529 1.1 tls xorl %ebx, %esi
530 1.1 tls
531 1.1 tls /* Round 11 */
532 1.1 tls movl 44(%ebp), %edx
533 1.1 tls movl %esi, %ebx
534 1.1 tls xorl %edx, %edi
535 1.1 tls shrl $16, %ebx
536 1.1 tls movl %esi, %edx
537 1.1 tls movb %bh, %al
538 1.1 tls andl $255, %ebx
539 1.1 tls movb %dh, %cl
540 1.1 tls andl $255, %edx
541 1.1 tls movl 72(%ebp,%eax,4),%eax
542 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
543 1.1 tls addl %eax, %ebx
544 1.1 tls movl 2120(%ebp,%ecx,4),%eax
545 1.1 tls xorl %eax, %ebx
546 1.1 tls movl 3144(%ebp,%edx,4),%edx
547 1.1 tls addl %edx, %ebx
548 1.1 tls xorl %eax, %eax
549 1.1 tls xorl %ebx, %edi
550 1.1 tls
551 1.1 tls /* Round 10 */
552 1.1 tls movl 40(%ebp), %edx
553 1.1 tls movl %edi, %ebx
554 1.1 tls xorl %edx, %esi
555 1.1 tls shrl $16, %ebx
556 1.1 tls movl %edi, %edx
557 1.1 tls movb %bh, %al
558 1.1 tls andl $255, %ebx
559 1.1 tls movb %dh, %cl
560 1.1 tls andl $255, %edx
561 1.1 tls movl 72(%ebp,%eax,4),%eax
562 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
563 1.1 tls addl %eax, %ebx
564 1.1 tls movl 2120(%ebp,%ecx,4),%eax
565 1.1 tls xorl %eax, %ebx
566 1.1 tls movl 3144(%ebp,%edx,4),%edx
567 1.1 tls addl %edx, %ebx
568 1.1 tls xorl %eax, %eax
569 1.1 tls xorl %ebx, %esi
570 1.1 tls
571 1.1 tls /* Round 9 */
572 1.1 tls movl 36(%ebp), %edx
573 1.1 tls movl %esi, %ebx
574 1.1 tls xorl %edx, %edi
575 1.1 tls shrl $16, %ebx
576 1.1 tls movl %esi, %edx
577 1.1 tls movb %bh, %al
578 1.1 tls andl $255, %ebx
579 1.1 tls movb %dh, %cl
580 1.1 tls andl $255, %edx
581 1.1 tls movl 72(%ebp,%eax,4),%eax
582 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
583 1.1 tls addl %eax, %ebx
584 1.1 tls movl 2120(%ebp,%ecx,4),%eax
585 1.1 tls xorl %eax, %ebx
586 1.1 tls movl 3144(%ebp,%edx,4),%edx
587 1.1 tls addl %edx, %ebx
588 1.1 tls xorl %eax, %eax
589 1.1 tls xorl %ebx, %edi
590 1.1 tls
591 1.1 tls /* Round 8 */
592 1.1 tls movl 32(%ebp), %edx
593 1.1 tls movl %edi, %ebx
594 1.1 tls xorl %edx, %esi
595 1.1 tls shrl $16, %ebx
596 1.1 tls movl %edi, %edx
597 1.1 tls movb %bh, %al
598 1.1 tls andl $255, %ebx
599 1.1 tls movb %dh, %cl
600 1.1 tls andl $255, %edx
601 1.1 tls movl 72(%ebp,%eax,4),%eax
602 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
603 1.1 tls addl %eax, %ebx
604 1.1 tls movl 2120(%ebp,%ecx,4),%eax
605 1.1 tls xorl %eax, %ebx
606 1.1 tls movl 3144(%ebp,%edx,4),%edx
607 1.1 tls addl %edx, %ebx
608 1.1 tls xorl %eax, %eax
609 1.1 tls xorl %ebx, %esi
610 1.1 tls
611 1.1 tls /* Round 7 */
612 1.1 tls movl 28(%ebp), %edx
613 1.1 tls movl %esi, %ebx
614 1.1 tls xorl %edx, %edi
615 1.1 tls shrl $16, %ebx
616 1.1 tls movl %esi, %edx
617 1.1 tls movb %bh, %al
618 1.1 tls andl $255, %ebx
619 1.1 tls movb %dh, %cl
620 1.1 tls andl $255, %edx
621 1.1 tls movl 72(%ebp,%eax,4),%eax
622 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
623 1.1 tls addl %eax, %ebx
624 1.1 tls movl 2120(%ebp,%ecx,4),%eax
625 1.1 tls xorl %eax, %ebx
626 1.1 tls movl 3144(%ebp,%edx,4),%edx
627 1.1 tls addl %edx, %ebx
628 1.1 tls xorl %eax, %eax
629 1.1 tls xorl %ebx, %edi
630 1.1 tls
631 1.1 tls /* Round 6 */
632 1.1 tls movl 24(%ebp), %edx
633 1.1 tls movl %edi, %ebx
634 1.1 tls xorl %edx, %esi
635 1.1 tls shrl $16, %ebx
636 1.1 tls movl %edi, %edx
637 1.1 tls movb %bh, %al
638 1.1 tls andl $255, %ebx
639 1.1 tls movb %dh, %cl
640 1.1 tls andl $255, %edx
641 1.1 tls movl 72(%ebp,%eax,4),%eax
642 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
643 1.1 tls addl %eax, %ebx
644 1.1 tls movl 2120(%ebp,%ecx,4),%eax
645 1.1 tls xorl %eax, %ebx
646 1.1 tls movl 3144(%ebp,%edx,4),%edx
647 1.1 tls addl %edx, %ebx
648 1.1 tls xorl %eax, %eax
649 1.1 tls xorl %ebx, %esi
650 1.1 tls
651 1.1 tls /* Round 5 */
652 1.1 tls movl 20(%ebp), %edx
653 1.1 tls movl %esi, %ebx
654 1.1 tls xorl %edx, %edi
655 1.1 tls shrl $16, %ebx
656 1.1 tls movl %esi, %edx
657 1.1 tls movb %bh, %al
658 1.1 tls andl $255, %ebx
659 1.1 tls movb %dh, %cl
660 1.1 tls andl $255, %edx
661 1.1 tls movl 72(%ebp,%eax,4),%eax
662 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
663 1.1 tls addl %eax, %ebx
664 1.1 tls movl 2120(%ebp,%ecx,4),%eax
665 1.1 tls xorl %eax, %ebx
666 1.1 tls movl 3144(%ebp,%edx,4),%edx
667 1.1 tls addl %edx, %ebx
668 1.1 tls xorl %eax, %eax
669 1.1 tls xorl %ebx, %edi
670 1.1 tls
671 1.1 tls /* Round 4 */
672 1.1 tls movl 16(%ebp), %edx
673 1.1 tls movl %edi, %ebx
674 1.1 tls xorl %edx, %esi
675 1.1 tls shrl $16, %ebx
676 1.1 tls movl %edi, %edx
677 1.1 tls movb %bh, %al
678 1.1 tls andl $255, %ebx
679 1.1 tls movb %dh, %cl
680 1.1 tls andl $255, %edx
681 1.1 tls movl 72(%ebp,%eax,4),%eax
682 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
683 1.1 tls addl %eax, %ebx
684 1.1 tls movl 2120(%ebp,%ecx,4),%eax
685 1.1 tls xorl %eax, %ebx
686 1.1 tls movl 3144(%ebp,%edx,4),%edx
687 1.1 tls addl %edx, %ebx
688 1.1 tls xorl %eax, %eax
689 1.1 tls xorl %ebx, %esi
690 1.1 tls
691 1.1 tls /* Round 3 */
692 1.1 tls movl 12(%ebp), %edx
693 1.1 tls movl %esi, %ebx
694 1.1 tls xorl %edx, %edi
695 1.1 tls shrl $16, %ebx
696 1.1 tls movl %esi, %edx
697 1.1 tls movb %bh, %al
698 1.1 tls andl $255, %ebx
699 1.1 tls movb %dh, %cl
700 1.1 tls andl $255, %edx
701 1.1 tls movl 72(%ebp,%eax,4),%eax
702 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
703 1.1 tls addl %eax, %ebx
704 1.1 tls movl 2120(%ebp,%ecx,4),%eax
705 1.1 tls xorl %eax, %ebx
706 1.1 tls movl 3144(%ebp,%edx,4),%edx
707 1.1 tls addl %edx, %ebx
708 1.1 tls xorl %eax, %eax
709 1.1 tls xorl %ebx, %edi
710 1.1 tls
711 1.1 tls /* Round 2 */
712 1.1 tls movl 8(%ebp), %edx
713 1.1 tls movl %edi, %ebx
714 1.1 tls xorl %edx, %esi
715 1.1 tls shrl $16, %ebx
716 1.1 tls movl %edi, %edx
717 1.1 tls movb %bh, %al
718 1.1 tls andl $255, %ebx
719 1.1 tls movb %dh, %cl
720 1.1 tls andl $255, %edx
721 1.1 tls movl 72(%ebp,%eax,4),%eax
722 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
723 1.1 tls addl %eax, %ebx
724 1.1 tls movl 2120(%ebp,%ecx,4),%eax
725 1.1 tls xorl %eax, %ebx
726 1.1 tls movl 3144(%ebp,%edx,4),%edx
727 1.1 tls addl %edx, %ebx
728 1.1 tls xorl %eax, %eax
729 1.1 tls xorl %ebx, %esi
730 1.1 tls
731 1.1 tls /* Round 1 */
732 1.1 tls movl 4(%ebp), %edx
733 1.1 tls movl %esi, %ebx
734 1.1 tls xorl %edx, %edi
735 1.1 tls shrl $16, %ebx
736 1.1 tls movl %esi, %edx
737 1.1 tls movb %bh, %al
738 1.1 tls andl $255, %ebx
739 1.1 tls movb %dh, %cl
740 1.1 tls andl $255, %edx
741 1.1 tls movl 72(%ebp,%eax,4),%eax
742 1.1 tls movl 1096(%ebp,%ebx,4),%ebx
743 1.1 tls addl %eax, %ebx
744 1.1 tls movl 2120(%ebp,%ecx,4),%eax
745 1.1 tls xorl %eax, %ebx
746 1.1 tls movl 3144(%ebp,%edx,4),%edx
747 1.1 tls addl %edx, %ebx
748 1.3 perry # Load parameter 0 (1) enc=0
749 1.1 tls movl 20(%esp), %eax
750 1.1 tls xorl %ebx, %edi
751 1.1 tls movl (%ebp), %edx
752 1.1 tls xorl %edx, %esi
753 1.1 tls movl %edi, 4(%eax)
754 1.1 tls movl %esi, (%eax)
755 1.1 tls popl %edi
756 1.1 tls popl %esi
757 1.1 tls popl %ebx
758 1.1 tls popl %ebp
759 1.1 tls ret
760 1.1 tls .L_BF_decrypt_end:
761 1.1 tls .size _C_LABEL(BF_decrypt),.L_BF_decrypt_end-_C_LABEL(BF_decrypt)
762