]> git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/bf/asm/b-win32.asm
Import of old SSLeay release: SSLeay 0.8.1b
[thirdparty/openssl.git] / crypto / bf / asm / b-win32.asm
1 ; Don't even think of reading this code
2 ; It was automatically generated by bf586.pl
3 ; Which is a perl program used to generate the x86 assember for
4 ; any of elf, a.out, Win32, or Solaris
5 ; It can be found in SSLeay 0.7.0+
6 ; eric <eay@cryptsoft.com>
7 ;
8 TITLE bfx86xxxx.asm
9 .386
10 .model FLAT
11 _TEXT SEGMENT
12 PUBLIC _BF_encrypt
13 _BF_encrypt PROC NEAR
14 push ebp
15 push ebx
16 push esi
17 push edi
18 ;
19 ; Load the 2 words
20 mov eax, DWORD PTR 20[esp]
21 mov ecx, DWORD PTR [eax]
22 mov edx, DWORD PTR 4[eax]
23 ;
24 ; P pointer, s and enc flag
25 mov edi, DWORD PTR 24[esp]
26 xor eax, eax
27 xor ebx, ebx
28 mov ebp, DWORD PTR 28[esp]
29 cmp ebp, 0
30 je $L000start_decrypt
31 xor ecx, DWORD PTR [edi]
32 ;
33 ; Round 0
34 ror ecx, 16
35 mov esi, DWORD PTR 4[edi]
36 mov al, ch
37 mov bl, cl
38 ror ecx, 16
39 xor edx, esi
40 mov esi, DWORD PTR 72[eax*4+edi]
41 mov ebp, DWORD PTR 1096[ebx*4+edi]
42 mov al, ch
43 mov bl, cl
44 add esi, ebp
45 mov eax, DWORD PTR 2120[eax*4+edi]
46 xor esi, eax
47 mov ebp, DWORD PTR 3144[ebx*4+edi]
48 add esi, ebp
49 xor eax, eax
50 xor edx, esi
51 ;
52 ; Round 1
53 ror edx, 16
54 mov esi, DWORD PTR 8[edi]
55 mov al, dh
56 mov bl, dl
57 ror edx, 16
58 xor ecx, esi
59 mov esi, DWORD PTR 72[eax*4+edi]
60 mov ebp, DWORD PTR 1096[ebx*4+edi]
61 mov al, dh
62 mov bl, dl
63 add esi, ebp
64 mov eax, DWORD PTR 2120[eax*4+edi]
65 xor esi, eax
66 mov ebp, DWORD PTR 3144[ebx*4+edi]
67 add esi, ebp
68 xor eax, eax
69 xor ecx, esi
70 ;
71 ; Round 2
72 ror ecx, 16
73 mov esi, DWORD PTR 12[edi]
74 mov al, ch
75 mov bl, cl
76 ror ecx, 16
77 xor edx, esi
78 mov esi, DWORD PTR 72[eax*4+edi]
79 mov ebp, DWORD PTR 1096[ebx*4+edi]
80 mov al, ch
81 mov bl, cl
82 add esi, ebp
83 mov eax, DWORD PTR 2120[eax*4+edi]
84 xor esi, eax
85 mov ebp, DWORD PTR 3144[ebx*4+edi]
86 add esi, ebp
87 xor eax, eax
88 xor edx, esi
89 ;
90 ; Round 3
91 ror edx, 16
92 mov esi, DWORD PTR 16[edi]
93 mov al, dh
94 mov bl, dl
95 ror edx, 16
96 xor ecx, esi
97 mov esi, DWORD PTR 72[eax*4+edi]
98 mov ebp, DWORD PTR 1096[ebx*4+edi]
99 mov al, dh
100 mov bl, dl
101 add esi, ebp
102 mov eax, DWORD PTR 2120[eax*4+edi]
103 xor esi, eax
104 mov ebp, DWORD PTR 3144[ebx*4+edi]
105 add esi, ebp
106 xor eax, eax
107 xor ecx, esi
108 ;
109 ; Round 4
110 ror ecx, 16
111 mov esi, DWORD PTR 20[edi]
112 mov al, ch
113 mov bl, cl
114 ror ecx, 16
115 xor edx, esi
116 mov esi, DWORD PTR 72[eax*4+edi]
117 mov ebp, DWORD PTR 1096[ebx*4+edi]
118 mov al, ch
119 mov bl, cl
120 add esi, ebp
121 mov eax, DWORD PTR 2120[eax*4+edi]
122 xor esi, eax
123 mov ebp, DWORD PTR 3144[ebx*4+edi]
124 add esi, ebp
125 xor eax, eax
126 xor edx, esi
127 ;
128 ; Round 5
129 ror edx, 16
130 mov esi, DWORD PTR 24[edi]
131 mov al, dh
132 mov bl, dl
133 ror edx, 16
134 xor ecx, esi
135 mov esi, DWORD PTR 72[eax*4+edi]
136 mov ebp, DWORD PTR 1096[ebx*4+edi]
137 mov al, dh
138 mov bl, dl
139 add esi, ebp
140 mov eax, DWORD PTR 2120[eax*4+edi]
141 xor esi, eax
142 mov ebp, DWORD PTR 3144[ebx*4+edi]
143 add esi, ebp
144 xor eax, eax
145 xor ecx, esi
146 ;
147 ; Round 6
148 ror ecx, 16
149 mov esi, DWORD PTR 28[edi]
150 mov al, ch
151 mov bl, cl
152 ror ecx, 16
153 xor edx, esi
154 mov esi, DWORD PTR 72[eax*4+edi]
155 mov ebp, DWORD PTR 1096[ebx*4+edi]
156 mov al, ch
157 mov bl, cl
158 add esi, ebp
159 mov eax, DWORD PTR 2120[eax*4+edi]
160 xor esi, eax
161 mov ebp, DWORD PTR 3144[ebx*4+edi]
162 add esi, ebp
163 xor eax, eax
164 xor edx, esi
165 ;
166 ; Round 7
167 ror edx, 16
168 mov esi, DWORD PTR 32[edi]
169 mov al, dh
170 mov bl, dl
171 ror edx, 16
172 xor ecx, esi
173 mov esi, DWORD PTR 72[eax*4+edi]
174 mov ebp, DWORD PTR 1096[ebx*4+edi]
175 mov al, dh
176 mov bl, dl
177 add esi, ebp
178 mov eax, DWORD PTR 2120[eax*4+edi]
179 xor esi, eax
180 mov ebp, DWORD PTR 3144[ebx*4+edi]
181 add esi, ebp
182 xor eax, eax
183 xor ecx, esi
184 ;
185 ; Round 8
186 ror ecx, 16
187 mov esi, DWORD PTR 36[edi]
188 mov al, ch
189 mov bl, cl
190 ror ecx, 16
191 xor edx, esi
192 mov esi, DWORD PTR 72[eax*4+edi]
193 mov ebp, DWORD PTR 1096[ebx*4+edi]
194 mov al, ch
195 mov bl, cl
196 add esi, ebp
197 mov eax, DWORD PTR 2120[eax*4+edi]
198 xor esi, eax
199 mov ebp, DWORD PTR 3144[ebx*4+edi]
200 add esi, ebp
201 xor eax, eax
202 xor edx, esi
203 ;
204 ; Round 9
205 ror edx, 16
206 mov esi, DWORD PTR 40[edi]
207 mov al, dh
208 mov bl, dl
209 ror edx, 16
210 xor ecx, esi
211 mov esi, DWORD PTR 72[eax*4+edi]
212 mov ebp, DWORD PTR 1096[ebx*4+edi]
213 mov al, dh
214 mov bl, dl
215 add esi, ebp
216 mov eax, DWORD PTR 2120[eax*4+edi]
217 xor esi, eax
218 mov ebp, DWORD PTR 3144[ebx*4+edi]
219 add esi, ebp
220 xor eax, eax
221 xor ecx, esi
222 ;
223 ; Round 10
224 ror ecx, 16
225 mov esi, DWORD PTR 44[edi]
226 mov al, ch
227 mov bl, cl
228 ror ecx, 16
229 xor edx, esi
230 mov esi, DWORD PTR 72[eax*4+edi]
231 mov ebp, DWORD PTR 1096[ebx*4+edi]
232 mov al, ch
233 mov bl, cl
234 add esi, ebp
235 mov eax, DWORD PTR 2120[eax*4+edi]
236 xor esi, eax
237 mov ebp, DWORD PTR 3144[ebx*4+edi]
238 add esi, ebp
239 xor eax, eax
240 xor edx, esi
241 ;
242 ; Round 11
243 ror edx, 16
244 mov esi, DWORD PTR 48[edi]
245 mov al, dh
246 mov bl, dl
247 ror edx, 16
248 xor ecx, esi
249 mov esi, DWORD PTR 72[eax*4+edi]
250 mov ebp, DWORD PTR 1096[ebx*4+edi]
251 mov al, dh
252 mov bl, dl
253 add esi, ebp
254 mov eax, DWORD PTR 2120[eax*4+edi]
255 xor esi, eax
256 mov ebp, DWORD PTR 3144[ebx*4+edi]
257 add esi, ebp
258 xor eax, eax
259 xor ecx, esi
260 ;
261 ; Round 12
262 ror ecx, 16
263 mov esi, DWORD PTR 52[edi]
264 mov al, ch
265 mov bl, cl
266 ror ecx, 16
267 xor edx, esi
268 mov esi, DWORD PTR 72[eax*4+edi]
269 mov ebp, DWORD PTR 1096[ebx*4+edi]
270 mov al, ch
271 mov bl, cl
272 add esi, ebp
273 mov eax, DWORD PTR 2120[eax*4+edi]
274 xor esi, eax
275 mov ebp, DWORD PTR 3144[ebx*4+edi]
276 add esi, ebp
277 xor eax, eax
278 xor edx, esi
279 ;
280 ; Round 13
281 ror edx, 16
282 mov esi, DWORD PTR 56[edi]
283 mov al, dh
284 mov bl, dl
285 ror edx, 16
286 xor ecx, esi
287 mov esi, DWORD PTR 72[eax*4+edi]
288 mov ebp, DWORD PTR 1096[ebx*4+edi]
289 mov al, dh
290 mov bl, dl
291 add esi, ebp
292 mov eax, DWORD PTR 2120[eax*4+edi]
293 xor esi, eax
294 mov ebp, DWORD PTR 3144[ebx*4+edi]
295 add esi, ebp
296 xor eax, eax
297 xor ecx, esi
298 ;
299 ; Round 14
300 ror ecx, 16
301 mov esi, DWORD PTR 60[edi]
302 mov al, ch
303 mov bl, cl
304 ror ecx, 16
305 xor edx, esi
306 mov esi, DWORD PTR 72[eax*4+edi]
307 mov ebp, DWORD PTR 1096[ebx*4+edi]
308 mov al, ch
309 mov bl, cl
310 add esi, ebp
311 mov eax, DWORD PTR 2120[eax*4+edi]
312 xor esi, eax
313 mov ebp, DWORD PTR 3144[ebx*4+edi]
314 add esi, ebp
315 xor eax, eax
316 xor edx, esi
317 ;
318 ; Round 15
319 ror edx, 16
320 mov esi, DWORD PTR 64[edi]
321 mov al, dh
322 mov bl, dl
323 ror edx, 16
324 xor ecx, esi
325 mov esi, DWORD PTR 72[eax*4+edi]
326 mov ebp, DWORD PTR 1096[ebx*4+edi]
327 mov al, dh
328 mov bl, dl
329 add esi, ebp
330 mov eax, DWORD PTR 2120[eax*4+edi]
331 xor esi, eax
332 mov ebp, DWORD PTR 3144[ebx*4+edi]
333 add esi, ebp
334 xor eax, eax
335 xor ecx, esi
336 xor edx, DWORD PTR 68[edi]
337 mov eax, DWORD PTR 20[esp]
338 mov DWORD PTR [eax],edx
339 mov DWORD PTR 4[eax],ecx
340 pop edi
341 pop esi
342 pop ebx
343 pop ebp
344 ret
345 $L000start_decrypt:
346 xor ecx, DWORD PTR 68[edi]
347 ;
348 ; Round 16
349 ror ecx, 16
350 mov esi, DWORD PTR 64[edi]
351 mov al, ch
352 mov bl, cl
353 ror ecx, 16
354 xor edx, esi
355 mov esi, DWORD PTR 72[eax*4+edi]
356 mov ebp, DWORD PTR 1096[ebx*4+edi]
357 mov al, ch
358 mov bl, cl
359 add esi, ebp
360 mov eax, DWORD PTR 2120[eax*4+edi]
361 xor esi, eax
362 mov ebp, DWORD PTR 3144[ebx*4+edi]
363 add esi, ebp
364 xor eax, eax
365 xor edx, esi
366 ;
367 ; Round 15
368 ror edx, 16
369 mov esi, DWORD PTR 60[edi]
370 mov al, dh
371 mov bl, dl
372 ror edx, 16
373 xor ecx, esi
374 mov esi, DWORD PTR 72[eax*4+edi]
375 mov ebp, DWORD PTR 1096[ebx*4+edi]
376 mov al, dh
377 mov bl, dl
378 add esi, ebp
379 mov eax, DWORD PTR 2120[eax*4+edi]
380 xor esi, eax
381 mov ebp, DWORD PTR 3144[ebx*4+edi]
382 add esi, ebp
383 xor eax, eax
384 xor ecx, esi
385 ;
386 ; Round 14
387 ror ecx, 16
388 mov esi, DWORD PTR 56[edi]
389 mov al, ch
390 mov bl, cl
391 ror ecx, 16
392 xor edx, esi
393 mov esi, DWORD PTR 72[eax*4+edi]
394 mov ebp, DWORD PTR 1096[ebx*4+edi]
395 mov al, ch
396 mov bl, cl
397 add esi, ebp
398 mov eax, DWORD PTR 2120[eax*4+edi]
399 xor esi, eax
400 mov ebp, DWORD PTR 3144[ebx*4+edi]
401 add esi, ebp
402 xor eax, eax
403 xor edx, esi
404 ;
405 ; Round 13
406 ror edx, 16
407 mov esi, DWORD PTR 52[edi]
408 mov al, dh
409 mov bl, dl
410 ror edx, 16
411 xor ecx, esi
412 mov esi, DWORD PTR 72[eax*4+edi]
413 mov ebp, DWORD PTR 1096[ebx*4+edi]
414 mov al, dh
415 mov bl, dl
416 add esi, ebp
417 mov eax, DWORD PTR 2120[eax*4+edi]
418 xor esi, eax
419 mov ebp, DWORD PTR 3144[ebx*4+edi]
420 add esi, ebp
421 xor eax, eax
422 xor ecx, esi
423 ;
424 ; Round 12
425 ror ecx, 16
426 mov esi, DWORD PTR 48[edi]
427 mov al, ch
428 mov bl, cl
429 ror ecx, 16
430 xor edx, esi
431 mov esi, DWORD PTR 72[eax*4+edi]
432 mov ebp, DWORD PTR 1096[ebx*4+edi]
433 mov al, ch
434 mov bl, cl
435 add esi, ebp
436 mov eax, DWORD PTR 2120[eax*4+edi]
437 xor esi, eax
438 mov ebp, DWORD PTR 3144[ebx*4+edi]
439 add esi, ebp
440 xor eax, eax
441 xor edx, esi
442 ;
443 ; Round 11
444 ror edx, 16
445 mov esi, DWORD PTR 44[edi]
446 mov al, dh
447 mov bl, dl
448 ror edx, 16
449 xor ecx, esi
450 mov esi, DWORD PTR 72[eax*4+edi]
451 mov ebp, DWORD PTR 1096[ebx*4+edi]
452 mov al, dh
453 mov bl, dl
454 add esi, ebp
455 mov eax, DWORD PTR 2120[eax*4+edi]
456 xor esi, eax
457 mov ebp, DWORD PTR 3144[ebx*4+edi]
458 add esi, ebp
459 xor eax, eax
460 xor ecx, esi
461 ;
462 ; Round 10
463 ror ecx, 16
464 mov esi, DWORD PTR 40[edi]
465 mov al, ch
466 mov bl, cl
467 ror ecx, 16
468 xor edx, esi
469 mov esi, DWORD PTR 72[eax*4+edi]
470 mov ebp, DWORD PTR 1096[ebx*4+edi]
471 mov al, ch
472 mov bl, cl
473 add esi, ebp
474 mov eax, DWORD PTR 2120[eax*4+edi]
475 xor esi, eax
476 mov ebp, DWORD PTR 3144[ebx*4+edi]
477 add esi, ebp
478 xor eax, eax
479 xor edx, esi
480 ;
481 ; Round 9
482 ror edx, 16
483 mov esi, DWORD PTR 36[edi]
484 mov al, dh
485 mov bl, dl
486 ror edx, 16
487 xor ecx, esi
488 mov esi, DWORD PTR 72[eax*4+edi]
489 mov ebp, DWORD PTR 1096[ebx*4+edi]
490 mov al, dh
491 mov bl, dl
492 add esi, ebp
493 mov eax, DWORD PTR 2120[eax*4+edi]
494 xor esi, eax
495 mov ebp, DWORD PTR 3144[ebx*4+edi]
496 add esi, ebp
497 xor eax, eax
498 xor ecx, esi
499 ;
500 ; Round 8
501 ror ecx, 16
502 mov esi, DWORD PTR 32[edi]
503 mov al, ch
504 mov bl, cl
505 ror ecx, 16
506 xor edx, esi
507 mov esi, DWORD PTR 72[eax*4+edi]
508 mov ebp, DWORD PTR 1096[ebx*4+edi]
509 mov al, ch
510 mov bl, cl
511 add esi, ebp
512 mov eax, DWORD PTR 2120[eax*4+edi]
513 xor esi, eax
514 mov ebp, DWORD PTR 3144[ebx*4+edi]
515 add esi, ebp
516 xor eax, eax
517 xor edx, esi
518 ;
519 ; Round 7
520 ror edx, 16
521 mov esi, DWORD PTR 28[edi]
522 mov al, dh
523 mov bl, dl
524 ror edx, 16
525 xor ecx, esi
526 mov esi, DWORD PTR 72[eax*4+edi]
527 mov ebp, DWORD PTR 1096[ebx*4+edi]
528 mov al, dh
529 mov bl, dl
530 add esi, ebp
531 mov eax, DWORD PTR 2120[eax*4+edi]
532 xor esi, eax
533 mov ebp, DWORD PTR 3144[ebx*4+edi]
534 add esi, ebp
535 xor eax, eax
536 xor ecx, esi
537 ;
538 ; Round 6
539 ror ecx, 16
540 mov esi, DWORD PTR 24[edi]
541 mov al, ch
542 mov bl, cl
543 ror ecx, 16
544 xor edx, esi
545 mov esi, DWORD PTR 72[eax*4+edi]
546 mov ebp, DWORD PTR 1096[ebx*4+edi]
547 mov al, ch
548 mov bl, cl
549 add esi, ebp
550 mov eax, DWORD PTR 2120[eax*4+edi]
551 xor esi, eax
552 mov ebp, DWORD PTR 3144[ebx*4+edi]
553 add esi, ebp
554 xor eax, eax
555 xor edx, esi
556 ;
557 ; Round 5
558 ror edx, 16
559 mov esi, DWORD PTR 20[edi]
560 mov al, dh
561 mov bl, dl
562 ror edx, 16
563 xor ecx, esi
564 mov esi, DWORD PTR 72[eax*4+edi]
565 mov ebp, DWORD PTR 1096[ebx*4+edi]
566 mov al, dh
567 mov bl, dl
568 add esi, ebp
569 mov eax, DWORD PTR 2120[eax*4+edi]
570 xor esi, eax
571 mov ebp, DWORD PTR 3144[ebx*4+edi]
572 add esi, ebp
573 xor eax, eax
574 xor ecx, esi
575 ;
576 ; Round 4
577 ror ecx, 16
578 mov esi, DWORD PTR 16[edi]
579 mov al, ch
580 mov bl, cl
581 ror ecx, 16
582 xor edx, esi
583 mov esi, DWORD PTR 72[eax*4+edi]
584 mov ebp, DWORD PTR 1096[ebx*4+edi]
585 mov al, ch
586 mov bl, cl
587 add esi, ebp
588 mov eax, DWORD PTR 2120[eax*4+edi]
589 xor esi, eax
590 mov ebp, DWORD PTR 3144[ebx*4+edi]
591 add esi, ebp
592 xor eax, eax
593 xor edx, esi
594 ;
595 ; Round 3
596 ror edx, 16
597 mov esi, DWORD PTR 12[edi]
598 mov al, dh
599 mov bl, dl
600 ror edx, 16
601 xor ecx, esi
602 mov esi, DWORD PTR 72[eax*4+edi]
603 mov ebp, DWORD PTR 1096[ebx*4+edi]
604 mov al, dh
605 mov bl, dl
606 add esi, ebp
607 mov eax, DWORD PTR 2120[eax*4+edi]
608 xor esi, eax
609 mov ebp, DWORD PTR 3144[ebx*4+edi]
610 add esi, ebp
611 xor eax, eax
612 xor ecx, esi
613 ;
614 ; Round 2
615 ror ecx, 16
616 mov esi, DWORD PTR 8[edi]
617 mov al, ch
618 mov bl, cl
619 ror ecx, 16
620 xor edx, esi
621 mov esi, DWORD PTR 72[eax*4+edi]
622 mov ebp, DWORD PTR 1096[ebx*4+edi]
623 mov al, ch
624 mov bl, cl
625 add esi, ebp
626 mov eax, DWORD PTR 2120[eax*4+edi]
627 xor esi, eax
628 mov ebp, DWORD PTR 3144[ebx*4+edi]
629 add esi, ebp
630 xor eax, eax
631 xor edx, esi
632 ;
633 ; Round 1
634 ror edx, 16
635 mov esi, DWORD PTR 4[edi]
636 mov al, dh
637 mov bl, dl
638 ror edx, 16
639 xor ecx, esi
640 mov esi, DWORD PTR 72[eax*4+edi]
641 mov ebp, DWORD PTR 1096[ebx*4+edi]
642 mov al, dh
643 mov bl, dl
644 add esi, ebp
645 mov eax, DWORD PTR 2120[eax*4+edi]
646 xor esi, eax
647 mov ebp, DWORD PTR 3144[ebx*4+edi]
648 add esi, ebp
649 xor eax, eax
650 xor ecx, esi
651 xor edx, DWORD PTR [edi]
652 mov eax, DWORD PTR 20[esp]
653 mov DWORD PTR [eax],edx
654 mov DWORD PTR 4[eax],ecx
655 pop edi
656 pop esi
657 pop ebx
658 pop ebp
659 ret
660 _BF_encrypt ENDP
661 _TEXT ENDS
662 END