OLD | NEW |
| (Empty) |
1 .file "bf-586.s" | |
2 .text | |
3 .globl _BF_encrypt | |
4 .align 4 | |
5 _BF_encrypt: | |
6 L_BF_encrypt_begin: | |
7 | |
8 pushl %ebp | |
9 pushl %ebx | |
10 movl 12(%esp),%ebx | |
11 movl 16(%esp),%ebp | |
12 pushl %esi | |
13 pushl %edi | |
14 # Load the 2 words | |
15 movl (%ebx),%edi | |
16 movl 4(%ebx),%esi | |
17 xorl %eax,%eax | |
18 movl (%ebp),%ebx | |
19 xorl %ecx,%ecx | |
20 xorl %ebx,%edi | |
21 | |
22 # Round 0 | |
23 movl 4(%ebp),%edx | |
24 movl %edi,%ebx | |
25 xorl %edx,%esi | |
26 shrl $16,%ebx | |
27 movl %edi,%edx | |
28 movb %bh,%al | |
29 andl $255,%ebx | |
30 movb %dh,%cl | |
31 andl $255,%edx | |
32 movl 72(%ebp,%eax,4),%eax | |
33 movl 1096(%ebp,%ebx,4),%ebx | |
34 addl %eax,%ebx | |
35 movl 2120(%ebp,%ecx,4),%eax | |
36 xorl %eax,%ebx | |
37 movl 3144(%ebp,%edx,4),%edx | |
38 addl %edx,%ebx | |
39 xorl %eax,%eax | |
40 xorl %ebx,%esi | |
41 | |
42 # Round 1 | |
43 movl 8(%ebp),%edx | |
44 movl %esi,%ebx | |
45 xorl %edx,%edi | |
46 shrl $16,%ebx | |
47 movl %esi,%edx | |
48 movb %bh,%al | |
49 andl $255,%ebx | |
50 movb %dh,%cl | |
51 andl $255,%edx | |
52 movl 72(%ebp,%eax,4),%eax | |
53 movl 1096(%ebp,%ebx,4),%ebx | |
54 addl %eax,%ebx | |
55 movl 2120(%ebp,%ecx,4),%eax | |
56 xorl %eax,%ebx | |
57 movl 3144(%ebp,%edx,4),%edx | |
58 addl %edx,%ebx | |
59 xorl %eax,%eax | |
60 xorl %ebx,%edi | |
61 | |
62 # Round 2 | |
63 movl 12(%ebp),%edx | |
64 movl %edi,%ebx | |
65 xorl %edx,%esi | |
66 shrl $16,%ebx | |
67 movl %edi,%edx | |
68 movb %bh,%al | |
69 andl $255,%ebx | |
70 movb %dh,%cl | |
71 andl $255,%edx | |
72 movl 72(%ebp,%eax,4),%eax | |
73 movl 1096(%ebp,%ebx,4),%ebx | |
74 addl %eax,%ebx | |
75 movl 2120(%ebp,%ecx,4),%eax | |
76 xorl %eax,%ebx | |
77 movl 3144(%ebp,%edx,4),%edx | |
78 addl %edx,%ebx | |
79 xorl %eax,%eax | |
80 xorl %ebx,%esi | |
81 | |
82 # Round 3 | |
83 movl 16(%ebp),%edx | |
84 movl %esi,%ebx | |
85 xorl %edx,%edi | |
86 shrl $16,%ebx | |
87 movl %esi,%edx | |
88 movb %bh,%al | |
89 andl $255,%ebx | |
90 movb %dh,%cl | |
91 andl $255,%edx | |
92 movl 72(%ebp,%eax,4),%eax | |
93 movl 1096(%ebp,%ebx,4),%ebx | |
94 addl %eax,%ebx | |
95 movl 2120(%ebp,%ecx,4),%eax | |
96 xorl %eax,%ebx | |
97 movl 3144(%ebp,%edx,4),%edx | |
98 addl %edx,%ebx | |
99 xorl %eax,%eax | |
100 xorl %ebx,%edi | |
101 | |
102 # Round 4 | |
103 movl 20(%ebp),%edx | |
104 movl %edi,%ebx | |
105 xorl %edx,%esi | |
106 shrl $16,%ebx | |
107 movl %edi,%edx | |
108 movb %bh,%al | |
109 andl $255,%ebx | |
110 movb %dh,%cl | |
111 andl $255,%edx | |
112 movl 72(%ebp,%eax,4),%eax | |
113 movl 1096(%ebp,%ebx,4),%ebx | |
114 addl %eax,%ebx | |
115 movl 2120(%ebp,%ecx,4),%eax | |
116 xorl %eax,%ebx | |
117 movl 3144(%ebp,%edx,4),%edx | |
118 addl %edx,%ebx | |
119 xorl %eax,%eax | |
120 xorl %ebx,%esi | |
121 | |
122 # Round 5 | |
123 movl 24(%ebp),%edx | |
124 movl %esi,%ebx | |
125 xorl %edx,%edi | |
126 shrl $16,%ebx | |
127 movl %esi,%edx | |
128 movb %bh,%al | |
129 andl $255,%ebx | |
130 movb %dh,%cl | |
131 andl $255,%edx | |
132 movl 72(%ebp,%eax,4),%eax | |
133 movl 1096(%ebp,%ebx,4),%ebx | |
134 addl %eax,%ebx | |
135 movl 2120(%ebp,%ecx,4),%eax | |
136 xorl %eax,%ebx | |
137 movl 3144(%ebp,%edx,4),%edx | |
138 addl %edx,%ebx | |
139 xorl %eax,%eax | |
140 xorl %ebx,%edi | |
141 | |
142 # Round 6 | |
143 movl 28(%ebp),%edx | |
144 movl %edi,%ebx | |
145 xorl %edx,%esi | |
146 shrl $16,%ebx | |
147 movl %edi,%edx | |
148 movb %bh,%al | |
149 andl $255,%ebx | |
150 movb %dh,%cl | |
151 andl $255,%edx | |
152 movl 72(%ebp,%eax,4),%eax | |
153 movl 1096(%ebp,%ebx,4),%ebx | |
154 addl %eax,%ebx | |
155 movl 2120(%ebp,%ecx,4),%eax | |
156 xorl %eax,%ebx | |
157 movl 3144(%ebp,%edx,4),%edx | |
158 addl %edx,%ebx | |
159 xorl %eax,%eax | |
160 xorl %ebx,%esi | |
161 | |
162 # Round 7 | |
163 movl 32(%ebp),%edx | |
164 movl %esi,%ebx | |
165 xorl %edx,%edi | |
166 shrl $16,%ebx | |
167 movl %esi,%edx | |
168 movb %bh,%al | |
169 andl $255,%ebx | |
170 movb %dh,%cl | |
171 andl $255,%edx | |
172 movl 72(%ebp,%eax,4),%eax | |
173 movl 1096(%ebp,%ebx,4),%ebx | |
174 addl %eax,%ebx | |
175 movl 2120(%ebp,%ecx,4),%eax | |
176 xorl %eax,%ebx | |
177 movl 3144(%ebp,%edx,4),%edx | |
178 addl %edx,%ebx | |
179 xorl %eax,%eax | |
180 xorl %ebx,%edi | |
181 | |
182 # Round 8 | |
183 movl 36(%ebp),%edx | |
184 movl %edi,%ebx | |
185 xorl %edx,%esi | |
186 shrl $16,%ebx | |
187 movl %edi,%edx | |
188 movb %bh,%al | |
189 andl $255,%ebx | |
190 movb %dh,%cl | |
191 andl $255,%edx | |
192 movl 72(%ebp,%eax,4),%eax | |
193 movl 1096(%ebp,%ebx,4),%ebx | |
194 addl %eax,%ebx | |
195 movl 2120(%ebp,%ecx,4),%eax | |
196 xorl %eax,%ebx | |
197 movl 3144(%ebp,%edx,4),%edx | |
198 addl %edx,%ebx | |
199 xorl %eax,%eax | |
200 xorl %ebx,%esi | |
201 | |
202 # Round 9 | |
203 movl 40(%ebp),%edx | |
204 movl %esi,%ebx | |
205 xorl %edx,%edi | |
206 shrl $16,%ebx | |
207 movl %esi,%edx | |
208 movb %bh,%al | |
209 andl $255,%ebx | |
210 movb %dh,%cl | |
211 andl $255,%edx | |
212 movl 72(%ebp,%eax,4),%eax | |
213 movl 1096(%ebp,%ebx,4),%ebx | |
214 addl %eax,%ebx | |
215 movl 2120(%ebp,%ecx,4),%eax | |
216 xorl %eax,%ebx | |
217 movl 3144(%ebp,%edx,4),%edx | |
218 addl %edx,%ebx | |
219 xorl %eax,%eax | |
220 xorl %ebx,%edi | |
221 | |
222 # Round 10 | |
223 movl 44(%ebp),%edx | |
224 movl %edi,%ebx | |
225 xorl %edx,%esi | |
226 shrl $16,%ebx | |
227 movl %edi,%edx | |
228 movb %bh,%al | |
229 andl $255,%ebx | |
230 movb %dh,%cl | |
231 andl $255,%edx | |
232 movl 72(%ebp,%eax,4),%eax | |
233 movl 1096(%ebp,%ebx,4),%ebx | |
234 addl %eax,%ebx | |
235 movl 2120(%ebp,%ecx,4),%eax | |
236 xorl %eax,%ebx | |
237 movl 3144(%ebp,%edx,4),%edx | |
238 addl %edx,%ebx | |
239 xorl %eax,%eax | |
240 xorl %ebx,%esi | |
241 | |
242 # Round 11 | |
243 movl 48(%ebp),%edx | |
244 movl %esi,%ebx | |
245 xorl %edx,%edi | |
246 shrl $16,%ebx | |
247 movl %esi,%edx | |
248 movb %bh,%al | |
249 andl $255,%ebx | |
250 movb %dh,%cl | |
251 andl $255,%edx | |
252 movl 72(%ebp,%eax,4),%eax | |
253 movl 1096(%ebp,%ebx,4),%ebx | |
254 addl %eax,%ebx | |
255 movl 2120(%ebp,%ecx,4),%eax | |
256 xorl %eax,%ebx | |
257 movl 3144(%ebp,%edx,4),%edx | |
258 addl %edx,%ebx | |
259 xorl %eax,%eax | |
260 xorl %ebx,%edi | |
261 | |
262 # Round 12 | |
263 movl 52(%ebp),%edx | |
264 movl %edi,%ebx | |
265 xorl %edx,%esi | |
266 shrl $16,%ebx | |
267 movl %edi,%edx | |
268 movb %bh,%al | |
269 andl $255,%ebx | |
270 movb %dh,%cl | |
271 andl $255,%edx | |
272 movl 72(%ebp,%eax,4),%eax | |
273 movl 1096(%ebp,%ebx,4),%ebx | |
274 addl %eax,%ebx | |
275 movl 2120(%ebp,%ecx,4),%eax | |
276 xorl %eax,%ebx | |
277 movl 3144(%ebp,%edx,4),%edx | |
278 addl %edx,%ebx | |
279 xorl %eax,%eax | |
280 xorl %ebx,%esi | |
281 | |
282 # Round 13 | |
283 movl 56(%ebp),%edx | |
284 movl %esi,%ebx | |
285 xorl %edx,%edi | |
286 shrl $16,%ebx | |
287 movl %esi,%edx | |
288 movb %bh,%al | |
289 andl $255,%ebx | |
290 movb %dh,%cl | |
291 andl $255,%edx | |
292 movl 72(%ebp,%eax,4),%eax | |
293 movl 1096(%ebp,%ebx,4),%ebx | |
294 addl %eax,%ebx | |
295 movl 2120(%ebp,%ecx,4),%eax | |
296 xorl %eax,%ebx | |
297 movl 3144(%ebp,%edx,4),%edx | |
298 addl %edx,%ebx | |
299 xorl %eax,%eax | |
300 xorl %ebx,%edi | |
301 | |
302 # Round 14 | |
303 movl 60(%ebp),%edx | |
304 movl %edi,%ebx | |
305 xorl %edx,%esi | |
306 shrl $16,%ebx | |
307 movl %edi,%edx | |
308 movb %bh,%al | |
309 andl $255,%ebx | |
310 movb %dh,%cl | |
311 andl $255,%edx | |
312 movl 72(%ebp,%eax,4),%eax | |
313 movl 1096(%ebp,%ebx,4),%ebx | |
314 addl %eax,%ebx | |
315 movl 2120(%ebp,%ecx,4),%eax | |
316 xorl %eax,%ebx | |
317 movl 3144(%ebp,%edx,4),%edx | |
318 addl %edx,%ebx | |
319 xorl %eax,%eax | |
320 xorl %ebx,%esi | |
321 | |
322 # Round 15 | |
323 movl 64(%ebp),%edx | |
324 movl %esi,%ebx | |
325 xorl %edx,%edi | |
326 shrl $16,%ebx | |
327 movl %esi,%edx | |
328 movb %bh,%al | |
329 andl $255,%ebx | |
330 movb %dh,%cl | |
331 andl $255,%edx | |
332 movl 72(%ebp,%eax,4),%eax | |
333 movl 1096(%ebp,%ebx,4),%ebx | |
334 addl %eax,%ebx | |
335 movl 2120(%ebp,%ecx,4),%eax | |
336 xorl %eax,%ebx | |
337 movl 3144(%ebp,%edx,4),%edx | |
338 addl %edx,%ebx | |
339 # Load parameter 0 (16) enc=1 | |
340 movl 20(%esp),%eax | |
341 xorl %ebx,%edi | |
342 movl 68(%ebp),%edx | |
343 xorl %edx,%esi | |
344 movl %edi,4(%eax) | |
345 movl %esi,(%eax) | |
346 popl %edi | |
347 popl %esi | |
348 popl %ebx | |
349 popl %ebp | |
350 ret | |
351 .globl _BF_decrypt | |
352 .align 4 | |
353 _BF_decrypt: | |
354 L_BF_decrypt_begin: | |
355 | |
356 pushl %ebp | |
357 pushl %ebx | |
358 movl 12(%esp),%ebx | |
359 movl 16(%esp),%ebp | |
360 pushl %esi | |
361 pushl %edi | |
362 # Load the 2 words | |
363 movl (%ebx),%edi | |
364 movl 4(%ebx),%esi | |
365 xorl %eax,%eax | |
366 movl 68(%ebp),%ebx | |
367 xorl %ecx,%ecx | |
368 xorl %ebx,%edi | |
369 | |
370 # Round 16 | |
371 movl 64(%ebp),%edx | |
372 movl %edi,%ebx | |
373 xorl %edx,%esi | |
374 shrl $16,%ebx | |
375 movl %edi,%edx | |
376 movb %bh,%al | |
377 andl $255,%ebx | |
378 movb %dh,%cl | |
379 andl $255,%edx | |
380 movl 72(%ebp,%eax,4),%eax | |
381 movl 1096(%ebp,%ebx,4),%ebx | |
382 addl %eax,%ebx | |
383 movl 2120(%ebp,%ecx,4),%eax | |
384 xorl %eax,%ebx | |
385 movl 3144(%ebp,%edx,4),%edx | |
386 addl %edx,%ebx | |
387 xorl %eax,%eax | |
388 xorl %ebx,%esi | |
389 | |
390 # Round 15 | |
391 movl 60(%ebp),%edx | |
392 movl %esi,%ebx | |
393 xorl %edx,%edi | |
394 shrl $16,%ebx | |
395 movl %esi,%edx | |
396 movb %bh,%al | |
397 andl $255,%ebx | |
398 movb %dh,%cl | |
399 andl $255,%edx | |
400 movl 72(%ebp,%eax,4),%eax | |
401 movl 1096(%ebp,%ebx,4),%ebx | |
402 addl %eax,%ebx | |
403 movl 2120(%ebp,%ecx,4),%eax | |
404 xorl %eax,%ebx | |
405 movl 3144(%ebp,%edx,4),%edx | |
406 addl %edx,%ebx | |
407 xorl %eax,%eax | |
408 xorl %ebx,%edi | |
409 | |
410 # Round 14 | |
411 movl 56(%ebp),%edx | |
412 movl %edi,%ebx | |
413 xorl %edx,%esi | |
414 shrl $16,%ebx | |
415 movl %edi,%edx | |
416 movb %bh,%al | |
417 andl $255,%ebx | |
418 movb %dh,%cl | |
419 andl $255,%edx | |
420 movl 72(%ebp,%eax,4),%eax | |
421 movl 1096(%ebp,%ebx,4),%ebx | |
422 addl %eax,%ebx | |
423 movl 2120(%ebp,%ecx,4),%eax | |
424 xorl %eax,%ebx | |
425 movl 3144(%ebp,%edx,4),%edx | |
426 addl %edx,%ebx | |
427 xorl %eax,%eax | |
428 xorl %ebx,%esi | |
429 | |
430 # Round 13 | |
431 movl 52(%ebp),%edx | |
432 movl %esi,%ebx | |
433 xorl %edx,%edi | |
434 shrl $16,%ebx | |
435 movl %esi,%edx | |
436 movb %bh,%al | |
437 andl $255,%ebx | |
438 movb %dh,%cl | |
439 andl $255,%edx | |
440 movl 72(%ebp,%eax,4),%eax | |
441 movl 1096(%ebp,%ebx,4),%ebx | |
442 addl %eax,%ebx | |
443 movl 2120(%ebp,%ecx,4),%eax | |
444 xorl %eax,%ebx | |
445 movl 3144(%ebp,%edx,4),%edx | |
446 addl %edx,%ebx | |
447 xorl %eax,%eax | |
448 xorl %ebx,%edi | |
449 | |
450 # Round 12 | |
451 movl 48(%ebp),%edx | |
452 movl %edi,%ebx | |
453 xorl %edx,%esi | |
454 shrl $16,%ebx | |
455 movl %edi,%edx | |
456 movb %bh,%al | |
457 andl $255,%ebx | |
458 movb %dh,%cl | |
459 andl $255,%edx | |
460 movl 72(%ebp,%eax,4),%eax | |
461 movl 1096(%ebp,%ebx,4),%ebx | |
462 addl %eax,%ebx | |
463 movl 2120(%ebp,%ecx,4),%eax | |
464 xorl %eax,%ebx | |
465 movl 3144(%ebp,%edx,4),%edx | |
466 addl %edx,%ebx | |
467 xorl %eax,%eax | |
468 xorl %ebx,%esi | |
469 | |
470 # Round 11 | |
471 movl 44(%ebp),%edx | |
472 movl %esi,%ebx | |
473 xorl %edx,%edi | |
474 shrl $16,%ebx | |
475 movl %esi,%edx | |
476 movb %bh,%al | |
477 andl $255,%ebx | |
478 movb %dh,%cl | |
479 andl $255,%edx | |
480 movl 72(%ebp,%eax,4),%eax | |
481 movl 1096(%ebp,%ebx,4),%ebx | |
482 addl %eax,%ebx | |
483 movl 2120(%ebp,%ecx,4),%eax | |
484 xorl %eax,%ebx | |
485 movl 3144(%ebp,%edx,4),%edx | |
486 addl %edx,%ebx | |
487 xorl %eax,%eax | |
488 xorl %ebx,%edi | |
489 | |
490 # Round 10 | |
491 movl 40(%ebp),%edx | |
492 movl %edi,%ebx | |
493 xorl %edx,%esi | |
494 shrl $16,%ebx | |
495 movl %edi,%edx | |
496 movb %bh,%al | |
497 andl $255,%ebx | |
498 movb %dh,%cl | |
499 andl $255,%edx | |
500 movl 72(%ebp,%eax,4),%eax | |
501 movl 1096(%ebp,%ebx,4),%ebx | |
502 addl %eax,%ebx | |
503 movl 2120(%ebp,%ecx,4),%eax | |
504 xorl %eax,%ebx | |
505 movl 3144(%ebp,%edx,4),%edx | |
506 addl %edx,%ebx | |
507 xorl %eax,%eax | |
508 xorl %ebx,%esi | |
509 | |
510 # Round 9 | |
511 movl 36(%ebp),%edx | |
512 movl %esi,%ebx | |
513 xorl %edx,%edi | |
514 shrl $16,%ebx | |
515 movl %esi,%edx | |
516 movb %bh,%al | |
517 andl $255,%ebx | |
518 movb %dh,%cl | |
519 andl $255,%edx | |
520 movl 72(%ebp,%eax,4),%eax | |
521 movl 1096(%ebp,%ebx,4),%ebx | |
522 addl %eax,%ebx | |
523 movl 2120(%ebp,%ecx,4),%eax | |
524 xorl %eax,%ebx | |
525 movl 3144(%ebp,%edx,4),%edx | |
526 addl %edx,%ebx | |
527 xorl %eax,%eax | |
528 xorl %ebx,%edi | |
529 | |
530 # Round 8 | |
531 movl 32(%ebp),%edx | |
532 movl %edi,%ebx | |
533 xorl %edx,%esi | |
534 shrl $16,%ebx | |
535 movl %edi,%edx | |
536 movb %bh,%al | |
537 andl $255,%ebx | |
538 movb %dh,%cl | |
539 andl $255,%edx | |
540 movl 72(%ebp,%eax,4),%eax | |
541 movl 1096(%ebp,%ebx,4),%ebx | |
542 addl %eax,%ebx | |
543 movl 2120(%ebp,%ecx,4),%eax | |
544 xorl %eax,%ebx | |
545 movl 3144(%ebp,%edx,4),%edx | |
546 addl %edx,%ebx | |
547 xorl %eax,%eax | |
548 xorl %ebx,%esi | |
549 | |
550 # Round 7 | |
551 movl 28(%ebp),%edx | |
552 movl %esi,%ebx | |
553 xorl %edx,%edi | |
554 shrl $16,%ebx | |
555 movl %esi,%edx | |
556 movb %bh,%al | |
557 andl $255,%ebx | |
558 movb %dh,%cl | |
559 andl $255,%edx | |
560 movl 72(%ebp,%eax,4),%eax | |
561 movl 1096(%ebp,%ebx,4),%ebx | |
562 addl %eax,%ebx | |
563 movl 2120(%ebp,%ecx,4),%eax | |
564 xorl %eax,%ebx | |
565 movl 3144(%ebp,%edx,4),%edx | |
566 addl %edx,%ebx | |
567 xorl %eax,%eax | |
568 xorl %ebx,%edi | |
569 | |
570 # Round 6 | |
571 movl 24(%ebp),%edx | |
572 movl %edi,%ebx | |
573 xorl %edx,%esi | |
574 shrl $16,%ebx | |
575 movl %edi,%edx | |
576 movb %bh,%al | |
577 andl $255,%ebx | |
578 movb %dh,%cl | |
579 andl $255,%edx | |
580 movl 72(%ebp,%eax,4),%eax | |
581 movl 1096(%ebp,%ebx,4),%ebx | |
582 addl %eax,%ebx | |
583 movl 2120(%ebp,%ecx,4),%eax | |
584 xorl %eax,%ebx | |
585 movl 3144(%ebp,%edx,4),%edx | |
586 addl %edx,%ebx | |
587 xorl %eax,%eax | |
588 xorl %ebx,%esi | |
589 | |
590 # Round 5 | |
591 movl 20(%ebp),%edx | |
592 movl %esi,%ebx | |
593 xorl %edx,%edi | |
594 shrl $16,%ebx | |
595 movl %esi,%edx | |
596 movb %bh,%al | |
597 andl $255,%ebx | |
598 movb %dh,%cl | |
599 andl $255,%edx | |
600 movl 72(%ebp,%eax,4),%eax | |
601 movl 1096(%ebp,%ebx,4),%ebx | |
602 addl %eax,%ebx | |
603 movl 2120(%ebp,%ecx,4),%eax | |
604 xorl %eax,%ebx | |
605 movl 3144(%ebp,%edx,4),%edx | |
606 addl %edx,%ebx | |
607 xorl %eax,%eax | |
608 xorl %ebx,%edi | |
609 | |
610 # Round 4 | |
611 movl 16(%ebp),%edx | |
612 movl %edi,%ebx | |
613 xorl %edx,%esi | |
614 shrl $16,%ebx | |
615 movl %edi,%edx | |
616 movb %bh,%al | |
617 andl $255,%ebx | |
618 movb %dh,%cl | |
619 andl $255,%edx | |
620 movl 72(%ebp,%eax,4),%eax | |
621 movl 1096(%ebp,%ebx,4),%ebx | |
622 addl %eax,%ebx | |
623 movl 2120(%ebp,%ecx,4),%eax | |
624 xorl %eax,%ebx | |
625 movl 3144(%ebp,%edx,4),%edx | |
626 addl %edx,%ebx | |
627 xorl %eax,%eax | |
628 xorl %ebx,%esi | |
629 | |
630 # Round 3 | |
631 movl 12(%ebp),%edx | |
632 movl %esi,%ebx | |
633 xorl %edx,%edi | |
634 shrl $16,%ebx | |
635 movl %esi,%edx | |
636 movb %bh,%al | |
637 andl $255,%ebx | |
638 movb %dh,%cl | |
639 andl $255,%edx | |
640 movl 72(%ebp,%eax,4),%eax | |
641 movl 1096(%ebp,%ebx,4),%ebx | |
642 addl %eax,%ebx | |
643 movl 2120(%ebp,%ecx,4),%eax | |
644 xorl %eax,%ebx | |
645 movl 3144(%ebp,%edx,4),%edx | |
646 addl %edx,%ebx | |
647 xorl %eax,%eax | |
648 xorl %ebx,%edi | |
649 | |
650 # Round 2 | |
651 movl 8(%ebp),%edx | |
652 movl %edi,%ebx | |
653 xorl %edx,%esi | |
654 shrl $16,%ebx | |
655 movl %edi,%edx | |
656 movb %bh,%al | |
657 andl $255,%ebx | |
658 movb %dh,%cl | |
659 andl $255,%edx | |
660 movl 72(%ebp,%eax,4),%eax | |
661 movl 1096(%ebp,%ebx,4),%ebx | |
662 addl %eax,%ebx | |
663 movl 2120(%ebp,%ecx,4),%eax | |
664 xorl %eax,%ebx | |
665 movl 3144(%ebp,%edx,4),%edx | |
666 addl %edx,%ebx | |
667 xorl %eax,%eax | |
668 xorl %ebx,%esi | |
669 | |
670 # Round 1 | |
671 movl 4(%ebp),%edx | |
672 movl %esi,%ebx | |
673 xorl %edx,%edi | |
674 shrl $16,%ebx | |
675 movl %esi,%edx | |
676 movb %bh,%al | |
677 andl $255,%ebx | |
678 movb %dh,%cl | |
679 andl $255,%edx | |
680 movl 72(%ebp,%eax,4),%eax | |
681 movl 1096(%ebp,%ebx,4),%ebx | |
682 addl %eax,%ebx | |
683 movl 2120(%ebp,%ecx,4),%eax | |
684 xorl %eax,%ebx | |
685 movl 3144(%ebp,%edx,4),%edx | |
686 addl %edx,%ebx | |
687 # Load parameter 0 (1) enc=0 | |
688 movl 20(%esp),%eax | |
689 xorl %ebx,%edi | |
690 movl (%ebp),%edx | |
691 xorl %edx,%esi | |
692 movl %edi,4(%eax) | |
693 movl %esi,(%eax) | |
694 popl %edi | |
695 popl %esi | |
696 popl %ebx | |
697 popl %ebp | |
698 ret | |
699 .globl _BF_cbc_encrypt | |
700 .align 4 | |
701 _BF_cbc_encrypt: | |
702 L_BF_cbc_encrypt_begin: | |
703 | |
704 pushl %ebp | |
705 pushl %ebx | |
706 pushl %esi | |
707 pushl %edi | |
708 movl 28(%esp),%ebp | |
709 # getting iv ptr from parameter 4 | |
710 movl 36(%esp),%ebx | |
711 movl (%ebx),%esi | |
712 movl 4(%ebx),%edi | |
713 pushl %edi | |
714 pushl %esi | |
715 pushl %edi | |
716 pushl %esi | |
717 movl %esp,%ebx | |
718 movl 36(%esp),%esi | |
719 movl 40(%esp),%edi | |
720 # getting encrypt flag from parameter 5 | |
721 movl 56(%esp),%ecx | |
722 # get and push parameter 3 | |
723 movl 48(%esp),%eax | |
724 pushl %eax | |
725 pushl %ebx | |
726 cmpl $0,%ecx | |
727 jz L000decrypt | |
728 andl $4294967288,%ebp | |
729 movl 8(%esp),%eax | |
730 movl 12(%esp),%ebx | |
731 jz L001encrypt_finish | |
732 L002encrypt_loop: | |
733 movl (%esi),%ecx | |
734 movl 4(%esi),%edx | |
735 xorl %ecx,%eax | |
736 xorl %edx,%ebx | |
737 bswap %eax | |
738 bswap %ebx | |
739 movl %eax,8(%esp) | |
740 movl %ebx,12(%esp) | |
741 call L_BF_encrypt_begin | |
742 movl 8(%esp),%eax | |
743 movl 12(%esp),%ebx | |
744 bswap %eax | |
745 bswap %ebx | |
746 movl %eax,(%edi) | |
747 movl %ebx,4(%edi) | |
748 addl $8,%esi | |
749 addl $8,%edi | |
750 subl $8,%ebp | |
751 jnz L002encrypt_loop | |
752 L001encrypt_finish: | |
753 movl 52(%esp),%ebp | |
754 andl $7,%ebp | |
755 jz L003finish | |
756 call L004PIC_point | |
757 L004PIC_point: | |
758 popl %edx | |
759 leal L005cbc_enc_jmp_table-L004PIC_point(%edx),%ecx | |
760 movl (%ecx,%ebp,4),%ebp | |
761 addl %edx,%ebp | |
762 xorl %ecx,%ecx | |
763 xorl %edx,%edx | |
764 jmp *%ebp | |
765 L006ej7: | |
766 movb 6(%esi),%dh | |
767 shll $8,%edx | |
768 L007ej6: | |
769 movb 5(%esi),%dh | |
770 L008ej5: | |
771 movb 4(%esi),%dl | |
772 L009ej4: | |
773 movl (%esi),%ecx | |
774 jmp L010ejend | |
775 L011ej3: | |
776 movb 2(%esi),%ch | |
777 shll $8,%ecx | |
778 L012ej2: | |
779 movb 1(%esi),%ch | |
780 L013ej1: | |
781 movb (%esi),%cl | |
782 L010ejend: | |
783 xorl %ecx,%eax | |
784 xorl %edx,%ebx | |
785 bswap %eax | |
786 bswap %ebx | |
787 movl %eax,8(%esp) | |
788 movl %ebx,12(%esp) | |
789 call L_BF_encrypt_begin | |
790 movl 8(%esp),%eax | |
791 movl 12(%esp),%ebx | |
792 bswap %eax | |
793 bswap %ebx | |
794 movl %eax,(%edi) | |
795 movl %ebx,4(%edi) | |
796 jmp L003finish | |
797 L000decrypt: | |
798 andl $4294967288,%ebp | |
799 movl 16(%esp),%eax | |
800 movl 20(%esp),%ebx | |
801 jz L014decrypt_finish | |
802 L015decrypt_loop: | |
803 movl (%esi),%eax | |
804 movl 4(%esi),%ebx | |
805 bswap %eax | |
806 bswap %ebx | |
807 movl %eax,8(%esp) | |
808 movl %ebx,12(%esp) | |
809 call L_BF_decrypt_begin | |
810 movl 8(%esp),%eax | |
811 movl 12(%esp),%ebx | |
812 bswap %eax | |
813 bswap %ebx | |
814 movl 16(%esp),%ecx | |
815 movl 20(%esp),%edx | |
816 xorl %eax,%ecx | |
817 xorl %ebx,%edx | |
818 movl (%esi),%eax | |
819 movl 4(%esi),%ebx | |
820 movl %ecx,(%edi) | |
821 movl %edx,4(%edi) | |
822 movl %eax,16(%esp) | |
823 movl %ebx,20(%esp) | |
824 addl $8,%esi | |
825 addl $8,%edi | |
826 subl $8,%ebp | |
827 jnz L015decrypt_loop | |
828 L014decrypt_finish: | |
829 movl 52(%esp),%ebp | |
830 andl $7,%ebp | |
831 jz L003finish | |
832 movl (%esi),%eax | |
833 movl 4(%esi),%ebx | |
834 bswap %eax | |
835 bswap %ebx | |
836 movl %eax,8(%esp) | |
837 movl %ebx,12(%esp) | |
838 call L_BF_decrypt_begin | |
839 movl 8(%esp),%eax | |
840 movl 12(%esp),%ebx | |
841 bswap %eax | |
842 bswap %ebx | |
843 movl 16(%esp),%ecx | |
844 movl 20(%esp),%edx | |
845 xorl %eax,%ecx | |
846 xorl %ebx,%edx | |
847 movl (%esi),%eax | |
848 movl 4(%esi),%ebx | |
849 L016dj7: | |
850 rorl $16,%edx | |
851 movb %dl,6(%edi) | |
852 shrl $16,%edx | |
853 L017dj6: | |
854 movb %dh,5(%edi) | |
855 L018dj5: | |
856 movb %dl,4(%edi) | |
857 L019dj4: | |
858 movl %ecx,(%edi) | |
859 jmp L020djend | |
860 L021dj3: | |
861 rorl $16,%ecx | |
862 movb %cl,2(%edi) | |
863 shll $16,%ecx | |
864 L022dj2: | |
865 movb %ch,1(%esi) | |
866 L023dj1: | |
867 movb %cl,(%esi) | |
868 L020djend: | |
869 jmp L003finish | |
870 L003finish: | |
871 movl 60(%esp),%ecx | |
872 addl $24,%esp | |
873 movl %eax,(%ecx) | |
874 movl %ebx,4(%ecx) | |
875 popl %edi | |
876 popl %esi | |
877 popl %ebx | |
878 popl %ebp | |
879 ret | |
880 .align 6,0x90 | |
881 L005cbc_enc_jmp_table: | |
882 .long 0 | |
883 .long L013ej1-L004PIC_point | |
884 .long L012ej2-L004PIC_point | |
885 .long L011ej3-L004PIC_point | |
886 .long L009ej4-L004PIC_point | |
887 .long L008ej5-L004PIC_point | |
888 .long L007ej6-L004PIC_point | |
889 .long L006ej7-L004PIC_point | |
890 .align 6,0x90 | |
OLD | NEW |