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