OLD | NEW |
| (Empty) |
1 From dee77b350211c7b5980f03cc67e30ebf616b029e Mon Sep 17 00:00:00 2001 | |
2 From: =?UTF-8?q?H=C3=A5vard=20Molland?= <haavardm@opera.com> | |
3 Date: Thu, 3 Apr 2014 10:58:22 +0200 | |
4 Subject: [PATCH 4/4] Assembly files for OSX-32. | |
5 | |
6 Needed for compiling 32 bit OSX with assembly support. | |
7 --- | |
8 crypto/aes/asm/aes-586-mac.S | 3200 +++++++++++++++++++++++++++ | |
9 crypto/aes/asm/aesni-x86-mac.S | 2107 ++++++++++++++++++ | |
10 crypto/aes/asm/vpaes-x86-mac.S | 635 ++++++ | |
11 crypto/bf/asm/bf-586-mac.S | 890 ++++++++ | |
12 crypto/bn/asm/bn-586-mac.S | 1370 ++++++++++++ | |
13 crypto/bn/asm/co-586-mac.S | 1246 +++++++++++ | |
14 crypto/bn/asm/x86-gf2m-mac.S | 332 +++ | |
15 crypto/bn/asm/x86-mont-mac.S | 336 +++ | |
16 crypto/des/asm/crypt586-mac.S | 880 ++++++++ | |
17 crypto/des/asm/des-586-mac.S | 1821 +++++++++++++++ | |
18 crypto/md5/asm/md5-586-mac.S | 677 ++++++ | |
19 crypto/modes/asm/ghash-x86-mac.S | 718 ++++++ | |
20 crypto/sha/asm/sha1-586-mac.S | 1378 ++++++++++++ | |
21 crypto/sha/asm/sha256-586-mac.S | 256 +++ | |
22 crypto/sha/asm/sha512-586-mac.S | 561 +++++ | |
23 crypto/x86cpuid-mac.S | 316 +++ | |
24 import_openssl.sh | 32 +- | |
25 openssl.config | 29 - | |
26 18 files changed, 16724 insertions(+), 60 deletions(-) | |
27 create mode 100644 crypto/aes/asm/aes-586-mac.S | |
28 create mode 100644 crypto/aes/asm/aesni-x86-mac.S | |
29 create mode 100644 crypto/aes/asm/vpaes-x86-mac.S | |
30 create mode 100644 crypto/bf/asm/bf-586-mac.S | |
31 create mode 100644 crypto/bn/asm/bn-586-mac.S | |
32 create mode 100644 crypto/bn/asm/co-586-mac.S | |
33 create mode 100644 crypto/bn/asm/x86-gf2m-mac.S | |
34 create mode 100644 crypto/bn/asm/x86-mont-mac.S | |
35 create mode 100644 crypto/des/asm/crypt586-mac.S | |
36 create mode 100644 crypto/des/asm/des-586-mac.S | |
37 create mode 100644 crypto/md5/asm/md5-586-mac.S | |
38 create mode 100644 crypto/modes/asm/ghash-x86-mac.S | |
39 create mode 100644 crypto/sha/asm/sha1-586-mac.S | |
40 create mode 100644 crypto/sha/asm/sha256-586-mac.S | |
41 create mode 100644 crypto/sha/asm/sha512-586-mac.S | |
42 create mode 100644 crypto/x86cpuid-mac.S | |
43 | |
44 diff --git a/crypto/aes/asm/aes-586-mac.S b/crypto/aes/asm/aes-586-mac.S | |
45 new file mode 100644 | |
46 index 0000000..15d5d7b | |
47 --- /dev/null | |
48 +++ b/crypto/aes/asm/aes-586-mac.S | |
49 @@ -0,0 +1,3200 @@ | |
50 +.file "aes-586.s" | |
51 +.text | |
52 +.align 4 | |
53 +__x86_AES_encrypt_compact: | |
54 + movl %edi,20(%esp) | |
55 + xorl (%edi),%eax | |
56 + xorl 4(%edi),%ebx | |
57 + xorl 8(%edi),%ecx | |
58 + xorl 12(%edi),%edx | |
59 + movl 240(%edi),%esi | |
60 + leal -2(%esi,%esi,1),%esi | |
61 + leal (%edi,%esi,8),%esi | |
62 + movl %esi,24(%esp) | |
63 + movl -128(%ebp),%edi | |
64 + movl -96(%ebp),%esi | |
65 + movl -64(%ebp),%edi | |
66 + movl -32(%ebp),%esi | |
67 + movl (%ebp),%edi | |
68 + movl 32(%ebp),%esi | |
69 + movl 64(%ebp),%edi | |
70 + movl 96(%ebp),%esi | |
71 +.align 4,0x90 | |
72 +L000loop: | |
73 + movl %eax,%esi | |
74 + andl $255,%esi | |
75 + movzbl -128(%ebp,%esi,1),%esi | |
76 + movzbl %bh,%edi | |
77 + movzbl -128(%ebp,%edi,1),%edi | |
78 + shll $8,%edi | |
79 + xorl %edi,%esi | |
80 + movl %ecx,%edi | |
81 + shrl $16,%edi | |
82 + andl $255,%edi | |
83 + movzbl -128(%ebp,%edi,1),%edi | |
84 + shll $16,%edi | |
85 + xorl %edi,%esi | |
86 + movl %edx,%edi | |
87 + shrl $24,%edi | |
88 + movzbl -128(%ebp,%edi,1),%edi | |
89 + shll $24,%edi | |
90 + xorl %edi,%esi | |
91 + movl %esi,4(%esp) | |
92 + movl %ebx,%esi | |
93 + andl $255,%esi | |
94 + shrl $16,%ebx | |
95 + movzbl -128(%ebp,%esi,1),%esi | |
96 + movzbl %ch,%edi | |
97 + movzbl -128(%ebp,%edi,1),%edi | |
98 + shll $8,%edi | |
99 + xorl %edi,%esi | |
100 + movl %edx,%edi | |
101 + shrl $16,%edi | |
102 + andl $255,%edi | |
103 + movzbl -128(%ebp,%edi,1),%edi | |
104 + shll $16,%edi | |
105 + xorl %edi,%esi | |
106 + movl %eax,%edi | |
107 + shrl $24,%edi | |
108 + movzbl -128(%ebp,%edi,1),%edi | |
109 + shll $24,%edi | |
110 + xorl %edi,%esi | |
111 + movl %esi,8(%esp) | |
112 + movl %ecx,%esi | |
113 + andl $255,%esi | |
114 + shrl $24,%ecx | |
115 + movzbl -128(%ebp,%esi,1),%esi | |
116 + movzbl %dh,%edi | |
117 + movzbl -128(%ebp,%edi,1),%edi | |
118 + shll $8,%edi | |
119 + xorl %edi,%esi | |
120 + movl %eax,%edi | |
121 + shrl $16,%edi | |
122 + andl $255,%edx | |
123 + andl $255,%edi | |
124 + movzbl -128(%ebp,%edi,1),%edi | |
125 + shll $16,%edi | |
126 + xorl %edi,%esi | |
127 + movzbl %bh,%edi | |
128 + movzbl -128(%ebp,%edi,1),%edi | |
129 + shll $24,%edi | |
130 + xorl %edi,%esi | |
131 + andl $255,%edx | |
132 + movzbl -128(%ebp,%edx,1),%edx | |
133 + movzbl %ah,%eax | |
134 + movzbl -128(%ebp,%eax,1),%eax | |
135 + shll $8,%eax | |
136 + xorl %eax,%edx | |
137 + movl 4(%esp),%eax | |
138 + andl $255,%ebx | |
139 + movzbl -128(%ebp,%ebx,1),%ebx | |
140 + shll $16,%ebx | |
141 + xorl %ebx,%edx | |
142 + movl 8(%esp),%ebx | |
143 + movzbl -128(%ebp,%ecx,1),%ecx | |
144 + shll $24,%ecx | |
145 + xorl %ecx,%edx | |
146 + movl %esi,%ecx | |
147 + movl %ecx,%esi | |
148 + andl $2155905152,%esi | |
149 + movl %esi,%ebp | |
150 + shrl $7,%ebp | |
151 + leal (%ecx,%ecx,1),%edi | |
152 + subl %ebp,%esi | |
153 + andl $4278124286,%edi | |
154 + andl $454761243,%esi | |
155 + movl %ecx,%ebp | |
156 + xorl %edi,%esi | |
157 + xorl %esi,%ecx | |
158 + roll $24,%ecx | |
159 + xorl %esi,%ecx | |
160 + rorl $16,%ebp | |
161 + xorl %ebp,%ecx | |
162 + rorl $8,%ebp | |
163 + xorl %ebp,%ecx | |
164 + movl %edx,%esi | |
165 + andl $2155905152,%esi | |
166 + movl %esi,%ebp | |
167 + shrl $7,%ebp | |
168 + leal (%edx,%edx,1),%edi | |
169 + subl %ebp,%esi | |
170 + andl $4278124286,%edi | |
171 + andl $454761243,%esi | |
172 + movl %edx,%ebp | |
173 + xorl %edi,%esi | |
174 + xorl %esi,%edx | |
175 + roll $24,%edx | |
176 + xorl %esi,%edx | |
177 + rorl $16,%ebp | |
178 + xorl %ebp,%edx | |
179 + rorl $8,%ebp | |
180 + xorl %ebp,%edx | |
181 + movl %eax,%esi | |
182 + andl $2155905152,%esi | |
183 + movl %esi,%ebp | |
184 + shrl $7,%ebp | |
185 + leal (%eax,%eax,1),%edi | |
186 + subl %ebp,%esi | |
187 + andl $4278124286,%edi | |
188 + andl $454761243,%esi | |
189 + movl %eax,%ebp | |
190 + xorl %edi,%esi | |
191 + xorl %esi,%eax | |
192 + roll $24,%eax | |
193 + xorl %esi,%eax | |
194 + rorl $16,%ebp | |
195 + xorl %ebp,%eax | |
196 + rorl $8,%ebp | |
197 + xorl %ebp,%eax | |
198 + movl %ebx,%esi | |
199 + andl $2155905152,%esi | |
200 + movl %esi,%ebp | |
201 + shrl $7,%ebp | |
202 + leal (%ebx,%ebx,1),%edi | |
203 + subl %ebp,%esi | |
204 + andl $4278124286,%edi | |
205 + andl $454761243,%esi | |
206 + movl %ebx,%ebp | |
207 + xorl %edi,%esi | |
208 + xorl %esi,%ebx | |
209 + roll $24,%ebx | |
210 + xorl %esi,%ebx | |
211 + rorl $16,%ebp | |
212 + xorl %ebp,%ebx | |
213 + rorl $8,%ebp | |
214 + xorl %ebp,%ebx | |
215 + movl 20(%esp),%edi | |
216 + movl 28(%esp),%ebp | |
217 + addl $16,%edi | |
218 + xorl (%edi),%eax | |
219 + xorl 4(%edi),%ebx | |
220 + xorl 8(%edi),%ecx | |
221 + xorl 12(%edi),%edx | |
222 + cmpl 24(%esp),%edi | |
223 + movl %edi,20(%esp) | |
224 + jb L000loop | |
225 + movl %eax,%esi | |
226 + andl $255,%esi | |
227 + movzbl -128(%ebp,%esi,1),%esi | |
228 + movzbl %bh,%edi | |
229 + movzbl -128(%ebp,%edi,1),%edi | |
230 + shll $8,%edi | |
231 + xorl %edi,%esi | |
232 + movl %ecx,%edi | |
233 + shrl $16,%edi | |
234 + andl $255,%edi | |
235 + movzbl -128(%ebp,%edi,1),%edi | |
236 + shll $16,%edi | |
237 + xorl %edi,%esi | |
238 + movl %edx,%edi | |
239 + shrl $24,%edi | |
240 + movzbl -128(%ebp,%edi,1),%edi | |
241 + shll $24,%edi | |
242 + xorl %edi,%esi | |
243 + movl %esi,4(%esp) | |
244 + movl %ebx,%esi | |
245 + andl $255,%esi | |
246 + shrl $16,%ebx | |
247 + movzbl -128(%ebp,%esi,1),%esi | |
248 + movzbl %ch,%edi | |
249 + movzbl -128(%ebp,%edi,1),%edi | |
250 + shll $8,%edi | |
251 + xorl %edi,%esi | |
252 + movl %edx,%edi | |
253 + shrl $16,%edi | |
254 + andl $255,%edi | |
255 + movzbl -128(%ebp,%edi,1),%edi | |
256 + shll $16,%edi | |
257 + xorl %edi,%esi | |
258 + movl %eax,%edi | |
259 + shrl $24,%edi | |
260 + movzbl -128(%ebp,%edi,1),%edi | |
261 + shll $24,%edi | |
262 + xorl %edi,%esi | |
263 + movl %esi,8(%esp) | |
264 + movl %ecx,%esi | |
265 + andl $255,%esi | |
266 + shrl $24,%ecx | |
267 + movzbl -128(%ebp,%esi,1),%esi | |
268 + movzbl %dh,%edi | |
269 + movzbl -128(%ebp,%edi,1),%edi | |
270 + shll $8,%edi | |
271 + xorl %edi,%esi | |
272 + movl %eax,%edi | |
273 + shrl $16,%edi | |
274 + andl $255,%edx | |
275 + andl $255,%edi | |
276 + movzbl -128(%ebp,%edi,1),%edi | |
277 + shll $16,%edi | |
278 + xorl %edi,%esi | |
279 + movzbl %bh,%edi | |
280 + movzbl -128(%ebp,%edi,1),%edi | |
281 + shll $24,%edi | |
282 + xorl %edi,%esi | |
283 + movl 20(%esp),%edi | |
284 + andl $255,%edx | |
285 + movzbl -128(%ebp,%edx,1),%edx | |
286 + movzbl %ah,%eax | |
287 + movzbl -128(%ebp,%eax,1),%eax | |
288 + shll $8,%eax | |
289 + xorl %eax,%edx | |
290 + movl 4(%esp),%eax | |
291 + andl $255,%ebx | |
292 + movzbl -128(%ebp,%ebx,1),%ebx | |
293 + shll $16,%ebx | |
294 + xorl %ebx,%edx | |
295 + movl 8(%esp),%ebx | |
296 + movzbl -128(%ebp,%ecx,1),%ecx | |
297 + shll $24,%ecx | |
298 + xorl %ecx,%edx | |
299 + movl %esi,%ecx | |
300 + xorl 16(%edi),%eax | |
301 + xorl 20(%edi),%ebx | |
302 + xorl 24(%edi),%ecx | |
303 + xorl 28(%edi),%edx | |
304 + ret | |
305 +.align 4 | |
306 +__sse_AES_encrypt_compact: | |
307 + pxor (%edi),%mm0 | |
308 + pxor 8(%edi),%mm4 | |
309 + movl 240(%edi),%esi | |
310 + leal -2(%esi,%esi,1),%esi | |
311 + leal (%edi,%esi,8),%esi | |
312 + movl %esi,24(%esp) | |
313 + movl $454761243,%eax | |
314 + movl %eax,8(%esp) | |
315 + movl %eax,12(%esp) | |
316 + movl -128(%ebp),%eax | |
317 + movl -96(%ebp),%ebx | |
318 + movl -64(%ebp),%ecx | |
319 + movl -32(%ebp),%edx | |
320 + movl (%ebp),%eax | |
321 + movl 32(%ebp),%ebx | |
322 + movl 64(%ebp),%ecx | |
323 + movl 96(%ebp),%edx | |
324 +.align 4,0x90 | |
325 +L001loop: | |
326 + pshufw $8,%mm0,%mm1 | |
327 + pshufw $13,%mm4,%mm5 | |
328 + movd %mm1,%eax | |
329 + movd %mm5,%ebx | |
330 + movzbl %al,%esi | |
331 + movzbl -128(%ebp,%esi,1),%ecx | |
332 + pshufw $13,%mm0,%mm2 | |
333 + movzbl %ah,%edx | |
334 + movzbl -128(%ebp,%edx,1),%edx | |
335 + shll $8,%edx | |
336 + shrl $16,%eax | |
337 + movzbl %bl,%esi | |
338 + movzbl -128(%ebp,%esi,1),%esi | |
339 + shll $16,%esi | |
340 + orl %esi,%ecx | |
341 + pshufw $8,%mm4,%mm6 | |
342 + movzbl %bh,%esi | |
343 + movzbl -128(%ebp,%esi,1),%esi | |
344 + shll $24,%esi | |
345 + orl %esi,%edx | |
346 + shrl $16,%ebx | |
347 + movzbl %ah,%esi | |
348 + movzbl -128(%ebp,%esi,1),%esi | |
349 + shll $8,%esi | |
350 + orl %esi,%ecx | |
351 + movzbl %bh,%esi | |
352 + movzbl -128(%ebp,%esi,1),%esi | |
353 + shll $24,%esi | |
354 + orl %esi,%ecx | |
355 + movd %ecx,%mm0 | |
356 + movzbl %al,%esi | |
357 + movzbl -128(%ebp,%esi,1),%ecx | |
358 + movd %mm2,%eax | |
359 + movzbl %bl,%esi | |
360 + movzbl -128(%ebp,%esi,1),%esi | |
361 + shll $16,%esi | |
362 + orl %esi,%ecx | |
363 + movd %mm6,%ebx | |
364 + movzbl %ah,%esi | |
365 + movzbl -128(%ebp,%esi,1),%esi | |
366 + shll $24,%esi | |
367 + orl %esi,%ecx | |
368 + movzbl %bh,%esi | |
369 + movzbl -128(%ebp,%esi,1),%esi | |
370 + shll $8,%esi | |
371 + orl %esi,%ecx | |
372 + movd %ecx,%mm1 | |
373 + movzbl %bl,%esi | |
374 + movzbl -128(%ebp,%esi,1),%ecx | |
375 + shrl $16,%ebx | |
376 + movzbl %al,%esi | |
377 + movzbl -128(%ebp,%esi,1),%esi | |
378 + shll $16,%esi | |
379 + orl %esi,%ecx | |
380 + shrl $16,%eax | |
381 + punpckldq %mm1,%mm0 | |
382 + movzbl %ah,%esi | |
383 + movzbl -128(%ebp,%esi,1),%esi | |
384 + shll $24,%esi | |
385 + orl %esi,%ecx | |
386 + andl $255,%eax | |
387 + movzbl -128(%ebp,%eax,1),%eax | |
388 + shll $16,%eax | |
389 + orl %eax,%edx | |
390 + movzbl %bh,%esi | |
391 + movzbl -128(%ebp,%esi,1),%esi | |
392 + shll $8,%esi | |
393 + orl %esi,%ecx | |
394 + movd %ecx,%mm4 | |
395 + andl $255,%ebx | |
396 + movzbl -128(%ebp,%ebx,1),%ebx | |
397 + orl %ebx,%edx | |
398 + movd %edx,%mm5 | |
399 + punpckldq %mm5,%mm4 | |
400 + addl $16,%edi | |
401 + cmpl 24(%esp),%edi | |
402 + ja L002out | |
403 + movq 8(%esp),%mm2 | |
404 + pxor %mm3,%mm3 | |
405 + pxor %mm7,%mm7 | |
406 + movq %mm0,%mm1 | |
407 + movq %mm4,%mm5 | |
408 + pcmpgtb %mm0,%mm3 | |
409 + pcmpgtb %mm4,%mm7 | |
410 + pand %mm2,%mm3 | |
411 + pand %mm2,%mm7 | |
412 + pshufw $177,%mm0,%mm2 | |
413 + pshufw $177,%mm4,%mm6 | |
414 + paddb %mm0,%mm0 | |
415 + paddb %mm4,%mm4 | |
416 + pxor %mm3,%mm0 | |
417 + pxor %mm7,%mm4 | |
418 + pshufw $177,%mm2,%mm3 | |
419 + pshufw $177,%mm6,%mm7 | |
420 + pxor %mm0,%mm1 | |
421 + pxor %mm4,%mm5 | |
422 + pxor %mm2,%mm0 | |
423 + pxor %mm6,%mm4 | |
424 + movq %mm3,%mm2 | |
425 + movq %mm7,%mm6 | |
426 + pslld $8,%mm3 | |
427 + pslld $8,%mm7 | |
428 + psrld $24,%mm2 | |
429 + psrld $24,%mm6 | |
430 + pxor %mm3,%mm0 | |
431 + pxor %mm7,%mm4 | |
432 + pxor %mm2,%mm0 | |
433 + pxor %mm6,%mm4 | |
434 + movq %mm1,%mm3 | |
435 + movq %mm5,%mm7 | |
436 + movq (%edi),%mm2 | |
437 + movq 8(%edi),%mm6 | |
438 + psrld $8,%mm1 | |
439 + psrld $8,%mm5 | |
440 + movl -128(%ebp),%eax | |
441 + pslld $24,%mm3 | |
442 + pslld $24,%mm7 | |
443 + movl -64(%ebp),%ebx | |
444 + pxor %mm1,%mm0 | |
445 + pxor %mm5,%mm4 | |
446 + movl (%ebp),%ecx | |
447 + pxor %mm3,%mm0 | |
448 + pxor %mm7,%mm4 | |
449 + movl 64(%ebp),%edx | |
450 + pxor %mm2,%mm0 | |
451 + pxor %mm6,%mm4 | |
452 + jmp L001loop | |
453 +.align 4,0x90 | |
454 +L002out: | |
455 + pxor (%edi),%mm0 | |
456 + pxor 8(%edi),%mm4 | |
457 + ret | |
458 +.align 4 | |
459 +__x86_AES_encrypt: | |
460 + movl %edi,20(%esp) | |
461 + xorl (%edi),%eax | |
462 + xorl 4(%edi),%ebx | |
463 + xorl 8(%edi),%ecx | |
464 + xorl 12(%edi),%edx | |
465 + movl 240(%edi),%esi | |
466 + leal -2(%esi,%esi,1),%esi | |
467 + leal (%edi,%esi,8),%esi | |
468 + movl %esi,24(%esp) | |
469 +.align 4,0x90 | |
470 +L003loop: | |
471 + movl %eax,%esi | |
472 + andl $255,%esi | |
473 + movl (%ebp,%esi,8),%esi | |
474 + movzbl %bh,%edi | |
475 + xorl 3(%ebp,%edi,8),%esi | |
476 + movl %ecx,%edi | |
477 + shrl $16,%edi | |
478 + andl $255,%edi | |
479 + xorl 2(%ebp,%edi,8),%esi | |
480 + movl %edx,%edi | |
481 + shrl $24,%edi | |
482 + xorl 1(%ebp,%edi,8),%esi | |
483 + movl %esi,4(%esp) | |
484 + movl %ebx,%esi | |
485 + andl $255,%esi | |
486 + shrl $16,%ebx | |
487 + movl (%ebp,%esi,8),%esi | |
488 + movzbl %ch,%edi | |
489 + xorl 3(%ebp,%edi,8),%esi | |
490 + movl %edx,%edi | |
491 + shrl $16,%edi | |
492 + andl $255,%edi | |
493 + xorl 2(%ebp,%edi,8),%esi | |
494 + movl %eax,%edi | |
495 + shrl $24,%edi | |
496 + xorl 1(%ebp,%edi,8),%esi | |
497 + movl %esi,8(%esp) | |
498 + movl %ecx,%esi | |
499 + andl $255,%esi | |
500 + shrl $24,%ecx | |
501 + movl (%ebp,%esi,8),%esi | |
502 + movzbl %dh,%edi | |
503 + xorl 3(%ebp,%edi,8),%esi | |
504 + movl %eax,%edi | |
505 + shrl $16,%edi | |
506 + andl $255,%edx | |
507 + andl $255,%edi | |
508 + xorl 2(%ebp,%edi,8),%esi | |
509 + movzbl %bh,%edi | |
510 + xorl 1(%ebp,%edi,8),%esi | |
511 + movl 20(%esp),%edi | |
512 + movl (%ebp,%edx,8),%edx | |
513 + movzbl %ah,%eax | |
514 + xorl 3(%ebp,%eax,8),%edx | |
515 + movl 4(%esp),%eax | |
516 + andl $255,%ebx | |
517 + xorl 2(%ebp,%ebx,8),%edx | |
518 + movl 8(%esp),%ebx | |
519 + xorl 1(%ebp,%ecx,8),%edx | |
520 + movl %esi,%ecx | |
521 + addl $16,%edi | |
522 + xorl (%edi),%eax | |
523 + xorl 4(%edi),%ebx | |
524 + xorl 8(%edi),%ecx | |
525 + xorl 12(%edi),%edx | |
526 + cmpl 24(%esp),%edi | |
527 + movl %edi,20(%esp) | |
528 + jb L003loop | |
529 + movl %eax,%esi | |
530 + andl $255,%esi | |
531 + movl 2(%ebp,%esi,8),%esi | |
532 + andl $255,%esi | |
533 + movzbl %bh,%edi | |
534 + movl (%ebp,%edi,8),%edi | |
535 + andl $65280,%edi | |
536 + xorl %edi,%esi | |
537 + movl %ecx,%edi | |
538 + shrl $16,%edi | |
539 + andl $255,%edi | |
540 + movl (%ebp,%edi,8),%edi | |
541 + andl $16711680,%edi | |
542 + xorl %edi,%esi | |
543 + movl %edx,%edi | |
544 + shrl $24,%edi | |
545 + movl 2(%ebp,%edi,8),%edi | |
546 + andl $4278190080,%edi | |
547 + xorl %edi,%esi | |
548 + movl %esi,4(%esp) | |
549 + movl %ebx,%esi | |
550 + andl $255,%esi | |
551 + shrl $16,%ebx | |
552 + movl 2(%ebp,%esi,8),%esi | |
553 + andl $255,%esi | |
554 + movzbl %ch,%edi | |
555 + movl (%ebp,%edi,8),%edi | |
556 + andl $65280,%edi | |
557 + xorl %edi,%esi | |
558 + movl %edx,%edi | |
559 + shrl $16,%edi | |
560 + andl $255,%edi | |
561 + movl (%ebp,%edi,8),%edi | |
562 + andl $16711680,%edi | |
563 + xorl %edi,%esi | |
564 + movl %eax,%edi | |
565 + shrl $24,%edi | |
566 + movl 2(%ebp,%edi,8),%edi | |
567 + andl $4278190080,%edi | |
568 + xorl %edi,%esi | |
569 + movl %esi,8(%esp) | |
570 + movl %ecx,%esi | |
571 + andl $255,%esi | |
572 + shrl $24,%ecx | |
573 + movl 2(%ebp,%esi,8),%esi | |
574 + andl $255,%esi | |
575 + movzbl %dh,%edi | |
576 + movl (%ebp,%edi,8),%edi | |
577 + andl $65280,%edi | |
578 + xorl %edi,%esi | |
579 + movl %eax,%edi | |
580 + shrl $16,%edi | |
581 + andl $255,%edx | |
582 + andl $255,%edi | |
583 + movl (%ebp,%edi,8),%edi | |
584 + andl $16711680,%edi | |
585 + xorl %edi,%esi | |
586 + movzbl %bh,%edi | |
587 + movl 2(%ebp,%edi,8),%edi | |
588 + andl $4278190080,%edi | |
589 + xorl %edi,%esi | |
590 + movl 20(%esp),%edi | |
591 + andl $255,%edx | |
592 + movl 2(%ebp,%edx,8),%edx | |
593 + andl $255,%edx | |
594 + movzbl %ah,%eax | |
595 + movl (%ebp,%eax,8),%eax | |
596 + andl $65280,%eax | |
597 + xorl %eax,%edx | |
598 + movl 4(%esp),%eax | |
599 + andl $255,%ebx | |
600 + movl (%ebp,%ebx,8),%ebx | |
601 + andl $16711680,%ebx | |
602 + xorl %ebx,%edx | |
603 + movl 8(%esp),%ebx | |
604 + movl 2(%ebp,%ecx,8),%ecx | |
605 + andl $4278190080,%ecx | |
606 + xorl %ecx,%edx | |
607 + movl %esi,%ecx | |
608 + addl $16,%edi | |
609 + xorl (%edi),%eax | |
610 + xorl 4(%edi),%ebx | |
611 + xorl 8(%edi),%ecx | |
612 + xorl 12(%edi),%edx | |
613 + ret | |
614 +.align 6,0x90 | |
615 +LAES_Te: | |
616 +.long 2774754246,2774754246 | |
617 +.long 2222750968,2222750968 | |
618 +.long 2574743534,2574743534 | |
619 +.long 2373680118,2373680118 | |
620 +.long 234025727,234025727 | |
621 +.long 3177933782,3177933782 | |
622 +.long 2976870366,2976870366 | |
623 +.long 1422247313,1422247313 | |
624 +.long 1345335392,1345335392 | |
625 +.long 50397442,50397442 | |
626 +.long 2842126286,2842126286 | |
627 +.long 2099981142,2099981142 | |
628 +.long 436141799,436141799 | |
629 +.long 1658312629,1658312629 | |
630 +.long 3870010189,3870010189 | |
631 +.long 2591454956,2591454956 | |
632 +.long 1170918031,1170918031 | |
633 +.long 2642575903,2642575903 | |
634 +.long 1086966153,1086966153 | |
635 +.long 2273148410,2273148410 | |
636 +.long 368769775,368769775 | |
637 +.long 3948501426,3948501426 | |
638 +.long 3376891790,3376891790 | |
639 +.long 200339707,200339707 | |
640 +.long 3970805057,3970805057 | |
641 +.long 1742001331,1742001331 | |
642 +.long 4255294047,4255294047 | |
643 +.long 3937382213,3937382213 | |
644 +.long 3214711843,3214711843 | |
645 +.long 4154762323,4154762323 | |
646 +.long 2524082916,2524082916 | |
647 +.long 1539358875,1539358875 | |
648 +.long 3266819957,3266819957 | |
649 +.long 486407649,486407649 | |
650 +.long 2928907069,2928907069 | |
651 +.long 1780885068,1780885068 | |
652 +.long 1513502316,1513502316 | |
653 +.long 1094664062,1094664062 | |
654 +.long 49805301,49805301 | |
655 +.long 1338821763,1338821763 | |
656 +.long 1546925160,1546925160 | |
657 +.long 4104496465,4104496465 | |
658 +.long 887481809,887481809 | |
659 +.long 150073849,150073849 | |
660 +.long 2473685474,2473685474 | |
661 +.long 1943591083,1943591083 | |
662 +.long 1395732834,1395732834 | |
663 +.long 1058346282,1058346282 | |
664 +.long 201589768,201589768 | |
665 +.long 1388824469,1388824469 | |
666 +.long 1696801606,1696801606 | |
667 +.long 1589887901,1589887901 | |
668 +.long 672667696,672667696 | |
669 +.long 2711000631,2711000631 | |
670 +.long 251987210,251987210 | |
671 +.long 3046808111,3046808111 | |
672 +.long 151455502,151455502 | |
673 +.long 907153956,907153956 | |
674 +.long 2608889883,2608889883 | |
675 +.long 1038279391,1038279391 | |
676 +.long 652995533,652995533 | |
677 +.long 1764173646,1764173646 | |
678 +.long 3451040383,3451040383 | |
679 +.long 2675275242,2675275242 | |
680 +.long 453576978,453576978 | |
681 +.long 2659418909,2659418909 | |
682 +.long 1949051992,1949051992 | |
683 +.long 773462580,773462580 | |
684 +.long 756751158,756751158 | |
685 +.long 2993581788,2993581788 | |
686 +.long 3998898868,3998898868 | |
687 +.long 4221608027,4221608027 | |
688 +.long 4132590244,4132590244 | |
689 +.long 1295727478,1295727478 | |
690 +.long 1641469623,1641469623 | |
691 +.long 3467883389,3467883389 | |
692 +.long 2066295122,2066295122 | |
693 +.long 1055122397,1055122397 | |
694 +.long 1898917726,1898917726 | |
695 +.long 2542044179,2542044179 | |
696 +.long 4115878822,4115878822 | |
697 +.long 1758581177,1758581177 | |
698 +.long 0,0 | |
699 +.long 753790401,753790401 | |
700 +.long 1612718144,1612718144 | |
701 +.long 536673507,536673507 | |
702 +.long 3367088505,3367088505 | |
703 +.long 3982187446,3982187446 | |
704 +.long 3194645204,3194645204 | |
705 +.long 1187761037,1187761037 | |
706 +.long 3653156455,3653156455 | |
707 +.long 1262041458,1262041458 | |
708 +.long 3729410708,3729410708 | |
709 +.long 3561770136,3561770136 | |
710 +.long 3898103984,3898103984 | |
711 +.long 1255133061,1255133061 | |
712 +.long 1808847035,1808847035 | |
713 +.long 720367557,720367557 | |
714 +.long 3853167183,3853167183 | |
715 +.long 385612781,385612781 | |
716 +.long 3309519750,3309519750 | |
717 +.long 3612167578,3612167578 | |
718 +.long 1429418854,1429418854 | |
719 +.long 2491778321,2491778321 | |
720 +.long 3477423498,3477423498 | |
721 +.long 284817897,284817897 | |
722 +.long 100794884,100794884 | |
723 +.long 2172616702,2172616702 | |
724 +.long 4031795360,4031795360 | |
725 +.long 1144798328,1144798328 | |
726 +.long 3131023141,3131023141 | |
727 +.long 3819481163,3819481163 | |
728 +.long 4082192802,4082192802 | |
729 +.long 4272137053,4272137053 | |
730 +.long 3225436288,3225436288 | |
731 +.long 2324664069,2324664069 | |
732 +.long 2912064063,2912064063 | |
733 +.long 3164445985,3164445985 | |
734 +.long 1211644016,1211644016 | |
735 +.long 83228145,83228145 | |
736 +.long 3753688163,3753688163 | |
737 +.long 3249976951,3249976951 | |
738 +.long 1977277103,1977277103 | |
739 +.long 1663115586,1663115586 | |
740 +.long 806359072,806359072 | |
741 +.long 452984805,452984805 | |
742 +.long 250868733,250868733 | |
743 +.long 1842533055,1842533055 | |
744 +.long 1288555905,1288555905 | |
745 +.long 336333848,336333848 | |
746 +.long 890442534,890442534 | |
747 +.long 804056259,804056259 | |
748 +.long 3781124030,3781124030 | |
749 +.long 2727843637,2727843637 | |
750 +.long 3427026056,3427026056 | |
751 +.long 957814574,957814574 | |
752 +.long 1472513171,1472513171 | |
753 +.long 4071073621,4071073621 | |
754 +.long 2189328124,2189328124 | |
755 +.long 1195195770,1195195770 | |
756 +.long 2892260552,2892260552 | |
757 +.long 3881655738,3881655738 | |
758 +.long 723065138,723065138 | |
759 +.long 2507371494,2507371494 | |
760 +.long 2690670784,2690670784 | |
761 +.long 2558624025,2558624025 | |
762 +.long 3511635870,3511635870 | |
763 +.long 2145180835,2145180835 | |
764 +.long 1713513028,1713513028 | |
765 +.long 2116692564,2116692564 | |
766 +.long 2878378043,2878378043 | |
767 +.long 2206763019,2206763019 | |
768 +.long 3393603212,3393603212 | |
769 +.long 703524551,703524551 | |
770 +.long 3552098411,3552098411 | |
771 +.long 1007948840,1007948840 | |
772 +.long 2044649127,2044649127 | |
773 +.long 3797835452,3797835452 | |
774 +.long 487262998,487262998 | |
775 +.long 1994120109,1994120109 | |
776 +.long 1004593371,1004593371 | |
777 +.long 1446130276,1446130276 | |
778 +.long 1312438900,1312438900 | |
779 +.long 503974420,503974420 | |
780 +.long 3679013266,3679013266 | |
781 +.long 168166924,168166924 | |
782 +.long 1814307912,1814307912 | |
783 +.long 3831258296,3831258296 | |
784 +.long 1573044895,1573044895 | |
785 +.long 1859376061,1859376061 | |
786 +.long 4021070915,4021070915 | |
787 +.long 2791465668,2791465668 | |
788 +.long 2828112185,2828112185 | |
789 +.long 2761266481,2761266481 | |
790 +.long 937747667,937747667 | |
791 +.long 2339994098,2339994098 | |
792 +.long 854058965,854058965 | |
793 +.long 1137232011,1137232011 | |
794 +.long 1496790894,1496790894 | |
795 +.long 3077402074,3077402074 | |
796 +.long 2358086913,2358086913 | |
797 +.long 1691735473,1691735473 | |
798 +.long 3528347292,3528347292 | |
799 +.long 3769215305,3769215305 | |
800 +.long 3027004632,3027004632 | |
801 +.long 4199962284,4199962284 | |
802 +.long 133494003,133494003 | |
803 +.long 636152527,636152527 | |
804 +.long 2942657994,2942657994 | |
805 +.long 2390391540,2390391540 | |
806 +.long 3920539207,3920539207 | |
807 +.long 403179536,403179536 | |
808 +.long 3585784431,3585784431 | |
809 +.long 2289596656,2289596656 | |
810 +.long 1864705354,1864705354 | |
811 +.long 1915629148,1915629148 | |
812 +.long 605822008,605822008 | |
813 +.long 4054230615,4054230615 | |
814 +.long 3350508659,3350508659 | |
815 +.long 1371981463,1371981463 | |
816 +.long 602466507,602466507 | |
817 +.long 2094914977,2094914977 | |
818 +.long 2624877800,2624877800 | |
819 +.long 555687742,555687742 | |
820 +.long 3712699286,3712699286 | |
821 +.long 3703422305,3703422305 | |
822 +.long 2257292045,2257292045 | |
823 +.long 2240449039,2240449039 | |
824 +.long 2423288032,2423288032 | |
825 +.long 1111375484,1111375484 | |
826 +.long 3300242801,3300242801 | |
827 +.long 2858837708,2858837708 | |
828 +.long 3628615824,3628615824 | |
829 +.long 84083462,84083462 | |
830 +.long 32962295,32962295 | |
831 +.long 302911004,302911004 | |
832 +.long 2741068226,2741068226 | |
833 +.long 1597322602,1597322602 | |
834 +.long 4183250862,4183250862 | |
835 +.long 3501832553,3501832553 | |
836 +.long 2441512471,2441512471 | |
837 +.long 1489093017,1489093017 | |
838 +.long 656219450,656219450 | |
839 +.long 3114180135,3114180135 | |
840 +.long 954327513,954327513 | |
841 +.long 335083755,335083755 | |
842 +.long 3013122091,3013122091 | |
843 +.long 856756514,856756514 | |
844 +.long 3144247762,3144247762 | |
845 +.long 1893325225,1893325225 | |
846 +.long 2307821063,2307821063 | |
847 +.long 2811532339,2811532339 | |
848 +.long 3063651117,3063651117 | |
849 +.long 572399164,572399164 | |
850 +.long 2458355477,2458355477 | |
851 +.long 552200649,552200649 | |
852 +.long 1238290055,1238290055 | |
853 +.long 4283782570,4283782570 | |
854 +.long 2015897680,2015897680 | |
855 +.long 2061492133,2061492133 | |
856 +.long 2408352771,2408352771 | |
857 +.long 4171342169,4171342169 | |
858 +.long 2156497161,2156497161 | |
859 +.long 386731290,386731290 | |
860 +.long 3669999461,3669999461 | |
861 +.long 837215959,837215959 | |
862 +.long 3326231172,3326231172 | |
863 +.long 3093850320,3093850320 | |
864 +.long 3275833730,3275833730 | |
865 +.long 2962856233,2962856233 | |
866 +.long 1999449434,1999449434 | |
867 +.long 286199582,286199582 | |
868 +.long 3417354363,3417354363 | |
869 +.long 4233385128,4233385128 | |
870 +.long 3602627437,3602627437 | |
871 +.long 974525996,974525996 | |
872 +.byte 99,124,119,123,242,107,111,197 | |
873 +.byte 48,1,103,43,254,215,171,118 | |
874 +.byte 202,130,201,125,250,89,71,240 | |
875 +.byte 173,212,162,175,156,164,114,192 | |
876 +.byte 183,253,147,38,54,63,247,204 | |
877 +.byte 52,165,229,241,113,216,49,21 | |
878 +.byte 4,199,35,195,24,150,5,154 | |
879 +.byte 7,18,128,226,235,39,178,117 | |
880 +.byte 9,131,44,26,27,110,90,160 | |
881 +.byte 82,59,214,179,41,227,47,132 | |
882 +.byte 83,209,0,237,32,252,177,91 | |
883 +.byte 106,203,190,57,74,76,88,207 | |
884 +.byte 208,239,170,251,67,77,51,133 | |
885 +.byte 69,249,2,127,80,60,159,168 | |
886 +.byte 81,163,64,143,146,157,56,245 | |
887 +.byte 188,182,218,33,16,255,243,210 | |
888 +.byte 205,12,19,236,95,151,68,23 | |
889 +.byte 196,167,126,61,100,93,25,115 | |
890 +.byte 96,129,79,220,34,42,144,136 | |
891 +.byte 70,238,184,20,222,94,11,219 | |
892 +.byte 224,50,58,10,73,6,36,92 | |
893 +.byte 194,211,172,98,145,149,228,121 | |
894 +.byte 231,200,55,109,141,213,78,169 | |
895 +.byte 108,86,244,234,101,122,174,8 | |
896 +.byte 186,120,37,46,28,166,180,198 | |
897 +.byte 232,221,116,31,75,189,139,138 | |
898 +.byte 112,62,181,102,72,3,246,14 | |
899 +.byte 97,53,87,185,134,193,29,158 | |
900 +.byte 225,248,152,17,105,217,142,148 | |
901 +.byte 155,30,135,233,206,85,40,223 | |
902 +.byte 140,161,137,13,191,230,66,104 | |
903 +.byte 65,153,45,15,176,84,187,22 | |
904 +.byte 99,124,119,123,242,107,111,197 | |
905 +.byte 48,1,103,43,254,215,171,118 | |
906 +.byte 202,130,201,125,250,89,71,240 | |
907 +.byte 173,212,162,175,156,164,114,192 | |
908 +.byte 183,253,147,38,54,63,247,204 | |
909 +.byte 52,165,229,241,113,216,49,21 | |
910 +.byte 4,199,35,195,24,150,5,154 | |
911 +.byte 7,18,128,226,235,39,178,117 | |
912 +.byte 9,131,44,26,27,110,90,160 | |
913 +.byte 82,59,214,179,41,227,47,132 | |
914 +.byte 83,209,0,237,32,252,177,91 | |
915 +.byte 106,203,190,57,74,76,88,207 | |
916 +.byte 208,239,170,251,67,77,51,133 | |
917 +.byte 69,249,2,127,80,60,159,168 | |
918 +.byte 81,163,64,143,146,157,56,245 | |
919 +.byte 188,182,218,33,16,255,243,210 | |
920 +.byte 205,12,19,236,95,151,68,23 | |
921 +.byte 196,167,126,61,100,93,25,115 | |
922 +.byte 96,129,79,220,34,42,144,136 | |
923 +.byte 70,238,184,20,222,94,11,219 | |
924 +.byte 224,50,58,10,73,6,36,92 | |
925 +.byte 194,211,172,98,145,149,228,121 | |
926 +.byte 231,200,55,109,141,213,78,169 | |
927 +.byte 108,86,244,234,101,122,174,8 | |
928 +.byte 186,120,37,46,28,166,180,198 | |
929 +.byte 232,221,116,31,75,189,139,138 | |
930 +.byte 112,62,181,102,72,3,246,14 | |
931 +.byte 97,53,87,185,134,193,29,158 | |
932 +.byte 225,248,152,17,105,217,142,148 | |
933 +.byte 155,30,135,233,206,85,40,223 | |
934 +.byte 140,161,137,13,191,230,66,104 | |
935 +.byte 65,153,45,15,176,84,187,22 | |
936 +.byte 99,124,119,123,242,107,111,197 | |
937 +.byte 48,1,103,43,254,215,171,118 | |
938 +.byte 202,130,201,125,250,89,71,240 | |
939 +.byte 173,212,162,175,156,164,114,192 | |
940 +.byte 183,253,147,38,54,63,247,204 | |
941 +.byte 52,165,229,241,113,216,49,21 | |
942 +.byte 4,199,35,195,24,150,5,154 | |
943 +.byte 7,18,128,226,235,39,178,117 | |
944 +.byte 9,131,44,26,27,110,90,160 | |
945 +.byte 82,59,214,179,41,227,47,132 | |
946 +.byte 83,209,0,237,32,252,177,91 | |
947 +.byte 106,203,190,57,74,76,88,207 | |
948 +.byte 208,239,170,251,67,77,51,133 | |
949 +.byte 69,249,2,127,80,60,159,168 | |
950 +.byte 81,163,64,143,146,157,56,245 | |
951 +.byte 188,182,218,33,16,255,243,210 | |
952 +.byte 205,12,19,236,95,151,68,23 | |
953 +.byte 196,167,126,61,100,93,25,115 | |
954 +.byte 96,129,79,220,34,42,144,136 | |
955 +.byte 70,238,184,20,222,94,11,219 | |
956 +.byte 224,50,58,10,73,6,36,92 | |
957 +.byte 194,211,172,98,145,149,228,121 | |
958 +.byte 231,200,55,109,141,213,78,169 | |
959 +.byte 108,86,244,234,101,122,174,8 | |
960 +.byte 186,120,37,46,28,166,180,198 | |
961 +.byte 232,221,116,31,75,189,139,138 | |
962 +.byte 112,62,181,102,72,3,246,14 | |
963 +.byte 97,53,87,185,134,193,29,158 | |
964 +.byte 225,248,152,17,105,217,142,148 | |
965 +.byte 155,30,135,233,206,85,40,223 | |
966 +.byte 140,161,137,13,191,230,66,104 | |
967 +.byte 65,153,45,15,176,84,187,22 | |
968 +.byte 99,124,119,123,242,107,111,197 | |
969 +.byte 48,1,103,43,254,215,171,118 | |
970 +.byte 202,130,201,125,250,89,71,240 | |
971 +.byte 173,212,162,175,156,164,114,192 | |
972 +.byte 183,253,147,38,54,63,247,204 | |
973 +.byte 52,165,229,241,113,216,49,21 | |
974 +.byte 4,199,35,195,24,150,5,154 | |
975 +.byte 7,18,128,226,235,39,178,117 | |
976 +.byte 9,131,44,26,27,110,90,160 | |
977 +.byte 82,59,214,179,41,227,47,132 | |
978 +.byte 83,209,0,237,32,252,177,91 | |
979 +.byte 106,203,190,57,74,76,88,207 | |
980 +.byte 208,239,170,251,67,77,51,133 | |
981 +.byte 69,249,2,127,80,60,159,168 | |
982 +.byte 81,163,64,143,146,157,56,245 | |
983 +.byte 188,182,218,33,16,255,243,210 | |
984 +.byte 205,12,19,236,95,151,68,23 | |
985 +.byte 196,167,126,61,100,93,25,115 | |
986 +.byte 96,129,79,220,34,42,144,136 | |
987 +.byte 70,238,184,20,222,94,11,219 | |
988 +.byte 224,50,58,10,73,6,36,92 | |
989 +.byte 194,211,172,98,145,149,228,121 | |
990 +.byte 231,200,55,109,141,213,78,169 | |
991 +.byte 108,86,244,234,101,122,174,8 | |
992 +.byte 186,120,37,46,28,166,180,198 | |
993 +.byte 232,221,116,31,75,189,139,138 | |
994 +.byte 112,62,181,102,72,3,246,14 | |
995 +.byte 97,53,87,185,134,193,29,158 | |
996 +.byte 225,248,152,17,105,217,142,148 | |
997 +.byte 155,30,135,233,206,85,40,223 | |
998 +.byte 140,161,137,13,191,230,66,104 | |
999 +.byte 65,153,45,15,176,84,187,22 | |
1000 +.long 1,2,4,8 | |
1001 +.long 16,32,64,128 | |
1002 +.long 27,54,0,0 | |
1003 +.long 0,0,0,0 | |
1004 +.globl _AES_encrypt | |
1005 +.align 4 | |
1006 +_AES_encrypt: | |
1007 +L_AES_encrypt_begin: | |
1008 + pushl %ebp | |
1009 + pushl %ebx | |
1010 + pushl %esi | |
1011 + pushl %edi | |
1012 + movl 20(%esp),%esi | |
1013 + movl 28(%esp),%edi | |
1014 + movl %esp,%eax | |
1015 + subl $36,%esp | |
1016 + andl $-64,%esp | |
1017 + leal -127(%edi),%ebx | |
1018 + subl %esp,%ebx | |
1019 + negl %ebx | |
1020 + andl $960,%ebx | |
1021 + subl %ebx,%esp | |
1022 + addl $4,%esp | |
1023 + movl %eax,28(%esp) | |
1024 + call L004pic_point | |
1025 +L004pic_point: | |
1026 + popl %ebp | |
1027 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L004pic_point(%ebp),%eax | |
1028 + leal LAES_Te-L004pic_point(%ebp),%ebp | |
1029 + leal 764(%esp),%ebx | |
1030 + subl %ebp,%ebx | |
1031 + andl $768,%ebx | |
1032 + leal 2176(%ebp,%ebx,1),%ebp | |
1033 + btl $25,(%eax) | |
1034 + jnc L005x86 | |
1035 + movq (%esi),%mm0 | |
1036 + movq 8(%esi),%mm4 | |
1037 + call __sse_AES_encrypt_compact | |
1038 + movl 28(%esp),%esp | |
1039 + movl 24(%esp),%esi | |
1040 + movq %mm0,(%esi) | |
1041 + movq %mm4,8(%esi) | |
1042 + emms | |
1043 + popl %edi | |
1044 + popl %esi | |
1045 + popl %ebx | |
1046 + popl %ebp | |
1047 + ret | |
1048 +.align 4,0x90 | |
1049 +L005x86: | |
1050 + movl %ebp,24(%esp) | |
1051 + movl (%esi),%eax | |
1052 + movl 4(%esi),%ebx | |
1053 + movl 8(%esi),%ecx | |
1054 + movl 12(%esi),%edx | |
1055 + call __x86_AES_encrypt_compact | |
1056 + movl 28(%esp),%esp | |
1057 + movl 24(%esp),%esi | |
1058 + movl %eax,(%esi) | |
1059 + movl %ebx,4(%esi) | |
1060 + movl %ecx,8(%esi) | |
1061 + movl %edx,12(%esi) | |
1062 + popl %edi | |
1063 + popl %esi | |
1064 + popl %ebx | |
1065 + popl %ebp | |
1066 + ret | |
1067 +.align 4 | |
1068 +__x86_AES_decrypt_compact: | |
1069 + movl %edi,20(%esp) | |
1070 + xorl (%edi),%eax | |
1071 + xorl 4(%edi),%ebx | |
1072 + xorl 8(%edi),%ecx | |
1073 + xorl 12(%edi),%edx | |
1074 + movl 240(%edi),%esi | |
1075 + leal -2(%esi,%esi,1),%esi | |
1076 + leal (%edi,%esi,8),%esi | |
1077 + movl %esi,24(%esp) | |
1078 + movl -128(%ebp),%edi | |
1079 + movl -96(%ebp),%esi | |
1080 + movl -64(%ebp),%edi | |
1081 + movl -32(%ebp),%esi | |
1082 + movl (%ebp),%edi | |
1083 + movl 32(%ebp),%esi | |
1084 + movl 64(%ebp),%edi | |
1085 + movl 96(%ebp),%esi | |
1086 +.align 4,0x90 | |
1087 +L006loop: | |
1088 + movl %eax,%esi | |
1089 + andl $255,%esi | |
1090 + movzbl -128(%ebp,%esi,1),%esi | |
1091 + movzbl %dh,%edi | |
1092 + movzbl -128(%ebp,%edi,1),%edi | |
1093 + shll $8,%edi | |
1094 + xorl %edi,%esi | |
1095 + movl %ecx,%edi | |
1096 + shrl $16,%edi | |
1097 + andl $255,%edi | |
1098 + movzbl -128(%ebp,%edi,1),%edi | |
1099 + shll $16,%edi | |
1100 + xorl %edi,%esi | |
1101 + movl %ebx,%edi | |
1102 + shrl $24,%edi | |
1103 + movzbl -128(%ebp,%edi,1),%edi | |
1104 + shll $24,%edi | |
1105 + xorl %edi,%esi | |
1106 + movl %esi,4(%esp) | |
1107 + movl %ebx,%esi | |
1108 + andl $255,%esi | |
1109 + movzbl -128(%ebp,%esi,1),%esi | |
1110 + movzbl %ah,%edi | |
1111 + movzbl -128(%ebp,%edi,1),%edi | |
1112 + shll $8,%edi | |
1113 + xorl %edi,%esi | |
1114 + movl %edx,%edi | |
1115 + shrl $16,%edi | |
1116 + andl $255,%edi | |
1117 + movzbl -128(%ebp,%edi,1),%edi | |
1118 + shll $16,%edi | |
1119 + xorl %edi,%esi | |
1120 + movl %ecx,%edi | |
1121 + shrl $24,%edi | |
1122 + movzbl -128(%ebp,%edi,1),%edi | |
1123 + shll $24,%edi | |
1124 + xorl %edi,%esi | |
1125 + movl %esi,8(%esp) | |
1126 + movl %ecx,%esi | |
1127 + andl $255,%esi | |
1128 + movzbl -128(%ebp,%esi,1),%esi | |
1129 + movzbl %bh,%edi | |
1130 + movzbl -128(%ebp,%edi,1),%edi | |
1131 + shll $8,%edi | |
1132 + xorl %edi,%esi | |
1133 + movl %eax,%edi | |
1134 + shrl $16,%edi | |
1135 + andl $255,%edi | |
1136 + movzbl -128(%ebp,%edi,1),%edi | |
1137 + shll $16,%edi | |
1138 + xorl %edi,%esi | |
1139 + movl %edx,%edi | |
1140 + shrl $24,%edi | |
1141 + movzbl -128(%ebp,%edi,1),%edi | |
1142 + shll $24,%edi | |
1143 + xorl %edi,%esi | |
1144 + andl $255,%edx | |
1145 + movzbl -128(%ebp,%edx,1),%edx | |
1146 + movzbl %ch,%ecx | |
1147 + movzbl -128(%ebp,%ecx,1),%ecx | |
1148 + shll $8,%ecx | |
1149 + xorl %ecx,%edx | |
1150 + movl %esi,%ecx | |
1151 + shrl $16,%ebx | |
1152 + andl $255,%ebx | |
1153 + movzbl -128(%ebp,%ebx,1),%ebx | |
1154 + shll $16,%ebx | |
1155 + xorl %ebx,%edx | |
1156 + shrl $24,%eax | |
1157 + movzbl -128(%ebp,%eax,1),%eax | |
1158 + shll $24,%eax | |
1159 + xorl %eax,%edx | |
1160 + movl %ecx,%esi | |
1161 + andl $2155905152,%esi | |
1162 + movl %esi,%edi | |
1163 + shrl $7,%edi | |
1164 + leal (%ecx,%ecx,1),%eax | |
1165 + subl %edi,%esi | |
1166 + andl $4278124286,%eax | |
1167 + andl $454761243,%esi | |
1168 + xorl %eax,%esi | |
1169 + movl %esi,%eax | |
1170 + andl $2155905152,%esi | |
1171 + movl %esi,%edi | |
1172 + shrl $7,%edi | |
1173 + leal (%eax,%eax,1),%ebx | |
1174 + subl %edi,%esi | |
1175 + andl $4278124286,%ebx | |
1176 + andl $454761243,%esi | |
1177 + xorl %ecx,%eax | |
1178 + xorl %ebx,%esi | |
1179 + movl %esi,%ebx | |
1180 + andl $2155905152,%esi | |
1181 + movl %esi,%edi | |
1182 + shrl $7,%edi | |
1183 + leal (%ebx,%ebx,1),%ebp | |
1184 + subl %edi,%esi | |
1185 + andl $4278124286,%ebp | |
1186 + andl $454761243,%esi | |
1187 + xorl %ecx,%ebx | |
1188 + roll $8,%ecx | |
1189 + xorl %esi,%ebp | |
1190 + xorl %eax,%ecx | |
1191 + xorl %ebp,%eax | |
1192 + roll $24,%eax | |
1193 + xorl %ebx,%ecx | |
1194 + xorl %ebp,%ebx | |
1195 + roll $16,%ebx | |
1196 + xorl %ebp,%ecx | |
1197 + roll $8,%ebp | |
1198 + xorl %eax,%ecx | |
1199 + xorl %ebx,%ecx | |
1200 + movl 4(%esp),%eax | |
1201 + xorl %ebp,%ecx | |
1202 + movl %ecx,12(%esp) | |
1203 + movl %edx,%esi | |
1204 + andl $2155905152,%esi | |
1205 + movl %esi,%edi | |
1206 + shrl $7,%edi | |
1207 + leal (%edx,%edx,1),%ebx | |
1208 + subl %edi,%esi | |
1209 + andl $4278124286,%ebx | |
1210 + andl $454761243,%esi | |
1211 + xorl %ebx,%esi | |
1212 + movl %esi,%ebx | |
1213 + andl $2155905152,%esi | |
1214 + movl %esi,%edi | |
1215 + shrl $7,%edi | |
1216 + leal (%ebx,%ebx,1),%ecx | |
1217 + subl %edi,%esi | |
1218 + andl $4278124286,%ecx | |
1219 + andl $454761243,%esi | |
1220 + xorl %edx,%ebx | |
1221 + xorl %ecx,%esi | |
1222 + movl %esi,%ecx | |
1223 + andl $2155905152,%esi | |
1224 + movl %esi,%edi | |
1225 + shrl $7,%edi | |
1226 + leal (%ecx,%ecx,1),%ebp | |
1227 + subl %edi,%esi | |
1228 + andl $4278124286,%ebp | |
1229 + andl $454761243,%esi | |
1230 + xorl %edx,%ecx | |
1231 + roll $8,%edx | |
1232 + xorl %esi,%ebp | |
1233 + xorl %ebx,%edx | |
1234 + xorl %ebp,%ebx | |
1235 + roll $24,%ebx | |
1236 + xorl %ecx,%edx | |
1237 + xorl %ebp,%ecx | |
1238 + roll $16,%ecx | |
1239 + xorl %ebp,%edx | |
1240 + roll $8,%ebp | |
1241 + xorl %ebx,%edx | |
1242 + xorl %ecx,%edx | |
1243 + movl 8(%esp),%ebx | |
1244 + xorl %ebp,%edx | |
1245 + movl %edx,16(%esp) | |
1246 + movl %eax,%esi | |
1247 + andl $2155905152,%esi | |
1248 + movl %esi,%edi | |
1249 + shrl $7,%edi | |
1250 + leal (%eax,%eax,1),%ecx | |
1251 + subl %edi,%esi | |
1252 + andl $4278124286,%ecx | |
1253 + andl $454761243,%esi | |
1254 + xorl %ecx,%esi | |
1255 + movl %esi,%ecx | |
1256 + andl $2155905152,%esi | |
1257 + movl %esi,%edi | |
1258 + shrl $7,%edi | |
1259 + leal (%ecx,%ecx,1),%edx | |
1260 + subl %edi,%esi | |
1261 + andl $4278124286,%edx | |
1262 + andl $454761243,%esi | |
1263 + xorl %eax,%ecx | |
1264 + xorl %edx,%esi | |
1265 + movl %esi,%edx | |
1266 + andl $2155905152,%esi | |
1267 + movl %esi,%edi | |
1268 + shrl $7,%edi | |
1269 + leal (%edx,%edx,1),%ebp | |
1270 + subl %edi,%esi | |
1271 + andl $4278124286,%ebp | |
1272 + andl $454761243,%esi | |
1273 + xorl %eax,%edx | |
1274 + roll $8,%eax | |
1275 + xorl %esi,%ebp | |
1276 + xorl %ecx,%eax | |
1277 + xorl %ebp,%ecx | |
1278 + roll $24,%ecx | |
1279 + xorl %edx,%eax | |
1280 + xorl %ebp,%edx | |
1281 + roll $16,%edx | |
1282 + xorl %ebp,%eax | |
1283 + roll $8,%ebp | |
1284 + xorl %ecx,%eax | |
1285 + xorl %edx,%eax | |
1286 + xorl %ebp,%eax | |
1287 + movl %ebx,%esi | |
1288 + andl $2155905152,%esi | |
1289 + movl %esi,%edi | |
1290 + shrl $7,%edi | |
1291 + leal (%ebx,%ebx,1),%ecx | |
1292 + subl %edi,%esi | |
1293 + andl $4278124286,%ecx | |
1294 + andl $454761243,%esi | |
1295 + xorl %ecx,%esi | |
1296 + movl %esi,%ecx | |
1297 + andl $2155905152,%esi | |
1298 + movl %esi,%edi | |
1299 + shrl $7,%edi | |
1300 + leal (%ecx,%ecx,1),%edx | |
1301 + subl %edi,%esi | |
1302 + andl $4278124286,%edx | |
1303 + andl $454761243,%esi | |
1304 + xorl %ebx,%ecx | |
1305 + xorl %edx,%esi | |
1306 + movl %esi,%edx | |
1307 + andl $2155905152,%esi | |
1308 + movl %esi,%edi | |
1309 + shrl $7,%edi | |
1310 + leal (%edx,%edx,1),%ebp | |
1311 + subl %edi,%esi | |
1312 + andl $4278124286,%ebp | |
1313 + andl $454761243,%esi | |
1314 + xorl %ebx,%edx | |
1315 + roll $8,%ebx | |
1316 + xorl %esi,%ebp | |
1317 + xorl %ecx,%ebx | |
1318 + xorl %ebp,%ecx | |
1319 + roll $24,%ecx | |
1320 + xorl %edx,%ebx | |
1321 + xorl %ebp,%edx | |
1322 + roll $16,%edx | |
1323 + xorl %ebp,%ebx | |
1324 + roll $8,%ebp | |
1325 + xorl %ecx,%ebx | |
1326 + xorl %edx,%ebx | |
1327 + movl 12(%esp),%ecx | |
1328 + xorl %ebp,%ebx | |
1329 + movl 16(%esp),%edx | |
1330 + movl 20(%esp),%edi | |
1331 + movl 28(%esp),%ebp | |
1332 + addl $16,%edi | |
1333 + xorl (%edi),%eax | |
1334 + xorl 4(%edi),%ebx | |
1335 + xorl 8(%edi),%ecx | |
1336 + xorl 12(%edi),%edx | |
1337 + cmpl 24(%esp),%edi | |
1338 + movl %edi,20(%esp) | |
1339 + jb L006loop | |
1340 + movl %eax,%esi | |
1341 + andl $255,%esi | |
1342 + movzbl -128(%ebp,%esi,1),%esi | |
1343 + movzbl %dh,%edi | |
1344 + movzbl -128(%ebp,%edi,1),%edi | |
1345 + shll $8,%edi | |
1346 + xorl %edi,%esi | |
1347 + movl %ecx,%edi | |
1348 + shrl $16,%edi | |
1349 + andl $255,%edi | |
1350 + movzbl -128(%ebp,%edi,1),%edi | |
1351 + shll $16,%edi | |
1352 + xorl %edi,%esi | |
1353 + movl %ebx,%edi | |
1354 + shrl $24,%edi | |
1355 + movzbl -128(%ebp,%edi,1),%edi | |
1356 + shll $24,%edi | |
1357 + xorl %edi,%esi | |
1358 + movl %esi,4(%esp) | |
1359 + movl %ebx,%esi | |
1360 + andl $255,%esi | |
1361 + movzbl -128(%ebp,%esi,1),%esi | |
1362 + movzbl %ah,%edi | |
1363 + movzbl -128(%ebp,%edi,1),%edi | |
1364 + shll $8,%edi | |
1365 + xorl %edi,%esi | |
1366 + movl %edx,%edi | |
1367 + shrl $16,%edi | |
1368 + andl $255,%edi | |
1369 + movzbl -128(%ebp,%edi,1),%edi | |
1370 + shll $16,%edi | |
1371 + xorl %edi,%esi | |
1372 + movl %ecx,%edi | |
1373 + shrl $24,%edi | |
1374 + movzbl -128(%ebp,%edi,1),%edi | |
1375 + shll $24,%edi | |
1376 + xorl %edi,%esi | |
1377 + movl %esi,8(%esp) | |
1378 + movl %ecx,%esi | |
1379 + andl $255,%esi | |
1380 + movzbl -128(%ebp,%esi,1),%esi | |
1381 + movzbl %bh,%edi | |
1382 + movzbl -128(%ebp,%edi,1),%edi | |
1383 + shll $8,%edi | |
1384 + xorl %edi,%esi | |
1385 + movl %eax,%edi | |
1386 + shrl $16,%edi | |
1387 + andl $255,%edi | |
1388 + movzbl -128(%ebp,%edi,1),%edi | |
1389 + shll $16,%edi | |
1390 + xorl %edi,%esi | |
1391 + movl %edx,%edi | |
1392 + shrl $24,%edi | |
1393 + movzbl -128(%ebp,%edi,1),%edi | |
1394 + shll $24,%edi | |
1395 + xorl %edi,%esi | |
1396 + movl 20(%esp),%edi | |
1397 + andl $255,%edx | |
1398 + movzbl -128(%ebp,%edx,1),%edx | |
1399 + movzbl %ch,%ecx | |
1400 + movzbl -128(%ebp,%ecx,1),%ecx | |
1401 + shll $8,%ecx | |
1402 + xorl %ecx,%edx | |
1403 + movl %esi,%ecx | |
1404 + shrl $16,%ebx | |
1405 + andl $255,%ebx | |
1406 + movzbl -128(%ebp,%ebx,1),%ebx | |
1407 + shll $16,%ebx | |
1408 + xorl %ebx,%edx | |
1409 + movl 8(%esp),%ebx | |
1410 + shrl $24,%eax | |
1411 + movzbl -128(%ebp,%eax,1),%eax | |
1412 + shll $24,%eax | |
1413 + xorl %eax,%edx | |
1414 + movl 4(%esp),%eax | |
1415 + xorl 16(%edi),%eax | |
1416 + xorl 20(%edi),%ebx | |
1417 + xorl 24(%edi),%ecx | |
1418 + xorl 28(%edi),%edx | |
1419 + ret | |
1420 +.align 4 | |
1421 +__sse_AES_decrypt_compact: | |
1422 + pxor (%edi),%mm0 | |
1423 + pxor 8(%edi),%mm4 | |
1424 + movl 240(%edi),%esi | |
1425 + leal -2(%esi,%esi,1),%esi | |
1426 + leal (%edi,%esi,8),%esi | |
1427 + movl %esi,24(%esp) | |
1428 + movl $454761243,%eax | |
1429 + movl %eax,8(%esp) | |
1430 + movl %eax,12(%esp) | |
1431 + movl -128(%ebp),%eax | |
1432 + movl -96(%ebp),%ebx | |
1433 + movl -64(%ebp),%ecx | |
1434 + movl -32(%ebp),%edx | |
1435 + movl (%ebp),%eax | |
1436 + movl 32(%ebp),%ebx | |
1437 + movl 64(%ebp),%ecx | |
1438 + movl 96(%ebp),%edx | |
1439 +.align 4,0x90 | |
1440 +L007loop: | |
1441 + pshufw $12,%mm0,%mm1 | |
1442 + movd %mm1,%eax | |
1443 + pshufw $9,%mm4,%mm5 | |
1444 + movzbl %al,%esi | |
1445 + movzbl -128(%ebp,%esi,1),%ecx | |
1446 + movd %mm5,%ebx | |
1447 + movzbl %ah,%edx | |
1448 + movzbl -128(%ebp,%edx,1),%edx | |
1449 + shll $8,%edx | |
1450 + pshufw $6,%mm0,%mm2 | |
1451 + movzbl %bl,%esi | |
1452 + movzbl -128(%ebp,%esi,1),%esi | |
1453 + shll $16,%esi | |
1454 + orl %esi,%ecx | |
1455 + shrl $16,%eax | |
1456 + movzbl %bh,%esi | |
1457 + movzbl -128(%ebp,%esi,1),%esi | |
1458 + shll $24,%esi | |
1459 + orl %esi,%edx | |
1460 + shrl $16,%ebx | |
1461 + pshufw $3,%mm4,%mm6 | |
1462 + movzbl %ah,%esi | |
1463 + movzbl -128(%ebp,%esi,1),%esi | |
1464 + shll $24,%esi | |
1465 + orl %esi,%ecx | |
1466 + movzbl %bh,%esi | |
1467 + movzbl -128(%ebp,%esi,1),%esi | |
1468 + shll $8,%esi | |
1469 + orl %esi,%ecx | |
1470 + movd %ecx,%mm0 | |
1471 + movzbl %al,%esi | |
1472 + movd %mm2,%eax | |
1473 + movzbl -128(%ebp,%esi,1),%ecx | |
1474 + shll $16,%ecx | |
1475 + movzbl %bl,%esi | |
1476 + movd %mm6,%ebx | |
1477 + movzbl -128(%ebp,%esi,1),%esi | |
1478 + orl %esi,%ecx | |
1479 + movzbl %al,%esi | |
1480 + movzbl -128(%ebp,%esi,1),%esi | |
1481 + orl %esi,%edx | |
1482 + movzbl %bl,%esi | |
1483 + movzbl -128(%ebp,%esi,1),%esi | |
1484 + shll $16,%esi | |
1485 + orl %esi,%edx | |
1486 + movd %edx,%mm1 | |
1487 + movzbl %ah,%esi | |
1488 + movzbl -128(%ebp,%esi,1),%edx | |
1489 + shll $8,%edx | |
1490 + movzbl %bh,%esi | |
1491 + shrl $16,%eax | |
1492 + movzbl -128(%ebp,%esi,1),%esi | |
1493 + shll $24,%esi | |
1494 + orl %esi,%edx | |
1495 + shrl $16,%ebx | |
1496 + punpckldq %mm1,%mm0 | |
1497 + movzbl %bh,%esi | |
1498 + movzbl -128(%ebp,%esi,1),%esi | |
1499 + shll $8,%esi | |
1500 + orl %esi,%ecx | |
1501 + andl $255,%ebx | |
1502 + movzbl -128(%ebp,%ebx,1),%ebx | |
1503 + orl %ebx,%edx | |
1504 + movzbl %al,%esi | |
1505 + movzbl -128(%ebp,%esi,1),%esi | |
1506 + shll $16,%esi | |
1507 + orl %esi,%edx | |
1508 + movd %edx,%mm4 | |
1509 + movzbl %ah,%eax | |
1510 + movzbl -128(%ebp,%eax,1),%eax | |
1511 + shll $24,%eax | |
1512 + orl %eax,%ecx | |
1513 + movd %ecx,%mm5 | |
1514 + punpckldq %mm5,%mm4 | |
1515 + addl $16,%edi | |
1516 + cmpl 24(%esp),%edi | |
1517 + ja L008out | |
1518 + movq %mm0,%mm3 | |
1519 + movq %mm4,%mm7 | |
1520 + pshufw $228,%mm0,%mm2 | |
1521 + pshufw $228,%mm4,%mm6 | |
1522 + movq %mm0,%mm1 | |
1523 + movq %mm4,%mm5 | |
1524 + pshufw $177,%mm0,%mm0 | |
1525 + pshufw $177,%mm4,%mm4 | |
1526 + pslld $8,%mm2 | |
1527 + pslld $8,%mm6 | |
1528 + psrld $8,%mm3 | |
1529 + psrld $8,%mm7 | |
1530 + pxor %mm2,%mm0 | |
1531 + pxor %mm6,%mm4 | |
1532 + pxor %mm3,%mm0 | |
1533 + pxor %mm7,%mm4 | |
1534 + pslld $16,%mm2 | |
1535 + pslld $16,%mm6 | |
1536 + psrld $16,%mm3 | |
1537 + psrld $16,%mm7 | |
1538 + pxor %mm2,%mm0 | |
1539 + pxor %mm6,%mm4 | |
1540 + pxor %mm3,%mm0 | |
1541 + pxor %mm7,%mm4 | |
1542 + movq 8(%esp),%mm3 | |
1543 + pxor %mm2,%mm2 | |
1544 + pxor %mm6,%mm6 | |
1545 + pcmpgtb %mm1,%mm2 | |
1546 + pcmpgtb %mm5,%mm6 | |
1547 + pand %mm3,%mm2 | |
1548 + pand %mm3,%mm6 | |
1549 + paddb %mm1,%mm1 | |
1550 + paddb %mm5,%mm5 | |
1551 + pxor %mm2,%mm1 | |
1552 + pxor %mm6,%mm5 | |
1553 + movq %mm1,%mm3 | |
1554 + movq %mm5,%mm7 | |
1555 + movq %mm1,%mm2 | |
1556 + movq %mm5,%mm6 | |
1557 + pxor %mm1,%mm0 | |
1558 + pxor %mm5,%mm4 | |
1559 + pslld $24,%mm3 | |
1560 + pslld $24,%mm7 | |
1561 + psrld $8,%mm2 | |
1562 + psrld $8,%mm6 | |
1563 + pxor %mm3,%mm0 | |
1564 + pxor %mm7,%mm4 | |
1565 + pxor %mm2,%mm0 | |
1566 + pxor %mm6,%mm4 | |
1567 + movq 8(%esp),%mm2 | |
1568 + pxor %mm3,%mm3 | |
1569 + pxor %mm7,%mm7 | |
1570 + pcmpgtb %mm1,%mm3 | |
1571 + pcmpgtb %mm5,%mm7 | |
1572 + pand %mm2,%mm3 | |
1573 + pand %mm2,%mm7 | |
1574 + paddb %mm1,%mm1 | |
1575 + paddb %mm5,%mm5 | |
1576 + pxor %mm3,%mm1 | |
1577 + pxor %mm7,%mm5 | |
1578 + pshufw $177,%mm1,%mm3 | |
1579 + pshufw $177,%mm5,%mm7 | |
1580 + pxor %mm1,%mm0 | |
1581 + pxor %mm5,%mm4 | |
1582 + pxor %mm3,%mm0 | |
1583 + pxor %mm7,%mm4 | |
1584 + pxor %mm3,%mm3 | |
1585 + pxor %mm7,%mm7 | |
1586 + pcmpgtb %mm1,%mm3 | |
1587 + pcmpgtb %mm5,%mm7 | |
1588 + pand %mm2,%mm3 | |
1589 + pand %mm2,%mm7 | |
1590 + paddb %mm1,%mm1 | |
1591 + paddb %mm5,%mm5 | |
1592 + pxor %mm3,%mm1 | |
1593 + pxor %mm7,%mm5 | |
1594 + pxor %mm1,%mm0 | |
1595 + pxor %mm5,%mm4 | |
1596 + movq %mm1,%mm3 | |
1597 + movq %mm5,%mm7 | |
1598 + pshufw $177,%mm1,%mm2 | |
1599 + pshufw $177,%mm5,%mm6 | |
1600 + pxor %mm2,%mm0 | |
1601 + pxor %mm6,%mm4 | |
1602 + pslld $8,%mm1 | |
1603 + pslld $8,%mm5 | |
1604 + psrld $8,%mm3 | |
1605 + psrld $8,%mm7 | |
1606 + movq (%edi),%mm2 | |
1607 + movq 8(%edi),%mm6 | |
1608 + pxor %mm1,%mm0 | |
1609 + pxor %mm5,%mm4 | |
1610 + pxor %mm3,%mm0 | |
1611 + pxor %mm7,%mm4 | |
1612 + movl -128(%ebp),%eax | |
1613 + pslld $16,%mm1 | |
1614 + pslld $16,%mm5 | |
1615 + movl -64(%ebp),%ebx | |
1616 + psrld $16,%mm3 | |
1617 + psrld $16,%mm7 | |
1618 + movl (%ebp),%ecx | |
1619 + pxor %mm1,%mm0 | |
1620 + pxor %mm5,%mm4 | |
1621 + movl 64(%ebp),%edx | |
1622 + pxor %mm3,%mm0 | |
1623 + pxor %mm7,%mm4 | |
1624 + pxor %mm2,%mm0 | |
1625 + pxor %mm6,%mm4 | |
1626 + jmp L007loop | |
1627 +.align 4,0x90 | |
1628 +L008out: | |
1629 + pxor (%edi),%mm0 | |
1630 + pxor 8(%edi),%mm4 | |
1631 + ret | |
1632 +.align 4 | |
1633 +__x86_AES_decrypt: | |
1634 + movl %edi,20(%esp) | |
1635 + xorl (%edi),%eax | |
1636 + xorl 4(%edi),%ebx | |
1637 + xorl 8(%edi),%ecx | |
1638 + xorl 12(%edi),%edx | |
1639 + movl 240(%edi),%esi | |
1640 + leal -2(%esi,%esi,1),%esi | |
1641 + leal (%edi,%esi,8),%esi | |
1642 + movl %esi,24(%esp) | |
1643 +.align 4,0x90 | |
1644 +L009loop: | |
1645 + movl %eax,%esi | |
1646 + andl $255,%esi | |
1647 + movl (%ebp,%esi,8),%esi | |
1648 + movzbl %dh,%edi | |
1649 + xorl 3(%ebp,%edi,8),%esi | |
1650 + movl %ecx,%edi | |
1651 + shrl $16,%edi | |
1652 + andl $255,%edi | |
1653 + xorl 2(%ebp,%edi,8),%esi | |
1654 + movl %ebx,%edi | |
1655 + shrl $24,%edi | |
1656 + xorl 1(%ebp,%edi,8),%esi | |
1657 + movl %esi,4(%esp) | |
1658 + movl %ebx,%esi | |
1659 + andl $255,%esi | |
1660 + movl (%ebp,%esi,8),%esi | |
1661 + movzbl %ah,%edi | |
1662 + xorl 3(%ebp,%edi,8),%esi | |
1663 + movl %edx,%edi | |
1664 + shrl $16,%edi | |
1665 + andl $255,%edi | |
1666 + xorl 2(%ebp,%edi,8),%esi | |
1667 + movl %ecx,%edi | |
1668 + shrl $24,%edi | |
1669 + xorl 1(%ebp,%edi,8),%esi | |
1670 + movl %esi,8(%esp) | |
1671 + movl %ecx,%esi | |
1672 + andl $255,%esi | |
1673 + movl (%ebp,%esi,8),%esi | |
1674 + movzbl %bh,%edi | |
1675 + xorl 3(%ebp,%edi,8),%esi | |
1676 + movl %eax,%edi | |
1677 + shrl $16,%edi | |
1678 + andl $255,%edi | |
1679 + xorl 2(%ebp,%edi,8),%esi | |
1680 + movl %edx,%edi | |
1681 + shrl $24,%edi | |
1682 + xorl 1(%ebp,%edi,8),%esi | |
1683 + movl 20(%esp),%edi | |
1684 + andl $255,%edx | |
1685 + movl (%ebp,%edx,8),%edx | |
1686 + movzbl %ch,%ecx | |
1687 + xorl 3(%ebp,%ecx,8),%edx | |
1688 + movl %esi,%ecx | |
1689 + shrl $16,%ebx | |
1690 + andl $255,%ebx | |
1691 + xorl 2(%ebp,%ebx,8),%edx | |
1692 + movl 8(%esp),%ebx | |
1693 + shrl $24,%eax | |
1694 + xorl 1(%ebp,%eax,8),%edx | |
1695 + movl 4(%esp),%eax | |
1696 + addl $16,%edi | |
1697 + xorl (%edi),%eax | |
1698 + xorl 4(%edi),%ebx | |
1699 + xorl 8(%edi),%ecx | |
1700 + xorl 12(%edi),%edx | |
1701 + cmpl 24(%esp),%edi | |
1702 + movl %edi,20(%esp) | |
1703 + jb L009loop | |
1704 + leal 2176(%ebp),%ebp | |
1705 + movl -128(%ebp),%edi | |
1706 + movl -96(%ebp),%esi | |
1707 + movl -64(%ebp),%edi | |
1708 + movl -32(%ebp),%esi | |
1709 + movl (%ebp),%edi | |
1710 + movl 32(%ebp),%esi | |
1711 + movl 64(%ebp),%edi | |
1712 + movl 96(%ebp),%esi | |
1713 + leal -128(%ebp),%ebp | |
1714 + movl %eax,%esi | |
1715 + andl $255,%esi | |
1716 + movzbl (%ebp,%esi,1),%esi | |
1717 + movzbl %dh,%edi | |
1718 + movzbl (%ebp,%edi,1),%edi | |
1719 + shll $8,%edi | |
1720 + xorl %edi,%esi | |
1721 + movl %ecx,%edi | |
1722 + shrl $16,%edi | |
1723 + andl $255,%edi | |
1724 + movzbl (%ebp,%edi,1),%edi | |
1725 + shll $16,%edi | |
1726 + xorl %edi,%esi | |
1727 + movl %ebx,%edi | |
1728 + shrl $24,%edi | |
1729 + movzbl (%ebp,%edi,1),%edi | |
1730 + shll $24,%edi | |
1731 + xorl %edi,%esi | |
1732 + movl %esi,4(%esp) | |
1733 + movl %ebx,%esi | |
1734 + andl $255,%esi | |
1735 + movzbl (%ebp,%esi,1),%esi | |
1736 + movzbl %ah,%edi | |
1737 + movzbl (%ebp,%edi,1),%edi | |
1738 + shll $8,%edi | |
1739 + xorl %edi,%esi | |
1740 + movl %edx,%edi | |
1741 + shrl $16,%edi | |
1742 + andl $255,%edi | |
1743 + movzbl (%ebp,%edi,1),%edi | |
1744 + shll $16,%edi | |
1745 + xorl %edi,%esi | |
1746 + movl %ecx,%edi | |
1747 + shrl $24,%edi | |
1748 + movzbl (%ebp,%edi,1),%edi | |
1749 + shll $24,%edi | |
1750 + xorl %edi,%esi | |
1751 + movl %esi,8(%esp) | |
1752 + movl %ecx,%esi | |
1753 + andl $255,%esi | |
1754 + movzbl (%ebp,%esi,1),%esi | |
1755 + movzbl %bh,%edi | |
1756 + movzbl (%ebp,%edi,1),%edi | |
1757 + shll $8,%edi | |
1758 + xorl %edi,%esi | |
1759 + movl %eax,%edi | |
1760 + shrl $16,%edi | |
1761 + andl $255,%edi | |
1762 + movzbl (%ebp,%edi,1),%edi | |
1763 + shll $16,%edi | |
1764 + xorl %edi,%esi | |
1765 + movl %edx,%edi | |
1766 + shrl $24,%edi | |
1767 + movzbl (%ebp,%edi,1),%edi | |
1768 + shll $24,%edi | |
1769 + xorl %edi,%esi | |
1770 + movl 20(%esp),%edi | |
1771 + andl $255,%edx | |
1772 + movzbl (%ebp,%edx,1),%edx | |
1773 + movzbl %ch,%ecx | |
1774 + movzbl (%ebp,%ecx,1),%ecx | |
1775 + shll $8,%ecx | |
1776 + xorl %ecx,%edx | |
1777 + movl %esi,%ecx | |
1778 + shrl $16,%ebx | |
1779 + andl $255,%ebx | |
1780 + movzbl (%ebp,%ebx,1),%ebx | |
1781 + shll $16,%ebx | |
1782 + xorl %ebx,%edx | |
1783 + movl 8(%esp),%ebx | |
1784 + shrl $24,%eax | |
1785 + movzbl (%ebp,%eax,1),%eax | |
1786 + shll $24,%eax | |
1787 + xorl %eax,%edx | |
1788 + movl 4(%esp),%eax | |
1789 + leal -2048(%ebp),%ebp | |
1790 + addl $16,%edi | |
1791 + xorl (%edi),%eax | |
1792 + xorl 4(%edi),%ebx | |
1793 + xorl 8(%edi),%ecx | |
1794 + xorl 12(%edi),%edx | |
1795 + ret | |
1796 +.align 6,0x90 | |
1797 +LAES_Td: | |
1798 +.long 1353184337,1353184337 | |
1799 +.long 1399144830,1399144830 | |
1800 +.long 3282310938,3282310938 | |
1801 +.long 2522752826,2522752826 | |
1802 +.long 3412831035,3412831035 | |
1803 +.long 4047871263,4047871263 | |
1804 +.long 2874735276,2874735276 | |
1805 +.long 2466505547,2466505547 | |
1806 +.long 1442459680,1442459680 | |
1807 +.long 4134368941,4134368941 | |
1808 +.long 2440481928,2440481928 | |
1809 +.long 625738485,625738485 | |
1810 +.long 4242007375,4242007375 | |
1811 +.long 3620416197,3620416197 | |
1812 +.long 2151953702,2151953702 | |
1813 +.long 2409849525,2409849525 | |
1814 +.long 1230680542,1230680542 | |
1815 +.long 1729870373,1729870373 | |
1816 +.long 2551114309,2551114309 | |
1817 +.long 3787521629,3787521629 | |
1818 +.long 41234371,41234371 | |
1819 +.long 317738113,317738113 | |
1820 +.long 2744600205,2744600205 | |
1821 +.long 3338261355,3338261355 | |
1822 +.long 3881799427,3881799427 | |
1823 +.long 2510066197,2510066197 | |
1824 +.long 3950669247,3950669247 | |
1825 +.long 3663286933,3663286933 | |
1826 +.long 763608788,763608788 | |
1827 +.long 3542185048,3542185048 | |
1828 +.long 694804553,694804553 | |
1829 +.long 1154009486,1154009486 | |
1830 +.long 1787413109,1787413109 | |
1831 +.long 2021232372,2021232372 | |
1832 +.long 1799248025,1799248025 | |
1833 +.long 3715217703,3715217703 | |
1834 +.long 3058688446,3058688446 | |
1835 +.long 397248752,397248752 | |
1836 +.long 1722556617,1722556617 | |
1837 +.long 3023752829,3023752829 | |
1838 +.long 407560035,407560035 | |
1839 +.long 2184256229,2184256229 | |
1840 +.long 1613975959,1613975959 | |
1841 +.long 1165972322,1165972322 | |
1842 +.long 3765920945,3765920945 | |
1843 +.long 2226023355,2226023355 | |
1844 +.long 480281086,480281086 | |
1845 +.long 2485848313,2485848313 | |
1846 +.long 1483229296,1483229296 | |
1847 +.long 436028815,436028815 | |
1848 +.long 2272059028,2272059028 | |
1849 +.long 3086515026,3086515026 | |
1850 +.long 601060267,601060267 | |
1851 +.long 3791801202,3791801202 | |
1852 +.long 1468997603,1468997603 | |
1853 +.long 715871590,715871590 | |
1854 +.long 120122290,120122290 | |
1855 +.long 63092015,63092015 | |
1856 +.long 2591802758,2591802758 | |
1857 +.long 2768779219,2768779219 | |
1858 +.long 4068943920,4068943920 | |
1859 +.long 2997206819,2997206819 | |
1860 +.long 3127509762,3127509762 | |
1861 +.long 1552029421,1552029421 | |
1862 +.long 723308426,723308426 | |
1863 +.long 2461301159,2461301159 | |
1864 +.long 4042393587,4042393587 | |
1865 +.long 2715969870,2715969870 | |
1866 +.long 3455375973,3455375973 | |
1867 +.long 3586000134,3586000134 | |
1868 +.long 526529745,526529745 | |
1869 +.long 2331944644,2331944644 | |
1870 +.long 2639474228,2639474228 | |
1871 +.long 2689987490,2689987490 | |
1872 +.long 853641733,853641733 | |
1873 +.long 1978398372,1978398372 | |
1874 +.long 971801355,971801355 | |
1875 +.long 2867814464,2867814464 | |
1876 +.long 111112542,111112542 | |
1877 +.long 1360031421,1360031421 | |
1878 +.long 4186579262,4186579262 | |
1879 +.long 1023860118,1023860118 | |
1880 +.long 2919579357,2919579357 | |
1881 +.long 1186850381,1186850381 | |
1882 +.long 3045938321,3045938321 | |
1883 +.long 90031217,90031217 | |
1884 +.long 1876166148,1876166148 | |
1885 +.long 4279586912,4279586912 | |
1886 +.long 620468249,620468249 | |
1887 +.long 2548678102,2548678102 | |
1888 +.long 3426959497,3426959497 | |
1889 +.long 2006899047,2006899047 | |
1890 +.long 3175278768,3175278768 | |
1891 +.long 2290845959,2290845959 | |
1892 +.long 945494503,945494503 | |
1893 +.long 3689859193,3689859193 | |
1894 +.long 1191869601,1191869601 | |
1895 +.long 3910091388,3910091388 | |
1896 +.long 3374220536,3374220536 | |
1897 +.long 0,0 | |
1898 +.long 2206629897,2206629897 | |
1899 +.long 1223502642,1223502642 | |
1900 +.long 2893025566,2893025566 | |
1901 +.long 1316117100,1316117100 | |
1902 +.long 4227796733,4227796733 | |
1903 +.long 1446544655,1446544655 | |
1904 +.long 517320253,517320253 | |
1905 +.long 658058550,658058550 | |
1906 +.long 1691946762,1691946762 | |
1907 +.long 564550760,564550760 | |
1908 +.long 3511966619,3511966619 | |
1909 +.long 976107044,976107044 | |
1910 +.long 2976320012,2976320012 | |
1911 +.long 266819475,266819475 | |
1912 +.long 3533106868,3533106868 | |
1913 +.long 2660342555,2660342555 | |
1914 +.long 1338359936,1338359936 | |
1915 +.long 2720062561,2720062561 | |
1916 +.long 1766553434,1766553434 | |
1917 +.long 370807324,370807324 | |
1918 +.long 179999714,179999714 | |
1919 +.long 3844776128,3844776128 | |
1920 +.long 1138762300,1138762300 | |
1921 +.long 488053522,488053522 | |
1922 +.long 185403662,185403662 | |
1923 +.long 2915535858,2915535858 | |
1924 +.long 3114841645,3114841645 | |
1925 +.long 3366526484,3366526484 | |
1926 +.long 2233069911,2233069911 | |
1927 +.long 1275557295,1275557295 | |
1928 +.long 3151862254,3151862254 | |
1929 +.long 4250959779,4250959779 | |
1930 +.long 2670068215,2670068215 | |
1931 +.long 3170202204,3170202204 | |
1932 +.long 3309004356,3309004356 | |
1933 +.long 880737115,880737115 | |
1934 +.long 1982415755,1982415755 | |
1935 +.long 3703972811,3703972811 | |
1936 +.long 1761406390,1761406390 | |
1937 +.long 1676797112,1676797112 | |
1938 +.long 3403428311,3403428311 | |
1939 +.long 277177154,277177154 | |
1940 +.long 1076008723,1076008723 | |
1941 +.long 538035844,538035844 | |
1942 +.long 2099530373,2099530373 | |
1943 +.long 4164795346,4164795346 | |
1944 +.long 288553390,288553390 | |
1945 +.long 1839278535,1839278535 | |
1946 +.long 1261411869,1261411869 | |
1947 +.long 4080055004,4080055004 | |
1948 +.long 3964831245,3964831245 | |
1949 +.long 3504587127,3504587127 | |
1950 +.long 1813426987,1813426987 | |
1951 +.long 2579067049,2579067049 | |
1952 +.long 4199060497,4199060497 | |
1953 +.long 577038663,577038663 | |
1954 +.long 3297574056,3297574056 | |
1955 +.long 440397984,440397984 | |
1956 +.long 3626794326,3626794326 | |
1957 +.long 4019204898,4019204898 | |
1958 +.long 3343796615,3343796615 | |
1959 +.long 3251714265,3251714265 | |
1960 +.long 4272081548,4272081548 | |
1961 +.long 906744984,906744984 | |
1962 +.long 3481400742,3481400742 | |
1963 +.long 685669029,685669029 | |
1964 +.long 646887386,646887386 | |
1965 +.long 2764025151,2764025151 | |
1966 +.long 3835509292,3835509292 | |
1967 +.long 227702864,227702864 | |
1968 +.long 2613862250,2613862250 | |
1969 +.long 1648787028,1648787028 | |
1970 +.long 3256061430,3256061430 | |
1971 +.long 3904428176,3904428176 | |
1972 +.long 1593260334,1593260334 | |
1973 +.long 4121936770,4121936770 | |
1974 +.long 3196083615,3196083615 | |
1975 +.long 2090061929,2090061929 | |
1976 +.long 2838353263,2838353263 | |
1977 +.long 3004310991,3004310991 | |
1978 +.long 999926984,999926984 | |
1979 +.long 2809993232,2809993232 | |
1980 +.long 1852021992,1852021992 | |
1981 +.long 2075868123,2075868123 | |
1982 +.long 158869197,158869197 | |
1983 +.long 4095236462,4095236462 | |
1984 +.long 28809964,28809964 | |
1985 +.long 2828685187,2828685187 | |
1986 +.long 1701746150,1701746150 | |
1987 +.long 2129067946,2129067946 | |
1988 +.long 147831841,147831841 | |
1989 +.long 3873969647,3873969647 | |
1990 +.long 3650873274,3650873274 | |
1991 +.long 3459673930,3459673930 | |
1992 +.long 3557400554,3557400554 | |
1993 +.long 3598495785,3598495785 | |
1994 +.long 2947720241,2947720241 | |
1995 +.long 824393514,824393514 | |
1996 +.long 815048134,815048134 | |
1997 +.long 3227951669,3227951669 | |
1998 +.long 935087732,935087732 | |
1999 +.long 2798289660,2798289660 | |
2000 +.long 2966458592,2966458592 | |
2001 +.long 366520115,366520115 | |
2002 +.long 1251476721,1251476721 | |
2003 +.long 4158319681,4158319681 | |
2004 +.long 240176511,240176511 | |
2005 +.long 804688151,804688151 | |
2006 +.long 2379631990,2379631990 | |
2007 +.long 1303441219,1303441219 | |
2008 +.long 1414376140,1414376140 | |
2009 +.long 3741619940,3741619940 | |
2010 +.long 3820343710,3820343710 | |
2011 +.long 461924940,461924940 | |
2012 +.long 3089050817,3089050817 | |
2013 +.long 2136040774,2136040774 | |
2014 +.long 82468509,82468509 | |
2015 +.long 1563790337,1563790337 | |
2016 +.long 1937016826,1937016826 | |
2017 +.long 776014843,776014843 | |
2018 +.long 1511876531,1511876531 | |
2019 +.long 1389550482,1389550482 | |
2020 +.long 861278441,861278441 | |
2021 +.long 323475053,323475053 | |
2022 +.long 2355222426,2355222426 | |
2023 +.long 2047648055,2047648055 | |
2024 +.long 2383738969,2383738969 | |
2025 +.long 2302415851,2302415851 | |
2026 +.long 3995576782,3995576782 | |
2027 +.long 902390199,902390199 | |
2028 +.long 3991215329,3991215329 | |
2029 +.long 1018251130,1018251130 | |
2030 +.long 1507840668,1507840668 | |
2031 +.long 1064563285,1064563285 | |
2032 +.long 2043548696,2043548696 | |
2033 +.long 3208103795,3208103795 | |
2034 +.long 3939366739,3939366739 | |
2035 +.long 1537932639,1537932639 | |
2036 +.long 342834655,342834655 | |
2037 +.long 2262516856,2262516856 | |
2038 +.long 2180231114,2180231114 | |
2039 +.long 1053059257,1053059257 | |
2040 +.long 741614648,741614648 | |
2041 +.long 1598071746,1598071746 | |
2042 +.long 1925389590,1925389590 | |
2043 +.long 203809468,203809468 | |
2044 +.long 2336832552,2336832552 | |
2045 +.long 1100287487,1100287487 | |
2046 +.long 1895934009,1895934009 | |
2047 +.long 3736275976,3736275976 | |
2048 +.long 2632234200,2632234200 | |
2049 +.long 2428589668,2428589668 | |
2050 +.long 1636092795,1636092795 | |
2051 +.long 1890988757,1890988757 | |
2052 +.long 1952214088,1952214088 | |
2053 +.long 1113045200,1113045200 | |
2054 +.byte 82,9,106,213,48,54,165,56 | |
2055 +.byte 191,64,163,158,129,243,215,251 | |
2056 +.byte 124,227,57,130,155,47,255,135 | |
2057 +.byte 52,142,67,68,196,222,233,203 | |
2058 +.byte 84,123,148,50,166,194,35,61 | |
2059 +.byte 238,76,149,11,66,250,195,78 | |
2060 +.byte 8,46,161,102,40,217,36,178 | |
2061 +.byte 118,91,162,73,109,139,209,37 | |
2062 +.byte 114,248,246,100,134,104,152,22 | |
2063 +.byte 212,164,92,204,93,101,182,146 | |
2064 +.byte 108,112,72,80,253,237,185,218 | |
2065 +.byte 94,21,70,87,167,141,157,132 | |
2066 +.byte 144,216,171,0,140,188,211,10 | |
2067 +.byte 247,228,88,5,184,179,69,6 | |
2068 +.byte 208,44,30,143,202,63,15,2 | |
2069 +.byte 193,175,189,3,1,19,138,107 | |
2070 +.byte 58,145,17,65,79,103,220,234 | |
2071 +.byte 151,242,207,206,240,180,230,115 | |
2072 +.byte 150,172,116,34,231,173,53,133 | |
2073 +.byte 226,249,55,232,28,117,223,110 | |
2074 +.byte 71,241,26,113,29,41,197,137 | |
2075 +.byte 111,183,98,14,170,24,190,27 | |
2076 +.byte 252,86,62,75,198,210,121,32 | |
2077 +.byte 154,219,192,254,120,205,90,244 | |
2078 +.byte 31,221,168,51,136,7,199,49 | |
2079 +.byte 177,18,16,89,39,128,236,95 | |
2080 +.byte 96,81,127,169,25,181,74,13 | |
2081 +.byte 45,229,122,159,147,201,156,239 | |
2082 +.byte 160,224,59,77,174,42,245,176 | |
2083 +.byte 200,235,187,60,131,83,153,97 | |
2084 +.byte 23,43,4,126,186,119,214,38 | |
2085 +.byte 225,105,20,99,85,33,12,125 | |
2086 +.byte 82,9,106,213,48,54,165,56 | |
2087 +.byte 191,64,163,158,129,243,215,251 | |
2088 +.byte 124,227,57,130,155,47,255,135 | |
2089 +.byte 52,142,67,68,196,222,233,203 | |
2090 +.byte 84,123,148,50,166,194,35,61 | |
2091 +.byte 238,76,149,11,66,250,195,78 | |
2092 +.byte 8,46,161,102,40,217,36,178 | |
2093 +.byte 118,91,162,73,109,139,209,37 | |
2094 +.byte 114,248,246,100,134,104,152,22 | |
2095 +.byte 212,164,92,204,93,101,182,146 | |
2096 +.byte 108,112,72,80,253,237,185,218 | |
2097 +.byte 94,21,70,87,167,141,157,132 | |
2098 +.byte 144,216,171,0,140,188,211,10 | |
2099 +.byte 247,228,88,5,184,179,69,6 | |
2100 +.byte 208,44,30,143,202,63,15,2 | |
2101 +.byte 193,175,189,3,1,19,138,107 | |
2102 +.byte 58,145,17,65,79,103,220,234 | |
2103 +.byte 151,242,207,206,240,180,230,115 | |
2104 +.byte 150,172,116,34,231,173,53,133 | |
2105 +.byte 226,249,55,232,28,117,223,110 | |
2106 +.byte 71,241,26,113,29,41,197,137 | |
2107 +.byte 111,183,98,14,170,24,190,27 | |
2108 +.byte 252,86,62,75,198,210,121,32 | |
2109 +.byte 154,219,192,254,120,205,90,244 | |
2110 +.byte 31,221,168,51,136,7,199,49 | |
2111 +.byte 177,18,16,89,39,128,236,95 | |
2112 +.byte 96,81,127,169,25,181,74,13 | |
2113 +.byte 45,229,122,159,147,201,156,239 | |
2114 +.byte 160,224,59,77,174,42,245,176 | |
2115 +.byte 200,235,187,60,131,83,153,97 | |
2116 +.byte 23,43,4,126,186,119,214,38 | |
2117 +.byte 225,105,20,99,85,33,12,125 | |
2118 +.byte 82,9,106,213,48,54,165,56 | |
2119 +.byte 191,64,163,158,129,243,215,251 | |
2120 +.byte 124,227,57,130,155,47,255,135 | |
2121 +.byte 52,142,67,68,196,222,233,203 | |
2122 +.byte 84,123,148,50,166,194,35,61 | |
2123 +.byte 238,76,149,11,66,250,195,78 | |
2124 +.byte 8,46,161,102,40,217,36,178 | |
2125 +.byte 118,91,162,73,109,139,209,37 | |
2126 +.byte 114,248,246,100,134,104,152,22 | |
2127 +.byte 212,164,92,204,93,101,182,146 | |
2128 +.byte 108,112,72,80,253,237,185,218 | |
2129 +.byte 94,21,70,87,167,141,157,132 | |
2130 +.byte 144,216,171,0,140,188,211,10 | |
2131 +.byte 247,228,88,5,184,179,69,6 | |
2132 +.byte 208,44,30,143,202,63,15,2 | |
2133 +.byte 193,175,189,3,1,19,138,107 | |
2134 +.byte 58,145,17,65,79,103,220,234 | |
2135 +.byte 151,242,207,206,240,180,230,115 | |
2136 +.byte 150,172,116,34,231,173,53,133 | |
2137 +.byte 226,249,55,232,28,117,223,110 | |
2138 +.byte 71,241,26,113,29,41,197,137 | |
2139 +.byte 111,183,98,14,170,24,190,27 | |
2140 +.byte 252,86,62,75,198,210,121,32 | |
2141 +.byte 154,219,192,254,120,205,90,244 | |
2142 +.byte 31,221,168,51,136,7,199,49 | |
2143 +.byte 177,18,16,89,39,128,236,95 | |
2144 +.byte 96,81,127,169,25,181,74,13 | |
2145 +.byte 45,229,122,159,147,201,156,239 | |
2146 +.byte 160,224,59,77,174,42,245,176 | |
2147 +.byte 200,235,187,60,131,83,153,97 | |
2148 +.byte 23,43,4,126,186,119,214,38 | |
2149 +.byte 225,105,20,99,85,33,12,125 | |
2150 +.byte 82,9,106,213,48,54,165,56 | |
2151 +.byte 191,64,163,158,129,243,215,251 | |
2152 +.byte 124,227,57,130,155,47,255,135 | |
2153 +.byte 52,142,67,68,196,222,233,203 | |
2154 +.byte 84,123,148,50,166,194,35,61 | |
2155 +.byte 238,76,149,11,66,250,195,78 | |
2156 +.byte 8,46,161,102,40,217,36,178 | |
2157 +.byte 118,91,162,73,109,139,209,37 | |
2158 +.byte 114,248,246,100,134,104,152,22 | |
2159 +.byte 212,164,92,204,93,101,182,146 | |
2160 +.byte 108,112,72,80,253,237,185,218 | |
2161 +.byte 94,21,70,87,167,141,157,132 | |
2162 +.byte 144,216,171,0,140,188,211,10 | |
2163 +.byte 247,228,88,5,184,179,69,6 | |
2164 +.byte 208,44,30,143,202,63,15,2 | |
2165 +.byte 193,175,189,3,1,19,138,107 | |
2166 +.byte 58,145,17,65,79,103,220,234 | |
2167 +.byte 151,242,207,206,240,180,230,115 | |
2168 +.byte 150,172,116,34,231,173,53,133 | |
2169 +.byte 226,249,55,232,28,117,223,110 | |
2170 +.byte 71,241,26,113,29,41,197,137 | |
2171 +.byte 111,183,98,14,170,24,190,27 | |
2172 +.byte 252,86,62,75,198,210,121,32 | |
2173 +.byte 154,219,192,254,120,205,90,244 | |
2174 +.byte 31,221,168,51,136,7,199,49 | |
2175 +.byte 177,18,16,89,39,128,236,95 | |
2176 +.byte 96,81,127,169,25,181,74,13 | |
2177 +.byte 45,229,122,159,147,201,156,239 | |
2178 +.byte 160,224,59,77,174,42,245,176 | |
2179 +.byte 200,235,187,60,131,83,153,97 | |
2180 +.byte 23,43,4,126,186,119,214,38 | |
2181 +.byte 225,105,20,99,85,33,12,125 | |
2182 +.globl _AES_decrypt | |
2183 +.align 4 | |
2184 +_AES_decrypt: | |
2185 +L_AES_decrypt_begin: | |
2186 + pushl %ebp | |
2187 + pushl %ebx | |
2188 + pushl %esi | |
2189 + pushl %edi | |
2190 + movl 20(%esp),%esi | |
2191 + movl 28(%esp),%edi | |
2192 + movl %esp,%eax | |
2193 + subl $36,%esp | |
2194 + andl $-64,%esp | |
2195 + leal -127(%edi),%ebx | |
2196 + subl %esp,%ebx | |
2197 + negl %ebx | |
2198 + andl $960,%ebx | |
2199 + subl %ebx,%esp | |
2200 + addl $4,%esp | |
2201 + movl %eax,28(%esp) | |
2202 + call L010pic_point | |
2203 +L010pic_point: | |
2204 + popl %ebp | |
2205 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L010pic_point(%ebp),%eax | |
2206 + leal LAES_Td-L010pic_point(%ebp),%ebp | |
2207 + leal 764(%esp),%ebx | |
2208 + subl %ebp,%ebx | |
2209 + andl $768,%ebx | |
2210 + leal 2176(%ebp,%ebx,1),%ebp | |
2211 + btl $25,(%eax) | |
2212 + jnc L011x86 | |
2213 + movq (%esi),%mm0 | |
2214 + movq 8(%esi),%mm4 | |
2215 + call __sse_AES_decrypt_compact | |
2216 + movl 28(%esp),%esp | |
2217 + movl 24(%esp),%esi | |
2218 + movq %mm0,(%esi) | |
2219 + movq %mm4,8(%esi) | |
2220 + emms | |
2221 + popl %edi | |
2222 + popl %esi | |
2223 + popl %ebx | |
2224 + popl %ebp | |
2225 + ret | |
2226 +.align 4,0x90 | |
2227 +L011x86: | |
2228 + movl %ebp,24(%esp) | |
2229 + movl (%esi),%eax | |
2230 + movl 4(%esi),%ebx | |
2231 + movl 8(%esi),%ecx | |
2232 + movl 12(%esi),%edx | |
2233 + call __x86_AES_decrypt_compact | |
2234 + movl 28(%esp),%esp | |
2235 + movl 24(%esp),%esi | |
2236 + movl %eax,(%esi) | |
2237 + movl %ebx,4(%esi) | |
2238 + movl %ecx,8(%esi) | |
2239 + movl %edx,12(%esi) | |
2240 + popl %edi | |
2241 + popl %esi | |
2242 + popl %ebx | |
2243 + popl %ebp | |
2244 + ret | |
2245 +.globl _AES_cbc_encrypt | |
2246 +.align 4 | |
2247 +_AES_cbc_encrypt: | |
2248 +L_AES_cbc_encrypt_begin: | |
2249 + pushl %ebp | |
2250 + pushl %ebx | |
2251 + pushl %esi | |
2252 + pushl %edi | |
2253 + movl 28(%esp),%ecx | |
2254 + cmpl $0,%ecx | |
2255 + je L012drop_out | |
2256 + call L013pic_point | |
2257 +L013pic_point: | |
2258 + popl %ebp | |
2259 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L013pic_point(%ebp),%eax | |
2260 + cmpl $0,40(%esp) | |
2261 + leal LAES_Te-L013pic_point(%ebp),%ebp | |
2262 + jne L014picked_te | |
2263 + leal LAES_Td-LAES_Te(%ebp),%ebp | |
2264 +L014picked_te: | |
2265 + pushfl | |
2266 + cld | |
2267 + cmpl $512,%ecx | |
2268 + jb L015slow_way | |
2269 + testl $15,%ecx | |
2270 + jnz L015slow_way | |
2271 + btl $28,(%eax) | |
2272 + jc L015slow_way | |
2273 + leal -324(%esp),%esi | |
2274 + andl $-64,%esi | |
2275 + movl %ebp,%eax | |
2276 + leal 2304(%ebp),%ebx | |
2277 + movl %esi,%edx | |
2278 + andl $4095,%eax | |
2279 + andl $4095,%ebx | |
2280 + andl $4095,%edx | |
2281 + cmpl %ebx,%edx | |
2282 + jb L016tbl_break_out | |
2283 + subl %ebx,%edx | |
2284 + subl %edx,%esi | |
2285 + jmp L017tbl_ok | |
2286 +.align 2,0x90 | |
2287 +L016tbl_break_out: | |
2288 + subl %eax,%edx | |
2289 + andl $4095,%edx | |
2290 + addl $384,%edx | |
2291 + subl %edx,%esi | |
2292 +.align 2,0x90 | |
2293 +L017tbl_ok: | |
2294 + leal 24(%esp),%edx | |
2295 + xchgl %esi,%esp | |
2296 + addl $4,%esp | |
2297 + movl %ebp,24(%esp) | |
2298 + movl %esi,28(%esp) | |
2299 + movl (%edx),%eax | |
2300 + movl 4(%edx),%ebx | |
2301 + movl 12(%edx),%edi | |
2302 + movl 16(%edx),%esi | |
2303 + movl 20(%edx),%edx | |
2304 + movl %eax,32(%esp) | |
2305 + movl %ebx,36(%esp) | |
2306 + movl %ecx,40(%esp) | |
2307 + movl %edi,44(%esp) | |
2308 + movl %esi,48(%esp) | |
2309 + movl $0,316(%esp) | |
2310 + movl %edi,%ebx | |
2311 + movl $61,%ecx | |
2312 + subl %ebp,%ebx | |
2313 + movl %edi,%esi | |
2314 + andl $4095,%ebx | |
2315 + leal 76(%esp),%edi | |
2316 + cmpl $2304,%ebx | |
2317 + jb L018do_copy | |
2318 + cmpl $3852,%ebx | |
2319 + jb L019skip_copy | |
2320 +.align 2,0x90 | |
2321 +L018do_copy: | |
2322 + movl %edi,44(%esp) | |
2323 +.long 2784229001 | |
2324 +L019skip_copy: | |
2325 + movl $16,%edi | |
2326 +.align 2,0x90 | |
2327 +L020prefetch_tbl: | |
2328 + movl (%ebp),%eax | |
2329 + movl 32(%ebp),%ebx | |
2330 + movl 64(%ebp),%ecx | |
2331 + movl 96(%ebp),%esi | |
2332 + leal 128(%ebp),%ebp | |
2333 + subl $1,%edi | |
2334 + jnz L020prefetch_tbl | |
2335 + subl $2048,%ebp | |
2336 + movl 32(%esp),%esi | |
2337 + movl 48(%esp),%edi | |
2338 + cmpl $0,%edx | |
2339 + je L021fast_decrypt | |
2340 + movl (%edi),%eax | |
2341 + movl 4(%edi),%ebx | |
2342 +.align 4,0x90 | |
2343 +L022fast_enc_loop: | |
2344 + movl 8(%edi),%ecx | |
2345 + movl 12(%edi),%edx | |
2346 + xorl (%esi),%eax | |
2347 + xorl 4(%esi),%ebx | |
2348 + xorl 8(%esi),%ecx | |
2349 + xorl 12(%esi),%edx | |
2350 + movl 44(%esp),%edi | |
2351 + call __x86_AES_encrypt | |
2352 + movl 32(%esp),%esi | |
2353 + movl 36(%esp),%edi | |
2354 + movl %eax,(%edi) | |
2355 + movl %ebx,4(%edi) | |
2356 + movl %ecx,8(%edi) | |
2357 + movl %edx,12(%edi) | |
2358 + leal 16(%esi),%esi | |
2359 + movl 40(%esp),%ecx | |
2360 + movl %esi,32(%esp) | |
2361 + leal 16(%edi),%edx | |
2362 + movl %edx,36(%esp) | |
2363 + subl $16,%ecx | |
2364 + movl %ecx,40(%esp) | |
2365 + jnz L022fast_enc_loop | |
2366 + movl 48(%esp),%esi | |
2367 + movl 8(%edi),%ecx | |
2368 + movl 12(%edi),%edx | |
2369 + movl %eax,(%esi) | |
2370 + movl %ebx,4(%esi) | |
2371 + movl %ecx,8(%esi) | |
2372 + movl %edx,12(%esi) | |
2373 + cmpl $0,316(%esp) | |
2374 + movl 44(%esp),%edi | |
2375 + je L023skip_ezero | |
2376 + movl $60,%ecx | |
2377 + xorl %eax,%eax | |
2378 +.align 2,0x90 | |
2379 +.long 2884892297 | |
2380 +L023skip_ezero: | |
2381 + movl 28(%esp),%esp | |
2382 + popfl | |
2383 +L012drop_out: | |
2384 + popl %edi | |
2385 + popl %esi | |
2386 + popl %ebx | |
2387 + popl %ebp | |
2388 + ret | |
2389 + pushfl | |
2390 +.align 4,0x90 | |
2391 +L021fast_decrypt: | |
2392 + cmpl 36(%esp),%esi | |
2393 + je L024fast_dec_in_place | |
2394 + movl %edi,52(%esp) | |
2395 +.align 2,0x90 | |
2396 +.align 4,0x90 | |
2397 +L025fast_dec_loop: | |
2398 + movl (%esi),%eax | |
2399 + movl 4(%esi),%ebx | |
2400 + movl 8(%esi),%ecx | |
2401 + movl 12(%esi),%edx | |
2402 + movl 44(%esp),%edi | |
2403 + call __x86_AES_decrypt | |
2404 + movl 52(%esp),%edi | |
2405 + movl 40(%esp),%esi | |
2406 + xorl (%edi),%eax | |
2407 + xorl 4(%edi),%ebx | |
2408 + xorl 8(%edi),%ecx | |
2409 + xorl 12(%edi),%edx | |
2410 + movl 36(%esp),%edi | |
2411 + movl 32(%esp),%esi | |
2412 + movl %eax,(%edi) | |
2413 + movl %ebx,4(%edi) | |
2414 + movl %ecx,8(%edi) | |
2415 + movl %edx,12(%edi) | |
2416 + movl 40(%esp),%ecx | |
2417 + movl %esi,52(%esp) | |
2418 + leal 16(%esi),%esi | |
2419 + movl %esi,32(%esp) | |
2420 + leal 16(%edi),%edi | |
2421 + movl %edi,36(%esp) | |
2422 + subl $16,%ecx | |
2423 + movl %ecx,40(%esp) | |
2424 + jnz L025fast_dec_loop | |
2425 + movl 52(%esp),%edi | |
2426 + movl 48(%esp),%esi | |
2427 + movl (%edi),%eax | |
2428 + movl 4(%edi),%ebx | |
2429 + movl 8(%edi),%ecx | |
2430 + movl 12(%edi),%edx | |
2431 + movl %eax,(%esi) | |
2432 + movl %ebx,4(%esi) | |
2433 + movl %ecx,8(%esi) | |
2434 + movl %edx,12(%esi) | |
2435 + jmp L026fast_dec_out | |
2436 +.align 4,0x90 | |
2437 +L024fast_dec_in_place: | |
2438 +L027fast_dec_in_place_loop: | |
2439 + movl (%esi),%eax | |
2440 + movl 4(%esi),%ebx | |
2441 + movl 8(%esi),%ecx | |
2442 + movl 12(%esi),%edx | |
2443 + leal 60(%esp),%edi | |
2444 + movl %eax,(%edi) | |
2445 + movl %ebx,4(%edi) | |
2446 + movl %ecx,8(%edi) | |
2447 + movl %edx,12(%edi) | |
2448 + movl 44(%esp),%edi | |
2449 + call __x86_AES_decrypt | |
2450 + movl 48(%esp),%edi | |
2451 + movl 36(%esp),%esi | |
2452 + xorl (%edi),%eax | |
2453 + xorl 4(%edi),%ebx | |
2454 + xorl 8(%edi),%ecx | |
2455 + xorl 12(%edi),%edx | |
2456 + movl %eax,(%esi) | |
2457 + movl %ebx,4(%esi) | |
2458 + movl %ecx,8(%esi) | |
2459 + movl %edx,12(%esi) | |
2460 + leal 16(%esi),%esi | |
2461 + movl %esi,36(%esp) | |
2462 + leal 60(%esp),%esi | |
2463 + movl (%esi),%eax | |
2464 + movl 4(%esi),%ebx | |
2465 + movl 8(%esi),%ecx | |
2466 + movl 12(%esi),%edx | |
2467 + movl %eax,(%edi) | |
2468 + movl %ebx,4(%edi) | |
2469 + movl %ecx,8(%edi) | |
2470 + movl %edx,12(%edi) | |
2471 + movl 32(%esp),%esi | |
2472 + movl 40(%esp),%ecx | |
2473 + leal 16(%esi),%esi | |
2474 + movl %esi,32(%esp) | |
2475 + subl $16,%ecx | |
2476 + movl %ecx,40(%esp) | |
2477 + jnz L027fast_dec_in_place_loop | |
2478 +.align 2,0x90 | |
2479 +L026fast_dec_out: | |
2480 + cmpl $0,316(%esp) | |
2481 + movl 44(%esp),%edi | |
2482 + je L028skip_dzero | |
2483 + movl $60,%ecx | |
2484 + xorl %eax,%eax | |
2485 +.align 2,0x90 | |
2486 +.long 2884892297 | |
2487 +L028skip_dzero: | |
2488 + movl 28(%esp),%esp | |
2489 + popfl | |
2490 + popl %edi | |
2491 + popl %esi | |
2492 + popl %ebx | |
2493 + popl %ebp | |
2494 + ret | |
2495 + pushfl | |
2496 +.align 4,0x90 | |
2497 +L015slow_way: | |
2498 + movl (%eax),%eax | |
2499 + movl 36(%esp),%edi | |
2500 + leal -80(%esp),%esi | |
2501 + andl $-64,%esi | |
2502 + leal -143(%edi),%ebx | |
2503 + subl %esi,%ebx | |
2504 + negl %ebx | |
2505 + andl $960,%ebx | |
2506 + subl %ebx,%esi | |
2507 + leal 768(%esi),%ebx | |
2508 + subl %ebp,%ebx | |
2509 + andl $768,%ebx | |
2510 + leal 2176(%ebp,%ebx,1),%ebp | |
2511 + leal 24(%esp),%edx | |
2512 + xchgl %esi,%esp | |
2513 + addl $4,%esp | |
2514 + movl %ebp,24(%esp) | |
2515 + movl %esi,28(%esp) | |
2516 + movl %eax,52(%esp) | |
2517 + movl (%edx),%eax | |
2518 + movl 4(%edx),%ebx | |
2519 + movl 16(%edx),%esi | |
2520 + movl 20(%edx),%edx | |
2521 + movl %eax,32(%esp) | |
2522 + movl %ebx,36(%esp) | |
2523 + movl %ecx,40(%esp) | |
2524 + movl %edi,44(%esp) | |
2525 + movl %esi,48(%esp) | |
2526 + movl %esi,%edi | |
2527 + movl %eax,%esi | |
2528 + cmpl $0,%edx | |
2529 + je L029slow_decrypt | |
2530 + cmpl $16,%ecx | |
2531 + movl %ebx,%edx | |
2532 + jb L030slow_enc_tail | |
2533 + btl $25,52(%esp) | |
2534 + jnc L031slow_enc_x86 | |
2535 + movq (%edi),%mm0 | |
2536 + movq 8(%edi),%mm4 | |
2537 +.align 4,0x90 | |
2538 +L032slow_enc_loop_sse: | |
2539 + pxor (%esi),%mm0 | |
2540 + pxor 8(%esi),%mm4 | |
2541 + movl 44(%esp),%edi | |
2542 + call __sse_AES_encrypt_compact | |
2543 + movl 32(%esp),%esi | |
2544 + movl 36(%esp),%edi | |
2545 + movl 40(%esp),%ecx | |
2546 + movq %mm0,(%edi) | |
2547 + movq %mm4,8(%edi) | |
2548 + leal 16(%esi),%esi | |
2549 + movl %esi,32(%esp) | |
2550 + leal 16(%edi),%edx | |
2551 + movl %edx,36(%esp) | |
2552 + subl $16,%ecx | |
2553 + cmpl $16,%ecx | |
2554 + movl %ecx,40(%esp) | |
2555 + jae L032slow_enc_loop_sse | |
2556 + testl $15,%ecx | |
2557 + jnz L030slow_enc_tail | |
2558 + movl 48(%esp),%esi | |
2559 + movq %mm0,(%esi) | |
2560 + movq %mm4,8(%esi) | |
2561 + emms | |
2562 + movl 28(%esp),%esp | |
2563 + popfl | |
2564 + popl %edi | |
2565 + popl %esi | |
2566 + popl %ebx | |
2567 + popl %ebp | |
2568 + ret | |
2569 + pushfl | |
2570 +.align 4,0x90 | |
2571 +L031slow_enc_x86: | |
2572 + movl (%edi),%eax | |
2573 + movl 4(%edi),%ebx | |
2574 +.align 2,0x90 | |
2575 +L033slow_enc_loop_x86: | |
2576 + movl 8(%edi),%ecx | |
2577 + movl 12(%edi),%edx | |
2578 + xorl (%esi),%eax | |
2579 + xorl 4(%esi),%ebx | |
2580 + xorl 8(%esi),%ecx | |
2581 + xorl 12(%esi),%edx | |
2582 + movl 44(%esp),%edi | |
2583 + call __x86_AES_encrypt_compact | |
2584 + movl 32(%esp),%esi | |
2585 + movl 36(%esp),%edi | |
2586 + movl %eax,(%edi) | |
2587 + movl %ebx,4(%edi) | |
2588 + movl %ecx,8(%edi) | |
2589 + movl %edx,12(%edi) | |
2590 + movl 40(%esp),%ecx | |
2591 + leal 16(%esi),%esi | |
2592 + movl %esi,32(%esp) | |
2593 + leal 16(%edi),%edx | |
2594 + movl %edx,36(%esp) | |
2595 + subl $16,%ecx | |
2596 + cmpl $16,%ecx | |
2597 + movl %ecx,40(%esp) | |
2598 + jae L033slow_enc_loop_x86 | |
2599 + testl $15,%ecx | |
2600 + jnz L030slow_enc_tail | |
2601 + movl 48(%esp),%esi | |
2602 + movl 8(%edi),%ecx | |
2603 + movl 12(%edi),%edx | |
2604 + movl %eax,(%esi) | |
2605 + movl %ebx,4(%esi) | |
2606 + movl %ecx,8(%esi) | |
2607 + movl %edx,12(%esi) | |
2608 + movl 28(%esp),%esp | |
2609 + popfl | |
2610 + popl %edi | |
2611 + popl %esi | |
2612 + popl %ebx | |
2613 + popl %ebp | |
2614 + ret | |
2615 + pushfl | |
2616 +.align 4,0x90 | |
2617 +L030slow_enc_tail: | |
2618 + emms | |
2619 + movl %edx,%edi | |
2620 + movl $16,%ebx | |
2621 + subl %ecx,%ebx | |
2622 + cmpl %esi,%edi | |
2623 + je L034enc_in_place | |
2624 +.align 2,0x90 | |
2625 +.long 2767451785 | |
2626 + jmp L035enc_skip_in_place | |
2627 +L034enc_in_place: | |
2628 + leal (%edi,%ecx,1),%edi | |
2629 +L035enc_skip_in_place: | |
2630 + movl %ebx,%ecx | |
2631 + xorl %eax,%eax | |
2632 +.align 2,0x90 | |
2633 +.long 2868115081 | |
2634 + movl 48(%esp),%edi | |
2635 + movl %edx,%esi | |
2636 + movl (%edi),%eax | |
2637 + movl 4(%edi),%ebx | |
2638 + movl $16,40(%esp) | |
2639 + jmp L033slow_enc_loop_x86 | |
2640 +.align 4,0x90 | |
2641 +L029slow_decrypt: | |
2642 + btl $25,52(%esp) | |
2643 + jnc L036slow_dec_loop_x86 | |
2644 +.align 2,0x90 | |
2645 +L037slow_dec_loop_sse: | |
2646 + movq (%esi),%mm0 | |
2647 + movq 8(%esi),%mm4 | |
2648 + movl 44(%esp),%edi | |
2649 + call __sse_AES_decrypt_compact | |
2650 + movl 32(%esp),%esi | |
2651 + leal 60(%esp),%eax | |
2652 + movl 36(%esp),%ebx | |
2653 + movl 40(%esp),%ecx | |
2654 + movl 48(%esp),%edi | |
2655 + movq (%esi),%mm1 | |
2656 + movq 8(%esi),%mm5 | |
2657 + pxor (%edi),%mm0 | |
2658 + pxor 8(%edi),%mm4 | |
2659 + movq %mm1,(%edi) | |
2660 + movq %mm5,8(%edi) | |
2661 + subl $16,%ecx | |
2662 + jc L038slow_dec_partial_sse | |
2663 + movq %mm0,(%ebx) | |
2664 + movq %mm4,8(%ebx) | |
2665 + leal 16(%ebx),%ebx | |
2666 + movl %ebx,36(%esp) | |
2667 + leal 16(%esi),%esi | |
2668 + movl %esi,32(%esp) | |
2669 + movl %ecx,40(%esp) | |
2670 + jnz L037slow_dec_loop_sse | |
2671 + emms | |
2672 + movl 28(%esp),%esp | |
2673 + popfl | |
2674 + popl %edi | |
2675 + popl %esi | |
2676 + popl %ebx | |
2677 + popl %ebp | |
2678 + ret | |
2679 + pushfl | |
2680 +.align 4,0x90 | |
2681 +L038slow_dec_partial_sse: | |
2682 + movq %mm0,(%eax) | |
2683 + movq %mm4,8(%eax) | |
2684 + emms | |
2685 + addl $16,%ecx | |
2686 + movl %ebx,%edi | |
2687 + movl %eax,%esi | |
2688 +.align 2,0x90 | |
2689 +.long 2767451785 | |
2690 + movl 28(%esp),%esp | |
2691 + popfl | |
2692 + popl %edi | |
2693 + popl %esi | |
2694 + popl %ebx | |
2695 + popl %ebp | |
2696 + ret | |
2697 + pushfl | |
2698 +.align 4,0x90 | |
2699 +L036slow_dec_loop_x86: | |
2700 + movl (%esi),%eax | |
2701 + movl 4(%esi),%ebx | |
2702 + movl 8(%esi),%ecx | |
2703 + movl 12(%esi),%edx | |
2704 + leal 60(%esp),%edi | |
2705 + movl %eax,(%edi) | |
2706 + movl %ebx,4(%edi) | |
2707 + movl %ecx,8(%edi) | |
2708 + movl %edx,12(%edi) | |
2709 + movl 44(%esp),%edi | |
2710 + call __x86_AES_decrypt_compact | |
2711 + movl 48(%esp),%edi | |
2712 + movl 40(%esp),%esi | |
2713 + xorl (%edi),%eax | |
2714 + xorl 4(%edi),%ebx | |
2715 + xorl 8(%edi),%ecx | |
2716 + xorl 12(%edi),%edx | |
2717 + subl $16,%esi | |
2718 + jc L039slow_dec_partial_x86 | |
2719 + movl %esi,40(%esp) | |
2720 + movl 36(%esp),%esi | |
2721 + movl %eax,(%esi) | |
2722 + movl %ebx,4(%esi) | |
2723 + movl %ecx,8(%esi) | |
2724 + movl %edx,12(%esi) | |
2725 + leal 16(%esi),%esi | |
2726 + movl %esi,36(%esp) | |
2727 + leal 60(%esp),%esi | |
2728 + movl (%esi),%eax | |
2729 + movl 4(%esi),%ebx | |
2730 + movl 8(%esi),%ecx | |
2731 + movl 12(%esi),%edx | |
2732 + movl %eax,(%edi) | |
2733 + movl %ebx,4(%edi) | |
2734 + movl %ecx,8(%edi) | |
2735 + movl %edx,12(%edi) | |
2736 + movl 32(%esp),%esi | |
2737 + leal 16(%esi),%esi | |
2738 + movl %esi,32(%esp) | |
2739 + jnz L036slow_dec_loop_x86 | |
2740 + movl 28(%esp),%esp | |
2741 + popfl | |
2742 + popl %edi | |
2743 + popl %esi | |
2744 + popl %ebx | |
2745 + popl %ebp | |
2746 + ret | |
2747 + pushfl | |
2748 +.align 4,0x90 | |
2749 +L039slow_dec_partial_x86: | |
2750 + leal 60(%esp),%esi | |
2751 + movl %eax,(%esi) | |
2752 + movl %ebx,4(%esi) | |
2753 + movl %ecx,8(%esi) | |
2754 + movl %edx,12(%esi) | |
2755 + movl 32(%esp),%esi | |
2756 + movl (%esi),%eax | |
2757 + movl 4(%esi),%ebx | |
2758 + movl 8(%esi),%ecx | |
2759 + movl 12(%esi),%edx | |
2760 + movl %eax,(%edi) | |
2761 + movl %ebx,4(%edi) | |
2762 + movl %ecx,8(%edi) | |
2763 + movl %edx,12(%edi) | |
2764 + movl 40(%esp),%ecx | |
2765 + movl 36(%esp),%edi | |
2766 + leal 60(%esp),%esi | |
2767 +.align 2,0x90 | |
2768 +.long 2767451785 | |
2769 + movl 28(%esp),%esp | |
2770 + popfl | |
2771 + popl %edi | |
2772 + popl %esi | |
2773 + popl %ebx | |
2774 + popl %ebp | |
2775 + ret | |
2776 +.align 4 | |
2777 +__x86_AES_set_encrypt_key: | |
2778 + pushl %ebp | |
2779 + pushl %ebx | |
2780 + pushl %esi | |
2781 + pushl %edi | |
2782 + movl 24(%esp),%esi | |
2783 + movl 32(%esp),%edi | |
2784 + testl $-1,%esi | |
2785 + jz L040badpointer | |
2786 + testl $-1,%edi | |
2787 + jz L040badpointer | |
2788 + call L041pic_point | |
2789 +L041pic_point: | |
2790 + popl %ebp | |
2791 + leal LAES_Te-L041pic_point(%ebp),%ebp | |
2792 + leal 2176(%ebp),%ebp | |
2793 + movl -128(%ebp),%eax | |
2794 + movl -96(%ebp),%ebx | |
2795 + movl -64(%ebp),%ecx | |
2796 + movl -32(%ebp),%edx | |
2797 + movl (%ebp),%eax | |
2798 + movl 32(%ebp),%ebx | |
2799 + movl 64(%ebp),%ecx | |
2800 + movl 96(%ebp),%edx | |
2801 + movl 28(%esp),%ecx | |
2802 + cmpl $128,%ecx | |
2803 + je L04210rounds | |
2804 + cmpl $192,%ecx | |
2805 + je L04312rounds | |
2806 + cmpl $256,%ecx | |
2807 + je L04414rounds | |
2808 + movl $-2,%eax | |
2809 + jmp L045exit | |
2810 +L04210rounds: | |
2811 + movl (%esi),%eax | |
2812 + movl 4(%esi),%ebx | |
2813 + movl 8(%esi),%ecx | |
2814 + movl 12(%esi),%edx | |
2815 + movl %eax,(%edi) | |
2816 + movl %ebx,4(%edi) | |
2817 + movl %ecx,8(%edi) | |
2818 + movl %edx,12(%edi) | |
2819 + xorl %ecx,%ecx | |
2820 + jmp L04610shortcut | |
2821 +.align 2,0x90 | |
2822 +L04710loop: | |
2823 + movl (%edi),%eax | |
2824 + movl 12(%edi),%edx | |
2825 +L04610shortcut: | |
2826 + movzbl %dl,%esi | |
2827 + movzbl -128(%ebp,%esi,1),%ebx | |
2828 + movzbl %dh,%esi | |
2829 + shll $24,%ebx | |
2830 + xorl %ebx,%eax | |
2831 + movzbl -128(%ebp,%esi,1),%ebx | |
2832 + shrl $16,%edx | |
2833 + movzbl %dl,%esi | |
2834 + xorl %ebx,%eax | |
2835 + movzbl -128(%ebp,%esi,1),%ebx | |
2836 + movzbl %dh,%esi | |
2837 + shll $8,%ebx | |
2838 + xorl %ebx,%eax | |
2839 + movzbl -128(%ebp,%esi,1),%ebx | |
2840 + shll $16,%ebx | |
2841 + xorl %ebx,%eax | |
2842 + xorl 896(%ebp,%ecx,4),%eax | |
2843 + movl %eax,16(%edi) | |
2844 + xorl 4(%edi),%eax | |
2845 + movl %eax,20(%edi) | |
2846 + xorl 8(%edi),%eax | |
2847 + movl %eax,24(%edi) | |
2848 + xorl 12(%edi),%eax | |
2849 + movl %eax,28(%edi) | |
2850 + incl %ecx | |
2851 + addl $16,%edi | |
2852 + cmpl $10,%ecx | |
2853 + jl L04710loop | |
2854 + movl $10,80(%edi) | |
2855 + xorl %eax,%eax | |
2856 + jmp L045exit | |
2857 +L04312rounds: | |
2858 + movl (%esi),%eax | |
2859 + movl 4(%esi),%ebx | |
2860 + movl 8(%esi),%ecx | |
2861 + movl 12(%esi),%edx | |
2862 + movl %eax,(%edi) | |
2863 + movl %ebx,4(%edi) | |
2864 + movl %ecx,8(%edi) | |
2865 + movl %edx,12(%edi) | |
2866 + movl 16(%esi),%ecx | |
2867 + movl 20(%esi),%edx | |
2868 + movl %ecx,16(%edi) | |
2869 + movl %edx,20(%edi) | |
2870 + xorl %ecx,%ecx | |
2871 + jmp L04812shortcut | |
2872 +.align 2,0x90 | |
2873 +L04912loop: | |
2874 + movl (%edi),%eax | |
2875 + movl 20(%edi),%edx | |
2876 +L04812shortcut: | |
2877 + movzbl %dl,%esi | |
2878 + movzbl -128(%ebp,%esi,1),%ebx | |
2879 + movzbl %dh,%esi | |
2880 + shll $24,%ebx | |
2881 + xorl %ebx,%eax | |
2882 + movzbl -128(%ebp,%esi,1),%ebx | |
2883 + shrl $16,%edx | |
2884 + movzbl %dl,%esi | |
2885 + xorl %ebx,%eax | |
2886 + movzbl -128(%ebp,%esi,1),%ebx | |
2887 + movzbl %dh,%esi | |
2888 + shll $8,%ebx | |
2889 + xorl %ebx,%eax | |
2890 + movzbl -128(%ebp,%esi,1),%ebx | |
2891 + shll $16,%ebx | |
2892 + xorl %ebx,%eax | |
2893 + xorl 896(%ebp,%ecx,4),%eax | |
2894 + movl %eax,24(%edi) | |
2895 + xorl 4(%edi),%eax | |
2896 + movl %eax,28(%edi) | |
2897 + xorl 8(%edi),%eax | |
2898 + movl %eax,32(%edi) | |
2899 + xorl 12(%edi),%eax | |
2900 + movl %eax,36(%edi) | |
2901 + cmpl $7,%ecx | |
2902 + je L05012break | |
2903 + incl %ecx | |
2904 + xorl 16(%edi),%eax | |
2905 + movl %eax,40(%edi) | |
2906 + xorl 20(%edi),%eax | |
2907 + movl %eax,44(%edi) | |
2908 + addl $24,%edi | |
2909 + jmp L04912loop | |
2910 +L05012break: | |
2911 + movl $12,72(%edi) | |
2912 + xorl %eax,%eax | |
2913 + jmp L045exit | |
2914 +L04414rounds: | |
2915 + movl (%esi),%eax | |
2916 + movl 4(%esi),%ebx | |
2917 + movl 8(%esi),%ecx | |
2918 + movl 12(%esi),%edx | |
2919 + movl %eax,(%edi) | |
2920 + movl %ebx,4(%edi) | |
2921 + movl %ecx,8(%edi) | |
2922 + movl %edx,12(%edi) | |
2923 + movl 16(%esi),%eax | |
2924 + movl 20(%esi),%ebx | |
2925 + movl 24(%esi),%ecx | |
2926 + movl 28(%esi),%edx | |
2927 + movl %eax,16(%edi) | |
2928 + movl %ebx,20(%edi) | |
2929 + movl %ecx,24(%edi) | |
2930 + movl %edx,28(%edi) | |
2931 + xorl %ecx,%ecx | |
2932 + jmp L05114shortcut | |
2933 +.align 2,0x90 | |
2934 +L05214loop: | |
2935 + movl 28(%edi),%edx | |
2936 +L05114shortcut: | |
2937 + movl (%edi),%eax | |
2938 + movzbl %dl,%esi | |
2939 + movzbl -128(%ebp,%esi,1),%ebx | |
2940 + movzbl %dh,%esi | |
2941 + shll $24,%ebx | |
2942 + xorl %ebx,%eax | |
2943 + movzbl -128(%ebp,%esi,1),%ebx | |
2944 + shrl $16,%edx | |
2945 + movzbl %dl,%esi | |
2946 + xorl %ebx,%eax | |
2947 + movzbl -128(%ebp,%esi,1),%ebx | |
2948 + movzbl %dh,%esi | |
2949 + shll $8,%ebx | |
2950 + xorl %ebx,%eax | |
2951 + movzbl -128(%ebp,%esi,1),%ebx | |
2952 + shll $16,%ebx | |
2953 + xorl %ebx,%eax | |
2954 + xorl 896(%ebp,%ecx,4),%eax | |
2955 + movl %eax,32(%edi) | |
2956 + xorl 4(%edi),%eax | |
2957 + movl %eax,36(%edi) | |
2958 + xorl 8(%edi),%eax | |
2959 + movl %eax,40(%edi) | |
2960 + xorl 12(%edi),%eax | |
2961 + movl %eax,44(%edi) | |
2962 + cmpl $6,%ecx | |
2963 + je L05314break | |
2964 + incl %ecx | |
2965 + movl %eax,%edx | |
2966 + movl 16(%edi),%eax | |
2967 + movzbl %dl,%esi | |
2968 + movzbl -128(%ebp,%esi,1),%ebx | |
2969 + movzbl %dh,%esi | |
2970 + xorl %ebx,%eax | |
2971 + movzbl -128(%ebp,%esi,1),%ebx | |
2972 + shrl $16,%edx | |
2973 + shll $8,%ebx | |
2974 + movzbl %dl,%esi | |
2975 + xorl %ebx,%eax | |
2976 + movzbl -128(%ebp,%esi,1),%ebx | |
2977 + movzbl %dh,%esi | |
2978 + shll $16,%ebx | |
2979 + xorl %ebx,%eax | |
2980 + movzbl -128(%ebp,%esi,1),%ebx | |
2981 + shll $24,%ebx | |
2982 + xorl %ebx,%eax | |
2983 + movl %eax,48(%edi) | |
2984 + xorl 20(%edi),%eax | |
2985 + movl %eax,52(%edi) | |
2986 + xorl 24(%edi),%eax | |
2987 + movl %eax,56(%edi) | |
2988 + xorl 28(%edi),%eax | |
2989 + movl %eax,60(%edi) | |
2990 + addl $32,%edi | |
2991 + jmp L05214loop | |
2992 +L05314break: | |
2993 + movl $14,48(%edi) | |
2994 + xorl %eax,%eax | |
2995 + jmp L045exit | |
2996 +L040badpointer: | |
2997 + movl $-1,%eax | |
2998 +L045exit: | |
2999 + popl %edi | |
3000 + popl %esi | |
3001 + popl %ebx | |
3002 + popl %ebp | |
3003 + ret | |
3004 +.globl _private_AES_set_encrypt_key | |
3005 +.align 4 | |
3006 +_private_AES_set_encrypt_key: | |
3007 +L_private_AES_set_encrypt_key_begin: | |
3008 + call __x86_AES_set_encrypt_key | |
3009 + ret | |
3010 +.globl _private_AES_set_decrypt_key | |
3011 +.align 4 | |
3012 +_private_AES_set_decrypt_key: | |
3013 +L_private_AES_set_decrypt_key_begin: | |
3014 + call __x86_AES_set_encrypt_key | |
3015 + cmpl $0,%eax | |
3016 + je L054proceed | |
3017 + ret | |
3018 +L054proceed: | |
3019 + pushl %ebp | |
3020 + pushl %ebx | |
3021 + pushl %esi | |
3022 + pushl %edi | |
3023 + movl 28(%esp),%esi | |
3024 + movl 240(%esi),%ecx | |
3025 + leal (,%ecx,4),%ecx | |
3026 + leal (%esi,%ecx,4),%edi | |
3027 +.align 2,0x90 | |
3028 +L055invert: | |
3029 + movl (%esi),%eax | |
3030 + movl 4(%esi),%ebx | |
3031 + movl (%edi),%ecx | |
3032 + movl 4(%edi),%edx | |
3033 + movl %eax,(%edi) | |
3034 + movl %ebx,4(%edi) | |
3035 + movl %ecx,(%esi) | |
3036 + movl %edx,4(%esi) | |
3037 + movl 8(%esi),%eax | |
3038 + movl 12(%esi),%ebx | |
3039 + movl 8(%edi),%ecx | |
3040 + movl 12(%edi),%edx | |
3041 + movl %eax,8(%edi) | |
3042 + movl %ebx,12(%edi) | |
3043 + movl %ecx,8(%esi) | |
3044 + movl %edx,12(%esi) | |
3045 + addl $16,%esi | |
3046 + subl $16,%edi | |
3047 + cmpl %edi,%esi | |
3048 + jne L055invert | |
3049 + movl 28(%esp),%edi | |
3050 + movl 240(%edi),%esi | |
3051 + leal -2(%esi,%esi,1),%esi | |
3052 + leal (%edi,%esi,8),%esi | |
3053 + movl %esi,28(%esp) | |
3054 + movl 16(%edi),%eax | |
3055 +.align 2,0x90 | |
3056 +L056permute: | |
3057 + addl $16,%edi | |
3058 + movl %eax,%esi | |
3059 + andl $2155905152,%esi | |
3060 + movl %esi,%ebp | |
3061 + shrl $7,%ebp | |
3062 + leal (%eax,%eax,1),%ebx | |
3063 + subl %ebp,%esi | |
3064 + andl $4278124286,%ebx | |
3065 + andl $454761243,%esi | |
3066 + xorl %ebx,%esi | |
3067 + movl %esi,%ebx | |
3068 + andl $2155905152,%esi | |
3069 + movl %esi,%ebp | |
3070 + shrl $7,%ebp | |
3071 + leal (%ebx,%ebx,1),%ecx | |
3072 + subl %ebp,%esi | |
3073 + andl $4278124286,%ecx | |
3074 + andl $454761243,%esi | |
3075 + xorl %eax,%ebx | |
3076 + xorl %ecx,%esi | |
3077 + movl %esi,%ecx | |
3078 + andl $2155905152,%esi | |
3079 + movl %esi,%ebp | |
3080 + shrl $7,%ebp | |
3081 + leal (%ecx,%ecx,1),%edx | |
3082 + xorl %eax,%ecx | |
3083 + subl %ebp,%esi | |
3084 + andl $4278124286,%edx | |
3085 + andl $454761243,%esi | |
3086 + roll $8,%eax | |
3087 + xorl %esi,%edx | |
3088 + movl 4(%edi),%ebp | |
3089 + xorl %ebx,%eax | |
3090 + xorl %edx,%ebx | |
3091 + xorl %ecx,%eax | |
3092 + roll $24,%ebx | |
3093 + xorl %edx,%ecx | |
3094 + xorl %edx,%eax | |
3095 + roll $16,%ecx | |
3096 + xorl %ebx,%eax | |
3097 + roll $8,%edx | |
3098 + xorl %ecx,%eax | |
3099 + movl %ebp,%ebx | |
3100 + xorl %edx,%eax | |
3101 + movl %eax,(%edi) | |
3102 + movl %ebx,%esi | |
3103 + andl $2155905152,%esi | |
3104 + movl %esi,%ebp | |
3105 + shrl $7,%ebp | |
3106 + leal (%ebx,%ebx,1),%ecx | |
3107 + subl %ebp,%esi | |
3108 + andl $4278124286,%ecx | |
3109 + andl $454761243,%esi | |
3110 + xorl %ecx,%esi | |
3111 + movl %esi,%ecx | |
3112 + andl $2155905152,%esi | |
3113 + movl %esi,%ebp | |
3114 + shrl $7,%ebp | |
3115 + leal (%ecx,%ecx,1),%edx | |
3116 + subl %ebp,%esi | |
3117 + andl $4278124286,%edx | |
3118 + andl $454761243,%esi | |
3119 + xorl %ebx,%ecx | |
3120 + xorl %edx,%esi | |
3121 + movl %esi,%edx | |
3122 + andl $2155905152,%esi | |
3123 + movl %esi,%ebp | |
3124 + shrl $7,%ebp | |
3125 + leal (%edx,%edx,1),%eax | |
3126 + xorl %ebx,%edx | |
3127 + subl %ebp,%esi | |
3128 + andl $4278124286,%eax | |
3129 + andl $454761243,%esi | |
3130 + roll $8,%ebx | |
3131 + xorl %esi,%eax | |
3132 + movl 8(%edi),%ebp | |
3133 + xorl %ecx,%ebx | |
3134 + xorl %eax,%ecx | |
3135 + xorl %edx,%ebx | |
3136 + roll $24,%ecx | |
3137 + xorl %eax,%edx | |
3138 + xorl %eax,%ebx | |
3139 + roll $16,%edx | |
3140 + xorl %ecx,%ebx | |
3141 + roll $8,%eax | |
3142 + xorl %edx,%ebx | |
3143 + movl %ebp,%ecx | |
3144 + xorl %eax,%ebx | |
3145 + movl %ebx,4(%edi) | |
3146 + movl %ecx,%esi | |
3147 + andl $2155905152,%esi | |
3148 + movl %esi,%ebp | |
3149 + shrl $7,%ebp | |
3150 + leal (%ecx,%ecx,1),%edx | |
3151 + subl %ebp,%esi | |
3152 + andl $4278124286,%edx | |
3153 + andl $454761243,%esi | |
3154 + xorl %edx,%esi | |
3155 + movl %esi,%edx | |
3156 + andl $2155905152,%esi | |
3157 + movl %esi,%ebp | |
3158 + shrl $7,%ebp | |
3159 + leal (%edx,%edx,1),%eax | |
3160 + subl %ebp,%esi | |
3161 + andl $4278124286,%eax | |
3162 + andl $454761243,%esi | |
3163 + xorl %ecx,%edx | |
3164 + xorl %eax,%esi | |
3165 + movl %esi,%eax | |
3166 + andl $2155905152,%esi | |
3167 + movl %esi,%ebp | |
3168 + shrl $7,%ebp | |
3169 + leal (%eax,%eax,1),%ebx | |
3170 + xorl %ecx,%eax | |
3171 + subl %ebp,%esi | |
3172 + andl $4278124286,%ebx | |
3173 + andl $454761243,%esi | |
3174 + roll $8,%ecx | |
3175 + xorl %esi,%ebx | |
3176 + movl 12(%edi),%ebp | |
3177 + xorl %edx,%ecx | |
3178 + xorl %ebx,%edx | |
3179 + xorl %eax,%ecx | |
3180 + roll $24,%edx | |
3181 + xorl %ebx,%eax | |
3182 + xorl %ebx,%ecx | |
3183 + roll $16,%eax | |
3184 + xorl %edx,%ecx | |
3185 + roll $8,%ebx | |
3186 + xorl %eax,%ecx | |
3187 + movl %ebp,%edx | |
3188 + xorl %ebx,%ecx | |
3189 + movl %ecx,8(%edi) | |
3190 + movl %edx,%esi | |
3191 + andl $2155905152,%esi | |
3192 + movl %esi,%ebp | |
3193 + shrl $7,%ebp | |
3194 + leal (%edx,%edx,1),%eax | |
3195 + subl %ebp,%esi | |
3196 + andl $4278124286,%eax | |
3197 + andl $454761243,%esi | |
3198 + xorl %eax,%esi | |
3199 + movl %esi,%eax | |
3200 + andl $2155905152,%esi | |
3201 + movl %esi,%ebp | |
3202 + shrl $7,%ebp | |
3203 + leal (%eax,%eax,1),%ebx | |
3204 + subl %ebp,%esi | |
3205 + andl $4278124286,%ebx | |
3206 + andl $454761243,%esi | |
3207 + xorl %edx,%eax | |
3208 + xorl %ebx,%esi | |
3209 + movl %esi,%ebx | |
3210 + andl $2155905152,%esi | |
3211 + movl %esi,%ebp | |
3212 + shrl $7,%ebp | |
3213 + leal (%ebx,%ebx,1),%ecx | |
3214 + xorl %edx,%ebx | |
3215 + subl %ebp,%esi | |
3216 + andl $4278124286,%ecx | |
3217 + andl $454761243,%esi | |
3218 + roll $8,%edx | |
3219 + xorl %esi,%ecx | |
3220 + movl 16(%edi),%ebp | |
3221 + xorl %eax,%edx | |
3222 + xorl %ecx,%eax | |
3223 + xorl %ebx,%edx | |
3224 + roll $24,%eax | |
3225 + xorl %ecx,%ebx | |
3226 + xorl %ecx,%edx | |
3227 + roll $16,%ebx | |
3228 + xorl %eax,%edx | |
3229 + roll $8,%ecx | |
3230 + xorl %ebx,%edx | |
3231 + movl %ebp,%eax | |
3232 + xorl %ecx,%edx | |
3233 + movl %edx,12(%edi) | |
3234 + cmpl 28(%esp),%edi | |
3235 + jb L056permute | |
3236 + xorl %eax,%eax | |
3237 + popl %edi | |
3238 + popl %esi | |
3239 + popl %ebx | |
3240 + popl %ebp | |
3241 + ret | |
3242 +.byte 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 | |
3243 +.byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 | |
3244 +.byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 | |
3245 +.section __IMPORT,__pointers,non_lazy_symbol_pointers | |
3246 +L_OPENSSL_ia32cap_P$non_lazy_ptr: | |
3247 +.indirect_symbol _OPENSSL_ia32cap_P | |
3248 +.long 0 | |
3249 +.comm _OPENSSL_ia32cap_P,8,2 | |
3250 diff --git a/crypto/aes/asm/aesni-x86-mac.S b/crypto/aes/asm/aesni-x86-mac.S | |
3251 new file mode 100644 | |
3252 index 0000000..2bf45c6 | |
3253 --- /dev/null | |
3254 +++ b/crypto/aes/asm/aesni-x86-mac.S | |
3255 @@ -0,0 +1,2107 @@ | |
3256 +.file "crypto/aes/asm/aesni-x86.s" | |
3257 +.text | |
3258 +.globl _aesni_encrypt | |
3259 +.align 4 | |
3260 +_aesni_encrypt: | |
3261 +L_aesni_encrypt_begin: | |
3262 + movl 4(%esp),%eax | |
3263 + movl 12(%esp),%edx | |
3264 + movups (%eax),%xmm2 | |
3265 + movl 240(%edx),%ecx | |
3266 + movl 8(%esp),%eax | |
3267 + movups (%edx),%xmm0 | |
3268 + movups 16(%edx),%xmm1 | |
3269 + leal 32(%edx),%edx | |
3270 + xorps %xmm0,%xmm2 | |
3271 +L000enc1_loop_1: | |
3272 +.byte 102,15,56,220,209 | |
3273 + decl %ecx | |
3274 + movups (%edx),%xmm1 | |
3275 + leal 16(%edx),%edx | |
3276 + jnz L000enc1_loop_1 | |
3277 +.byte 102,15,56,221,209 | |
3278 + movups %xmm2,(%eax) | |
3279 + ret | |
3280 +.globl _aesni_decrypt | |
3281 +.align 4 | |
3282 +_aesni_decrypt: | |
3283 +L_aesni_decrypt_begin: | |
3284 + movl 4(%esp),%eax | |
3285 + movl 12(%esp),%edx | |
3286 + movups (%eax),%xmm2 | |
3287 + movl 240(%edx),%ecx | |
3288 + movl 8(%esp),%eax | |
3289 + movups (%edx),%xmm0 | |
3290 + movups 16(%edx),%xmm1 | |
3291 + leal 32(%edx),%edx | |
3292 + xorps %xmm0,%xmm2 | |
3293 +L001dec1_loop_2: | |
3294 +.byte 102,15,56,222,209 | |
3295 + decl %ecx | |
3296 + movups (%edx),%xmm1 | |
3297 + leal 16(%edx),%edx | |
3298 + jnz L001dec1_loop_2 | |
3299 +.byte 102,15,56,223,209 | |
3300 + movups %xmm2,(%eax) | |
3301 + ret | |
3302 +.align 4 | |
3303 +__aesni_encrypt3: | |
3304 + movups (%edx),%xmm0 | |
3305 + shrl $1,%ecx | |
3306 + movups 16(%edx),%xmm1 | |
3307 + leal 32(%edx),%edx | |
3308 + xorps %xmm0,%xmm2 | |
3309 + pxor %xmm0,%xmm3 | |
3310 + pxor %xmm0,%xmm4 | |
3311 + movups (%edx),%xmm0 | |
3312 +L002enc3_loop: | |
3313 +.byte 102,15,56,220,209 | |
3314 +.byte 102,15,56,220,217 | |
3315 + decl %ecx | |
3316 +.byte 102,15,56,220,225 | |
3317 + movups 16(%edx),%xmm1 | |
3318 +.byte 102,15,56,220,208 | |
3319 +.byte 102,15,56,220,216 | |
3320 + leal 32(%edx),%edx | |
3321 +.byte 102,15,56,220,224 | |
3322 + movups (%edx),%xmm0 | |
3323 + jnz L002enc3_loop | |
3324 +.byte 102,15,56,220,209 | |
3325 +.byte 102,15,56,220,217 | |
3326 +.byte 102,15,56,220,225 | |
3327 +.byte 102,15,56,221,208 | |
3328 +.byte 102,15,56,221,216 | |
3329 +.byte 102,15,56,221,224 | |
3330 + ret | |
3331 +.align 4 | |
3332 +__aesni_decrypt3: | |
3333 + movups (%edx),%xmm0 | |
3334 + shrl $1,%ecx | |
3335 + movups 16(%edx),%xmm1 | |
3336 + leal 32(%edx),%edx | |
3337 + xorps %xmm0,%xmm2 | |
3338 + pxor %xmm0,%xmm3 | |
3339 + pxor %xmm0,%xmm4 | |
3340 + movups (%edx),%xmm0 | |
3341 +L003dec3_loop: | |
3342 +.byte 102,15,56,222,209 | |
3343 +.byte 102,15,56,222,217 | |
3344 + decl %ecx | |
3345 +.byte 102,15,56,222,225 | |
3346 + movups 16(%edx),%xmm1 | |
3347 +.byte 102,15,56,222,208 | |
3348 +.byte 102,15,56,222,216 | |
3349 + leal 32(%edx),%edx | |
3350 +.byte 102,15,56,222,224 | |
3351 + movups (%edx),%xmm0 | |
3352 + jnz L003dec3_loop | |
3353 +.byte 102,15,56,222,209 | |
3354 +.byte 102,15,56,222,217 | |
3355 +.byte 102,15,56,222,225 | |
3356 +.byte 102,15,56,223,208 | |
3357 +.byte 102,15,56,223,216 | |
3358 +.byte 102,15,56,223,224 | |
3359 + ret | |
3360 +.align 4 | |
3361 +__aesni_encrypt4: | |
3362 + movups (%edx),%xmm0 | |
3363 + movups 16(%edx),%xmm1 | |
3364 + shrl $1,%ecx | |
3365 + leal 32(%edx),%edx | |
3366 + xorps %xmm0,%xmm2 | |
3367 + pxor %xmm0,%xmm3 | |
3368 + pxor %xmm0,%xmm4 | |
3369 + pxor %xmm0,%xmm5 | |
3370 + movups (%edx),%xmm0 | |
3371 +L004enc4_loop: | |
3372 +.byte 102,15,56,220,209 | |
3373 +.byte 102,15,56,220,217 | |
3374 + decl %ecx | |
3375 +.byte 102,15,56,220,225 | |
3376 +.byte 102,15,56,220,233 | |
3377 + movups 16(%edx),%xmm1 | |
3378 +.byte 102,15,56,220,208 | |
3379 +.byte 102,15,56,220,216 | |
3380 + leal 32(%edx),%edx | |
3381 +.byte 102,15,56,220,224 | |
3382 +.byte 102,15,56,220,232 | |
3383 + movups (%edx),%xmm0 | |
3384 + jnz L004enc4_loop | |
3385 +.byte 102,15,56,220,209 | |
3386 +.byte 102,15,56,220,217 | |
3387 +.byte 102,15,56,220,225 | |
3388 +.byte 102,15,56,220,233 | |
3389 +.byte 102,15,56,221,208 | |
3390 +.byte 102,15,56,221,216 | |
3391 +.byte 102,15,56,221,224 | |
3392 +.byte 102,15,56,221,232 | |
3393 + ret | |
3394 +.align 4 | |
3395 +__aesni_decrypt4: | |
3396 + movups (%edx),%xmm0 | |
3397 + movups 16(%edx),%xmm1 | |
3398 + shrl $1,%ecx | |
3399 + leal 32(%edx),%edx | |
3400 + xorps %xmm0,%xmm2 | |
3401 + pxor %xmm0,%xmm3 | |
3402 + pxor %xmm0,%xmm4 | |
3403 + pxor %xmm0,%xmm5 | |
3404 + movups (%edx),%xmm0 | |
3405 +L005dec4_loop: | |
3406 +.byte 102,15,56,222,209 | |
3407 +.byte 102,15,56,222,217 | |
3408 + decl %ecx | |
3409 +.byte 102,15,56,222,225 | |
3410 +.byte 102,15,56,222,233 | |
3411 + movups 16(%edx),%xmm1 | |
3412 +.byte 102,15,56,222,208 | |
3413 +.byte 102,15,56,222,216 | |
3414 + leal 32(%edx),%edx | |
3415 +.byte 102,15,56,222,224 | |
3416 +.byte 102,15,56,222,232 | |
3417 + movups (%edx),%xmm0 | |
3418 + jnz L005dec4_loop | |
3419 +.byte 102,15,56,222,209 | |
3420 +.byte 102,15,56,222,217 | |
3421 +.byte 102,15,56,222,225 | |
3422 +.byte 102,15,56,222,233 | |
3423 +.byte 102,15,56,223,208 | |
3424 +.byte 102,15,56,223,216 | |
3425 +.byte 102,15,56,223,224 | |
3426 +.byte 102,15,56,223,232 | |
3427 + ret | |
3428 +.align 4 | |
3429 +__aesni_encrypt6: | |
3430 + movups (%edx),%xmm0 | |
3431 + shrl $1,%ecx | |
3432 + movups 16(%edx),%xmm1 | |
3433 + leal 32(%edx),%edx | |
3434 + xorps %xmm0,%xmm2 | |
3435 + pxor %xmm0,%xmm3 | |
3436 +.byte 102,15,56,220,209 | |
3437 + pxor %xmm0,%xmm4 | |
3438 +.byte 102,15,56,220,217 | |
3439 + pxor %xmm0,%xmm5 | |
3440 + decl %ecx | |
3441 +.byte 102,15,56,220,225 | |
3442 + pxor %xmm0,%xmm6 | |
3443 +.byte 102,15,56,220,233 | |
3444 + pxor %xmm0,%xmm7 | |
3445 +.byte 102,15,56,220,241 | |
3446 + movups (%edx),%xmm0 | |
3447 +.byte 102,15,56,220,249 | |
3448 + jmp L_aesni_encrypt6_enter | |
3449 +.align 4,0x90 | |
3450 +L006enc6_loop: | |
3451 +.byte 102,15,56,220,209 | |
3452 +.byte 102,15,56,220,217 | |
3453 + decl %ecx | |
3454 +.byte 102,15,56,220,225 | |
3455 +.byte 102,15,56,220,233 | |
3456 +.byte 102,15,56,220,241 | |
3457 +.byte 102,15,56,220,249 | |
3458 +.align 4,0x90 | |
3459 +L_aesni_encrypt6_enter: | |
3460 + movups 16(%edx),%xmm1 | |
3461 +.byte 102,15,56,220,208 | |
3462 +.byte 102,15,56,220,216 | |
3463 + leal 32(%edx),%edx | |
3464 +.byte 102,15,56,220,224 | |
3465 +.byte 102,15,56,220,232 | |
3466 +.byte 102,15,56,220,240 | |
3467 +.byte 102,15,56,220,248 | |
3468 + movups (%edx),%xmm0 | |
3469 + jnz L006enc6_loop | |
3470 +.byte 102,15,56,220,209 | |
3471 +.byte 102,15,56,220,217 | |
3472 +.byte 102,15,56,220,225 | |
3473 +.byte 102,15,56,220,233 | |
3474 +.byte 102,15,56,220,241 | |
3475 +.byte 102,15,56,220,249 | |
3476 +.byte 102,15,56,221,208 | |
3477 +.byte 102,15,56,221,216 | |
3478 +.byte 102,15,56,221,224 | |
3479 +.byte 102,15,56,221,232 | |
3480 +.byte 102,15,56,221,240 | |
3481 +.byte 102,15,56,221,248 | |
3482 + ret | |
3483 +.align 4 | |
3484 +__aesni_decrypt6: | |
3485 + movups (%edx),%xmm0 | |
3486 + shrl $1,%ecx | |
3487 + movups 16(%edx),%xmm1 | |
3488 + leal 32(%edx),%edx | |
3489 + xorps %xmm0,%xmm2 | |
3490 + pxor %xmm0,%xmm3 | |
3491 +.byte 102,15,56,222,209 | |
3492 + pxor %xmm0,%xmm4 | |
3493 +.byte 102,15,56,222,217 | |
3494 + pxor %xmm0,%xmm5 | |
3495 + decl %ecx | |
3496 +.byte 102,15,56,222,225 | |
3497 + pxor %xmm0,%xmm6 | |
3498 +.byte 102,15,56,222,233 | |
3499 + pxor %xmm0,%xmm7 | |
3500 +.byte 102,15,56,222,241 | |
3501 + movups (%edx),%xmm0 | |
3502 +.byte 102,15,56,222,249 | |
3503 + jmp L_aesni_decrypt6_enter | |
3504 +.align 4,0x90 | |
3505 +L007dec6_loop: | |
3506 +.byte 102,15,56,222,209 | |
3507 +.byte 102,15,56,222,217 | |
3508 + decl %ecx | |
3509 +.byte 102,15,56,222,225 | |
3510 +.byte 102,15,56,222,233 | |
3511 +.byte 102,15,56,222,241 | |
3512 +.byte 102,15,56,222,249 | |
3513 +.align 4,0x90 | |
3514 +L_aesni_decrypt6_enter: | |
3515 + movups 16(%edx),%xmm1 | |
3516 +.byte 102,15,56,222,208 | |
3517 +.byte 102,15,56,222,216 | |
3518 + leal 32(%edx),%edx | |
3519 +.byte 102,15,56,222,224 | |
3520 +.byte 102,15,56,222,232 | |
3521 +.byte 102,15,56,222,240 | |
3522 +.byte 102,15,56,222,248 | |
3523 + movups (%edx),%xmm0 | |
3524 + jnz L007dec6_loop | |
3525 +.byte 102,15,56,222,209 | |
3526 +.byte 102,15,56,222,217 | |
3527 +.byte 102,15,56,222,225 | |
3528 +.byte 102,15,56,222,233 | |
3529 +.byte 102,15,56,222,241 | |
3530 +.byte 102,15,56,222,249 | |
3531 +.byte 102,15,56,223,208 | |
3532 +.byte 102,15,56,223,216 | |
3533 +.byte 102,15,56,223,224 | |
3534 +.byte 102,15,56,223,232 | |
3535 +.byte 102,15,56,223,240 | |
3536 +.byte 102,15,56,223,248 | |
3537 + ret | |
3538 +.globl _aesni_ecb_encrypt | |
3539 +.align 4 | |
3540 +_aesni_ecb_encrypt: | |
3541 +L_aesni_ecb_encrypt_begin: | |
3542 + pushl %ebp | |
3543 + pushl %ebx | |
3544 + pushl %esi | |
3545 + pushl %edi | |
3546 + movl 20(%esp),%esi | |
3547 + movl 24(%esp),%edi | |
3548 + movl 28(%esp),%eax | |
3549 + movl 32(%esp),%edx | |
3550 + movl 36(%esp),%ebx | |
3551 + andl $-16,%eax | |
3552 + jz L008ecb_ret | |
3553 + movl 240(%edx),%ecx | |
3554 + testl %ebx,%ebx | |
3555 + jz L009ecb_decrypt | |
3556 + movl %edx,%ebp | |
3557 + movl %ecx,%ebx | |
3558 + cmpl $96,%eax | |
3559 + jb L010ecb_enc_tail | |
3560 + movdqu (%esi),%xmm2 | |
3561 + movdqu 16(%esi),%xmm3 | |
3562 + movdqu 32(%esi),%xmm4 | |
3563 + movdqu 48(%esi),%xmm5 | |
3564 + movdqu 64(%esi),%xmm6 | |
3565 + movdqu 80(%esi),%xmm7 | |
3566 + leal 96(%esi),%esi | |
3567 + subl $96,%eax | |
3568 + jmp L011ecb_enc_loop6_enter | |
3569 +.align 4,0x90 | |
3570 +L012ecb_enc_loop6: | |
3571 + movups %xmm2,(%edi) | |
3572 + movdqu (%esi),%xmm2 | |
3573 + movups %xmm3,16(%edi) | |
3574 + movdqu 16(%esi),%xmm3 | |
3575 + movups %xmm4,32(%edi) | |
3576 + movdqu 32(%esi),%xmm4 | |
3577 + movups %xmm5,48(%edi) | |
3578 + movdqu 48(%esi),%xmm5 | |
3579 + movups %xmm6,64(%edi) | |
3580 + movdqu 64(%esi),%xmm6 | |
3581 + movups %xmm7,80(%edi) | |
3582 + leal 96(%edi),%edi | |
3583 + movdqu 80(%esi),%xmm7 | |
3584 + leal 96(%esi),%esi | |
3585 +L011ecb_enc_loop6_enter: | |
3586 + call __aesni_encrypt6 | |
3587 + movl %ebp,%edx | |
3588 + movl %ebx,%ecx | |
3589 + subl $96,%eax | |
3590 + jnc L012ecb_enc_loop6 | |
3591 + movups %xmm2,(%edi) | |
3592 + movups %xmm3,16(%edi) | |
3593 + movups %xmm4,32(%edi) | |
3594 + movups %xmm5,48(%edi) | |
3595 + movups %xmm6,64(%edi) | |
3596 + movups %xmm7,80(%edi) | |
3597 + leal 96(%edi),%edi | |
3598 + addl $96,%eax | |
3599 + jz L008ecb_ret | |
3600 +L010ecb_enc_tail: | |
3601 + movups (%esi),%xmm2 | |
3602 + cmpl $32,%eax | |
3603 + jb L013ecb_enc_one | |
3604 + movups 16(%esi),%xmm3 | |
3605 + je L014ecb_enc_two | |
3606 + movups 32(%esi),%xmm4 | |
3607 + cmpl $64,%eax | |
3608 + jb L015ecb_enc_three | |
3609 + movups 48(%esi),%xmm5 | |
3610 + je L016ecb_enc_four | |
3611 + movups 64(%esi),%xmm6 | |
3612 + xorps %xmm7,%xmm7 | |
3613 + call __aesni_encrypt6 | |
3614 + movups %xmm2,(%edi) | |
3615 + movups %xmm3,16(%edi) | |
3616 + movups %xmm4,32(%edi) | |
3617 + movups %xmm5,48(%edi) | |
3618 + movups %xmm6,64(%edi) | |
3619 + jmp L008ecb_ret | |
3620 +.align 4,0x90 | |
3621 +L013ecb_enc_one: | |
3622 + movups (%edx),%xmm0 | |
3623 + movups 16(%edx),%xmm1 | |
3624 + leal 32(%edx),%edx | |
3625 + xorps %xmm0,%xmm2 | |
3626 +L017enc1_loop_3: | |
3627 +.byte 102,15,56,220,209 | |
3628 + decl %ecx | |
3629 + movups (%edx),%xmm1 | |
3630 + leal 16(%edx),%edx | |
3631 + jnz L017enc1_loop_3 | |
3632 +.byte 102,15,56,221,209 | |
3633 + movups %xmm2,(%edi) | |
3634 + jmp L008ecb_ret | |
3635 +.align 4,0x90 | |
3636 +L014ecb_enc_two: | |
3637 + xorps %xmm4,%xmm4 | |
3638 + call __aesni_encrypt3 | |
3639 + movups %xmm2,(%edi) | |
3640 + movups %xmm3,16(%edi) | |
3641 + jmp L008ecb_ret | |
3642 +.align 4,0x90 | |
3643 +L015ecb_enc_three: | |
3644 + call __aesni_encrypt3 | |
3645 + movups %xmm2,(%edi) | |
3646 + movups %xmm3,16(%edi) | |
3647 + movups %xmm4,32(%edi) | |
3648 + jmp L008ecb_ret | |
3649 +.align 4,0x90 | |
3650 +L016ecb_enc_four: | |
3651 + call __aesni_encrypt4 | |
3652 + movups %xmm2,(%edi) | |
3653 + movups %xmm3,16(%edi) | |
3654 + movups %xmm4,32(%edi) | |
3655 + movups %xmm5,48(%edi) | |
3656 + jmp L008ecb_ret | |
3657 +.align 4,0x90 | |
3658 +L009ecb_decrypt: | |
3659 + movl %edx,%ebp | |
3660 + movl %ecx,%ebx | |
3661 + cmpl $96,%eax | |
3662 + jb L018ecb_dec_tail | |
3663 + movdqu (%esi),%xmm2 | |
3664 + movdqu 16(%esi),%xmm3 | |
3665 + movdqu 32(%esi),%xmm4 | |
3666 + movdqu 48(%esi),%xmm5 | |
3667 + movdqu 64(%esi),%xmm6 | |
3668 + movdqu 80(%esi),%xmm7 | |
3669 + leal 96(%esi),%esi | |
3670 + subl $96,%eax | |
3671 + jmp L019ecb_dec_loop6_enter | |
3672 +.align 4,0x90 | |
3673 +L020ecb_dec_loop6: | |
3674 + movups %xmm2,(%edi) | |
3675 + movdqu (%esi),%xmm2 | |
3676 + movups %xmm3,16(%edi) | |
3677 + movdqu 16(%esi),%xmm3 | |
3678 + movups %xmm4,32(%edi) | |
3679 + movdqu 32(%esi),%xmm4 | |
3680 + movups %xmm5,48(%edi) | |
3681 + movdqu 48(%esi),%xmm5 | |
3682 + movups %xmm6,64(%edi) | |
3683 + movdqu 64(%esi),%xmm6 | |
3684 + movups %xmm7,80(%edi) | |
3685 + leal 96(%edi),%edi | |
3686 + movdqu 80(%esi),%xmm7 | |
3687 + leal 96(%esi),%esi | |
3688 +L019ecb_dec_loop6_enter: | |
3689 + call __aesni_decrypt6 | |
3690 + movl %ebp,%edx | |
3691 + movl %ebx,%ecx | |
3692 + subl $96,%eax | |
3693 + jnc L020ecb_dec_loop6 | |
3694 + movups %xmm2,(%edi) | |
3695 + movups %xmm3,16(%edi) | |
3696 + movups %xmm4,32(%edi) | |
3697 + movups %xmm5,48(%edi) | |
3698 + movups %xmm6,64(%edi) | |
3699 + movups %xmm7,80(%edi) | |
3700 + leal 96(%edi),%edi | |
3701 + addl $96,%eax | |
3702 + jz L008ecb_ret | |
3703 +L018ecb_dec_tail: | |
3704 + movups (%esi),%xmm2 | |
3705 + cmpl $32,%eax | |
3706 + jb L021ecb_dec_one | |
3707 + movups 16(%esi),%xmm3 | |
3708 + je L022ecb_dec_two | |
3709 + movups 32(%esi),%xmm4 | |
3710 + cmpl $64,%eax | |
3711 + jb L023ecb_dec_three | |
3712 + movups 48(%esi),%xmm5 | |
3713 + je L024ecb_dec_four | |
3714 + movups 64(%esi),%xmm6 | |
3715 + xorps %xmm7,%xmm7 | |
3716 + call __aesni_decrypt6 | |
3717 + movups %xmm2,(%edi) | |
3718 + movups %xmm3,16(%edi) | |
3719 + movups %xmm4,32(%edi) | |
3720 + movups %xmm5,48(%edi) | |
3721 + movups %xmm6,64(%edi) | |
3722 + jmp L008ecb_ret | |
3723 +.align 4,0x90 | |
3724 +L021ecb_dec_one: | |
3725 + movups (%edx),%xmm0 | |
3726 + movups 16(%edx),%xmm1 | |
3727 + leal 32(%edx),%edx | |
3728 + xorps %xmm0,%xmm2 | |
3729 +L025dec1_loop_4: | |
3730 +.byte 102,15,56,222,209 | |
3731 + decl %ecx | |
3732 + movups (%edx),%xmm1 | |
3733 + leal 16(%edx),%edx | |
3734 + jnz L025dec1_loop_4 | |
3735 +.byte 102,15,56,223,209 | |
3736 + movups %xmm2,(%edi) | |
3737 + jmp L008ecb_ret | |
3738 +.align 4,0x90 | |
3739 +L022ecb_dec_two: | |
3740 + xorps %xmm4,%xmm4 | |
3741 + call __aesni_decrypt3 | |
3742 + movups %xmm2,(%edi) | |
3743 + movups %xmm3,16(%edi) | |
3744 + jmp L008ecb_ret | |
3745 +.align 4,0x90 | |
3746 +L023ecb_dec_three: | |
3747 + call __aesni_decrypt3 | |
3748 + movups %xmm2,(%edi) | |
3749 + movups %xmm3,16(%edi) | |
3750 + movups %xmm4,32(%edi) | |
3751 + jmp L008ecb_ret | |
3752 +.align 4,0x90 | |
3753 +L024ecb_dec_four: | |
3754 + call __aesni_decrypt4 | |
3755 + movups %xmm2,(%edi) | |
3756 + movups %xmm3,16(%edi) | |
3757 + movups %xmm4,32(%edi) | |
3758 + movups %xmm5,48(%edi) | |
3759 +L008ecb_ret: | |
3760 + popl %edi | |
3761 + popl %esi | |
3762 + popl %ebx | |
3763 + popl %ebp | |
3764 + ret | |
3765 +.globl _aesni_ccm64_encrypt_blocks | |
3766 +.align 4 | |
3767 +_aesni_ccm64_encrypt_blocks: | |
3768 +L_aesni_ccm64_encrypt_blocks_begin: | |
3769 + pushl %ebp | |
3770 + pushl %ebx | |
3771 + pushl %esi | |
3772 + pushl %edi | |
3773 + movl 20(%esp),%esi | |
3774 + movl 24(%esp),%edi | |
3775 + movl 28(%esp),%eax | |
3776 + movl 32(%esp),%edx | |
3777 + movl 36(%esp),%ebx | |
3778 + movl 40(%esp),%ecx | |
3779 + movl %esp,%ebp | |
3780 + subl $60,%esp | |
3781 + andl $-16,%esp | |
3782 + movl %ebp,48(%esp) | |
3783 + movdqu (%ebx),%xmm7 | |
3784 + movdqu (%ecx),%xmm3 | |
3785 + movl 240(%edx),%ecx | |
3786 + movl $202182159,(%esp) | |
3787 + movl $134810123,4(%esp) | |
3788 + movl $67438087,8(%esp) | |
3789 + movl $66051,12(%esp) | |
3790 + movl $1,%ebx | |
3791 + xorl %ebp,%ebp | |
3792 + movl %ebx,16(%esp) | |
3793 + movl %ebp,20(%esp) | |
3794 + movl %ebp,24(%esp) | |
3795 + movl %ebp,28(%esp) | |
3796 + shrl $1,%ecx | |
3797 + leal (%edx),%ebp | |
3798 + movdqa (%esp),%xmm5 | |
3799 + movdqa %xmm7,%xmm2 | |
3800 + movl %ecx,%ebx | |
3801 +.byte 102,15,56,0,253 | |
3802 +L026ccm64_enc_outer: | |
3803 + movups (%ebp),%xmm0 | |
3804 + movl %ebx,%ecx | |
3805 + movups (%esi),%xmm6 | |
3806 + xorps %xmm0,%xmm2 | |
3807 + movups 16(%ebp),%xmm1 | |
3808 + xorps %xmm6,%xmm0 | |
3809 + leal 32(%ebp),%edx | |
3810 + xorps %xmm0,%xmm3 | |
3811 + movups (%edx),%xmm0 | |
3812 +L027ccm64_enc2_loop: | |
3813 +.byte 102,15,56,220,209 | |
3814 + decl %ecx | |
3815 +.byte 102,15,56,220,217 | |
3816 + movups 16(%edx),%xmm1 | |
3817 +.byte 102,15,56,220,208 | |
3818 + leal 32(%edx),%edx | |
3819 +.byte 102,15,56,220,216 | |
3820 + movups (%edx),%xmm0 | |
3821 + jnz L027ccm64_enc2_loop | |
3822 +.byte 102,15,56,220,209 | |
3823 +.byte 102,15,56,220,217 | |
3824 + paddq 16(%esp),%xmm7 | |
3825 +.byte 102,15,56,221,208 | |
3826 +.byte 102,15,56,221,216 | |
3827 + decl %eax | |
3828 + leal 16(%esi),%esi | |
3829 + xorps %xmm2,%xmm6 | |
3830 + movdqa %xmm7,%xmm2 | |
3831 + movups %xmm6,(%edi) | |
3832 + leal 16(%edi),%edi | |
3833 +.byte 102,15,56,0,213 | |
3834 + jnz L026ccm64_enc_outer | |
3835 + movl 48(%esp),%esp | |
3836 + movl 40(%esp),%edi | |
3837 + movups %xmm3,(%edi) | |
3838 + popl %edi | |
3839 + popl %esi | |
3840 + popl %ebx | |
3841 + popl %ebp | |
3842 + ret | |
3843 +.globl _aesni_ccm64_decrypt_blocks | |
3844 +.align 4 | |
3845 +_aesni_ccm64_decrypt_blocks: | |
3846 +L_aesni_ccm64_decrypt_blocks_begin: | |
3847 + pushl %ebp | |
3848 + pushl %ebx | |
3849 + pushl %esi | |
3850 + pushl %edi | |
3851 + movl 20(%esp),%esi | |
3852 + movl 24(%esp),%edi | |
3853 + movl 28(%esp),%eax | |
3854 + movl 32(%esp),%edx | |
3855 + movl 36(%esp),%ebx | |
3856 + movl 40(%esp),%ecx | |
3857 + movl %esp,%ebp | |
3858 + subl $60,%esp | |
3859 + andl $-16,%esp | |
3860 + movl %ebp,48(%esp) | |
3861 + movdqu (%ebx),%xmm7 | |
3862 + movdqu (%ecx),%xmm3 | |
3863 + movl 240(%edx),%ecx | |
3864 + movl $202182159,(%esp) | |
3865 + movl $134810123,4(%esp) | |
3866 + movl $67438087,8(%esp) | |
3867 + movl $66051,12(%esp) | |
3868 + movl $1,%ebx | |
3869 + xorl %ebp,%ebp | |
3870 + movl %ebx,16(%esp) | |
3871 + movl %ebp,20(%esp) | |
3872 + movl %ebp,24(%esp) | |
3873 + movl %ebp,28(%esp) | |
3874 + movdqa (%esp),%xmm5 | |
3875 + movdqa %xmm7,%xmm2 | |
3876 + movl %edx,%ebp | |
3877 + movl %ecx,%ebx | |
3878 +.byte 102,15,56,0,253 | |
3879 + movups (%edx),%xmm0 | |
3880 + movups 16(%edx),%xmm1 | |
3881 + leal 32(%edx),%edx | |
3882 + xorps %xmm0,%xmm2 | |
3883 +L028enc1_loop_5: | |
3884 +.byte 102,15,56,220,209 | |
3885 + decl %ecx | |
3886 + movups (%edx),%xmm1 | |
3887 + leal 16(%edx),%edx | |
3888 + jnz L028enc1_loop_5 | |
3889 +.byte 102,15,56,221,209 | |
3890 + movups (%esi),%xmm6 | |
3891 + paddq 16(%esp),%xmm7 | |
3892 + leal 16(%esi),%esi | |
3893 + jmp L029ccm64_dec_outer | |
3894 +.align 4,0x90 | |
3895 +L029ccm64_dec_outer: | |
3896 + xorps %xmm2,%xmm6 | |
3897 + movdqa %xmm7,%xmm2 | |
3898 + movl %ebx,%ecx | |
3899 + movups %xmm6,(%edi) | |
3900 + leal 16(%edi),%edi | |
3901 +.byte 102,15,56,0,213 | |
3902 + subl $1,%eax | |
3903 + jz L030ccm64_dec_break | |
3904 + movups (%ebp),%xmm0 | |
3905 + shrl $1,%ecx | |
3906 + movups 16(%ebp),%xmm1 | |
3907 + xorps %xmm0,%xmm6 | |
3908 + leal 32(%ebp),%edx | |
3909 + xorps %xmm0,%xmm2 | |
3910 + xorps %xmm6,%xmm3 | |
3911 + movups (%edx),%xmm0 | |
3912 +L031ccm64_dec2_loop: | |
3913 +.byte 102,15,56,220,209 | |
3914 + decl %ecx | |
3915 +.byte 102,15,56,220,217 | |
3916 + movups 16(%edx),%xmm1 | |
3917 +.byte 102,15,56,220,208 | |
3918 + leal 32(%edx),%edx | |
3919 +.byte 102,15,56,220,216 | |
3920 + movups (%edx),%xmm0 | |
3921 + jnz L031ccm64_dec2_loop | |
3922 + movups (%esi),%xmm6 | |
3923 + paddq 16(%esp),%xmm7 | |
3924 +.byte 102,15,56,220,209 | |
3925 +.byte 102,15,56,220,217 | |
3926 + leal 16(%esi),%esi | |
3927 +.byte 102,15,56,221,208 | |
3928 +.byte 102,15,56,221,216 | |
3929 + jmp L029ccm64_dec_outer | |
3930 +.align 4,0x90 | |
3931 +L030ccm64_dec_break: | |
3932 + movl %ebp,%edx | |
3933 + movups (%edx),%xmm0 | |
3934 + movups 16(%edx),%xmm1 | |
3935 + xorps %xmm0,%xmm6 | |
3936 + leal 32(%edx),%edx | |
3937 + xorps %xmm6,%xmm3 | |
3938 +L032enc1_loop_6: | |
3939 +.byte 102,15,56,220,217 | |
3940 + decl %ecx | |
3941 + movups (%edx),%xmm1 | |
3942 + leal 16(%edx),%edx | |
3943 + jnz L032enc1_loop_6 | |
3944 +.byte 102,15,56,221,217 | |
3945 + movl 48(%esp),%esp | |
3946 + movl 40(%esp),%edi | |
3947 + movups %xmm3,(%edi) | |
3948 + popl %edi | |
3949 + popl %esi | |
3950 + popl %ebx | |
3951 + popl %ebp | |
3952 + ret | |
3953 +.globl _aesni_ctr32_encrypt_blocks | |
3954 +.align 4 | |
3955 +_aesni_ctr32_encrypt_blocks: | |
3956 +L_aesni_ctr32_encrypt_blocks_begin: | |
3957 + pushl %ebp | |
3958 + pushl %ebx | |
3959 + pushl %esi | |
3960 + pushl %edi | |
3961 + movl 20(%esp),%esi | |
3962 + movl 24(%esp),%edi | |
3963 + movl 28(%esp),%eax | |
3964 + movl 32(%esp),%edx | |
3965 + movl 36(%esp),%ebx | |
3966 + movl %esp,%ebp | |
3967 + subl $88,%esp | |
3968 + andl $-16,%esp | |
3969 + movl %ebp,80(%esp) | |
3970 + cmpl $1,%eax | |
3971 + je L033ctr32_one_shortcut | |
3972 + movdqu (%ebx),%xmm7 | |
3973 + movl $202182159,(%esp) | |
3974 + movl $134810123,4(%esp) | |
3975 + movl $67438087,8(%esp) | |
3976 + movl $66051,12(%esp) | |
3977 + movl $6,%ecx | |
3978 + xorl %ebp,%ebp | |
3979 + movl %ecx,16(%esp) | |
3980 + movl %ecx,20(%esp) | |
3981 + movl %ecx,24(%esp) | |
3982 + movl %ebp,28(%esp) | |
3983 +.byte 102,15,58,22,251,3 | |
3984 +.byte 102,15,58,34,253,3 | |
3985 + movl 240(%edx),%ecx | |
3986 + bswap %ebx | |
3987 + pxor %xmm1,%xmm1 | |
3988 + pxor %xmm0,%xmm0 | |
3989 + movdqa (%esp),%xmm2 | |
3990 +.byte 102,15,58,34,203,0 | |
3991 + leal 3(%ebx),%ebp | |
3992 +.byte 102,15,58,34,197,0 | |
3993 + incl %ebx | |
3994 +.byte 102,15,58,34,203,1 | |
3995 + incl %ebp | |
3996 +.byte 102,15,58,34,197,1 | |
3997 + incl %ebx | |
3998 +.byte 102,15,58,34,203,2 | |
3999 + incl %ebp | |
4000 +.byte 102,15,58,34,197,2 | |
4001 + movdqa %xmm1,48(%esp) | |
4002 +.byte 102,15,56,0,202 | |
4003 + movdqa %xmm0,64(%esp) | |
4004 +.byte 102,15,56,0,194 | |
4005 + pshufd $192,%xmm1,%xmm2 | |
4006 + pshufd $128,%xmm1,%xmm3 | |
4007 + cmpl $6,%eax | |
4008 + jb L034ctr32_tail | |
4009 + movdqa %xmm7,32(%esp) | |
4010 + shrl $1,%ecx | |
4011 + movl %edx,%ebp | |
4012 + movl %ecx,%ebx | |
4013 + subl $6,%eax | |
4014 + jmp L035ctr32_loop6 | |
4015 +.align 4,0x90 | |
4016 +L035ctr32_loop6: | |
4017 + pshufd $64,%xmm1,%xmm4 | |
4018 + movdqa 32(%esp),%xmm1 | |
4019 + pshufd $192,%xmm0,%xmm5 | |
4020 + por %xmm1,%xmm2 | |
4021 + pshufd $128,%xmm0,%xmm6 | |
4022 + por %xmm1,%xmm3 | |
4023 + pshufd $64,%xmm0,%xmm7 | |
4024 + por %xmm1,%xmm4 | |
4025 + por %xmm1,%xmm5 | |
4026 + por %xmm1,%xmm6 | |
4027 + por %xmm1,%xmm7 | |
4028 + movups (%ebp),%xmm0 | |
4029 + movups 16(%ebp),%xmm1 | |
4030 + leal 32(%ebp),%edx | |
4031 + decl %ecx | |
4032 + pxor %xmm0,%xmm2 | |
4033 + pxor %xmm0,%xmm3 | |
4034 +.byte 102,15,56,220,209 | |
4035 + pxor %xmm0,%xmm4 | |
4036 +.byte 102,15,56,220,217 | |
4037 + pxor %xmm0,%xmm5 | |
4038 +.byte 102,15,56,220,225 | |
4039 + pxor %xmm0,%xmm6 | |
4040 +.byte 102,15,56,220,233 | |
4041 + pxor %xmm0,%xmm7 | |
4042 +.byte 102,15,56,220,241 | |
4043 + movups (%edx),%xmm0 | |
4044 +.byte 102,15,56,220,249 | |
4045 + call L_aesni_encrypt6_enter | |
4046 + movups (%esi),%xmm1 | |
4047 + movups 16(%esi),%xmm0 | |
4048 + xorps %xmm1,%xmm2 | |
4049 + movups 32(%esi),%xmm1 | |
4050 + xorps %xmm0,%xmm3 | |
4051 + movups %xmm2,(%edi) | |
4052 + movdqa 16(%esp),%xmm0 | |
4053 + xorps %xmm1,%xmm4 | |
4054 + movdqa 48(%esp),%xmm1 | |
4055 + movups %xmm3,16(%edi) | |
4056 + movups %xmm4,32(%edi) | |
4057 + paddd %xmm0,%xmm1 | |
4058 + paddd 64(%esp),%xmm0 | |
4059 + movdqa (%esp),%xmm2 | |
4060 + movups 48(%esi),%xmm3 | |
4061 + movups 64(%esi),%xmm4 | |
4062 + xorps %xmm3,%xmm5 | |
4063 + movups 80(%esi),%xmm3 | |
4064 + leal 96(%esi),%esi | |
4065 + movdqa %xmm1,48(%esp) | |
4066 +.byte 102,15,56,0,202 | |
4067 + xorps %xmm4,%xmm6 | |
4068 + movups %xmm5,48(%edi) | |
4069 + xorps %xmm3,%xmm7 | |
4070 + movdqa %xmm0,64(%esp) | |
4071 +.byte 102,15,56,0,194 | |
4072 + movups %xmm6,64(%edi) | |
4073 + pshufd $192,%xmm1,%xmm2 | |
4074 + movups %xmm7,80(%edi) | |
4075 + leal 96(%edi),%edi | |
4076 + movl %ebx,%ecx | |
4077 + pshufd $128,%xmm1,%xmm3 | |
4078 + subl $6,%eax | |
4079 + jnc L035ctr32_loop6 | |
4080 + addl $6,%eax | |
4081 + jz L036ctr32_ret | |
4082 + movl %ebp,%edx | |
4083 + leal 1(,%ecx,2),%ecx | |
4084 + movdqa 32(%esp),%xmm7 | |
4085 +L034ctr32_tail: | |
4086 + por %xmm7,%xmm2 | |
4087 + cmpl $2,%eax | |
4088 + jb L037ctr32_one | |
4089 + pshufd $64,%xmm1,%xmm4 | |
4090 + por %xmm7,%xmm3 | |
4091 + je L038ctr32_two | |
4092 + pshufd $192,%xmm0,%xmm5 | |
4093 + por %xmm7,%xmm4 | |
4094 + cmpl $4,%eax | |
4095 + jb L039ctr32_three | |
4096 + pshufd $128,%xmm0,%xmm6 | |
4097 + por %xmm7,%xmm5 | |
4098 + je L040ctr32_four | |
4099 + por %xmm7,%xmm6 | |
4100 + call __aesni_encrypt6 | |
4101 + movups (%esi),%xmm1 | |
4102 + movups 16(%esi),%xmm0 | |
4103 + xorps %xmm1,%xmm2 | |
4104 + movups 32(%esi),%xmm1 | |
4105 + xorps %xmm0,%xmm3 | |
4106 + movups 48(%esi),%xmm0 | |
4107 + xorps %xmm1,%xmm4 | |
4108 + movups 64(%esi),%xmm1 | |
4109 + xorps %xmm0,%xmm5 | |
4110 + movups %xmm2,(%edi) | |
4111 + xorps %xmm1,%xmm6 | |
4112 + movups %xmm3,16(%edi) | |
4113 + movups %xmm4,32(%edi) | |
4114 + movups %xmm5,48(%edi) | |
4115 + movups %xmm6,64(%edi) | |
4116 + jmp L036ctr32_ret | |
4117 +.align 4,0x90 | |
4118 +L033ctr32_one_shortcut: | |
4119 + movups (%ebx),%xmm2 | |
4120 + movl 240(%edx),%ecx | |
4121 +L037ctr32_one: | |
4122 + movups (%edx),%xmm0 | |
4123 + movups 16(%edx),%xmm1 | |
4124 + leal 32(%edx),%edx | |
4125 + xorps %xmm0,%xmm2 | |
4126 +L041enc1_loop_7: | |
4127 +.byte 102,15,56,220,209 | |
4128 + decl %ecx | |
4129 + movups (%edx),%xmm1 | |
4130 + leal 16(%edx),%edx | |
4131 + jnz L041enc1_loop_7 | |
4132 +.byte 102,15,56,221,209 | |
4133 + movups (%esi),%xmm6 | |
4134 + xorps %xmm2,%xmm6 | |
4135 + movups %xmm6,(%edi) | |
4136 + jmp L036ctr32_ret | |
4137 +.align 4,0x90 | |
4138 +L038ctr32_two: | |
4139 + call __aesni_encrypt3 | |
4140 + movups (%esi),%xmm5 | |
4141 + movups 16(%esi),%xmm6 | |
4142 + xorps %xmm5,%xmm2 | |
4143 + xorps %xmm6,%xmm3 | |
4144 + movups %xmm2,(%edi) | |
4145 + movups %xmm3,16(%edi) | |
4146 + jmp L036ctr32_ret | |
4147 +.align 4,0x90 | |
4148 +L039ctr32_three: | |
4149 + call __aesni_encrypt3 | |
4150 + movups (%esi),%xmm5 | |
4151 + movups 16(%esi),%xmm6 | |
4152 + xorps %xmm5,%xmm2 | |
4153 + movups 32(%esi),%xmm7 | |
4154 + xorps %xmm6,%xmm3 | |
4155 + movups %xmm2,(%edi) | |
4156 + xorps %xmm7,%xmm4 | |
4157 + movups %xmm3,16(%edi) | |
4158 + movups %xmm4,32(%edi) | |
4159 + jmp L036ctr32_ret | |
4160 +.align 4,0x90 | |
4161 +L040ctr32_four: | |
4162 + call __aesni_encrypt4 | |
4163 + movups (%esi),%xmm6 | |
4164 + movups 16(%esi),%xmm7 | |
4165 + movups 32(%esi),%xmm1 | |
4166 + xorps %xmm6,%xmm2 | |
4167 + movups 48(%esi),%xmm0 | |
4168 + xorps %xmm7,%xmm3 | |
4169 + movups %xmm2,(%edi) | |
4170 + xorps %xmm1,%xmm4 | |
4171 + movups %xmm3,16(%edi) | |
4172 + xorps %xmm0,%xmm5 | |
4173 + movups %xmm4,32(%edi) | |
4174 + movups %xmm5,48(%edi) | |
4175 +L036ctr32_ret: | |
4176 + movl 80(%esp),%esp | |
4177 + popl %edi | |
4178 + popl %esi | |
4179 + popl %ebx | |
4180 + popl %ebp | |
4181 + ret | |
4182 +.globl _aesni_xts_encrypt | |
4183 +.align 4 | |
4184 +_aesni_xts_encrypt: | |
4185 +L_aesni_xts_encrypt_begin: | |
4186 + pushl %ebp | |
4187 + pushl %ebx | |
4188 + pushl %esi | |
4189 + pushl %edi | |
4190 + movl 36(%esp),%edx | |
4191 + movl 40(%esp),%esi | |
4192 + movl 240(%edx),%ecx | |
4193 + movups (%esi),%xmm2 | |
4194 + movups (%edx),%xmm0 | |
4195 + movups 16(%edx),%xmm1 | |
4196 + leal 32(%edx),%edx | |
4197 + xorps %xmm0,%xmm2 | |
4198 +L042enc1_loop_8: | |
4199 +.byte 102,15,56,220,209 | |
4200 + decl %ecx | |
4201 + movups (%edx),%xmm1 | |
4202 + leal 16(%edx),%edx | |
4203 + jnz L042enc1_loop_8 | |
4204 +.byte 102,15,56,221,209 | |
4205 + movl 20(%esp),%esi | |
4206 + movl 24(%esp),%edi | |
4207 + movl 28(%esp),%eax | |
4208 + movl 32(%esp),%edx | |
4209 + movl %esp,%ebp | |
4210 + subl $120,%esp | |
4211 + movl 240(%edx),%ecx | |
4212 + andl $-16,%esp | |
4213 + movl $135,96(%esp) | |
4214 + movl $0,100(%esp) | |
4215 + movl $1,104(%esp) | |
4216 + movl $0,108(%esp) | |
4217 + movl %eax,112(%esp) | |
4218 + movl %ebp,116(%esp) | |
4219 + movdqa %xmm2,%xmm1 | |
4220 + pxor %xmm0,%xmm0 | |
4221 + movdqa 96(%esp),%xmm3 | |
4222 + pcmpgtd %xmm1,%xmm0 | |
4223 + andl $-16,%eax | |
4224 + movl %edx,%ebp | |
4225 + movl %ecx,%ebx | |
4226 + subl $96,%eax | |
4227 + jc L043xts_enc_short | |
4228 + shrl $1,%ecx | |
4229 + movl %ecx,%ebx | |
4230 + jmp L044xts_enc_loop6 | |
4231 +.align 4,0x90 | |
4232 +L044xts_enc_loop6: | |
4233 + pshufd $19,%xmm0,%xmm2 | |
4234 + pxor %xmm0,%xmm0 | |
4235 + movdqa %xmm1,(%esp) | |
4236 + paddq %xmm1,%xmm1 | |
4237 + pand %xmm3,%xmm2 | |
4238 + pcmpgtd %xmm1,%xmm0 | |
4239 + pxor %xmm2,%xmm1 | |
4240 + pshufd $19,%xmm0,%xmm2 | |
4241 + pxor %xmm0,%xmm0 | |
4242 + movdqa %xmm1,16(%esp) | |
4243 + paddq %xmm1,%xmm1 | |
4244 + pand %xmm3,%xmm2 | |
4245 + pcmpgtd %xmm1,%xmm0 | |
4246 + pxor %xmm2,%xmm1 | |
4247 + pshufd $19,%xmm0,%xmm2 | |
4248 + pxor %xmm0,%xmm0 | |
4249 + movdqa %xmm1,32(%esp) | |
4250 + paddq %xmm1,%xmm1 | |
4251 + pand %xmm3,%xmm2 | |
4252 + pcmpgtd %xmm1,%xmm0 | |
4253 + pxor %xmm2,%xmm1 | |
4254 + pshufd $19,%xmm0,%xmm2 | |
4255 + pxor %xmm0,%xmm0 | |
4256 + movdqa %xmm1,48(%esp) | |
4257 + paddq %xmm1,%xmm1 | |
4258 + pand %xmm3,%xmm2 | |
4259 + pcmpgtd %xmm1,%xmm0 | |
4260 + pxor %xmm2,%xmm1 | |
4261 + pshufd $19,%xmm0,%xmm7 | |
4262 + movdqa %xmm1,64(%esp) | |
4263 + paddq %xmm1,%xmm1 | |
4264 + movups (%ebp),%xmm0 | |
4265 + pand %xmm3,%xmm7 | |
4266 + movups (%esi),%xmm2 | |
4267 + pxor %xmm1,%xmm7 | |
4268 + movdqu 16(%esi),%xmm3 | |
4269 + xorps %xmm0,%xmm2 | |
4270 + movdqu 32(%esi),%xmm4 | |
4271 + pxor %xmm0,%xmm3 | |
4272 + movdqu 48(%esi),%xmm5 | |
4273 + pxor %xmm0,%xmm4 | |
4274 + movdqu 64(%esi),%xmm6 | |
4275 + pxor %xmm0,%xmm5 | |
4276 + movdqu 80(%esi),%xmm1 | |
4277 + pxor %xmm0,%xmm6 | |
4278 + leal 96(%esi),%esi | |
4279 + pxor (%esp),%xmm2 | |
4280 + movdqa %xmm7,80(%esp) | |
4281 + pxor %xmm1,%xmm7 | |
4282 + movups 16(%ebp),%xmm1 | |
4283 + leal 32(%ebp),%edx | |
4284 + pxor 16(%esp),%xmm3 | |
4285 +.byte 102,15,56,220,209 | |
4286 + pxor 32(%esp),%xmm4 | |
4287 +.byte 102,15,56,220,217 | |
4288 + pxor 48(%esp),%xmm5 | |
4289 + decl %ecx | |
4290 +.byte 102,15,56,220,225 | |
4291 + pxor 64(%esp),%xmm6 | |
4292 +.byte 102,15,56,220,233 | |
4293 + pxor %xmm0,%xmm7 | |
4294 +.byte 102,15,56,220,241 | |
4295 + movups (%edx),%xmm0 | |
4296 +.byte 102,15,56,220,249 | |
4297 + call L_aesni_encrypt6_enter | |
4298 + movdqa 80(%esp),%xmm1 | |
4299 + pxor %xmm0,%xmm0 | |
4300 + xorps (%esp),%xmm2 | |
4301 + pcmpgtd %xmm1,%xmm0 | |
4302 + xorps 16(%esp),%xmm3 | |
4303 + movups %xmm2,(%edi) | |
4304 + xorps 32(%esp),%xmm4 | |
4305 + movups %xmm3,16(%edi) | |
4306 + xorps 48(%esp),%xmm5 | |
4307 + movups %xmm4,32(%edi) | |
4308 + xorps 64(%esp),%xmm6 | |
4309 + movups %xmm5,48(%edi) | |
4310 + xorps %xmm1,%xmm7 | |
4311 + movups %xmm6,64(%edi) | |
4312 + pshufd $19,%xmm0,%xmm2 | |
4313 + movups %xmm7,80(%edi) | |
4314 + leal 96(%edi),%edi | |
4315 + movdqa 96(%esp),%xmm3 | |
4316 + pxor %xmm0,%xmm0 | |
4317 + paddq %xmm1,%xmm1 | |
4318 + pand %xmm3,%xmm2 | |
4319 + pcmpgtd %xmm1,%xmm0 | |
4320 + movl %ebx,%ecx | |
4321 + pxor %xmm2,%xmm1 | |
4322 + subl $96,%eax | |
4323 + jnc L044xts_enc_loop6 | |
4324 + leal 1(,%ecx,2),%ecx | |
4325 + movl %ebp,%edx | |
4326 + movl %ecx,%ebx | |
4327 +L043xts_enc_short: | |
4328 + addl $96,%eax | |
4329 + jz L045xts_enc_done6x | |
4330 + movdqa %xmm1,%xmm5 | |
4331 + cmpl $32,%eax | |
4332 + jb L046xts_enc_one | |
4333 + pshufd $19,%xmm0,%xmm2 | |
4334 + pxor %xmm0,%xmm0 | |
4335 + paddq %xmm1,%xmm1 | |
4336 + pand %xmm3,%xmm2 | |
4337 + pcmpgtd %xmm1,%xmm0 | |
4338 + pxor %xmm2,%xmm1 | |
4339 + je L047xts_enc_two | |
4340 + pshufd $19,%xmm0,%xmm2 | |
4341 + pxor %xmm0,%xmm0 | |
4342 + movdqa %xmm1,%xmm6 | |
4343 + paddq %xmm1,%xmm1 | |
4344 + pand %xmm3,%xmm2 | |
4345 + pcmpgtd %xmm1,%xmm0 | |
4346 + pxor %xmm2,%xmm1 | |
4347 + cmpl $64,%eax | |
4348 + jb L048xts_enc_three | |
4349 + pshufd $19,%xmm0,%xmm2 | |
4350 + pxor %xmm0,%xmm0 | |
4351 + movdqa %xmm1,%xmm7 | |
4352 + paddq %xmm1,%xmm1 | |
4353 + pand %xmm3,%xmm2 | |
4354 + pcmpgtd %xmm1,%xmm0 | |
4355 + pxor %xmm2,%xmm1 | |
4356 + movdqa %xmm5,(%esp) | |
4357 + movdqa %xmm6,16(%esp) | |
4358 + je L049xts_enc_four | |
4359 + movdqa %xmm7,32(%esp) | |
4360 + pshufd $19,%xmm0,%xmm7 | |
4361 + movdqa %xmm1,48(%esp) | |
4362 + paddq %xmm1,%xmm1 | |
4363 + pand %xmm3,%xmm7 | |
4364 + pxor %xmm1,%xmm7 | |
4365 + movdqu (%esi),%xmm2 | |
4366 + movdqu 16(%esi),%xmm3 | |
4367 + movdqu 32(%esi),%xmm4 | |
4368 + pxor (%esp),%xmm2 | |
4369 + movdqu 48(%esi),%xmm5 | |
4370 + pxor 16(%esp),%xmm3 | |
4371 + movdqu 64(%esi),%xmm6 | |
4372 + pxor 32(%esp),%xmm4 | |
4373 + leal 80(%esi),%esi | |
4374 + pxor 48(%esp),%xmm5 | |
4375 + movdqa %xmm7,64(%esp) | |
4376 + pxor %xmm7,%xmm6 | |
4377 + call __aesni_encrypt6 | |
4378 + movaps 64(%esp),%xmm1 | |
4379 + xorps (%esp),%xmm2 | |
4380 + xorps 16(%esp),%xmm3 | |
4381 + xorps 32(%esp),%xmm4 | |
4382 + movups %xmm2,(%edi) | |
4383 + xorps 48(%esp),%xmm5 | |
4384 + movups %xmm3,16(%edi) | |
4385 + xorps %xmm1,%xmm6 | |
4386 + movups %xmm4,32(%edi) | |
4387 + movups %xmm5,48(%edi) | |
4388 + movups %xmm6,64(%edi) | |
4389 + leal 80(%edi),%edi | |
4390 + jmp L050xts_enc_done | |
4391 +.align 4,0x90 | |
4392 +L046xts_enc_one: | |
4393 + movups (%esi),%xmm2 | |
4394 + leal 16(%esi),%esi | |
4395 + xorps %xmm5,%xmm2 | |
4396 + movups (%edx),%xmm0 | |
4397 + movups 16(%edx),%xmm1 | |
4398 + leal 32(%edx),%edx | |
4399 + xorps %xmm0,%xmm2 | |
4400 +L051enc1_loop_9: | |
4401 +.byte 102,15,56,220,209 | |
4402 + decl %ecx | |
4403 + movups (%edx),%xmm1 | |
4404 + leal 16(%edx),%edx | |
4405 + jnz L051enc1_loop_9 | |
4406 +.byte 102,15,56,221,209 | |
4407 + xorps %xmm5,%xmm2 | |
4408 + movups %xmm2,(%edi) | |
4409 + leal 16(%edi),%edi | |
4410 + movdqa %xmm5,%xmm1 | |
4411 + jmp L050xts_enc_done | |
4412 +.align 4,0x90 | |
4413 +L047xts_enc_two: | |
4414 + movaps %xmm1,%xmm6 | |
4415 + movups (%esi),%xmm2 | |
4416 + movups 16(%esi),%xmm3 | |
4417 + leal 32(%esi),%esi | |
4418 + xorps %xmm5,%xmm2 | |
4419 + xorps %xmm6,%xmm3 | |
4420 + xorps %xmm4,%xmm4 | |
4421 + call __aesni_encrypt3 | |
4422 + xorps %xmm5,%xmm2 | |
4423 + xorps %xmm6,%xmm3 | |
4424 + movups %xmm2,(%edi) | |
4425 + movups %xmm3,16(%edi) | |
4426 + leal 32(%edi),%edi | |
4427 + movdqa %xmm6,%xmm1 | |
4428 + jmp L050xts_enc_done | |
4429 +.align 4,0x90 | |
4430 +L048xts_enc_three: | |
4431 + movaps %xmm1,%xmm7 | |
4432 + movups (%esi),%xmm2 | |
4433 + movups 16(%esi),%xmm3 | |
4434 + movups 32(%esi),%xmm4 | |
4435 + leal 48(%esi),%esi | |
4436 + xorps %xmm5,%xmm2 | |
4437 + xorps %xmm6,%xmm3 | |
4438 + xorps %xmm7,%xmm4 | |
4439 + call __aesni_encrypt3 | |
4440 + xorps %xmm5,%xmm2 | |
4441 + xorps %xmm6,%xmm3 | |
4442 + xorps %xmm7,%xmm4 | |
4443 + movups %xmm2,(%edi) | |
4444 + movups %xmm3,16(%edi) | |
4445 + movups %xmm4,32(%edi) | |
4446 + leal 48(%edi),%edi | |
4447 + movdqa %xmm7,%xmm1 | |
4448 + jmp L050xts_enc_done | |
4449 +.align 4,0x90 | |
4450 +L049xts_enc_four: | |
4451 + movaps %xmm1,%xmm6 | |
4452 + movups (%esi),%xmm2 | |
4453 + movups 16(%esi),%xmm3 | |
4454 + movups 32(%esi),%xmm4 | |
4455 + xorps (%esp),%xmm2 | |
4456 + movups 48(%esi),%xmm5 | |
4457 + leal 64(%esi),%esi | |
4458 + xorps 16(%esp),%xmm3 | |
4459 + xorps %xmm7,%xmm4 | |
4460 + xorps %xmm6,%xmm5 | |
4461 + call __aesni_encrypt4 | |
4462 + xorps (%esp),%xmm2 | |
4463 + xorps 16(%esp),%xmm3 | |
4464 + xorps %xmm7,%xmm4 | |
4465 + movups %xmm2,(%edi) | |
4466 + xorps %xmm6,%xmm5 | |
4467 + movups %xmm3,16(%edi) | |
4468 + movups %xmm4,32(%edi) | |
4469 + movups %xmm5,48(%edi) | |
4470 + leal 64(%edi),%edi | |
4471 + movdqa %xmm6,%xmm1 | |
4472 + jmp L050xts_enc_done | |
4473 +.align 4,0x90 | |
4474 +L045xts_enc_done6x: | |
4475 + movl 112(%esp),%eax | |
4476 + andl $15,%eax | |
4477 + jz L052xts_enc_ret | |
4478 + movdqa %xmm1,%xmm5 | |
4479 + movl %eax,112(%esp) | |
4480 + jmp L053xts_enc_steal | |
4481 +.align 4,0x90 | |
4482 +L050xts_enc_done: | |
4483 + movl 112(%esp),%eax | |
4484 + pxor %xmm0,%xmm0 | |
4485 + andl $15,%eax | |
4486 + jz L052xts_enc_ret | |
4487 + pcmpgtd %xmm1,%xmm0 | |
4488 + movl %eax,112(%esp) | |
4489 + pshufd $19,%xmm0,%xmm5 | |
4490 + paddq %xmm1,%xmm1 | |
4491 + pand 96(%esp),%xmm5 | |
4492 + pxor %xmm1,%xmm5 | |
4493 +L053xts_enc_steal: | |
4494 + movzbl (%esi),%ecx | |
4495 + movzbl -16(%edi),%edx | |
4496 + leal 1(%esi),%esi | |
4497 + movb %cl,-16(%edi) | |
4498 + movb %dl,(%edi) | |
4499 + leal 1(%edi),%edi | |
4500 + subl $1,%eax | |
4501 + jnz L053xts_enc_steal | |
4502 + subl 112(%esp),%edi | |
4503 + movl %ebp,%edx | |
4504 + movl %ebx,%ecx | |
4505 + movups -16(%edi),%xmm2 | |
4506 + xorps %xmm5,%xmm2 | |
4507 + movups (%edx),%xmm0 | |
4508 + movups 16(%edx),%xmm1 | |
4509 + leal 32(%edx),%edx | |
4510 + xorps %xmm0,%xmm2 | |
4511 +L054enc1_loop_10: | |
4512 +.byte 102,15,56,220,209 | |
4513 + decl %ecx | |
4514 + movups (%edx),%xmm1 | |
4515 + leal 16(%edx),%edx | |
4516 + jnz L054enc1_loop_10 | |
4517 +.byte 102,15,56,221,209 | |
4518 + xorps %xmm5,%xmm2 | |
4519 + movups %xmm2,-16(%edi) | |
4520 +L052xts_enc_ret: | |
4521 + movl 116(%esp),%esp | |
4522 + popl %edi | |
4523 + popl %esi | |
4524 + popl %ebx | |
4525 + popl %ebp | |
4526 + ret | |
4527 +.globl _aesni_xts_decrypt | |
4528 +.align 4 | |
4529 +_aesni_xts_decrypt: | |
4530 +L_aesni_xts_decrypt_begin: | |
4531 + pushl %ebp | |
4532 + pushl %ebx | |
4533 + pushl %esi | |
4534 + pushl %edi | |
4535 + movl 36(%esp),%edx | |
4536 + movl 40(%esp),%esi | |
4537 + movl 240(%edx),%ecx | |
4538 + movups (%esi),%xmm2 | |
4539 + movups (%edx),%xmm0 | |
4540 + movups 16(%edx),%xmm1 | |
4541 + leal 32(%edx),%edx | |
4542 + xorps %xmm0,%xmm2 | |
4543 +L055enc1_loop_11: | |
4544 +.byte 102,15,56,220,209 | |
4545 + decl %ecx | |
4546 + movups (%edx),%xmm1 | |
4547 + leal 16(%edx),%edx | |
4548 + jnz L055enc1_loop_11 | |
4549 +.byte 102,15,56,221,209 | |
4550 + movl 20(%esp),%esi | |
4551 + movl 24(%esp),%edi | |
4552 + movl 28(%esp),%eax | |
4553 + movl 32(%esp),%edx | |
4554 + movl %esp,%ebp | |
4555 + subl $120,%esp | |
4556 + andl $-16,%esp | |
4557 + xorl %ebx,%ebx | |
4558 + testl $15,%eax | |
4559 + setnz %bl | |
4560 + shll $4,%ebx | |
4561 + subl %ebx,%eax | |
4562 + movl $135,96(%esp) | |
4563 + movl $0,100(%esp) | |
4564 + movl $1,104(%esp) | |
4565 + movl $0,108(%esp) | |
4566 + movl %eax,112(%esp) | |
4567 + movl %ebp,116(%esp) | |
4568 + movl 240(%edx),%ecx | |
4569 + movl %edx,%ebp | |
4570 + movl %ecx,%ebx | |
4571 + movdqa %xmm2,%xmm1 | |
4572 + pxor %xmm0,%xmm0 | |
4573 + movdqa 96(%esp),%xmm3 | |
4574 + pcmpgtd %xmm1,%xmm0 | |
4575 + andl $-16,%eax | |
4576 + subl $96,%eax | |
4577 + jc L056xts_dec_short | |
4578 + shrl $1,%ecx | |
4579 + movl %ecx,%ebx | |
4580 + jmp L057xts_dec_loop6 | |
4581 +.align 4,0x90 | |
4582 +L057xts_dec_loop6: | |
4583 + pshufd $19,%xmm0,%xmm2 | |
4584 + pxor %xmm0,%xmm0 | |
4585 + movdqa %xmm1,(%esp) | |
4586 + paddq %xmm1,%xmm1 | |
4587 + pand %xmm3,%xmm2 | |
4588 + pcmpgtd %xmm1,%xmm0 | |
4589 + pxor %xmm2,%xmm1 | |
4590 + pshufd $19,%xmm0,%xmm2 | |
4591 + pxor %xmm0,%xmm0 | |
4592 + movdqa %xmm1,16(%esp) | |
4593 + paddq %xmm1,%xmm1 | |
4594 + pand %xmm3,%xmm2 | |
4595 + pcmpgtd %xmm1,%xmm0 | |
4596 + pxor %xmm2,%xmm1 | |
4597 + pshufd $19,%xmm0,%xmm2 | |
4598 + pxor %xmm0,%xmm0 | |
4599 + movdqa %xmm1,32(%esp) | |
4600 + paddq %xmm1,%xmm1 | |
4601 + pand %xmm3,%xmm2 | |
4602 + pcmpgtd %xmm1,%xmm0 | |
4603 + pxor %xmm2,%xmm1 | |
4604 + pshufd $19,%xmm0,%xmm2 | |
4605 + pxor %xmm0,%xmm0 | |
4606 + movdqa %xmm1,48(%esp) | |
4607 + paddq %xmm1,%xmm1 | |
4608 + pand %xmm3,%xmm2 | |
4609 + pcmpgtd %xmm1,%xmm0 | |
4610 + pxor %xmm2,%xmm1 | |
4611 + pshufd $19,%xmm0,%xmm7 | |
4612 + movdqa %xmm1,64(%esp) | |
4613 + paddq %xmm1,%xmm1 | |
4614 + movups (%ebp),%xmm0 | |
4615 + pand %xmm3,%xmm7 | |
4616 + movups (%esi),%xmm2 | |
4617 + pxor %xmm1,%xmm7 | |
4618 + movdqu 16(%esi),%xmm3 | |
4619 + xorps %xmm0,%xmm2 | |
4620 + movdqu 32(%esi),%xmm4 | |
4621 + pxor %xmm0,%xmm3 | |
4622 + movdqu 48(%esi),%xmm5 | |
4623 + pxor %xmm0,%xmm4 | |
4624 + movdqu 64(%esi),%xmm6 | |
4625 + pxor %xmm0,%xmm5 | |
4626 + movdqu 80(%esi),%xmm1 | |
4627 + pxor %xmm0,%xmm6 | |
4628 + leal 96(%esi),%esi | |
4629 + pxor (%esp),%xmm2 | |
4630 + movdqa %xmm7,80(%esp) | |
4631 + pxor %xmm1,%xmm7 | |
4632 + movups 16(%ebp),%xmm1 | |
4633 + leal 32(%ebp),%edx | |
4634 + pxor 16(%esp),%xmm3 | |
4635 +.byte 102,15,56,222,209 | |
4636 + pxor 32(%esp),%xmm4 | |
4637 +.byte 102,15,56,222,217 | |
4638 + pxor 48(%esp),%xmm5 | |
4639 + decl %ecx | |
4640 +.byte 102,15,56,222,225 | |
4641 + pxor 64(%esp),%xmm6 | |
4642 +.byte 102,15,56,222,233 | |
4643 + pxor %xmm0,%xmm7 | |
4644 +.byte 102,15,56,222,241 | |
4645 + movups (%edx),%xmm0 | |
4646 +.byte 102,15,56,222,249 | |
4647 + call L_aesni_decrypt6_enter | |
4648 + movdqa 80(%esp),%xmm1 | |
4649 + pxor %xmm0,%xmm0 | |
4650 + xorps (%esp),%xmm2 | |
4651 + pcmpgtd %xmm1,%xmm0 | |
4652 + xorps 16(%esp),%xmm3 | |
4653 + movups %xmm2,(%edi) | |
4654 + xorps 32(%esp),%xmm4 | |
4655 + movups %xmm3,16(%edi) | |
4656 + xorps 48(%esp),%xmm5 | |
4657 + movups %xmm4,32(%edi) | |
4658 + xorps 64(%esp),%xmm6 | |
4659 + movups %xmm5,48(%edi) | |
4660 + xorps %xmm1,%xmm7 | |
4661 + movups %xmm6,64(%edi) | |
4662 + pshufd $19,%xmm0,%xmm2 | |
4663 + movups %xmm7,80(%edi) | |
4664 + leal 96(%edi),%edi | |
4665 + movdqa 96(%esp),%xmm3 | |
4666 + pxor %xmm0,%xmm0 | |
4667 + paddq %xmm1,%xmm1 | |
4668 + pand %xmm3,%xmm2 | |
4669 + pcmpgtd %xmm1,%xmm0 | |
4670 + movl %ebx,%ecx | |
4671 + pxor %xmm2,%xmm1 | |
4672 + subl $96,%eax | |
4673 + jnc L057xts_dec_loop6 | |
4674 + leal 1(,%ecx,2),%ecx | |
4675 + movl %ebp,%edx | |
4676 + movl %ecx,%ebx | |
4677 +L056xts_dec_short: | |
4678 + addl $96,%eax | |
4679 + jz L058xts_dec_done6x | |
4680 + movdqa %xmm1,%xmm5 | |
4681 + cmpl $32,%eax | |
4682 + jb L059xts_dec_one | |
4683 + pshufd $19,%xmm0,%xmm2 | |
4684 + pxor %xmm0,%xmm0 | |
4685 + paddq %xmm1,%xmm1 | |
4686 + pand %xmm3,%xmm2 | |
4687 + pcmpgtd %xmm1,%xmm0 | |
4688 + pxor %xmm2,%xmm1 | |
4689 + je L060xts_dec_two | |
4690 + pshufd $19,%xmm0,%xmm2 | |
4691 + pxor %xmm0,%xmm0 | |
4692 + movdqa %xmm1,%xmm6 | |
4693 + paddq %xmm1,%xmm1 | |
4694 + pand %xmm3,%xmm2 | |
4695 + pcmpgtd %xmm1,%xmm0 | |
4696 + pxor %xmm2,%xmm1 | |
4697 + cmpl $64,%eax | |
4698 + jb L061xts_dec_three | |
4699 + pshufd $19,%xmm0,%xmm2 | |
4700 + pxor %xmm0,%xmm0 | |
4701 + movdqa %xmm1,%xmm7 | |
4702 + paddq %xmm1,%xmm1 | |
4703 + pand %xmm3,%xmm2 | |
4704 + pcmpgtd %xmm1,%xmm0 | |
4705 + pxor %xmm2,%xmm1 | |
4706 + movdqa %xmm5,(%esp) | |
4707 + movdqa %xmm6,16(%esp) | |
4708 + je L062xts_dec_four | |
4709 + movdqa %xmm7,32(%esp) | |
4710 + pshufd $19,%xmm0,%xmm7 | |
4711 + movdqa %xmm1,48(%esp) | |
4712 + paddq %xmm1,%xmm1 | |
4713 + pand %xmm3,%xmm7 | |
4714 + pxor %xmm1,%xmm7 | |
4715 + movdqu (%esi),%xmm2 | |
4716 + movdqu 16(%esi),%xmm3 | |
4717 + movdqu 32(%esi),%xmm4 | |
4718 + pxor (%esp),%xmm2 | |
4719 + movdqu 48(%esi),%xmm5 | |
4720 + pxor 16(%esp),%xmm3 | |
4721 + movdqu 64(%esi),%xmm6 | |
4722 + pxor 32(%esp),%xmm4 | |
4723 + leal 80(%esi),%esi | |
4724 + pxor 48(%esp),%xmm5 | |
4725 + movdqa %xmm7,64(%esp) | |
4726 + pxor %xmm7,%xmm6 | |
4727 + call __aesni_decrypt6 | |
4728 + movaps 64(%esp),%xmm1 | |
4729 + xorps (%esp),%xmm2 | |
4730 + xorps 16(%esp),%xmm3 | |
4731 + xorps 32(%esp),%xmm4 | |
4732 + movups %xmm2,(%edi) | |
4733 + xorps 48(%esp),%xmm5 | |
4734 + movups %xmm3,16(%edi) | |
4735 + xorps %xmm1,%xmm6 | |
4736 + movups %xmm4,32(%edi) | |
4737 + movups %xmm5,48(%edi) | |
4738 + movups %xmm6,64(%edi) | |
4739 + leal 80(%edi),%edi | |
4740 + jmp L063xts_dec_done | |
4741 +.align 4,0x90 | |
4742 +L059xts_dec_one: | |
4743 + movups (%esi),%xmm2 | |
4744 + leal 16(%esi),%esi | |
4745 + xorps %xmm5,%xmm2 | |
4746 + movups (%edx),%xmm0 | |
4747 + movups 16(%edx),%xmm1 | |
4748 + leal 32(%edx),%edx | |
4749 + xorps %xmm0,%xmm2 | |
4750 +L064dec1_loop_12: | |
4751 +.byte 102,15,56,222,209 | |
4752 + decl %ecx | |
4753 + movups (%edx),%xmm1 | |
4754 + leal 16(%edx),%edx | |
4755 + jnz L064dec1_loop_12 | |
4756 +.byte 102,15,56,223,209 | |
4757 + xorps %xmm5,%xmm2 | |
4758 + movups %xmm2,(%edi) | |
4759 + leal 16(%edi),%edi | |
4760 + movdqa %xmm5,%xmm1 | |
4761 + jmp L063xts_dec_done | |
4762 +.align 4,0x90 | |
4763 +L060xts_dec_two: | |
4764 + movaps %xmm1,%xmm6 | |
4765 + movups (%esi),%xmm2 | |
4766 + movups 16(%esi),%xmm3 | |
4767 + leal 32(%esi),%esi | |
4768 + xorps %xmm5,%xmm2 | |
4769 + xorps %xmm6,%xmm3 | |
4770 + call __aesni_decrypt3 | |
4771 + xorps %xmm5,%xmm2 | |
4772 + xorps %xmm6,%xmm3 | |
4773 + movups %xmm2,(%edi) | |
4774 + movups %xmm3,16(%edi) | |
4775 + leal 32(%edi),%edi | |
4776 + movdqa %xmm6,%xmm1 | |
4777 + jmp L063xts_dec_done | |
4778 +.align 4,0x90 | |
4779 +L061xts_dec_three: | |
4780 + movaps %xmm1,%xmm7 | |
4781 + movups (%esi),%xmm2 | |
4782 + movups 16(%esi),%xmm3 | |
4783 + movups 32(%esi),%xmm4 | |
4784 + leal 48(%esi),%esi | |
4785 + xorps %xmm5,%xmm2 | |
4786 + xorps %xmm6,%xmm3 | |
4787 + xorps %xmm7,%xmm4 | |
4788 + call __aesni_decrypt3 | |
4789 + xorps %xmm5,%xmm2 | |
4790 + xorps %xmm6,%xmm3 | |
4791 + xorps %xmm7,%xmm4 | |
4792 + movups %xmm2,(%edi) | |
4793 + movups %xmm3,16(%edi) | |
4794 + movups %xmm4,32(%edi) | |
4795 + leal 48(%edi),%edi | |
4796 + movdqa %xmm7,%xmm1 | |
4797 + jmp L063xts_dec_done | |
4798 +.align 4,0x90 | |
4799 +L062xts_dec_four: | |
4800 + movaps %xmm1,%xmm6 | |
4801 + movups (%esi),%xmm2 | |
4802 + movups 16(%esi),%xmm3 | |
4803 + movups 32(%esi),%xmm4 | |
4804 + xorps (%esp),%xmm2 | |
4805 + movups 48(%esi),%xmm5 | |
4806 + leal 64(%esi),%esi | |
4807 + xorps 16(%esp),%xmm3 | |
4808 + xorps %xmm7,%xmm4 | |
4809 + xorps %xmm6,%xmm5 | |
4810 + call __aesni_decrypt4 | |
4811 + xorps (%esp),%xmm2 | |
4812 + xorps 16(%esp),%xmm3 | |
4813 + xorps %xmm7,%xmm4 | |
4814 + movups %xmm2,(%edi) | |
4815 + xorps %xmm6,%xmm5 | |
4816 + movups %xmm3,16(%edi) | |
4817 + movups %xmm4,32(%edi) | |
4818 + movups %xmm5,48(%edi) | |
4819 + leal 64(%edi),%edi | |
4820 + movdqa %xmm6,%xmm1 | |
4821 + jmp L063xts_dec_done | |
4822 +.align 4,0x90 | |
4823 +L058xts_dec_done6x: | |
4824 + movl 112(%esp),%eax | |
4825 + andl $15,%eax | |
4826 + jz L065xts_dec_ret | |
4827 + movl %eax,112(%esp) | |
4828 + jmp L066xts_dec_only_one_more | |
4829 +.align 4,0x90 | |
4830 +L063xts_dec_done: | |
4831 + movl 112(%esp),%eax | |
4832 + pxor %xmm0,%xmm0 | |
4833 + andl $15,%eax | |
4834 + jz L065xts_dec_ret | |
4835 + pcmpgtd %xmm1,%xmm0 | |
4836 + movl %eax,112(%esp) | |
4837 + pshufd $19,%xmm0,%xmm2 | |
4838 + pxor %xmm0,%xmm0 | |
4839 + movdqa 96(%esp),%xmm3 | |
4840 + paddq %xmm1,%xmm1 | |
4841 + pand %xmm3,%xmm2 | |
4842 + pcmpgtd %xmm1,%xmm0 | |
4843 + pxor %xmm2,%xmm1 | |
4844 +L066xts_dec_only_one_more: | |
4845 + pshufd $19,%xmm0,%xmm5 | |
4846 + movdqa %xmm1,%xmm6 | |
4847 + paddq %xmm1,%xmm1 | |
4848 + pand %xmm3,%xmm5 | |
4849 + pxor %xmm1,%xmm5 | |
4850 + movl %ebp,%edx | |
4851 + movl %ebx,%ecx | |
4852 + movups (%esi),%xmm2 | |
4853 + xorps %xmm5,%xmm2 | |
4854 + movups (%edx),%xmm0 | |
4855 + movups 16(%edx),%xmm1 | |
4856 + leal 32(%edx),%edx | |
4857 + xorps %xmm0,%xmm2 | |
4858 +L067dec1_loop_13: | |
4859 +.byte 102,15,56,222,209 | |
4860 + decl %ecx | |
4861 + movups (%edx),%xmm1 | |
4862 + leal 16(%edx),%edx | |
4863 + jnz L067dec1_loop_13 | |
4864 +.byte 102,15,56,223,209 | |
4865 + xorps %xmm5,%xmm2 | |
4866 + movups %xmm2,(%edi) | |
4867 +L068xts_dec_steal: | |
4868 + movzbl 16(%esi),%ecx | |
4869 + movzbl (%edi),%edx | |
4870 + leal 1(%esi),%esi | |
4871 + movb %cl,(%edi) | |
4872 + movb %dl,16(%edi) | |
4873 + leal 1(%edi),%edi | |
4874 + subl $1,%eax | |
4875 + jnz L068xts_dec_steal | |
4876 + subl 112(%esp),%edi | |
4877 + movl %ebp,%edx | |
4878 + movl %ebx,%ecx | |
4879 + movups (%edi),%xmm2 | |
4880 + xorps %xmm6,%xmm2 | |
4881 + movups (%edx),%xmm0 | |
4882 + movups 16(%edx),%xmm1 | |
4883 + leal 32(%edx),%edx | |
4884 + xorps %xmm0,%xmm2 | |
4885 +L069dec1_loop_14: | |
4886 +.byte 102,15,56,222,209 | |
4887 + decl %ecx | |
4888 + movups (%edx),%xmm1 | |
4889 + leal 16(%edx),%edx | |
4890 + jnz L069dec1_loop_14 | |
4891 +.byte 102,15,56,223,209 | |
4892 + xorps %xmm6,%xmm2 | |
4893 + movups %xmm2,(%edi) | |
4894 +L065xts_dec_ret: | |
4895 + movl 116(%esp),%esp | |
4896 + popl %edi | |
4897 + popl %esi | |
4898 + popl %ebx | |
4899 + popl %ebp | |
4900 + ret | |
4901 +.globl _aesni_cbc_encrypt | |
4902 +.align 4 | |
4903 +_aesni_cbc_encrypt: | |
4904 +L_aesni_cbc_encrypt_begin: | |
4905 + pushl %ebp | |
4906 + pushl %ebx | |
4907 + pushl %esi | |
4908 + pushl %edi | |
4909 + movl 20(%esp),%esi | |
4910 + movl %esp,%ebx | |
4911 + movl 24(%esp),%edi | |
4912 + subl $24,%ebx | |
4913 + movl 28(%esp),%eax | |
4914 + andl $-16,%ebx | |
4915 + movl 32(%esp),%edx | |
4916 + movl 36(%esp),%ebp | |
4917 + testl %eax,%eax | |
4918 + jz L070cbc_abort | |
4919 + cmpl $0,40(%esp) | |
4920 + xchgl %esp,%ebx | |
4921 + movups (%ebp),%xmm7 | |
4922 + movl 240(%edx),%ecx | |
4923 + movl %edx,%ebp | |
4924 + movl %ebx,16(%esp) | |
4925 + movl %ecx,%ebx | |
4926 + je L071cbc_decrypt | |
4927 + movaps %xmm7,%xmm2 | |
4928 + cmpl $16,%eax | |
4929 + jb L072cbc_enc_tail | |
4930 + subl $16,%eax | |
4931 + jmp L073cbc_enc_loop | |
4932 +.align 4,0x90 | |
4933 +L073cbc_enc_loop: | |
4934 + movups (%esi),%xmm7 | |
4935 + leal 16(%esi),%esi | |
4936 + movups (%edx),%xmm0 | |
4937 + movups 16(%edx),%xmm1 | |
4938 + xorps %xmm0,%xmm7 | |
4939 + leal 32(%edx),%edx | |
4940 + xorps %xmm7,%xmm2 | |
4941 +L074enc1_loop_15: | |
4942 +.byte 102,15,56,220,209 | |
4943 + decl %ecx | |
4944 + movups (%edx),%xmm1 | |
4945 + leal 16(%edx),%edx | |
4946 + jnz L074enc1_loop_15 | |
4947 +.byte 102,15,56,221,209 | |
4948 + movl %ebx,%ecx | |
4949 + movl %ebp,%edx | |
4950 + movups %xmm2,(%edi) | |
4951 + leal 16(%edi),%edi | |
4952 + subl $16,%eax | |
4953 + jnc L073cbc_enc_loop | |
4954 + addl $16,%eax | |
4955 + jnz L072cbc_enc_tail | |
4956 + movaps %xmm2,%xmm7 | |
4957 + jmp L075cbc_ret | |
4958 +L072cbc_enc_tail: | |
4959 + movl %eax,%ecx | |
4960 +.long 2767451785 | |
4961 + movl $16,%ecx | |
4962 + subl %eax,%ecx | |
4963 + xorl %eax,%eax | |
4964 +.long 2868115081 | |
4965 + leal -16(%edi),%edi | |
4966 + movl %ebx,%ecx | |
4967 + movl %edi,%esi | |
4968 + movl %ebp,%edx | |
4969 + jmp L073cbc_enc_loop | |
4970 +.align 4,0x90 | |
4971 +L071cbc_decrypt: | |
4972 + cmpl $80,%eax | |
4973 + jbe L076cbc_dec_tail | |
4974 + movaps %xmm7,(%esp) | |
4975 + subl $80,%eax | |
4976 + jmp L077cbc_dec_loop6_enter | |
4977 +.align 4,0x90 | |
4978 +L078cbc_dec_loop6: | |
4979 + movaps %xmm0,(%esp) | |
4980 + movups %xmm7,(%edi) | |
4981 + leal 16(%edi),%edi | |
4982 +L077cbc_dec_loop6_enter: | |
4983 + movdqu (%esi),%xmm2 | |
4984 + movdqu 16(%esi),%xmm3 | |
4985 + movdqu 32(%esi),%xmm4 | |
4986 + movdqu 48(%esi),%xmm5 | |
4987 + movdqu 64(%esi),%xmm6 | |
4988 + movdqu 80(%esi),%xmm7 | |
4989 + call __aesni_decrypt6 | |
4990 + movups (%esi),%xmm1 | |
4991 + movups 16(%esi),%xmm0 | |
4992 + xorps (%esp),%xmm2 | |
4993 + xorps %xmm1,%xmm3 | |
4994 + movups 32(%esi),%xmm1 | |
4995 + xorps %xmm0,%xmm4 | |
4996 + movups 48(%esi),%xmm0 | |
4997 + xorps %xmm1,%xmm5 | |
4998 + movups 64(%esi),%xmm1 | |
4999 + xorps %xmm0,%xmm6 | |
5000 + movups 80(%esi),%xmm0 | |
5001 + xorps %xmm1,%xmm7 | |
5002 + movups %xmm2,(%edi) | |
5003 + movups %xmm3,16(%edi) | |
5004 + leal 96(%esi),%esi | |
5005 + movups %xmm4,32(%edi) | |
5006 + movl %ebx,%ecx | |
5007 + movups %xmm5,48(%edi) | |
5008 + movl %ebp,%edx | |
5009 + movups %xmm6,64(%edi) | |
5010 + leal 80(%edi),%edi | |
5011 + subl $96,%eax | |
5012 + ja L078cbc_dec_loop6 | |
5013 + movaps %xmm7,%xmm2 | |
5014 + movaps %xmm0,%xmm7 | |
5015 + addl $80,%eax | |
5016 + jle L079cbc_dec_tail_collected | |
5017 + movups %xmm2,(%edi) | |
5018 + leal 16(%edi),%edi | |
5019 +L076cbc_dec_tail: | |
5020 + movups (%esi),%xmm2 | |
5021 + movaps %xmm2,%xmm6 | |
5022 + cmpl $16,%eax | |
5023 + jbe L080cbc_dec_one | |
5024 + movups 16(%esi),%xmm3 | |
5025 + movaps %xmm3,%xmm5 | |
5026 + cmpl $32,%eax | |
5027 + jbe L081cbc_dec_two | |
5028 + movups 32(%esi),%xmm4 | |
5029 + cmpl $48,%eax | |
5030 + jbe L082cbc_dec_three | |
5031 + movups 48(%esi),%xmm5 | |
5032 + cmpl $64,%eax | |
5033 + jbe L083cbc_dec_four | |
5034 + movups 64(%esi),%xmm6 | |
5035 + movaps %xmm7,(%esp) | |
5036 + movups (%esi),%xmm2 | |
5037 + xorps %xmm7,%xmm7 | |
5038 + call __aesni_decrypt6 | |
5039 + movups (%esi),%xmm1 | |
5040 + movups 16(%esi),%xmm0 | |
5041 + xorps (%esp),%xmm2 | |
5042 + xorps %xmm1,%xmm3 | |
5043 + movups 32(%esi),%xmm1 | |
5044 + xorps %xmm0,%xmm4 | |
5045 + movups 48(%esi),%xmm0 | |
5046 + xorps %xmm1,%xmm5 | |
5047 + movups 64(%esi),%xmm7 | |
5048 + xorps %xmm0,%xmm6 | |
5049 + movups %xmm2,(%edi) | |
5050 + movups %xmm3,16(%edi) | |
5051 + movups %xmm4,32(%edi) | |
5052 + movups %xmm5,48(%edi) | |
5053 + leal 64(%edi),%edi | |
5054 + movaps %xmm6,%xmm2 | |
5055 + subl $80,%eax | |
5056 + jmp L079cbc_dec_tail_collected | |
5057 +.align 4,0x90 | |
5058 +L080cbc_dec_one: | |
5059 + movups (%edx),%xmm0 | |
5060 + movups 16(%edx),%xmm1 | |
5061 + leal 32(%edx),%edx | |
5062 + xorps %xmm0,%xmm2 | |
5063 +L084dec1_loop_16: | |
5064 +.byte 102,15,56,222,209 | |
5065 + decl %ecx | |
5066 + movups (%edx),%xmm1 | |
5067 + leal 16(%edx),%edx | |
5068 + jnz L084dec1_loop_16 | |
5069 +.byte 102,15,56,223,209 | |
5070 + xorps %xmm7,%xmm2 | |
5071 + movaps %xmm6,%xmm7 | |
5072 + subl $16,%eax | |
5073 + jmp L079cbc_dec_tail_collected | |
5074 +.align 4,0x90 | |
5075 +L081cbc_dec_two: | |
5076 + xorps %xmm4,%xmm4 | |
5077 + call __aesni_decrypt3 | |
5078 + xorps %xmm7,%xmm2 | |
5079 + xorps %xmm6,%xmm3 | |
5080 + movups %xmm2,(%edi) | |
5081 + movaps %xmm3,%xmm2 | |
5082 + leal 16(%edi),%edi | |
5083 + movaps %xmm5,%xmm7 | |
5084 + subl $32,%eax | |
5085 + jmp L079cbc_dec_tail_collected | |
5086 +.align 4,0x90 | |
5087 +L082cbc_dec_three: | |
5088 + call __aesni_decrypt3 | |
5089 + xorps %xmm7,%xmm2 | |
5090 + xorps %xmm6,%xmm3 | |
5091 + xorps %xmm5,%xmm4 | |
5092 + movups %xmm2,(%edi) | |
5093 + movaps %xmm4,%xmm2 | |
5094 + movups %xmm3,16(%edi) | |
5095 + leal 32(%edi),%edi | |
5096 + movups 32(%esi),%xmm7 | |
5097 + subl $48,%eax | |
5098 + jmp L079cbc_dec_tail_collected | |
5099 +.align 4,0x90 | |
5100 +L083cbc_dec_four: | |
5101 + call __aesni_decrypt4 | |
5102 + movups 16(%esi),%xmm1 | |
5103 + movups 32(%esi),%xmm0 | |
5104 + xorps %xmm7,%xmm2 | |
5105 + movups 48(%esi),%xmm7 | |
5106 + xorps %xmm6,%xmm3 | |
5107 + movups %xmm2,(%edi) | |
5108 + xorps %xmm1,%xmm4 | |
5109 + movups %xmm3,16(%edi) | |
5110 + xorps %xmm0,%xmm5 | |
5111 + movups %xmm4,32(%edi) | |
5112 + leal 48(%edi),%edi | |
5113 + movaps %xmm5,%xmm2 | |
5114 + subl $64,%eax | |
5115 +L079cbc_dec_tail_collected: | |
5116 + andl $15,%eax | |
5117 + jnz L085cbc_dec_tail_partial | |
5118 + movups %xmm2,(%edi) | |
5119 + jmp L075cbc_ret | |
5120 +.align 4,0x90 | |
5121 +L085cbc_dec_tail_partial: | |
5122 + movaps %xmm2,(%esp) | |
5123 + movl $16,%ecx | |
5124 + movl %esp,%esi | |
5125 + subl %eax,%ecx | |
5126 +.long 2767451785 | |
5127 +L075cbc_ret: | |
5128 + movl 16(%esp),%esp | |
5129 + movl 36(%esp),%ebp | |
5130 + movups %xmm7,(%ebp) | |
5131 +L070cbc_abort: | |
5132 + popl %edi | |
5133 + popl %esi | |
5134 + popl %ebx | |
5135 + popl %ebp | |
5136 + ret | |
5137 +.align 4 | |
5138 +__aesni_set_encrypt_key: | |
5139 + testl %eax,%eax | |
5140 + jz L086bad_pointer | |
5141 + testl %edx,%edx | |
5142 + jz L086bad_pointer | |
5143 + movups (%eax),%xmm0 | |
5144 + xorps %xmm4,%xmm4 | |
5145 + leal 16(%edx),%edx | |
5146 + cmpl $256,%ecx | |
5147 + je L08714rounds | |
5148 + cmpl $192,%ecx | |
5149 + je L08812rounds | |
5150 + cmpl $128,%ecx | |
5151 + jne L089bad_keybits | |
5152 +.align 4,0x90 | |
5153 +L09010rounds: | |
5154 + movl $9,%ecx | |
5155 + movups %xmm0,-16(%edx) | |
5156 +.byte 102,15,58,223,200,1 | |
5157 + call L091key_128_cold | |
5158 +.byte 102,15,58,223,200,2 | |
5159 + call L092key_128 | |
5160 +.byte 102,15,58,223,200,4 | |
5161 + call L092key_128 | |
5162 +.byte 102,15,58,223,200,8 | |
5163 + call L092key_128 | |
5164 +.byte 102,15,58,223,200,16 | |
5165 + call L092key_128 | |
5166 +.byte 102,15,58,223,200,32 | |
5167 + call L092key_128 | |
5168 +.byte 102,15,58,223,200,64 | |
5169 + call L092key_128 | |
5170 +.byte 102,15,58,223,200,128 | |
5171 + call L092key_128 | |
5172 +.byte 102,15,58,223,200,27 | |
5173 + call L092key_128 | |
5174 +.byte 102,15,58,223,200,54 | |
5175 + call L092key_128 | |
5176 + movups %xmm0,(%edx) | |
5177 + movl %ecx,80(%edx) | |
5178 + xorl %eax,%eax | |
5179 + ret | |
5180 +.align 4,0x90 | |
5181 +L092key_128: | |
5182 + movups %xmm0,(%edx) | |
5183 + leal 16(%edx),%edx | |
5184 +L091key_128_cold: | |
5185 + shufps $16,%xmm0,%xmm4 | |
5186 + xorps %xmm4,%xmm0 | |
5187 + shufps $140,%xmm0,%xmm4 | |
5188 + xorps %xmm4,%xmm0 | |
5189 + shufps $255,%xmm1,%xmm1 | |
5190 + xorps %xmm1,%xmm0 | |
5191 + ret | |
5192 +.align 4,0x90 | |
5193 +L08812rounds: | |
5194 + movq 16(%eax),%xmm2 | |
5195 + movl $11,%ecx | |
5196 + movups %xmm0,-16(%edx) | |
5197 +.byte 102,15,58,223,202,1 | |
5198 + call L093key_192a_cold | |
5199 +.byte 102,15,58,223,202,2 | |
5200 + call L094key_192b | |
5201 +.byte 102,15,58,223,202,4 | |
5202 + call L095key_192a | |
5203 +.byte 102,15,58,223,202,8 | |
5204 + call L094key_192b | |
5205 +.byte 102,15,58,223,202,16 | |
5206 + call L095key_192a | |
5207 +.byte 102,15,58,223,202,32 | |
5208 + call L094key_192b | |
5209 +.byte 102,15,58,223,202,64 | |
5210 + call L095key_192a | |
5211 +.byte 102,15,58,223,202,128 | |
5212 + call L094key_192b | |
5213 + movups %xmm0,(%edx) | |
5214 + movl %ecx,48(%edx) | |
5215 + xorl %eax,%eax | |
5216 + ret | |
5217 +.align 4,0x90 | |
5218 +L095key_192a: | |
5219 + movups %xmm0,(%edx) | |
5220 + leal 16(%edx),%edx | |
5221 +.align 4,0x90 | |
5222 +L093key_192a_cold: | |
5223 + movaps %xmm2,%xmm5 | |
5224 +L096key_192b_warm: | |
5225 + shufps $16,%xmm0,%xmm4 | |
5226 + movdqa %xmm2,%xmm3 | |
5227 + xorps %xmm4,%xmm0 | |
5228 + shufps $140,%xmm0,%xmm4 | |
5229 + pslldq $4,%xmm3 | |
5230 + xorps %xmm4,%xmm0 | |
5231 + pshufd $85,%xmm1,%xmm1 | |
5232 + pxor %xmm3,%xmm2 | |
5233 + pxor %xmm1,%xmm0 | |
5234 + pshufd $255,%xmm0,%xmm3 | |
5235 + pxor %xmm3,%xmm2 | |
5236 + ret | |
5237 +.align 4,0x90 | |
5238 +L094key_192b: | |
5239 + movaps %xmm0,%xmm3 | |
5240 + shufps $68,%xmm0,%xmm5 | |
5241 + movups %xmm5,(%edx) | |
5242 + shufps $78,%xmm2,%xmm3 | |
5243 + movups %xmm3,16(%edx) | |
5244 + leal 32(%edx),%edx | |
5245 + jmp L096key_192b_warm | |
5246 +.align 4,0x90 | |
5247 +L08714rounds: | |
5248 + movups 16(%eax),%xmm2 | |
5249 + movl $13,%ecx | |
5250 + leal 16(%edx),%edx | |
5251 + movups %xmm0,-32(%edx) | |
5252 + movups %xmm2,-16(%edx) | |
5253 +.byte 102,15,58,223,202,1 | |
5254 + call L097key_256a_cold | |
5255 +.byte 102,15,58,223,200,1 | |
5256 + call L098key_256b | |
5257 +.byte 102,15,58,223,202,2 | |
5258 + call L099key_256a | |
5259 +.byte 102,15,58,223,200,2 | |
5260 + call L098key_256b | |
5261 +.byte 102,15,58,223,202,4 | |
5262 + call L099key_256a | |
5263 +.byte 102,15,58,223,200,4 | |
5264 + call L098key_256b | |
5265 +.byte 102,15,58,223,202,8 | |
5266 + call L099key_256a | |
5267 +.byte 102,15,58,223,200,8 | |
5268 + call L098key_256b | |
5269 +.byte 102,15,58,223,202,16 | |
5270 + call L099key_256a | |
5271 +.byte 102,15,58,223,200,16 | |
5272 + call L098key_256b | |
5273 +.byte 102,15,58,223,202,32 | |
5274 + call L099key_256a | |
5275 +.byte 102,15,58,223,200,32 | |
5276 + call L098key_256b | |
5277 +.byte 102,15,58,223,202,64 | |
5278 + call L099key_256a | |
5279 + movups %xmm0,(%edx) | |
5280 + movl %ecx,16(%edx) | |
5281 + xorl %eax,%eax | |
5282 + ret | |
5283 +.align 4,0x90 | |
5284 +L099key_256a: | |
5285 + movups %xmm2,(%edx) | |
5286 + leal 16(%edx),%edx | |
5287 +L097key_256a_cold: | |
5288 + shufps $16,%xmm0,%xmm4 | |
5289 + xorps %xmm4,%xmm0 | |
5290 + shufps $140,%xmm0,%xmm4 | |
5291 + xorps %xmm4,%xmm0 | |
5292 + shufps $255,%xmm1,%xmm1 | |
5293 + xorps %xmm1,%xmm0 | |
5294 + ret | |
5295 +.align 4,0x90 | |
5296 +L098key_256b: | |
5297 + movups %xmm0,(%edx) | |
5298 + leal 16(%edx),%edx | |
5299 + shufps $16,%xmm2,%xmm4 | |
5300 + xorps %xmm4,%xmm2 | |
5301 + shufps $140,%xmm2,%xmm4 | |
5302 + xorps %xmm4,%xmm2 | |
5303 + shufps $170,%xmm1,%xmm1 | |
5304 + xorps %xmm1,%xmm2 | |
5305 + ret | |
5306 +.align 2,0x90 | |
5307 +L086bad_pointer: | |
5308 + movl $-1,%eax | |
5309 + ret | |
5310 +.align 2,0x90 | |
5311 +L089bad_keybits: | |
5312 + movl $-2,%eax | |
5313 + ret | |
5314 +.globl _aesni_set_encrypt_key | |
5315 +.align 4 | |
5316 +_aesni_set_encrypt_key: | |
5317 +L_aesni_set_encrypt_key_begin: | |
5318 + movl 4(%esp),%eax | |
5319 + movl 8(%esp),%ecx | |
5320 + movl 12(%esp),%edx | |
5321 + call __aesni_set_encrypt_key | |
5322 + ret | |
5323 +.globl _aesni_set_decrypt_key | |
5324 +.align 4 | |
5325 +_aesni_set_decrypt_key: | |
5326 +L_aesni_set_decrypt_key_begin: | |
5327 + movl 4(%esp),%eax | |
5328 + movl 8(%esp),%ecx | |
5329 + movl 12(%esp),%edx | |
5330 + call __aesni_set_encrypt_key | |
5331 + movl 12(%esp),%edx | |
5332 + shll $4,%ecx | |
5333 + testl %eax,%eax | |
5334 + jnz L100dec_key_ret | |
5335 + leal 16(%edx,%ecx,1),%eax | |
5336 + movups (%edx),%xmm0 | |
5337 + movups (%eax),%xmm1 | |
5338 + movups %xmm0,(%eax) | |
5339 + movups %xmm1,(%edx) | |
5340 + leal 16(%edx),%edx | |
5341 + leal -16(%eax),%eax | |
5342 +L101dec_key_inverse: | |
5343 + movups (%edx),%xmm0 | |
5344 + movups (%eax),%xmm1 | |
5345 +.byte 102,15,56,219,192 | |
5346 +.byte 102,15,56,219,201 | |
5347 + leal 16(%edx),%edx | |
5348 + leal -16(%eax),%eax | |
5349 + movups %xmm0,16(%eax) | |
5350 + movups %xmm1,-16(%edx) | |
5351 + cmpl %edx,%eax | |
5352 + ja L101dec_key_inverse | |
5353 + movups (%edx),%xmm0 | |
5354 +.byte 102,15,56,219,192 | |
5355 + movups %xmm0,(%edx) | |
5356 + xorl %eax,%eax | |
5357 +L100dec_key_ret: | |
5358 + ret | |
5359 +.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 | |
5360 +.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 | |
5361 +.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 | |
5362 +.byte 115,108,46,111,114,103,62,0 | |
5363 diff --git a/crypto/aes/asm/vpaes-x86-mac.S b/crypto/aes/asm/vpaes-x86-mac.S | |
5364 new file mode 100644 | |
5365 index 0000000..f6d164f | |
5366 --- /dev/null | |
5367 +++ b/crypto/aes/asm/vpaes-x86-mac.S | |
5368 @@ -0,0 +1,635 @@ | |
5369 +.file "vpaes-x86.s" | |
5370 +.text | |
5371 +.align 6,0x90 | |
5372 +L_vpaes_consts: | |
5373 +.long 218628480,235210255,168496130,67568393 | |
5374 +.long 252381056,17041926,33884169,51187212 | |
5375 +.long 252645135,252645135,252645135,252645135 | |
5376 +.long 1512730624,3266504856,1377990664,3401244816 | |
5377 +.long 830229760,1275146365,2969422977,3447763452 | |
5378 +.long 3411033600,2979783055,338359620,2782886510 | |
5379 +.long 4209124096,907596821,221174255,1006095553 | |
5380 +.long 191964160,3799684038,3164090317,1589111125 | |
5381 +.long 182528256,1777043520,2877432650,3265356744 | |
5382 +.long 1874708224,3503451415,3305285752,363511674 | |
5383 +.long 1606117888,3487855781,1093350906,2384367825 | |
5384 +.long 197121,67569157,134941193,202313229 | |
5385 +.long 67569157,134941193,202313229,197121 | |
5386 +.long 134941193,202313229,197121,67569157 | |
5387 +.long 202313229,197121,67569157,134941193 | |
5388 +.long 33619971,100992007,168364043,235736079 | |
5389 +.long 235736079,33619971,100992007,168364043 | |
5390 +.long 168364043,235736079,33619971,100992007 | |
5391 +.long 100992007,168364043,235736079,33619971 | |
5392 +.long 50462976,117835012,185207048,252579084 | |
5393 +.long 252314880,51251460,117574920,184942860 | |
5394 +.long 184682752,252054788,50987272,118359308 | |
5395 +.long 118099200,185467140,251790600,50727180 | |
5396 +.long 2946363062,528716217,1300004225,1881839624 | |
5397 +.long 1532713819,1532713819,1532713819,1532713819 | |
5398 +.long 3602276352,4288629033,3737020424,4153884961 | |
5399 +.long 1354558464,32357713,2958822624,3775749553 | |
5400 +.long 1201988352,132424512,1572796698,503232858 | |
5401 +.long 2213177600,1597421020,4103937655,675398315 | |
5402 +.long 2749646592,4273543773,1511898873,121693092 | |
5403 +.long 3040248576,1103263732,2871565598,1608280554 | |
5404 +.long 2236667136,2588920351,482954393,64377734 | |
5405 +.long 3069987328,291237287,2117370568,3650299247 | |
5406 +.long 533321216,3573750986,2572112006,1401264716 | |
5407 +.long 1339849704,2721158661,548607111,3445553514 | |
5408 +.long 2128193280,3054596040,2183486460,1257083700 | |
5409 +.long 655635200,1165381986,3923443150,2344132524 | |
5410 +.long 190078720,256924420,290342170,357187870 | |
5411 +.long 1610966272,2263057382,4103205268,309794674 | |
5412 +.long 2592527872,2233205587,1335446729,3402964816 | |
5413 +.long 3973531904,3225098121,3002836325,1918774430 | |
5414 +.long 3870401024,2102906079,2284471353,4117666579 | |
5415 +.long 617007872,1021508343,366931923,691083277 | |
5416 +.long 2528395776,3491914898,2968704004,1613121270 | |
5417 +.long 3445188352,3247741094,844474987,4093578302 | |
5418 +.long 651481088,1190302358,1689581232,574775300 | |
5419 +.long 4289380608,206939853,2555985458,2489840491 | |
5420 +.long 2130264064,327674451,3566485037,3349835193 | |
5421 +.long 2470714624,316102159,3636825756,3393945945 | |
5422 +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 | |
5423 +.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 | |
5424 +.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 | |
5425 +.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 | |
5426 +.byte 118,101,114,115,105,116,121,41,0 | |
5427 +.align 6,0x90 | |
5428 +.align 4 | |
5429 +__vpaes_preheat: | |
5430 + addl (%esp),%ebp | |
5431 + movdqa -48(%ebp),%xmm7 | |
5432 + movdqa -16(%ebp),%xmm6 | |
5433 + ret | |
5434 +.align 4 | |
5435 +__vpaes_encrypt_core: | |
5436 + movl $16,%ecx | |
5437 + movl 240(%edx),%eax | |
5438 + movdqa %xmm6,%xmm1 | |
5439 + movdqa (%ebp),%xmm2 | |
5440 + pandn %xmm0,%xmm1 | |
5441 + movdqu (%edx),%xmm5 | |
5442 + psrld $4,%xmm1 | |
5443 + pand %xmm6,%xmm0 | |
5444 +.byte 102,15,56,0,208 | |
5445 + movdqa 16(%ebp),%xmm0 | |
5446 +.byte 102,15,56,0,193 | |
5447 + pxor %xmm5,%xmm2 | |
5448 + pxor %xmm2,%xmm0 | |
5449 + addl $16,%edx | |
5450 + leal 192(%ebp),%ebx | |
5451 + jmp L000enc_entry | |
5452 +.align 4,0x90 | |
5453 +L001enc_loop: | |
5454 + movdqa 32(%ebp),%xmm4 | |
5455 +.byte 102,15,56,0,226 | |
5456 + pxor %xmm5,%xmm4 | |
5457 + movdqa 48(%ebp),%xmm0 | |
5458 +.byte 102,15,56,0,195 | |
5459 + pxor %xmm4,%xmm0 | |
5460 + movdqa 64(%ebp),%xmm5 | |
5461 +.byte 102,15,56,0,234 | |
5462 + movdqa -64(%ebx,%ecx,1),%xmm1 | |
5463 + movdqa 80(%ebp),%xmm2 | |
5464 +.byte 102,15,56,0,211 | |
5465 + pxor %xmm5,%xmm2 | |
5466 + movdqa (%ebx,%ecx,1),%xmm4 | |
5467 + movdqa %xmm0,%xmm3 | |
5468 +.byte 102,15,56,0,193 | |
5469 + addl $16,%edx | |
5470 + pxor %xmm2,%xmm0 | |
5471 +.byte 102,15,56,0,220 | |
5472 + addl $16,%ecx | |
5473 + pxor %xmm0,%xmm3 | |
5474 +.byte 102,15,56,0,193 | |
5475 + andl $48,%ecx | |
5476 + pxor %xmm3,%xmm0 | |
5477 + subl $1,%eax | |
5478 +L000enc_entry: | |
5479 + movdqa %xmm6,%xmm1 | |
5480 + pandn %xmm0,%xmm1 | |
5481 + psrld $4,%xmm1 | |
5482 + pand %xmm6,%xmm0 | |
5483 + movdqa -32(%ebp),%xmm5 | |
5484 +.byte 102,15,56,0,232 | |
5485 + pxor %xmm1,%xmm0 | |
5486 + movdqa %xmm7,%xmm3 | |
5487 +.byte 102,15,56,0,217 | |
5488 + pxor %xmm5,%xmm3 | |
5489 + movdqa %xmm7,%xmm4 | |
5490 +.byte 102,15,56,0,224 | |
5491 + pxor %xmm5,%xmm4 | |
5492 + movdqa %xmm7,%xmm2 | |
5493 +.byte 102,15,56,0,211 | |
5494 + pxor %xmm0,%xmm2 | |
5495 + movdqa %xmm7,%xmm3 | |
5496 + movdqu (%edx),%xmm5 | |
5497 +.byte 102,15,56,0,220 | |
5498 + pxor %xmm1,%xmm3 | |
5499 + jnz L001enc_loop | |
5500 + movdqa 96(%ebp),%xmm4 | |
5501 + movdqa 112(%ebp),%xmm0 | |
5502 +.byte 102,15,56,0,226 | |
5503 + pxor %xmm5,%xmm4 | |
5504 +.byte 102,15,56,0,195 | |
5505 + movdqa 64(%ebx,%ecx,1),%xmm1 | |
5506 + pxor %xmm4,%xmm0 | |
5507 +.byte 102,15,56,0,193 | |
5508 + ret | |
5509 +.align 4 | |
5510 +__vpaes_decrypt_core: | |
5511 + movl 240(%edx),%eax | |
5512 + leal 608(%ebp),%ebx | |
5513 + movdqa %xmm6,%xmm1 | |
5514 + movdqa -64(%ebx),%xmm2 | |
5515 + pandn %xmm0,%xmm1 | |
5516 + movl %eax,%ecx | |
5517 + psrld $4,%xmm1 | |
5518 + movdqu (%edx),%xmm5 | |
5519 + shll $4,%ecx | |
5520 + pand %xmm6,%xmm0 | |
5521 +.byte 102,15,56,0,208 | |
5522 + movdqa -48(%ebx),%xmm0 | |
5523 + xorl $48,%ecx | |
5524 +.byte 102,15,56,0,193 | |
5525 + andl $48,%ecx | |
5526 + pxor %xmm5,%xmm2 | |
5527 + movdqa 176(%ebp),%xmm5 | |
5528 + pxor %xmm2,%xmm0 | |
5529 + addl $16,%edx | |
5530 + leal -352(%ebx,%ecx,1),%ecx | |
5531 + jmp L002dec_entry | |
5532 +.align 4,0x90 | |
5533 +L003dec_loop: | |
5534 + movdqa -32(%ebx),%xmm4 | |
5535 +.byte 102,15,56,0,226 | |
5536 + pxor %xmm0,%xmm4 | |
5537 + movdqa -16(%ebx),%xmm0 | |
5538 +.byte 102,15,56,0,195 | |
5539 + pxor %xmm4,%xmm0 | |
5540 + addl $16,%edx | |
5541 +.byte 102,15,56,0,197 | |
5542 + movdqa (%ebx),%xmm4 | |
5543 +.byte 102,15,56,0,226 | |
5544 + pxor %xmm0,%xmm4 | |
5545 + movdqa 16(%ebx),%xmm0 | |
5546 +.byte 102,15,56,0,195 | |
5547 + pxor %xmm4,%xmm0 | |
5548 + subl $1,%eax | |
5549 +.byte 102,15,56,0,197 | |
5550 + movdqa 32(%ebx),%xmm4 | |
5551 +.byte 102,15,56,0,226 | |
5552 + pxor %xmm0,%xmm4 | |
5553 + movdqa 48(%ebx),%xmm0 | |
5554 +.byte 102,15,56,0,195 | |
5555 + pxor %xmm4,%xmm0 | |
5556 +.byte 102,15,56,0,197 | |
5557 + movdqa 64(%ebx),%xmm4 | |
5558 +.byte 102,15,56,0,226 | |
5559 + pxor %xmm0,%xmm4 | |
5560 + movdqa 80(%ebx),%xmm0 | |
5561 +.byte 102,15,56,0,195 | |
5562 + pxor %xmm4,%xmm0 | |
5563 +.byte 102,15,58,15,237,12 | |
5564 +L002dec_entry: | |
5565 + movdqa %xmm6,%xmm1 | |
5566 + pandn %xmm0,%xmm1 | |
5567 + psrld $4,%xmm1 | |
5568 + pand %xmm6,%xmm0 | |
5569 + movdqa -32(%ebp),%xmm2 | |
5570 +.byte 102,15,56,0,208 | |
5571 + pxor %xmm1,%xmm0 | |
5572 + movdqa %xmm7,%xmm3 | |
5573 +.byte 102,15,56,0,217 | |
5574 + pxor %xmm2,%xmm3 | |
5575 + movdqa %xmm7,%xmm4 | |
5576 +.byte 102,15,56,0,224 | |
5577 + pxor %xmm2,%xmm4 | |
5578 + movdqa %xmm7,%xmm2 | |
5579 +.byte 102,15,56,0,211 | |
5580 + pxor %xmm0,%xmm2 | |
5581 + movdqa %xmm7,%xmm3 | |
5582 +.byte 102,15,56,0,220 | |
5583 + pxor %xmm1,%xmm3 | |
5584 + movdqu (%edx),%xmm0 | |
5585 + jnz L003dec_loop | |
5586 + movdqa 96(%ebx),%xmm4 | |
5587 +.byte 102,15,56,0,226 | |
5588 + pxor %xmm0,%xmm4 | |
5589 + movdqa 112(%ebx),%xmm0 | |
5590 + movdqa (%ecx),%xmm2 | |
5591 +.byte 102,15,56,0,195 | |
5592 + pxor %xmm4,%xmm0 | |
5593 +.byte 102,15,56,0,194 | |
5594 + ret | |
5595 +.align 4 | |
5596 +__vpaes_schedule_core: | |
5597 + addl (%esp),%ebp | |
5598 + movdqu (%esi),%xmm0 | |
5599 + movdqa 320(%ebp),%xmm2 | |
5600 + movdqa %xmm0,%xmm3 | |
5601 + leal (%ebp),%ebx | |
5602 + movdqa %xmm2,4(%esp) | |
5603 + call __vpaes_schedule_transform | |
5604 + movdqa %xmm0,%xmm7 | |
5605 + testl %edi,%edi | |
5606 + jnz L004schedule_am_decrypting | |
5607 + movdqu %xmm0,(%edx) | |
5608 + jmp L005schedule_go | |
5609 +L004schedule_am_decrypting: | |
5610 + movdqa 256(%ebp,%ecx,1),%xmm1 | |
5611 +.byte 102,15,56,0,217 | |
5612 + movdqu %xmm3,(%edx) | |
5613 + xorl $48,%ecx | |
5614 +L005schedule_go: | |
5615 + cmpl $192,%eax | |
5616 + ja L006schedule_256 | |
5617 + je L007schedule_192 | |
5618 +L008schedule_128: | |
5619 + movl $10,%eax | |
5620 +L009loop_schedule_128: | |
5621 + call __vpaes_schedule_round | |
5622 + decl %eax | |
5623 + jz L010schedule_mangle_last | |
5624 + call __vpaes_schedule_mangle | |
5625 + jmp L009loop_schedule_128 | |
5626 +.align 4,0x90 | |
5627 +L007schedule_192: | |
5628 + movdqu 8(%esi),%xmm0 | |
5629 + call __vpaes_schedule_transform | |
5630 + movdqa %xmm0,%xmm6 | |
5631 + pxor %xmm4,%xmm4 | |
5632 + movhlps %xmm4,%xmm6 | |
5633 + movl $4,%eax | |
5634 +L011loop_schedule_192: | |
5635 + call __vpaes_schedule_round | |
5636 +.byte 102,15,58,15,198,8 | |
5637 + call __vpaes_schedule_mangle | |
5638 + call __vpaes_schedule_192_smear | |
5639 + call __vpaes_schedule_mangle | |
5640 + call __vpaes_schedule_round | |
5641 + decl %eax | |
5642 + jz L010schedule_mangle_last | |
5643 + call __vpaes_schedule_mangle | |
5644 + call __vpaes_schedule_192_smear | |
5645 + jmp L011loop_schedule_192 | |
5646 +.align 4,0x90 | |
5647 +L006schedule_256: | |
5648 + movdqu 16(%esi),%xmm0 | |
5649 + call __vpaes_schedule_transform | |
5650 + movl $7,%eax | |
5651 +L012loop_schedule_256: | |
5652 + call __vpaes_schedule_mangle | |
5653 + movdqa %xmm0,%xmm6 | |
5654 + call __vpaes_schedule_round | |
5655 + decl %eax | |
5656 + jz L010schedule_mangle_last | |
5657 + call __vpaes_schedule_mangle | |
5658 + pshufd $255,%xmm0,%xmm0 | |
5659 + movdqa %xmm7,20(%esp) | |
5660 + movdqa %xmm6,%xmm7 | |
5661 + call L_vpaes_schedule_low_round | |
5662 + movdqa 20(%esp),%xmm7 | |
5663 + jmp L012loop_schedule_256 | |
5664 +.align 4,0x90 | |
5665 +L010schedule_mangle_last: | |
5666 + leal 384(%ebp),%ebx | |
5667 + testl %edi,%edi | |
5668 + jnz L013schedule_mangle_last_dec | |
5669 + movdqa 256(%ebp,%ecx,1),%xmm1 | |
5670 +.byte 102,15,56,0,193 | |
5671 + leal 352(%ebp),%ebx | |
5672 + addl $32,%edx | |
5673 +L013schedule_mangle_last_dec: | |
5674 + addl $-16,%edx | |
5675 + pxor 336(%ebp),%xmm0 | |
5676 + call __vpaes_schedule_transform | |
5677 + movdqu %xmm0,(%edx) | |
5678 + pxor %xmm0,%xmm0 | |
5679 + pxor %xmm1,%xmm1 | |
5680 + pxor %xmm2,%xmm2 | |
5681 + pxor %xmm3,%xmm3 | |
5682 + pxor %xmm4,%xmm4 | |
5683 + pxor %xmm5,%xmm5 | |
5684 + pxor %xmm6,%xmm6 | |
5685 + pxor %xmm7,%xmm7 | |
5686 + ret | |
5687 +.align 4 | |
5688 +__vpaes_schedule_192_smear: | |
5689 + pshufd $128,%xmm6,%xmm0 | |
5690 + pxor %xmm0,%xmm6 | |
5691 + pshufd $254,%xmm7,%xmm0 | |
5692 + pxor %xmm0,%xmm6 | |
5693 + movdqa %xmm6,%xmm0 | |
5694 + pxor %xmm1,%xmm1 | |
5695 + movhlps %xmm1,%xmm6 | |
5696 + ret | |
5697 +.align 4 | |
5698 +__vpaes_schedule_round: | |
5699 + movdqa 8(%esp),%xmm2 | |
5700 + pxor %xmm1,%xmm1 | |
5701 +.byte 102,15,58,15,202,15 | |
5702 +.byte 102,15,58,15,210,15 | |
5703 + pxor %xmm1,%xmm7 | |
5704 + pshufd $255,%xmm0,%xmm0 | |
5705 +.byte 102,15,58,15,192,1 | |
5706 + movdqa %xmm2,8(%esp) | |
5707 +L_vpaes_schedule_low_round: | |
5708 + movdqa %xmm7,%xmm1 | |
5709 + pslldq $4,%xmm7 | |
5710 + pxor %xmm1,%xmm7 | |
5711 + movdqa %xmm7,%xmm1 | |
5712 + pslldq $8,%xmm7 | |
5713 + pxor %xmm1,%xmm7 | |
5714 + pxor 336(%ebp),%xmm7 | |
5715 + movdqa -16(%ebp),%xmm4 | |
5716 + movdqa -48(%ebp),%xmm5 | |
5717 + movdqa %xmm4,%xmm1 | |
5718 + pandn %xmm0,%xmm1 | |
5719 + psrld $4,%xmm1 | |
5720 + pand %xmm4,%xmm0 | |
5721 + movdqa -32(%ebp),%xmm2 | |
5722 +.byte 102,15,56,0,208 | |
5723 + pxor %xmm1,%xmm0 | |
5724 + movdqa %xmm5,%xmm3 | |
5725 +.byte 102,15,56,0,217 | |
5726 + pxor %xmm2,%xmm3 | |
5727 + movdqa %xmm5,%xmm4 | |
5728 +.byte 102,15,56,0,224 | |
5729 + pxor %xmm2,%xmm4 | |
5730 + movdqa %xmm5,%xmm2 | |
5731 +.byte 102,15,56,0,211 | |
5732 + pxor %xmm0,%xmm2 | |
5733 + movdqa %xmm5,%xmm3 | |
5734 +.byte 102,15,56,0,220 | |
5735 + pxor %xmm1,%xmm3 | |
5736 + movdqa 32(%ebp),%xmm4 | |
5737 +.byte 102,15,56,0,226 | |
5738 + movdqa 48(%ebp),%xmm0 | |
5739 +.byte 102,15,56,0,195 | |
5740 + pxor %xmm4,%xmm0 | |
5741 + pxor %xmm7,%xmm0 | |
5742 + movdqa %xmm0,%xmm7 | |
5743 + ret | |
5744 +.align 4 | |
5745 +__vpaes_schedule_transform: | |
5746 + movdqa -16(%ebp),%xmm2 | |
5747 + movdqa %xmm2,%xmm1 | |
5748 + pandn %xmm0,%xmm1 | |
5749 + psrld $4,%xmm1 | |
5750 + pand %xmm2,%xmm0 | |
5751 + movdqa (%ebx),%xmm2 | |
5752 +.byte 102,15,56,0,208 | |
5753 + movdqa 16(%ebx),%xmm0 | |
5754 +.byte 102,15,56,0,193 | |
5755 + pxor %xmm2,%xmm0 | |
5756 + ret | |
5757 +.align 4 | |
5758 +__vpaes_schedule_mangle: | |
5759 + movdqa %xmm0,%xmm4 | |
5760 + movdqa 128(%ebp),%xmm5 | |
5761 + testl %edi,%edi | |
5762 + jnz L014schedule_mangle_dec | |
5763 + addl $16,%edx | |
5764 + pxor 336(%ebp),%xmm4 | |
5765 +.byte 102,15,56,0,229 | |
5766 + movdqa %xmm4,%xmm3 | |
5767 +.byte 102,15,56,0,229 | |
5768 + pxor %xmm4,%xmm3 | |
5769 +.byte 102,15,56,0,229 | |
5770 + pxor %xmm4,%xmm3 | |
5771 + jmp L015schedule_mangle_both | |
5772 +.align 4,0x90 | |
5773 +L014schedule_mangle_dec: | |
5774 + movdqa -16(%ebp),%xmm2 | |
5775 + leal 416(%ebp),%esi | |
5776 + movdqa %xmm2,%xmm1 | |
5777 + pandn %xmm4,%xmm1 | |
5778 + psrld $4,%xmm1 | |
5779 + pand %xmm2,%xmm4 | |
5780 + movdqa (%esi),%xmm2 | |
5781 +.byte 102,15,56,0,212 | |
5782 + movdqa 16(%esi),%xmm3 | |
5783 +.byte 102,15,56,0,217 | |
5784 + pxor %xmm2,%xmm3 | |
5785 +.byte 102,15,56,0,221 | |
5786 + movdqa 32(%esi),%xmm2 | |
5787 +.byte 102,15,56,0,212 | |
5788 + pxor %xmm3,%xmm2 | |
5789 + movdqa 48(%esi),%xmm3 | |
5790 +.byte 102,15,56,0,217 | |
5791 + pxor %xmm2,%xmm3 | |
5792 +.byte 102,15,56,0,221 | |
5793 + movdqa 64(%esi),%xmm2 | |
5794 +.byte 102,15,56,0,212 | |
5795 + pxor %xmm3,%xmm2 | |
5796 + movdqa 80(%esi),%xmm3 | |
5797 +.byte 102,15,56,0,217 | |
5798 + pxor %xmm2,%xmm3 | |
5799 +.byte 102,15,56,0,221 | |
5800 + movdqa 96(%esi),%xmm2 | |
5801 +.byte 102,15,56,0,212 | |
5802 + pxor %xmm3,%xmm2 | |
5803 + movdqa 112(%esi),%xmm3 | |
5804 +.byte 102,15,56,0,217 | |
5805 + pxor %xmm2,%xmm3 | |
5806 + addl $-16,%edx | |
5807 +L015schedule_mangle_both: | |
5808 + movdqa 256(%ebp,%ecx,1),%xmm1 | |
5809 +.byte 102,15,56,0,217 | |
5810 + addl $-16,%ecx | |
5811 + andl $48,%ecx | |
5812 + movdqu %xmm3,(%edx) | |
5813 + ret | |
5814 +.globl _vpaes_set_encrypt_key | |
5815 +.align 4 | |
5816 +_vpaes_set_encrypt_key: | |
5817 +L_vpaes_set_encrypt_key_begin: | |
5818 + pushl %ebp | |
5819 + pushl %ebx | |
5820 + pushl %esi | |
5821 + pushl %edi | |
5822 + movl 20(%esp),%esi | |
5823 + leal -56(%esp),%ebx | |
5824 + movl 24(%esp),%eax | |
5825 + andl $-16,%ebx | |
5826 + movl 28(%esp),%edx | |
5827 + xchgl %esp,%ebx | |
5828 + movl %ebx,48(%esp) | |
5829 + movl %eax,%ebx | |
5830 + shrl $5,%ebx | |
5831 + addl $5,%ebx | |
5832 + movl %ebx,240(%edx) | |
5833 + movl $48,%ecx | |
5834 + movl $0,%edi | |
5835 + leal L_vpaes_consts+0x30-L016pic_point,%ebp | |
5836 + call __vpaes_schedule_core | |
5837 +L016pic_point: | |
5838 + movl 48(%esp),%esp | |
5839 + xorl %eax,%eax | |
5840 + popl %edi | |
5841 + popl %esi | |
5842 + popl %ebx | |
5843 + popl %ebp | |
5844 + ret | |
5845 +.globl _vpaes_set_decrypt_key | |
5846 +.align 4 | |
5847 +_vpaes_set_decrypt_key: | |
5848 +L_vpaes_set_decrypt_key_begin: | |
5849 + pushl %ebp | |
5850 + pushl %ebx | |
5851 + pushl %esi | |
5852 + pushl %edi | |
5853 + movl 20(%esp),%esi | |
5854 + leal -56(%esp),%ebx | |
5855 + movl 24(%esp),%eax | |
5856 + andl $-16,%ebx | |
5857 + movl 28(%esp),%edx | |
5858 + xchgl %esp,%ebx | |
5859 + movl %ebx,48(%esp) | |
5860 + movl %eax,%ebx | |
5861 + shrl $5,%ebx | |
5862 + addl $5,%ebx | |
5863 + movl %ebx,240(%edx) | |
5864 + shll $4,%ebx | |
5865 + leal 16(%edx,%ebx,1),%edx | |
5866 + movl $1,%edi | |
5867 + movl %eax,%ecx | |
5868 + shrl $1,%ecx | |
5869 + andl $32,%ecx | |
5870 + xorl $32,%ecx | |
5871 + leal L_vpaes_consts+0x30-L017pic_point,%ebp | |
5872 + call __vpaes_schedule_core | |
5873 +L017pic_point: | |
5874 + movl 48(%esp),%esp | |
5875 + xorl %eax,%eax | |
5876 + popl %edi | |
5877 + popl %esi | |
5878 + popl %ebx | |
5879 + popl %ebp | |
5880 + ret | |
5881 +.globl _vpaes_encrypt | |
5882 +.align 4 | |
5883 +_vpaes_encrypt: | |
5884 +L_vpaes_encrypt_begin: | |
5885 + pushl %ebp | |
5886 + pushl %ebx | |
5887 + pushl %esi | |
5888 + pushl %edi | |
5889 + leal L_vpaes_consts+0x30-L018pic_point,%ebp | |
5890 + call __vpaes_preheat | |
5891 +L018pic_point: | |
5892 + movl 20(%esp),%esi | |
5893 + leal -56(%esp),%ebx | |
5894 + movl 24(%esp),%edi | |
5895 + andl $-16,%ebx | |
5896 + movl 28(%esp),%edx | |
5897 + xchgl %esp,%ebx | |
5898 + movl %ebx,48(%esp) | |
5899 + movdqu (%esi),%xmm0 | |
5900 + call __vpaes_encrypt_core | |
5901 + movdqu %xmm0,(%edi) | |
5902 + movl 48(%esp),%esp | |
5903 + popl %edi | |
5904 + popl %esi | |
5905 + popl %ebx | |
5906 + popl %ebp | |
5907 + ret | |
5908 +.globl _vpaes_decrypt | |
5909 +.align 4 | |
5910 +_vpaes_decrypt: | |
5911 +L_vpaes_decrypt_begin: | |
5912 + pushl %ebp | |
5913 + pushl %ebx | |
5914 + pushl %esi | |
5915 + pushl %edi | |
5916 + leal L_vpaes_consts+0x30-L019pic_point,%ebp | |
5917 + call __vpaes_preheat | |
5918 +L019pic_point: | |
5919 + movl 20(%esp),%esi | |
5920 + leal -56(%esp),%ebx | |
5921 + movl 24(%esp),%edi | |
5922 + andl $-16,%ebx | |
5923 + movl 28(%esp),%edx | |
5924 + xchgl %esp,%ebx | |
5925 + movl %ebx,48(%esp) | |
5926 + movdqu (%esi),%xmm0 | |
5927 + call __vpaes_decrypt_core | |
5928 + movdqu %xmm0,(%edi) | |
5929 + movl 48(%esp),%esp | |
5930 + popl %edi | |
5931 + popl %esi | |
5932 + popl %ebx | |
5933 + popl %ebp | |
5934 + ret | |
5935 +.globl _vpaes_cbc_encrypt | |
5936 +.align 4 | |
5937 +_vpaes_cbc_encrypt: | |
5938 +L_vpaes_cbc_encrypt_begin: | |
5939 + pushl %ebp | |
5940 + pushl %ebx | |
5941 + pushl %esi | |
5942 + pushl %edi | |
5943 + movl 20(%esp),%esi | |
5944 + movl 24(%esp),%edi | |
5945 + movl 28(%esp),%eax | |
5946 + movl 32(%esp),%edx | |
5947 + subl $16,%eax | |
5948 + jc L020cbc_abort | |
5949 + leal -56(%esp),%ebx | |
5950 + movl 36(%esp),%ebp | |
5951 + andl $-16,%ebx | |
5952 + movl 40(%esp),%ecx | |
5953 + xchgl %esp,%ebx | |
5954 + movdqu (%ebp),%xmm1 | |
5955 + subl %esi,%edi | |
5956 + movl %ebx,48(%esp) | |
5957 + movl %edi,(%esp) | |
5958 + movl %edx,4(%esp) | |
5959 + movl %ebp,8(%esp) | |
5960 + movl %eax,%edi | |
5961 + leal L_vpaes_consts+0x30-L021pic_point,%ebp | |
5962 + call __vpaes_preheat | |
5963 +L021pic_point: | |
5964 + cmpl $0,%ecx | |
5965 + je L022cbc_dec_loop | |
5966 + jmp L023cbc_enc_loop | |
5967 +.align 4,0x90 | |
5968 +L023cbc_enc_loop: | |
5969 + movdqu (%esi),%xmm0 | |
5970 + pxor %xmm1,%xmm0 | |
5971 + call __vpaes_encrypt_core | |
5972 + movl (%esp),%ebx | |
5973 + movl 4(%esp),%edx | |
5974 + movdqa %xmm0,%xmm1 | |
5975 + movdqu %xmm0,(%ebx,%esi,1) | |
5976 + leal 16(%esi),%esi | |
5977 + subl $16,%edi | |
5978 + jnc L023cbc_enc_loop | |
5979 + jmp L024cbc_done | |
5980 +.align 4,0x90 | |
5981 +L022cbc_dec_loop: | |
5982 + movdqu (%esi),%xmm0 | |
5983 + movdqa %xmm1,16(%esp) | |
5984 + movdqa %xmm0,32(%esp) | |
5985 + call __vpaes_decrypt_core | |
5986 + movl (%esp),%ebx | |
5987 + movl 4(%esp),%edx | |
5988 + pxor 16(%esp),%xmm0 | |
5989 + movdqa 32(%esp),%xmm1 | |
5990 + movdqu %xmm0,(%ebx,%esi,1) | |
5991 + leal 16(%esi),%esi | |
5992 + subl $16,%edi | |
5993 + jnc L022cbc_dec_loop | |
5994 +L024cbc_done: | |
5995 + movl 8(%esp),%ebx | |
5996 + movl 48(%esp),%esp | |
5997 + movdqu %xmm1,(%ebx) | |
5998 +L020cbc_abort: | |
5999 + popl %edi | |
6000 + popl %esi | |
6001 + popl %ebx | |
6002 + popl %ebp | |
6003 + ret | |
6004 diff --git a/crypto/bf/asm/bf-586-mac.S b/crypto/bf/asm/bf-586-mac.S | |
6005 new file mode 100644 | |
6006 index 0000000..bf02384 | |
6007 --- /dev/null | |
6008 +++ b/crypto/bf/asm/bf-586-mac.S | |
6009 @@ -0,0 +1,890 @@ | |
6010 +.file "bf-586.s" | |
6011 +.text | |
6012 +.globl _BF_encrypt | |
6013 +.align 4 | |
6014 +_BF_encrypt: | |
6015 +L_BF_encrypt_begin: | |
6016 + | |
6017 + pushl %ebp | |
6018 + pushl %ebx | |
6019 + movl 12(%esp),%ebx | |
6020 + movl 16(%esp),%ebp | |
6021 + pushl %esi | |
6022 + pushl %edi | |
6023 + # Load the 2 words | |
6024 + movl (%ebx),%edi | |
6025 + movl 4(%ebx),%esi | |
6026 + xorl %eax,%eax | |
6027 + movl (%ebp),%ebx | |
6028 + xorl %ecx,%ecx | |
6029 + xorl %ebx,%edi | |
6030 + | |
6031 + # Round 0 | |
6032 + movl 4(%ebp),%edx | |
6033 + movl %edi,%ebx | |
6034 + xorl %edx,%esi | |
6035 + shrl $16,%ebx | |
6036 + movl %edi,%edx | |
6037 + movb %bh,%al | |
6038 + andl $255,%ebx | |
6039 + movb %dh,%cl | |
6040 + andl $255,%edx | |
6041 + movl 72(%ebp,%eax,4),%eax | |
6042 + movl 1096(%ebp,%ebx,4),%ebx | |
6043 + addl %eax,%ebx | |
6044 + movl 2120(%ebp,%ecx,4),%eax | |
6045 + xorl %eax,%ebx | |
6046 + movl 3144(%ebp,%edx,4),%edx | |
6047 + addl %edx,%ebx | |
6048 + xorl %eax,%eax | |
6049 + xorl %ebx,%esi | |
6050 + | |
6051 + # Round 1 | |
6052 + movl 8(%ebp),%edx | |
6053 + movl %esi,%ebx | |
6054 + xorl %edx,%edi | |
6055 + shrl $16,%ebx | |
6056 + movl %esi,%edx | |
6057 + movb %bh,%al | |
6058 + andl $255,%ebx | |
6059 + movb %dh,%cl | |
6060 + andl $255,%edx | |
6061 + movl 72(%ebp,%eax,4),%eax | |
6062 + movl 1096(%ebp,%ebx,4),%ebx | |
6063 + addl %eax,%ebx | |
6064 + movl 2120(%ebp,%ecx,4),%eax | |
6065 + xorl %eax,%ebx | |
6066 + movl 3144(%ebp,%edx,4),%edx | |
6067 + addl %edx,%ebx | |
6068 + xorl %eax,%eax | |
6069 + xorl %ebx,%edi | |
6070 + | |
6071 + # Round 2 | |
6072 + movl 12(%ebp),%edx | |
6073 + movl %edi,%ebx | |
6074 + xorl %edx,%esi | |
6075 + shrl $16,%ebx | |
6076 + movl %edi,%edx | |
6077 + movb %bh,%al | |
6078 + andl $255,%ebx | |
6079 + movb %dh,%cl | |
6080 + andl $255,%edx | |
6081 + movl 72(%ebp,%eax,4),%eax | |
6082 + movl 1096(%ebp,%ebx,4),%ebx | |
6083 + addl %eax,%ebx | |
6084 + movl 2120(%ebp,%ecx,4),%eax | |
6085 + xorl %eax,%ebx | |
6086 + movl 3144(%ebp,%edx,4),%edx | |
6087 + addl %edx,%ebx | |
6088 + xorl %eax,%eax | |
6089 + xorl %ebx,%esi | |
6090 + | |
6091 + # Round 3 | |
6092 + movl 16(%ebp),%edx | |
6093 + movl %esi,%ebx | |
6094 + xorl %edx,%edi | |
6095 + shrl $16,%ebx | |
6096 + movl %esi,%edx | |
6097 + movb %bh,%al | |
6098 + andl $255,%ebx | |
6099 + movb %dh,%cl | |
6100 + andl $255,%edx | |
6101 + movl 72(%ebp,%eax,4),%eax | |
6102 + movl 1096(%ebp,%ebx,4),%ebx | |
6103 + addl %eax,%ebx | |
6104 + movl 2120(%ebp,%ecx,4),%eax | |
6105 + xorl %eax,%ebx | |
6106 + movl 3144(%ebp,%edx,4),%edx | |
6107 + addl %edx,%ebx | |
6108 + xorl %eax,%eax | |
6109 + xorl %ebx,%edi | |
6110 + | |
6111 + # Round 4 | |
6112 + movl 20(%ebp),%edx | |
6113 + movl %edi,%ebx | |
6114 + xorl %edx,%esi | |
6115 + shrl $16,%ebx | |
6116 + movl %edi,%edx | |
6117 + movb %bh,%al | |
6118 + andl $255,%ebx | |
6119 + movb %dh,%cl | |
6120 + andl $255,%edx | |
6121 + movl 72(%ebp,%eax,4),%eax | |
6122 + movl 1096(%ebp,%ebx,4),%ebx | |
6123 + addl %eax,%ebx | |
6124 + movl 2120(%ebp,%ecx,4),%eax | |
6125 + xorl %eax,%ebx | |
6126 + movl 3144(%ebp,%edx,4),%edx | |
6127 + addl %edx,%ebx | |
6128 + xorl %eax,%eax | |
6129 + xorl %ebx,%esi | |
6130 + | |
6131 + # Round 5 | |
6132 + movl 24(%ebp),%edx | |
6133 + movl %esi,%ebx | |
6134 + xorl %edx,%edi | |
6135 + shrl $16,%ebx | |
6136 + movl %esi,%edx | |
6137 + movb %bh,%al | |
6138 + andl $255,%ebx | |
6139 + movb %dh,%cl | |
6140 + andl $255,%edx | |
6141 + movl 72(%ebp,%eax,4),%eax | |
6142 + movl 1096(%ebp,%ebx,4),%ebx | |
6143 + addl %eax,%ebx | |
6144 + movl 2120(%ebp,%ecx,4),%eax | |
6145 + xorl %eax,%ebx | |
6146 + movl 3144(%ebp,%edx,4),%edx | |
6147 + addl %edx,%ebx | |
6148 + xorl %eax,%eax | |
6149 + xorl %ebx,%edi | |
6150 + | |
6151 + # Round 6 | |
6152 + movl 28(%ebp),%edx | |
6153 + movl %edi,%ebx | |
6154 + xorl %edx,%esi | |
6155 + shrl $16,%ebx | |
6156 + movl %edi,%edx | |
6157 + movb %bh,%al | |
6158 + andl $255,%ebx | |
6159 + movb %dh,%cl | |
6160 + andl $255,%edx | |
6161 + movl 72(%ebp,%eax,4),%eax | |
6162 + movl 1096(%ebp,%ebx,4),%ebx | |
6163 + addl %eax,%ebx | |
6164 + movl 2120(%ebp,%ecx,4),%eax | |
6165 + xorl %eax,%ebx | |
6166 + movl 3144(%ebp,%edx,4),%edx | |
6167 + addl %edx,%ebx | |
6168 + xorl %eax,%eax | |
6169 + xorl %ebx,%esi | |
6170 + | |
6171 + # Round 7 | |
6172 + movl 32(%ebp),%edx | |
6173 + movl %esi,%ebx | |
6174 + xorl %edx,%edi | |
6175 + shrl $16,%ebx | |
6176 + movl %esi,%edx | |
6177 + movb %bh,%al | |
6178 + andl $255,%ebx | |
6179 + movb %dh,%cl | |
6180 + andl $255,%edx | |
6181 + movl 72(%ebp,%eax,4),%eax | |
6182 + movl 1096(%ebp,%ebx,4),%ebx | |
6183 + addl %eax,%ebx | |
6184 + movl 2120(%ebp,%ecx,4),%eax | |
6185 + xorl %eax,%ebx | |
6186 + movl 3144(%ebp,%edx,4),%edx | |
6187 + addl %edx,%ebx | |
6188 + xorl %eax,%eax | |
6189 + xorl %ebx,%edi | |
6190 + | |
6191 + # Round 8 | |
6192 + movl 36(%ebp),%edx | |
6193 + movl %edi,%ebx | |
6194 + xorl %edx,%esi | |
6195 + shrl $16,%ebx | |
6196 + movl %edi,%edx | |
6197 + movb %bh,%al | |
6198 + andl $255,%ebx | |
6199 + movb %dh,%cl | |
6200 + andl $255,%edx | |
6201 + movl 72(%ebp,%eax,4),%eax | |
6202 + movl 1096(%ebp,%ebx,4),%ebx | |
6203 + addl %eax,%ebx | |
6204 + movl 2120(%ebp,%ecx,4),%eax | |
6205 + xorl %eax,%ebx | |
6206 + movl 3144(%ebp,%edx,4),%edx | |
6207 + addl %edx,%ebx | |
6208 + xorl %eax,%eax | |
6209 + xorl %ebx,%esi | |
6210 + | |
6211 + # Round 9 | |
6212 + movl 40(%ebp),%edx | |
6213 + movl %esi,%ebx | |
6214 + xorl %edx,%edi | |
6215 + shrl $16,%ebx | |
6216 + movl %esi,%edx | |
6217 + movb %bh,%al | |
6218 + andl $255,%ebx | |
6219 + movb %dh,%cl | |
6220 + andl $255,%edx | |
6221 + movl 72(%ebp,%eax,4),%eax | |
6222 + movl 1096(%ebp,%ebx,4),%ebx | |
6223 + addl %eax,%ebx | |
6224 + movl 2120(%ebp,%ecx,4),%eax | |
6225 + xorl %eax,%ebx | |
6226 + movl 3144(%ebp,%edx,4),%edx | |
6227 + addl %edx,%ebx | |
6228 + xorl %eax,%eax | |
6229 + xorl %ebx,%edi | |
6230 + | |
6231 + # Round 10 | |
6232 + movl 44(%ebp),%edx | |
6233 + movl %edi,%ebx | |
6234 + xorl %edx,%esi | |
6235 + shrl $16,%ebx | |
6236 + movl %edi,%edx | |
6237 + movb %bh,%al | |
6238 + andl $255,%ebx | |
6239 + movb %dh,%cl | |
6240 + andl $255,%edx | |
6241 + movl 72(%ebp,%eax,4),%eax | |
6242 + movl 1096(%ebp,%ebx,4),%ebx | |
6243 + addl %eax,%ebx | |
6244 + movl 2120(%ebp,%ecx,4),%eax | |
6245 + xorl %eax,%ebx | |
6246 + movl 3144(%ebp,%edx,4),%edx | |
6247 + addl %edx,%ebx | |
6248 + xorl %eax,%eax | |
6249 + xorl %ebx,%esi | |
6250 + | |
6251 + # Round 11 | |
6252 + movl 48(%ebp),%edx | |
6253 + movl %esi,%ebx | |
6254 + xorl %edx,%edi | |
6255 + shrl $16,%ebx | |
6256 + movl %esi,%edx | |
6257 + movb %bh,%al | |
6258 + andl $255,%ebx | |
6259 + movb %dh,%cl | |
6260 + andl $255,%edx | |
6261 + movl 72(%ebp,%eax,4),%eax | |
6262 + movl 1096(%ebp,%ebx,4),%ebx | |
6263 + addl %eax,%ebx | |
6264 + movl 2120(%ebp,%ecx,4),%eax | |
6265 + xorl %eax,%ebx | |
6266 + movl 3144(%ebp,%edx,4),%edx | |
6267 + addl %edx,%ebx | |
6268 + xorl %eax,%eax | |
6269 + xorl %ebx,%edi | |
6270 + | |
6271 + # Round 12 | |
6272 + movl 52(%ebp),%edx | |
6273 + movl %edi,%ebx | |
6274 + xorl %edx,%esi | |
6275 + shrl $16,%ebx | |
6276 + movl %edi,%edx | |
6277 + movb %bh,%al | |
6278 + andl $255,%ebx | |
6279 + movb %dh,%cl | |
6280 + andl $255,%edx | |
6281 + movl 72(%ebp,%eax,4),%eax | |
6282 + movl 1096(%ebp,%ebx,4),%ebx | |
6283 + addl %eax,%ebx | |
6284 + movl 2120(%ebp,%ecx,4),%eax | |
6285 + xorl %eax,%ebx | |
6286 + movl 3144(%ebp,%edx,4),%edx | |
6287 + addl %edx,%ebx | |
6288 + xorl %eax,%eax | |
6289 + xorl %ebx,%esi | |
6290 + | |
6291 + # Round 13 | |
6292 + movl 56(%ebp),%edx | |
6293 + movl %esi,%ebx | |
6294 + xorl %edx,%edi | |
6295 + shrl $16,%ebx | |
6296 + movl %esi,%edx | |
6297 + movb %bh,%al | |
6298 + andl $255,%ebx | |
6299 + movb %dh,%cl | |
6300 + andl $255,%edx | |
6301 + movl 72(%ebp,%eax,4),%eax | |
6302 + movl 1096(%ebp,%ebx,4),%ebx | |
6303 + addl %eax,%ebx | |
6304 + movl 2120(%ebp,%ecx,4),%eax | |
6305 + xorl %eax,%ebx | |
6306 + movl 3144(%ebp,%edx,4),%edx | |
6307 + addl %edx,%ebx | |
6308 + xorl %eax,%eax | |
6309 + xorl %ebx,%edi | |
6310 + | |
6311 + # Round 14 | |
6312 + movl 60(%ebp),%edx | |
6313 + movl %edi,%ebx | |
6314 + xorl %edx,%esi | |
6315 + shrl $16,%ebx | |
6316 + movl %edi,%edx | |
6317 + movb %bh,%al | |
6318 + andl $255,%ebx | |
6319 + movb %dh,%cl | |
6320 + andl $255,%edx | |
6321 + movl 72(%ebp,%eax,4),%eax | |
6322 + movl 1096(%ebp,%ebx,4),%ebx | |
6323 + addl %eax,%ebx | |
6324 + movl 2120(%ebp,%ecx,4),%eax | |
6325 + xorl %eax,%ebx | |
6326 + movl 3144(%ebp,%edx,4),%edx | |
6327 + addl %edx,%ebx | |
6328 + xorl %eax,%eax | |
6329 + xorl %ebx,%esi | |
6330 + | |
6331 + # Round 15 | |
6332 + movl 64(%ebp),%edx | |
6333 + movl %esi,%ebx | |
6334 + xorl %edx,%edi | |
6335 + shrl $16,%ebx | |
6336 + movl %esi,%edx | |
6337 + movb %bh,%al | |
6338 + andl $255,%ebx | |
6339 + movb %dh,%cl | |
6340 + andl $255,%edx | |
6341 + movl 72(%ebp,%eax,4),%eax | |
6342 + movl 1096(%ebp,%ebx,4),%ebx | |
6343 + addl %eax,%ebx | |
6344 + movl 2120(%ebp,%ecx,4),%eax | |
6345 + xorl %eax,%ebx | |
6346 + movl 3144(%ebp,%edx,4),%edx | |
6347 + addl %edx,%ebx | |
6348 + # Load parameter 0 (16) enc=1 | |
6349 + movl 20(%esp),%eax | |
6350 + xorl %ebx,%edi | |
6351 + movl 68(%ebp),%edx | |
6352 + xorl %edx,%esi | |
6353 + movl %edi,4(%eax) | |
6354 + movl %esi,(%eax) | |
6355 + popl %edi | |
6356 + popl %esi | |
6357 + popl %ebx | |
6358 + popl %ebp | |
6359 + ret | |
6360 +.globl _BF_decrypt | |
6361 +.align 4 | |
6362 +_BF_decrypt: | |
6363 +L_BF_decrypt_begin: | |
6364 + | |
6365 + pushl %ebp | |
6366 + pushl %ebx | |
6367 + movl 12(%esp),%ebx | |
6368 + movl 16(%esp),%ebp | |
6369 + pushl %esi | |
6370 + pushl %edi | |
6371 + # Load the 2 words | |
6372 + movl (%ebx),%edi | |
6373 + movl 4(%ebx),%esi | |
6374 + xorl %eax,%eax | |
6375 + movl 68(%ebp),%ebx | |
6376 + xorl %ecx,%ecx | |
6377 + xorl %ebx,%edi | |
6378 + | |
6379 + # Round 16 | |
6380 + movl 64(%ebp),%edx | |
6381 + movl %edi,%ebx | |
6382 + xorl %edx,%esi | |
6383 + shrl $16,%ebx | |
6384 + movl %edi,%edx | |
6385 + movb %bh,%al | |
6386 + andl $255,%ebx | |
6387 + movb %dh,%cl | |
6388 + andl $255,%edx | |
6389 + movl 72(%ebp,%eax,4),%eax | |
6390 + movl 1096(%ebp,%ebx,4),%ebx | |
6391 + addl %eax,%ebx | |
6392 + movl 2120(%ebp,%ecx,4),%eax | |
6393 + xorl %eax,%ebx | |
6394 + movl 3144(%ebp,%edx,4),%edx | |
6395 + addl %edx,%ebx | |
6396 + xorl %eax,%eax | |
6397 + xorl %ebx,%esi | |
6398 + | |
6399 + # Round 15 | |
6400 + movl 60(%ebp),%edx | |
6401 + movl %esi,%ebx | |
6402 + xorl %edx,%edi | |
6403 + shrl $16,%ebx | |
6404 + movl %esi,%edx | |
6405 + movb %bh,%al | |
6406 + andl $255,%ebx | |
6407 + movb %dh,%cl | |
6408 + andl $255,%edx | |
6409 + movl 72(%ebp,%eax,4),%eax | |
6410 + movl 1096(%ebp,%ebx,4),%ebx | |
6411 + addl %eax,%ebx | |
6412 + movl 2120(%ebp,%ecx,4),%eax | |
6413 + xorl %eax,%ebx | |
6414 + movl 3144(%ebp,%edx,4),%edx | |
6415 + addl %edx,%ebx | |
6416 + xorl %eax,%eax | |
6417 + xorl %ebx,%edi | |
6418 + | |
6419 + # Round 14 | |
6420 + movl 56(%ebp),%edx | |
6421 + movl %edi,%ebx | |
6422 + xorl %edx,%esi | |
6423 + shrl $16,%ebx | |
6424 + movl %edi,%edx | |
6425 + movb %bh,%al | |
6426 + andl $255,%ebx | |
6427 + movb %dh,%cl | |
6428 + andl $255,%edx | |
6429 + movl 72(%ebp,%eax,4),%eax | |
6430 + movl 1096(%ebp,%ebx,4),%ebx | |
6431 + addl %eax,%ebx | |
6432 + movl 2120(%ebp,%ecx,4),%eax | |
6433 + xorl %eax,%ebx | |
6434 + movl 3144(%ebp,%edx,4),%edx | |
6435 + addl %edx,%ebx | |
6436 + xorl %eax,%eax | |
6437 + xorl %ebx,%esi | |
6438 + | |
6439 + # Round 13 | |
6440 + movl 52(%ebp),%edx | |
6441 + movl %esi,%ebx | |
6442 + xorl %edx,%edi | |
6443 + shrl $16,%ebx | |
6444 + movl %esi,%edx | |
6445 + movb %bh,%al | |
6446 + andl $255,%ebx | |
6447 + movb %dh,%cl | |
6448 + andl $255,%edx | |
6449 + movl 72(%ebp,%eax,4),%eax | |
6450 + movl 1096(%ebp,%ebx,4),%ebx | |
6451 + addl %eax,%ebx | |
6452 + movl 2120(%ebp,%ecx,4),%eax | |
6453 + xorl %eax,%ebx | |
6454 + movl 3144(%ebp,%edx,4),%edx | |
6455 + addl %edx,%ebx | |
6456 + xorl %eax,%eax | |
6457 + xorl %ebx,%edi | |
6458 + | |
6459 + # Round 12 | |
6460 + movl 48(%ebp),%edx | |
6461 + movl %edi,%ebx | |
6462 + xorl %edx,%esi | |
6463 + shrl $16,%ebx | |
6464 + movl %edi,%edx | |
6465 + movb %bh,%al | |
6466 + andl $255,%ebx | |
6467 + movb %dh,%cl | |
6468 + andl $255,%edx | |
6469 + movl 72(%ebp,%eax,4),%eax | |
6470 + movl 1096(%ebp,%ebx,4),%ebx | |
6471 + addl %eax,%ebx | |
6472 + movl 2120(%ebp,%ecx,4),%eax | |
6473 + xorl %eax,%ebx | |
6474 + movl 3144(%ebp,%edx,4),%edx | |
6475 + addl %edx,%ebx | |
6476 + xorl %eax,%eax | |
6477 + xorl %ebx,%esi | |
6478 + | |
6479 + # Round 11 | |
6480 + movl 44(%ebp),%edx | |
6481 + movl %esi,%ebx | |
6482 + xorl %edx,%edi | |
6483 + shrl $16,%ebx | |
6484 + movl %esi,%edx | |
6485 + movb %bh,%al | |
6486 + andl $255,%ebx | |
6487 + movb %dh,%cl | |
6488 + andl $255,%edx | |
6489 + movl 72(%ebp,%eax,4),%eax | |
6490 + movl 1096(%ebp,%ebx,4),%ebx | |
6491 + addl %eax,%ebx | |
6492 + movl 2120(%ebp,%ecx,4),%eax | |
6493 + xorl %eax,%ebx | |
6494 + movl 3144(%ebp,%edx,4),%edx | |
6495 + addl %edx,%ebx | |
6496 + xorl %eax,%eax | |
6497 + xorl %ebx,%edi | |
6498 + | |
6499 + # Round 10 | |
6500 + movl 40(%ebp),%edx | |
6501 + movl %edi,%ebx | |
6502 + xorl %edx,%esi | |
6503 + shrl $16,%ebx | |
6504 + movl %edi,%edx | |
6505 + movb %bh,%al | |
6506 + andl $255,%ebx | |
6507 + movb %dh,%cl | |
6508 + andl $255,%edx | |
6509 + movl 72(%ebp,%eax,4),%eax | |
6510 + movl 1096(%ebp,%ebx,4),%ebx | |
6511 + addl %eax,%ebx | |
6512 + movl 2120(%ebp,%ecx,4),%eax | |
6513 + xorl %eax,%ebx | |
6514 + movl 3144(%ebp,%edx,4),%edx | |
6515 + addl %edx,%ebx | |
6516 + xorl %eax,%eax | |
6517 + xorl %ebx,%esi | |
6518 + | |
6519 + # Round 9 | |
6520 + movl 36(%ebp),%edx | |
6521 + movl %esi,%ebx | |
6522 + xorl %edx,%edi | |
6523 + shrl $16,%ebx | |
6524 + movl %esi,%edx | |
6525 + movb %bh,%al | |
6526 + andl $255,%ebx | |
6527 + movb %dh,%cl | |
6528 + andl $255,%edx | |
6529 + movl 72(%ebp,%eax,4),%eax | |
6530 + movl 1096(%ebp,%ebx,4),%ebx | |
6531 + addl %eax,%ebx | |
6532 + movl 2120(%ebp,%ecx,4),%eax | |
6533 + xorl %eax,%ebx | |
6534 + movl 3144(%ebp,%edx,4),%edx | |
6535 + addl %edx,%ebx | |
6536 + xorl %eax,%eax | |
6537 + xorl %ebx,%edi | |
6538 + | |
6539 + # Round 8 | |
6540 + movl 32(%ebp),%edx | |
6541 + movl %edi,%ebx | |
6542 + xorl %edx,%esi | |
6543 + shrl $16,%ebx | |
6544 + movl %edi,%edx | |
6545 + movb %bh,%al | |
6546 + andl $255,%ebx | |
6547 + movb %dh,%cl | |
6548 + andl $255,%edx | |
6549 + movl 72(%ebp,%eax,4),%eax | |
6550 + movl 1096(%ebp,%ebx,4),%ebx | |
6551 + addl %eax,%ebx | |
6552 + movl 2120(%ebp,%ecx,4),%eax | |
6553 + xorl %eax,%ebx | |
6554 + movl 3144(%ebp,%edx,4),%edx | |
6555 + addl %edx,%ebx | |
6556 + xorl %eax,%eax | |
6557 + xorl %ebx,%esi | |
6558 + | |
6559 + # Round 7 | |
6560 + movl 28(%ebp),%edx | |
6561 + movl %esi,%ebx | |
6562 + xorl %edx,%edi | |
6563 + shrl $16,%ebx | |
6564 + movl %esi,%edx | |
6565 + movb %bh,%al | |
6566 + andl $255,%ebx | |
6567 + movb %dh,%cl | |
6568 + andl $255,%edx | |
6569 + movl 72(%ebp,%eax,4),%eax | |
6570 + movl 1096(%ebp,%ebx,4),%ebx | |
6571 + addl %eax,%ebx | |
6572 + movl 2120(%ebp,%ecx,4),%eax | |
6573 + xorl %eax,%ebx | |
6574 + movl 3144(%ebp,%edx,4),%edx | |
6575 + addl %edx,%ebx | |
6576 + xorl %eax,%eax | |
6577 + xorl %ebx,%edi | |
6578 + | |
6579 + # Round 6 | |
6580 + movl 24(%ebp),%edx | |
6581 + movl %edi,%ebx | |
6582 + xorl %edx,%esi | |
6583 + shrl $16,%ebx | |
6584 + movl %edi,%edx | |
6585 + movb %bh,%al | |
6586 + andl $255,%ebx | |
6587 + movb %dh,%cl | |
6588 + andl $255,%edx | |
6589 + movl 72(%ebp,%eax,4),%eax | |
6590 + movl 1096(%ebp,%ebx,4),%ebx | |
6591 + addl %eax,%ebx | |
6592 + movl 2120(%ebp,%ecx,4),%eax | |
6593 + xorl %eax,%ebx | |
6594 + movl 3144(%ebp,%edx,4),%edx | |
6595 + addl %edx,%ebx | |
6596 + xorl %eax,%eax | |
6597 + xorl %ebx,%esi | |
6598 + | |
6599 + # Round 5 | |
6600 + movl 20(%ebp),%edx | |
6601 + movl %esi,%ebx | |
6602 + xorl %edx,%edi | |
6603 + shrl $16,%ebx | |
6604 + movl %esi,%edx | |
6605 + movb %bh,%al | |
6606 + andl $255,%ebx | |
6607 + movb %dh,%cl | |
6608 + andl $255,%edx | |
6609 + movl 72(%ebp,%eax,4),%eax | |
6610 + movl 1096(%ebp,%ebx,4),%ebx | |
6611 + addl %eax,%ebx | |
6612 + movl 2120(%ebp,%ecx,4),%eax | |
6613 + xorl %eax,%ebx | |
6614 + movl 3144(%ebp,%edx,4),%edx | |
6615 + addl %edx,%ebx | |
6616 + xorl %eax,%eax | |
6617 + xorl %ebx,%edi | |
6618 + | |
6619 + # Round 4 | |
6620 + movl 16(%ebp),%edx | |
6621 + movl %edi,%ebx | |
6622 + xorl %edx,%esi | |
6623 + shrl $16,%ebx | |
6624 + movl %edi,%edx | |
6625 + movb %bh,%al | |
6626 + andl $255,%ebx | |
6627 + movb %dh,%cl | |
6628 + andl $255,%edx | |
6629 + movl 72(%ebp,%eax,4),%eax | |
6630 + movl 1096(%ebp,%ebx,4),%ebx | |
6631 + addl %eax,%ebx | |
6632 + movl 2120(%ebp,%ecx,4),%eax | |
6633 + xorl %eax,%ebx | |
6634 + movl 3144(%ebp,%edx,4),%edx | |
6635 + addl %edx,%ebx | |
6636 + xorl %eax,%eax | |
6637 + xorl %ebx,%esi | |
6638 + | |
6639 + # Round 3 | |
6640 + movl 12(%ebp),%edx | |
6641 + movl %esi,%ebx | |
6642 + xorl %edx,%edi | |
6643 + shrl $16,%ebx | |
6644 + movl %esi,%edx | |
6645 + movb %bh,%al | |
6646 + andl $255,%ebx | |
6647 + movb %dh,%cl | |
6648 + andl $255,%edx | |
6649 + movl 72(%ebp,%eax,4),%eax | |
6650 + movl 1096(%ebp,%ebx,4),%ebx | |
6651 + addl %eax,%ebx | |
6652 + movl 2120(%ebp,%ecx,4),%eax | |
6653 + xorl %eax,%ebx | |
6654 + movl 3144(%ebp,%edx,4),%edx | |
6655 + addl %edx,%ebx | |
6656 + xorl %eax,%eax | |
6657 + xorl %ebx,%edi | |
6658 + | |
6659 + # Round 2 | |
6660 + movl 8(%ebp),%edx | |
6661 + movl %edi,%ebx | |
6662 + xorl %edx,%esi | |
6663 + shrl $16,%ebx | |
6664 + movl %edi,%edx | |
6665 + movb %bh,%al | |
6666 + andl $255,%ebx | |
6667 + movb %dh,%cl | |
6668 + andl $255,%edx | |
6669 + movl 72(%ebp,%eax,4),%eax | |
6670 + movl 1096(%ebp,%ebx,4),%ebx | |
6671 + addl %eax,%ebx | |
6672 + movl 2120(%ebp,%ecx,4),%eax | |
6673 + xorl %eax,%ebx | |
6674 + movl 3144(%ebp,%edx,4),%edx | |
6675 + addl %edx,%ebx | |
6676 + xorl %eax,%eax | |
6677 + xorl %ebx,%esi | |
6678 + | |
6679 + # Round 1 | |
6680 + movl 4(%ebp),%edx | |
6681 + movl %esi,%ebx | |
6682 + xorl %edx,%edi | |
6683 + shrl $16,%ebx | |
6684 + movl %esi,%edx | |
6685 + movb %bh,%al | |
6686 + andl $255,%ebx | |
6687 + movb %dh,%cl | |
6688 + andl $255,%edx | |
6689 + movl 72(%ebp,%eax,4),%eax | |
6690 + movl 1096(%ebp,%ebx,4),%ebx | |
6691 + addl %eax,%ebx | |
6692 + movl 2120(%ebp,%ecx,4),%eax | |
6693 + xorl %eax,%ebx | |
6694 + movl 3144(%ebp,%edx,4),%edx | |
6695 + addl %edx,%ebx | |
6696 + # Load parameter 0 (1) enc=0 | |
6697 + movl 20(%esp),%eax | |
6698 + xorl %ebx,%edi | |
6699 + movl (%ebp),%edx | |
6700 + xorl %edx,%esi | |
6701 + movl %edi,4(%eax) | |
6702 + movl %esi,(%eax) | |
6703 + popl %edi | |
6704 + popl %esi | |
6705 + popl %ebx | |
6706 + popl %ebp | |
6707 + ret | |
6708 +.globl _BF_cbc_encrypt | |
6709 +.align 4 | |
6710 +_BF_cbc_encrypt: | |
6711 +L_BF_cbc_encrypt_begin: | |
6712 + | |
6713 + pushl %ebp | |
6714 + pushl %ebx | |
6715 + pushl %esi | |
6716 + pushl %edi | |
6717 + movl 28(%esp),%ebp | |
6718 + # getting iv ptr from parameter 4 | |
6719 + movl 36(%esp),%ebx | |
6720 + movl (%ebx),%esi | |
6721 + movl 4(%ebx),%edi | |
6722 + pushl %edi | |
6723 + pushl %esi | |
6724 + pushl %edi | |
6725 + pushl %esi | |
6726 + movl %esp,%ebx | |
6727 + movl 36(%esp),%esi | |
6728 + movl 40(%esp),%edi | |
6729 + # getting encrypt flag from parameter 5 | |
6730 + movl 56(%esp),%ecx | |
6731 + # get and push parameter 3 | |
6732 + movl 48(%esp),%eax | |
6733 + pushl %eax | |
6734 + pushl %ebx | |
6735 + cmpl $0,%ecx | |
6736 + jz L000decrypt | |
6737 + andl $4294967288,%ebp | |
6738 + movl 8(%esp),%eax | |
6739 + movl 12(%esp),%ebx | |
6740 + jz L001encrypt_finish | |
6741 +L002encrypt_loop: | |
6742 + movl (%esi),%ecx | |
6743 + movl 4(%esi),%edx | |
6744 + xorl %ecx,%eax | |
6745 + xorl %edx,%ebx | |
6746 + bswap %eax | |
6747 + bswap %ebx | |
6748 + movl %eax,8(%esp) | |
6749 + movl %ebx,12(%esp) | |
6750 + call L_BF_encrypt_begin | |
6751 + movl 8(%esp),%eax | |
6752 + movl 12(%esp),%ebx | |
6753 + bswap %eax | |
6754 + bswap %ebx | |
6755 + movl %eax,(%edi) | |
6756 + movl %ebx,4(%edi) | |
6757 + addl $8,%esi | |
6758 + addl $8,%edi | |
6759 + subl $8,%ebp | |
6760 + jnz L002encrypt_loop | |
6761 +L001encrypt_finish: | |
6762 + movl 52(%esp),%ebp | |
6763 + andl $7,%ebp | |
6764 + jz L003finish | |
6765 + call L004PIC_point | |
6766 +L004PIC_point: | |
6767 + popl %edx | |
6768 + leal L005cbc_enc_jmp_table-L004PIC_point(%edx),%ecx | |
6769 + movl (%ecx,%ebp,4),%ebp | |
6770 + addl %edx,%ebp | |
6771 + xorl %ecx,%ecx | |
6772 + xorl %edx,%edx | |
6773 + jmp *%ebp | |
6774 +L006ej7: | |
6775 + movb 6(%esi),%dh | |
6776 + shll $8,%edx | |
6777 +L007ej6: | |
6778 + movb 5(%esi),%dh | |
6779 +L008ej5: | |
6780 + movb 4(%esi),%dl | |
6781 +L009ej4: | |
6782 + movl (%esi),%ecx | |
6783 + jmp L010ejend | |
6784 +L011ej3: | |
6785 + movb 2(%esi),%ch | |
6786 + shll $8,%ecx | |
6787 +L012ej2: | |
6788 + movb 1(%esi),%ch | |
6789 +L013ej1: | |
6790 + movb (%esi),%cl | |
6791 +L010ejend: | |
6792 + xorl %ecx,%eax | |
6793 + xorl %edx,%ebx | |
6794 + bswap %eax | |
6795 + bswap %ebx | |
6796 + movl %eax,8(%esp) | |
6797 + movl %ebx,12(%esp) | |
6798 + call L_BF_encrypt_begin | |
6799 + movl 8(%esp),%eax | |
6800 + movl 12(%esp),%ebx | |
6801 + bswap %eax | |
6802 + bswap %ebx | |
6803 + movl %eax,(%edi) | |
6804 + movl %ebx,4(%edi) | |
6805 + jmp L003finish | |
6806 +L000decrypt: | |
6807 + andl $4294967288,%ebp | |
6808 + movl 16(%esp),%eax | |
6809 + movl 20(%esp),%ebx | |
6810 + jz L014decrypt_finish | |
6811 +L015decrypt_loop: | |
6812 + movl (%esi),%eax | |
6813 + movl 4(%esi),%ebx | |
6814 + bswap %eax | |
6815 + bswap %ebx | |
6816 + movl %eax,8(%esp) | |
6817 + movl %ebx,12(%esp) | |
6818 + call L_BF_decrypt_begin | |
6819 + movl 8(%esp),%eax | |
6820 + movl 12(%esp),%ebx | |
6821 + bswap %eax | |
6822 + bswap %ebx | |
6823 + movl 16(%esp),%ecx | |
6824 + movl 20(%esp),%edx | |
6825 + xorl %eax,%ecx | |
6826 + xorl %ebx,%edx | |
6827 + movl (%esi),%eax | |
6828 + movl 4(%esi),%ebx | |
6829 + movl %ecx,(%edi) | |
6830 + movl %edx,4(%edi) | |
6831 + movl %eax,16(%esp) | |
6832 + movl %ebx,20(%esp) | |
6833 + addl $8,%esi | |
6834 + addl $8,%edi | |
6835 + subl $8,%ebp | |
6836 + jnz L015decrypt_loop | |
6837 +L014decrypt_finish: | |
6838 + movl 52(%esp),%ebp | |
6839 + andl $7,%ebp | |
6840 + jz L003finish | |
6841 + movl (%esi),%eax | |
6842 + movl 4(%esi),%ebx | |
6843 + bswap %eax | |
6844 + bswap %ebx | |
6845 + movl %eax,8(%esp) | |
6846 + movl %ebx,12(%esp) | |
6847 + call L_BF_decrypt_begin | |
6848 + movl 8(%esp),%eax | |
6849 + movl 12(%esp),%ebx | |
6850 + bswap %eax | |
6851 + bswap %ebx | |
6852 + movl 16(%esp),%ecx | |
6853 + movl 20(%esp),%edx | |
6854 + xorl %eax,%ecx | |
6855 + xorl %ebx,%edx | |
6856 + movl (%esi),%eax | |
6857 + movl 4(%esi),%ebx | |
6858 +L016dj7: | |
6859 + rorl $16,%edx | |
6860 + movb %dl,6(%edi) | |
6861 + shrl $16,%edx | |
6862 +L017dj6: | |
6863 + movb %dh,5(%edi) | |
6864 +L018dj5: | |
6865 + movb %dl,4(%edi) | |
6866 +L019dj4: | |
6867 + movl %ecx,(%edi) | |
6868 + jmp L020djend | |
6869 +L021dj3: | |
6870 + rorl $16,%ecx | |
6871 + movb %cl,2(%edi) | |
6872 + shll $16,%ecx | |
6873 +L022dj2: | |
6874 + movb %ch,1(%esi) | |
6875 +L023dj1: | |
6876 + movb %cl,(%esi) | |
6877 +L020djend: | |
6878 + jmp L003finish | |
6879 +L003finish: | |
6880 + movl 60(%esp),%ecx | |
6881 + addl $24,%esp | |
6882 + movl %eax,(%ecx) | |
6883 + movl %ebx,4(%ecx) | |
6884 + popl %edi | |
6885 + popl %esi | |
6886 + popl %ebx | |
6887 + popl %ebp | |
6888 + ret | |
6889 +.align 6,0x90 | |
6890 +L005cbc_enc_jmp_table: | |
6891 +.long 0 | |
6892 +.long L013ej1-L004PIC_point | |
6893 +.long L012ej2-L004PIC_point | |
6894 +.long L011ej3-L004PIC_point | |
6895 +.long L009ej4-L004PIC_point | |
6896 +.long L008ej5-L004PIC_point | |
6897 +.long L007ej6-L004PIC_point | |
6898 +.long L006ej7-L004PIC_point | |
6899 +.align 6,0x90 | |
6900 diff --git a/crypto/bn/asm/bn-586-mac.S b/crypto/bn/asm/bn-586-mac.S | |
6901 new file mode 100644 | |
6902 index 0000000..05a81aa | |
6903 --- /dev/null | |
6904 +++ b/crypto/bn/asm/bn-586-mac.S | |
6905 @@ -0,0 +1,1370 @@ | |
6906 +.file "crypto/bn/asm/bn-586.s" | |
6907 +.text | |
6908 +.globl _bn_mul_add_words | |
6909 +.align 4 | |
6910 +_bn_mul_add_words: | |
6911 +L_bn_mul_add_words_begin: | |
6912 + pushl %ebp | |
6913 + pushl %ebx | |
6914 + pushl %esi | |
6915 + pushl %edi | |
6916 + | |
6917 + xorl %esi,%esi | |
6918 + movl 20(%esp),%edi | |
6919 + movl 28(%esp),%ecx | |
6920 + movl 24(%esp),%ebx | |
6921 + andl $4294967288,%ecx | |
6922 + movl 32(%esp),%ebp | |
6923 + pushl %ecx | |
6924 + jz L000maw_finish | |
6925 +.align 4,0x90 | |
6926 +L001maw_loop: | |
6927 + # Round 0 | |
6928 + movl (%ebx),%eax | |
6929 + mull %ebp | |
6930 + addl %esi,%eax | |
6931 + adcl $0,%edx | |
6932 + addl (%edi),%eax | |
6933 + adcl $0,%edx | |
6934 + movl %eax,(%edi) | |
6935 + movl %edx,%esi | |
6936 + # Round 4 | |
6937 + movl 4(%ebx),%eax | |
6938 + mull %ebp | |
6939 + addl %esi,%eax | |
6940 + adcl $0,%edx | |
6941 + addl 4(%edi),%eax | |
6942 + adcl $0,%edx | |
6943 + movl %eax,4(%edi) | |
6944 + movl %edx,%esi | |
6945 + # Round 8 | |
6946 + movl 8(%ebx),%eax | |
6947 + mull %ebp | |
6948 + addl %esi,%eax | |
6949 + adcl $0,%edx | |
6950 + addl 8(%edi),%eax | |
6951 + adcl $0,%edx | |
6952 + movl %eax,8(%edi) | |
6953 + movl %edx,%esi | |
6954 + # Round 12 | |
6955 + movl 12(%ebx),%eax | |
6956 + mull %ebp | |
6957 + addl %esi,%eax | |
6958 + adcl $0,%edx | |
6959 + addl 12(%edi),%eax | |
6960 + adcl $0,%edx | |
6961 + movl %eax,12(%edi) | |
6962 + movl %edx,%esi | |
6963 + # Round 16 | |
6964 + movl 16(%ebx),%eax | |
6965 + mull %ebp | |
6966 + addl %esi,%eax | |
6967 + adcl $0,%edx | |
6968 + addl 16(%edi),%eax | |
6969 + adcl $0,%edx | |
6970 + movl %eax,16(%edi) | |
6971 + movl %edx,%esi | |
6972 + # Round 20 | |
6973 + movl 20(%ebx),%eax | |
6974 + mull %ebp | |
6975 + addl %esi,%eax | |
6976 + adcl $0,%edx | |
6977 + addl 20(%edi),%eax | |
6978 + adcl $0,%edx | |
6979 + movl %eax,20(%edi) | |
6980 + movl %edx,%esi | |
6981 + # Round 24 | |
6982 + movl 24(%ebx),%eax | |
6983 + mull %ebp | |
6984 + addl %esi,%eax | |
6985 + adcl $0,%edx | |
6986 + addl 24(%edi),%eax | |
6987 + adcl $0,%edx | |
6988 + movl %eax,24(%edi) | |
6989 + movl %edx,%esi | |
6990 + # Round 28 | |
6991 + movl 28(%ebx),%eax | |
6992 + mull %ebp | |
6993 + addl %esi,%eax | |
6994 + adcl $0,%edx | |
6995 + addl 28(%edi),%eax | |
6996 + adcl $0,%edx | |
6997 + movl %eax,28(%edi) | |
6998 + movl %edx,%esi | |
6999 + | |
7000 + subl $8,%ecx | |
7001 + leal 32(%ebx),%ebx | |
7002 + leal 32(%edi),%edi | |
7003 + jnz L001maw_loop | |
7004 +L000maw_finish: | |
7005 + movl 32(%esp),%ecx | |
7006 + andl $7,%ecx | |
7007 + jnz L002maw_finish2 | |
7008 + jmp L003maw_end | |
7009 +L002maw_finish2: | |
7010 + # Tail Round 0 | |
7011 + movl (%ebx),%eax | |
7012 + mull %ebp | |
7013 + addl %esi,%eax | |
7014 + adcl $0,%edx | |
7015 + addl (%edi),%eax | |
7016 + adcl $0,%edx | |
7017 + decl %ecx | |
7018 + movl %eax,(%edi) | |
7019 + movl %edx,%esi | |
7020 + jz L003maw_end | |
7021 + # Tail Round 1 | |
7022 + movl 4(%ebx),%eax | |
7023 + mull %ebp | |
7024 + addl %esi,%eax | |
7025 + adcl $0,%edx | |
7026 + addl 4(%edi),%eax | |
7027 + adcl $0,%edx | |
7028 + decl %ecx | |
7029 + movl %eax,4(%edi) | |
7030 + movl %edx,%esi | |
7031 + jz L003maw_end | |
7032 + # Tail Round 2 | |
7033 + movl 8(%ebx),%eax | |
7034 + mull %ebp | |
7035 + addl %esi,%eax | |
7036 + adcl $0,%edx | |
7037 + addl 8(%edi),%eax | |
7038 + adcl $0,%edx | |
7039 + decl %ecx | |
7040 + movl %eax,8(%edi) | |
7041 + movl %edx,%esi | |
7042 + jz L003maw_end | |
7043 + # Tail Round 3 | |
7044 + movl 12(%ebx),%eax | |
7045 + mull %ebp | |
7046 + addl %esi,%eax | |
7047 + adcl $0,%edx | |
7048 + addl 12(%edi),%eax | |
7049 + adcl $0,%edx | |
7050 + decl %ecx | |
7051 + movl %eax,12(%edi) | |
7052 + movl %edx,%esi | |
7053 + jz L003maw_end | |
7054 + # Tail Round 4 | |
7055 + movl 16(%ebx),%eax | |
7056 + mull %ebp | |
7057 + addl %esi,%eax | |
7058 + adcl $0,%edx | |
7059 + addl 16(%edi),%eax | |
7060 + adcl $0,%edx | |
7061 + decl %ecx | |
7062 + movl %eax,16(%edi) | |
7063 + movl %edx,%esi | |
7064 + jz L003maw_end | |
7065 + # Tail Round 5 | |
7066 + movl 20(%ebx),%eax | |
7067 + mull %ebp | |
7068 + addl %esi,%eax | |
7069 + adcl $0,%edx | |
7070 + addl 20(%edi),%eax | |
7071 + adcl $0,%edx | |
7072 + decl %ecx | |
7073 + movl %eax,20(%edi) | |
7074 + movl %edx,%esi | |
7075 + jz L003maw_end | |
7076 + # Tail Round 6 | |
7077 + movl 24(%ebx),%eax | |
7078 + mull %ebp | |
7079 + addl %esi,%eax | |
7080 + adcl $0,%edx | |
7081 + addl 24(%edi),%eax | |
7082 + adcl $0,%edx | |
7083 + movl %eax,24(%edi) | |
7084 + movl %edx,%esi | |
7085 +L003maw_end: | |
7086 + movl %esi,%eax | |
7087 + popl %ecx | |
7088 + popl %edi | |
7089 + popl %esi | |
7090 + popl %ebx | |
7091 + popl %ebp | |
7092 + ret | |
7093 +.globl _bn_mul_words | |
7094 +.align 4 | |
7095 +_bn_mul_words: | |
7096 +L_bn_mul_words_begin: | |
7097 + pushl %ebp | |
7098 + pushl %ebx | |
7099 + pushl %esi | |
7100 + pushl %edi | |
7101 + | |
7102 + xorl %esi,%esi | |
7103 + movl 20(%esp),%edi | |
7104 + movl 24(%esp),%ebx | |
7105 + movl 28(%esp),%ebp | |
7106 + movl 32(%esp),%ecx | |
7107 + andl $4294967288,%ebp | |
7108 + jz L004mw_finish | |
7109 +L005mw_loop: | |
7110 + # Round 0 | |
7111 + movl (%ebx),%eax | |
7112 + mull %ecx | |
7113 + addl %esi,%eax | |
7114 + adcl $0,%edx | |
7115 + movl %eax,(%edi) | |
7116 + movl %edx,%esi | |
7117 + # Round 4 | |
7118 + movl 4(%ebx),%eax | |
7119 + mull %ecx | |
7120 + addl %esi,%eax | |
7121 + adcl $0,%edx | |
7122 + movl %eax,4(%edi) | |
7123 + movl %edx,%esi | |
7124 + # Round 8 | |
7125 + movl 8(%ebx),%eax | |
7126 + mull %ecx | |
7127 + addl %esi,%eax | |
7128 + adcl $0,%edx | |
7129 + movl %eax,8(%edi) | |
7130 + movl %edx,%esi | |
7131 + # Round 12 | |
7132 + movl 12(%ebx),%eax | |
7133 + mull %ecx | |
7134 + addl %esi,%eax | |
7135 + adcl $0,%edx | |
7136 + movl %eax,12(%edi) | |
7137 + movl %edx,%esi | |
7138 + # Round 16 | |
7139 + movl 16(%ebx),%eax | |
7140 + mull %ecx | |
7141 + addl %esi,%eax | |
7142 + adcl $0,%edx | |
7143 + movl %eax,16(%edi) | |
7144 + movl %edx,%esi | |
7145 + # Round 20 | |
7146 + movl 20(%ebx),%eax | |
7147 + mull %ecx | |
7148 + addl %esi,%eax | |
7149 + adcl $0,%edx | |
7150 + movl %eax,20(%edi) | |
7151 + movl %edx,%esi | |
7152 + # Round 24 | |
7153 + movl 24(%ebx),%eax | |
7154 + mull %ecx | |
7155 + addl %esi,%eax | |
7156 + adcl $0,%edx | |
7157 + movl %eax,24(%edi) | |
7158 + movl %edx,%esi | |
7159 + # Round 28 | |
7160 + movl 28(%ebx),%eax | |
7161 + mull %ecx | |
7162 + addl %esi,%eax | |
7163 + adcl $0,%edx | |
7164 + movl %eax,28(%edi) | |
7165 + movl %edx,%esi | |
7166 + | |
7167 + addl $32,%ebx | |
7168 + addl $32,%edi | |
7169 + subl $8,%ebp | |
7170 + jz L004mw_finish | |
7171 + jmp L005mw_loop | |
7172 +L004mw_finish: | |
7173 + movl 28(%esp),%ebp | |
7174 + andl $7,%ebp | |
7175 + jnz L006mw_finish2 | |
7176 + jmp L007mw_end | |
7177 +L006mw_finish2: | |
7178 + # Tail Round 0 | |
7179 + movl (%ebx),%eax | |
7180 + mull %ecx | |
7181 + addl %esi,%eax | |
7182 + adcl $0,%edx | |
7183 + movl %eax,(%edi) | |
7184 + movl %edx,%esi | |
7185 + decl %ebp | |
7186 + jz L007mw_end | |
7187 + # Tail Round 1 | |
7188 + movl 4(%ebx),%eax | |
7189 + mull %ecx | |
7190 + addl %esi,%eax | |
7191 + adcl $0,%edx | |
7192 + movl %eax,4(%edi) | |
7193 + movl %edx,%esi | |
7194 + decl %ebp | |
7195 + jz L007mw_end | |
7196 + # Tail Round 2 | |
7197 + movl 8(%ebx),%eax | |
7198 + mull %ecx | |
7199 + addl %esi,%eax | |
7200 + adcl $0,%edx | |
7201 + movl %eax,8(%edi) | |
7202 + movl %edx,%esi | |
7203 + decl %ebp | |
7204 + jz L007mw_end | |
7205 + # Tail Round 3 | |
7206 + movl 12(%ebx),%eax | |
7207 + mull %ecx | |
7208 + addl %esi,%eax | |
7209 + adcl $0,%edx | |
7210 + movl %eax,12(%edi) | |
7211 + movl %edx,%esi | |
7212 + decl %ebp | |
7213 + jz L007mw_end | |
7214 + # Tail Round 4 | |
7215 + movl 16(%ebx),%eax | |
7216 + mull %ecx | |
7217 + addl %esi,%eax | |
7218 + adcl $0,%edx | |
7219 + movl %eax,16(%edi) | |
7220 + movl %edx,%esi | |
7221 + decl %ebp | |
7222 + jz L007mw_end | |
7223 + # Tail Round 5 | |
7224 + movl 20(%ebx),%eax | |
7225 + mull %ecx | |
7226 + addl %esi,%eax | |
7227 + adcl $0,%edx | |
7228 + movl %eax,20(%edi) | |
7229 + movl %edx,%esi | |
7230 + decl %ebp | |
7231 + jz L007mw_end | |
7232 + # Tail Round 6 | |
7233 + movl 24(%ebx),%eax | |
7234 + mull %ecx | |
7235 + addl %esi,%eax | |
7236 + adcl $0,%edx | |
7237 + movl %eax,24(%edi) | |
7238 + movl %edx,%esi | |
7239 +L007mw_end: | |
7240 + movl %esi,%eax | |
7241 + popl %edi | |
7242 + popl %esi | |
7243 + popl %ebx | |
7244 + popl %ebp | |
7245 + ret | |
7246 +.globl _bn_sqr_words | |
7247 +.align 4 | |
7248 +_bn_sqr_words: | |
7249 +L_bn_sqr_words_begin: | |
7250 + pushl %ebp | |
7251 + pushl %ebx | |
7252 + pushl %esi | |
7253 + pushl %edi | |
7254 + | |
7255 + movl 20(%esp),%esi | |
7256 + movl 24(%esp),%edi | |
7257 + movl 28(%esp),%ebx | |
7258 + andl $4294967288,%ebx | |
7259 + jz L008sw_finish | |
7260 +L009sw_loop: | |
7261 + # Round 0 | |
7262 + movl (%edi),%eax | |
7263 + mull %eax | |
7264 + movl %eax,(%esi) | |
7265 + movl %edx,4(%esi) | |
7266 + # Round 4 | |
7267 + movl 4(%edi),%eax | |
7268 + mull %eax | |
7269 + movl %eax,8(%esi) | |
7270 + movl %edx,12(%esi) | |
7271 + # Round 8 | |
7272 + movl 8(%edi),%eax | |
7273 + mull %eax | |
7274 + movl %eax,16(%esi) | |
7275 + movl %edx,20(%esi) | |
7276 + # Round 12 | |
7277 + movl 12(%edi),%eax | |
7278 + mull %eax | |
7279 + movl %eax,24(%esi) | |
7280 + movl %edx,28(%esi) | |
7281 + # Round 16 | |
7282 + movl 16(%edi),%eax | |
7283 + mull %eax | |
7284 + movl %eax,32(%esi) | |
7285 + movl %edx,36(%esi) | |
7286 + # Round 20 | |
7287 + movl 20(%edi),%eax | |
7288 + mull %eax | |
7289 + movl %eax,40(%esi) | |
7290 + movl %edx,44(%esi) | |
7291 + # Round 24 | |
7292 + movl 24(%edi),%eax | |
7293 + mull %eax | |
7294 + movl %eax,48(%esi) | |
7295 + movl %edx,52(%esi) | |
7296 + # Round 28 | |
7297 + movl 28(%edi),%eax | |
7298 + mull %eax | |
7299 + movl %eax,56(%esi) | |
7300 + movl %edx,60(%esi) | |
7301 + | |
7302 + addl $32,%edi | |
7303 + addl $64,%esi | |
7304 + subl $8,%ebx | |
7305 + jnz L009sw_loop | |
7306 +L008sw_finish: | |
7307 + movl 28(%esp),%ebx | |
7308 + andl $7,%ebx | |
7309 + jz L010sw_end | |
7310 + # Tail Round 0 | |
7311 + movl (%edi),%eax | |
7312 + mull %eax | |
7313 + movl %eax,(%esi) | |
7314 + decl %ebx | |
7315 + movl %edx,4(%esi) | |
7316 + jz L010sw_end | |
7317 + # Tail Round 1 | |
7318 + movl 4(%edi),%eax | |
7319 + mull %eax | |
7320 + movl %eax,8(%esi) | |
7321 + decl %ebx | |
7322 + movl %edx,12(%esi) | |
7323 + jz L010sw_end | |
7324 + # Tail Round 2 | |
7325 + movl 8(%edi),%eax | |
7326 + mull %eax | |
7327 + movl %eax,16(%esi) | |
7328 + decl %ebx | |
7329 + movl %edx,20(%esi) | |
7330 + jz L010sw_end | |
7331 + # Tail Round 3 | |
7332 + movl 12(%edi),%eax | |
7333 + mull %eax | |
7334 + movl %eax,24(%esi) | |
7335 + decl %ebx | |
7336 + movl %edx,28(%esi) | |
7337 + jz L010sw_end | |
7338 + # Tail Round 4 | |
7339 + movl 16(%edi),%eax | |
7340 + mull %eax | |
7341 + movl %eax,32(%esi) | |
7342 + decl %ebx | |
7343 + movl %edx,36(%esi) | |
7344 + jz L010sw_end | |
7345 + # Tail Round 5 | |
7346 + movl 20(%edi),%eax | |
7347 + mull %eax | |
7348 + movl %eax,40(%esi) | |
7349 + decl %ebx | |
7350 + movl %edx,44(%esi) | |
7351 + jz L010sw_end | |
7352 + # Tail Round 6 | |
7353 + movl 24(%edi),%eax | |
7354 + mull %eax | |
7355 + movl %eax,48(%esi) | |
7356 + movl %edx,52(%esi) | |
7357 +L010sw_end: | |
7358 + popl %edi | |
7359 + popl %esi | |
7360 + popl %ebx | |
7361 + popl %ebp | |
7362 + ret | |
7363 +.globl _bn_div_words | |
7364 +.align 4 | |
7365 +_bn_div_words: | |
7366 +L_bn_div_words_begin: | |
7367 + movl 4(%esp),%edx | |
7368 + movl 8(%esp),%eax | |
7369 + movl 12(%esp),%ecx | |
7370 + divl %ecx | |
7371 + ret | |
7372 +.globl _bn_add_words | |
7373 +.align 4 | |
7374 +_bn_add_words: | |
7375 +L_bn_add_words_begin: | |
7376 + pushl %ebp | |
7377 + pushl %ebx | |
7378 + pushl %esi | |
7379 + pushl %edi | |
7380 + | |
7381 + movl 20(%esp),%ebx | |
7382 + movl 24(%esp),%esi | |
7383 + movl 28(%esp),%edi | |
7384 + movl 32(%esp),%ebp | |
7385 + xorl %eax,%eax | |
7386 + andl $4294967288,%ebp | |
7387 + jz L011aw_finish | |
7388 +L012aw_loop: | |
7389 + # Round 0 | |
7390 + movl (%esi),%ecx | |
7391 + movl (%edi),%edx | |
7392 + addl %eax,%ecx | |
7393 + movl $0,%eax | |
7394 + adcl %eax,%eax | |
7395 + addl %edx,%ecx | |
7396 + adcl $0,%eax | |
7397 + movl %ecx,(%ebx) | |
7398 + # Round 1 | |
7399 + movl 4(%esi),%ecx | |
7400 + movl 4(%edi),%edx | |
7401 + addl %eax,%ecx | |
7402 + movl $0,%eax | |
7403 + adcl %eax,%eax | |
7404 + addl %edx,%ecx | |
7405 + adcl $0,%eax | |
7406 + movl %ecx,4(%ebx) | |
7407 + # Round 2 | |
7408 + movl 8(%esi),%ecx | |
7409 + movl 8(%edi),%edx | |
7410 + addl %eax,%ecx | |
7411 + movl $0,%eax | |
7412 + adcl %eax,%eax | |
7413 + addl %edx,%ecx | |
7414 + adcl $0,%eax | |
7415 + movl %ecx,8(%ebx) | |
7416 + # Round 3 | |
7417 + movl 12(%esi),%ecx | |
7418 + movl 12(%edi),%edx | |
7419 + addl %eax,%ecx | |
7420 + movl $0,%eax | |
7421 + adcl %eax,%eax | |
7422 + addl %edx,%ecx | |
7423 + adcl $0,%eax | |
7424 + movl %ecx,12(%ebx) | |
7425 + # Round 4 | |
7426 + movl 16(%esi),%ecx | |
7427 + movl 16(%edi),%edx | |
7428 + addl %eax,%ecx | |
7429 + movl $0,%eax | |
7430 + adcl %eax,%eax | |
7431 + addl %edx,%ecx | |
7432 + adcl $0,%eax | |
7433 + movl %ecx,16(%ebx) | |
7434 + # Round 5 | |
7435 + movl 20(%esi),%ecx | |
7436 + movl 20(%edi),%edx | |
7437 + addl %eax,%ecx | |
7438 + movl $0,%eax | |
7439 + adcl %eax,%eax | |
7440 + addl %edx,%ecx | |
7441 + adcl $0,%eax | |
7442 + movl %ecx,20(%ebx) | |
7443 + # Round 6 | |
7444 + movl 24(%esi),%ecx | |
7445 + movl 24(%edi),%edx | |
7446 + addl %eax,%ecx | |
7447 + movl $0,%eax | |
7448 + adcl %eax,%eax | |
7449 + addl %edx,%ecx | |
7450 + adcl $0,%eax | |
7451 + movl %ecx,24(%ebx) | |
7452 + # Round 7 | |
7453 + movl 28(%esi),%ecx | |
7454 + movl 28(%edi),%edx | |
7455 + addl %eax,%ecx | |
7456 + movl $0,%eax | |
7457 + adcl %eax,%eax | |
7458 + addl %edx,%ecx | |
7459 + adcl $0,%eax | |
7460 + movl %ecx,28(%ebx) | |
7461 + | |
7462 + addl $32,%esi | |
7463 + addl $32,%edi | |
7464 + addl $32,%ebx | |
7465 + subl $8,%ebp | |
7466 + jnz L012aw_loop | |
7467 +L011aw_finish: | |
7468 + movl 32(%esp),%ebp | |
7469 + andl $7,%ebp | |
7470 + jz L013aw_end | |
7471 + # Tail Round 0 | |
7472 + movl (%esi),%ecx | |
7473 + movl (%edi),%edx | |
7474 + addl %eax,%ecx | |
7475 + movl $0,%eax | |
7476 + adcl %eax,%eax | |
7477 + addl %edx,%ecx | |
7478 + adcl $0,%eax | |
7479 + decl %ebp | |
7480 + movl %ecx,(%ebx) | |
7481 + jz L013aw_end | |
7482 + # Tail Round 1 | |
7483 + movl 4(%esi),%ecx | |
7484 + movl 4(%edi),%edx | |
7485 + addl %eax,%ecx | |
7486 + movl $0,%eax | |
7487 + adcl %eax,%eax | |
7488 + addl %edx,%ecx | |
7489 + adcl $0,%eax | |
7490 + decl %ebp | |
7491 + movl %ecx,4(%ebx) | |
7492 + jz L013aw_end | |
7493 + # Tail Round 2 | |
7494 + movl 8(%esi),%ecx | |
7495 + movl 8(%edi),%edx | |
7496 + addl %eax,%ecx | |
7497 + movl $0,%eax | |
7498 + adcl %eax,%eax | |
7499 + addl %edx,%ecx | |
7500 + adcl $0,%eax | |
7501 + decl %ebp | |
7502 + movl %ecx,8(%ebx) | |
7503 + jz L013aw_end | |
7504 + # Tail Round 3 | |
7505 + movl 12(%esi),%ecx | |
7506 + movl 12(%edi),%edx | |
7507 + addl %eax,%ecx | |
7508 + movl $0,%eax | |
7509 + adcl %eax,%eax | |
7510 + addl %edx,%ecx | |
7511 + adcl $0,%eax | |
7512 + decl %ebp | |
7513 + movl %ecx,12(%ebx) | |
7514 + jz L013aw_end | |
7515 + # Tail Round 4 | |
7516 + movl 16(%esi),%ecx | |
7517 + movl 16(%edi),%edx | |
7518 + addl %eax,%ecx | |
7519 + movl $0,%eax | |
7520 + adcl %eax,%eax | |
7521 + addl %edx,%ecx | |
7522 + adcl $0,%eax | |
7523 + decl %ebp | |
7524 + movl %ecx,16(%ebx) | |
7525 + jz L013aw_end | |
7526 + # Tail Round 5 | |
7527 + movl 20(%esi),%ecx | |
7528 + movl 20(%edi),%edx | |
7529 + addl %eax,%ecx | |
7530 + movl $0,%eax | |
7531 + adcl %eax,%eax | |
7532 + addl %edx,%ecx | |
7533 + adcl $0,%eax | |
7534 + decl %ebp | |
7535 + movl %ecx,20(%ebx) | |
7536 + jz L013aw_end | |
7537 + # Tail Round 6 | |
7538 + movl 24(%esi),%ecx | |
7539 + movl 24(%edi),%edx | |
7540 + addl %eax,%ecx | |
7541 + movl $0,%eax | |
7542 + adcl %eax,%eax | |
7543 + addl %edx,%ecx | |
7544 + adcl $0,%eax | |
7545 + movl %ecx,24(%ebx) | |
7546 +L013aw_end: | |
7547 + popl %edi | |
7548 + popl %esi | |
7549 + popl %ebx | |
7550 + popl %ebp | |
7551 + ret | |
7552 +.globl _bn_sub_words | |
7553 +.align 4 | |
7554 +_bn_sub_words: | |
7555 +L_bn_sub_words_begin: | |
7556 + pushl %ebp | |
7557 + pushl %ebx | |
7558 + pushl %esi | |
7559 + pushl %edi | |
7560 + | |
7561 + movl 20(%esp),%ebx | |
7562 + movl 24(%esp),%esi | |
7563 + movl 28(%esp),%edi | |
7564 + movl 32(%esp),%ebp | |
7565 + xorl %eax,%eax | |
7566 + andl $4294967288,%ebp | |
7567 + jz L014aw_finish | |
7568 +L015aw_loop: | |
7569 + # Round 0 | |
7570 + movl (%esi),%ecx | |
7571 + movl (%edi),%edx | |
7572 + subl %eax,%ecx | |
7573 + movl $0,%eax | |
7574 + adcl %eax,%eax | |
7575 + subl %edx,%ecx | |
7576 + adcl $0,%eax | |
7577 + movl %ecx,(%ebx) | |
7578 + # Round 1 | |
7579 + movl 4(%esi),%ecx | |
7580 + movl 4(%edi),%edx | |
7581 + subl %eax,%ecx | |
7582 + movl $0,%eax | |
7583 + adcl %eax,%eax | |
7584 + subl %edx,%ecx | |
7585 + adcl $0,%eax | |
7586 + movl %ecx,4(%ebx) | |
7587 + # Round 2 | |
7588 + movl 8(%esi),%ecx | |
7589 + movl 8(%edi),%edx | |
7590 + subl %eax,%ecx | |
7591 + movl $0,%eax | |
7592 + adcl %eax,%eax | |
7593 + subl %edx,%ecx | |
7594 + adcl $0,%eax | |
7595 + movl %ecx,8(%ebx) | |
7596 + # Round 3 | |
7597 + movl 12(%esi),%ecx | |
7598 + movl 12(%edi),%edx | |
7599 + subl %eax,%ecx | |
7600 + movl $0,%eax | |
7601 + adcl %eax,%eax | |
7602 + subl %edx,%ecx | |
7603 + adcl $0,%eax | |
7604 + movl %ecx,12(%ebx) | |
7605 + # Round 4 | |
7606 + movl 16(%esi),%ecx | |
7607 + movl 16(%edi),%edx | |
7608 + subl %eax,%ecx | |
7609 + movl $0,%eax | |
7610 + adcl %eax,%eax | |
7611 + subl %edx,%ecx | |
7612 + adcl $0,%eax | |
7613 + movl %ecx,16(%ebx) | |
7614 + # Round 5 | |
7615 + movl 20(%esi),%ecx | |
7616 + movl 20(%edi),%edx | |
7617 + subl %eax,%ecx | |
7618 + movl $0,%eax | |
7619 + adcl %eax,%eax | |
7620 + subl %edx,%ecx | |
7621 + adcl $0,%eax | |
7622 + movl %ecx,20(%ebx) | |
7623 + # Round 6 | |
7624 + movl 24(%esi),%ecx | |
7625 + movl 24(%edi),%edx | |
7626 + subl %eax,%ecx | |
7627 + movl $0,%eax | |
7628 + adcl %eax,%eax | |
7629 + subl %edx,%ecx | |
7630 + adcl $0,%eax | |
7631 + movl %ecx,24(%ebx) | |
7632 + # Round 7 | |
7633 + movl 28(%esi),%ecx | |
7634 + movl 28(%edi),%edx | |
7635 + subl %eax,%ecx | |
7636 + movl $0,%eax | |
7637 + adcl %eax,%eax | |
7638 + subl %edx,%ecx | |
7639 + adcl $0,%eax | |
7640 + movl %ecx,28(%ebx) | |
7641 + | |
7642 + addl $32,%esi | |
7643 + addl $32,%edi | |
7644 + addl $32,%ebx | |
7645 + subl $8,%ebp | |
7646 + jnz L015aw_loop | |
7647 +L014aw_finish: | |
7648 + movl 32(%esp),%ebp | |
7649 + andl $7,%ebp | |
7650 + jz L016aw_end | |
7651 + # Tail Round 0 | |
7652 + movl (%esi),%ecx | |
7653 + movl (%edi),%edx | |
7654 + subl %eax,%ecx | |
7655 + movl $0,%eax | |
7656 + adcl %eax,%eax | |
7657 + subl %edx,%ecx | |
7658 + adcl $0,%eax | |
7659 + decl %ebp | |
7660 + movl %ecx,(%ebx) | |
7661 + jz L016aw_end | |
7662 + # Tail Round 1 | |
7663 + movl 4(%esi),%ecx | |
7664 + movl 4(%edi),%edx | |
7665 + subl %eax,%ecx | |
7666 + movl $0,%eax | |
7667 + adcl %eax,%eax | |
7668 + subl %edx,%ecx | |
7669 + adcl $0,%eax | |
7670 + decl %ebp | |
7671 + movl %ecx,4(%ebx) | |
7672 + jz L016aw_end | |
7673 + # Tail Round 2 | |
7674 + movl 8(%esi),%ecx | |
7675 + movl 8(%edi),%edx | |
7676 + subl %eax,%ecx | |
7677 + movl $0,%eax | |
7678 + adcl %eax,%eax | |
7679 + subl %edx,%ecx | |
7680 + adcl $0,%eax | |
7681 + decl %ebp | |
7682 + movl %ecx,8(%ebx) | |
7683 + jz L016aw_end | |
7684 + # Tail Round 3 | |
7685 + movl 12(%esi),%ecx | |
7686 + movl 12(%edi),%edx | |
7687 + subl %eax,%ecx | |
7688 + movl $0,%eax | |
7689 + adcl %eax,%eax | |
7690 + subl %edx,%ecx | |
7691 + adcl $0,%eax | |
7692 + decl %ebp | |
7693 + movl %ecx,12(%ebx) | |
7694 + jz L016aw_end | |
7695 + # Tail Round 4 | |
7696 + movl 16(%esi),%ecx | |
7697 + movl 16(%edi),%edx | |
7698 + subl %eax,%ecx | |
7699 + movl $0,%eax | |
7700 + adcl %eax,%eax | |
7701 + subl %edx,%ecx | |
7702 + adcl $0,%eax | |
7703 + decl %ebp | |
7704 + movl %ecx,16(%ebx) | |
7705 + jz L016aw_end | |
7706 + # Tail Round 5 | |
7707 + movl 20(%esi),%ecx | |
7708 + movl 20(%edi),%edx | |
7709 + subl %eax,%ecx | |
7710 + movl $0,%eax | |
7711 + adcl %eax,%eax | |
7712 + subl %edx,%ecx | |
7713 + adcl $0,%eax | |
7714 + decl %ebp | |
7715 + movl %ecx,20(%ebx) | |
7716 + jz L016aw_end | |
7717 + # Tail Round 6 | |
7718 + movl 24(%esi),%ecx | |
7719 + movl 24(%edi),%edx | |
7720 + subl %eax,%ecx | |
7721 + movl $0,%eax | |
7722 + adcl %eax,%eax | |
7723 + subl %edx,%ecx | |
7724 + adcl $0,%eax | |
7725 + movl %ecx,24(%ebx) | |
7726 +L016aw_end: | |
7727 + popl %edi | |
7728 + popl %esi | |
7729 + popl %ebx | |
7730 + popl %ebp | |
7731 + ret | |
7732 +.globl _bn_sub_part_words | |
7733 +.align 4 | |
7734 +_bn_sub_part_words: | |
7735 +L_bn_sub_part_words_begin: | |
7736 + pushl %ebp | |
7737 + pushl %ebx | |
7738 + pushl %esi | |
7739 + pushl %edi | |
7740 + | |
7741 + movl 20(%esp),%ebx | |
7742 + movl 24(%esp),%esi | |
7743 + movl 28(%esp),%edi | |
7744 + movl 32(%esp),%ebp | |
7745 + xorl %eax,%eax | |
7746 + andl $4294967288,%ebp | |
7747 + jz L017aw_finish | |
7748 +L018aw_loop: | |
7749 + # Round 0 | |
7750 + movl (%esi),%ecx | |
7751 + movl (%edi),%edx | |
7752 + subl %eax,%ecx | |
7753 + movl $0,%eax | |
7754 + adcl %eax,%eax | |
7755 + subl %edx,%ecx | |
7756 + adcl $0,%eax | |
7757 + movl %ecx,(%ebx) | |
7758 + # Round 1 | |
7759 + movl 4(%esi),%ecx | |
7760 + movl 4(%edi),%edx | |
7761 + subl %eax,%ecx | |
7762 + movl $0,%eax | |
7763 + adcl %eax,%eax | |
7764 + subl %edx,%ecx | |
7765 + adcl $0,%eax | |
7766 + movl %ecx,4(%ebx) | |
7767 + # Round 2 | |
7768 + movl 8(%esi),%ecx | |
7769 + movl 8(%edi),%edx | |
7770 + subl %eax,%ecx | |
7771 + movl $0,%eax | |
7772 + adcl %eax,%eax | |
7773 + subl %edx,%ecx | |
7774 + adcl $0,%eax | |
7775 + movl %ecx,8(%ebx) | |
7776 + # Round 3 | |
7777 + movl 12(%esi),%ecx | |
7778 + movl 12(%edi),%edx | |
7779 + subl %eax,%ecx | |
7780 + movl $0,%eax | |
7781 + adcl %eax,%eax | |
7782 + subl %edx,%ecx | |
7783 + adcl $0,%eax | |
7784 + movl %ecx,12(%ebx) | |
7785 + # Round 4 | |
7786 + movl 16(%esi),%ecx | |
7787 + movl 16(%edi),%edx | |
7788 + subl %eax,%ecx | |
7789 + movl $0,%eax | |
7790 + adcl %eax,%eax | |
7791 + subl %edx,%ecx | |
7792 + adcl $0,%eax | |
7793 + movl %ecx,16(%ebx) | |
7794 + # Round 5 | |
7795 + movl 20(%esi),%ecx | |
7796 + movl 20(%edi),%edx | |
7797 + subl %eax,%ecx | |
7798 + movl $0,%eax | |
7799 + adcl %eax,%eax | |
7800 + subl %edx,%ecx | |
7801 + adcl $0,%eax | |
7802 + movl %ecx,20(%ebx) | |
7803 + # Round 6 | |
7804 + movl 24(%esi),%ecx | |
7805 + movl 24(%edi),%edx | |
7806 + subl %eax,%ecx | |
7807 + movl $0,%eax | |
7808 + adcl %eax,%eax | |
7809 + subl %edx,%ecx | |
7810 + adcl $0,%eax | |
7811 + movl %ecx,24(%ebx) | |
7812 + # Round 7 | |
7813 + movl 28(%esi),%ecx | |
7814 + movl 28(%edi),%edx | |
7815 + subl %eax,%ecx | |
7816 + movl $0,%eax | |
7817 + adcl %eax,%eax | |
7818 + subl %edx,%ecx | |
7819 + adcl $0,%eax | |
7820 + movl %ecx,28(%ebx) | |
7821 + | |
7822 + addl $32,%esi | |
7823 + addl $32,%edi | |
7824 + addl $32,%ebx | |
7825 + subl $8,%ebp | |
7826 + jnz L018aw_loop | |
7827 +L017aw_finish: | |
7828 + movl 32(%esp),%ebp | |
7829 + andl $7,%ebp | |
7830 + jz L019aw_end | |
7831 + # Tail Round 0 | |
7832 + movl (%esi),%ecx | |
7833 + movl (%edi),%edx | |
7834 + subl %eax,%ecx | |
7835 + movl $0,%eax | |
7836 + adcl %eax,%eax | |
7837 + subl %edx,%ecx | |
7838 + adcl $0,%eax | |
7839 + movl %ecx,(%ebx) | |
7840 + addl $4,%esi | |
7841 + addl $4,%edi | |
7842 + addl $4,%ebx | |
7843 + decl %ebp | |
7844 + jz L019aw_end | |
7845 + # Tail Round 1 | |
7846 + movl (%esi),%ecx | |
7847 + movl (%edi),%edx | |
7848 + subl %eax,%ecx | |
7849 + movl $0,%eax | |
7850 + adcl %eax,%eax | |
7851 + subl %edx,%ecx | |
7852 + adcl $0,%eax | |
7853 + movl %ecx,(%ebx) | |
7854 + addl $4,%esi | |
7855 + addl $4,%edi | |
7856 + addl $4,%ebx | |
7857 + decl %ebp | |
7858 + jz L019aw_end | |
7859 + # Tail Round 2 | |
7860 + movl (%esi),%ecx | |
7861 + movl (%edi),%edx | |
7862 + subl %eax,%ecx | |
7863 + movl $0,%eax | |
7864 + adcl %eax,%eax | |
7865 + subl %edx,%ecx | |
7866 + adcl $0,%eax | |
7867 + movl %ecx,(%ebx) | |
7868 + addl $4,%esi | |
7869 + addl $4,%edi | |
7870 + addl $4,%ebx | |
7871 + decl %ebp | |
7872 + jz L019aw_end | |
7873 + # Tail Round 3 | |
7874 + movl (%esi),%ecx | |
7875 + movl (%edi),%edx | |
7876 + subl %eax,%ecx | |
7877 + movl $0,%eax | |
7878 + adcl %eax,%eax | |
7879 + subl %edx,%ecx | |
7880 + adcl $0,%eax | |
7881 + movl %ecx,(%ebx) | |
7882 + addl $4,%esi | |
7883 + addl $4,%edi | |
7884 + addl $4,%ebx | |
7885 + decl %ebp | |
7886 + jz L019aw_end | |
7887 + # Tail Round 4 | |
7888 + movl (%esi),%ecx | |
7889 + movl (%edi),%edx | |
7890 + subl %eax,%ecx | |
7891 + movl $0,%eax | |
7892 + adcl %eax,%eax | |
7893 + subl %edx,%ecx | |
7894 + adcl $0,%eax | |
7895 + movl %ecx,(%ebx) | |
7896 + addl $4,%esi | |
7897 + addl $4,%edi | |
7898 + addl $4,%ebx | |
7899 + decl %ebp | |
7900 + jz L019aw_end | |
7901 + # Tail Round 5 | |
7902 + movl (%esi),%ecx | |
7903 + movl (%edi),%edx | |
7904 + subl %eax,%ecx | |
7905 + movl $0,%eax | |
7906 + adcl %eax,%eax | |
7907 + subl %edx,%ecx | |
7908 + adcl $0,%eax | |
7909 + movl %ecx,(%ebx) | |
7910 + addl $4,%esi | |
7911 + addl $4,%edi | |
7912 + addl $4,%ebx | |
7913 + decl %ebp | |
7914 + jz L019aw_end | |
7915 + # Tail Round 6 | |
7916 + movl (%esi),%ecx | |
7917 + movl (%edi),%edx | |
7918 + subl %eax,%ecx | |
7919 + movl $0,%eax | |
7920 + adcl %eax,%eax | |
7921 + subl %edx,%ecx | |
7922 + adcl $0,%eax | |
7923 + movl %ecx,(%ebx) | |
7924 + addl $4,%esi | |
7925 + addl $4,%edi | |
7926 + addl $4,%ebx | |
7927 +L019aw_end: | |
7928 + cmpl $0,36(%esp) | |
7929 + je L020pw_end | |
7930 + movl 36(%esp),%ebp | |
7931 + cmpl $0,%ebp | |
7932 + je L020pw_end | |
7933 + jge L021pw_pos | |
7934 + # pw_neg | |
7935 + movl $0,%edx | |
7936 + subl %ebp,%edx | |
7937 + movl %edx,%ebp | |
7938 + andl $4294967288,%ebp | |
7939 + jz L022pw_neg_finish | |
7940 +L023pw_neg_loop: | |
7941 + # dl<0 Round 0 | |
7942 + movl $0,%ecx | |
7943 + movl (%edi),%edx | |
7944 + subl %eax,%ecx | |
7945 + movl $0,%eax | |
7946 + adcl %eax,%eax | |
7947 + subl %edx,%ecx | |
7948 + adcl $0,%eax | |
7949 + movl %ecx,(%ebx) | |
7950 + # dl<0 Round 1 | |
7951 + movl $0,%ecx | |
7952 + movl 4(%edi),%edx | |
7953 + subl %eax,%ecx | |
7954 + movl $0,%eax | |
7955 + adcl %eax,%eax | |
7956 + subl %edx,%ecx | |
7957 + adcl $0,%eax | |
7958 + movl %ecx,4(%ebx) | |
7959 + # dl<0 Round 2 | |
7960 + movl $0,%ecx | |
7961 + movl 8(%edi),%edx | |
7962 + subl %eax,%ecx | |
7963 + movl $0,%eax | |
7964 + adcl %eax,%eax | |
7965 + subl %edx,%ecx | |
7966 + adcl $0,%eax | |
7967 + movl %ecx,8(%ebx) | |
7968 + # dl<0 Round 3 | |
7969 + movl $0,%ecx | |
7970 + movl 12(%edi),%edx | |
7971 + subl %eax,%ecx | |
7972 + movl $0,%eax | |
7973 + adcl %eax,%eax | |
7974 + subl %edx,%ecx | |
7975 + adcl $0,%eax | |
7976 + movl %ecx,12(%ebx) | |
7977 + # dl<0 Round 4 | |
7978 + movl $0,%ecx | |
7979 + movl 16(%edi),%edx | |
7980 + subl %eax,%ecx | |
7981 + movl $0,%eax | |
7982 + adcl %eax,%eax | |
7983 + subl %edx,%ecx | |
7984 + adcl $0,%eax | |
7985 + movl %ecx,16(%ebx) | |
7986 + # dl<0 Round 5 | |
7987 + movl $0,%ecx | |
7988 + movl 20(%edi),%edx | |
7989 + subl %eax,%ecx | |
7990 + movl $0,%eax | |
7991 + adcl %eax,%eax | |
7992 + subl %edx,%ecx | |
7993 + adcl $0,%eax | |
7994 + movl %ecx,20(%ebx) | |
7995 + # dl<0 Round 6 | |
7996 + movl $0,%ecx | |
7997 + movl 24(%edi),%edx | |
7998 + subl %eax,%ecx | |
7999 + movl $0,%eax | |
8000 + adcl %eax,%eax | |
8001 + subl %edx,%ecx | |
8002 + adcl $0,%eax | |
8003 + movl %ecx,24(%ebx) | |
8004 + # dl<0 Round 7 | |
8005 + movl $0,%ecx | |
8006 + movl 28(%edi),%edx | |
8007 + subl %eax,%ecx | |
8008 + movl $0,%eax | |
8009 + adcl %eax,%eax | |
8010 + subl %edx,%ecx | |
8011 + adcl $0,%eax | |
8012 + movl %ecx,28(%ebx) | |
8013 + | |
8014 + addl $32,%edi | |
8015 + addl $32,%ebx | |
8016 + subl $8,%ebp | |
8017 + jnz L023pw_neg_loop | |
8018 +L022pw_neg_finish: | |
8019 + movl 36(%esp),%edx | |
8020 + movl $0,%ebp | |
8021 + subl %edx,%ebp | |
8022 + andl $7,%ebp | |
8023 + jz L020pw_end | |
8024 + # dl<0 Tail Round 0 | |
8025 + movl $0,%ecx | |
8026 + movl (%edi),%edx | |
8027 + subl %eax,%ecx | |
8028 + movl $0,%eax | |
8029 + adcl %eax,%eax | |
8030 + subl %edx,%ecx | |
8031 + adcl $0,%eax | |
8032 + decl %ebp | |
8033 + movl %ecx,(%ebx) | |
8034 + jz L020pw_end | |
8035 + # dl<0 Tail Round 1 | |
8036 + movl $0,%ecx | |
8037 + movl 4(%edi),%edx | |
8038 + subl %eax,%ecx | |
8039 + movl $0,%eax | |
8040 + adcl %eax,%eax | |
8041 + subl %edx,%ecx | |
8042 + adcl $0,%eax | |
8043 + decl %ebp | |
8044 + movl %ecx,4(%ebx) | |
8045 + jz L020pw_end | |
8046 + # dl<0 Tail Round 2 | |
8047 + movl $0,%ecx | |
8048 + movl 8(%edi),%edx | |
8049 + subl %eax,%ecx | |
8050 + movl $0,%eax | |
8051 + adcl %eax,%eax | |
8052 + subl %edx,%ecx | |
8053 + adcl $0,%eax | |
8054 + decl %ebp | |
8055 + movl %ecx,8(%ebx) | |
8056 + jz L020pw_end | |
8057 + # dl<0 Tail Round 3 | |
8058 + movl $0,%ecx | |
8059 + movl 12(%edi),%edx | |
8060 + subl %eax,%ecx | |
8061 + movl $0,%eax | |
8062 + adcl %eax,%eax | |
8063 + subl %edx,%ecx | |
8064 + adcl $0,%eax | |
8065 + decl %ebp | |
8066 + movl %ecx,12(%ebx) | |
8067 + jz L020pw_end | |
8068 + # dl<0 Tail Round 4 | |
8069 + movl $0,%ecx | |
8070 + movl 16(%edi),%edx | |
8071 + subl %eax,%ecx | |
8072 + movl $0,%eax | |
8073 + adcl %eax,%eax | |
8074 + subl %edx,%ecx | |
8075 + adcl $0,%eax | |
8076 + decl %ebp | |
8077 + movl %ecx,16(%ebx) | |
8078 + jz L020pw_end | |
8079 + # dl<0 Tail Round 5 | |
8080 + movl $0,%ecx | |
8081 + movl 20(%edi),%edx | |
8082 + subl %eax,%ecx | |
8083 + movl $0,%eax | |
8084 + adcl %eax,%eax | |
8085 + subl %edx,%ecx | |
8086 + adcl $0,%eax | |
8087 + decl %ebp | |
8088 + movl %ecx,20(%ebx) | |
8089 + jz L020pw_end | |
8090 + # dl<0 Tail Round 6 | |
8091 + movl $0,%ecx | |
8092 + movl 24(%edi),%edx | |
8093 + subl %eax,%ecx | |
8094 + movl $0,%eax | |
8095 + adcl %eax,%eax | |
8096 + subl %edx,%ecx | |
8097 + adcl $0,%eax | |
8098 + movl %ecx,24(%ebx) | |
8099 + jmp L020pw_end | |
8100 +L021pw_pos: | |
8101 + andl $4294967288,%ebp | |
8102 + jz L024pw_pos_finish | |
8103 +L025pw_pos_loop: | |
8104 + # dl>0 Round 0 | |
8105 + movl (%esi),%ecx | |
8106 + subl %eax,%ecx | |
8107 + movl %ecx,(%ebx) | |
8108 + jnc L026pw_nc0 | |
8109 + # dl>0 Round 1 | |
8110 + movl 4(%esi),%ecx | |
8111 + subl %eax,%ecx | |
8112 + movl %ecx,4(%ebx) | |
8113 + jnc L027pw_nc1 | |
8114 + # dl>0 Round 2 | |
8115 + movl 8(%esi),%ecx | |
8116 + subl %eax,%ecx | |
8117 + movl %ecx,8(%ebx) | |
8118 + jnc L028pw_nc2 | |
8119 + # dl>0 Round 3 | |
8120 + movl 12(%esi),%ecx | |
8121 + subl %eax,%ecx | |
8122 + movl %ecx,12(%ebx) | |
8123 + jnc L029pw_nc3 | |
8124 + # dl>0 Round 4 | |
8125 + movl 16(%esi),%ecx | |
8126 + subl %eax,%ecx | |
8127 + movl %ecx,16(%ebx) | |
8128 + jnc L030pw_nc4 | |
8129 + # dl>0 Round 5 | |
8130 + movl 20(%esi),%ecx | |
8131 + subl %eax,%ecx | |
8132 + movl %ecx,20(%ebx) | |
8133 + jnc L031pw_nc5 | |
8134 + # dl>0 Round 6 | |
8135 + movl 24(%esi),%ecx | |
8136 + subl %eax,%ecx | |
8137 + movl %ecx,24(%ebx) | |
8138 + jnc L032pw_nc6 | |
8139 + # dl>0 Round 7 | |
8140 + movl 28(%esi),%ecx | |
8141 + subl %eax,%ecx | |
8142 + movl %ecx,28(%ebx) | |
8143 + jnc L033pw_nc7 | |
8144 + | |
8145 + addl $32,%esi | |
8146 + addl $32,%ebx | |
8147 + subl $8,%ebp | |
8148 + jnz L025pw_pos_loop | |
8149 +L024pw_pos_finish: | |
8150 + movl 36(%esp),%ebp | |
8151 + andl $7,%ebp | |
8152 + jz L020pw_end | |
8153 + # dl>0 Tail Round 0 | |
8154 + movl (%esi),%ecx | |
8155 + subl %eax,%ecx | |
8156 + movl %ecx,(%ebx) | |
8157 + jnc L034pw_tail_nc0 | |
8158 + decl %ebp | |
8159 + jz L020pw_end | |
8160 + # dl>0 Tail Round 1 | |
8161 + movl 4(%esi),%ecx | |
8162 + subl %eax,%ecx | |
8163 + movl %ecx,4(%ebx) | |
8164 + jnc L035pw_tail_nc1 | |
8165 + decl %ebp | |
8166 + jz L020pw_end | |
8167 + # dl>0 Tail Round 2 | |
8168 + movl 8(%esi),%ecx | |
8169 + subl %eax,%ecx | |
8170 + movl %ecx,8(%ebx) | |
8171 + jnc L036pw_tail_nc2 | |
8172 + decl %ebp | |
8173 + jz L020pw_end | |
8174 + # dl>0 Tail Round 3 | |
8175 + movl 12(%esi),%ecx | |
8176 + subl %eax,%ecx | |
8177 + movl %ecx,12(%ebx) | |
8178 + jnc L037pw_tail_nc3 | |
8179 + decl %ebp | |
8180 + jz L020pw_end | |
8181 + # dl>0 Tail Round 4 | |
8182 + movl 16(%esi),%ecx | |
8183 + subl %eax,%ecx | |
8184 + movl %ecx,16(%ebx) | |
8185 + jnc L038pw_tail_nc4 | |
8186 + decl %ebp | |
8187 + jz L020pw_end | |
8188 + # dl>0 Tail Round 5 | |
8189 + movl 20(%esi),%ecx | |
8190 + subl %eax,%ecx | |
8191 + movl %ecx,20(%ebx) | |
8192 + jnc L039pw_tail_nc5 | |
8193 + decl %ebp | |
8194 + jz L020pw_end | |
8195 + # dl>0 Tail Round 6 | |
8196 + movl 24(%esi),%ecx | |
8197 + subl %eax,%ecx | |
8198 + movl %ecx,24(%ebx) | |
8199 + jnc L040pw_tail_nc6 | |
8200 + movl $1,%eax | |
8201 + jmp L020pw_end | |
8202 +L041pw_nc_loop: | |
8203 + movl (%esi),%ecx | |
8204 + movl %ecx,(%ebx) | |
8205 +L026pw_nc0: | |
8206 + movl 4(%esi),%ecx | |
8207 + movl %ecx,4(%ebx) | |
8208 +L027pw_nc1: | |
8209 + movl 8(%esi),%ecx | |
8210 + movl %ecx,8(%ebx) | |
8211 +L028pw_nc2: | |
8212 + movl 12(%esi),%ecx | |
8213 + movl %ecx,12(%ebx) | |
8214 +L029pw_nc3: | |
8215 + movl 16(%esi),%ecx | |
8216 + movl %ecx,16(%ebx) | |
8217 +L030pw_nc4: | |
8218 + movl 20(%esi),%ecx | |
8219 + movl %ecx,20(%ebx) | |
8220 +L031pw_nc5: | |
8221 + movl 24(%esi),%ecx | |
8222 + movl %ecx,24(%ebx) | |
8223 +L032pw_nc6: | |
8224 + movl 28(%esi),%ecx | |
8225 + movl %ecx,28(%ebx) | |
8226 +L033pw_nc7: | |
8227 + | |
8228 + addl $32,%esi | |
8229 + addl $32,%ebx | |
8230 + subl $8,%ebp | |
8231 + jnz L041pw_nc_loop | |
8232 + movl 36(%esp),%ebp | |
8233 + andl $7,%ebp | |
8234 + jz L042pw_nc_end | |
8235 + movl (%esi),%ecx | |
8236 + movl %ecx,(%ebx) | |
8237 +L034pw_tail_nc0: | |
8238 + decl %ebp | |
8239 + jz L042pw_nc_end | |
8240 + movl 4(%esi),%ecx | |
8241 + movl %ecx,4(%ebx) | |
8242 +L035pw_tail_nc1: | |
8243 + decl %ebp | |
8244 + jz L042pw_nc_end | |
8245 + movl 8(%esi),%ecx | |
8246 + movl %ecx,8(%ebx) | |
8247 +L036pw_tail_nc2: | |
8248 + decl %ebp | |
8249 + jz L042pw_nc_end | |
8250 + movl 12(%esi),%ecx | |
8251 + movl %ecx,12(%ebx) | |
8252 +L037pw_tail_nc3: | |
8253 + decl %ebp | |
8254 + jz L042pw_nc_end | |
8255 + movl 16(%esi),%ecx | |
8256 + movl %ecx,16(%ebx) | |
8257 +L038pw_tail_nc4: | |
8258 + decl %ebp | |
8259 + jz L042pw_nc_end | |
8260 + movl 20(%esi),%ecx | |
8261 + movl %ecx,20(%ebx) | |
8262 +L039pw_tail_nc5: | |
8263 + decl %ebp | |
8264 + jz L042pw_nc_end | |
8265 + movl 24(%esi),%ecx | |
8266 + movl %ecx,24(%ebx) | |
8267 +L040pw_tail_nc6: | |
8268 +L042pw_nc_end: | |
8269 + movl $0,%eax | |
8270 +L020pw_end: | |
8271 + popl %edi | |
8272 + popl %esi | |
8273 + popl %ebx | |
8274 + popl %ebp | |
8275 + ret | |
8276 diff --git a/crypto/bn/asm/co-586-mac.S b/crypto/bn/asm/co-586-mac.S | |
8277 new file mode 100644 | |
8278 index 0000000..d82fdcb | |
8279 --- /dev/null | |
8280 +++ b/crypto/bn/asm/co-586-mac.S | |
8281 @@ -0,0 +1,1246 @@ | |
8282 +.file "crypto/bn/asm/co-586.s" | |
8283 +.text | |
8284 +.globl _bn_mul_comba8 | |
8285 +.align 4 | |
8286 +_bn_mul_comba8: | |
8287 +L_bn_mul_comba8_begin: | |
8288 + pushl %esi | |
8289 + movl 12(%esp),%esi | |
8290 + pushl %edi | |
8291 + movl 20(%esp),%edi | |
8292 + pushl %ebp | |
8293 + pushl %ebx | |
8294 + xorl %ebx,%ebx | |
8295 + movl (%esi),%eax | |
8296 + xorl %ecx,%ecx | |
8297 + movl (%edi),%edx | |
8298 + # ################## Calculate word 0 | |
8299 + xorl %ebp,%ebp | |
8300 + # mul a[0]*b[0] | |
8301 + mull %edx | |
8302 + addl %eax,%ebx | |
8303 + movl 20(%esp),%eax | |
8304 + adcl %edx,%ecx | |
8305 + movl (%edi),%edx | |
8306 + adcl $0,%ebp | |
8307 + movl %ebx,(%eax) | |
8308 + movl 4(%esi),%eax | |
8309 + # saved r[0] | |
8310 + # ################## Calculate word 1 | |
8311 + xorl %ebx,%ebx | |
8312 + # mul a[1]*b[0] | |
8313 + mull %edx | |
8314 + addl %eax,%ecx | |
8315 + movl (%esi),%eax | |
8316 + adcl %edx,%ebp | |
8317 + movl 4(%edi),%edx | |
8318 + adcl $0,%ebx | |
8319 + # mul a[0]*b[1] | |
8320 + mull %edx | |
8321 + addl %eax,%ecx | |
8322 + movl 20(%esp),%eax | |
8323 + adcl %edx,%ebp | |
8324 + movl (%edi),%edx | |
8325 + adcl $0,%ebx | |
8326 + movl %ecx,4(%eax) | |
8327 + movl 8(%esi),%eax | |
8328 + # saved r[1] | |
8329 + # ################## Calculate word 2 | |
8330 + xorl %ecx,%ecx | |
8331 + # mul a[2]*b[0] | |
8332 + mull %edx | |
8333 + addl %eax,%ebp | |
8334 + movl 4(%esi),%eax | |
8335 + adcl %edx,%ebx | |
8336 + movl 4(%edi),%edx | |
8337 + adcl $0,%ecx | |
8338 + # mul a[1]*b[1] | |
8339 + mull %edx | |
8340 + addl %eax,%ebp | |
8341 + movl (%esi),%eax | |
8342 + adcl %edx,%ebx | |
8343 + movl 8(%edi),%edx | |
8344 + adcl $0,%ecx | |
8345 + # mul a[0]*b[2] | |
8346 + mull %edx | |
8347 + addl %eax,%ebp | |
8348 + movl 20(%esp),%eax | |
8349 + adcl %edx,%ebx | |
8350 + movl (%edi),%edx | |
8351 + adcl $0,%ecx | |
8352 + movl %ebp,8(%eax) | |
8353 + movl 12(%esi),%eax | |
8354 + # saved r[2] | |
8355 + # ################## Calculate word 3 | |
8356 + xorl %ebp,%ebp | |
8357 + # mul a[3]*b[0] | |
8358 + mull %edx | |
8359 + addl %eax,%ebx | |
8360 + movl 8(%esi),%eax | |
8361 + adcl %edx,%ecx | |
8362 + movl 4(%edi),%edx | |
8363 + adcl $0,%ebp | |
8364 + # mul a[2]*b[1] | |
8365 + mull %edx | |
8366 + addl %eax,%ebx | |
8367 + movl 4(%esi),%eax | |
8368 + adcl %edx,%ecx | |
8369 + movl 8(%edi),%edx | |
8370 + adcl $0,%ebp | |
8371 + # mul a[1]*b[2] | |
8372 + mull %edx | |
8373 + addl %eax,%ebx | |
8374 + movl (%esi),%eax | |
8375 + adcl %edx,%ecx | |
8376 + movl 12(%edi),%edx | |
8377 + adcl $0,%ebp | |
8378 + # mul a[0]*b[3] | |
8379 + mull %edx | |
8380 + addl %eax,%ebx | |
8381 + movl 20(%esp),%eax | |
8382 + adcl %edx,%ecx | |
8383 + movl (%edi),%edx | |
8384 + adcl $0,%ebp | |
8385 + movl %ebx,12(%eax) | |
8386 + movl 16(%esi),%eax | |
8387 + # saved r[3] | |
8388 + # ################## Calculate word 4 | |
8389 + xorl %ebx,%ebx | |
8390 + # mul a[4]*b[0] | |
8391 + mull %edx | |
8392 + addl %eax,%ecx | |
8393 + movl 12(%esi),%eax | |
8394 + adcl %edx,%ebp | |
8395 + movl 4(%edi),%edx | |
8396 + adcl $0,%ebx | |
8397 + # mul a[3]*b[1] | |
8398 + mull %edx | |
8399 + addl %eax,%ecx | |
8400 + movl 8(%esi),%eax | |
8401 + adcl %edx,%ebp | |
8402 + movl 8(%edi),%edx | |
8403 + adcl $0,%ebx | |
8404 + # mul a[2]*b[2] | |
8405 + mull %edx | |
8406 + addl %eax,%ecx | |
8407 + movl 4(%esi),%eax | |
8408 + adcl %edx,%ebp | |
8409 + movl 12(%edi),%edx | |
8410 + adcl $0,%ebx | |
8411 + # mul a[1]*b[3] | |
8412 + mull %edx | |
8413 + addl %eax,%ecx | |
8414 + movl (%esi),%eax | |
8415 + adcl %edx,%ebp | |
8416 + movl 16(%edi),%edx | |
8417 + adcl $0,%ebx | |
8418 + # mul a[0]*b[4] | |
8419 + mull %edx | |
8420 + addl %eax,%ecx | |
8421 + movl 20(%esp),%eax | |
8422 + adcl %edx,%ebp | |
8423 + movl (%edi),%edx | |
8424 + adcl $0,%ebx | |
8425 + movl %ecx,16(%eax) | |
8426 + movl 20(%esi),%eax | |
8427 + # saved r[4] | |
8428 + # ################## Calculate word 5 | |
8429 + xorl %ecx,%ecx | |
8430 + # mul a[5]*b[0] | |
8431 + mull %edx | |
8432 + addl %eax,%ebp | |
8433 + movl 16(%esi),%eax | |
8434 + adcl %edx,%ebx | |
8435 + movl 4(%edi),%edx | |
8436 + adcl $0,%ecx | |
8437 + # mul a[4]*b[1] | |
8438 + mull %edx | |
8439 + addl %eax,%ebp | |
8440 + movl 12(%esi),%eax | |
8441 + adcl %edx,%ebx | |
8442 + movl 8(%edi),%edx | |
8443 + adcl $0,%ecx | |
8444 + # mul a[3]*b[2] | |
8445 + mull %edx | |
8446 + addl %eax,%ebp | |
8447 + movl 8(%esi),%eax | |
8448 + adcl %edx,%ebx | |
8449 + movl 12(%edi),%edx | |
8450 + adcl $0,%ecx | |
8451 + # mul a[2]*b[3] | |
8452 + mull %edx | |
8453 + addl %eax,%ebp | |
8454 + movl 4(%esi),%eax | |
8455 + adcl %edx,%ebx | |
8456 + movl 16(%edi),%edx | |
8457 + adcl $0,%ecx | |
8458 + # mul a[1]*b[4] | |
8459 + mull %edx | |
8460 + addl %eax,%ebp | |
8461 + movl (%esi),%eax | |
8462 + adcl %edx,%ebx | |
8463 + movl 20(%edi),%edx | |
8464 + adcl $0,%ecx | |
8465 + # mul a[0]*b[5] | |
8466 + mull %edx | |
8467 + addl %eax,%ebp | |
8468 + movl 20(%esp),%eax | |
8469 + adcl %edx,%ebx | |
8470 + movl (%edi),%edx | |
8471 + adcl $0,%ecx | |
8472 + movl %ebp,20(%eax) | |
8473 + movl 24(%esi),%eax | |
8474 + # saved r[5] | |
8475 + # ################## Calculate word 6 | |
8476 + xorl %ebp,%ebp | |
8477 + # mul a[6]*b[0] | |
8478 + mull %edx | |
8479 + addl %eax,%ebx | |
8480 + movl 20(%esi),%eax | |
8481 + adcl %edx,%ecx | |
8482 + movl 4(%edi),%edx | |
8483 + adcl $0,%ebp | |
8484 + # mul a[5]*b[1] | |
8485 + mull %edx | |
8486 + addl %eax,%ebx | |
8487 + movl 16(%esi),%eax | |
8488 + adcl %edx,%ecx | |
8489 + movl 8(%edi),%edx | |
8490 + adcl $0,%ebp | |
8491 + # mul a[4]*b[2] | |
8492 + mull %edx | |
8493 + addl %eax,%ebx | |
8494 + movl 12(%esi),%eax | |
8495 + adcl %edx,%ecx | |
8496 + movl 12(%edi),%edx | |
8497 + adcl $0,%ebp | |
8498 + # mul a[3]*b[3] | |
8499 + mull %edx | |
8500 + addl %eax,%ebx | |
8501 + movl 8(%esi),%eax | |
8502 + adcl %edx,%ecx | |
8503 + movl 16(%edi),%edx | |
8504 + adcl $0,%ebp | |
8505 + # mul a[2]*b[4] | |
8506 + mull %edx | |
8507 + addl %eax,%ebx | |
8508 + movl 4(%esi),%eax | |
8509 + adcl %edx,%ecx | |
8510 + movl 20(%edi),%edx | |
8511 + adcl $0,%ebp | |
8512 + # mul a[1]*b[5] | |
8513 + mull %edx | |
8514 + addl %eax,%ebx | |
8515 + movl (%esi),%eax | |
8516 + adcl %edx,%ecx | |
8517 + movl 24(%edi),%edx | |
8518 + adcl $0,%ebp | |
8519 + # mul a[0]*b[6] | |
8520 + mull %edx | |
8521 + addl %eax,%ebx | |
8522 + movl 20(%esp),%eax | |
8523 + adcl %edx,%ecx | |
8524 + movl (%edi),%edx | |
8525 + adcl $0,%ebp | |
8526 + movl %ebx,24(%eax) | |
8527 + movl 28(%esi),%eax | |
8528 + # saved r[6] | |
8529 + # ################## Calculate word 7 | |
8530 + xorl %ebx,%ebx | |
8531 + # mul a[7]*b[0] | |
8532 + mull %edx | |
8533 + addl %eax,%ecx | |
8534 + movl 24(%esi),%eax | |
8535 + adcl %edx,%ebp | |
8536 + movl 4(%edi),%edx | |
8537 + adcl $0,%ebx | |
8538 + # mul a[6]*b[1] | |
8539 + mull %edx | |
8540 + addl %eax,%ecx | |
8541 + movl 20(%esi),%eax | |
8542 + adcl %edx,%ebp | |
8543 + movl 8(%edi),%edx | |
8544 + adcl $0,%ebx | |
8545 + # mul a[5]*b[2] | |
8546 + mull %edx | |
8547 + addl %eax,%ecx | |
8548 + movl 16(%esi),%eax | |
8549 + adcl %edx,%ebp | |
8550 + movl 12(%edi),%edx | |
8551 + adcl $0,%ebx | |
8552 + # mul a[4]*b[3] | |
8553 + mull %edx | |
8554 + addl %eax,%ecx | |
8555 + movl 12(%esi),%eax | |
8556 + adcl %edx,%ebp | |
8557 + movl 16(%edi),%edx | |
8558 + adcl $0,%ebx | |
8559 + # mul a[3]*b[4] | |
8560 + mull %edx | |
8561 + addl %eax,%ecx | |
8562 + movl 8(%esi),%eax | |
8563 + adcl %edx,%ebp | |
8564 + movl 20(%edi),%edx | |
8565 + adcl $0,%ebx | |
8566 + # mul a[2]*b[5] | |
8567 + mull %edx | |
8568 + addl %eax,%ecx | |
8569 + movl 4(%esi),%eax | |
8570 + adcl %edx,%ebp | |
8571 + movl 24(%edi),%edx | |
8572 + adcl $0,%ebx | |
8573 + # mul a[1]*b[6] | |
8574 + mull %edx | |
8575 + addl %eax,%ecx | |
8576 + movl (%esi),%eax | |
8577 + adcl %edx,%ebp | |
8578 + movl 28(%edi),%edx | |
8579 + adcl $0,%ebx | |
8580 + # mul a[0]*b[7] | |
8581 + mull %edx | |
8582 + addl %eax,%ecx | |
8583 + movl 20(%esp),%eax | |
8584 + adcl %edx,%ebp | |
8585 + movl 4(%edi),%edx | |
8586 + adcl $0,%ebx | |
8587 + movl %ecx,28(%eax) | |
8588 + movl 28(%esi),%eax | |
8589 + # saved r[7] | |
8590 + # ################## Calculate word 8 | |
8591 + xorl %ecx,%ecx | |
8592 + # mul a[7]*b[1] | |
8593 + mull %edx | |
8594 + addl %eax,%ebp | |
8595 + movl 24(%esi),%eax | |
8596 + adcl %edx,%ebx | |
8597 + movl 8(%edi),%edx | |
8598 + adcl $0,%ecx | |
8599 + # mul a[6]*b[2] | |
8600 + mull %edx | |
8601 + addl %eax,%ebp | |
8602 + movl 20(%esi),%eax | |
8603 + adcl %edx,%ebx | |
8604 + movl 12(%edi),%edx | |
8605 + adcl $0,%ecx | |
8606 + # mul a[5]*b[3] | |
8607 + mull %edx | |
8608 + addl %eax,%ebp | |
8609 + movl 16(%esi),%eax | |
8610 + adcl %edx,%ebx | |
8611 + movl 16(%edi),%edx | |
8612 + adcl $0,%ecx | |
8613 + # mul a[4]*b[4] | |
8614 + mull %edx | |
8615 + addl %eax,%ebp | |
8616 + movl 12(%esi),%eax | |
8617 + adcl %edx,%ebx | |
8618 + movl 20(%edi),%edx | |
8619 + adcl $0,%ecx | |
8620 + # mul a[3]*b[5] | |
8621 + mull %edx | |
8622 + addl %eax,%ebp | |
8623 + movl 8(%esi),%eax | |
8624 + adcl %edx,%ebx | |
8625 + movl 24(%edi),%edx | |
8626 + adcl $0,%ecx | |
8627 + # mul a[2]*b[6] | |
8628 + mull %edx | |
8629 + addl %eax,%ebp | |
8630 + movl 4(%esi),%eax | |
8631 + adcl %edx,%ebx | |
8632 + movl 28(%edi),%edx | |
8633 + adcl $0,%ecx | |
8634 + # mul a[1]*b[7] | |
8635 + mull %edx | |
8636 + addl %eax,%ebp | |
8637 + movl 20(%esp),%eax | |
8638 + adcl %edx,%ebx | |
8639 + movl 8(%edi),%edx | |
8640 + adcl $0,%ecx | |
8641 + movl %ebp,32(%eax) | |
8642 + movl 28(%esi),%eax | |
8643 + # saved r[8] | |
8644 + # ################## Calculate word 9 | |
8645 + xorl %ebp,%ebp | |
8646 + # mul a[7]*b[2] | |
8647 + mull %edx | |
8648 + addl %eax,%ebx | |
8649 + movl 24(%esi),%eax | |
8650 + adcl %edx,%ecx | |
8651 + movl 12(%edi),%edx | |
8652 + adcl $0,%ebp | |
8653 + # mul a[6]*b[3] | |
8654 + mull %edx | |
8655 + addl %eax,%ebx | |
8656 + movl 20(%esi),%eax | |
8657 + adcl %edx,%ecx | |
8658 + movl 16(%edi),%edx | |
8659 + adcl $0,%ebp | |
8660 + # mul a[5]*b[4] | |
8661 + mull %edx | |
8662 + addl %eax,%ebx | |
8663 + movl 16(%esi),%eax | |
8664 + adcl %edx,%ecx | |
8665 + movl 20(%edi),%edx | |
8666 + adcl $0,%ebp | |
8667 + # mul a[4]*b[5] | |
8668 + mull %edx | |
8669 + addl %eax,%ebx | |
8670 + movl 12(%esi),%eax | |
8671 + adcl %edx,%ecx | |
8672 + movl 24(%edi),%edx | |
8673 + adcl $0,%ebp | |
8674 + # mul a[3]*b[6] | |
8675 + mull %edx | |
8676 + addl %eax,%ebx | |
8677 + movl 8(%esi),%eax | |
8678 + adcl %edx,%ecx | |
8679 + movl 28(%edi),%edx | |
8680 + adcl $0,%ebp | |
8681 + # mul a[2]*b[7] | |
8682 + mull %edx | |
8683 + addl %eax,%ebx | |
8684 + movl 20(%esp),%eax | |
8685 + adcl %edx,%ecx | |
8686 + movl 12(%edi),%edx | |
8687 + adcl $0,%ebp | |
8688 + movl %ebx,36(%eax) | |
8689 + movl 28(%esi),%eax | |
8690 + # saved r[9] | |
8691 + # ################## Calculate word 10 | |
8692 + xorl %ebx,%ebx | |
8693 + # mul a[7]*b[3] | |
8694 + mull %edx | |
8695 + addl %eax,%ecx | |
8696 + movl 24(%esi),%eax | |
8697 + adcl %edx,%ebp | |
8698 + movl 16(%edi),%edx | |
8699 + adcl $0,%ebx | |
8700 + # mul a[6]*b[4] | |
8701 + mull %edx | |
8702 + addl %eax,%ecx | |
8703 + movl 20(%esi),%eax | |
8704 + adcl %edx,%ebp | |
8705 + movl 20(%edi),%edx | |
8706 + adcl $0,%ebx | |
8707 + # mul a[5]*b[5] | |
8708 + mull %edx | |
8709 + addl %eax,%ecx | |
8710 + movl 16(%esi),%eax | |
8711 + adcl %edx,%ebp | |
8712 + movl 24(%edi),%edx | |
8713 + adcl $0,%ebx | |
8714 + # mul a[4]*b[6] | |
8715 + mull %edx | |
8716 + addl %eax,%ecx | |
8717 + movl 12(%esi),%eax | |
8718 + adcl %edx,%ebp | |
8719 + movl 28(%edi),%edx | |
8720 + adcl $0,%ebx | |
8721 + # mul a[3]*b[7] | |
8722 + mull %edx | |
8723 + addl %eax,%ecx | |
8724 + movl 20(%esp),%eax | |
8725 + adcl %edx,%ebp | |
8726 + movl 16(%edi),%edx | |
8727 + adcl $0,%ebx | |
8728 + movl %ecx,40(%eax) | |
8729 + movl 28(%esi),%eax | |
8730 + # saved r[10] | |
8731 + # ################## Calculate word 11 | |
8732 + xorl %ecx,%ecx | |
8733 + # mul a[7]*b[4] | |
8734 + mull %edx | |
8735 + addl %eax,%ebp | |
8736 + movl 24(%esi),%eax | |
8737 + adcl %edx,%ebx | |
8738 + movl 20(%edi),%edx | |
8739 + adcl $0,%ecx | |
8740 + # mul a[6]*b[5] | |
8741 + mull %edx | |
8742 + addl %eax,%ebp | |
8743 + movl 20(%esi),%eax | |
8744 + adcl %edx,%ebx | |
8745 + movl 24(%edi),%edx | |
8746 + adcl $0,%ecx | |
8747 + # mul a[5]*b[6] | |
8748 + mull %edx | |
8749 + addl %eax,%ebp | |
8750 + movl 16(%esi),%eax | |
8751 + adcl %edx,%ebx | |
8752 + movl 28(%edi),%edx | |
8753 + adcl $0,%ecx | |
8754 + # mul a[4]*b[7] | |
8755 + mull %edx | |
8756 + addl %eax,%ebp | |
8757 + movl 20(%esp),%eax | |
8758 + adcl %edx,%ebx | |
8759 + movl 20(%edi),%edx | |
8760 + adcl $0,%ecx | |
8761 + movl %ebp,44(%eax) | |
8762 + movl 28(%esi),%eax | |
8763 + # saved r[11] | |
8764 + # ################## Calculate word 12 | |
8765 + xorl %ebp,%ebp | |
8766 + # mul a[7]*b[5] | |
8767 + mull %edx | |
8768 + addl %eax,%ebx | |
8769 + movl 24(%esi),%eax | |
8770 + adcl %edx,%ecx | |
8771 + movl 24(%edi),%edx | |
8772 + adcl $0,%ebp | |
8773 + # mul a[6]*b[6] | |
8774 + mull %edx | |
8775 + addl %eax,%ebx | |
8776 + movl 20(%esi),%eax | |
8777 + adcl %edx,%ecx | |
8778 + movl 28(%edi),%edx | |
8779 + adcl $0,%ebp | |
8780 + # mul a[5]*b[7] | |
8781 + mull %edx | |
8782 + addl %eax,%ebx | |
8783 + movl 20(%esp),%eax | |
8784 + adcl %edx,%ecx | |
8785 + movl 24(%edi),%edx | |
8786 + adcl $0,%ebp | |
8787 + movl %ebx,48(%eax) | |
8788 + movl 28(%esi),%eax | |
8789 + # saved r[12] | |
8790 + # ################## Calculate word 13 | |
8791 + xorl %ebx,%ebx | |
8792 + # mul a[7]*b[6] | |
8793 + mull %edx | |
8794 + addl %eax,%ecx | |
8795 + movl 24(%esi),%eax | |
8796 + adcl %edx,%ebp | |
8797 + movl 28(%edi),%edx | |
8798 + adcl $0,%ebx | |
8799 + # mul a[6]*b[7] | |
8800 + mull %edx | |
8801 + addl %eax,%ecx | |
8802 + movl 20(%esp),%eax | |
8803 + adcl %edx,%ebp | |
8804 + movl 28(%edi),%edx | |
8805 + adcl $0,%ebx | |
8806 + movl %ecx,52(%eax) | |
8807 + movl 28(%esi),%eax | |
8808 + # saved r[13] | |
8809 + # ################## Calculate word 14 | |
8810 + xorl %ecx,%ecx | |
8811 + # mul a[7]*b[7] | |
8812 + mull %edx | |
8813 + addl %eax,%ebp | |
8814 + movl 20(%esp),%eax | |
8815 + adcl %edx,%ebx | |
8816 + adcl $0,%ecx | |
8817 + movl %ebp,56(%eax) | |
8818 + # saved r[14] | |
8819 + # save r[15] | |
8820 + movl %ebx,60(%eax) | |
8821 + popl %ebx | |
8822 + popl %ebp | |
8823 + popl %edi | |
8824 + popl %esi | |
8825 + ret | |
8826 +.globl _bn_mul_comba4 | |
8827 +.align 4 | |
8828 +_bn_mul_comba4: | |
8829 +L_bn_mul_comba4_begin: | |
8830 + pushl %esi | |
8831 + movl 12(%esp),%esi | |
8832 + pushl %edi | |
8833 + movl 20(%esp),%edi | |
8834 + pushl %ebp | |
8835 + pushl %ebx | |
8836 + xorl %ebx,%ebx | |
8837 + movl (%esi),%eax | |
8838 + xorl %ecx,%ecx | |
8839 + movl (%edi),%edx | |
8840 + # ################## Calculate word 0 | |
8841 + xorl %ebp,%ebp | |
8842 + # mul a[0]*b[0] | |
8843 + mull %edx | |
8844 + addl %eax,%ebx | |
8845 + movl 20(%esp),%eax | |
8846 + adcl %edx,%ecx | |
8847 + movl (%edi),%edx | |
8848 + adcl $0,%ebp | |
8849 + movl %ebx,(%eax) | |
8850 + movl 4(%esi),%eax | |
8851 + # saved r[0] | |
8852 + # ################## Calculate word 1 | |
8853 + xorl %ebx,%ebx | |
8854 + # mul a[1]*b[0] | |
8855 + mull %edx | |
8856 + addl %eax,%ecx | |
8857 + movl (%esi),%eax | |
8858 + adcl %edx,%ebp | |
8859 + movl 4(%edi),%edx | |
8860 + adcl $0,%ebx | |
8861 + # mul a[0]*b[1] | |
8862 + mull %edx | |
8863 + addl %eax,%ecx | |
8864 + movl 20(%esp),%eax | |
8865 + adcl %edx,%ebp | |
8866 + movl (%edi),%edx | |
8867 + adcl $0,%ebx | |
8868 + movl %ecx,4(%eax) | |
8869 + movl 8(%esi),%eax | |
8870 + # saved r[1] | |
8871 + # ################## Calculate word 2 | |
8872 + xorl %ecx,%ecx | |
8873 + # mul a[2]*b[0] | |
8874 + mull %edx | |
8875 + addl %eax,%ebp | |
8876 + movl 4(%esi),%eax | |
8877 + adcl %edx,%ebx | |
8878 + movl 4(%edi),%edx | |
8879 + adcl $0,%ecx | |
8880 + # mul a[1]*b[1] | |
8881 + mull %edx | |
8882 + addl %eax,%ebp | |
8883 + movl (%esi),%eax | |
8884 + adcl %edx,%ebx | |
8885 + movl 8(%edi),%edx | |
8886 + adcl $0,%ecx | |
8887 + # mul a[0]*b[2] | |
8888 + mull %edx | |
8889 + addl %eax,%ebp | |
8890 + movl 20(%esp),%eax | |
8891 + adcl %edx,%ebx | |
8892 + movl (%edi),%edx | |
8893 + adcl $0,%ecx | |
8894 + movl %ebp,8(%eax) | |
8895 + movl 12(%esi),%eax | |
8896 + # saved r[2] | |
8897 + # ################## Calculate word 3 | |
8898 + xorl %ebp,%ebp | |
8899 + # mul a[3]*b[0] | |
8900 + mull %edx | |
8901 + addl %eax,%ebx | |
8902 + movl 8(%esi),%eax | |
8903 + adcl %edx,%ecx | |
8904 + movl 4(%edi),%edx | |
8905 + adcl $0,%ebp | |
8906 + # mul a[2]*b[1] | |
8907 + mull %edx | |
8908 + addl %eax,%ebx | |
8909 + movl 4(%esi),%eax | |
8910 + adcl %edx,%ecx | |
8911 + movl 8(%edi),%edx | |
8912 + adcl $0,%ebp | |
8913 + # mul a[1]*b[2] | |
8914 + mull %edx | |
8915 + addl %eax,%ebx | |
8916 + movl (%esi),%eax | |
8917 + adcl %edx,%ecx | |
8918 + movl 12(%edi),%edx | |
8919 + adcl $0,%ebp | |
8920 + # mul a[0]*b[3] | |
8921 + mull %edx | |
8922 + addl %eax,%ebx | |
8923 + movl 20(%esp),%eax | |
8924 + adcl %edx,%ecx | |
8925 + movl 4(%edi),%edx | |
8926 + adcl $0,%ebp | |
8927 + movl %ebx,12(%eax) | |
8928 + movl 12(%esi),%eax | |
8929 + # saved r[3] | |
8930 + # ################## Calculate word 4 | |
8931 + xorl %ebx,%ebx | |
8932 + # mul a[3]*b[1] | |
8933 + mull %edx | |
8934 + addl %eax,%ecx | |
8935 + movl 8(%esi),%eax | |
8936 + adcl %edx,%ebp | |
8937 + movl 8(%edi),%edx | |
8938 + adcl $0,%ebx | |
8939 + # mul a[2]*b[2] | |
8940 + mull %edx | |
8941 + addl %eax,%ecx | |
8942 + movl 4(%esi),%eax | |
8943 + adcl %edx,%ebp | |
8944 + movl 12(%edi),%edx | |
8945 + adcl $0,%ebx | |
8946 + # mul a[1]*b[3] | |
8947 + mull %edx | |
8948 + addl %eax,%ecx | |
8949 + movl 20(%esp),%eax | |
8950 + adcl %edx,%ebp | |
8951 + movl 8(%edi),%edx | |
8952 + adcl $0,%ebx | |
8953 + movl %ecx,16(%eax) | |
8954 + movl 12(%esi),%eax | |
8955 + # saved r[4] | |
8956 + # ################## Calculate word 5 | |
8957 + xorl %ecx,%ecx | |
8958 + # mul a[3]*b[2] | |
8959 + mull %edx | |
8960 + addl %eax,%ebp | |
8961 + movl 8(%esi),%eax | |
8962 + adcl %edx,%ebx | |
8963 + movl 12(%edi),%edx | |
8964 + adcl $0,%ecx | |
8965 + # mul a[2]*b[3] | |
8966 + mull %edx | |
8967 + addl %eax,%ebp | |
8968 + movl 20(%esp),%eax | |
8969 + adcl %edx,%ebx | |
8970 + movl 12(%edi),%edx | |
8971 + adcl $0,%ecx | |
8972 + movl %ebp,20(%eax) | |
8973 + movl 12(%esi),%eax | |
8974 + # saved r[5] | |
8975 + # ################## Calculate word 6 | |
8976 + xorl %ebp,%ebp | |
8977 + # mul a[3]*b[3] | |
8978 + mull %edx | |
8979 + addl %eax,%ebx | |
8980 + movl 20(%esp),%eax | |
8981 + adcl %edx,%ecx | |
8982 + adcl $0,%ebp | |
8983 + movl %ebx,24(%eax) | |
8984 + # saved r[6] | |
8985 + # save r[7] | |
8986 + movl %ecx,28(%eax) | |
8987 + popl %ebx | |
8988 + popl %ebp | |
8989 + popl %edi | |
8990 + popl %esi | |
8991 + ret | |
8992 +.globl _bn_sqr_comba8 | |
8993 +.align 4 | |
8994 +_bn_sqr_comba8: | |
8995 +L_bn_sqr_comba8_begin: | |
8996 + pushl %esi | |
8997 + pushl %edi | |
8998 + pushl %ebp | |
8999 + pushl %ebx | |
9000 + movl 20(%esp),%edi | |
9001 + movl 24(%esp),%esi | |
9002 + xorl %ebx,%ebx | |
9003 + xorl %ecx,%ecx | |
9004 + movl (%esi),%eax | |
9005 + # ############### Calculate word 0 | |
9006 + xorl %ebp,%ebp | |
9007 + # sqr a[0]*a[0] | |
9008 + mull %eax | |
9009 + addl %eax,%ebx | |
9010 + adcl %edx,%ecx | |
9011 + movl (%esi),%edx | |
9012 + adcl $0,%ebp | |
9013 + movl %ebx,(%edi) | |
9014 + movl 4(%esi),%eax | |
9015 + # saved r[0] | |
9016 + # ############### Calculate word 1 | |
9017 + xorl %ebx,%ebx | |
9018 + # sqr a[1]*a[0] | |
9019 + mull %edx | |
9020 + addl %eax,%eax | |
9021 + adcl %edx,%edx | |
9022 + adcl $0,%ebx | |
9023 + addl %eax,%ecx | |
9024 + adcl %edx,%ebp | |
9025 + movl 8(%esi),%eax | |
9026 + adcl $0,%ebx | |
9027 + movl %ecx,4(%edi) | |
9028 + movl (%esi),%edx | |
9029 + # saved r[1] | |
9030 + # ############### Calculate word 2 | |
9031 + xorl %ecx,%ecx | |
9032 + # sqr a[2]*a[0] | |
9033 + mull %edx | |
9034 + addl %eax,%eax | |
9035 + adcl %edx,%edx | |
9036 + adcl $0,%ecx | |
9037 + addl %eax,%ebp | |
9038 + adcl %edx,%ebx | |
9039 + movl 4(%esi),%eax | |
9040 + adcl $0,%ecx | |
9041 + # sqr a[1]*a[1] | |
9042 + mull %eax | |
9043 + addl %eax,%ebp | |
9044 + adcl %edx,%ebx | |
9045 + movl (%esi),%edx | |
9046 + adcl $0,%ecx | |
9047 + movl %ebp,8(%edi) | |
9048 + movl 12(%esi),%eax | |
9049 + # saved r[2] | |
9050 + # ############### Calculate word 3 | |
9051 + xorl %ebp,%ebp | |
9052 + # sqr a[3]*a[0] | |
9053 + mull %edx | |
9054 + addl %eax,%eax | |
9055 + adcl %edx,%edx | |
9056 + adcl $0,%ebp | |
9057 + addl %eax,%ebx | |
9058 + adcl %edx,%ecx | |
9059 + movl 8(%esi),%eax | |
9060 + adcl $0,%ebp | |
9061 + movl 4(%esi),%edx | |
9062 + # sqr a[2]*a[1] | |
9063 + mull %edx | |
9064 + addl %eax,%eax | |
9065 + adcl %edx,%edx | |
9066 + adcl $0,%ebp | |
9067 + addl %eax,%ebx | |
9068 + adcl %edx,%ecx | |
9069 + movl 16(%esi),%eax | |
9070 + adcl $0,%ebp | |
9071 + movl %ebx,12(%edi) | |
9072 + movl (%esi),%edx | |
9073 + # saved r[3] | |
9074 + # ############### Calculate word 4 | |
9075 + xorl %ebx,%ebx | |
9076 + # sqr a[4]*a[0] | |
9077 + mull %edx | |
9078 + addl %eax,%eax | |
9079 + adcl %edx,%edx | |
9080 + adcl $0,%ebx | |
9081 + addl %eax,%ecx | |
9082 + adcl %edx,%ebp | |
9083 + movl 12(%esi),%eax | |
9084 + adcl $0,%ebx | |
9085 + movl 4(%esi),%edx | |
9086 + # sqr a[3]*a[1] | |
9087 + mull %edx | |
9088 + addl %eax,%eax | |
9089 + adcl %edx,%edx | |
9090 + adcl $0,%ebx | |
9091 + addl %eax,%ecx | |
9092 + adcl %edx,%ebp | |
9093 + movl 8(%esi),%eax | |
9094 + adcl $0,%ebx | |
9095 + # sqr a[2]*a[2] | |
9096 + mull %eax | |
9097 + addl %eax,%ecx | |
9098 + adcl %edx,%ebp | |
9099 + movl (%esi),%edx | |
9100 + adcl $0,%ebx | |
9101 + movl %ecx,16(%edi) | |
9102 + movl 20(%esi),%eax | |
9103 + # saved r[4] | |
9104 + # ############### Calculate word 5 | |
9105 + xorl %ecx,%ecx | |
9106 + # sqr a[5]*a[0] | |
9107 + mull %edx | |
9108 + addl %eax,%eax | |
9109 + adcl %edx,%edx | |
9110 + adcl $0,%ecx | |
9111 + addl %eax,%ebp | |
9112 + adcl %edx,%ebx | |
9113 + movl 16(%esi),%eax | |
9114 + adcl $0,%ecx | |
9115 + movl 4(%esi),%edx | |
9116 + # sqr a[4]*a[1] | |
9117 + mull %edx | |
9118 + addl %eax,%eax | |
9119 + adcl %edx,%edx | |
9120 + adcl $0,%ecx | |
9121 + addl %eax,%ebp | |
9122 + adcl %edx,%ebx | |
9123 + movl 12(%esi),%eax | |
9124 + adcl $0,%ecx | |
9125 + movl 8(%esi),%edx | |
9126 + # sqr a[3]*a[2] | |
9127 + mull %edx | |
9128 + addl %eax,%eax | |
9129 + adcl %edx,%edx | |
9130 + adcl $0,%ecx | |
9131 + addl %eax,%ebp | |
9132 + adcl %edx,%ebx | |
9133 + movl 24(%esi),%eax | |
9134 + adcl $0,%ecx | |
9135 + movl %ebp,20(%edi) | |
9136 + movl (%esi),%edx | |
9137 + # saved r[5] | |
9138 + # ############### Calculate word 6 | |
9139 + xorl %ebp,%ebp | |
9140 + # sqr a[6]*a[0] | |
9141 + mull %edx | |
9142 + addl %eax,%eax | |
9143 + adcl %edx,%edx | |
9144 + adcl $0,%ebp | |
9145 + addl %eax,%ebx | |
9146 + adcl %edx,%ecx | |
9147 + movl 20(%esi),%eax | |
9148 + adcl $0,%ebp | |
9149 + movl 4(%esi),%edx | |
9150 + # sqr a[5]*a[1] | |
9151 + mull %edx | |
9152 + addl %eax,%eax | |
9153 + adcl %edx,%edx | |
9154 + adcl $0,%ebp | |
9155 + addl %eax,%ebx | |
9156 + adcl %edx,%ecx | |
9157 + movl 16(%esi),%eax | |
9158 + adcl $0,%ebp | |
9159 + movl 8(%esi),%edx | |
9160 + # sqr a[4]*a[2] | |
9161 + mull %edx | |
9162 + addl %eax,%eax | |
9163 + adcl %edx,%edx | |
9164 + adcl $0,%ebp | |
9165 + addl %eax,%ebx | |
9166 + adcl %edx,%ecx | |
9167 + movl 12(%esi),%eax | |
9168 + adcl $0,%ebp | |
9169 + # sqr a[3]*a[3] | |
9170 + mull %eax | |
9171 + addl %eax,%ebx | |
9172 + adcl %edx,%ecx | |
9173 + movl (%esi),%edx | |
9174 + adcl $0,%ebp | |
9175 + movl %ebx,24(%edi) | |
9176 + movl 28(%esi),%eax | |
9177 + # saved r[6] | |
9178 + # ############### Calculate word 7 | |
9179 + xorl %ebx,%ebx | |
9180 + # sqr a[7]*a[0] | |
9181 + mull %edx | |
9182 + addl %eax,%eax | |
9183 + adcl %edx,%edx | |
9184 + adcl $0,%ebx | |
9185 + addl %eax,%ecx | |
9186 + adcl %edx,%ebp | |
9187 + movl 24(%esi),%eax | |
9188 + adcl $0,%ebx | |
9189 + movl 4(%esi),%edx | |
9190 + # sqr a[6]*a[1] | |
9191 + mull %edx | |
9192 + addl %eax,%eax | |
9193 + adcl %edx,%edx | |
9194 + adcl $0,%ebx | |
9195 + addl %eax,%ecx | |
9196 + adcl %edx,%ebp | |
9197 + movl 20(%esi),%eax | |
9198 + adcl $0,%ebx | |
9199 + movl 8(%esi),%edx | |
9200 + # sqr a[5]*a[2] | |
9201 + mull %edx | |
9202 + addl %eax,%eax | |
9203 + adcl %edx,%edx | |
9204 + adcl $0,%ebx | |
9205 + addl %eax,%ecx | |
9206 + adcl %edx,%ebp | |
9207 + movl 16(%esi),%eax | |
9208 + adcl $0,%ebx | |
9209 + movl 12(%esi),%edx | |
9210 + # sqr a[4]*a[3] | |
9211 + mull %edx | |
9212 + addl %eax,%eax | |
9213 + adcl %edx,%edx | |
9214 + adcl $0,%ebx | |
9215 + addl %eax,%ecx | |
9216 + adcl %edx,%ebp | |
9217 + movl 28(%esi),%eax | |
9218 + adcl $0,%ebx | |
9219 + movl %ecx,28(%edi) | |
9220 + movl 4(%esi),%edx | |
9221 + # saved r[7] | |
9222 + # ############### Calculate word 8 | |
9223 + xorl %ecx,%ecx | |
9224 + # sqr a[7]*a[1] | |
9225 + mull %edx | |
9226 + addl %eax,%eax | |
9227 + adcl %edx,%edx | |
9228 + adcl $0,%ecx | |
9229 + addl %eax,%ebp | |
9230 + adcl %edx,%ebx | |
9231 + movl 24(%esi),%eax | |
9232 + adcl $0,%ecx | |
9233 + movl 8(%esi),%edx | |
9234 + # sqr a[6]*a[2] | |
9235 + mull %edx | |
9236 + addl %eax,%eax | |
9237 + adcl %edx,%edx | |
9238 + adcl $0,%ecx | |
9239 + addl %eax,%ebp | |
9240 + adcl %edx,%ebx | |
9241 + movl 20(%esi),%eax | |
9242 + adcl $0,%ecx | |
9243 + movl 12(%esi),%edx | |
9244 + # sqr a[5]*a[3] | |
9245 + mull %edx | |
9246 + addl %eax,%eax | |
9247 + adcl %edx,%edx | |
9248 + adcl $0,%ecx | |
9249 + addl %eax,%ebp | |
9250 + adcl %edx,%ebx | |
9251 + movl 16(%esi),%eax | |
9252 + adcl $0,%ecx | |
9253 + # sqr a[4]*a[4] | |
9254 + mull %eax | |
9255 + addl %eax,%ebp | |
9256 + adcl %edx,%ebx | |
9257 + movl 8(%esi),%edx | |
9258 + adcl $0,%ecx | |
9259 + movl %ebp,32(%edi) | |
9260 + movl 28(%esi),%eax | |
9261 + # saved r[8] | |
9262 + # ############### Calculate word 9 | |
9263 + xorl %ebp,%ebp | |
9264 + # sqr a[7]*a[2] | |
9265 + mull %edx | |
9266 + addl %eax,%eax | |
9267 + adcl %edx,%edx | |
9268 + adcl $0,%ebp | |
9269 + addl %eax,%ebx | |
9270 + adcl %edx,%ecx | |
9271 + movl 24(%esi),%eax | |
9272 + adcl $0,%ebp | |
9273 + movl 12(%esi),%edx | |
9274 + # sqr a[6]*a[3] | |
9275 + mull %edx | |
9276 + addl %eax,%eax | |
9277 + adcl %edx,%edx | |
9278 + adcl $0,%ebp | |
9279 + addl %eax,%ebx | |
9280 + adcl %edx,%ecx | |
9281 + movl 20(%esi),%eax | |
9282 + adcl $0,%ebp | |
9283 + movl 16(%esi),%edx | |
9284 + # sqr a[5]*a[4] | |
9285 + mull %edx | |
9286 + addl %eax,%eax | |
9287 + adcl %edx,%edx | |
9288 + adcl $0,%ebp | |
9289 + addl %eax,%ebx | |
9290 + adcl %edx,%ecx | |
9291 + movl 28(%esi),%eax | |
9292 + adcl $0,%ebp | |
9293 + movl %ebx,36(%edi) | |
9294 + movl 12(%esi),%edx | |
9295 + # saved r[9] | |
9296 + # ############### Calculate word 10 | |
9297 + xorl %ebx,%ebx | |
9298 + # sqr a[7]*a[3] | |
9299 + mull %edx | |
9300 + addl %eax,%eax | |
9301 + adcl %edx,%edx | |
9302 + adcl $0,%ebx | |
9303 + addl %eax,%ecx | |
9304 + adcl %edx,%ebp | |
9305 + movl 24(%esi),%eax | |
9306 + adcl $0,%ebx | |
9307 + movl 16(%esi),%edx | |
9308 + # sqr a[6]*a[4] | |
9309 + mull %edx | |
9310 + addl %eax,%eax | |
9311 + adcl %edx,%edx | |
9312 + adcl $0,%ebx | |
9313 + addl %eax,%ecx | |
9314 + adcl %edx,%ebp | |
9315 + movl 20(%esi),%eax | |
9316 + adcl $0,%ebx | |
9317 + # sqr a[5]*a[5] | |
9318 + mull %eax | |
9319 + addl %eax,%ecx | |
9320 + adcl %edx,%ebp | |
9321 + movl 16(%esi),%edx | |
9322 + adcl $0,%ebx | |
9323 + movl %ecx,40(%edi) | |
9324 + movl 28(%esi),%eax | |
9325 + # saved r[10] | |
9326 + # ############### Calculate word 11 | |
9327 + xorl %ecx,%ecx | |
9328 + # sqr a[7]*a[4] | |
9329 + mull %edx | |
9330 + addl %eax,%eax | |
9331 + adcl %edx,%edx | |
9332 + adcl $0,%ecx | |
9333 + addl %eax,%ebp | |
9334 + adcl %edx,%ebx | |
9335 + movl 24(%esi),%eax | |
9336 + adcl $0,%ecx | |
9337 + movl 20(%esi),%edx | |
9338 + # sqr a[6]*a[5] | |
9339 + mull %edx | |
9340 + addl %eax,%eax | |
9341 + adcl %edx,%edx | |
9342 + adcl $0,%ecx | |
9343 + addl %eax,%ebp | |
9344 + adcl %edx,%ebx | |
9345 + movl 28(%esi),%eax | |
9346 + adcl $0,%ecx | |
9347 + movl %ebp,44(%edi) | |
9348 + movl 20(%esi),%edx | |
9349 + # saved r[11] | |
9350 + # ############### Calculate word 12 | |
9351 + xorl %ebp,%ebp | |
9352 + # sqr a[7]*a[5] | |
9353 + mull %edx | |
9354 + addl %eax,%eax | |
9355 + adcl %edx,%edx | |
9356 + adcl $0,%ebp | |
9357 + addl %eax,%ebx | |
9358 + adcl %edx,%ecx | |
9359 + movl 24(%esi),%eax | |
9360 + adcl $0,%ebp | |
9361 + # sqr a[6]*a[6] | |
9362 + mull %eax | |
9363 + addl %eax,%ebx | |
9364 + adcl %edx,%ecx | |
9365 + movl 24(%esi),%edx | |
9366 + adcl $0,%ebp | |
9367 + movl %ebx,48(%edi) | |
9368 + movl 28(%esi),%eax | |
9369 + # saved r[12] | |
9370 + # ############### Calculate word 13 | |
9371 + xorl %ebx,%ebx | |
9372 + # sqr a[7]*a[6] | |
9373 + mull %edx | |
9374 + addl %eax,%eax | |
9375 + adcl %edx,%edx | |
9376 + adcl $0,%ebx | |
9377 + addl %eax,%ecx | |
9378 + adcl %edx,%ebp | |
9379 + movl 28(%esi),%eax | |
9380 + adcl $0,%ebx | |
9381 + movl %ecx,52(%edi) | |
9382 + # saved r[13] | |
9383 + # ############### Calculate word 14 | |
9384 + xorl %ecx,%ecx | |
9385 + # sqr a[7]*a[7] | |
9386 + mull %eax | |
9387 + addl %eax,%ebp | |
9388 + adcl %edx,%ebx | |
9389 + adcl $0,%ecx | |
9390 + movl %ebp,56(%edi) | |
9391 + # saved r[14] | |
9392 + movl %ebx,60(%edi) | |
9393 + popl %ebx | |
9394 + popl %ebp | |
9395 + popl %edi | |
9396 + popl %esi | |
9397 + ret | |
9398 +.globl _bn_sqr_comba4 | |
9399 +.align 4 | |
9400 +_bn_sqr_comba4: | |
9401 +L_bn_sqr_comba4_begin: | |
9402 + pushl %esi | |
9403 + pushl %edi | |
9404 + pushl %ebp | |
9405 + pushl %ebx | |
9406 + movl 20(%esp),%edi | |
9407 + movl 24(%esp),%esi | |
9408 + xorl %ebx,%ebx | |
9409 + xorl %ecx,%ecx | |
9410 + movl (%esi),%eax | |
9411 + # ############### Calculate word 0 | |
9412 + xorl %ebp,%ebp | |
9413 + # sqr a[0]*a[0] | |
9414 + mull %eax | |
9415 + addl %eax,%ebx | |
9416 + adcl %edx,%ecx | |
9417 + movl (%esi),%edx | |
9418 + adcl $0,%ebp | |
9419 + movl %ebx,(%edi) | |
9420 + movl 4(%esi),%eax | |
9421 + # saved r[0] | |
9422 + # ############### Calculate word 1 | |
9423 + xorl %ebx,%ebx | |
9424 + # sqr a[1]*a[0] | |
9425 + mull %edx | |
9426 + addl %eax,%eax | |
9427 + adcl %edx,%edx | |
9428 + adcl $0,%ebx | |
9429 + addl %eax,%ecx | |
9430 + adcl %edx,%ebp | |
9431 + movl 8(%esi),%eax | |
9432 + adcl $0,%ebx | |
9433 + movl %ecx,4(%edi) | |
9434 + movl (%esi),%edx | |
9435 + # saved r[1] | |
9436 + # ############### Calculate word 2 | |
9437 + xorl %ecx,%ecx | |
9438 + # sqr a[2]*a[0] | |
9439 + mull %edx | |
9440 + addl %eax,%eax | |
9441 + adcl %edx,%edx | |
9442 + adcl $0,%ecx | |
9443 + addl %eax,%ebp | |
9444 + adcl %edx,%ebx | |
9445 + movl 4(%esi),%eax | |
9446 + adcl $0,%ecx | |
9447 + # sqr a[1]*a[1] | |
9448 + mull %eax | |
9449 + addl %eax,%ebp | |
9450 + adcl %edx,%ebx | |
9451 + movl (%esi),%edx | |
9452 + adcl $0,%ecx | |
9453 + movl %ebp,8(%edi) | |
9454 + movl 12(%esi),%eax | |
9455 + # saved r[2] | |
9456 + # ############### Calculate word 3 | |
9457 + xorl %ebp,%ebp | |
9458 + # sqr a[3]*a[0] | |
9459 + mull %edx | |
9460 + addl %eax,%eax | |
9461 + adcl %edx,%edx | |
9462 + adcl $0,%ebp | |
9463 + addl %eax,%ebx | |
9464 + adcl %edx,%ecx | |
9465 + movl 8(%esi),%eax | |
9466 + adcl $0,%ebp | |
9467 + movl 4(%esi),%edx | |
9468 + # sqr a[2]*a[1] | |
9469 + mull %edx | |
9470 + addl %eax,%eax | |
9471 + adcl %edx,%edx | |
9472 + adcl $0,%ebp | |
9473 + addl %eax,%ebx | |
9474 + adcl %edx,%ecx | |
9475 + movl 12(%esi),%eax | |
9476 + adcl $0,%ebp | |
9477 + movl %ebx,12(%edi) | |
9478 + movl 4(%esi),%edx | |
9479 + # saved r[3] | |
9480 + # ############### Calculate word 4 | |
9481 + xorl %ebx,%ebx | |
9482 + # sqr a[3]*a[1] | |
9483 + mull %edx | |
9484 + addl %eax,%eax | |
9485 + adcl %edx,%edx | |
9486 + adcl $0,%ebx | |
9487 + addl %eax,%ecx | |
9488 + adcl %edx,%ebp | |
9489 + movl 8(%esi),%eax | |
9490 + adcl $0,%ebx | |
9491 + # sqr a[2]*a[2] | |
9492 + mull %eax | |
9493 + addl %eax,%ecx | |
9494 + adcl %edx,%ebp | |
9495 + movl 8(%esi),%edx | |
9496 + adcl $0,%ebx | |
9497 + movl %ecx,16(%edi) | |
9498 + movl 12(%esi),%eax | |
9499 + # saved r[4] | |
9500 + # ############### Calculate word 5 | |
9501 + xorl %ecx,%ecx | |
9502 + # sqr a[3]*a[2] | |
9503 + mull %edx | |
9504 + addl %eax,%eax | |
9505 + adcl %edx,%edx | |
9506 + adcl $0,%ecx | |
9507 + addl %eax,%ebp | |
9508 + adcl %edx,%ebx | |
9509 + movl 12(%esi),%eax | |
9510 + adcl $0,%ecx | |
9511 + movl %ebp,20(%edi) | |
9512 + # saved r[5] | |
9513 + # ############### Calculate word 6 | |
9514 + xorl %ebp,%ebp | |
9515 + # sqr a[3]*a[3] | |
9516 + mull %eax | |
9517 + addl %eax,%ebx | |
9518 + adcl %edx,%ecx | |
9519 + adcl $0,%ebp | |
9520 + movl %ebx,24(%edi) | |
9521 + # saved r[6] | |
9522 + movl %ecx,28(%edi) | |
9523 + popl %ebx | |
9524 + popl %ebp | |
9525 + popl %edi | |
9526 + popl %esi | |
9527 + ret | |
9528 diff --git a/crypto/bn/asm/x86-gf2m-mac.S b/crypto/bn/asm/x86-gf2m-mac.S | |
9529 new file mode 100644 | |
9530 index 0000000..31718e0 | |
9531 --- /dev/null | |
9532 +++ b/crypto/bn/asm/x86-gf2m-mac.S | |
9533 @@ -0,0 +1,332 @@ | |
9534 +.file "crypto/bn/asm/x86-gf2m.s" | |
9535 +.text | |
9536 +.align 4 | |
9537 +__mul_1x1_mmx: | |
9538 + subl $36,%esp | |
9539 + movl %eax,%ecx | |
9540 + leal (%eax,%eax,1),%edx | |
9541 + andl $1073741823,%ecx | |
9542 + leal (%edx,%edx,1),%ebp | |
9543 + movl $0,(%esp) | |
9544 + andl $2147483647,%edx | |
9545 + movd %eax,%mm2 | |
9546 + movd %ebx,%mm3 | |
9547 + movl %ecx,4(%esp) | |
9548 + xorl %edx,%ecx | |
9549 + pxor %mm5,%mm5 | |
9550 + pxor %mm4,%mm4 | |
9551 + movl %edx,8(%esp) | |
9552 + xorl %ebp,%edx | |
9553 + movl %ecx,12(%esp) | |
9554 + pcmpgtd %mm2,%mm5 | |
9555 + paddd %mm2,%mm2 | |
9556 + xorl %edx,%ecx | |
9557 + movl %ebp,16(%esp) | |
9558 + xorl %edx,%ebp | |
9559 + pand %mm3,%mm5 | |
9560 + pcmpgtd %mm2,%mm4 | |
9561 + movl %ecx,20(%esp) | |
9562 + xorl %ecx,%ebp | |
9563 + psllq $31,%mm5 | |
9564 + pand %mm3,%mm4 | |
9565 + movl %edx,24(%esp) | |
9566 + movl $7,%esi | |
9567 + movl %ebp,28(%esp) | |
9568 + movl %esi,%ebp | |
9569 + andl %ebx,%esi | |
9570 + shrl $3,%ebx | |
9571 + movl %ebp,%edi | |
9572 + psllq $30,%mm4 | |
9573 + andl %ebx,%edi | |
9574 + shrl $3,%ebx | |
9575 + movd (%esp,%esi,4),%mm0 | |
9576 + movl %ebp,%esi | |
9577 + andl %ebx,%esi | |
9578 + shrl $3,%ebx | |
9579 + movd (%esp,%edi,4),%mm2 | |
9580 + movl %ebp,%edi | |
9581 + psllq $3,%mm2 | |
9582 + andl %ebx,%edi | |
9583 + shrl $3,%ebx | |
9584 + pxor %mm2,%mm0 | |
9585 + movd (%esp,%esi,4),%mm1 | |
9586 + movl %ebp,%esi | |
9587 + psllq $6,%mm1 | |
9588 + andl %ebx,%esi | |
9589 + shrl $3,%ebx | |
9590 + pxor %mm1,%mm0 | |
9591 + movd (%esp,%edi,4),%mm2 | |
9592 + movl %ebp,%edi | |
9593 + psllq $9,%mm2 | |
9594 + andl %ebx,%edi | |
9595 + shrl $3,%ebx | |
9596 + pxor %mm2,%mm0 | |
9597 + movd (%esp,%esi,4),%mm1 | |
9598 + movl %ebp,%esi | |
9599 + psllq $12,%mm1 | |
9600 + andl %ebx,%esi | |
9601 + shrl $3,%ebx | |
9602 + pxor %mm1,%mm0 | |
9603 + movd (%esp,%edi,4),%mm2 | |
9604 + movl %ebp,%edi | |
9605 + psllq $15,%mm2 | |
9606 + andl %ebx,%edi | |
9607 + shrl $3,%ebx | |
9608 + pxor %mm2,%mm0 | |
9609 + movd (%esp,%esi,4),%mm1 | |
9610 + movl %ebp,%esi | |
9611 + psllq $18,%mm1 | |
9612 + andl %ebx,%esi | |
9613 + shrl $3,%ebx | |
9614 + pxor %mm1,%mm0 | |
9615 + movd (%esp,%edi,4),%mm2 | |
9616 + movl %ebp,%edi | |
9617 + psllq $21,%mm2 | |
9618 + andl %ebx,%edi | |
9619 + shrl $3,%ebx | |
9620 + pxor %mm2,%mm0 | |
9621 + movd (%esp,%esi,4),%mm1 | |
9622 + movl %ebp,%esi | |
9623 + psllq $24,%mm1 | |
9624 + andl %ebx,%esi | |
9625 + shrl $3,%ebx | |
9626 + pxor %mm1,%mm0 | |
9627 + movd (%esp,%edi,4),%mm2 | |
9628 + pxor %mm4,%mm0 | |
9629 + psllq $27,%mm2 | |
9630 + pxor %mm2,%mm0 | |
9631 + movd (%esp,%esi,4),%mm1 | |
9632 + pxor %mm5,%mm0 | |
9633 + psllq $30,%mm1 | |
9634 + addl $36,%esp | |
9635 + pxor %mm1,%mm0 | |
9636 + ret | |
9637 +.align 4 | |
9638 +__mul_1x1_ialu: | |
9639 + subl $36,%esp | |
9640 + movl %eax,%ecx | |
9641 + leal (%eax,%eax,1),%edx | |
9642 + leal (,%eax,4),%ebp | |
9643 + andl $1073741823,%ecx | |
9644 + leal (%eax,%eax,1),%edi | |
9645 + sarl $31,%eax | |
9646 + movl $0,(%esp) | |
9647 + andl $2147483647,%edx | |
9648 + movl %ecx,4(%esp) | |
9649 + xorl %edx,%ecx | |
9650 + movl %edx,8(%esp) | |
9651 + xorl %ebp,%edx | |
9652 + movl %ecx,12(%esp) | |
9653 + xorl %edx,%ecx | |
9654 + movl %ebp,16(%esp) | |
9655 + xorl %edx,%ebp | |
9656 + movl %ecx,20(%esp) | |
9657 + xorl %ecx,%ebp | |
9658 + sarl $31,%edi | |
9659 + andl %ebx,%eax | |
9660 + movl %edx,24(%esp) | |
9661 + andl %ebx,%edi | |
9662 + movl %ebp,28(%esp) | |
9663 + movl %eax,%edx | |
9664 + shll $31,%eax | |
9665 + movl %edi,%ecx | |
9666 + shrl $1,%edx | |
9667 + movl $7,%esi | |
9668 + shll $30,%edi | |
9669 + andl %ebx,%esi | |
9670 + shrl $2,%ecx | |
9671 + xorl %edi,%eax | |
9672 + shrl $3,%ebx | |
9673 + movl $7,%edi | |
9674 + andl %ebx,%edi | |
9675 + shrl $3,%ebx | |
9676 + xorl %ecx,%edx | |
9677 + xorl (%esp,%esi,4),%eax | |
9678 + movl $7,%esi | |
9679 + andl %ebx,%esi | |
9680 + shrl $3,%ebx | |
9681 + movl (%esp,%edi,4),%ebp | |
9682 + movl $7,%edi | |
9683 + movl %ebp,%ecx | |
9684 + shll $3,%ebp | |
9685 + andl %ebx,%edi | |
9686 + shrl $29,%ecx | |
9687 + xorl %ebp,%eax | |
9688 + shrl $3,%ebx | |
9689 + xorl %ecx,%edx | |
9690 + movl (%esp,%esi,4),%ecx | |
9691 + movl $7,%esi | |
9692 + movl %ecx,%ebp | |
9693 + shll $6,%ecx | |
9694 + andl %ebx,%esi | |
9695 + shrl $26,%ebp | |
9696 + xorl %ecx,%eax | |
9697 + shrl $3,%ebx | |
9698 + xorl %ebp,%edx | |
9699 + movl (%esp,%edi,4),%ebp | |
9700 + movl $7,%edi | |
9701 + movl %ebp,%ecx | |
9702 + shll $9,%ebp | |
9703 + andl %ebx,%edi | |
9704 + shrl $23,%ecx | |
9705 + xorl %ebp,%eax | |
9706 + shrl $3,%ebx | |
9707 + xorl %ecx,%edx | |
9708 + movl (%esp,%esi,4),%ecx | |
9709 + movl $7,%esi | |
9710 + movl %ecx,%ebp | |
9711 + shll $12,%ecx | |
9712 + andl %ebx,%esi | |
9713 + shrl $20,%ebp | |
9714 + xorl %ecx,%eax | |
9715 + shrl $3,%ebx | |
9716 + xorl %ebp,%edx | |
9717 + movl (%esp,%edi,4),%ebp | |
9718 + movl $7,%edi | |
9719 + movl %ebp,%ecx | |
9720 + shll $15,%ebp | |
9721 + andl %ebx,%edi | |
9722 + shrl $17,%ecx | |
9723 + xorl %ebp,%eax | |
9724 + shrl $3,%ebx | |
9725 + xorl %ecx,%edx | |
9726 + movl (%esp,%esi,4),%ecx | |
9727 + movl $7,%esi | |
9728 + movl %ecx,%ebp | |
9729 + shll $18,%ecx | |
9730 + andl %ebx,%esi | |
9731 + shrl $14,%ebp | |
9732 + xorl %ecx,%eax | |
9733 + shrl $3,%ebx | |
9734 + xorl %ebp,%edx | |
9735 + movl (%esp,%edi,4),%ebp | |
9736 + movl $7,%edi | |
9737 + movl %ebp,%ecx | |
9738 + shll $21,%ebp | |
9739 + andl %ebx,%edi | |
9740 + shrl $11,%ecx | |
9741 + xorl %ebp,%eax | |
9742 + shrl $3,%ebx | |
9743 + xorl %ecx,%edx | |
9744 + movl (%esp,%esi,4),%ecx | |
9745 + movl $7,%esi | |
9746 + movl %ecx,%ebp | |
9747 + shll $24,%ecx | |
9748 + andl %ebx,%esi | |
9749 + shrl $8,%ebp | |
9750 + xorl %ecx,%eax | |
9751 + shrl $3,%ebx | |
9752 + xorl %ebp,%edx | |
9753 + movl (%esp,%edi,4),%ebp | |
9754 + movl %ebp,%ecx | |
9755 + shll $27,%ebp | |
9756 + movl (%esp,%esi,4),%edi | |
9757 + shrl $5,%ecx | |
9758 + movl %edi,%esi | |
9759 + xorl %ebp,%eax | |
9760 + shll $30,%edi | |
9761 + xorl %ecx,%edx | |
9762 + shrl $2,%esi | |
9763 + xorl %edi,%eax | |
9764 + xorl %esi,%edx | |
9765 + addl $36,%esp | |
9766 + ret | |
9767 +.globl _bn_GF2m_mul_2x2 | |
9768 +.align 4 | |
9769 +_bn_GF2m_mul_2x2: | |
9770 +L_bn_GF2m_mul_2x2_begin: | |
9771 + call L000PIC_me_up | |
9772 +L000PIC_me_up: | |
9773 + popl %edx | |
9774 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L000PIC_me_up(%edx),%edx | |
9775 + movl (%edx),%eax | |
9776 + movl 4(%edx),%edx | |
9777 + testl $8388608,%eax | |
9778 + jz L001ialu | |
9779 + pushl %ebp | |
9780 + pushl %ebx | |
9781 + pushl %esi | |
9782 + pushl %edi | |
9783 + movl 24(%esp),%eax | |
9784 + movl 32(%esp),%ebx | |
9785 + call __mul_1x1_mmx | |
9786 + movq %mm0,%mm7 | |
9787 + movl 28(%esp),%eax | |
9788 + movl 36(%esp),%ebx | |
9789 + call __mul_1x1_mmx | |
9790 + movq %mm0,%mm6 | |
9791 + movl 24(%esp),%eax | |
9792 + movl 32(%esp),%ebx | |
9793 + xorl 28(%esp),%eax | |
9794 + xorl 36(%esp),%ebx | |
9795 + call __mul_1x1_mmx | |
9796 + pxor %mm7,%mm0 | |
9797 + movl 20(%esp),%eax | |
9798 + pxor %mm6,%mm0 | |
9799 + movq %mm0,%mm2 | |
9800 + psllq $32,%mm0 | |
9801 + popl %edi | |
9802 + psrlq $32,%mm2 | |
9803 + popl %esi | |
9804 + pxor %mm6,%mm0 | |
9805 + popl %ebx | |
9806 + pxor %mm7,%mm2 | |
9807 + movq %mm0,(%eax) | |
9808 + popl %ebp | |
9809 + movq %mm2,8(%eax) | |
9810 + emms | |
9811 + ret | |
9812 +.align 4,0x90 | |
9813 +L001ialu: | |
9814 + pushl %ebp | |
9815 + pushl %ebx | |
9816 + pushl %esi | |
9817 + pushl %edi | |
9818 + subl $20,%esp | |
9819 + movl 44(%esp),%eax | |
9820 + movl 52(%esp),%ebx | |
9821 + call __mul_1x1_ialu | |
9822 + movl %eax,8(%esp) | |
9823 + movl %edx,12(%esp) | |
9824 + movl 48(%esp),%eax | |
9825 + movl 56(%esp),%ebx | |
9826 + call __mul_1x1_ialu | |
9827 + movl %eax,(%esp) | |
9828 + movl %edx,4(%esp) | |
9829 + movl 44(%esp),%eax | |
9830 + movl 52(%esp),%ebx | |
9831 + xorl 48(%esp),%eax | |
9832 + xorl 56(%esp),%ebx | |
9833 + call __mul_1x1_ialu | |
9834 + movl 40(%esp),%ebp | |
9835 + movl (%esp),%ebx | |
9836 + movl 4(%esp),%ecx | |
9837 + movl 8(%esp),%edi | |
9838 + movl 12(%esp),%esi | |
9839 + xorl %edx,%eax | |
9840 + xorl %ecx,%edx | |
9841 + xorl %ebx,%eax | |
9842 + movl %ebx,(%ebp) | |
9843 + xorl %edi,%edx | |
9844 + movl %esi,12(%ebp) | |
9845 + xorl %esi,%eax | |
9846 + addl $20,%esp | |
9847 + xorl %esi,%edx | |
9848 + popl %edi | |
9849 + xorl %edx,%eax | |
9850 + popl %esi | |
9851 + movl %edx,8(%ebp) | |
9852 + popl %ebx | |
9853 + movl %eax,4(%ebp) | |
9854 + popl %ebp | |
9855 + ret | |
9856 +.byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105 | |
9857 +.byte 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32 | |
9858 +.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 | |
9859 +.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 | |
9860 +.byte 62,0 | |
9861 +.section __IMPORT,__pointers,non_lazy_symbol_pointers | |
9862 +L_OPENSSL_ia32cap_P$non_lazy_ptr: | |
9863 +.indirect_symbol _OPENSSL_ia32cap_P | |
9864 +.long 0 | |
9865 +.comm _OPENSSL_ia32cap_P,8,2 | |
9866 diff --git a/crypto/bn/asm/x86-mont-mac.S b/crypto/bn/asm/x86-mont-mac.S | |
9867 new file mode 100644 | |
9868 index 0000000..aab259a | |
9869 --- /dev/null | |
9870 +++ b/crypto/bn/asm/x86-mont-mac.S | |
9871 @@ -0,0 +1,336 @@ | |
9872 +.file "crypto/bn/asm/x86-mont.s" | |
9873 +.text | |
9874 +.globl _bn_mul_mont | |
9875 +.align 4 | |
9876 +_bn_mul_mont: | |
9877 +L_bn_mul_mont_begin: | |
9878 + pushl %ebp | |
9879 + pushl %ebx | |
9880 + pushl %esi | |
9881 + pushl %edi | |
9882 + xorl %eax,%eax | |
9883 + movl 40(%esp),%edi | |
9884 + cmpl $4,%edi | |
9885 + jl L000just_leave | |
9886 + leal 20(%esp),%esi | |
9887 + leal 24(%esp),%edx | |
9888 + movl %esp,%ebp | |
9889 + addl $2,%edi | |
9890 + negl %edi | |
9891 + leal -32(%esp,%edi,4),%esp | |
9892 + negl %edi | |
9893 + movl %esp,%eax | |
9894 + subl %edx,%eax | |
9895 + andl $2047,%eax | |
9896 + subl %eax,%esp | |
9897 + xorl %esp,%edx | |
9898 + andl $2048,%edx | |
9899 + xorl $2048,%edx | |
9900 + subl %edx,%esp | |
9901 + andl $-64,%esp | |
9902 + movl (%esi),%eax | |
9903 + movl 4(%esi),%ebx | |
9904 + movl 8(%esi),%ecx | |
9905 + movl 12(%esi),%edx | |
9906 + movl 16(%esi),%esi | |
9907 + movl (%esi),%esi | |
9908 + movl %eax,4(%esp) | |
9909 + movl %ebx,8(%esp) | |
9910 + movl %ecx,12(%esp) | |
9911 + movl %edx,16(%esp) | |
9912 + movl %esi,20(%esp) | |
9913 + leal -3(%edi),%ebx | |
9914 + movl %ebp,24(%esp) | |
9915 + movl 8(%esp),%esi | |
9916 + leal 1(%ebx),%ebp | |
9917 + movl 12(%esp),%edi | |
9918 + xorl %ecx,%ecx | |
9919 + movl %esi,%edx | |
9920 + andl $1,%ebp | |
9921 + subl %edi,%edx | |
9922 + leal 4(%edi,%ebx,4),%eax | |
9923 + orl %edx,%ebp | |
9924 + movl (%edi),%edi | |
9925 + jz L001bn_sqr_mont | |
9926 + movl %eax,28(%esp) | |
9927 + movl (%esi),%eax | |
9928 + xorl %edx,%edx | |
9929 +.align 4,0x90 | |
9930 +L002mull: | |
9931 + movl %edx,%ebp | |
9932 + mull %edi | |
9933 + addl %eax,%ebp | |
9934 + leal 1(%ecx),%ecx | |
9935 + adcl $0,%edx | |
9936 + movl (%esi,%ecx,4),%eax | |
9937 + cmpl %ebx,%ecx | |
9938 + movl %ebp,28(%esp,%ecx,4) | |
9939 + jl L002mull | |
9940 + movl %edx,%ebp | |
9941 + mull %edi | |
9942 + movl 20(%esp),%edi | |
9943 + addl %ebp,%eax | |
9944 + movl 16(%esp),%esi | |
9945 + adcl $0,%edx | |
9946 + imull 32(%esp),%edi | |
9947 + movl %eax,32(%esp,%ebx,4) | |
9948 + xorl %ecx,%ecx | |
9949 + movl %edx,36(%esp,%ebx,4) | |
9950 + movl %ecx,40(%esp,%ebx,4) | |
9951 + movl (%esi),%eax | |
9952 + mull %edi | |
9953 + addl 32(%esp),%eax | |
9954 + movl 4(%esi),%eax | |
9955 + adcl $0,%edx | |
9956 + incl %ecx | |
9957 + jmp L0032ndmadd | |
9958 +.align 4,0x90 | |
9959 +L0041stmadd: | |
9960 + movl %edx,%ebp | |
9961 + mull %edi | |
9962 + addl 32(%esp,%ecx,4),%ebp | |
9963 + leal 1(%ecx),%ecx | |
9964 + adcl $0,%edx | |
9965 + addl %eax,%ebp | |
9966 + movl (%esi,%ecx,4),%eax | |
9967 + adcl $0,%edx | |
9968 + cmpl %ebx,%ecx | |
9969 + movl %ebp,28(%esp,%ecx,4) | |
9970 + jl L0041stmadd | |
9971 + movl %edx,%ebp | |
9972 + mull %edi | |
9973 + addl 32(%esp,%ebx,4),%eax | |
9974 + movl 20(%esp),%edi | |
9975 + adcl $0,%edx | |
9976 + movl 16(%esp),%esi | |
9977 + addl %eax,%ebp | |
9978 + adcl $0,%edx | |
9979 + imull 32(%esp),%edi | |
9980 + xorl %ecx,%ecx | |
9981 + addl 36(%esp,%ebx,4),%edx | |
9982 + movl %ebp,32(%esp,%ebx,4) | |
9983 + adcl $0,%ecx | |
9984 + movl (%esi),%eax | |
9985 + movl %edx,36(%esp,%ebx,4) | |
9986 + movl %ecx,40(%esp,%ebx,4) | |
9987 + mull %edi | |
9988 + addl 32(%esp),%eax | |
9989 + movl 4(%esi),%eax | |
9990 + adcl $0,%edx | |
9991 + movl $1,%ecx | |
9992 +.align 4,0x90 | |
9993 +L0032ndmadd: | |
9994 + movl %edx,%ebp | |
9995 + mull %edi | |
9996 + addl 32(%esp,%ecx,4),%ebp | |
9997 + leal 1(%ecx),%ecx | |
9998 + adcl $0,%edx | |
9999 + addl %eax,%ebp | |
10000 + movl (%esi,%ecx,4),%eax | |
10001 + adcl $0,%edx | |
10002 + cmpl %ebx,%ecx | |
10003 + movl %ebp,24(%esp,%ecx,4) | |
10004 + jl L0032ndmadd | |
10005 + movl %edx,%ebp | |
10006 + mull %edi | |
10007 + addl 32(%esp,%ebx,4),%ebp | |
10008 + adcl $0,%edx | |
10009 + addl %eax,%ebp | |
10010 + adcl $0,%edx | |
10011 + movl %ebp,28(%esp,%ebx,4) | |
10012 + xorl %eax,%eax | |
10013 + movl 12(%esp),%ecx | |
10014 + addl 36(%esp,%ebx,4),%edx | |
10015 + adcl 40(%esp,%ebx,4),%eax | |
10016 + leal 4(%ecx),%ecx | |
10017 + movl %edx,32(%esp,%ebx,4) | |
10018 + cmpl 28(%esp),%ecx | |
10019 + movl %eax,36(%esp,%ebx,4) | |
10020 + je L005common_tail | |
10021 + movl (%ecx),%edi | |
10022 + movl 8(%esp),%esi | |
10023 + movl %ecx,12(%esp) | |
10024 + xorl %ecx,%ecx | |
10025 + xorl %edx,%edx | |
10026 + movl (%esi),%eax | |
10027 + jmp L0041stmadd | |
10028 +.align 4,0x90 | |
10029 +L001bn_sqr_mont: | |
10030 + movl %ebx,(%esp) | |
10031 + movl %ecx,12(%esp) | |
10032 + movl %edi,%eax | |
10033 + mull %edi | |
10034 + movl %eax,32(%esp) | |
10035 + movl %edx,%ebx | |
10036 + shrl $1,%edx | |
10037 + andl $1,%ebx | |
10038 + incl %ecx | |
10039 +.align 4,0x90 | |
10040 +L006sqr: | |
10041 + movl (%esi,%ecx,4),%eax | |
10042 + movl %edx,%ebp | |
10043 + mull %edi | |
10044 + addl %ebp,%eax | |
10045 + leal 1(%ecx),%ecx | |
10046 + adcl $0,%edx | |
10047 + leal (%ebx,%eax,2),%ebp | |
10048 + shrl $31,%eax | |
10049 + cmpl (%esp),%ecx | |
10050 + movl %eax,%ebx | |
10051 + movl %ebp,28(%esp,%ecx,4) | |
10052 + jl L006sqr | |
10053 + movl (%esi,%ecx,4),%eax | |
10054 + movl %edx,%ebp | |
10055 + mull %edi | |
10056 + addl %ebp,%eax | |
10057 + movl 20(%esp),%edi | |
10058 + adcl $0,%edx | |
10059 + movl 16(%esp),%esi | |
10060 + leal (%ebx,%eax,2),%ebp | |
10061 + imull 32(%esp),%edi | |
10062 + shrl $31,%eax | |
10063 + movl %ebp,32(%esp,%ecx,4) | |
10064 + leal (%eax,%edx,2),%ebp | |
10065 + movl (%esi),%eax | |
10066 + shrl $31,%edx | |
10067 + movl %ebp,36(%esp,%ecx,4) | |
10068 + movl %edx,40(%esp,%ecx,4) | |
10069 + mull %edi | |
10070 + addl 32(%esp),%eax | |
10071 + movl %ecx,%ebx | |
10072 + adcl $0,%edx | |
10073 + movl 4(%esi),%eax | |
10074 + movl $1,%ecx | |
10075 +.align 4,0x90 | |
10076 +L0073rdmadd: | |
10077 + movl %edx,%ebp | |
10078 + mull %edi | |
10079 + addl 32(%esp,%ecx,4),%ebp | |
10080 + adcl $0,%edx | |
10081 + addl %eax,%ebp | |
10082 + movl 4(%esi,%ecx,4),%eax | |
10083 + adcl $0,%edx | |
10084 + movl %ebp,28(%esp,%ecx,4) | |
10085 + movl %edx,%ebp | |
10086 + mull %edi | |
10087 + addl 36(%esp,%ecx,4),%ebp | |
10088 + leal 2(%ecx),%ecx | |
10089 + adcl $0,%edx | |
10090 + addl %eax,%ebp | |
10091 + movl (%esi,%ecx,4),%eax | |
10092 + adcl $0,%edx | |
10093 + cmpl %ebx,%ecx | |
10094 + movl %ebp,24(%esp,%ecx,4) | |
10095 + jl L0073rdmadd | |
10096 + movl %edx,%ebp | |
10097 + mull %edi | |
10098 + addl 32(%esp,%ebx,4),%ebp | |
10099 + adcl $0,%edx | |
10100 + addl %eax,%ebp | |
10101 + adcl $0,%edx | |
10102 + movl %ebp,28(%esp,%ebx,4) | |
10103 + movl 12(%esp),%ecx | |
10104 + xorl %eax,%eax | |
10105 + movl 8(%esp),%esi | |
10106 + addl 36(%esp,%ebx,4),%edx | |
10107 + adcl 40(%esp,%ebx,4),%eax | |
10108 + movl %edx,32(%esp,%ebx,4) | |
10109 + cmpl %ebx,%ecx | |
10110 + movl %eax,36(%esp,%ebx,4) | |
10111 + je L005common_tail | |
10112 + movl 4(%esi,%ecx,4),%edi | |
10113 + leal 1(%ecx),%ecx | |
10114 + movl %edi,%eax | |
10115 + movl %ecx,12(%esp) | |
10116 + mull %edi | |
10117 + addl 32(%esp,%ecx,4),%eax | |
10118 + adcl $0,%edx | |
10119 + movl %eax,32(%esp,%ecx,4) | |
10120 + xorl %ebp,%ebp | |
10121 + cmpl %ebx,%ecx | |
10122 + leal 1(%ecx),%ecx | |
10123 + je L008sqrlast | |
10124 + movl %edx,%ebx | |
10125 + shrl $1,%edx | |
10126 + andl $1,%ebx | |
10127 +.align 4,0x90 | |
10128 +L009sqradd: | |
10129 + movl (%esi,%ecx,4),%eax | |
10130 + movl %edx,%ebp | |
10131 + mull %edi | |
10132 + addl %ebp,%eax | |
10133 + leal (%eax,%eax,1),%ebp | |
10134 + adcl $0,%edx | |
10135 + shrl $31,%eax | |
10136 + addl 32(%esp,%ecx,4),%ebp | |
10137 + leal 1(%ecx),%ecx | |
10138 + adcl $0,%eax | |
10139 + addl %ebx,%ebp | |
10140 + adcl $0,%eax | |
10141 + cmpl (%esp),%ecx | |
10142 + movl %ebp,28(%esp,%ecx,4) | |
10143 + movl %eax,%ebx | |
10144 + jle L009sqradd | |
10145 + movl %edx,%ebp | |
10146 + addl %edx,%edx | |
10147 + shrl $31,%ebp | |
10148 + addl %ebx,%edx | |
10149 + adcl $0,%ebp | |
10150 +L008sqrlast: | |
10151 + movl 20(%esp),%edi | |
10152 + movl 16(%esp),%esi | |
10153 + imull 32(%esp),%edi | |
10154 + addl 32(%esp,%ecx,4),%edx | |
10155 + movl (%esi),%eax | |
10156 + adcl $0,%ebp | |
10157 + movl %edx,32(%esp,%ecx,4) | |
10158 + movl %ebp,36(%esp,%ecx,4) | |
10159 + mull %edi | |
10160 + addl 32(%esp),%eax | |
10161 + leal -1(%ecx),%ebx | |
10162 + adcl $0,%edx | |
10163 + movl $1,%ecx | |
10164 + movl 4(%esi),%eax | |
10165 + jmp L0073rdmadd | |
10166 +.align 4,0x90 | |
10167 +L005common_tail: | |
10168 + movl 16(%esp),%ebp | |
10169 + movl 4(%esp),%edi | |
10170 + leal 32(%esp),%esi | |
10171 + movl (%esi),%eax | |
10172 + movl %ebx,%ecx | |
10173 + xorl %edx,%edx | |
10174 +.align 4,0x90 | |
10175 +L010sub: | |
10176 + sbbl (%ebp,%edx,4),%eax | |
10177 + movl %eax,(%edi,%edx,4) | |
10178 + decl %ecx | |
10179 + movl 4(%esi,%edx,4),%eax | |
10180 + leal 1(%edx),%edx | |
10181 + jge L010sub | |
10182 + sbbl $0,%eax | |
10183 + andl %eax,%esi | |
10184 + notl %eax | |
10185 + movl %edi,%ebp | |
10186 + andl %eax,%ebp | |
10187 + orl %ebp,%esi | |
10188 +.align 4,0x90 | |
10189 +L011copy: | |
10190 + movl (%esi,%ebx,4),%eax | |
10191 + movl %eax,(%edi,%ebx,4) | |
10192 + movl %ecx,32(%esp,%ebx,4) | |
10193 + decl %ebx | |
10194 + jge L011copy | |
10195 + movl 24(%esp),%esp | |
10196 + movl $1,%eax | |
10197 +L000just_leave: | |
10198 + popl %edi | |
10199 + popl %esi | |
10200 + popl %ebx | |
10201 + popl %ebp | |
10202 + ret | |
10203 +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 | |
10204 +.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 | |
10205 +.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 | |
10206 +.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 | |
10207 +.byte 111,114,103,62,0 | |
10208 diff --git a/crypto/des/asm/crypt586-mac.S b/crypto/des/asm/crypt586-mac.S | |
10209 new file mode 100644 | |
10210 index 0000000..9156a65 | |
10211 --- /dev/null | |
10212 +++ b/crypto/des/asm/crypt586-mac.S | |
10213 @@ -0,0 +1,880 @@ | |
10214 +.file "crypt586.s" | |
10215 +.text | |
10216 +.globl _fcrypt_body | |
10217 +.align 4 | |
10218 +_fcrypt_body: | |
10219 +L_fcrypt_body_begin: | |
10220 + pushl %ebp | |
10221 + pushl %ebx | |
10222 + pushl %esi | |
10223 + pushl %edi | |
10224 + | |
10225 + # Load the 2 words | |
10226 + xorl %edi,%edi | |
10227 + xorl %esi,%esi | |
10228 + call L000PIC_me_up | |
10229 +L000PIC_me_up: | |
10230 + popl %edx | |
10231 + movl L_DES_SPtrans$non_lazy_ptr-L000PIC_me_up(%edx),%edx | |
10232 + pushl %edx | |
10233 + movl 28(%esp),%ebp | |
10234 + pushl $25 | |
10235 +L001start: | |
10236 + | |
10237 + # Round 0 | |
10238 + movl 36(%esp),%eax | |
10239 + movl %esi,%edx | |
10240 + shrl $16,%edx | |
10241 + movl 40(%esp),%ecx | |
10242 + xorl %esi,%edx | |
10243 + andl %edx,%eax | |
10244 + andl %ecx,%edx | |
10245 + movl %eax,%ebx | |
10246 + shll $16,%ebx | |
10247 + movl %edx,%ecx | |
10248 + shll $16,%ecx | |
10249 + xorl %ebx,%eax | |
10250 + xorl %ecx,%edx | |
10251 + movl (%ebp),%ebx | |
10252 + xorl %ebx,%eax | |
10253 + movl 4(%ebp),%ecx | |
10254 + xorl %esi,%eax | |
10255 + xorl %esi,%edx | |
10256 + xorl %ecx,%edx | |
10257 + andl $0xfcfcfcfc,%eax | |
10258 + xorl %ebx,%ebx | |
10259 + andl $0xcfcfcfcf,%edx | |
10260 + xorl %ecx,%ecx | |
10261 + movb %al,%bl | |
10262 + movb %ah,%cl | |
10263 + rorl $4,%edx | |
10264 + movl 4(%esp),%ebp | |
10265 + xorl (%ebp,%ebx,1),%edi | |
10266 + movb %dl,%bl | |
10267 + xorl 0x200(%ebp,%ecx,1),%edi | |
10268 + movb %dh,%cl | |
10269 + shrl $16,%eax | |
10270 + xorl 0x100(%ebp,%ebx,1),%edi | |
10271 + movb %ah,%bl | |
10272 + shrl $16,%edx | |
10273 + xorl 0x300(%ebp,%ecx,1),%edi | |
10274 + movb %dh,%cl | |
10275 + andl $0xff,%eax | |
10276 + andl $0xff,%edx | |
10277 + movl 0x600(%ebp,%ebx,1),%ebx | |
10278 + xorl %ebx,%edi | |
10279 + movl 0x700(%ebp,%ecx,1),%ebx | |
10280 + xorl %ebx,%edi | |
10281 + movl 0x400(%ebp,%eax,1),%ebx | |
10282 + xorl %ebx,%edi | |
10283 + movl 0x500(%ebp,%edx,1),%ebx | |
10284 + xorl %ebx,%edi | |
10285 + movl 32(%esp),%ebp | |
10286 + | |
10287 + # Round 1 | |
10288 + movl 36(%esp),%eax | |
10289 + movl %edi,%edx | |
10290 + shrl $16,%edx | |
10291 + movl 40(%esp),%ecx | |
10292 + xorl %edi,%edx | |
10293 + andl %edx,%eax | |
10294 + andl %ecx,%edx | |
10295 + movl %eax,%ebx | |
10296 + shll $16,%ebx | |
10297 + movl %edx,%ecx | |
10298 + shll $16,%ecx | |
10299 + xorl %ebx,%eax | |
10300 + xorl %ecx,%edx | |
10301 + movl 8(%ebp),%ebx | |
10302 + xorl %ebx,%eax | |
10303 + movl 12(%ebp),%ecx | |
10304 + xorl %edi,%eax | |
10305 + xorl %edi,%edx | |
10306 + xorl %ecx,%edx | |
10307 + andl $0xfcfcfcfc,%eax | |
10308 + xorl %ebx,%ebx | |
10309 + andl $0xcfcfcfcf,%edx | |
10310 + xorl %ecx,%ecx | |
10311 + movb %al,%bl | |
10312 + movb %ah,%cl | |
10313 + rorl $4,%edx | |
10314 + movl 4(%esp),%ebp | |
10315 + xorl (%ebp,%ebx,1),%esi | |
10316 + movb %dl,%bl | |
10317 + xorl 0x200(%ebp,%ecx,1),%esi | |
10318 + movb %dh,%cl | |
10319 + shrl $16,%eax | |
10320 + xorl 0x100(%ebp,%ebx,1),%esi | |
10321 + movb %ah,%bl | |
10322 + shrl $16,%edx | |
10323 + xorl 0x300(%ebp,%ecx,1),%esi | |
10324 + movb %dh,%cl | |
10325 + andl $0xff,%eax | |
10326 + andl $0xff,%edx | |
10327 + movl 0x600(%ebp,%ebx,1),%ebx | |
10328 + xorl %ebx,%esi | |
10329 + movl 0x700(%ebp,%ecx,1),%ebx | |
10330 + xorl %ebx,%esi | |
10331 + movl 0x400(%ebp,%eax,1),%ebx | |
10332 + xorl %ebx,%esi | |
10333 + movl 0x500(%ebp,%edx,1),%ebx | |
10334 + xorl %ebx,%esi | |
10335 + movl 32(%esp),%ebp | |
10336 + | |
10337 + # Round 2 | |
10338 + movl 36(%esp),%eax | |
10339 + movl %esi,%edx | |
10340 + shrl $16,%edx | |
10341 + movl 40(%esp),%ecx | |
10342 + xorl %esi,%edx | |
10343 + andl %edx,%eax | |
10344 + andl %ecx,%edx | |
10345 + movl %eax,%ebx | |
10346 + shll $16,%ebx | |
10347 + movl %edx,%ecx | |
10348 + shll $16,%ecx | |
10349 + xorl %ebx,%eax | |
10350 + xorl %ecx,%edx | |
10351 + movl 16(%ebp),%ebx | |
10352 + xorl %ebx,%eax | |
10353 + movl 20(%ebp),%ecx | |
10354 + xorl %esi,%eax | |
10355 + xorl %esi,%edx | |
10356 + xorl %ecx,%edx | |
10357 + andl $0xfcfcfcfc,%eax | |
10358 + xorl %ebx,%ebx | |
10359 + andl $0xcfcfcfcf,%edx | |
10360 + xorl %ecx,%ecx | |
10361 + movb %al,%bl | |
10362 + movb %ah,%cl | |
10363 + rorl $4,%edx | |
10364 + movl 4(%esp),%ebp | |
10365 + xorl (%ebp,%ebx,1),%edi | |
10366 + movb %dl,%bl | |
10367 + xorl 0x200(%ebp,%ecx,1),%edi | |
10368 + movb %dh,%cl | |
10369 + shrl $16,%eax | |
10370 + xorl 0x100(%ebp,%ebx,1),%edi | |
10371 + movb %ah,%bl | |
10372 + shrl $16,%edx | |
10373 + xorl 0x300(%ebp,%ecx,1),%edi | |
10374 + movb %dh,%cl | |
10375 + andl $0xff,%eax | |
10376 + andl $0xff,%edx | |
10377 + movl 0x600(%ebp,%ebx,1),%ebx | |
10378 + xorl %ebx,%edi | |
10379 + movl 0x700(%ebp,%ecx,1),%ebx | |
10380 + xorl %ebx,%edi | |
10381 + movl 0x400(%ebp,%eax,1),%ebx | |
10382 + xorl %ebx,%edi | |
10383 + movl 0x500(%ebp,%edx,1),%ebx | |
10384 + xorl %ebx,%edi | |
10385 + movl 32(%esp),%ebp | |
10386 + | |
10387 + # Round 3 | |
10388 + movl 36(%esp),%eax | |
10389 + movl %edi,%edx | |
10390 + shrl $16,%edx | |
10391 + movl 40(%esp),%ecx | |
10392 + xorl %edi,%edx | |
10393 + andl %edx,%eax | |
10394 + andl %ecx,%edx | |
10395 + movl %eax,%ebx | |
10396 + shll $16,%ebx | |
10397 + movl %edx,%ecx | |
10398 + shll $16,%ecx | |
10399 + xorl %ebx,%eax | |
10400 + xorl %ecx,%edx | |
10401 + movl 24(%ebp),%ebx | |
10402 + xorl %ebx,%eax | |
10403 + movl 28(%ebp),%ecx | |
10404 + xorl %edi,%eax | |
10405 + xorl %edi,%edx | |
10406 + xorl %ecx,%edx | |
10407 + andl $0xfcfcfcfc,%eax | |
10408 + xorl %ebx,%ebx | |
10409 + andl $0xcfcfcfcf,%edx | |
10410 + xorl %ecx,%ecx | |
10411 + movb %al,%bl | |
10412 + movb %ah,%cl | |
10413 + rorl $4,%edx | |
10414 + movl 4(%esp),%ebp | |
10415 + xorl (%ebp,%ebx,1),%esi | |
10416 + movb %dl,%bl | |
10417 + xorl 0x200(%ebp,%ecx,1),%esi | |
10418 + movb %dh,%cl | |
10419 + shrl $16,%eax | |
10420 + xorl 0x100(%ebp,%ebx,1),%esi | |
10421 + movb %ah,%bl | |
10422 + shrl $16,%edx | |
10423 + xorl 0x300(%ebp,%ecx,1),%esi | |
10424 + movb %dh,%cl | |
10425 + andl $0xff,%eax | |
10426 + andl $0xff,%edx | |
10427 + movl 0x600(%ebp,%ebx,1),%ebx | |
10428 + xorl %ebx,%esi | |
10429 + movl 0x700(%ebp,%ecx,1),%ebx | |
10430 + xorl %ebx,%esi | |
10431 + movl 0x400(%ebp,%eax,1),%ebx | |
10432 + xorl %ebx,%esi | |
10433 + movl 0x500(%ebp,%edx,1),%ebx | |
10434 + xorl %ebx,%esi | |
10435 + movl 32(%esp),%ebp | |
10436 + | |
10437 + # Round 4 | |
10438 + movl 36(%esp),%eax | |
10439 + movl %esi,%edx | |
10440 + shrl $16,%edx | |
10441 + movl 40(%esp),%ecx | |
10442 + xorl %esi,%edx | |
10443 + andl %edx,%eax | |
10444 + andl %ecx,%edx | |
10445 + movl %eax,%ebx | |
10446 + shll $16,%ebx | |
10447 + movl %edx,%ecx | |
10448 + shll $16,%ecx | |
10449 + xorl %ebx,%eax | |
10450 + xorl %ecx,%edx | |
10451 + movl 32(%ebp),%ebx | |
10452 + xorl %ebx,%eax | |
10453 + movl 36(%ebp),%ecx | |
10454 + xorl %esi,%eax | |
10455 + xorl %esi,%edx | |
10456 + xorl %ecx,%edx | |
10457 + andl $0xfcfcfcfc,%eax | |
10458 + xorl %ebx,%ebx | |
10459 + andl $0xcfcfcfcf,%edx | |
10460 + xorl %ecx,%ecx | |
10461 + movb %al,%bl | |
10462 + movb %ah,%cl | |
10463 + rorl $4,%edx | |
10464 + movl 4(%esp),%ebp | |
10465 + xorl (%ebp,%ebx,1),%edi | |
10466 + movb %dl,%bl | |
10467 + xorl 0x200(%ebp,%ecx,1),%edi | |
10468 + movb %dh,%cl | |
10469 + shrl $16,%eax | |
10470 + xorl 0x100(%ebp,%ebx,1),%edi | |
10471 + movb %ah,%bl | |
10472 + shrl $16,%edx | |
10473 + xorl 0x300(%ebp,%ecx,1),%edi | |
10474 + movb %dh,%cl | |
10475 + andl $0xff,%eax | |
10476 + andl $0xff,%edx | |
10477 + movl 0x600(%ebp,%ebx,1),%ebx | |
10478 + xorl %ebx,%edi | |
10479 + movl 0x700(%ebp,%ecx,1),%ebx | |
10480 + xorl %ebx,%edi | |
10481 + movl 0x400(%ebp,%eax,1),%ebx | |
10482 + xorl %ebx,%edi | |
10483 + movl 0x500(%ebp,%edx,1),%ebx | |
10484 + xorl %ebx,%edi | |
10485 + movl 32(%esp),%ebp | |
10486 + | |
10487 + # Round 5 | |
10488 + movl 36(%esp),%eax | |
10489 + movl %edi,%edx | |
10490 + shrl $16,%edx | |
10491 + movl 40(%esp),%ecx | |
10492 + xorl %edi,%edx | |
10493 + andl %edx,%eax | |
10494 + andl %ecx,%edx | |
10495 + movl %eax,%ebx | |
10496 + shll $16,%ebx | |
10497 + movl %edx,%ecx | |
10498 + shll $16,%ecx | |
10499 + xorl %ebx,%eax | |
10500 + xorl %ecx,%edx | |
10501 + movl 40(%ebp),%ebx | |
10502 + xorl %ebx,%eax | |
10503 + movl 44(%ebp),%ecx | |
10504 + xorl %edi,%eax | |
10505 + xorl %edi,%edx | |
10506 + xorl %ecx,%edx | |
10507 + andl $0xfcfcfcfc,%eax | |
10508 + xorl %ebx,%ebx | |
10509 + andl $0xcfcfcfcf,%edx | |
10510 + xorl %ecx,%ecx | |
10511 + movb %al,%bl | |
10512 + movb %ah,%cl | |
10513 + rorl $4,%edx | |
10514 + movl 4(%esp),%ebp | |
10515 + xorl (%ebp,%ebx,1),%esi | |
10516 + movb %dl,%bl | |
10517 + xorl 0x200(%ebp,%ecx,1),%esi | |
10518 + movb %dh,%cl | |
10519 + shrl $16,%eax | |
10520 + xorl 0x100(%ebp,%ebx,1),%esi | |
10521 + movb %ah,%bl | |
10522 + shrl $16,%edx | |
10523 + xorl 0x300(%ebp,%ecx,1),%esi | |
10524 + movb %dh,%cl | |
10525 + andl $0xff,%eax | |
10526 + andl $0xff,%edx | |
10527 + movl 0x600(%ebp,%ebx,1),%ebx | |
10528 + xorl %ebx,%esi | |
10529 + movl 0x700(%ebp,%ecx,1),%ebx | |
10530 + xorl %ebx,%esi | |
10531 + movl 0x400(%ebp,%eax,1),%ebx | |
10532 + xorl %ebx,%esi | |
10533 + movl 0x500(%ebp,%edx,1),%ebx | |
10534 + xorl %ebx,%esi | |
10535 + movl 32(%esp),%ebp | |
10536 + | |
10537 + # Round 6 | |
10538 + movl 36(%esp),%eax | |
10539 + movl %esi,%edx | |
10540 + shrl $16,%edx | |
10541 + movl 40(%esp),%ecx | |
10542 + xorl %esi,%edx | |
10543 + andl %edx,%eax | |
10544 + andl %ecx,%edx | |
10545 + movl %eax,%ebx | |
10546 + shll $16,%ebx | |
10547 + movl %edx,%ecx | |
10548 + shll $16,%ecx | |
10549 + xorl %ebx,%eax | |
10550 + xorl %ecx,%edx | |
10551 + movl 48(%ebp),%ebx | |
10552 + xorl %ebx,%eax | |
10553 + movl 52(%ebp),%ecx | |
10554 + xorl %esi,%eax | |
10555 + xorl %esi,%edx | |
10556 + xorl %ecx,%edx | |
10557 + andl $0xfcfcfcfc,%eax | |
10558 + xorl %ebx,%ebx | |
10559 + andl $0xcfcfcfcf,%edx | |
10560 + xorl %ecx,%ecx | |
10561 + movb %al,%bl | |
10562 + movb %ah,%cl | |
10563 + rorl $4,%edx | |
10564 + movl 4(%esp),%ebp | |
10565 + xorl (%ebp,%ebx,1),%edi | |
10566 + movb %dl,%bl | |
10567 + xorl 0x200(%ebp,%ecx,1),%edi | |
10568 + movb %dh,%cl | |
10569 + shrl $16,%eax | |
10570 + xorl 0x100(%ebp,%ebx,1),%edi | |
10571 + movb %ah,%bl | |
10572 + shrl $16,%edx | |
10573 + xorl 0x300(%ebp,%ecx,1),%edi | |
10574 + movb %dh,%cl | |
10575 + andl $0xff,%eax | |
10576 + andl $0xff,%edx | |
10577 + movl 0x600(%ebp,%ebx,1),%ebx | |
10578 + xorl %ebx,%edi | |
10579 + movl 0x700(%ebp,%ecx,1),%ebx | |
10580 + xorl %ebx,%edi | |
10581 + movl 0x400(%ebp,%eax,1),%ebx | |
10582 + xorl %ebx,%edi | |
10583 + movl 0x500(%ebp,%edx,1),%ebx | |
10584 + xorl %ebx,%edi | |
10585 + movl 32(%esp),%ebp | |
10586 + | |
10587 + # Round 7 | |
10588 + movl 36(%esp),%eax | |
10589 + movl %edi,%edx | |
10590 + shrl $16,%edx | |
10591 + movl 40(%esp),%ecx | |
10592 + xorl %edi,%edx | |
10593 + andl %edx,%eax | |
10594 + andl %ecx,%edx | |
10595 + movl %eax,%ebx | |
10596 + shll $16,%ebx | |
10597 + movl %edx,%ecx | |
10598 + shll $16,%ecx | |
10599 + xorl %ebx,%eax | |
10600 + xorl %ecx,%edx | |
10601 + movl 56(%ebp),%ebx | |
10602 + xorl %ebx,%eax | |
10603 + movl 60(%ebp),%ecx | |
10604 + xorl %edi,%eax | |
10605 + xorl %edi,%edx | |
10606 + xorl %ecx,%edx | |
10607 + andl $0xfcfcfcfc,%eax | |
10608 + xorl %ebx,%ebx | |
10609 + andl $0xcfcfcfcf,%edx | |
10610 + xorl %ecx,%ecx | |
10611 + movb %al,%bl | |
10612 + movb %ah,%cl | |
10613 + rorl $4,%edx | |
10614 + movl 4(%esp),%ebp | |
10615 + xorl (%ebp,%ebx,1),%esi | |
10616 + movb %dl,%bl | |
10617 + xorl 0x200(%ebp,%ecx,1),%esi | |
10618 + movb %dh,%cl | |
10619 + shrl $16,%eax | |
10620 + xorl 0x100(%ebp,%ebx,1),%esi | |
10621 + movb %ah,%bl | |
10622 + shrl $16,%edx | |
10623 + xorl 0x300(%ebp,%ecx,1),%esi | |
10624 + movb %dh,%cl | |
10625 + andl $0xff,%eax | |
10626 + andl $0xff,%edx | |
10627 + movl 0x600(%ebp,%ebx,1),%ebx | |
10628 + xorl %ebx,%esi | |
10629 + movl 0x700(%ebp,%ecx,1),%ebx | |
10630 + xorl %ebx,%esi | |
10631 + movl 0x400(%ebp,%eax,1),%ebx | |
10632 + xorl %ebx,%esi | |
10633 + movl 0x500(%ebp,%edx,1),%ebx | |
10634 + xorl %ebx,%esi | |
10635 + movl 32(%esp),%ebp | |
10636 + | |
10637 + # Round 8 | |
10638 + movl 36(%esp),%eax | |
10639 + movl %esi,%edx | |
10640 + shrl $16,%edx | |
10641 + movl 40(%esp),%ecx | |
10642 + xorl %esi,%edx | |
10643 + andl %edx,%eax | |
10644 + andl %ecx,%edx | |
10645 + movl %eax,%ebx | |
10646 + shll $16,%ebx | |
10647 + movl %edx,%ecx | |
10648 + shll $16,%ecx | |
10649 + xorl %ebx,%eax | |
10650 + xorl %ecx,%edx | |
10651 + movl 64(%ebp),%ebx | |
10652 + xorl %ebx,%eax | |
10653 + movl 68(%ebp),%ecx | |
10654 + xorl %esi,%eax | |
10655 + xorl %esi,%edx | |
10656 + xorl %ecx,%edx | |
10657 + andl $0xfcfcfcfc,%eax | |
10658 + xorl %ebx,%ebx | |
10659 + andl $0xcfcfcfcf,%edx | |
10660 + xorl %ecx,%ecx | |
10661 + movb %al,%bl | |
10662 + movb %ah,%cl | |
10663 + rorl $4,%edx | |
10664 + movl 4(%esp),%ebp | |
10665 + xorl (%ebp,%ebx,1),%edi | |
10666 + movb %dl,%bl | |
10667 + xorl 0x200(%ebp,%ecx,1),%edi | |
10668 + movb %dh,%cl | |
10669 + shrl $16,%eax | |
10670 + xorl 0x100(%ebp,%ebx,1),%edi | |
10671 + movb %ah,%bl | |
10672 + shrl $16,%edx | |
10673 + xorl 0x300(%ebp,%ecx,1),%edi | |
10674 + movb %dh,%cl | |
10675 + andl $0xff,%eax | |
10676 + andl $0xff,%edx | |
10677 + movl 0x600(%ebp,%ebx,1),%ebx | |
10678 + xorl %ebx,%edi | |
10679 + movl 0x700(%ebp,%ecx,1),%ebx | |
10680 + xorl %ebx,%edi | |
10681 + movl 0x400(%ebp,%eax,1),%ebx | |
10682 + xorl %ebx,%edi | |
10683 + movl 0x500(%ebp,%edx,1),%ebx | |
10684 + xorl %ebx,%edi | |
10685 + movl 32(%esp),%ebp | |
10686 + | |
10687 + # Round 9 | |
10688 + movl 36(%esp),%eax | |
10689 + movl %edi,%edx | |
10690 + shrl $16,%edx | |
10691 + movl 40(%esp),%ecx | |
10692 + xorl %edi,%edx | |
10693 + andl %edx,%eax | |
10694 + andl %ecx,%edx | |
10695 + movl %eax,%ebx | |
10696 + shll $16,%ebx | |
10697 + movl %edx,%ecx | |
10698 + shll $16,%ecx | |
10699 + xorl %ebx,%eax | |
10700 + xorl %ecx,%edx | |
10701 + movl 72(%ebp),%ebx | |
10702 + xorl %ebx,%eax | |
10703 + movl 76(%ebp),%ecx | |
10704 + xorl %edi,%eax | |
10705 + xorl %edi,%edx | |
10706 + xorl %ecx,%edx | |
10707 + andl $0xfcfcfcfc,%eax | |
10708 + xorl %ebx,%ebx | |
10709 + andl $0xcfcfcfcf,%edx | |
10710 + xorl %ecx,%ecx | |
10711 + movb %al,%bl | |
10712 + movb %ah,%cl | |
10713 + rorl $4,%edx | |
10714 + movl 4(%esp),%ebp | |
10715 + xorl (%ebp,%ebx,1),%esi | |
10716 + movb %dl,%bl | |
10717 + xorl 0x200(%ebp,%ecx,1),%esi | |
10718 + movb %dh,%cl | |
10719 + shrl $16,%eax | |
10720 + xorl 0x100(%ebp,%ebx,1),%esi | |
10721 + movb %ah,%bl | |
10722 + shrl $16,%edx | |
10723 + xorl 0x300(%ebp,%ecx,1),%esi | |
10724 + movb %dh,%cl | |
10725 + andl $0xff,%eax | |
10726 + andl $0xff,%edx | |
10727 + movl 0x600(%ebp,%ebx,1),%ebx | |
10728 + xorl %ebx,%esi | |
10729 + movl 0x700(%ebp,%ecx,1),%ebx | |
10730 + xorl %ebx,%esi | |
10731 + movl 0x400(%ebp,%eax,1),%ebx | |
10732 + xorl %ebx,%esi | |
10733 + movl 0x500(%ebp,%edx,1),%ebx | |
10734 + xorl %ebx,%esi | |
10735 + movl 32(%esp),%ebp | |
10736 + | |
10737 + # Round 10 | |
10738 + movl 36(%esp),%eax | |
10739 + movl %esi,%edx | |
10740 + shrl $16,%edx | |
10741 + movl 40(%esp),%ecx | |
10742 + xorl %esi,%edx | |
10743 + andl %edx,%eax | |
10744 + andl %ecx,%edx | |
10745 + movl %eax,%ebx | |
10746 + shll $16,%ebx | |
10747 + movl %edx,%ecx | |
10748 + shll $16,%ecx | |
10749 + xorl %ebx,%eax | |
10750 + xorl %ecx,%edx | |
10751 + movl 80(%ebp),%ebx | |
10752 + xorl %ebx,%eax | |
10753 + movl 84(%ebp),%ecx | |
10754 + xorl %esi,%eax | |
10755 + xorl %esi,%edx | |
10756 + xorl %ecx,%edx | |
10757 + andl $0xfcfcfcfc,%eax | |
10758 + xorl %ebx,%ebx | |
10759 + andl $0xcfcfcfcf,%edx | |
10760 + xorl %ecx,%ecx | |
10761 + movb %al,%bl | |
10762 + movb %ah,%cl | |
10763 + rorl $4,%edx | |
10764 + movl 4(%esp),%ebp | |
10765 + xorl (%ebp,%ebx,1),%edi | |
10766 + movb %dl,%bl | |
10767 + xorl 0x200(%ebp,%ecx,1),%edi | |
10768 + movb %dh,%cl | |
10769 + shrl $16,%eax | |
10770 + xorl 0x100(%ebp,%ebx,1),%edi | |
10771 + movb %ah,%bl | |
10772 + shrl $16,%edx | |
10773 + xorl 0x300(%ebp,%ecx,1),%edi | |
10774 + movb %dh,%cl | |
10775 + andl $0xff,%eax | |
10776 + andl $0xff,%edx | |
10777 + movl 0x600(%ebp,%ebx,1),%ebx | |
10778 + xorl %ebx,%edi | |
10779 + movl 0x700(%ebp,%ecx,1),%ebx | |
10780 + xorl %ebx,%edi | |
10781 + movl 0x400(%ebp,%eax,1),%ebx | |
10782 + xorl %ebx,%edi | |
10783 + movl 0x500(%ebp,%edx,1),%ebx | |
10784 + xorl %ebx,%edi | |
10785 + movl 32(%esp),%ebp | |
10786 + | |
10787 + # Round 11 | |
10788 + movl 36(%esp),%eax | |
10789 + movl %edi,%edx | |
10790 + shrl $16,%edx | |
10791 + movl 40(%esp),%ecx | |
10792 + xorl %edi,%edx | |
10793 + andl %edx,%eax | |
10794 + andl %ecx,%edx | |
10795 + movl %eax,%ebx | |
10796 + shll $16,%ebx | |
10797 + movl %edx,%ecx | |
10798 + shll $16,%ecx | |
10799 + xorl %ebx,%eax | |
10800 + xorl %ecx,%edx | |
10801 + movl 88(%ebp),%ebx | |
10802 + xorl %ebx,%eax | |
10803 + movl 92(%ebp),%ecx | |
10804 + xorl %edi,%eax | |
10805 + xorl %edi,%edx | |
10806 + xorl %ecx,%edx | |
10807 + andl $0xfcfcfcfc,%eax | |
10808 + xorl %ebx,%ebx | |
10809 + andl $0xcfcfcfcf,%edx | |
10810 + xorl %ecx,%ecx | |
10811 + movb %al,%bl | |
10812 + movb %ah,%cl | |
10813 + rorl $4,%edx | |
10814 + movl 4(%esp),%ebp | |
10815 + xorl (%ebp,%ebx,1),%esi | |
10816 + movb %dl,%bl | |
10817 + xorl 0x200(%ebp,%ecx,1),%esi | |
10818 + movb %dh,%cl | |
10819 + shrl $16,%eax | |
10820 + xorl 0x100(%ebp,%ebx,1),%esi | |
10821 + movb %ah,%bl | |
10822 + shrl $16,%edx | |
10823 + xorl 0x300(%ebp,%ecx,1),%esi | |
10824 + movb %dh,%cl | |
10825 + andl $0xff,%eax | |
10826 + andl $0xff,%edx | |
10827 + movl 0x600(%ebp,%ebx,1),%ebx | |
10828 + xorl %ebx,%esi | |
10829 + movl 0x700(%ebp,%ecx,1),%ebx | |
10830 + xorl %ebx,%esi | |
10831 + movl 0x400(%ebp,%eax,1),%ebx | |
10832 + xorl %ebx,%esi | |
10833 + movl 0x500(%ebp,%edx,1),%ebx | |
10834 + xorl %ebx,%esi | |
10835 + movl 32(%esp),%ebp | |
10836 + | |
10837 + # Round 12 | |
10838 + movl 36(%esp),%eax | |
10839 + movl %esi,%edx | |
10840 + shrl $16,%edx | |
10841 + movl 40(%esp),%ecx | |
10842 + xorl %esi,%edx | |
10843 + andl %edx,%eax | |
10844 + andl %ecx,%edx | |
10845 + movl %eax,%ebx | |
10846 + shll $16,%ebx | |
10847 + movl %edx,%ecx | |
10848 + shll $16,%ecx | |
10849 + xorl %ebx,%eax | |
10850 + xorl %ecx,%edx | |
10851 + movl 96(%ebp),%ebx | |
10852 + xorl %ebx,%eax | |
10853 + movl 100(%ebp),%ecx | |
10854 + xorl %esi,%eax | |
10855 + xorl %esi,%edx | |
10856 + xorl %ecx,%edx | |
10857 + andl $0xfcfcfcfc,%eax | |
10858 + xorl %ebx,%ebx | |
10859 + andl $0xcfcfcfcf,%edx | |
10860 + xorl %ecx,%ecx | |
10861 + movb %al,%bl | |
10862 + movb %ah,%cl | |
10863 + rorl $4,%edx | |
10864 + movl 4(%esp),%ebp | |
10865 + xorl (%ebp,%ebx,1),%edi | |
10866 + movb %dl,%bl | |
10867 + xorl 0x200(%ebp,%ecx,1),%edi | |
10868 + movb %dh,%cl | |
10869 + shrl $16,%eax | |
10870 + xorl 0x100(%ebp,%ebx,1),%edi | |
10871 + movb %ah,%bl | |
10872 + shrl $16,%edx | |
10873 + xorl 0x300(%ebp,%ecx,1),%edi | |
10874 + movb %dh,%cl | |
10875 + andl $0xff,%eax | |
10876 + andl $0xff,%edx | |
10877 + movl 0x600(%ebp,%ebx,1),%ebx | |
10878 + xorl %ebx,%edi | |
10879 + movl 0x700(%ebp,%ecx,1),%ebx | |
10880 + xorl %ebx,%edi | |
10881 + movl 0x400(%ebp,%eax,1),%ebx | |
10882 + xorl %ebx,%edi | |
10883 + movl 0x500(%ebp,%edx,1),%ebx | |
10884 + xorl %ebx,%edi | |
10885 + movl 32(%esp),%ebp | |
10886 + | |
10887 + # Round 13 | |
10888 + movl 36(%esp),%eax | |
10889 + movl %edi,%edx | |
10890 + shrl $16,%edx | |
10891 + movl 40(%esp),%ecx | |
10892 + xorl %edi,%edx | |
10893 + andl %edx,%eax | |
10894 + andl %ecx,%edx | |
10895 + movl %eax,%ebx | |
10896 + shll $16,%ebx | |
10897 + movl %edx,%ecx | |
10898 + shll $16,%ecx | |
10899 + xorl %ebx,%eax | |
10900 + xorl %ecx,%edx | |
10901 + movl 104(%ebp),%ebx | |
10902 + xorl %ebx,%eax | |
10903 + movl 108(%ebp),%ecx | |
10904 + xorl %edi,%eax | |
10905 + xorl %edi,%edx | |
10906 + xorl %ecx,%edx | |
10907 + andl $0xfcfcfcfc,%eax | |
10908 + xorl %ebx,%ebx | |
10909 + andl $0xcfcfcfcf,%edx | |
10910 + xorl %ecx,%ecx | |
10911 + movb %al,%bl | |
10912 + movb %ah,%cl | |
10913 + rorl $4,%edx | |
10914 + movl 4(%esp),%ebp | |
10915 + xorl (%ebp,%ebx,1),%esi | |
10916 + movb %dl,%bl | |
10917 + xorl 0x200(%ebp,%ecx,1),%esi | |
10918 + movb %dh,%cl | |
10919 + shrl $16,%eax | |
10920 + xorl 0x100(%ebp,%ebx,1),%esi | |
10921 + movb %ah,%bl | |
10922 + shrl $16,%edx | |
10923 + xorl 0x300(%ebp,%ecx,1),%esi | |
10924 + movb %dh,%cl | |
10925 + andl $0xff,%eax | |
10926 + andl $0xff,%edx | |
10927 + movl 0x600(%ebp,%ebx,1),%ebx | |
10928 + xorl %ebx,%esi | |
10929 + movl 0x700(%ebp,%ecx,1),%ebx | |
10930 + xorl %ebx,%esi | |
10931 + movl 0x400(%ebp,%eax,1),%ebx | |
10932 + xorl %ebx,%esi | |
10933 + movl 0x500(%ebp,%edx,1),%ebx | |
10934 + xorl %ebx,%esi | |
10935 + movl 32(%esp),%ebp | |
10936 + | |
10937 + # Round 14 | |
10938 + movl 36(%esp),%eax | |
10939 + movl %esi,%edx | |
10940 + shrl $16,%edx | |
10941 + movl 40(%esp),%ecx | |
10942 + xorl %esi,%edx | |
10943 + andl %edx,%eax | |
10944 + andl %ecx,%edx | |
10945 + movl %eax,%ebx | |
10946 + shll $16,%ebx | |
10947 + movl %edx,%ecx | |
10948 + shll $16,%ecx | |
10949 + xorl %ebx,%eax | |
10950 + xorl %ecx,%edx | |
10951 + movl 112(%ebp),%ebx | |
10952 + xorl %ebx,%eax | |
10953 + movl 116(%ebp),%ecx | |
10954 + xorl %esi,%eax | |
10955 + xorl %esi,%edx | |
10956 + xorl %ecx,%edx | |
10957 + andl $0xfcfcfcfc,%eax | |
10958 + xorl %ebx,%ebx | |
10959 + andl $0xcfcfcfcf,%edx | |
10960 + xorl %ecx,%ecx | |
10961 + movb %al,%bl | |
10962 + movb %ah,%cl | |
10963 + rorl $4,%edx | |
10964 + movl 4(%esp),%ebp | |
10965 + xorl (%ebp,%ebx,1),%edi | |
10966 + movb %dl,%bl | |
10967 + xorl 0x200(%ebp,%ecx,1),%edi | |
10968 + movb %dh,%cl | |
10969 + shrl $16,%eax | |
10970 + xorl 0x100(%ebp,%ebx,1),%edi | |
10971 + movb %ah,%bl | |
10972 + shrl $16,%edx | |
10973 + xorl 0x300(%ebp,%ecx,1),%edi | |
10974 + movb %dh,%cl | |
10975 + andl $0xff,%eax | |
10976 + andl $0xff,%edx | |
10977 + movl 0x600(%ebp,%ebx,1),%ebx | |
10978 + xorl %ebx,%edi | |
10979 + movl 0x700(%ebp,%ecx,1),%ebx | |
10980 + xorl %ebx,%edi | |
10981 + movl 0x400(%ebp,%eax,1),%ebx | |
10982 + xorl %ebx,%edi | |
10983 + movl 0x500(%ebp,%edx,1),%ebx | |
10984 + xorl %ebx,%edi | |
10985 + movl 32(%esp),%ebp | |
10986 + | |
10987 + # Round 15 | |
10988 + movl 36(%esp),%eax | |
10989 + movl %edi,%edx | |
10990 + shrl $16,%edx | |
10991 + movl 40(%esp),%ecx | |
10992 + xorl %edi,%edx | |
10993 + andl %edx,%eax | |
10994 + andl %ecx,%edx | |
10995 + movl %eax,%ebx | |
10996 + shll $16,%ebx | |
10997 + movl %edx,%ecx | |
10998 + shll $16,%ecx | |
10999 + xorl %ebx,%eax | |
11000 + xorl %ecx,%edx | |
11001 + movl 120(%ebp),%ebx | |
11002 + xorl %ebx,%eax | |
11003 + movl 124(%ebp),%ecx | |
11004 + xorl %edi,%eax | |
11005 + xorl %edi,%edx | |
11006 + xorl %ecx,%edx | |
11007 + andl $0xfcfcfcfc,%eax | |
11008 + xorl %ebx,%ebx | |
11009 + andl $0xcfcfcfcf,%edx | |
11010 + xorl %ecx,%ecx | |
11011 + movb %al,%bl | |
11012 + movb %ah,%cl | |
11013 + rorl $4,%edx | |
11014 + movl 4(%esp),%ebp | |
11015 + xorl (%ebp,%ebx,1),%esi | |
11016 + movb %dl,%bl | |
11017 + xorl 0x200(%ebp,%ecx,1),%esi | |
11018 + movb %dh,%cl | |
11019 + shrl $16,%eax | |
11020 + xorl 0x100(%ebp,%ebx,1),%esi | |
11021 + movb %ah,%bl | |
11022 + shrl $16,%edx | |
11023 + xorl 0x300(%ebp,%ecx,1),%esi | |
11024 + movb %dh,%cl | |
11025 + andl $0xff,%eax | |
11026 + andl $0xff,%edx | |
11027 + movl 0x600(%ebp,%ebx,1),%ebx | |
11028 + xorl %ebx,%esi | |
11029 + movl 0x700(%ebp,%ecx,1),%ebx | |
11030 + xorl %ebx,%esi | |
11031 + movl 0x400(%ebp,%eax,1),%ebx | |
11032 + xorl %ebx,%esi | |
11033 + movl 0x500(%ebp,%edx,1),%ebx | |
11034 + xorl %ebx,%esi | |
11035 + movl 32(%esp),%ebp | |
11036 + movl (%esp),%ebx | |
11037 + movl %edi,%eax | |
11038 + decl %ebx | |
11039 + movl %esi,%edi | |
11040 + movl %eax,%esi | |
11041 + movl %ebx,(%esp) | |
11042 + jnz L001start | |
11043 + | |
11044 + # FP | |
11045 + movl 28(%esp),%edx | |
11046 + rorl $1,%edi | |
11047 + movl %esi,%eax | |
11048 + xorl %edi,%esi | |
11049 + andl $0xaaaaaaaa,%esi | |
11050 + xorl %esi,%eax | |
11051 + xorl %esi,%edi | |
11052 + | |
11053 + roll $23,%eax | |
11054 + movl %eax,%esi | |
11055 + xorl %edi,%eax | |
11056 + andl $0x03fc03fc,%eax | |
11057 + xorl %eax,%esi | |
11058 + xorl %eax,%edi | |
11059 + | |
11060 + roll $10,%esi | |
11061 + movl %esi,%eax | |
11062 + xorl %edi,%esi | |
11063 + andl $0x33333333,%esi | |
11064 + xorl %esi,%eax | |
11065 + xorl %esi,%edi | |
11066 + | |
11067 + roll $18,%edi | |
11068 + movl %edi,%esi | |
11069 + xorl %eax,%edi | |
11070 + andl $0xfff0000f,%edi | |
11071 + xorl %edi,%esi | |
11072 + xorl %edi,%eax | |
11073 + | |
11074 + roll $12,%esi | |
11075 + movl %esi,%edi | |
11076 + xorl %eax,%esi | |
11077 + andl $0xf0f0f0f0,%esi | |
11078 + xorl %esi,%edi | |
11079 + xorl %esi,%eax | |
11080 + | |
11081 + rorl $4,%eax | |
11082 + movl %eax,(%edx) | |
11083 + movl %edi,4(%edx) | |
11084 + addl $8,%esp | |
11085 + popl %edi | |
11086 + popl %esi | |
11087 + popl %ebx | |
11088 + popl %ebp | |
11089 + ret | |
11090 +.section __IMPORT,__pointers,non_lazy_symbol_pointers | |
11091 +L_DES_SPtrans$non_lazy_ptr: | |
11092 +.indirect_symbol _DES_SPtrans | |
11093 +.long 0 | |
11094 diff --git a/crypto/des/asm/des-586-mac.S b/crypto/des/asm/des-586-mac.S | |
11095 new file mode 100644 | |
11096 index 0000000..4969416 | |
11097 --- /dev/null | |
11098 +++ b/crypto/des/asm/des-586-mac.S | |
11099 @@ -0,0 +1,1821 @@ | |
11100 +.file "des-586.s" | |
11101 +.text | |
11102 +.globl _DES_SPtrans | |
11103 +.align 4 | |
11104 +__x86_DES_encrypt: | |
11105 + pushl %ecx | |
11106 + # Round 0 | |
11107 + movl (%ecx),%eax | |
11108 + xorl %ebx,%ebx | |
11109 + movl 4(%ecx),%edx | |
11110 + xorl %esi,%eax | |
11111 + xorl %ecx,%ecx | |
11112 + xorl %esi,%edx | |
11113 + andl $0xfcfcfcfc,%eax | |
11114 + andl $0xcfcfcfcf,%edx | |
11115 + movb %al,%bl | |
11116 + movb %ah,%cl | |
11117 + rorl $4,%edx | |
11118 + xorl (%ebp,%ebx,1),%edi | |
11119 + movb %dl,%bl | |
11120 + xorl 0x200(%ebp,%ecx,1),%edi | |
11121 + movb %dh,%cl | |
11122 + shrl $16,%eax | |
11123 + xorl 0x100(%ebp,%ebx,1),%edi | |
11124 + movb %ah,%bl | |
11125 + shrl $16,%edx | |
11126 + xorl 0x300(%ebp,%ecx,1),%edi | |
11127 + movb %dh,%cl | |
11128 + andl $0xff,%eax | |
11129 + andl $0xff,%edx | |
11130 + xorl 0x600(%ebp,%ebx,1),%edi | |
11131 + xorl 0x700(%ebp,%ecx,1),%edi | |
11132 + movl (%esp),%ecx | |
11133 + xorl 0x400(%ebp,%eax,1),%edi | |
11134 + xorl 0x500(%ebp,%edx,1),%edi | |
11135 + # Round 1 | |
11136 + movl 8(%ecx),%eax | |
11137 + xorl %ebx,%ebx | |
11138 + movl 12(%ecx),%edx | |
11139 + xorl %edi,%eax | |
11140 + xorl %ecx,%ecx | |
11141 + xorl %edi,%edx | |
11142 + andl $0xfcfcfcfc,%eax | |
11143 + andl $0xcfcfcfcf,%edx | |
11144 + movb %al,%bl | |
11145 + movb %ah,%cl | |
11146 + rorl $4,%edx | |
11147 + xorl (%ebp,%ebx,1),%esi | |
11148 + movb %dl,%bl | |
11149 + xorl 0x200(%ebp,%ecx,1),%esi | |
11150 + movb %dh,%cl | |
11151 + shrl $16,%eax | |
11152 + xorl 0x100(%ebp,%ebx,1),%esi | |
11153 + movb %ah,%bl | |
11154 + shrl $16,%edx | |
11155 + xorl 0x300(%ebp,%ecx,1),%esi | |
11156 + movb %dh,%cl | |
11157 + andl $0xff,%eax | |
11158 + andl $0xff,%edx | |
11159 + xorl 0x600(%ebp,%ebx,1),%esi | |
11160 + xorl 0x700(%ebp,%ecx,1),%esi | |
11161 + movl (%esp),%ecx | |
11162 + xorl 0x400(%ebp,%eax,1),%esi | |
11163 + xorl 0x500(%ebp,%edx,1),%esi | |
11164 + # Round 2 | |
11165 + movl 16(%ecx),%eax | |
11166 + xorl %ebx,%ebx | |
11167 + movl 20(%ecx),%edx | |
11168 + xorl %esi,%eax | |
11169 + xorl %ecx,%ecx | |
11170 + xorl %esi,%edx | |
11171 + andl $0xfcfcfcfc,%eax | |
11172 + andl $0xcfcfcfcf,%edx | |
11173 + movb %al,%bl | |
11174 + movb %ah,%cl | |
11175 + rorl $4,%edx | |
11176 + xorl (%ebp,%ebx,1),%edi | |
11177 + movb %dl,%bl | |
11178 + xorl 0x200(%ebp,%ecx,1),%edi | |
11179 + movb %dh,%cl | |
11180 + shrl $16,%eax | |
11181 + xorl 0x100(%ebp,%ebx,1),%edi | |
11182 + movb %ah,%bl | |
11183 + shrl $16,%edx | |
11184 + xorl 0x300(%ebp,%ecx,1),%edi | |
11185 + movb %dh,%cl | |
11186 + andl $0xff,%eax | |
11187 + andl $0xff,%edx | |
11188 + xorl 0x600(%ebp,%ebx,1),%edi | |
11189 + xorl 0x700(%ebp,%ecx,1),%edi | |
11190 + movl (%esp),%ecx | |
11191 + xorl 0x400(%ebp,%eax,1),%edi | |
11192 + xorl 0x500(%ebp,%edx,1),%edi | |
11193 + # Round 3 | |
11194 + movl 24(%ecx),%eax | |
11195 + xorl %ebx,%ebx | |
11196 + movl 28(%ecx),%edx | |
11197 + xorl %edi,%eax | |
11198 + xorl %ecx,%ecx | |
11199 + xorl %edi,%edx | |
11200 + andl $0xfcfcfcfc,%eax | |
11201 + andl $0xcfcfcfcf,%edx | |
11202 + movb %al,%bl | |
11203 + movb %ah,%cl | |
11204 + rorl $4,%edx | |
11205 + xorl (%ebp,%ebx,1),%esi | |
11206 + movb %dl,%bl | |
11207 + xorl 0x200(%ebp,%ecx,1),%esi | |
11208 + movb %dh,%cl | |
11209 + shrl $16,%eax | |
11210 + xorl 0x100(%ebp,%ebx,1),%esi | |
11211 + movb %ah,%bl | |
11212 + shrl $16,%edx | |
11213 + xorl 0x300(%ebp,%ecx,1),%esi | |
11214 + movb %dh,%cl | |
11215 + andl $0xff,%eax | |
11216 + andl $0xff,%edx | |
11217 + xorl 0x600(%ebp,%ebx,1),%esi | |
11218 + xorl 0x700(%ebp,%ecx,1),%esi | |
11219 + movl (%esp),%ecx | |
11220 + xorl 0x400(%ebp,%eax,1),%esi | |
11221 + xorl 0x500(%ebp,%edx,1),%esi | |
11222 + # Round 4 | |
11223 + movl 32(%ecx),%eax | |
11224 + xorl %ebx,%ebx | |
11225 + movl 36(%ecx),%edx | |
11226 + xorl %esi,%eax | |
11227 + xorl %ecx,%ecx | |
11228 + xorl %esi,%edx | |
11229 + andl $0xfcfcfcfc,%eax | |
11230 + andl $0xcfcfcfcf,%edx | |
11231 + movb %al,%bl | |
11232 + movb %ah,%cl | |
11233 + rorl $4,%edx | |
11234 + xorl (%ebp,%ebx,1),%edi | |
11235 + movb %dl,%bl | |
11236 + xorl 0x200(%ebp,%ecx,1),%edi | |
11237 + movb %dh,%cl | |
11238 + shrl $16,%eax | |
11239 + xorl 0x100(%ebp,%ebx,1),%edi | |
11240 + movb %ah,%bl | |
11241 + shrl $16,%edx | |
11242 + xorl 0x300(%ebp,%ecx,1),%edi | |
11243 + movb %dh,%cl | |
11244 + andl $0xff,%eax | |
11245 + andl $0xff,%edx | |
11246 + xorl 0x600(%ebp,%ebx,1),%edi | |
11247 + xorl 0x700(%ebp,%ecx,1),%edi | |
11248 + movl (%esp),%ecx | |
11249 + xorl 0x400(%ebp,%eax,1),%edi | |
11250 + xorl 0x500(%ebp,%edx,1),%edi | |
11251 + # Round 5 | |
11252 + movl 40(%ecx),%eax | |
11253 + xorl %ebx,%ebx | |
11254 + movl 44(%ecx),%edx | |
11255 + xorl %edi,%eax | |
11256 + xorl %ecx,%ecx | |
11257 + xorl %edi,%edx | |
11258 + andl $0xfcfcfcfc,%eax | |
11259 + andl $0xcfcfcfcf,%edx | |
11260 + movb %al,%bl | |
11261 + movb %ah,%cl | |
11262 + rorl $4,%edx | |
11263 + xorl (%ebp,%ebx,1),%esi | |
11264 + movb %dl,%bl | |
11265 + xorl 0x200(%ebp,%ecx,1),%esi | |
11266 + movb %dh,%cl | |
11267 + shrl $16,%eax | |
11268 + xorl 0x100(%ebp,%ebx,1),%esi | |
11269 + movb %ah,%bl | |
11270 + shrl $16,%edx | |
11271 + xorl 0x300(%ebp,%ecx,1),%esi | |
11272 + movb %dh,%cl | |
11273 + andl $0xff,%eax | |
11274 + andl $0xff,%edx | |
11275 + xorl 0x600(%ebp,%ebx,1),%esi | |
11276 + xorl 0x700(%ebp,%ecx,1),%esi | |
11277 + movl (%esp),%ecx | |
11278 + xorl 0x400(%ebp,%eax,1),%esi | |
11279 + xorl 0x500(%ebp,%edx,1),%esi | |
11280 + # Round 6 | |
11281 + movl 48(%ecx),%eax | |
11282 + xorl %ebx,%ebx | |
11283 + movl 52(%ecx),%edx | |
11284 + xorl %esi,%eax | |
11285 + xorl %ecx,%ecx | |
11286 + xorl %esi,%edx | |
11287 + andl $0xfcfcfcfc,%eax | |
11288 + andl $0xcfcfcfcf,%edx | |
11289 + movb %al,%bl | |
11290 + movb %ah,%cl | |
11291 + rorl $4,%edx | |
11292 + xorl (%ebp,%ebx,1),%edi | |
11293 + movb %dl,%bl | |
11294 + xorl 0x200(%ebp,%ecx,1),%edi | |
11295 + movb %dh,%cl | |
11296 + shrl $16,%eax | |
11297 + xorl 0x100(%ebp,%ebx,1),%edi | |
11298 + movb %ah,%bl | |
11299 + shrl $16,%edx | |
11300 + xorl 0x300(%ebp,%ecx,1),%edi | |
11301 + movb %dh,%cl | |
11302 + andl $0xff,%eax | |
11303 + andl $0xff,%edx | |
11304 + xorl 0x600(%ebp,%ebx,1),%edi | |
11305 + xorl 0x700(%ebp,%ecx,1),%edi | |
11306 + movl (%esp),%ecx | |
11307 + xorl 0x400(%ebp,%eax,1),%edi | |
11308 + xorl 0x500(%ebp,%edx,1),%edi | |
11309 + # Round 7 | |
11310 + movl 56(%ecx),%eax | |
11311 + xorl %ebx,%ebx | |
11312 + movl 60(%ecx),%edx | |
11313 + xorl %edi,%eax | |
11314 + xorl %ecx,%ecx | |
11315 + xorl %edi,%edx | |
11316 + andl $0xfcfcfcfc,%eax | |
11317 + andl $0xcfcfcfcf,%edx | |
11318 + movb %al,%bl | |
11319 + movb %ah,%cl | |
11320 + rorl $4,%edx | |
11321 + xorl (%ebp,%ebx,1),%esi | |
11322 + movb %dl,%bl | |
11323 + xorl 0x200(%ebp,%ecx,1),%esi | |
11324 + movb %dh,%cl | |
11325 + shrl $16,%eax | |
11326 + xorl 0x100(%ebp,%ebx,1),%esi | |
11327 + movb %ah,%bl | |
11328 + shrl $16,%edx | |
11329 + xorl 0x300(%ebp,%ecx,1),%esi | |
11330 + movb %dh,%cl | |
11331 + andl $0xff,%eax | |
11332 + andl $0xff,%edx | |
11333 + xorl 0x600(%ebp,%ebx,1),%esi | |
11334 + xorl 0x700(%ebp,%ecx,1),%esi | |
11335 + movl (%esp),%ecx | |
11336 + xorl 0x400(%ebp,%eax,1),%esi | |
11337 + xorl 0x500(%ebp,%edx,1),%esi | |
11338 + # Round 8 | |
11339 + movl 64(%ecx),%eax | |
11340 + xorl %ebx,%ebx | |
11341 + movl 68(%ecx),%edx | |
11342 + xorl %esi,%eax | |
11343 + xorl %ecx,%ecx | |
11344 + xorl %esi,%edx | |
11345 + andl $0xfcfcfcfc,%eax | |
11346 + andl $0xcfcfcfcf,%edx | |
11347 + movb %al,%bl | |
11348 + movb %ah,%cl | |
11349 + rorl $4,%edx | |
11350 + xorl (%ebp,%ebx,1),%edi | |
11351 + movb %dl,%bl | |
11352 + xorl 0x200(%ebp,%ecx,1),%edi | |
11353 + movb %dh,%cl | |
11354 + shrl $16,%eax | |
11355 + xorl 0x100(%ebp,%ebx,1),%edi | |
11356 + movb %ah,%bl | |
11357 + shrl $16,%edx | |
11358 + xorl 0x300(%ebp,%ecx,1),%edi | |
11359 + movb %dh,%cl | |
11360 + andl $0xff,%eax | |
11361 + andl $0xff,%edx | |
11362 + xorl 0x600(%ebp,%ebx,1),%edi | |
11363 + xorl 0x700(%ebp,%ecx,1),%edi | |
11364 + movl (%esp),%ecx | |
11365 + xorl 0x400(%ebp,%eax,1),%edi | |
11366 + xorl 0x500(%ebp,%edx,1),%edi | |
11367 + # Round 9 | |
11368 + movl 72(%ecx),%eax | |
11369 + xorl %ebx,%ebx | |
11370 + movl 76(%ecx),%edx | |
11371 + xorl %edi,%eax | |
11372 + xorl %ecx,%ecx | |
11373 + xorl %edi,%edx | |
11374 + andl $0xfcfcfcfc,%eax | |
11375 + andl $0xcfcfcfcf,%edx | |
11376 + movb %al,%bl | |
11377 + movb %ah,%cl | |
11378 + rorl $4,%edx | |
11379 + xorl (%ebp,%ebx,1),%esi | |
11380 + movb %dl,%bl | |
11381 + xorl 0x200(%ebp,%ecx,1),%esi | |
11382 + movb %dh,%cl | |
11383 + shrl $16,%eax | |
11384 + xorl 0x100(%ebp,%ebx,1),%esi | |
11385 + movb %ah,%bl | |
11386 + shrl $16,%edx | |
11387 + xorl 0x300(%ebp,%ecx,1),%esi | |
11388 + movb %dh,%cl | |
11389 + andl $0xff,%eax | |
11390 + andl $0xff,%edx | |
11391 + xorl 0x600(%ebp,%ebx,1),%esi | |
11392 + xorl 0x700(%ebp,%ecx,1),%esi | |
11393 + movl (%esp),%ecx | |
11394 + xorl 0x400(%ebp,%eax,1),%esi | |
11395 + xorl 0x500(%ebp,%edx,1),%esi | |
11396 + # Round 10 | |
11397 + movl 80(%ecx),%eax | |
11398 + xorl %ebx,%ebx | |
11399 + movl 84(%ecx),%edx | |
11400 + xorl %esi,%eax | |
11401 + xorl %ecx,%ecx | |
11402 + xorl %esi,%edx | |
11403 + andl $0xfcfcfcfc,%eax | |
11404 + andl $0xcfcfcfcf,%edx | |
11405 + movb %al,%bl | |
11406 + movb %ah,%cl | |
11407 + rorl $4,%edx | |
11408 + xorl (%ebp,%ebx,1),%edi | |
11409 + movb %dl,%bl | |
11410 + xorl 0x200(%ebp,%ecx,1),%edi | |
11411 + movb %dh,%cl | |
11412 + shrl $16,%eax | |
11413 + xorl 0x100(%ebp,%ebx,1),%edi | |
11414 + movb %ah,%bl | |
11415 + shrl $16,%edx | |
11416 + xorl 0x300(%ebp,%ecx,1),%edi | |
11417 + movb %dh,%cl | |
11418 + andl $0xff,%eax | |
11419 + andl $0xff,%edx | |
11420 + xorl 0x600(%ebp,%ebx,1),%edi | |
11421 + xorl 0x700(%ebp,%ecx,1),%edi | |
11422 + movl (%esp),%ecx | |
11423 + xorl 0x400(%ebp,%eax,1),%edi | |
11424 + xorl 0x500(%ebp,%edx,1),%edi | |
11425 + # Round 11 | |
11426 + movl 88(%ecx),%eax | |
11427 + xorl %ebx,%ebx | |
11428 + movl 92(%ecx),%edx | |
11429 + xorl %edi,%eax | |
11430 + xorl %ecx,%ecx | |
11431 + xorl %edi,%edx | |
11432 + andl $0xfcfcfcfc,%eax | |
11433 + andl $0xcfcfcfcf,%edx | |
11434 + movb %al,%bl | |
11435 + movb %ah,%cl | |
11436 + rorl $4,%edx | |
11437 + xorl (%ebp,%ebx,1),%esi | |
11438 + movb %dl,%bl | |
11439 + xorl 0x200(%ebp,%ecx,1),%esi | |
11440 + movb %dh,%cl | |
11441 + shrl $16,%eax | |
11442 + xorl 0x100(%ebp,%ebx,1),%esi | |
11443 + movb %ah,%bl | |
11444 + shrl $16,%edx | |
11445 + xorl 0x300(%ebp,%ecx,1),%esi | |
11446 + movb %dh,%cl | |
11447 + andl $0xff,%eax | |
11448 + andl $0xff,%edx | |
11449 + xorl 0x600(%ebp,%ebx,1),%esi | |
11450 + xorl 0x700(%ebp,%ecx,1),%esi | |
11451 + movl (%esp),%ecx | |
11452 + xorl 0x400(%ebp,%eax,1),%esi | |
11453 + xorl 0x500(%ebp,%edx,1),%esi | |
11454 + # Round 12 | |
11455 + movl 96(%ecx),%eax | |
11456 + xorl %ebx,%ebx | |
11457 + movl 100(%ecx),%edx | |
11458 + xorl %esi,%eax | |
11459 + xorl %ecx,%ecx | |
11460 + xorl %esi,%edx | |
11461 + andl $0xfcfcfcfc,%eax | |
11462 + andl $0xcfcfcfcf,%edx | |
11463 + movb %al,%bl | |
11464 + movb %ah,%cl | |
11465 + rorl $4,%edx | |
11466 + xorl (%ebp,%ebx,1),%edi | |
11467 + movb %dl,%bl | |
11468 + xorl 0x200(%ebp,%ecx,1),%edi | |
11469 + movb %dh,%cl | |
11470 + shrl $16,%eax | |
11471 + xorl 0x100(%ebp,%ebx,1),%edi | |
11472 + movb %ah,%bl | |
11473 + shrl $16,%edx | |
11474 + xorl 0x300(%ebp,%ecx,1),%edi | |
11475 + movb %dh,%cl | |
11476 + andl $0xff,%eax | |
11477 + andl $0xff,%edx | |
11478 + xorl 0x600(%ebp,%ebx,1),%edi | |
11479 + xorl 0x700(%ebp,%ecx,1),%edi | |
11480 + movl (%esp),%ecx | |
11481 + xorl 0x400(%ebp,%eax,1),%edi | |
11482 + xorl 0x500(%ebp,%edx,1),%edi | |
11483 + # Round 13 | |
11484 + movl 104(%ecx),%eax | |
11485 + xorl %ebx,%ebx | |
11486 + movl 108(%ecx),%edx | |
11487 + xorl %edi,%eax | |
11488 + xorl %ecx,%ecx | |
11489 + xorl %edi,%edx | |
11490 + andl $0xfcfcfcfc,%eax | |
11491 + andl $0xcfcfcfcf,%edx | |
11492 + movb %al,%bl | |
11493 + movb %ah,%cl | |
11494 + rorl $4,%edx | |
11495 + xorl (%ebp,%ebx,1),%esi | |
11496 + movb %dl,%bl | |
11497 + xorl 0x200(%ebp,%ecx,1),%esi | |
11498 + movb %dh,%cl | |
11499 + shrl $16,%eax | |
11500 + xorl 0x100(%ebp,%ebx,1),%esi | |
11501 + movb %ah,%bl | |
11502 + shrl $16,%edx | |
11503 + xorl 0x300(%ebp,%ecx,1),%esi | |
11504 + movb %dh,%cl | |
11505 + andl $0xff,%eax | |
11506 + andl $0xff,%edx | |
11507 + xorl 0x600(%ebp,%ebx,1),%esi | |
11508 + xorl 0x700(%ebp,%ecx,1),%esi | |
11509 + movl (%esp),%ecx | |
11510 + xorl 0x400(%ebp,%eax,1),%esi | |
11511 + xorl 0x500(%ebp,%edx,1),%esi | |
11512 + # Round 14 | |
11513 + movl 112(%ecx),%eax | |
11514 + xorl %ebx,%ebx | |
11515 + movl 116(%ecx),%edx | |
11516 + xorl %esi,%eax | |
11517 + xorl %ecx,%ecx | |
11518 + xorl %esi,%edx | |
11519 + andl $0xfcfcfcfc,%eax | |
11520 + andl $0xcfcfcfcf,%edx | |
11521 + movb %al,%bl | |
11522 + movb %ah,%cl | |
11523 + rorl $4,%edx | |
11524 + xorl (%ebp,%ebx,1),%edi | |
11525 + movb %dl,%bl | |
11526 + xorl 0x200(%ebp,%ecx,1),%edi | |
11527 + movb %dh,%cl | |
11528 + shrl $16,%eax | |
11529 + xorl 0x100(%ebp,%ebx,1),%edi | |
11530 + movb %ah,%bl | |
11531 + shrl $16,%edx | |
11532 + xorl 0x300(%ebp,%ecx,1),%edi | |
11533 + movb %dh,%cl | |
11534 + andl $0xff,%eax | |
11535 + andl $0xff,%edx | |
11536 + xorl 0x600(%ebp,%ebx,1),%edi | |
11537 + xorl 0x700(%ebp,%ecx,1),%edi | |
11538 + movl (%esp),%ecx | |
11539 + xorl 0x400(%ebp,%eax,1),%edi | |
11540 + xorl 0x500(%ebp,%edx,1),%edi | |
11541 + # Round 15 | |
11542 + movl 120(%ecx),%eax | |
11543 + xorl %ebx,%ebx | |
11544 + movl 124(%ecx),%edx | |
11545 + xorl %edi,%eax | |
11546 + xorl %ecx,%ecx | |
11547 + xorl %edi,%edx | |
11548 + andl $0xfcfcfcfc,%eax | |
11549 + andl $0xcfcfcfcf,%edx | |
11550 + movb %al,%bl | |
11551 + movb %ah,%cl | |
11552 + rorl $4,%edx | |
11553 + xorl (%ebp,%ebx,1),%esi | |
11554 + movb %dl,%bl | |
11555 + xorl 0x200(%ebp,%ecx,1),%esi | |
11556 + movb %dh,%cl | |
11557 + shrl $16,%eax | |
11558 + xorl 0x100(%ebp,%ebx,1),%esi | |
11559 + movb %ah,%bl | |
11560 + shrl $16,%edx | |
11561 + xorl 0x300(%ebp,%ecx,1),%esi | |
11562 + movb %dh,%cl | |
11563 + andl $0xff,%eax | |
11564 + andl $0xff,%edx | |
11565 + xorl 0x600(%ebp,%ebx,1),%esi | |
11566 + xorl 0x700(%ebp,%ecx,1),%esi | |
11567 + movl (%esp),%ecx | |
11568 + xorl 0x400(%ebp,%eax,1),%esi | |
11569 + xorl 0x500(%ebp,%edx,1),%esi | |
11570 + addl $4,%esp | |
11571 + ret | |
11572 +.align 4 | |
11573 +__x86_DES_decrypt: | |
11574 + pushl %ecx | |
11575 + # Round 15 | |
11576 + movl 120(%ecx),%eax | |
11577 + xorl %ebx,%ebx | |
11578 + movl 124(%ecx),%edx | |
11579 + xorl %esi,%eax | |
11580 + xorl %ecx,%ecx | |
11581 + xorl %esi,%edx | |
11582 + andl $0xfcfcfcfc,%eax | |
11583 + andl $0xcfcfcfcf,%edx | |
11584 + movb %al,%bl | |
11585 + movb %ah,%cl | |
11586 + rorl $4,%edx | |
11587 + xorl (%ebp,%ebx,1),%edi | |
11588 + movb %dl,%bl | |
11589 + xorl 0x200(%ebp,%ecx,1),%edi | |
11590 + movb %dh,%cl | |
11591 + shrl $16,%eax | |
11592 + xorl 0x100(%ebp,%ebx,1),%edi | |
11593 + movb %ah,%bl | |
11594 + shrl $16,%edx | |
11595 + xorl 0x300(%ebp,%ecx,1),%edi | |
11596 + movb %dh,%cl | |
11597 + andl $0xff,%eax | |
11598 + andl $0xff,%edx | |
11599 + xorl 0x600(%ebp,%ebx,1),%edi | |
11600 + xorl 0x700(%ebp,%ecx,1),%edi | |
11601 + movl (%esp),%ecx | |
11602 + xorl 0x400(%ebp,%eax,1),%edi | |
11603 + xorl 0x500(%ebp,%edx,1),%edi | |
11604 + # Round 14 | |
11605 + movl 112(%ecx),%eax | |
11606 + xorl %ebx,%ebx | |
11607 + movl 116(%ecx),%edx | |
11608 + xorl %edi,%eax | |
11609 + xorl %ecx,%ecx | |
11610 + xorl %edi,%edx | |
11611 + andl $0xfcfcfcfc,%eax | |
11612 + andl $0xcfcfcfcf,%edx | |
11613 + movb %al,%bl | |
11614 + movb %ah,%cl | |
11615 + rorl $4,%edx | |
11616 + xorl (%ebp,%ebx,1),%esi | |
11617 + movb %dl,%bl | |
11618 + xorl 0x200(%ebp,%ecx,1),%esi | |
11619 + movb %dh,%cl | |
11620 + shrl $16,%eax | |
11621 + xorl 0x100(%ebp,%ebx,1),%esi | |
11622 + movb %ah,%bl | |
11623 + shrl $16,%edx | |
11624 + xorl 0x300(%ebp,%ecx,1),%esi | |
11625 + movb %dh,%cl | |
11626 + andl $0xff,%eax | |
11627 + andl $0xff,%edx | |
11628 + xorl 0x600(%ebp,%ebx,1),%esi | |
11629 + xorl 0x700(%ebp,%ecx,1),%esi | |
11630 + movl (%esp),%ecx | |
11631 + xorl 0x400(%ebp,%eax,1),%esi | |
11632 + xorl 0x500(%ebp,%edx,1),%esi | |
11633 + # Round 13 | |
11634 + movl 104(%ecx),%eax | |
11635 + xorl %ebx,%ebx | |
11636 + movl 108(%ecx),%edx | |
11637 + xorl %esi,%eax | |
11638 + xorl %ecx,%ecx | |
11639 + xorl %esi,%edx | |
11640 + andl $0xfcfcfcfc,%eax | |
11641 + andl $0xcfcfcfcf,%edx | |
11642 + movb %al,%bl | |
11643 + movb %ah,%cl | |
11644 + rorl $4,%edx | |
11645 + xorl (%ebp,%ebx,1),%edi | |
11646 + movb %dl,%bl | |
11647 + xorl 0x200(%ebp,%ecx,1),%edi | |
11648 + movb %dh,%cl | |
11649 + shrl $16,%eax | |
11650 + xorl 0x100(%ebp,%ebx,1),%edi | |
11651 + movb %ah,%bl | |
11652 + shrl $16,%edx | |
11653 + xorl 0x300(%ebp,%ecx,1),%edi | |
11654 + movb %dh,%cl | |
11655 + andl $0xff,%eax | |
11656 + andl $0xff,%edx | |
11657 + xorl 0x600(%ebp,%ebx,1),%edi | |
11658 + xorl 0x700(%ebp,%ecx,1),%edi | |
11659 + movl (%esp),%ecx | |
11660 + xorl 0x400(%ebp,%eax,1),%edi | |
11661 + xorl 0x500(%ebp,%edx,1),%edi | |
11662 + # Round 12 | |
11663 + movl 96(%ecx),%eax | |
11664 + xorl %ebx,%ebx | |
11665 + movl 100(%ecx),%edx | |
11666 + xorl %edi,%eax | |
11667 + xorl %ecx,%ecx | |
11668 + xorl %edi,%edx | |
11669 + andl $0xfcfcfcfc,%eax | |
11670 + andl $0xcfcfcfcf,%edx | |
11671 + movb %al,%bl | |
11672 + movb %ah,%cl | |
11673 + rorl $4,%edx | |
11674 + xorl (%ebp,%ebx,1),%esi | |
11675 + movb %dl,%bl | |
11676 + xorl 0x200(%ebp,%ecx,1),%esi | |
11677 + movb %dh,%cl | |
11678 + shrl $16,%eax | |
11679 + xorl 0x100(%ebp,%ebx,1),%esi | |
11680 + movb %ah,%bl | |
11681 + shrl $16,%edx | |
11682 + xorl 0x300(%ebp,%ecx,1),%esi | |
11683 + movb %dh,%cl | |
11684 + andl $0xff,%eax | |
11685 + andl $0xff,%edx | |
11686 + xorl 0x600(%ebp,%ebx,1),%esi | |
11687 + xorl 0x700(%ebp,%ecx,1),%esi | |
11688 + movl (%esp),%ecx | |
11689 + xorl 0x400(%ebp,%eax,1),%esi | |
11690 + xorl 0x500(%ebp,%edx,1),%esi | |
11691 + # Round 11 | |
11692 + movl 88(%ecx),%eax | |
11693 + xorl %ebx,%ebx | |
11694 + movl 92(%ecx),%edx | |
11695 + xorl %esi,%eax | |
11696 + xorl %ecx,%ecx | |
11697 + xorl %esi,%edx | |
11698 + andl $0xfcfcfcfc,%eax | |
11699 + andl $0xcfcfcfcf,%edx | |
11700 + movb %al,%bl | |
11701 + movb %ah,%cl | |
11702 + rorl $4,%edx | |
11703 + xorl (%ebp,%ebx,1),%edi | |
11704 + movb %dl,%bl | |
11705 + xorl 0x200(%ebp,%ecx,1),%edi | |
11706 + movb %dh,%cl | |
11707 + shrl $16,%eax | |
11708 + xorl 0x100(%ebp,%ebx,1),%edi | |
11709 + movb %ah,%bl | |
11710 + shrl $16,%edx | |
11711 + xorl 0x300(%ebp,%ecx,1),%edi | |
11712 + movb %dh,%cl | |
11713 + andl $0xff,%eax | |
11714 + andl $0xff,%edx | |
11715 + xorl 0x600(%ebp,%ebx,1),%edi | |
11716 + xorl 0x700(%ebp,%ecx,1),%edi | |
11717 + movl (%esp),%ecx | |
11718 + xorl 0x400(%ebp,%eax,1),%edi | |
11719 + xorl 0x500(%ebp,%edx,1),%edi | |
11720 + # Round 10 | |
11721 + movl 80(%ecx),%eax | |
11722 + xorl %ebx,%ebx | |
11723 + movl 84(%ecx),%edx | |
11724 + xorl %edi,%eax | |
11725 + xorl %ecx,%ecx | |
11726 + xorl %edi,%edx | |
11727 + andl $0xfcfcfcfc,%eax | |
11728 + andl $0xcfcfcfcf,%edx | |
11729 + movb %al,%bl | |
11730 + movb %ah,%cl | |
11731 + rorl $4,%edx | |
11732 + xorl (%ebp,%ebx,1),%esi | |
11733 + movb %dl,%bl | |
11734 + xorl 0x200(%ebp,%ecx,1),%esi | |
11735 + movb %dh,%cl | |
11736 + shrl $16,%eax | |
11737 + xorl 0x100(%ebp,%ebx,1),%esi | |
11738 + movb %ah,%bl | |
11739 + shrl $16,%edx | |
11740 + xorl 0x300(%ebp,%ecx,1),%esi | |
11741 + movb %dh,%cl | |
11742 + andl $0xff,%eax | |
11743 + andl $0xff,%edx | |
11744 + xorl 0x600(%ebp,%ebx,1),%esi | |
11745 + xorl 0x700(%ebp,%ecx,1),%esi | |
11746 + movl (%esp),%ecx | |
11747 + xorl 0x400(%ebp,%eax,1),%esi | |
11748 + xorl 0x500(%ebp,%edx,1),%esi | |
11749 + # Round 9 | |
11750 + movl 72(%ecx),%eax | |
11751 + xorl %ebx,%ebx | |
11752 + movl 76(%ecx),%edx | |
11753 + xorl %esi,%eax | |
11754 + xorl %ecx,%ecx | |
11755 + xorl %esi,%edx | |
11756 + andl $0xfcfcfcfc,%eax | |
11757 + andl $0xcfcfcfcf,%edx | |
11758 + movb %al,%bl | |
11759 + movb %ah,%cl | |
11760 + rorl $4,%edx | |
11761 + xorl (%ebp,%ebx,1),%edi | |
11762 + movb %dl,%bl | |
11763 + xorl 0x200(%ebp,%ecx,1),%edi | |
11764 + movb %dh,%cl | |
11765 + shrl $16,%eax | |
11766 + xorl 0x100(%ebp,%ebx,1),%edi | |
11767 + movb %ah,%bl | |
11768 + shrl $16,%edx | |
11769 + xorl 0x300(%ebp,%ecx,1),%edi | |
11770 + movb %dh,%cl | |
11771 + andl $0xff,%eax | |
11772 + andl $0xff,%edx | |
11773 + xorl 0x600(%ebp,%ebx,1),%edi | |
11774 + xorl 0x700(%ebp,%ecx,1),%edi | |
11775 + movl (%esp),%ecx | |
11776 + xorl 0x400(%ebp,%eax,1),%edi | |
11777 + xorl 0x500(%ebp,%edx,1),%edi | |
11778 + # Round 8 | |
11779 + movl 64(%ecx),%eax | |
11780 + xorl %ebx,%ebx | |
11781 + movl 68(%ecx),%edx | |
11782 + xorl %edi,%eax | |
11783 + xorl %ecx,%ecx | |
11784 + xorl %edi,%edx | |
11785 + andl $0xfcfcfcfc,%eax | |
11786 + andl $0xcfcfcfcf,%edx | |
11787 + movb %al,%bl | |
11788 + movb %ah,%cl | |
11789 + rorl $4,%edx | |
11790 + xorl (%ebp,%ebx,1),%esi | |
11791 + movb %dl,%bl | |
11792 + xorl 0x200(%ebp,%ecx,1),%esi | |
11793 + movb %dh,%cl | |
11794 + shrl $16,%eax | |
11795 + xorl 0x100(%ebp,%ebx,1),%esi | |
11796 + movb %ah,%bl | |
11797 + shrl $16,%edx | |
11798 + xorl 0x300(%ebp,%ecx,1),%esi | |
11799 + movb %dh,%cl | |
11800 + andl $0xff,%eax | |
11801 + andl $0xff,%edx | |
11802 + xorl 0x600(%ebp,%ebx,1),%esi | |
11803 + xorl 0x700(%ebp,%ecx,1),%esi | |
11804 + movl (%esp),%ecx | |
11805 + xorl 0x400(%ebp,%eax,1),%esi | |
11806 + xorl 0x500(%ebp,%edx,1),%esi | |
11807 + # Round 7 | |
11808 + movl 56(%ecx),%eax | |
11809 + xorl %ebx,%ebx | |
11810 + movl 60(%ecx),%edx | |
11811 + xorl %esi,%eax | |
11812 + xorl %ecx,%ecx | |
11813 + xorl %esi,%edx | |
11814 + andl $0xfcfcfcfc,%eax | |
11815 + andl $0xcfcfcfcf,%edx | |
11816 + movb %al,%bl | |
11817 + movb %ah,%cl | |
11818 + rorl $4,%edx | |
11819 + xorl (%ebp,%ebx,1),%edi | |
11820 + movb %dl,%bl | |
11821 + xorl 0x200(%ebp,%ecx,1),%edi | |
11822 + movb %dh,%cl | |
11823 + shrl $16,%eax | |
11824 + xorl 0x100(%ebp,%ebx,1),%edi | |
11825 + movb %ah,%bl | |
11826 + shrl $16,%edx | |
11827 + xorl 0x300(%ebp,%ecx,1),%edi | |
11828 + movb %dh,%cl | |
11829 + andl $0xff,%eax | |
11830 + andl $0xff,%edx | |
11831 + xorl 0x600(%ebp,%ebx,1),%edi | |
11832 + xorl 0x700(%ebp,%ecx,1),%edi | |
11833 + movl (%esp),%ecx | |
11834 + xorl 0x400(%ebp,%eax,1),%edi | |
11835 + xorl 0x500(%ebp,%edx,1),%edi | |
11836 + # Round 6 | |
11837 + movl 48(%ecx),%eax | |
11838 + xorl %ebx,%ebx | |
11839 + movl 52(%ecx),%edx | |
11840 + xorl %edi,%eax | |
11841 + xorl %ecx,%ecx | |
11842 + xorl %edi,%edx | |
11843 + andl $0xfcfcfcfc,%eax | |
11844 + andl $0xcfcfcfcf,%edx | |
11845 + movb %al,%bl | |
11846 + movb %ah,%cl | |
11847 + rorl $4,%edx | |
11848 + xorl (%ebp,%ebx,1),%esi | |
11849 + movb %dl,%bl | |
11850 + xorl 0x200(%ebp,%ecx,1),%esi | |
11851 + movb %dh,%cl | |
11852 + shrl $16,%eax | |
11853 + xorl 0x100(%ebp,%ebx,1),%esi | |
11854 + movb %ah,%bl | |
11855 + shrl $16,%edx | |
11856 + xorl 0x300(%ebp,%ecx,1),%esi | |
11857 + movb %dh,%cl | |
11858 + andl $0xff,%eax | |
11859 + andl $0xff,%edx | |
11860 + xorl 0x600(%ebp,%ebx,1),%esi | |
11861 + xorl 0x700(%ebp,%ecx,1),%esi | |
11862 + movl (%esp),%ecx | |
11863 + xorl 0x400(%ebp,%eax,1),%esi | |
11864 + xorl 0x500(%ebp,%edx,1),%esi | |
11865 + # Round 5 | |
11866 + movl 40(%ecx),%eax | |
11867 + xorl %ebx,%ebx | |
11868 + movl 44(%ecx),%edx | |
11869 + xorl %esi,%eax | |
11870 + xorl %ecx,%ecx | |
11871 + xorl %esi,%edx | |
11872 + andl $0xfcfcfcfc,%eax | |
11873 + andl $0xcfcfcfcf,%edx | |
11874 + movb %al,%bl | |
11875 + movb %ah,%cl | |
11876 + rorl $4,%edx | |
11877 + xorl (%ebp,%ebx,1),%edi | |
11878 + movb %dl,%bl | |
11879 + xorl 0x200(%ebp,%ecx,1),%edi | |
11880 + movb %dh,%cl | |
11881 + shrl $16,%eax | |
11882 + xorl 0x100(%ebp,%ebx,1),%edi | |
11883 + movb %ah,%bl | |
11884 + shrl $16,%edx | |
11885 + xorl 0x300(%ebp,%ecx,1),%edi | |
11886 + movb %dh,%cl | |
11887 + andl $0xff,%eax | |
11888 + andl $0xff,%edx | |
11889 + xorl 0x600(%ebp,%ebx,1),%edi | |
11890 + xorl 0x700(%ebp,%ecx,1),%edi | |
11891 + movl (%esp),%ecx | |
11892 + xorl 0x400(%ebp,%eax,1),%edi | |
11893 + xorl 0x500(%ebp,%edx,1),%edi | |
11894 + # Round 4 | |
11895 + movl 32(%ecx),%eax | |
11896 + xorl %ebx,%ebx | |
11897 + movl 36(%ecx),%edx | |
11898 + xorl %edi,%eax | |
11899 + xorl %ecx,%ecx | |
11900 + xorl %edi,%edx | |
11901 + andl $0xfcfcfcfc,%eax | |
11902 + andl $0xcfcfcfcf,%edx | |
11903 + movb %al,%bl | |
11904 + movb %ah,%cl | |
11905 + rorl $4,%edx | |
11906 + xorl (%ebp,%ebx,1),%esi | |
11907 + movb %dl,%bl | |
11908 + xorl 0x200(%ebp,%ecx,1),%esi | |
11909 + movb %dh,%cl | |
11910 + shrl $16,%eax | |
11911 + xorl 0x100(%ebp,%ebx,1),%esi | |
11912 + movb %ah,%bl | |
11913 + shrl $16,%edx | |
11914 + xorl 0x300(%ebp,%ecx,1),%esi | |
11915 + movb %dh,%cl | |
11916 + andl $0xff,%eax | |
11917 + andl $0xff,%edx | |
11918 + xorl 0x600(%ebp,%ebx,1),%esi | |
11919 + xorl 0x700(%ebp,%ecx,1),%esi | |
11920 + movl (%esp),%ecx | |
11921 + xorl 0x400(%ebp,%eax,1),%esi | |
11922 + xorl 0x500(%ebp,%edx,1),%esi | |
11923 + # Round 3 | |
11924 + movl 24(%ecx),%eax | |
11925 + xorl %ebx,%ebx | |
11926 + movl 28(%ecx),%edx | |
11927 + xorl %esi,%eax | |
11928 + xorl %ecx,%ecx | |
11929 + xorl %esi,%edx | |
11930 + andl $0xfcfcfcfc,%eax | |
11931 + andl $0xcfcfcfcf,%edx | |
11932 + movb %al,%bl | |
11933 + movb %ah,%cl | |
11934 + rorl $4,%edx | |
11935 + xorl (%ebp,%ebx,1),%edi | |
11936 + movb %dl,%bl | |
11937 + xorl 0x200(%ebp,%ecx,1),%edi | |
11938 + movb %dh,%cl | |
11939 + shrl $16,%eax | |
11940 + xorl 0x100(%ebp,%ebx,1),%edi | |
11941 + movb %ah,%bl | |
11942 + shrl $16,%edx | |
11943 + xorl 0x300(%ebp,%ecx,1),%edi | |
11944 + movb %dh,%cl | |
11945 + andl $0xff,%eax | |
11946 + andl $0xff,%edx | |
11947 + xorl 0x600(%ebp,%ebx,1),%edi | |
11948 + xorl 0x700(%ebp,%ecx,1),%edi | |
11949 + movl (%esp),%ecx | |
11950 + xorl 0x400(%ebp,%eax,1),%edi | |
11951 + xorl 0x500(%ebp,%edx,1),%edi | |
11952 + # Round 2 | |
11953 + movl 16(%ecx),%eax | |
11954 + xorl %ebx,%ebx | |
11955 + movl 20(%ecx),%edx | |
11956 + xorl %edi,%eax | |
11957 + xorl %ecx,%ecx | |
11958 + xorl %edi,%edx | |
11959 + andl $0xfcfcfcfc,%eax | |
11960 + andl $0xcfcfcfcf,%edx | |
11961 + movb %al,%bl | |
11962 + movb %ah,%cl | |
11963 + rorl $4,%edx | |
11964 + xorl (%ebp,%ebx,1),%esi | |
11965 + movb %dl,%bl | |
11966 + xorl 0x200(%ebp,%ecx,1),%esi | |
11967 + movb %dh,%cl | |
11968 + shrl $16,%eax | |
11969 + xorl 0x100(%ebp,%ebx,1),%esi | |
11970 + movb %ah,%bl | |
11971 + shrl $16,%edx | |
11972 + xorl 0x300(%ebp,%ecx,1),%esi | |
11973 + movb %dh,%cl | |
11974 + andl $0xff,%eax | |
11975 + andl $0xff,%edx | |
11976 + xorl 0x600(%ebp,%ebx,1),%esi | |
11977 + xorl 0x700(%ebp,%ecx,1),%esi | |
11978 + movl (%esp),%ecx | |
11979 + xorl 0x400(%ebp,%eax,1),%esi | |
11980 + xorl 0x500(%ebp,%edx,1),%esi | |
11981 + # Round 1 | |
11982 + movl 8(%ecx),%eax | |
11983 + xorl %ebx,%ebx | |
11984 + movl 12(%ecx),%edx | |
11985 + xorl %esi,%eax | |
11986 + xorl %ecx,%ecx | |
11987 + xorl %esi,%edx | |
11988 + andl $0xfcfcfcfc,%eax | |
11989 + andl $0xcfcfcfcf,%edx | |
11990 + movb %al,%bl | |
11991 + movb %ah,%cl | |
11992 + rorl $4,%edx | |
11993 + xorl (%ebp,%ebx,1),%edi | |
11994 + movb %dl,%bl | |
11995 + xorl 0x200(%ebp,%ecx,1),%edi | |
11996 + movb %dh,%cl | |
11997 + shrl $16,%eax | |
11998 + xorl 0x100(%ebp,%ebx,1),%edi | |
11999 + movb %ah,%bl | |
12000 + shrl $16,%edx | |
12001 + xorl 0x300(%ebp,%ecx,1),%edi | |
12002 + movb %dh,%cl | |
12003 + andl $0xff,%eax | |
12004 + andl $0xff,%edx | |
12005 + xorl 0x600(%ebp,%ebx,1),%edi | |
12006 + xorl 0x700(%ebp,%ecx,1),%edi | |
12007 + movl (%esp),%ecx | |
12008 + xorl 0x400(%ebp,%eax,1),%edi | |
12009 + xorl 0x500(%ebp,%edx,1),%edi | |
12010 + # Round 0 | |
12011 + movl (%ecx),%eax | |
12012 + xorl %ebx,%ebx | |
12013 + movl 4(%ecx),%edx | |
12014 + xorl %edi,%eax | |
12015 + xorl %ecx,%ecx | |
12016 + xorl %edi,%edx | |
12017 + andl $0xfcfcfcfc,%eax | |
12018 + andl $0xcfcfcfcf,%edx | |
12019 + movb %al,%bl | |
12020 + movb %ah,%cl | |
12021 + rorl $4,%edx | |
12022 + xorl (%ebp,%ebx,1),%esi | |
12023 + movb %dl,%bl | |
12024 + xorl 0x200(%ebp,%ecx,1),%esi | |
12025 + movb %dh,%cl | |
12026 + shrl $16,%eax | |
12027 + xorl 0x100(%ebp,%ebx,1),%esi | |
12028 + movb %ah,%bl | |
12029 + shrl $16,%edx | |
12030 + xorl 0x300(%ebp,%ecx,1),%esi | |
12031 + movb %dh,%cl | |
12032 + andl $0xff,%eax | |
12033 + andl $0xff,%edx | |
12034 + xorl 0x600(%ebp,%ebx,1),%esi | |
12035 + xorl 0x700(%ebp,%ecx,1),%esi | |
12036 + movl (%esp),%ecx | |
12037 + xorl 0x400(%ebp,%eax,1),%esi | |
12038 + xorl 0x500(%ebp,%edx,1),%esi | |
12039 + addl $4,%esp | |
12040 + ret | |
12041 +.globl _DES_encrypt1 | |
12042 +.align 4 | |
12043 +_DES_encrypt1: | |
12044 +L_DES_encrypt1_begin: | |
12045 + pushl %esi | |
12046 + pushl %edi | |
12047 + | |
12048 + # Load the 2 words | |
12049 + movl 12(%esp),%esi | |
12050 + xorl %ecx,%ecx | |
12051 + pushl %ebx | |
12052 + pushl %ebp | |
12053 + movl (%esi),%eax | |
12054 + movl 28(%esp),%ebx | |
12055 + movl 4(%esi),%edi | |
12056 + | |
12057 + # IP | |
12058 + roll $4,%eax | |
12059 + movl %eax,%esi | |
12060 + xorl %edi,%eax | |
12061 + andl $0xf0f0f0f0,%eax | |
12062 + xorl %eax,%esi | |
12063 + xorl %eax,%edi | |
12064 + | |
12065 + roll $20,%edi | |
12066 + movl %edi,%eax | |
12067 + xorl %esi,%edi | |
12068 + andl $0xfff0000f,%edi | |
12069 + xorl %edi,%eax | |
12070 + xorl %edi,%esi | |
12071 + | |
12072 + roll $14,%eax | |
12073 + movl %eax,%edi | |
12074 + xorl %esi,%eax | |
12075 + andl $0x33333333,%eax | |
12076 + xorl %eax,%edi | |
12077 + xorl %eax,%esi | |
12078 + | |
12079 + roll $22,%esi | |
12080 + movl %esi,%eax | |
12081 + xorl %edi,%esi | |
12082 + andl $0x03fc03fc,%esi | |
12083 + xorl %esi,%eax | |
12084 + xorl %esi,%edi | |
12085 + | |
12086 + roll $9,%eax | |
12087 + movl %eax,%esi | |
12088 + xorl %edi,%eax | |
12089 + andl $0xaaaaaaaa,%eax | |
12090 + xorl %eax,%esi | |
12091 + xorl %eax,%edi | |
12092 + | |
12093 + roll $1,%edi | |
12094 + call L000pic_point | |
12095 +L000pic_point: | |
12096 + popl %ebp | |
12097 + leal _DES_SPtrans-L000pic_point(%ebp),%ebp | |
12098 + movl 24(%esp),%ecx | |
12099 + cmpl $0,%ebx | |
12100 + je L001decrypt | |
12101 + call __x86_DES_encrypt | |
12102 + jmp L002done | |
12103 +L001decrypt: | |
12104 + call __x86_DES_decrypt | |
12105 +L002done: | |
12106 + | |
12107 + # FP | |
12108 + movl 20(%esp),%edx | |
12109 + rorl $1,%esi | |
12110 + movl %edi,%eax | |
12111 + xorl %esi,%edi | |
12112 + andl $0xaaaaaaaa,%edi | |
12113 + xorl %edi,%eax | |
12114 + xorl %edi,%esi | |
12115 + | |
12116 + roll $23,%eax | |
12117 + movl %eax,%edi | |
12118 + xorl %esi,%eax | |
12119 + andl $0x03fc03fc,%eax | |
12120 + xorl %eax,%edi | |
12121 + xorl %eax,%esi | |
12122 + | |
12123 + roll $10,%edi | |
12124 + movl %edi,%eax | |
12125 + xorl %esi,%edi | |
12126 + andl $0x33333333,%edi | |
12127 + xorl %edi,%eax | |
12128 + xorl %edi,%esi | |
12129 + | |
12130 + roll $18,%esi | |
12131 + movl %esi,%edi | |
12132 + xorl %eax,%esi | |
12133 + andl $0xfff0000f,%esi | |
12134 + xorl %esi,%edi | |
12135 + xorl %esi,%eax | |
12136 + | |
12137 + roll $12,%edi | |
12138 + movl %edi,%esi | |
12139 + xorl %eax,%edi | |
12140 + andl $0xf0f0f0f0,%edi | |
12141 + xorl %edi,%esi | |
12142 + xorl %edi,%eax | |
12143 + | |
12144 + rorl $4,%eax | |
12145 + movl %eax,(%edx) | |
12146 + movl %esi,4(%edx) | |
12147 + popl %ebp | |
12148 + popl %ebx | |
12149 + popl %edi | |
12150 + popl %esi | |
12151 + ret | |
12152 +.globl _DES_encrypt2 | |
12153 +.align 4 | |
12154 +_DES_encrypt2: | |
12155 +L_DES_encrypt2_begin: | |
12156 + pushl %esi | |
12157 + pushl %edi | |
12158 + | |
12159 + # Load the 2 words | |
12160 + movl 12(%esp),%eax | |
12161 + xorl %ecx,%ecx | |
12162 + pushl %ebx | |
12163 + pushl %ebp | |
12164 + movl (%eax),%esi | |
12165 + movl 28(%esp),%ebx | |
12166 + roll $3,%esi | |
12167 + movl 4(%eax),%edi | |
12168 + roll $3,%edi | |
12169 + call L003pic_point | |
12170 +L003pic_point: | |
12171 + popl %ebp | |
12172 + leal _DES_SPtrans-L003pic_point(%ebp),%ebp | |
12173 + movl 24(%esp),%ecx | |
12174 + cmpl $0,%ebx | |
12175 + je L004decrypt | |
12176 + call __x86_DES_encrypt | |
12177 + jmp L005done | |
12178 +L004decrypt: | |
12179 + call __x86_DES_decrypt | |
12180 +L005done: | |
12181 + | |
12182 + # Fixup | |
12183 + rorl $3,%edi | |
12184 + movl 20(%esp),%eax | |
12185 + rorl $3,%esi | |
12186 + movl %edi,(%eax) | |
12187 + movl %esi,4(%eax) | |
12188 + popl %ebp | |
12189 + popl %ebx | |
12190 + popl %edi | |
12191 + popl %esi | |
12192 + ret | |
12193 +.globl _DES_encrypt3 | |
12194 +.align 4 | |
12195 +_DES_encrypt3: | |
12196 +L_DES_encrypt3_begin: | |
12197 + pushl %ebx | |
12198 + movl 8(%esp),%ebx | |
12199 + pushl %ebp | |
12200 + pushl %esi | |
12201 + pushl %edi | |
12202 + | |
12203 + # Load the data words | |
12204 + movl (%ebx),%edi | |
12205 + movl 4(%ebx),%esi | |
12206 + subl $12,%esp | |
12207 + | |
12208 + # IP | |
12209 + roll $4,%edi | |
12210 + movl %edi,%edx | |
12211 + xorl %esi,%edi | |
12212 + andl $0xf0f0f0f0,%edi | |
12213 + xorl %edi,%edx | |
12214 + xorl %edi,%esi | |
12215 + | |
12216 + roll $20,%esi | |
12217 + movl %esi,%edi | |
12218 + xorl %edx,%esi | |
12219 + andl $0xfff0000f,%esi | |
12220 + xorl %esi,%edi | |
12221 + xorl %esi,%edx | |
12222 + | |
12223 + roll $14,%edi | |
12224 + movl %edi,%esi | |
12225 + xorl %edx,%edi | |
12226 + andl $0x33333333,%edi | |
12227 + xorl %edi,%esi | |
12228 + xorl %edi,%edx | |
12229 + | |
12230 + roll $22,%edx | |
12231 + movl %edx,%edi | |
12232 + xorl %esi,%edx | |
12233 + andl $0x03fc03fc,%edx | |
12234 + xorl %edx,%edi | |
12235 + xorl %edx,%esi | |
12236 + | |
12237 + roll $9,%edi | |
12238 + movl %edi,%edx | |
12239 + xorl %esi,%edi | |
12240 + andl $0xaaaaaaaa,%edi | |
12241 + xorl %edi,%edx | |
12242 + xorl %edi,%esi | |
12243 + | |
12244 + rorl $3,%edx | |
12245 + rorl $2,%esi | |
12246 + movl %esi,4(%ebx) | |
12247 + movl 36(%esp),%eax | |
12248 + movl %edx,(%ebx) | |
12249 + movl 40(%esp),%edi | |
12250 + movl 44(%esp),%esi | |
12251 + movl $1,8(%esp) | |
12252 + movl %eax,4(%esp) | |
12253 + movl %ebx,(%esp) | |
12254 + call L_DES_encrypt2_begin | |
12255 + movl $0,8(%esp) | |
12256 + movl %edi,4(%esp) | |
12257 + movl %ebx,(%esp) | |
12258 + call L_DES_encrypt2_begin | |
12259 + movl $1,8(%esp) | |
12260 + movl %esi,4(%esp) | |
12261 + movl %ebx,(%esp) | |
12262 + call L_DES_encrypt2_begin | |
12263 + addl $12,%esp | |
12264 + movl (%ebx),%edi | |
12265 + movl 4(%ebx),%esi | |
12266 + | |
12267 + # FP | |
12268 + roll $2,%esi | |
12269 + roll $3,%edi | |
12270 + movl %edi,%eax | |
12271 + xorl %esi,%edi | |
12272 + andl $0xaaaaaaaa,%edi | |
12273 + xorl %edi,%eax | |
12274 + xorl %edi,%esi | |
12275 + | |
12276 + roll $23,%eax | |
12277 + movl %eax,%edi | |
12278 + xorl %esi,%eax | |
12279 + andl $0x03fc03fc,%eax | |
12280 + xorl %eax,%edi | |
12281 + xorl %eax,%esi | |
12282 + | |
12283 + roll $10,%edi | |
12284 + movl %edi,%eax | |
12285 + xorl %esi,%edi | |
12286 + andl $0x33333333,%edi | |
12287 + xorl %edi,%eax | |
12288 + xorl %edi,%esi | |
12289 + | |
12290 + roll $18,%esi | |
12291 + movl %esi,%edi | |
12292 + xorl %eax,%esi | |
12293 + andl $0xfff0000f,%esi | |
12294 + xorl %esi,%edi | |
12295 + xorl %esi,%eax | |
12296 + | |
12297 + roll $12,%edi | |
12298 + movl %edi,%esi | |
12299 + xorl %eax,%edi | |
12300 + andl $0xf0f0f0f0,%edi | |
12301 + xorl %edi,%esi | |
12302 + xorl %edi,%eax | |
12303 + | |
12304 + rorl $4,%eax | |
12305 + movl %eax,(%ebx) | |
12306 + movl %esi,4(%ebx) | |
12307 + popl %edi | |
12308 + popl %esi | |
12309 + popl %ebp | |
12310 + popl %ebx | |
12311 + ret | |
12312 +.globl _DES_decrypt3 | |
12313 +.align 4 | |
12314 +_DES_decrypt3: | |
12315 +L_DES_decrypt3_begin: | |
12316 + pushl %ebx | |
12317 + movl 8(%esp),%ebx | |
12318 + pushl %ebp | |
12319 + pushl %esi | |
12320 + pushl %edi | |
12321 + | |
12322 + # Load the data words | |
12323 + movl (%ebx),%edi | |
12324 + movl 4(%ebx),%esi | |
12325 + subl $12,%esp | |
12326 + | |
12327 + # IP | |
12328 + roll $4,%edi | |
12329 + movl %edi,%edx | |
12330 + xorl %esi,%edi | |
12331 + andl $0xf0f0f0f0,%edi | |
12332 + xorl %edi,%edx | |
12333 + xorl %edi,%esi | |
12334 + | |
12335 + roll $20,%esi | |
12336 + movl %esi,%edi | |
12337 + xorl %edx,%esi | |
12338 + andl $0xfff0000f,%esi | |
12339 + xorl %esi,%edi | |
12340 + xorl %esi,%edx | |
12341 + | |
12342 + roll $14,%edi | |
12343 + movl %edi,%esi | |
12344 + xorl %edx,%edi | |
12345 + andl $0x33333333,%edi | |
12346 + xorl %edi,%esi | |
12347 + xorl %edi,%edx | |
12348 + | |
12349 + roll $22,%edx | |
12350 + movl %edx,%edi | |
12351 + xorl %esi,%edx | |
12352 + andl $0x03fc03fc,%edx | |
12353 + xorl %edx,%edi | |
12354 + xorl %edx,%esi | |
12355 + | |
12356 + roll $9,%edi | |
12357 + movl %edi,%edx | |
12358 + xorl %esi,%edi | |
12359 + andl $0xaaaaaaaa,%edi | |
12360 + xorl %edi,%edx | |
12361 + xorl %edi,%esi | |
12362 + | |
12363 + rorl $3,%edx | |
12364 + rorl $2,%esi | |
12365 + movl %esi,4(%ebx) | |
12366 + movl 36(%esp),%esi | |
12367 + movl %edx,(%ebx) | |
12368 + movl 40(%esp),%edi | |
12369 + movl 44(%esp),%eax | |
12370 + movl $0,8(%esp) | |
12371 + movl %eax,4(%esp) | |
12372 + movl %ebx,(%esp) | |
12373 + call L_DES_encrypt2_begin | |
12374 + movl $1,8(%esp) | |
12375 + movl %edi,4(%esp) | |
12376 + movl %ebx,(%esp) | |
12377 + call L_DES_encrypt2_begin | |
12378 + movl $0,8(%esp) | |
12379 + movl %esi,4(%esp) | |
12380 + movl %ebx,(%esp) | |
12381 + call L_DES_encrypt2_begin | |
12382 + addl $12,%esp | |
12383 + movl (%ebx),%edi | |
12384 + movl 4(%ebx),%esi | |
12385 + | |
12386 + # FP | |
12387 + roll $2,%esi | |
12388 + roll $3,%edi | |
12389 + movl %edi,%eax | |
12390 + xorl %esi,%edi | |
12391 + andl $0xaaaaaaaa,%edi | |
12392 + xorl %edi,%eax | |
12393 + xorl %edi,%esi | |
12394 + | |
12395 + roll $23,%eax | |
12396 + movl %eax,%edi | |
12397 + xorl %esi,%eax | |
12398 + andl $0x03fc03fc,%eax | |
12399 + xorl %eax,%edi | |
12400 + xorl %eax,%esi | |
12401 + | |
12402 + roll $10,%edi | |
12403 + movl %edi,%eax | |
12404 + xorl %esi,%edi | |
12405 + andl $0x33333333,%edi | |
12406 + xorl %edi,%eax | |
12407 + xorl %edi,%esi | |
12408 + | |
12409 + roll $18,%esi | |
12410 + movl %esi,%edi | |
12411 + xorl %eax,%esi | |
12412 + andl $0xfff0000f,%esi | |
12413 + xorl %esi,%edi | |
12414 + xorl %esi,%eax | |
12415 + | |
12416 + roll $12,%edi | |
12417 + movl %edi,%esi | |
12418 + xorl %eax,%edi | |
12419 + andl $0xf0f0f0f0,%edi | |
12420 + xorl %edi,%esi | |
12421 + xorl %edi,%eax | |
12422 + | |
12423 + rorl $4,%eax | |
12424 + movl %eax,(%ebx) | |
12425 + movl %esi,4(%ebx) | |
12426 + popl %edi | |
12427 + popl %esi | |
12428 + popl %ebp | |
12429 + popl %ebx | |
12430 + ret | |
12431 +.globl _DES_ncbc_encrypt | |
12432 +.align 4 | |
12433 +_DES_ncbc_encrypt: | |
12434 +L_DES_ncbc_encrypt_begin: | |
12435 + | |
12436 + pushl %ebp | |
12437 + pushl %ebx | |
12438 + pushl %esi | |
12439 + pushl %edi | |
12440 + movl 28(%esp),%ebp | |
12441 + # getting iv ptr from parameter 4 | |
12442 + movl 36(%esp),%ebx | |
12443 + movl (%ebx),%esi | |
12444 + movl 4(%ebx),%edi | |
12445 + pushl %edi | |
12446 + pushl %esi | |
12447 + pushl %edi | |
12448 + pushl %esi | |
12449 + movl %esp,%ebx | |
12450 + movl 36(%esp),%esi | |
12451 + movl 40(%esp),%edi | |
12452 + # getting encrypt flag from parameter 5 | |
12453 + movl 56(%esp),%ecx | |
12454 + # get and push parameter 5 | |
12455 + pushl %ecx | |
12456 + # get and push parameter 3 | |
12457 + movl 52(%esp),%eax | |
12458 + pushl %eax | |
12459 + pushl %ebx | |
12460 + cmpl $0,%ecx | |
12461 + jz L006decrypt | |
12462 + andl $4294967288,%ebp | |
12463 + movl 12(%esp),%eax | |
12464 + movl 16(%esp),%ebx | |
12465 + jz L007encrypt_finish | |
12466 +L008encrypt_loop: | |
12467 + movl (%esi),%ecx | |
12468 + movl 4(%esi),%edx | |
12469 + xorl %ecx,%eax | |
12470 + xorl %edx,%ebx | |
12471 + movl %eax,12(%esp) | |
12472 + movl %ebx,16(%esp) | |
12473 + call L_DES_encrypt1_begin | |
12474 + movl 12(%esp),%eax | |
12475 + movl 16(%esp),%ebx | |
12476 + movl %eax,(%edi) | |
12477 + movl %ebx,4(%edi) | |
12478 + addl $8,%esi | |
12479 + addl $8,%edi | |
12480 + subl $8,%ebp | |
12481 + jnz L008encrypt_loop | |
12482 +L007encrypt_finish: | |
12483 + movl 56(%esp),%ebp | |
12484 + andl $7,%ebp | |
12485 + jz L009finish | |
12486 + call L010PIC_point | |
12487 +L010PIC_point: | |
12488 + popl %edx | |
12489 + leal L011cbc_enc_jmp_table-L010PIC_point(%edx),%ecx | |
12490 + movl (%ecx,%ebp,4),%ebp | |
12491 + addl %edx,%ebp | |
12492 + xorl %ecx,%ecx | |
12493 + xorl %edx,%edx | |
12494 + jmp *%ebp | |
12495 +L012ej7: | |
12496 + movb 6(%esi),%dh | |
12497 + shll $8,%edx | |
12498 +L013ej6: | |
12499 + movb 5(%esi),%dh | |
12500 +L014ej5: | |
12501 + movb 4(%esi),%dl | |
12502 +L015ej4: | |
12503 + movl (%esi),%ecx | |
12504 + jmp L016ejend | |
12505 +L017ej3: | |
12506 + movb 2(%esi),%ch | |
12507 + shll $8,%ecx | |
12508 +L018ej2: | |
12509 + movb 1(%esi),%ch | |
12510 +L019ej1: | |
12511 + movb (%esi),%cl | |
12512 +L016ejend: | |
12513 + xorl %ecx,%eax | |
12514 + xorl %edx,%ebx | |
12515 + movl %eax,12(%esp) | |
12516 + movl %ebx,16(%esp) | |
12517 + call L_DES_encrypt1_begin | |
12518 + movl 12(%esp),%eax | |
12519 + movl 16(%esp),%ebx | |
12520 + movl %eax,(%edi) | |
12521 + movl %ebx,4(%edi) | |
12522 + jmp L009finish | |
12523 +L006decrypt: | |
12524 + andl $4294967288,%ebp | |
12525 + movl 20(%esp),%eax | |
12526 + movl 24(%esp),%ebx | |
12527 + jz L020decrypt_finish | |
12528 +L021decrypt_loop: | |
12529 + movl (%esi),%eax | |
12530 + movl 4(%esi),%ebx | |
12531 + movl %eax,12(%esp) | |
12532 + movl %ebx,16(%esp) | |
12533 + call L_DES_encrypt1_begin | |
12534 + movl 12(%esp),%eax | |
12535 + movl 16(%esp),%ebx | |
12536 + movl 20(%esp),%ecx | |
12537 + movl 24(%esp),%edx | |
12538 + xorl %eax,%ecx | |
12539 + xorl %ebx,%edx | |
12540 + movl (%esi),%eax | |
12541 + movl 4(%esi),%ebx | |
12542 + movl %ecx,(%edi) | |
12543 + movl %edx,4(%edi) | |
12544 + movl %eax,20(%esp) | |
12545 + movl %ebx,24(%esp) | |
12546 + addl $8,%esi | |
12547 + addl $8,%edi | |
12548 + subl $8,%ebp | |
12549 + jnz L021decrypt_loop | |
12550 +L020decrypt_finish: | |
12551 + movl 56(%esp),%ebp | |
12552 + andl $7,%ebp | |
12553 + jz L009finish | |
12554 + movl (%esi),%eax | |
12555 + movl 4(%esi),%ebx | |
12556 + movl %eax,12(%esp) | |
12557 + movl %ebx,16(%esp) | |
12558 + call L_DES_encrypt1_begin | |
12559 + movl 12(%esp),%eax | |
12560 + movl 16(%esp),%ebx | |
12561 + movl 20(%esp),%ecx | |
12562 + movl 24(%esp),%edx | |
12563 + xorl %eax,%ecx | |
12564 + xorl %ebx,%edx | |
12565 + movl (%esi),%eax | |
12566 + movl 4(%esi),%ebx | |
12567 +L022dj7: | |
12568 + rorl $16,%edx | |
12569 + movb %dl,6(%edi) | |
12570 + shrl $16,%edx | |
12571 +L023dj6: | |
12572 + movb %dh,5(%edi) | |
12573 +L024dj5: | |
12574 + movb %dl,4(%edi) | |
12575 +L025dj4: | |
12576 + movl %ecx,(%edi) | |
12577 + jmp L026djend | |
12578 +L027dj3: | |
12579 + rorl $16,%ecx | |
12580 + movb %cl,2(%edi) | |
12581 + shll $16,%ecx | |
12582 +L028dj2: | |
12583 + movb %ch,1(%esi) | |
12584 +L029dj1: | |
12585 + movb %cl,(%esi) | |
12586 +L026djend: | |
12587 + jmp L009finish | |
12588 +L009finish: | |
12589 + movl 64(%esp),%ecx | |
12590 + addl $28,%esp | |
12591 + movl %eax,(%ecx) | |
12592 + movl %ebx,4(%ecx) | |
12593 + popl %edi | |
12594 + popl %esi | |
12595 + popl %ebx | |
12596 + popl %ebp | |
12597 + ret | |
12598 +.align 6,0x90 | |
12599 +L011cbc_enc_jmp_table: | |
12600 +.long 0 | |
12601 +.long L019ej1-L010PIC_point | |
12602 +.long L018ej2-L010PIC_point | |
12603 +.long L017ej3-L010PIC_point | |
12604 +.long L015ej4-L010PIC_point | |
12605 +.long L014ej5-L010PIC_point | |
12606 +.long L013ej6-L010PIC_point | |
12607 +.long L012ej7-L010PIC_point | |
12608 +.align 6,0x90 | |
12609 +.globl _DES_ede3_cbc_encrypt | |
12610 +.align 4 | |
12611 +_DES_ede3_cbc_encrypt: | |
12612 +L_DES_ede3_cbc_encrypt_begin: | |
12613 + | |
12614 + pushl %ebp | |
12615 + pushl %ebx | |
12616 + pushl %esi | |
12617 + pushl %edi | |
12618 + movl 28(%esp),%ebp | |
12619 + # getting iv ptr from parameter 6 | |
12620 + movl 44(%esp),%ebx | |
12621 + movl (%ebx),%esi | |
12622 + movl 4(%ebx),%edi | |
12623 + pushl %edi | |
12624 + pushl %esi | |
12625 + pushl %edi | |
12626 + pushl %esi | |
12627 + movl %esp,%ebx | |
12628 + movl 36(%esp),%esi | |
12629 + movl 40(%esp),%edi | |
12630 + # getting encrypt flag from parameter 7 | |
12631 + movl 64(%esp),%ecx | |
12632 + # get and push parameter 5 | |
12633 + movl 56(%esp),%eax | |
12634 + pushl %eax | |
12635 + # get and push parameter 4 | |
12636 + movl 56(%esp),%eax | |
12637 + pushl %eax | |
12638 + # get and push parameter 3 | |
12639 + movl 56(%esp),%eax | |
12640 + pushl %eax | |
12641 + pushl %ebx | |
12642 + cmpl $0,%ecx | |
12643 + jz L030decrypt | |
12644 + andl $4294967288,%ebp | |
12645 + movl 16(%esp),%eax | |
12646 + movl 20(%esp),%ebx | |
12647 + jz L031encrypt_finish | |
12648 +L032encrypt_loop: | |
12649 + movl (%esi),%ecx | |
12650 + movl 4(%esi),%edx | |
12651 + xorl %ecx,%eax | |
12652 + xorl %edx,%ebx | |
12653 + movl %eax,16(%esp) | |
12654 + movl %ebx,20(%esp) | |
12655 + call L_DES_encrypt3_begin | |
12656 + movl 16(%esp),%eax | |
12657 + movl 20(%esp),%ebx | |
12658 + movl %eax,(%edi) | |
12659 + movl %ebx,4(%edi) | |
12660 + addl $8,%esi | |
12661 + addl $8,%edi | |
12662 + subl $8,%ebp | |
12663 + jnz L032encrypt_loop | |
12664 +L031encrypt_finish: | |
12665 + movl 60(%esp),%ebp | |
12666 + andl $7,%ebp | |
12667 + jz L033finish | |
12668 + call L034PIC_point | |
12669 +L034PIC_point: | |
12670 + popl %edx | |
12671 + leal L035cbc_enc_jmp_table-L034PIC_point(%edx),%ecx | |
12672 + movl (%ecx,%ebp,4),%ebp | |
12673 + addl %edx,%ebp | |
12674 + xorl %ecx,%ecx | |
12675 + xorl %edx,%edx | |
12676 + jmp *%ebp | |
12677 +L036ej7: | |
12678 + movb 6(%esi),%dh | |
12679 + shll $8,%edx | |
12680 +L037ej6: | |
12681 + movb 5(%esi),%dh | |
12682 +L038ej5: | |
12683 + movb 4(%esi),%dl | |
12684 +L039ej4: | |
12685 + movl (%esi),%ecx | |
12686 + jmp L040ejend | |
12687 +L041ej3: | |
12688 + movb 2(%esi),%ch | |
12689 + shll $8,%ecx | |
12690 +L042ej2: | |
12691 + movb 1(%esi),%ch | |
12692 +L043ej1: | |
12693 + movb (%esi),%cl | |
12694 +L040ejend: | |
12695 + xorl %ecx,%eax | |
12696 + xorl %edx,%ebx | |
12697 + movl %eax,16(%esp) | |
12698 + movl %ebx,20(%esp) | |
12699 + call L_DES_encrypt3_begin | |
12700 + movl 16(%esp),%eax | |
12701 + movl 20(%esp),%ebx | |
12702 + movl %eax,(%edi) | |
12703 + movl %ebx,4(%edi) | |
12704 + jmp L033finish | |
12705 +L030decrypt: | |
12706 + andl $4294967288,%ebp | |
12707 + movl 24(%esp),%eax | |
12708 + movl 28(%esp),%ebx | |
12709 + jz L044decrypt_finish | |
12710 +L045decrypt_loop: | |
12711 + movl (%esi),%eax | |
12712 + movl 4(%esi),%ebx | |
12713 + movl %eax,16(%esp) | |
12714 + movl %ebx,20(%esp) | |
12715 + call L_DES_decrypt3_begin | |
12716 + movl 16(%esp),%eax | |
12717 + movl 20(%esp),%ebx | |
12718 + movl 24(%esp),%ecx | |
12719 + movl 28(%esp),%edx | |
12720 + xorl %eax,%ecx | |
12721 + xorl %ebx,%edx | |
12722 + movl (%esi),%eax | |
12723 + movl 4(%esi),%ebx | |
12724 + movl %ecx,(%edi) | |
12725 + movl %edx,4(%edi) | |
12726 + movl %eax,24(%esp) | |
12727 + movl %ebx,28(%esp) | |
12728 + addl $8,%esi | |
12729 + addl $8,%edi | |
12730 + subl $8,%ebp | |
12731 + jnz L045decrypt_loop | |
12732 +L044decrypt_finish: | |
12733 + movl 60(%esp),%ebp | |
12734 + andl $7,%ebp | |
12735 + jz L033finish | |
12736 + movl (%esi),%eax | |
12737 + movl 4(%esi),%ebx | |
12738 + movl %eax,16(%esp) | |
12739 + movl %ebx,20(%esp) | |
12740 + call L_DES_decrypt3_begin | |
12741 + movl 16(%esp),%eax | |
12742 + movl 20(%esp),%ebx | |
12743 + movl 24(%esp),%ecx | |
12744 + movl 28(%esp),%edx | |
12745 + xorl %eax,%ecx | |
12746 + xorl %ebx,%edx | |
12747 + movl (%esi),%eax | |
12748 + movl 4(%esi),%ebx | |
12749 +L046dj7: | |
12750 + rorl $16,%edx | |
12751 + movb %dl,6(%edi) | |
12752 + shrl $16,%edx | |
12753 +L047dj6: | |
12754 + movb %dh,5(%edi) | |
12755 +L048dj5: | |
12756 + movb %dl,4(%edi) | |
12757 +L049dj4: | |
12758 + movl %ecx,(%edi) | |
12759 + jmp L050djend | |
12760 +L051dj3: | |
12761 + rorl $16,%ecx | |
12762 + movb %cl,2(%edi) | |
12763 + shll $16,%ecx | |
12764 +L052dj2: | |
12765 + movb %ch,1(%esi) | |
12766 +L053dj1: | |
12767 + movb %cl,(%esi) | |
12768 +L050djend: | |
12769 + jmp L033finish | |
12770 +L033finish: | |
12771 + movl 76(%esp),%ecx | |
12772 + addl $32,%esp | |
12773 + movl %eax,(%ecx) | |
12774 + movl %ebx,4(%ecx) | |
12775 + popl %edi | |
12776 + popl %esi | |
12777 + popl %ebx | |
12778 + popl %ebp | |
12779 + ret | |
12780 +.align 6,0x90 | |
12781 +L035cbc_enc_jmp_table: | |
12782 +.long 0 | |
12783 +.long L043ej1-L034PIC_point | |
12784 +.long L042ej2-L034PIC_point | |
12785 +.long L041ej3-L034PIC_point | |
12786 +.long L039ej4-L034PIC_point | |
12787 +.long L038ej5-L034PIC_point | |
12788 +.long L037ej6-L034PIC_point | |
12789 +.long L036ej7-L034PIC_point | |
12790 +.align 6,0x90 | |
12791 +.align 6,0x90 | |
12792 +_DES_SPtrans: | |
12793 +.long 34080768,524288,33554434,34080770 | |
12794 +.long 33554432,526338,524290,33554434 | |
12795 +.long 526338,34080768,34078720,2050 | |
12796 +.long 33556482,33554432,0,524290 | |
12797 +.long 524288,2,33556480,526336 | |
12798 +.long 34080770,34078720,2050,33556480 | |
12799 +.long 2,2048,526336,34078722 | |
12800 +.long 2048,33556482,34078722,0 | |
12801 +.long 0,34080770,33556480,524290 | |
12802 +.long 34080768,524288,2050,33556480 | |
12803 +.long 34078722,2048,526336,33554434 | |
12804 +.long 526338,2,33554434,34078720 | |
12805 +.long 34080770,526336,34078720,33556482 | |
12806 +.long 33554432,2050,524290,0 | |
12807 +.long 524288,33554432,33556482,34080768 | |
12808 +.long 2,34078722,2048,526338 | |
12809 +.long 1074823184,0,1081344,1074790400 | |
12810 +.long 1073741840,32784,1073774592,1081344 | |
12811 +.long 32768,1074790416,16,1073774592 | |
12812 +.long 1048592,1074823168,1074790400,16 | |
12813 +.long 1048576,1073774608,1074790416,32768 | |
12814 +.long 1081360,1073741824,0,1048592 | |
12815 +.long 1073774608,1081360,1074823168,1073741840 | |
12816 +.long 1073741824,1048576,32784,1074823184 | |
12817 +.long 1048592,1074823168,1073774592,1081360 | |
12818 +.long 1074823184,1048592,1073741840,0 | |
12819 +.long 1073741824,32784,1048576,1074790416 | |
12820 +.long 32768,1073741824,1081360,1073774608 | |
12821 +.long 1074823168,32768,0,1073741840 | |
12822 +.long 16,1074823184,1081344,1074790400 | |
12823 +.long 1074790416,1048576,32784,1073774592 | |
12824 +.long 1073774608,16,1074790400,1081344 | |
12825 +.long 67108865,67371264,256,67109121 | |
12826 +.long 262145,67108864,67109121,262400 | |
12827 +.long 67109120,262144,67371008,1 | |
12828 +.long 67371265,257,1,67371009 | |
12829 +.long 0,262145,67371264,256 | |
12830 +.long 257,67371265,262144,67108865 | |
12831 +.long 67371009,67109120,262401,67371008 | |
12832 +.long 262400,0,67108864,262401 | |
12833 +.long 67371264,256,1,262144 | |
12834 +.long 257,262145,67371008,67109121 | |
12835 +.long 0,67371264,262400,67371009 | |
12836 +.long 262145,67108864,67371265,1 | |
12837 +.long 262401,67108865,67108864,67371265 | |
12838 +.long 262144,67109120,67109121,262400 | |
12839 +.long 67109120,0,67371009,257 | |
12840 +.long 67108865,262401,256,67371008 | |
12841 +.long 4198408,268439552,8,272633864 | |
12842 +.long 0,272629760,268439560,4194312 | |
12843 +.long 272633856,268435464,268435456,4104 | |
12844 +.long 268435464,4198408,4194304,268435456 | |
12845 +.long 272629768,4198400,4096,8 | |
12846 +.long 4198400,268439560,272629760,4096 | |
12847 +.long 4104,0,4194312,272633856 | |
12848 +.long 268439552,272629768,272633864,4194304 | |
12849 +.long 272629768,4104,4194304,268435464 | |
12850 +.long 4198400,268439552,8,272629760 | |
12851 +.long 268439560,0,4096,4194312 | |
12852 +.long 0,272629768,272633856,4096 | |
12853 +.long 268435456,272633864,4198408,4194304 | |
12854 +.long 272633864,8,268439552,4198408 | |
12855 +.long 4194312,4198400,272629760,268439560 | |
12856 +.long 4104,268435456,268435464,272633856 | |
12857 +.long 134217728,65536,1024,134284320 | |
12858 +.long 134283296,134218752,66592,134283264 | |
12859 +.long 65536,32,134217760,66560 | |
12860 +.long 134218784,134283296,134284288,0 | |
12861 +.long 66560,134217728,65568,1056 | |
12862 +.long 134218752,66592,0,134217760 | |
12863 +.long 32,134218784,134284320,65568 | |
12864 +.long 134283264,1024,1056,134284288 | |
12865 +.long 134284288,134218784,65568,134283264 | |
12866 +.long 65536,32,134217760,134218752 | |
12867 +.long 134217728,66560,134284320,0 | |
12868 +.long 66592,134217728,1024,65568 | |
12869 +.long 134218784,1024,0,134284320 | |
12870 +.long 134283296,134284288,1056,65536 | |
12871 +.long 66560,134283296,134218752,1056 | |
12872 +.long 32,66592,134283264,134217760 | |
12873 +.long 2147483712,2097216,0,2149588992 | |
12874 +.long 2097216,8192,2147491904,2097152 | |
12875 +.long 8256,2149589056,2105344,2147483648 | |
12876 +.long 2147491840,2147483712,2149580800,2105408 | |
12877 +.long 2097152,2147491904,2149580864,0 | |
12878 +.long 8192,64,2149588992,2149580864 | |
12879 +.long 2149589056,2149580800,2147483648,8256 | |
12880 +.long 64,2105344,2105408,2147491840 | |
12881 +.long 8256,2147483648,2147491840,2105408 | |
12882 +.long 2149588992,2097216,0,2147491840 | |
12883 +.long 2147483648,8192,2149580864,2097152 | |
12884 +.long 2097216,2149589056,2105344,64 | |
12885 +.long 2149589056,2105344,2097152,2147491904 | |
12886 +.long 2147483712,2149580800,2105408,0 | |
12887 +.long 8192,2147483712,2147491904,2149588992 | |
12888 +.long 2149580800,8256,64,2149580864 | |
12889 +.long 16384,512,16777728,16777220 | |
12890 +.long 16794116,16388,16896,0 | |
12891 +.long 16777216,16777732,516,16793600 | |
12892 +.long 4,16794112,16793600,516 | |
12893 +.long 16777732,16384,16388,16794116 | |
12894 +.long 0,16777728,16777220,16896 | |
12895 +.long 16793604,16900,16794112,4 | |
12896 +.long 16900,16793604,512,16777216 | |
12897 +.long 16900,16793600,16793604,516 | |
12898 +.long 16384,512,16777216,16793604 | |
12899 +.long 16777732,16900,16896,0 | |
12900 +.long 512,16777220,4,16777728 | |
12901 +.long 0,16777732,16777728,16896 | |
12902 +.long 516,16384,16794116,16777216 | |
12903 +.long 16794112,4,16388,16794116 | |
12904 +.long 16777220,16794112,16793600,16388 | |
12905 +.long 545259648,545390592,131200,0 | |
12906 +.long 537001984,8388736,545259520,545390720 | |
12907 +.long 128,536870912,8519680,131200 | |
12908 +.long 8519808,537002112,536871040,545259520 | |
12909 +.long 131072,8519808,8388736,537001984 | |
12910 +.long 545390720,536871040,0,8519680 | |
12911 +.long 536870912,8388608,537002112,545259648 | |
12912 +.long 8388608,131072,545390592,128 | |
12913 +.long 8388608,131072,536871040,545390720 | |
12914 +.long 131200,536870912,0,8519680 | |
12915 +.long 545259648,537002112,537001984,8388736 | |
12916 +.long 545390592,128,8388736,537001984 | |
12917 +.long 545390720,8388608,545259520,536871040 | |
12918 +.long 8519680,131200,537002112,545259520 | |
12919 +.long 128,545390592,8519808,0 | |
12920 +.long 536870912,545259648,131072,8519808 | |
12921 diff --git a/crypto/md5/asm/md5-586-mac.S b/crypto/md5/asm/md5-586-mac.S | |
12922 new file mode 100644 | |
12923 index 0000000..8413d0c | |
12924 --- /dev/null | |
12925 +++ b/crypto/md5/asm/md5-586-mac.S | |
12926 @@ -0,0 +1,677 @@ | |
12927 +.file "crypto/md5/asm/md5-586.s" | |
12928 +.text | |
12929 +.globl _md5_block_asm_data_order | |
12930 +.align 4 | |
12931 +_md5_block_asm_data_order: | |
12932 +L_md5_block_asm_data_order_begin: | |
12933 + pushl %esi | |
12934 + pushl %edi | |
12935 + movl 12(%esp),%edi | |
12936 + movl 16(%esp),%esi | |
12937 + movl 20(%esp),%ecx | |
12938 + pushl %ebp | |
12939 + shll $6,%ecx | |
12940 + pushl %ebx | |
12941 + addl %esi,%ecx | |
12942 + subl $64,%ecx | |
12943 + movl (%edi),%eax | |
12944 + pushl %ecx | |
12945 + movl 4(%edi),%ebx | |
12946 + movl 8(%edi),%ecx | |
12947 + movl 12(%edi),%edx | |
12948 +L000start: | |
12949 + | |
12950 + # R0 section | |
12951 + movl %ecx,%edi | |
12952 + movl (%esi),%ebp | |
12953 + # R0 0 | |
12954 + xorl %edx,%edi | |
12955 + andl %ebx,%edi | |
12956 + leal 3614090360(%eax,%ebp,1),%eax | |
12957 + xorl %edx,%edi | |
12958 + addl %edi,%eax | |
12959 + movl %ebx,%edi | |
12960 + roll $7,%eax | |
12961 + movl 4(%esi),%ebp | |
12962 + addl %ebx,%eax | |
12963 + # R0 1 | |
12964 + xorl %ecx,%edi | |
12965 + andl %eax,%edi | |
12966 + leal 3905402710(%edx,%ebp,1),%edx | |
12967 + xorl %ecx,%edi | |
12968 + addl %edi,%edx | |
12969 + movl %eax,%edi | |
12970 + roll $12,%edx | |
12971 + movl 8(%esi),%ebp | |
12972 + addl %eax,%edx | |
12973 + # R0 2 | |
12974 + xorl %ebx,%edi | |
12975 + andl %edx,%edi | |
12976 + leal 606105819(%ecx,%ebp,1),%ecx | |
12977 + xorl %ebx,%edi | |
12978 + addl %edi,%ecx | |
12979 + movl %edx,%edi | |
12980 + roll $17,%ecx | |
12981 + movl 12(%esi),%ebp | |
12982 + addl %edx,%ecx | |
12983 + # R0 3 | |
12984 + xorl %eax,%edi | |
12985 + andl %ecx,%edi | |
12986 + leal 3250441966(%ebx,%ebp,1),%ebx | |
12987 + xorl %eax,%edi | |
12988 + addl %edi,%ebx | |
12989 + movl %ecx,%edi | |
12990 + roll $22,%ebx | |
12991 + movl 16(%esi),%ebp | |
12992 + addl %ecx,%ebx | |
12993 + # R0 4 | |
12994 + xorl %edx,%edi | |
12995 + andl %ebx,%edi | |
12996 + leal 4118548399(%eax,%ebp,1),%eax | |
12997 + xorl %edx,%edi | |
12998 + addl %edi,%eax | |
12999 + movl %ebx,%edi | |
13000 + roll $7,%eax | |
13001 + movl 20(%esi),%ebp | |
13002 + addl %ebx,%eax | |
13003 + # R0 5 | |
13004 + xorl %ecx,%edi | |
13005 + andl %eax,%edi | |
13006 + leal 1200080426(%edx,%ebp,1),%edx | |
13007 + xorl %ecx,%edi | |
13008 + addl %edi,%edx | |
13009 + movl %eax,%edi | |
13010 + roll $12,%edx | |
13011 + movl 24(%esi),%ebp | |
13012 + addl %eax,%edx | |
13013 + # R0 6 | |
13014 + xorl %ebx,%edi | |
13015 + andl %edx,%edi | |
13016 + leal 2821735955(%ecx,%ebp,1),%ecx | |
13017 + xorl %ebx,%edi | |
13018 + addl %edi,%ecx | |
13019 + movl %edx,%edi | |
13020 + roll $17,%ecx | |
13021 + movl 28(%esi),%ebp | |
13022 + addl %edx,%ecx | |
13023 + # R0 7 | |
13024 + xorl %eax,%edi | |
13025 + andl %ecx,%edi | |
13026 + leal 4249261313(%ebx,%ebp,1),%ebx | |
13027 + xorl %eax,%edi | |
13028 + addl %edi,%ebx | |
13029 + movl %ecx,%edi | |
13030 + roll $22,%ebx | |
13031 + movl 32(%esi),%ebp | |
13032 + addl %ecx,%ebx | |
13033 + # R0 8 | |
13034 + xorl %edx,%edi | |
13035 + andl %ebx,%edi | |
13036 + leal 1770035416(%eax,%ebp,1),%eax | |
13037 + xorl %edx,%edi | |
13038 + addl %edi,%eax | |
13039 + movl %ebx,%edi | |
13040 + roll $7,%eax | |
13041 + movl 36(%esi),%ebp | |
13042 + addl %ebx,%eax | |
13043 + # R0 9 | |
13044 + xorl %ecx,%edi | |
13045 + andl %eax,%edi | |
13046 + leal 2336552879(%edx,%ebp,1),%edx | |
13047 + xorl %ecx,%edi | |
13048 + addl %edi,%edx | |
13049 + movl %eax,%edi | |
13050 + roll $12,%edx | |
13051 + movl 40(%esi),%ebp | |
13052 + addl %eax,%edx | |
13053 + # R0 10 | |
13054 + xorl %ebx,%edi | |
13055 + andl %edx,%edi | |
13056 + leal 4294925233(%ecx,%ebp,1),%ecx | |
13057 + xorl %ebx,%edi | |
13058 + addl %edi,%ecx | |
13059 + movl %edx,%edi | |
13060 + roll $17,%ecx | |
13061 + movl 44(%esi),%ebp | |
13062 + addl %edx,%ecx | |
13063 + # R0 11 | |
13064 + xorl %eax,%edi | |
13065 + andl %ecx,%edi | |
13066 + leal 2304563134(%ebx,%ebp,1),%ebx | |
13067 + xorl %eax,%edi | |
13068 + addl %edi,%ebx | |
13069 + movl %ecx,%edi | |
13070 + roll $22,%ebx | |
13071 + movl 48(%esi),%ebp | |
13072 + addl %ecx,%ebx | |
13073 + # R0 12 | |
13074 + xorl %edx,%edi | |
13075 + andl %ebx,%edi | |
13076 + leal 1804603682(%eax,%ebp,1),%eax | |
13077 + xorl %edx,%edi | |
13078 + addl %edi,%eax | |
13079 + movl %ebx,%edi | |
13080 + roll $7,%eax | |
13081 + movl 52(%esi),%ebp | |
13082 + addl %ebx,%eax | |
13083 + # R0 13 | |
13084 + xorl %ecx,%edi | |
13085 + andl %eax,%edi | |
13086 + leal 4254626195(%edx,%ebp,1),%edx | |
13087 + xorl %ecx,%edi | |
13088 + addl %edi,%edx | |
13089 + movl %eax,%edi | |
13090 + roll $12,%edx | |
13091 + movl 56(%esi),%ebp | |
13092 + addl %eax,%edx | |
13093 + # R0 14 | |
13094 + xorl %ebx,%edi | |
13095 + andl %edx,%edi | |
13096 + leal 2792965006(%ecx,%ebp,1),%ecx | |
13097 + xorl %ebx,%edi | |
13098 + addl %edi,%ecx | |
13099 + movl %edx,%edi | |
13100 + roll $17,%ecx | |
13101 + movl 60(%esi),%ebp | |
13102 + addl %edx,%ecx | |
13103 + # R0 15 | |
13104 + xorl %eax,%edi | |
13105 + andl %ecx,%edi | |
13106 + leal 1236535329(%ebx,%ebp,1),%ebx | |
13107 + xorl %eax,%edi | |
13108 + addl %edi,%ebx | |
13109 + movl %ecx,%edi | |
13110 + roll $22,%ebx | |
13111 + movl 4(%esi),%ebp | |
13112 + addl %ecx,%ebx | |
13113 + | |
13114 + # R1 section | |
13115 + # R1 16 | |
13116 + leal 4129170786(%eax,%ebp,1),%eax | |
13117 + xorl %ebx,%edi | |
13118 + andl %edx,%edi | |
13119 + movl 24(%esi),%ebp | |
13120 + xorl %ecx,%edi | |
13121 + addl %edi,%eax | |
13122 + movl %ebx,%edi | |
13123 + roll $5,%eax | |
13124 + addl %ebx,%eax | |
13125 + # R1 17 | |
13126 + leal 3225465664(%edx,%ebp,1),%edx | |
13127 + xorl %eax,%edi | |
13128 + andl %ecx,%edi | |
13129 + movl 44(%esi),%ebp | |
13130 + xorl %ebx,%edi | |
13131 + addl %edi,%edx | |
13132 + movl %eax,%edi | |
13133 + roll $9,%edx | |
13134 + addl %eax,%edx | |
13135 + # R1 18 | |
13136 + leal 643717713(%ecx,%ebp,1),%ecx | |
13137 + xorl %edx,%edi | |
13138 + andl %ebx,%edi | |
13139 + movl (%esi),%ebp | |
13140 + xorl %eax,%edi | |
13141 + addl %edi,%ecx | |
13142 + movl %edx,%edi | |
13143 + roll $14,%ecx | |
13144 + addl %edx,%ecx | |
13145 + # R1 19 | |
13146 + leal 3921069994(%ebx,%ebp,1),%ebx | |
13147 + xorl %ecx,%edi | |
13148 + andl %eax,%edi | |
13149 + movl 20(%esi),%ebp | |
13150 + xorl %edx,%edi | |
13151 + addl %edi,%ebx | |
13152 + movl %ecx,%edi | |
13153 + roll $20,%ebx | |
13154 + addl %ecx,%ebx | |
13155 + # R1 20 | |
13156 + leal 3593408605(%eax,%ebp,1),%eax | |
13157 + xorl %ebx,%edi | |
13158 + andl %edx,%edi | |
13159 + movl 40(%esi),%ebp | |
13160 + xorl %ecx,%edi | |
13161 + addl %edi,%eax | |
13162 + movl %ebx,%edi | |
13163 + roll $5,%eax | |
13164 + addl %ebx,%eax | |
13165 + # R1 21 | |
13166 + leal 38016083(%edx,%ebp,1),%edx | |
13167 + xorl %eax,%edi | |
13168 + andl %ecx,%edi | |
13169 + movl 60(%esi),%ebp | |
13170 + xorl %ebx,%edi | |
13171 + addl %edi,%edx | |
13172 + movl %eax,%edi | |
13173 + roll $9,%edx | |
13174 + addl %eax,%edx | |
13175 + # R1 22 | |
13176 + leal 3634488961(%ecx,%ebp,1),%ecx | |
13177 + xorl %edx,%edi | |
13178 + andl %ebx,%edi | |
13179 + movl 16(%esi),%ebp | |
13180 + xorl %eax,%edi | |
13181 + addl %edi,%ecx | |
13182 + movl %edx,%edi | |
13183 + roll $14,%ecx | |
13184 + addl %edx,%ecx | |
13185 + # R1 23 | |
13186 + leal 3889429448(%ebx,%ebp,1),%ebx | |
13187 + xorl %ecx,%edi | |
13188 + andl %eax,%edi | |
13189 + movl 36(%esi),%ebp | |
13190 + xorl %edx,%edi | |
13191 + addl %edi,%ebx | |
13192 + movl %ecx,%edi | |
13193 + roll $20,%ebx | |
13194 + addl %ecx,%ebx | |
13195 + # R1 24 | |
13196 + leal 568446438(%eax,%ebp,1),%eax | |
13197 + xorl %ebx,%edi | |
13198 + andl %edx,%edi | |
13199 + movl 56(%esi),%ebp | |
13200 + xorl %ecx,%edi | |
13201 + addl %edi,%eax | |
13202 + movl %ebx,%edi | |
13203 + roll $5,%eax | |
13204 + addl %ebx,%eax | |
13205 + # R1 25 | |
13206 + leal 3275163606(%edx,%ebp,1),%edx | |
13207 + xorl %eax,%edi | |
13208 + andl %ecx,%edi | |
13209 + movl 12(%esi),%ebp | |
13210 + xorl %ebx,%edi | |
13211 + addl %edi,%edx | |
13212 + movl %eax,%edi | |
13213 + roll $9,%edx | |
13214 + addl %eax,%edx | |
13215 + # R1 26 | |
13216 + leal 4107603335(%ecx,%ebp,1),%ecx | |
13217 + xorl %edx,%edi | |
13218 + andl %ebx,%edi | |
13219 + movl 32(%esi),%ebp | |
13220 + xorl %eax,%edi | |
13221 + addl %edi,%ecx | |
13222 + movl %edx,%edi | |
13223 + roll $14,%ecx | |
13224 + addl %edx,%ecx | |
13225 + # R1 27 | |
13226 + leal 1163531501(%ebx,%ebp,1),%ebx | |
13227 + xorl %ecx,%edi | |
13228 + andl %eax,%edi | |
13229 + movl 52(%esi),%ebp | |
13230 + xorl %edx,%edi | |
13231 + addl %edi,%ebx | |
13232 + movl %ecx,%edi | |
13233 + roll $20,%ebx | |
13234 + addl %ecx,%ebx | |
13235 + # R1 28 | |
13236 + leal 2850285829(%eax,%ebp,1),%eax | |
13237 + xorl %ebx,%edi | |
13238 + andl %edx,%edi | |
13239 + movl 8(%esi),%ebp | |
13240 + xorl %ecx,%edi | |
13241 + addl %edi,%eax | |
13242 + movl %ebx,%edi | |
13243 + roll $5,%eax | |
13244 + addl %ebx,%eax | |
13245 + # R1 29 | |
13246 + leal 4243563512(%edx,%ebp,1),%edx | |
13247 + xorl %eax,%edi | |
13248 + andl %ecx,%edi | |
13249 + movl 28(%esi),%ebp | |
13250 + xorl %ebx,%edi | |
13251 + addl %edi,%edx | |
13252 + movl %eax,%edi | |
13253 + roll $9,%edx | |
13254 + addl %eax,%edx | |
13255 + # R1 30 | |
13256 + leal 1735328473(%ecx,%ebp,1),%ecx | |
13257 + xorl %edx,%edi | |
13258 + andl %ebx,%edi | |
13259 + movl 48(%esi),%ebp | |
13260 + xorl %eax,%edi | |
13261 + addl %edi,%ecx | |
13262 + movl %edx,%edi | |
13263 + roll $14,%ecx | |
13264 + addl %edx,%ecx | |
13265 + # R1 31 | |
13266 + leal 2368359562(%ebx,%ebp,1),%ebx | |
13267 + xorl %ecx,%edi | |
13268 + andl %eax,%edi | |
13269 + movl 20(%esi),%ebp | |
13270 + xorl %edx,%edi | |
13271 + addl %edi,%ebx | |
13272 + movl %ecx,%edi | |
13273 + roll $20,%ebx | |
13274 + addl %ecx,%ebx | |
13275 + | |
13276 + # R2 section | |
13277 + # R2 32 | |
13278 + xorl %edx,%edi | |
13279 + xorl %ebx,%edi | |
13280 + leal 4294588738(%eax,%ebp,1),%eax | |
13281 + addl %edi,%eax | |
13282 + roll $4,%eax | |
13283 + movl 32(%esi),%ebp | |
13284 + movl %ebx,%edi | |
13285 + # R2 33 | |
13286 + leal 2272392833(%edx,%ebp,1),%edx | |
13287 + addl %ebx,%eax | |
13288 + xorl %ecx,%edi | |
13289 + xorl %eax,%edi | |
13290 + movl 44(%esi),%ebp | |
13291 + addl %edi,%edx | |
13292 + movl %eax,%edi | |
13293 + roll $11,%edx | |
13294 + addl %eax,%edx | |
13295 + # R2 34 | |
13296 + xorl %ebx,%edi | |
13297 + xorl %edx,%edi | |
13298 + leal 1839030562(%ecx,%ebp,1),%ecx | |
13299 + addl %edi,%ecx | |
13300 + roll $16,%ecx | |
13301 + movl 56(%esi),%ebp | |
13302 + movl %edx,%edi | |
13303 + # R2 35 | |
13304 + leal 4259657740(%ebx,%ebp,1),%ebx | |
13305 + addl %edx,%ecx | |
13306 + xorl %eax,%edi | |
13307 + xorl %ecx,%edi | |
13308 + movl 4(%esi),%ebp | |
13309 + addl %edi,%ebx | |
13310 + movl %ecx,%edi | |
13311 + roll $23,%ebx | |
13312 + addl %ecx,%ebx | |
13313 + # R2 36 | |
13314 + xorl %edx,%edi | |
13315 + xorl %ebx,%edi | |
13316 + leal 2763975236(%eax,%ebp,1),%eax | |
13317 + addl %edi,%eax | |
13318 + roll $4,%eax | |
13319 + movl 16(%esi),%ebp | |
13320 + movl %ebx,%edi | |
13321 + # R2 37 | |
13322 + leal 1272893353(%edx,%ebp,1),%edx | |
13323 + addl %ebx,%eax | |
13324 + xorl %ecx,%edi | |
13325 + xorl %eax,%edi | |
13326 + movl 28(%esi),%ebp | |
13327 + addl %edi,%edx | |
13328 + movl %eax,%edi | |
13329 + roll $11,%edx | |
13330 + addl %eax,%edx | |
13331 + # R2 38 | |
13332 + xorl %ebx,%edi | |
13333 + xorl %edx,%edi | |
13334 + leal 4139469664(%ecx,%ebp,1),%ecx | |
13335 + addl %edi,%ecx | |
13336 + roll $16,%ecx | |
13337 + movl 40(%esi),%ebp | |
13338 + movl %edx,%edi | |
13339 + # R2 39 | |
13340 + leal 3200236656(%ebx,%ebp,1),%ebx | |
13341 + addl %edx,%ecx | |
13342 + xorl %eax,%edi | |
13343 + xorl %ecx,%edi | |
13344 + movl 52(%esi),%ebp | |
13345 + addl %edi,%ebx | |
13346 + movl %ecx,%edi | |
13347 + roll $23,%ebx | |
13348 + addl %ecx,%ebx | |
13349 + # R2 40 | |
13350 + xorl %edx,%edi | |
13351 + xorl %ebx,%edi | |
13352 + leal 681279174(%eax,%ebp,1),%eax | |
13353 + addl %edi,%eax | |
13354 + roll $4,%eax | |
13355 + movl (%esi),%ebp | |
13356 + movl %ebx,%edi | |
13357 + # R2 41 | |
13358 + leal 3936430074(%edx,%ebp,1),%edx | |
13359 + addl %ebx,%eax | |
13360 + xorl %ecx,%edi | |
13361 + xorl %eax,%edi | |
13362 + movl 12(%esi),%ebp | |
13363 + addl %edi,%edx | |
13364 + movl %eax,%edi | |
13365 + roll $11,%edx | |
13366 + addl %eax,%edx | |
13367 + # R2 42 | |
13368 + xorl %ebx,%edi | |
13369 + xorl %edx,%edi | |
13370 + leal 3572445317(%ecx,%ebp,1),%ecx | |
13371 + addl %edi,%ecx | |
13372 + roll $16,%ecx | |
13373 + movl 24(%esi),%ebp | |
13374 + movl %edx,%edi | |
13375 + # R2 43 | |
13376 + leal 76029189(%ebx,%ebp,1),%ebx | |
13377 + addl %edx,%ecx | |
13378 + xorl %eax,%edi | |
13379 + xorl %ecx,%edi | |
13380 + movl 36(%esi),%ebp | |
13381 + addl %edi,%ebx | |
13382 + movl %ecx,%edi | |
13383 + roll $23,%ebx | |
13384 + addl %ecx,%ebx | |
13385 + # R2 44 | |
13386 + xorl %edx,%edi | |
13387 + xorl %ebx,%edi | |
13388 + leal 3654602809(%eax,%ebp,1),%eax | |
13389 + addl %edi,%eax | |
13390 + roll $4,%eax | |
13391 + movl 48(%esi),%ebp | |
13392 + movl %ebx,%edi | |
13393 + # R2 45 | |
13394 + leal 3873151461(%edx,%ebp,1),%edx | |
13395 + addl %ebx,%eax | |
13396 + xorl %ecx,%edi | |
13397 + xorl %eax,%edi | |
13398 + movl 60(%esi),%ebp | |
13399 + addl %edi,%edx | |
13400 + movl %eax,%edi | |
13401 + roll $11,%edx | |
13402 + addl %eax,%edx | |
13403 + # R2 46 | |
13404 + xorl %ebx,%edi | |
13405 + xorl %edx,%edi | |
13406 + leal 530742520(%ecx,%ebp,1),%ecx | |
13407 + addl %edi,%ecx | |
13408 + roll $16,%ecx | |
13409 + movl 8(%esi),%ebp | |
13410 + movl %edx,%edi | |
13411 + # R2 47 | |
13412 + leal 3299628645(%ebx,%ebp,1),%ebx | |
13413 + addl %edx,%ecx | |
13414 + xorl %eax,%edi | |
13415 + xorl %ecx,%edi | |
13416 + movl (%esi),%ebp | |
13417 + addl %edi,%ebx | |
13418 + movl $-1,%edi | |
13419 + roll $23,%ebx | |
13420 + addl %ecx,%ebx | |
13421 + | |
13422 + # R3 section | |
13423 + # R3 48 | |
13424 + xorl %edx,%edi | |
13425 + orl %ebx,%edi | |
13426 + leal 4096336452(%eax,%ebp,1),%eax | |
13427 + xorl %ecx,%edi | |
13428 + movl 28(%esi),%ebp | |
13429 + addl %edi,%eax | |
13430 + movl $-1,%edi | |
13431 + roll $6,%eax | |
13432 + xorl %ecx,%edi | |
13433 + addl %ebx,%eax | |
13434 + # R3 49 | |
13435 + orl %eax,%edi | |
13436 + leal 1126891415(%edx,%ebp,1),%edx | |
13437 + xorl %ebx,%edi | |
13438 + movl 56(%esi),%ebp | |
13439 + addl %edi,%edx | |
13440 + movl $-1,%edi | |
13441 + roll $10,%edx | |
13442 + xorl %ebx,%edi | |
13443 + addl %eax,%edx | |
13444 + # R3 50 | |
13445 + orl %edx,%edi | |
13446 + leal 2878612391(%ecx,%ebp,1),%ecx | |
13447 + xorl %eax,%edi | |
13448 + movl 20(%esi),%ebp | |
13449 + addl %edi,%ecx | |
13450 + movl $-1,%edi | |
13451 + roll $15,%ecx | |
13452 + xorl %eax,%edi | |
13453 + addl %edx,%ecx | |
13454 + # R3 51 | |
13455 + orl %ecx,%edi | |
13456 + leal 4237533241(%ebx,%ebp,1),%ebx | |
13457 + xorl %edx,%edi | |
13458 + movl 48(%esi),%ebp | |
13459 + addl %edi,%ebx | |
13460 + movl $-1,%edi | |
13461 + roll $21,%ebx | |
13462 + xorl %edx,%edi | |
13463 + addl %ecx,%ebx | |
13464 + # R3 52 | |
13465 + orl %ebx,%edi | |
13466 + leal 1700485571(%eax,%ebp,1),%eax | |
13467 + xorl %ecx,%edi | |
13468 + movl 12(%esi),%ebp | |
13469 + addl %edi,%eax | |
13470 + movl $-1,%edi | |
13471 + roll $6,%eax | |
13472 + xorl %ecx,%edi | |
13473 + addl %ebx,%eax | |
13474 + # R3 53 | |
13475 + orl %eax,%edi | |
13476 + leal 2399980690(%edx,%ebp,1),%edx | |
13477 + xorl %ebx,%edi | |
13478 + movl 40(%esi),%ebp | |
13479 + addl %edi,%edx | |
13480 + movl $-1,%edi | |
13481 + roll $10,%edx | |
13482 + xorl %ebx,%edi | |
13483 + addl %eax,%edx | |
13484 + # R3 54 | |
13485 + orl %edx,%edi | |
13486 + leal 4293915773(%ecx,%ebp,1),%ecx | |
13487 + xorl %eax,%edi | |
13488 + movl 4(%esi),%ebp | |
13489 + addl %edi,%ecx | |
13490 + movl $-1,%edi | |
13491 + roll $15,%ecx | |
13492 + xorl %eax,%edi | |
13493 + addl %edx,%ecx | |
13494 + # R3 55 | |
13495 + orl %ecx,%edi | |
13496 + leal 2240044497(%ebx,%ebp,1),%ebx | |
13497 + xorl %edx,%edi | |
13498 + movl 32(%esi),%ebp | |
13499 + addl %edi,%ebx | |
13500 + movl $-1,%edi | |
13501 + roll $21,%ebx | |
13502 + xorl %edx,%edi | |
13503 + addl %ecx,%ebx | |
13504 + # R3 56 | |
13505 + orl %ebx,%edi | |
13506 + leal 1873313359(%eax,%ebp,1),%eax | |
13507 + xorl %ecx,%edi | |
13508 + movl 60(%esi),%ebp | |
13509 + addl %edi,%eax | |
13510 + movl $-1,%edi | |
13511 + roll $6,%eax | |
13512 + xorl %ecx,%edi | |
13513 + addl %ebx,%eax | |
13514 + # R3 57 | |
13515 + orl %eax,%edi | |
13516 + leal 4264355552(%edx,%ebp,1),%edx | |
13517 + xorl %ebx,%edi | |
13518 + movl 24(%esi),%ebp | |
13519 + addl %edi,%edx | |
13520 + movl $-1,%edi | |
13521 + roll $10,%edx | |
13522 + xorl %ebx,%edi | |
13523 + addl %eax,%edx | |
13524 + # R3 58 | |
13525 + orl %edx,%edi | |
13526 + leal 2734768916(%ecx,%ebp,1),%ecx | |
13527 + xorl %eax,%edi | |
13528 + movl 52(%esi),%ebp | |
13529 + addl %edi,%ecx | |
13530 + movl $-1,%edi | |
13531 + roll $15,%ecx | |
13532 + xorl %eax,%edi | |
13533 + addl %edx,%ecx | |
13534 + # R3 59 | |
13535 + orl %ecx,%edi | |
13536 + leal 1309151649(%ebx,%ebp,1),%ebx | |
13537 + xorl %edx,%edi | |
13538 + movl 16(%esi),%ebp | |
13539 + addl %edi,%ebx | |
13540 + movl $-1,%edi | |
13541 + roll $21,%ebx | |
13542 + xorl %edx,%edi | |
13543 + addl %ecx,%ebx | |
13544 + # R3 60 | |
13545 + orl %ebx,%edi | |
13546 + leal 4149444226(%eax,%ebp,1),%eax | |
13547 + xorl %ecx,%edi | |
13548 + movl 44(%esi),%ebp | |
13549 + addl %edi,%eax | |
13550 + movl $-1,%edi | |
13551 + roll $6,%eax | |
13552 + xorl %ecx,%edi | |
13553 + addl %ebx,%eax | |
13554 + # R3 61 | |
13555 + orl %eax,%edi | |
13556 + leal 3174756917(%edx,%ebp,1),%edx | |
13557 + xorl %ebx,%edi | |
13558 + movl 8(%esi),%ebp | |
13559 + addl %edi,%edx | |
13560 + movl $-1,%edi | |
13561 + roll $10,%edx | |
13562 + xorl %ebx,%edi | |
13563 + addl %eax,%edx | |
13564 + # R3 62 | |
13565 + orl %edx,%edi | |
13566 + leal 718787259(%ecx,%ebp,1),%ecx | |
13567 + xorl %eax,%edi | |
13568 + movl 36(%esi),%ebp | |
13569 + addl %edi,%ecx | |
13570 + movl $-1,%edi | |
13571 + roll $15,%ecx | |
13572 + xorl %eax,%edi | |
13573 + addl %edx,%ecx | |
13574 + # R3 63 | |
13575 + orl %ecx,%edi | |
13576 + leal 3951481745(%ebx,%ebp,1),%ebx | |
13577 + xorl %edx,%edi | |
13578 + movl 24(%esp),%ebp | |
13579 + addl %edi,%ebx | |
13580 + addl $64,%esi | |
13581 + roll $21,%ebx | |
13582 + movl (%ebp),%edi | |
13583 + addl %ecx,%ebx | |
13584 + addl %edi,%eax | |
13585 + movl 4(%ebp),%edi | |
13586 + addl %edi,%ebx | |
13587 + movl 8(%ebp),%edi | |
13588 + addl %edi,%ecx | |
13589 + movl 12(%ebp),%edi | |
13590 + addl %edi,%edx | |
13591 + movl %eax,(%ebp) | |
13592 + movl %ebx,4(%ebp) | |
13593 + movl (%esp),%edi | |
13594 + movl %ecx,8(%ebp) | |
13595 + movl %edx,12(%ebp) | |
13596 + cmpl %esi,%edi | |
13597 + jae L000start | |
13598 + popl %eax | |
13599 + popl %ebx | |
13600 + popl %ebp | |
13601 + popl %edi | |
13602 + popl %esi | |
13603 + ret | |
13604 diff --git a/crypto/modes/asm/ghash-x86-mac.S b/crypto/modes/asm/ghash-x86-mac.S | |
13605 new file mode 100644 | |
13606 index 0000000..dc6ba14 | |
13607 --- /dev/null | |
13608 +++ b/crypto/modes/asm/ghash-x86-mac.S | |
13609 @@ -0,0 +1,718 @@ | |
13610 +.file "ghash-x86.s" | |
13611 +.text | |
13612 +.globl _gcm_gmult_4bit_x86 | |
13613 +.align 4 | |
13614 +_gcm_gmult_4bit_x86: | |
13615 +L_gcm_gmult_4bit_x86_begin: | |
13616 + pushl %ebp | |
13617 + pushl %ebx | |
13618 + pushl %esi | |
13619 + pushl %edi | |
13620 + subl $84,%esp | |
13621 + movl 104(%esp),%edi | |
13622 + movl 108(%esp),%esi | |
13623 + movl (%edi),%ebp | |
13624 + movl 4(%edi),%edx | |
13625 + movl 8(%edi),%ecx | |
13626 + movl 12(%edi),%ebx | |
13627 + movl $0,16(%esp) | |
13628 + movl $471859200,20(%esp) | |
13629 + movl $943718400,24(%esp) | |
13630 + movl $610271232,28(%esp) | |
13631 + movl $1887436800,32(%esp) | |
13632 + movl $1822425088,36(%esp) | |
13633 + movl $1220542464,40(%esp) | |
13634 + movl $1423966208,44(%esp) | |
13635 + movl $3774873600,48(%esp) | |
13636 + movl $4246732800,52(%esp) | |
13637 + movl $3644850176,56(%esp) | |
13638 + movl $3311403008,60(%esp) | |
13639 + movl $2441084928,64(%esp) | |
13640 + movl $2376073216,68(%esp) | |
13641 + movl $2847932416,72(%esp) | |
13642 + movl $3051356160,76(%esp) | |
13643 + movl %ebp,(%esp) | |
13644 + movl %edx,4(%esp) | |
13645 + movl %ecx,8(%esp) | |
13646 + movl %ebx,12(%esp) | |
13647 + shrl $20,%ebx | |
13648 + andl $240,%ebx | |
13649 + movl 4(%esi,%ebx,1),%ebp | |
13650 + movl (%esi,%ebx,1),%edx | |
13651 + movl 12(%esi,%ebx,1),%ecx | |
13652 + movl 8(%esi,%ebx,1),%ebx | |
13653 + xorl %eax,%eax | |
13654 + movl $15,%edi | |
13655 + jmp L000x86_loop | |
13656 +.align 4,0x90 | |
13657 +L000x86_loop: | |
13658 + movb %bl,%al | |
13659 + shrdl $4,%ecx,%ebx | |
13660 + andb $15,%al | |
13661 + shrdl $4,%edx,%ecx | |
13662 + shrdl $4,%ebp,%edx | |
13663 + shrl $4,%ebp | |
13664 + xorl 16(%esp,%eax,4),%ebp | |
13665 + movb (%esp,%edi,1),%al | |
13666 + andb $240,%al | |
13667 + xorl 8(%esi,%eax,1),%ebx | |
13668 + xorl 12(%esi,%eax,1),%ecx | |
13669 + xorl (%esi,%eax,1),%edx | |
13670 + xorl 4(%esi,%eax,1),%ebp | |
13671 + decl %edi | |
13672 + js L001x86_break | |
13673 + movb %bl,%al | |
13674 + shrdl $4,%ecx,%ebx | |
13675 + andb $15,%al | |
13676 + shrdl $4,%edx,%ecx | |
13677 + shrdl $4,%ebp,%edx | |
13678 + shrl $4,%ebp | |
13679 + xorl 16(%esp,%eax,4),%ebp | |
13680 + movb (%esp,%edi,1),%al | |
13681 + shlb $4,%al | |
13682 + xorl 8(%esi,%eax,1),%ebx | |
13683 + xorl 12(%esi,%eax,1),%ecx | |
13684 + xorl (%esi,%eax,1),%edx | |
13685 + xorl 4(%esi,%eax,1),%ebp | |
13686 + jmp L000x86_loop | |
13687 +.align 4,0x90 | |
13688 +L001x86_break: | |
13689 + bswap %ebx | |
13690 + bswap %ecx | |
13691 + bswap %edx | |
13692 + bswap %ebp | |
13693 + movl 104(%esp),%edi | |
13694 + movl %ebx,12(%edi) | |
13695 + movl %ecx,8(%edi) | |
13696 + movl %edx,4(%edi) | |
13697 + movl %ebp,(%edi) | |
13698 + addl $84,%esp | |
13699 + popl %edi | |
13700 + popl %esi | |
13701 + popl %ebx | |
13702 + popl %ebp | |
13703 + ret | |
13704 +.globl _gcm_ghash_4bit_x86 | |
13705 +.align 4 | |
13706 +_gcm_ghash_4bit_x86: | |
13707 +L_gcm_ghash_4bit_x86_begin: | |
13708 + pushl %ebp | |
13709 + pushl %ebx | |
13710 + pushl %esi | |
13711 + pushl %edi | |
13712 + subl $84,%esp | |
13713 + movl 104(%esp),%ebx | |
13714 + movl 108(%esp),%esi | |
13715 + movl 112(%esp),%edi | |
13716 + movl 116(%esp),%ecx | |
13717 + addl %edi,%ecx | |
13718 + movl %ecx,116(%esp) | |
13719 + movl (%ebx),%ebp | |
13720 + movl 4(%ebx),%edx | |
13721 + movl 8(%ebx),%ecx | |
13722 + movl 12(%ebx),%ebx | |
13723 + movl $0,16(%esp) | |
13724 + movl $471859200,20(%esp) | |
13725 + movl $943718400,24(%esp) | |
13726 + movl $610271232,28(%esp) | |
13727 + movl $1887436800,32(%esp) | |
13728 + movl $1822425088,36(%esp) | |
13729 + movl $1220542464,40(%esp) | |
13730 + movl $1423966208,44(%esp) | |
13731 + movl $3774873600,48(%esp) | |
13732 + movl $4246732800,52(%esp) | |
13733 + movl $3644850176,56(%esp) | |
13734 + movl $3311403008,60(%esp) | |
13735 + movl $2441084928,64(%esp) | |
13736 + movl $2376073216,68(%esp) | |
13737 + movl $2847932416,72(%esp) | |
13738 + movl $3051356160,76(%esp) | |
13739 +.align 4,0x90 | |
13740 +L002x86_outer_loop: | |
13741 + xorl 12(%edi),%ebx | |
13742 + xorl 8(%edi),%ecx | |
13743 + xorl 4(%edi),%edx | |
13744 + xorl (%edi),%ebp | |
13745 + movl %ebx,12(%esp) | |
13746 + movl %ecx,8(%esp) | |
13747 + movl %edx,4(%esp) | |
13748 + movl %ebp,(%esp) | |
13749 + shrl $20,%ebx | |
13750 + andl $240,%ebx | |
13751 + movl 4(%esi,%ebx,1),%ebp | |
13752 + movl (%esi,%ebx,1),%edx | |
13753 + movl 12(%esi,%ebx,1),%ecx | |
13754 + movl 8(%esi,%ebx,1),%ebx | |
13755 + xorl %eax,%eax | |
13756 + movl $15,%edi | |
13757 + jmp L003x86_loop | |
13758 +.align 4,0x90 | |
13759 +L003x86_loop: | |
13760 + movb %bl,%al | |
13761 + shrdl $4,%ecx,%ebx | |
13762 + andb $15,%al | |
13763 + shrdl $4,%edx,%ecx | |
13764 + shrdl $4,%ebp,%edx | |
13765 + shrl $4,%ebp | |
13766 + xorl 16(%esp,%eax,4),%ebp | |
13767 + movb (%esp,%edi,1),%al | |
13768 + andb $240,%al | |
13769 + xorl 8(%esi,%eax,1),%ebx | |
13770 + xorl 12(%esi,%eax,1),%ecx | |
13771 + xorl (%esi,%eax,1),%edx | |
13772 + xorl 4(%esi,%eax,1),%ebp | |
13773 + decl %edi | |
13774 + js L004x86_break | |
13775 + movb %bl,%al | |
13776 + shrdl $4,%ecx,%ebx | |
13777 + andb $15,%al | |
13778 + shrdl $4,%edx,%ecx | |
13779 + shrdl $4,%ebp,%edx | |
13780 + shrl $4,%ebp | |
13781 + xorl 16(%esp,%eax,4),%ebp | |
13782 + movb (%esp,%edi,1),%al | |
13783 + shlb $4,%al | |
13784 + xorl 8(%esi,%eax,1),%ebx | |
13785 + xorl 12(%esi,%eax,1),%ecx | |
13786 + xorl (%esi,%eax,1),%edx | |
13787 + xorl 4(%esi,%eax,1),%ebp | |
13788 + jmp L003x86_loop | |
13789 +.align 4,0x90 | |
13790 +L004x86_break: | |
13791 + bswap %ebx | |
13792 + bswap %ecx | |
13793 + bswap %edx | |
13794 + bswap %ebp | |
13795 + movl 112(%esp),%edi | |
13796 + leal 16(%edi),%edi | |
13797 + cmpl 116(%esp),%edi | |
13798 + movl %edi,112(%esp) | |
13799 + jb L002x86_outer_loop | |
13800 + movl 104(%esp),%edi | |
13801 + movl %ebx,12(%edi) | |
13802 + movl %ecx,8(%edi) | |
13803 + movl %edx,4(%edi) | |
13804 + movl %ebp,(%edi) | |
13805 + addl $84,%esp | |
13806 + popl %edi | |
13807 + popl %esi | |
13808 + popl %ebx | |
13809 + popl %ebp | |
13810 + ret | |
13811 +.align 4 | |
13812 +__mmx_gmult_4bit_inner: | |
13813 + xorl %ecx,%ecx | |
13814 + movl %ebx,%edx | |
13815 + movb %dl,%cl | |
13816 + shlb $4,%cl | |
13817 + andl $240,%edx | |
13818 + movq 8(%esi,%ecx,1),%mm0 | |
13819 + movq (%esi,%ecx,1),%mm1 | |
13820 + movd %mm0,%ebp | |
13821 + psrlq $4,%mm0 | |
13822 + movq %mm1,%mm2 | |
13823 + psrlq $4,%mm1 | |
13824 + pxor 8(%esi,%edx,1),%mm0 | |
13825 + movb 14(%edi),%cl | |
13826 + psllq $60,%mm2 | |
13827 + andl $15,%ebp | |
13828 + pxor (%esi,%edx,1),%mm1 | |
13829 + movl %ecx,%edx | |
13830 + movd %mm0,%ebx | |
13831 + pxor %mm2,%mm0 | |
13832 + shlb $4,%cl | |
13833 + psrlq $4,%mm0 | |
13834 + movq %mm1,%mm2 | |
13835 + psrlq $4,%mm1 | |
13836 + pxor 8(%esi,%ecx,1),%mm0 | |
13837 + psllq $60,%mm2 | |
13838 + andl $240,%edx | |
13839 + pxor (%eax,%ebp,8),%mm1 | |
13840 + andl $15,%ebx | |
13841 + pxor (%esi,%ecx,1),%mm1 | |
13842 + movd %mm0,%ebp | |
13843 + pxor %mm2,%mm0 | |
13844 + psrlq $4,%mm0 | |
13845 + movq %mm1,%mm2 | |
13846 + psrlq $4,%mm1 | |
13847 + pxor 8(%esi,%edx,1),%mm0 | |
13848 + movb 13(%edi),%cl | |
13849 + psllq $60,%mm2 | |
13850 + pxor (%eax,%ebx,8),%mm1 | |
13851 + andl $15,%ebp | |
13852 + pxor (%esi,%edx,1),%mm1 | |
13853 + movl %ecx,%edx | |
13854 + movd %mm0,%ebx | |
13855 + pxor %mm2,%mm0 | |
13856 + shlb $4,%cl | |
13857 + psrlq $4,%mm0 | |
13858 + movq %mm1,%mm2 | |
13859 + psrlq $4,%mm1 | |
13860 + pxor 8(%esi,%ecx,1),%mm0 | |
13861 + psllq $60,%mm2 | |
13862 + andl $240,%edx | |
13863 + pxor (%eax,%ebp,8),%mm1 | |
13864 + andl $15,%ebx | |
13865 + pxor (%esi,%ecx,1),%mm1 | |
13866 + movd %mm0,%ebp | |
13867 + pxor %mm2,%mm0 | |
13868 + psrlq $4,%mm0 | |
13869 + movq %mm1,%mm2 | |
13870 + psrlq $4,%mm1 | |
13871 + pxor 8(%esi,%edx,1),%mm0 | |
13872 + movb 12(%edi),%cl | |
13873 + psllq $60,%mm2 | |
13874 + pxor (%eax,%ebx,8),%mm1 | |
13875 + andl $15,%ebp | |
13876 + pxor (%esi,%edx,1),%mm1 | |
13877 + movl %ecx,%edx | |
13878 + movd %mm0,%ebx | |
13879 + pxor %mm2,%mm0 | |
13880 + shlb $4,%cl | |
13881 + psrlq $4,%mm0 | |
13882 + movq %mm1,%mm2 | |
13883 + psrlq $4,%mm1 | |
13884 + pxor 8(%esi,%ecx,1),%mm0 | |
13885 + psllq $60,%mm2 | |
13886 + andl $240,%edx | |
13887 + pxor (%eax,%ebp,8),%mm1 | |
13888 + andl $15,%ebx | |
13889 + pxor (%esi,%ecx,1),%mm1 | |
13890 + movd %mm0,%ebp | |
13891 + pxor %mm2,%mm0 | |
13892 + psrlq $4,%mm0 | |
13893 + movq %mm1,%mm2 | |
13894 + psrlq $4,%mm1 | |
13895 + pxor 8(%esi,%edx,1),%mm0 | |
13896 + movb 11(%edi),%cl | |
13897 + psllq $60,%mm2 | |
13898 + pxor (%eax,%ebx,8),%mm1 | |
13899 + andl $15,%ebp | |
13900 + pxor (%esi,%edx,1),%mm1 | |
13901 + movl %ecx,%edx | |
13902 + movd %mm0,%ebx | |
13903 + pxor %mm2,%mm0 | |
13904 + shlb $4,%cl | |
13905 + psrlq $4,%mm0 | |
13906 + movq %mm1,%mm2 | |
13907 + psrlq $4,%mm1 | |
13908 + pxor 8(%esi,%ecx,1),%mm0 | |
13909 + psllq $60,%mm2 | |
13910 + andl $240,%edx | |
13911 + pxor (%eax,%ebp,8),%mm1 | |
13912 + andl $15,%ebx | |
13913 + pxor (%esi,%ecx,1),%mm1 | |
13914 + movd %mm0,%ebp | |
13915 + pxor %mm2,%mm0 | |
13916 + psrlq $4,%mm0 | |
13917 + movq %mm1,%mm2 | |
13918 + psrlq $4,%mm1 | |
13919 + pxor 8(%esi,%edx,1),%mm0 | |
13920 + movb 10(%edi),%cl | |
13921 + psllq $60,%mm2 | |
13922 + pxor (%eax,%ebx,8),%mm1 | |
13923 + andl $15,%ebp | |
13924 + pxor (%esi,%edx,1),%mm1 | |
13925 + movl %ecx,%edx | |
13926 + movd %mm0,%ebx | |
13927 + pxor %mm2,%mm0 | |
13928 + shlb $4,%cl | |
13929 + psrlq $4,%mm0 | |
13930 + movq %mm1,%mm2 | |
13931 + psrlq $4,%mm1 | |
13932 + pxor 8(%esi,%ecx,1),%mm0 | |
13933 + psllq $60,%mm2 | |
13934 + andl $240,%edx | |
13935 + pxor (%eax,%ebp,8),%mm1 | |
13936 + andl $15,%ebx | |
13937 + pxor (%esi,%ecx,1),%mm1 | |
13938 + movd %mm0,%ebp | |
13939 + pxor %mm2,%mm0 | |
13940 + psrlq $4,%mm0 | |
13941 + movq %mm1,%mm2 | |
13942 + psrlq $4,%mm1 | |
13943 + pxor 8(%esi,%edx,1),%mm0 | |
13944 + movb 9(%edi),%cl | |
13945 + psllq $60,%mm2 | |
13946 + pxor (%eax,%ebx,8),%mm1 | |
13947 + andl $15,%ebp | |
13948 + pxor (%esi,%edx,1),%mm1 | |
13949 + movl %ecx,%edx | |
13950 + movd %mm0,%ebx | |
13951 + pxor %mm2,%mm0 | |
13952 + shlb $4,%cl | |
13953 + psrlq $4,%mm0 | |
13954 + movq %mm1,%mm2 | |
13955 + psrlq $4,%mm1 | |
13956 + pxor 8(%esi,%ecx,1),%mm0 | |
13957 + psllq $60,%mm2 | |
13958 + andl $240,%edx | |
13959 + pxor (%eax,%ebp,8),%mm1 | |
13960 + andl $15,%ebx | |
13961 + pxor (%esi,%ecx,1),%mm1 | |
13962 + movd %mm0,%ebp | |
13963 + pxor %mm2,%mm0 | |
13964 + psrlq $4,%mm0 | |
13965 + movq %mm1,%mm2 | |
13966 + psrlq $4,%mm1 | |
13967 + pxor 8(%esi,%edx,1),%mm0 | |
13968 + movb 8(%edi),%cl | |
13969 + psllq $60,%mm2 | |
13970 + pxor (%eax,%ebx,8),%mm1 | |
13971 + andl $15,%ebp | |
13972 + pxor (%esi,%edx,1),%mm1 | |
13973 + movl %ecx,%edx | |
13974 + movd %mm0,%ebx | |
13975 + pxor %mm2,%mm0 | |
13976 + shlb $4,%cl | |
13977 + psrlq $4,%mm0 | |
13978 + movq %mm1,%mm2 | |
13979 + psrlq $4,%mm1 | |
13980 + pxor 8(%esi,%ecx,1),%mm0 | |
13981 + psllq $60,%mm2 | |
13982 + andl $240,%edx | |
13983 + pxor (%eax,%ebp,8),%mm1 | |
13984 + andl $15,%ebx | |
13985 + pxor (%esi,%ecx,1),%mm1 | |
13986 + movd %mm0,%ebp | |
13987 + pxor %mm2,%mm0 | |
13988 + psrlq $4,%mm0 | |
13989 + movq %mm1,%mm2 | |
13990 + psrlq $4,%mm1 | |
13991 + pxor 8(%esi,%edx,1),%mm0 | |
13992 + movb 7(%edi),%cl | |
13993 + psllq $60,%mm2 | |
13994 + pxor (%eax,%ebx,8),%mm1 | |
13995 + andl $15,%ebp | |
13996 + pxor (%esi,%edx,1),%mm1 | |
13997 + movl %ecx,%edx | |
13998 + movd %mm0,%ebx | |
13999 + pxor %mm2,%mm0 | |
14000 + shlb $4,%cl | |
14001 + psrlq $4,%mm0 | |
14002 + movq %mm1,%mm2 | |
14003 + psrlq $4,%mm1 | |
14004 + pxor 8(%esi,%ecx,1),%mm0 | |
14005 + psllq $60,%mm2 | |
14006 + andl $240,%edx | |
14007 + pxor (%eax,%ebp,8),%mm1 | |
14008 + andl $15,%ebx | |
14009 + pxor (%esi,%ecx,1),%mm1 | |
14010 + movd %mm0,%ebp | |
14011 + pxor %mm2,%mm0 | |
14012 + psrlq $4,%mm0 | |
14013 + movq %mm1,%mm2 | |
14014 + psrlq $4,%mm1 | |
14015 + pxor 8(%esi,%edx,1),%mm0 | |
14016 + movb 6(%edi),%cl | |
14017 + psllq $60,%mm2 | |
14018 + pxor (%eax,%ebx,8),%mm1 | |
14019 + andl $15,%ebp | |
14020 + pxor (%esi,%edx,1),%mm1 | |
14021 + movl %ecx,%edx | |
14022 + movd %mm0,%ebx | |
14023 + pxor %mm2,%mm0 | |
14024 + shlb $4,%cl | |
14025 + psrlq $4,%mm0 | |
14026 + movq %mm1,%mm2 | |
14027 + psrlq $4,%mm1 | |
14028 + pxor 8(%esi,%ecx,1),%mm0 | |
14029 + psllq $60,%mm2 | |
14030 + andl $240,%edx | |
14031 + pxor (%eax,%ebp,8),%mm1 | |
14032 + andl $15,%ebx | |
14033 + pxor (%esi,%ecx,1),%mm1 | |
14034 + movd %mm0,%ebp | |
14035 + pxor %mm2,%mm0 | |
14036 + psrlq $4,%mm0 | |
14037 + movq %mm1,%mm2 | |
14038 + psrlq $4,%mm1 | |
14039 + pxor 8(%esi,%edx,1),%mm0 | |
14040 + movb 5(%edi),%cl | |
14041 + psllq $60,%mm2 | |
14042 + pxor (%eax,%ebx,8),%mm1 | |
14043 + andl $15,%ebp | |
14044 + pxor (%esi,%edx,1),%mm1 | |
14045 + movl %ecx,%edx | |
14046 + movd %mm0,%ebx | |
14047 + pxor %mm2,%mm0 | |
14048 + shlb $4,%cl | |
14049 + psrlq $4,%mm0 | |
14050 + movq %mm1,%mm2 | |
14051 + psrlq $4,%mm1 | |
14052 + pxor 8(%esi,%ecx,1),%mm0 | |
14053 + psllq $60,%mm2 | |
14054 + andl $240,%edx | |
14055 + pxor (%eax,%ebp,8),%mm1 | |
14056 + andl $15,%ebx | |
14057 + pxor (%esi,%ecx,1),%mm1 | |
14058 + movd %mm0,%ebp | |
14059 + pxor %mm2,%mm0 | |
14060 + psrlq $4,%mm0 | |
14061 + movq %mm1,%mm2 | |
14062 + psrlq $4,%mm1 | |
14063 + pxor 8(%esi,%edx,1),%mm0 | |
14064 + movb 4(%edi),%cl | |
14065 + psllq $60,%mm2 | |
14066 + pxor (%eax,%ebx,8),%mm1 | |
14067 + andl $15,%ebp | |
14068 + pxor (%esi,%edx,1),%mm1 | |
14069 + movl %ecx,%edx | |
14070 + movd %mm0,%ebx | |
14071 + pxor %mm2,%mm0 | |
14072 + shlb $4,%cl | |
14073 + psrlq $4,%mm0 | |
14074 + movq %mm1,%mm2 | |
14075 + psrlq $4,%mm1 | |
14076 + pxor 8(%esi,%ecx,1),%mm0 | |
14077 + psllq $60,%mm2 | |
14078 + andl $240,%edx | |
14079 + pxor (%eax,%ebp,8),%mm1 | |
14080 + andl $15,%ebx | |
14081 + pxor (%esi,%ecx,1),%mm1 | |
14082 + movd %mm0,%ebp | |
14083 + pxor %mm2,%mm0 | |
14084 + psrlq $4,%mm0 | |
14085 + movq %mm1,%mm2 | |
14086 + psrlq $4,%mm1 | |
14087 + pxor 8(%esi,%edx,1),%mm0 | |
14088 + movb 3(%edi),%cl | |
14089 + psllq $60,%mm2 | |
14090 + pxor (%eax,%ebx,8),%mm1 | |
14091 + andl $15,%ebp | |
14092 + pxor (%esi,%edx,1),%mm1 | |
14093 + movl %ecx,%edx | |
14094 + movd %mm0,%ebx | |
14095 + pxor %mm2,%mm0 | |
14096 + shlb $4,%cl | |
14097 + psrlq $4,%mm0 | |
14098 + movq %mm1,%mm2 | |
14099 + psrlq $4,%mm1 | |
14100 + pxor 8(%esi,%ecx,1),%mm0 | |
14101 + psllq $60,%mm2 | |
14102 + andl $240,%edx | |
14103 + pxor (%eax,%ebp,8),%mm1 | |
14104 + andl $15,%ebx | |
14105 + pxor (%esi,%ecx,1),%mm1 | |
14106 + movd %mm0,%ebp | |
14107 + pxor %mm2,%mm0 | |
14108 + psrlq $4,%mm0 | |
14109 + movq %mm1,%mm2 | |
14110 + psrlq $4,%mm1 | |
14111 + pxor 8(%esi,%edx,1),%mm0 | |
14112 + movb 2(%edi),%cl | |
14113 + psllq $60,%mm2 | |
14114 + pxor (%eax,%ebx,8),%mm1 | |
14115 + andl $15,%ebp | |
14116 + pxor (%esi,%edx,1),%mm1 | |
14117 + movl %ecx,%edx | |
14118 + movd %mm0,%ebx | |
14119 + pxor %mm2,%mm0 | |
14120 + shlb $4,%cl | |
14121 + psrlq $4,%mm0 | |
14122 + movq %mm1,%mm2 | |
14123 + psrlq $4,%mm1 | |
14124 + pxor 8(%esi,%ecx,1),%mm0 | |
14125 + psllq $60,%mm2 | |
14126 + andl $240,%edx | |
14127 + pxor (%eax,%ebp,8),%mm1 | |
14128 + andl $15,%ebx | |
14129 + pxor (%esi,%ecx,1),%mm1 | |
14130 + movd %mm0,%ebp | |
14131 + pxor %mm2,%mm0 | |
14132 + psrlq $4,%mm0 | |
14133 + movq %mm1,%mm2 | |
14134 + psrlq $4,%mm1 | |
14135 + pxor 8(%esi,%edx,1),%mm0 | |
14136 + movb 1(%edi),%cl | |
14137 + psllq $60,%mm2 | |
14138 + pxor (%eax,%ebx,8),%mm1 | |
14139 + andl $15,%ebp | |
14140 + pxor (%esi,%edx,1),%mm1 | |
14141 + movl %ecx,%edx | |
14142 + movd %mm0,%ebx | |
14143 + pxor %mm2,%mm0 | |
14144 + shlb $4,%cl | |
14145 + psrlq $4,%mm0 | |
14146 + movq %mm1,%mm2 | |
14147 + psrlq $4,%mm1 | |
14148 + pxor 8(%esi,%ecx,1),%mm0 | |
14149 + psllq $60,%mm2 | |
14150 + andl $240,%edx | |
14151 + pxor (%eax,%ebp,8),%mm1 | |
14152 + andl $15,%ebx | |
14153 + pxor (%esi,%ecx,1),%mm1 | |
14154 + movd %mm0,%ebp | |
14155 + pxor %mm2,%mm0 | |
14156 + psrlq $4,%mm0 | |
14157 + movq %mm1,%mm2 | |
14158 + psrlq $4,%mm1 | |
14159 + pxor 8(%esi,%edx,1),%mm0 | |
14160 + movb (%edi),%cl | |
14161 + psllq $60,%mm2 | |
14162 + pxor (%eax,%ebx,8),%mm1 | |
14163 + andl $15,%ebp | |
14164 + pxor (%esi,%edx,1),%mm1 | |
14165 + movl %ecx,%edx | |
14166 + movd %mm0,%ebx | |
14167 + pxor %mm2,%mm0 | |
14168 + shlb $4,%cl | |
14169 + psrlq $4,%mm0 | |
14170 + movq %mm1,%mm2 | |
14171 + psrlq $4,%mm1 | |
14172 + pxor 8(%esi,%ecx,1),%mm0 | |
14173 + psllq $60,%mm2 | |
14174 + andl $240,%edx | |
14175 + pxor (%eax,%ebp,8),%mm1 | |
14176 + andl $15,%ebx | |
14177 + pxor (%esi,%ecx,1),%mm1 | |
14178 + movd %mm0,%ebp | |
14179 + pxor %mm2,%mm0 | |
14180 + psrlq $4,%mm0 | |
14181 + movq %mm1,%mm2 | |
14182 + psrlq $4,%mm1 | |
14183 + pxor 8(%esi,%edx,1),%mm0 | |
14184 + psllq $60,%mm2 | |
14185 + pxor (%eax,%ebx,8),%mm1 | |
14186 + andl $15,%ebp | |
14187 + pxor (%esi,%edx,1),%mm1 | |
14188 + movd %mm0,%ebx | |
14189 + pxor %mm2,%mm0 | |
14190 + movl 4(%eax,%ebp,8),%edi | |
14191 + psrlq $32,%mm0 | |
14192 + movd %mm1,%edx | |
14193 + psrlq $32,%mm1 | |
14194 + movd %mm0,%ecx | |
14195 + movd %mm1,%ebp | |
14196 + shll $4,%edi | |
14197 + bswap %ebx | |
14198 + bswap %edx | |
14199 + bswap %ecx | |
14200 + xorl %edi,%ebp | |
14201 + bswap %ebp | |
14202 + ret | |
14203 +.globl _gcm_gmult_4bit_mmx | |
14204 +.align 4 | |
14205 +_gcm_gmult_4bit_mmx: | |
14206 +L_gcm_gmult_4bit_mmx_begin: | |
14207 + pushl %ebp | |
14208 + pushl %ebx | |
14209 + pushl %esi | |
14210 + pushl %edi | |
14211 + movl 20(%esp),%edi | |
14212 + movl 24(%esp),%esi | |
14213 + call L005pic_point | |
14214 +L005pic_point: | |
14215 + popl %eax | |
14216 + leal Lrem_4bit-L005pic_point(%eax),%eax | |
14217 + movzbl 15(%edi),%ebx | |
14218 + call __mmx_gmult_4bit_inner | |
14219 + movl 20(%esp),%edi | |
14220 + emms | |
14221 + movl %ebx,12(%edi) | |
14222 + movl %edx,4(%edi) | |
14223 + movl %ecx,8(%edi) | |
14224 + movl %ebp,(%edi) | |
14225 + popl %edi | |
14226 + popl %esi | |
14227 + popl %ebx | |
14228 + popl %ebp | |
14229 + ret | |
14230 +.globl _gcm_ghash_4bit_mmx | |
14231 +.align 4 | |
14232 +_gcm_ghash_4bit_mmx: | |
14233 +L_gcm_ghash_4bit_mmx_begin: | |
14234 + pushl %ebp | |
14235 + pushl %ebx | |
14236 + pushl %esi | |
14237 + pushl %edi | |
14238 + movl 20(%esp),%ebp | |
14239 + movl 24(%esp),%esi | |
14240 + movl 28(%esp),%edi | |
14241 + movl 32(%esp),%ecx | |
14242 + call L006pic_point | |
14243 +L006pic_point: | |
14244 + popl %eax | |
14245 + leal Lrem_4bit-L006pic_point(%eax),%eax | |
14246 + addl %edi,%ecx | |
14247 + movl %ecx,32(%esp) | |
14248 + subl $20,%esp | |
14249 + movl 12(%ebp),%ebx | |
14250 + movl 4(%ebp),%edx | |
14251 + movl 8(%ebp),%ecx | |
14252 + movl (%ebp),%ebp | |
14253 + jmp L007mmx_outer_loop | |
14254 +.align 4,0x90 | |
14255 +L007mmx_outer_loop: | |
14256 + xorl 12(%edi),%ebx | |
14257 + xorl 4(%edi),%edx | |
14258 + xorl 8(%edi),%ecx | |
14259 + xorl (%edi),%ebp | |
14260 + movl %edi,48(%esp) | |
14261 + movl %ebx,12(%esp) | |
14262 + movl %edx,4(%esp) | |
14263 + movl %ecx,8(%esp) | |
14264 + movl %ebp,(%esp) | |
14265 + movl %esp,%edi | |
14266 + shrl $24,%ebx | |
14267 + call __mmx_gmult_4bit_inner | |
14268 + movl 48(%esp),%edi | |
14269 + leal 16(%edi),%edi | |
14270 + cmpl 52(%esp),%edi | |
14271 + jb L007mmx_outer_loop | |
14272 + movl 40(%esp),%edi | |
14273 + emms | |
14274 + movl %ebx,12(%edi) | |
14275 + movl %edx,4(%edi) | |
14276 + movl %ecx,8(%edi) | |
14277 + movl %ebp,(%edi) | |
14278 + addl $20,%esp | |
14279 + popl %edi | |
14280 + popl %esi | |
14281 + popl %ebx | |
14282 + popl %ebp | |
14283 + ret | |
14284 +.align 6,0x90 | |
14285 +Lrem_4bit: | |
14286 +.long 0,0,0,29491200,0,58982400,0,38141952 | |
14287 +.long 0,117964800,0,113901568,0,76283904,0,88997888 | |
14288 +.long 0,235929600,0,265420800,0,227803136,0,206962688 | |
14289 +.long 0,152567808,0,148504576,0,177995776,0,190709760 | |
14290 +.align 6,0x90 | |
14291 +L008rem_8bit: | |
14292 +.value 0,450,900,582,1800,1738,1164,1358 | |
14293 +.value 3600,4050,3476,3158,2328,2266,2716,2910 | |
14294 +.value 7200,7650,8100,7782,6952,6890,6316,6510 | |
14295 +.value 4656,5106,4532,4214,5432,5370,5820,6014 | |
14296 +.value 14400,14722,15300,14854,16200,16010,15564,15630 | |
14297 +.value 13904,14226,13780,13334,12632,12442,13020,13086 | |
14298 +.value 9312,9634,10212,9766,9064,8874,8428,8494 | |
14299 +.value 10864,11186,10740,10294,11640,11450,12028,12094 | |
14300 +.value 28800,28994,29444,29382,30600,30282,29708,30158 | |
14301 +.value 32400,32594,32020,31958,31128,30810,31260,31710 | |
14302 +.value 27808,28002,28452,28390,27560,27242,26668,27118 | |
14303 +.value 25264,25458,24884,24822,26040,25722,26172,26622 | |
14304 +.value 18624,18690,19268,19078,20424,19978,19532,19854 | |
14305 +.value 18128,18194,17748,17558,16856,16410,16988,17310 | |
14306 +.value 21728,21794,22372,22182,21480,21034,20588,20910 | |
14307 +.value 23280,23346,22900,22710,24056,23610,24188,24510 | |
14308 +.value 57600,57538,57988,58182,58888,59338,58764,58446 | |
14309 +.value 61200,61138,60564,60758,59416,59866,60316,59998 | |
14310 +.value 64800,64738,65188,65382,64040,64490,63916,63598 | |
14311 +.value 62256,62194,61620,61814,62520,62970,63420,63102 | |
14312 +.value 55616,55426,56004,56070,56904,57226,56780,56334 | |
14313 +.value 55120,54930,54484,54550,53336,53658,54236,53790 | |
14314 +.value 50528,50338,50916,50982,49768,50090,49644,49198 | |
14315 +.value 52080,51890,51444,51510,52344,52666,53244,52798 | |
14316 +.value 37248,36930,37380,37830,38536,38730,38156,38094 | |
14317 +.value 40848,40530,39956,40406,39064,39258,39708,39646 | |
14318 +.value 36256,35938,36388,36838,35496,35690,35116,35054 | |
14319 +.value 33712,33394,32820,33270,33976,34170,34620,34558 | |
14320 +.value 43456,43010,43588,43910,44744,44810,44364,44174 | |
14321 +.value 42960,42514,42068,42390,41176,41242,41820,41630 | |
14322 +.value 46560,46114,46692,47014,45800,45866,45420,45230 | |
14323 +.value 48112,47666,47220,47542,48376,48442,49020,48830 | |
14324 +.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 | |
14325 +.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 | |
14326 +.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 | |
14327 +.byte 0 | |
14328 diff --git a/crypto/sha/asm/sha1-586-mac.S b/crypto/sha/asm/sha1-586-mac.S | |
14329 new file mode 100644 | |
14330 index 0000000..b843b80 | |
14331 --- /dev/null | |
14332 +++ b/crypto/sha/asm/sha1-586-mac.S | |
14333 @@ -0,0 +1,1378 @@ | |
14334 +.file "sha1-586.s" | |
14335 +.text | |
14336 +.globl _sha1_block_data_order | |
14337 +.align 4 | |
14338 +_sha1_block_data_order: | |
14339 +L_sha1_block_data_order_begin: | |
14340 + pushl %ebp | |
14341 + pushl %ebx | |
14342 + pushl %esi | |
14343 + pushl %edi | |
14344 + movl 20(%esp),%ebp | |
14345 + movl 24(%esp),%esi | |
14346 + movl 28(%esp),%eax | |
14347 + subl $76,%esp | |
14348 + shll $6,%eax | |
14349 + addl %esi,%eax | |
14350 + movl %eax,104(%esp) | |
14351 + movl 16(%ebp),%edi | |
14352 + jmp L000loop | |
14353 +.align 4,0x90 | |
14354 +L000loop: | |
14355 + movl (%esi),%eax | |
14356 + movl 4(%esi),%ebx | |
14357 + movl 8(%esi),%ecx | |
14358 + movl 12(%esi),%edx | |
14359 + bswap %eax | |
14360 + bswap %ebx | |
14361 + bswap %ecx | |
14362 + bswap %edx | |
14363 + movl %eax,(%esp) | |
14364 + movl %ebx,4(%esp) | |
14365 + movl %ecx,8(%esp) | |
14366 + movl %edx,12(%esp) | |
14367 + movl 16(%esi),%eax | |
14368 + movl 20(%esi),%ebx | |
14369 + movl 24(%esi),%ecx | |
14370 + movl 28(%esi),%edx | |
14371 + bswap %eax | |
14372 + bswap %ebx | |
14373 + bswap %ecx | |
14374 + bswap %edx | |
14375 + movl %eax,16(%esp) | |
14376 + movl %ebx,20(%esp) | |
14377 + movl %ecx,24(%esp) | |
14378 + movl %edx,28(%esp) | |
14379 + movl 32(%esi),%eax | |
14380 + movl 36(%esi),%ebx | |
14381 + movl 40(%esi),%ecx | |
14382 + movl 44(%esi),%edx | |
14383 + bswap %eax | |
14384 + bswap %ebx | |
14385 + bswap %ecx | |
14386 + bswap %edx | |
14387 + movl %eax,32(%esp) | |
14388 + movl %ebx,36(%esp) | |
14389 + movl %ecx,40(%esp) | |
14390 + movl %edx,44(%esp) | |
14391 + movl 48(%esi),%eax | |
14392 + movl 52(%esi),%ebx | |
14393 + movl 56(%esi),%ecx | |
14394 + movl 60(%esi),%edx | |
14395 + bswap %eax | |
14396 + bswap %ebx | |
14397 + bswap %ecx | |
14398 + bswap %edx | |
14399 + movl %eax,48(%esp) | |
14400 + movl %ebx,52(%esp) | |
14401 + movl %ecx,56(%esp) | |
14402 + movl %edx,60(%esp) | |
14403 + movl %esi,100(%esp) | |
14404 + movl (%ebp),%eax | |
14405 + movl 4(%ebp),%ebx | |
14406 + movl 8(%ebp),%ecx | |
14407 + movl 12(%ebp),%edx | |
14408 + # 00_15 0 | |
14409 + movl %ecx,%esi | |
14410 + movl %eax,%ebp | |
14411 + roll $5,%ebp | |
14412 + xorl %edx,%esi | |
14413 + addl %edi,%ebp | |
14414 + movl (%esp),%edi | |
14415 + andl %ebx,%esi | |
14416 + rorl $2,%ebx | |
14417 + xorl %edx,%esi | |
14418 + leal 1518500249(%ebp,%edi,1),%ebp | |
14419 + addl %esi,%ebp | |
14420 + # 00_15 1 | |
14421 + movl %ebx,%edi | |
14422 + movl %ebp,%esi | |
14423 + roll $5,%ebp | |
14424 + xorl %ecx,%edi | |
14425 + addl %edx,%ebp | |
14426 + movl 4(%esp),%edx | |
14427 + andl %eax,%edi | |
14428 + rorl $2,%eax | |
14429 + xorl %ecx,%edi | |
14430 + leal 1518500249(%ebp,%edx,1),%ebp | |
14431 + addl %edi,%ebp | |
14432 + # 00_15 2 | |
14433 + movl %eax,%edx | |
14434 + movl %ebp,%edi | |
14435 + roll $5,%ebp | |
14436 + xorl %ebx,%edx | |
14437 + addl %ecx,%ebp | |
14438 + movl 8(%esp),%ecx | |
14439 + andl %esi,%edx | |
14440 + rorl $2,%esi | |
14441 + xorl %ebx,%edx | |
14442 + leal 1518500249(%ebp,%ecx,1),%ebp | |
14443 + addl %edx,%ebp | |
14444 + # 00_15 3 | |
14445 + movl %esi,%ecx | |
14446 + movl %ebp,%edx | |
14447 + roll $5,%ebp | |
14448 + xorl %eax,%ecx | |
14449 + addl %ebx,%ebp | |
14450 + movl 12(%esp),%ebx | |
14451 + andl %edi,%ecx | |
14452 + rorl $2,%edi | |
14453 + xorl %eax,%ecx | |
14454 + leal 1518500249(%ebp,%ebx,1),%ebp | |
14455 + addl %ecx,%ebp | |
14456 + # 00_15 4 | |
14457 + movl %edi,%ebx | |
14458 + movl %ebp,%ecx | |
14459 + roll $5,%ebp | |
14460 + xorl %esi,%ebx | |
14461 + addl %eax,%ebp | |
14462 + movl 16(%esp),%eax | |
14463 + andl %edx,%ebx | |
14464 + rorl $2,%edx | |
14465 + xorl %esi,%ebx | |
14466 + leal 1518500249(%ebp,%eax,1),%ebp | |
14467 + addl %ebx,%ebp | |
14468 + # 00_15 5 | |
14469 + movl %edx,%eax | |
14470 + movl %ebp,%ebx | |
14471 + roll $5,%ebp | |
14472 + xorl %edi,%eax | |
14473 + addl %esi,%ebp | |
14474 + movl 20(%esp),%esi | |
14475 + andl %ecx,%eax | |
14476 + rorl $2,%ecx | |
14477 + xorl %edi,%eax | |
14478 + leal 1518500249(%ebp,%esi,1),%ebp | |
14479 + addl %eax,%ebp | |
14480 + # 00_15 6 | |
14481 + movl %ecx,%esi | |
14482 + movl %ebp,%eax | |
14483 + roll $5,%ebp | |
14484 + xorl %edx,%esi | |
14485 + addl %edi,%ebp | |
14486 + movl 24(%esp),%edi | |
14487 + andl %ebx,%esi | |
14488 + rorl $2,%ebx | |
14489 + xorl %edx,%esi | |
14490 + leal 1518500249(%ebp,%edi,1),%ebp | |
14491 + addl %esi,%ebp | |
14492 + # 00_15 7 | |
14493 + movl %ebx,%edi | |
14494 + movl %ebp,%esi | |
14495 + roll $5,%ebp | |
14496 + xorl %ecx,%edi | |
14497 + addl %edx,%ebp | |
14498 + movl 28(%esp),%edx | |
14499 + andl %eax,%edi | |
14500 + rorl $2,%eax | |
14501 + xorl %ecx,%edi | |
14502 + leal 1518500249(%ebp,%edx,1),%ebp | |
14503 + addl %edi,%ebp | |
14504 + # 00_15 8 | |
14505 + movl %eax,%edx | |
14506 + movl %ebp,%edi | |
14507 + roll $5,%ebp | |
14508 + xorl %ebx,%edx | |
14509 + addl %ecx,%ebp | |
14510 + movl 32(%esp),%ecx | |
14511 + andl %esi,%edx | |
14512 + rorl $2,%esi | |
14513 + xorl %ebx,%edx | |
14514 + leal 1518500249(%ebp,%ecx,1),%ebp | |
14515 + addl %edx,%ebp | |
14516 + # 00_15 9 | |
14517 + movl %esi,%ecx | |
14518 + movl %ebp,%edx | |
14519 + roll $5,%ebp | |
14520 + xorl %eax,%ecx | |
14521 + addl %ebx,%ebp | |
14522 + movl 36(%esp),%ebx | |
14523 + andl %edi,%ecx | |
14524 + rorl $2,%edi | |
14525 + xorl %eax,%ecx | |
14526 + leal 1518500249(%ebp,%ebx,1),%ebp | |
14527 + addl %ecx,%ebp | |
14528 + # 00_15 10 | |
14529 + movl %edi,%ebx | |
14530 + movl %ebp,%ecx | |
14531 + roll $5,%ebp | |
14532 + xorl %esi,%ebx | |
14533 + addl %eax,%ebp | |
14534 + movl 40(%esp),%eax | |
14535 + andl %edx,%ebx | |
14536 + rorl $2,%edx | |
14537 + xorl %esi,%ebx | |
14538 + leal 1518500249(%ebp,%eax,1),%ebp | |
14539 + addl %ebx,%ebp | |
14540 + # 00_15 11 | |
14541 + movl %edx,%eax | |
14542 + movl %ebp,%ebx | |
14543 + roll $5,%ebp | |
14544 + xorl %edi,%eax | |
14545 + addl %esi,%ebp | |
14546 + movl 44(%esp),%esi | |
14547 + andl %ecx,%eax | |
14548 + rorl $2,%ecx | |
14549 + xorl %edi,%eax | |
14550 + leal 1518500249(%ebp,%esi,1),%ebp | |
14551 + addl %eax,%ebp | |
14552 + # 00_15 12 | |
14553 + movl %ecx,%esi | |
14554 + movl %ebp,%eax | |
14555 + roll $5,%ebp | |
14556 + xorl %edx,%esi | |
14557 + addl %edi,%ebp | |
14558 + movl 48(%esp),%edi | |
14559 + andl %ebx,%esi | |
14560 + rorl $2,%ebx | |
14561 + xorl %edx,%esi | |
14562 + leal 1518500249(%ebp,%edi,1),%ebp | |
14563 + addl %esi,%ebp | |
14564 + # 00_15 13 | |
14565 + movl %ebx,%edi | |
14566 + movl %ebp,%esi | |
14567 + roll $5,%ebp | |
14568 + xorl %ecx,%edi | |
14569 + addl %edx,%ebp | |
14570 + movl 52(%esp),%edx | |
14571 + andl %eax,%edi | |
14572 + rorl $2,%eax | |
14573 + xorl %ecx,%edi | |
14574 + leal 1518500249(%ebp,%edx,1),%ebp | |
14575 + addl %edi,%ebp | |
14576 + # 00_15 14 | |
14577 + movl %eax,%edx | |
14578 + movl %ebp,%edi | |
14579 + roll $5,%ebp | |
14580 + xorl %ebx,%edx | |
14581 + addl %ecx,%ebp | |
14582 + movl 56(%esp),%ecx | |
14583 + andl %esi,%edx | |
14584 + rorl $2,%esi | |
14585 + xorl %ebx,%edx | |
14586 + leal 1518500249(%ebp,%ecx,1),%ebp | |
14587 + addl %edx,%ebp | |
14588 + # 00_15 15 | |
14589 + movl %esi,%ecx | |
14590 + movl %ebp,%edx | |
14591 + roll $5,%ebp | |
14592 + xorl %eax,%ecx | |
14593 + addl %ebx,%ebp | |
14594 + movl 60(%esp),%ebx | |
14595 + andl %edi,%ecx | |
14596 + rorl $2,%edi | |
14597 + xorl %eax,%ecx | |
14598 + leal 1518500249(%ebp,%ebx,1),%ebp | |
14599 + movl (%esp),%ebx | |
14600 + addl %ebp,%ecx | |
14601 + # 16_19 16 | |
14602 + movl %edi,%ebp | |
14603 + xorl 8(%esp),%ebx | |
14604 + xorl %esi,%ebp | |
14605 + xorl 32(%esp),%ebx | |
14606 + andl %edx,%ebp | |
14607 + xorl 52(%esp),%ebx | |
14608 + roll $1,%ebx | |
14609 + xorl %esi,%ebp | |
14610 + addl %ebp,%eax | |
14611 + movl %ecx,%ebp | |
14612 + rorl $2,%edx | |
14613 + movl %ebx,(%esp) | |
14614 + roll $5,%ebp | |
14615 + leal 1518500249(%ebx,%eax,1),%ebx | |
14616 + movl 4(%esp),%eax | |
14617 + addl %ebp,%ebx | |
14618 + # 16_19 17 | |
14619 + movl %edx,%ebp | |
14620 + xorl 12(%esp),%eax | |
14621 + xorl %edi,%ebp | |
14622 + xorl 36(%esp),%eax | |
14623 + andl %ecx,%ebp | |
14624 + xorl 56(%esp),%eax | |
14625 + roll $1,%eax | |
14626 + xorl %edi,%ebp | |
14627 + addl %ebp,%esi | |
14628 + movl %ebx,%ebp | |
14629 + rorl $2,%ecx | |
14630 + movl %eax,4(%esp) | |
14631 + roll $5,%ebp | |
14632 + leal 1518500249(%eax,%esi,1),%eax | |
14633 + movl 8(%esp),%esi | |
14634 + addl %ebp,%eax | |
14635 + # 16_19 18 | |
14636 + movl %ecx,%ebp | |
14637 + xorl 16(%esp),%esi | |
14638 + xorl %edx,%ebp | |
14639 + xorl 40(%esp),%esi | |
14640 + andl %ebx,%ebp | |
14641 + xorl 60(%esp),%esi | |
14642 + roll $1,%esi | |
14643 + xorl %edx,%ebp | |
14644 + addl %ebp,%edi | |
14645 + movl %eax,%ebp | |
14646 + rorl $2,%ebx | |
14647 + movl %esi,8(%esp) | |
14648 + roll $5,%ebp | |
14649 + leal 1518500249(%esi,%edi,1),%esi | |
14650 + movl 12(%esp),%edi | |
14651 + addl %ebp,%esi | |
14652 + # 16_19 19 | |
14653 + movl %ebx,%ebp | |
14654 + xorl 20(%esp),%edi | |
14655 + xorl %ecx,%ebp | |
14656 + xorl 44(%esp),%edi | |
14657 + andl %eax,%ebp | |
14658 + xorl (%esp),%edi | |
14659 + roll $1,%edi | |
14660 + xorl %ecx,%ebp | |
14661 + addl %ebp,%edx | |
14662 + movl %esi,%ebp | |
14663 + rorl $2,%eax | |
14664 + movl %edi,12(%esp) | |
14665 + roll $5,%ebp | |
14666 + leal 1518500249(%edi,%edx,1),%edi | |
14667 + movl 16(%esp),%edx | |
14668 + addl %ebp,%edi | |
14669 + # 20_39 20 | |
14670 + movl %esi,%ebp | |
14671 + xorl 24(%esp),%edx | |
14672 + xorl %eax,%ebp | |
14673 + xorl 48(%esp),%edx | |
14674 + xorl %ebx,%ebp | |
14675 + xorl 4(%esp),%edx | |
14676 + roll $1,%edx | |
14677 + addl %ebp,%ecx | |
14678 + rorl $2,%esi | |
14679 + movl %edi,%ebp | |
14680 + roll $5,%ebp | |
14681 + movl %edx,16(%esp) | |
14682 + leal 1859775393(%edx,%ecx,1),%edx | |
14683 + movl 20(%esp),%ecx | |
14684 + addl %ebp,%edx | |
14685 + # 20_39 21 | |
14686 + movl %edi,%ebp | |
14687 + xorl 28(%esp),%ecx | |
14688 + xorl %esi,%ebp | |
14689 + xorl 52(%esp),%ecx | |
14690 + xorl %eax,%ebp | |
14691 + xorl 8(%esp),%ecx | |
14692 + roll $1,%ecx | |
14693 + addl %ebp,%ebx | |
14694 + rorl $2,%edi | |
14695 + movl %edx,%ebp | |
14696 + roll $5,%ebp | |
14697 + movl %ecx,20(%esp) | |
14698 + leal 1859775393(%ecx,%ebx,1),%ecx | |
14699 + movl 24(%esp),%ebx | |
14700 + addl %ebp,%ecx | |
14701 + # 20_39 22 | |
14702 + movl %edx,%ebp | |
14703 + xorl 32(%esp),%ebx | |
14704 + xorl %edi,%ebp | |
14705 + xorl 56(%esp),%ebx | |
14706 + xorl %esi,%ebp | |
14707 + xorl 12(%esp),%ebx | |
14708 + roll $1,%ebx | |
14709 + addl %ebp,%eax | |
14710 + rorl $2,%edx | |
14711 + movl %ecx,%ebp | |
14712 + roll $5,%ebp | |
14713 + movl %ebx,24(%esp) | |
14714 + leal 1859775393(%ebx,%eax,1),%ebx | |
14715 + movl 28(%esp),%eax | |
14716 + addl %ebp,%ebx | |
14717 + # 20_39 23 | |
14718 + movl %ecx,%ebp | |
14719 + xorl 36(%esp),%eax | |
14720 + xorl %edx,%ebp | |
14721 + xorl 60(%esp),%eax | |
14722 + xorl %edi,%ebp | |
14723 + xorl 16(%esp),%eax | |
14724 + roll $1,%eax | |
14725 + addl %ebp,%esi | |
14726 + rorl $2,%ecx | |
14727 + movl %ebx,%ebp | |
14728 + roll $5,%ebp | |
14729 + movl %eax,28(%esp) | |
14730 + leal 1859775393(%eax,%esi,1),%eax | |
14731 + movl 32(%esp),%esi | |
14732 + addl %ebp,%eax | |
14733 + # 20_39 24 | |
14734 + movl %ebx,%ebp | |
14735 + xorl 40(%esp),%esi | |
14736 + xorl %ecx,%ebp | |
14737 + xorl (%esp),%esi | |
14738 + xorl %edx,%ebp | |
14739 + xorl 20(%esp),%esi | |
14740 + roll $1,%esi | |
14741 + addl %ebp,%edi | |
14742 + rorl $2,%ebx | |
14743 + movl %eax,%ebp | |
14744 + roll $5,%ebp | |
14745 + movl %esi,32(%esp) | |
14746 + leal 1859775393(%esi,%edi,1),%esi | |
14747 + movl 36(%esp),%edi | |
14748 + addl %ebp,%esi | |
14749 + # 20_39 25 | |
14750 + movl %eax,%ebp | |
14751 + xorl 44(%esp),%edi | |
14752 + xorl %ebx,%ebp | |
14753 + xorl 4(%esp),%edi | |
14754 + xorl %ecx,%ebp | |
14755 + xorl 24(%esp),%edi | |
14756 + roll $1,%edi | |
14757 + addl %ebp,%edx | |
14758 + rorl $2,%eax | |
14759 + movl %esi,%ebp | |
14760 + roll $5,%ebp | |
14761 + movl %edi,36(%esp) | |
14762 + leal 1859775393(%edi,%edx,1),%edi | |
14763 + movl 40(%esp),%edx | |
14764 + addl %ebp,%edi | |
14765 + # 20_39 26 | |
14766 + movl %esi,%ebp | |
14767 + xorl 48(%esp),%edx | |
14768 + xorl %eax,%ebp | |
14769 + xorl 8(%esp),%edx | |
14770 + xorl %ebx,%ebp | |
14771 + xorl 28(%esp),%edx | |
14772 + roll $1,%edx | |
14773 + addl %ebp,%ecx | |
14774 + rorl $2,%esi | |
14775 + movl %edi,%ebp | |
14776 + roll $5,%ebp | |
14777 + movl %edx,40(%esp) | |
14778 + leal 1859775393(%edx,%ecx,1),%edx | |
14779 + movl 44(%esp),%ecx | |
14780 + addl %ebp,%edx | |
14781 + # 20_39 27 | |
14782 + movl %edi,%ebp | |
14783 + xorl 52(%esp),%ecx | |
14784 + xorl %esi,%ebp | |
14785 + xorl 12(%esp),%ecx | |
14786 + xorl %eax,%ebp | |
14787 + xorl 32(%esp),%ecx | |
14788 + roll $1,%ecx | |
14789 + addl %ebp,%ebx | |
14790 + rorl $2,%edi | |
14791 + movl %edx,%ebp | |
14792 + roll $5,%ebp | |
14793 + movl %ecx,44(%esp) | |
14794 + leal 1859775393(%ecx,%ebx,1),%ecx | |
14795 + movl 48(%esp),%ebx | |
14796 + addl %ebp,%ecx | |
14797 + # 20_39 28 | |
14798 + movl %edx,%ebp | |
14799 + xorl 56(%esp),%ebx | |
14800 + xorl %edi,%ebp | |
14801 + xorl 16(%esp),%ebx | |
14802 + xorl %esi,%ebp | |
14803 + xorl 36(%esp),%ebx | |
14804 + roll $1,%ebx | |
14805 + addl %ebp,%eax | |
14806 + rorl $2,%edx | |
14807 + movl %ecx,%ebp | |
14808 + roll $5,%ebp | |
14809 + movl %ebx,48(%esp) | |
14810 + leal 1859775393(%ebx,%eax,1),%ebx | |
14811 + movl 52(%esp),%eax | |
14812 + addl %ebp,%ebx | |
14813 + # 20_39 29 | |
14814 + movl %ecx,%ebp | |
14815 + xorl 60(%esp),%eax | |
14816 + xorl %edx,%ebp | |
14817 + xorl 20(%esp),%eax | |
14818 + xorl %edi,%ebp | |
14819 + xorl 40(%esp),%eax | |
14820 + roll $1,%eax | |
14821 + addl %ebp,%esi | |
14822 + rorl $2,%ecx | |
14823 + movl %ebx,%ebp | |
14824 + roll $5,%ebp | |
14825 + movl %eax,52(%esp) | |
14826 + leal 1859775393(%eax,%esi,1),%eax | |
14827 + movl 56(%esp),%esi | |
14828 + addl %ebp,%eax | |
14829 + # 20_39 30 | |
14830 + movl %ebx,%ebp | |
14831 + xorl (%esp),%esi | |
14832 + xorl %ecx,%ebp | |
14833 + xorl 24(%esp),%esi | |
14834 + xorl %edx,%ebp | |
14835 + xorl 44(%esp),%esi | |
14836 + roll $1,%esi | |
14837 + addl %ebp,%edi | |
14838 + rorl $2,%ebx | |
14839 + movl %eax,%ebp | |
14840 + roll $5,%ebp | |
14841 + movl %esi,56(%esp) | |
14842 + leal 1859775393(%esi,%edi,1),%esi | |
14843 + movl 60(%esp),%edi | |
14844 + addl %ebp,%esi | |
14845 + # 20_39 31 | |
14846 + movl %eax,%ebp | |
14847 + xorl 4(%esp),%edi | |
14848 + xorl %ebx,%ebp | |
14849 + xorl 28(%esp),%edi | |
14850 + xorl %ecx,%ebp | |
14851 + xorl 48(%esp),%edi | |
14852 + roll $1,%edi | |
14853 + addl %ebp,%edx | |
14854 + rorl $2,%eax | |
14855 + movl %esi,%ebp | |
14856 + roll $5,%ebp | |
14857 + movl %edi,60(%esp) | |
14858 + leal 1859775393(%edi,%edx,1),%edi | |
14859 + movl (%esp),%edx | |
14860 + addl %ebp,%edi | |
14861 + # 20_39 32 | |
14862 + movl %esi,%ebp | |
14863 + xorl 8(%esp),%edx | |
14864 + xorl %eax,%ebp | |
14865 + xorl 32(%esp),%edx | |
14866 + xorl %ebx,%ebp | |
14867 + xorl 52(%esp),%edx | |
14868 + roll $1,%edx | |
14869 + addl %ebp,%ecx | |
14870 + rorl $2,%esi | |
14871 + movl %edi,%ebp | |
14872 + roll $5,%ebp | |
14873 + movl %edx,(%esp) | |
14874 + leal 1859775393(%edx,%ecx,1),%edx | |
14875 + movl 4(%esp),%ecx | |
14876 + addl %ebp,%edx | |
14877 + # 20_39 33 | |
14878 + movl %edi,%ebp | |
14879 + xorl 12(%esp),%ecx | |
14880 + xorl %esi,%ebp | |
14881 + xorl 36(%esp),%ecx | |
14882 + xorl %eax,%ebp | |
14883 + xorl 56(%esp),%ecx | |
14884 + roll $1,%ecx | |
14885 + addl %ebp,%ebx | |
14886 + rorl $2,%edi | |
14887 + movl %edx,%ebp | |
14888 + roll $5,%ebp | |
14889 + movl %ecx,4(%esp) | |
14890 + leal 1859775393(%ecx,%ebx,1),%ecx | |
14891 + movl 8(%esp),%ebx | |
14892 + addl %ebp,%ecx | |
14893 + # 20_39 34 | |
14894 + movl %edx,%ebp | |
14895 + xorl 16(%esp),%ebx | |
14896 + xorl %edi,%ebp | |
14897 + xorl 40(%esp),%ebx | |
14898 + xorl %esi,%ebp | |
14899 + xorl 60(%esp),%ebx | |
14900 + roll $1,%ebx | |
14901 + addl %ebp,%eax | |
14902 + rorl $2,%edx | |
14903 + movl %ecx,%ebp | |
14904 + roll $5,%ebp | |
14905 + movl %ebx,8(%esp) | |
14906 + leal 1859775393(%ebx,%eax,1),%ebx | |
14907 + movl 12(%esp),%eax | |
14908 + addl %ebp,%ebx | |
14909 + # 20_39 35 | |
14910 + movl %ecx,%ebp | |
14911 + xorl 20(%esp),%eax | |
14912 + xorl %edx,%ebp | |
14913 + xorl 44(%esp),%eax | |
14914 + xorl %edi,%ebp | |
14915 + xorl (%esp),%eax | |
14916 + roll $1,%eax | |
14917 + addl %ebp,%esi | |
14918 + rorl $2,%ecx | |
14919 + movl %ebx,%ebp | |
14920 + roll $5,%ebp | |
14921 + movl %eax,12(%esp) | |
14922 + leal 1859775393(%eax,%esi,1),%eax | |
14923 + movl 16(%esp),%esi | |
14924 + addl %ebp,%eax | |
14925 + # 20_39 36 | |
14926 + movl %ebx,%ebp | |
14927 + xorl 24(%esp),%esi | |
14928 + xorl %ecx,%ebp | |
14929 + xorl 48(%esp),%esi | |
14930 + xorl %edx,%ebp | |
14931 + xorl 4(%esp),%esi | |
14932 + roll $1,%esi | |
14933 + addl %ebp,%edi | |
14934 + rorl $2,%ebx | |
14935 + movl %eax,%ebp | |
14936 + roll $5,%ebp | |
14937 + movl %esi,16(%esp) | |
14938 + leal 1859775393(%esi,%edi,1),%esi | |
14939 + movl 20(%esp),%edi | |
14940 + addl %ebp,%esi | |
14941 + # 20_39 37 | |
14942 + movl %eax,%ebp | |
14943 + xorl 28(%esp),%edi | |
14944 + xorl %ebx,%ebp | |
14945 + xorl 52(%esp),%edi | |
14946 + xorl %ecx,%ebp | |
14947 + xorl 8(%esp),%edi | |
14948 + roll $1,%edi | |
14949 + addl %ebp,%edx | |
14950 + rorl $2,%eax | |
14951 + movl %esi,%ebp | |
14952 + roll $5,%ebp | |
14953 + movl %edi,20(%esp) | |
14954 + leal 1859775393(%edi,%edx,1),%edi | |
14955 + movl 24(%esp),%edx | |
14956 + addl %ebp,%edi | |
14957 + # 20_39 38 | |
14958 + movl %esi,%ebp | |
14959 + xorl 32(%esp),%edx | |
14960 + xorl %eax,%ebp | |
14961 + xorl 56(%esp),%edx | |
14962 + xorl %ebx,%ebp | |
14963 + xorl 12(%esp),%edx | |
14964 + roll $1,%edx | |
14965 + addl %ebp,%ecx | |
14966 + rorl $2,%esi | |
14967 + movl %edi,%ebp | |
14968 + roll $5,%ebp | |
14969 + movl %edx,24(%esp) | |
14970 + leal 1859775393(%edx,%ecx,1),%edx | |
14971 + movl 28(%esp),%ecx | |
14972 + addl %ebp,%edx | |
14973 + # 20_39 39 | |
14974 + movl %edi,%ebp | |
14975 + xorl 36(%esp),%ecx | |
14976 + xorl %esi,%ebp | |
14977 + xorl 60(%esp),%ecx | |
14978 + xorl %eax,%ebp | |
14979 + xorl 16(%esp),%ecx | |
14980 + roll $1,%ecx | |
14981 + addl %ebp,%ebx | |
14982 + rorl $2,%edi | |
14983 + movl %edx,%ebp | |
14984 + roll $5,%ebp | |
14985 + movl %ecx,28(%esp) | |
14986 + leal 1859775393(%ecx,%ebx,1),%ecx | |
14987 + movl 32(%esp),%ebx | |
14988 + addl %ebp,%ecx | |
14989 + # 40_59 40 | |
14990 + movl %edi,%ebp | |
14991 + xorl 40(%esp),%ebx | |
14992 + xorl %esi,%ebp | |
14993 + xorl (%esp),%ebx | |
14994 + andl %edx,%ebp | |
14995 + xorl 20(%esp),%ebx | |
14996 + roll $1,%ebx | |
14997 + addl %eax,%ebp | |
14998 + rorl $2,%edx | |
14999 + movl %ecx,%eax | |
15000 + roll $5,%eax | |
15001 + movl %ebx,32(%esp) | |
15002 + leal 2400959708(%ebx,%ebp,1),%ebx | |
15003 + movl %edi,%ebp | |
15004 + addl %eax,%ebx | |
15005 + andl %esi,%ebp | |
15006 + movl 36(%esp),%eax | |
15007 + addl %ebp,%ebx | |
15008 + # 40_59 41 | |
15009 + movl %edx,%ebp | |
15010 + xorl 44(%esp),%eax | |
15011 + xorl %edi,%ebp | |
15012 + xorl 4(%esp),%eax | |
15013 + andl %ecx,%ebp | |
15014 + xorl 24(%esp),%eax | |
15015 + roll $1,%eax | |
15016 + addl %esi,%ebp | |
15017 + rorl $2,%ecx | |
15018 + movl %ebx,%esi | |
15019 + roll $5,%esi | |
15020 + movl %eax,36(%esp) | |
15021 + leal 2400959708(%eax,%ebp,1),%eax | |
15022 + movl %edx,%ebp | |
15023 + addl %esi,%eax | |
15024 + andl %edi,%ebp | |
15025 + movl 40(%esp),%esi | |
15026 + addl %ebp,%eax | |
15027 + # 40_59 42 | |
15028 + movl %ecx,%ebp | |
15029 + xorl 48(%esp),%esi | |
15030 + xorl %edx,%ebp | |
15031 + xorl 8(%esp),%esi | |
15032 + andl %ebx,%ebp | |
15033 + xorl 28(%esp),%esi | |
15034 + roll $1,%esi | |
15035 + addl %edi,%ebp | |
15036 + rorl $2,%ebx | |
15037 + movl %eax,%edi | |
15038 + roll $5,%edi | |
15039 + movl %esi,40(%esp) | |
15040 + leal 2400959708(%esi,%ebp,1),%esi | |
15041 + movl %ecx,%ebp | |
15042 + addl %edi,%esi | |
15043 + andl %edx,%ebp | |
15044 + movl 44(%esp),%edi | |
15045 + addl %ebp,%esi | |
15046 + # 40_59 43 | |
15047 + movl %ebx,%ebp | |
15048 + xorl 52(%esp),%edi | |
15049 + xorl %ecx,%ebp | |
15050 + xorl 12(%esp),%edi | |
15051 + andl %eax,%ebp | |
15052 + xorl 32(%esp),%edi | |
15053 + roll $1,%edi | |
15054 + addl %edx,%ebp | |
15055 + rorl $2,%eax | |
15056 + movl %esi,%edx | |
15057 + roll $5,%edx | |
15058 + movl %edi,44(%esp) | |
15059 + leal 2400959708(%edi,%ebp,1),%edi | |
15060 + movl %ebx,%ebp | |
15061 + addl %edx,%edi | |
15062 + andl %ecx,%ebp | |
15063 + movl 48(%esp),%edx | |
15064 + addl %ebp,%edi | |
15065 + # 40_59 44 | |
15066 + movl %eax,%ebp | |
15067 + xorl 56(%esp),%edx | |
15068 + xorl %ebx,%ebp | |
15069 + xorl 16(%esp),%edx | |
15070 + andl %esi,%ebp | |
15071 + xorl 36(%esp),%edx | |
15072 + roll $1,%edx | |
15073 + addl %ecx,%ebp | |
15074 + rorl $2,%esi | |
15075 + movl %edi,%ecx | |
15076 + roll $5,%ecx | |
15077 + movl %edx,48(%esp) | |
15078 + leal 2400959708(%edx,%ebp,1),%edx | |
15079 + movl %eax,%ebp | |
15080 + addl %ecx,%edx | |
15081 + andl %ebx,%ebp | |
15082 + movl 52(%esp),%ecx | |
15083 + addl %ebp,%edx | |
15084 + # 40_59 45 | |
15085 + movl %esi,%ebp | |
15086 + xorl 60(%esp),%ecx | |
15087 + xorl %eax,%ebp | |
15088 + xorl 20(%esp),%ecx | |
15089 + andl %edi,%ebp | |
15090 + xorl 40(%esp),%ecx | |
15091 + roll $1,%ecx | |
15092 + addl %ebx,%ebp | |
15093 + rorl $2,%edi | |
15094 + movl %edx,%ebx | |
15095 + roll $5,%ebx | |
15096 + movl %ecx,52(%esp) | |
15097 + leal 2400959708(%ecx,%ebp,1),%ecx | |
15098 + movl %esi,%ebp | |
15099 + addl %ebx,%ecx | |
15100 + andl %eax,%ebp | |
15101 + movl 56(%esp),%ebx | |
15102 + addl %ebp,%ecx | |
15103 + # 40_59 46 | |
15104 + movl %edi,%ebp | |
15105 + xorl (%esp),%ebx | |
15106 + xorl %esi,%ebp | |
15107 + xorl 24(%esp),%ebx | |
15108 + andl %edx,%ebp | |
15109 + xorl 44(%esp),%ebx | |
15110 + roll $1,%ebx | |
15111 + addl %eax,%ebp | |
15112 + rorl $2,%edx | |
15113 + movl %ecx,%eax | |
15114 + roll $5,%eax | |
15115 + movl %ebx,56(%esp) | |
15116 + leal 2400959708(%ebx,%ebp,1),%ebx | |
15117 + movl %edi,%ebp | |
15118 + addl %eax,%ebx | |
15119 + andl %esi,%ebp | |
15120 + movl 60(%esp),%eax | |
15121 + addl %ebp,%ebx | |
15122 + # 40_59 47 | |
15123 + movl %edx,%ebp | |
15124 + xorl 4(%esp),%eax | |
15125 + xorl %edi,%ebp | |
15126 + xorl 28(%esp),%eax | |
15127 + andl %ecx,%ebp | |
15128 + xorl 48(%esp),%eax | |
15129 + roll $1,%eax | |
15130 + addl %esi,%ebp | |
15131 + rorl $2,%ecx | |
15132 + movl %ebx,%esi | |
15133 + roll $5,%esi | |
15134 + movl %eax,60(%esp) | |
15135 + leal 2400959708(%eax,%ebp,1),%eax | |
15136 + movl %edx,%ebp | |
15137 + addl %esi,%eax | |
15138 + andl %edi,%ebp | |
15139 + movl (%esp),%esi | |
15140 + addl %ebp,%eax | |
15141 + # 40_59 48 | |
15142 + movl %ecx,%ebp | |
15143 + xorl 8(%esp),%esi | |
15144 + xorl %edx,%ebp | |
15145 + xorl 32(%esp),%esi | |
15146 + andl %ebx,%ebp | |
15147 + xorl 52(%esp),%esi | |
15148 + roll $1,%esi | |
15149 + addl %edi,%ebp | |
15150 + rorl $2,%ebx | |
15151 + movl %eax,%edi | |
15152 + roll $5,%edi | |
15153 + movl %esi,(%esp) | |
15154 + leal 2400959708(%esi,%ebp,1),%esi | |
15155 + movl %ecx,%ebp | |
15156 + addl %edi,%esi | |
15157 + andl %edx,%ebp | |
15158 + movl 4(%esp),%edi | |
15159 + addl %ebp,%esi | |
15160 + # 40_59 49 | |
15161 + movl %ebx,%ebp | |
15162 + xorl 12(%esp),%edi | |
15163 + xorl %ecx,%ebp | |
15164 + xorl 36(%esp),%edi | |
15165 + andl %eax,%ebp | |
15166 + xorl 56(%esp),%edi | |
15167 + roll $1,%edi | |
15168 + addl %edx,%ebp | |
15169 + rorl $2,%eax | |
15170 + movl %esi,%edx | |
15171 + roll $5,%edx | |
15172 + movl %edi,4(%esp) | |
15173 + leal 2400959708(%edi,%ebp,1),%edi | |
15174 + movl %ebx,%ebp | |
15175 + addl %edx,%edi | |
15176 + andl %ecx,%ebp | |
15177 + movl 8(%esp),%edx | |
15178 + addl %ebp,%edi | |
15179 + # 40_59 50 | |
15180 + movl %eax,%ebp | |
15181 + xorl 16(%esp),%edx | |
15182 + xorl %ebx,%ebp | |
15183 + xorl 40(%esp),%edx | |
15184 + andl %esi,%ebp | |
15185 + xorl 60(%esp),%edx | |
15186 + roll $1,%edx | |
15187 + addl %ecx,%ebp | |
15188 + rorl $2,%esi | |
15189 + movl %edi,%ecx | |
15190 + roll $5,%ecx | |
15191 + movl %edx,8(%esp) | |
15192 + leal 2400959708(%edx,%ebp,1),%edx | |
15193 + movl %eax,%ebp | |
15194 + addl %ecx,%edx | |
15195 + andl %ebx,%ebp | |
15196 + movl 12(%esp),%ecx | |
15197 + addl %ebp,%edx | |
15198 + # 40_59 51 | |
15199 + movl %esi,%ebp | |
15200 + xorl 20(%esp),%ecx | |
15201 + xorl %eax,%ebp | |
15202 + xorl 44(%esp),%ecx | |
15203 + andl %edi,%ebp | |
15204 + xorl (%esp),%ecx | |
15205 + roll $1,%ecx | |
15206 + addl %ebx,%ebp | |
15207 + rorl $2,%edi | |
15208 + movl %edx,%ebx | |
15209 + roll $5,%ebx | |
15210 + movl %ecx,12(%esp) | |
15211 + leal 2400959708(%ecx,%ebp,1),%ecx | |
15212 + movl %esi,%ebp | |
15213 + addl %ebx,%ecx | |
15214 + andl %eax,%ebp | |
15215 + movl 16(%esp),%ebx | |
15216 + addl %ebp,%ecx | |
15217 + # 40_59 52 | |
15218 + movl %edi,%ebp | |
15219 + xorl 24(%esp),%ebx | |
15220 + xorl %esi,%ebp | |
15221 + xorl 48(%esp),%ebx | |
15222 + andl %edx,%ebp | |
15223 + xorl 4(%esp),%ebx | |
15224 + roll $1,%ebx | |
15225 + addl %eax,%ebp | |
15226 + rorl $2,%edx | |
15227 + movl %ecx,%eax | |
15228 + roll $5,%eax | |
15229 + movl %ebx,16(%esp) | |
15230 + leal 2400959708(%ebx,%ebp,1),%ebx | |
15231 + movl %edi,%ebp | |
15232 + addl %eax,%ebx | |
15233 + andl %esi,%ebp | |
15234 + movl 20(%esp),%eax | |
15235 + addl %ebp,%ebx | |
15236 + # 40_59 53 | |
15237 + movl %edx,%ebp | |
15238 + xorl 28(%esp),%eax | |
15239 + xorl %edi,%ebp | |
15240 + xorl 52(%esp),%eax | |
15241 + andl %ecx,%ebp | |
15242 + xorl 8(%esp),%eax | |
15243 + roll $1,%eax | |
15244 + addl %esi,%ebp | |
15245 + rorl $2,%ecx | |
15246 + movl %ebx,%esi | |
15247 + roll $5,%esi | |
15248 + movl %eax,20(%esp) | |
15249 + leal 2400959708(%eax,%ebp,1),%eax | |
15250 + movl %edx,%ebp | |
15251 + addl %esi,%eax | |
15252 + andl %edi,%ebp | |
15253 + movl 24(%esp),%esi | |
15254 + addl %ebp,%eax | |
15255 + # 40_59 54 | |
15256 + movl %ecx,%ebp | |
15257 + xorl 32(%esp),%esi | |
15258 + xorl %edx,%ebp | |
15259 + xorl 56(%esp),%esi | |
15260 + andl %ebx,%ebp | |
15261 + xorl 12(%esp),%esi | |
15262 + roll $1,%esi | |
15263 + addl %edi,%ebp | |
15264 + rorl $2,%ebx | |
15265 + movl %eax,%edi | |
15266 + roll $5,%edi | |
15267 + movl %esi,24(%esp) | |
15268 + leal 2400959708(%esi,%ebp,1),%esi | |
15269 + movl %ecx,%ebp | |
15270 + addl %edi,%esi | |
15271 + andl %edx,%ebp | |
15272 + movl 28(%esp),%edi | |
15273 + addl %ebp,%esi | |
15274 + # 40_59 55 | |
15275 + movl %ebx,%ebp | |
15276 + xorl 36(%esp),%edi | |
15277 + xorl %ecx,%ebp | |
15278 + xorl 60(%esp),%edi | |
15279 + andl %eax,%ebp | |
15280 + xorl 16(%esp),%edi | |
15281 + roll $1,%edi | |
15282 + addl %edx,%ebp | |
15283 + rorl $2,%eax | |
15284 + movl %esi,%edx | |
15285 + roll $5,%edx | |
15286 + movl %edi,28(%esp) | |
15287 + leal 2400959708(%edi,%ebp,1),%edi | |
15288 + movl %ebx,%ebp | |
15289 + addl %edx,%edi | |
15290 + andl %ecx,%ebp | |
15291 + movl 32(%esp),%edx | |
15292 + addl %ebp,%edi | |
15293 + # 40_59 56 | |
15294 + movl %eax,%ebp | |
15295 + xorl 40(%esp),%edx | |
15296 + xorl %ebx,%ebp | |
15297 + xorl (%esp),%edx | |
15298 + andl %esi,%ebp | |
15299 + xorl 20(%esp),%edx | |
15300 + roll $1,%edx | |
15301 + addl %ecx,%ebp | |
15302 + rorl $2,%esi | |
15303 + movl %edi,%ecx | |
15304 + roll $5,%ecx | |
15305 + movl %edx,32(%esp) | |
15306 + leal 2400959708(%edx,%ebp,1),%edx | |
15307 + movl %eax,%ebp | |
15308 + addl %ecx,%edx | |
15309 + andl %ebx,%ebp | |
15310 + movl 36(%esp),%ecx | |
15311 + addl %ebp,%edx | |
15312 + # 40_59 57 | |
15313 + movl %esi,%ebp | |
15314 + xorl 44(%esp),%ecx | |
15315 + xorl %eax,%ebp | |
15316 + xorl 4(%esp),%ecx | |
15317 + andl %edi,%ebp | |
15318 + xorl 24(%esp),%ecx | |
15319 + roll $1,%ecx | |
15320 + addl %ebx,%ebp | |
15321 + rorl $2,%edi | |
15322 + movl %edx,%ebx | |
15323 + roll $5,%ebx | |
15324 + movl %ecx,36(%esp) | |
15325 + leal 2400959708(%ecx,%ebp,1),%ecx | |
15326 + movl %esi,%ebp | |
15327 + addl %ebx,%ecx | |
15328 + andl %eax,%ebp | |
15329 + movl 40(%esp),%ebx | |
15330 + addl %ebp,%ecx | |
15331 + # 40_59 58 | |
15332 + movl %edi,%ebp | |
15333 + xorl 48(%esp),%ebx | |
15334 + xorl %esi,%ebp | |
15335 + xorl 8(%esp),%ebx | |
15336 + andl %edx,%ebp | |
15337 + xorl 28(%esp),%ebx | |
15338 + roll $1,%ebx | |
15339 + addl %eax,%ebp | |
15340 + rorl $2,%edx | |
15341 + movl %ecx,%eax | |
15342 + roll $5,%eax | |
15343 + movl %ebx,40(%esp) | |
15344 + leal 2400959708(%ebx,%ebp,1),%ebx | |
15345 + movl %edi,%ebp | |
15346 + addl %eax,%ebx | |
15347 + andl %esi,%ebp | |
15348 + movl 44(%esp),%eax | |
15349 + addl %ebp,%ebx | |
15350 + # 40_59 59 | |
15351 + movl %edx,%ebp | |
15352 + xorl 52(%esp),%eax | |
15353 + xorl %edi,%ebp | |
15354 + xorl 12(%esp),%eax | |
15355 + andl %ecx,%ebp | |
15356 + xorl 32(%esp),%eax | |
15357 + roll $1,%eax | |
15358 + addl %esi,%ebp | |
15359 + rorl $2,%ecx | |
15360 + movl %ebx,%esi | |
15361 + roll $5,%esi | |
15362 + movl %eax,44(%esp) | |
15363 + leal 2400959708(%eax,%ebp,1),%eax | |
15364 + movl %edx,%ebp | |
15365 + addl %esi,%eax | |
15366 + andl %edi,%ebp | |
15367 + movl 48(%esp),%esi | |
15368 + addl %ebp,%eax | |
15369 + # 20_39 60 | |
15370 + movl %ebx,%ebp | |
15371 + xorl 56(%esp),%esi | |
15372 + xorl %ecx,%ebp | |
15373 + xorl 16(%esp),%esi | |
15374 + xorl %edx,%ebp | |
15375 + xorl 36(%esp),%esi | |
15376 + roll $1,%esi | |
15377 + addl %ebp,%edi | |
15378 + rorl $2,%ebx | |
15379 + movl %eax,%ebp | |
15380 + roll $5,%ebp | |
15381 + movl %esi,48(%esp) | |
15382 + leal 3395469782(%esi,%edi,1),%esi | |
15383 + movl 52(%esp),%edi | |
15384 + addl %ebp,%esi | |
15385 + # 20_39 61 | |
15386 + movl %eax,%ebp | |
15387 + xorl 60(%esp),%edi | |
15388 + xorl %ebx,%ebp | |
15389 + xorl 20(%esp),%edi | |
15390 + xorl %ecx,%ebp | |
15391 + xorl 40(%esp),%edi | |
15392 + roll $1,%edi | |
15393 + addl %ebp,%edx | |
15394 + rorl $2,%eax | |
15395 + movl %esi,%ebp | |
15396 + roll $5,%ebp | |
15397 + movl %edi,52(%esp) | |
15398 + leal 3395469782(%edi,%edx,1),%edi | |
15399 + movl 56(%esp),%edx | |
15400 + addl %ebp,%edi | |
15401 + # 20_39 62 | |
15402 + movl %esi,%ebp | |
15403 + xorl (%esp),%edx | |
15404 + xorl %eax,%ebp | |
15405 + xorl 24(%esp),%edx | |
15406 + xorl %ebx,%ebp | |
15407 + xorl 44(%esp),%edx | |
15408 + roll $1,%edx | |
15409 + addl %ebp,%ecx | |
15410 + rorl $2,%esi | |
15411 + movl %edi,%ebp | |
15412 + roll $5,%ebp | |
15413 + movl %edx,56(%esp) | |
15414 + leal 3395469782(%edx,%ecx,1),%edx | |
15415 + movl 60(%esp),%ecx | |
15416 + addl %ebp,%edx | |
15417 + # 20_39 63 | |
15418 + movl %edi,%ebp | |
15419 + xorl 4(%esp),%ecx | |
15420 + xorl %esi,%ebp | |
15421 + xorl 28(%esp),%ecx | |
15422 + xorl %eax,%ebp | |
15423 + xorl 48(%esp),%ecx | |
15424 + roll $1,%ecx | |
15425 + addl %ebp,%ebx | |
15426 + rorl $2,%edi | |
15427 + movl %edx,%ebp | |
15428 + roll $5,%ebp | |
15429 + movl %ecx,60(%esp) | |
15430 + leal 3395469782(%ecx,%ebx,1),%ecx | |
15431 + movl (%esp),%ebx | |
15432 + addl %ebp,%ecx | |
15433 + # 20_39 64 | |
15434 + movl %edx,%ebp | |
15435 + xorl 8(%esp),%ebx | |
15436 + xorl %edi,%ebp | |
15437 + xorl 32(%esp),%ebx | |
15438 + xorl %esi,%ebp | |
15439 + xorl 52(%esp),%ebx | |
15440 + roll $1,%ebx | |
15441 + addl %ebp,%eax | |
15442 + rorl $2,%edx | |
15443 + movl %ecx,%ebp | |
15444 + roll $5,%ebp | |
15445 + movl %ebx,(%esp) | |
15446 + leal 3395469782(%ebx,%eax,1),%ebx | |
15447 + movl 4(%esp),%eax | |
15448 + addl %ebp,%ebx | |
15449 + # 20_39 65 | |
15450 + movl %ecx,%ebp | |
15451 + xorl 12(%esp),%eax | |
15452 + xorl %edx,%ebp | |
15453 + xorl 36(%esp),%eax | |
15454 + xorl %edi,%ebp | |
15455 + xorl 56(%esp),%eax | |
15456 + roll $1,%eax | |
15457 + addl %ebp,%esi | |
15458 + rorl $2,%ecx | |
15459 + movl %ebx,%ebp | |
15460 + roll $5,%ebp | |
15461 + movl %eax,4(%esp) | |
15462 + leal 3395469782(%eax,%esi,1),%eax | |
15463 + movl 8(%esp),%esi | |
15464 + addl %ebp,%eax | |
15465 + # 20_39 66 | |
15466 + movl %ebx,%ebp | |
15467 + xorl 16(%esp),%esi | |
15468 + xorl %ecx,%ebp | |
15469 + xorl 40(%esp),%esi | |
15470 + xorl %edx,%ebp | |
15471 + xorl 60(%esp),%esi | |
15472 + roll $1,%esi | |
15473 + addl %ebp,%edi | |
15474 + rorl $2,%ebx | |
15475 + movl %eax,%ebp | |
15476 + roll $5,%ebp | |
15477 + movl %esi,8(%esp) | |
15478 + leal 3395469782(%esi,%edi,1),%esi | |
15479 + movl 12(%esp),%edi | |
15480 + addl %ebp,%esi | |
15481 + # 20_39 67 | |
15482 + movl %eax,%ebp | |
15483 + xorl 20(%esp),%edi | |
15484 + xorl %ebx,%ebp | |
15485 + xorl 44(%esp),%edi | |
15486 + xorl %ecx,%ebp | |
15487 + xorl (%esp),%edi | |
15488 + roll $1,%edi | |
15489 + addl %ebp,%edx | |
15490 + rorl $2,%eax | |
15491 + movl %esi,%ebp | |
15492 + roll $5,%ebp | |
15493 + movl %edi,12(%esp) | |
15494 + leal 3395469782(%edi,%edx,1),%edi | |
15495 + movl 16(%esp),%edx | |
15496 + addl %ebp,%edi | |
15497 + # 20_39 68 | |
15498 + movl %esi,%ebp | |
15499 + xorl 24(%esp),%edx | |
15500 + xorl %eax,%ebp | |
15501 + xorl 48(%esp),%edx | |
15502 + xorl %ebx,%ebp | |
15503 + xorl 4(%esp),%edx | |
15504 + roll $1,%edx | |
15505 + addl %ebp,%ecx | |
15506 + rorl $2,%esi | |
15507 + movl %edi,%ebp | |
15508 + roll $5,%ebp | |
15509 + movl %edx,16(%esp) | |
15510 + leal 3395469782(%edx,%ecx,1),%edx | |
15511 + movl 20(%esp),%ecx | |
15512 + addl %ebp,%edx | |
15513 + # 20_39 69 | |
15514 + movl %edi,%ebp | |
15515 + xorl 28(%esp),%ecx | |
15516 + xorl %esi,%ebp | |
15517 + xorl 52(%esp),%ecx | |
15518 + xorl %eax,%ebp | |
15519 + xorl 8(%esp),%ecx | |
15520 + roll $1,%ecx | |
15521 + addl %ebp,%ebx | |
15522 + rorl $2,%edi | |
15523 + movl %edx,%ebp | |
15524 + roll $5,%ebp | |
15525 + movl %ecx,20(%esp) | |
15526 + leal 3395469782(%ecx,%ebx,1),%ecx | |
15527 + movl 24(%esp),%ebx | |
15528 + addl %ebp,%ecx | |
15529 + # 20_39 70 | |
15530 + movl %edx,%ebp | |
15531 + xorl 32(%esp),%ebx | |
15532 + xorl %edi,%ebp | |
15533 + xorl 56(%esp),%ebx | |
15534 + xorl %esi,%ebp | |
15535 + xorl 12(%esp),%ebx | |
15536 + roll $1,%ebx | |
15537 + addl %ebp,%eax | |
15538 + rorl $2,%edx | |
15539 + movl %ecx,%ebp | |
15540 + roll $5,%ebp | |
15541 + movl %ebx,24(%esp) | |
15542 + leal 3395469782(%ebx,%eax,1),%ebx | |
15543 + movl 28(%esp),%eax | |
15544 + addl %ebp,%ebx | |
15545 + # 20_39 71 | |
15546 + movl %ecx,%ebp | |
15547 + xorl 36(%esp),%eax | |
15548 + xorl %edx,%ebp | |
15549 + xorl 60(%esp),%eax | |
15550 + xorl %edi,%ebp | |
15551 + xorl 16(%esp),%eax | |
15552 + roll $1,%eax | |
15553 + addl %ebp,%esi | |
15554 + rorl $2,%ecx | |
15555 + movl %ebx,%ebp | |
15556 + roll $5,%ebp | |
15557 + movl %eax,28(%esp) | |
15558 + leal 3395469782(%eax,%esi,1),%eax | |
15559 + movl 32(%esp),%esi | |
15560 + addl %ebp,%eax | |
15561 + # 20_39 72 | |
15562 + movl %ebx,%ebp | |
15563 + xorl 40(%esp),%esi | |
15564 + xorl %ecx,%ebp | |
15565 + xorl (%esp),%esi | |
15566 + xorl %edx,%ebp | |
15567 + xorl 20(%esp),%esi | |
15568 + roll $1,%esi | |
15569 + addl %ebp,%edi | |
15570 + rorl $2,%ebx | |
15571 + movl %eax,%ebp | |
15572 + roll $5,%ebp | |
15573 + movl %esi,32(%esp) | |
15574 + leal 3395469782(%esi,%edi,1),%esi | |
15575 + movl 36(%esp),%edi | |
15576 + addl %ebp,%esi | |
15577 + # 20_39 73 | |
15578 + movl %eax,%ebp | |
15579 + xorl 44(%esp),%edi | |
15580 + xorl %ebx,%ebp | |
15581 + xorl 4(%esp),%edi | |
15582 + xorl %ecx,%ebp | |
15583 + xorl 24(%esp),%edi | |
15584 + roll $1,%edi | |
15585 + addl %ebp,%edx | |
15586 + rorl $2,%eax | |
15587 + movl %esi,%ebp | |
15588 + roll $5,%ebp | |
15589 + movl %edi,36(%esp) | |
15590 + leal 3395469782(%edi,%edx,1),%edi | |
15591 + movl 40(%esp),%edx | |
15592 + addl %ebp,%edi | |
15593 + # 20_39 74 | |
15594 + movl %esi,%ebp | |
15595 + xorl 48(%esp),%edx | |
15596 + xorl %eax,%ebp | |
15597 + xorl 8(%esp),%edx | |
15598 + xorl %ebx,%ebp | |
15599 + xorl 28(%esp),%edx | |
15600 + roll $1,%edx | |
15601 + addl %ebp,%ecx | |
15602 + rorl $2,%esi | |
15603 + movl %edi,%ebp | |
15604 + roll $5,%ebp | |
15605 + movl %edx,40(%esp) | |
15606 + leal 3395469782(%edx,%ecx,1),%edx | |
15607 + movl 44(%esp),%ecx | |
15608 + addl %ebp,%edx | |
15609 + # 20_39 75 | |
15610 + movl %edi,%ebp | |
15611 + xorl 52(%esp),%ecx | |
15612 + xorl %esi,%ebp | |
15613 + xorl 12(%esp),%ecx | |
15614 + xorl %eax,%ebp | |
15615 + xorl 32(%esp),%ecx | |
15616 + roll $1,%ecx | |
15617 + addl %ebp,%ebx | |
15618 + rorl $2,%edi | |
15619 + movl %edx,%ebp | |
15620 + roll $5,%ebp | |
15621 + movl %ecx,44(%esp) | |
15622 + leal 3395469782(%ecx,%ebx,1),%ecx | |
15623 + movl 48(%esp),%ebx | |
15624 + addl %ebp,%ecx | |
15625 + # 20_39 76 | |
15626 + movl %edx,%ebp | |
15627 + xorl 56(%esp),%ebx | |
15628 + xorl %edi,%ebp | |
15629 + xorl 16(%esp),%ebx | |
15630 + xorl %esi,%ebp | |
15631 + xorl 36(%esp),%ebx | |
15632 + roll $1,%ebx | |
15633 + addl %ebp,%eax | |
15634 + rorl $2,%edx | |
15635 + movl %ecx,%ebp | |
15636 + roll $5,%ebp | |
15637 + movl %ebx,48(%esp) | |
15638 + leal 3395469782(%ebx,%eax,1),%ebx | |
15639 + movl 52(%esp),%eax | |
15640 + addl %ebp,%ebx | |
15641 + # 20_39 77 | |
15642 + movl %ecx,%ebp | |
15643 + xorl 60(%esp),%eax | |
15644 + xorl %edx,%ebp | |
15645 + xorl 20(%esp),%eax | |
15646 + xorl %edi,%ebp | |
15647 + xorl 40(%esp),%eax | |
15648 + roll $1,%eax | |
15649 + addl %ebp,%esi | |
15650 + rorl $2,%ecx | |
15651 + movl %ebx,%ebp | |
15652 + roll $5,%ebp | |
15653 + leal 3395469782(%eax,%esi,1),%eax | |
15654 + movl 56(%esp),%esi | |
15655 + addl %ebp,%eax | |
15656 + # 20_39 78 | |
15657 + movl %ebx,%ebp | |
15658 + xorl (%esp),%esi | |
15659 + xorl %ecx,%ebp | |
15660 + xorl 24(%esp),%esi | |
15661 + xorl %edx,%ebp | |
15662 + xorl 44(%esp),%esi | |
15663 + roll $1,%esi | |
15664 + addl %ebp,%edi | |
15665 + rorl $2,%ebx | |
15666 + movl %eax,%ebp | |
15667 + roll $5,%ebp | |
15668 + leal 3395469782(%esi,%edi,1),%esi | |
15669 + movl 60(%esp),%edi | |
15670 + addl %ebp,%esi | |
15671 + # 20_39 79 | |
15672 + movl %eax,%ebp | |
15673 + xorl 4(%esp),%edi | |
15674 + xorl %ebx,%ebp | |
15675 + xorl 28(%esp),%edi | |
15676 + xorl %ecx,%ebp | |
15677 + xorl 48(%esp),%edi | |
15678 + roll $1,%edi | |
15679 + addl %ebp,%edx | |
15680 + rorl $2,%eax | |
15681 + movl %esi,%ebp | |
15682 + roll $5,%ebp | |
15683 + leal 3395469782(%edi,%edx,1),%edi | |
15684 + addl %ebp,%edi | |
15685 + movl 96(%esp),%ebp | |
15686 + movl 100(%esp),%edx | |
15687 + addl (%ebp),%edi | |
15688 + addl 4(%ebp),%esi | |
15689 + addl 8(%ebp),%eax | |
15690 + addl 12(%ebp),%ebx | |
15691 + addl 16(%ebp),%ecx | |
15692 + movl %edi,(%ebp) | |
15693 + addl $64,%edx | |
15694 + movl %esi,4(%ebp) | |
15695 + cmpl 104(%esp),%edx | |
15696 + movl %eax,8(%ebp) | |
15697 + movl %ecx,%edi | |
15698 + movl %ebx,12(%ebp) | |
15699 + movl %edx,%esi | |
15700 + movl %ecx,16(%ebp) | |
15701 + jb L000loop | |
15702 + addl $76,%esp | |
15703 + popl %edi | |
15704 + popl %esi | |
15705 + popl %ebx | |
15706 + popl %ebp | |
15707 + ret | |
15708 +.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 | |
15709 +.byte 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 | |
15710 +.byte 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 | |
15711 +.byte 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 | |
15712 diff --git a/crypto/sha/asm/sha256-586-mac.S b/crypto/sha/asm/sha256-586-mac.S | |
15713 new file mode 100644 | |
15714 index 0000000..67c7a96 | |
15715 --- /dev/null | |
15716 +++ b/crypto/sha/asm/sha256-586-mac.S | |
15717 @@ -0,0 +1,256 @@ | |
15718 +.file "sha512-586.s" | |
15719 +.text | |
15720 +.globl _sha256_block_data_order | |
15721 +.align 4 | |
15722 +_sha256_block_data_order: | |
15723 +L_sha256_block_data_order_begin: | |
15724 + pushl %ebp | |
15725 + pushl %ebx | |
15726 + pushl %esi | |
15727 + pushl %edi | |
15728 + movl 20(%esp),%esi | |
15729 + movl 24(%esp),%edi | |
15730 + movl 28(%esp),%eax | |
15731 + movl %esp,%ebx | |
15732 + call L000pic_point | |
15733 +L000pic_point: | |
15734 + popl %ebp | |
15735 + leal L001K256-L000pic_point(%ebp),%ebp | |
15736 + subl $16,%esp | |
15737 + andl $-64,%esp | |
15738 + shll $6,%eax | |
15739 + addl %edi,%eax | |
15740 + movl %esi,(%esp) | |
15741 + movl %edi,4(%esp) | |
15742 + movl %eax,8(%esp) | |
15743 + movl %ebx,12(%esp) | |
15744 +.align 4,0x90 | |
15745 +L002loop: | |
15746 + movl (%edi),%eax | |
15747 + movl 4(%edi),%ebx | |
15748 + movl 8(%edi),%ecx | |
15749 + movl 12(%edi),%edx | |
15750 + bswap %eax | |
15751 + bswap %ebx | |
15752 + bswap %ecx | |
15753 + bswap %edx | |
15754 + pushl %eax | |
15755 + pushl %ebx | |
15756 + pushl %ecx | |
15757 + pushl %edx | |
15758 + movl 16(%edi),%eax | |
15759 + movl 20(%edi),%ebx | |
15760 + movl 24(%edi),%ecx | |
15761 + movl 28(%edi),%edx | |
15762 + bswap %eax | |
15763 + bswap %ebx | |
15764 + bswap %ecx | |
15765 + bswap %edx | |
15766 + pushl %eax | |
15767 + pushl %ebx | |
15768 + pushl %ecx | |
15769 + pushl %edx | |
15770 + movl 32(%edi),%eax | |
15771 + movl 36(%edi),%ebx | |
15772 + movl 40(%edi),%ecx | |
15773 + movl 44(%edi),%edx | |
15774 + bswap %eax | |
15775 + bswap %ebx | |
15776 + bswap %ecx | |
15777 + bswap %edx | |
15778 + pushl %eax | |
15779 + pushl %ebx | |
15780 + pushl %ecx | |
15781 + pushl %edx | |
15782 + movl 48(%edi),%eax | |
15783 + movl 52(%edi),%ebx | |
15784 + movl 56(%edi),%ecx | |
15785 + movl 60(%edi),%edx | |
15786 + bswap %eax | |
15787 + bswap %ebx | |
15788 + bswap %ecx | |
15789 + bswap %edx | |
15790 + pushl %eax | |
15791 + pushl %ebx | |
15792 + pushl %ecx | |
15793 + pushl %edx | |
15794 + addl $64,%edi | |
15795 + subl $32,%esp | |
15796 + movl %edi,100(%esp) | |
15797 + movl (%esi),%eax | |
15798 + movl 4(%esi),%ebx | |
15799 + movl 8(%esi),%ecx | |
15800 + movl 12(%esi),%edi | |
15801 + movl %ebx,4(%esp) | |
15802 + movl %ecx,8(%esp) | |
15803 + movl %edi,12(%esp) | |
15804 + movl 16(%esi),%edx | |
15805 + movl 20(%esi),%ebx | |
15806 + movl 24(%esi),%ecx | |
15807 + movl 28(%esi),%edi | |
15808 + movl %ebx,20(%esp) | |
15809 + movl %ecx,24(%esp) | |
15810 + movl %edi,28(%esp) | |
15811 +.align 4,0x90 | |
15812 +L00300_15: | |
15813 + movl 92(%esp),%ebx | |
15814 + movl %edx,%ecx | |
15815 + rorl $14,%ecx | |
15816 + movl 20(%esp),%esi | |
15817 + xorl %edx,%ecx | |
15818 + rorl $5,%ecx | |
15819 + xorl %edx,%ecx | |
15820 + rorl $6,%ecx | |
15821 + movl 24(%esp),%edi | |
15822 + addl %ecx,%ebx | |
15823 + xorl %edi,%esi | |
15824 + movl %edx,16(%esp) | |
15825 + movl %eax,%ecx | |
15826 + andl %edx,%esi | |
15827 + movl 12(%esp),%edx | |
15828 + xorl %edi,%esi | |
15829 + movl %eax,%edi | |
15830 + addl %esi,%ebx | |
15831 + rorl $9,%ecx | |
15832 + addl 28(%esp),%ebx | |
15833 + xorl %eax,%ecx | |
15834 + rorl $11,%ecx | |
15835 + movl 4(%esp),%esi | |
15836 + xorl %eax,%ecx | |
15837 + rorl $2,%ecx | |
15838 + addl %ebx,%edx | |
15839 + movl 8(%esp),%edi | |
15840 + addl %ecx,%ebx | |
15841 + movl %eax,(%esp) | |
15842 + movl %eax,%ecx | |
15843 + subl $4,%esp | |
15844 + orl %esi,%eax | |
15845 + andl %esi,%ecx | |
15846 + andl %edi,%eax | |
15847 + movl (%ebp),%esi | |
15848 + orl %ecx,%eax | |
15849 + addl $4,%ebp | |
15850 + addl %ebx,%eax | |
15851 + addl %esi,%edx | |
15852 + addl %esi,%eax | |
15853 + cmpl $3248222580,%esi | |
15854 + jne L00300_15 | |
15855 + movl 152(%esp),%ebx | |
15856 +.align 4,0x90 | |
15857 +L00416_63: | |
15858 + movl %ebx,%esi | |
15859 + movl 100(%esp),%ecx | |
15860 + rorl $11,%esi | |
15861 + movl %ecx,%edi | |
15862 + xorl %ebx,%esi | |
15863 + rorl $7,%esi | |
15864 + shrl $3,%ebx | |
15865 + rorl $2,%edi | |
15866 + xorl %esi,%ebx | |
15867 + xorl %ecx,%edi | |
15868 + rorl $17,%edi | |
15869 + shrl $10,%ecx | |
15870 + addl 156(%esp),%ebx | |
15871 + xorl %ecx,%edi | |
15872 + addl 120(%esp),%ebx | |
15873 + movl %edx,%ecx | |
15874 + addl %edi,%ebx | |
15875 + rorl $14,%ecx | |
15876 + movl 20(%esp),%esi | |
15877 + xorl %edx,%ecx | |
15878 + rorl $5,%ecx | |
15879 + movl %ebx,92(%esp) | |
15880 + xorl %edx,%ecx | |
15881 + rorl $6,%ecx | |
15882 + movl 24(%esp),%edi | |
15883 + addl %ecx,%ebx | |
15884 + xorl %edi,%esi | |
15885 + movl %edx,16(%esp) | |
15886 + movl %eax,%ecx | |
15887 + andl %edx,%esi | |
15888 + movl 12(%esp),%edx | |
15889 + xorl %edi,%esi | |
15890 + movl %eax,%edi | |
15891 + addl %esi,%ebx | |
15892 + rorl $9,%ecx | |
15893 + addl 28(%esp),%ebx | |
15894 + xorl %eax,%ecx | |
15895 + rorl $11,%ecx | |
15896 + movl 4(%esp),%esi | |
15897 + xorl %eax,%ecx | |
15898 + rorl $2,%ecx | |
15899 + addl %ebx,%edx | |
15900 + movl 8(%esp),%edi | |
15901 + addl %ecx,%ebx | |
15902 + movl %eax,(%esp) | |
15903 + movl %eax,%ecx | |
15904 + subl $4,%esp | |
15905 + orl %esi,%eax | |
15906 + andl %esi,%ecx | |
15907 + andl %edi,%eax | |
15908 + movl (%ebp),%esi | |
15909 + orl %ecx,%eax | |
15910 + addl $4,%ebp | |
15911 + addl %ebx,%eax | |
15912 + movl 152(%esp),%ebx | |
15913 + addl %esi,%edx | |
15914 + addl %esi,%eax | |
15915 + cmpl $3329325298,%esi | |
15916 + jne L00416_63 | |
15917 + movl 352(%esp),%esi | |
15918 + movl 4(%esp),%ebx | |
15919 + movl 8(%esp),%ecx | |
15920 + movl 12(%esp),%edi | |
15921 + addl (%esi),%eax | |
15922 + addl 4(%esi),%ebx | |
15923 + addl 8(%esi),%ecx | |
15924 + addl 12(%esi),%edi | |
15925 + movl %eax,(%esi) | |
15926 + movl %ebx,4(%esi) | |
15927 + movl %ecx,8(%esi) | |
15928 + movl %edi,12(%esi) | |
15929 + movl 20(%esp),%eax | |
15930 + movl 24(%esp),%ebx | |
15931 + movl 28(%esp),%ecx | |
15932 + movl 356(%esp),%edi | |
15933 + addl 16(%esi),%edx | |
15934 + addl 20(%esi),%eax | |
15935 + addl 24(%esi),%ebx | |
15936 + addl 28(%esi),%ecx | |
15937 + movl %edx,16(%esi) | |
15938 + movl %eax,20(%esi) | |
15939 + movl %ebx,24(%esi) | |
15940 + movl %ecx,28(%esi) | |
15941 + addl $352,%esp | |
15942 + subl $256,%ebp | |
15943 + cmpl 8(%esp),%edi | |
15944 + jb L002loop | |
15945 + movl 12(%esp),%esp | |
15946 + popl %edi | |
15947 + popl %esi | |
15948 + popl %ebx | |
15949 + popl %ebp | |
15950 + ret | |
15951 +.align 6,0x90 | |
15952 +L001K256: | |
15953 +.long 1116352408,1899447441,3049323471,3921009573 | |
15954 +.long 961987163,1508970993,2453635748,2870763221 | |
15955 +.long 3624381080,310598401,607225278,1426881987 | |
15956 +.long 1925078388,2162078206,2614888103,3248222580 | |
15957 +.long 3835390401,4022224774,264347078,604807628 | |
15958 +.long 770255983,1249150122,1555081692,1996064986 | |
15959 +.long 2554220882,2821834349,2952996808,3210313671 | |
15960 +.long 3336571891,3584528711,113926993,338241895 | |
15961 +.long 666307205,773529912,1294757372,1396182291 | |
15962 +.long 1695183700,1986661051,2177026350,2456956037 | |
15963 +.long 2730485921,2820302411,3259730800,3345764771 | |
15964 +.long 3516065817,3600352804,4094571909,275423344 | |
15965 +.long 430227734,506948616,659060556,883997877 | |
15966 +.long 958139571,1322822218,1537002063,1747873779 | |
15967 +.long 1955562222,2024104815,2227730452,2361852424 | |
15968 +.long 2428436474,2756734187,3204031479,3329325298 | |
15969 +.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 | |
15970 +.byte 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 | |
15971 +.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 | |
15972 +.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 | |
15973 +.byte 62,0 | |
15974 diff --git a/crypto/sha/asm/sha512-586-mac.S b/crypto/sha/asm/sha512-586-mac.S | |
15975 new file mode 100644 | |
15976 index 0000000..2c99753 | |
15977 --- /dev/null | |
15978 +++ b/crypto/sha/asm/sha512-586-mac.S | |
15979 @@ -0,0 +1,561 @@ | |
15980 +.file "sha512-586.s" | |
15981 +.text | |
15982 +.globl _sha512_block_data_order | |
15983 +.align 4 | |
15984 +_sha512_block_data_order: | |
15985 +L_sha512_block_data_order_begin: | |
15986 + pushl %ebp | |
15987 + pushl %ebx | |
15988 + pushl %esi | |
15989 + pushl %edi | |
15990 + movl 20(%esp),%esi | |
15991 + movl 24(%esp),%edi | |
15992 + movl 28(%esp),%eax | |
15993 + movl %esp,%ebx | |
15994 + call L000pic_point | |
15995 +L000pic_point: | |
15996 + popl %ebp | |
15997 + leal L001K512-L000pic_point(%ebp),%ebp | |
15998 + subl $16,%esp | |
15999 + andl $-64,%esp | |
16000 + shll $7,%eax | |
16001 + addl %edi,%eax | |
16002 + movl %esi,(%esp) | |
16003 + movl %edi,4(%esp) | |
16004 + movl %eax,8(%esp) | |
16005 + movl %ebx,12(%esp) | |
16006 +.align 4,0x90 | |
16007 +L002loop_x86: | |
16008 + movl (%edi),%eax | |
16009 + movl 4(%edi),%ebx | |
16010 + movl 8(%edi),%ecx | |
16011 + movl 12(%edi),%edx | |
16012 + bswap %eax | |
16013 + bswap %ebx | |
16014 + bswap %ecx | |
16015 + bswap %edx | |
16016 + pushl %eax | |
16017 + pushl %ebx | |
16018 + pushl %ecx | |
16019 + pushl %edx | |
16020 + movl 16(%edi),%eax | |
16021 + movl 20(%edi),%ebx | |
16022 + movl 24(%edi),%ecx | |
16023 + movl 28(%edi),%edx | |
16024 + bswap %eax | |
16025 + bswap %ebx | |
16026 + bswap %ecx | |
16027 + bswap %edx | |
16028 + pushl %eax | |
16029 + pushl %ebx | |
16030 + pushl %ecx | |
16031 + pushl %edx | |
16032 + movl 32(%edi),%eax | |
16033 + movl 36(%edi),%ebx | |
16034 + movl 40(%edi),%ecx | |
16035 + movl 44(%edi),%edx | |
16036 + bswap %eax | |
16037 + bswap %ebx | |
16038 + bswap %ecx | |
16039 + bswap %edx | |
16040 + pushl %eax | |
16041 + pushl %ebx | |
16042 + pushl %ecx | |
16043 + pushl %edx | |
16044 + movl 48(%edi),%eax | |
16045 + movl 52(%edi),%ebx | |
16046 + movl 56(%edi),%ecx | |
16047 + movl 60(%edi),%edx | |
16048 + bswap %eax | |
16049 + bswap %ebx | |
16050 + bswap %ecx | |
16051 + bswap %edx | |
16052 + pushl %eax | |
16053 + pushl %ebx | |
16054 + pushl %ecx | |
16055 + pushl %edx | |
16056 + movl 64(%edi),%eax | |
16057 + movl 68(%edi),%ebx | |
16058 + movl 72(%edi),%ecx | |
16059 + movl 76(%edi),%edx | |
16060 + bswap %eax | |
16061 + bswap %ebx | |
16062 + bswap %ecx | |
16063 + bswap %edx | |
16064 + pushl %eax | |
16065 + pushl %ebx | |
16066 + pushl %ecx | |
16067 + pushl %edx | |
16068 + movl 80(%edi),%eax | |
16069 + movl 84(%edi),%ebx | |
16070 + movl 88(%edi),%ecx | |
16071 + movl 92(%edi),%edx | |
16072 + bswap %eax | |
16073 + bswap %ebx | |
16074 + bswap %ecx | |
16075 + bswap %edx | |
16076 + pushl %eax | |
16077 + pushl %ebx | |
16078 + pushl %ecx | |
16079 + pushl %edx | |
16080 + movl 96(%edi),%eax | |
16081 + movl 100(%edi),%ebx | |
16082 + movl 104(%edi),%ecx | |
16083 + movl 108(%edi),%edx | |
16084 + bswap %eax | |
16085 + bswap %ebx | |
16086 + bswap %ecx | |
16087 + bswap %edx | |
16088 + pushl %eax | |
16089 + pushl %ebx | |
16090 + pushl %ecx | |
16091 + pushl %edx | |
16092 + movl 112(%edi),%eax | |
16093 + movl 116(%edi),%ebx | |
16094 + movl 120(%edi),%ecx | |
16095 + movl 124(%edi),%edx | |
16096 + bswap %eax | |
16097 + bswap %ebx | |
16098 + bswap %ecx | |
16099 + bswap %edx | |
16100 + pushl %eax | |
16101 + pushl %ebx | |
16102 + pushl %ecx | |
16103 + pushl %edx | |
16104 + addl $128,%edi | |
16105 + subl $72,%esp | |
16106 + movl %edi,204(%esp) | |
16107 + leal 8(%esp),%edi | |
16108 + movl $16,%ecx | |
16109 +.long 2784229001 | |
16110 +.align 4,0x90 | |
16111 +L00300_15_x86: | |
16112 + movl 40(%esp),%ecx | |
16113 + movl 44(%esp),%edx | |
16114 + movl %ecx,%esi | |
16115 + shrl $9,%ecx | |
16116 + movl %edx,%edi | |
16117 + shrl $9,%edx | |
16118 + movl %ecx,%ebx | |
16119 + shll $14,%esi | |
16120 + movl %edx,%eax | |
16121 + shll $14,%edi | |
16122 + xorl %esi,%ebx | |
16123 + shrl $5,%ecx | |
16124 + xorl %edi,%eax | |
16125 + shrl $5,%edx | |
16126 + xorl %ecx,%eax | |
16127 + shll $4,%esi | |
16128 + xorl %edx,%ebx | |
16129 + shll $4,%edi | |
16130 + xorl %esi,%ebx | |
16131 + shrl $4,%ecx | |
16132 + xorl %edi,%eax | |
16133 + shrl $4,%edx | |
16134 + xorl %ecx,%eax | |
16135 + shll $5,%esi | |
16136 + xorl %edx,%ebx | |
16137 + shll $5,%edi | |
16138 + xorl %esi,%eax | |
16139 + xorl %edi,%ebx | |
16140 + movl 48(%esp),%ecx | |
16141 + movl 52(%esp),%edx | |
16142 + movl 56(%esp),%esi | |
16143 + movl 60(%esp),%edi | |
16144 + addl 64(%esp),%eax | |
16145 + adcl 68(%esp),%ebx | |
16146 + xorl %esi,%ecx | |
16147 + xorl %edi,%edx | |
16148 + andl 40(%esp),%ecx | |
16149 + andl 44(%esp),%edx | |
16150 + addl 192(%esp),%eax | |
16151 + adcl 196(%esp),%ebx | |
16152 + xorl %esi,%ecx | |
16153 + xorl %edi,%edx | |
16154 + movl (%ebp),%esi | |
16155 + movl 4(%ebp),%edi | |
16156 + addl %ecx,%eax | |
16157 + adcl %edx,%ebx | |
16158 + movl 32(%esp),%ecx | |
16159 + movl 36(%esp),%edx | |
16160 + addl %esi,%eax | |
16161 + adcl %edi,%ebx | |
16162 + movl %eax,(%esp) | |
16163 + movl %ebx,4(%esp) | |
16164 + addl %ecx,%eax | |
16165 + adcl %edx,%ebx | |
16166 + movl 8(%esp),%ecx | |
16167 + movl 12(%esp),%edx | |
16168 + movl %eax,32(%esp) | |
16169 + movl %ebx,36(%esp) | |
16170 + movl %ecx,%esi | |
16171 + shrl $2,%ecx | |
16172 + movl %edx,%edi | |
16173 + shrl $2,%edx | |
16174 + movl %ecx,%ebx | |
16175 + shll $4,%esi | |
16176 + movl %edx,%eax | |
16177 + shll $4,%edi | |
16178 + xorl %esi,%ebx | |
16179 + shrl $5,%ecx | |
16180 + xorl %edi,%eax | |
16181 + shrl $5,%edx | |
16182 + xorl %ecx,%ebx | |
16183 + shll $21,%esi | |
16184 + xorl %edx,%eax | |
16185 + shll $21,%edi | |
16186 + xorl %esi,%eax | |
16187 + shrl $21,%ecx | |
16188 + xorl %edi,%ebx | |
16189 + shrl $21,%edx | |
16190 + xorl %ecx,%eax | |
16191 + shll $5,%esi | |
16192 + xorl %edx,%ebx | |
16193 + shll $5,%edi | |
16194 + xorl %esi,%eax | |
16195 + xorl %edi,%ebx | |
16196 + movl 8(%esp),%ecx | |
16197 + movl 12(%esp),%edx | |
16198 + movl 16(%esp),%esi | |
16199 + movl 20(%esp),%edi | |
16200 + addl (%esp),%eax | |
16201 + adcl 4(%esp),%ebx | |
16202 + orl %esi,%ecx | |
16203 + orl %edi,%edx | |
16204 + andl 24(%esp),%ecx | |
16205 + andl 28(%esp),%edx | |
16206 + andl 8(%esp),%esi | |
16207 + andl 12(%esp),%edi | |
16208 + orl %esi,%ecx | |
16209 + orl %edi,%edx | |
16210 + addl %ecx,%eax | |
16211 + adcl %edx,%ebx | |
16212 + movl %eax,(%esp) | |
16213 + movl %ebx,4(%esp) | |
16214 + movb (%ebp),%dl | |
16215 + subl $8,%esp | |
16216 + leal 8(%ebp),%ebp | |
16217 + cmpb $148,%dl | |
16218 + jne L00300_15_x86 | |
16219 +.align 4,0x90 | |
16220 +L00416_79_x86: | |
16221 + movl 312(%esp),%ecx | |
16222 + movl 316(%esp),%edx | |
16223 + movl %ecx,%esi | |
16224 + shrl $1,%ecx | |
16225 + movl %edx,%edi | |
16226 + shrl $1,%edx | |
16227 + movl %ecx,%eax | |
16228 + shll $24,%esi | |
16229 + movl %edx,%ebx | |
16230 + shll $24,%edi | |
16231 + xorl %esi,%ebx | |
16232 + shrl $6,%ecx | |
16233 + xorl %edi,%eax | |
16234 + shrl $6,%edx | |
16235 + xorl %ecx,%eax | |
16236 + shll $7,%esi | |
16237 + xorl %edx,%ebx | |
16238 + shll $1,%edi | |
16239 + xorl %esi,%ebx | |
16240 + shrl $1,%ecx | |
16241 + xorl %edi,%eax | |
16242 + shrl $1,%edx | |
16243 + xorl %ecx,%eax | |
16244 + shll $6,%edi | |
16245 + xorl %edx,%ebx | |
16246 + xorl %edi,%eax | |
16247 + movl %eax,(%esp) | |
16248 + movl %ebx,4(%esp) | |
16249 + movl 208(%esp),%ecx | |
16250 + movl 212(%esp),%edx | |
16251 + movl %ecx,%esi | |
16252 + shrl $6,%ecx | |
16253 + movl %edx,%edi | |
16254 + shrl $6,%edx | |
16255 + movl %ecx,%eax | |
16256 + shll $3,%esi | |
16257 + movl %edx,%ebx | |
16258 + shll $3,%edi | |
16259 + xorl %esi,%eax | |
16260 + shrl $13,%ecx | |
16261 + xorl %edi,%ebx | |
16262 + shrl $13,%edx | |
16263 + xorl %ecx,%eax | |
16264 + shll $10,%esi | |
16265 + xorl %edx,%ebx | |
16266 + shll $10,%edi | |
16267 + xorl %esi,%ebx | |
16268 + shrl $10,%ecx | |
16269 + xorl %edi,%eax | |
16270 + shrl $10,%edx | |
16271 + xorl %ecx,%ebx | |
16272 + shll $13,%edi | |
16273 + xorl %edx,%eax | |
16274 + xorl %edi,%eax | |
16275 + movl 320(%esp),%ecx | |
16276 + movl 324(%esp),%edx | |
16277 + addl (%esp),%eax | |
16278 + adcl 4(%esp),%ebx | |
16279 + movl 248(%esp),%esi | |
16280 + movl 252(%esp),%edi | |
16281 + addl %ecx,%eax | |
16282 + adcl %edx,%ebx | |
16283 + addl %esi,%eax | |
16284 + adcl %edi,%ebx | |
16285 + movl %eax,192(%esp) | |
16286 + movl %ebx,196(%esp) | |
16287 + movl 40(%esp),%ecx | |
16288 + movl 44(%esp),%edx | |
16289 + movl %ecx,%esi | |
16290 + shrl $9,%ecx | |
16291 + movl %edx,%edi | |
16292 + shrl $9,%edx | |
16293 + movl %ecx,%ebx | |
16294 + shll $14,%esi | |
16295 + movl %edx,%eax | |
16296 + shll $14,%edi | |
16297 + xorl %esi,%ebx | |
16298 + shrl $5,%ecx | |
16299 + xorl %edi,%eax | |
16300 + shrl $5,%edx | |
16301 + xorl %ecx,%eax | |
16302 + shll $4,%esi | |
16303 + xorl %edx,%ebx | |
16304 + shll $4,%edi | |
16305 + xorl %esi,%ebx | |
16306 + shrl $4,%ecx | |
16307 + xorl %edi,%eax | |
16308 + shrl $4,%edx | |
16309 + xorl %ecx,%eax | |
16310 + shll $5,%esi | |
16311 + xorl %edx,%ebx | |
16312 + shll $5,%edi | |
16313 + xorl %esi,%eax | |
16314 + xorl %edi,%ebx | |
16315 + movl 48(%esp),%ecx | |
16316 + movl 52(%esp),%edx | |
16317 + movl 56(%esp),%esi | |
16318 + movl 60(%esp),%edi | |
16319 + addl 64(%esp),%eax | |
16320 + adcl 68(%esp),%ebx | |
16321 + xorl %esi,%ecx | |
16322 + xorl %edi,%edx | |
16323 + andl 40(%esp),%ecx | |
16324 + andl 44(%esp),%edx | |
16325 + addl 192(%esp),%eax | |
16326 + adcl 196(%esp),%ebx | |
16327 + xorl %esi,%ecx | |
16328 + xorl %edi,%edx | |
16329 + movl (%ebp),%esi | |
16330 + movl 4(%ebp),%edi | |
16331 + addl %ecx,%eax | |
16332 + adcl %edx,%ebx | |
16333 + movl 32(%esp),%ecx | |
16334 + movl 36(%esp),%edx | |
16335 + addl %esi,%eax | |
16336 + adcl %edi,%ebx | |
16337 + movl %eax,(%esp) | |
16338 + movl %ebx,4(%esp) | |
16339 + addl %ecx,%eax | |
16340 + adcl %edx,%ebx | |
16341 + movl 8(%esp),%ecx | |
16342 + movl 12(%esp),%edx | |
16343 + movl %eax,32(%esp) | |
16344 + movl %ebx,36(%esp) | |
16345 + movl %ecx,%esi | |
16346 + shrl $2,%ecx | |
16347 + movl %edx,%edi | |
16348 + shrl $2,%edx | |
16349 + movl %ecx,%ebx | |
16350 + shll $4,%esi | |
16351 + movl %edx,%eax | |
16352 + shll $4,%edi | |
16353 + xorl %esi,%ebx | |
16354 + shrl $5,%ecx | |
16355 + xorl %edi,%eax | |
16356 + shrl $5,%edx | |
16357 + xorl %ecx,%ebx | |
16358 + shll $21,%esi | |
16359 + xorl %edx,%eax | |
16360 + shll $21,%edi | |
16361 + xorl %esi,%eax | |
16362 + shrl $21,%ecx | |
16363 + xorl %edi,%ebx | |
16364 + shrl $21,%edx | |
16365 + xorl %ecx,%eax | |
16366 + shll $5,%esi | |
16367 + xorl %edx,%ebx | |
16368 + shll $5,%edi | |
16369 + xorl %esi,%eax | |
16370 + xorl %edi,%ebx | |
16371 + movl 8(%esp),%ecx | |
16372 + movl 12(%esp),%edx | |
16373 + movl 16(%esp),%esi | |
16374 + movl 20(%esp),%edi | |
16375 + addl (%esp),%eax | |
16376 + adcl 4(%esp),%ebx | |
16377 + orl %esi,%ecx | |
16378 + orl %edi,%edx | |
16379 + andl 24(%esp),%ecx | |
16380 + andl 28(%esp),%edx | |
16381 + andl 8(%esp),%esi | |
16382 + andl 12(%esp),%edi | |
16383 + orl %esi,%ecx | |
16384 + orl %edi,%edx | |
16385 + addl %ecx,%eax | |
16386 + adcl %edx,%ebx | |
16387 + movl %eax,(%esp) | |
16388 + movl %ebx,4(%esp) | |
16389 + movb (%ebp),%dl | |
16390 + subl $8,%esp | |
16391 + leal 8(%ebp),%ebp | |
16392 + cmpb $23,%dl | |
16393 + jne L00416_79_x86 | |
16394 + movl 840(%esp),%esi | |
16395 + movl 844(%esp),%edi | |
16396 + movl (%esi),%eax | |
16397 + movl 4(%esi),%ebx | |
16398 + movl 8(%esi),%ecx | |
16399 + movl 12(%esi),%edx | |
16400 + addl 8(%esp),%eax | |
16401 + adcl 12(%esp),%ebx | |
16402 + movl %eax,(%esi) | |
16403 + movl %ebx,4(%esi) | |
16404 + addl 16(%esp),%ecx | |
16405 + adcl 20(%esp),%edx | |
16406 + movl %ecx,8(%esi) | |
16407 + movl %edx,12(%esi) | |
16408 + movl 16(%esi),%eax | |
16409 + movl 20(%esi),%ebx | |
16410 + movl 24(%esi),%ecx | |
16411 + movl 28(%esi),%edx | |
16412 + addl 24(%esp),%eax | |
16413 + adcl 28(%esp),%ebx | |
16414 + movl %eax,16(%esi) | |
16415 + movl %ebx,20(%esi) | |
16416 + addl 32(%esp),%ecx | |
16417 + adcl 36(%esp),%edx | |
16418 + movl %ecx,24(%esi) | |
16419 + movl %edx,28(%esi) | |
16420 + movl 32(%esi),%eax | |
16421 + movl 36(%esi),%ebx | |
16422 + movl 40(%esi),%ecx | |
16423 + movl 44(%esi),%edx | |
16424 + addl 40(%esp),%eax | |
16425 + adcl 44(%esp),%ebx | |
16426 + movl %eax,32(%esi) | |
16427 + movl %ebx,36(%esi) | |
16428 + addl 48(%esp),%ecx | |
16429 + adcl 52(%esp),%edx | |
16430 + movl %ecx,40(%esi) | |
16431 + movl %edx,44(%esi) | |
16432 + movl 48(%esi),%eax | |
16433 + movl 52(%esi),%ebx | |
16434 + movl 56(%esi),%ecx | |
16435 + movl 60(%esi),%edx | |
16436 + addl 56(%esp),%eax | |
16437 + adcl 60(%esp),%ebx | |
16438 + movl %eax,48(%esi) | |
16439 + movl %ebx,52(%esi) | |
16440 + addl 64(%esp),%ecx | |
16441 + adcl 68(%esp),%edx | |
16442 + movl %ecx,56(%esi) | |
16443 + movl %edx,60(%esi) | |
16444 + addl $840,%esp | |
16445 + subl $640,%ebp | |
16446 + cmpl 8(%esp),%edi | |
16447 + jb L002loop_x86 | |
16448 + movl 12(%esp),%esp | |
16449 + popl %edi | |
16450 + popl %esi | |
16451 + popl %ebx | |
16452 + popl %ebp | |
16453 + ret | |
16454 +.align 6,0x90 | |
16455 +L001K512: | |
16456 +.long 3609767458,1116352408 | |
16457 +.long 602891725,1899447441 | |
16458 +.long 3964484399,3049323471 | |
16459 +.long 2173295548,3921009573 | |
16460 +.long 4081628472,961987163 | |
16461 +.long 3053834265,1508970993 | |
16462 +.long 2937671579,2453635748 | |
16463 +.long 3664609560,2870763221 | |
16464 +.long 2734883394,3624381080 | |
16465 +.long 1164996542,310598401 | |
16466 +.long 1323610764,607225278 | |
16467 +.long 3590304994,1426881987 | |
16468 +.long 4068182383,1925078388 | |
16469 +.long 991336113,2162078206 | |
16470 +.long 633803317,2614888103 | |
16471 +.long 3479774868,3248222580 | |
16472 +.long 2666613458,3835390401 | |
16473 +.long 944711139,4022224774 | |
16474 +.long 2341262773,264347078 | |
16475 +.long 2007800933,604807628 | |
16476 +.long 1495990901,770255983 | |
16477 +.long 1856431235,1249150122 | |
16478 +.long 3175218132,1555081692 | |
16479 +.long 2198950837,1996064986 | |
16480 +.long 3999719339,2554220882 | |
16481 +.long 766784016,2821834349 | |
16482 +.long 2566594879,2952996808 | |
16483 +.long 3203337956,3210313671 | |
16484 +.long 1034457026,3336571891 | |
16485 +.long 2466948901,3584528711 | |
16486 +.long 3758326383,113926993 | |
16487 +.long 168717936,338241895 | |
16488 +.long 1188179964,666307205 | |
16489 +.long 1546045734,773529912 | |
16490 +.long 1522805485,1294757372 | |
16491 +.long 2643833823,1396182291 | |
16492 +.long 2343527390,1695183700 | |
16493 +.long 1014477480,1986661051 | |
16494 +.long 1206759142,2177026350 | |
16495 +.long 344077627,2456956037 | |
16496 +.long 1290863460,2730485921 | |
16497 +.long 3158454273,2820302411 | |
16498 +.long 3505952657,3259730800 | |
16499 +.long 106217008,3345764771 | |
16500 +.long 3606008344,3516065817 | |
16501 +.long 1432725776,3600352804 | |
16502 +.long 1467031594,4094571909 | |
16503 +.long 851169720,275423344 | |
16504 +.long 3100823752,430227734 | |
16505 +.long 1363258195,506948616 | |
16506 +.long 3750685593,659060556 | |
16507 +.long 3785050280,883997877 | |
16508 +.long 3318307427,958139571 | |
16509 +.long 3812723403,1322822218 | |
16510 +.long 2003034995,1537002063 | |
16511 +.long 3602036899,1747873779 | |
16512 +.long 1575990012,1955562222 | |
16513 +.long 1125592928,2024104815 | |
16514 +.long 2716904306,2227730452 | |
16515 +.long 442776044,2361852424 | |
16516 +.long 593698344,2428436474 | |
16517 +.long 3733110249,2756734187 | |
16518 +.long 2999351573,3204031479 | |
16519 +.long 3815920427,3329325298 | |
16520 +.long 3928383900,3391569614 | |
16521 +.long 566280711,3515267271 | |
16522 +.long 3454069534,3940187606 | |
16523 +.long 4000239992,4118630271 | |
16524 +.long 1914138554,116418474 | |
16525 +.long 2731055270,174292421 | |
16526 +.long 3203993006,289380356 | |
16527 +.long 320620315,460393269 | |
16528 +.long 587496836,685471733 | |
16529 +.long 1086792851,852142971 | |
16530 +.long 365543100,1017036298 | |
16531 +.long 2618297676,1126000580 | |
16532 +.long 3409855158,1288033470 | |
16533 +.long 4234509866,1501505948 | |
16534 +.long 987167468,1607167915 | |
16535 +.long 1246189591,1816402316 | |
16536 +.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 | |
16537 +.byte 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 | |
16538 +.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 | |
16539 +.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 | |
16540 +.byte 62,0 | |
16541 diff --git a/crypto/x86cpuid-mac.S b/crypto/x86cpuid-mac.S | |
16542 new file mode 100644 | |
16543 index 0000000..db36e6f | |
16544 --- /dev/null | |
16545 +++ b/crypto/x86cpuid-mac.S | |
16546 @@ -0,0 +1,316 @@ | |
16547 +.file "x86cpuid.s" | |
16548 +.text | |
16549 +.globl _OPENSSL_ia32_cpuid | |
16550 +.align 4 | |
16551 +_OPENSSL_ia32_cpuid: | |
16552 +L_OPENSSL_ia32_cpuid_begin: | |
16553 + pushl %ebp | |
16554 + pushl %ebx | |
16555 + pushl %esi | |
16556 + pushl %edi | |
16557 + xorl %edx,%edx | |
16558 + pushfl | |
16559 + popl %eax | |
16560 + movl %eax,%ecx | |
16561 + xorl $2097152,%eax | |
16562 + pushl %eax | |
16563 + popfl | |
16564 + pushfl | |
16565 + popl %eax | |
16566 + xorl %eax,%ecx | |
16567 + xorl %eax,%eax | |
16568 + btl $21,%ecx | |
16569 + jnc L000nocpuid | |
16570 + .byte 0x0f,0xa2 | |
16571 + movl %eax,%edi | |
16572 + xorl %eax,%eax | |
16573 + cmpl $1970169159,%ebx | |
16574 + setne %al | |
16575 + movl %eax,%ebp | |
16576 + cmpl $1231384169,%edx | |
16577 + setne %al | |
16578 + orl %eax,%ebp | |
16579 + cmpl $1818588270,%ecx | |
16580 + setne %al | |
16581 + orl %eax,%ebp | |
16582 + jz L001intel | |
16583 + cmpl $1752462657,%ebx | |
16584 + setne %al | |
16585 + movl %eax,%esi | |
16586 + cmpl $1769238117,%edx | |
16587 + setne %al | |
16588 + orl %eax,%esi | |
16589 + cmpl $1145913699,%ecx | |
16590 + setne %al | |
16591 + orl %eax,%esi | |
16592 + jnz L001intel | |
16593 + movl $2147483648,%eax | |
16594 + .byte 0x0f,0xa2 | |
16595 + cmpl $2147483649,%eax | |
16596 + jb L001intel | |
16597 + movl %eax,%esi | |
16598 + movl $2147483649,%eax | |
16599 + .byte 0x0f,0xa2 | |
16600 + orl %ecx,%ebp | |
16601 + andl $2049,%ebp | |
16602 + cmpl $2147483656,%esi | |
16603 + jb L001intel | |
16604 + movl $2147483656,%eax | |
16605 + .byte 0x0f,0xa2 | |
16606 + movzbl %cl,%esi | |
16607 + incl %esi | |
16608 + movl $1,%eax | |
16609 + .byte 0x0f,0xa2 | |
16610 + btl $28,%edx | |
16611 + jnc L002generic | |
16612 + shrl $16,%ebx | |
16613 + andl $255,%ebx | |
16614 + cmpl %esi,%ebx | |
16615 + ja L002generic | |
16616 + andl $4026531839,%edx | |
16617 + jmp L002generic | |
16618 +L001intel: | |
16619 + cmpl $4,%edi | |
16620 + movl $-1,%edi | |
16621 + jb L003nocacheinfo | |
16622 + movl $4,%eax | |
16623 + movl $0,%ecx | |
16624 + .byte 0x0f,0xa2 | |
16625 + movl %eax,%edi | |
16626 + shrl $14,%edi | |
16627 + andl $4095,%edi | |
16628 +L003nocacheinfo: | |
16629 + movl $1,%eax | |
16630 + .byte 0x0f,0xa2 | |
16631 + andl $3220176895,%edx | |
16632 + cmpl $0,%ebp | |
16633 + jne L004notintel | |
16634 + orl $1073741824,%edx | |
16635 + andb $15,%ah | |
16636 + cmpb $15,%ah | |
16637 + jne L004notintel | |
16638 + orl $1048576,%edx | |
16639 +L004notintel: | |
16640 + btl $28,%edx | |
16641 + jnc L002generic | |
16642 + andl $4026531839,%edx | |
16643 + cmpl $0,%edi | |
16644 + je L002generic | |
16645 + orl $268435456,%edx | |
16646 + shrl $16,%ebx | |
16647 + cmpb $1,%bl | |
16648 + ja L002generic | |
16649 + andl $4026531839,%edx | |
16650 +L002generic: | |
16651 + andl $2048,%ebp | |
16652 + andl $4294965247,%ecx | |
16653 + movl %edx,%esi | |
16654 + orl %ecx,%ebp | |
16655 + btl $27,%ecx | |
16656 + jnc L005clear_avx | |
16657 + xorl %ecx,%ecx | |
16658 +.byte 15,1,208 | |
16659 + andl $6,%eax | |
16660 + cmpl $6,%eax | |
16661 + je L006done | |
16662 + cmpl $2,%eax | |
16663 + je L005clear_avx | |
16664 +L007clear_xmm: | |
16665 + andl $4261412861,%ebp | |
16666 + andl $4278190079,%esi | |
16667 +L005clear_avx: | |
16668 + andl $4026525695,%ebp | |
16669 +L006done: | |
16670 + movl %esi,%eax | |
16671 + movl %ebp,%edx | |
16672 +L000nocpuid: | |
16673 + popl %edi | |
16674 + popl %esi | |
16675 + popl %ebx | |
16676 + popl %ebp | |
16677 + ret | |
16678 +.globl _OPENSSL_rdtsc | |
16679 +.align 4 | |
16680 +_OPENSSL_rdtsc: | |
16681 +L_OPENSSL_rdtsc_begin: | |
16682 + xorl %eax,%eax | |
16683 + xorl %edx,%edx | |
16684 + call L008PIC_me_up | |
16685 +L008PIC_me_up: | |
16686 + popl %ecx | |
16687 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L008PIC_me_up(%ecx),%ecx | |
16688 + btl $4,(%ecx) | |
16689 + jnc L009notsc | |
16690 + .byte 0x0f,0x31 | |
16691 +L009notsc: | |
16692 + ret | |
16693 +.globl _OPENSSL_instrument_halt | |
16694 +.align 4 | |
16695 +_OPENSSL_instrument_halt: | |
16696 +L_OPENSSL_instrument_halt_begin: | |
16697 + call L010PIC_me_up | |
16698 +L010PIC_me_up: | |
16699 + popl %ecx | |
16700 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L010PIC_me_up(%ecx),%ecx | |
16701 + btl $4,(%ecx) | |
16702 + jnc L011nohalt | |
16703 +.long 2421723150 | |
16704 + andl $3,%eax | |
16705 + jnz L011nohalt | |
16706 + pushfl | |
16707 + popl %eax | |
16708 + btl $9,%eax | |
16709 + jnc L011nohalt | |
16710 + .byte 0x0f,0x31 | |
16711 + pushl %edx | |
16712 + pushl %eax | |
16713 + hlt | |
16714 + .byte 0x0f,0x31 | |
16715 + subl (%esp),%eax | |
16716 + sbbl 4(%esp),%edx | |
16717 + addl $8,%esp | |
16718 + ret | |
16719 +L011nohalt: | |
16720 + xorl %eax,%eax | |
16721 + xorl %edx,%edx | |
16722 + ret | |
16723 +.globl _OPENSSL_far_spin | |
16724 +.align 4 | |
16725 +_OPENSSL_far_spin: | |
16726 +L_OPENSSL_far_spin_begin: | |
16727 + pushfl | |
16728 + popl %eax | |
16729 + btl $9,%eax | |
16730 + jnc L012nospin | |
16731 + movl 4(%esp),%eax | |
16732 + movl 8(%esp),%ecx | |
16733 +.long 2430111262 | |
16734 + xorl %eax,%eax | |
16735 + movl (%ecx),%edx | |
16736 + jmp L013spin | |
16737 +.align 4,0x90 | |
16738 +L013spin: | |
16739 + incl %eax | |
16740 + cmpl (%ecx),%edx | |
16741 + je L013spin | |
16742 +.long 529567888 | |
16743 + ret | |
16744 +L012nospin: | |
16745 + xorl %eax,%eax | |
16746 + xorl %edx,%edx | |
16747 + ret | |
16748 +.globl _OPENSSL_wipe_cpu | |
16749 +.align 4 | |
16750 +_OPENSSL_wipe_cpu: | |
16751 +L_OPENSSL_wipe_cpu_begin: | |
16752 + xorl %eax,%eax | |
16753 + xorl %edx,%edx | |
16754 + call L014PIC_me_up | |
16755 +L014PIC_me_up: | |
16756 + popl %ecx | |
16757 + movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L014PIC_me_up(%ecx),%ecx | |
16758 + movl (%ecx),%ecx | |
16759 + btl $1,(%ecx) | |
16760 + jnc L015no_x87 | |
16761 +.long 4007259865,4007259865,4007259865,4007259865,2430851995 | |
16762 +L015no_x87: | |
16763 + leal 4(%esp),%eax | |
16764 + ret | |
16765 +.globl _OPENSSL_atomic_add | |
16766 +.align 4 | |
16767 +_OPENSSL_atomic_add: | |
16768 +L_OPENSSL_atomic_add_begin: | |
16769 + movl 4(%esp),%edx | |
16770 + movl 8(%esp),%ecx | |
16771 + pushl %ebx | |
16772 + nop | |
16773 + movl (%edx),%eax | |
16774 +L016spin: | |
16775 + leal (%eax,%ecx,1),%ebx | |
16776 + nop | |
16777 +.long 447811568 | |
16778 + jne L016spin | |
16779 + movl %ebx,%eax | |
16780 + popl %ebx | |
16781 + ret | |
16782 +.globl _OPENSSL_indirect_call | |
16783 +.align 4 | |
16784 +_OPENSSL_indirect_call: | |
16785 +L_OPENSSL_indirect_call_begin: | |
16786 + pushl %ebp | |
16787 + movl %esp,%ebp | |
16788 + subl $28,%esp | |
16789 + movl 12(%ebp),%ecx | |
16790 + movl %ecx,(%esp) | |
16791 + movl 16(%ebp),%edx | |
16792 + movl %edx,4(%esp) | |
16793 + movl 20(%ebp),%eax | |
16794 + movl %eax,8(%esp) | |
16795 + movl 24(%ebp),%eax | |
16796 + movl %eax,12(%esp) | |
16797 + movl 28(%ebp),%eax | |
16798 + movl %eax,16(%esp) | |
16799 + movl 32(%ebp),%eax | |
16800 + movl %eax,20(%esp) | |
16801 + movl 36(%ebp),%eax | |
16802 + movl %eax,24(%esp) | |
16803 + call *8(%ebp) | |
16804 + movl %ebp,%esp | |
16805 + popl %ebp | |
16806 + ret | |
16807 +.globl _OPENSSL_cleanse | |
16808 +.align 4 | |
16809 +_OPENSSL_cleanse: | |
16810 +L_OPENSSL_cleanse_begin: | |
16811 + movl 4(%esp),%edx | |
16812 + movl 8(%esp),%ecx | |
16813 + xorl %eax,%eax | |
16814 + cmpl $7,%ecx | |
16815 + jae L017lot | |
16816 + cmpl $0,%ecx | |
16817 + je L018ret | |
16818 +L019little: | |
16819 + movb %al,(%edx) | |
16820 + subl $1,%ecx | |
16821 + leal 1(%edx),%edx | |
16822 + jnz L019little | |
16823 +L018ret: | |
16824 + ret | |
16825 +.align 4,0x90 | |
16826 +L017lot: | |
16827 + testl $3,%edx | |
16828 + jz L020aligned | |
16829 + movb %al,(%edx) | |
16830 + leal -1(%ecx),%ecx | |
16831 + leal 1(%edx),%edx | |
16832 + jmp L017lot | |
16833 +L020aligned: | |
16834 + movl %eax,(%edx) | |
16835 + leal -4(%ecx),%ecx | |
16836 + testl $-4,%ecx | |
16837 + leal 4(%edx),%edx | |
16838 + jnz L020aligned | |
16839 + cmpl $0,%ecx | |
16840 + jne L019little | |
16841 + ret | |
16842 +.globl _OPENSSL_ia32_rdrand | |
16843 +.align 4 | |
16844 +_OPENSSL_ia32_rdrand: | |
16845 +L_OPENSSL_ia32_rdrand_begin: | |
16846 + movl $8,%ecx | |
16847 +L021loop: | |
16848 +.byte 15,199,240 | |
16849 + jc L022break | |
16850 + loop L021loop | |
16851 +L022break: | |
16852 + cmpl $0,%eax | |
16853 + cmovel %ecx,%eax | |
16854 + ret | |
16855 +.section __IMPORT,__pointers,non_lazy_symbol_pointers | |
16856 +L_OPENSSL_ia32cap_P$non_lazy_ptr: | |
16857 +.indirect_symbol _OPENSSL_ia32cap_P | |
16858 +.long 0 | |
16859 +.comm _OPENSSL_ia32cap_P,8,2 | |
16860 +.mod_init_func | |
16861 +.align 2 | |
16862 +.long _OPENSSL_cpuid_setup | |
16863 -- | |
16864 1.8.3.2 | |
16865 | |
OLD | NEW |