diff options
author | cvs2svn <admin@example.com> | 1998-10-05 20:13:17 +0000 |
---|---|---|
committer | cvs2svn <admin@example.com> | 1998-10-05 20:13:17 +0000 |
commit | e82f18fab47b698d93971f576f962a3068132912 (patch) | |
tree | 681519717892864935c3d0533cf171098afa649a /src/lib/libcrypto/bf/asm/b-win32.asm | |
parent | 536c76cbb863bab152f19842ab88772c01e922c7 (diff) | |
download | openbsd-SSLeay_0_9_0b.tar.gz openbsd-SSLeay_0_9_0b.tar.bz2 openbsd-SSLeay_0_9_0b.zip |
This commit was manufactured by cvs2git to create tag 'SSLeay_0_9_0b'.SSLeay_0_9_0b
Diffstat (limited to 'src/lib/libcrypto/bf/asm/b-win32.asm')
-rw-r--r-- | src/lib/libcrypto/bf/asm/b-win32.asm | 906 |
1 files changed, 906 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bf/asm/b-win32.asm b/src/lib/libcrypto/bf/asm/b-win32.asm new file mode 100644 index 0000000000..138c99d0aa --- /dev/null +++ b/src/lib/libcrypto/bf/asm/b-win32.asm | |||
@@ -0,0 +1,906 @@ | |||
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 | ||