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