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