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