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/rc5 | |
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/rc5')
-rw-r--r-- | src/lib/libcrypto/rc5/Makefile.uni | 72 | ||||
-rw-r--r-- | src/lib/libcrypto/rc5/asm/r5-win32.asm | 574 | ||||
-rw-r--r-- | src/lib/libcrypto/rc5/asm/r586unix.cpp | 628 |
3 files changed, 1274 insertions, 0 deletions
diff --git a/src/lib/libcrypto/rc5/Makefile.uni b/src/lib/libcrypto/rc5/Makefile.uni new file mode 100644 index 0000000000..e50b3f2d19 --- /dev/null +++ b/src/lib/libcrypto/rc5/Makefile.uni | |||
@@ -0,0 +1,72 @@ | |||
1 | # Targets | ||
2 | # make - twidle the options yourself :-) | ||
3 | # make cc - standard cc options | ||
4 | # make gcc - standard gcc options | ||
5 | |||
6 | DIR= rc2 | ||
7 | TOP= . | ||
8 | CC= gcc | ||
9 | CFLAG= -O3 -fomit-frame-pointer | ||
10 | |||
11 | CPP= $(CC) -E | ||
12 | INCLUDES= | ||
13 | INSTALLTOP=/usr/local/lib | ||
14 | MAKE= make | ||
15 | MAKEDEPEND= makedepend | ||
16 | MAKEFILE= Makefile.uni | ||
17 | AR= ar r | ||
18 | |||
19 | IDEA_ENC=rc2_cbc.o | ||
20 | |||
21 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
22 | |||
23 | GENERAL=Makefile | ||
24 | TEST=rc2test | ||
25 | APPS=rc2speed | ||
26 | |||
27 | LIB=librc2.a | ||
28 | LIBSRC=rc2_skey.c rc2_ecb.c rc2_cbc.c rc2cfb64.c rc2ofb64.c | ||
29 | LIBOBJ=rc2_skey.o rc2_ecb.o $(IDEA_ENC) rc2cfb64.o rc2ofb64.o | ||
30 | |||
31 | SRC= $(LIBSRC) | ||
32 | |||
33 | EXHEADER= rc2.h | ||
34 | HEADER= rc2_locl.h $(EXHEADER) | ||
35 | |||
36 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
37 | |||
38 | all: $(LIB) $(TEST) $(APPS) | ||
39 | |||
40 | $(LIB): $(LIBOBJ) | ||
41 | $(AR) $(LIB) $(LIBOBJ) | ||
42 | sh $(TOP)/ranlib.sh $(LIB) | ||
43 | |||
44 | test: $(TEST) | ||
45 | ./$(TEST) | ||
46 | |||
47 | $(TEST): $(TEST).c $(LIB) | ||
48 | $(CC) -o $(TEST) $(CFLAGS) $(TEST).c $(LIB) | ||
49 | |||
50 | $(APPS): $(APPS).c $(LIB) | ||
51 | $(CC) -o $(APPS) $(CFLAGS) $(APPS).c $(LIB) | ||
52 | |||
53 | lint: | ||
54 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
55 | |||
56 | depend: | ||
57 | $(MAKEDEPEND) $(INCLUDES) $(PROGS) $(LIBSRC) | ||
58 | |||
59 | dclean: | ||
60 | perl -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
61 | mv -f Makefile.new $(MAKEFILE) | ||
62 | |||
63 | clean: | ||
64 | /bin/rm -f $(LIB) $(TEST) $(APPS) *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
65 | |||
66 | cc: | ||
67 | $(MAKE) CC="cc" CFLAG="-O" all | ||
68 | |||
69 | gcc: | ||
70 | $(MAKE) CC="gcc" CFLAGS="-O3 -fomit-frame-pointer" all | ||
71 | |||
72 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
diff --git a/src/lib/libcrypto/rc5/asm/r5-win32.asm b/src/lib/libcrypto/rc5/asm/r5-win32.asm new file mode 100644 index 0000000000..f43d3711f0 --- /dev/null +++ b/src/lib/libcrypto/rc5/asm/r5-win32.asm | |||
@@ -0,0 +1,574 @@ | |||
1 | ; Don't even think of reading this code | ||
2 | ; It was automatically generated by rc5-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 rc5-586.asm | ||
8 | .386 | ||
9 | .model FLAT | ||
10 | _TEXT SEGMENT | ||
11 | PUBLIC _RC5_32_encrypt | ||
12 | |||
13 | _RC5_32_encrypt PROC NEAR | ||
14 | ; | ||
15 | push ebp | ||
16 | push esi | ||
17 | push edi | ||
18 | mov edx, DWORD PTR 16[esp] | ||
19 | mov ebp, DWORD PTR 20[esp] | ||
20 | ; Load the 2 words | ||
21 | mov edi, DWORD PTR [edx] | ||
22 | mov esi, DWORD PTR 4[edx] | ||
23 | push ebx | ||
24 | mov ebx, DWORD PTR [ebp] | ||
25 | add edi, DWORD PTR 4[ebp] | ||
26 | add esi, DWORD PTR 8[ebp] | ||
27 | xor edi, esi | ||
28 | mov eax, DWORD PTR 12[ebp] | ||
29 | mov ecx, esi | ||
30 | rol edi, cl | ||
31 | add edi, eax | ||
32 | xor esi, edi | ||
33 | mov eax, DWORD PTR 16[ebp] | ||
34 | mov ecx, edi | ||
35 | rol esi, cl | ||
36 | add esi, eax | ||
37 | xor edi, esi | ||
38 | mov eax, DWORD PTR 20[ebp] | ||
39 | mov ecx, esi | ||
40 | rol edi, cl | ||
41 | add edi, eax | ||
42 | xor esi, edi | ||
43 | mov eax, DWORD PTR 24[ebp] | ||
44 | mov ecx, edi | ||
45 | rol esi, cl | ||
46 | add esi, eax | ||
47 | xor edi, esi | ||
48 | mov eax, DWORD PTR 28[ebp] | ||
49 | mov ecx, esi | ||
50 | rol edi, cl | ||
51 | add edi, eax | ||
52 | xor esi, edi | ||
53 | mov eax, DWORD PTR 32[ebp] | ||
54 | mov ecx, edi | ||
55 | rol esi, cl | ||
56 | add esi, eax | ||
57 | xor edi, esi | ||
58 | mov eax, DWORD PTR 36[ebp] | ||
59 | mov ecx, esi | ||
60 | rol edi, cl | ||
61 | add edi, eax | ||
62 | xor esi, edi | ||
63 | mov eax, DWORD PTR 40[ebp] | ||
64 | mov ecx, edi | ||
65 | rol esi, cl | ||
66 | add esi, eax | ||
67 | xor edi, esi | ||
68 | mov eax, DWORD PTR 44[ebp] | ||
69 | mov ecx, esi | ||
70 | rol edi, cl | ||
71 | add edi, eax | ||
72 | xor esi, edi | ||
73 | mov eax, DWORD PTR 48[ebp] | ||
74 | mov ecx, edi | ||
75 | rol esi, cl | ||
76 | add esi, eax | ||
77 | xor edi, esi | ||
78 | mov eax, DWORD PTR 52[ebp] | ||
79 | mov ecx, esi | ||
80 | rol edi, cl | ||
81 | add edi, eax | ||
82 | xor esi, edi | ||
83 | mov eax, DWORD PTR 56[ebp] | ||
84 | mov ecx, edi | ||
85 | rol esi, cl | ||
86 | add esi, eax | ||
87 | xor edi, esi | ||
88 | mov eax, DWORD PTR 60[ebp] | ||
89 | mov ecx, esi | ||
90 | rol edi, cl | ||
91 | add edi, eax | ||
92 | xor esi, edi | ||
93 | mov eax, DWORD PTR 64[ebp] | ||
94 | mov ecx, edi | ||
95 | rol esi, cl | ||
96 | add esi, eax | ||
97 | xor edi, esi | ||
98 | mov eax, DWORD PTR 68[ebp] | ||
99 | mov ecx, esi | ||
100 | rol edi, cl | ||
101 | add edi, eax | ||
102 | xor esi, edi | ||
103 | mov eax, DWORD PTR 72[ebp] | ||
104 | mov ecx, edi | ||
105 | rol esi, cl | ||
106 | add esi, eax | ||
107 | cmp ebx, 8 | ||
108 | je $L000rc5_exit | ||
109 | xor edi, esi | ||
110 | mov eax, DWORD PTR 76[ebp] | ||
111 | mov ecx, esi | ||
112 | rol edi, cl | ||
113 | add edi, eax | ||
114 | xor esi, edi | ||
115 | mov eax, DWORD PTR 80[ebp] | ||
116 | mov ecx, edi | ||
117 | rol esi, cl | ||
118 | add esi, eax | ||
119 | xor edi, esi | ||
120 | mov eax, DWORD PTR 84[ebp] | ||
121 | mov ecx, esi | ||
122 | rol edi, cl | ||
123 | add edi, eax | ||
124 | xor esi, edi | ||
125 | mov eax, DWORD PTR 88[ebp] | ||
126 | mov ecx, edi | ||
127 | rol esi, cl | ||
128 | add esi, eax | ||
129 | xor edi, esi | ||
130 | mov eax, DWORD PTR 92[ebp] | ||
131 | mov ecx, esi | ||
132 | rol edi, cl | ||
133 | add edi, eax | ||
134 | xor esi, edi | ||
135 | mov eax, DWORD PTR 96[ebp] | ||
136 | mov ecx, edi | ||
137 | rol esi, cl | ||
138 | add esi, eax | ||
139 | xor edi, esi | ||
140 | mov eax, DWORD PTR 100[ebp] | ||
141 | mov ecx, esi | ||
142 | rol edi, cl | ||
143 | add edi, eax | ||
144 | xor esi, edi | ||
145 | mov eax, DWORD PTR 104[ebp] | ||
146 | mov ecx, edi | ||
147 | rol esi, cl | ||
148 | add esi, eax | ||
149 | cmp ebx, 12 | ||
150 | je $L000rc5_exit | ||
151 | xor edi, esi | ||
152 | mov eax, DWORD PTR 108[ebp] | ||
153 | mov ecx, esi | ||
154 | rol edi, cl | ||
155 | add edi, eax | ||
156 | xor esi, edi | ||
157 | mov eax, DWORD PTR 112[ebp] | ||
158 | mov ecx, edi | ||
159 | rol esi, cl | ||
160 | add esi, eax | ||
161 | xor edi, esi | ||
162 | mov eax, DWORD PTR 116[ebp] | ||
163 | mov ecx, esi | ||
164 | rol edi, cl | ||
165 | add edi, eax | ||
166 | xor esi, edi | ||
167 | mov eax, DWORD PTR 120[ebp] | ||
168 | mov ecx, edi | ||
169 | rol esi, cl | ||
170 | add esi, eax | ||
171 | xor edi, esi | ||
172 | mov eax, DWORD PTR 124[ebp] | ||
173 | mov ecx, esi | ||
174 | rol edi, cl | ||
175 | add edi, eax | ||
176 | xor esi, edi | ||
177 | mov eax, DWORD PTR 128[ebp] | ||
178 | mov ecx, edi | ||
179 | rol esi, cl | ||
180 | add esi, eax | ||
181 | xor edi, esi | ||
182 | mov eax, DWORD PTR 132[ebp] | ||
183 | mov ecx, esi | ||
184 | rol edi, cl | ||
185 | add edi, eax | ||
186 | xor esi, edi | ||
187 | mov eax, DWORD PTR 136[ebp] | ||
188 | mov ecx, edi | ||
189 | rol esi, cl | ||
190 | add esi, eax | ||
191 | $L000rc5_exit: | ||
192 | mov DWORD PTR [edx],edi | ||
193 | mov DWORD PTR 4[edx],esi | ||
194 | pop ebx | ||
195 | pop edi | ||
196 | pop esi | ||
197 | pop ebp | ||
198 | ret | ||
199 | _RC5_32_encrypt ENDP | ||
200 | _TEXT ENDS | ||
201 | _TEXT SEGMENT | ||
202 | PUBLIC _RC5_32_decrypt | ||
203 | |||
204 | _RC5_32_decrypt PROC NEAR | ||
205 | ; | ||
206 | push ebp | ||
207 | push esi | ||
208 | push edi | ||
209 | mov edx, DWORD PTR 16[esp] | ||
210 | mov ebp, DWORD PTR 20[esp] | ||
211 | ; Load the 2 words | ||
212 | mov edi, DWORD PTR [edx] | ||
213 | mov esi, DWORD PTR 4[edx] | ||
214 | push ebx | ||
215 | mov ebx, DWORD PTR [ebp] | ||
216 | cmp ebx, 12 | ||
217 | je $L001rc5_dec_12 | ||
218 | cmp ebx, 8 | ||
219 | je $L002rc5_dec_8 | ||
220 | mov eax, DWORD PTR 136[ebp] | ||
221 | sub esi, eax | ||
222 | mov ecx, edi | ||
223 | ror esi, cl | ||
224 | xor esi, edi | ||
225 | mov eax, DWORD PTR 132[ebp] | ||
226 | sub edi, eax | ||
227 | mov ecx, esi | ||
228 | ror edi, cl | ||
229 | xor edi, esi | ||
230 | mov eax, DWORD PTR 128[ebp] | ||
231 | sub esi, eax | ||
232 | mov ecx, edi | ||
233 | ror esi, cl | ||
234 | xor esi, edi | ||
235 | mov eax, DWORD PTR 124[ebp] | ||
236 | sub edi, eax | ||
237 | mov ecx, esi | ||
238 | ror edi, cl | ||
239 | xor edi, esi | ||
240 | mov eax, DWORD PTR 120[ebp] | ||
241 | sub esi, eax | ||
242 | mov ecx, edi | ||
243 | ror esi, cl | ||
244 | xor esi, edi | ||
245 | mov eax, DWORD PTR 116[ebp] | ||
246 | sub edi, eax | ||
247 | mov ecx, esi | ||
248 | ror edi, cl | ||
249 | xor edi, esi | ||
250 | mov eax, DWORD PTR 112[ebp] | ||
251 | sub esi, eax | ||
252 | mov ecx, edi | ||
253 | ror esi, cl | ||
254 | xor esi, edi | ||
255 | mov eax, DWORD PTR 108[ebp] | ||
256 | sub edi, eax | ||
257 | mov ecx, esi | ||
258 | ror edi, cl | ||
259 | xor edi, esi | ||
260 | $L001rc5_dec_12: | ||
261 | mov eax, DWORD PTR 104[ebp] | ||
262 | sub esi, eax | ||
263 | mov ecx, edi | ||
264 | ror esi, cl | ||
265 | xor esi, edi | ||
266 | mov eax, DWORD PTR 100[ebp] | ||
267 | sub edi, eax | ||
268 | mov ecx, esi | ||
269 | ror edi, cl | ||
270 | xor edi, esi | ||
271 | mov eax, DWORD PTR 96[ebp] | ||
272 | sub esi, eax | ||
273 | mov ecx, edi | ||
274 | ror esi, cl | ||
275 | xor esi, edi | ||
276 | mov eax, DWORD PTR 92[ebp] | ||
277 | sub edi, eax | ||
278 | mov ecx, esi | ||
279 | ror edi, cl | ||
280 | xor edi, esi | ||
281 | mov eax, DWORD PTR 88[ebp] | ||
282 | sub esi, eax | ||
283 | mov ecx, edi | ||
284 | ror esi, cl | ||
285 | xor esi, edi | ||
286 | mov eax, DWORD PTR 84[ebp] | ||
287 | sub edi, eax | ||
288 | mov ecx, esi | ||
289 | ror edi, cl | ||
290 | xor edi, esi | ||
291 | mov eax, DWORD PTR 80[ebp] | ||
292 | sub esi, eax | ||
293 | mov ecx, edi | ||
294 | ror esi, cl | ||
295 | xor esi, edi | ||
296 | mov eax, DWORD PTR 76[ebp] | ||
297 | sub edi, eax | ||
298 | mov ecx, esi | ||
299 | ror edi, cl | ||
300 | xor edi, esi | ||
301 | $L002rc5_dec_8: | ||
302 | mov eax, DWORD PTR 72[ebp] | ||
303 | sub esi, eax | ||
304 | mov ecx, edi | ||
305 | ror esi, cl | ||
306 | xor esi, edi | ||
307 | mov eax, DWORD PTR 68[ebp] | ||
308 | sub edi, eax | ||
309 | mov ecx, esi | ||
310 | ror edi, cl | ||
311 | xor edi, esi | ||
312 | mov eax, DWORD PTR 64[ebp] | ||
313 | sub esi, eax | ||
314 | mov ecx, edi | ||
315 | ror esi, cl | ||
316 | xor esi, edi | ||
317 | mov eax, DWORD PTR 60[ebp] | ||
318 | sub edi, eax | ||
319 | mov ecx, esi | ||
320 | ror edi, cl | ||
321 | xor edi, esi | ||
322 | mov eax, DWORD PTR 56[ebp] | ||
323 | sub esi, eax | ||
324 | mov ecx, edi | ||
325 | ror esi, cl | ||
326 | xor esi, edi | ||
327 | mov eax, DWORD PTR 52[ebp] | ||
328 | sub edi, eax | ||
329 | mov ecx, esi | ||
330 | ror edi, cl | ||
331 | xor edi, esi | ||
332 | mov eax, DWORD PTR 48[ebp] | ||
333 | sub esi, eax | ||
334 | mov ecx, edi | ||
335 | ror esi, cl | ||
336 | xor esi, edi | ||
337 | mov eax, DWORD PTR 44[ebp] | ||
338 | sub edi, eax | ||
339 | mov ecx, esi | ||
340 | ror edi, cl | ||
341 | xor edi, esi | ||
342 | mov eax, DWORD PTR 40[ebp] | ||
343 | sub esi, eax | ||
344 | mov ecx, edi | ||
345 | ror esi, cl | ||
346 | xor esi, edi | ||
347 | mov eax, DWORD PTR 36[ebp] | ||
348 | sub edi, eax | ||
349 | mov ecx, esi | ||
350 | ror edi, cl | ||
351 | xor edi, esi | ||
352 | mov eax, DWORD PTR 32[ebp] | ||
353 | sub esi, eax | ||
354 | mov ecx, edi | ||
355 | ror esi, cl | ||
356 | xor esi, edi | ||
357 | mov eax, DWORD PTR 28[ebp] | ||
358 | sub edi, eax | ||
359 | mov ecx, esi | ||
360 | ror edi, cl | ||
361 | xor edi, esi | ||
362 | mov eax, DWORD PTR 24[ebp] | ||
363 | sub esi, eax | ||
364 | mov ecx, edi | ||
365 | ror esi, cl | ||
366 | xor esi, edi | ||
367 | mov eax, DWORD PTR 20[ebp] | ||
368 | sub edi, eax | ||
369 | mov ecx, esi | ||
370 | ror edi, cl | ||
371 | xor edi, esi | ||
372 | mov eax, DWORD PTR 16[ebp] | ||
373 | sub esi, eax | ||
374 | mov ecx, edi | ||
375 | ror esi, cl | ||
376 | xor esi, edi | ||
377 | mov eax, DWORD PTR 12[ebp] | ||
378 | sub edi, eax | ||
379 | mov ecx, esi | ||
380 | ror edi, cl | ||
381 | xor edi, esi | ||
382 | sub esi, DWORD PTR 8[ebp] | ||
383 | sub edi, DWORD PTR 4[ebp] | ||
384 | L003rc5_exit: | ||
385 | mov DWORD PTR [edx],edi | ||
386 | mov DWORD PTR 4[edx],esi | ||
387 | pop ebx | ||
388 | pop edi | ||
389 | pop esi | ||
390 | pop ebp | ||
391 | ret | ||
392 | _RC5_32_decrypt ENDP | ||
393 | _TEXT ENDS | ||
394 | _TEXT SEGMENT | ||
395 | PUBLIC _RC5_32_cbc_encrypt | ||
396 | |||
397 | _RC5_32_cbc_encrypt PROC NEAR | ||
398 | ; | ||
399 | push ebp | ||
400 | push ebx | ||
401 | push esi | ||
402 | push edi | ||
403 | mov ebp, DWORD PTR 28[esp] | ||
404 | ; getting iv ptr from parameter 4 | ||
405 | mov ebx, DWORD PTR 36[esp] | ||
406 | mov esi, DWORD PTR [ebx] | ||
407 | mov edi, DWORD PTR 4[ebx] | ||
408 | push edi | ||
409 | push esi | ||
410 | push edi | ||
411 | push esi | ||
412 | mov ebx, esp | ||
413 | mov esi, DWORD PTR 36[esp] | ||
414 | mov edi, DWORD PTR 40[esp] | ||
415 | ; getting encrypt flag from parameter 5 | ||
416 | mov ecx, DWORD PTR 56[esp] | ||
417 | ; get and push parameter 3 | ||
418 | mov eax, DWORD PTR 48[esp] | ||
419 | push eax | ||
420 | push ebx | ||
421 | cmp ecx, 0 | ||
422 | jz $L004decrypt | ||
423 | and ebp, 4294967288 | ||
424 | mov eax, DWORD PTR 8[esp] | ||
425 | mov ebx, DWORD PTR 12[esp] | ||
426 | jz $L005encrypt_finish | ||
427 | L006encrypt_loop: | ||
428 | mov ecx, DWORD PTR [esi] | ||
429 | mov edx, DWORD PTR 4[esi] | ||
430 | xor eax, ecx | ||
431 | xor ebx, edx | ||
432 | mov DWORD PTR 8[esp],eax | ||
433 | mov DWORD PTR 12[esp],ebx | ||
434 | call _RC5_32_encrypt | ||
435 | mov eax, DWORD PTR 8[esp] | ||
436 | mov ebx, DWORD PTR 12[esp] | ||
437 | mov DWORD PTR [edi],eax | ||
438 | mov DWORD PTR 4[edi],ebx | ||
439 | add esi, 8 | ||
440 | add edi, 8 | ||
441 | sub ebp, 8 | ||
442 | jnz L006encrypt_loop | ||
443 | $L005encrypt_finish: | ||
444 | mov ebp, DWORD PTR 52[esp] | ||
445 | and ebp, 7 | ||
446 | jz $L007finish | ||
447 | xor ecx, ecx | ||
448 | xor edx, edx | ||
449 | mov ebp, DWORD PTR $L008cbc_enc_jmp_table[ebp*4] | ||
450 | jmp ebp | ||
451 | L009ej7: | ||
452 | mov dh, BYTE PTR 6[esi] | ||
453 | shl edx, 8 | ||
454 | L010ej6: | ||
455 | mov dh, BYTE PTR 5[esi] | ||
456 | L011ej5: | ||
457 | mov dl, BYTE PTR 4[esi] | ||
458 | L012ej4: | ||
459 | mov ecx, DWORD PTR [esi] | ||
460 | jmp $L013ejend | ||
461 | L014ej3: | ||
462 | mov ch, BYTE PTR 2[esi] | ||
463 | shl ecx, 8 | ||
464 | L015ej2: | ||
465 | mov ch, BYTE PTR 1[esi] | ||
466 | L016ej1: | ||
467 | mov cl, BYTE PTR [esi] | ||
468 | $L013ejend: | ||
469 | xor eax, ecx | ||
470 | xor ebx, edx | ||
471 | mov DWORD PTR 8[esp],eax | ||
472 | mov DWORD PTR 12[esp],ebx | ||
473 | call _RC5_32_encrypt | ||
474 | mov eax, DWORD PTR 8[esp] | ||
475 | mov ebx, DWORD PTR 12[esp] | ||
476 | mov DWORD PTR [edi],eax | ||
477 | mov DWORD PTR 4[edi],ebx | ||
478 | jmp $L007finish | ||
479 | $L004decrypt: | ||
480 | and ebp, 4294967288 | ||
481 | mov eax, DWORD PTR 16[esp] | ||
482 | mov ebx, DWORD PTR 20[esp] | ||
483 | jz $L017decrypt_finish | ||
484 | L018decrypt_loop: | ||
485 | mov eax, DWORD PTR [esi] | ||
486 | mov ebx, DWORD PTR 4[esi] | ||
487 | mov DWORD PTR 8[esp],eax | ||
488 | mov DWORD PTR 12[esp],ebx | ||
489 | call _RC5_32_decrypt | ||
490 | mov eax, DWORD PTR 8[esp] | ||
491 | mov ebx, DWORD PTR 12[esp] | ||
492 | mov ecx, DWORD PTR 16[esp] | ||
493 | mov edx, DWORD PTR 20[esp] | ||
494 | xor ecx, eax | ||
495 | xor edx, ebx | ||
496 | mov eax, DWORD PTR [esi] | ||
497 | mov ebx, DWORD PTR 4[esi] | ||
498 | mov DWORD PTR [edi],ecx | ||
499 | mov DWORD PTR 4[edi],edx | ||
500 | mov DWORD PTR 16[esp],eax | ||
501 | mov DWORD PTR 20[esp],ebx | ||
502 | add esi, 8 | ||
503 | add edi, 8 | ||
504 | sub ebp, 8 | ||
505 | jnz L018decrypt_loop | ||
506 | $L017decrypt_finish: | ||
507 | mov ebp, DWORD PTR 52[esp] | ||
508 | and ebp, 7 | ||
509 | jz $L007finish | ||
510 | mov eax, DWORD PTR [esi] | ||
511 | mov ebx, DWORD PTR 4[esi] | ||
512 | mov DWORD PTR 8[esp],eax | ||
513 | mov DWORD PTR 12[esp],ebx | ||
514 | call _RC5_32_decrypt | ||
515 | mov eax, DWORD PTR 8[esp] | ||
516 | mov ebx, DWORD PTR 12[esp] | ||
517 | mov ecx, DWORD PTR 16[esp] | ||
518 | mov edx, DWORD PTR 20[esp] | ||
519 | xor ecx, eax | ||
520 | xor edx, ebx | ||
521 | mov eax, DWORD PTR [esi] | ||
522 | mov ebx, DWORD PTR 4[esi] | ||
523 | L019dj7: | ||
524 | ror edx, 16 | ||
525 | mov BYTE PTR 6[edi],dl | ||
526 | shr edx, 16 | ||
527 | L020dj6: | ||
528 | mov BYTE PTR 5[edi],dh | ||
529 | L021dj5: | ||
530 | mov BYTE PTR 4[edi],dl | ||
531 | L022dj4: | ||
532 | mov DWORD PTR [edi],ecx | ||
533 | jmp $L023djend | ||
534 | L024dj3: | ||
535 | ror ecx, 16 | ||
536 | mov BYTE PTR 2[edi],cl | ||
537 | shl ecx, 16 | ||
538 | L025dj2: | ||
539 | mov BYTE PTR 1[esi],ch | ||
540 | L026dj1: | ||
541 | mov BYTE PTR [esi], cl | ||
542 | $L023djend: | ||
543 | jmp $L007finish | ||
544 | $L007finish: | ||
545 | mov ecx, DWORD PTR 60[esp] | ||
546 | add esp, 24 | ||
547 | mov DWORD PTR [ecx],eax | ||
548 | mov DWORD PTR 4[ecx],ebx | ||
549 | pop edi | ||
550 | pop esi | ||
551 | pop ebx | ||
552 | pop ebp | ||
553 | ret | ||
554 | $L008cbc_enc_jmp_table: | ||
555 | DD 0 | ||
556 | DD L016ej1 | ||
557 | DD L015ej2 | ||
558 | DD L014ej3 | ||
559 | DD L012ej4 | ||
560 | DD L011ej5 | ||
561 | DD L010ej6 | ||
562 | DD L009ej7 | ||
563 | L027cbc_dec_jmp_table: | ||
564 | DD 0 | ||
565 | DD L026dj1 | ||
566 | DD L025dj2 | ||
567 | DD L024dj3 | ||
568 | DD L022dj4 | ||
569 | DD L021dj5 | ||
570 | DD L020dj6 | ||
571 | DD L019dj7 | ||
572 | _RC5_32_cbc_encrypt ENDP | ||
573 | _TEXT ENDS | ||
574 | END | ||
diff --git a/src/lib/libcrypto/rc5/asm/r586unix.cpp b/src/lib/libcrypto/rc5/asm/r586unix.cpp new file mode 100644 index 0000000000..a25dd5a9a4 --- /dev/null +++ b/src/lib/libcrypto/rc5/asm/r586unix.cpp | |||
@@ -0,0 +1,628 @@ | |||
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 RC5_32_encrypt _RC5_32_encrypt | ||
13 | #define RC5_32_decrypt _RC5_32_decrypt | ||
14 | #define RC5_32_cbc_encrypt _RC5_32_cbc_encrypt | ||
15 | |||
16 | #endif | ||
17 | |||
18 | #ifdef OUT | ||
19 | #define OK 1 | ||
20 | #define ALIGN 4 | ||
21 | #endif | ||
22 | |||
23 | #ifdef BSDI | ||
24 | #define OK 1 | ||
25 | #define ALIGN 4 | ||
26 | #undef SIZE | ||
27 | #undef TYPE | ||
28 | #define SIZE(a,b) | ||
29 | #define TYPE(a,b) | ||
30 | #endif | ||
31 | |||
32 | #if defined(ELF) || defined(SOL) | ||
33 | #define OK 1 | ||
34 | #define ALIGN 16 | ||
35 | #endif | ||
36 | |||
37 | #ifndef OK | ||
38 | You need to define one of | ||
39 | ELF - elf systems - linux-elf, NetBSD and DG-UX | ||
40 | OUT - a.out systems - linux-a.out and FreeBSD | ||
41 | SOL - solaris systems, which are elf with strange comment lines | ||
42 | BSDI - a.out with a very primative version of as. | ||
43 | #endif | ||
44 | |||
45 | /* Let the Assembler begin :-) */ | ||
46 | /* Don't even think of reading this code */ | ||
47 | /* It was automatically generated by rc5-586.pl */ | ||
48 | /* Which is a perl program used to generate the x86 assember for */ | ||
49 | /* any of elf, a.out, BSDI,Win32, or Solaris */ | ||
50 | /* eric <eay@cryptsoft.com> */ | ||
51 | |||
52 | .file "rc5-586.s" | ||
53 | .version "01.01" | ||
54 | gcc2_compiled.: | ||
55 | .text | ||
56 | .align ALIGN | ||
57 | .globl RC5_32_encrypt | ||
58 | TYPE(RC5_32_encrypt,@function) | ||
59 | RC5_32_encrypt: | ||
60 | |||
61 | pushl %ebp | ||
62 | pushl %esi | ||
63 | pushl %edi | ||
64 | movl 16(%esp), %edx | ||
65 | movl 20(%esp), %ebp | ||
66 | /* Load the 2 words */ | ||
67 | movl (%edx), %edi | ||
68 | movl 4(%edx), %esi | ||
69 | pushl %ebx | ||
70 | movl (%ebp), %ebx | ||
71 | addl 4(%ebp), %edi | ||
72 | addl 8(%ebp), %esi | ||
73 | xorl %esi, %edi | ||
74 | movl 12(%ebp), %eax | ||
75 | movl %esi, %ecx | ||
76 | roll %cl, %edi | ||
77 | addl %eax, %edi | ||
78 | xorl %edi, %esi | ||
79 | movl 16(%ebp), %eax | ||
80 | movl %edi, %ecx | ||
81 | roll %cl, %esi | ||
82 | addl %eax, %esi | ||
83 | xorl %esi, %edi | ||
84 | movl 20(%ebp), %eax | ||
85 | movl %esi, %ecx | ||
86 | roll %cl, %edi | ||
87 | addl %eax, %edi | ||
88 | xorl %edi, %esi | ||
89 | movl 24(%ebp), %eax | ||
90 | movl %edi, %ecx | ||
91 | roll %cl, %esi | ||
92 | addl %eax, %esi | ||
93 | xorl %esi, %edi | ||
94 | movl 28(%ebp), %eax | ||
95 | movl %esi, %ecx | ||
96 | roll %cl, %edi | ||
97 | addl %eax, %edi | ||
98 | xorl %edi, %esi | ||
99 | movl 32(%ebp), %eax | ||
100 | movl %edi, %ecx | ||
101 | roll %cl, %esi | ||
102 | addl %eax, %esi | ||
103 | xorl %esi, %edi | ||
104 | movl 36(%ebp), %eax | ||
105 | movl %esi, %ecx | ||
106 | roll %cl, %edi | ||
107 | addl %eax, %edi | ||
108 | xorl %edi, %esi | ||
109 | movl 40(%ebp), %eax | ||
110 | movl %edi, %ecx | ||
111 | roll %cl, %esi | ||
112 | addl %eax, %esi | ||
113 | xorl %esi, %edi | ||
114 | movl 44(%ebp), %eax | ||
115 | movl %esi, %ecx | ||
116 | roll %cl, %edi | ||
117 | addl %eax, %edi | ||
118 | xorl %edi, %esi | ||
119 | movl 48(%ebp), %eax | ||
120 | movl %edi, %ecx | ||
121 | roll %cl, %esi | ||
122 | addl %eax, %esi | ||
123 | xorl %esi, %edi | ||
124 | movl 52(%ebp), %eax | ||
125 | movl %esi, %ecx | ||
126 | roll %cl, %edi | ||
127 | addl %eax, %edi | ||
128 | xorl %edi, %esi | ||
129 | movl 56(%ebp), %eax | ||
130 | movl %edi, %ecx | ||
131 | roll %cl, %esi | ||
132 | addl %eax, %esi | ||
133 | xorl %esi, %edi | ||
134 | movl 60(%ebp), %eax | ||
135 | movl %esi, %ecx | ||
136 | roll %cl, %edi | ||
137 | addl %eax, %edi | ||
138 | xorl %edi, %esi | ||
139 | movl 64(%ebp), %eax | ||
140 | movl %edi, %ecx | ||
141 | roll %cl, %esi | ||
142 | addl %eax, %esi | ||
143 | xorl %esi, %edi | ||
144 | movl 68(%ebp), %eax | ||
145 | movl %esi, %ecx | ||
146 | roll %cl, %edi | ||
147 | addl %eax, %edi | ||
148 | xorl %edi, %esi | ||
149 | movl 72(%ebp), %eax | ||
150 | movl %edi, %ecx | ||
151 | roll %cl, %esi | ||
152 | addl %eax, %esi | ||
153 | cmpl $8, %ebx | ||
154 | je .L000rc5_exit | ||
155 | xorl %esi, %edi | ||
156 | movl 76(%ebp), %eax | ||
157 | movl %esi, %ecx | ||
158 | roll %cl, %edi | ||
159 | addl %eax, %edi | ||
160 | xorl %edi, %esi | ||
161 | movl 80(%ebp), %eax | ||
162 | movl %edi, %ecx | ||
163 | roll %cl, %esi | ||
164 | addl %eax, %esi | ||
165 | xorl %esi, %edi | ||
166 | movl 84(%ebp), %eax | ||
167 | movl %esi, %ecx | ||
168 | roll %cl, %edi | ||
169 | addl %eax, %edi | ||
170 | xorl %edi, %esi | ||
171 | movl 88(%ebp), %eax | ||
172 | movl %edi, %ecx | ||
173 | roll %cl, %esi | ||
174 | addl %eax, %esi | ||
175 | xorl %esi, %edi | ||
176 | movl 92(%ebp), %eax | ||
177 | movl %esi, %ecx | ||
178 | roll %cl, %edi | ||
179 | addl %eax, %edi | ||
180 | xorl %edi, %esi | ||
181 | movl 96(%ebp), %eax | ||
182 | movl %edi, %ecx | ||
183 | roll %cl, %esi | ||
184 | addl %eax, %esi | ||
185 | xorl %esi, %edi | ||
186 | movl 100(%ebp), %eax | ||
187 | movl %esi, %ecx | ||
188 | roll %cl, %edi | ||
189 | addl %eax, %edi | ||
190 | xorl %edi, %esi | ||
191 | movl 104(%ebp), %eax | ||
192 | movl %edi, %ecx | ||
193 | roll %cl, %esi | ||
194 | addl %eax, %esi | ||
195 | cmpl $12, %ebx | ||
196 | je .L000rc5_exit | ||
197 | xorl %esi, %edi | ||
198 | movl 108(%ebp), %eax | ||
199 | movl %esi, %ecx | ||
200 | roll %cl, %edi | ||
201 | addl %eax, %edi | ||
202 | xorl %edi, %esi | ||
203 | movl 112(%ebp), %eax | ||
204 | movl %edi, %ecx | ||
205 | roll %cl, %esi | ||
206 | addl %eax, %esi | ||
207 | xorl %esi, %edi | ||
208 | movl 116(%ebp), %eax | ||
209 | movl %esi, %ecx | ||
210 | roll %cl, %edi | ||
211 | addl %eax, %edi | ||
212 | xorl %edi, %esi | ||
213 | movl 120(%ebp), %eax | ||
214 | movl %edi, %ecx | ||
215 | roll %cl, %esi | ||
216 | addl %eax, %esi | ||
217 | xorl %esi, %edi | ||
218 | movl 124(%ebp), %eax | ||
219 | movl %esi, %ecx | ||
220 | roll %cl, %edi | ||
221 | addl %eax, %edi | ||
222 | xorl %edi, %esi | ||
223 | movl 128(%ebp), %eax | ||
224 | movl %edi, %ecx | ||
225 | roll %cl, %esi | ||
226 | addl %eax, %esi | ||
227 | xorl %esi, %edi | ||
228 | movl 132(%ebp), %eax | ||
229 | movl %esi, %ecx | ||
230 | roll %cl, %edi | ||
231 | addl %eax, %edi | ||
232 | xorl %edi, %esi | ||
233 | movl 136(%ebp), %eax | ||
234 | movl %edi, %ecx | ||
235 | roll %cl, %esi | ||
236 | addl %eax, %esi | ||
237 | .L000rc5_exit: | ||
238 | movl %edi, (%edx) | ||
239 | movl %esi, 4(%edx) | ||
240 | popl %ebx | ||
241 | popl %edi | ||
242 | popl %esi | ||
243 | popl %ebp | ||
244 | ret | ||
245 | .RC5_32_encrypt_end: | ||
246 | SIZE(RC5_32_encrypt,.RC5_32_encrypt_end-RC5_32_encrypt) | ||
247 | .ident "desasm.pl" | ||
248 | .text | ||
249 | .align ALIGN | ||
250 | .globl RC5_32_decrypt | ||
251 | TYPE(RC5_32_decrypt,@function) | ||
252 | RC5_32_decrypt: | ||
253 | |||
254 | pushl %ebp | ||
255 | pushl %esi | ||
256 | pushl %edi | ||
257 | movl 16(%esp), %edx | ||
258 | movl 20(%esp), %ebp | ||
259 | /* Load the 2 words */ | ||
260 | movl (%edx), %edi | ||
261 | movl 4(%edx), %esi | ||
262 | pushl %ebx | ||
263 | movl (%ebp), %ebx | ||
264 | cmpl $12, %ebx | ||
265 | je .L001rc5_dec_12 | ||
266 | cmpl $8, %ebx | ||
267 | je .L002rc5_dec_8 | ||
268 | movl 136(%ebp), %eax | ||
269 | subl %eax, %esi | ||
270 | movl %edi, %ecx | ||
271 | rorl %cl, %esi | ||
272 | xorl %edi, %esi | ||
273 | movl 132(%ebp), %eax | ||
274 | subl %eax, %edi | ||
275 | movl %esi, %ecx | ||
276 | rorl %cl, %edi | ||
277 | xorl %esi, %edi | ||
278 | movl 128(%ebp), %eax | ||
279 | subl %eax, %esi | ||
280 | movl %edi, %ecx | ||
281 | rorl %cl, %esi | ||
282 | xorl %edi, %esi | ||
283 | movl 124(%ebp), %eax | ||
284 | subl %eax, %edi | ||
285 | movl %esi, %ecx | ||
286 | rorl %cl, %edi | ||
287 | xorl %esi, %edi | ||
288 | movl 120(%ebp), %eax | ||
289 | subl %eax, %esi | ||
290 | movl %edi, %ecx | ||
291 | rorl %cl, %esi | ||
292 | xorl %edi, %esi | ||
293 | movl 116(%ebp), %eax | ||
294 | subl %eax, %edi | ||
295 | movl %esi, %ecx | ||
296 | rorl %cl, %edi | ||
297 | xorl %esi, %edi | ||
298 | movl 112(%ebp), %eax | ||
299 | subl %eax, %esi | ||
300 | movl %edi, %ecx | ||
301 | rorl %cl, %esi | ||
302 | xorl %edi, %esi | ||
303 | movl 108(%ebp), %eax | ||
304 | subl %eax, %edi | ||
305 | movl %esi, %ecx | ||
306 | rorl %cl, %edi | ||
307 | xorl %esi, %edi | ||
308 | .L001rc5_dec_12: | ||
309 | movl 104(%ebp), %eax | ||
310 | subl %eax, %esi | ||
311 | movl %edi, %ecx | ||
312 | rorl %cl, %esi | ||
313 | xorl %edi, %esi | ||
314 | movl 100(%ebp), %eax | ||
315 | subl %eax, %edi | ||
316 | movl %esi, %ecx | ||
317 | rorl %cl, %edi | ||
318 | xorl %esi, %edi | ||
319 | movl 96(%ebp), %eax | ||
320 | subl %eax, %esi | ||
321 | movl %edi, %ecx | ||
322 | rorl %cl, %esi | ||
323 | xorl %edi, %esi | ||
324 | movl 92(%ebp), %eax | ||
325 | subl %eax, %edi | ||
326 | movl %esi, %ecx | ||
327 | rorl %cl, %edi | ||
328 | xorl %esi, %edi | ||
329 | movl 88(%ebp), %eax | ||
330 | subl %eax, %esi | ||
331 | movl %edi, %ecx | ||
332 | rorl %cl, %esi | ||
333 | xorl %edi, %esi | ||
334 | movl 84(%ebp), %eax | ||
335 | subl %eax, %edi | ||
336 | movl %esi, %ecx | ||
337 | rorl %cl, %edi | ||
338 | xorl %esi, %edi | ||
339 | movl 80(%ebp), %eax | ||
340 | subl %eax, %esi | ||
341 | movl %edi, %ecx | ||
342 | rorl %cl, %esi | ||
343 | xorl %edi, %esi | ||
344 | movl 76(%ebp), %eax | ||
345 | subl %eax, %edi | ||
346 | movl %esi, %ecx | ||
347 | rorl %cl, %edi | ||
348 | xorl %esi, %edi | ||
349 | .L002rc5_dec_8: | ||
350 | movl 72(%ebp), %eax | ||
351 | subl %eax, %esi | ||
352 | movl %edi, %ecx | ||
353 | rorl %cl, %esi | ||
354 | xorl %edi, %esi | ||
355 | movl 68(%ebp), %eax | ||
356 | subl %eax, %edi | ||
357 | movl %esi, %ecx | ||
358 | rorl %cl, %edi | ||
359 | xorl %esi, %edi | ||
360 | movl 64(%ebp), %eax | ||
361 | subl %eax, %esi | ||
362 | movl %edi, %ecx | ||
363 | rorl %cl, %esi | ||
364 | xorl %edi, %esi | ||
365 | movl 60(%ebp), %eax | ||
366 | subl %eax, %edi | ||
367 | movl %esi, %ecx | ||
368 | rorl %cl, %edi | ||
369 | xorl %esi, %edi | ||
370 | movl 56(%ebp), %eax | ||
371 | subl %eax, %esi | ||
372 | movl %edi, %ecx | ||
373 | rorl %cl, %esi | ||
374 | xorl %edi, %esi | ||
375 | movl 52(%ebp), %eax | ||
376 | subl %eax, %edi | ||
377 | movl %esi, %ecx | ||
378 | rorl %cl, %edi | ||
379 | xorl %esi, %edi | ||
380 | movl 48(%ebp), %eax | ||
381 | subl %eax, %esi | ||
382 | movl %edi, %ecx | ||
383 | rorl %cl, %esi | ||
384 | xorl %edi, %esi | ||
385 | movl 44(%ebp), %eax | ||
386 | subl %eax, %edi | ||
387 | movl %esi, %ecx | ||
388 | rorl %cl, %edi | ||
389 | xorl %esi, %edi | ||
390 | movl 40(%ebp), %eax | ||
391 | subl %eax, %esi | ||
392 | movl %edi, %ecx | ||
393 | rorl %cl, %esi | ||
394 | xorl %edi, %esi | ||
395 | movl 36(%ebp), %eax | ||
396 | subl %eax, %edi | ||
397 | movl %esi, %ecx | ||
398 | rorl %cl, %edi | ||
399 | xorl %esi, %edi | ||
400 | movl 32(%ebp), %eax | ||
401 | subl %eax, %esi | ||
402 | movl %edi, %ecx | ||
403 | rorl %cl, %esi | ||
404 | xorl %edi, %esi | ||
405 | movl 28(%ebp), %eax | ||
406 | subl %eax, %edi | ||
407 | movl %esi, %ecx | ||
408 | rorl %cl, %edi | ||
409 | xorl %esi, %edi | ||
410 | movl 24(%ebp), %eax | ||
411 | subl %eax, %esi | ||
412 | movl %edi, %ecx | ||
413 | rorl %cl, %esi | ||
414 | xorl %edi, %esi | ||
415 | movl 20(%ebp), %eax | ||
416 | subl %eax, %edi | ||
417 | movl %esi, %ecx | ||
418 | rorl %cl, %edi | ||
419 | xorl %esi, %edi | ||
420 | movl 16(%ebp), %eax | ||
421 | subl %eax, %esi | ||
422 | movl %edi, %ecx | ||
423 | rorl %cl, %esi | ||
424 | xorl %edi, %esi | ||
425 | movl 12(%ebp), %eax | ||
426 | subl %eax, %edi | ||
427 | movl %esi, %ecx | ||
428 | rorl %cl, %edi | ||
429 | xorl %esi, %edi | ||
430 | subl 8(%ebp), %esi | ||
431 | subl 4(%ebp), %edi | ||
432 | .L003rc5_exit: | ||
433 | movl %edi, (%edx) | ||
434 | movl %esi, 4(%edx) | ||
435 | popl %ebx | ||
436 | popl %edi | ||
437 | popl %esi | ||
438 | popl %ebp | ||
439 | ret | ||
440 | .RC5_32_decrypt_end: | ||
441 | SIZE(RC5_32_decrypt,.RC5_32_decrypt_end-RC5_32_decrypt) | ||
442 | .ident "desasm.pl" | ||
443 | .text | ||
444 | .align ALIGN | ||
445 | .globl RC5_32_cbc_encrypt | ||
446 | TYPE(RC5_32_cbc_encrypt,@function) | ||
447 | RC5_32_cbc_encrypt: | ||
448 | |||
449 | pushl %ebp | ||
450 | pushl %ebx | ||
451 | pushl %esi | ||
452 | pushl %edi | ||
453 | movl 28(%esp), %ebp | ||
454 | /* getting iv ptr from parameter 4 */ | ||
455 | movl 36(%esp), %ebx | ||
456 | movl (%ebx), %esi | ||
457 | movl 4(%ebx), %edi | ||
458 | pushl %edi | ||
459 | pushl %esi | ||
460 | pushl %edi | ||
461 | pushl %esi | ||
462 | movl %esp, %ebx | ||
463 | movl 36(%esp), %esi | ||
464 | movl 40(%esp), %edi | ||
465 | /* getting encrypt flag from parameter 5 */ | ||
466 | movl 56(%esp), %ecx | ||
467 | /* get and push parameter 3 */ | ||
468 | movl 48(%esp), %eax | ||
469 | pushl %eax | ||
470 | pushl %ebx | ||
471 | cmpl $0, %ecx | ||
472 | jz .L004decrypt | ||
473 | andl $4294967288, %ebp | ||
474 | movl 8(%esp), %eax | ||
475 | movl 12(%esp), %ebx | ||
476 | jz .L005encrypt_finish | ||
477 | .L006encrypt_loop: | ||
478 | movl (%esi), %ecx | ||
479 | movl 4(%esi), %edx | ||
480 | xorl %ecx, %eax | ||
481 | xorl %edx, %ebx | ||
482 | movl %eax, 8(%esp) | ||
483 | movl %ebx, 12(%esp) | ||
484 | call RC5_32_encrypt | ||
485 | movl 8(%esp), %eax | ||
486 | movl 12(%esp), %ebx | ||
487 | movl %eax, (%edi) | ||
488 | movl %ebx, 4(%edi) | ||
489 | addl $8, %esi | ||
490 | addl $8, %edi | ||
491 | subl $8, %ebp | ||
492 | jnz .L006encrypt_loop | ||
493 | .L005encrypt_finish: | ||
494 | movl 52(%esp), %ebp | ||
495 | andl $7, %ebp | ||
496 | jz .L007finish | ||
497 | xorl %ecx, %ecx | ||
498 | xorl %edx, %edx | ||
499 | movl .L008cbc_enc_jmp_table(,%ebp,4),%ebp | ||
500 | jmp *%ebp | ||
501 | .L009ej7: | ||
502 | movb 6(%esi), %dh | ||
503 | sall $8, %edx | ||
504 | .L010ej6: | ||
505 | movb 5(%esi), %dh | ||
506 | .L011ej5: | ||
507 | movb 4(%esi), %dl | ||
508 | .L012ej4: | ||
509 | movl (%esi), %ecx | ||
510 | jmp .L013ejend | ||
511 | .L014ej3: | ||
512 | movb 2(%esi), %ch | ||
513 | sall $8, %ecx | ||
514 | .L015ej2: | ||
515 | movb 1(%esi), %ch | ||
516 | .L016ej1: | ||
517 | movb (%esi), %cl | ||
518 | .L013ejend: | ||
519 | xorl %ecx, %eax | ||
520 | xorl %edx, %ebx | ||
521 | movl %eax, 8(%esp) | ||
522 | movl %ebx, 12(%esp) | ||
523 | call RC5_32_encrypt | ||
524 | movl 8(%esp), %eax | ||
525 | movl 12(%esp), %ebx | ||
526 | movl %eax, (%edi) | ||
527 | movl %ebx, 4(%edi) | ||
528 | jmp .L007finish | ||
529 | .align ALIGN | ||
530 | .L004decrypt: | ||
531 | andl $4294967288, %ebp | ||
532 | movl 16(%esp), %eax | ||
533 | movl 20(%esp), %ebx | ||
534 | jz .L017decrypt_finish | ||
535 | .L018decrypt_loop: | ||
536 | movl (%esi), %eax | ||
537 | movl 4(%esi), %ebx | ||
538 | movl %eax, 8(%esp) | ||
539 | movl %ebx, 12(%esp) | ||
540 | call RC5_32_decrypt | ||
541 | movl 8(%esp), %eax | ||
542 | movl 12(%esp), %ebx | ||
543 | movl 16(%esp), %ecx | ||
544 | movl 20(%esp), %edx | ||
545 | xorl %eax, %ecx | ||
546 | xorl %ebx, %edx | ||
547 | movl (%esi), %eax | ||
548 | movl 4(%esi), %ebx | ||
549 | movl %ecx, (%edi) | ||
550 | movl %edx, 4(%edi) | ||
551 | movl %eax, 16(%esp) | ||
552 | movl %ebx, 20(%esp) | ||
553 | addl $8, %esi | ||
554 | addl $8, %edi | ||
555 | subl $8, %ebp | ||
556 | jnz .L018decrypt_loop | ||
557 | .L017decrypt_finish: | ||
558 | movl 52(%esp), %ebp | ||
559 | andl $7, %ebp | ||
560 | jz .L007finish | ||
561 | movl (%esi), %eax | ||
562 | movl 4(%esi), %ebx | ||
563 | movl %eax, 8(%esp) | ||
564 | movl %ebx, 12(%esp) | ||
565 | call RC5_32_decrypt | ||
566 | movl 8(%esp), %eax | ||
567 | movl 12(%esp), %ebx | ||
568 | movl 16(%esp), %ecx | ||
569 | movl 20(%esp), %edx | ||
570 | xorl %eax, %ecx | ||
571 | xorl %ebx, %edx | ||
572 | movl (%esi), %eax | ||
573 | movl 4(%esi), %ebx | ||
574 | .L019dj7: | ||
575 | rorl $16, %edx | ||
576 | movb %dl, 6(%edi) | ||
577 | shrl $16, %edx | ||
578 | .L020dj6: | ||
579 | movb %dh, 5(%edi) | ||
580 | .L021dj5: | ||
581 | movb %dl, 4(%edi) | ||
582 | .L022dj4: | ||
583 | movl %ecx, (%edi) | ||
584 | jmp .L023djend | ||
585 | .L024dj3: | ||
586 | rorl $16, %ecx | ||
587 | movb %cl, 2(%edi) | ||
588 | sall $16, %ecx | ||
589 | .L025dj2: | ||
590 | movb %ch, 1(%esi) | ||
591 | .L026dj1: | ||
592 | movb %cl, (%esi) | ||
593 | .L023djend: | ||
594 | jmp .L007finish | ||
595 | .align ALIGN | ||
596 | .L007finish: | ||
597 | movl 60(%esp), %ecx | ||
598 | addl $24, %esp | ||
599 | movl %eax, (%ecx) | ||
600 | movl %ebx, 4(%ecx) | ||
601 | popl %edi | ||
602 | popl %esi | ||
603 | popl %ebx | ||
604 | popl %ebp | ||
605 | ret | ||
606 | .align ALIGN | ||
607 | .L008cbc_enc_jmp_table: | ||
608 | .long 0 | ||
609 | .long .L016ej1 | ||
610 | .long .L015ej2 | ||
611 | .long .L014ej3 | ||
612 | .long .L012ej4 | ||
613 | .long .L011ej5 | ||
614 | .long .L010ej6 | ||
615 | .long .L009ej7 | ||
616 | .align ALIGN | ||
617 | .L027cbc_dec_jmp_table: | ||
618 | .long 0 | ||
619 | .long .L026dj1 | ||
620 | .long .L025dj2 | ||
621 | .long .L024dj3 | ||
622 | .long .L022dj4 | ||
623 | .long .L021dj5 | ||
624 | .long .L020dj6 | ||
625 | .long .L019dj7 | ||
626 | .RC5_32_cbc_encrypt_end: | ||
627 | SIZE(RC5_32_cbc_encrypt,.RC5_32_cbc_encrypt_end-RC5_32_cbc_encrypt) | ||
628 | .ident "desasm.pl" | ||