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