remove gcc34
[dragonfly.git] / crypto / heimdal-0.6.3 / lib / des / asm / win32.asm
blob29c915f78f2071946a9e5f7213298d53e778bbfd
1 ; Don't even think of reading this code
2 ; It was automatically generated by des-som2.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.6.5+ or in libdes 3.26+
6 ; eric <eay@mincom.oz.au>
7 ; The inner loop instruction sequence and the IP/FP modifications
8 ; are from Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
11 TITLE dx86xxxx.asm
12 .386
13 .model FLAT
14 _TEXT SEGMENT
15 PUBLIC _des_encrypt
16 EXTRN _des_SPtrans:DWORD
17 _des_encrypt PROC NEAR
18 push ebp
19 push ebx
20 push esi
21 push edi
23 ; Load the 2 words
24 mov esi, DWORD PTR 20[esp]
25 xor ecx, ecx
26 mov eax, DWORD PTR [esi]
27 mov ebx, DWORD PTR 28[esp]
28 mov edi, DWORD PTR 4[esi]
30 ; IP
31 rol eax, 4
32 mov esi, eax
33 xor eax, edi
34 and eax, 0f0f0f0f0h
35 xor esi, eax
36 xor edi, eax
38 rol edi, 20
39 mov eax, edi
40 xor edi, esi
41 and edi, 0fff0000fh
42 xor eax, edi
43 xor esi, edi
45 rol eax, 14
46 mov edi, eax
47 xor eax, esi
48 and eax, 033333333h
49 xor edi, eax
50 xor esi, eax
52 rol esi, 22
53 mov eax, esi
54 xor esi, edi
55 and esi, 003fc03fch
56 xor eax, esi
57 xor edi, esi
59 rol eax, 9
60 mov esi, eax
61 xor eax, edi
62 and eax, 0aaaaaaaah
63 xor esi, eax
64 xor edi, eax
66 rol edi, 1
67 cmp ebx, 0
68 mov ebp, DWORD PTR 24[esp]
69 je $L000start_decrypt
71 ; Round 0
72 mov eax, DWORD PTR [ebp]
73 xor ebx, ebx
74 mov edx, DWORD PTR 4[ebp]
75 xor eax, esi
76 xor edx, esi
77 and eax, 0fcfcfcfch
78 and edx, 0cfcfcfcfh
79 mov bl, al
80 mov cl, ah
81 ror edx, 4
82 mov ebp, DWORD PTR _des_SPtrans[ebx]
83 mov bl, dl
84 xor edi, ebp
85 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
86 xor edi, ebp
87 mov cl, dh
88 shr eax, 16
89 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
90 xor edi, ebp
91 mov bl, ah
92 shr edx, 16
93 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
94 xor edi, ebp
95 mov ebp, DWORD PTR 24[esp]
96 mov cl, dh
97 and eax, 0ffh
98 and edx, 0ffh
99 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
100 xor edi, ebx
101 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
102 xor edi, ebx
103 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
104 xor edi, ebx
105 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
106 xor edi, ebx
108 ; Round 1
109 mov eax, DWORD PTR 8[ebp]
110 xor ebx, ebx
111 mov edx, DWORD PTR 12[ebp]
112 xor eax, edi
113 xor edx, edi
114 and eax, 0fcfcfcfch
115 and edx, 0cfcfcfcfh
116 mov bl, al
117 mov cl, ah
118 ror edx, 4
119 mov ebp, DWORD PTR _des_SPtrans[ebx]
120 mov bl, dl
121 xor esi, ebp
122 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
123 xor esi, ebp
124 mov cl, dh
125 shr eax, 16
126 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
127 xor esi, ebp
128 mov bl, ah
129 shr edx, 16
130 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
131 xor esi, ebp
132 mov ebp, DWORD PTR 24[esp]
133 mov cl, dh
134 and eax, 0ffh
135 and edx, 0ffh
136 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
137 xor esi, ebx
138 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
139 xor esi, ebx
140 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
141 xor esi, ebx
142 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
143 xor esi, ebx
145 ; Round 2
146 mov eax, DWORD PTR 16[ebp]
147 xor ebx, ebx
148 mov edx, DWORD PTR 20[ebp]
149 xor eax, esi
150 xor edx, esi
151 and eax, 0fcfcfcfch
152 and edx, 0cfcfcfcfh
153 mov bl, al
154 mov cl, ah
155 ror edx, 4
156 mov ebp, DWORD PTR _des_SPtrans[ebx]
157 mov bl, dl
158 xor edi, ebp
159 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
160 xor edi, ebp
161 mov cl, dh
162 shr eax, 16
163 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
164 xor edi, ebp
165 mov bl, ah
166 shr edx, 16
167 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
168 xor edi, ebp
169 mov ebp, DWORD PTR 24[esp]
170 mov cl, dh
171 and eax, 0ffh
172 and edx, 0ffh
173 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
174 xor edi, ebx
175 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
176 xor edi, ebx
177 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
178 xor edi, ebx
179 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
180 xor edi, ebx
182 ; Round 3
183 mov eax, DWORD PTR 24[ebp]
184 xor ebx, ebx
185 mov edx, DWORD PTR 28[ebp]
186 xor eax, edi
187 xor edx, edi
188 and eax, 0fcfcfcfch
189 and edx, 0cfcfcfcfh
190 mov bl, al
191 mov cl, ah
192 ror edx, 4
193 mov ebp, DWORD PTR _des_SPtrans[ebx]
194 mov bl, dl
195 xor esi, ebp
196 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
197 xor esi, ebp
198 mov cl, dh
199 shr eax, 16
200 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
201 xor esi, ebp
202 mov bl, ah
203 shr edx, 16
204 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
205 xor esi, ebp
206 mov ebp, DWORD PTR 24[esp]
207 mov cl, dh
208 and eax, 0ffh
209 and edx, 0ffh
210 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
211 xor esi, ebx
212 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
213 xor esi, ebx
214 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
215 xor esi, ebx
216 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
217 xor esi, ebx
219 ; Round 4
220 mov eax, DWORD PTR 32[ebp]
221 xor ebx, ebx
222 mov edx, DWORD PTR 36[ebp]
223 xor eax, esi
224 xor edx, esi
225 and eax, 0fcfcfcfch
226 and edx, 0cfcfcfcfh
227 mov bl, al
228 mov cl, ah
229 ror edx, 4
230 mov ebp, DWORD PTR _des_SPtrans[ebx]
231 mov bl, dl
232 xor edi, ebp
233 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
234 xor edi, ebp
235 mov cl, dh
236 shr eax, 16
237 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
238 xor edi, ebp
239 mov bl, ah
240 shr edx, 16
241 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
242 xor edi, ebp
243 mov ebp, DWORD PTR 24[esp]
244 mov cl, dh
245 and eax, 0ffh
246 and edx, 0ffh
247 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
248 xor edi, ebx
249 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
250 xor edi, ebx
251 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
252 xor edi, ebx
253 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
254 xor edi, ebx
256 ; Round 5
257 mov eax, DWORD PTR 40[ebp]
258 xor ebx, ebx
259 mov edx, DWORD PTR 44[ebp]
260 xor eax, edi
261 xor edx, edi
262 and eax, 0fcfcfcfch
263 and edx, 0cfcfcfcfh
264 mov bl, al
265 mov cl, ah
266 ror edx, 4
267 mov ebp, DWORD PTR _des_SPtrans[ebx]
268 mov bl, dl
269 xor esi, ebp
270 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
271 xor esi, ebp
272 mov cl, dh
273 shr eax, 16
274 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
275 xor esi, ebp
276 mov bl, ah
277 shr edx, 16
278 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
279 xor esi, ebp
280 mov ebp, DWORD PTR 24[esp]
281 mov cl, dh
282 and eax, 0ffh
283 and edx, 0ffh
284 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
285 xor esi, ebx
286 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
287 xor esi, ebx
288 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
289 xor esi, ebx
290 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
291 xor esi, ebx
293 ; Round 6
294 mov eax, DWORD PTR 48[ebp]
295 xor ebx, ebx
296 mov edx, DWORD PTR 52[ebp]
297 xor eax, esi
298 xor edx, esi
299 and eax, 0fcfcfcfch
300 and edx, 0cfcfcfcfh
301 mov bl, al
302 mov cl, ah
303 ror edx, 4
304 mov ebp, DWORD PTR _des_SPtrans[ebx]
305 mov bl, dl
306 xor edi, ebp
307 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
308 xor edi, ebp
309 mov cl, dh
310 shr eax, 16
311 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
312 xor edi, ebp
313 mov bl, ah
314 shr edx, 16
315 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
316 xor edi, ebp
317 mov ebp, DWORD PTR 24[esp]
318 mov cl, dh
319 and eax, 0ffh
320 and edx, 0ffh
321 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
322 xor edi, ebx
323 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
324 xor edi, ebx
325 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
326 xor edi, ebx
327 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
328 xor edi, ebx
330 ; Round 7
331 mov eax, DWORD PTR 56[ebp]
332 xor ebx, ebx
333 mov edx, DWORD PTR 60[ebp]
334 xor eax, edi
335 xor edx, edi
336 and eax, 0fcfcfcfch
337 and edx, 0cfcfcfcfh
338 mov bl, al
339 mov cl, ah
340 ror edx, 4
341 mov ebp, DWORD PTR _des_SPtrans[ebx]
342 mov bl, dl
343 xor esi, ebp
344 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
345 xor esi, ebp
346 mov cl, dh
347 shr eax, 16
348 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
349 xor esi, ebp
350 mov bl, ah
351 shr edx, 16
352 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
353 xor esi, ebp
354 mov ebp, DWORD PTR 24[esp]
355 mov cl, dh
356 and eax, 0ffh
357 and edx, 0ffh
358 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
359 xor esi, ebx
360 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
361 xor esi, ebx
362 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
363 xor esi, ebx
364 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
365 xor esi, ebx
367 ; Round 8
368 mov eax, DWORD PTR 64[ebp]
369 xor ebx, ebx
370 mov edx, DWORD PTR 68[ebp]
371 xor eax, esi
372 xor edx, esi
373 and eax, 0fcfcfcfch
374 and edx, 0cfcfcfcfh
375 mov bl, al
376 mov cl, ah
377 ror edx, 4
378 mov ebp, DWORD PTR _des_SPtrans[ebx]
379 mov bl, dl
380 xor edi, ebp
381 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
382 xor edi, ebp
383 mov cl, dh
384 shr eax, 16
385 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
386 xor edi, ebp
387 mov bl, ah
388 shr edx, 16
389 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
390 xor edi, ebp
391 mov ebp, DWORD PTR 24[esp]
392 mov cl, dh
393 and eax, 0ffh
394 and edx, 0ffh
395 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
396 xor edi, ebx
397 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
398 xor edi, ebx
399 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
400 xor edi, ebx
401 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
402 xor edi, ebx
404 ; Round 9
405 mov eax, DWORD PTR 72[ebp]
406 xor ebx, ebx
407 mov edx, DWORD PTR 76[ebp]
408 xor eax, edi
409 xor edx, edi
410 and eax, 0fcfcfcfch
411 and edx, 0cfcfcfcfh
412 mov bl, al
413 mov cl, ah
414 ror edx, 4
415 mov ebp, DWORD PTR _des_SPtrans[ebx]
416 mov bl, dl
417 xor esi, ebp
418 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
419 xor esi, ebp
420 mov cl, dh
421 shr eax, 16
422 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
423 xor esi, ebp
424 mov bl, ah
425 shr edx, 16
426 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
427 xor esi, ebp
428 mov ebp, DWORD PTR 24[esp]
429 mov cl, dh
430 and eax, 0ffh
431 and edx, 0ffh
432 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
433 xor esi, ebx
434 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
435 xor esi, ebx
436 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
437 xor esi, ebx
438 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
439 xor esi, ebx
441 ; Round 10
442 mov eax, DWORD PTR 80[ebp]
443 xor ebx, ebx
444 mov edx, DWORD PTR 84[ebp]
445 xor eax, esi
446 xor edx, esi
447 and eax, 0fcfcfcfch
448 and edx, 0cfcfcfcfh
449 mov bl, al
450 mov cl, ah
451 ror edx, 4
452 mov ebp, DWORD PTR _des_SPtrans[ebx]
453 mov bl, dl
454 xor edi, ebp
455 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
456 xor edi, ebp
457 mov cl, dh
458 shr eax, 16
459 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
460 xor edi, ebp
461 mov bl, ah
462 shr edx, 16
463 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
464 xor edi, ebp
465 mov ebp, DWORD PTR 24[esp]
466 mov cl, dh
467 and eax, 0ffh
468 and edx, 0ffh
469 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
470 xor edi, ebx
471 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
472 xor edi, ebx
473 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
474 xor edi, ebx
475 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
476 xor edi, ebx
478 ; Round 11
479 mov eax, DWORD PTR 88[ebp]
480 xor ebx, ebx
481 mov edx, DWORD PTR 92[ebp]
482 xor eax, edi
483 xor edx, edi
484 and eax, 0fcfcfcfch
485 and edx, 0cfcfcfcfh
486 mov bl, al
487 mov cl, ah
488 ror edx, 4
489 mov ebp, DWORD PTR _des_SPtrans[ebx]
490 mov bl, dl
491 xor esi, ebp
492 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
493 xor esi, ebp
494 mov cl, dh
495 shr eax, 16
496 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
497 xor esi, ebp
498 mov bl, ah
499 shr edx, 16
500 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
501 xor esi, ebp
502 mov ebp, DWORD PTR 24[esp]
503 mov cl, dh
504 and eax, 0ffh
505 and edx, 0ffh
506 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
507 xor esi, ebx
508 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
509 xor esi, ebx
510 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
511 xor esi, ebx
512 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
513 xor esi, ebx
515 ; Round 12
516 mov eax, DWORD PTR 96[ebp]
517 xor ebx, ebx
518 mov edx, DWORD PTR 100[ebp]
519 xor eax, esi
520 xor edx, esi
521 and eax, 0fcfcfcfch
522 and edx, 0cfcfcfcfh
523 mov bl, al
524 mov cl, ah
525 ror edx, 4
526 mov ebp, DWORD PTR _des_SPtrans[ebx]
527 mov bl, dl
528 xor edi, ebp
529 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
530 xor edi, ebp
531 mov cl, dh
532 shr eax, 16
533 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
534 xor edi, ebp
535 mov bl, ah
536 shr edx, 16
537 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
538 xor edi, ebp
539 mov ebp, DWORD PTR 24[esp]
540 mov cl, dh
541 and eax, 0ffh
542 and edx, 0ffh
543 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
544 xor edi, ebx
545 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
546 xor edi, ebx
547 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
548 xor edi, ebx
549 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
550 xor edi, ebx
552 ; Round 13
553 mov eax, DWORD PTR 104[ebp]
554 xor ebx, ebx
555 mov edx, DWORD PTR 108[ebp]
556 xor eax, edi
557 xor edx, edi
558 and eax, 0fcfcfcfch
559 and edx, 0cfcfcfcfh
560 mov bl, al
561 mov cl, ah
562 ror edx, 4
563 mov ebp, DWORD PTR _des_SPtrans[ebx]
564 mov bl, dl
565 xor esi, ebp
566 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
567 xor esi, ebp
568 mov cl, dh
569 shr eax, 16
570 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
571 xor esi, ebp
572 mov bl, ah
573 shr edx, 16
574 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
575 xor esi, ebp
576 mov ebp, DWORD PTR 24[esp]
577 mov cl, dh
578 and eax, 0ffh
579 and edx, 0ffh
580 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
581 xor esi, ebx
582 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
583 xor esi, ebx
584 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
585 xor esi, ebx
586 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
587 xor esi, ebx
589 ; Round 14
590 mov eax, DWORD PTR 112[ebp]
591 xor ebx, ebx
592 mov edx, DWORD PTR 116[ebp]
593 xor eax, esi
594 xor edx, esi
595 and eax, 0fcfcfcfch
596 and edx, 0cfcfcfcfh
597 mov bl, al
598 mov cl, ah
599 ror edx, 4
600 mov ebp, DWORD PTR _des_SPtrans[ebx]
601 mov bl, dl
602 xor edi, ebp
603 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
604 xor edi, ebp
605 mov cl, dh
606 shr eax, 16
607 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
608 xor edi, ebp
609 mov bl, ah
610 shr edx, 16
611 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
612 xor edi, ebp
613 mov ebp, DWORD PTR 24[esp]
614 mov cl, dh
615 and eax, 0ffh
616 and edx, 0ffh
617 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
618 xor edi, ebx
619 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
620 xor edi, ebx
621 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
622 xor edi, ebx
623 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
624 xor edi, ebx
626 ; Round 15
627 mov eax, DWORD PTR 120[ebp]
628 xor ebx, ebx
629 mov edx, DWORD PTR 124[ebp]
630 xor eax, edi
631 xor edx, edi
632 and eax, 0fcfcfcfch
633 and edx, 0cfcfcfcfh
634 mov bl, al
635 mov cl, ah
636 ror edx, 4
637 mov ebp, DWORD PTR _des_SPtrans[ebx]
638 mov bl, dl
639 xor esi, ebp
640 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
641 xor esi, ebp
642 mov cl, dh
643 shr eax, 16
644 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
645 xor esi, ebp
646 mov bl, ah
647 shr edx, 16
648 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
649 xor esi, ebp
650 mov ebp, DWORD PTR 24[esp]
651 mov cl, dh
652 and eax, 0ffh
653 and edx, 0ffh
654 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
655 xor esi, ebx
656 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
657 xor esi, ebx
658 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
659 xor esi, ebx
660 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
661 xor esi, ebx
662 jmp $L001end
663 $L000start_decrypt:
665 ; Round 15
666 mov eax, DWORD PTR 120[ebp]
667 xor ebx, ebx
668 mov edx, DWORD PTR 124[ebp]
669 xor eax, esi
670 xor edx, esi
671 and eax, 0fcfcfcfch
672 and edx, 0cfcfcfcfh
673 mov bl, al
674 mov cl, ah
675 ror edx, 4
676 mov ebp, DWORD PTR _des_SPtrans[ebx]
677 mov bl, dl
678 xor edi, ebp
679 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
680 xor edi, ebp
681 mov cl, dh
682 shr eax, 16
683 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
684 xor edi, ebp
685 mov bl, ah
686 shr edx, 16
687 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
688 xor edi, ebp
689 mov ebp, DWORD PTR 24[esp]
690 mov cl, dh
691 and eax, 0ffh
692 and edx, 0ffh
693 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
694 xor edi, ebx
695 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
696 xor edi, ebx
697 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
698 xor edi, ebx
699 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
700 xor edi, ebx
702 ; Round 14
703 mov eax, DWORD PTR 112[ebp]
704 xor ebx, ebx
705 mov edx, DWORD PTR 116[ebp]
706 xor eax, edi
707 xor edx, edi
708 and eax, 0fcfcfcfch
709 and edx, 0cfcfcfcfh
710 mov bl, al
711 mov cl, ah
712 ror edx, 4
713 mov ebp, DWORD PTR _des_SPtrans[ebx]
714 mov bl, dl
715 xor esi, ebp
716 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
717 xor esi, ebp
718 mov cl, dh
719 shr eax, 16
720 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
721 xor esi, ebp
722 mov bl, ah
723 shr edx, 16
724 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
725 xor esi, ebp
726 mov ebp, DWORD PTR 24[esp]
727 mov cl, dh
728 and eax, 0ffh
729 and edx, 0ffh
730 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
731 xor esi, ebx
732 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
733 xor esi, ebx
734 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
735 xor esi, ebx
736 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
737 xor esi, ebx
739 ; Round 13
740 mov eax, DWORD PTR 104[ebp]
741 xor ebx, ebx
742 mov edx, DWORD PTR 108[ebp]
743 xor eax, esi
744 xor edx, esi
745 and eax, 0fcfcfcfch
746 and edx, 0cfcfcfcfh
747 mov bl, al
748 mov cl, ah
749 ror edx, 4
750 mov ebp, DWORD PTR _des_SPtrans[ebx]
751 mov bl, dl
752 xor edi, ebp
753 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
754 xor edi, ebp
755 mov cl, dh
756 shr eax, 16
757 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
758 xor edi, ebp
759 mov bl, ah
760 shr edx, 16
761 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
762 xor edi, ebp
763 mov ebp, DWORD PTR 24[esp]
764 mov cl, dh
765 and eax, 0ffh
766 and edx, 0ffh
767 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
768 xor edi, ebx
769 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
770 xor edi, ebx
771 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
772 xor edi, ebx
773 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
774 xor edi, ebx
776 ; Round 12
777 mov eax, DWORD PTR 96[ebp]
778 xor ebx, ebx
779 mov edx, DWORD PTR 100[ebp]
780 xor eax, edi
781 xor edx, edi
782 and eax, 0fcfcfcfch
783 and edx, 0cfcfcfcfh
784 mov bl, al
785 mov cl, ah
786 ror edx, 4
787 mov ebp, DWORD PTR _des_SPtrans[ebx]
788 mov bl, dl
789 xor esi, ebp
790 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
791 xor esi, ebp
792 mov cl, dh
793 shr eax, 16
794 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
795 xor esi, ebp
796 mov bl, ah
797 shr edx, 16
798 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
799 xor esi, ebp
800 mov ebp, DWORD PTR 24[esp]
801 mov cl, dh
802 and eax, 0ffh
803 and edx, 0ffh
804 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
805 xor esi, ebx
806 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
807 xor esi, ebx
808 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
809 xor esi, ebx
810 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
811 xor esi, ebx
813 ; Round 11
814 mov eax, DWORD PTR 88[ebp]
815 xor ebx, ebx
816 mov edx, DWORD PTR 92[ebp]
817 xor eax, esi
818 xor edx, esi
819 and eax, 0fcfcfcfch
820 and edx, 0cfcfcfcfh
821 mov bl, al
822 mov cl, ah
823 ror edx, 4
824 mov ebp, DWORD PTR _des_SPtrans[ebx]
825 mov bl, dl
826 xor edi, ebp
827 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
828 xor edi, ebp
829 mov cl, dh
830 shr eax, 16
831 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
832 xor edi, ebp
833 mov bl, ah
834 shr edx, 16
835 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
836 xor edi, ebp
837 mov ebp, DWORD PTR 24[esp]
838 mov cl, dh
839 and eax, 0ffh
840 and edx, 0ffh
841 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
842 xor edi, ebx
843 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
844 xor edi, ebx
845 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
846 xor edi, ebx
847 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
848 xor edi, ebx
850 ; Round 10
851 mov eax, DWORD PTR 80[ebp]
852 xor ebx, ebx
853 mov edx, DWORD PTR 84[ebp]
854 xor eax, edi
855 xor edx, edi
856 and eax, 0fcfcfcfch
857 and edx, 0cfcfcfcfh
858 mov bl, al
859 mov cl, ah
860 ror edx, 4
861 mov ebp, DWORD PTR _des_SPtrans[ebx]
862 mov bl, dl
863 xor esi, ebp
864 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
865 xor esi, ebp
866 mov cl, dh
867 shr eax, 16
868 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
869 xor esi, ebp
870 mov bl, ah
871 shr edx, 16
872 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
873 xor esi, ebp
874 mov ebp, DWORD PTR 24[esp]
875 mov cl, dh
876 and eax, 0ffh
877 and edx, 0ffh
878 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
879 xor esi, ebx
880 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
881 xor esi, ebx
882 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
883 xor esi, ebx
884 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
885 xor esi, ebx
887 ; Round 9
888 mov eax, DWORD PTR 72[ebp]
889 xor ebx, ebx
890 mov edx, DWORD PTR 76[ebp]
891 xor eax, esi
892 xor edx, esi
893 and eax, 0fcfcfcfch
894 and edx, 0cfcfcfcfh
895 mov bl, al
896 mov cl, ah
897 ror edx, 4
898 mov ebp, DWORD PTR _des_SPtrans[ebx]
899 mov bl, dl
900 xor edi, ebp
901 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
902 xor edi, ebp
903 mov cl, dh
904 shr eax, 16
905 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
906 xor edi, ebp
907 mov bl, ah
908 shr edx, 16
909 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
910 xor edi, ebp
911 mov ebp, DWORD PTR 24[esp]
912 mov cl, dh
913 and eax, 0ffh
914 and edx, 0ffh
915 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
916 xor edi, ebx
917 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
918 xor edi, ebx
919 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
920 xor edi, ebx
921 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
922 xor edi, ebx
924 ; Round 8
925 mov eax, DWORD PTR 64[ebp]
926 xor ebx, ebx
927 mov edx, DWORD PTR 68[ebp]
928 xor eax, edi
929 xor edx, edi
930 and eax, 0fcfcfcfch
931 and edx, 0cfcfcfcfh
932 mov bl, al
933 mov cl, ah
934 ror edx, 4
935 mov ebp, DWORD PTR _des_SPtrans[ebx]
936 mov bl, dl
937 xor esi, ebp
938 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
939 xor esi, ebp
940 mov cl, dh
941 shr eax, 16
942 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
943 xor esi, ebp
944 mov bl, ah
945 shr edx, 16
946 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
947 xor esi, ebp
948 mov ebp, DWORD PTR 24[esp]
949 mov cl, dh
950 and eax, 0ffh
951 and edx, 0ffh
952 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
953 xor esi, ebx
954 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
955 xor esi, ebx
956 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
957 xor esi, ebx
958 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
959 xor esi, ebx
961 ; Round 7
962 mov eax, DWORD PTR 56[ebp]
963 xor ebx, ebx
964 mov edx, DWORD PTR 60[ebp]
965 xor eax, esi
966 xor edx, esi
967 and eax, 0fcfcfcfch
968 and edx, 0cfcfcfcfh
969 mov bl, al
970 mov cl, ah
971 ror edx, 4
972 mov ebp, DWORD PTR _des_SPtrans[ebx]
973 mov bl, dl
974 xor edi, ebp
975 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
976 xor edi, ebp
977 mov cl, dh
978 shr eax, 16
979 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
980 xor edi, ebp
981 mov bl, ah
982 shr edx, 16
983 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
984 xor edi, ebp
985 mov ebp, DWORD PTR 24[esp]
986 mov cl, dh
987 and eax, 0ffh
988 and edx, 0ffh
989 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
990 xor edi, ebx
991 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
992 xor edi, ebx
993 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
994 xor edi, ebx
995 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
996 xor edi, ebx
998 ; Round 6
999 mov eax, DWORD PTR 48[ebp]
1000 xor ebx, ebx
1001 mov edx, DWORD PTR 52[ebp]
1002 xor eax, edi
1003 xor edx, edi
1004 and eax, 0fcfcfcfch
1005 and edx, 0cfcfcfcfh
1006 mov bl, al
1007 mov cl, ah
1008 ror edx, 4
1009 mov ebp, DWORD PTR _des_SPtrans[ebx]
1010 mov bl, dl
1011 xor esi, ebp
1012 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1013 xor esi, ebp
1014 mov cl, dh
1015 shr eax, 16
1016 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1017 xor esi, ebp
1018 mov bl, ah
1019 shr edx, 16
1020 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1021 xor esi, ebp
1022 mov ebp, DWORD PTR 24[esp]
1023 mov cl, dh
1024 and eax, 0ffh
1025 and edx, 0ffh
1026 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1027 xor esi, ebx
1028 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1029 xor esi, ebx
1030 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1031 xor esi, ebx
1032 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1033 xor esi, ebx
1035 ; Round 5
1036 mov eax, DWORD PTR 40[ebp]
1037 xor ebx, ebx
1038 mov edx, DWORD PTR 44[ebp]
1039 xor eax, esi
1040 xor edx, esi
1041 and eax, 0fcfcfcfch
1042 and edx, 0cfcfcfcfh
1043 mov bl, al
1044 mov cl, ah
1045 ror edx, 4
1046 mov ebp, DWORD PTR _des_SPtrans[ebx]
1047 mov bl, dl
1048 xor edi, ebp
1049 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1050 xor edi, ebp
1051 mov cl, dh
1052 shr eax, 16
1053 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1054 xor edi, ebp
1055 mov bl, ah
1056 shr edx, 16
1057 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1058 xor edi, ebp
1059 mov ebp, DWORD PTR 24[esp]
1060 mov cl, dh
1061 and eax, 0ffh
1062 and edx, 0ffh
1063 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1064 xor edi, ebx
1065 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1066 xor edi, ebx
1067 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1068 xor edi, ebx
1069 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1070 xor edi, ebx
1072 ; Round 4
1073 mov eax, DWORD PTR 32[ebp]
1074 xor ebx, ebx
1075 mov edx, DWORD PTR 36[ebp]
1076 xor eax, edi
1077 xor edx, edi
1078 and eax, 0fcfcfcfch
1079 and edx, 0cfcfcfcfh
1080 mov bl, al
1081 mov cl, ah
1082 ror edx, 4
1083 mov ebp, DWORD PTR _des_SPtrans[ebx]
1084 mov bl, dl
1085 xor esi, ebp
1086 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1087 xor esi, ebp
1088 mov cl, dh
1089 shr eax, 16
1090 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1091 xor esi, ebp
1092 mov bl, ah
1093 shr edx, 16
1094 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1095 xor esi, ebp
1096 mov ebp, DWORD PTR 24[esp]
1097 mov cl, dh
1098 and eax, 0ffh
1099 and edx, 0ffh
1100 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1101 xor esi, ebx
1102 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1103 xor esi, ebx
1104 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1105 xor esi, ebx
1106 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1107 xor esi, ebx
1109 ; Round 3
1110 mov eax, DWORD PTR 24[ebp]
1111 xor ebx, ebx
1112 mov edx, DWORD PTR 28[ebp]
1113 xor eax, esi
1114 xor edx, esi
1115 and eax, 0fcfcfcfch
1116 and edx, 0cfcfcfcfh
1117 mov bl, al
1118 mov cl, ah
1119 ror edx, 4
1120 mov ebp, DWORD PTR _des_SPtrans[ebx]
1121 mov bl, dl
1122 xor edi, ebp
1123 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1124 xor edi, ebp
1125 mov cl, dh
1126 shr eax, 16
1127 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1128 xor edi, ebp
1129 mov bl, ah
1130 shr edx, 16
1131 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1132 xor edi, ebp
1133 mov ebp, DWORD PTR 24[esp]
1134 mov cl, dh
1135 and eax, 0ffh
1136 and edx, 0ffh
1137 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1138 xor edi, ebx
1139 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1140 xor edi, ebx
1141 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1142 xor edi, ebx
1143 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1144 xor edi, ebx
1146 ; Round 2
1147 mov eax, DWORD PTR 16[ebp]
1148 xor ebx, ebx
1149 mov edx, DWORD PTR 20[ebp]
1150 xor eax, edi
1151 xor edx, edi
1152 and eax, 0fcfcfcfch
1153 and edx, 0cfcfcfcfh
1154 mov bl, al
1155 mov cl, ah
1156 ror edx, 4
1157 mov ebp, DWORD PTR _des_SPtrans[ebx]
1158 mov bl, dl
1159 xor esi, ebp
1160 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1161 xor esi, ebp
1162 mov cl, dh
1163 shr eax, 16
1164 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1165 xor esi, ebp
1166 mov bl, ah
1167 shr edx, 16
1168 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1169 xor esi, ebp
1170 mov ebp, DWORD PTR 24[esp]
1171 mov cl, dh
1172 and eax, 0ffh
1173 and edx, 0ffh
1174 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1175 xor esi, ebx
1176 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1177 xor esi, ebx
1178 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1179 xor esi, ebx
1180 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1181 xor esi, ebx
1183 ; Round 1
1184 mov eax, DWORD PTR 8[ebp]
1185 xor ebx, ebx
1186 mov edx, DWORD PTR 12[ebp]
1187 xor eax, esi
1188 xor edx, esi
1189 and eax, 0fcfcfcfch
1190 and edx, 0cfcfcfcfh
1191 mov bl, al
1192 mov cl, ah
1193 ror edx, 4
1194 mov ebp, DWORD PTR _des_SPtrans[ebx]
1195 mov bl, dl
1196 xor edi, ebp
1197 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1198 xor edi, ebp
1199 mov cl, dh
1200 shr eax, 16
1201 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1202 xor edi, ebp
1203 mov bl, ah
1204 shr edx, 16
1205 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1206 xor edi, ebp
1207 mov ebp, DWORD PTR 24[esp]
1208 mov cl, dh
1209 and eax, 0ffh
1210 and edx, 0ffh
1211 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1212 xor edi, ebx
1213 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1214 xor edi, ebx
1215 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1216 xor edi, ebx
1217 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1218 xor edi, ebx
1220 ; Round 0
1221 mov eax, DWORD PTR [ebp]
1222 xor ebx, ebx
1223 mov edx, DWORD PTR 4[ebp]
1224 xor eax, edi
1225 xor edx, edi
1226 and eax, 0fcfcfcfch
1227 and edx, 0cfcfcfcfh
1228 mov bl, al
1229 mov cl, ah
1230 ror edx, 4
1231 mov ebp, DWORD PTR _des_SPtrans[ebx]
1232 mov bl, dl
1233 xor esi, ebp
1234 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1235 xor esi, ebp
1236 mov cl, dh
1237 shr eax, 16
1238 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1239 xor esi, ebp
1240 mov bl, ah
1241 shr edx, 16
1242 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1243 xor esi, ebp
1244 mov ebp, DWORD PTR 24[esp]
1245 mov cl, dh
1246 and eax, 0ffh
1247 and edx, 0ffh
1248 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1249 xor esi, ebx
1250 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1251 xor esi, ebx
1252 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1253 xor esi, ebx
1254 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1255 xor esi, ebx
1256 $L001end:
1258 ; FP
1259 mov edx, DWORD PTR 20[esp]
1260 ror esi, 1
1261 mov eax, edi
1262 xor edi, esi
1263 and edi, 0aaaaaaaah
1264 xor eax, edi
1265 xor esi, edi
1267 rol eax, 23
1268 mov edi, eax
1269 xor eax, esi
1270 and eax, 003fc03fch
1271 xor edi, eax
1272 xor esi, eax
1274 rol edi, 10
1275 mov eax, edi
1276 xor edi, esi
1277 and edi, 033333333h
1278 xor eax, edi
1279 xor esi, edi
1281 rol esi, 18
1282 mov edi, esi
1283 xor esi, eax
1284 and esi, 0fff0000fh
1285 xor edi, esi
1286 xor eax, esi
1288 rol edi, 12
1289 mov esi, edi
1290 xor edi, eax
1291 and edi, 0f0f0f0f0h
1292 xor esi, edi
1293 xor eax, edi
1295 ror eax, 4
1296 mov DWORD PTR [edx],eax
1297 mov DWORD PTR 4[edx],esi
1298 pop edi
1299 pop esi
1300 pop ebx
1301 pop ebp
1303 _des_encrypt ENDP
1304 _TEXT ENDS
1305 _TEXT SEGMENT
1306 PUBLIC _des_encrypt2
1307 EXTRN _des_SPtrans:DWORD
1308 _des_encrypt2 PROC NEAR
1309 push ebp
1310 push ebx
1311 push esi
1312 push edi
1314 ; Load the 2 words
1315 mov eax, DWORD PTR 20[esp]
1316 xor ecx, ecx
1317 mov esi, DWORD PTR [eax]
1318 mov ebx, DWORD PTR 28[esp]
1319 rol esi, 3
1320 mov edi, DWORD PTR 4[eax]
1321 rol edi, 3
1322 cmp ebx, 0
1323 mov ebp, DWORD PTR 24[esp]
1324 je $L002start_decrypt
1326 ; Round 0
1327 mov eax, DWORD PTR [ebp]
1328 xor ebx, ebx
1329 mov edx, DWORD PTR 4[ebp]
1330 xor eax, esi
1331 xor edx, esi
1332 and eax, 0fcfcfcfch
1333 and edx, 0cfcfcfcfh
1334 mov bl, al
1335 mov cl, ah
1336 ror edx, 4
1337 mov ebp, DWORD PTR _des_SPtrans[ebx]
1338 mov bl, dl
1339 xor edi, ebp
1340 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1341 xor edi, ebp
1342 mov cl, dh
1343 shr eax, 16
1344 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1345 xor edi, ebp
1346 mov bl, ah
1347 shr edx, 16
1348 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1349 xor edi, ebp
1350 mov ebp, DWORD PTR 24[esp]
1351 mov cl, dh
1352 and eax, 0ffh
1353 and edx, 0ffh
1354 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1355 xor edi, ebx
1356 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1357 xor edi, ebx
1358 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1359 xor edi, ebx
1360 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1361 xor edi, ebx
1363 ; Round 1
1364 mov eax, DWORD PTR 8[ebp]
1365 xor ebx, ebx
1366 mov edx, DWORD PTR 12[ebp]
1367 xor eax, edi
1368 xor edx, edi
1369 and eax, 0fcfcfcfch
1370 and edx, 0cfcfcfcfh
1371 mov bl, al
1372 mov cl, ah
1373 ror edx, 4
1374 mov ebp, DWORD PTR _des_SPtrans[ebx]
1375 mov bl, dl
1376 xor esi, ebp
1377 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1378 xor esi, ebp
1379 mov cl, dh
1380 shr eax, 16
1381 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1382 xor esi, ebp
1383 mov bl, ah
1384 shr edx, 16
1385 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1386 xor esi, ebp
1387 mov ebp, DWORD PTR 24[esp]
1388 mov cl, dh
1389 and eax, 0ffh
1390 and edx, 0ffh
1391 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1392 xor esi, ebx
1393 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1394 xor esi, ebx
1395 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1396 xor esi, ebx
1397 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1398 xor esi, ebx
1400 ; Round 2
1401 mov eax, DWORD PTR 16[ebp]
1402 xor ebx, ebx
1403 mov edx, DWORD PTR 20[ebp]
1404 xor eax, esi
1405 xor edx, esi
1406 and eax, 0fcfcfcfch
1407 and edx, 0cfcfcfcfh
1408 mov bl, al
1409 mov cl, ah
1410 ror edx, 4
1411 mov ebp, DWORD PTR _des_SPtrans[ebx]
1412 mov bl, dl
1413 xor edi, ebp
1414 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1415 xor edi, ebp
1416 mov cl, dh
1417 shr eax, 16
1418 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1419 xor edi, ebp
1420 mov bl, ah
1421 shr edx, 16
1422 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1423 xor edi, ebp
1424 mov ebp, DWORD PTR 24[esp]
1425 mov cl, dh
1426 and eax, 0ffh
1427 and edx, 0ffh
1428 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1429 xor edi, ebx
1430 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1431 xor edi, ebx
1432 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1433 xor edi, ebx
1434 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1435 xor edi, ebx
1437 ; Round 3
1438 mov eax, DWORD PTR 24[ebp]
1439 xor ebx, ebx
1440 mov edx, DWORD PTR 28[ebp]
1441 xor eax, edi
1442 xor edx, edi
1443 and eax, 0fcfcfcfch
1444 and edx, 0cfcfcfcfh
1445 mov bl, al
1446 mov cl, ah
1447 ror edx, 4
1448 mov ebp, DWORD PTR _des_SPtrans[ebx]
1449 mov bl, dl
1450 xor esi, ebp
1451 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1452 xor esi, ebp
1453 mov cl, dh
1454 shr eax, 16
1455 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1456 xor esi, ebp
1457 mov bl, ah
1458 shr edx, 16
1459 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1460 xor esi, ebp
1461 mov ebp, DWORD PTR 24[esp]
1462 mov cl, dh
1463 and eax, 0ffh
1464 and edx, 0ffh
1465 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1466 xor esi, ebx
1467 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1468 xor esi, ebx
1469 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1470 xor esi, ebx
1471 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1472 xor esi, ebx
1474 ; Round 4
1475 mov eax, DWORD PTR 32[ebp]
1476 xor ebx, ebx
1477 mov edx, DWORD PTR 36[ebp]
1478 xor eax, esi
1479 xor edx, esi
1480 and eax, 0fcfcfcfch
1481 and edx, 0cfcfcfcfh
1482 mov bl, al
1483 mov cl, ah
1484 ror edx, 4
1485 mov ebp, DWORD PTR _des_SPtrans[ebx]
1486 mov bl, dl
1487 xor edi, ebp
1488 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1489 xor edi, ebp
1490 mov cl, dh
1491 shr eax, 16
1492 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1493 xor edi, ebp
1494 mov bl, ah
1495 shr edx, 16
1496 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1497 xor edi, ebp
1498 mov ebp, DWORD PTR 24[esp]
1499 mov cl, dh
1500 and eax, 0ffh
1501 and edx, 0ffh
1502 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1503 xor edi, ebx
1504 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1505 xor edi, ebx
1506 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1507 xor edi, ebx
1508 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1509 xor edi, ebx
1511 ; Round 5
1512 mov eax, DWORD PTR 40[ebp]
1513 xor ebx, ebx
1514 mov edx, DWORD PTR 44[ebp]
1515 xor eax, edi
1516 xor edx, edi
1517 and eax, 0fcfcfcfch
1518 and edx, 0cfcfcfcfh
1519 mov bl, al
1520 mov cl, ah
1521 ror edx, 4
1522 mov ebp, DWORD PTR _des_SPtrans[ebx]
1523 mov bl, dl
1524 xor esi, ebp
1525 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1526 xor esi, ebp
1527 mov cl, dh
1528 shr eax, 16
1529 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1530 xor esi, ebp
1531 mov bl, ah
1532 shr edx, 16
1533 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1534 xor esi, ebp
1535 mov ebp, DWORD PTR 24[esp]
1536 mov cl, dh
1537 and eax, 0ffh
1538 and edx, 0ffh
1539 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1540 xor esi, ebx
1541 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1542 xor esi, ebx
1543 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1544 xor esi, ebx
1545 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1546 xor esi, ebx
1548 ; Round 6
1549 mov eax, DWORD PTR 48[ebp]
1550 xor ebx, ebx
1551 mov edx, DWORD PTR 52[ebp]
1552 xor eax, esi
1553 xor edx, esi
1554 and eax, 0fcfcfcfch
1555 and edx, 0cfcfcfcfh
1556 mov bl, al
1557 mov cl, ah
1558 ror edx, 4
1559 mov ebp, DWORD PTR _des_SPtrans[ebx]
1560 mov bl, dl
1561 xor edi, ebp
1562 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1563 xor edi, ebp
1564 mov cl, dh
1565 shr eax, 16
1566 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1567 xor edi, ebp
1568 mov bl, ah
1569 shr edx, 16
1570 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1571 xor edi, ebp
1572 mov ebp, DWORD PTR 24[esp]
1573 mov cl, dh
1574 and eax, 0ffh
1575 and edx, 0ffh
1576 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1577 xor edi, ebx
1578 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1579 xor edi, ebx
1580 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1581 xor edi, ebx
1582 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1583 xor edi, ebx
1585 ; Round 7
1586 mov eax, DWORD PTR 56[ebp]
1587 xor ebx, ebx
1588 mov edx, DWORD PTR 60[ebp]
1589 xor eax, edi
1590 xor edx, edi
1591 and eax, 0fcfcfcfch
1592 and edx, 0cfcfcfcfh
1593 mov bl, al
1594 mov cl, ah
1595 ror edx, 4
1596 mov ebp, DWORD PTR _des_SPtrans[ebx]
1597 mov bl, dl
1598 xor esi, ebp
1599 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1600 xor esi, ebp
1601 mov cl, dh
1602 shr eax, 16
1603 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1604 xor esi, ebp
1605 mov bl, ah
1606 shr edx, 16
1607 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1608 xor esi, ebp
1609 mov ebp, DWORD PTR 24[esp]
1610 mov cl, dh
1611 and eax, 0ffh
1612 and edx, 0ffh
1613 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1614 xor esi, ebx
1615 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1616 xor esi, ebx
1617 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1618 xor esi, ebx
1619 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1620 xor esi, ebx
1622 ; Round 8
1623 mov eax, DWORD PTR 64[ebp]
1624 xor ebx, ebx
1625 mov edx, DWORD PTR 68[ebp]
1626 xor eax, esi
1627 xor edx, esi
1628 and eax, 0fcfcfcfch
1629 and edx, 0cfcfcfcfh
1630 mov bl, al
1631 mov cl, ah
1632 ror edx, 4
1633 mov ebp, DWORD PTR _des_SPtrans[ebx]
1634 mov bl, dl
1635 xor edi, ebp
1636 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1637 xor edi, ebp
1638 mov cl, dh
1639 shr eax, 16
1640 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1641 xor edi, ebp
1642 mov bl, ah
1643 shr edx, 16
1644 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1645 xor edi, ebp
1646 mov ebp, DWORD PTR 24[esp]
1647 mov cl, dh
1648 and eax, 0ffh
1649 and edx, 0ffh
1650 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1651 xor edi, ebx
1652 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1653 xor edi, ebx
1654 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1655 xor edi, ebx
1656 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1657 xor edi, ebx
1659 ; Round 9
1660 mov eax, DWORD PTR 72[ebp]
1661 xor ebx, ebx
1662 mov edx, DWORD PTR 76[ebp]
1663 xor eax, edi
1664 xor edx, edi
1665 and eax, 0fcfcfcfch
1666 and edx, 0cfcfcfcfh
1667 mov bl, al
1668 mov cl, ah
1669 ror edx, 4
1670 mov ebp, DWORD PTR _des_SPtrans[ebx]
1671 mov bl, dl
1672 xor esi, ebp
1673 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1674 xor esi, ebp
1675 mov cl, dh
1676 shr eax, 16
1677 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1678 xor esi, ebp
1679 mov bl, ah
1680 shr edx, 16
1681 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1682 xor esi, ebp
1683 mov ebp, DWORD PTR 24[esp]
1684 mov cl, dh
1685 and eax, 0ffh
1686 and edx, 0ffh
1687 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1688 xor esi, ebx
1689 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1690 xor esi, ebx
1691 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1692 xor esi, ebx
1693 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1694 xor esi, ebx
1696 ; Round 10
1697 mov eax, DWORD PTR 80[ebp]
1698 xor ebx, ebx
1699 mov edx, DWORD PTR 84[ebp]
1700 xor eax, esi
1701 xor edx, esi
1702 and eax, 0fcfcfcfch
1703 and edx, 0cfcfcfcfh
1704 mov bl, al
1705 mov cl, ah
1706 ror edx, 4
1707 mov ebp, DWORD PTR _des_SPtrans[ebx]
1708 mov bl, dl
1709 xor edi, ebp
1710 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1711 xor edi, ebp
1712 mov cl, dh
1713 shr eax, 16
1714 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1715 xor edi, ebp
1716 mov bl, ah
1717 shr edx, 16
1718 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1719 xor edi, ebp
1720 mov ebp, DWORD PTR 24[esp]
1721 mov cl, dh
1722 and eax, 0ffh
1723 and edx, 0ffh
1724 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1725 xor edi, ebx
1726 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1727 xor edi, ebx
1728 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1729 xor edi, ebx
1730 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1731 xor edi, ebx
1733 ; Round 11
1734 mov eax, DWORD PTR 88[ebp]
1735 xor ebx, ebx
1736 mov edx, DWORD PTR 92[ebp]
1737 xor eax, edi
1738 xor edx, edi
1739 and eax, 0fcfcfcfch
1740 and edx, 0cfcfcfcfh
1741 mov bl, al
1742 mov cl, ah
1743 ror edx, 4
1744 mov ebp, DWORD PTR _des_SPtrans[ebx]
1745 mov bl, dl
1746 xor esi, ebp
1747 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1748 xor esi, ebp
1749 mov cl, dh
1750 shr eax, 16
1751 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1752 xor esi, ebp
1753 mov bl, ah
1754 shr edx, 16
1755 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1756 xor esi, ebp
1757 mov ebp, DWORD PTR 24[esp]
1758 mov cl, dh
1759 and eax, 0ffh
1760 and edx, 0ffh
1761 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1762 xor esi, ebx
1763 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1764 xor esi, ebx
1765 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1766 xor esi, ebx
1767 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1768 xor esi, ebx
1770 ; Round 12
1771 mov eax, DWORD PTR 96[ebp]
1772 xor ebx, ebx
1773 mov edx, DWORD PTR 100[ebp]
1774 xor eax, esi
1775 xor edx, esi
1776 and eax, 0fcfcfcfch
1777 and edx, 0cfcfcfcfh
1778 mov bl, al
1779 mov cl, ah
1780 ror edx, 4
1781 mov ebp, DWORD PTR _des_SPtrans[ebx]
1782 mov bl, dl
1783 xor edi, ebp
1784 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1785 xor edi, ebp
1786 mov cl, dh
1787 shr eax, 16
1788 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1789 xor edi, ebp
1790 mov bl, ah
1791 shr edx, 16
1792 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1793 xor edi, ebp
1794 mov ebp, DWORD PTR 24[esp]
1795 mov cl, dh
1796 and eax, 0ffh
1797 and edx, 0ffh
1798 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1799 xor edi, ebx
1800 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1801 xor edi, ebx
1802 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1803 xor edi, ebx
1804 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1805 xor edi, ebx
1807 ; Round 13
1808 mov eax, DWORD PTR 104[ebp]
1809 xor ebx, ebx
1810 mov edx, DWORD PTR 108[ebp]
1811 xor eax, edi
1812 xor edx, edi
1813 and eax, 0fcfcfcfch
1814 and edx, 0cfcfcfcfh
1815 mov bl, al
1816 mov cl, ah
1817 ror edx, 4
1818 mov ebp, DWORD PTR _des_SPtrans[ebx]
1819 mov bl, dl
1820 xor esi, ebp
1821 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1822 xor esi, ebp
1823 mov cl, dh
1824 shr eax, 16
1825 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1826 xor esi, ebp
1827 mov bl, ah
1828 shr edx, 16
1829 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1830 xor esi, ebp
1831 mov ebp, DWORD PTR 24[esp]
1832 mov cl, dh
1833 and eax, 0ffh
1834 and edx, 0ffh
1835 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1836 xor esi, ebx
1837 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1838 xor esi, ebx
1839 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1840 xor esi, ebx
1841 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1842 xor esi, ebx
1844 ; Round 14
1845 mov eax, DWORD PTR 112[ebp]
1846 xor ebx, ebx
1847 mov edx, DWORD PTR 116[ebp]
1848 xor eax, esi
1849 xor edx, esi
1850 and eax, 0fcfcfcfch
1851 and edx, 0cfcfcfcfh
1852 mov bl, al
1853 mov cl, ah
1854 ror edx, 4
1855 mov ebp, DWORD PTR _des_SPtrans[ebx]
1856 mov bl, dl
1857 xor edi, ebp
1858 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1859 xor edi, ebp
1860 mov cl, dh
1861 shr eax, 16
1862 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1863 xor edi, ebp
1864 mov bl, ah
1865 shr edx, 16
1866 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1867 xor edi, ebp
1868 mov ebp, DWORD PTR 24[esp]
1869 mov cl, dh
1870 and eax, 0ffh
1871 and edx, 0ffh
1872 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1873 xor edi, ebx
1874 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1875 xor edi, ebx
1876 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1877 xor edi, ebx
1878 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1879 xor edi, ebx
1881 ; Round 15
1882 mov eax, DWORD PTR 120[ebp]
1883 xor ebx, ebx
1884 mov edx, DWORD PTR 124[ebp]
1885 xor eax, edi
1886 xor edx, edi
1887 and eax, 0fcfcfcfch
1888 and edx, 0cfcfcfcfh
1889 mov bl, al
1890 mov cl, ah
1891 ror edx, 4
1892 mov ebp, DWORD PTR _des_SPtrans[ebx]
1893 mov bl, dl
1894 xor esi, ebp
1895 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1896 xor esi, ebp
1897 mov cl, dh
1898 shr eax, 16
1899 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1900 xor esi, ebp
1901 mov bl, ah
1902 shr edx, 16
1903 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1904 xor esi, ebp
1905 mov ebp, DWORD PTR 24[esp]
1906 mov cl, dh
1907 and eax, 0ffh
1908 and edx, 0ffh
1909 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1910 xor esi, ebx
1911 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1912 xor esi, ebx
1913 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1914 xor esi, ebx
1915 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1916 xor esi, ebx
1917 jmp $L003end
1918 $L002start_decrypt:
1920 ; Round 15
1921 mov eax, DWORD PTR 120[ebp]
1922 xor ebx, ebx
1923 mov edx, DWORD PTR 124[ebp]
1924 xor eax, esi
1925 xor edx, esi
1926 and eax, 0fcfcfcfch
1927 and edx, 0cfcfcfcfh
1928 mov bl, al
1929 mov cl, ah
1930 ror edx, 4
1931 mov ebp, DWORD PTR _des_SPtrans[ebx]
1932 mov bl, dl
1933 xor edi, ebp
1934 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1935 xor edi, ebp
1936 mov cl, dh
1937 shr eax, 16
1938 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1939 xor edi, ebp
1940 mov bl, ah
1941 shr edx, 16
1942 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1943 xor edi, ebp
1944 mov ebp, DWORD PTR 24[esp]
1945 mov cl, dh
1946 and eax, 0ffh
1947 and edx, 0ffh
1948 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1949 xor edi, ebx
1950 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1951 xor edi, ebx
1952 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1953 xor edi, ebx
1954 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1955 xor edi, ebx
1957 ; Round 14
1958 mov eax, DWORD PTR 112[ebp]
1959 xor ebx, ebx
1960 mov edx, DWORD PTR 116[ebp]
1961 xor eax, edi
1962 xor edx, edi
1963 and eax, 0fcfcfcfch
1964 and edx, 0cfcfcfcfh
1965 mov bl, al
1966 mov cl, ah
1967 ror edx, 4
1968 mov ebp, DWORD PTR _des_SPtrans[ebx]
1969 mov bl, dl
1970 xor esi, ebp
1971 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
1972 xor esi, ebp
1973 mov cl, dh
1974 shr eax, 16
1975 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
1976 xor esi, ebp
1977 mov bl, ah
1978 shr edx, 16
1979 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
1980 xor esi, ebp
1981 mov ebp, DWORD PTR 24[esp]
1982 mov cl, dh
1983 and eax, 0ffh
1984 and edx, 0ffh
1985 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
1986 xor esi, ebx
1987 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
1988 xor esi, ebx
1989 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
1990 xor esi, ebx
1991 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
1992 xor esi, ebx
1994 ; Round 13
1995 mov eax, DWORD PTR 104[ebp]
1996 xor ebx, ebx
1997 mov edx, DWORD PTR 108[ebp]
1998 xor eax, esi
1999 xor edx, esi
2000 and eax, 0fcfcfcfch
2001 and edx, 0cfcfcfcfh
2002 mov bl, al
2003 mov cl, ah
2004 ror edx, 4
2005 mov ebp, DWORD PTR _des_SPtrans[ebx]
2006 mov bl, dl
2007 xor edi, ebp
2008 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2009 xor edi, ebp
2010 mov cl, dh
2011 shr eax, 16
2012 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2013 xor edi, ebp
2014 mov bl, ah
2015 shr edx, 16
2016 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2017 xor edi, ebp
2018 mov ebp, DWORD PTR 24[esp]
2019 mov cl, dh
2020 and eax, 0ffh
2021 and edx, 0ffh
2022 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2023 xor edi, ebx
2024 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2025 xor edi, ebx
2026 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2027 xor edi, ebx
2028 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2029 xor edi, ebx
2031 ; Round 12
2032 mov eax, DWORD PTR 96[ebp]
2033 xor ebx, ebx
2034 mov edx, DWORD PTR 100[ebp]
2035 xor eax, edi
2036 xor edx, edi
2037 and eax, 0fcfcfcfch
2038 and edx, 0cfcfcfcfh
2039 mov bl, al
2040 mov cl, ah
2041 ror edx, 4
2042 mov ebp, DWORD PTR _des_SPtrans[ebx]
2043 mov bl, dl
2044 xor esi, ebp
2045 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2046 xor esi, ebp
2047 mov cl, dh
2048 shr eax, 16
2049 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2050 xor esi, ebp
2051 mov bl, ah
2052 shr edx, 16
2053 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2054 xor esi, ebp
2055 mov ebp, DWORD PTR 24[esp]
2056 mov cl, dh
2057 and eax, 0ffh
2058 and edx, 0ffh
2059 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2060 xor esi, ebx
2061 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2062 xor esi, ebx
2063 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2064 xor esi, ebx
2065 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2066 xor esi, ebx
2068 ; Round 11
2069 mov eax, DWORD PTR 88[ebp]
2070 xor ebx, ebx
2071 mov edx, DWORD PTR 92[ebp]
2072 xor eax, esi
2073 xor edx, esi
2074 and eax, 0fcfcfcfch
2075 and edx, 0cfcfcfcfh
2076 mov bl, al
2077 mov cl, ah
2078 ror edx, 4
2079 mov ebp, DWORD PTR _des_SPtrans[ebx]
2080 mov bl, dl
2081 xor edi, ebp
2082 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2083 xor edi, ebp
2084 mov cl, dh
2085 shr eax, 16
2086 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2087 xor edi, ebp
2088 mov bl, ah
2089 shr edx, 16
2090 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2091 xor edi, ebp
2092 mov ebp, DWORD PTR 24[esp]
2093 mov cl, dh
2094 and eax, 0ffh
2095 and edx, 0ffh
2096 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2097 xor edi, ebx
2098 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2099 xor edi, ebx
2100 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2101 xor edi, ebx
2102 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2103 xor edi, ebx
2105 ; Round 10
2106 mov eax, DWORD PTR 80[ebp]
2107 xor ebx, ebx
2108 mov edx, DWORD PTR 84[ebp]
2109 xor eax, edi
2110 xor edx, edi
2111 and eax, 0fcfcfcfch
2112 and edx, 0cfcfcfcfh
2113 mov bl, al
2114 mov cl, ah
2115 ror edx, 4
2116 mov ebp, DWORD PTR _des_SPtrans[ebx]
2117 mov bl, dl
2118 xor esi, ebp
2119 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2120 xor esi, ebp
2121 mov cl, dh
2122 shr eax, 16
2123 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2124 xor esi, ebp
2125 mov bl, ah
2126 shr edx, 16
2127 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2128 xor esi, ebp
2129 mov ebp, DWORD PTR 24[esp]
2130 mov cl, dh
2131 and eax, 0ffh
2132 and edx, 0ffh
2133 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2134 xor esi, ebx
2135 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2136 xor esi, ebx
2137 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2138 xor esi, ebx
2139 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2140 xor esi, ebx
2142 ; Round 9
2143 mov eax, DWORD PTR 72[ebp]
2144 xor ebx, ebx
2145 mov edx, DWORD PTR 76[ebp]
2146 xor eax, esi
2147 xor edx, esi
2148 and eax, 0fcfcfcfch
2149 and edx, 0cfcfcfcfh
2150 mov bl, al
2151 mov cl, ah
2152 ror edx, 4
2153 mov ebp, DWORD PTR _des_SPtrans[ebx]
2154 mov bl, dl
2155 xor edi, ebp
2156 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2157 xor edi, ebp
2158 mov cl, dh
2159 shr eax, 16
2160 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2161 xor edi, ebp
2162 mov bl, ah
2163 shr edx, 16
2164 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2165 xor edi, ebp
2166 mov ebp, DWORD PTR 24[esp]
2167 mov cl, dh
2168 and eax, 0ffh
2169 and edx, 0ffh
2170 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2171 xor edi, ebx
2172 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2173 xor edi, ebx
2174 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2175 xor edi, ebx
2176 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2177 xor edi, ebx
2179 ; Round 8
2180 mov eax, DWORD PTR 64[ebp]
2181 xor ebx, ebx
2182 mov edx, DWORD PTR 68[ebp]
2183 xor eax, edi
2184 xor edx, edi
2185 and eax, 0fcfcfcfch
2186 and edx, 0cfcfcfcfh
2187 mov bl, al
2188 mov cl, ah
2189 ror edx, 4
2190 mov ebp, DWORD PTR _des_SPtrans[ebx]
2191 mov bl, dl
2192 xor esi, ebp
2193 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2194 xor esi, ebp
2195 mov cl, dh
2196 shr eax, 16
2197 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2198 xor esi, ebp
2199 mov bl, ah
2200 shr edx, 16
2201 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2202 xor esi, ebp
2203 mov ebp, DWORD PTR 24[esp]
2204 mov cl, dh
2205 and eax, 0ffh
2206 and edx, 0ffh
2207 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2208 xor esi, ebx
2209 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2210 xor esi, ebx
2211 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2212 xor esi, ebx
2213 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2214 xor esi, ebx
2216 ; Round 7
2217 mov eax, DWORD PTR 56[ebp]
2218 xor ebx, ebx
2219 mov edx, DWORD PTR 60[ebp]
2220 xor eax, esi
2221 xor edx, esi
2222 and eax, 0fcfcfcfch
2223 and edx, 0cfcfcfcfh
2224 mov bl, al
2225 mov cl, ah
2226 ror edx, 4
2227 mov ebp, DWORD PTR _des_SPtrans[ebx]
2228 mov bl, dl
2229 xor edi, ebp
2230 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2231 xor edi, ebp
2232 mov cl, dh
2233 shr eax, 16
2234 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2235 xor edi, ebp
2236 mov bl, ah
2237 shr edx, 16
2238 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2239 xor edi, ebp
2240 mov ebp, DWORD PTR 24[esp]
2241 mov cl, dh
2242 and eax, 0ffh
2243 and edx, 0ffh
2244 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2245 xor edi, ebx
2246 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2247 xor edi, ebx
2248 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2249 xor edi, ebx
2250 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2251 xor edi, ebx
2253 ; Round 6
2254 mov eax, DWORD PTR 48[ebp]
2255 xor ebx, ebx
2256 mov edx, DWORD PTR 52[ebp]
2257 xor eax, edi
2258 xor edx, edi
2259 and eax, 0fcfcfcfch
2260 and edx, 0cfcfcfcfh
2261 mov bl, al
2262 mov cl, ah
2263 ror edx, 4
2264 mov ebp, DWORD PTR _des_SPtrans[ebx]
2265 mov bl, dl
2266 xor esi, ebp
2267 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2268 xor esi, ebp
2269 mov cl, dh
2270 shr eax, 16
2271 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2272 xor esi, ebp
2273 mov bl, ah
2274 shr edx, 16
2275 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2276 xor esi, ebp
2277 mov ebp, DWORD PTR 24[esp]
2278 mov cl, dh
2279 and eax, 0ffh
2280 and edx, 0ffh
2281 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2282 xor esi, ebx
2283 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2284 xor esi, ebx
2285 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2286 xor esi, ebx
2287 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2288 xor esi, ebx
2290 ; Round 5
2291 mov eax, DWORD PTR 40[ebp]
2292 xor ebx, ebx
2293 mov edx, DWORD PTR 44[ebp]
2294 xor eax, esi
2295 xor edx, esi
2296 and eax, 0fcfcfcfch
2297 and edx, 0cfcfcfcfh
2298 mov bl, al
2299 mov cl, ah
2300 ror edx, 4
2301 mov ebp, DWORD PTR _des_SPtrans[ebx]
2302 mov bl, dl
2303 xor edi, ebp
2304 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2305 xor edi, ebp
2306 mov cl, dh
2307 shr eax, 16
2308 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2309 xor edi, ebp
2310 mov bl, ah
2311 shr edx, 16
2312 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2313 xor edi, ebp
2314 mov ebp, DWORD PTR 24[esp]
2315 mov cl, dh
2316 and eax, 0ffh
2317 and edx, 0ffh
2318 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2319 xor edi, ebx
2320 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2321 xor edi, ebx
2322 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2323 xor edi, ebx
2324 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2325 xor edi, ebx
2327 ; Round 4
2328 mov eax, DWORD PTR 32[ebp]
2329 xor ebx, ebx
2330 mov edx, DWORD PTR 36[ebp]
2331 xor eax, edi
2332 xor edx, edi
2333 and eax, 0fcfcfcfch
2334 and edx, 0cfcfcfcfh
2335 mov bl, al
2336 mov cl, ah
2337 ror edx, 4
2338 mov ebp, DWORD PTR _des_SPtrans[ebx]
2339 mov bl, dl
2340 xor esi, ebp
2341 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2342 xor esi, ebp
2343 mov cl, dh
2344 shr eax, 16
2345 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2346 xor esi, ebp
2347 mov bl, ah
2348 shr edx, 16
2349 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2350 xor esi, ebp
2351 mov ebp, DWORD PTR 24[esp]
2352 mov cl, dh
2353 and eax, 0ffh
2354 and edx, 0ffh
2355 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2356 xor esi, ebx
2357 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2358 xor esi, ebx
2359 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2360 xor esi, ebx
2361 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2362 xor esi, ebx
2364 ; Round 3
2365 mov eax, DWORD PTR 24[ebp]
2366 xor ebx, ebx
2367 mov edx, DWORD PTR 28[ebp]
2368 xor eax, esi
2369 xor edx, esi
2370 and eax, 0fcfcfcfch
2371 and edx, 0cfcfcfcfh
2372 mov bl, al
2373 mov cl, ah
2374 ror edx, 4
2375 mov ebp, DWORD PTR _des_SPtrans[ebx]
2376 mov bl, dl
2377 xor edi, ebp
2378 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2379 xor edi, ebp
2380 mov cl, dh
2381 shr eax, 16
2382 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2383 xor edi, ebp
2384 mov bl, ah
2385 shr edx, 16
2386 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2387 xor edi, ebp
2388 mov ebp, DWORD PTR 24[esp]
2389 mov cl, dh
2390 and eax, 0ffh
2391 and edx, 0ffh
2392 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2393 xor edi, ebx
2394 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2395 xor edi, ebx
2396 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2397 xor edi, ebx
2398 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2399 xor edi, ebx
2401 ; Round 2
2402 mov eax, DWORD PTR 16[ebp]
2403 xor ebx, ebx
2404 mov edx, DWORD PTR 20[ebp]
2405 xor eax, edi
2406 xor edx, edi
2407 and eax, 0fcfcfcfch
2408 and edx, 0cfcfcfcfh
2409 mov bl, al
2410 mov cl, ah
2411 ror edx, 4
2412 mov ebp, DWORD PTR _des_SPtrans[ebx]
2413 mov bl, dl
2414 xor esi, ebp
2415 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2416 xor esi, ebp
2417 mov cl, dh
2418 shr eax, 16
2419 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2420 xor esi, ebp
2421 mov bl, ah
2422 shr edx, 16
2423 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2424 xor esi, ebp
2425 mov ebp, DWORD PTR 24[esp]
2426 mov cl, dh
2427 and eax, 0ffh
2428 and edx, 0ffh
2429 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2430 xor esi, ebx
2431 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2432 xor esi, ebx
2433 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2434 xor esi, ebx
2435 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2436 xor esi, ebx
2438 ; Round 1
2439 mov eax, DWORD PTR 8[ebp]
2440 xor ebx, ebx
2441 mov edx, DWORD PTR 12[ebp]
2442 xor eax, esi
2443 xor edx, esi
2444 and eax, 0fcfcfcfch
2445 and edx, 0cfcfcfcfh
2446 mov bl, al
2447 mov cl, ah
2448 ror edx, 4
2449 mov ebp, DWORD PTR _des_SPtrans[ebx]
2450 mov bl, dl
2451 xor edi, ebp
2452 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2453 xor edi, ebp
2454 mov cl, dh
2455 shr eax, 16
2456 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2457 xor edi, ebp
2458 mov bl, ah
2459 shr edx, 16
2460 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2461 xor edi, ebp
2462 mov ebp, DWORD PTR 24[esp]
2463 mov cl, dh
2464 and eax, 0ffh
2465 and edx, 0ffh
2466 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2467 xor edi, ebx
2468 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2469 xor edi, ebx
2470 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2471 xor edi, ebx
2472 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2473 xor edi, ebx
2475 ; Round 0
2476 mov eax, DWORD PTR [ebp]
2477 xor ebx, ebx
2478 mov edx, DWORD PTR 4[ebp]
2479 xor eax, edi
2480 xor edx, edi
2481 and eax, 0fcfcfcfch
2482 and edx, 0cfcfcfcfh
2483 mov bl, al
2484 mov cl, ah
2485 ror edx, 4
2486 mov ebp, DWORD PTR _des_SPtrans[ebx]
2487 mov bl, dl
2488 xor esi, ebp
2489 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
2490 xor esi, ebp
2491 mov cl, dh
2492 shr eax, 16
2493 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
2494 xor esi, ebp
2495 mov bl, ah
2496 shr edx, 16
2497 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
2498 xor esi, ebp
2499 mov ebp, DWORD PTR 24[esp]
2500 mov cl, dh
2501 and eax, 0ffh
2502 and edx, 0ffh
2503 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
2504 xor esi, ebx
2505 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
2506 xor esi, ebx
2507 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
2508 xor esi, ebx
2509 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
2510 xor esi, ebx
2511 $L003end:
2513 ; Fixup
2514 ror edi, 3
2515 mov eax, DWORD PTR 20[esp]
2516 ror esi, 3
2517 mov DWORD PTR [eax],edi
2518 mov DWORD PTR 4[eax],esi
2519 pop edi
2520 pop esi
2521 pop ebx
2522 pop ebp
2524 _des_encrypt2 ENDP
2525 _TEXT ENDS
2526 _TEXT SEGMENT
2527 PUBLIC _des_encrypt3
2528 EXTRN _des_SPtrans:DWORD
2529 _des_encrypt3 PROC NEAR
2530 push ebp
2531 push ebx
2532 push esi
2533 push edi
2535 ; Load the data words
2536 mov ebx, DWORD PTR 20[esp]
2537 mov edi, DWORD PTR [ebx]
2538 mov esi, DWORD PTR 4[ebx]
2540 ; IP
2541 rol edi, 4
2542 mov edx, edi
2543 xor edi, esi
2544 and edi, 0f0f0f0f0h
2545 xor edx, edi
2546 xor esi, edi
2548 rol esi, 20
2549 mov edi, esi
2550 xor esi, edx
2551 and esi, 0fff0000fh
2552 xor edi, esi
2553 xor edx, esi
2555 rol edi, 14
2556 mov esi, edi
2557 xor edi, edx
2558 and edi, 033333333h
2559 xor esi, edi
2560 xor edx, edi
2562 rol edx, 22
2563 mov edi, edx
2564 xor edx, esi
2565 and edx, 003fc03fch
2566 xor edi, edx
2567 xor esi, edx
2569 rol edi, 9
2570 mov edx, edi
2571 xor edi, esi
2572 and edi, 0aaaaaaaah
2573 xor edx, edi
2574 xor esi, edi
2576 ror edx, 3
2577 ror esi, 2
2578 mov DWORD PTR 4[ebx],esi
2579 mov eax, DWORD PTR 24[esp]
2580 mov DWORD PTR [ebx],edx
2581 mov edi, DWORD PTR 28[esp]
2582 mov esi, DWORD PTR 32[esp]
2583 push 1
2584 push eax
2585 push ebx
2586 call _des_encrypt2
2587 push 0
2588 push edi
2589 push ebx
2590 call _des_encrypt2
2591 push 1
2592 push esi
2593 push ebx
2594 call _des_encrypt2
2595 mov edi, DWORD PTR [ebx]
2596 add esp, 36
2597 mov esi, DWORD PTR 4[ebx]
2599 ; FP
2600 rol esi, 2
2601 rol edi, 3
2602 mov eax, edi
2603 xor edi, esi
2604 and edi, 0aaaaaaaah
2605 xor eax, edi
2606 xor esi, edi
2608 rol eax, 23
2609 mov edi, eax
2610 xor eax, esi
2611 and eax, 003fc03fch
2612 xor edi, eax
2613 xor esi, eax
2615 rol edi, 10
2616 mov eax, edi
2617 xor edi, esi
2618 and edi, 033333333h
2619 xor eax, edi
2620 xor esi, edi
2622 rol esi, 18
2623 mov edi, esi
2624 xor esi, eax
2625 and esi, 0fff0000fh
2626 xor edi, esi
2627 xor eax, esi
2629 rol edi, 12
2630 mov esi, edi
2631 xor edi, eax
2632 and edi, 0f0f0f0f0h
2633 xor esi, edi
2634 xor eax, edi
2636 ror eax, 4
2637 mov DWORD PTR [ebx],eax
2638 mov DWORD PTR 4[ebx],esi
2639 pop edi
2640 pop esi
2641 pop ebx
2642 pop ebp
2644 _des_encrypt3 ENDP
2645 _TEXT ENDS
2646 _TEXT SEGMENT
2647 PUBLIC _des_decrypt3
2648 EXTRN _des_SPtrans:DWORD
2649 _des_decrypt3 PROC NEAR
2650 push ebp
2651 push ebx
2652 push esi
2653 push edi
2655 ; Load the data words
2656 mov ebx, DWORD PTR 20[esp]
2657 mov edi, DWORD PTR [ebx]
2658 mov esi, DWORD PTR 4[ebx]
2660 ; IP
2661 rol edi, 4
2662 mov edx, edi
2663 xor edi, esi
2664 and edi, 0f0f0f0f0h
2665 xor edx, edi
2666 xor esi, edi
2668 rol esi, 20
2669 mov edi, esi
2670 xor esi, edx
2671 and esi, 0fff0000fh
2672 xor edi, esi
2673 xor edx, esi
2675 rol edi, 14
2676 mov esi, edi
2677 xor edi, edx
2678 and edi, 033333333h
2679 xor esi, edi
2680 xor edx, edi
2682 rol edx, 22
2683 mov edi, edx
2684 xor edx, esi
2685 and edx, 003fc03fch
2686 xor edi, edx
2687 xor esi, edx
2689 rol edi, 9
2690 mov edx, edi
2691 xor edi, esi
2692 and edi, 0aaaaaaaah
2693 xor edx, edi
2694 xor esi, edi
2696 ror edx, 3
2697 ror esi, 2
2698 mov DWORD PTR 4[ebx],esi
2699 mov esi, DWORD PTR 24[esp]
2700 mov DWORD PTR [ebx],edx
2701 mov edi, DWORD PTR 28[esp]
2702 mov eax, DWORD PTR 32[esp]
2703 push 0
2704 push eax
2705 push ebx
2706 call _des_encrypt2
2707 push 1
2708 push edi
2709 push ebx
2710 call _des_encrypt2
2711 push 0
2712 push esi
2713 push ebx
2714 call _des_encrypt2
2715 mov edi, DWORD PTR [ebx]
2716 add esp, 36
2717 mov esi, DWORD PTR 4[ebx]
2719 ; FP
2720 rol esi, 2
2721 rol edi, 3
2722 mov eax, edi
2723 xor edi, esi
2724 and edi, 0aaaaaaaah
2725 xor eax, edi
2726 xor esi, edi
2728 rol eax, 23
2729 mov edi, eax
2730 xor eax, esi
2731 and eax, 003fc03fch
2732 xor edi, eax
2733 xor esi, eax
2735 rol edi, 10
2736 mov eax, edi
2737 xor edi, esi
2738 and edi, 033333333h
2739 xor eax, edi
2740 xor esi, edi
2742 rol esi, 18
2743 mov edi, esi
2744 xor esi, eax
2745 and esi, 0fff0000fh
2746 xor edi, esi
2747 xor eax, esi
2749 rol edi, 12
2750 mov esi, edi
2751 xor edi, eax
2752 and edi, 0f0f0f0f0h
2753 xor esi, edi
2754 xor eax, edi
2756 ror eax, 4
2757 mov DWORD PTR [ebx],eax
2758 mov DWORD PTR 4[ebx],esi
2759 pop edi
2760 pop esi
2761 pop ebx
2762 pop ebp
2764 _des_decrypt3 ENDP
2765 _TEXT ENDS