]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/des/asm/d-win32.asm
Import of old SSLeay release: SSLeay 0.9.0b
[thirdparty/openssl.git] / crypto / des / asm / d-win32.asm
CommitLineData
d02b48c6 1 ; Don't even think of reading this code
58964a49 2 ; It was automatically generated by des-586.pl
d02b48c6 3 ; Which is a perl program used to generate the x86 assember for
58964a49 4 ; any of elf, a.out, BSDI,Win32, or Solaris
d02b48c6 5 ; eric <eay@cryptsoft.com>
d02b48c6 6 ;
58964a49 7 TITLE des-586.asm
d02b48c6
RE
8 .386
9.model FLAT
10_TEXT SEGMENT
11PUBLIC _des_encrypt
58964a49 12EXTRN _des_SPtrans:DWORD
d02b48c6 13_des_encrypt PROC NEAR
d02b48c6
RE
14 push esi
15 push edi
16 ;
17 ; Load the 2 words
58964a49 18 mov esi, DWORD PTR 12[esp]
d02b48c6 19 xor ecx, ecx
58964a49
RE
20 push ebx
21 push ebp
d02b48c6
RE
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
d02b48c6 63 mov ebp, DWORD PTR 24[esp]
58964a49 64 cmp ebx, 0
d02b48c6
RE
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
58964a49
RE
1294 pop ebp
1295 pop ebx
d02b48c6
RE
1296 pop edi
1297 pop esi
d02b48c6
RE
1298 ret
1299_des_encrypt ENDP
1300_TEXT ENDS
1301_TEXT SEGMENT
1302PUBLIC _des_encrypt2
58964a49 1303EXTRN _des_SPtrans:DWORD
d02b48c6 1304_des_encrypt2 PROC NEAR
d02b48c6
RE
1305 push esi
1306 push edi
1307 ;
1308 ; Load the 2 words
58964a49 1309 mov eax, DWORD PTR 12[esp]
d02b48c6 1310 xor ecx, ecx
58964a49
RE
1311 push ebx
1312 push ebp
d02b48c6
RE
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
d02b48c6 1318 mov ebp, DWORD PTR 24[esp]
58964a49 1319 cmp ebx, 0
d02b48c6
RE
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
58964a49
RE
2515 pop ebp
2516 pop ebx
d02b48c6
RE
2517 pop edi
2518 pop esi
d02b48c6
RE
2519 ret
2520_des_encrypt2 ENDP
2521_TEXT ENDS
2522_TEXT SEGMENT
2523PUBLIC _des_encrypt3
58964a49 2524
d02b48c6 2525_des_encrypt3 PROC NEAR
d02b48c6 2526 push ebx
58964a49
RE
2527 mov ebx, DWORD PTR 8[esp]
2528 push ebp
d02b48c6
RE
2529 push esi
2530 push edi
2531 ;
2532 ; Load the data words
d02b48c6
RE
2533 mov edi, DWORD PTR [ebx]
2534 mov esi, DWORD PTR 4[ebx]
58964a49 2535 sub esp, 12
d02b48c6
RE
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
58964a49 2576 mov eax, DWORD PTR 36[esp]
d02b48c6 2577 mov DWORD PTR [ebx],edx
58964a49
RE
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
d02b48c6 2583 call _des_encrypt2
58964a49
RE
2584 mov DWORD PTR 8[esp],0
2585 mov DWORD PTR 4[esp],edi
2586 mov DWORD PTR [esp],ebx
d02b48c6 2587 call _des_encrypt2
58964a49
RE
2588 mov DWORD PTR 8[esp],1
2589 mov DWORD PTR 4[esp],esi
2590 mov DWORD PTR [esp],ebx
d02b48c6 2591 call _des_encrypt2
58964a49 2592 add esp, 12
d02b48c6 2593 mov edi, DWORD PTR [ebx]
d02b48c6
RE
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
d02b48c6 2638 pop ebp
58964a49 2639 pop ebx
d02b48c6
RE
2640 ret
2641_des_encrypt3 ENDP
2642_TEXT ENDS
2643_TEXT SEGMENT
2644PUBLIC _des_decrypt3
58964a49 2645
d02b48c6 2646_des_decrypt3 PROC NEAR
d02b48c6 2647 push ebx
58964a49
RE
2648 mov ebx, DWORD PTR 8[esp]
2649 push ebp
d02b48c6
RE
2650 push esi
2651 push edi
2652 ;
2653 ; Load the data words
d02b48c6
RE
2654 mov edi, DWORD PTR [ebx]
2655 mov esi, DWORD PTR 4[ebx]
58964a49 2656 sub esp, 12
d02b48c6
RE
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
58964a49 2697 mov esi, DWORD PTR 36[esp]
d02b48c6 2698 mov DWORD PTR [ebx],edx
58964a49
RE
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
d02b48c6 2704 call _des_encrypt2
58964a49
RE
2705 mov DWORD PTR 8[esp],1
2706 mov DWORD PTR 4[esp],edi
2707 mov DWORD PTR [esp],ebx
d02b48c6 2708 call _des_encrypt2
58964a49
RE
2709 mov DWORD PTR 8[esp],0
2710 mov DWORD PTR 4[esp],esi
2711 mov DWORD PTR [esp],ebx
d02b48c6 2712 call _des_encrypt2
58964a49 2713 add esp, 12
d02b48c6 2714 mov edi, DWORD PTR [ebx]
d02b48c6
RE
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
d02b48c6 2759 pop ebp
58964a49 2760 pop ebx
d02b48c6
RE
2761 ret
2762_des_decrypt3 ENDP
2763_TEXT ENDS
58964a49
RE
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
d02b48c6 3132END