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