Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Side by Side Diff: openssl/patches/mac_ia32_assembly.patch

Issue 2072073002: Delete bundled copy of OpenSSL and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/openssl@master
Patch Set: Delete bundled copy of OpenSSL and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « openssl/patches/jsse.patch ('k') | openssl/patches/neon_runtime.patch » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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
OLDNEW
« no previous file with comments | « openssl/patches/jsse.patch ('k') | openssl/patches/neon_runtime.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698