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

Side by Side Diff: patches.chromium/0010-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
OLDNEW
(Empty)
1 diff -burN android-openssl.orig/import_openssl.sh android-openssl/import_openssl .sh
2 --- android-openssl.orig/import_openssl.sh 2014-04-03 13:23:34.925663547 +0 200
3 +++ android-openssl/import_openssl.sh 2014-04-03 14:13:56.497704796 +0200
4 @@ -118,6 +118,13 @@
5 fi
6 }
7
8 +function default_asm_mac_ia32_file () {
9 + if [ "$2" ]; then
10 + echo "$2"
11 + else
12 + echo "${1%%.pl}-mac.S"
13 + fi
14 +}
15 # Generate an ARM assembly file.
16 # $1: generator (perl script)
17 # $2: [optional] output file name
18 @@ -148,6 +155,11 @@
19 perl "$1" elf "$OUT" > "$OUT"
20 }
21
22 +function gen_asm_mac_ia32 () {
23 + local OUT
24 + OUT=$(default_asm_mac_ia32_file "$@")
25 + perl "$1" macosx "$OUT" > "$OUT"
26 +}
27
28 # Filter all items in a list that match a given pattern.
29 # $1: space-separated list
30 @@ -415,6 +427,24 @@
31 gen_asm_x86_64 crypto/rc4/asm/rc4-x86_64.pl
32 gen_asm_x86_64 crypto/rc4/asm/rc4-md5-x86_64.pl
33
34 + # Generate mac_ia32 asm
35 + gen_asm_mac_ia32 crypto/x86cpuid.pl
36 + gen_asm_mac_ia32 crypto/aes/asm/aes-586.pl
37 + gen_asm_mac_ia32 crypto/aes/asm/vpaes-x86.pl
38 + gen_asm_mac_ia32 crypto/aes/asm/aesni-x86.pl
39 + gen_asm_mac_ia32 crypto/bn/asm/bn-586.pl
40 + gen_asm_mac_ia32 crypto/bn/asm/co-586.pl
41 + gen_asm_mac_ia32 crypto/bn/asm/x86-mont.pl
42 + gen_asm_mac_ia32 crypto/bn/asm/x86-gf2m.pl
43 + gen_asm_mac_ia32 crypto/modes/asm/ghash-x86.pl
44 + gen_asm_mac_ia32 crypto/sha/asm/sha1-586.pl
45 + gen_asm_mac_ia32 crypto/sha/asm/sha256-586.pl
46 + gen_asm_mac_ia32 crypto/sha/asm/sha512-586.pl
47 + gen_asm_mac_ia32 crypto/md5/asm/md5-586.pl
48 + gen_asm_mac_ia32 crypto/des/asm/des-586.pl
49 + gen_asm_mac_ia32 crypto/des/asm/crypt586.pl
50 + gen_asm_mac_ia32 crypto/bf/asm/bf-586.pl
51 +
52 # Setup android.testssl directory
53 mkdir android.testssl
54 cat test/testssl | \
55 diff -burN android-openssl.orig/openssl.config android-openssl/openssl.config
56 --- android-openssl.orig/openssl.config 2014-04-03 13:23:34.989663548 +0200
57 +++ android-openssl/openssl.config 2014-04-03 14:14:40.309705394 +0200
58 @@ -270,6 +270,22 @@
59 OPENSSL_CPUID_OBJ \
60 "
61
62 +OPENSSL_CRYPTO_DEFINES_mac_ia32="\
63 +OPENSSL_BN_ASM_GF2m \
64 +OPENSSL_BN_ASM_MONT \
65 +OPENSSL_BN_ASM_PART_WORDS \
66 +AES_ASM \
67 +GHASH_ASM \
68 +SHA1_ASM \
69 +SHA256_ASM \
70 +SHA512_ASM \
71 +MD5_ASM \
72 +DES_PTR \
73 +DES_RISC1 \
74 +DES_UNROLL \
75 +OPENSSL_CPUID_OBJ \
76 +"
77 +
78 OPENSSL_CRYPTO_INCLUDES="\
79 . \
80 include \
81 @@ -848,6 +864,35 @@
82 crypto/mem_clr.c \
83 "
84
85 +OPENSSL_CRYPTO_SOURCES_mac_ia32="\
86 +crypto/aes/asm/aes-586-mac.S \
87 +crypto/aes/asm/aesni-x86-mac.S \
88 +crypto/aes/asm/vpaes-x86-mac.S \
89 +crypto/bf/asm/bf-586-mac.S \
90 +crypto/bn/asm/bn-586-mac.S \
91 +crypto/bn/asm/co-586-mac.S \
92 +crypto/bn/asm/x86-gf2m-mac.S \
93 +crypto/bn/asm/x86-mont-mac.S \
94 +crypto/des/asm/crypt586-mac.S \
95 +crypto/des/asm/des-586-mac.S \
96 +crypto/md5/asm/md5-586-mac.S \
97 +crypto/modes/asm/ghash-x86-mac.S \
98 +crypto/sha/asm/sha1-586-mac.S \
99 +crypto/sha/asm/sha256-586-mac.S \
100 +crypto/sha/asm/sha512-586-mac.S \
101 +crypto/x86cpuid-mac.S \
102 +"
103 +
104 +OPENSSL_CRYPTO_SOURCES_EXCLUDES_mac_ia32="\
105 +crypto/aes/aes_core.c \
106 +crypto/aes/aes_cbc.c \
107 +crypto/bf/bf_enc.c \
108 +crypto/bn/bn_asm.c \
109 +crypto/des/des_enc.c \
110 +crypto/des/fcrypt_b.c \
111 +crypto/mem_clr.c \
112 +"
113 +
114 OPENSSL_CRYPTO_SOURCES_x86_64="\
115 crypto/aes/asm/aes-x86_64.S \
116 crypto/aes/asm/aesni-x86_64.S \
117 @@ -1016,6 +1061,7 @@
118 chacha20poly1305.patch \
119 neon_runtime.patch \
120 paddingext.patch \
121 +mac_ia32_assembly.patch \
122 "
123
124 OPENSSL_PATCHES_progs_SOURCES="\
125 @@ -1089,3 +1135,22 @@
126 include/openssl/lhash.h
127 ssl/ssl_sess.c
128 "
129 +
130 +OPENSSL_PATCHES_mac_ia32_assembly_SOURCES="\
131 +crypto/aes/asm/aes-586-mac.S \
132 +crypto/aes/asm/aesni-x86-mac.S \
133 +crypto/aes/asm/vpaes-x86-mac.S \
134 +crypto/bf/asm/bf-586-mac.S \
135 +crypto/bn/asm/bn-586-mac.S \
136 +crypto/bn/asm/co-586-mac.S \
137 +crypto/bn/asm/x86-gf2m-mac.S \
138 +crypto/bn/asm/x86-mont-mac.S \
139 +crypto/des/asm/crypt586-mac.S \
140 +crypto/des/asm/des-586-mac.S \
141 +crypto/md5/asm/md5-586-mac.S \
142 +crypto/modes/asm/ghash-x86-mac.S \
143 +crypto/sha/asm/sha1-586-mac.S \
144 +crypto/sha/asm/sha256-586-mac.S \
145 +crypto/sha/asm/sha512-586-mac.S \
146 +crypto/x86cpuid-mac.S \
147 +"
148 diff -burN android-openssl.orig/patches/mac_ia32_assembly.patch android-openssl/ patches/mac_ia32_assembly.patch
149 --- android-openssl.orig/patches/mac_ia32_assembly.patch 1970-01-01 01:00 :00.000000000 +0100
150 +++ android-openssl/patches/mac_ia32_assembly.patch 2014-04-03 14:13:56.5057 04796 +0200
151 @@ -0,0 +1,16865 @@
152 +From dee77b350211c7b5980f03cc67e30ebf616b029e Mon Sep 17 00:00:00 2001
153 +From: =?UTF-8?q?H=C3=A5vard=20Molland?= <haavardm@opera.com>
154 +Date: Thu, 3 Apr 2014 10:58:22 +0200
155 +Subject: [PATCH 4/4] Assembly files for OSX-32.
156 +
157 +Needed for compiling 32 bit OSX with assembly support.
158 +---
159 + crypto/aes/asm/aes-586-mac.S | 3200 +++++++++++++++++++++++++++
160 + crypto/aes/asm/aesni-x86-mac.S | 2107 ++++++++++++++++++
161 + crypto/aes/asm/vpaes-x86-mac.S | 635 ++++++
162 + crypto/bf/asm/bf-586-mac.S | 890 ++++++++
163 + crypto/bn/asm/bn-586-mac.S | 1370 ++++++++++++
164 + crypto/bn/asm/co-586-mac.S | 1246 +++++++++++
165 + crypto/bn/asm/x86-gf2m-mac.S | 332 +++
166 + crypto/bn/asm/x86-mont-mac.S | 336 +++
167 + crypto/des/asm/crypt586-mac.S | 880 ++++++++
168 + crypto/des/asm/des-586-mac.S | 1821 +++++++++++++++
169 + crypto/md5/asm/md5-586-mac.S | 677 ++++++
170 + crypto/modes/asm/ghash-x86-mac.S | 718 ++++++
171 + crypto/sha/asm/sha1-586-mac.S | 1378 ++++++++++++
172 + crypto/sha/asm/sha256-586-mac.S | 256 +++
173 + crypto/sha/asm/sha512-586-mac.S | 561 +++++
174 + crypto/x86cpuid-mac.S | 316 +++
175 + import_openssl.sh | 32 +-
176 + openssl.config | 29 -
177 + 18 files changed, 16724 insertions(+), 60 deletions(-)
178 + create mode 100644 crypto/aes/asm/aes-586-mac.S
179 + create mode 100644 crypto/aes/asm/aesni-x86-mac.S
180 + create mode 100644 crypto/aes/asm/vpaes-x86-mac.S
181 + create mode 100644 crypto/bf/asm/bf-586-mac.S
182 + create mode 100644 crypto/bn/asm/bn-586-mac.S
183 + create mode 100644 crypto/bn/asm/co-586-mac.S
184 + create mode 100644 crypto/bn/asm/x86-gf2m-mac.S
185 + create mode 100644 crypto/bn/asm/x86-mont-mac.S
186 + create mode 100644 crypto/des/asm/crypt586-mac.S
187 + create mode 100644 crypto/des/asm/des-586-mac.S
188 + create mode 100644 crypto/md5/asm/md5-586-mac.S
189 + create mode 100644 crypto/modes/asm/ghash-x86-mac.S
190 + create mode 100644 crypto/sha/asm/sha1-586-mac.S
191 + create mode 100644 crypto/sha/asm/sha256-586-mac.S
192 + create mode 100644 crypto/sha/asm/sha512-586-mac.S
193 + create mode 100644 crypto/x86cpuid-mac.S
194 +
195 +diff --git a/crypto/aes/asm/aes-586-mac.S b/crypto/aes/asm/aes-586-mac.S
196 +new file mode 100644
197 +index 0000000..15d5d7b
198 +--- /dev/null
199 ++++ b/crypto/aes/asm/aes-586-mac.S
200 +@@ -0,0 +1,3200 @@
201 ++.file "aes-586.s"
202 ++.text
203 ++.align 4
204 ++__x86_AES_encrypt_compact:
205 ++ movl %edi,20(%esp)
206 ++ xorl (%edi),%eax
207 ++ xorl 4(%edi),%ebx
208 ++ xorl 8(%edi),%ecx
209 ++ xorl 12(%edi),%edx
210 ++ movl 240(%edi),%esi
211 ++ leal -2(%esi,%esi,1),%esi
212 ++ leal (%edi,%esi,8),%esi
213 ++ movl %esi,24(%esp)
214 ++ movl -128(%ebp),%edi
215 ++ movl -96(%ebp),%esi
216 ++ movl -64(%ebp),%edi
217 ++ movl -32(%ebp),%esi
218 ++ movl (%ebp),%edi
219 ++ movl 32(%ebp),%esi
220 ++ movl 64(%ebp),%edi
221 ++ movl 96(%ebp),%esi
222 ++.align 4,0x90
223 ++L000loop:
224 ++ movl %eax,%esi
225 ++ andl $255,%esi
226 ++ movzbl -128(%ebp,%esi,1),%esi
227 ++ movzbl %bh,%edi
228 ++ movzbl -128(%ebp,%edi,1),%edi
229 ++ shll $8,%edi
230 ++ xorl %edi,%esi
231 ++ movl %ecx,%edi
232 ++ shrl $16,%edi
233 ++ andl $255,%edi
234 ++ movzbl -128(%ebp,%edi,1),%edi
235 ++ shll $16,%edi
236 ++ xorl %edi,%esi
237 ++ movl %edx,%edi
238 ++ shrl $24,%edi
239 ++ movzbl -128(%ebp,%edi,1),%edi
240 ++ shll $24,%edi
241 ++ xorl %edi,%esi
242 ++ movl %esi,4(%esp)
243 ++ movl %ebx,%esi
244 ++ andl $255,%esi
245 ++ shrl $16,%ebx
246 ++ movzbl -128(%ebp,%esi,1),%esi
247 ++ movzbl %ch,%edi
248 ++ movzbl -128(%ebp,%edi,1),%edi
249 ++ shll $8,%edi
250 ++ xorl %edi,%esi
251 ++ movl %edx,%edi
252 ++ shrl $16,%edi
253 ++ andl $255,%edi
254 ++ movzbl -128(%ebp,%edi,1),%edi
255 ++ shll $16,%edi
256 ++ xorl %edi,%esi
257 ++ movl %eax,%edi
258 ++ shrl $24,%edi
259 ++ movzbl -128(%ebp,%edi,1),%edi
260 ++ shll $24,%edi
261 ++ xorl %edi,%esi
262 ++ movl %esi,8(%esp)
263 ++ movl %ecx,%esi
264 ++ andl $255,%esi
265 ++ shrl $24,%ecx
266 ++ movzbl -128(%ebp,%esi,1),%esi
267 ++ movzbl %dh,%edi
268 ++ movzbl -128(%ebp,%edi,1),%edi
269 ++ shll $8,%edi
270 ++ xorl %edi,%esi
271 ++ movl %eax,%edi
272 ++ shrl $16,%edi
273 ++ andl $255,%edx
274 ++ andl $255,%edi
275 ++ movzbl -128(%ebp,%edi,1),%edi
276 ++ shll $16,%edi
277 ++ xorl %edi,%esi
278 ++ movzbl %bh,%edi
279 ++ movzbl -128(%ebp,%edi,1),%edi
280 ++ shll $24,%edi
281 ++ xorl %edi,%esi
282 ++ andl $255,%edx
283 ++ movzbl -128(%ebp,%edx,1),%edx
284 ++ movzbl %ah,%eax
285 ++ movzbl -128(%ebp,%eax,1),%eax
286 ++ shll $8,%eax
287 ++ xorl %eax,%edx
288 ++ movl 4(%esp),%eax
289 ++ andl $255,%ebx
290 ++ movzbl -128(%ebp,%ebx,1),%ebx
291 ++ shll $16,%ebx
292 ++ xorl %ebx,%edx
293 ++ movl 8(%esp),%ebx
294 ++ movzbl -128(%ebp,%ecx,1),%ecx
295 ++ shll $24,%ecx
296 ++ xorl %ecx,%edx
297 ++ movl %esi,%ecx
298 ++ movl %ecx,%esi
299 ++ andl $2155905152,%esi
300 ++ movl %esi,%ebp
301 ++ shrl $7,%ebp
302 ++ leal (%ecx,%ecx,1),%edi
303 ++ subl %ebp,%esi
304 ++ andl $4278124286,%edi
305 ++ andl $454761243,%esi
306 ++ movl %ecx,%ebp
307 ++ xorl %edi,%esi
308 ++ xorl %esi,%ecx
309 ++ roll $24,%ecx
310 ++ xorl %esi,%ecx
311 ++ rorl $16,%ebp
312 ++ xorl %ebp,%ecx
313 ++ rorl $8,%ebp
314 ++ xorl %ebp,%ecx
315 ++ movl %edx,%esi
316 ++ andl $2155905152,%esi
317 ++ movl %esi,%ebp
318 ++ shrl $7,%ebp
319 ++ leal (%edx,%edx,1),%edi
320 ++ subl %ebp,%esi
321 ++ andl $4278124286,%edi
322 ++ andl $454761243,%esi
323 ++ movl %edx,%ebp
324 ++ xorl %edi,%esi
325 ++ xorl %esi,%edx
326 ++ roll $24,%edx
327 ++ xorl %esi,%edx
328 ++ rorl $16,%ebp
329 ++ xorl %ebp,%edx
330 ++ rorl $8,%ebp
331 ++ xorl %ebp,%edx
332 ++ movl %eax,%esi
333 ++ andl $2155905152,%esi
334 ++ movl %esi,%ebp
335 ++ shrl $7,%ebp
336 ++ leal (%eax,%eax,1),%edi
337 ++ subl %ebp,%esi
338 ++ andl $4278124286,%edi
339 ++ andl $454761243,%esi
340 ++ movl %eax,%ebp
341 ++ xorl %edi,%esi
342 ++ xorl %esi,%eax
343 ++ roll $24,%eax
344 ++ xorl %esi,%eax
345 ++ rorl $16,%ebp
346 ++ xorl %ebp,%eax
347 ++ rorl $8,%ebp
348 ++ xorl %ebp,%eax
349 ++ movl %ebx,%esi
350 ++ andl $2155905152,%esi
351 ++ movl %esi,%ebp
352 ++ shrl $7,%ebp
353 ++ leal (%ebx,%ebx,1),%edi
354 ++ subl %ebp,%esi
355 ++ andl $4278124286,%edi
356 ++ andl $454761243,%esi
357 ++ movl %ebx,%ebp
358 ++ xorl %edi,%esi
359 ++ xorl %esi,%ebx
360 ++ roll $24,%ebx
361 ++ xorl %esi,%ebx
362 ++ rorl $16,%ebp
363 ++ xorl %ebp,%ebx
364 ++ rorl $8,%ebp
365 ++ xorl %ebp,%ebx
366 ++ movl 20(%esp),%edi
367 ++ movl 28(%esp),%ebp
368 ++ addl $16,%edi
369 ++ xorl (%edi),%eax
370 ++ xorl 4(%edi),%ebx
371 ++ xorl 8(%edi),%ecx
372 ++ xorl 12(%edi),%edx
373 ++ cmpl 24(%esp),%edi
374 ++ movl %edi,20(%esp)
375 ++ jb L000loop
376 ++ movl %eax,%esi
377 ++ andl $255,%esi
378 ++ movzbl -128(%ebp,%esi,1),%esi
379 ++ movzbl %bh,%edi
380 ++ movzbl -128(%ebp,%edi,1),%edi
381 ++ shll $8,%edi
382 ++ xorl %edi,%esi
383 ++ movl %ecx,%edi
384 ++ shrl $16,%edi
385 ++ andl $255,%edi
386 ++ movzbl -128(%ebp,%edi,1),%edi
387 ++ shll $16,%edi
388 ++ xorl %edi,%esi
389 ++ movl %edx,%edi
390 ++ shrl $24,%edi
391 ++ movzbl -128(%ebp,%edi,1),%edi
392 ++ shll $24,%edi
393 ++ xorl %edi,%esi
394 ++ movl %esi,4(%esp)
395 ++ movl %ebx,%esi
396 ++ andl $255,%esi
397 ++ shrl $16,%ebx
398 ++ movzbl -128(%ebp,%esi,1),%esi
399 ++ movzbl %ch,%edi
400 ++ movzbl -128(%ebp,%edi,1),%edi
401 ++ shll $8,%edi
402 ++ xorl %edi,%esi
403 ++ movl %edx,%edi
404 ++ shrl $16,%edi
405 ++ andl $255,%edi
406 ++ movzbl -128(%ebp,%edi,1),%edi
407 ++ shll $16,%edi
408 ++ xorl %edi,%esi
409 ++ movl %eax,%edi
410 ++ shrl $24,%edi
411 ++ movzbl -128(%ebp,%edi,1),%edi
412 ++ shll $24,%edi
413 ++ xorl %edi,%esi
414 ++ movl %esi,8(%esp)
415 ++ movl %ecx,%esi
416 ++ andl $255,%esi
417 ++ shrl $24,%ecx
418 ++ movzbl -128(%ebp,%esi,1),%esi
419 ++ movzbl %dh,%edi
420 ++ movzbl -128(%ebp,%edi,1),%edi
421 ++ shll $8,%edi
422 ++ xorl %edi,%esi
423 ++ movl %eax,%edi
424 ++ shrl $16,%edi
425 ++ andl $255,%edx
426 ++ andl $255,%edi
427 ++ movzbl -128(%ebp,%edi,1),%edi
428 ++ shll $16,%edi
429 ++ xorl %edi,%esi
430 ++ movzbl %bh,%edi
431 ++ movzbl -128(%ebp,%edi,1),%edi
432 ++ shll $24,%edi
433 ++ xorl %edi,%esi
434 ++ movl 20(%esp),%edi
435 ++ andl $255,%edx
436 ++ movzbl -128(%ebp,%edx,1),%edx
437 ++ movzbl %ah,%eax
438 ++ movzbl -128(%ebp,%eax,1),%eax
439 ++ shll $8,%eax
440 ++ xorl %eax,%edx
441 ++ movl 4(%esp),%eax
442 ++ andl $255,%ebx
443 ++ movzbl -128(%ebp,%ebx,1),%ebx
444 ++ shll $16,%ebx
445 ++ xorl %ebx,%edx
446 ++ movl 8(%esp),%ebx
447 ++ movzbl -128(%ebp,%ecx,1),%ecx
448 ++ shll $24,%ecx
449 ++ xorl %ecx,%edx
450 ++ movl %esi,%ecx
451 ++ xorl 16(%edi),%eax
452 ++ xorl 20(%edi),%ebx
453 ++ xorl 24(%edi),%ecx
454 ++ xorl 28(%edi),%edx
455 ++ ret
456 ++.align 4
457 ++__sse_AES_encrypt_compact:
458 ++ pxor (%edi),%mm0
459 ++ pxor 8(%edi),%mm4
460 ++ movl 240(%edi),%esi
461 ++ leal -2(%esi,%esi,1),%esi
462 ++ leal (%edi,%esi,8),%esi
463 ++ movl %esi,24(%esp)
464 ++ movl $454761243,%eax
465 ++ movl %eax,8(%esp)
466 ++ movl %eax,12(%esp)
467 ++ movl -128(%ebp),%eax
468 ++ movl -96(%ebp),%ebx
469 ++ movl -64(%ebp),%ecx
470 ++ movl -32(%ebp),%edx
471 ++ movl (%ebp),%eax
472 ++ movl 32(%ebp),%ebx
473 ++ movl 64(%ebp),%ecx
474 ++ movl 96(%ebp),%edx
475 ++.align 4,0x90
476 ++L001loop:
477 ++ pshufw $8,%mm0,%mm1
478 ++ pshufw $13,%mm4,%mm5
479 ++ movd %mm1,%eax
480 ++ movd %mm5,%ebx
481 ++ movzbl %al,%esi
482 ++ movzbl -128(%ebp,%esi,1),%ecx
483 ++ pshufw $13,%mm0,%mm2
484 ++ movzbl %ah,%edx
485 ++ movzbl -128(%ebp,%edx,1),%edx
486 ++ shll $8,%edx
487 ++ shrl $16,%eax
488 ++ movzbl %bl,%esi
489 ++ movzbl -128(%ebp,%esi,1),%esi
490 ++ shll $16,%esi
491 ++ orl %esi,%ecx
492 ++ pshufw $8,%mm4,%mm6
493 ++ movzbl %bh,%esi
494 ++ movzbl -128(%ebp,%esi,1),%esi
495 ++ shll $24,%esi
496 ++ orl %esi,%edx
497 ++ shrl $16,%ebx
498 ++ movzbl %ah,%esi
499 ++ movzbl -128(%ebp,%esi,1),%esi
500 ++ shll $8,%esi
501 ++ orl %esi,%ecx
502 ++ movzbl %bh,%esi
503 ++ movzbl -128(%ebp,%esi,1),%esi
504 ++ shll $24,%esi
505 ++ orl %esi,%ecx
506 ++ movd %ecx,%mm0
507 ++ movzbl %al,%esi
508 ++ movzbl -128(%ebp,%esi,1),%ecx
509 ++ movd %mm2,%eax
510 ++ movzbl %bl,%esi
511 ++ movzbl -128(%ebp,%esi,1),%esi
512 ++ shll $16,%esi
513 ++ orl %esi,%ecx
514 ++ movd %mm6,%ebx
515 ++ movzbl %ah,%esi
516 ++ movzbl -128(%ebp,%esi,1),%esi
517 ++ shll $24,%esi
518 ++ orl %esi,%ecx
519 ++ movzbl %bh,%esi
520 ++ movzbl -128(%ebp,%esi,1),%esi
521 ++ shll $8,%esi
522 ++ orl %esi,%ecx
523 ++ movd %ecx,%mm1
524 ++ movzbl %bl,%esi
525 ++ movzbl -128(%ebp,%esi,1),%ecx
526 ++ shrl $16,%ebx
527 ++ movzbl %al,%esi
528 ++ movzbl -128(%ebp,%esi,1),%esi
529 ++ shll $16,%esi
530 ++ orl %esi,%ecx
531 ++ shrl $16,%eax
532 ++ punpckldq %mm1,%mm0
533 ++ movzbl %ah,%esi
534 ++ movzbl -128(%ebp,%esi,1),%esi
535 ++ shll $24,%esi
536 ++ orl %esi,%ecx
537 ++ andl $255,%eax
538 ++ movzbl -128(%ebp,%eax,1),%eax
539 ++ shll $16,%eax
540 ++ orl %eax,%edx
541 ++ movzbl %bh,%esi
542 ++ movzbl -128(%ebp,%esi,1),%esi
543 ++ shll $8,%esi
544 ++ orl %esi,%ecx
545 ++ movd %ecx,%mm4
546 ++ andl $255,%ebx
547 ++ movzbl -128(%ebp,%ebx,1),%ebx
548 ++ orl %ebx,%edx
549 ++ movd %edx,%mm5
550 ++ punpckldq %mm5,%mm4
551 ++ addl $16,%edi
552 ++ cmpl 24(%esp),%edi
553 ++ ja L002out
554 ++ movq 8(%esp),%mm2
555 ++ pxor %mm3,%mm3
556 ++ pxor %mm7,%mm7
557 ++ movq %mm0,%mm1
558 ++ movq %mm4,%mm5
559 ++ pcmpgtb %mm0,%mm3
560 ++ pcmpgtb %mm4,%mm7
561 ++ pand %mm2,%mm3
562 ++ pand %mm2,%mm7
563 ++ pshufw $177,%mm0,%mm2
564 ++ pshufw $177,%mm4,%mm6
565 ++ paddb %mm0,%mm0
566 ++ paddb %mm4,%mm4
567 ++ pxor %mm3,%mm0
568 ++ pxor %mm7,%mm4
569 ++ pshufw $177,%mm2,%mm3
570 ++ pshufw $177,%mm6,%mm7
571 ++ pxor %mm0,%mm1
572 ++ pxor %mm4,%mm5
573 ++ pxor %mm2,%mm0
574 ++ pxor %mm6,%mm4
575 ++ movq %mm3,%mm2
576 ++ movq %mm7,%mm6
577 ++ pslld $8,%mm3
578 ++ pslld $8,%mm7
579 ++ psrld $24,%mm2
580 ++ psrld $24,%mm6
581 ++ pxor %mm3,%mm0
582 ++ pxor %mm7,%mm4
583 ++ pxor %mm2,%mm0
584 ++ pxor %mm6,%mm4
585 ++ movq %mm1,%mm3
586 ++ movq %mm5,%mm7
587 ++ movq (%edi),%mm2
588 ++ movq 8(%edi),%mm6
589 ++ psrld $8,%mm1
590 ++ psrld $8,%mm5
591 ++ movl -128(%ebp),%eax
592 ++ pslld $24,%mm3
593 ++ pslld $24,%mm7
594 ++ movl -64(%ebp),%ebx
595 ++ pxor %mm1,%mm0
596 ++ pxor %mm5,%mm4
597 ++ movl (%ebp),%ecx
598 ++ pxor %mm3,%mm0
599 ++ pxor %mm7,%mm4
600 ++ movl 64(%ebp),%edx
601 ++ pxor %mm2,%mm0
602 ++ pxor %mm6,%mm4
603 ++ jmp L001loop
604 ++.align 4,0x90
605 ++L002out:
606 ++ pxor (%edi),%mm0
607 ++ pxor 8(%edi),%mm4
608 ++ ret
609 ++.align 4
610 ++__x86_AES_encrypt:
611 ++ movl %edi,20(%esp)
612 ++ xorl (%edi),%eax
613 ++ xorl 4(%edi),%ebx
614 ++ xorl 8(%edi),%ecx
615 ++ xorl 12(%edi),%edx
616 ++ movl 240(%edi),%esi
617 ++ leal -2(%esi,%esi,1),%esi
618 ++ leal (%edi,%esi,8),%esi
619 ++ movl %esi,24(%esp)
620 ++.align 4,0x90
621 ++L003loop:
622 ++ movl %eax,%esi
623 ++ andl $255,%esi
624 ++ movl (%ebp,%esi,8),%esi
625 ++ movzbl %bh,%edi
626 ++ xorl 3(%ebp,%edi,8),%esi
627 ++ movl %ecx,%edi
628 ++ shrl $16,%edi
629 ++ andl $255,%edi
630 ++ xorl 2(%ebp,%edi,8),%esi
631 ++ movl %edx,%edi
632 ++ shrl $24,%edi
633 ++ xorl 1(%ebp,%edi,8),%esi
634 ++ movl %esi,4(%esp)
635 ++ movl %ebx,%esi
636 ++ andl $255,%esi
637 ++ shrl $16,%ebx
638 ++ movl (%ebp,%esi,8),%esi
639 ++ movzbl %ch,%edi
640 ++ xorl 3(%ebp,%edi,8),%esi
641 ++ movl %edx,%edi
642 ++ shrl $16,%edi
643 ++ andl $255,%edi
644 ++ xorl 2(%ebp,%edi,8),%esi
645 ++ movl %eax,%edi
646 ++ shrl $24,%edi
647 ++ xorl 1(%ebp,%edi,8),%esi
648 ++ movl %esi,8(%esp)
649 ++ movl %ecx,%esi
650 ++ andl $255,%esi
651 ++ shrl $24,%ecx
652 ++ movl (%ebp,%esi,8),%esi
653 ++ movzbl %dh,%edi
654 ++ xorl 3(%ebp,%edi,8),%esi
655 ++ movl %eax,%edi
656 ++ shrl $16,%edi
657 ++ andl $255,%edx
658 ++ andl $255,%edi
659 ++ xorl 2(%ebp,%edi,8),%esi
660 ++ movzbl %bh,%edi
661 ++ xorl 1(%ebp,%edi,8),%esi
662 ++ movl 20(%esp),%edi
663 ++ movl (%ebp,%edx,8),%edx
664 ++ movzbl %ah,%eax
665 ++ xorl 3(%ebp,%eax,8),%edx
666 ++ movl 4(%esp),%eax
667 ++ andl $255,%ebx
668 ++ xorl 2(%ebp,%ebx,8),%edx
669 ++ movl 8(%esp),%ebx
670 ++ xorl 1(%ebp,%ecx,8),%edx
671 ++ movl %esi,%ecx
672 ++ addl $16,%edi
673 ++ xorl (%edi),%eax
674 ++ xorl 4(%edi),%ebx
675 ++ xorl 8(%edi),%ecx
676 ++ xorl 12(%edi),%edx
677 ++ cmpl 24(%esp),%edi
678 ++ movl %edi,20(%esp)
679 ++ jb L003loop
680 ++ movl %eax,%esi
681 ++ andl $255,%esi
682 ++ movl 2(%ebp,%esi,8),%esi
683 ++ andl $255,%esi
684 ++ movzbl %bh,%edi
685 ++ movl (%ebp,%edi,8),%edi
686 ++ andl $65280,%edi
687 ++ xorl %edi,%esi
688 ++ movl %ecx,%edi
689 ++ shrl $16,%edi
690 ++ andl $255,%edi
691 ++ movl (%ebp,%edi,8),%edi
692 ++ andl $16711680,%edi
693 ++ xorl %edi,%esi
694 ++ movl %edx,%edi
695 ++ shrl $24,%edi
696 ++ movl 2(%ebp,%edi,8),%edi
697 ++ andl $4278190080,%edi
698 ++ xorl %edi,%esi
699 ++ movl %esi,4(%esp)
700 ++ movl %ebx,%esi
701 ++ andl $255,%esi
702 ++ shrl $16,%ebx
703 ++ movl 2(%ebp,%esi,8),%esi
704 ++ andl $255,%esi
705 ++ movzbl %ch,%edi
706 ++ movl (%ebp,%edi,8),%edi
707 ++ andl $65280,%edi
708 ++ xorl %edi,%esi
709 ++ movl %edx,%edi
710 ++ shrl $16,%edi
711 ++ andl $255,%edi
712 ++ movl (%ebp,%edi,8),%edi
713 ++ andl $16711680,%edi
714 ++ xorl %edi,%esi
715 ++ movl %eax,%edi
716 ++ shrl $24,%edi
717 ++ movl 2(%ebp,%edi,8),%edi
718 ++ andl $4278190080,%edi
719 ++ xorl %edi,%esi
720 ++ movl %esi,8(%esp)
721 ++ movl %ecx,%esi
722 ++ andl $255,%esi
723 ++ shrl $24,%ecx
724 ++ movl 2(%ebp,%esi,8),%esi
725 ++ andl $255,%esi
726 ++ movzbl %dh,%edi
727 ++ movl (%ebp,%edi,8),%edi
728 ++ andl $65280,%edi
729 ++ xorl %edi,%esi
730 ++ movl %eax,%edi
731 ++ shrl $16,%edi
732 ++ andl $255,%edx
733 ++ andl $255,%edi
734 ++ movl (%ebp,%edi,8),%edi
735 ++ andl $16711680,%edi
736 ++ xorl %edi,%esi
737 ++ movzbl %bh,%edi
738 ++ movl 2(%ebp,%edi,8),%edi
739 ++ andl $4278190080,%edi
740 ++ xorl %edi,%esi
741 ++ movl 20(%esp),%edi
742 ++ andl $255,%edx
743 ++ movl 2(%ebp,%edx,8),%edx
744 ++ andl $255,%edx
745 ++ movzbl %ah,%eax
746 ++ movl (%ebp,%eax,8),%eax
747 ++ andl $65280,%eax
748 ++ xorl %eax,%edx
749 ++ movl 4(%esp),%eax
750 ++ andl $255,%ebx
751 ++ movl (%ebp,%ebx,8),%ebx
752 ++ andl $16711680,%ebx
753 ++ xorl %ebx,%edx
754 ++ movl 8(%esp),%ebx
755 ++ movl 2(%ebp,%ecx,8),%ecx
756 ++ andl $4278190080,%ecx
757 ++ xorl %ecx,%edx
758 ++ movl %esi,%ecx
759 ++ addl $16,%edi
760 ++ xorl (%edi),%eax
761 ++ xorl 4(%edi),%ebx
762 ++ xorl 8(%edi),%ecx
763 ++ xorl 12(%edi),%edx
764 ++ ret
765 ++.align 6,0x90
766 ++LAES_Te:
767 ++.long 2774754246,2774754246
768 ++.long 2222750968,2222750968
769 ++.long 2574743534,2574743534
770 ++.long 2373680118,2373680118
771 ++.long 234025727,234025727
772 ++.long 3177933782,3177933782
773 ++.long 2976870366,2976870366
774 ++.long 1422247313,1422247313
775 ++.long 1345335392,1345335392
776 ++.long 50397442,50397442
777 ++.long 2842126286,2842126286
778 ++.long 2099981142,2099981142
779 ++.long 436141799,436141799
780 ++.long 1658312629,1658312629
781 ++.long 3870010189,3870010189
782 ++.long 2591454956,2591454956
783 ++.long 1170918031,1170918031
784 ++.long 2642575903,2642575903
785 ++.long 1086966153,1086966153
786 ++.long 2273148410,2273148410
787 ++.long 368769775,368769775
788 ++.long 3948501426,3948501426
789 ++.long 3376891790,3376891790
790 ++.long 200339707,200339707
791 ++.long 3970805057,3970805057
792 ++.long 1742001331,1742001331
793 ++.long 4255294047,4255294047
794 ++.long 3937382213,3937382213
795 ++.long 3214711843,3214711843
796 ++.long 4154762323,4154762323
797 ++.long 2524082916,2524082916
798 ++.long 1539358875,1539358875
799 ++.long 3266819957,3266819957
800 ++.long 486407649,486407649
801 ++.long 2928907069,2928907069
802 ++.long 1780885068,1780885068
803 ++.long 1513502316,1513502316
804 ++.long 1094664062,1094664062
805 ++.long 49805301,49805301
806 ++.long 1338821763,1338821763
807 ++.long 1546925160,1546925160
808 ++.long 4104496465,4104496465
809 ++.long 887481809,887481809
810 ++.long 150073849,150073849
811 ++.long 2473685474,2473685474
812 ++.long 1943591083,1943591083
813 ++.long 1395732834,1395732834
814 ++.long 1058346282,1058346282
815 ++.long 201589768,201589768
816 ++.long 1388824469,1388824469
817 ++.long 1696801606,1696801606
818 ++.long 1589887901,1589887901
819 ++.long 672667696,672667696
820 ++.long 2711000631,2711000631
821 ++.long 251987210,251987210
822 ++.long 3046808111,3046808111
823 ++.long 151455502,151455502
824 ++.long 907153956,907153956
825 ++.long 2608889883,2608889883
826 ++.long 1038279391,1038279391
827 ++.long 652995533,652995533
828 ++.long 1764173646,1764173646
829 ++.long 3451040383,3451040383
830 ++.long 2675275242,2675275242
831 ++.long 453576978,453576978
832 ++.long 2659418909,2659418909
833 ++.long 1949051992,1949051992
834 ++.long 773462580,773462580
835 ++.long 756751158,756751158
836 ++.long 2993581788,2993581788
837 ++.long 3998898868,3998898868
838 ++.long 4221608027,4221608027
839 ++.long 4132590244,4132590244
840 ++.long 1295727478,1295727478
841 ++.long 1641469623,1641469623
842 ++.long 3467883389,3467883389
843 ++.long 2066295122,2066295122
844 ++.long 1055122397,1055122397
845 ++.long 1898917726,1898917726
846 ++.long 2542044179,2542044179
847 ++.long 4115878822,4115878822
848 ++.long 1758581177,1758581177
849 ++.long 0,0
850 ++.long 753790401,753790401
851 ++.long 1612718144,1612718144
852 ++.long 536673507,536673507
853 ++.long 3367088505,3367088505
854 ++.long 3982187446,3982187446
855 ++.long 3194645204,3194645204
856 ++.long 1187761037,1187761037
857 ++.long 3653156455,3653156455
858 ++.long 1262041458,1262041458
859 ++.long 3729410708,3729410708
860 ++.long 3561770136,3561770136
861 ++.long 3898103984,3898103984
862 ++.long 1255133061,1255133061
863 ++.long 1808847035,1808847035
864 ++.long 720367557,720367557
865 ++.long 3853167183,3853167183
866 ++.long 385612781,385612781
867 ++.long 3309519750,3309519750
868 ++.long 3612167578,3612167578
869 ++.long 1429418854,1429418854
870 ++.long 2491778321,2491778321
871 ++.long 3477423498,3477423498
872 ++.long 284817897,284817897
873 ++.long 100794884,100794884
874 ++.long 2172616702,2172616702
875 ++.long 4031795360,4031795360
876 ++.long 1144798328,1144798328
877 ++.long 3131023141,3131023141
878 ++.long 3819481163,3819481163
879 ++.long 4082192802,4082192802
880 ++.long 4272137053,4272137053
881 ++.long 3225436288,3225436288
882 ++.long 2324664069,2324664069
883 ++.long 2912064063,2912064063
884 ++.long 3164445985,3164445985
885 ++.long 1211644016,1211644016
886 ++.long 83228145,83228145
887 ++.long 3753688163,3753688163
888 ++.long 3249976951,3249976951
889 ++.long 1977277103,1977277103
890 ++.long 1663115586,1663115586
891 ++.long 806359072,806359072
892 ++.long 452984805,452984805
893 ++.long 250868733,250868733
894 ++.long 1842533055,1842533055
895 ++.long 1288555905,1288555905
896 ++.long 336333848,336333848
897 ++.long 890442534,890442534
898 ++.long 804056259,804056259
899 ++.long 3781124030,3781124030
900 ++.long 2727843637,2727843637
901 ++.long 3427026056,3427026056
902 ++.long 957814574,957814574
903 ++.long 1472513171,1472513171
904 ++.long 4071073621,4071073621
905 ++.long 2189328124,2189328124
906 ++.long 1195195770,1195195770
907 ++.long 2892260552,2892260552
908 ++.long 3881655738,3881655738
909 ++.long 723065138,723065138
910 ++.long 2507371494,2507371494
911 ++.long 2690670784,2690670784
912 ++.long 2558624025,2558624025
913 ++.long 3511635870,3511635870
914 ++.long 2145180835,2145180835
915 ++.long 1713513028,1713513028
916 ++.long 2116692564,2116692564
917 ++.long 2878378043,2878378043
918 ++.long 2206763019,2206763019
919 ++.long 3393603212,3393603212
920 ++.long 703524551,703524551
921 ++.long 3552098411,3552098411
922 ++.long 1007948840,1007948840
923 ++.long 2044649127,2044649127
924 ++.long 3797835452,3797835452
925 ++.long 487262998,487262998
926 ++.long 1994120109,1994120109
927 ++.long 1004593371,1004593371
928 ++.long 1446130276,1446130276
929 ++.long 1312438900,1312438900
930 ++.long 503974420,503974420
931 ++.long 3679013266,3679013266
932 ++.long 168166924,168166924
933 ++.long 1814307912,1814307912
934 ++.long 3831258296,3831258296
935 ++.long 1573044895,1573044895
936 ++.long 1859376061,1859376061
937 ++.long 4021070915,4021070915
938 ++.long 2791465668,2791465668
939 ++.long 2828112185,2828112185
940 ++.long 2761266481,2761266481
941 ++.long 937747667,937747667
942 ++.long 2339994098,2339994098
943 ++.long 854058965,854058965
944 ++.long 1137232011,1137232011
945 ++.long 1496790894,1496790894
946 ++.long 3077402074,3077402074
947 ++.long 2358086913,2358086913
948 ++.long 1691735473,1691735473
949 ++.long 3528347292,3528347292
950 ++.long 3769215305,3769215305
951 ++.long 3027004632,3027004632
952 ++.long 4199962284,4199962284
953 ++.long 133494003,133494003
954 ++.long 636152527,636152527
955 ++.long 2942657994,2942657994
956 ++.long 2390391540,2390391540
957 ++.long 3920539207,3920539207
958 ++.long 403179536,403179536
959 ++.long 3585784431,3585784431
960 ++.long 2289596656,2289596656
961 ++.long 1864705354,1864705354
962 ++.long 1915629148,1915629148
963 ++.long 605822008,605822008
964 ++.long 4054230615,4054230615
965 ++.long 3350508659,3350508659
966 ++.long 1371981463,1371981463
967 ++.long 602466507,602466507
968 ++.long 2094914977,2094914977
969 ++.long 2624877800,2624877800
970 ++.long 555687742,555687742
971 ++.long 3712699286,3712699286
972 ++.long 3703422305,3703422305
973 ++.long 2257292045,2257292045
974 ++.long 2240449039,2240449039
975 ++.long 2423288032,2423288032
976 ++.long 1111375484,1111375484
977 ++.long 3300242801,3300242801
978 ++.long 2858837708,2858837708
979 ++.long 3628615824,3628615824
980 ++.long 84083462,84083462
981 ++.long 32962295,32962295
982 ++.long 302911004,302911004
983 ++.long 2741068226,2741068226
984 ++.long 1597322602,1597322602
985 ++.long 4183250862,4183250862
986 ++.long 3501832553,3501832553
987 ++.long 2441512471,2441512471
988 ++.long 1489093017,1489093017
989 ++.long 656219450,656219450
990 ++.long 3114180135,3114180135
991 ++.long 954327513,954327513
992 ++.long 335083755,335083755
993 ++.long 3013122091,3013122091
994 ++.long 856756514,856756514
995 ++.long 3144247762,3144247762
996 ++.long 1893325225,1893325225
997 ++.long 2307821063,2307821063
998 ++.long 2811532339,2811532339
999 ++.long 3063651117,3063651117
1000 ++.long 572399164,572399164
1001 ++.long 2458355477,2458355477
1002 ++.long 552200649,552200649
1003 ++.long 1238290055,1238290055
1004 ++.long 4283782570,4283782570
1005 ++.long 2015897680,2015897680
1006 ++.long 2061492133,2061492133
1007 ++.long 2408352771,2408352771
1008 ++.long 4171342169,4171342169
1009 ++.long 2156497161,2156497161
1010 ++.long 386731290,386731290
1011 ++.long 3669999461,3669999461
1012 ++.long 837215959,837215959
1013 ++.long 3326231172,3326231172
1014 ++.long 3093850320,3093850320
1015 ++.long 3275833730,3275833730
1016 ++.long 2962856233,2962856233
1017 ++.long 1999449434,1999449434
1018 ++.long 286199582,286199582
1019 ++.long 3417354363,3417354363
1020 ++.long 4233385128,4233385128
1021 ++.long 3602627437,3602627437
1022 ++.long 974525996,974525996
1023 ++.byte 99,124,119,123,242,107,111,197
1024 ++.byte 48,1,103,43,254,215,171,118
1025 ++.byte 202,130,201,125,250,89,71,240
1026 ++.byte 173,212,162,175,156,164,114,192
1027 ++.byte 183,253,147,38,54,63,247,204
1028 ++.byte 52,165,229,241,113,216,49,21
1029 ++.byte 4,199,35,195,24,150,5,154
1030 ++.byte 7,18,128,226,235,39,178,117
1031 ++.byte 9,131,44,26,27,110,90,160
1032 ++.byte 82,59,214,179,41,227,47,132
1033 ++.byte 83,209,0,237,32,252,177,91
1034 ++.byte 106,203,190,57,74,76,88,207
1035 ++.byte 208,239,170,251,67,77,51,133
1036 ++.byte 69,249,2,127,80,60,159,168
1037 ++.byte 81,163,64,143,146,157,56,245
1038 ++.byte 188,182,218,33,16,255,243,210
1039 ++.byte 205,12,19,236,95,151,68,23
1040 ++.byte 196,167,126,61,100,93,25,115
1041 ++.byte 96,129,79,220,34,42,144,136
1042 ++.byte 70,238,184,20,222,94,11,219
1043 ++.byte 224,50,58,10,73,6,36,92
1044 ++.byte 194,211,172,98,145,149,228,121
1045 ++.byte 231,200,55,109,141,213,78,169
1046 ++.byte 108,86,244,234,101,122,174,8
1047 ++.byte 186,120,37,46,28,166,180,198
1048 ++.byte 232,221,116,31,75,189,139,138
1049 ++.byte 112,62,181,102,72,3,246,14
1050 ++.byte 97,53,87,185,134,193,29,158
1051 ++.byte 225,248,152,17,105,217,142,148
1052 ++.byte 155,30,135,233,206,85,40,223
1053 ++.byte 140,161,137,13,191,230,66,104
1054 ++.byte 65,153,45,15,176,84,187,22
1055 ++.byte 99,124,119,123,242,107,111,197
1056 ++.byte 48,1,103,43,254,215,171,118
1057 ++.byte 202,130,201,125,250,89,71,240
1058 ++.byte 173,212,162,175,156,164,114,192
1059 ++.byte 183,253,147,38,54,63,247,204
1060 ++.byte 52,165,229,241,113,216,49,21
1061 ++.byte 4,199,35,195,24,150,5,154
1062 ++.byte 7,18,128,226,235,39,178,117
1063 ++.byte 9,131,44,26,27,110,90,160
1064 ++.byte 82,59,214,179,41,227,47,132
1065 ++.byte 83,209,0,237,32,252,177,91
1066 ++.byte 106,203,190,57,74,76,88,207
1067 ++.byte 208,239,170,251,67,77,51,133
1068 ++.byte 69,249,2,127,80,60,159,168
1069 ++.byte 81,163,64,143,146,157,56,245
1070 ++.byte 188,182,218,33,16,255,243,210
1071 ++.byte 205,12,19,236,95,151,68,23
1072 ++.byte 196,167,126,61,100,93,25,115
1073 ++.byte 96,129,79,220,34,42,144,136
1074 ++.byte 70,238,184,20,222,94,11,219
1075 ++.byte 224,50,58,10,73,6,36,92
1076 ++.byte 194,211,172,98,145,149,228,121
1077 ++.byte 231,200,55,109,141,213,78,169
1078 ++.byte 108,86,244,234,101,122,174,8
1079 ++.byte 186,120,37,46,28,166,180,198
1080 ++.byte 232,221,116,31,75,189,139,138
1081 ++.byte 112,62,181,102,72,3,246,14
1082 ++.byte 97,53,87,185,134,193,29,158
1083 ++.byte 225,248,152,17,105,217,142,148
1084 ++.byte 155,30,135,233,206,85,40,223
1085 ++.byte 140,161,137,13,191,230,66,104
1086 ++.byte 65,153,45,15,176,84,187,22
1087 ++.byte 99,124,119,123,242,107,111,197
1088 ++.byte 48,1,103,43,254,215,171,118
1089 ++.byte 202,130,201,125,250,89,71,240
1090 ++.byte 173,212,162,175,156,164,114,192
1091 ++.byte 183,253,147,38,54,63,247,204
1092 ++.byte 52,165,229,241,113,216,49,21
1093 ++.byte 4,199,35,195,24,150,5,154
1094 ++.byte 7,18,128,226,235,39,178,117
1095 ++.byte 9,131,44,26,27,110,90,160
1096 ++.byte 82,59,214,179,41,227,47,132
1097 ++.byte 83,209,0,237,32,252,177,91
1098 ++.byte 106,203,190,57,74,76,88,207
1099 ++.byte 208,239,170,251,67,77,51,133
1100 ++.byte 69,249,2,127,80,60,159,168
1101 ++.byte 81,163,64,143,146,157,56,245
1102 ++.byte 188,182,218,33,16,255,243,210
1103 ++.byte 205,12,19,236,95,151,68,23
1104 ++.byte 196,167,126,61,100,93,25,115
1105 ++.byte 96,129,79,220,34,42,144,136
1106 ++.byte 70,238,184,20,222,94,11,219
1107 ++.byte 224,50,58,10,73,6,36,92
1108 ++.byte 194,211,172,98,145,149,228,121
1109 ++.byte 231,200,55,109,141,213,78,169
1110 ++.byte 108,86,244,234,101,122,174,8
1111 ++.byte 186,120,37,46,28,166,180,198
1112 ++.byte 232,221,116,31,75,189,139,138
1113 ++.byte 112,62,181,102,72,3,246,14
1114 ++.byte 97,53,87,185,134,193,29,158
1115 ++.byte 225,248,152,17,105,217,142,148
1116 ++.byte 155,30,135,233,206,85,40,223
1117 ++.byte 140,161,137,13,191,230,66,104
1118 ++.byte 65,153,45,15,176,84,187,22
1119 ++.byte 99,124,119,123,242,107,111,197
1120 ++.byte 48,1,103,43,254,215,171,118
1121 ++.byte 202,130,201,125,250,89,71,240
1122 ++.byte 173,212,162,175,156,164,114,192
1123 ++.byte 183,253,147,38,54,63,247,204
1124 ++.byte 52,165,229,241,113,216,49,21
1125 ++.byte 4,199,35,195,24,150,5,154
1126 ++.byte 7,18,128,226,235,39,178,117
1127 ++.byte 9,131,44,26,27,110,90,160
1128 ++.byte 82,59,214,179,41,227,47,132
1129 ++.byte 83,209,0,237,32,252,177,91
1130 ++.byte 106,203,190,57,74,76,88,207
1131 ++.byte 208,239,170,251,67,77,51,133
1132 ++.byte 69,249,2,127,80,60,159,168
1133 ++.byte 81,163,64,143,146,157,56,245
1134 ++.byte 188,182,218,33,16,255,243,210
1135 ++.byte 205,12,19,236,95,151,68,23
1136 ++.byte 196,167,126,61,100,93,25,115
1137 ++.byte 96,129,79,220,34,42,144,136
1138 ++.byte 70,238,184,20,222,94,11,219
1139 ++.byte 224,50,58,10,73,6,36,92
1140 ++.byte 194,211,172,98,145,149,228,121
1141 ++.byte 231,200,55,109,141,213,78,169
1142 ++.byte 108,86,244,234,101,122,174,8
1143 ++.byte 186,120,37,46,28,166,180,198
1144 ++.byte 232,221,116,31,75,189,139,138
1145 ++.byte 112,62,181,102,72,3,246,14
1146 ++.byte 97,53,87,185,134,193,29,158
1147 ++.byte 225,248,152,17,105,217,142,148
1148 ++.byte 155,30,135,233,206,85,40,223
1149 ++.byte 140,161,137,13,191,230,66,104
1150 ++.byte 65,153,45,15,176,84,187,22
1151 ++.long 1,2,4,8
1152 ++.long 16,32,64,128
1153 ++.long 27,54,0,0
1154 ++.long 0,0,0,0
1155 ++.globl _AES_encrypt
1156 ++.align 4
1157 ++_AES_encrypt:
1158 ++L_AES_encrypt_begin:
1159 ++ pushl %ebp
1160 ++ pushl %ebx
1161 ++ pushl %esi
1162 ++ pushl %edi
1163 ++ movl 20(%esp),%esi
1164 ++ movl 28(%esp),%edi
1165 ++ movl %esp,%eax
1166 ++ subl $36,%esp
1167 ++ andl $-64,%esp
1168 ++ leal -127(%edi),%ebx
1169 ++ subl %esp,%ebx
1170 ++ negl %ebx
1171 ++ andl $960,%ebx
1172 ++ subl %ebx,%esp
1173 ++ addl $4,%esp
1174 ++ movl %eax,28(%esp)
1175 ++ call L004pic_point
1176 ++L004pic_point:
1177 ++ popl %ebp
1178 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L004pic_point(%ebp),%eax
1179 ++ leal LAES_Te-L004pic_point(%ebp),%ebp
1180 ++ leal 764(%esp),%ebx
1181 ++ subl %ebp,%ebx
1182 ++ andl $768,%ebx
1183 ++ leal 2176(%ebp,%ebx,1),%ebp
1184 ++ btl $25,(%eax)
1185 ++ jnc L005x86
1186 ++ movq (%esi),%mm0
1187 ++ movq 8(%esi),%mm4
1188 ++ call __sse_AES_encrypt_compact
1189 ++ movl 28(%esp),%esp
1190 ++ movl 24(%esp),%esi
1191 ++ movq %mm0,(%esi)
1192 ++ movq %mm4,8(%esi)
1193 ++ emms
1194 ++ popl %edi
1195 ++ popl %esi
1196 ++ popl %ebx
1197 ++ popl %ebp
1198 ++ ret
1199 ++.align 4,0x90
1200 ++L005x86:
1201 ++ movl %ebp,24(%esp)
1202 ++ movl (%esi),%eax
1203 ++ movl 4(%esi),%ebx
1204 ++ movl 8(%esi),%ecx
1205 ++ movl 12(%esi),%edx
1206 ++ call __x86_AES_encrypt_compact
1207 ++ movl 28(%esp),%esp
1208 ++ movl 24(%esp),%esi
1209 ++ movl %eax,(%esi)
1210 ++ movl %ebx,4(%esi)
1211 ++ movl %ecx,8(%esi)
1212 ++ movl %edx,12(%esi)
1213 ++ popl %edi
1214 ++ popl %esi
1215 ++ popl %ebx
1216 ++ popl %ebp
1217 ++ ret
1218 ++.align 4
1219 ++__x86_AES_decrypt_compact:
1220 ++ movl %edi,20(%esp)
1221 ++ xorl (%edi),%eax
1222 ++ xorl 4(%edi),%ebx
1223 ++ xorl 8(%edi),%ecx
1224 ++ xorl 12(%edi),%edx
1225 ++ movl 240(%edi),%esi
1226 ++ leal -2(%esi,%esi,1),%esi
1227 ++ leal (%edi,%esi,8),%esi
1228 ++ movl %esi,24(%esp)
1229 ++ movl -128(%ebp),%edi
1230 ++ movl -96(%ebp),%esi
1231 ++ movl -64(%ebp),%edi
1232 ++ movl -32(%ebp),%esi
1233 ++ movl (%ebp),%edi
1234 ++ movl 32(%ebp),%esi
1235 ++ movl 64(%ebp),%edi
1236 ++ movl 96(%ebp),%esi
1237 ++.align 4,0x90
1238 ++L006loop:
1239 ++ movl %eax,%esi
1240 ++ andl $255,%esi
1241 ++ movzbl -128(%ebp,%esi,1),%esi
1242 ++ movzbl %dh,%edi
1243 ++ movzbl -128(%ebp,%edi,1),%edi
1244 ++ shll $8,%edi
1245 ++ xorl %edi,%esi
1246 ++ movl %ecx,%edi
1247 ++ shrl $16,%edi
1248 ++ andl $255,%edi
1249 ++ movzbl -128(%ebp,%edi,1),%edi
1250 ++ shll $16,%edi
1251 ++ xorl %edi,%esi
1252 ++ movl %ebx,%edi
1253 ++ shrl $24,%edi
1254 ++ movzbl -128(%ebp,%edi,1),%edi
1255 ++ shll $24,%edi
1256 ++ xorl %edi,%esi
1257 ++ movl %esi,4(%esp)
1258 ++ movl %ebx,%esi
1259 ++ andl $255,%esi
1260 ++ movzbl -128(%ebp,%esi,1),%esi
1261 ++ movzbl %ah,%edi
1262 ++ movzbl -128(%ebp,%edi,1),%edi
1263 ++ shll $8,%edi
1264 ++ xorl %edi,%esi
1265 ++ movl %edx,%edi
1266 ++ shrl $16,%edi
1267 ++ andl $255,%edi
1268 ++ movzbl -128(%ebp,%edi,1),%edi
1269 ++ shll $16,%edi
1270 ++ xorl %edi,%esi
1271 ++ movl %ecx,%edi
1272 ++ shrl $24,%edi
1273 ++ movzbl -128(%ebp,%edi,1),%edi
1274 ++ shll $24,%edi
1275 ++ xorl %edi,%esi
1276 ++ movl %esi,8(%esp)
1277 ++ movl %ecx,%esi
1278 ++ andl $255,%esi
1279 ++ movzbl -128(%ebp,%esi,1),%esi
1280 ++ movzbl %bh,%edi
1281 ++ movzbl -128(%ebp,%edi,1),%edi
1282 ++ shll $8,%edi
1283 ++ xorl %edi,%esi
1284 ++ movl %eax,%edi
1285 ++ shrl $16,%edi
1286 ++ andl $255,%edi
1287 ++ movzbl -128(%ebp,%edi,1),%edi
1288 ++ shll $16,%edi
1289 ++ xorl %edi,%esi
1290 ++ movl %edx,%edi
1291 ++ shrl $24,%edi
1292 ++ movzbl -128(%ebp,%edi,1),%edi
1293 ++ shll $24,%edi
1294 ++ xorl %edi,%esi
1295 ++ andl $255,%edx
1296 ++ movzbl -128(%ebp,%edx,1),%edx
1297 ++ movzbl %ch,%ecx
1298 ++ movzbl -128(%ebp,%ecx,1),%ecx
1299 ++ shll $8,%ecx
1300 ++ xorl %ecx,%edx
1301 ++ movl %esi,%ecx
1302 ++ shrl $16,%ebx
1303 ++ andl $255,%ebx
1304 ++ movzbl -128(%ebp,%ebx,1),%ebx
1305 ++ shll $16,%ebx
1306 ++ xorl %ebx,%edx
1307 ++ shrl $24,%eax
1308 ++ movzbl -128(%ebp,%eax,1),%eax
1309 ++ shll $24,%eax
1310 ++ xorl %eax,%edx
1311 ++ movl %ecx,%esi
1312 ++ andl $2155905152,%esi
1313 ++ movl %esi,%edi
1314 ++ shrl $7,%edi
1315 ++ leal (%ecx,%ecx,1),%eax
1316 ++ subl %edi,%esi
1317 ++ andl $4278124286,%eax
1318 ++ andl $454761243,%esi
1319 ++ xorl %eax,%esi
1320 ++ movl %esi,%eax
1321 ++ andl $2155905152,%esi
1322 ++ movl %esi,%edi
1323 ++ shrl $7,%edi
1324 ++ leal (%eax,%eax,1),%ebx
1325 ++ subl %edi,%esi
1326 ++ andl $4278124286,%ebx
1327 ++ andl $454761243,%esi
1328 ++ xorl %ecx,%eax
1329 ++ xorl %ebx,%esi
1330 ++ movl %esi,%ebx
1331 ++ andl $2155905152,%esi
1332 ++ movl %esi,%edi
1333 ++ shrl $7,%edi
1334 ++ leal (%ebx,%ebx,1),%ebp
1335 ++ subl %edi,%esi
1336 ++ andl $4278124286,%ebp
1337 ++ andl $454761243,%esi
1338 ++ xorl %ecx,%ebx
1339 ++ roll $8,%ecx
1340 ++ xorl %esi,%ebp
1341 ++ xorl %eax,%ecx
1342 ++ xorl %ebp,%eax
1343 ++ roll $24,%eax
1344 ++ xorl %ebx,%ecx
1345 ++ xorl %ebp,%ebx
1346 ++ roll $16,%ebx
1347 ++ xorl %ebp,%ecx
1348 ++ roll $8,%ebp
1349 ++ xorl %eax,%ecx
1350 ++ xorl %ebx,%ecx
1351 ++ movl 4(%esp),%eax
1352 ++ xorl %ebp,%ecx
1353 ++ movl %ecx,12(%esp)
1354 ++ movl %edx,%esi
1355 ++ andl $2155905152,%esi
1356 ++ movl %esi,%edi
1357 ++ shrl $7,%edi
1358 ++ leal (%edx,%edx,1),%ebx
1359 ++ subl %edi,%esi
1360 ++ andl $4278124286,%ebx
1361 ++ andl $454761243,%esi
1362 ++ xorl %ebx,%esi
1363 ++ movl %esi,%ebx
1364 ++ andl $2155905152,%esi
1365 ++ movl %esi,%edi
1366 ++ shrl $7,%edi
1367 ++ leal (%ebx,%ebx,1),%ecx
1368 ++ subl %edi,%esi
1369 ++ andl $4278124286,%ecx
1370 ++ andl $454761243,%esi
1371 ++ xorl %edx,%ebx
1372 ++ xorl %ecx,%esi
1373 ++ movl %esi,%ecx
1374 ++ andl $2155905152,%esi
1375 ++ movl %esi,%edi
1376 ++ shrl $7,%edi
1377 ++ leal (%ecx,%ecx,1),%ebp
1378 ++ subl %edi,%esi
1379 ++ andl $4278124286,%ebp
1380 ++ andl $454761243,%esi
1381 ++ xorl %edx,%ecx
1382 ++ roll $8,%edx
1383 ++ xorl %esi,%ebp
1384 ++ xorl %ebx,%edx
1385 ++ xorl %ebp,%ebx
1386 ++ roll $24,%ebx
1387 ++ xorl %ecx,%edx
1388 ++ xorl %ebp,%ecx
1389 ++ roll $16,%ecx
1390 ++ xorl %ebp,%edx
1391 ++ roll $8,%ebp
1392 ++ xorl %ebx,%edx
1393 ++ xorl %ecx,%edx
1394 ++ movl 8(%esp),%ebx
1395 ++ xorl %ebp,%edx
1396 ++ movl %edx,16(%esp)
1397 ++ movl %eax,%esi
1398 ++ andl $2155905152,%esi
1399 ++ movl %esi,%edi
1400 ++ shrl $7,%edi
1401 ++ leal (%eax,%eax,1),%ecx
1402 ++ subl %edi,%esi
1403 ++ andl $4278124286,%ecx
1404 ++ andl $454761243,%esi
1405 ++ xorl %ecx,%esi
1406 ++ movl %esi,%ecx
1407 ++ andl $2155905152,%esi
1408 ++ movl %esi,%edi
1409 ++ shrl $7,%edi
1410 ++ leal (%ecx,%ecx,1),%edx
1411 ++ subl %edi,%esi
1412 ++ andl $4278124286,%edx
1413 ++ andl $454761243,%esi
1414 ++ xorl %eax,%ecx
1415 ++ xorl %edx,%esi
1416 ++ movl %esi,%edx
1417 ++ andl $2155905152,%esi
1418 ++ movl %esi,%edi
1419 ++ shrl $7,%edi
1420 ++ leal (%edx,%edx,1),%ebp
1421 ++ subl %edi,%esi
1422 ++ andl $4278124286,%ebp
1423 ++ andl $454761243,%esi
1424 ++ xorl %eax,%edx
1425 ++ roll $8,%eax
1426 ++ xorl %esi,%ebp
1427 ++ xorl %ecx,%eax
1428 ++ xorl %ebp,%ecx
1429 ++ roll $24,%ecx
1430 ++ xorl %edx,%eax
1431 ++ xorl %ebp,%edx
1432 ++ roll $16,%edx
1433 ++ xorl %ebp,%eax
1434 ++ roll $8,%ebp
1435 ++ xorl %ecx,%eax
1436 ++ xorl %edx,%eax
1437 ++ xorl %ebp,%eax
1438 ++ movl %ebx,%esi
1439 ++ andl $2155905152,%esi
1440 ++ movl %esi,%edi
1441 ++ shrl $7,%edi
1442 ++ leal (%ebx,%ebx,1),%ecx
1443 ++ subl %edi,%esi
1444 ++ andl $4278124286,%ecx
1445 ++ andl $454761243,%esi
1446 ++ xorl %ecx,%esi
1447 ++ movl %esi,%ecx
1448 ++ andl $2155905152,%esi
1449 ++ movl %esi,%edi
1450 ++ shrl $7,%edi
1451 ++ leal (%ecx,%ecx,1),%edx
1452 ++ subl %edi,%esi
1453 ++ andl $4278124286,%edx
1454 ++ andl $454761243,%esi
1455 ++ xorl %ebx,%ecx
1456 ++ xorl %edx,%esi
1457 ++ movl %esi,%edx
1458 ++ andl $2155905152,%esi
1459 ++ movl %esi,%edi
1460 ++ shrl $7,%edi
1461 ++ leal (%edx,%edx,1),%ebp
1462 ++ subl %edi,%esi
1463 ++ andl $4278124286,%ebp
1464 ++ andl $454761243,%esi
1465 ++ xorl %ebx,%edx
1466 ++ roll $8,%ebx
1467 ++ xorl %esi,%ebp
1468 ++ xorl %ecx,%ebx
1469 ++ xorl %ebp,%ecx
1470 ++ roll $24,%ecx
1471 ++ xorl %edx,%ebx
1472 ++ xorl %ebp,%edx
1473 ++ roll $16,%edx
1474 ++ xorl %ebp,%ebx
1475 ++ roll $8,%ebp
1476 ++ xorl %ecx,%ebx
1477 ++ xorl %edx,%ebx
1478 ++ movl 12(%esp),%ecx
1479 ++ xorl %ebp,%ebx
1480 ++ movl 16(%esp),%edx
1481 ++ movl 20(%esp),%edi
1482 ++ movl 28(%esp),%ebp
1483 ++ addl $16,%edi
1484 ++ xorl (%edi),%eax
1485 ++ xorl 4(%edi),%ebx
1486 ++ xorl 8(%edi),%ecx
1487 ++ xorl 12(%edi),%edx
1488 ++ cmpl 24(%esp),%edi
1489 ++ movl %edi,20(%esp)
1490 ++ jb L006loop
1491 ++ movl %eax,%esi
1492 ++ andl $255,%esi
1493 ++ movzbl -128(%ebp,%esi,1),%esi
1494 ++ movzbl %dh,%edi
1495 ++ movzbl -128(%ebp,%edi,1),%edi
1496 ++ shll $8,%edi
1497 ++ xorl %edi,%esi
1498 ++ movl %ecx,%edi
1499 ++ shrl $16,%edi
1500 ++ andl $255,%edi
1501 ++ movzbl -128(%ebp,%edi,1),%edi
1502 ++ shll $16,%edi
1503 ++ xorl %edi,%esi
1504 ++ movl %ebx,%edi
1505 ++ shrl $24,%edi
1506 ++ movzbl -128(%ebp,%edi,1),%edi
1507 ++ shll $24,%edi
1508 ++ xorl %edi,%esi
1509 ++ movl %esi,4(%esp)
1510 ++ movl %ebx,%esi
1511 ++ andl $255,%esi
1512 ++ movzbl -128(%ebp,%esi,1),%esi
1513 ++ movzbl %ah,%edi
1514 ++ movzbl -128(%ebp,%edi,1),%edi
1515 ++ shll $8,%edi
1516 ++ xorl %edi,%esi
1517 ++ movl %edx,%edi
1518 ++ shrl $16,%edi
1519 ++ andl $255,%edi
1520 ++ movzbl -128(%ebp,%edi,1),%edi
1521 ++ shll $16,%edi
1522 ++ xorl %edi,%esi
1523 ++ movl %ecx,%edi
1524 ++ shrl $24,%edi
1525 ++ movzbl -128(%ebp,%edi,1),%edi
1526 ++ shll $24,%edi
1527 ++ xorl %edi,%esi
1528 ++ movl %esi,8(%esp)
1529 ++ movl %ecx,%esi
1530 ++ andl $255,%esi
1531 ++ movzbl -128(%ebp,%esi,1),%esi
1532 ++ movzbl %bh,%edi
1533 ++ movzbl -128(%ebp,%edi,1),%edi
1534 ++ shll $8,%edi
1535 ++ xorl %edi,%esi
1536 ++ movl %eax,%edi
1537 ++ shrl $16,%edi
1538 ++ andl $255,%edi
1539 ++ movzbl -128(%ebp,%edi,1),%edi
1540 ++ shll $16,%edi
1541 ++ xorl %edi,%esi
1542 ++ movl %edx,%edi
1543 ++ shrl $24,%edi
1544 ++ movzbl -128(%ebp,%edi,1),%edi
1545 ++ shll $24,%edi
1546 ++ xorl %edi,%esi
1547 ++ movl 20(%esp),%edi
1548 ++ andl $255,%edx
1549 ++ movzbl -128(%ebp,%edx,1),%edx
1550 ++ movzbl %ch,%ecx
1551 ++ movzbl -128(%ebp,%ecx,1),%ecx
1552 ++ shll $8,%ecx
1553 ++ xorl %ecx,%edx
1554 ++ movl %esi,%ecx
1555 ++ shrl $16,%ebx
1556 ++ andl $255,%ebx
1557 ++ movzbl -128(%ebp,%ebx,1),%ebx
1558 ++ shll $16,%ebx
1559 ++ xorl %ebx,%edx
1560 ++ movl 8(%esp),%ebx
1561 ++ shrl $24,%eax
1562 ++ movzbl -128(%ebp,%eax,1),%eax
1563 ++ shll $24,%eax
1564 ++ xorl %eax,%edx
1565 ++ movl 4(%esp),%eax
1566 ++ xorl 16(%edi),%eax
1567 ++ xorl 20(%edi),%ebx
1568 ++ xorl 24(%edi),%ecx
1569 ++ xorl 28(%edi),%edx
1570 ++ ret
1571 ++.align 4
1572 ++__sse_AES_decrypt_compact:
1573 ++ pxor (%edi),%mm0
1574 ++ pxor 8(%edi),%mm4
1575 ++ movl 240(%edi),%esi
1576 ++ leal -2(%esi,%esi,1),%esi
1577 ++ leal (%edi,%esi,8),%esi
1578 ++ movl %esi,24(%esp)
1579 ++ movl $454761243,%eax
1580 ++ movl %eax,8(%esp)
1581 ++ movl %eax,12(%esp)
1582 ++ movl -128(%ebp),%eax
1583 ++ movl -96(%ebp),%ebx
1584 ++ movl -64(%ebp),%ecx
1585 ++ movl -32(%ebp),%edx
1586 ++ movl (%ebp),%eax
1587 ++ movl 32(%ebp),%ebx
1588 ++ movl 64(%ebp),%ecx
1589 ++ movl 96(%ebp),%edx
1590 ++.align 4,0x90
1591 ++L007loop:
1592 ++ pshufw $12,%mm0,%mm1
1593 ++ movd %mm1,%eax
1594 ++ pshufw $9,%mm4,%mm5
1595 ++ movzbl %al,%esi
1596 ++ movzbl -128(%ebp,%esi,1),%ecx
1597 ++ movd %mm5,%ebx
1598 ++ movzbl %ah,%edx
1599 ++ movzbl -128(%ebp,%edx,1),%edx
1600 ++ shll $8,%edx
1601 ++ pshufw $6,%mm0,%mm2
1602 ++ movzbl %bl,%esi
1603 ++ movzbl -128(%ebp,%esi,1),%esi
1604 ++ shll $16,%esi
1605 ++ orl %esi,%ecx
1606 ++ shrl $16,%eax
1607 ++ movzbl %bh,%esi
1608 ++ movzbl -128(%ebp,%esi,1),%esi
1609 ++ shll $24,%esi
1610 ++ orl %esi,%edx
1611 ++ shrl $16,%ebx
1612 ++ pshufw $3,%mm4,%mm6
1613 ++ movzbl %ah,%esi
1614 ++ movzbl -128(%ebp,%esi,1),%esi
1615 ++ shll $24,%esi
1616 ++ orl %esi,%ecx
1617 ++ movzbl %bh,%esi
1618 ++ movzbl -128(%ebp,%esi,1),%esi
1619 ++ shll $8,%esi
1620 ++ orl %esi,%ecx
1621 ++ movd %ecx,%mm0
1622 ++ movzbl %al,%esi
1623 ++ movd %mm2,%eax
1624 ++ movzbl -128(%ebp,%esi,1),%ecx
1625 ++ shll $16,%ecx
1626 ++ movzbl %bl,%esi
1627 ++ movd %mm6,%ebx
1628 ++ movzbl -128(%ebp,%esi,1),%esi
1629 ++ orl %esi,%ecx
1630 ++ movzbl %al,%esi
1631 ++ movzbl -128(%ebp,%esi,1),%esi
1632 ++ orl %esi,%edx
1633 ++ movzbl %bl,%esi
1634 ++ movzbl -128(%ebp,%esi,1),%esi
1635 ++ shll $16,%esi
1636 ++ orl %esi,%edx
1637 ++ movd %edx,%mm1
1638 ++ movzbl %ah,%esi
1639 ++ movzbl -128(%ebp,%esi,1),%edx
1640 ++ shll $8,%edx
1641 ++ movzbl %bh,%esi
1642 ++ shrl $16,%eax
1643 ++ movzbl -128(%ebp,%esi,1),%esi
1644 ++ shll $24,%esi
1645 ++ orl %esi,%edx
1646 ++ shrl $16,%ebx
1647 ++ punpckldq %mm1,%mm0
1648 ++ movzbl %bh,%esi
1649 ++ movzbl -128(%ebp,%esi,1),%esi
1650 ++ shll $8,%esi
1651 ++ orl %esi,%ecx
1652 ++ andl $255,%ebx
1653 ++ movzbl -128(%ebp,%ebx,1),%ebx
1654 ++ orl %ebx,%edx
1655 ++ movzbl %al,%esi
1656 ++ movzbl -128(%ebp,%esi,1),%esi
1657 ++ shll $16,%esi
1658 ++ orl %esi,%edx
1659 ++ movd %edx,%mm4
1660 ++ movzbl %ah,%eax
1661 ++ movzbl -128(%ebp,%eax,1),%eax
1662 ++ shll $24,%eax
1663 ++ orl %eax,%ecx
1664 ++ movd %ecx,%mm5
1665 ++ punpckldq %mm5,%mm4
1666 ++ addl $16,%edi
1667 ++ cmpl 24(%esp),%edi
1668 ++ ja L008out
1669 ++ movq %mm0,%mm3
1670 ++ movq %mm4,%mm7
1671 ++ pshufw $228,%mm0,%mm2
1672 ++ pshufw $228,%mm4,%mm6
1673 ++ movq %mm0,%mm1
1674 ++ movq %mm4,%mm5
1675 ++ pshufw $177,%mm0,%mm0
1676 ++ pshufw $177,%mm4,%mm4
1677 ++ pslld $8,%mm2
1678 ++ pslld $8,%mm6
1679 ++ psrld $8,%mm3
1680 ++ psrld $8,%mm7
1681 ++ pxor %mm2,%mm0
1682 ++ pxor %mm6,%mm4
1683 ++ pxor %mm3,%mm0
1684 ++ pxor %mm7,%mm4
1685 ++ pslld $16,%mm2
1686 ++ pslld $16,%mm6
1687 ++ psrld $16,%mm3
1688 ++ psrld $16,%mm7
1689 ++ pxor %mm2,%mm0
1690 ++ pxor %mm6,%mm4
1691 ++ pxor %mm3,%mm0
1692 ++ pxor %mm7,%mm4
1693 ++ movq 8(%esp),%mm3
1694 ++ pxor %mm2,%mm2
1695 ++ pxor %mm6,%mm6
1696 ++ pcmpgtb %mm1,%mm2
1697 ++ pcmpgtb %mm5,%mm6
1698 ++ pand %mm3,%mm2
1699 ++ pand %mm3,%mm6
1700 ++ paddb %mm1,%mm1
1701 ++ paddb %mm5,%mm5
1702 ++ pxor %mm2,%mm1
1703 ++ pxor %mm6,%mm5
1704 ++ movq %mm1,%mm3
1705 ++ movq %mm5,%mm7
1706 ++ movq %mm1,%mm2
1707 ++ movq %mm5,%mm6
1708 ++ pxor %mm1,%mm0
1709 ++ pxor %mm5,%mm4
1710 ++ pslld $24,%mm3
1711 ++ pslld $24,%mm7
1712 ++ psrld $8,%mm2
1713 ++ psrld $8,%mm6
1714 ++ pxor %mm3,%mm0
1715 ++ pxor %mm7,%mm4
1716 ++ pxor %mm2,%mm0
1717 ++ pxor %mm6,%mm4
1718 ++ movq 8(%esp),%mm2
1719 ++ pxor %mm3,%mm3
1720 ++ pxor %mm7,%mm7
1721 ++ pcmpgtb %mm1,%mm3
1722 ++ pcmpgtb %mm5,%mm7
1723 ++ pand %mm2,%mm3
1724 ++ pand %mm2,%mm7
1725 ++ paddb %mm1,%mm1
1726 ++ paddb %mm5,%mm5
1727 ++ pxor %mm3,%mm1
1728 ++ pxor %mm7,%mm5
1729 ++ pshufw $177,%mm1,%mm3
1730 ++ pshufw $177,%mm5,%mm7
1731 ++ pxor %mm1,%mm0
1732 ++ pxor %mm5,%mm4
1733 ++ pxor %mm3,%mm0
1734 ++ pxor %mm7,%mm4
1735 ++ pxor %mm3,%mm3
1736 ++ pxor %mm7,%mm7
1737 ++ pcmpgtb %mm1,%mm3
1738 ++ pcmpgtb %mm5,%mm7
1739 ++ pand %mm2,%mm3
1740 ++ pand %mm2,%mm7
1741 ++ paddb %mm1,%mm1
1742 ++ paddb %mm5,%mm5
1743 ++ pxor %mm3,%mm1
1744 ++ pxor %mm7,%mm5
1745 ++ pxor %mm1,%mm0
1746 ++ pxor %mm5,%mm4
1747 ++ movq %mm1,%mm3
1748 ++ movq %mm5,%mm7
1749 ++ pshufw $177,%mm1,%mm2
1750 ++ pshufw $177,%mm5,%mm6
1751 ++ pxor %mm2,%mm0
1752 ++ pxor %mm6,%mm4
1753 ++ pslld $8,%mm1
1754 ++ pslld $8,%mm5
1755 ++ psrld $8,%mm3
1756 ++ psrld $8,%mm7
1757 ++ movq (%edi),%mm2
1758 ++ movq 8(%edi),%mm6
1759 ++ pxor %mm1,%mm0
1760 ++ pxor %mm5,%mm4
1761 ++ pxor %mm3,%mm0
1762 ++ pxor %mm7,%mm4
1763 ++ movl -128(%ebp),%eax
1764 ++ pslld $16,%mm1
1765 ++ pslld $16,%mm5
1766 ++ movl -64(%ebp),%ebx
1767 ++ psrld $16,%mm3
1768 ++ psrld $16,%mm7
1769 ++ movl (%ebp),%ecx
1770 ++ pxor %mm1,%mm0
1771 ++ pxor %mm5,%mm4
1772 ++ movl 64(%ebp),%edx
1773 ++ pxor %mm3,%mm0
1774 ++ pxor %mm7,%mm4
1775 ++ pxor %mm2,%mm0
1776 ++ pxor %mm6,%mm4
1777 ++ jmp L007loop
1778 ++.align 4,0x90
1779 ++L008out:
1780 ++ pxor (%edi),%mm0
1781 ++ pxor 8(%edi),%mm4
1782 ++ ret
1783 ++.align 4
1784 ++__x86_AES_decrypt:
1785 ++ movl %edi,20(%esp)
1786 ++ xorl (%edi),%eax
1787 ++ xorl 4(%edi),%ebx
1788 ++ xorl 8(%edi),%ecx
1789 ++ xorl 12(%edi),%edx
1790 ++ movl 240(%edi),%esi
1791 ++ leal -2(%esi,%esi,1),%esi
1792 ++ leal (%edi,%esi,8),%esi
1793 ++ movl %esi,24(%esp)
1794 ++.align 4,0x90
1795 ++L009loop:
1796 ++ movl %eax,%esi
1797 ++ andl $255,%esi
1798 ++ movl (%ebp,%esi,8),%esi
1799 ++ movzbl %dh,%edi
1800 ++ xorl 3(%ebp,%edi,8),%esi
1801 ++ movl %ecx,%edi
1802 ++ shrl $16,%edi
1803 ++ andl $255,%edi
1804 ++ xorl 2(%ebp,%edi,8),%esi
1805 ++ movl %ebx,%edi
1806 ++ shrl $24,%edi
1807 ++ xorl 1(%ebp,%edi,8),%esi
1808 ++ movl %esi,4(%esp)
1809 ++ movl %ebx,%esi
1810 ++ andl $255,%esi
1811 ++ movl (%ebp,%esi,8),%esi
1812 ++ movzbl %ah,%edi
1813 ++ xorl 3(%ebp,%edi,8),%esi
1814 ++ movl %edx,%edi
1815 ++ shrl $16,%edi
1816 ++ andl $255,%edi
1817 ++ xorl 2(%ebp,%edi,8),%esi
1818 ++ movl %ecx,%edi
1819 ++ shrl $24,%edi
1820 ++ xorl 1(%ebp,%edi,8),%esi
1821 ++ movl %esi,8(%esp)
1822 ++ movl %ecx,%esi
1823 ++ andl $255,%esi
1824 ++ movl (%ebp,%esi,8),%esi
1825 ++ movzbl %bh,%edi
1826 ++ xorl 3(%ebp,%edi,8),%esi
1827 ++ movl %eax,%edi
1828 ++ shrl $16,%edi
1829 ++ andl $255,%edi
1830 ++ xorl 2(%ebp,%edi,8),%esi
1831 ++ movl %edx,%edi
1832 ++ shrl $24,%edi
1833 ++ xorl 1(%ebp,%edi,8),%esi
1834 ++ movl 20(%esp),%edi
1835 ++ andl $255,%edx
1836 ++ movl (%ebp,%edx,8),%edx
1837 ++ movzbl %ch,%ecx
1838 ++ xorl 3(%ebp,%ecx,8),%edx
1839 ++ movl %esi,%ecx
1840 ++ shrl $16,%ebx
1841 ++ andl $255,%ebx
1842 ++ xorl 2(%ebp,%ebx,8),%edx
1843 ++ movl 8(%esp),%ebx
1844 ++ shrl $24,%eax
1845 ++ xorl 1(%ebp,%eax,8),%edx
1846 ++ movl 4(%esp),%eax
1847 ++ addl $16,%edi
1848 ++ xorl (%edi),%eax
1849 ++ xorl 4(%edi),%ebx
1850 ++ xorl 8(%edi),%ecx
1851 ++ xorl 12(%edi),%edx
1852 ++ cmpl 24(%esp),%edi
1853 ++ movl %edi,20(%esp)
1854 ++ jb L009loop
1855 ++ leal 2176(%ebp),%ebp
1856 ++ movl -128(%ebp),%edi
1857 ++ movl -96(%ebp),%esi
1858 ++ movl -64(%ebp),%edi
1859 ++ movl -32(%ebp),%esi
1860 ++ movl (%ebp),%edi
1861 ++ movl 32(%ebp),%esi
1862 ++ movl 64(%ebp),%edi
1863 ++ movl 96(%ebp),%esi
1864 ++ leal -128(%ebp),%ebp
1865 ++ movl %eax,%esi
1866 ++ andl $255,%esi
1867 ++ movzbl (%ebp,%esi,1),%esi
1868 ++ movzbl %dh,%edi
1869 ++ movzbl (%ebp,%edi,1),%edi
1870 ++ shll $8,%edi
1871 ++ xorl %edi,%esi
1872 ++ movl %ecx,%edi
1873 ++ shrl $16,%edi
1874 ++ andl $255,%edi
1875 ++ movzbl (%ebp,%edi,1),%edi
1876 ++ shll $16,%edi
1877 ++ xorl %edi,%esi
1878 ++ movl %ebx,%edi
1879 ++ shrl $24,%edi
1880 ++ movzbl (%ebp,%edi,1),%edi
1881 ++ shll $24,%edi
1882 ++ xorl %edi,%esi
1883 ++ movl %esi,4(%esp)
1884 ++ movl %ebx,%esi
1885 ++ andl $255,%esi
1886 ++ movzbl (%ebp,%esi,1),%esi
1887 ++ movzbl %ah,%edi
1888 ++ movzbl (%ebp,%edi,1),%edi
1889 ++ shll $8,%edi
1890 ++ xorl %edi,%esi
1891 ++ movl %edx,%edi
1892 ++ shrl $16,%edi
1893 ++ andl $255,%edi
1894 ++ movzbl (%ebp,%edi,1),%edi
1895 ++ shll $16,%edi
1896 ++ xorl %edi,%esi
1897 ++ movl %ecx,%edi
1898 ++ shrl $24,%edi
1899 ++ movzbl (%ebp,%edi,1),%edi
1900 ++ shll $24,%edi
1901 ++ xorl %edi,%esi
1902 ++ movl %esi,8(%esp)
1903 ++ movl %ecx,%esi
1904 ++ andl $255,%esi
1905 ++ movzbl (%ebp,%esi,1),%esi
1906 ++ movzbl %bh,%edi
1907 ++ movzbl (%ebp,%edi,1),%edi
1908 ++ shll $8,%edi
1909 ++ xorl %edi,%esi
1910 ++ movl %eax,%edi
1911 ++ shrl $16,%edi
1912 ++ andl $255,%edi
1913 ++ movzbl (%ebp,%edi,1),%edi
1914 ++ shll $16,%edi
1915 ++ xorl %edi,%esi
1916 ++ movl %edx,%edi
1917 ++ shrl $24,%edi
1918 ++ movzbl (%ebp,%edi,1),%edi
1919 ++ shll $24,%edi
1920 ++ xorl %edi,%esi
1921 ++ movl 20(%esp),%edi
1922 ++ andl $255,%edx
1923 ++ movzbl (%ebp,%edx,1),%edx
1924 ++ movzbl %ch,%ecx
1925 ++ movzbl (%ebp,%ecx,1),%ecx
1926 ++ shll $8,%ecx
1927 ++ xorl %ecx,%edx
1928 ++ movl %esi,%ecx
1929 ++ shrl $16,%ebx
1930 ++ andl $255,%ebx
1931 ++ movzbl (%ebp,%ebx,1),%ebx
1932 ++ shll $16,%ebx
1933 ++ xorl %ebx,%edx
1934 ++ movl 8(%esp),%ebx
1935 ++ shrl $24,%eax
1936 ++ movzbl (%ebp,%eax,1),%eax
1937 ++ shll $24,%eax
1938 ++ xorl %eax,%edx
1939 ++ movl 4(%esp),%eax
1940 ++ leal -2048(%ebp),%ebp
1941 ++ addl $16,%edi
1942 ++ xorl (%edi),%eax
1943 ++ xorl 4(%edi),%ebx
1944 ++ xorl 8(%edi),%ecx
1945 ++ xorl 12(%edi),%edx
1946 ++ ret
1947 ++.align 6,0x90
1948 ++LAES_Td:
1949 ++.long 1353184337,1353184337
1950 ++.long 1399144830,1399144830
1951 ++.long 3282310938,3282310938
1952 ++.long 2522752826,2522752826
1953 ++.long 3412831035,3412831035
1954 ++.long 4047871263,4047871263
1955 ++.long 2874735276,2874735276
1956 ++.long 2466505547,2466505547
1957 ++.long 1442459680,1442459680
1958 ++.long 4134368941,4134368941
1959 ++.long 2440481928,2440481928
1960 ++.long 625738485,625738485
1961 ++.long 4242007375,4242007375
1962 ++.long 3620416197,3620416197
1963 ++.long 2151953702,2151953702
1964 ++.long 2409849525,2409849525
1965 ++.long 1230680542,1230680542
1966 ++.long 1729870373,1729870373
1967 ++.long 2551114309,2551114309
1968 ++.long 3787521629,3787521629
1969 ++.long 41234371,41234371
1970 ++.long 317738113,317738113
1971 ++.long 2744600205,2744600205
1972 ++.long 3338261355,3338261355
1973 ++.long 3881799427,3881799427
1974 ++.long 2510066197,2510066197
1975 ++.long 3950669247,3950669247
1976 ++.long 3663286933,3663286933
1977 ++.long 763608788,763608788
1978 ++.long 3542185048,3542185048
1979 ++.long 694804553,694804553
1980 ++.long 1154009486,1154009486
1981 ++.long 1787413109,1787413109
1982 ++.long 2021232372,2021232372
1983 ++.long 1799248025,1799248025
1984 ++.long 3715217703,3715217703
1985 ++.long 3058688446,3058688446
1986 ++.long 397248752,397248752
1987 ++.long 1722556617,1722556617
1988 ++.long 3023752829,3023752829
1989 ++.long 407560035,407560035
1990 ++.long 2184256229,2184256229
1991 ++.long 1613975959,1613975959
1992 ++.long 1165972322,1165972322
1993 ++.long 3765920945,3765920945
1994 ++.long 2226023355,2226023355
1995 ++.long 480281086,480281086
1996 ++.long 2485848313,2485848313
1997 ++.long 1483229296,1483229296
1998 ++.long 436028815,436028815
1999 ++.long 2272059028,2272059028
2000 ++.long 3086515026,3086515026
2001 ++.long 601060267,601060267
2002 ++.long 3791801202,3791801202
2003 ++.long 1468997603,1468997603
2004 ++.long 715871590,715871590
2005 ++.long 120122290,120122290
2006 ++.long 63092015,63092015
2007 ++.long 2591802758,2591802758
2008 ++.long 2768779219,2768779219
2009 ++.long 4068943920,4068943920
2010 ++.long 2997206819,2997206819
2011 ++.long 3127509762,3127509762
2012 ++.long 1552029421,1552029421
2013 ++.long 723308426,723308426
2014 ++.long 2461301159,2461301159
2015 ++.long 4042393587,4042393587
2016 ++.long 2715969870,2715969870
2017 ++.long 3455375973,3455375973
2018 ++.long 3586000134,3586000134
2019 ++.long 526529745,526529745
2020 ++.long 2331944644,2331944644
2021 ++.long 2639474228,2639474228
2022 ++.long 2689987490,2689987490
2023 ++.long 853641733,853641733
2024 ++.long 1978398372,1978398372
2025 ++.long 971801355,971801355
2026 ++.long 2867814464,2867814464
2027 ++.long 111112542,111112542
2028 ++.long 1360031421,1360031421
2029 ++.long 4186579262,4186579262
2030 ++.long 1023860118,1023860118
2031 ++.long 2919579357,2919579357
2032 ++.long 1186850381,1186850381
2033 ++.long 3045938321,3045938321
2034 ++.long 90031217,90031217
2035 ++.long 1876166148,1876166148
2036 ++.long 4279586912,4279586912
2037 ++.long 620468249,620468249
2038 ++.long 2548678102,2548678102
2039 ++.long 3426959497,3426959497
2040 ++.long 2006899047,2006899047
2041 ++.long 3175278768,3175278768
2042 ++.long 2290845959,2290845959
2043 ++.long 945494503,945494503
2044 ++.long 3689859193,3689859193
2045 ++.long 1191869601,1191869601
2046 ++.long 3910091388,3910091388
2047 ++.long 3374220536,3374220536
2048 ++.long 0,0
2049 ++.long 2206629897,2206629897
2050 ++.long 1223502642,1223502642
2051 ++.long 2893025566,2893025566
2052 ++.long 1316117100,1316117100
2053 ++.long 4227796733,4227796733
2054 ++.long 1446544655,1446544655
2055 ++.long 517320253,517320253
2056 ++.long 658058550,658058550
2057 ++.long 1691946762,1691946762
2058 ++.long 564550760,564550760
2059 ++.long 3511966619,3511966619
2060 ++.long 976107044,976107044
2061 ++.long 2976320012,2976320012
2062 ++.long 266819475,266819475
2063 ++.long 3533106868,3533106868
2064 ++.long 2660342555,2660342555
2065 ++.long 1338359936,1338359936
2066 ++.long 2720062561,2720062561
2067 ++.long 1766553434,1766553434
2068 ++.long 370807324,370807324
2069 ++.long 179999714,179999714
2070 ++.long 3844776128,3844776128
2071 ++.long 1138762300,1138762300
2072 ++.long 488053522,488053522
2073 ++.long 185403662,185403662
2074 ++.long 2915535858,2915535858
2075 ++.long 3114841645,3114841645
2076 ++.long 3366526484,3366526484
2077 ++.long 2233069911,2233069911
2078 ++.long 1275557295,1275557295
2079 ++.long 3151862254,3151862254
2080 ++.long 4250959779,4250959779
2081 ++.long 2670068215,2670068215
2082 ++.long 3170202204,3170202204
2083 ++.long 3309004356,3309004356
2084 ++.long 880737115,880737115
2085 ++.long 1982415755,1982415755
2086 ++.long 3703972811,3703972811
2087 ++.long 1761406390,1761406390
2088 ++.long 1676797112,1676797112
2089 ++.long 3403428311,3403428311
2090 ++.long 277177154,277177154
2091 ++.long 1076008723,1076008723
2092 ++.long 538035844,538035844
2093 ++.long 2099530373,2099530373
2094 ++.long 4164795346,4164795346
2095 ++.long 288553390,288553390
2096 ++.long 1839278535,1839278535
2097 ++.long 1261411869,1261411869
2098 ++.long 4080055004,4080055004
2099 ++.long 3964831245,3964831245
2100 ++.long 3504587127,3504587127
2101 ++.long 1813426987,1813426987
2102 ++.long 2579067049,2579067049
2103 ++.long 4199060497,4199060497
2104 ++.long 577038663,577038663
2105 ++.long 3297574056,3297574056
2106 ++.long 440397984,440397984
2107 ++.long 3626794326,3626794326
2108 ++.long 4019204898,4019204898
2109 ++.long 3343796615,3343796615
2110 ++.long 3251714265,3251714265
2111 ++.long 4272081548,4272081548
2112 ++.long 906744984,906744984
2113 ++.long 3481400742,3481400742
2114 ++.long 685669029,685669029
2115 ++.long 646887386,646887386
2116 ++.long 2764025151,2764025151
2117 ++.long 3835509292,3835509292
2118 ++.long 227702864,227702864
2119 ++.long 2613862250,2613862250
2120 ++.long 1648787028,1648787028
2121 ++.long 3256061430,3256061430
2122 ++.long 3904428176,3904428176
2123 ++.long 1593260334,1593260334
2124 ++.long 4121936770,4121936770
2125 ++.long 3196083615,3196083615
2126 ++.long 2090061929,2090061929
2127 ++.long 2838353263,2838353263
2128 ++.long 3004310991,3004310991
2129 ++.long 999926984,999926984
2130 ++.long 2809993232,2809993232
2131 ++.long 1852021992,1852021992
2132 ++.long 2075868123,2075868123
2133 ++.long 158869197,158869197
2134 ++.long 4095236462,4095236462
2135 ++.long 28809964,28809964
2136 ++.long 2828685187,2828685187
2137 ++.long 1701746150,1701746150
2138 ++.long 2129067946,2129067946
2139 ++.long 147831841,147831841
2140 ++.long 3873969647,3873969647
2141 ++.long 3650873274,3650873274
2142 ++.long 3459673930,3459673930
2143 ++.long 3557400554,3557400554
2144 ++.long 3598495785,3598495785
2145 ++.long 2947720241,2947720241
2146 ++.long 824393514,824393514
2147 ++.long 815048134,815048134
2148 ++.long 3227951669,3227951669
2149 ++.long 935087732,935087732
2150 ++.long 2798289660,2798289660
2151 ++.long 2966458592,2966458592
2152 ++.long 366520115,366520115
2153 ++.long 1251476721,1251476721
2154 ++.long 4158319681,4158319681
2155 ++.long 240176511,240176511
2156 ++.long 804688151,804688151
2157 ++.long 2379631990,2379631990
2158 ++.long 1303441219,1303441219
2159 ++.long 1414376140,1414376140
2160 ++.long 3741619940,3741619940
2161 ++.long 3820343710,3820343710
2162 ++.long 461924940,461924940
2163 ++.long 3089050817,3089050817
2164 ++.long 2136040774,2136040774
2165 ++.long 82468509,82468509
2166 ++.long 1563790337,1563790337
2167 ++.long 1937016826,1937016826
2168 ++.long 776014843,776014843
2169 ++.long 1511876531,1511876531
2170 ++.long 1389550482,1389550482
2171 ++.long 861278441,861278441
2172 ++.long 323475053,323475053
2173 ++.long 2355222426,2355222426
2174 ++.long 2047648055,2047648055
2175 ++.long 2383738969,2383738969
2176 ++.long 2302415851,2302415851
2177 ++.long 3995576782,3995576782
2178 ++.long 902390199,902390199
2179 ++.long 3991215329,3991215329
2180 ++.long 1018251130,1018251130
2181 ++.long 1507840668,1507840668
2182 ++.long 1064563285,1064563285
2183 ++.long 2043548696,2043548696
2184 ++.long 3208103795,3208103795
2185 ++.long 3939366739,3939366739
2186 ++.long 1537932639,1537932639
2187 ++.long 342834655,342834655
2188 ++.long 2262516856,2262516856
2189 ++.long 2180231114,2180231114
2190 ++.long 1053059257,1053059257
2191 ++.long 741614648,741614648
2192 ++.long 1598071746,1598071746
2193 ++.long 1925389590,1925389590
2194 ++.long 203809468,203809468
2195 ++.long 2336832552,2336832552
2196 ++.long 1100287487,1100287487
2197 ++.long 1895934009,1895934009
2198 ++.long 3736275976,3736275976
2199 ++.long 2632234200,2632234200
2200 ++.long 2428589668,2428589668
2201 ++.long 1636092795,1636092795
2202 ++.long 1890988757,1890988757
2203 ++.long 1952214088,1952214088
2204 ++.long 1113045200,1113045200
2205 ++.byte 82,9,106,213,48,54,165,56
2206 ++.byte 191,64,163,158,129,243,215,251
2207 ++.byte 124,227,57,130,155,47,255,135
2208 ++.byte 52,142,67,68,196,222,233,203
2209 ++.byte 84,123,148,50,166,194,35,61
2210 ++.byte 238,76,149,11,66,250,195,78
2211 ++.byte 8,46,161,102,40,217,36,178
2212 ++.byte 118,91,162,73,109,139,209,37
2213 ++.byte 114,248,246,100,134,104,152,22
2214 ++.byte 212,164,92,204,93,101,182,146
2215 ++.byte 108,112,72,80,253,237,185,218
2216 ++.byte 94,21,70,87,167,141,157,132
2217 ++.byte 144,216,171,0,140,188,211,10
2218 ++.byte 247,228,88,5,184,179,69,6
2219 ++.byte 208,44,30,143,202,63,15,2
2220 ++.byte 193,175,189,3,1,19,138,107
2221 ++.byte 58,145,17,65,79,103,220,234
2222 ++.byte 151,242,207,206,240,180,230,115
2223 ++.byte 150,172,116,34,231,173,53,133
2224 ++.byte 226,249,55,232,28,117,223,110
2225 ++.byte 71,241,26,113,29,41,197,137
2226 ++.byte 111,183,98,14,170,24,190,27
2227 ++.byte 252,86,62,75,198,210,121,32
2228 ++.byte 154,219,192,254,120,205,90,244
2229 ++.byte 31,221,168,51,136,7,199,49
2230 ++.byte 177,18,16,89,39,128,236,95
2231 ++.byte 96,81,127,169,25,181,74,13
2232 ++.byte 45,229,122,159,147,201,156,239
2233 ++.byte 160,224,59,77,174,42,245,176
2234 ++.byte 200,235,187,60,131,83,153,97
2235 ++.byte 23,43,4,126,186,119,214,38
2236 ++.byte 225,105,20,99,85,33,12,125
2237 ++.byte 82,9,106,213,48,54,165,56
2238 ++.byte 191,64,163,158,129,243,215,251
2239 ++.byte 124,227,57,130,155,47,255,135
2240 ++.byte 52,142,67,68,196,222,233,203
2241 ++.byte 84,123,148,50,166,194,35,61
2242 ++.byte 238,76,149,11,66,250,195,78
2243 ++.byte 8,46,161,102,40,217,36,178
2244 ++.byte 118,91,162,73,109,139,209,37
2245 ++.byte 114,248,246,100,134,104,152,22
2246 ++.byte 212,164,92,204,93,101,182,146
2247 ++.byte 108,112,72,80,253,237,185,218
2248 ++.byte 94,21,70,87,167,141,157,132
2249 ++.byte 144,216,171,0,140,188,211,10
2250 ++.byte 247,228,88,5,184,179,69,6
2251 ++.byte 208,44,30,143,202,63,15,2
2252 ++.byte 193,175,189,3,1,19,138,107
2253 ++.byte 58,145,17,65,79,103,220,234
2254 ++.byte 151,242,207,206,240,180,230,115
2255 ++.byte 150,172,116,34,231,173,53,133
2256 ++.byte 226,249,55,232,28,117,223,110
2257 ++.byte 71,241,26,113,29,41,197,137
2258 ++.byte 111,183,98,14,170,24,190,27
2259 ++.byte 252,86,62,75,198,210,121,32
2260 ++.byte 154,219,192,254,120,205,90,244
2261 ++.byte 31,221,168,51,136,7,199,49
2262 ++.byte 177,18,16,89,39,128,236,95
2263 ++.byte 96,81,127,169,25,181,74,13
2264 ++.byte 45,229,122,159,147,201,156,239
2265 ++.byte 160,224,59,77,174,42,245,176
2266 ++.byte 200,235,187,60,131,83,153,97
2267 ++.byte 23,43,4,126,186,119,214,38
2268 ++.byte 225,105,20,99,85,33,12,125
2269 ++.byte 82,9,106,213,48,54,165,56
2270 ++.byte 191,64,163,158,129,243,215,251
2271 ++.byte 124,227,57,130,155,47,255,135
2272 ++.byte 52,142,67,68,196,222,233,203
2273 ++.byte 84,123,148,50,166,194,35,61
2274 ++.byte 238,76,149,11,66,250,195,78
2275 ++.byte 8,46,161,102,40,217,36,178
2276 ++.byte 118,91,162,73,109,139,209,37
2277 ++.byte 114,248,246,100,134,104,152,22
2278 ++.byte 212,164,92,204,93,101,182,146
2279 ++.byte 108,112,72,80,253,237,185,218
2280 ++.byte 94,21,70,87,167,141,157,132
2281 ++.byte 144,216,171,0,140,188,211,10
2282 ++.byte 247,228,88,5,184,179,69,6
2283 ++.byte 208,44,30,143,202,63,15,2
2284 ++.byte 193,175,189,3,1,19,138,107
2285 ++.byte 58,145,17,65,79,103,220,234
2286 ++.byte 151,242,207,206,240,180,230,115
2287 ++.byte 150,172,116,34,231,173,53,133
2288 ++.byte 226,249,55,232,28,117,223,110
2289 ++.byte 71,241,26,113,29,41,197,137
2290 ++.byte 111,183,98,14,170,24,190,27
2291 ++.byte 252,86,62,75,198,210,121,32
2292 ++.byte 154,219,192,254,120,205,90,244
2293 ++.byte 31,221,168,51,136,7,199,49
2294 ++.byte 177,18,16,89,39,128,236,95
2295 ++.byte 96,81,127,169,25,181,74,13
2296 ++.byte 45,229,122,159,147,201,156,239
2297 ++.byte 160,224,59,77,174,42,245,176
2298 ++.byte 200,235,187,60,131,83,153,97
2299 ++.byte 23,43,4,126,186,119,214,38
2300 ++.byte 225,105,20,99,85,33,12,125
2301 ++.byte 82,9,106,213,48,54,165,56
2302 ++.byte 191,64,163,158,129,243,215,251
2303 ++.byte 124,227,57,130,155,47,255,135
2304 ++.byte 52,142,67,68,196,222,233,203
2305 ++.byte 84,123,148,50,166,194,35,61
2306 ++.byte 238,76,149,11,66,250,195,78
2307 ++.byte 8,46,161,102,40,217,36,178
2308 ++.byte 118,91,162,73,109,139,209,37
2309 ++.byte 114,248,246,100,134,104,152,22
2310 ++.byte 212,164,92,204,93,101,182,146
2311 ++.byte 108,112,72,80,253,237,185,218
2312 ++.byte 94,21,70,87,167,141,157,132
2313 ++.byte 144,216,171,0,140,188,211,10
2314 ++.byte 247,228,88,5,184,179,69,6
2315 ++.byte 208,44,30,143,202,63,15,2
2316 ++.byte 193,175,189,3,1,19,138,107
2317 ++.byte 58,145,17,65,79,103,220,234
2318 ++.byte 151,242,207,206,240,180,230,115
2319 ++.byte 150,172,116,34,231,173,53,133
2320 ++.byte 226,249,55,232,28,117,223,110
2321 ++.byte 71,241,26,113,29,41,197,137
2322 ++.byte 111,183,98,14,170,24,190,27
2323 ++.byte 252,86,62,75,198,210,121,32
2324 ++.byte 154,219,192,254,120,205,90,244
2325 ++.byte 31,221,168,51,136,7,199,49
2326 ++.byte 177,18,16,89,39,128,236,95
2327 ++.byte 96,81,127,169,25,181,74,13
2328 ++.byte 45,229,122,159,147,201,156,239
2329 ++.byte 160,224,59,77,174,42,245,176
2330 ++.byte 200,235,187,60,131,83,153,97
2331 ++.byte 23,43,4,126,186,119,214,38
2332 ++.byte 225,105,20,99,85,33,12,125
2333 ++.globl _AES_decrypt
2334 ++.align 4
2335 ++_AES_decrypt:
2336 ++L_AES_decrypt_begin:
2337 ++ pushl %ebp
2338 ++ pushl %ebx
2339 ++ pushl %esi
2340 ++ pushl %edi
2341 ++ movl 20(%esp),%esi
2342 ++ movl 28(%esp),%edi
2343 ++ movl %esp,%eax
2344 ++ subl $36,%esp
2345 ++ andl $-64,%esp
2346 ++ leal -127(%edi),%ebx
2347 ++ subl %esp,%ebx
2348 ++ negl %ebx
2349 ++ andl $960,%ebx
2350 ++ subl %ebx,%esp
2351 ++ addl $4,%esp
2352 ++ movl %eax,28(%esp)
2353 ++ call L010pic_point
2354 ++L010pic_point:
2355 ++ popl %ebp
2356 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L010pic_point(%ebp),%eax
2357 ++ leal LAES_Td-L010pic_point(%ebp),%ebp
2358 ++ leal 764(%esp),%ebx
2359 ++ subl %ebp,%ebx
2360 ++ andl $768,%ebx
2361 ++ leal 2176(%ebp,%ebx,1),%ebp
2362 ++ btl $25,(%eax)
2363 ++ jnc L011x86
2364 ++ movq (%esi),%mm0
2365 ++ movq 8(%esi),%mm4
2366 ++ call __sse_AES_decrypt_compact
2367 ++ movl 28(%esp),%esp
2368 ++ movl 24(%esp),%esi
2369 ++ movq %mm0,(%esi)
2370 ++ movq %mm4,8(%esi)
2371 ++ emms
2372 ++ popl %edi
2373 ++ popl %esi
2374 ++ popl %ebx
2375 ++ popl %ebp
2376 ++ ret
2377 ++.align 4,0x90
2378 ++L011x86:
2379 ++ movl %ebp,24(%esp)
2380 ++ movl (%esi),%eax
2381 ++ movl 4(%esi),%ebx
2382 ++ movl 8(%esi),%ecx
2383 ++ movl 12(%esi),%edx
2384 ++ call __x86_AES_decrypt_compact
2385 ++ movl 28(%esp),%esp
2386 ++ movl 24(%esp),%esi
2387 ++ movl %eax,(%esi)
2388 ++ movl %ebx,4(%esi)
2389 ++ movl %ecx,8(%esi)
2390 ++ movl %edx,12(%esi)
2391 ++ popl %edi
2392 ++ popl %esi
2393 ++ popl %ebx
2394 ++ popl %ebp
2395 ++ ret
2396 ++.globl _AES_cbc_encrypt
2397 ++.align 4
2398 ++_AES_cbc_encrypt:
2399 ++L_AES_cbc_encrypt_begin:
2400 ++ pushl %ebp
2401 ++ pushl %ebx
2402 ++ pushl %esi
2403 ++ pushl %edi
2404 ++ movl 28(%esp),%ecx
2405 ++ cmpl $0,%ecx
2406 ++ je L012drop_out
2407 ++ call L013pic_point
2408 ++L013pic_point:
2409 ++ popl %ebp
2410 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L013pic_point(%ebp),%eax
2411 ++ cmpl $0,40(%esp)
2412 ++ leal LAES_Te-L013pic_point(%ebp),%ebp
2413 ++ jne L014picked_te
2414 ++ leal LAES_Td-LAES_Te(%ebp),%ebp
2415 ++L014picked_te:
2416 ++ pushfl
2417 ++ cld
2418 ++ cmpl $512,%ecx
2419 ++ jb L015slow_way
2420 ++ testl $15,%ecx
2421 ++ jnz L015slow_way
2422 ++ btl $28,(%eax)
2423 ++ jc L015slow_way
2424 ++ leal -324(%esp),%esi
2425 ++ andl $-64,%esi
2426 ++ movl %ebp,%eax
2427 ++ leal 2304(%ebp),%ebx
2428 ++ movl %esi,%edx
2429 ++ andl $4095,%eax
2430 ++ andl $4095,%ebx
2431 ++ andl $4095,%edx
2432 ++ cmpl %ebx,%edx
2433 ++ jb L016tbl_break_out
2434 ++ subl %ebx,%edx
2435 ++ subl %edx,%esi
2436 ++ jmp L017tbl_ok
2437 ++.align 2,0x90
2438 ++L016tbl_break_out:
2439 ++ subl %eax,%edx
2440 ++ andl $4095,%edx
2441 ++ addl $384,%edx
2442 ++ subl %edx,%esi
2443 ++.align 2,0x90
2444 ++L017tbl_ok:
2445 ++ leal 24(%esp),%edx
2446 ++ xchgl %esi,%esp
2447 ++ addl $4,%esp
2448 ++ movl %ebp,24(%esp)
2449 ++ movl %esi,28(%esp)
2450 ++ movl (%edx),%eax
2451 ++ movl 4(%edx),%ebx
2452 ++ movl 12(%edx),%edi
2453 ++ movl 16(%edx),%esi
2454 ++ movl 20(%edx),%edx
2455 ++ movl %eax,32(%esp)
2456 ++ movl %ebx,36(%esp)
2457 ++ movl %ecx,40(%esp)
2458 ++ movl %edi,44(%esp)
2459 ++ movl %esi,48(%esp)
2460 ++ movl $0,316(%esp)
2461 ++ movl %edi,%ebx
2462 ++ movl $61,%ecx
2463 ++ subl %ebp,%ebx
2464 ++ movl %edi,%esi
2465 ++ andl $4095,%ebx
2466 ++ leal 76(%esp),%edi
2467 ++ cmpl $2304,%ebx
2468 ++ jb L018do_copy
2469 ++ cmpl $3852,%ebx
2470 ++ jb L019skip_copy
2471 ++.align 2,0x90
2472 ++L018do_copy:
2473 ++ movl %edi,44(%esp)
2474 ++.long 2784229001
2475 ++L019skip_copy:
2476 ++ movl $16,%edi
2477 ++.align 2,0x90
2478 ++L020prefetch_tbl:
2479 ++ movl (%ebp),%eax
2480 ++ movl 32(%ebp),%ebx
2481 ++ movl 64(%ebp),%ecx
2482 ++ movl 96(%ebp),%esi
2483 ++ leal 128(%ebp),%ebp
2484 ++ subl $1,%edi
2485 ++ jnz L020prefetch_tbl
2486 ++ subl $2048,%ebp
2487 ++ movl 32(%esp),%esi
2488 ++ movl 48(%esp),%edi
2489 ++ cmpl $0,%edx
2490 ++ je L021fast_decrypt
2491 ++ movl (%edi),%eax
2492 ++ movl 4(%edi),%ebx
2493 ++.align 4,0x90
2494 ++L022fast_enc_loop:
2495 ++ movl 8(%edi),%ecx
2496 ++ movl 12(%edi),%edx
2497 ++ xorl (%esi),%eax
2498 ++ xorl 4(%esi),%ebx
2499 ++ xorl 8(%esi),%ecx
2500 ++ xorl 12(%esi),%edx
2501 ++ movl 44(%esp),%edi
2502 ++ call __x86_AES_encrypt
2503 ++ movl 32(%esp),%esi
2504 ++ movl 36(%esp),%edi
2505 ++ movl %eax,(%edi)
2506 ++ movl %ebx,4(%edi)
2507 ++ movl %ecx,8(%edi)
2508 ++ movl %edx,12(%edi)
2509 ++ leal 16(%esi),%esi
2510 ++ movl 40(%esp),%ecx
2511 ++ movl %esi,32(%esp)
2512 ++ leal 16(%edi),%edx
2513 ++ movl %edx,36(%esp)
2514 ++ subl $16,%ecx
2515 ++ movl %ecx,40(%esp)
2516 ++ jnz L022fast_enc_loop
2517 ++ movl 48(%esp),%esi
2518 ++ movl 8(%edi),%ecx
2519 ++ movl 12(%edi),%edx
2520 ++ movl %eax,(%esi)
2521 ++ movl %ebx,4(%esi)
2522 ++ movl %ecx,8(%esi)
2523 ++ movl %edx,12(%esi)
2524 ++ cmpl $0,316(%esp)
2525 ++ movl 44(%esp),%edi
2526 ++ je L023skip_ezero
2527 ++ movl $60,%ecx
2528 ++ xorl %eax,%eax
2529 ++.align 2,0x90
2530 ++.long 2884892297
2531 ++L023skip_ezero:
2532 ++ movl 28(%esp),%esp
2533 ++ popfl
2534 ++L012drop_out:
2535 ++ popl %edi
2536 ++ popl %esi
2537 ++ popl %ebx
2538 ++ popl %ebp
2539 ++ ret
2540 ++ pushfl
2541 ++.align 4,0x90
2542 ++L021fast_decrypt:
2543 ++ cmpl 36(%esp),%esi
2544 ++ je L024fast_dec_in_place
2545 ++ movl %edi,52(%esp)
2546 ++.align 2,0x90
2547 ++.align 4,0x90
2548 ++L025fast_dec_loop:
2549 ++ movl (%esi),%eax
2550 ++ movl 4(%esi),%ebx
2551 ++ movl 8(%esi),%ecx
2552 ++ movl 12(%esi),%edx
2553 ++ movl 44(%esp),%edi
2554 ++ call __x86_AES_decrypt
2555 ++ movl 52(%esp),%edi
2556 ++ movl 40(%esp),%esi
2557 ++ xorl (%edi),%eax
2558 ++ xorl 4(%edi),%ebx
2559 ++ xorl 8(%edi),%ecx
2560 ++ xorl 12(%edi),%edx
2561 ++ movl 36(%esp),%edi
2562 ++ movl 32(%esp),%esi
2563 ++ movl %eax,(%edi)
2564 ++ movl %ebx,4(%edi)
2565 ++ movl %ecx,8(%edi)
2566 ++ movl %edx,12(%edi)
2567 ++ movl 40(%esp),%ecx
2568 ++ movl %esi,52(%esp)
2569 ++ leal 16(%esi),%esi
2570 ++ movl %esi,32(%esp)
2571 ++ leal 16(%edi),%edi
2572 ++ movl %edi,36(%esp)
2573 ++ subl $16,%ecx
2574 ++ movl %ecx,40(%esp)
2575 ++ jnz L025fast_dec_loop
2576 ++ movl 52(%esp),%edi
2577 ++ movl 48(%esp),%esi
2578 ++ movl (%edi),%eax
2579 ++ movl 4(%edi),%ebx
2580 ++ movl 8(%edi),%ecx
2581 ++ movl 12(%edi),%edx
2582 ++ movl %eax,(%esi)
2583 ++ movl %ebx,4(%esi)
2584 ++ movl %ecx,8(%esi)
2585 ++ movl %edx,12(%esi)
2586 ++ jmp L026fast_dec_out
2587 ++.align 4,0x90
2588 ++L024fast_dec_in_place:
2589 ++L027fast_dec_in_place_loop:
2590 ++ movl (%esi),%eax
2591 ++ movl 4(%esi),%ebx
2592 ++ movl 8(%esi),%ecx
2593 ++ movl 12(%esi),%edx
2594 ++ leal 60(%esp),%edi
2595 ++ movl %eax,(%edi)
2596 ++ movl %ebx,4(%edi)
2597 ++ movl %ecx,8(%edi)
2598 ++ movl %edx,12(%edi)
2599 ++ movl 44(%esp),%edi
2600 ++ call __x86_AES_decrypt
2601 ++ movl 48(%esp),%edi
2602 ++ movl 36(%esp),%esi
2603 ++ xorl (%edi),%eax
2604 ++ xorl 4(%edi),%ebx
2605 ++ xorl 8(%edi),%ecx
2606 ++ xorl 12(%edi),%edx
2607 ++ movl %eax,(%esi)
2608 ++ movl %ebx,4(%esi)
2609 ++ movl %ecx,8(%esi)
2610 ++ movl %edx,12(%esi)
2611 ++ leal 16(%esi),%esi
2612 ++ movl %esi,36(%esp)
2613 ++ leal 60(%esp),%esi
2614 ++ movl (%esi),%eax
2615 ++ movl 4(%esi),%ebx
2616 ++ movl 8(%esi),%ecx
2617 ++ movl 12(%esi),%edx
2618 ++ movl %eax,(%edi)
2619 ++ movl %ebx,4(%edi)
2620 ++ movl %ecx,8(%edi)
2621 ++ movl %edx,12(%edi)
2622 ++ movl 32(%esp),%esi
2623 ++ movl 40(%esp),%ecx
2624 ++ leal 16(%esi),%esi
2625 ++ movl %esi,32(%esp)
2626 ++ subl $16,%ecx
2627 ++ movl %ecx,40(%esp)
2628 ++ jnz L027fast_dec_in_place_loop
2629 ++.align 2,0x90
2630 ++L026fast_dec_out:
2631 ++ cmpl $0,316(%esp)
2632 ++ movl 44(%esp),%edi
2633 ++ je L028skip_dzero
2634 ++ movl $60,%ecx
2635 ++ xorl %eax,%eax
2636 ++.align 2,0x90
2637 ++.long 2884892297
2638 ++L028skip_dzero:
2639 ++ movl 28(%esp),%esp
2640 ++ popfl
2641 ++ popl %edi
2642 ++ popl %esi
2643 ++ popl %ebx
2644 ++ popl %ebp
2645 ++ ret
2646 ++ pushfl
2647 ++.align 4,0x90
2648 ++L015slow_way:
2649 ++ movl (%eax),%eax
2650 ++ movl 36(%esp),%edi
2651 ++ leal -80(%esp),%esi
2652 ++ andl $-64,%esi
2653 ++ leal -143(%edi),%ebx
2654 ++ subl %esi,%ebx
2655 ++ negl %ebx
2656 ++ andl $960,%ebx
2657 ++ subl %ebx,%esi
2658 ++ leal 768(%esi),%ebx
2659 ++ subl %ebp,%ebx
2660 ++ andl $768,%ebx
2661 ++ leal 2176(%ebp,%ebx,1),%ebp
2662 ++ leal 24(%esp),%edx
2663 ++ xchgl %esi,%esp
2664 ++ addl $4,%esp
2665 ++ movl %ebp,24(%esp)
2666 ++ movl %esi,28(%esp)
2667 ++ movl %eax,52(%esp)
2668 ++ movl (%edx),%eax
2669 ++ movl 4(%edx),%ebx
2670 ++ movl 16(%edx),%esi
2671 ++ movl 20(%edx),%edx
2672 ++ movl %eax,32(%esp)
2673 ++ movl %ebx,36(%esp)
2674 ++ movl %ecx,40(%esp)
2675 ++ movl %edi,44(%esp)
2676 ++ movl %esi,48(%esp)
2677 ++ movl %esi,%edi
2678 ++ movl %eax,%esi
2679 ++ cmpl $0,%edx
2680 ++ je L029slow_decrypt
2681 ++ cmpl $16,%ecx
2682 ++ movl %ebx,%edx
2683 ++ jb L030slow_enc_tail
2684 ++ btl $25,52(%esp)
2685 ++ jnc L031slow_enc_x86
2686 ++ movq (%edi),%mm0
2687 ++ movq 8(%edi),%mm4
2688 ++.align 4,0x90
2689 ++L032slow_enc_loop_sse:
2690 ++ pxor (%esi),%mm0
2691 ++ pxor 8(%esi),%mm4
2692 ++ movl 44(%esp),%edi
2693 ++ call __sse_AES_encrypt_compact
2694 ++ movl 32(%esp),%esi
2695 ++ movl 36(%esp),%edi
2696 ++ movl 40(%esp),%ecx
2697 ++ movq %mm0,(%edi)
2698 ++ movq %mm4,8(%edi)
2699 ++ leal 16(%esi),%esi
2700 ++ movl %esi,32(%esp)
2701 ++ leal 16(%edi),%edx
2702 ++ movl %edx,36(%esp)
2703 ++ subl $16,%ecx
2704 ++ cmpl $16,%ecx
2705 ++ movl %ecx,40(%esp)
2706 ++ jae L032slow_enc_loop_sse
2707 ++ testl $15,%ecx
2708 ++ jnz L030slow_enc_tail
2709 ++ movl 48(%esp),%esi
2710 ++ movq %mm0,(%esi)
2711 ++ movq %mm4,8(%esi)
2712 ++ emms
2713 ++ movl 28(%esp),%esp
2714 ++ popfl
2715 ++ popl %edi
2716 ++ popl %esi
2717 ++ popl %ebx
2718 ++ popl %ebp
2719 ++ ret
2720 ++ pushfl
2721 ++.align 4,0x90
2722 ++L031slow_enc_x86:
2723 ++ movl (%edi),%eax
2724 ++ movl 4(%edi),%ebx
2725 ++.align 2,0x90
2726 ++L033slow_enc_loop_x86:
2727 ++ movl 8(%edi),%ecx
2728 ++ movl 12(%edi),%edx
2729 ++ xorl (%esi),%eax
2730 ++ xorl 4(%esi),%ebx
2731 ++ xorl 8(%esi),%ecx
2732 ++ xorl 12(%esi),%edx
2733 ++ movl 44(%esp),%edi
2734 ++ call __x86_AES_encrypt_compact
2735 ++ movl 32(%esp),%esi
2736 ++ movl 36(%esp),%edi
2737 ++ movl %eax,(%edi)
2738 ++ movl %ebx,4(%edi)
2739 ++ movl %ecx,8(%edi)
2740 ++ movl %edx,12(%edi)
2741 ++ movl 40(%esp),%ecx
2742 ++ leal 16(%esi),%esi
2743 ++ movl %esi,32(%esp)
2744 ++ leal 16(%edi),%edx
2745 ++ movl %edx,36(%esp)
2746 ++ subl $16,%ecx
2747 ++ cmpl $16,%ecx
2748 ++ movl %ecx,40(%esp)
2749 ++ jae L033slow_enc_loop_x86
2750 ++ testl $15,%ecx
2751 ++ jnz L030slow_enc_tail
2752 ++ movl 48(%esp),%esi
2753 ++ movl 8(%edi),%ecx
2754 ++ movl 12(%edi),%edx
2755 ++ movl %eax,(%esi)
2756 ++ movl %ebx,4(%esi)
2757 ++ movl %ecx,8(%esi)
2758 ++ movl %edx,12(%esi)
2759 ++ movl 28(%esp),%esp
2760 ++ popfl
2761 ++ popl %edi
2762 ++ popl %esi
2763 ++ popl %ebx
2764 ++ popl %ebp
2765 ++ ret
2766 ++ pushfl
2767 ++.align 4,0x90
2768 ++L030slow_enc_tail:
2769 ++ emms
2770 ++ movl %edx,%edi
2771 ++ movl $16,%ebx
2772 ++ subl %ecx,%ebx
2773 ++ cmpl %esi,%edi
2774 ++ je L034enc_in_place
2775 ++.align 2,0x90
2776 ++.long 2767451785
2777 ++ jmp L035enc_skip_in_place
2778 ++L034enc_in_place:
2779 ++ leal (%edi,%ecx,1),%edi
2780 ++L035enc_skip_in_place:
2781 ++ movl %ebx,%ecx
2782 ++ xorl %eax,%eax
2783 ++.align 2,0x90
2784 ++.long 2868115081
2785 ++ movl 48(%esp),%edi
2786 ++ movl %edx,%esi
2787 ++ movl (%edi),%eax
2788 ++ movl 4(%edi),%ebx
2789 ++ movl $16,40(%esp)
2790 ++ jmp L033slow_enc_loop_x86
2791 ++.align 4,0x90
2792 ++L029slow_decrypt:
2793 ++ btl $25,52(%esp)
2794 ++ jnc L036slow_dec_loop_x86
2795 ++.align 2,0x90
2796 ++L037slow_dec_loop_sse:
2797 ++ movq (%esi),%mm0
2798 ++ movq 8(%esi),%mm4
2799 ++ movl 44(%esp),%edi
2800 ++ call __sse_AES_decrypt_compact
2801 ++ movl 32(%esp),%esi
2802 ++ leal 60(%esp),%eax
2803 ++ movl 36(%esp),%ebx
2804 ++ movl 40(%esp),%ecx
2805 ++ movl 48(%esp),%edi
2806 ++ movq (%esi),%mm1
2807 ++ movq 8(%esi),%mm5
2808 ++ pxor (%edi),%mm0
2809 ++ pxor 8(%edi),%mm4
2810 ++ movq %mm1,(%edi)
2811 ++ movq %mm5,8(%edi)
2812 ++ subl $16,%ecx
2813 ++ jc L038slow_dec_partial_sse
2814 ++ movq %mm0,(%ebx)
2815 ++ movq %mm4,8(%ebx)
2816 ++ leal 16(%ebx),%ebx
2817 ++ movl %ebx,36(%esp)
2818 ++ leal 16(%esi),%esi
2819 ++ movl %esi,32(%esp)
2820 ++ movl %ecx,40(%esp)
2821 ++ jnz L037slow_dec_loop_sse
2822 ++ emms
2823 ++ movl 28(%esp),%esp
2824 ++ popfl
2825 ++ popl %edi
2826 ++ popl %esi
2827 ++ popl %ebx
2828 ++ popl %ebp
2829 ++ ret
2830 ++ pushfl
2831 ++.align 4,0x90
2832 ++L038slow_dec_partial_sse:
2833 ++ movq %mm0,(%eax)
2834 ++ movq %mm4,8(%eax)
2835 ++ emms
2836 ++ addl $16,%ecx
2837 ++ movl %ebx,%edi
2838 ++ movl %eax,%esi
2839 ++.align 2,0x90
2840 ++.long 2767451785
2841 ++ movl 28(%esp),%esp
2842 ++ popfl
2843 ++ popl %edi
2844 ++ popl %esi
2845 ++ popl %ebx
2846 ++ popl %ebp
2847 ++ ret
2848 ++ pushfl
2849 ++.align 4,0x90
2850 ++L036slow_dec_loop_x86:
2851 ++ movl (%esi),%eax
2852 ++ movl 4(%esi),%ebx
2853 ++ movl 8(%esi),%ecx
2854 ++ movl 12(%esi),%edx
2855 ++ leal 60(%esp),%edi
2856 ++ movl %eax,(%edi)
2857 ++ movl %ebx,4(%edi)
2858 ++ movl %ecx,8(%edi)
2859 ++ movl %edx,12(%edi)
2860 ++ movl 44(%esp),%edi
2861 ++ call __x86_AES_decrypt_compact
2862 ++ movl 48(%esp),%edi
2863 ++ movl 40(%esp),%esi
2864 ++ xorl (%edi),%eax
2865 ++ xorl 4(%edi),%ebx
2866 ++ xorl 8(%edi),%ecx
2867 ++ xorl 12(%edi),%edx
2868 ++ subl $16,%esi
2869 ++ jc L039slow_dec_partial_x86
2870 ++ movl %esi,40(%esp)
2871 ++ movl 36(%esp),%esi
2872 ++ movl %eax,(%esi)
2873 ++ movl %ebx,4(%esi)
2874 ++ movl %ecx,8(%esi)
2875 ++ movl %edx,12(%esi)
2876 ++ leal 16(%esi),%esi
2877 ++ movl %esi,36(%esp)
2878 ++ leal 60(%esp),%esi
2879 ++ movl (%esi),%eax
2880 ++ movl 4(%esi),%ebx
2881 ++ movl 8(%esi),%ecx
2882 ++ movl 12(%esi),%edx
2883 ++ movl %eax,(%edi)
2884 ++ movl %ebx,4(%edi)
2885 ++ movl %ecx,8(%edi)
2886 ++ movl %edx,12(%edi)
2887 ++ movl 32(%esp),%esi
2888 ++ leal 16(%esi),%esi
2889 ++ movl %esi,32(%esp)
2890 ++ jnz L036slow_dec_loop_x86
2891 ++ movl 28(%esp),%esp
2892 ++ popfl
2893 ++ popl %edi
2894 ++ popl %esi
2895 ++ popl %ebx
2896 ++ popl %ebp
2897 ++ ret
2898 ++ pushfl
2899 ++.align 4,0x90
2900 ++L039slow_dec_partial_x86:
2901 ++ leal 60(%esp),%esi
2902 ++ movl %eax,(%esi)
2903 ++ movl %ebx,4(%esi)
2904 ++ movl %ecx,8(%esi)
2905 ++ movl %edx,12(%esi)
2906 ++ movl 32(%esp),%esi
2907 ++ movl (%esi),%eax
2908 ++ movl 4(%esi),%ebx
2909 ++ movl 8(%esi),%ecx
2910 ++ movl 12(%esi),%edx
2911 ++ movl %eax,(%edi)
2912 ++ movl %ebx,4(%edi)
2913 ++ movl %ecx,8(%edi)
2914 ++ movl %edx,12(%edi)
2915 ++ movl 40(%esp),%ecx
2916 ++ movl 36(%esp),%edi
2917 ++ leal 60(%esp),%esi
2918 ++.align 2,0x90
2919 ++.long 2767451785
2920 ++ movl 28(%esp),%esp
2921 ++ popfl
2922 ++ popl %edi
2923 ++ popl %esi
2924 ++ popl %ebx
2925 ++ popl %ebp
2926 ++ ret
2927 ++.align 4
2928 ++__x86_AES_set_encrypt_key:
2929 ++ pushl %ebp
2930 ++ pushl %ebx
2931 ++ pushl %esi
2932 ++ pushl %edi
2933 ++ movl 24(%esp),%esi
2934 ++ movl 32(%esp),%edi
2935 ++ testl $-1,%esi
2936 ++ jz L040badpointer
2937 ++ testl $-1,%edi
2938 ++ jz L040badpointer
2939 ++ call L041pic_point
2940 ++L041pic_point:
2941 ++ popl %ebp
2942 ++ leal LAES_Te-L041pic_point(%ebp),%ebp
2943 ++ leal 2176(%ebp),%ebp
2944 ++ movl -128(%ebp),%eax
2945 ++ movl -96(%ebp),%ebx
2946 ++ movl -64(%ebp),%ecx
2947 ++ movl -32(%ebp),%edx
2948 ++ movl (%ebp),%eax
2949 ++ movl 32(%ebp),%ebx
2950 ++ movl 64(%ebp),%ecx
2951 ++ movl 96(%ebp),%edx
2952 ++ movl 28(%esp),%ecx
2953 ++ cmpl $128,%ecx
2954 ++ je L04210rounds
2955 ++ cmpl $192,%ecx
2956 ++ je L04312rounds
2957 ++ cmpl $256,%ecx
2958 ++ je L04414rounds
2959 ++ movl $-2,%eax
2960 ++ jmp L045exit
2961 ++L04210rounds:
2962 ++ movl (%esi),%eax
2963 ++ movl 4(%esi),%ebx
2964 ++ movl 8(%esi),%ecx
2965 ++ movl 12(%esi),%edx
2966 ++ movl %eax,(%edi)
2967 ++ movl %ebx,4(%edi)
2968 ++ movl %ecx,8(%edi)
2969 ++ movl %edx,12(%edi)
2970 ++ xorl %ecx,%ecx
2971 ++ jmp L04610shortcut
2972 ++.align 2,0x90
2973 ++L04710loop:
2974 ++ movl (%edi),%eax
2975 ++ movl 12(%edi),%edx
2976 ++L04610shortcut:
2977 ++ movzbl %dl,%esi
2978 ++ movzbl -128(%ebp,%esi,1),%ebx
2979 ++ movzbl %dh,%esi
2980 ++ shll $24,%ebx
2981 ++ xorl %ebx,%eax
2982 ++ movzbl -128(%ebp,%esi,1),%ebx
2983 ++ shrl $16,%edx
2984 ++ movzbl %dl,%esi
2985 ++ xorl %ebx,%eax
2986 ++ movzbl -128(%ebp,%esi,1),%ebx
2987 ++ movzbl %dh,%esi
2988 ++ shll $8,%ebx
2989 ++ xorl %ebx,%eax
2990 ++ movzbl -128(%ebp,%esi,1),%ebx
2991 ++ shll $16,%ebx
2992 ++ xorl %ebx,%eax
2993 ++ xorl 896(%ebp,%ecx,4),%eax
2994 ++ movl %eax,16(%edi)
2995 ++ xorl 4(%edi),%eax
2996 ++ movl %eax,20(%edi)
2997 ++ xorl 8(%edi),%eax
2998 ++ movl %eax,24(%edi)
2999 ++ xorl 12(%edi),%eax
3000 ++ movl %eax,28(%edi)
3001 ++ incl %ecx
3002 ++ addl $16,%edi
3003 ++ cmpl $10,%ecx
3004 ++ jl L04710loop
3005 ++ movl $10,80(%edi)
3006 ++ xorl %eax,%eax
3007 ++ jmp L045exit
3008 ++L04312rounds:
3009 ++ movl (%esi),%eax
3010 ++ movl 4(%esi),%ebx
3011 ++ movl 8(%esi),%ecx
3012 ++ movl 12(%esi),%edx
3013 ++ movl %eax,(%edi)
3014 ++ movl %ebx,4(%edi)
3015 ++ movl %ecx,8(%edi)
3016 ++ movl %edx,12(%edi)
3017 ++ movl 16(%esi),%ecx
3018 ++ movl 20(%esi),%edx
3019 ++ movl %ecx,16(%edi)
3020 ++ movl %edx,20(%edi)
3021 ++ xorl %ecx,%ecx
3022 ++ jmp L04812shortcut
3023 ++.align 2,0x90
3024 ++L04912loop:
3025 ++ movl (%edi),%eax
3026 ++ movl 20(%edi),%edx
3027 ++L04812shortcut:
3028 ++ movzbl %dl,%esi
3029 ++ movzbl -128(%ebp,%esi,1),%ebx
3030 ++ movzbl %dh,%esi
3031 ++ shll $24,%ebx
3032 ++ xorl %ebx,%eax
3033 ++ movzbl -128(%ebp,%esi,1),%ebx
3034 ++ shrl $16,%edx
3035 ++ movzbl %dl,%esi
3036 ++ xorl %ebx,%eax
3037 ++ movzbl -128(%ebp,%esi,1),%ebx
3038 ++ movzbl %dh,%esi
3039 ++ shll $8,%ebx
3040 ++ xorl %ebx,%eax
3041 ++ movzbl -128(%ebp,%esi,1),%ebx
3042 ++ shll $16,%ebx
3043 ++ xorl %ebx,%eax
3044 ++ xorl 896(%ebp,%ecx,4),%eax
3045 ++ movl %eax,24(%edi)
3046 ++ xorl 4(%edi),%eax
3047 ++ movl %eax,28(%edi)
3048 ++ xorl 8(%edi),%eax
3049 ++ movl %eax,32(%edi)
3050 ++ xorl 12(%edi),%eax
3051 ++ movl %eax,36(%edi)
3052 ++ cmpl $7,%ecx
3053 ++ je L05012break
3054 ++ incl %ecx
3055 ++ xorl 16(%edi),%eax
3056 ++ movl %eax,40(%edi)
3057 ++ xorl 20(%edi),%eax
3058 ++ movl %eax,44(%edi)
3059 ++ addl $24,%edi
3060 ++ jmp L04912loop
3061 ++L05012break:
3062 ++ movl $12,72(%edi)
3063 ++ xorl %eax,%eax
3064 ++ jmp L045exit
3065 ++L04414rounds:
3066 ++ movl (%esi),%eax
3067 ++ movl 4(%esi),%ebx
3068 ++ movl 8(%esi),%ecx
3069 ++ movl 12(%esi),%edx
3070 ++ movl %eax,(%edi)
3071 ++ movl %ebx,4(%edi)
3072 ++ movl %ecx,8(%edi)
3073 ++ movl %edx,12(%edi)
3074 ++ movl 16(%esi),%eax
3075 ++ movl 20(%esi),%ebx
3076 ++ movl 24(%esi),%ecx
3077 ++ movl 28(%esi),%edx
3078 ++ movl %eax,16(%edi)
3079 ++ movl %ebx,20(%edi)
3080 ++ movl %ecx,24(%edi)
3081 ++ movl %edx,28(%edi)
3082 ++ xorl %ecx,%ecx
3083 ++ jmp L05114shortcut
3084 ++.align 2,0x90
3085 ++L05214loop:
3086 ++ movl 28(%edi),%edx
3087 ++L05114shortcut:
3088 ++ movl (%edi),%eax
3089 ++ movzbl %dl,%esi
3090 ++ movzbl -128(%ebp,%esi,1),%ebx
3091 ++ movzbl %dh,%esi
3092 ++ shll $24,%ebx
3093 ++ xorl %ebx,%eax
3094 ++ movzbl -128(%ebp,%esi,1),%ebx
3095 ++ shrl $16,%edx
3096 ++ movzbl %dl,%esi
3097 ++ xorl %ebx,%eax
3098 ++ movzbl -128(%ebp,%esi,1),%ebx
3099 ++ movzbl %dh,%esi
3100 ++ shll $8,%ebx
3101 ++ xorl %ebx,%eax
3102 ++ movzbl -128(%ebp,%esi,1),%ebx
3103 ++ shll $16,%ebx
3104 ++ xorl %ebx,%eax
3105 ++ xorl 896(%ebp,%ecx,4),%eax
3106 ++ movl %eax,32(%edi)
3107 ++ xorl 4(%edi),%eax
3108 ++ movl %eax,36(%edi)
3109 ++ xorl 8(%edi),%eax
3110 ++ movl %eax,40(%edi)
3111 ++ xorl 12(%edi),%eax
3112 ++ movl %eax,44(%edi)
3113 ++ cmpl $6,%ecx
3114 ++ je L05314break
3115 ++ incl %ecx
3116 ++ movl %eax,%edx
3117 ++ movl 16(%edi),%eax
3118 ++ movzbl %dl,%esi
3119 ++ movzbl -128(%ebp,%esi,1),%ebx
3120 ++ movzbl %dh,%esi
3121 ++ xorl %ebx,%eax
3122 ++ movzbl -128(%ebp,%esi,1),%ebx
3123 ++ shrl $16,%edx
3124 ++ shll $8,%ebx
3125 ++ movzbl %dl,%esi
3126 ++ xorl %ebx,%eax
3127 ++ movzbl -128(%ebp,%esi,1),%ebx
3128 ++ movzbl %dh,%esi
3129 ++ shll $16,%ebx
3130 ++ xorl %ebx,%eax
3131 ++ movzbl -128(%ebp,%esi,1),%ebx
3132 ++ shll $24,%ebx
3133 ++ xorl %ebx,%eax
3134 ++ movl %eax,48(%edi)
3135 ++ xorl 20(%edi),%eax
3136 ++ movl %eax,52(%edi)
3137 ++ xorl 24(%edi),%eax
3138 ++ movl %eax,56(%edi)
3139 ++ xorl 28(%edi),%eax
3140 ++ movl %eax,60(%edi)
3141 ++ addl $32,%edi
3142 ++ jmp L05214loop
3143 ++L05314break:
3144 ++ movl $14,48(%edi)
3145 ++ xorl %eax,%eax
3146 ++ jmp L045exit
3147 ++L040badpointer:
3148 ++ movl $-1,%eax
3149 ++L045exit:
3150 ++ popl %edi
3151 ++ popl %esi
3152 ++ popl %ebx
3153 ++ popl %ebp
3154 ++ ret
3155 ++.globl _private_AES_set_encrypt_key
3156 ++.align 4
3157 ++_private_AES_set_encrypt_key:
3158 ++L_private_AES_set_encrypt_key_begin:
3159 ++ call __x86_AES_set_encrypt_key
3160 ++ ret
3161 ++.globl _private_AES_set_decrypt_key
3162 ++.align 4
3163 ++_private_AES_set_decrypt_key:
3164 ++L_private_AES_set_decrypt_key_begin:
3165 ++ call __x86_AES_set_encrypt_key
3166 ++ cmpl $0,%eax
3167 ++ je L054proceed
3168 ++ ret
3169 ++L054proceed:
3170 ++ pushl %ebp
3171 ++ pushl %ebx
3172 ++ pushl %esi
3173 ++ pushl %edi
3174 ++ movl 28(%esp),%esi
3175 ++ movl 240(%esi),%ecx
3176 ++ leal (,%ecx,4),%ecx
3177 ++ leal (%esi,%ecx,4),%edi
3178 ++.align 2,0x90
3179 ++L055invert:
3180 ++ movl (%esi),%eax
3181 ++ movl 4(%esi),%ebx
3182 ++ movl (%edi),%ecx
3183 ++ movl 4(%edi),%edx
3184 ++ movl %eax,(%edi)
3185 ++ movl %ebx,4(%edi)
3186 ++ movl %ecx,(%esi)
3187 ++ movl %edx,4(%esi)
3188 ++ movl 8(%esi),%eax
3189 ++ movl 12(%esi),%ebx
3190 ++ movl 8(%edi),%ecx
3191 ++ movl 12(%edi),%edx
3192 ++ movl %eax,8(%edi)
3193 ++ movl %ebx,12(%edi)
3194 ++ movl %ecx,8(%esi)
3195 ++ movl %edx,12(%esi)
3196 ++ addl $16,%esi
3197 ++ subl $16,%edi
3198 ++ cmpl %edi,%esi
3199 ++ jne L055invert
3200 ++ movl 28(%esp),%edi
3201 ++ movl 240(%edi),%esi
3202 ++ leal -2(%esi,%esi,1),%esi
3203 ++ leal (%edi,%esi,8),%esi
3204 ++ movl %esi,28(%esp)
3205 ++ movl 16(%edi),%eax
3206 ++.align 2,0x90
3207 ++L056permute:
3208 ++ addl $16,%edi
3209 ++ movl %eax,%esi
3210 ++ andl $2155905152,%esi
3211 ++ movl %esi,%ebp
3212 ++ shrl $7,%ebp
3213 ++ leal (%eax,%eax,1),%ebx
3214 ++ subl %ebp,%esi
3215 ++ andl $4278124286,%ebx
3216 ++ andl $454761243,%esi
3217 ++ xorl %ebx,%esi
3218 ++ movl %esi,%ebx
3219 ++ andl $2155905152,%esi
3220 ++ movl %esi,%ebp
3221 ++ shrl $7,%ebp
3222 ++ leal (%ebx,%ebx,1),%ecx
3223 ++ subl %ebp,%esi
3224 ++ andl $4278124286,%ecx
3225 ++ andl $454761243,%esi
3226 ++ xorl %eax,%ebx
3227 ++ xorl %ecx,%esi
3228 ++ movl %esi,%ecx
3229 ++ andl $2155905152,%esi
3230 ++ movl %esi,%ebp
3231 ++ shrl $7,%ebp
3232 ++ leal (%ecx,%ecx,1),%edx
3233 ++ xorl %eax,%ecx
3234 ++ subl %ebp,%esi
3235 ++ andl $4278124286,%edx
3236 ++ andl $454761243,%esi
3237 ++ roll $8,%eax
3238 ++ xorl %esi,%edx
3239 ++ movl 4(%edi),%ebp
3240 ++ xorl %ebx,%eax
3241 ++ xorl %edx,%ebx
3242 ++ xorl %ecx,%eax
3243 ++ roll $24,%ebx
3244 ++ xorl %edx,%ecx
3245 ++ xorl %edx,%eax
3246 ++ roll $16,%ecx
3247 ++ xorl %ebx,%eax
3248 ++ roll $8,%edx
3249 ++ xorl %ecx,%eax
3250 ++ movl %ebp,%ebx
3251 ++ xorl %edx,%eax
3252 ++ movl %eax,(%edi)
3253 ++ movl %ebx,%esi
3254 ++ andl $2155905152,%esi
3255 ++ movl %esi,%ebp
3256 ++ shrl $7,%ebp
3257 ++ leal (%ebx,%ebx,1),%ecx
3258 ++ subl %ebp,%esi
3259 ++ andl $4278124286,%ecx
3260 ++ andl $454761243,%esi
3261 ++ xorl %ecx,%esi
3262 ++ movl %esi,%ecx
3263 ++ andl $2155905152,%esi
3264 ++ movl %esi,%ebp
3265 ++ shrl $7,%ebp
3266 ++ leal (%ecx,%ecx,1),%edx
3267 ++ subl %ebp,%esi
3268 ++ andl $4278124286,%edx
3269 ++ andl $454761243,%esi
3270 ++ xorl %ebx,%ecx
3271 ++ xorl %edx,%esi
3272 ++ movl %esi,%edx
3273 ++ andl $2155905152,%esi
3274 ++ movl %esi,%ebp
3275 ++ shrl $7,%ebp
3276 ++ leal (%edx,%edx,1),%eax
3277 ++ xorl %ebx,%edx
3278 ++ subl %ebp,%esi
3279 ++ andl $4278124286,%eax
3280 ++ andl $454761243,%esi
3281 ++ roll $8,%ebx
3282 ++ xorl %esi,%eax
3283 ++ movl 8(%edi),%ebp
3284 ++ xorl %ecx,%ebx
3285 ++ xorl %eax,%ecx
3286 ++ xorl %edx,%ebx
3287 ++ roll $24,%ecx
3288 ++ xorl %eax,%edx
3289 ++ xorl %eax,%ebx
3290 ++ roll $16,%edx
3291 ++ xorl %ecx,%ebx
3292 ++ roll $8,%eax
3293 ++ xorl %edx,%ebx
3294 ++ movl %ebp,%ecx
3295 ++ xorl %eax,%ebx
3296 ++ movl %ebx,4(%edi)
3297 ++ movl %ecx,%esi
3298 ++ andl $2155905152,%esi
3299 ++ movl %esi,%ebp
3300 ++ shrl $7,%ebp
3301 ++ leal (%ecx,%ecx,1),%edx
3302 ++ subl %ebp,%esi
3303 ++ andl $4278124286,%edx
3304 ++ andl $454761243,%esi
3305 ++ xorl %edx,%esi
3306 ++ movl %esi,%edx
3307 ++ andl $2155905152,%esi
3308 ++ movl %esi,%ebp
3309 ++ shrl $7,%ebp
3310 ++ leal (%edx,%edx,1),%eax
3311 ++ subl %ebp,%esi
3312 ++ andl $4278124286,%eax
3313 ++ andl $454761243,%esi
3314 ++ xorl %ecx,%edx
3315 ++ xorl %eax,%esi
3316 ++ movl %esi,%eax
3317 ++ andl $2155905152,%esi
3318 ++ movl %esi,%ebp
3319 ++ shrl $7,%ebp
3320 ++ leal (%eax,%eax,1),%ebx
3321 ++ xorl %ecx,%eax
3322 ++ subl %ebp,%esi
3323 ++ andl $4278124286,%ebx
3324 ++ andl $454761243,%esi
3325 ++ roll $8,%ecx
3326 ++ xorl %esi,%ebx
3327 ++ movl 12(%edi),%ebp
3328 ++ xorl %edx,%ecx
3329 ++ xorl %ebx,%edx
3330 ++ xorl %eax,%ecx
3331 ++ roll $24,%edx
3332 ++ xorl %ebx,%eax
3333 ++ xorl %ebx,%ecx
3334 ++ roll $16,%eax
3335 ++ xorl %edx,%ecx
3336 ++ roll $8,%ebx
3337 ++ xorl %eax,%ecx
3338 ++ movl %ebp,%edx
3339 ++ xorl %ebx,%ecx
3340 ++ movl %ecx,8(%edi)
3341 ++ movl %edx,%esi
3342 ++ andl $2155905152,%esi
3343 ++ movl %esi,%ebp
3344 ++ shrl $7,%ebp
3345 ++ leal (%edx,%edx,1),%eax
3346 ++ subl %ebp,%esi
3347 ++ andl $4278124286,%eax
3348 ++ andl $454761243,%esi
3349 ++ xorl %eax,%esi
3350 ++ movl %esi,%eax
3351 ++ andl $2155905152,%esi
3352 ++ movl %esi,%ebp
3353 ++ shrl $7,%ebp
3354 ++ leal (%eax,%eax,1),%ebx
3355 ++ subl %ebp,%esi
3356 ++ andl $4278124286,%ebx
3357 ++ andl $454761243,%esi
3358 ++ xorl %edx,%eax
3359 ++ xorl %ebx,%esi
3360 ++ movl %esi,%ebx
3361 ++ andl $2155905152,%esi
3362 ++ movl %esi,%ebp
3363 ++ shrl $7,%ebp
3364 ++ leal (%ebx,%ebx,1),%ecx
3365 ++ xorl %edx,%ebx
3366 ++ subl %ebp,%esi
3367 ++ andl $4278124286,%ecx
3368 ++ andl $454761243,%esi
3369 ++ roll $8,%edx
3370 ++ xorl %esi,%ecx
3371 ++ movl 16(%edi),%ebp
3372 ++ xorl %eax,%edx
3373 ++ xorl %ecx,%eax
3374 ++ xorl %ebx,%edx
3375 ++ roll $24,%eax
3376 ++ xorl %ecx,%ebx
3377 ++ xorl %ecx,%edx
3378 ++ roll $16,%ebx
3379 ++ xorl %eax,%edx
3380 ++ roll $8,%ecx
3381 ++ xorl %ebx,%edx
3382 ++ movl %ebp,%eax
3383 ++ xorl %ecx,%edx
3384 ++ movl %edx,12(%edi)
3385 ++ cmpl 28(%esp),%edi
3386 ++ jb L056permute
3387 ++ xorl %eax,%eax
3388 ++ popl %edi
3389 ++ popl %esi
3390 ++ popl %ebx
3391 ++ popl %ebp
3392 ++ ret
3393 ++.byte 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
3394 ++.byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
3395 ++.byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3396 ++.section __IMPORT,__pointers,non_lazy_symbol_pointers
3397 ++L_OPENSSL_ia32cap_P$non_lazy_ptr:
3398 ++.indirect_symbol _OPENSSL_ia32cap_P
3399 ++.long 0
3400 ++.comm _OPENSSL_ia32cap_P,8,2
3401 +diff --git a/crypto/aes/asm/aesni-x86-mac.S b/crypto/aes/asm/aesni-x86-mac.S
3402 +new file mode 100644
3403 +index 0000000..2bf45c6
3404 +--- /dev/null
3405 ++++ b/crypto/aes/asm/aesni-x86-mac.S
3406 +@@ -0,0 +1,2107 @@
3407 ++.file "crypto/aes/asm/aesni-x86.s"
3408 ++.text
3409 ++.globl _aesni_encrypt
3410 ++.align 4
3411 ++_aesni_encrypt:
3412 ++L_aesni_encrypt_begin:
3413 ++ movl 4(%esp),%eax
3414 ++ movl 12(%esp),%edx
3415 ++ movups (%eax),%xmm2
3416 ++ movl 240(%edx),%ecx
3417 ++ movl 8(%esp),%eax
3418 ++ movups (%edx),%xmm0
3419 ++ movups 16(%edx),%xmm1
3420 ++ leal 32(%edx),%edx
3421 ++ xorps %xmm0,%xmm2
3422 ++L000enc1_loop_1:
3423 ++.byte 102,15,56,220,209
3424 ++ decl %ecx
3425 ++ movups (%edx),%xmm1
3426 ++ leal 16(%edx),%edx
3427 ++ jnz L000enc1_loop_1
3428 ++.byte 102,15,56,221,209
3429 ++ movups %xmm2,(%eax)
3430 ++ ret
3431 ++.globl _aesni_decrypt
3432 ++.align 4
3433 ++_aesni_decrypt:
3434 ++L_aesni_decrypt_begin:
3435 ++ movl 4(%esp),%eax
3436 ++ movl 12(%esp),%edx
3437 ++ movups (%eax),%xmm2
3438 ++ movl 240(%edx),%ecx
3439 ++ movl 8(%esp),%eax
3440 ++ movups (%edx),%xmm0
3441 ++ movups 16(%edx),%xmm1
3442 ++ leal 32(%edx),%edx
3443 ++ xorps %xmm0,%xmm2
3444 ++L001dec1_loop_2:
3445 ++.byte 102,15,56,222,209
3446 ++ decl %ecx
3447 ++ movups (%edx),%xmm1
3448 ++ leal 16(%edx),%edx
3449 ++ jnz L001dec1_loop_2
3450 ++.byte 102,15,56,223,209
3451 ++ movups %xmm2,(%eax)
3452 ++ ret
3453 ++.align 4
3454 ++__aesni_encrypt3:
3455 ++ movups (%edx),%xmm0
3456 ++ shrl $1,%ecx
3457 ++ movups 16(%edx),%xmm1
3458 ++ leal 32(%edx),%edx
3459 ++ xorps %xmm0,%xmm2
3460 ++ pxor %xmm0,%xmm3
3461 ++ pxor %xmm0,%xmm4
3462 ++ movups (%edx),%xmm0
3463 ++L002enc3_loop:
3464 ++.byte 102,15,56,220,209
3465 ++.byte 102,15,56,220,217
3466 ++ decl %ecx
3467 ++.byte 102,15,56,220,225
3468 ++ movups 16(%edx),%xmm1
3469 ++.byte 102,15,56,220,208
3470 ++.byte 102,15,56,220,216
3471 ++ leal 32(%edx),%edx
3472 ++.byte 102,15,56,220,224
3473 ++ movups (%edx),%xmm0
3474 ++ jnz L002enc3_loop
3475 ++.byte 102,15,56,220,209
3476 ++.byte 102,15,56,220,217
3477 ++.byte 102,15,56,220,225
3478 ++.byte 102,15,56,221,208
3479 ++.byte 102,15,56,221,216
3480 ++.byte 102,15,56,221,224
3481 ++ ret
3482 ++.align 4
3483 ++__aesni_decrypt3:
3484 ++ movups (%edx),%xmm0
3485 ++ shrl $1,%ecx
3486 ++ movups 16(%edx),%xmm1
3487 ++ leal 32(%edx),%edx
3488 ++ xorps %xmm0,%xmm2
3489 ++ pxor %xmm0,%xmm3
3490 ++ pxor %xmm0,%xmm4
3491 ++ movups (%edx),%xmm0
3492 ++L003dec3_loop:
3493 ++.byte 102,15,56,222,209
3494 ++.byte 102,15,56,222,217
3495 ++ decl %ecx
3496 ++.byte 102,15,56,222,225
3497 ++ movups 16(%edx),%xmm1
3498 ++.byte 102,15,56,222,208
3499 ++.byte 102,15,56,222,216
3500 ++ leal 32(%edx),%edx
3501 ++.byte 102,15,56,222,224
3502 ++ movups (%edx),%xmm0
3503 ++ jnz L003dec3_loop
3504 ++.byte 102,15,56,222,209
3505 ++.byte 102,15,56,222,217
3506 ++.byte 102,15,56,222,225
3507 ++.byte 102,15,56,223,208
3508 ++.byte 102,15,56,223,216
3509 ++.byte 102,15,56,223,224
3510 ++ ret
3511 ++.align 4
3512 ++__aesni_encrypt4:
3513 ++ movups (%edx),%xmm0
3514 ++ movups 16(%edx),%xmm1
3515 ++ shrl $1,%ecx
3516 ++ leal 32(%edx),%edx
3517 ++ xorps %xmm0,%xmm2
3518 ++ pxor %xmm0,%xmm3
3519 ++ pxor %xmm0,%xmm4
3520 ++ pxor %xmm0,%xmm5
3521 ++ movups (%edx),%xmm0
3522 ++L004enc4_loop:
3523 ++.byte 102,15,56,220,209
3524 ++.byte 102,15,56,220,217
3525 ++ decl %ecx
3526 ++.byte 102,15,56,220,225
3527 ++.byte 102,15,56,220,233
3528 ++ movups 16(%edx),%xmm1
3529 ++.byte 102,15,56,220,208
3530 ++.byte 102,15,56,220,216
3531 ++ leal 32(%edx),%edx
3532 ++.byte 102,15,56,220,224
3533 ++.byte 102,15,56,220,232
3534 ++ movups (%edx),%xmm0
3535 ++ jnz L004enc4_loop
3536 ++.byte 102,15,56,220,209
3537 ++.byte 102,15,56,220,217
3538 ++.byte 102,15,56,220,225
3539 ++.byte 102,15,56,220,233
3540 ++.byte 102,15,56,221,208
3541 ++.byte 102,15,56,221,216
3542 ++.byte 102,15,56,221,224
3543 ++.byte 102,15,56,221,232
3544 ++ ret
3545 ++.align 4
3546 ++__aesni_decrypt4:
3547 ++ movups (%edx),%xmm0
3548 ++ movups 16(%edx),%xmm1
3549 ++ shrl $1,%ecx
3550 ++ leal 32(%edx),%edx
3551 ++ xorps %xmm0,%xmm2
3552 ++ pxor %xmm0,%xmm3
3553 ++ pxor %xmm0,%xmm4
3554 ++ pxor %xmm0,%xmm5
3555 ++ movups (%edx),%xmm0
3556 ++L005dec4_loop:
3557 ++.byte 102,15,56,222,209
3558 ++.byte 102,15,56,222,217
3559 ++ decl %ecx
3560 ++.byte 102,15,56,222,225
3561 ++.byte 102,15,56,222,233
3562 ++ movups 16(%edx),%xmm1
3563 ++.byte 102,15,56,222,208
3564 ++.byte 102,15,56,222,216
3565 ++ leal 32(%edx),%edx
3566 ++.byte 102,15,56,222,224
3567 ++.byte 102,15,56,222,232
3568 ++ movups (%edx),%xmm0
3569 ++ jnz L005dec4_loop
3570 ++.byte 102,15,56,222,209
3571 ++.byte 102,15,56,222,217
3572 ++.byte 102,15,56,222,225
3573 ++.byte 102,15,56,222,233
3574 ++.byte 102,15,56,223,208
3575 ++.byte 102,15,56,223,216
3576 ++.byte 102,15,56,223,224
3577 ++.byte 102,15,56,223,232
3578 ++ ret
3579 ++.align 4
3580 ++__aesni_encrypt6:
3581 ++ movups (%edx),%xmm0
3582 ++ shrl $1,%ecx
3583 ++ movups 16(%edx),%xmm1
3584 ++ leal 32(%edx),%edx
3585 ++ xorps %xmm0,%xmm2
3586 ++ pxor %xmm0,%xmm3
3587 ++.byte 102,15,56,220,209
3588 ++ pxor %xmm0,%xmm4
3589 ++.byte 102,15,56,220,217
3590 ++ pxor %xmm0,%xmm5
3591 ++ decl %ecx
3592 ++.byte 102,15,56,220,225
3593 ++ pxor %xmm0,%xmm6
3594 ++.byte 102,15,56,220,233
3595 ++ pxor %xmm0,%xmm7
3596 ++.byte 102,15,56,220,241
3597 ++ movups (%edx),%xmm0
3598 ++.byte 102,15,56,220,249
3599 ++ jmp L_aesni_encrypt6_enter
3600 ++.align 4,0x90
3601 ++L006enc6_loop:
3602 ++.byte 102,15,56,220,209
3603 ++.byte 102,15,56,220,217
3604 ++ decl %ecx
3605 ++.byte 102,15,56,220,225
3606 ++.byte 102,15,56,220,233
3607 ++.byte 102,15,56,220,241
3608 ++.byte 102,15,56,220,249
3609 ++.align 4,0x90
3610 ++L_aesni_encrypt6_enter:
3611 ++ movups 16(%edx),%xmm1
3612 ++.byte 102,15,56,220,208
3613 ++.byte 102,15,56,220,216
3614 ++ leal 32(%edx),%edx
3615 ++.byte 102,15,56,220,224
3616 ++.byte 102,15,56,220,232
3617 ++.byte 102,15,56,220,240
3618 ++.byte 102,15,56,220,248
3619 ++ movups (%edx),%xmm0
3620 ++ jnz L006enc6_loop
3621 ++.byte 102,15,56,220,209
3622 ++.byte 102,15,56,220,217
3623 ++.byte 102,15,56,220,225
3624 ++.byte 102,15,56,220,233
3625 ++.byte 102,15,56,220,241
3626 ++.byte 102,15,56,220,249
3627 ++.byte 102,15,56,221,208
3628 ++.byte 102,15,56,221,216
3629 ++.byte 102,15,56,221,224
3630 ++.byte 102,15,56,221,232
3631 ++.byte 102,15,56,221,240
3632 ++.byte 102,15,56,221,248
3633 ++ ret
3634 ++.align 4
3635 ++__aesni_decrypt6:
3636 ++ movups (%edx),%xmm0
3637 ++ shrl $1,%ecx
3638 ++ movups 16(%edx),%xmm1
3639 ++ leal 32(%edx),%edx
3640 ++ xorps %xmm0,%xmm2
3641 ++ pxor %xmm0,%xmm3
3642 ++.byte 102,15,56,222,209
3643 ++ pxor %xmm0,%xmm4
3644 ++.byte 102,15,56,222,217
3645 ++ pxor %xmm0,%xmm5
3646 ++ decl %ecx
3647 ++.byte 102,15,56,222,225
3648 ++ pxor %xmm0,%xmm6
3649 ++.byte 102,15,56,222,233
3650 ++ pxor %xmm0,%xmm7
3651 ++.byte 102,15,56,222,241
3652 ++ movups (%edx),%xmm0
3653 ++.byte 102,15,56,222,249
3654 ++ jmp L_aesni_decrypt6_enter
3655 ++.align 4,0x90
3656 ++L007dec6_loop:
3657 ++.byte 102,15,56,222,209
3658 ++.byte 102,15,56,222,217
3659 ++ decl %ecx
3660 ++.byte 102,15,56,222,225
3661 ++.byte 102,15,56,222,233
3662 ++.byte 102,15,56,222,241
3663 ++.byte 102,15,56,222,249
3664 ++.align 4,0x90
3665 ++L_aesni_decrypt6_enter:
3666 ++ movups 16(%edx),%xmm1
3667 ++.byte 102,15,56,222,208
3668 ++.byte 102,15,56,222,216
3669 ++ leal 32(%edx),%edx
3670 ++.byte 102,15,56,222,224
3671 ++.byte 102,15,56,222,232
3672 ++.byte 102,15,56,222,240
3673 ++.byte 102,15,56,222,248
3674 ++ movups (%edx),%xmm0
3675 ++ jnz L007dec6_loop
3676 ++.byte 102,15,56,222,209
3677 ++.byte 102,15,56,222,217
3678 ++.byte 102,15,56,222,225
3679 ++.byte 102,15,56,222,233
3680 ++.byte 102,15,56,222,241
3681 ++.byte 102,15,56,222,249
3682 ++.byte 102,15,56,223,208
3683 ++.byte 102,15,56,223,216
3684 ++.byte 102,15,56,223,224
3685 ++.byte 102,15,56,223,232
3686 ++.byte 102,15,56,223,240
3687 ++.byte 102,15,56,223,248
3688 ++ ret
3689 ++.globl _aesni_ecb_encrypt
3690 ++.align 4
3691 ++_aesni_ecb_encrypt:
3692 ++L_aesni_ecb_encrypt_begin:
3693 ++ pushl %ebp
3694 ++ pushl %ebx
3695 ++ pushl %esi
3696 ++ pushl %edi
3697 ++ movl 20(%esp),%esi
3698 ++ movl 24(%esp),%edi
3699 ++ movl 28(%esp),%eax
3700 ++ movl 32(%esp),%edx
3701 ++ movl 36(%esp),%ebx
3702 ++ andl $-16,%eax
3703 ++ jz L008ecb_ret
3704 ++ movl 240(%edx),%ecx
3705 ++ testl %ebx,%ebx
3706 ++ jz L009ecb_decrypt
3707 ++ movl %edx,%ebp
3708 ++ movl %ecx,%ebx
3709 ++ cmpl $96,%eax
3710 ++ jb L010ecb_enc_tail
3711 ++ movdqu (%esi),%xmm2
3712 ++ movdqu 16(%esi),%xmm3
3713 ++ movdqu 32(%esi),%xmm4
3714 ++ movdqu 48(%esi),%xmm5
3715 ++ movdqu 64(%esi),%xmm6
3716 ++ movdqu 80(%esi),%xmm7
3717 ++ leal 96(%esi),%esi
3718 ++ subl $96,%eax
3719 ++ jmp L011ecb_enc_loop6_enter
3720 ++.align 4,0x90
3721 ++L012ecb_enc_loop6:
3722 ++ movups %xmm2,(%edi)
3723 ++ movdqu (%esi),%xmm2
3724 ++ movups %xmm3,16(%edi)
3725 ++ movdqu 16(%esi),%xmm3
3726 ++ movups %xmm4,32(%edi)
3727 ++ movdqu 32(%esi),%xmm4
3728 ++ movups %xmm5,48(%edi)
3729 ++ movdqu 48(%esi),%xmm5
3730 ++ movups %xmm6,64(%edi)
3731 ++ movdqu 64(%esi),%xmm6
3732 ++ movups %xmm7,80(%edi)
3733 ++ leal 96(%edi),%edi
3734 ++ movdqu 80(%esi),%xmm7
3735 ++ leal 96(%esi),%esi
3736 ++L011ecb_enc_loop6_enter:
3737 ++ call __aesni_encrypt6
3738 ++ movl %ebp,%edx
3739 ++ movl %ebx,%ecx
3740 ++ subl $96,%eax
3741 ++ jnc L012ecb_enc_loop6
3742 ++ movups %xmm2,(%edi)
3743 ++ movups %xmm3,16(%edi)
3744 ++ movups %xmm4,32(%edi)
3745 ++ movups %xmm5,48(%edi)
3746 ++ movups %xmm6,64(%edi)
3747 ++ movups %xmm7,80(%edi)
3748 ++ leal 96(%edi),%edi
3749 ++ addl $96,%eax
3750 ++ jz L008ecb_ret
3751 ++L010ecb_enc_tail:
3752 ++ movups (%esi),%xmm2
3753 ++ cmpl $32,%eax
3754 ++ jb L013ecb_enc_one
3755 ++ movups 16(%esi),%xmm3
3756 ++ je L014ecb_enc_two
3757 ++ movups 32(%esi),%xmm4
3758 ++ cmpl $64,%eax
3759 ++ jb L015ecb_enc_three
3760 ++ movups 48(%esi),%xmm5
3761 ++ je L016ecb_enc_four
3762 ++ movups 64(%esi),%xmm6
3763 ++ xorps %xmm7,%xmm7
3764 ++ call __aesni_encrypt6
3765 ++ movups %xmm2,(%edi)
3766 ++ movups %xmm3,16(%edi)
3767 ++ movups %xmm4,32(%edi)
3768 ++ movups %xmm5,48(%edi)
3769 ++ movups %xmm6,64(%edi)
3770 ++ jmp L008ecb_ret
3771 ++.align 4,0x90
3772 ++L013ecb_enc_one:
3773 ++ movups (%edx),%xmm0
3774 ++ movups 16(%edx),%xmm1
3775 ++ leal 32(%edx),%edx
3776 ++ xorps %xmm0,%xmm2
3777 ++L017enc1_loop_3:
3778 ++.byte 102,15,56,220,209
3779 ++ decl %ecx
3780 ++ movups (%edx),%xmm1
3781 ++ leal 16(%edx),%edx
3782 ++ jnz L017enc1_loop_3
3783 ++.byte 102,15,56,221,209
3784 ++ movups %xmm2,(%edi)
3785 ++ jmp L008ecb_ret
3786 ++.align 4,0x90
3787 ++L014ecb_enc_two:
3788 ++ xorps %xmm4,%xmm4
3789 ++ call __aesni_encrypt3
3790 ++ movups %xmm2,(%edi)
3791 ++ movups %xmm3,16(%edi)
3792 ++ jmp L008ecb_ret
3793 ++.align 4,0x90
3794 ++L015ecb_enc_three:
3795 ++ call __aesni_encrypt3
3796 ++ movups %xmm2,(%edi)
3797 ++ movups %xmm3,16(%edi)
3798 ++ movups %xmm4,32(%edi)
3799 ++ jmp L008ecb_ret
3800 ++.align 4,0x90
3801 ++L016ecb_enc_four:
3802 ++ call __aesni_encrypt4
3803 ++ movups %xmm2,(%edi)
3804 ++ movups %xmm3,16(%edi)
3805 ++ movups %xmm4,32(%edi)
3806 ++ movups %xmm5,48(%edi)
3807 ++ jmp L008ecb_ret
3808 ++.align 4,0x90
3809 ++L009ecb_decrypt:
3810 ++ movl %edx,%ebp
3811 ++ movl %ecx,%ebx
3812 ++ cmpl $96,%eax
3813 ++ jb L018ecb_dec_tail
3814 ++ movdqu (%esi),%xmm2
3815 ++ movdqu 16(%esi),%xmm3
3816 ++ movdqu 32(%esi),%xmm4
3817 ++ movdqu 48(%esi),%xmm5
3818 ++ movdqu 64(%esi),%xmm6
3819 ++ movdqu 80(%esi),%xmm7
3820 ++ leal 96(%esi),%esi
3821 ++ subl $96,%eax
3822 ++ jmp L019ecb_dec_loop6_enter
3823 ++.align 4,0x90
3824 ++L020ecb_dec_loop6:
3825 ++ movups %xmm2,(%edi)
3826 ++ movdqu (%esi),%xmm2
3827 ++ movups %xmm3,16(%edi)
3828 ++ movdqu 16(%esi),%xmm3
3829 ++ movups %xmm4,32(%edi)
3830 ++ movdqu 32(%esi),%xmm4
3831 ++ movups %xmm5,48(%edi)
3832 ++ movdqu 48(%esi),%xmm5
3833 ++ movups %xmm6,64(%edi)
3834 ++ movdqu 64(%esi),%xmm6
3835 ++ movups %xmm7,80(%edi)
3836 ++ leal 96(%edi),%edi
3837 ++ movdqu 80(%esi),%xmm7
3838 ++ leal 96(%esi),%esi
3839 ++L019ecb_dec_loop6_enter:
3840 ++ call __aesni_decrypt6
3841 ++ movl %ebp,%edx
3842 ++ movl %ebx,%ecx
3843 ++ subl $96,%eax
3844 ++ jnc L020ecb_dec_loop6
3845 ++ movups %xmm2,(%edi)
3846 ++ movups %xmm3,16(%edi)
3847 ++ movups %xmm4,32(%edi)
3848 ++ movups %xmm5,48(%edi)
3849 ++ movups %xmm6,64(%edi)
3850 ++ movups %xmm7,80(%edi)
3851 ++ leal 96(%edi),%edi
3852 ++ addl $96,%eax
3853 ++ jz L008ecb_ret
3854 ++L018ecb_dec_tail:
3855 ++ movups (%esi),%xmm2
3856 ++ cmpl $32,%eax
3857 ++ jb L021ecb_dec_one
3858 ++ movups 16(%esi),%xmm3
3859 ++ je L022ecb_dec_two
3860 ++ movups 32(%esi),%xmm4
3861 ++ cmpl $64,%eax
3862 ++ jb L023ecb_dec_three
3863 ++ movups 48(%esi),%xmm5
3864 ++ je L024ecb_dec_four
3865 ++ movups 64(%esi),%xmm6
3866 ++ xorps %xmm7,%xmm7
3867 ++ call __aesni_decrypt6
3868 ++ movups %xmm2,(%edi)
3869 ++ movups %xmm3,16(%edi)
3870 ++ movups %xmm4,32(%edi)
3871 ++ movups %xmm5,48(%edi)
3872 ++ movups %xmm6,64(%edi)
3873 ++ jmp L008ecb_ret
3874 ++.align 4,0x90
3875 ++L021ecb_dec_one:
3876 ++ movups (%edx),%xmm0
3877 ++ movups 16(%edx),%xmm1
3878 ++ leal 32(%edx),%edx
3879 ++ xorps %xmm0,%xmm2
3880 ++L025dec1_loop_4:
3881 ++.byte 102,15,56,222,209
3882 ++ decl %ecx
3883 ++ movups (%edx),%xmm1
3884 ++ leal 16(%edx),%edx
3885 ++ jnz L025dec1_loop_4
3886 ++.byte 102,15,56,223,209
3887 ++ movups %xmm2,(%edi)
3888 ++ jmp L008ecb_ret
3889 ++.align 4,0x90
3890 ++L022ecb_dec_two:
3891 ++ xorps %xmm4,%xmm4
3892 ++ call __aesni_decrypt3
3893 ++ movups %xmm2,(%edi)
3894 ++ movups %xmm3,16(%edi)
3895 ++ jmp L008ecb_ret
3896 ++.align 4,0x90
3897 ++L023ecb_dec_three:
3898 ++ call __aesni_decrypt3
3899 ++ movups %xmm2,(%edi)
3900 ++ movups %xmm3,16(%edi)
3901 ++ movups %xmm4,32(%edi)
3902 ++ jmp L008ecb_ret
3903 ++.align 4,0x90
3904 ++L024ecb_dec_four:
3905 ++ call __aesni_decrypt4
3906 ++ movups %xmm2,(%edi)
3907 ++ movups %xmm3,16(%edi)
3908 ++ movups %xmm4,32(%edi)
3909 ++ movups %xmm5,48(%edi)
3910 ++L008ecb_ret:
3911 ++ popl %edi
3912 ++ popl %esi
3913 ++ popl %ebx
3914 ++ popl %ebp
3915 ++ ret
3916 ++.globl _aesni_ccm64_encrypt_blocks
3917 ++.align 4
3918 ++_aesni_ccm64_encrypt_blocks:
3919 ++L_aesni_ccm64_encrypt_blocks_begin:
3920 ++ pushl %ebp
3921 ++ pushl %ebx
3922 ++ pushl %esi
3923 ++ pushl %edi
3924 ++ movl 20(%esp),%esi
3925 ++ movl 24(%esp),%edi
3926 ++ movl 28(%esp),%eax
3927 ++ movl 32(%esp),%edx
3928 ++ movl 36(%esp),%ebx
3929 ++ movl 40(%esp),%ecx
3930 ++ movl %esp,%ebp
3931 ++ subl $60,%esp
3932 ++ andl $-16,%esp
3933 ++ movl %ebp,48(%esp)
3934 ++ movdqu (%ebx),%xmm7
3935 ++ movdqu (%ecx),%xmm3
3936 ++ movl 240(%edx),%ecx
3937 ++ movl $202182159,(%esp)
3938 ++ movl $134810123,4(%esp)
3939 ++ movl $67438087,8(%esp)
3940 ++ movl $66051,12(%esp)
3941 ++ movl $1,%ebx
3942 ++ xorl %ebp,%ebp
3943 ++ movl %ebx,16(%esp)
3944 ++ movl %ebp,20(%esp)
3945 ++ movl %ebp,24(%esp)
3946 ++ movl %ebp,28(%esp)
3947 ++ shrl $1,%ecx
3948 ++ leal (%edx),%ebp
3949 ++ movdqa (%esp),%xmm5
3950 ++ movdqa %xmm7,%xmm2
3951 ++ movl %ecx,%ebx
3952 ++.byte 102,15,56,0,253
3953 ++L026ccm64_enc_outer:
3954 ++ movups (%ebp),%xmm0
3955 ++ movl %ebx,%ecx
3956 ++ movups (%esi),%xmm6
3957 ++ xorps %xmm0,%xmm2
3958 ++ movups 16(%ebp),%xmm1
3959 ++ xorps %xmm6,%xmm0
3960 ++ leal 32(%ebp),%edx
3961 ++ xorps %xmm0,%xmm3
3962 ++ movups (%edx),%xmm0
3963 ++L027ccm64_enc2_loop:
3964 ++.byte 102,15,56,220,209
3965 ++ decl %ecx
3966 ++.byte 102,15,56,220,217
3967 ++ movups 16(%edx),%xmm1
3968 ++.byte 102,15,56,220,208
3969 ++ leal 32(%edx),%edx
3970 ++.byte 102,15,56,220,216
3971 ++ movups (%edx),%xmm0
3972 ++ jnz L027ccm64_enc2_loop
3973 ++.byte 102,15,56,220,209
3974 ++.byte 102,15,56,220,217
3975 ++ paddq 16(%esp),%xmm7
3976 ++.byte 102,15,56,221,208
3977 ++.byte 102,15,56,221,216
3978 ++ decl %eax
3979 ++ leal 16(%esi),%esi
3980 ++ xorps %xmm2,%xmm6
3981 ++ movdqa %xmm7,%xmm2
3982 ++ movups %xmm6,(%edi)
3983 ++ leal 16(%edi),%edi
3984 ++.byte 102,15,56,0,213
3985 ++ jnz L026ccm64_enc_outer
3986 ++ movl 48(%esp),%esp
3987 ++ movl 40(%esp),%edi
3988 ++ movups %xmm3,(%edi)
3989 ++ popl %edi
3990 ++ popl %esi
3991 ++ popl %ebx
3992 ++ popl %ebp
3993 ++ ret
3994 ++.globl _aesni_ccm64_decrypt_blocks
3995 ++.align 4
3996 ++_aesni_ccm64_decrypt_blocks:
3997 ++L_aesni_ccm64_decrypt_blocks_begin:
3998 ++ pushl %ebp
3999 ++ pushl %ebx
4000 ++ pushl %esi
4001 ++ pushl %edi
4002 ++ movl 20(%esp),%esi
4003 ++ movl 24(%esp),%edi
4004 ++ movl 28(%esp),%eax
4005 ++ movl 32(%esp),%edx
4006 ++ movl 36(%esp),%ebx
4007 ++ movl 40(%esp),%ecx
4008 ++ movl %esp,%ebp
4009 ++ subl $60,%esp
4010 ++ andl $-16,%esp
4011 ++ movl %ebp,48(%esp)
4012 ++ movdqu (%ebx),%xmm7
4013 ++ movdqu (%ecx),%xmm3
4014 ++ movl 240(%edx),%ecx
4015 ++ movl $202182159,(%esp)
4016 ++ movl $134810123,4(%esp)
4017 ++ movl $67438087,8(%esp)
4018 ++ movl $66051,12(%esp)
4019 ++ movl $1,%ebx
4020 ++ xorl %ebp,%ebp
4021 ++ movl %ebx,16(%esp)
4022 ++ movl %ebp,20(%esp)
4023 ++ movl %ebp,24(%esp)
4024 ++ movl %ebp,28(%esp)
4025 ++ movdqa (%esp),%xmm5
4026 ++ movdqa %xmm7,%xmm2
4027 ++ movl %edx,%ebp
4028 ++ movl %ecx,%ebx
4029 ++.byte 102,15,56,0,253
4030 ++ movups (%edx),%xmm0
4031 ++ movups 16(%edx),%xmm1
4032 ++ leal 32(%edx),%edx
4033 ++ xorps %xmm0,%xmm2
4034 ++L028enc1_loop_5:
4035 ++.byte 102,15,56,220,209
4036 ++ decl %ecx
4037 ++ movups (%edx),%xmm1
4038 ++ leal 16(%edx),%edx
4039 ++ jnz L028enc1_loop_5
4040 ++.byte 102,15,56,221,209
4041 ++ movups (%esi),%xmm6
4042 ++ paddq 16(%esp),%xmm7
4043 ++ leal 16(%esi),%esi
4044 ++ jmp L029ccm64_dec_outer
4045 ++.align 4,0x90
4046 ++L029ccm64_dec_outer:
4047 ++ xorps %xmm2,%xmm6
4048 ++ movdqa %xmm7,%xmm2
4049 ++ movl %ebx,%ecx
4050 ++ movups %xmm6,(%edi)
4051 ++ leal 16(%edi),%edi
4052 ++.byte 102,15,56,0,213
4053 ++ subl $1,%eax
4054 ++ jz L030ccm64_dec_break
4055 ++ movups (%ebp),%xmm0
4056 ++ shrl $1,%ecx
4057 ++ movups 16(%ebp),%xmm1
4058 ++ xorps %xmm0,%xmm6
4059 ++ leal 32(%ebp),%edx
4060 ++ xorps %xmm0,%xmm2
4061 ++ xorps %xmm6,%xmm3
4062 ++ movups (%edx),%xmm0
4063 ++L031ccm64_dec2_loop:
4064 ++.byte 102,15,56,220,209
4065 ++ decl %ecx
4066 ++.byte 102,15,56,220,217
4067 ++ movups 16(%edx),%xmm1
4068 ++.byte 102,15,56,220,208
4069 ++ leal 32(%edx),%edx
4070 ++.byte 102,15,56,220,216
4071 ++ movups (%edx),%xmm0
4072 ++ jnz L031ccm64_dec2_loop
4073 ++ movups (%esi),%xmm6
4074 ++ paddq 16(%esp),%xmm7
4075 ++.byte 102,15,56,220,209
4076 ++.byte 102,15,56,220,217
4077 ++ leal 16(%esi),%esi
4078 ++.byte 102,15,56,221,208
4079 ++.byte 102,15,56,221,216
4080 ++ jmp L029ccm64_dec_outer
4081 ++.align 4,0x90
4082 ++L030ccm64_dec_break:
4083 ++ movl %ebp,%edx
4084 ++ movups (%edx),%xmm0
4085 ++ movups 16(%edx),%xmm1
4086 ++ xorps %xmm0,%xmm6
4087 ++ leal 32(%edx),%edx
4088 ++ xorps %xmm6,%xmm3
4089 ++L032enc1_loop_6:
4090 ++.byte 102,15,56,220,217
4091 ++ decl %ecx
4092 ++ movups (%edx),%xmm1
4093 ++ leal 16(%edx),%edx
4094 ++ jnz L032enc1_loop_6
4095 ++.byte 102,15,56,221,217
4096 ++ movl 48(%esp),%esp
4097 ++ movl 40(%esp),%edi
4098 ++ movups %xmm3,(%edi)
4099 ++ popl %edi
4100 ++ popl %esi
4101 ++ popl %ebx
4102 ++ popl %ebp
4103 ++ ret
4104 ++.globl _aesni_ctr32_encrypt_blocks
4105 ++.align 4
4106 ++_aesni_ctr32_encrypt_blocks:
4107 ++L_aesni_ctr32_encrypt_blocks_begin:
4108 ++ pushl %ebp
4109 ++ pushl %ebx
4110 ++ pushl %esi
4111 ++ pushl %edi
4112 ++ movl 20(%esp),%esi
4113 ++ movl 24(%esp),%edi
4114 ++ movl 28(%esp),%eax
4115 ++ movl 32(%esp),%edx
4116 ++ movl 36(%esp),%ebx
4117 ++ movl %esp,%ebp
4118 ++ subl $88,%esp
4119 ++ andl $-16,%esp
4120 ++ movl %ebp,80(%esp)
4121 ++ cmpl $1,%eax
4122 ++ je L033ctr32_one_shortcut
4123 ++ movdqu (%ebx),%xmm7
4124 ++ movl $202182159,(%esp)
4125 ++ movl $134810123,4(%esp)
4126 ++ movl $67438087,8(%esp)
4127 ++ movl $66051,12(%esp)
4128 ++ movl $6,%ecx
4129 ++ xorl %ebp,%ebp
4130 ++ movl %ecx,16(%esp)
4131 ++ movl %ecx,20(%esp)
4132 ++ movl %ecx,24(%esp)
4133 ++ movl %ebp,28(%esp)
4134 ++.byte 102,15,58,22,251,3
4135 ++.byte 102,15,58,34,253,3
4136 ++ movl 240(%edx),%ecx
4137 ++ bswap %ebx
4138 ++ pxor %xmm1,%xmm1
4139 ++ pxor %xmm0,%xmm0
4140 ++ movdqa (%esp),%xmm2
4141 ++.byte 102,15,58,34,203,0
4142 ++ leal 3(%ebx),%ebp
4143 ++.byte 102,15,58,34,197,0
4144 ++ incl %ebx
4145 ++.byte 102,15,58,34,203,1
4146 ++ incl %ebp
4147 ++.byte 102,15,58,34,197,1
4148 ++ incl %ebx
4149 ++.byte 102,15,58,34,203,2
4150 ++ incl %ebp
4151 ++.byte 102,15,58,34,197,2
4152 ++ movdqa %xmm1,48(%esp)
4153 ++.byte 102,15,56,0,202
4154 ++ movdqa %xmm0,64(%esp)
4155 ++.byte 102,15,56,0,194
4156 ++ pshufd $192,%xmm1,%xmm2
4157 ++ pshufd $128,%xmm1,%xmm3
4158 ++ cmpl $6,%eax
4159 ++ jb L034ctr32_tail
4160 ++ movdqa %xmm7,32(%esp)
4161 ++ shrl $1,%ecx
4162 ++ movl %edx,%ebp
4163 ++ movl %ecx,%ebx
4164 ++ subl $6,%eax
4165 ++ jmp L035ctr32_loop6
4166 ++.align 4,0x90
4167 ++L035ctr32_loop6:
4168 ++ pshufd $64,%xmm1,%xmm4
4169 ++ movdqa 32(%esp),%xmm1
4170 ++ pshufd $192,%xmm0,%xmm5
4171 ++ por %xmm1,%xmm2
4172 ++ pshufd $128,%xmm0,%xmm6
4173 ++ por %xmm1,%xmm3
4174 ++ pshufd $64,%xmm0,%xmm7
4175 ++ por %xmm1,%xmm4
4176 ++ por %xmm1,%xmm5
4177 ++ por %xmm1,%xmm6
4178 ++ por %xmm1,%xmm7
4179 ++ movups (%ebp),%xmm0
4180 ++ movups 16(%ebp),%xmm1
4181 ++ leal 32(%ebp),%edx
4182 ++ decl %ecx
4183 ++ pxor %xmm0,%xmm2
4184 ++ pxor %xmm0,%xmm3
4185 ++.byte 102,15,56,220,209
4186 ++ pxor %xmm0,%xmm4
4187 ++.byte 102,15,56,220,217
4188 ++ pxor %xmm0,%xmm5
4189 ++.byte 102,15,56,220,225
4190 ++ pxor %xmm0,%xmm6
4191 ++.byte 102,15,56,220,233
4192 ++ pxor %xmm0,%xmm7
4193 ++.byte 102,15,56,220,241
4194 ++ movups (%edx),%xmm0
4195 ++.byte 102,15,56,220,249
4196 ++ call L_aesni_encrypt6_enter
4197 ++ movups (%esi),%xmm1
4198 ++ movups 16(%esi),%xmm0
4199 ++ xorps %xmm1,%xmm2
4200 ++ movups 32(%esi),%xmm1
4201 ++ xorps %xmm0,%xmm3
4202 ++ movups %xmm2,(%edi)
4203 ++ movdqa 16(%esp),%xmm0
4204 ++ xorps %xmm1,%xmm4
4205 ++ movdqa 48(%esp),%xmm1
4206 ++ movups %xmm3,16(%edi)
4207 ++ movups %xmm4,32(%edi)
4208 ++ paddd %xmm0,%xmm1
4209 ++ paddd 64(%esp),%xmm0
4210 ++ movdqa (%esp),%xmm2
4211 ++ movups 48(%esi),%xmm3
4212 ++ movups 64(%esi),%xmm4
4213 ++ xorps %xmm3,%xmm5
4214 ++ movups 80(%esi),%xmm3
4215 ++ leal 96(%esi),%esi
4216 ++ movdqa %xmm1,48(%esp)
4217 ++.byte 102,15,56,0,202
4218 ++ xorps %xmm4,%xmm6
4219 ++ movups %xmm5,48(%edi)
4220 ++ xorps %xmm3,%xmm7
4221 ++ movdqa %xmm0,64(%esp)
4222 ++.byte 102,15,56,0,194
4223 ++ movups %xmm6,64(%edi)
4224 ++ pshufd $192,%xmm1,%xmm2
4225 ++ movups %xmm7,80(%edi)
4226 ++ leal 96(%edi),%edi
4227 ++ movl %ebx,%ecx
4228 ++ pshufd $128,%xmm1,%xmm3
4229 ++ subl $6,%eax
4230 ++ jnc L035ctr32_loop6
4231 ++ addl $6,%eax
4232 ++ jz L036ctr32_ret
4233 ++ movl %ebp,%edx
4234 ++ leal 1(,%ecx,2),%ecx
4235 ++ movdqa 32(%esp),%xmm7
4236 ++L034ctr32_tail:
4237 ++ por %xmm7,%xmm2
4238 ++ cmpl $2,%eax
4239 ++ jb L037ctr32_one
4240 ++ pshufd $64,%xmm1,%xmm4
4241 ++ por %xmm7,%xmm3
4242 ++ je L038ctr32_two
4243 ++ pshufd $192,%xmm0,%xmm5
4244 ++ por %xmm7,%xmm4
4245 ++ cmpl $4,%eax
4246 ++ jb L039ctr32_three
4247 ++ pshufd $128,%xmm0,%xmm6
4248 ++ por %xmm7,%xmm5
4249 ++ je L040ctr32_four
4250 ++ por %xmm7,%xmm6
4251 ++ call __aesni_encrypt6
4252 ++ movups (%esi),%xmm1
4253 ++ movups 16(%esi),%xmm0
4254 ++ xorps %xmm1,%xmm2
4255 ++ movups 32(%esi),%xmm1
4256 ++ xorps %xmm0,%xmm3
4257 ++ movups 48(%esi),%xmm0
4258 ++ xorps %xmm1,%xmm4
4259 ++ movups 64(%esi),%xmm1
4260 ++ xorps %xmm0,%xmm5
4261 ++ movups %xmm2,(%edi)
4262 ++ xorps %xmm1,%xmm6
4263 ++ movups %xmm3,16(%edi)
4264 ++ movups %xmm4,32(%edi)
4265 ++ movups %xmm5,48(%edi)
4266 ++ movups %xmm6,64(%edi)
4267 ++ jmp L036ctr32_ret
4268 ++.align 4,0x90
4269 ++L033ctr32_one_shortcut:
4270 ++ movups (%ebx),%xmm2
4271 ++ movl 240(%edx),%ecx
4272 ++L037ctr32_one:
4273 ++ movups (%edx),%xmm0
4274 ++ movups 16(%edx),%xmm1
4275 ++ leal 32(%edx),%edx
4276 ++ xorps %xmm0,%xmm2
4277 ++L041enc1_loop_7:
4278 ++.byte 102,15,56,220,209
4279 ++ decl %ecx
4280 ++ movups (%edx),%xmm1
4281 ++ leal 16(%edx),%edx
4282 ++ jnz L041enc1_loop_7
4283 ++.byte 102,15,56,221,209
4284 ++ movups (%esi),%xmm6
4285 ++ xorps %xmm2,%xmm6
4286 ++ movups %xmm6,(%edi)
4287 ++ jmp L036ctr32_ret
4288 ++.align 4,0x90
4289 ++L038ctr32_two:
4290 ++ call __aesni_encrypt3
4291 ++ movups (%esi),%xmm5
4292 ++ movups 16(%esi),%xmm6
4293 ++ xorps %xmm5,%xmm2
4294 ++ xorps %xmm6,%xmm3
4295 ++ movups %xmm2,(%edi)
4296 ++ movups %xmm3,16(%edi)
4297 ++ jmp L036ctr32_ret
4298 ++.align 4,0x90
4299 ++L039ctr32_three:
4300 ++ call __aesni_encrypt3
4301 ++ movups (%esi),%xmm5
4302 ++ movups 16(%esi),%xmm6
4303 ++ xorps %xmm5,%xmm2
4304 ++ movups 32(%esi),%xmm7
4305 ++ xorps %xmm6,%xmm3
4306 ++ movups %xmm2,(%edi)
4307 ++ xorps %xmm7,%xmm4
4308 ++ movups %xmm3,16(%edi)
4309 ++ movups %xmm4,32(%edi)
4310 ++ jmp L036ctr32_ret
4311 ++.align 4,0x90
4312 ++L040ctr32_four:
4313 ++ call __aesni_encrypt4
4314 ++ movups (%esi),%xmm6
4315 ++ movups 16(%esi),%xmm7
4316 ++ movups 32(%esi),%xmm1
4317 ++ xorps %xmm6,%xmm2
4318 ++ movups 48(%esi),%xmm0
4319 ++ xorps %xmm7,%xmm3
4320 ++ movups %xmm2,(%edi)
4321 ++ xorps %xmm1,%xmm4
4322 ++ movups %xmm3,16(%edi)
4323 ++ xorps %xmm0,%xmm5
4324 ++ movups %xmm4,32(%edi)
4325 ++ movups %xmm5,48(%edi)
4326 ++L036ctr32_ret:
4327 ++ movl 80(%esp),%esp
4328 ++ popl %edi
4329 ++ popl %esi
4330 ++ popl %ebx
4331 ++ popl %ebp
4332 ++ ret
4333 ++.globl _aesni_xts_encrypt
4334 ++.align 4
4335 ++_aesni_xts_encrypt:
4336 ++L_aesni_xts_encrypt_begin:
4337 ++ pushl %ebp
4338 ++ pushl %ebx
4339 ++ pushl %esi
4340 ++ pushl %edi
4341 ++ movl 36(%esp),%edx
4342 ++ movl 40(%esp),%esi
4343 ++ movl 240(%edx),%ecx
4344 ++ movups (%esi),%xmm2
4345 ++ movups (%edx),%xmm0
4346 ++ movups 16(%edx),%xmm1
4347 ++ leal 32(%edx),%edx
4348 ++ xorps %xmm0,%xmm2
4349 ++L042enc1_loop_8:
4350 ++.byte 102,15,56,220,209
4351 ++ decl %ecx
4352 ++ movups (%edx),%xmm1
4353 ++ leal 16(%edx),%edx
4354 ++ jnz L042enc1_loop_8
4355 ++.byte 102,15,56,221,209
4356 ++ movl 20(%esp),%esi
4357 ++ movl 24(%esp),%edi
4358 ++ movl 28(%esp),%eax
4359 ++ movl 32(%esp),%edx
4360 ++ movl %esp,%ebp
4361 ++ subl $120,%esp
4362 ++ movl 240(%edx),%ecx
4363 ++ andl $-16,%esp
4364 ++ movl $135,96(%esp)
4365 ++ movl $0,100(%esp)
4366 ++ movl $1,104(%esp)
4367 ++ movl $0,108(%esp)
4368 ++ movl %eax,112(%esp)
4369 ++ movl %ebp,116(%esp)
4370 ++ movdqa %xmm2,%xmm1
4371 ++ pxor %xmm0,%xmm0
4372 ++ movdqa 96(%esp),%xmm3
4373 ++ pcmpgtd %xmm1,%xmm0
4374 ++ andl $-16,%eax
4375 ++ movl %edx,%ebp
4376 ++ movl %ecx,%ebx
4377 ++ subl $96,%eax
4378 ++ jc L043xts_enc_short
4379 ++ shrl $1,%ecx
4380 ++ movl %ecx,%ebx
4381 ++ jmp L044xts_enc_loop6
4382 ++.align 4,0x90
4383 ++L044xts_enc_loop6:
4384 ++ pshufd $19,%xmm0,%xmm2
4385 ++ pxor %xmm0,%xmm0
4386 ++ movdqa %xmm1,(%esp)
4387 ++ paddq %xmm1,%xmm1
4388 ++ pand %xmm3,%xmm2
4389 ++ pcmpgtd %xmm1,%xmm0
4390 ++ pxor %xmm2,%xmm1
4391 ++ pshufd $19,%xmm0,%xmm2
4392 ++ pxor %xmm0,%xmm0
4393 ++ movdqa %xmm1,16(%esp)
4394 ++ paddq %xmm1,%xmm1
4395 ++ pand %xmm3,%xmm2
4396 ++ pcmpgtd %xmm1,%xmm0
4397 ++ pxor %xmm2,%xmm1
4398 ++ pshufd $19,%xmm0,%xmm2
4399 ++ pxor %xmm0,%xmm0
4400 ++ movdqa %xmm1,32(%esp)
4401 ++ paddq %xmm1,%xmm1
4402 ++ pand %xmm3,%xmm2
4403 ++ pcmpgtd %xmm1,%xmm0
4404 ++ pxor %xmm2,%xmm1
4405 ++ pshufd $19,%xmm0,%xmm2
4406 ++ pxor %xmm0,%xmm0
4407 ++ movdqa %xmm1,48(%esp)
4408 ++ paddq %xmm1,%xmm1
4409 ++ pand %xmm3,%xmm2
4410 ++ pcmpgtd %xmm1,%xmm0
4411 ++ pxor %xmm2,%xmm1
4412 ++ pshufd $19,%xmm0,%xmm7
4413 ++ movdqa %xmm1,64(%esp)
4414 ++ paddq %xmm1,%xmm1
4415 ++ movups (%ebp),%xmm0
4416 ++ pand %xmm3,%xmm7
4417 ++ movups (%esi),%xmm2
4418 ++ pxor %xmm1,%xmm7
4419 ++ movdqu 16(%esi),%xmm3
4420 ++ xorps %xmm0,%xmm2
4421 ++ movdqu 32(%esi),%xmm4
4422 ++ pxor %xmm0,%xmm3
4423 ++ movdqu 48(%esi),%xmm5
4424 ++ pxor %xmm0,%xmm4
4425 ++ movdqu 64(%esi),%xmm6
4426 ++ pxor %xmm0,%xmm5
4427 ++ movdqu 80(%esi),%xmm1
4428 ++ pxor %xmm0,%xmm6
4429 ++ leal 96(%esi),%esi
4430 ++ pxor (%esp),%xmm2
4431 ++ movdqa %xmm7,80(%esp)
4432 ++ pxor %xmm1,%xmm7
4433 ++ movups 16(%ebp),%xmm1
4434 ++ leal 32(%ebp),%edx
4435 ++ pxor 16(%esp),%xmm3
4436 ++.byte 102,15,56,220,209
4437 ++ pxor 32(%esp),%xmm4
4438 ++.byte 102,15,56,220,217
4439 ++ pxor 48(%esp),%xmm5
4440 ++ decl %ecx
4441 ++.byte 102,15,56,220,225
4442 ++ pxor 64(%esp),%xmm6
4443 ++.byte 102,15,56,220,233
4444 ++ pxor %xmm0,%xmm7
4445 ++.byte 102,15,56,220,241
4446 ++ movups (%edx),%xmm0
4447 ++.byte 102,15,56,220,249
4448 ++ call L_aesni_encrypt6_enter
4449 ++ movdqa 80(%esp),%xmm1
4450 ++ pxor %xmm0,%xmm0
4451 ++ xorps (%esp),%xmm2
4452 ++ pcmpgtd %xmm1,%xmm0
4453 ++ xorps 16(%esp),%xmm3
4454 ++ movups %xmm2,(%edi)
4455 ++ xorps 32(%esp),%xmm4
4456 ++ movups %xmm3,16(%edi)
4457 ++ xorps 48(%esp),%xmm5
4458 ++ movups %xmm4,32(%edi)
4459 ++ xorps 64(%esp),%xmm6
4460 ++ movups %xmm5,48(%edi)
4461 ++ xorps %xmm1,%xmm7
4462 ++ movups %xmm6,64(%edi)
4463 ++ pshufd $19,%xmm0,%xmm2
4464 ++ movups %xmm7,80(%edi)
4465 ++ leal 96(%edi),%edi
4466 ++ movdqa 96(%esp),%xmm3
4467 ++ pxor %xmm0,%xmm0
4468 ++ paddq %xmm1,%xmm1
4469 ++ pand %xmm3,%xmm2
4470 ++ pcmpgtd %xmm1,%xmm0
4471 ++ movl %ebx,%ecx
4472 ++ pxor %xmm2,%xmm1
4473 ++ subl $96,%eax
4474 ++ jnc L044xts_enc_loop6
4475 ++ leal 1(,%ecx,2),%ecx
4476 ++ movl %ebp,%edx
4477 ++ movl %ecx,%ebx
4478 ++L043xts_enc_short:
4479 ++ addl $96,%eax
4480 ++ jz L045xts_enc_done6x
4481 ++ movdqa %xmm1,%xmm5
4482 ++ cmpl $32,%eax
4483 ++ jb L046xts_enc_one
4484 ++ pshufd $19,%xmm0,%xmm2
4485 ++ pxor %xmm0,%xmm0
4486 ++ paddq %xmm1,%xmm1
4487 ++ pand %xmm3,%xmm2
4488 ++ pcmpgtd %xmm1,%xmm0
4489 ++ pxor %xmm2,%xmm1
4490 ++ je L047xts_enc_two
4491 ++ pshufd $19,%xmm0,%xmm2
4492 ++ pxor %xmm0,%xmm0
4493 ++ movdqa %xmm1,%xmm6
4494 ++ paddq %xmm1,%xmm1
4495 ++ pand %xmm3,%xmm2
4496 ++ pcmpgtd %xmm1,%xmm0
4497 ++ pxor %xmm2,%xmm1
4498 ++ cmpl $64,%eax
4499 ++ jb L048xts_enc_three
4500 ++ pshufd $19,%xmm0,%xmm2
4501 ++ pxor %xmm0,%xmm0
4502 ++ movdqa %xmm1,%xmm7
4503 ++ paddq %xmm1,%xmm1
4504 ++ pand %xmm3,%xmm2
4505 ++ pcmpgtd %xmm1,%xmm0
4506 ++ pxor %xmm2,%xmm1
4507 ++ movdqa %xmm5,(%esp)
4508 ++ movdqa %xmm6,16(%esp)
4509 ++ je L049xts_enc_four
4510 ++ movdqa %xmm7,32(%esp)
4511 ++ pshufd $19,%xmm0,%xmm7
4512 ++ movdqa %xmm1,48(%esp)
4513 ++ paddq %xmm1,%xmm1
4514 ++ pand %xmm3,%xmm7
4515 ++ pxor %xmm1,%xmm7
4516 ++ movdqu (%esi),%xmm2
4517 ++ movdqu 16(%esi),%xmm3
4518 ++ movdqu 32(%esi),%xmm4
4519 ++ pxor (%esp),%xmm2
4520 ++ movdqu 48(%esi),%xmm5
4521 ++ pxor 16(%esp),%xmm3
4522 ++ movdqu 64(%esi),%xmm6
4523 ++ pxor 32(%esp),%xmm4
4524 ++ leal 80(%esi),%esi
4525 ++ pxor 48(%esp),%xmm5
4526 ++ movdqa %xmm7,64(%esp)
4527 ++ pxor %xmm7,%xmm6
4528 ++ call __aesni_encrypt6
4529 ++ movaps 64(%esp),%xmm1
4530 ++ xorps (%esp),%xmm2
4531 ++ xorps 16(%esp),%xmm3
4532 ++ xorps 32(%esp),%xmm4
4533 ++ movups %xmm2,(%edi)
4534 ++ xorps 48(%esp),%xmm5
4535 ++ movups %xmm3,16(%edi)
4536 ++ xorps %xmm1,%xmm6
4537 ++ movups %xmm4,32(%edi)
4538 ++ movups %xmm5,48(%edi)
4539 ++ movups %xmm6,64(%edi)
4540 ++ leal 80(%edi),%edi
4541 ++ jmp L050xts_enc_done
4542 ++.align 4,0x90
4543 ++L046xts_enc_one:
4544 ++ movups (%esi),%xmm2
4545 ++ leal 16(%esi),%esi
4546 ++ xorps %xmm5,%xmm2
4547 ++ movups (%edx),%xmm0
4548 ++ movups 16(%edx),%xmm1
4549 ++ leal 32(%edx),%edx
4550 ++ xorps %xmm0,%xmm2
4551 ++L051enc1_loop_9:
4552 ++.byte 102,15,56,220,209
4553 ++ decl %ecx
4554 ++ movups (%edx),%xmm1
4555 ++ leal 16(%edx),%edx
4556 ++ jnz L051enc1_loop_9
4557 ++.byte 102,15,56,221,209
4558 ++ xorps %xmm5,%xmm2
4559 ++ movups %xmm2,(%edi)
4560 ++ leal 16(%edi),%edi
4561 ++ movdqa %xmm5,%xmm1
4562 ++ jmp L050xts_enc_done
4563 ++.align 4,0x90
4564 ++L047xts_enc_two:
4565 ++ movaps %xmm1,%xmm6
4566 ++ movups (%esi),%xmm2
4567 ++ movups 16(%esi),%xmm3
4568 ++ leal 32(%esi),%esi
4569 ++ xorps %xmm5,%xmm2
4570 ++ xorps %xmm6,%xmm3
4571 ++ xorps %xmm4,%xmm4
4572 ++ call __aesni_encrypt3
4573 ++ xorps %xmm5,%xmm2
4574 ++ xorps %xmm6,%xmm3
4575 ++ movups %xmm2,(%edi)
4576 ++ movups %xmm3,16(%edi)
4577 ++ leal 32(%edi),%edi
4578 ++ movdqa %xmm6,%xmm1
4579 ++ jmp L050xts_enc_done
4580 ++.align 4,0x90
4581 ++L048xts_enc_three:
4582 ++ movaps %xmm1,%xmm7
4583 ++ movups (%esi),%xmm2
4584 ++ movups 16(%esi),%xmm3
4585 ++ movups 32(%esi),%xmm4
4586 ++ leal 48(%esi),%esi
4587 ++ xorps %xmm5,%xmm2
4588 ++ xorps %xmm6,%xmm3
4589 ++ xorps %xmm7,%xmm4
4590 ++ call __aesni_encrypt3
4591 ++ xorps %xmm5,%xmm2
4592 ++ xorps %xmm6,%xmm3
4593 ++ xorps %xmm7,%xmm4
4594 ++ movups %xmm2,(%edi)
4595 ++ movups %xmm3,16(%edi)
4596 ++ movups %xmm4,32(%edi)
4597 ++ leal 48(%edi),%edi
4598 ++ movdqa %xmm7,%xmm1
4599 ++ jmp L050xts_enc_done
4600 ++.align 4,0x90
4601 ++L049xts_enc_four:
4602 ++ movaps %xmm1,%xmm6
4603 ++ movups (%esi),%xmm2
4604 ++ movups 16(%esi),%xmm3
4605 ++ movups 32(%esi),%xmm4
4606 ++ xorps (%esp),%xmm2
4607 ++ movups 48(%esi),%xmm5
4608 ++ leal 64(%esi),%esi
4609 ++ xorps 16(%esp),%xmm3
4610 ++ xorps %xmm7,%xmm4
4611 ++ xorps %xmm6,%xmm5
4612 ++ call __aesni_encrypt4
4613 ++ xorps (%esp),%xmm2
4614 ++ xorps 16(%esp),%xmm3
4615 ++ xorps %xmm7,%xmm4
4616 ++ movups %xmm2,(%edi)
4617 ++ xorps %xmm6,%xmm5
4618 ++ movups %xmm3,16(%edi)
4619 ++ movups %xmm4,32(%edi)
4620 ++ movups %xmm5,48(%edi)
4621 ++ leal 64(%edi),%edi
4622 ++ movdqa %xmm6,%xmm1
4623 ++ jmp L050xts_enc_done
4624 ++.align 4,0x90
4625 ++L045xts_enc_done6x:
4626 ++ movl 112(%esp),%eax
4627 ++ andl $15,%eax
4628 ++ jz L052xts_enc_ret
4629 ++ movdqa %xmm1,%xmm5
4630 ++ movl %eax,112(%esp)
4631 ++ jmp L053xts_enc_steal
4632 ++.align 4,0x90
4633 ++L050xts_enc_done:
4634 ++ movl 112(%esp),%eax
4635 ++ pxor %xmm0,%xmm0
4636 ++ andl $15,%eax
4637 ++ jz L052xts_enc_ret
4638 ++ pcmpgtd %xmm1,%xmm0
4639 ++ movl %eax,112(%esp)
4640 ++ pshufd $19,%xmm0,%xmm5
4641 ++ paddq %xmm1,%xmm1
4642 ++ pand 96(%esp),%xmm5
4643 ++ pxor %xmm1,%xmm5
4644 ++L053xts_enc_steal:
4645 ++ movzbl (%esi),%ecx
4646 ++ movzbl -16(%edi),%edx
4647 ++ leal 1(%esi),%esi
4648 ++ movb %cl,-16(%edi)
4649 ++ movb %dl,(%edi)
4650 ++ leal 1(%edi),%edi
4651 ++ subl $1,%eax
4652 ++ jnz L053xts_enc_steal
4653 ++ subl 112(%esp),%edi
4654 ++ movl %ebp,%edx
4655 ++ movl %ebx,%ecx
4656 ++ movups -16(%edi),%xmm2
4657 ++ xorps %xmm5,%xmm2
4658 ++ movups (%edx),%xmm0
4659 ++ movups 16(%edx),%xmm1
4660 ++ leal 32(%edx),%edx
4661 ++ xorps %xmm0,%xmm2
4662 ++L054enc1_loop_10:
4663 ++.byte 102,15,56,220,209
4664 ++ decl %ecx
4665 ++ movups (%edx),%xmm1
4666 ++ leal 16(%edx),%edx
4667 ++ jnz L054enc1_loop_10
4668 ++.byte 102,15,56,221,209
4669 ++ xorps %xmm5,%xmm2
4670 ++ movups %xmm2,-16(%edi)
4671 ++L052xts_enc_ret:
4672 ++ movl 116(%esp),%esp
4673 ++ popl %edi
4674 ++ popl %esi
4675 ++ popl %ebx
4676 ++ popl %ebp
4677 ++ ret
4678 ++.globl _aesni_xts_decrypt
4679 ++.align 4
4680 ++_aesni_xts_decrypt:
4681 ++L_aesni_xts_decrypt_begin:
4682 ++ pushl %ebp
4683 ++ pushl %ebx
4684 ++ pushl %esi
4685 ++ pushl %edi
4686 ++ movl 36(%esp),%edx
4687 ++ movl 40(%esp),%esi
4688 ++ movl 240(%edx),%ecx
4689 ++ movups (%esi),%xmm2
4690 ++ movups (%edx),%xmm0
4691 ++ movups 16(%edx),%xmm1
4692 ++ leal 32(%edx),%edx
4693 ++ xorps %xmm0,%xmm2
4694 ++L055enc1_loop_11:
4695 ++.byte 102,15,56,220,209
4696 ++ decl %ecx
4697 ++ movups (%edx),%xmm1
4698 ++ leal 16(%edx),%edx
4699 ++ jnz L055enc1_loop_11
4700 ++.byte 102,15,56,221,209
4701 ++ movl 20(%esp),%esi
4702 ++ movl 24(%esp),%edi
4703 ++ movl 28(%esp),%eax
4704 ++ movl 32(%esp),%edx
4705 ++ movl %esp,%ebp
4706 ++ subl $120,%esp
4707 ++ andl $-16,%esp
4708 ++ xorl %ebx,%ebx
4709 ++ testl $15,%eax
4710 ++ setnz %bl
4711 ++ shll $4,%ebx
4712 ++ subl %ebx,%eax
4713 ++ movl $135,96(%esp)
4714 ++ movl $0,100(%esp)
4715 ++ movl $1,104(%esp)
4716 ++ movl $0,108(%esp)
4717 ++ movl %eax,112(%esp)
4718 ++ movl %ebp,116(%esp)
4719 ++ movl 240(%edx),%ecx
4720 ++ movl %edx,%ebp
4721 ++ movl %ecx,%ebx
4722 ++ movdqa %xmm2,%xmm1
4723 ++ pxor %xmm0,%xmm0
4724 ++ movdqa 96(%esp),%xmm3
4725 ++ pcmpgtd %xmm1,%xmm0
4726 ++ andl $-16,%eax
4727 ++ subl $96,%eax
4728 ++ jc L056xts_dec_short
4729 ++ shrl $1,%ecx
4730 ++ movl %ecx,%ebx
4731 ++ jmp L057xts_dec_loop6
4732 ++.align 4,0x90
4733 ++L057xts_dec_loop6:
4734 ++ pshufd $19,%xmm0,%xmm2
4735 ++ pxor %xmm0,%xmm0
4736 ++ movdqa %xmm1,(%esp)
4737 ++ paddq %xmm1,%xmm1
4738 ++ pand %xmm3,%xmm2
4739 ++ pcmpgtd %xmm1,%xmm0
4740 ++ pxor %xmm2,%xmm1
4741 ++ pshufd $19,%xmm0,%xmm2
4742 ++ pxor %xmm0,%xmm0
4743 ++ movdqa %xmm1,16(%esp)
4744 ++ paddq %xmm1,%xmm1
4745 ++ pand %xmm3,%xmm2
4746 ++ pcmpgtd %xmm1,%xmm0
4747 ++ pxor %xmm2,%xmm1
4748 ++ pshufd $19,%xmm0,%xmm2
4749 ++ pxor %xmm0,%xmm0
4750 ++ movdqa %xmm1,32(%esp)
4751 ++ paddq %xmm1,%xmm1
4752 ++ pand %xmm3,%xmm2
4753 ++ pcmpgtd %xmm1,%xmm0
4754 ++ pxor %xmm2,%xmm1
4755 ++ pshufd $19,%xmm0,%xmm2
4756 ++ pxor %xmm0,%xmm0
4757 ++ movdqa %xmm1,48(%esp)
4758 ++ paddq %xmm1,%xmm1
4759 ++ pand %xmm3,%xmm2
4760 ++ pcmpgtd %xmm1,%xmm0
4761 ++ pxor %xmm2,%xmm1
4762 ++ pshufd $19,%xmm0,%xmm7
4763 ++ movdqa %xmm1,64(%esp)
4764 ++ paddq %xmm1,%xmm1
4765 ++ movups (%ebp),%xmm0
4766 ++ pand %xmm3,%xmm7
4767 ++ movups (%esi),%xmm2
4768 ++ pxor %xmm1,%xmm7
4769 ++ movdqu 16(%esi),%xmm3
4770 ++ xorps %xmm0,%xmm2
4771 ++ movdqu 32(%esi),%xmm4
4772 ++ pxor %xmm0,%xmm3
4773 ++ movdqu 48(%esi),%xmm5
4774 ++ pxor %xmm0,%xmm4
4775 ++ movdqu 64(%esi),%xmm6
4776 ++ pxor %xmm0,%xmm5
4777 ++ movdqu 80(%esi),%xmm1
4778 ++ pxor %xmm0,%xmm6
4779 ++ leal 96(%esi),%esi
4780 ++ pxor (%esp),%xmm2
4781 ++ movdqa %xmm7,80(%esp)
4782 ++ pxor %xmm1,%xmm7
4783 ++ movups 16(%ebp),%xmm1
4784 ++ leal 32(%ebp),%edx
4785 ++ pxor 16(%esp),%xmm3
4786 ++.byte 102,15,56,222,209
4787 ++ pxor 32(%esp),%xmm4
4788 ++.byte 102,15,56,222,217
4789 ++ pxor 48(%esp),%xmm5
4790 ++ decl %ecx
4791 ++.byte 102,15,56,222,225
4792 ++ pxor 64(%esp),%xmm6
4793 ++.byte 102,15,56,222,233
4794 ++ pxor %xmm0,%xmm7
4795 ++.byte 102,15,56,222,241
4796 ++ movups (%edx),%xmm0
4797 ++.byte 102,15,56,222,249
4798 ++ call L_aesni_decrypt6_enter
4799 ++ movdqa 80(%esp),%xmm1
4800 ++ pxor %xmm0,%xmm0
4801 ++ xorps (%esp),%xmm2
4802 ++ pcmpgtd %xmm1,%xmm0
4803 ++ xorps 16(%esp),%xmm3
4804 ++ movups %xmm2,(%edi)
4805 ++ xorps 32(%esp),%xmm4
4806 ++ movups %xmm3,16(%edi)
4807 ++ xorps 48(%esp),%xmm5
4808 ++ movups %xmm4,32(%edi)
4809 ++ xorps 64(%esp),%xmm6
4810 ++ movups %xmm5,48(%edi)
4811 ++ xorps %xmm1,%xmm7
4812 ++ movups %xmm6,64(%edi)
4813 ++ pshufd $19,%xmm0,%xmm2
4814 ++ movups %xmm7,80(%edi)
4815 ++ leal 96(%edi),%edi
4816 ++ movdqa 96(%esp),%xmm3
4817 ++ pxor %xmm0,%xmm0
4818 ++ paddq %xmm1,%xmm1
4819 ++ pand %xmm3,%xmm2
4820 ++ pcmpgtd %xmm1,%xmm0
4821 ++ movl %ebx,%ecx
4822 ++ pxor %xmm2,%xmm1
4823 ++ subl $96,%eax
4824 ++ jnc L057xts_dec_loop6
4825 ++ leal 1(,%ecx,2),%ecx
4826 ++ movl %ebp,%edx
4827 ++ movl %ecx,%ebx
4828 ++L056xts_dec_short:
4829 ++ addl $96,%eax
4830 ++ jz L058xts_dec_done6x
4831 ++ movdqa %xmm1,%xmm5
4832 ++ cmpl $32,%eax
4833 ++ jb L059xts_dec_one
4834 ++ pshufd $19,%xmm0,%xmm2
4835 ++ pxor %xmm0,%xmm0
4836 ++ paddq %xmm1,%xmm1
4837 ++ pand %xmm3,%xmm2
4838 ++ pcmpgtd %xmm1,%xmm0
4839 ++ pxor %xmm2,%xmm1
4840 ++ je L060xts_dec_two
4841 ++ pshufd $19,%xmm0,%xmm2
4842 ++ pxor %xmm0,%xmm0
4843 ++ movdqa %xmm1,%xmm6
4844 ++ paddq %xmm1,%xmm1
4845 ++ pand %xmm3,%xmm2
4846 ++ pcmpgtd %xmm1,%xmm0
4847 ++ pxor %xmm2,%xmm1
4848 ++ cmpl $64,%eax
4849 ++ jb L061xts_dec_three
4850 ++ pshufd $19,%xmm0,%xmm2
4851 ++ pxor %xmm0,%xmm0
4852 ++ movdqa %xmm1,%xmm7
4853 ++ paddq %xmm1,%xmm1
4854 ++ pand %xmm3,%xmm2
4855 ++ pcmpgtd %xmm1,%xmm0
4856 ++ pxor %xmm2,%xmm1
4857 ++ movdqa %xmm5,(%esp)
4858 ++ movdqa %xmm6,16(%esp)
4859 ++ je L062xts_dec_four
4860 ++ movdqa %xmm7,32(%esp)
4861 ++ pshufd $19,%xmm0,%xmm7
4862 ++ movdqa %xmm1,48(%esp)
4863 ++ paddq %xmm1,%xmm1
4864 ++ pand %xmm3,%xmm7
4865 ++ pxor %xmm1,%xmm7
4866 ++ movdqu (%esi),%xmm2
4867 ++ movdqu 16(%esi),%xmm3
4868 ++ movdqu 32(%esi),%xmm4
4869 ++ pxor (%esp),%xmm2
4870 ++ movdqu 48(%esi),%xmm5
4871 ++ pxor 16(%esp),%xmm3
4872 ++ movdqu 64(%esi),%xmm6
4873 ++ pxor 32(%esp),%xmm4
4874 ++ leal 80(%esi),%esi
4875 ++ pxor 48(%esp),%xmm5
4876 ++ movdqa %xmm7,64(%esp)
4877 ++ pxor %xmm7,%xmm6
4878 ++ call __aesni_decrypt6
4879 ++ movaps 64(%esp),%xmm1
4880 ++ xorps (%esp),%xmm2
4881 ++ xorps 16(%esp),%xmm3
4882 ++ xorps 32(%esp),%xmm4
4883 ++ movups %xmm2,(%edi)
4884 ++ xorps 48(%esp),%xmm5
4885 ++ movups %xmm3,16(%edi)
4886 ++ xorps %xmm1,%xmm6
4887 ++ movups %xmm4,32(%edi)
4888 ++ movups %xmm5,48(%edi)
4889 ++ movups %xmm6,64(%edi)
4890 ++ leal 80(%edi),%edi
4891 ++ jmp L063xts_dec_done
4892 ++.align 4,0x90
4893 ++L059xts_dec_one:
4894 ++ movups (%esi),%xmm2
4895 ++ leal 16(%esi),%esi
4896 ++ xorps %xmm5,%xmm2
4897 ++ movups (%edx),%xmm0
4898 ++ movups 16(%edx),%xmm1
4899 ++ leal 32(%edx),%edx
4900 ++ xorps %xmm0,%xmm2
4901 ++L064dec1_loop_12:
4902 ++.byte 102,15,56,222,209
4903 ++ decl %ecx
4904 ++ movups (%edx),%xmm1
4905 ++ leal 16(%edx),%edx
4906 ++ jnz L064dec1_loop_12
4907 ++.byte 102,15,56,223,209
4908 ++ xorps %xmm5,%xmm2
4909 ++ movups %xmm2,(%edi)
4910 ++ leal 16(%edi),%edi
4911 ++ movdqa %xmm5,%xmm1
4912 ++ jmp L063xts_dec_done
4913 ++.align 4,0x90
4914 ++L060xts_dec_two:
4915 ++ movaps %xmm1,%xmm6
4916 ++ movups (%esi),%xmm2
4917 ++ movups 16(%esi),%xmm3
4918 ++ leal 32(%esi),%esi
4919 ++ xorps %xmm5,%xmm2
4920 ++ xorps %xmm6,%xmm3
4921 ++ call __aesni_decrypt3
4922 ++ xorps %xmm5,%xmm2
4923 ++ xorps %xmm6,%xmm3
4924 ++ movups %xmm2,(%edi)
4925 ++ movups %xmm3,16(%edi)
4926 ++ leal 32(%edi),%edi
4927 ++ movdqa %xmm6,%xmm1
4928 ++ jmp L063xts_dec_done
4929 ++.align 4,0x90
4930 ++L061xts_dec_three:
4931 ++ movaps %xmm1,%xmm7
4932 ++ movups (%esi),%xmm2
4933 ++ movups 16(%esi),%xmm3
4934 ++ movups 32(%esi),%xmm4
4935 ++ leal 48(%esi),%esi
4936 ++ xorps %xmm5,%xmm2
4937 ++ xorps %xmm6,%xmm3
4938 ++ xorps %xmm7,%xmm4
4939 ++ call __aesni_decrypt3
4940 ++ xorps %xmm5,%xmm2
4941 ++ xorps %xmm6,%xmm3
4942 ++ xorps %xmm7,%xmm4
4943 ++ movups %xmm2,(%edi)
4944 ++ movups %xmm3,16(%edi)
4945 ++ movups %xmm4,32(%edi)
4946 ++ leal 48(%edi),%edi
4947 ++ movdqa %xmm7,%xmm1
4948 ++ jmp L063xts_dec_done
4949 ++.align 4,0x90
4950 ++L062xts_dec_four:
4951 ++ movaps %xmm1,%xmm6
4952 ++ movups (%esi),%xmm2
4953 ++ movups 16(%esi),%xmm3
4954 ++ movups 32(%esi),%xmm4
4955 ++ xorps (%esp),%xmm2
4956 ++ movups 48(%esi),%xmm5
4957 ++ leal 64(%esi),%esi
4958 ++ xorps 16(%esp),%xmm3
4959 ++ xorps %xmm7,%xmm4
4960 ++ xorps %xmm6,%xmm5
4961 ++ call __aesni_decrypt4
4962 ++ xorps (%esp),%xmm2
4963 ++ xorps 16(%esp),%xmm3
4964 ++ xorps %xmm7,%xmm4
4965 ++ movups %xmm2,(%edi)
4966 ++ xorps %xmm6,%xmm5
4967 ++ movups %xmm3,16(%edi)
4968 ++ movups %xmm4,32(%edi)
4969 ++ movups %xmm5,48(%edi)
4970 ++ leal 64(%edi),%edi
4971 ++ movdqa %xmm6,%xmm1
4972 ++ jmp L063xts_dec_done
4973 ++.align 4,0x90
4974 ++L058xts_dec_done6x:
4975 ++ movl 112(%esp),%eax
4976 ++ andl $15,%eax
4977 ++ jz L065xts_dec_ret
4978 ++ movl %eax,112(%esp)
4979 ++ jmp L066xts_dec_only_one_more
4980 ++.align 4,0x90
4981 ++L063xts_dec_done:
4982 ++ movl 112(%esp),%eax
4983 ++ pxor %xmm0,%xmm0
4984 ++ andl $15,%eax
4985 ++ jz L065xts_dec_ret
4986 ++ pcmpgtd %xmm1,%xmm0
4987 ++ movl %eax,112(%esp)
4988 ++ pshufd $19,%xmm0,%xmm2
4989 ++ pxor %xmm0,%xmm0
4990 ++ movdqa 96(%esp),%xmm3
4991 ++ paddq %xmm1,%xmm1
4992 ++ pand %xmm3,%xmm2
4993 ++ pcmpgtd %xmm1,%xmm0
4994 ++ pxor %xmm2,%xmm1
4995 ++L066xts_dec_only_one_more:
4996 ++ pshufd $19,%xmm0,%xmm5
4997 ++ movdqa %xmm1,%xmm6
4998 ++ paddq %xmm1,%xmm1
4999 ++ pand %xmm3,%xmm5
5000 ++ pxor %xmm1,%xmm5
5001 ++ movl %ebp,%edx
5002 ++ movl %ebx,%ecx
5003 ++ movups (%esi),%xmm2
5004 ++ xorps %xmm5,%xmm2
5005 ++ movups (%edx),%xmm0
5006 ++ movups 16(%edx),%xmm1
5007 ++ leal 32(%edx),%edx
5008 ++ xorps %xmm0,%xmm2
5009 ++L067dec1_loop_13:
5010 ++.byte 102,15,56,222,209
5011 ++ decl %ecx
5012 ++ movups (%edx),%xmm1
5013 ++ leal 16(%edx),%edx
5014 ++ jnz L067dec1_loop_13
5015 ++.byte 102,15,56,223,209
5016 ++ xorps %xmm5,%xmm2
5017 ++ movups %xmm2,(%edi)
5018 ++L068xts_dec_steal:
5019 ++ movzbl 16(%esi),%ecx
5020 ++ movzbl (%edi),%edx
5021 ++ leal 1(%esi),%esi
5022 ++ movb %cl,(%edi)
5023 ++ movb %dl,16(%edi)
5024 ++ leal 1(%edi),%edi
5025 ++ subl $1,%eax
5026 ++ jnz L068xts_dec_steal
5027 ++ subl 112(%esp),%edi
5028 ++ movl %ebp,%edx
5029 ++ movl %ebx,%ecx
5030 ++ movups (%edi),%xmm2
5031 ++ xorps %xmm6,%xmm2
5032 ++ movups (%edx),%xmm0
5033 ++ movups 16(%edx),%xmm1
5034 ++ leal 32(%edx),%edx
5035 ++ xorps %xmm0,%xmm2
5036 ++L069dec1_loop_14:
5037 ++.byte 102,15,56,222,209
5038 ++ decl %ecx
5039 ++ movups (%edx),%xmm1
5040 ++ leal 16(%edx),%edx
5041 ++ jnz L069dec1_loop_14
5042 ++.byte 102,15,56,223,209
5043 ++ xorps %xmm6,%xmm2
5044 ++ movups %xmm2,(%edi)
5045 ++L065xts_dec_ret:
5046 ++ movl 116(%esp),%esp
5047 ++ popl %edi
5048 ++ popl %esi
5049 ++ popl %ebx
5050 ++ popl %ebp
5051 ++ ret
5052 ++.globl _aesni_cbc_encrypt
5053 ++.align 4
5054 ++_aesni_cbc_encrypt:
5055 ++L_aesni_cbc_encrypt_begin:
5056 ++ pushl %ebp
5057 ++ pushl %ebx
5058 ++ pushl %esi
5059 ++ pushl %edi
5060 ++ movl 20(%esp),%esi
5061 ++ movl %esp,%ebx
5062 ++ movl 24(%esp),%edi
5063 ++ subl $24,%ebx
5064 ++ movl 28(%esp),%eax
5065 ++ andl $-16,%ebx
5066 ++ movl 32(%esp),%edx
5067 ++ movl 36(%esp),%ebp
5068 ++ testl %eax,%eax
5069 ++ jz L070cbc_abort
5070 ++ cmpl $0,40(%esp)
5071 ++ xchgl %esp,%ebx
5072 ++ movups (%ebp),%xmm7
5073 ++ movl 240(%edx),%ecx
5074 ++ movl %edx,%ebp
5075 ++ movl %ebx,16(%esp)
5076 ++ movl %ecx,%ebx
5077 ++ je L071cbc_decrypt
5078 ++ movaps %xmm7,%xmm2
5079 ++ cmpl $16,%eax
5080 ++ jb L072cbc_enc_tail
5081 ++ subl $16,%eax
5082 ++ jmp L073cbc_enc_loop
5083 ++.align 4,0x90
5084 ++L073cbc_enc_loop:
5085 ++ movups (%esi),%xmm7
5086 ++ leal 16(%esi),%esi
5087 ++ movups (%edx),%xmm0
5088 ++ movups 16(%edx),%xmm1
5089 ++ xorps %xmm0,%xmm7
5090 ++ leal 32(%edx),%edx
5091 ++ xorps %xmm7,%xmm2
5092 ++L074enc1_loop_15:
5093 ++.byte 102,15,56,220,209
5094 ++ decl %ecx
5095 ++ movups (%edx),%xmm1
5096 ++ leal 16(%edx),%edx
5097 ++ jnz L074enc1_loop_15
5098 ++.byte 102,15,56,221,209
5099 ++ movl %ebx,%ecx
5100 ++ movl %ebp,%edx
5101 ++ movups %xmm2,(%edi)
5102 ++ leal 16(%edi),%edi
5103 ++ subl $16,%eax
5104 ++ jnc L073cbc_enc_loop
5105 ++ addl $16,%eax
5106 ++ jnz L072cbc_enc_tail
5107 ++ movaps %xmm2,%xmm7
5108 ++ jmp L075cbc_ret
5109 ++L072cbc_enc_tail:
5110 ++ movl %eax,%ecx
5111 ++.long 2767451785
5112 ++ movl $16,%ecx
5113 ++ subl %eax,%ecx
5114 ++ xorl %eax,%eax
5115 ++.long 2868115081
5116 ++ leal -16(%edi),%edi
5117 ++ movl %ebx,%ecx
5118 ++ movl %edi,%esi
5119 ++ movl %ebp,%edx
5120 ++ jmp L073cbc_enc_loop
5121 ++.align 4,0x90
5122 ++L071cbc_decrypt:
5123 ++ cmpl $80,%eax
5124 ++ jbe L076cbc_dec_tail
5125 ++ movaps %xmm7,(%esp)
5126 ++ subl $80,%eax
5127 ++ jmp L077cbc_dec_loop6_enter
5128 ++.align 4,0x90
5129 ++L078cbc_dec_loop6:
5130 ++ movaps %xmm0,(%esp)
5131 ++ movups %xmm7,(%edi)
5132 ++ leal 16(%edi),%edi
5133 ++L077cbc_dec_loop6_enter:
5134 ++ movdqu (%esi),%xmm2
5135 ++ movdqu 16(%esi),%xmm3
5136 ++ movdqu 32(%esi),%xmm4
5137 ++ movdqu 48(%esi),%xmm5
5138 ++ movdqu 64(%esi),%xmm6
5139 ++ movdqu 80(%esi),%xmm7
5140 ++ call __aesni_decrypt6
5141 ++ movups (%esi),%xmm1
5142 ++ movups 16(%esi),%xmm0
5143 ++ xorps (%esp),%xmm2
5144 ++ xorps %xmm1,%xmm3
5145 ++ movups 32(%esi),%xmm1
5146 ++ xorps %xmm0,%xmm4
5147 ++ movups 48(%esi),%xmm0
5148 ++ xorps %xmm1,%xmm5
5149 ++ movups 64(%esi),%xmm1
5150 ++ xorps %xmm0,%xmm6
5151 ++ movups 80(%esi),%xmm0
5152 ++ xorps %xmm1,%xmm7
5153 ++ movups %xmm2,(%edi)
5154 ++ movups %xmm3,16(%edi)
5155 ++ leal 96(%esi),%esi
5156 ++ movups %xmm4,32(%edi)
5157 ++ movl %ebx,%ecx
5158 ++ movups %xmm5,48(%edi)
5159 ++ movl %ebp,%edx
5160 ++ movups %xmm6,64(%edi)
5161 ++ leal 80(%edi),%edi
5162 ++ subl $96,%eax
5163 ++ ja L078cbc_dec_loop6
5164 ++ movaps %xmm7,%xmm2
5165 ++ movaps %xmm0,%xmm7
5166 ++ addl $80,%eax
5167 ++ jle L079cbc_dec_tail_collected
5168 ++ movups %xmm2,(%edi)
5169 ++ leal 16(%edi),%edi
5170 ++L076cbc_dec_tail:
5171 ++ movups (%esi),%xmm2
5172 ++ movaps %xmm2,%xmm6
5173 ++ cmpl $16,%eax
5174 ++ jbe L080cbc_dec_one
5175 ++ movups 16(%esi),%xmm3
5176 ++ movaps %xmm3,%xmm5
5177 ++ cmpl $32,%eax
5178 ++ jbe L081cbc_dec_two
5179 ++ movups 32(%esi),%xmm4
5180 ++ cmpl $48,%eax
5181 ++ jbe L082cbc_dec_three
5182 ++ movups 48(%esi),%xmm5
5183 ++ cmpl $64,%eax
5184 ++ jbe L083cbc_dec_four
5185 ++ movups 64(%esi),%xmm6
5186 ++ movaps %xmm7,(%esp)
5187 ++ movups (%esi),%xmm2
5188 ++ xorps %xmm7,%xmm7
5189 ++ call __aesni_decrypt6
5190 ++ movups (%esi),%xmm1
5191 ++ movups 16(%esi),%xmm0
5192 ++ xorps (%esp),%xmm2
5193 ++ xorps %xmm1,%xmm3
5194 ++ movups 32(%esi),%xmm1
5195 ++ xorps %xmm0,%xmm4
5196 ++ movups 48(%esi),%xmm0
5197 ++ xorps %xmm1,%xmm5
5198 ++ movups 64(%esi),%xmm7
5199 ++ xorps %xmm0,%xmm6
5200 ++ movups %xmm2,(%edi)
5201 ++ movups %xmm3,16(%edi)
5202 ++ movups %xmm4,32(%edi)
5203 ++ movups %xmm5,48(%edi)
5204 ++ leal 64(%edi),%edi
5205 ++ movaps %xmm6,%xmm2
5206 ++ subl $80,%eax
5207 ++ jmp L079cbc_dec_tail_collected
5208 ++.align 4,0x90
5209 ++L080cbc_dec_one:
5210 ++ movups (%edx),%xmm0
5211 ++ movups 16(%edx),%xmm1
5212 ++ leal 32(%edx),%edx
5213 ++ xorps %xmm0,%xmm2
5214 ++L084dec1_loop_16:
5215 ++.byte 102,15,56,222,209
5216 ++ decl %ecx
5217 ++ movups (%edx),%xmm1
5218 ++ leal 16(%edx),%edx
5219 ++ jnz L084dec1_loop_16
5220 ++.byte 102,15,56,223,209
5221 ++ xorps %xmm7,%xmm2
5222 ++ movaps %xmm6,%xmm7
5223 ++ subl $16,%eax
5224 ++ jmp L079cbc_dec_tail_collected
5225 ++.align 4,0x90
5226 ++L081cbc_dec_two:
5227 ++ xorps %xmm4,%xmm4
5228 ++ call __aesni_decrypt3
5229 ++ xorps %xmm7,%xmm2
5230 ++ xorps %xmm6,%xmm3
5231 ++ movups %xmm2,(%edi)
5232 ++ movaps %xmm3,%xmm2
5233 ++ leal 16(%edi),%edi
5234 ++ movaps %xmm5,%xmm7
5235 ++ subl $32,%eax
5236 ++ jmp L079cbc_dec_tail_collected
5237 ++.align 4,0x90
5238 ++L082cbc_dec_three:
5239 ++ call __aesni_decrypt3
5240 ++ xorps %xmm7,%xmm2
5241 ++ xorps %xmm6,%xmm3
5242 ++ xorps %xmm5,%xmm4
5243 ++ movups %xmm2,(%edi)
5244 ++ movaps %xmm4,%xmm2
5245 ++ movups %xmm3,16(%edi)
5246 ++ leal 32(%edi),%edi
5247 ++ movups 32(%esi),%xmm7
5248 ++ subl $48,%eax
5249 ++ jmp L079cbc_dec_tail_collected
5250 ++.align 4,0x90
5251 ++L083cbc_dec_four:
5252 ++ call __aesni_decrypt4
5253 ++ movups 16(%esi),%xmm1
5254 ++ movups 32(%esi),%xmm0
5255 ++ xorps %xmm7,%xmm2
5256 ++ movups 48(%esi),%xmm7
5257 ++ xorps %xmm6,%xmm3
5258 ++ movups %xmm2,(%edi)
5259 ++ xorps %xmm1,%xmm4
5260 ++ movups %xmm3,16(%edi)
5261 ++ xorps %xmm0,%xmm5
5262 ++ movups %xmm4,32(%edi)
5263 ++ leal 48(%edi),%edi
5264 ++ movaps %xmm5,%xmm2
5265 ++ subl $64,%eax
5266 ++L079cbc_dec_tail_collected:
5267 ++ andl $15,%eax
5268 ++ jnz L085cbc_dec_tail_partial
5269 ++ movups %xmm2,(%edi)
5270 ++ jmp L075cbc_ret
5271 ++.align 4,0x90
5272 ++L085cbc_dec_tail_partial:
5273 ++ movaps %xmm2,(%esp)
5274 ++ movl $16,%ecx
5275 ++ movl %esp,%esi
5276 ++ subl %eax,%ecx
5277 ++.long 2767451785
5278 ++L075cbc_ret:
5279 ++ movl 16(%esp),%esp
5280 ++ movl 36(%esp),%ebp
5281 ++ movups %xmm7,(%ebp)
5282 ++L070cbc_abort:
5283 ++ popl %edi
5284 ++ popl %esi
5285 ++ popl %ebx
5286 ++ popl %ebp
5287 ++ ret
5288 ++.align 4
5289 ++__aesni_set_encrypt_key:
5290 ++ testl %eax,%eax
5291 ++ jz L086bad_pointer
5292 ++ testl %edx,%edx
5293 ++ jz L086bad_pointer
5294 ++ movups (%eax),%xmm0
5295 ++ xorps %xmm4,%xmm4
5296 ++ leal 16(%edx),%edx
5297 ++ cmpl $256,%ecx
5298 ++ je L08714rounds
5299 ++ cmpl $192,%ecx
5300 ++ je L08812rounds
5301 ++ cmpl $128,%ecx
5302 ++ jne L089bad_keybits
5303 ++.align 4,0x90
5304 ++L09010rounds:
5305 ++ movl $9,%ecx
5306 ++ movups %xmm0,-16(%edx)
5307 ++.byte 102,15,58,223,200,1
5308 ++ call L091key_128_cold
5309 ++.byte 102,15,58,223,200,2
5310 ++ call L092key_128
5311 ++.byte 102,15,58,223,200,4
5312 ++ call L092key_128
5313 ++.byte 102,15,58,223,200,8
5314 ++ call L092key_128
5315 ++.byte 102,15,58,223,200,16
5316 ++ call L092key_128
5317 ++.byte 102,15,58,223,200,32
5318 ++ call L092key_128
5319 ++.byte 102,15,58,223,200,64
5320 ++ call L092key_128
5321 ++.byte 102,15,58,223,200,128
5322 ++ call L092key_128
5323 ++.byte 102,15,58,223,200,27
5324 ++ call L092key_128
5325 ++.byte 102,15,58,223,200,54
5326 ++ call L092key_128
5327 ++ movups %xmm0,(%edx)
5328 ++ movl %ecx,80(%edx)
5329 ++ xorl %eax,%eax
5330 ++ ret
5331 ++.align 4,0x90
5332 ++L092key_128:
5333 ++ movups %xmm0,(%edx)
5334 ++ leal 16(%edx),%edx
5335 ++L091key_128_cold:
5336 ++ shufps $16,%xmm0,%xmm4
5337 ++ xorps %xmm4,%xmm0
5338 ++ shufps $140,%xmm0,%xmm4
5339 ++ xorps %xmm4,%xmm0
5340 ++ shufps $255,%xmm1,%xmm1
5341 ++ xorps %xmm1,%xmm0
5342 ++ ret
5343 ++.align 4,0x90
5344 ++L08812rounds:
5345 ++ movq 16(%eax),%xmm2
5346 ++ movl $11,%ecx
5347 ++ movups %xmm0,-16(%edx)
5348 ++.byte 102,15,58,223,202,1
5349 ++ call L093key_192a_cold
5350 ++.byte 102,15,58,223,202,2
5351 ++ call L094key_192b
5352 ++.byte 102,15,58,223,202,4
5353 ++ call L095key_192a
5354 ++.byte 102,15,58,223,202,8
5355 ++ call L094key_192b
5356 ++.byte 102,15,58,223,202,16
5357 ++ call L095key_192a
5358 ++.byte 102,15,58,223,202,32
5359 ++ call L094key_192b
5360 ++.byte 102,15,58,223,202,64
5361 ++ call L095key_192a
5362 ++.byte 102,15,58,223,202,128
5363 ++ call L094key_192b
5364 ++ movups %xmm0,(%edx)
5365 ++ movl %ecx,48(%edx)
5366 ++ xorl %eax,%eax
5367 ++ ret
5368 ++.align 4,0x90
5369 ++L095key_192a:
5370 ++ movups %xmm0,(%edx)
5371 ++ leal 16(%edx),%edx
5372 ++.align 4,0x90
5373 ++L093key_192a_cold:
5374 ++ movaps %xmm2,%xmm5
5375 ++L096key_192b_warm:
5376 ++ shufps $16,%xmm0,%xmm4
5377 ++ movdqa %xmm2,%xmm3
5378 ++ xorps %xmm4,%xmm0
5379 ++ shufps $140,%xmm0,%xmm4
5380 ++ pslldq $4,%xmm3
5381 ++ xorps %xmm4,%xmm0
5382 ++ pshufd $85,%xmm1,%xmm1
5383 ++ pxor %xmm3,%xmm2
5384 ++ pxor %xmm1,%xmm0
5385 ++ pshufd $255,%xmm0,%xmm3
5386 ++ pxor %xmm3,%xmm2
5387 ++ ret
5388 ++.align 4,0x90
5389 ++L094key_192b:
5390 ++ movaps %xmm0,%xmm3
5391 ++ shufps $68,%xmm0,%xmm5
5392 ++ movups %xmm5,(%edx)
5393 ++ shufps $78,%xmm2,%xmm3
5394 ++ movups %xmm3,16(%edx)
5395 ++ leal 32(%edx),%edx
5396 ++ jmp L096key_192b_warm
5397 ++.align 4,0x90
5398 ++L08714rounds:
5399 ++ movups 16(%eax),%xmm2
5400 ++ movl $13,%ecx
5401 ++ leal 16(%edx),%edx
5402 ++ movups %xmm0,-32(%edx)
5403 ++ movups %xmm2,-16(%edx)
5404 ++.byte 102,15,58,223,202,1
5405 ++ call L097key_256a_cold
5406 ++.byte 102,15,58,223,200,1
5407 ++ call L098key_256b
5408 ++.byte 102,15,58,223,202,2
5409 ++ call L099key_256a
5410 ++.byte 102,15,58,223,200,2
5411 ++ call L098key_256b
5412 ++.byte 102,15,58,223,202,4
5413 ++ call L099key_256a
5414 ++.byte 102,15,58,223,200,4
5415 ++ call L098key_256b
5416 ++.byte 102,15,58,223,202,8
5417 ++ call L099key_256a
5418 ++.byte 102,15,58,223,200,8
5419 ++ call L098key_256b
5420 ++.byte 102,15,58,223,202,16
5421 ++ call L099key_256a
5422 ++.byte 102,15,58,223,200,16
5423 ++ call L098key_256b
5424 ++.byte 102,15,58,223,202,32
5425 ++ call L099key_256a
5426 ++.byte 102,15,58,223,200,32
5427 ++ call L098key_256b
5428 ++.byte 102,15,58,223,202,64
5429 ++ call L099key_256a
5430 ++ movups %xmm0,(%edx)
5431 ++ movl %ecx,16(%edx)
5432 ++ xorl %eax,%eax
5433 ++ ret
5434 ++.align 4,0x90
5435 ++L099key_256a:
5436 ++ movups %xmm2,(%edx)
5437 ++ leal 16(%edx),%edx
5438 ++L097key_256a_cold:
5439 ++ shufps $16,%xmm0,%xmm4
5440 ++ xorps %xmm4,%xmm0
5441 ++ shufps $140,%xmm0,%xmm4
5442 ++ xorps %xmm4,%xmm0
5443 ++ shufps $255,%xmm1,%xmm1
5444 ++ xorps %xmm1,%xmm0
5445 ++ ret
5446 ++.align 4,0x90
5447 ++L098key_256b:
5448 ++ movups %xmm0,(%edx)
5449 ++ leal 16(%edx),%edx
5450 ++ shufps $16,%xmm2,%xmm4
5451 ++ xorps %xmm4,%xmm2
5452 ++ shufps $140,%xmm2,%xmm4
5453 ++ xorps %xmm4,%xmm2
5454 ++ shufps $170,%xmm1,%xmm1
5455 ++ xorps %xmm1,%xmm2
5456 ++ ret
5457 ++.align 2,0x90
5458 ++L086bad_pointer:
5459 ++ movl $-1,%eax
5460 ++ ret
5461 ++.align 2,0x90
5462 ++L089bad_keybits:
5463 ++ movl $-2,%eax
5464 ++ ret
5465 ++.globl _aesni_set_encrypt_key
5466 ++.align 4
5467 ++_aesni_set_encrypt_key:
5468 ++L_aesni_set_encrypt_key_begin:
5469 ++ movl 4(%esp),%eax
5470 ++ movl 8(%esp),%ecx
5471 ++ movl 12(%esp),%edx
5472 ++ call __aesni_set_encrypt_key
5473 ++ ret
5474 ++.globl _aesni_set_decrypt_key
5475 ++.align 4
5476 ++_aesni_set_decrypt_key:
5477 ++L_aesni_set_decrypt_key_begin:
5478 ++ movl 4(%esp),%eax
5479 ++ movl 8(%esp),%ecx
5480 ++ movl 12(%esp),%edx
5481 ++ call __aesni_set_encrypt_key
5482 ++ movl 12(%esp),%edx
5483 ++ shll $4,%ecx
5484 ++ testl %eax,%eax
5485 ++ jnz L100dec_key_ret
5486 ++ leal 16(%edx,%ecx,1),%eax
5487 ++ movups (%edx),%xmm0
5488 ++ movups (%eax),%xmm1
5489 ++ movups %xmm0,(%eax)
5490 ++ movups %xmm1,(%edx)
5491 ++ leal 16(%edx),%edx
5492 ++ leal -16(%eax),%eax
5493 ++L101dec_key_inverse:
5494 ++ movups (%edx),%xmm0
5495 ++ movups (%eax),%xmm1
5496 ++.byte 102,15,56,219,192
5497 ++.byte 102,15,56,219,201
5498 ++ leal 16(%edx),%edx
5499 ++ leal -16(%eax),%eax
5500 ++ movups %xmm0,16(%eax)
5501 ++ movups %xmm1,-16(%edx)
5502 ++ cmpl %edx,%eax
5503 ++ ja L101dec_key_inverse
5504 ++ movups (%edx),%xmm0
5505 ++.byte 102,15,56,219,192
5506 ++ movups %xmm0,(%edx)
5507 ++ xorl %eax,%eax
5508 ++L100dec_key_ret:
5509 ++ ret
5510 ++.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
5511 ++.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
5512 ++.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
5513 ++.byte 115,108,46,111,114,103,62,0
5514 +diff --git a/crypto/aes/asm/vpaes-x86-mac.S b/crypto/aes/asm/vpaes-x86-mac.S
5515 +new file mode 100644
5516 +index 0000000..f6d164f
5517 +--- /dev/null
5518 ++++ b/crypto/aes/asm/vpaes-x86-mac.S
5519 +@@ -0,0 +1,635 @@
5520 ++.file "vpaes-x86.s"
5521 ++.text
5522 ++.align 6,0x90
5523 ++L_vpaes_consts:
5524 ++.long 218628480,235210255,168496130,67568393
5525 ++.long 252381056,17041926,33884169,51187212
5526 ++.long 252645135,252645135,252645135,252645135
5527 ++.long 1512730624,3266504856,1377990664,3401244816
5528 ++.long 830229760,1275146365,2969422977,3447763452
5529 ++.long 3411033600,2979783055,338359620,2782886510
5530 ++.long 4209124096,907596821,221174255,1006095553
5531 ++.long 191964160,3799684038,3164090317,1589111125
5532 ++.long 182528256,1777043520,2877432650,3265356744
5533 ++.long 1874708224,3503451415,3305285752,363511674
5534 ++.long 1606117888,3487855781,1093350906,2384367825
5535 ++.long 197121,67569157,134941193,202313229
5536 ++.long 67569157,134941193,202313229,197121
5537 ++.long 134941193,202313229,197121,67569157
5538 ++.long 202313229,197121,67569157,134941193
5539 ++.long 33619971,100992007,168364043,235736079
5540 ++.long 235736079,33619971,100992007,168364043
5541 ++.long 168364043,235736079,33619971,100992007
5542 ++.long 100992007,168364043,235736079,33619971
5543 ++.long 50462976,117835012,185207048,252579084
5544 ++.long 252314880,51251460,117574920,184942860
5545 ++.long 184682752,252054788,50987272,118359308
5546 ++.long 118099200,185467140,251790600,50727180
5547 ++.long 2946363062,528716217,1300004225,1881839624
5548 ++.long 1532713819,1532713819,1532713819,1532713819
5549 ++.long 3602276352,4288629033,3737020424,4153884961
5550 ++.long 1354558464,32357713,2958822624,3775749553
5551 ++.long 1201988352,132424512,1572796698,503232858
5552 ++.long 2213177600,1597421020,4103937655,675398315
5553 ++.long 2749646592,4273543773,1511898873,121693092
5554 ++.long 3040248576,1103263732,2871565598,1608280554
5555 ++.long 2236667136,2588920351,482954393,64377734
5556 ++.long 3069987328,291237287,2117370568,3650299247
5557 ++.long 533321216,3573750986,2572112006,1401264716
5558 ++.long 1339849704,2721158661,548607111,3445553514
5559 ++.long 2128193280,3054596040,2183486460,1257083700
5560 ++.long 655635200,1165381986,3923443150,2344132524
5561 ++.long 190078720,256924420,290342170,357187870
5562 ++.long 1610966272,2263057382,4103205268,309794674
5563 ++.long 2592527872,2233205587,1335446729,3402964816
5564 ++.long 3973531904,3225098121,3002836325,1918774430
5565 ++.long 3870401024,2102906079,2284471353,4117666579
5566 ++.long 617007872,1021508343,366931923,691083277
5567 ++.long 2528395776,3491914898,2968704004,1613121270
5568 ++.long 3445188352,3247741094,844474987,4093578302
5569 ++.long 651481088,1190302358,1689581232,574775300
5570 ++.long 4289380608,206939853,2555985458,2489840491
5571 ++.long 2130264064,327674451,3566485037,3349835193
5572 ++.long 2470714624,316102159,3636825756,3393945945
5573 ++.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
5574 ++.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
5575 ++.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
5576 ++.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
5577 ++.byte 118,101,114,115,105,116,121,41,0
5578 ++.align 6,0x90
5579 ++.align 4
5580 ++__vpaes_preheat:
5581 ++ addl (%esp),%ebp
5582 ++ movdqa -48(%ebp),%xmm7
5583 ++ movdqa -16(%ebp),%xmm6
5584 ++ ret
5585 ++.align 4
5586 ++__vpaes_encrypt_core:
5587 ++ movl $16,%ecx
5588 ++ movl 240(%edx),%eax
5589 ++ movdqa %xmm6,%xmm1
5590 ++ movdqa (%ebp),%xmm2
5591 ++ pandn %xmm0,%xmm1
5592 ++ movdqu (%edx),%xmm5
5593 ++ psrld $4,%xmm1
5594 ++ pand %xmm6,%xmm0
5595 ++.byte 102,15,56,0,208
5596 ++ movdqa 16(%ebp),%xmm0
5597 ++.byte 102,15,56,0,193
5598 ++ pxor %xmm5,%xmm2
5599 ++ pxor %xmm2,%xmm0
5600 ++ addl $16,%edx
5601 ++ leal 192(%ebp),%ebx
5602 ++ jmp L000enc_entry
5603 ++.align 4,0x90
5604 ++L001enc_loop:
5605 ++ movdqa 32(%ebp),%xmm4
5606 ++.byte 102,15,56,0,226
5607 ++ pxor %xmm5,%xmm4
5608 ++ movdqa 48(%ebp),%xmm0
5609 ++.byte 102,15,56,0,195
5610 ++ pxor %xmm4,%xmm0
5611 ++ movdqa 64(%ebp),%xmm5
5612 ++.byte 102,15,56,0,234
5613 ++ movdqa -64(%ebx,%ecx,1),%xmm1
5614 ++ movdqa 80(%ebp),%xmm2
5615 ++.byte 102,15,56,0,211
5616 ++ pxor %xmm5,%xmm2
5617 ++ movdqa (%ebx,%ecx,1),%xmm4
5618 ++ movdqa %xmm0,%xmm3
5619 ++.byte 102,15,56,0,193
5620 ++ addl $16,%edx
5621 ++ pxor %xmm2,%xmm0
5622 ++.byte 102,15,56,0,220
5623 ++ addl $16,%ecx
5624 ++ pxor %xmm0,%xmm3
5625 ++.byte 102,15,56,0,193
5626 ++ andl $48,%ecx
5627 ++ pxor %xmm3,%xmm0
5628 ++ subl $1,%eax
5629 ++L000enc_entry:
5630 ++ movdqa %xmm6,%xmm1
5631 ++ pandn %xmm0,%xmm1
5632 ++ psrld $4,%xmm1
5633 ++ pand %xmm6,%xmm0
5634 ++ movdqa -32(%ebp),%xmm5
5635 ++.byte 102,15,56,0,232
5636 ++ pxor %xmm1,%xmm0
5637 ++ movdqa %xmm7,%xmm3
5638 ++.byte 102,15,56,0,217
5639 ++ pxor %xmm5,%xmm3
5640 ++ movdqa %xmm7,%xmm4
5641 ++.byte 102,15,56,0,224
5642 ++ pxor %xmm5,%xmm4
5643 ++ movdqa %xmm7,%xmm2
5644 ++.byte 102,15,56,0,211
5645 ++ pxor %xmm0,%xmm2
5646 ++ movdqa %xmm7,%xmm3
5647 ++ movdqu (%edx),%xmm5
5648 ++.byte 102,15,56,0,220
5649 ++ pxor %xmm1,%xmm3
5650 ++ jnz L001enc_loop
5651 ++ movdqa 96(%ebp),%xmm4
5652 ++ movdqa 112(%ebp),%xmm0
5653 ++.byte 102,15,56,0,226
5654 ++ pxor %xmm5,%xmm4
5655 ++.byte 102,15,56,0,195
5656 ++ movdqa 64(%ebx,%ecx,1),%xmm1
5657 ++ pxor %xmm4,%xmm0
5658 ++.byte 102,15,56,0,193
5659 ++ ret
5660 ++.align 4
5661 ++__vpaes_decrypt_core:
5662 ++ movl 240(%edx),%eax
5663 ++ leal 608(%ebp),%ebx
5664 ++ movdqa %xmm6,%xmm1
5665 ++ movdqa -64(%ebx),%xmm2
5666 ++ pandn %xmm0,%xmm1
5667 ++ movl %eax,%ecx
5668 ++ psrld $4,%xmm1
5669 ++ movdqu (%edx),%xmm5
5670 ++ shll $4,%ecx
5671 ++ pand %xmm6,%xmm0
5672 ++.byte 102,15,56,0,208
5673 ++ movdqa -48(%ebx),%xmm0
5674 ++ xorl $48,%ecx
5675 ++.byte 102,15,56,0,193
5676 ++ andl $48,%ecx
5677 ++ pxor %xmm5,%xmm2
5678 ++ movdqa 176(%ebp),%xmm5
5679 ++ pxor %xmm2,%xmm0
5680 ++ addl $16,%edx
5681 ++ leal -352(%ebx,%ecx,1),%ecx
5682 ++ jmp L002dec_entry
5683 ++.align 4,0x90
5684 ++L003dec_loop:
5685 ++ movdqa -32(%ebx),%xmm4
5686 ++.byte 102,15,56,0,226
5687 ++ pxor %xmm0,%xmm4
5688 ++ movdqa -16(%ebx),%xmm0
5689 ++.byte 102,15,56,0,195
5690 ++ pxor %xmm4,%xmm0
5691 ++ addl $16,%edx
5692 ++.byte 102,15,56,0,197
5693 ++ movdqa (%ebx),%xmm4
5694 ++.byte 102,15,56,0,226
5695 ++ pxor %xmm0,%xmm4
5696 ++ movdqa 16(%ebx),%xmm0
5697 ++.byte 102,15,56,0,195
5698 ++ pxor %xmm4,%xmm0
5699 ++ subl $1,%eax
5700 ++.byte 102,15,56,0,197
5701 ++ movdqa 32(%ebx),%xmm4
5702 ++.byte 102,15,56,0,226
5703 ++ pxor %xmm0,%xmm4
5704 ++ movdqa 48(%ebx),%xmm0
5705 ++.byte 102,15,56,0,195
5706 ++ pxor %xmm4,%xmm0
5707 ++.byte 102,15,56,0,197
5708 ++ movdqa 64(%ebx),%xmm4
5709 ++.byte 102,15,56,0,226
5710 ++ pxor %xmm0,%xmm4
5711 ++ movdqa 80(%ebx),%xmm0
5712 ++.byte 102,15,56,0,195
5713 ++ pxor %xmm4,%xmm0
5714 ++.byte 102,15,58,15,237,12
5715 ++L002dec_entry:
5716 ++ movdqa %xmm6,%xmm1
5717 ++ pandn %xmm0,%xmm1
5718 ++ psrld $4,%xmm1
5719 ++ pand %xmm6,%xmm0
5720 ++ movdqa -32(%ebp),%xmm2
5721 ++.byte 102,15,56,0,208
5722 ++ pxor %xmm1,%xmm0
5723 ++ movdqa %xmm7,%xmm3
5724 ++.byte 102,15,56,0,217
5725 ++ pxor %xmm2,%xmm3
5726 ++ movdqa %xmm7,%xmm4
5727 ++.byte 102,15,56,0,224
5728 ++ pxor %xmm2,%xmm4
5729 ++ movdqa %xmm7,%xmm2
5730 ++.byte 102,15,56,0,211
5731 ++ pxor %xmm0,%xmm2
5732 ++ movdqa %xmm7,%xmm3
5733 ++.byte 102,15,56,0,220
5734 ++ pxor %xmm1,%xmm3
5735 ++ movdqu (%edx),%xmm0
5736 ++ jnz L003dec_loop
5737 ++ movdqa 96(%ebx),%xmm4
5738 ++.byte 102,15,56,0,226
5739 ++ pxor %xmm0,%xmm4
5740 ++ movdqa 112(%ebx),%xmm0
5741 ++ movdqa (%ecx),%xmm2
5742 ++.byte 102,15,56,0,195
5743 ++ pxor %xmm4,%xmm0
5744 ++.byte 102,15,56,0,194
5745 ++ ret
5746 ++.align 4
5747 ++__vpaes_schedule_core:
5748 ++ addl (%esp),%ebp
5749 ++ movdqu (%esi),%xmm0
5750 ++ movdqa 320(%ebp),%xmm2
5751 ++ movdqa %xmm0,%xmm3
5752 ++ leal (%ebp),%ebx
5753 ++ movdqa %xmm2,4(%esp)
5754 ++ call __vpaes_schedule_transform
5755 ++ movdqa %xmm0,%xmm7
5756 ++ testl %edi,%edi
5757 ++ jnz L004schedule_am_decrypting
5758 ++ movdqu %xmm0,(%edx)
5759 ++ jmp L005schedule_go
5760 ++L004schedule_am_decrypting:
5761 ++ movdqa 256(%ebp,%ecx,1),%xmm1
5762 ++.byte 102,15,56,0,217
5763 ++ movdqu %xmm3,(%edx)
5764 ++ xorl $48,%ecx
5765 ++L005schedule_go:
5766 ++ cmpl $192,%eax
5767 ++ ja L006schedule_256
5768 ++ je L007schedule_192
5769 ++L008schedule_128:
5770 ++ movl $10,%eax
5771 ++L009loop_schedule_128:
5772 ++ call __vpaes_schedule_round
5773 ++ decl %eax
5774 ++ jz L010schedule_mangle_last
5775 ++ call __vpaes_schedule_mangle
5776 ++ jmp L009loop_schedule_128
5777 ++.align 4,0x90
5778 ++L007schedule_192:
5779 ++ movdqu 8(%esi),%xmm0
5780 ++ call __vpaes_schedule_transform
5781 ++ movdqa %xmm0,%xmm6
5782 ++ pxor %xmm4,%xmm4
5783 ++ movhlps %xmm4,%xmm6
5784 ++ movl $4,%eax
5785 ++L011loop_schedule_192:
5786 ++ call __vpaes_schedule_round
5787 ++.byte 102,15,58,15,198,8
5788 ++ call __vpaes_schedule_mangle
5789 ++ call __vpaes_schedule_192_smear
5790 ++ call __vpaes_schedule_mangle
5791 ++ call __vpaes_schedule_round
5792 ++ decl %eax
5793 ++ jz L010schedule_mangle_last
5794 ++ call __vpaes_schedule_mangle
5795 ++ call __vpaes_schedule_192_smear
5796 ++ jmp L011loop_schedule_192
5797 ++.align 4,0x90
5798 ++L006schedule_256:
5799 ++ movdqu 16(%esi),%xmm0
5800 ++ call __vpaes_schedule_transform
5801 ++ movl $7,%eax
5802 ++L012loop_schedule_256:
5803 ++ call __vpaes_schedule_mangle
5804 ++ movdqa %xmm0,%xmm6
5805 ++ call __vpaes_schedule_round
5806 ++ decl %eax
5807 ++ jz L010schedule_mangle_last
5808 ++ call __vpaes_schedule_mangle
5809 ++ pshufd $255,%xmm0,%xmm0
5810 ++ movdqa %xmm7,20(%esp)
5811 ++ movdqa %xmm6,%xmm7
5812 ++ call L_vpaes_schedule_low_round
5813 ++ movdqa 20(%esp),%xmm7
5814 ++ jmp L012loop_schedule_256
5815 ++.align 4,0x90
5816 ++L010schedule_mangle_last:
5817 ++ leal 384(%ebp),%ebx
5818 ++ testl %edi,%edi
5819 ++ jnz L013schedule_mangle_last_dec
5820 ++ movdqa 256(%ebp,%ecx,1),%xmm1
5821 ++.byte 102,15,56,0,193
5822 ++ leal 352(%ebp),%ebx
5823 ++ addl $32,%edx
5824 ++L013schedule_mangle_last_dec:
5825 ++ addl $-16,%edx
5826 ++ pxor 336(%ebp),%xmm0
5827 ++ call __vpaes_schedule_transform
5828 ++ movdqu %xmm0,(%edx)
5829 ++ pxor %xmm0,%xmm0
5830 ++ pxor %xmm1,%xmm1
5831 ++ pxor %xmm2,%xmm2
5832 ++ pxor %xmm3,%xmm3
5833 ++ pxor %xmm4,%xmm4
5834 ++ pxor %xmm5,%xmm5
5835 ++ pxor %xmm6,%xmm6
5836 ++ pxor %xmm7,%xmm7
5837 ++ ret
5838 ++.align 4
5839 ++__vpaes_schedule_192_smear:
5840 ++ pshufd $128,%xmm6,%xmm0
5841 ++ pxor %xmm0,%xmm6
5842 ++ pshufd $254,%xmm7,%xmm0
5843 ++ pxor %xmm0,%xmm6
5844 ++ movdqa %xmm6,%xmm0
5845 ++ pxor %xmm1,%xmm1
5846 ++ movhlps %xmm1,%xmm6
5847 ++ ret
5848 ++.align 4
5849 ++__vpaes_schedule_round:
5850 ++ movdqa 8(%esp),%xmm2
5851 ++ pxor %xmm1,%xmm1
5852 ++.byte 102,15,58,15,202,15
5853 ++.byte 102,15,58,15,210,15
5854 ++ pxor %xmm1,%xmm7
5855 ++ pshufd $255,%xmm0,%xmm0
5856 ++.byte 102,15,58,15,192,1
5857 ++ movdqa %xmm2,8(%esp)
5858 ++L_vpaes_schedule_low_round:
5859 ++ movdqa %xmm7,%xmm1
5860 ++ pslldq $4,%xmm7
5861 ++ pxor %xmm1,%xmm7
5862 ++ movdqa %xmm7,%xmm1
5863 ++ pslldq $8,%xmm7
5864 ++ pxor %xmm1,%xmm7
5865 ++ pxor 336(%ebp),%xmm7
5866 ++ movdqa -16(%ebp),%xmm4
5867 ++ movdqa -48(%ebp),%xmm5
5868 ++ movdqa %xmm4,%xmm1
5869 ++ pandn %xmm0,%xmm1
5870 ++ psrld $4,%xmm1
5871 ++ pand %xmm4,%xmm0
5872 ++ movdqa -32(%ebp),%xmm2
5873 ++.byte 102,15,56,0,208
5874 ++ pxor %xmm1,%xmm0
5875 ++ movdqa %xmm5,%xmm3
5876 ++.byte 102,15,56,0,217
5877 ++ pxor %xmm2,%xmm3
5878 ++ movdqa %xmm5,%xmm4
5879 ++.byte 102,15,56,0,224
5880 ++ pxor %xmm2,%xmm4
5881 ++ movdqa %xmm5,%xmm2
5882 ++.byte 102,15,56,0,211
5883 ++ pxor %xmm0,%xmm2
5884 ++ movdqa %xmm5,%xmm3
5885 ++.byte 102,15,56,0,220
5886 ++ pxor %xmm1,%xmm3
5887 ++ movdqa 32(%ebp),%xmm4
5888 ++.byte 102,15,56,0,226
5889 ++ movdqa 48(%ebp),%xmm0
5890 ++.byte 102,15,56,0,195
5891 ++ pxor %xmm4,%xmm0
5892 ++ pxor %xmm7,%xmm0
5893 ++ movdqa %xmm0,%xmm7
5894 ++ ret
5895 ++.align 4
5896 ++__vpaes_schedule_transform:
5897 ++ movdqa -16(%ebp),%xmm2
5898 ++ movdqa %xmm2,%xmm1
5899 ++ pandn %xmm0,%xmm1
5900 ++ psrld $4,%xmm1
5901 ++ pand %xmm2,%xmm0
5902 ++ movdqa (%ebx),%xmm2
5903 ++.byte 102,15,56,0,208
5904 ++ movdqa 16(%ebx),%xmm0
5905 ++.byte 102,15,56,0,193
5906 ++ pxor %xmm2,%xmm0
5907 ++ ret
5908 ++.align 4
5909 ++__vpaes_schedule_mangle:
5910 ++ movdqa %xmm0,%xmm4
5911 ++ movdqa 128(%ebp),%xmm5
5912 ++ testl %edi,%edi
5913 ++ jnz L014schedule_mangle_dec
5914 ++ addl $16,%edx
5915 ++ pxor 336(%ebp),%xmm4
5916 ++.byte 102,15,56,0,229
5917 ++ movdqa %xmm4,%xmm3
5918 ++.byte 102,15,56,0,229
5919 ++ pxor %xmm4,%xmm3
5920 ++.byte 102,15,56,0,229
5921 ++ pxor %xmm4,%xmm3
5922 ++ jmp L015schedule_mangle_both
5923 ++.align 4,0x90
5924 ++L014schedule_mangle_dec:
5925 ++ movdqa -16(%ebp),%xmm2
5926 ++ leal 416(%ebp),%esi
5927 ++ movdqa %xmm2,%xmm1
5928 ++ pandn %xmm4,%xmm1
5929 ++ psrld $4,%xmm1
5930 ++ pand %xmm2,%xmm4
5931 ++ movdqa (%esi),%xmm2
5932 ++.byte 102,15,56,0,212
5933 ++ movdqa 16(%esi),%xmm3
5934 ++.byte 102,15,56,0,217
5935 ++ pxor %xmm2,%xmm3
5936 ++.byte 102,15,56,0,221
5937 ++ movdqa 32(%esi),%xmm2
5938 ++.byte 102,15,56,0,212
5939 ++ pxor %xmm3,%xmm2
5940 ++ movdqa 48(%esi),%xmm3
5941 ++.byte 102,15,56,0,217
5942 ++ pxor %xmm2,%xmm3
5943 ++.byte 102,15,56,0,221
5944 ++ movdqa 64(%esi),%xmm2
5945 ++.byte 102,15,56,0,212
5946 ++ pxor %xmm3,%xmm2
5947 ++ movdqa 80(%esi),%xmm3
5948 ++.byte 102,15,56,0,217
5949 ++ pxor %xmm2,%xmm3
5950 ++.byte 102,15,56,0,221
5951 ++ movdqa 96(%esi),%xmm2
5952 ++.byte 102,15,56,0,212
5953 ++ pxor %xmm3,%xmm2
5954 ++ movdqa 112(%esi),%xmm3
5955 ++.byte 102,15,56,0,217
5956 ++ pxor %xmm2,%xmm3
5957 ++ addl $-16,%edx
5958 ++L015schedule_mangle_both:
5959 ++ movdqa 256(%ebp,%ecx,1),%xmm1
5960 ++.byte 102,15,56,0,217
5961 ++ addl $-16,%ecx
5962 ++ andl $48,%ecx
5963 ++ movdqu %xmm3,(%edx)
5964 ++ ret
5965 ++.globl _vpaes_set_encrypt_key
5966 ++.align 4
5967 ++_vpaes_set_encrypt_key:
5968 ++L_vpaes_set_encrypt_key_begin:
5969 ++ pushl %ebp
5970 ++ pushl %ebx
5971 ++ pushl %esi
5972 ++ pushl %edi
5973 ++ movl 20(%esp),%esi
5974 ++ leal -56(%esp),%ebx
5975 ++ movl 24(%esp),%eax
5976 ++ andl $-16,%ebx
5977 ++ movl 28(%esp),%edx
5978 ++ xchgl %esp,%ebx
5979 ++ movl %ebx,48(%esp)
5980 ++ movl %eax,%ebx
5981 ++ shrl $5,%ebx
5982 ++ addl $5,%ebx
5983 ++ movl %ebx,240(%edx)
5984 ++ movl $48,%ecx
5985 ++ movl $0,%edi
5986 ++ leal L_vpaes_consts+0x30-L016pic_point,%ebp
5987 ++ call __vpaes_schedule_core
5988 ++L016pic_point:
5989 ++ movl 48(%esp),%esp
5990 ++ xorl %eax,%eax
5991 ++ popl %edi
5992 ++ popl %esi
5993 ++ popl %ebx
5994 ++ popl %ebp
5995 ++ ret
5996 ++.globl _vpaes_set_decrypt_key
5997 ++.align 4
5998 ++_vpaes_set_decrypt_key:
5999 ++L_vpaes_set_decrypt_key_begin:
6000 ++ pushl %ebp
6001 ++ pushl %ebx
6002 ++ pushl %esi
6003 ++ pushl %edi
6004 ++ movl 20(%esp),%esi
6005 ++ leal -56(%esp),%ebx
6006 ++ movl 24(%esp),%eax
6007 ++ andl $-16,%ebx
6008 ++ movl 28(%esp),%edx
6009 ++ xchgl %esp,%ebx
6010 ++ movl %ebx,48(%esp)
6011 ++ movl %eax,%ebx
6012 ++ shrl $5,%ebx
6013 ++ addl $5,%ebx
6014 ++ movl %ebx,240(%edx)
6015 ++ shll $4,%ebx
6016 ++ leal 16(%edx,%ebx,1),%edx
6017 ++ movl $1,%edi
6018 ++ movl %eax,%ecx
6019 ++ shrl $1,%ecx
6020 ++ andl $32,%ecx
6021 ++ xorl $32,%ecx
6022 ++ leal L_vpaes_consts+0x30-L017pic_point,%ebp
6023 ++ call __vpaes_schedule_core
6024 ++L017pic_point:
6025 ++ movl 48(%esp),%esp
6026 ++ xorl %eax,%eax
6027 ++ popl %edi
6028 ++ popl %esi
6029 ++ popl %ebx
6030 ++ popl %ebp
6031 ++ ret
6032 ++.globl _vpaes_encrypt
6033 ++.align 4
6034 ++_vpaes_encrypt:
6035 ++L_vpaes_encrypt_begin:
6036 ++ pushl %ebp
6037 ++ pushl %ebx
6038 ++ pushl %esi
6039 ++ pushl %edi
6040 ++ leal L_vpaes_consts+0x30-L018pic_point,%ebp
6041 ++ call __vpaes_preheat
6042 ++L018pic_point:
6043 ++ movl 20(%esp),%esi
6044 ++ leal -56(%esp),%ebx
6045 ++ movl 24(%esp),%edi
6046 ++ andl $-16,%ebx
6047 ++ movl 28(%esp),%edx
6048 ++ xchgl %esp,%ebx
6049 ++ movl %ebx,48(%esp)
6050 ++ movdqu (%esi),%xmm0
6051 ++ call __vpaes_encrypt_core
6052 ++ movdqu %xmm0,(%edi)
6053 ++ movl 48(%esp),%esp
6054 ++ popl %edi
6055 ++ popl %esi
6056 ++ popl %ebx
6057 ++ popl %ebp
6058 ++ ret
6059 ++.globl _vpaes_decrypt
6060 ++.align 4
6061 ++_vpaes_decrypt:
6062 ++L_vpaes_decrypt_begin:
6063 ++ pushl %ebp
6064 ++ pushl %ebx
6065 ++ pushl %esi
6066 ++ pushl %edi
6067 ++ leal L_vpaes_consts+0x30-L019pic_point,%ebp
6068 ++ call __vpaes_preheat
6069 ++L019pic_point:
6070 ++ movl 20(%esp),%esi
6071 ++ leal -56(%esp),%ebx
6072 ++ movl 24(%esp),%edi
6073 ++ andl $-16,%ebx
6074 ++ movl 28(%esp),%edx
6075 ++ xchgl %esp,%ebx
6076 ++ movl %ebx,48(%esp)
6077 ++ movdqu (%esi),%xmm0
6078 ++ call __vpaes_decrypt_core
6079 ++ movdqu %xmm0,(%edi)
6080 ++ movl 48(%esp),%esp
6081 ++ popl %edi
6082 ++ popl %esi
6083 ++ popl %ebx
6084 ++ popl %ebp
6085 ++ ret
6086 ++.globl _vpaes_cbc_encrypt
6087 ++.align 4
6088 ++_vpaes_cbc_encrypt:
6089 ++L_vpaes_cbc_encrypt_begin:
6090 ++ pushl %ebp
6091 ++ pushl %ebx
6092 ++ pushl %esi
6093 ++ pushl %edi
6094 ++ movl 20(%esp),%esi
6095 ++ movl 24(%esp),%edi
6096 ++ movl 28(%esp),%eax
6097 ++ movl 32(%esp),%edx
6098 ++ subl $16,%eax
6099 ++ jc L020cbc_abort
6100 ++ leal -56(%esp),%ebx
6101 ++ movl 36(%esp),%ebp
6102 ++ andl $-16,%ebx
6103 ++ movl 40(%esp),%ecx
6104 ++ xchgl %esp,%ebx
6105 ++ movdqu (%ebp),%xmm1
6106 ++ subl %esi,%edi
6107 ++ movl %ebx,48(%esp)
6108 ++ movl %edi,(%esp)
6109 ++ movl %edx,4(%esp)
6110 ++ movl %ebp,8(%esp)
6111 ++ movl %eax,%edi
6112 ++ leal L_vpaes_consts+0x30-L021pic_point,%ebp
6113 ++ call __vpaes_preheat
6114 ++L021pic_point:
6115 ++ cmpl $0,%ecx
6116 ++ je L022cbc_dec_loop
6117 ++ jmp L023cbc_enc_loop
6118 ++.align 4,0x90
6119 ++L023cbc_enc_loop:
6120 ++ movdqu (%esi),%xmm0
6121 ++ pxor %xmm1,%xmm0
6122 ++ call __vpaes_encrypt_core
6123 ++ movl (%esp),%ebx
6124 ++ movl 4(%esp),%edx
6125 ++ movdqa %xmm0,%xmm1
6126 ++ movdqu %xmm0,(%ebx,%esi,1)
6127 ++ leal 16(%esi),%esi
6128 ++ subl $16,%edi
6129 ++ jnc L023cbc_enc_loop
6130 ++ jmp L024cbc_done
6131 ++.align 4,0x90
6132 ++L022cbc_dec_loop:
6133 ++ movdqu (%esi),%xmm0
6134 ++ movdqa %xmm1,16(%esp)
6135 ++ movdqa %xmm0,32(%esp)
6136 ++ call __vpaes_decrypt_core
6137 ++ movl (%esp),%ebx
6138 ++ movl 4(%esp),%edx
6139 ++ pxor 16(%esp),%xmm0
6140 ++ movdqa 32(%esp),%xmm1
6141 ++ movdqu %xmm0,(%ebx,%esi,1)
6142 ++ leal 16(%esi),%esi
6143 ++ subl $16,%edi
6144 ++ jnc L022cbc_dec_loop
6145 ++L024cbc_done:
6146 ++ movl 8(%esp),%ebx
6147 ++ movl 48(%esp),%esp
6148 ++ movdqu %xmm1,(%ebx)
6149 ++L020cbc_abort:
6150 ++ popl %edi
6151 ++ popl %esi
6152 ++ popl %ebx
6153 ++ popl %ebp
6154 ++ ret
6155 +diff --git a/crypto/bf/asm/bf-586-mac.S b/crypto/bf/asm/bf-586-mac.S
6156 +new file mode 100644
6157 +index 0000000..bf02384
6158 +--- /dev/null
6159 ++++ b/crypto/bf/asm/bf-586-mac.S
6160 +@@ -0,0 +1,890 @@
6161 ++.file "bf-586.s"
6162 ++.text
6163 ++.globl _BF_encrypt
6164 ++.align 4
6165 ++_BF_encrypt:
6166 ++L_BF_encrypt_begin:
6167 ++
6168 ++ pushl %ebp
6169 ++ pushl %ebx
6170 ++ movl 12(%esp),%ebx
6171 ++ movl 16(%esp),%ebp
6172 ++ pushl %esi
6173 ++ pushl %edi
6174 ++ # Load the 2 words
6175 ++ movl (%ebx),%edi
6176 ++ movl 4(%ebx),%esi
6177 ++ xorl %eax,%eax
6178 ++ movl (%ebp),%ebx
6179 ++ xorl %ecx,%ecx
6180 ++ xorl %ebx,%edi
6181 ++
6182 ++ # Round 0
6183 ++ movl 4(%ebp),%edx
6184 ++ movl %edi,%ebx
6185 ++ xorl %edx,%esi
6186 ++ shrl $16,%ebx
6187 ++ movl %edi,%edx
6188 ++ movb %bh,%al
6189 ++ andl $255,%ebx
6190 ++ movb %dh,%cl
6191 ++ andl $255,%edx
6192 ++ movl 72(%ebp,%eax,4),%eax
6193 ++ movl 1096(%ebp,%ebx,4),%ebx
6194 ++ addl %eax,%ebx
6195 ++ movl 2120(%ebp,%ecx,4),%eax
6196 ++ xorl %eax,%ebx
6197 ++ movl 3144(%ebp,%edx,4),%edx
6198 ++ addl %edx,%ebx
6199 ++ xorl %eax,%eax
6200 ++ xorl %ebx,%esi
6201 ++
6202 ++ # Round 1
6203 ++ movl 8(%ebp),%edx
6204 ++ movl %esi,%ebx
6205 ++ xorl %edx,%edi
6206 ++ shrl $16,%ebx
6207 ++ movl %esi,%edx
6208 ++ movb %bh,%al
6209 ++ andl $255,%ebx
6210 ++ movb %dh,%cl
6211 ++ andl $255,%edx
6212 ++ movl 72(%ebp,%eax,4),%eax
6213 ++ movl 1096(%ebp,%ebx,4),%ebx
6214 ++ addl %eax,%ebx
6215 ++ movl 2120(%ebp,%ecx,4),%eax
6216 ++ xorl %eax,%ebx
6217 ++ movl 3144(%ebp,%edx,4),%edx
6218 ++ addl %edx,%ebx
6219 ++ xorl %eax,%eax
6220 ++ xorl %ebx,%edi
6221 ++
6222 ++ # Round 2
6223 ++ movl 12(%ebp),%edx
6224 ++ movl %edi,%ebx
6225 ++ xorl %edx,%esi
6226 ++ shrl $16,%ebx
6227 ++ movl %edi,%edx
6228 ++ movb %bh,%al
6229 ++ andl $255,%ebx
6230 ++ movb %dh,%cl
6231 ++ andl $255,%edx
6232 ++ movl 72(%ebp,%eax,4),%eax
6233 ++ movl 1096(%ebp,%ebx,4),%ebx
6234 ++ addl %eax,%ebx
6235 ++ movl 2120(%ebp,%ecx,4),%eax
6236 ++ xorl %eax,%ebx
6237 ++ movl 3144(%ebp,%edx,4),%edx
6238 ++ addl %edx,%ebx
6239 ++ xorl %eax,%eax
6240 ++ xorl %ebx,%esi
6241 ++
6242 ++ # Round 3
6243 ++ movl 16(%ebp),%edx
6244 ++ movl %esi,%ebx
6245 ++ xorl %edx,%edi
6246 ++ shrl $16,%ebx
6247 ++ movl %esi,%edx
6248 ++ movb %bh,%al
6249 ++ andl $255,%ebx
6250 ++ movb %dh,%cl
6251 ++ andl $255,%edx
6252 ++ movl 72(%ebp,%eax,4),%eax
6253 ++ movl 1096(%ebp,%ebx,4),%ebx
6254 ++ addl %eax,%ebx
6255 ++ movl 2120(%ebp,%ecx,4),%eax
6256 ++ xorl %eax,%ebx
6257 ++ movl 3144(%ebp,%edx,4),%edx
6258 ++ addl %edx,%ebx
6259 ++ xorl %eax,%eax
6260 ++ xorl %ebx,%edi
6261 ++
6262 ++ # Round 4
6263 ++ movl 20(%ebp),%edx
6264 ++ movl %edi,%ebx
6265 ++ xorl %edx,%esi
6266 ++ shrl $16,%ebx
6267 ++ movl %edi,%edx
6268 ++ movb %bh,%al
6269 ++ andl $255,%ebx
6270 ++ movb %dh,%cl
6271 ++ andl $255,%edx
6272 ++ movl 72(%ebp,%eax,4),%eax
6273 ++ movl 1096(%ebp,%ebx,4),%ebx
6274 ++ addl %eax,%ebx
6275 ++ movl 2120(%ebp,%ecx,4),%eax
6276 ++ xorl %eax,%ebx
6277 ++ movl 3144(%ebp,%edx,4),%edx
6278 ++ addl %edx,%ebx
6279 ++ xorl %eax,%eax
6280 ++ xorl %ebx,%esi
6281 ++
6282 ++ # Round 5
6283 ++ movl 24(%ebp),%edx
6284 ++ movl %esi,%ebx
6285 ++ xorl %edx,%edi
6286 ++ shrl $16,%ebx
6287 ++ movl %esi,%edx
6288 ++ movb %bh,%al
6289 ++ andl $255,%ebx
6290 ++ movb %dh,%cl
6291 ++ andl $255,%edx
6292 ++ movl 72(%ebp,%eax,4),%eax
6293 ++ movl 1096(%ebp,%ebx,4),%ebx
6294 ++ addl %eax,%ebx
6295 ++ movl 2120(%ebp,%ecx,4),%eax
6296 ++ xorl %eax,%ebx
6297 ++ movl 3144(%ebp,%edx,4),%edx
6298 ++ addl %edx,%ebx
6299 ++ xorl %eax,%eax
6300 ++ xorl %ebx,%edi
6301 ++
6302 ++ # Round 6
6303 ++ movl 28(%ebp),%edx
6304 ++ movl %edi,%ebx
6305 ++ xorl %edx,%esi
6306 ++ shrl $16,%ebx
6307 ++ movl %edi,%edx
6308 ++ movb %bh,%al
6309 ++ andl $255,%ebx
6310 ++ movb %dh,%cl
6311 ++ andl $255,%edx
6312 ++ movl 72(%ebp,%eax,4),%eax
6313 ++ movl 1096(%ebp,%ebx,4),%ebx
6314 ++ addl %eax,%ebx
6315 ++ movl 2120(%ebp,%ecx,4),%eax
6316 ++ xorl %eax,%ebx
6317 ++ movl 3144(%ebp,%edx,4),%edx
6318 ++ addl %edx,%ebx
6319 ++ xorl %eax,%eax
6320 ++ xorl %ebx,%esi
6321 ++
6322 ++ # Round 7
6323 ++ movl 32(%ebp),%edx
6324 ++ movl %esi,%ebx
6325 ++ xorl %edx,%edi
6326 ++ shrl $16,%ebx
6327 ++ movl %esi,%edx
6328 ++ movb %bh,%al
6329 ++ andl $255,%ebx
6330 ++ movb %dh,%cl
6331 ++ andl $255,%edx
6332 ++ movl 72(%ebp,%eax,4),%eax
6333 ++ movl 1096(%ebp,%ebx,4),%ebx
6334 ++ addl %eax,%ebx
6335 ++ movl 2120(%ebp,%ecx,4),%eax
6336 ++ xorl %eax,%ebx
6337 ++ movl 3144(%ebp,%edx,4),%edx
6338 ++ addl %edx,%ebx
6339 ++ xorl %eax,%eax
6340 ++ xorl %ebx,%edi
6341 ++
6342 ++ # Round 8
6343 ++ movl 36(%ebp),%edx
6344 ++ movl %edi,%ebx
6345 ++ xorl %edx,%esi
6346 ++ shrl $16,%ebx
6347 ++ movl %edi,%edx
6348 ++ movb %bh,%al
6349 ++ andl $255,%ebx
6350 ++ movb %dh,%cl
6351 ++ andl $255,%edx
6352 ++ movl 72(%ebp,%eax,4),%eax
6353 ++ movl 1096(%ebp,%ebx,4),%ebx
6354 ++ addl %eax,%ebx
6355 ++ movl 2120(%ebp,%ecx,4),%eax
6356 ++ xorl %eax,%ebx
6357 ++ movl 3144(%ebp,%edx,4),%edx
6358 ++ addl %edx,%ebx
6359 ++ xorl %eax,%eax
6360 ++ xorl %ebx,%esi
6361 ++
6362 ++ # Round 9
6363 ++ movl 40(%ebp),%edx
6364 ++ movl %esi,%ebx
6365 ++ xorl %edx,%edi
6366 ++ shrl $16,%ebx
6367 ++ movl %esi,%edx
6368 ++ movb %bh,%al
6369 ++ andl $255,%ebx
6370 ++ movb %dh,%cl
6371 ++ andl $255,%edx
6372 ++ movl 72(%ebp,%eax,4),%eax
6373 ++ movl 1096(%ebp,%ebx,4),%ebx
6374 ++ addl %eax,%ebx
6375 ++ movl 2120(%ebp,%ecx,4),%eax
6376 ++ xorl %eax,%ebx
6377 ++ movl 3144(%ebp,%edx,4),%edx
6378 ++ addl %edx,%ebx
6379 ++ xorl %eax,%eax
6380 ++ xorl %ebx,%edi
6381 ++
6382 ++ # Round 10
6383 ++ movl 44(%ebp),%edx
6384 ++ movl %edi,%ebx
6385 ++ xorl %edx,%esi
6386 ++ shrl $16,%ebx
6387 ++ movl %edi,%edx
6388 ++ movb %bh,%al
6389 ++ andl $255,%ebx
6390 ++ movb %dh,%cl
6391 ++ andl $255,%edx
6392 ++ movl 72(%ebp,%eax,4),%eax
6393 ++ movl 1096(%ebp,%ebx,4),%ebx
6394 ++ addl %eax,%ebx
6395 ++ movl 2120(%ebp,%ecx,4),%eax
6396 ++ xorl %eax,%ebx
6397 ++ movl 3144(%ebp,%edx,4),%edx
6398 ++ addl %edx,%ebx
6399 ++ xorl %eax,%eax
6400 ++ xorl %ebx,%esi
6401 ++
6402 ++ # Round 11
6403 ++ movl 48(%ebp),%edx
6404 ++ movl %esi,%ebx
6405 ++ xorl %edx,%edi
6406 ++ shrl $16,%ebx
6407 ++ movl %esi,%edx
6408 ++ movb %bh,%al
6409 ++ andl $255,%ebx
6410 ++ movb %dh,%cl
6411 ++ andl $255,%edx
6412 ++ movl 72(%ebp,%eax,4),%eax
6413 ++ movl 1096(%ebp,%ebx,4),%ebx
6414 ++ addl %eax,%ebx
6415 ++ movl 2120(%ebp,%ecx,4),%eax
6416 ++ xorl %eax,%ebx
6417 ++ movl 3144(%ebp,%edx,4),%edx
6418 ++ addl %edx,%ebx
6419 ++ xorl %eax,%eax
6420 ++ xorl %ebx,%edi
6421 ++
6422 ++ # Round 12
6423 ++ movl 52(%ebp),%edx
6424 ++ movl %edi,%ebx
6425 ++ xorl %edx,%esi
6426 ++ shrl $16,%ebx
6427 ++ movl %edi,%edx
6428 ++ movb %bh,%al
6429 ++ andl $255,%ebx
6430 ++ movb %dh,%cl
6431 ++ andl $255,%edx
6432 ++ movl 72(%ebp,%eax,4),%eax
6433 ++ movl 1096(%ebp,%ebx,4),%ebx
6434 ++ addl %eax,%ebx
6435 ++ movl 2120(%ebp,%ecx,4),%eax
6436 ++ xorl %eax,%ebx
6437 ++ movl 3144(%ebp,%edx,4),%edx
6438 ++ addl %edx,%ebx
6439 ++ xorl %eax,%eax
6440 ++ xorl %ebx,%esi
6441 ++
6442 ++ # Round 13
6443 ++ movl 56(%ebp),%edx
6444 ++ movl %esi,%ebx
6445 ++ xorl %edx,%edi
6446 ++ shrl $16,%ebx
6447 ++ movl %esi,%edx
6448 ++ movb %bh,%al
6449 ++ andl $255,%ebx
6450 ++ movb %dh,%cl
6451 ++ andl $255,%edx
6452 ++ movl 72(%ebp,%eax,4),%eax
6453 ++ movl 1096(%ebp,%ebx,4),%ebx
6454 ++ addl %eax,%ebx
6455 ++ movl 2120(%ebp,%ecx,4),%eax
6456 ++ xorl %eax,%ebx
6457 ++ movl 3144(%ebp,%edx,4),%edx
6458 ++ addl %edx,%ebx
6459 ++ xorl %eax,%eax
6460 ++ xorl %ebx,%edi
6461 ++
6462 ++ # Round 14
6463 ++ movl 60(%ebp),%edx
6464 ++ movl %edi,%ebx
6465 ++ xorl %edx,%esi
6466 ++ shrl $16,%ebx
6467 ++ movl %edi,%edx
6468 ++ movb %bh,%al
6469 ++ andl $255,%ebx
6470 ++ movb %dh,%cl
6471 ++ andl $255,%edx
6472 ++ movl 72(%ebp,%eax,4),%eax
6473 ++ movl 1096(%ebp,%ebx,4),%ebx
6474 ++ addl %eax,%ebx
6475 ++ movl 2120(%ebp,%ecx,4),%eax
6476 ++ xorl %eax,%ebx
6477 ++ movl 3144(%ebp,%edx,4),%edx
6478 ++ addl %edx,%ebx
6479 ++ xorl %eax,%eax
6480 ++ xorl %ebx,%esi
6481 ++
6482 ++ # Round 15
6483 ++ movl 64(%ebp),%edx
6484 ++ movl %esi,%ebx
6485 ++ xorl %edx,%edi
6486 ++ shrl $16,%ebx
6487 ++ movl %esi,%edx
6488 ++ movb %bh,%al
6489 ++ andl $255,%ebx
6490 ++ movb %dh,%cl
6491 ++ andl $255,%edx
6492 ++ movl 72(%ebp,%eax,4),%eax
6493 ++ movl 1096(%ebp,%ebx,4),%ebx
6494 ++ addl %eax,%ebx
6495 ++ movl 2120(%ebp,%ecx,4),%eax
6496 ++ xorl %eax,%ebx
6497 ++ movl 3144(%ebp,%edx,4),%edx
6498 ++ addl %edx,%ebx
6499 ++ # Load parameter 0 (16) enc=1
6500 ++ movl 20(%esp),%eax
6501 ++ xorl %ebx,%edi
6502 ++ movl 68(%ebp),%edx
6503 ++ xorl %edx,%esi
6504 ++ movl %edi,4(%eax)
6505 ++ movl %esi,(%eax)
6506 ++ popl %edi
6507 ++ popl %esi
6508 ++ popl %ebx
6509 ++ popl %ebp
6510 ++ ret
6511 ++.globl _BF_decrypt
6512 ++.align 4
6513 ++_BF_decrypt:
6514 ++L_BF_decrypt_begin:
6515 ++
6516 ++ pushl %ebp
6517 ++ pushl %ebx
6518 ++ movl 12(%esp),%ebx
6519 ++ movl 16(%esp),%ebp
6520 ++ pushl %esi
6521 ++ pushl %edi
6522 ++ # Load the 2 words
6523 ++ movl (%ebx),%edi
6524 ++ movl 4(%ebx),%esi
6525 ++ xorl %eax,%eax
6526 ++ movl 68(%ebp),%ebx
6527 ++ xorl %ecx,%ecx
6528 ++ xorl %ebx,%edi
6529 ++
6530 ++ # Round 16
6531 ++ movl 64(%ebp),%edx
6532 ++ movl %edi,%ebx
6533 ++ xorl %edx,%esi
6534 ++ shrl $16,%ebx
6535 ++ movl %edi,%edx
6536 ++ movb %bh,%al
6537 ++ andl $255,%ebx
6538 ++ movb %dh,%cl
6539 ++ andl $255,%edx
6540 ++ movl 72(%ebp,%eax,4),%eax
6541 ++ movl 1096(%ebp,%ebx,4),%ebx
6542 ++ addl %eax,%ebx
6543 ++ movl 2120(%ebp,%ecx,4),%eax
6544 ++ xorl %eax,%ebx
6545 ++ movl 3144(%ebp,%edx,4),%edx
6546 ++ addl %edx,%ebx
6547 ++ xorl %eax,%eax
6548 ++ xorl %ebx,%esi
6549 ++
6550 ++ # Round 15
6551 ++ movl 60(%ebp),%edx
6552 ++ movl %esi,%ebx
6553 ++ xorl %edx,%edi
6554 ++ shrl $16,%ebx
6555 ++ movl %esi,%edx
6556 ++ movb %bh,%al
6557 ++ andl $255,%ebx
6558 ++ movb %dh,%cl
6559 ++ andl $255,%edx
6560 ++ movl 72(%ebp,%eax,4),%eax
6561 ++ movl 1096(%ebp,%ebx,4),%ebx
6562 ++ addl %eax,%ebx
6563 ++ movl 2120(%ebp,%ecx,4),%eax
6564 ++ xorl %eax,%ebx
6565 ++ movl 3144(%ebp,%edx,4),%edx
6566 ++ addl %edx,%ebx
6567 ++ xorl %eax,%eax
6568 ++ xorl %ebx,%edi
6569 ++
6570 ++ # Round 14
6571 ++ movl 56(%ebp),%edx
6572 ++ movl %edi,%ebx
6573 ++ xorl %edx,%esi
6574 ++ shrl $16,%ebx
6575 ++ movl %edi,%edx
6576 ++ movb %bh,%al
6577 ++ andl $255,%ebx
6578 ++ movb %dh,%cl
6579 ++ andl $255,%edx
6580 ++ movl 72(%ebp,%eax,4),%eax
6581 ++ movl 1096(%ebp,%ebx,4),%ebx
6582 ++ addl %eax,%ebx
6583 ++ movl 2120(%ebp,%ecx,4),%eax
6584 ++ xorl %eax,%ebx
6585 ++ movl 3144(%ebp,%edx,4),%edx
6586 ++ addl %edx,%ebx
6587 ++ xorl %eax,%eax
6588 ++ xorl %ebx,%esi
6589 ++
6590 ++ # Round 13
6591 ++ movl 52(%ebp),%edx
6592 ++ movl %esi,%ebx
6593 ++ xorl %edx,%edi
6594 ++ shrl $16,%ebx
6595 ++ movl %esi,%edx
6596 ++ movb %bh,%al
6597 ++ andl $255,%ebx
6598 ++ movb %dh,%cl
6599 ++ andl $255,%edx
6600 ++ movl 72(%ebp,%eax,4),%eax
6601 ++ movl 1096(%ebp,%ebx,4),%ebx
6602 ++ addl %eax,%ebx
6603 ++ movl 2120(%ebp,%ecx,4),%eax
6604 ++ xorl %eax,%ebx
6605 ++ movl 3144(%ebp,%edx,4),%edx
6606 ++ addl %edx,%ebx
6607 ++ xorl %eax,%eax
6608 ++ xorl %ebx,%edi
6609 ++
6610 ++ # Round 12
6611 ++ movl 48(%ebp),%edx
6612 ++ movl %edi,%ebx
6613 ++ xorl %edx,%esi
6614 ++ shrl $16,%ebx
6615 ++ movl %edi,%edx
6616 ++ movb %bh,%al
6617 ++ andl $255,%ebx
6618 ++ movb %dh,%cl
6619 ++ andl $255,%edx
6620 ++ movl 72(%ebp,%eax,4),%eax
6621 ++ movl 1096(%ebp,%ebx,4),%ebx
6622 ++ addl %eax,%ebx
6623 ++ movl 2120(%ebp,%ecx,4),%eax
6624 ++ xorl %eax,%ebx
6625 ++ movl 3144(%ebp,%edx,4),%edx
6626 ++ addl %edx,%ebx
6627 ++ xorl %eax,%eax
6628 ++ xorl %ebx,%esi
6629 ++
6630 ++ # Round 11
6631 ++ movl 44(%ebp),%edx
6632 ++ movl %esi,%ebx
6633 ++ xorl %edx,%edi
6634 ++ shrl $16,%ebx
6635 ++ movl %esi,%edx
6636 ++ movb %bh,%al
6637 ++ andl $255,%ebx
6638 ++ movb %dh,%cl
6639 ++ andl $255,%edx
6640 ++ movl 72(%ebp,%eax,4),%eax
6641 ++ movl 1096(%ebp,%ebx,4),%ebx
6642 ++ addl %eax,%ebx
6643 ++ movl 2120(%ebp,%ecx,4),%eax
6644 ++ xorl %eax,%ebx
6645 ++ movl 3144(%ebp,%edx,4),%edx
6646 ++ addl %edx,%ebx
6647 ++ xorl %eax,%eax
6648 ++ xorl %ebx,%edi
6649 ++
6650 ++ # Round 10
6651 ++ movl 40(%ebp),%edx
6652 ++ movl %edi,%ebx
6653 ++ xorl %edx,%esi
6654 ++ shrl $16,%ebx
6655 ++ movl %edi,%edx
6656 ++ movb %bh,%al
6657 ++ andl $255,%ebx
6658 ++ movb %dh,%cl
6659 ++ andl $255,%edx
6660 ++ movl 72(%ebp,%eax,4),%eax
6661 ++ movl 1096(%ebp,%ebx,4),%ebx
6662 ++ addl %eax,%ebx
6663 ++ movl 2120(%ebp,%ecx,4),%eax
6664 ++ xorl %eax,%ebx
6665 ++ movl 3144(%ebp,%edx,4),%edx
6666 ++ addl %edx,%ebx
6667 ++ xorl %eax,%eax
6668 ++ xorl %ebx,%esi
6669 ++
6670 ++ # Round 9
6671 ++ movl 36(%ebp),%edx
6672 ++ movl %esi,%ebx
6673 ++ xorl %edx,%edi
6674 ++ shrl $16,%ebx
6675 ++ movl %esi,%edx
6676 ++ movb %bh,%al
6677 ++ andl $255,%ebx
6678 ++ movb %dh,%cl
6679 ++ andl $255,%edx
6680 ++ movl 72(%ebp,%eax,4),%eax
6681 ++ movl 1096(%ebp,%ebx,4),%ebx
6682 ++ addl %eax,%ebx
6683 ++ movl 2120(%ebp,%ecx,4),%eax
6684 ++ xorl %eax,%ebx
6685 ++ movl 3144(%ebp,%edx,4),%edx
6686 ++ addl %edx,%ebx
6687 ++ xorl %eax,%eax
6688 ++ xorl %ebx,%edi
6689 ++
6690 ++ # Round 8
6691 ++ movl 32(%ebp),%edx
6692 ++ movl %edi,%ebx
6693 ++ xorl %edx,%esi
6694 ++ shrl $16,%ebx
6695 ++ movl %edi,%edx
6696 ++ movb %bh,%al
6697 ++ andl $255,%ebx
6698 ++ movb %dh,%cl
6699 ++ andl $255,%edx
6700 ++ movl 72(%ebp,%eax,4),%eax
6701 ++ movl 1096(%ebp,%ebx,4),%ebx
6702 ++ addl %eax,%ebx
6703 ++ movl 2120(%ebp,%ecx,4),%eax
6704 ++ xorl %eax,%ebx
6705 ++ movl 3144(%ebp,%edx,4),%edx
6706 ++ addl %edx,%ebx
6707 ++ xorl %eax,%eax
6708 ++ xorl %ebx,%esi
6709 ++
6710 ++ # Round 7
6711 ++ movl 28(%ebp),%edx
6712 ++ movl %esi,%ebx
6713 ++ xorl %edx,%edi
6714 ++ shrl $16,%ebx
6715 ++ movl %esi,%edx
6716 ++ movb %bh,%al
6717 ++ andl $255,%ebx
6718 ++ movb %dh,%cl
6719 ++ andl $255,%edx
6720 ++ movl 72(%ebp,%eax,4),%eax
6721 ++ movl 1096(%ebp,%ebx,4),%ebx
6722 ++ addl %eax,%ebx
6723 ++ movl 2120(%ebp,%ecx,4),%eax
6724 ++ xorl %eax,%ebx
6725 ++ movl 3144(%ebp,%edx,4),%edx
6726 ++ addl %edx,%ebx
6727 ++ xorl %eax,%eax
6728 ++ xorl %ebx,%edi
6729 ++
6730 ++ # Round 6
6731 ++ movl 24(%ebp),%edx
6732 ++ movl %edi,%ebx
6733 ++ xorl %edx,%esi
6734 ++ shrl $16,%ebx
6735 ++ movl %edi,%edx
6736 ++ movb %bh,%al
6737 ++ andl $255,%ebx
6738 ++ movb %dh,%cl
6739 ++ andl $255,%edx
6740 ++ movl 72(%ebp,%eax,4),%eax
6741 ++ movl 1096(%ebp,%ebx,4),%ebx
6742 ++ addl %eax,%ebx
6743 ++ movl 2120(%ebp,%ecx,4),%eax
6744 ++ xorl %eax,%ebx
6745 ++ movl 3144(%ebp,%edx,4),%edx
6746 ++ addl %edx,%ebx
6747 ++ xorl %eax,%eax
6748 ++ xorl %ebx,%esi
6749 ++
6750 ++ # Round 5
6751 ++ movl 20(%ebp),%edx
6752 ++ movl %esi,%ebx
6753 ++ xorl %edx,%edi
6754 ++ shrl $16,%ebx
6755 ++ movl %esi,%edx
6756 ++ movb %bh,%al
6757 ++ andl $255,%ebx
6758 ++ movb %dh,%cl
6759 ++ andl $255,%edx
6760 ++ movl 72(%ebp,%eax,4),%eax
6761 ++ movl 1096(%ebp,%ebx,4),%ebx
6762 ++ addl %eax,%ebx
6763 ++ movl 2120(%ebp,%ecx,4),%eax
6764 ++ xorl %eax,%ebx
6765 ++ movl 3144(%ebp,%edx,4),%edx
6766 ++ addl %edx,%ebx
6767 ++ xorl %eax,%eax
6768 ++ xorl %ebx,%edi
6769 ++
6770 ++ # Round 4
6771 ++ movl 16(%ebp),%edx
6772 ++ movl %edi,%ebx
6773 ++ xorl %edx,%esi
6774 ++ shrl $16,%ebx
6775 ++ movl %edi,%edx
6776 ++ movb %bh,%al
6777 ++ andl $255,%ebx
6778 ++ movb %dh,%cl
6779 ++ andl $255,%edx
6780 ++ movl 72(%ebp,%eax,4),%eax
6781 ++ movl 1096(%ebp,%ebx,4),%ebx
6782 ++ addl %eax,%ebx
6783 ++ movl 2120(%ebp,%ecx,4),%eax
6784 ++ xorl %eax,%ebx
6785 ++ movl 3144(%ebp,%edx,4),%edx
6786 ++ addl %edx,%ebx
6787 ++ xorl %eax,%eax
6788 ++ xorl %ebx,%esi
6789 ++
6790 ++ # Round 3
6791 ++ movl 12(%ebp),%edx
6792 ++ movl %esi,%ebx
6793 ++ xorl %edx,%edi
6794 ++ shrl $16,%ebx
6795 ++ movl %esi,%edx
6796 ++ movb %bh,%al
6797 ++ andl $255,%ebx
6798 ++ movb %dh,%cl
6799 ++ andl $255,%edx
6800 ++ movl 72(%ebp,%eax,4),%eax
6801 ++ movl 1096(%ebp,%ebx,4),%ebx
6802 ++ addl %eax,%ebx
6803 ++ movl 2120(%ebp,%ecx,4),%eax
6804 ++ xorl %eax,%ebx
6805 ++ movl 3144(%ebp,%edx,4),%edx
6806 ++ addl %edx,%ebx
6807 ++ xorl %eax,%eax
6808 ++ xorl %ebx,%edi
6809 ++
6810 ++ # Round 2
6811 ++ movl 8(%ebp),%edx
6812 ++ movl %edi,%ebx
6813 ++ xorl %edx,%esi
6814 ++ shrl $16,%ebx
6815 ++ movl %edi,%edx
6816 ++ movb %bh,%al
6817 ++ andl $255,%ebx
6818 ++ movb %dh,%cl
6819 ++ andl $255,%edx
6820 ++ movl 72(%ebp,%eax,4),%eax
6821 ++ movl 1096(%ebp,%ebx,4),%ebx
6822 ++ addl %eax,%ebx
6823 ++ movl 2120(%ebp,%ecx,4),%eax
6824 ++ xorl %eax,%ebx
6825 ++ movl 3144(%ebp,%edx,4),%edx
6826 ++ addl %edx,%ebx
6827 ++ xorl %eax,%eax
6828 ++ xorl %ebx,%esi
6829 ++
6830 ++ # Round 1
6831 ++ movl 4(%ebp),%edx
6832 ++ movl %esi,%ebx
6833 ++ xorl %edx,%edi
6834 ++ shrl $16,%ebx
6835 ++ movl %esi,%edx
6836 ++ movb %bh,%al
6837 ++ andl $255,%ebx
6838 ++ movb %dh,%cl
6839 ++ andl $255,%edx
6840 ++ movl 72(%ebp,%eax,4),%eax
6841 ++ movl 1096(%ebp,%ebx,4),%ebx
6842 ++ addl %eax,%ebx
6843 ++ movl 2120(%ebp,%ecx,4),%eax
6844 ++ xorl %eax,%ebx
6845 ++ movl 3144(%ebp,%edx,4),%edx
6846 ++ addl %edx,%ebx
6847 ++ # Load parameter 0 (1) enc=0
6848 ++ movl 20(%esp),%eax
6849 ++ xorl %ebx,%edi
6850 ++ movl (%ebp),%edx
6851 ++ xorl %edx,%esi
6852 ++ movl %edi,4(%eax)
6853 ++ movl %esi,(%eax)
6854 ++ popl %edi
6855 ++ popl %esi
6856 ++ popl %ebx
6857 ++ popl %ebp
6858 ++ ret
6859 ++.globl _BF_cbc_encrypt
6860 ++.align 4
6861 ++_BF_cbc_encrypt:
6862 ++L_BF_cbc_encrypt_begin:
6863 ++
6864 ++ pushl %ebp
6865 ++ pushl %ebx
6866 ++ pushl %esi
6867 ++ pushl %edi
6868 ++ movl 28(%esp),%ebp
6869 ++ # getting iv ptr from parameter 4
6870 ++ movl 36(%esp),%ebx
6871 ++ movl (%ebx),%esi
6872 ++ movl 4(%ebx),%edi
6873 ++ pushl %edi
6874 ++ pushl %esi
6875 ++ pushl %edi
6876 ++ pushl %esi
6877 ++ movl %esp,%ebx
6878 ++ movl 36(%esp),%esi
6879 ++ movl 40(%esp),%edi
6880 ++ # getting encrypt flag from parameter 5
6881 ++ movl 56(%esp),%ecx
6882 ++ # get and push parameter 3
6883 ++ movl 48(%esp),%eax
6884 ++ pushl %eax
6885 ++ pushl %ebx
6886 ++ cmpl $0,%ecx
6887 ++ jz L000decrypt
6888 ++ andl $4294967288,%ebp
6889 ++ movl 8(%esp),%eax
6890 ++ movl 12(%esp),%ebx
6891 ++ jz L001encrypt_finish
6892 ++L002encrypt_loop:
6893 ++ movl (%esi),%ecx
6894 ++ movl 4(%esi),%edx
6895 ++ xorl %ecx,%eax
6896 ++ xorl %edx,%ebx
6897 ++ bswap %eax
6898 ++ bswap %ebx
6899 ++ movl %eax,8(%esp)
6900 ++ movl %ebx,12(%esp)
6901 ++ call L_BF_encrypt_begin
6902 ++ movl 8(%esp),%eax
6903 ++ movl 12(%esp),%ebx
6904 ++ bswap %eax
6905 ++ bswap %ebx
6906 ++ movl %eax,(%edi)
6907 ++ movl %ebx,4(%edi)
6908 ++ addl $8,%esi
6909 ++ addl $8,%edi
6910 ++ subl $8,%ebp
6911 ++ jnz L002encrypt_loop
6912 ++L001encrypt_finish:
6913 ++ movl 52(%esp),%ebp
6914 ++ andl $7,%ebp
6915 ++ jz L003finish
6916 ++ call L004PIC_point
6917 ++L004PIC_point:
6918 ++ popl %edx
6919 ++ leal L005cbc_enc_jmp_table-L004PIC_point(%edx),%ecx
6920 ++ movl (%ecx,%ebp,4),%ebp
6921 ++ addl %edx,%ebp
6922 ++ xorl %ecx,%ecx
6923 ++ xorl %edx,%edx
6924 ++ jmp *%ebp
6925 ++L006ej7:
6926 ++ movb 6(%esi),%dh
6927 ++ shll $8,%edx
6928 ++L007ej6:
6929 ++ movb 5(%esi),%dh
6930 ++L008ej5:
6931 ++ movb 4(%esi),%dl
6932 ++L009ej4:
6933 ++ movl (%esi),%ecx
6934 ++ jmp L010ejend
6935 ++L011ej3:
6936 ++ movb 2(%esi),%ch
6937 ++ shll $8,%ecx
6938 ++L012ej2:
6939 ++ movb 1(%esi),%ch
6940 ++L013ej1:
6941 ++ movb (%esi),%cl
6942 ++L010ejend:
6943 ++ xorl %ecx,%eax
6944 ++ xorl %edx,%ebx
6945 ++ bswap %eax
6946 ++ bswap %ebx
6947 ++ movl %eax,8(%esp)
6948 ++ movl %ebx,12(%esp)
6949 ++ call L_BF_encrypt_begin
6950 ++ movl 8(%esp),%eax
6951 ++ movl 12(%esp),%ebx
6952 ++ bswap %eax
6953 ++ bswap %ebx
6954 ++ movl %eax,(%edi)
6955 ++ movl %ebx,4(%edi)
6956 ++ jmp L003finish
6957 ++L000decrypt:
6958 ++ andl $4294967288,%ebp
6959 ++ movl 16(%esp),%eax
6960 ++ movl 20(%esp),%ebx
6961 ++ jz L014decrypt_finish
6962 ++L015decrypt_loop:
6963 ++ movl (%esi),%eax
6964 ++ movl 4(%esi),%ebx
6965 ++ bswap %eax
6966 ++ bswap %ebx
6967 ++ movl %eax,8(%esp)
6968 ++ movl %ebx,12(%esp)
6969 ++ call L_BF_decrypt_begin
6970 ++ movl 8(%esp),%eax
6971 ++ movl 12(%esp),%ebx
6972 ++ bswap %eax
6973 ++ bswap %ebx
6974 ++ movl 16(%esp),%ecx
6975 ++ movl 20(%esp),%edx
6976 ++ xorl %eax,%ecx
6977 ++ xorl %ebx,%edx
6978 ++ movl (%esi),%eax
6979 ++ movl 4(%esi),%ebx
6980 ++ movl %ecx,(%edi)
6981 ++ movl %edx,4(%edi)
6982 ++ movl %eax,16(%esp)
6983 ++ movl %ebx,20(%esp)
6984 ++ addl $8,%esi
6985 ++ addl $8,%edi
6986 ++ subl $8,%ebp
6987 ++ jnz L015decrypt_loop
6988 ++L014decrypt_finish:
6989 ++ movl 52(%esp),%ebp
6990 ++ andl $7,%ebp
6991 ++ jz L003finish
6992 ++ movl (%esi),%eax
6993 ++ movl 4(%esi),%ebx
6994 ++ bswap %eax
6995 ++ bswap %ebx
6996 ++ movl %eax,8(%esp)
6997 ++ movl %ebx,12(%esp)
6998 ++ call L_BF_decrypt_begin
6999 ++ movl 8(%esp),%eax
7000 ++ movl 12(%esp),%ebx
7001 ++ bswap %eax
7002 ++ bswap %ebx
7003 ++ movl 16(%esp),%ecx
7004 ++ movl 20(%esp),%edx
7005 ++ xorl %eax,%ecx
7006 ++ xorl %ebx,%edx
7007 ++ movl (%esi),%eax
7008 ++ movl 4(%esi),%ebx
7009 ++L016dj7:
7010 ++ rorl $16,%edx
7011 ++ movb %dl,6(%edi)
7012 ++ shrl $16,%edx
7013 ++L017dj6:
7014 ++ movb %dh,5(%edi)
7015 ++L018dj5:
7016 ++ movb %dl,4(%edi)
7017 ++L019dj4:
7018 ++ movl %ecx,(%edi)
7019 ++ jmp L020djend
7020 ++L021dj3:
7021 ++ rorl $16,%ecx
7022 ++ movb %cl,2(%edi)
7023 ++ shll $16,%ecx
7024 ++L022dj2:
7025 ++ movb %ch,1(%esi)
7026 ++L023dj1:
7027 ++ movb %cl,(%esi)
7028 ++L020djend:
7029 ++ jmp L003finish
7030 ++L003finish:
7031 ++ movl 60(%esp),%ecx
7032 ++ addl $24,%esp
7033 ++ movl %eax,(%ecx)
7034 ++ movl %ebx,4(%ecx)
7035 ++ popl %edi
7036 ++ popl %esi
7037 ++ popl %ebx
7038 ++ popl %ebp
7039 ++ ret
7040 ++.align 6,0x90
7041 ++L005cbc_enc_jmp_table:
7042 ++.long 0
7043 ++.long L013ej1-L004PIC_point
7044 ++.long L012ej2-L004PIC_point
7045 ++.long L011ej3-L004PIC_point
7046 ++.long L009ej4-L004PIC_point
7047 ++.long L008ej5-L004PIC_point
7048 ++.long L007ej6-L004PIC_point
7049 ++.long L006ej7-L004PIC_point
7050 ++.align 6,0x90
7051 +diff --git a/crypto/bn/asm/bn-586-mac.S b/crypto/bn/asm/bn-586-mac.S
7052 +new file mode 100644
7053 +index 0000000..05a81aa
7054 +--- /dev/null
7055 ++++ b/crypto/bn/asm/bn-586-mac.S
7056 +@@ -0,0 +1,1370 @@
7057 ++.file "crypto/bn/asm/bn-586.s"
7058 ++.text
7059 ++.globl _bn_mul_add_words
7060 ++.align 4
7061 ++_bn_mul_add_words:
7062 ++L_bn_mul_add_words_begin:
7063 ++ pushl %ebp
7064 ++ pushl %ebx
7065 ++ pushl %esi
7066 ++ pushl %edi
7067 ++
7068 ++ xorl %esi,%esi
7069 ++ movl 20(%esp),%edi
7070 ++ movl 28(%esp),%ecx
7071 ++ movl 24(%esp),%ebx
7072 ++ andl $4294967288,%ecx
7073 ++ movl 32(%esp),%ebp
7074 ++ pushl %ecx
7075 ++ jz L000maw_finish
7076 ++.align 4,0x90
7077 ++L001maw_loop:
7078 ++ # Round 0
7079 ++ movl (%ebx),%eax
7080 ++ mull %ebp
7081 ++ addl %esi,%eax
7082 ++ adcl $0,%edx
7083 ++ addl (%edi),%eax
7084 ++ adcl $0,%edx
7085 ++ movl %eax,(%edi)
7086 ++ movl %edx,%esi
7087 ++ # Round 4
7088 ++ movl 4(%ebx),%eax
7089 ++ mull %ebp
7090 ++ addl %esi,%eax
7091 ++ adcl $0,%edx
7092 ++ addl 4(%edi),%eax
7093 ++ adcl $0,%edx
7094 ++ movl %eax,4(%edi)
7095 ++ movl %edx,%esi
7096 ++ # Round 8
7097 ++ movl 8(%ebx),%eax
7098 ++ mull %ebp
7099 ++ addl %esi,%eax
7100 ++ adcl $0,%edx
7101 ++ addl 8(%edi),%eax
7102 ++ adcl $0,%edx
7103 ++ movl %eax,8(%edi)
7104 ++ movl %edx,%esi
7105 ++ # Round 12
7106 ++ movl 12(%ebx),%eax
7107 ++ mull %ebp
7108 ++ addl %esi,%eax
7109 ++ adcl $0,%edx
7110 ++ addl 12(%edi),%eax
7111 ++ adcl $0,%edx
7112 ++ movl %eax,12(%edi)
7113 ++ movl %edx,%esi
7114 ++ # Round 16
7115 ++ movl 16(%ebx),%eax
7116 ++ mull %ebp
7117 ++ addl %esi,%eax
7118 ++ adcl $0,%edx
7119 ++ addl 16(%edi),%eax
7120 ++ adcl $0,%edx
7121 ++ movl %eax,16(%edi)
7122 ++ movl %edx,%esi
7123 ++ # Round 20
7124 ++ movl 20(%ebx),%eax
7125 ++ mull %ebp
7126 ++ addl %esi,%eax
7127 ++ adcl $0,%edx
7128 ++ addl 20(%edi),%eax
7129 ++ adcl $0,%edx
7130 ++ movl %eax,20(%edi)
7131 ++ movl %edx,%esi
7132 ++ # Round 24
7133 ++ movl 24(%ebx),%eax
7134 ++ mull %ebp
7135 ++ addl %esi,%eax
7136 ++ adcl $0,%edx
7137 ++ addl 24(%edi),%eax
7138 ++ adcl $0,%edx
7139 ++ movl %eax,24(%edi)
7140 ++ movl %edx,%esi
7141 ++ # Round 28
7142 ++ movl 28(%ebx),%eax
7143 ++ mull %ebp
7144 ++ addl %esi,%eax
7145 ++ adcl $0,%edx
7146 ++ addl 28(%edi),%eax
7147 ++ adcl $0,%edx
7148 ++ movl %eax,28(%edi)
7149 ++ movl %edx,%esi
7150 ++
7151 ++ subl $8,%ecx
7152 ++ leal 32(%ebx),%ebx
7153 ++ leal 32(%edi),%edi
7154 ++ jnz L001maw_loop
7155 ++L000maw_finish:
7156 ++ movl 32(%esp),%ecx
7157 ++ andl $7,%ecx
7158 ++ jnz L002maw_finish2
7159 ++ jmp L003maw_end
7160 ++L002maw_finish2:
7161 ++ # Tail Round 0
7162 ++ movl (%ebx),%eax
7163 ++ mull %ebp
7164 ++ addl %esi,%eax
7165 ++ adcl $0,%edx
7166 ++ addl (%edi),%eax
7167 ++ adcl $0,%edx
7168 ++ decl %ecx
7169 ++ movl %eax,(%edi)
7170 ++ movl %edx,%esi
7171 ++ jz L003maw_end
7172 ++ # Tail Round 1
7173 ++ movl 4(%ebx),%eax
7174 ++ mull %ebp
7175 ++ addl %esi,%eax
7176 ++ adcl $0,%edx
7177 ++ addl 4(%edi),%eax
7178 ++ adcl $0,%edx
7179 ++ decl %ecx
7180 ++ movl %eax,4(%edi)
7181 ++ movl %edx,%esi
7182 ++ jz L003maw_end
7183 ++ # Tail Round 2
7184 ++ movl 8(%ebx),%eax
7185 ++ mull %ebp
7186 ++ addl %esi,%eax
7187 ++ adcl $0,%edx
7188 ++ addl 8(%edi),%eax
7189 ++ adcl $0,%edx
7190 ++ decl %ecx
7191 ++ movl %eax,8(%edi)
7192 ++ movl %edx,%esi
7193 ++ jz L003maw_end
7194 ++ # Tail Round 3
7195 ++ movl 12(%ebx),%eax
7196 ++ mull %ebp
7197 ++ addl %esi,%eax
7198 ++ adcl $0,%edx
7199 ++ addl 12(%edi),%eax
7200 ++ adcl $0,%edx
7201 ++ decl %ecx
7202 ++ movl %eax,12(%edi)
7203 ++ movl %edx,%esi
7204 ++ jz L003maw_end
7205 ++ # Tail Round 4
7206 ++ movl 16(%ebx),%eax
7207 ++ mull %ebp
7208 ++ addl %esi,%eax
7209 ++ adcl $0,%edx
7210 ++ addl 16(%edi),%eax
7211 ++ adcl $0,%edx
7212 ++ decl %ecx
7213 ++ movl %eax,16(%edi)
7214 ++ movl %edx,%esi
7215 ++ jz L003maw_end
7216 ++ # Tail Round 5
7217 ++ movl 20(%ebx),%eax
7218 ++ mull %ebp
7219 ++ addl %esi,%eax
7220 ++ adcl $0,%edx
7221 ++ addl 20(%edi),%eax
7222 ++ adcl $0,%edx
7223 ++ decl %ecx
7224 ++ movl %eax,20(%edi)
7225 ++ movl %edx,%esi
7226 ++ jz L003maw_end
7227 ++ # Tail Round 6
7228 ++ movl 24(%ebx),%eax
7229 ++ mull %ebp
7230 ++ addl %esi,%eax
7231 ++ adcl $0,%edx
7232 ++ addl 24(%edi),%eax
7233 ++ adcl $0,%edx
7234 ++ movl %eax,24(%edi)
7235 ++ movl %edx,%esi
7236 ++L003maw_end:
7237 ++ movl %esi,%eax
7238 ++ popl %ecx
7239 ++ popl %edi
7240 ++ popl %esi
7241 ++ popl %ebx
7242 ++ popl %ebp
7243 ++ ret
7244 ++.globl _bn_mul_words
7245 ++.align 4
7246 ++_bn_mul_words:
7247 ++L_bn_mul_words_begin:
7248 ++ pushl %ebp
7249 ++ pushl %ebx
7250 ++ pushl %esi
7251 ++ pushl %edi
7252 ++
7253 ++ xorl %esi,%esi
7254 ++ movl 20(%esp),%edi
7255 ++ movl 24(%esp),%ebx
7256 ++ movl 28(%esp),%ebp
7257 ++ movl 32(%esp),%ecx
7258 ++ andl $4294967288,%ebp
7259 ++ jz L004mw_finish
7260 ++L005mw_loop:
7261 ++ # Round 0
7262 ++ movl (%ebx),%eax
7263 ++ mull %ecx
7264 ++ addl %esi,%eax
7265 ++ adcl $0,%edx
7266 ++ movl %eax,(%edi)
7267 ++ movl %edx,%esi
7268 ++ # Round 4
7269 ++ movl 4(%ebx),%eax
7270 ++ mull %ecx
7271 ++ addl %esi,%eax
7272 ++ adcl $0,%edx
7273 ++ movl %eax,4(%edi)
7274 ++ movl %edx,%esi
7275 ++ # Round 8
7276 ++ movl 8(%ebx),%eax
7277 ++ mull %ecx
7278 ++ addl %esi,%eax
7279 ++ adcl $0,%edx
7280 ++ movl %eax,8(%edi)
7281 ++ movl %edx,%esi
7282 ++ # Round 12
7283 ++ movl 12(%ebx),%eax
7284 ++ mull %ecx
7285 ++ addl %esi,%eax
7286 ++ adcl $0,%edx
7287 ++ movl %eax,12(%edi)
7288 ++ movl %edx,%esi
7289 ++ # Round 16
7290 ++ movl 16(%ebx),%eax
7291 ++ mull %ecx
7292 ++ addl %esi,%eax
7293 ++ adcl $0,%edx
7294 ++ movl %eax,16(%edi)
7295 ++ movl %edx,%esi
7296 ++ # Round 20
7297 ++ movl 20(%ebx),%eax
7298 ++ mull %ecx
7299 ++ addl %esi,%eax
7300 ++ adcl $0,%edx
7301 ++ movl %eax,20(%edi)
7302 ++ movl %edx,%esi
7303 ++ # Round 24
7304 ++ movl 24(%ebx),%eax
7305 ++ mull %ecx
7306 ++ addl %esi,%eax
7307 ++ adcl $0,%edx
7308 ++ movl %eax,24(%edi)
7309 ++ movl %edx,%esi
7310 ++ # Round 28
7311 ++ movl 28(%ebx),%eax
7312 ++ mull %ecx
7313 ++ addl %esi,%eax
7314 ++ adcl $0,%edx
7315 ++ movl %eax,28(%edi)
7316 ++ movl %edx,%esi
7317 ++
7318 ++ addl $32,%ebx
7319 ++ addl $32,%edi
7320 ++ subl $8,%ebp
7321 ++ jz L004mw_finish
7322 ++ jmp L005mw_loop
7323 ++L004mw_finish:
7324 ++ movl 28(%esp),%ebp
7325 ++ andl $7,%ebp
7326 ++ jnz L006mw_finish2
7327 ++ jmp L007mw_end
7328 ++L006mw_finish2:
7329 ++ # Tail Round 0
7330 ++ movl (%ebx),%eax
7331 ++ mull %ecx
7332 ++ addl %esi,%eax
7333 ++ adcl $0,%edx
7334 ++ movl %eax,(%edi)
7335 ++ movl %edx,%esi
7336 ++ decl %ebp
7337 ++ jz L007mw_end
7338 ++ # Tail Round 1
7339 ++ movl 4(%ebx),%eax
7340 ++ mull %ecx
7341 ++ addl %esi,%eax
7342 ++ adcl $0,%edx
7343 ++ movl %eax,4(%edi)
7344 ++ movl %edx,%esi
7345 ++ decl %ebp
7346 ++ jz L007mw_end
7347 ++ # Tail Round 2
7348 ++ movl 8(%ebx),%eax
7349 ++ mull %ecx
7350 ++ addl %esi,%eax
7351 ++ adcl $0,%edx
7352 ++ movl %eax,8(%edi)
7353 ++ movl %edx,%esi
7354 ++ decl %ebp
7355 ++ jz L007mw_end
7356 ++ # Tail Round 3
7357 ++ movl 12(%ebx),%eax
7358 ++ mull %ecx
7359 ++ addl %esi,%eax
7360 ++ adcl $0,%edx
7361 ++ movl %eax,12(%edi)
7362 ++ movl %edx,%esi
7363 ++ decl %ebp
7364 ++ jz L007mw_end
7365 ++ # Tail Round 4
7366 ++ movl 16(%ebx),%eax
7367 ++ mull %ecx
7368 ++ addl %esi,%eax
7369 ++ adcl $0,%edx
7370 ++ movl %eax,16(%edi)
7371 ++ movl %edx,%esi
7372 ++ decl %ebp
7373 ++ jz L007mw_end
7374 ++ # Tail Round 5
7375 ++ movl 20(%ebx),%eax
7376 ++ mull %ecx
7377 ++ addl %esi,%eax
7378 ++ adcl $0,%edx
7379 ++ movl %eax,20(%edi)
7380 ++ movl %edx,%esi
7381 ++ decl %ebp
7382 ++ jz L007mw_end
7383 ++ # Tail Round 6
7384 ++ movl 24(%ebx),%eax
7385 ++ mull %ecx
7386 ++ addl %esi,%eax
7387 ++ adcl $0,%edx
7388 ++ movl %eax,24(%edi)
7389 ++ movl %edx,%esi
7390 ++L007mw_end:
7391 ++ movl %esi,%eax
7392 ++ popl %edi
7393 ++ popl %esi
7394 ++ popl %ebx
7395 ++ popl %ebp
7396 ++ ret
7397 ++.globl _bn_sqr_words
7398 ++.align 4
7399 ++_bn_sqr_words:
7400 ++L_bn_sqr_words_begin:
7401 ++ pushl %ebp
7402 ++ pushl %ebx
7403 ++ pushl %esi
7404 ++ pushl %edi
7405 ++
7406 ++ movl 20(%esp),%esi
7407 ++ movl 24(%esp),%edi
7408 ++ movl 28(%esp),%ebx
7409 ++ andl $4294967288,%ebx
7410 ++ jz L008sw_finish
7411 ++L009sw_loop:
7412 ++ # Round 0
7413 ++ movl (%edi),%eax
7414 ++ mull %eax
7415 ++ movl %eax,(%esi)
7416 ++ movl %edx,4(%esi)
7417 ++ # Round 4
7418 ++ movl 4(%edi),%eax
7419 ++ mull %eax
7420 ++ movl %eax,8(%esi)
7421 ++ movl %edx,12(%esi)
7422 ++ # Round 8
7423 ++ movl 8(%edi),%eax
7424 ++ mull %eax
7425 ++ movl %eax,16(%esi)
7426 ++ movl %edx,20(%esi)
7427 ++ # Round 12
7428 ++ movl 12(%edi),%eax
7429 ++ mull %eax
7430 ++ movl %eax,24(%esi)
7431 ++ movl %edx,28(%esi)
7432 ++ # Round 16
7433 ++ movl 16(%edi),%eax
7434 ++ mull %eax
7435 ++ movl %eax,32(%esi)
7436 ++ movl %edx,36(%esi)
7437 ++ # Round 20
7438 ++ movl 20(%edi),%eax
7439 ++ mull %eax
7440 ++ movl %eax,40(%esi)
7441 ++ movl %edx,44(%esi)
7442 ++ # Round 24
7443 ++ movl 24(%edi),%eax
7444 ++ mull %eax
7445 ++ movl %eax,48(%esi)
7446 ++ movl %edx,52(%esi)
7447 ++ # Round 28
7448 ++ movl 28(%edi),%eax
7449 ++ mull %eax
7450 ++ movl %eax,56(%esi)
7451 ++ movl %edx,60(%esi)
7452 ++
7453 ++ addl $32,%edi
7454 ++ addl $64,%esi
7455 ++ subl $8,%ebx
7456 ++ jnz L009sw_loop
7457 ++L008sw_finish:
7458 ++ movl 28(%esp),%ebx
7459 ++ andl $7,%ebx
7460 ++ jz L010sw_end
7461 ++ # Tail Round 0
7462 ++ movl (%edi),%eax
7463 ++ mull %eax
7464 ++ movl %eax,(%esi)
7465 ++ decl %ebx
7466 ++ movl %edx,4(%esi)
7467 ++ jz L010sw_end
7468 ++ # Tail Round 1
7469 ++ movl 4(%edi),%eax
7470 ++ mull %eax
7471 ++ movl %eax,8(%esi)
7472 ++ decl %ebx
7473 ++ movl %edx,12(%esi)
7474 ++ jz L010sw_end
7475 ++ # Tail Round 2
7476 ++ movl 8(%edi),%eax
7477 ++ mull %eax
7478 ++ movl %eax,16(%esi)
7479 ++ decl %ebx
7480 ++ movl %edx,20(%esi)
7481 ++ jz L010sw_end
7482 ++ # Tail Round 3
7483 ++ movl 12(%edi),%eax
7484 ++ mull %eax
7485 ++ movl %eax,24(%esi)
7486 ++ decl %ebx
7487 ++ movl %edx,28(%esi)
7488 ++ jz L010sw_end
7489 ++ # Tail Round 4
7490 ++ movl 16(%edi),%eax
7491 ++ mull %eax
7492 ++ movl %eax,32(%esi)
7493 ++ decl %ebx
7494 ++ movl %edx,36(%esi)
7495 ++ jz L010sw_end
7496 ++ # Tail Round 5
7497 ++ movl 20(%edi),%eax
7498 ++ mull %eax
7499 ++ movl %eax,40(%esi)
7500 ++ decl %ebx
7501 ++ movl %edx,44(%esi)
7502 ++ jz L010sw_end
7503 ++ # Tail Round 6
7504 ++ movl 24(%edi),%eax
7505 ++ mull %eax
7506 ++ movl %eax,48(%esi)
7507 ++ movl %edx,52(%esi)
7508 ++L010sw_end:
7509 ++ popl %edi
7510 ++ popl %esi
7511 ++ popl %ebx
7512 ++ popl %ebp
7513 ++ ret
7514 ++.globl _bn_div_words
7515 ++.align 4
7516 ++_bn_div_words:
7517 ++L_bn_div_words_begin:
7518 ++ movl 4(%esp),%edx
7519 ++ movl 8(%esp),%eax
7520 ++ movl 12(%esp),%ecx
7521 ++ divl %ecx
7522 ++ ret
7523 ++.globl _bn_add_words
7524 ++.align 4
7525 ++_bn_add_words:
7526 ++L_bn_add_words_begin:
7527 ++ pushl %ebp
7528 ++ pushl %ebx
7529 ++ pushl %esi
7530 ++ pushl %edi
7531 ++
7532 ++ movl 20(%esp),%ebx
7533 ++ movl 24(%esp),%esi
7534 ++ movl 28(%esp),%edi
7535 ++ movl 32(%esp),%ebp
7536 ++ xorl %eax,%eax
7537 ++ andl $4294967288,%ebp
7538 ++ jz L011aw_finish
7539 ++L012aw_loop:
7540 ++ # Round 0
7541 ++ movl (%esi),%ecx
7542 ++ movl (%edi),%edx
7543 ++ addl %eax,%ecx
7544 ++ movl $0,%eax
7545 ++ adcl %eax,%eax
7546 ++ addl %edx,%ecx
7547 ++ adcl $0,%eax
7548 ++ movl %ecx,(%ebx)
7549 ++ # Round 1
7550 ++ movl 4(%esi),%ecx
7551 ++ movl 4(%edi),%edx
7552 ++ addl %eax,%ecx
7553 ++ movl $0,%eax
7554 ++ adcl %eax,%eax
7555 ++ addl %edx,%ecx
7556 ++ adcl $0,%eax
7557 ++ movl %ecx,4(%ebx)
7558 ++ # Round 2
7559 ++ movl 8(%esi),%ecx
7560 ++ movl 8(%edi),%edx
7561 ++ addl %eax,%ecx
7562 ++ movl $0,%eax
7563 ++ adcl %eax,%eax
7564 ++ addl %edx,%ecx
7565 ++ adcl $0,%eax
7566 ++ movl %ecx,8(%ebx)
7567 ++ # Round 3
7568 ++ movl 12(%esi),%ecx
7569 ++ movl 12(%edi),%edx
7570 ++ addl %eax,%ecx
7571 ++ movl $0,%eax
7572 ++ adcl %eax,%eax
7573 ++ addl %edx,%ecx
7574 ++ adcl $0,%eax
7575 ++ movl %ecx,12(%ebx)
7576 ++ # Round 4
7577 ++ movl 16(%esi),%ecx
7578 ++ movl 16(%edi),%edx
7579 ++ addl %eax,%ecx
7580 ++ movl $0,%eax
7581 ++ adcl %eax,%eax
7582 ++ addl %edx,%ecx
7583 ++ adcl $0,%eax
7584 ++ movl %ecx,16(%ebx)
7585 ++ # Round 5
7586 ++ movl 20(%esi),%ecx
7587 ++ movl 20(%edi),%edx
7588 ++ addl %eax,%ecx
7589 ++ movl $0,%eax
7590 ++ adcl %eax,%eax
7591 ++ addl %edx,%ecx
7592 ++ adcl $0,%eax
7593 ++ movl %ecx,20(%ebx)
7594 ++ # Round 6
7595 ++ movl 24(%esi),%ecx
7596 ++ movl 24(%edi),%edx
7597 ++ addl %eax,%ecx
7598 ++ movl $0,%eax
7599 ++ adcl %eax,%eax
7600 ++ addl %edx,%ecx
7601 ++ adcl $0,%eax
7602 ++ movl %ecx,24(%ebx)
7603 ++ # Round 7
7604 ++ movl 28(%esi),%ecx
7605 ++ movl 28(%edi),%edx
7606 ++ addl %eax,%ecx
7607 ++ movl $0,%eax
7608 ++ adcl %eax,%eax
7609 ++ addl %edx,%ecx
7610 ++ adcl $0,%eax
7611 ++ movl %ecx,28(%ebx)
7612 ++
7613 ++ addl $32,%esi
7614 ++ addl $32,%edi
7615 ++ addl $32,%ebx
7616 ++ subl $8,%ebp
7617 ++ jnz L012aw_loop
7618 ++L011aw_finish:
7619 ++ movl 32(%esp),%ebp
7620 ++ andl $7,%ebp
7621 ++ jz L013aw_end
7622 ++ # Tail Round 0
7623 ++ movl (%esi),%ecx
7624 ++ movl (%edi),%edx
7625 ++ addl %eax,%ecx
7626 ++ movl $0,%eax
7627 ++ adcl %eax,%eax
7628 ++ addl %edx,%ecx
7629 ++ adcl $0,%eax
7630 ++ decl %ebp
7631 ++ movl %ecx,(%ebx)
7632 ++ jz L013aw_end
7633 ++ # Tail Round 1
7634 ++ movl 4(%esi),%ecx
7635 ++ movl 4(%edi),%edx
7636 ++ addl %eax,%ecx
7637 ++ movl $0,%eax
7638 ++ adcl %eax,%eax
7639 ++ addl %edx,%ecx
7640 ++ adcl $0,%eax
7641 ++ decl %ebp
7642 ++ movl %ecx,4(%ebx)
7643 ++ jz L013aw_end
7644 ++ # Tail Round 2
7645 ++ movl 8(%esi),%ecx
7646 ++ movl 8(%edi),%edx
7647 ++ addl %eax,%ecx
7648 ++ movl $0,%eax
7649 ++ adcl %eax,%eax
7650 ++ addl %edx,%ecx
7651 ++ adcl $0,%eax
7652 ++ decl %ebp
7653 ++ movl %ecx,8(%ebx)
7654 ++ jz L013aw_end
7655 ++ # Tail Round 3
7656 ++ movl 12(%esi),%ecx
7657 ++ movl 12(%edi),%edx
7658 ++ addl %eax,%ecx
7659 ++ movl $0,%eax
7660 ++ adcl %eax,%eax
7661 ++ addl %edx,%ecx
7662 ++ adcl $0,%eax
7663 ++ decl %ebp
7664 ++ movl %ecx,12(%ebx)
7665 ++ jz L013aw_end
7666 ++ # Tail Round 4
7667 ++ movl 16(%esi),%ecx
7668 ++ movl 16(%edi),%edx
7669 ++ addl %eax,%ecx
7670 ++ movl $0,%eax
7671 ++ adcl %eax,%eax
7672 ++ addl %edx,%ecx
7673 ++ adcl $0,%eax
7674 ++ decl %ebp
7675 ++ movl %ecx,16(%ebx)
7676 ++ jz L013aw_end
7677 ++ # Tail Round 5
7678 ++ movl 20(%esi),%ecx
7679 ++ movl 20(%edi),%edx
7680 ++ addl %eax,%ecx
7681 ++ movl $0,%eax
7682 ++ adcl %eax,%eax
7683 ++ addl %edx,%ecx
7684 ++ adcl $0,%eax
7685 ++ decl %ebp
7686 ++ movl %ecx,20(%ebx)
7687 ++ jz L013aw_end
7688 ++ # Tail Round 6
7689 ++ movl 24(%esi),%ecx
7690 ++ movl 24(%edi),%edx
7691 ++ addl %eax,%ecx
7692 ++ movl $0,%eax
7693 ++ adcl %eax,%eax
7694 ++ addl %edx,%ecx
7695 ++ adcl $0,%eax
7696 ++ movl %ecx,24(%ebx)
7697 ++L013aw_end:
7698 ++ popl %edi
7699 ++ popl %esi
7700 ++ popl %ebx
7701 ++ popl %ebp
7702 ++ ret
7703 ++.globl _bn_sub_words
7704 ++.align 4
7705 ++_bn_sub_words:
7706 ++L_bn_sub_words_begin:
7707 ++ pushl %ebp
7708 ++ pushl %ebx
7709 ++ pushl %esi
7710 ++ pushl %edi
7711 ++
7712 ++ movl 20(%esp),%ebx
7713 ++ movl 24(%esp),%esi
7714 ++ movl 28(%esp),%edi
7715 ++ movl 32(%esp),%ebp
7716 ++ xorl %eax,%eax
7717 ++ andl $4294967288,%ebp
7718 ++ jz L014aw_finish
7719 ++L015aw_loop:
7720 ++ # Round 0
7721 ++ movl (%esi),%ecx
7722 ++ movl (%edi),%edx
7723 ++ subl %eax,%ecx
7724 ++ movl $0,%eax
7725 ++ adcl %eax,%eax
7726 ++ subl %edx,%ecx
7727 ++ adcl $0,%eax
7728 ++ movl %ecx,(%ebx)
7729 ++ # Round 1
7730 ++ movl 4(%esi),%ecx
7731 ++ movl 4(%edi),%edx
7732 ++ subl %eax,%ecx
7733 ++ movl $0,%eax
7734 ++ adcl %eax,%eax
7735 ++ subl %edx,%ecx
7736 ++ adcl $0,%eax
7737 ++ movl %ecx,4(%ebx)
7738 ++ # Round 2
7739 ++ movl 8(%esi),%ecx
7740 ++ movl 8(%edi),%edx
7741 ++ subl %eax,%ecx
7742 ++ movl $0,%eax
7743 ++ adcl %eax,%eax
7744 ++ subl %edx,%ecx
7745 ++ adcl $0,%eax
7746 ++ movl %ecx,8(%ebx)
7747 ++ # Round 3
7748 ++ movl 12(%esi),%ecx
7749 ++ movl 12(%edi),%edx
7750 ++ subl %eax,%ecx
7751 ++ movl $0,%eax
7752 ++ adcl %eax,%eax
7753 ++ subl %edx,%ecx
7754 ++ adcl $0,%eax
7755 ++ movl %ecx,12(%ebx)
7756 ++ # Round 4
7757 ++ movl 16(%esi),%ecx
7758 ++ movl 16(%edi),%edx
7759 ++ subl %eax,%ecx
7760 ++ movl $0,%eax
7761 ++ adcl %eax,%eax
7762 ++ subl %edx,%ecx
7763 ++ adcl $0,%eax
7764 ++ movl %ecx,16(%ebx)
7765 ++ # Round 5
7766 ++ movl 20(%esi),%ecx
7767 ++ movl 20(%edi),%edx
7768 ++ subl %eax,%ecx
7769 ++ movl $0,%eax
7770 ++ adcl %eax,%eax
7771 ++ subl %edx,%ecx
7772 ++ adcl $0,%eax
7773 ++ movl %ecx,20(%ebx)
7774 ++ # Round 6
7775 ++ movl 24(%esi),%ecx
7776 ++ movl 24(%edi),%edx
7777 ++ subl %eax,%ecx
7778 ++ movl $0,%eax
7779 ++ adcl %eax,%eax
7780 ++ subl %edx,%ecx
7781 ++ adcl $0,%eax
7782 ++ movl %ecx,24(%ebx)
7783 ++ # Round 7
7784 ++ movl 28(%esi),%ecx
7785 ++ movl 28(%edi),%edx
7786 ++ subl %eax,%ecx
7787 ++ movl $0,%eax
7788 ++ adcl %eax,%eax
7789 ++ subl %edx,%ecx
7790 ++ adcl $0,%eax
7791 ++ movl %ecx,28(%ebx)
7792 ++
7793 ++ addl $32,%esi
7794 ++ addl $32,%edi
7795 ++ addl $32,%ebx
7796 ++ subl $8,%ebp
7797 ++ jnz L015aw_loop
7798 ++L014aw_finish:
7799 ++ movl 32(%esp),%ebp
7800 ++ andl $7,%ebp
7801 ++ jz L016aw_end
7802 ++ # Tail Round 0
7803 ++ movl (%esi),%ecx
7804 ++ movl (%edi),%edx
7805 ++ subl %eax,%ecx
7806 ++ movl $0,%eax
7807 ++ adcl %eax,%eax
7808 ++ subl %edx,%ecx
7809 ++ adcl $0,%eax
7810 ++ decl %ebp
7811 ++ movl %ecx,(%ebx)
7812 ++ jz L016aw_end
7813 ++ # Tail Round 1
7814 ++ movl 4(%esi),%ecx
7815 ++ movl 4(%edi),%edx
7816 ++ subl %eax,%ecx
7817 ++ movl $0,%eax
7818 ++ adcl %eax,%eax
7819 ++ subl %edx,%ecx
7820 ++ adcl $0,%eax
7821 ++ decl %ebp
7822 ++ movl %ecx,4(%ebx)
7823 ++ jz L016aw_end
7824 ++ # Tail Round 2
7825 ++ movl 8(%esi),%ecx
7826 ++ movl 8(%edi),%edx
7827 ++ subl %eax,%ecx
7828 ++ movl $0,%eax
7829 ++ adcl %eax,%eax
7830 ++ subl %edx,%ecx
7831 ++ adcl $0,%eax
7832 ++ decl %ebp
7833 ++ movl %ecx,8(%ebx)
7834 ++ jz L016aw_end
7835 ++ # Tail Round 3
7836 ++ movl 12(%esi),%ecx
7837 ++ movl 12(%edi),%edx
7838 ++ subl %eax,%ecx
7839 ++ movl $0,%eax
7840 ++ adcl %eax,%eax
7841 ++ subl %edx,%ecx
7842 ++ adcl $0,%eax
7843 ++ decl %ebp
7844 ++ movl %ecx,12(%ebx)
7845 ++ jz L016aw_end
7846 ++ # Tail Round 4
7847 ++ movl 16(%esi),%ecx
7848 ++ movl 16(%edi),%edx
7849 ++ subl %eax,%ecx
7850 ++ movl $0,%eax
7851 ++ adcl %eax,%eax
7852 ++ subl %edx,%ecx
7853 ++ adcl $0,%eax
7854 ++ decl %ebp
7855 ++ movl %ecx,16(%ebx)
7856 ++ jz L016aw_end
7857 ++ # Tail Round 5
7858 ++ movl 20(%esi),%ecx
7859 ++ movl 20(%edi),%edx
7860 ++ subl %eax,%ecx
7861 ++ movl $0,%eax
7862 ++ adcl %eax,%eax
7863 ++ subl %edx,%ecx
7864 ++ adcl $0,%eax
7865 ++ decl %ebp
7866 ++ movl %ecx,20(%ebx)
7867 ++ jz L016aw_end
7868 ++ # Tail Round 6
7869 ++ movl 24(%esi),%ecx
7870 ++ movl 24(%edi),%edx
7871 ++ subl %eax,%ecx
7872 ++ movl $0,%eax
7873 ++ adcl %eax,%eax
7874 ++ subl %edx,%ecx
7875 ++ adcl $0,%eax
7876 ++ movl %ecx,24(%ebx)
7877 ++L016aw_end:
7878 ++ popl %edi
7879 ++ popl %esi
7880 ++ popl %ebx
7881 ++ popl %ebp
7882 ++ ret
7883 ++.globl _bn_sub_part_words
7884 ++.align 4
7885 ++_bn_sub_part_words:
7886 ++L_bn_sub_part_words_begin:
7887 ++ pushl %ebp
7888 ++ pushl %ebx
7889 ++ pushl %esi
7890 ++ pushl %edi
7891 ++
7892 ++ movl 20(%esp),%ebx
7893 ++ movl 24(%esp),%esi
7894 ++ movl 28(%esp),%edi
7895 ++ movl 32(%esp),%ebp
7896 ++ xorl %eax,%eax
7897 ++ andl $4294967288,%ebp
7898 ++ jz L017aw_finish
7899 ++L018aw_loop:
7900 ++ # Round 0
7901 ++ movl (%esi),%ecx
7902 ++ movl (%edi),%edx
7903 ++ subl %eax,%ecx
7904 ++ movl $0,%eax
7905 ++ adcl %eax,%eax
7906 ++ subl %edx,%ecx
7907 ++ adcl $0,%eax
7908 ++ movl %ecx,(%ebx)
7909 ++ # Round 1
7910 ++ movl 4(%esi),%ecx
7911 ++ movl 4(%edi),%edx
7912 ++ subl %eax,%ecx
7913 ++ movl $0,%eax
7914 ++ adcl %eax,%eax
7915 ++ subl %edx,%ecx
7916 ++ adcl $0,%eax
7917 ++ movl %ecx,4(%ebx)
7918 ++ # Round 2
7919 ++ movl 8(%esi),%ecx
7920 ++ movl 8(%edi),%edx
7921 ++ subl %eax,%ecx
7922 ++ movl $0,%eax
7923 ++ adcl %eax,%eax
7924 ++ subl %edx,%ecx
7925 ++ adcl $0,%eax
7926 ++ movl %ecx,8(%ebx)
7927 ++ # Round 3
7928 ++ movl 12(%esi),%ecx
7929 ++ movl 12(%edi),%edx
7930 ++ subl %eax,%ecx
7931 ++ movl $0,%eax
7932 ++ adcl %eax,%eax
7933 ++ subl %edx,%ecx
7934 ++ adcl $0,%eax
7935 ++ movl %ecx,12(%ebx)
7936 ++ # Round 4
7937 ++ movl 16(%esi),%ecx
7938 ++ movl 16(%edi),%edx
7939 ++ subl %eax,%ecx
7940 ++ movl $0,%eax
7941 ++ adcl %eax,%eax
7942 ++ subl %edx,%ecx
7943 ++ adcl $0,%eax
7944 ++ movl %ecx,16(%ebx)
7945 ++ # Round 5
7946 ++ movl 20(%esi),%ecx
7947 ++ movl 20(%edi),%edx
7948 ++ subl %eax,%ecx
7949 ++ movl $0,%eax
7950 ++ adcl %eax,%eax
7951 ++ subl %edx,%ecx
7952 ++ adcl $0,%eax
7953 ++ movl %ecx,20(%ebx)
7954 ++ # Round 6
7955 ++ movl 24(%esi),%ecx
7956 ++ movl 24(%edi),%edx
7957 ++ subl %eax,%ecx
7958 ++ movl $0,%eax
7959 ++ adcl %eax,%eax
7960 ++ subl %edx,%ecx
7961 ++ adcl $0,%eax
7962 ++ movl %ecx,24(%ebx)
7963 ++ # Round 7
7964 ++ movl 28(%esi),%ecx
7965 ++ movl 28(%edi),%edx
7966 ++ subl %eax,%ecx
7967 ++ movl $0,%eax
7968 ++ adcl %eax,%eax
7969 ++ subl %edx,%ecx
7970 ++ adcl $0,%eax
7971 ++ movl %ecx,28(%ebx)
7972 ++
7973 ++ addl $32,%esi
7974 ++ addl $32,%edi
7975 ++ addl $32,%ebx
7976 ++ subl $8,%ebp
7977 ++ jnz L018aw_loop
7978 ++L017aw_finish:
7979 ++ movl 32(%esp),%ebp
7980 ++ andl $7,%ebp
7981 ++ jz L019aw_end
7982 ++ # Tail Round 0
7983 ++ movl (%esi),%ecx
7984 ++ movl (%edi),%edx
7985 ++ subl %eax,%ecx
7986 ++ movl $0,%eax
7987 ++ adcl %eax,%eax
7988 ++ subl %edx,%ecx
7989 ++ adcl $0,%eax
7990 ++ movl %ecx,(%ebx)
7991 ++ addl $4,%esi
7992 ++ addl $4,%edi
7993 ++ addl $4,%ebx
7994 ++ decl %ebp
7995 ++ jz L019aw_end
7996 ++ # Tail Round 1
7997 ++ movl (%esi),%ecx
7998 ++ movl (%edi),%edx
7999 ++ subl %eax,%ecx
8000 ++ movl $0,%eax
8001 ++ adcl %eax,%eax
8002 ++ subl %edx,%ecx
8003 ++ adcl $0,%eax
8004 ++ movl %ecx,(%ebx)
8005 ++ addl $4,%esi
8006 ++ addl $4,%edi
8007 ++ addl $4,%ebx
8008 ++ decl %ebp
8009 ++ jz L019aw_end
8010 ++ # Tail Round 2
8011 ++ movl (%esi),%ecx
8012 ++ movl (%edi),%edx
8013 ++ subl %eax,%ecx
8014 ++ movl $0,%eax
8015 ++ adcl %eax,%eax
8016 ++ subl %edx,%ecx
8017 ++ adcl $0,%eax
8018 ++ movl %ecx,(%ebx)
8019 ++ addl $4,%esi
8020 ++ addl $4,%edi
8021 ++ addl $4,%ebx
8022 ++ decl %ebp
8023 ++ jz L019aw_end
8024 ++ # Tail Round 3
8025 ++ movl (%esi),%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 ++ movl %ecx,(%ebx)
8033 ++ addl $4,%esi
8034 ++ addl $4,%edi
8035 ++ addl $4,%ebx
8036 ++ decl %ebp
8037 ++ jz L019aw_end
8038 ++ # Tail Round 4
8039 ++ movl (%esi),%ecx
8040 ++ movl (%edi),%edx
8041 ++ subl %eax,%ecx
8042 ++ movl $0,%eax
8043 ++ adcl %eax,%eax
8044 ++ subl %edx,%ecx
8045 ++ adcl $0,%eax
8046 ++ movl %ecx,(%ebx)
8047 ++ addl $4,%esi
8048 ++ addl $4,%edi
8049 ++ addl $4,%ebx
8050 ++ decl %ebp
8051 ++ jz L019aw_end
8052 ++ # Tail Round 5
8053 ++ movl (%esi),%ecx
8054 ++ movl (%edi),%edx
8055 ++ subl %eax,%ecx
8056 ++ movl $0,%eax
8057 ++ adcl %eax,%eax
8058 ++ subl %edx,%ecx
8059 ++ adcl $0,%eax
8060 ++ movl %ecx,(%ebx)
8061 ++ addl $4,%esi
8062 ++ addl $4,%edi
8063 ++ addl $4,%ebx
8064 ++ decl %ebp
8065 ++ jz L019aw_end
8066 ++ # Tail Round 6
8067 ++ movl (%esi),%ecx
8068 ++ movl (%edi),%edx
8069 ++ subl %eax,%ecx
8070 ++ movl $0,%eax
8071 ++ adcl %eax,%eax
8072 ++ subl %edx,%ecx
8073 ++ adcl $0,%eax
8074 ++ movl %ecx,(%ebx)
8075 ++ addl $4,%esi
8076 ++ addl $4,%edi
8077 ++ addl $4,%ebx
8078 ++L019aw_end:
8079 ++ cmpl $0,36(%esp)
8080 ++ je L020pw_end
8081 ++ movl 36(%esp),%ebp
8082 ++ cmpl $0,%ebp
8083 ++ je L020pw_end
8084 ++ jge L021pw_pos
8085 ++ # pw_neg
8086 ++ movl $0,%edx
8087 ++ subl %ebp,%edx
8088 ++ movl %edx,%ebp
8089 ++ andl $4294967288,%ebp
8090 ++ jz L022pw_neg_finish
8091 ++L023pw_neg_loop:
8092 ++ # dl<0 Round 0
8093 ++ movl $0,%ecx
8094 ++ movl (%edi),%edx
8095 ++ subl %eax,%ecx
8096 ++ movl $0,%eax
8097 ++ adcl %eax,%eax
8098 ++ subl %edx,%ecx
8099 ++ adcl $0,%eax
8100 ++ movl %ecx,(%ebx)
8101 ++ # dl<0 Round 1
8102 ++ movl $0,%ecx
8103 ++ movl 4(%edi),%edx
8104 ++ subl %eax,%ecx
8105 ++ movl $0,%eax
8106 ++ adcl %eax,%eax
8107 ++ subl %edx,%ecx
8108 ++ adcl $0,%eax
8109 ++ movl %ecx,4(%ebx)
8110 ++ # dl<0 Round 2
8111 ++ movl $0,%ecx
8112 ++ movl 8(%edi),%edx
8113 ++ subl %eax,%ecx
8114 ++ movl $0,%eax
8115 ++ adcl %eax,%eax
8116 ++ subl %edx,%ecx
8117 ++ adcl $0,%eax
8118 ++ movl %ecx,8(%ebx)
8119 ++ # dl<0 Round 3
8120 ++ movl $0,%ecx
8121 ++ movl 12(%edi),%edx
8122 ++ subl %eax,%ecx
8123 ++ movl $0,%eax
8124 ++ adcl %eax,%eax
8125 ++ subl %edx,%ecx
8126 ++ adcl $0,%eax
8127 ++ movl %ecx,12(%ebx)
8128 ++ # dl<0 Round 4
8129 ++ movl $0,%ecx
8130 ++ movl 16(%edi),%edx
8131 ++ subl %eax,%ecx
8132 ++ movl $0,%eax
8133 ++ adcl %eax,%eax
8134 ++ subl %edx,%ecx
8135 ++ adcl $0,%eax
8136 ++ movl %ecx,16(%ebx)
8137 ++ # dl<0 Round 5
8138 ++ movl $0,%ecx
8139 ++ movl 20(%edi),%edx
8140 ++ subl %eax,%ecx
8141 ++ movl $0,%eax
8142 ++ adcl %eax,%eax
8143 ++ subl %edx,%ecx
8144 ++ adcl $0,%eax
8145 ++ movl %ecx,20(%ebx)
8146 ++ # dl<0 Round 6
8147 ++ movl $0,%ecx
8148 ++ movl 24(%edi),%edx
8149 ++ subl %eax,%ecx
8150 ++ movl $0,%eax
8151 ++ adcl %eax,%eax
8152 ++ subl %edx,%ecx
8153 ++ adcl $0,%eax
8154 ++ movl %ecx,24(%ebx)
8155 ++ # dl<0 Round 7
8156 ++ movl $0,%ecx
8157 ++ movl 28(%edi),%edx
8158 ++ subl %eax,%ecx
8159 ++ movl $0,%eax
8160 ++ adcl %eax,%eax
8161 ++ subl %edx,%ecx
8162 ++ adcl $0,%eax
8163 ++ movl %ecx,28(%ebx)
8164 ++
8165 ++ addl $32,%edi
8166 ++ addl $32,%ebx
8167 ++ subl $8,%ebp
8168 ++ jnz L023pw_neg_loop
8169 ++L022pw_neg_finish:
8170 ++ movl 36(%esp),%edx
8171 ++ movl $0,%ebp
8172 ++ subl %edx,%ebp
8173 ++ andl $7,%ebp
8174 ++ jz L020pw_end
8175 ++ # dl<0 Tail Round 0
8176 ++ movl $0,%ecx
8177 ++ movl (%edi),%edx
8178 ++ subl %eax,%ecx
8179 ++ movl $0,%eax
8180 ++ adcl %eax,%eax
8181 ++ subl %edx,%ecx
8182 ++ adcl $0,%eax
8183 ++ decl %ebp
8184 ++ movl %ecx,(%ebx)
8185 ++ jz L020pw_end
8186 ++ # dl<0 Tail Round 1
8187 ++ movl $0,%ecx
8188 ++ movl 4(%edi),%edx
8189 ++ subl %eax,%ecx
8190 ++ movl $0,%eax
8191 ++ adcl %eax,%eax
8192 ++ subl %edx,%ecx
8193 ++ adcl $0,%eax
8194 ++ decl %ebp
8195 ++ movl %ecx,4(%ebx)
8196 ++ jz L020pw_end
8197 ++ # dl<0 Tail Round 2
8198 ++ movl $0,%ecx
8199 ++ movl 8(%edi),%edx
8200 ++ subl %eax,%ecx
8201 ++ movl $0,%eax
8202 ++ adcl %eax,%eax
8203 ++ subl %edx,%ecx
8204 ++ adcl $0,%eax
8205 ++ decl %ebp
8206 ++ movl %ecx,8(%ebx)
8207 ++ jz L020pw_end
8208 ++ # dl<0 Tail Round 3
8209 ++ movl $0,%ecx
8210 ++ movl 12(%edi),%edx
8211 ++ subl %eax,%ecx
8212 ++ movl $0,%eax
8213 ++ adcl %eax,%eax
8214 ++ subl %edx,%ecx
8215 ++ adcl $0,%eax
8216 ++ decl %ebp
8217 ++ movl %ecx,12(%ebx)
8218 ++ jz L020pw_end
8219 ++ # dl<0 Tail Round 4
8220 ++ movl $0,%ecx
8221 ++ movl 16(%edi),%edx
8222 ++ subl %eax,%ecx
8223 ++ movl $0,%eax
8224 ++ adcl %eax,%eax
8225 ++ subl %edx,%ecx
8226 ++ adcl $0,%eax
8227 ++ decl %ebp
8228 ++ movl %ecx,16(%ebx)
8229 ++ jz L020pw_end
8230 ++ # dl<0 Tail Round 5
8231 ++ movl $0,%ecx
8232 ++ movl 20(%edi),%edx
8233 ++ subl %eax,%ecx
8234 ++ movl $0,%eax
8235 ++ adcl %eax,%eax
8236 ++ subl %edx,%ecx
8237 ++ adcl $0,%eax
8238 ++ decl %ebp
8239 ++ movl %ecx,20(%ebx)
8240 ++ jz L020pw_end
8241 ++ # dl<0 Tail Round 6
8242 ++ movl $0,%ecx
8243 ++ movl 24(%edi),%edx
8244 ++ subl %eax,%ecx
8245 ++ movl $0,%eax
8246 ++ adcl %eax,%eax
8247 ++ subl %edx,%ecx
8248 ++ adcl $0,%eax
8249 ++ movl %ecx,24(%ebx)
8250 ++ jmp L020pw_end
8251 ++L021pw_pos:
8252 ++ andl $4294967288,%ebp
8253 ++ jz L024pw_pos_finish
8254 ++L025pw_pos_loop:
8255 ++ # dl>0 Round 0
8256 ++ movl (%esi),%ecx
8257 ++ subl %eax,%ecx
8258 ++ movl %ecx,(%ebx)
8259 ++ jnc L026pw_nc0
8260 ++ # dl>0 Round 1
8261 ++ movl 4(%esi),%ecx
8262 ++ subl %eax,%ecx
8263 ++ movl %ecx,4(%ebx)
8264 ++ jnc L027pw_nc1
8265 ++ # dl>0 Round 2
8266 ++ movl 8(%esi),%ecx
8267 ++ subl %eax,%ecx
8268 ++ movl %ecx,8(%ebx)
8269 ++ jnc L028pw_nc2
8270 ++ # dl>0 Round 3
8271 ++ movl 12(%esi),%ecx
8272 ++ subl %eax,%ecx
8273 ++ movl %ecx,12(%ebx)
8274 ++ jnc L029pw_nc3
8275 ++ # dl>0 Round 4
8276 ++ movl 16(%esi),%ecx
8277 ++ subl %eax,%ecx
8278 ++ movl %ecx,16(%ebx)
8279 ++ jnc L030pw_nc4
8280 ++ # dl>0 Round 5
8281 ++ movl 20(%esi),%ecx
8282 ++ subl %eax,%ecx
8283 ++ movl %ecx,20(%ebx)
8284 ++ jnc L031pw_nc5
8285 ++ # dl>0 Round 6
8286 ++ movl 24(%esi),%ecx
8287 ++ subl %eax,%ecx
8288 ++ movl %ecx,24(%ebx)
8289 ++ jnc L032pw_nc6
8290 ++ # dl>0 Round 7
8291 ++ movl 28(%esi),%ecx
8292 ++ subl %eax,%ecx
8293 ++ movl %ecx,28(%ebx)
8294 ++ jnc L033pw_nc7
8295 ++
8296 ++ addl $32,%esi
8297 ++ addl $32,%ebx
8298 ++ subl $8,%ebp
8299 ++ jnz L025pw_pos_loop
8300 ++L024pw_pos_finish:
8301 ++ movl 36(%esp),%ebp
8302 ++ andl $7,%ebp
8303 ++ jz L020pw_end
8304 ++ # dl>0 Tail Round 0
8305 ++ movl (%esi),%ecx
8306 ++ subl %eax,%ecx
8307 ++ movl %ecx,(%ebx)
8308 ++ jnc L034pw_tail_nc0
8309 ++ decl %ebp
8310 ++ jz L020pw_end
8311 ++ # dl>0 Tail Round 1
8312 ++ movl 4(%esi),%ecx
8313 ++ subl %eax,%ecx
8314 ++ movl %ecx,4(%ebx)
8315 ++ jnc L035pw_tail_nc1
8316 ++ decl %ebp
8317 ++ jz L020pw_end
8318 ++ # dl>0 Tail Round 2
8319 ++ movl 8(%esi),%ecx
8320 ++ subl %eax,%ecx
8321 ++ movl %ecx,8(%ebx)
8322 ++ jnc L036pw_tail_nc2
8323 ++ decl %ebp
8324 ++ jz L020pw_end
8325 ++ # dl>0 Tail Round 3
8326 ++ movl 12(%esi),%ecx
8327 ++ subl %eax,%ecx
8328 ++ movl %ecx,12(%ebx)
8329 ++ jnc L037pw_tail_nc3
8330 ++ decl %ebp
8331 ++ jz L020pw_end
8332 ++ # dl>0 Tail Round 4
8333 ++ movl 16(%esi),%ecx
8334 ++ subl %eax,%ecx
8335 ++ movl %ecx,16(%ebx)
8336 ++ jnc L038pw_tail_nc4
8337 ++ decl %ebp
8338 ++ jz L020pw_end
8339 ++ # dl>0 Tail Round 5
8340 ++ movl 20(%esi),%ecx
8341 ++ subl %eax,%ecx
8342 ++ movl %ecx,20(%ebx)
8343 ++ jnc L039pw_tail_nc5
8344 ++ decl %ebp
8345 ++ jz L020pw_end
8346 ++ # dl>0 Tail Round 6
8347 ++ movl 24(%esi),%ecx
8348 ++ subl %eax,%ecx
8349 ++ movl %ecx,24(%ebx)
8350 ++ jnc L040pw_tail_nc6
8351 ++ movl $1,%eax
8352 ++ jmp L020pw_end
8353 ++L041pw_nc_loop:
8354 ++ movl (%esi),%ecx
8355 ++ movl %ecx,(%ebx)
8356 ++L026pw_nc0:
8357 ++ movl 4(%esi),%ecx
8358 ++ movl %ecx,4(%ebx)
8359 ++L027pw_nc1:
8360 ++ movl 8(%esi),%ecx
8361 ++ movl %ecx,8(%ebx)
8362 ++L028pw_nc2:
8363 ++ movl 12(%esi),%ecx
8364 ++ movl %ecx,12(%ebx)
8365 ++L029pw_nc3:
8366 ++ movl 16(%esi),%ecx
8367 ++ movl %ecx,16(%ebx)
8368 ++L030pw_nc4:
8369 ++ movl 20(%esi),%ecx
8370 ++ movl %ecx,20(%ebx)
8371 ++L031pw_nc5:
8372 ++ movl 24(%esi),%ecx
8373 ++ movl %ecx,24(%ebx)
8374 ++L032pw_nc6:
8375 ++ movl 28(%esi),%ecx
8376 ++ movl %ecx,28(%ebx)
8377 ++L033pw_nc7:
8378 ++
8379 ++ addl $32,%esi
8380 ++ addl $32,%ebx
8381 ++ subl $8,%ebp
8382 ++ jnz L041pw_nc_loop
8383 ++ movl 36(%esp),%ebp
8384 ++ andl $7,%ebp
8385 ++ jz L042pw_nc_end
8386 ++ movl (%esi),%ecx
8387 ++ movl %ecx,(%ebx)
8388 ++L034pw_tail_nc0:
8389 ++ decl %ebp
8390 ++ jz L042pw_nc_end
8391 ++ movl 4(%esi),%ecx
8392 ++ movl %ecx,4(%ebx)
8393 ++L035pw_tail_nc1:
8394 ++ decl %ebp
8395 ++ jz L042pw_nc_end
8396 ++ movl 8(%esi),%ecx
8397 ++ movl %ecx,8(%ebx)
8398 ++L036pw_tail_nc2:
8399 ++ decl %ebp
8400 ++ jz L042pw_nc_end
8401 ++ movl 12(%esi),%ecx
8402 ++ movl %ecx,12(%ebx)
8403 ++L037pw_tail_nc3:
8404 ++ decl %ebp
8405 ++ jz L042pw_nc_end
8406 ++ movl 16(%esi),%ecx
8407 ++ movl %ecx,16(%ebx)
8408 ++L038pw_tail_nc4:
8409 ++ decl %ebp
8410 ++ jz L042pw_nc_end
8411 ++ movl 20(%esi),%ecx
8412 ++ movl %ecx,20(%ebx)
8413 ++L039pw_tail_nc5:
8414 ++ decl %ebp
8415 ++ jz L042pw_nc_end
8416 ++ movl 24(%esi),%ecx
8417 ++ movl %ecx,24(%ebx)
8418 ++L040pw_tail_nc6:
8419 ++L042pw_nc_end:
8420 ++ movl $0,%eax
8421 ++L020pw_end:
8422 ++ popl %edi
8423 ++ popl %esi
8424 ++ popl %ebx
8425 ++ popl %ebp
8426 ++ ret
8427 +diff --git a/crypto/bn/asm/co-586-mac.S b/crypto/bn/asm/co-586-mac.S
8428 +new file mode 100644
8429 +index 0000000..d82fdcb
8430 +--- /dev/null
8431 ++++ b/crypto/bn/asm/co-586-mac.S
8432 +@@ -0,0 +1,1246 @@
8433 ++.file "crypto/bn/asm/co-586.s"
8434 ++.text
8435 ++.globl _bn_mul_comba8
8436 ++.align 4
8437 ++_bn_mul_comba8:
8438 ++L_bn_mul_comba8_begin:
8439 ++ pushl %esi
8440 ++ movl 12(%esp),%esi
8441 ++ pushl %edi
8442 ++ movl 20(%esp),%edi
8443 ++ pushl %ebp
8444 ++ pushl %ebx
8445 ++ xorl %ebx,%ebx
8446 ++ movl (%esi),%eax
8447 ++ xorl %ecx,%ecx
8448 ++ movl (%edi),%edx
8449 ++ # ################## Calculate word 0
8450 ++ xorl %ebp,%ebp
8451 ++ # mul a[0]*b[0]
8452 ++ mull %edx
8453 ++ addl %eax,%ebx
8454 ++ movl 20(%esp),%eax
8455 ++ adcl %edx,%ecx
8456 ++ movl (%edi),%edx
8457 ++ adcl $0,%ebp
8458 ++ movl %ebx,(%eax)
8459 ++ movl 4(%esi),%eax
8460 ++ # saved r[0]
8461 ++ # ################## Calculate word 1
8462 ++ xorl %ebx,%ebx
8463 ++ # mul a[1]*b[0]
8464 ++ mull %edx
8465 ++ addl %eax,%ecx
8466 ++ movl (%esi),%eax
8467 ++ adcl %edx,%ebp
8468 ++ movl 4(%edi),%edx
8469 ++ adcl $0,%ebx
8470 ++ # mul a[0]*b[1]
8471 ++ mull %edx
8472 ++ addl %eax,%ecx
8473 ++ movl 20(%esp),%eax
8474 ++ adcl %edx,%ebp
8475 ++ movl (%edi),%edx
8476 ++ adcl $0,%ebx
8477 ++ movl %ecx,4(%eax)
8478 ++ movl 8(%esi),%eax
8479 ++ # saved r[1]
8480 ++ # ################## Calculate word 2
8481 ++ xorl %ecx,%ecx
8482 ++ # mul a[2]*b[0]
8483 ++ mull %edx
8484 ++ addl %eax,%ebp
8485 ++ movl 4(%esi),%eax
8486 ++ adcl %edx,%ebx
8487 ++ movl 4(%edi),%edx
8488 ++ adcl $0,%ecx
8489 ++ # mul a[1]*b[1]
8490 ++ mull %edx
8491 ++ addl %eax,%ebp
8492 ++ movl (%esi),%eax
8493 ++ adcl %edx,%ebx
8494 ++ movl 8(%edi),%edx
8495 ++ adcl $0,%ecx
8496 ++ # mul a[0]*b[2]
8497 ++ mull %edx
8498 ++ addl %eax,%ebp
8499 ++ movl 20(%esp),%eax
8500 ++ adcl %edx,%ebx
8501 ++ movl (%edi),%edx
8502 ++ adcl $0,%ecx
8503 ++ movl %ebp,8(%eax)
8504 ++ movl 12(%esi),%eax
8505 ++ # saved r[2]
8506 ++ # ################## Calculate word 3
8507 ++ xorl %ebp,%ebp
8508 ++ # mul a[3]*b[0]
8509 ++ mull %edx
8510 ++ addl %eax,%ebx
8511 ++ movl 8(%esi),%eax
8512 ++ adcl %edx,%ecx
8513 ++ movl 4(%edi),%edx
8514 ++ adcl $0,%ebp
8515 ++ # mul a[2]*b[1]
8516 ++ mull %edx
8517 ++ addl %eax,%ebx
8518 ++ movl 4(%esi),%eax
8519 ++ adcl %edx,%ecx
8520 ++ movl 8(%edi),%edx
8521 ++ adcl $0,%ebp
8522 ++ # mul a[1]*b[2]
8523 ++ mull %edx
8524 ++ addl %eax,%ebx
8525 ++ movl (%esi),%eax
8526 ++ adcl %edx,%ecx
8527 ++ movl 12(%edi),%edx
8528 ++ adcl $0,%ebp
8529 ++ # mul a[0]*b[3]
8530 ++ mull %edx
8531 ++ addl %eax,%ebx
8532 ++ movl 20(%esp),%eax
8533 ++ adcl %edx,%ecx
8534 ++ movl (%edi),%edx
8535 ++ adcl $0,%ebp
8536 ++ movl %ebx,12(%eax)
8537 ++ movl 16(%esi),%eax
8538 ++ # saved r[3]
8539 ++ # ################## Calculate word 4
8540 ++ xorl %ebx,%ebx
8541 ++ # mul a[4]*b[0]
8542 ++ mull %edx
8543 ++ addl %eax,%ecx
8544 ++ movl 12(%esi),%eax
8545 ++ adcl %edx,%ebp
8546 ++ movl 4(%edi),%edx
8547 ++ adcl $0,%ebx
8548 ++ # mul a[3]*b[1]
8549 ++ mull %edx
8550 ++ addl %eax,%ecx
8551 ++ movl 8(%esi),%eax
8552 ++ adcl %edx,%ebp
8553 ++ movl 8(%edi),%edx
8554 ++ adcl $0,%ebx
8555 ++ # mul a[2]*b[2]
8556 ++ mull %edx
8557 ++ addl %eax,%ecx
8558 ++ movl 4(%esi),%eax
8559 ++ adcl %edx,%ebp
8560 ++ movl 12(%edi),%edx
8561 ++ adcl $0,%ebx
8562 ++ # mul a[1]*b[3]
8563 ++ mull %edx
8564 ++ addl %eax,%ecx
8565 ++ movl (%esi),%eax
8566 ++ adcl %edx,%ebp
8567 ++ movl 16(%edi),%edx
8568 ++ adcl $0,%ebx
8569 ++ # mul a[0]*b[4]
8570 ++ mull %edx
8571 ++ addl %eax,%ecx
8572 ++ movl 20(%esp),%eax
8573 ++ adcl %edx,%ebp
8574 ++ movl (%edi),%edx
8575 ++ adcl $0,%ebx
8576 ++ movl %ecx,16(%eax)
8577 ++ movl 20(%esi),%eax
8578 ++ # saved r[4]
8579 ++ # ################## Calculate word 5
8580 ++ xorl %ecx,%ecx
8581 ++ # mul a[5]*b[0]
8582 ++ mull %edx
8583 ++ addl %eax,%ebp
8584 ++ movl 16(%esi),%eax
8585 ++ adcl %edx,%ebx
8586 ++ movl 4(%edi),%edx
8587 ++ adcl $0,%ecx
8588 ++ # mul a[4]*b[1]
8589 ++ mull %edx
8590 ++ addl %eax,%ebp
8591 ++ movl 12(%esi),%eax
8592 ++ adcl %edx,%ebx
8593 ++ movl 8(%edi),%edx
8594 ++ adcl $0,%ecx
8595 ++ # mul a[3]*b[2]
8596 ++ mull %edx
8597 ++ addl %eax,%ebp
8598 ++ movl 8(%esi),%eax
8599 ++ adcl %edx,%ebx
8600 ++ movl 12(%edi),%edx
8601 ++ adcl $0,%ecx
8602 ++ # mul a[2]*b[3]
8603 ++ mull %edx
8604 ++ addl %eax,%ebp
8605 ++ movl 4(%esi),%eax
8606 ++ adcl %edx,%ebx
8607 ++ movl 16(%edi),%edx
8608 ++ adcl $0,%ecx
8609 ++ # mul a[1]*b[4]
8610 ++ mull %edx
8611 ++ addl %eax,%ebp
8612 ++ movl (%esi),%eax
8613 ++ adcl %edx,%ebx
8614 ++ movl 20(%edi),%edx
8615 ++ adcl $0,%ecx
8616 ++ # mul a[0]*b[5]
8617 ++ mull %edx
8618 ++ addl %eax,%ebp
8619 ++ movl 20(%esp),%eax
8620 ++ adcl %edx,%ebx
8621 ++ movl (%edi),%edx
8622 ++ adcl $0,%ecx
8623 ++ movl %ebp,20(%eax)
8624 ++ movl 24(%esi),%eax
8625 ++ # saved r[5]
8626 ++ # ################## Calculate word 6
8627 ++ xorl %ebp,%ebp
8628 ++ # mul a[6]*b[0]
8629 ++ mull %edx
8630 ++ addl %eax,%ebx
8631 ++ movl 20(%esi),%eax
8632 ++ adcl %edx,%ecx
8633 ++ movl 4(%edi),%edx
8634 ++ adcl $0,%ebp
8635 ++ # mul a[5]*b[1]
8636 ++ mull %edx
8637 ++ addl %eax,%ebx
8638 ++ movl 16(%esi),%eax
8639 ++ adcl %edx,%ecx
8640 ++ movl 8(%edi),%edx
8641 ++ adcl $0,%ebp
8642 ++ # mul a[4]*b[2]
8643 ++ mull %edx
8644 ++ addl %eax,%ebx
8645 ++ movl 12(%esi),%eax
8646 ++ adcl %edx,%ecx
8647 ++ movl 12(%edi),%edx
8648 ++ adcl $0,%ebp
8649 ++ # mul a[3]*b[3]
8650 ++ mull %edx
8651 ++ addl %eax,%ebx
8652 ++ movl 8(%esi),%eax
8653 ++ adcl %edx,%ecx
8654 ++ movl 16(%edi),%edx
8655 ++ adcl $0,%ebp
8656 ++ # mul a[2]*b[4]
8657 ++ mull %edx
8658 ++ addl %eax,%ebx
8659 ++ movl 4(%esi),%eax
8660 ++ adcl %edx,%ecx
8661 ++ movl 20(%edi),%edx
8662 ++ adcl $0,%ebp
8663 ++ # mul a[1]*b[5]
8664 ++ mull %edx
8665 ++ addl %eax,%ebx
8666 ++ movl (%esi),%eax
8667 ++ adcl %edx,%ecx
8668 ++ movl 24(%edi),%edx
8669 ++ adcl $0,%ebp
8670 ++ # mul a[0]*b[6]
8671 ++ mull %edx
8672 ++ addl %eax,%ebx
8673 ++ movl 20(%esp),%eax
8674 ++ adcl %edx,%ecx
8675 ++ movl (%edi),%edx
8676 ++ adcl $0,%ebp
8677 ++ movl %ebx,24(%eax)
8678 ++ movl 28(%esi),%eax
8679 ++ # saved r[6]
8680 ++ # ################## Calculate word 7
8681 ++ xorl %ebx,%ebx
8682 ++ # mul a[7]*b[0]
8683 ++ mull %edx
8684 ++ addl %eax,%ecx
8685 ++ movl 24(%esi),%eax
8686 ++ adcl %edx,%ebp
8687 ++ movl 4(%edi),%edx
8688 ++ adcl $0,%ebx
8689 ++ # mul a[6]*b[1]
8690 ++ mull %edx
8691 ++ addl %eax,%ecx
8692 ++ movl 20(%esi),%eax
8693 ++ adcl %edx,%ebp
8694 ++ movl 8(%edi),%edx
8695 ++ adcl $0,%ebx
8696 ++ # mul a[5]*b[2]
8697 ++ mull %edx
8698 ++ addl %eax,%ecx
8699 ++ movl 16(%esi),%eax
8700 ++ adcl %edx,%ebp
8701 ++ movl 12(%edi),%edx
8702 ++ adcl $0,%ebx
8703 ++ # mul a[4]*b[3]
8704 ++ mull %edx
8705 ++ addl %eax,%ecx
8706 ++ movl 12(%esi),%eax
8707 ++ adcl %edx,%ebp
8708 ++ movl 16(%edi),%edx
8709 ++ adcl $0,%ebx
8710 ++ # mul a[3]*b[4]
8711 ++ mull %edx
8712 ++ addl %eax,%ecx
8713 ++ movl 8(%esi),%eax
8714 ++ adcl %edx,%ebp
8715 ++ movl 20(%edi),%edx
8716 ++ adcl $0,%ebx
8717 ++ # mul a[2]*b[5]
8718 ++ mull %edx
8719 ++ addl %eax,%ecx
8720 ++ movl 4(%esi),%eax
8721 ++ adcl %edx,%ebp
8722 ++ movl 24(%edi),%edx
8723 ++ adcl $0,%ebx
8724 ++ # mul a[1]*b[6]
8725 ++ mull %edx
8726 ++ addl %eax,%ecx
8727 ++ movl (%esi),%eax
8728 ++ adcl %edx,%ebp
8729 ++ movl 28(%edi),%edx
8730 ++ adcl $0,%ebx
8731 ++ # mul a[0]*b[7]
8732 ++ mull %edx
8733 ++ addl %eax,%ecx
8734 ++ movl 20(%esp),%eax
8735 ++ adcl %edx,%ebp
8736 ++ movl 4(%edi),%edx
8737 ++ adcl $0,%ebx
8738 ++ movl %ecx,28(%eax)
8739 ++ movl 28(%esi),%eax
8740 ++ # saved r[7]
8741 ++ # ################## Calculate word 8
8742 ++ xorl %ecx,%ecx
8743 ++ # mul a[7]*b[1]
8744 ++ mull %edx
8745 ++ addl %eax,%ebp
8746 ++ movl 24(%esi),%eax
8747 ++ adcl %edx,%ebx
8748 ++ movl 8(%edi),%edx
8749 ++ adcl $0,%ecx
8750 ++ # mul a[6]*b[2]
8751 ++ mull %edx
8752 ++ addl %eax,%ebp
8753 ++ movl 20(%esi),%eax
8754 ++ adcl %edx,%ebx
8755 ++ movl 12(%edi),%edx
8756 ++ adcl $0,%ecx
8757 ++ # mul a[5]*b[3]
8758 ++ mull %edx
8759 ++ addl %eax,%ebp
8760 ++ movl 16(%esi),%eax
8761 ++ adcl %edx,%ebx
8762 ++ movl 16(%edi),%edx
8763 ++ adcl $0,%ecx
8764 ++ # mul a[4]*b[4]
8765 ++ mull %edx
8766 ++ addl %eax,%ebp
8767 ++ movl 12(%esi),%eax
8768 ++ adcl %edx,%ebx
8769 ++ movl 20(%edi),%edx
8770 ++ adcl $0,%ecx
8771 ++ # mul a[3]*b[5]
8772 ++ mull %edx
8773 ++ addl %eax,%ebp
8774 ++ movl 8(%esi),%eax
8775 ++ adcl %edx,%ebx
8776 ++ movl 24(%edi),%edx
8777 ++ adcl $0,%ecx
8778 ++ # mul a[2]*b[6]
8779 ++ mull %edx
8780 ++ addl %eax,%ebp
8781 ++ movl 4(%esi),%eax
8782 ++ adcl %edx,%ebx
8783 ++ movl 28(%edi),%edx
8784 ++ adcl $0,%ecx
8785 ++ # mul a[1]*b[7]
8786 ++ mull %edx
8787 ++ addl %eax,%ebp
8788 ++ movl 20(%esp),%eax
8789 ++ adcl %edx,%ebx
8790 ++ movl 8(%edi),%edx
8791 ++ adcl $0,%ecx
8792 ++ movl %ebp,32(%eax)
8793 ++ movl 28(%esi),%eax
8794 ++ # saved r[8]
8795 ++ # ################## Calculate word 9
8796 ++ xorl %ebp,%ebp
8797 ++ # mul a[7]*b[2]
8798 ++ mull %edx
8799 ++ addl %eax,%ebx
8800 ++ movl 24(%esi),%eax
8801 ++ adcl %edx,%ecx
8802 ++ movl 12(%edi),%edx
8803 ++ adcl $0,%ebp
8804 ++ # mul a[6]*b[3]
8805 ++ mull %edx
8806 ++ addl %eax,%ebx
8807 ++ movl 20(%esi),%eax
8808 ++ adcl %edx,%ecx
8809 ++ movl 16(%edi),%edx
8810 ++ adcl $0,%ebp
8811 ++ # mul a[5]*b[4]
8812 ++ mull %edx
8813 ++ addl %eax,%ebx
8814 ++ movl 16(%esi),%eax
8815 ++ adcl %edx,%ecx
8816 ++ movl 20(%edi),%edx
8817 ++ adcl $0,%ebp
8818 ++ # mul a[4]*b[5]
8819 ++ mull %edx
8820 ++ addl %eax,%ebx
8821 ++ movl 12(%esi),%eax
8822 ++ adcl %edx,%ecx
8823 ++ movl 24(%edi),%edx
8824 ++ adcl $0,%ebp
8825 ++ # mul a[3]*b[6]
8826 ++ mull %edx
8827 ++ addl %eax,%ebx
8828 ++ movl 8(%esi),%eax
8829 ++ adcl %edx,%ecx
8830 ++ movl 28(%edi),%edx
8831 ++ adcl $0,%ebp
8832 ++ # mul a[2]*b[7]
8833 ++ mull %edx
8834 ++ addl %eax,%ebx
8835 ++ movl 20(%esp),%eax
8836 ++ adcl %edx,%ecx
8837 ++ movl 12(%edi),%edx
8838 ++ adcl $0,%ebp
8839 ++ movl %ebx,36(%eax)
8840 ++ movl 28(%esi),%eax
8841 ++ # saved r[9]
8842 ++ # ################## Calculate word 10
8843 ++ xorl %ebx,%ebx
8844 ++ # mul a[7]*b[3]
8845 ++ mull %edx
8846 ++ addl %eax,%ecx
8847 ++ movl 24(%esi),%eax
8848 ++ adcl %edx,%ebp
8849 ++ movl 16(%edi),%edx
8850 ++ adcl $0,%ebx
8851 ++ # mul a[6]*b[4]
8852 ++ mull %edx
8853 ++ addl %eax,%ecx
8854 ++ movl 20(%esi),%eax
8855 ++ adcl %edx,%ebp
8856 ++ movl 20(%edi),%edx
8857 ++ adcl $0,%ebx
8858 ++ # mul a[5]*b[5]
8859 ++ mull %edx
8860 ++ addl %eax,%ecx
8861 ++ movl 16(%esi),%eax
8862 ++ adcl %edx,%ebp
8863 ++ movl 24(%edi),%edx
8864 ++ adcl $0,%ebx
8865 ++ # mul a[4]*b[6]
8866 ++ mull %edx
8867 ++ addl %eax,%ecx
8868 ++ movl 12(%esi),%eax
8869 ++ adcl %edx,%ebp
8870 ++ movl 28(%edi),%edx
8871 ++ adcl $0,%ebx
8872 ++ # mul a[3]*b[7]
8873 ++ mull %edx
8874 ++ addl %eax,%ecx
8875 ++ movl 20(%esp),%eax
8876 ++ adcl %edx,%ebp
8877 ++ movl 16(%edi),%edx
8878 ++ adcl $0,%ebx
8879 ++ movl %ecx,40(%eax)
8880 ++ movl 28(%esi),%eax
8881 ++ # saved r[10]
8882 ++ # ################## Calculate word 11
8883 ++ xorl %ecx,%ecx
8884 ++ # mul a[7]*b[4]
8885 ++ mull %edx
8886 ++ addl %eax,%ebp
8887 ++ movl 24(%esi),%eax
8888 ++ adcl %edx,%ebx
8889 ++ movl 20(%edi),%edx
8890 ++ adcl $0,%ecx
8891 ++ # mul a[6]*b[5]
8892 ++ mull %edx
8893 ++ addl %eax,%ebp
8894 ++ movl 20(%esi),%eax
8895 ++ adcl %edx,%ebx
8896 ++ movl 24(%edi),%edx
8897 ++ adcl $0,%ecx
8898 ++ # mul a[5]*b[6]
8899 ++ mull %edx
8900 ++ addl %eax,%ebp
8901 ++ movl 16(%esi),%eax
8902 ++ adcl %edx,%ebx
8903 ++ movl 28(%edi),%edx
8904 ++ adcl $0,%ecx
8905 ++ # mul a[4]*b[7]
8906 ++ mull %edx
8907 ++ addl %eax,%ebp
8908 ++ movl 20(%esp),%eax
8909 ++ adcl %edx,%ebx
8910 ++ movl 20(%edi),%edx
8911 ++ adcl $0,%ecx
8912 ++ movl %ebp,44(%eax)
8913 ++ movl 28(%esi),%eax
8914 ++ # saved r[11]
8915 ++ # ################## Calculate word 12
8916 ++ xorl %ebp,%ebp
8917 ++ # mul a[7]*b[5]
8918 ++ mull %edx
8919 ++ addl %eax,%ebx
8920 ++ movl 24(%esi),%eax
8921 ++ adcl %edx,%ecx
8922 ++ movl 24(%edi),%edx
8923 ++ adcl $0,%ebp
8924 ++ # mul a[6]*b[6]
8925 ++ mull %edx
8926 ++ addl %eax,%ebx
8927 ++ movl 20(%esi),%eax
8928 ++ adcl %edx,%ecx
8929 ++ movl 28(%edi),%edx
8930 ++ adcl $0,%ebp
8931 ++ # mul a[5]*b[7]
8932 ++ mull %edx
8933 ++ addl %eax,%ebx
8934 ++ movl 20(%esp),%eax
8935 ++ adcl %edx,%ecx
8936 ++ movl 24(%edi),%edx
8937 ++ adcl $0,%ebp
8938 ++ movl %ebx,48(%eax)
8939 ++ movl 28(%esi),%eax
8940 ++ # saved r[12]
8941 ++ # ################## Calculate word 13
8942 ++ xorl %ebx,%ebx
8943 ++ # mul a[7]*b[6]
8944 ++ mull %edx
8945 ++ addl %eax,%ecx
8946 ++ movl 24(%esi),%eax
8947 ++ adcl %edx,%ebp
8948 ++ movl 28(%edi),%edx
8949 ++ adcl $0,%ebx
8950 ++ # mul a[6]*b[7]
8951 ++ mull %edx
8952 ++ addl %eax,%ecx
8953 ++ movl 20(%esp),%eax
8954 ++ adcl %edx,%ebp
8955 ++ movl 28(%edi),%edx
8956 ++ adcl $0,%ebx
8957 ++ movl %ecx,52(%eax)
8958 ++ movl 28(%esi),%eax
8959 ++ # saved r[13]
8960 ++ # ################## Calculate word 14
8961 ++ xorl %ecx,%ecx
8962 ++ # mul a[7]*b[7]
8963 ++ mull %edx
8964 ++ addl %eax,%ebp
8965 ++ movl 20(%esp),%eax
8966 ++ adcl %edx,%ebx
8967 ++ adcl $0,%ecx
8968 ++ movl %ebp,56(%eax)
8969 ++ # saved r[14]
8970 ++ # save r[15]
8971 ++ movl %ebx,60(%eax)
8972 ++ popl %ebx
8973 ++ popl %ebp
8974 ++ popl %edi
8975 ++ popl %esi
8976 ++ ret
8977 ++.globl _bn_mul_comba4
8978 ++.align 4
8979 ++_bn_mul_comba4:
8980 ++L_bn_mul_comba4_begin:
8981 ++ pushl %esi
8982 ++ movl 12(%esp),%esi
8983 ++ pushl %edi
8984 ++ movl 20(%esp),%edi
8985 ++ pushl %ebp
8986 ++ pushl %ebx
8987 ++ xorl %ebx,%ebx
8988 ++ movl (%esi),%eax
8989 ++ xorl %ecx,%ecx
8990 ++ movl (%edi),%edx
8991 ++ # ################## Calculate word 0
8992 ++ xorl %ebp,%ebp
8993 ++ # mul a[0]*b[0]
8994 ++ mull %edx
8995 ++ addl %eax,%ebx
8996 ++ movl 20(%esp),%eax
8997 ++ adcl %edx,%ecx
8998 ++ movl (%edi),%edx
8999 ++ adcl $0,%ebp
9000 ++ movl %ebx,(%eax)
9001 ++ movl 4(%esi),%eax
9002 ++ # saved r[0]
9003 ++ # ################## Calculate word 1
9004 ++ xorl %ebx,%ebx
9005 ++ # mul a[1]*b[0]
9006 ++ mull %edx
9007 ++ addl %eax,%ecx
9008 ++ movl (%esi),%eax
9009 ++ adcl %edx,%ebp
9010 ++ movl 4(%edi),%edx
9011 ++ adcl $0,%ebx
9012 ++ # mul a[0]*b[1]
9013 ++ mull %edx
9014 ++ addl %eax,%ecx
9015 ++ movl 20(%esp),%eax
9016 ++ adcl %edx,%ebp
9017 ++ movl (%edi),%edx
9018 ++ adcl $0,%ebx
9019 ++ movl %ecx,4(%eax)
9020 ++ movl 8(%esi),%eax
9021 ++ # saved r[1]
9022 ++ # ################## Calculate word 2
9023 ++ xorl %ecx,%ecx
9024 ++ # mul a[2]*b[0]
9025 ++ mull %edx
9026 ++ addl %eax,%ebp
9027 ++ movl 4(%esi),%eax
9028 ++ adcl %edx,%ebx
9029 ++ movl 4(%edi),%edx
9030 ++ adcl $0,%ecx
9031 ++ # mul a[1]*b[1]
9032 ++ mull %edx
9033 ++ addl %eax,%ebp
9034 ++ movl (%esi),%eax
9035 ++ adcl %edx,%ebx
9036 ++ movl 8(%edi),%edx
9037 ++ adcl $0,%ecx
9038 ++ # mul a[0]*b[2]
9039 ++ mull %edx
9040 ++ addl %eax,%ebp
9041 ++ movl 20(%esp),%eax
9042 ++ adcl %edx,%ebx
9043 ++ movl (%edi),%edx
9044 ++ adcl $0,%ecx
9045 ++ movl %ebp,8(%eax)
9046 ++ movl 12(%esi),%eax
9047 ++ # saved r[2]
9048 ++ # ################## Calculate word 3
9049 ++ xorl %ebp,%ebp
9050 ++ # mul a[3]*b[0]
9051 ++ mull %edx
9052 ++ addl %eax,%ebx
9053 ++ movl 8(%esi),%eax
9054 ++ adcl %edx,%ecx
9055 ++ movl 4(%edi),%edx
9056 ++ adcl $0,%ebp
9057 ++ # mul a[2]*b[1]
9058 ++ mull %edx
9059 ++ addl %eax,%ebx
9060 ++ movl 4(%esi),%eax
9061 ++ adcl %edx,%ecx
9062 ++ movl 8(%edi),%edx
9063 ++ adcl $0,%ebp
9064 ++ # mul a[1]*b[2]
9065 ++ mull %edx
9066 ++ addl %eax,%ebx
9067 ++ movl (%esi),%eax
9068 ++ adcl %edx,%ecx
9069 ++ movl 12(%edi),%edx
9070 ++ adcl $0,%ebp
9071 ++ # mul a[0]*b[3]
9072 ++ mull %edx
9073 ++ addl %eax,%ebx
9074 ++ movl 20(%esp),%eax
9075 ++ adcl %edx,%ecx
9076 ++ movl 4(%edi),%edx
9077 ++ adcl $0,%ebp
9078 ++ movl %ebx,12(%eax)
9079 ++ movl 12(%esi),%eax
9080 ++ # saved r[3]
9081 ++ # ################## Calculate word 4
9082 ++ xorl %ebx,%ebx
9083 ++ # mul a[3]*b[1]
9084 ++ mull %edx
9085 ++ addl %eax,%ecx
9086 ++ movl 8(%esi),%eax
9087 ++ adcl %edx,%ebp
9088 ++ movl 8(%edi),%edx
9089 ++ adcl $0,%ebx
9090 ++ # mul a[2]*b[2]
9091 ++ mull %edx
9092 ++ addl %eax,%ecx
9093 ++ movl 4(%esi),%eax
9094 ++ adcl %edx,%ebp
9095 ++ movl 12(%edi),%edx
9096 ++ adcl $0,%ebx
9097 ++ # mul a[1]*b[3]
9098 ++ mull %edx
9099 ++ addl %eax,%ecx
9100 ++ movl 20(%esp),%eax
9101 ++ adcl %edx,%ebp
9102 ++ movl 8(%edi),%edx
9103 ++ adcl $0,%ebx
9104 ++ movl %ecx,16(%eax)
9105 ++ movl 12(%esi),%eax
9106 ++ # saved r[4]
9107 ++ # ################## Calculate word 5
9108 ++ xorl %ecx,%ecx
9109 ++ # mul a[3]*b[2]
9110 ++ mull %edx
9111 ++ addl %eax,%ebp
9112 ++ movl 8(%esi),%eax
9113 ++ adcl %edx,%ebx
9114 ++ movl 12(%edi),%edx
9115 ++ adcl $0,%ecx
9116 ++ # mul a[2]*b[3]
9117 ++ mull %edx
9118 ++ addl %eax,%ebp
9119 ++ movl 20(%esp),%eax
9120 ++ adcl %edx,%ebx
9121 ++ movl 12(%edi),%edx
9122 ++ adcl $0,%ecx
9123 ++ movl %ebp,20(%eax)
9124 ++ movl 12(%esi),%eax
9125 ++ # saved r[5]
9126 ++ # ################## Calculate word 6
9127 ++ xorl %ebp,%ebp
9128 ++ # mul a[3]*b[3]
9129 ++ mull %edx
9130 ++ addl %eax,%ebx
9131 ++ movl 20(%esp),%eax
9132 ++ adcl %edx,%ecx
9133 ++ adcl $0,%ebp
9134 ++ movl %ebx,24(%eax)
9135 ++ # saved r[6]
9136 ++ # save r[7]
9137 ++ movl %ecx,28(%eax)
9138 ++ popl %ebx
9139 ++ popl %ebp
9140 ++ popl %edi
9141 ++ popl %esi
9142 ++ ret
9143 ++.globl _bn_sqr_comba8
9144 ++.align 4
9145 ++_bn_sqr_comba8:
9146 ++L_bn_sqr_comba8_begin:
9147 ++ pushl %esi
9148 ++ pushl %edi
9149 ++ pushl %ebp
9150 ++ pushl %ebx
9151 ++ movl 20(%esp),%edi
9152 ++ movl 24(%esp),%esi
9153 ++ xorl %ebx,%ebx
9154 ++ xorl %ecx,%ecx
9155 ++ movl (%esi),%eax
9156 ++ # ############### Calculate word 0
9157 ++ xorl %ebp,%ebp
9158 ++ # sqr a[0]*a[0]
9159 ++ mull %eax
9160 ++ addl %eax,%ebx
9161 ++ adcl %edx,%ecx
9162 ++ movl (%esi),%edx
9163 ++ adcl $0,%ebp
9164 ++ movl %ebx,(%edi)
9165 ++ movl 4(%esi),%eax
9166 ++ # saved r[0]
9167 ++ # ############### Calculate word 1
9168 ++ xorl %ebx,%ebx
9169 ++ # sqr a[1]*a[0]
9170 ++ mull %edx
9171 ++ addl %eax,%eax
9172 ++ adcl %edx,%edx
9173 ++ adcl $0,%ebx
9174 ++ addl %eax,%ecx
9175 ++ adcl %edx,%ebp
9176 ++ movl 8(%esi),%eax
9177 ++ adcl $0,%ebx
9178 ++ movl %ecx,4(%edi)
9179 ++ movl (%esi),%edx
9180 ++ # saved r[1]
9181 ++ # ############### Calculate word 2
9182 ++ xorl %ecx,%ecx
9183 ++ # sqr a[2]*a[0]
9184 ++ mull %edx
9185 ++ addl %eax,%eax
9186 ++ adcl %edx,%edx
9187 ++ adcl $0,%ecx
9188 ++ addl %eax,%ebp
9189 ++ adcl %edx,%ebx
9190 ++ movl 4(%esi),%eax
9191 ++ adcl $0,%ecx
9192 ++ # sqr a[1]*a[1]
9193 ++ mull %eax
9194 ++ addl %eax,%ebp
9195 ++ adcl %edx,%ebx
9196 ++ movl (%esi),%edx
9197 ++ adcl $0,%ecx
9198 ++ movl %ebp,8(%edi)
9199 ++ movl 12(%esi),%eax
9200 ++ # saved r[2]
9201 ++ # ############### Calculate word 3
9202 ++ xorl %ebp,%ebp
9203 ++ # sqr a[3]*a[0]
9204 ++ mull %edx
9205 ++ addl %eax,%eax
9206 ++ adcl %edx,%edx
9207 ++ adcl $0,%ebp
9208 ++ addl %eax,%ebx
9209 ++ adcl %edx,%ecx
9210 ++ movl 8(%esi),%eax
9211 ++ adcl $0,%ebp
9212 ++ movl 4(%esi),%edx
9213 ++ # sqr a[2]*a[1]
9214 ++ mull %edx
9215 ++ addl %eax,%eax
9216 ++ adcl %edx,%edx
9217 ++ adcl $0,%ebp
9218 ++ addl %eax,%ebx
9219 ++ adcl %edx,%ecx
9220 ++ movl 16(%esi),%eax
9221 ++ adcl $0,%ebp
9222 ++ movl %ebx,12(%edi)
9223 ++ movl (%esi),%edx
9224 ++ # saved r[3]
9225 ++ # ############### Calculate word 4
9226 ++ xorl %ebx,%ebx
9227 ++ # sqr a[4]*a[0]
9228 ++ mull %edx
9229 ++ addl %eax,%eax
9230 ++ adcl %edx,%edx
9231 ++ adcl $0,%ebx
9232 ++ addl %eax,%ecx
9233 ++ adcl %edx,%ebp
9234 ++ movl 12(%esi),%eax
9235 ++ adcl $0,%ebx
9236 ++ movl 4(%esi),%edx
9237 ++ # sqr a[3]*a[1]
9238 ++ mull %edx
9239 ++ addl %eax,%eax
9240 ++ adcl %edx,%edx
9241 ++ adcl $0,%ebx
9242 ++ addl %eax,%ecx
9243 ++ adcl %edx,%ebp
9244 ++ movl 8(%esi),%eax
9245 ++ adcl $0,%ebx
9246 ++ # sqr a[2]*a[2]
9247 ++ mull %eax
9248 ++ addl %eax,%ecx
9249 ++ adcl %edx,%ebp
9250 ++ movl (%esi),%edx
9251 ++ adcl $0,%ebx
9252 ++ movl %ecx,16(%edi)
9253 ++ movl 20(%esi),%eax
9254 ++ # saved r[4]
9255 ++ # ############### Calculate word 5
9256 ++ xorl %ecx,%ecx
9257 ++ # sqr a[5]*a[0]
9258 ++ mull %edx
9259 ++ addl %eax,%eax
9260 ++ adcl %edx,%edx
9261 ++ adcl $0,%ecx
9262 ++ addl %eax,%ebp
9263 ++ adcl %edx,%ebx
9264 ++ movl 16(%esi),%eax
9265 ++ adcl $0,%ecx
9266 ++ movl 4(%esi),%edx
9267 ++ # sqr a[4]*a[1]
9268 ++ mull %edx
9269 ++ addl %eax,%eax
9270 ++ adcl %edx,%edx
9271 ++ adcl $0,%ecx
9272 ++ addl %eax,%ebp
9273 ++ adcl %edx,%ebx
9274 ++ movl 12(%esi),%eax
9275 ++ adcl $0,%ecx
9276 ++ movl 8(%esi),%edx
9277 ++ # sqr a[3]*a[2]
9278 ++ mull %edx
9279 ++ addl %eax,%eax
9280 ++ adcl %edx,%edx
9281 ++ adcl $0,%ecx
9282 ++ addl %eax,%ebp
9283 ++ adcl %edx,%ebx
9284 ++ movl 24(%esi),%eax
9285 ++ adcl $0,%ecx
9286 ++ movl %ebp,20(%edi)
9287 ++ movl (%esi),%edx
9288 ++ # saved r[5]
9289 ++ # ############### Calculate word 6
9290 ++ xorl %ebp,%ebp
9291 ++ # sqr a[6]*a[0]
9292 ++ mull %edx
9293 ++ addl %eax,%eax
9294 ++ adcl %edx,%edx
9295 ++ adcl $0,%ebp
9296 ++ addl %eax,%ebx
9297 ++ adcl %edx,%ecx
9298 ++ movl 20(%esi),%eax
9299 ++ adcl $0,%ebp
9300 ++ movl 4(%esi),%edx
9301 ++ # sqr a[5]*a[1]
9302 ++ mull %edx
9303 ++ addl %eax,%eax
9304 ++ adcl %edx,%edx
9305 ++ adcl $0,%ebp
9306 ++ addl %eax,%ebx
9307 ++ adcl %edx,%ecx
9308 ++ movl 16(%esi),%eax
9309 ++ adcl $0,%ebp
9310 ++ movl 8(%esi),%edx
9311 ++ # sqr a[4]*a[2]
9312 ++ mull %edx
9313 ++ addl %eax,%eax
9314 ++ adcl %edx,%edx
9315 ++ adcl $0,%ebp
9316 ++ addl %eax,%ebx
9317 ++ adcl %edx,%ecx
9318 ++ movl 12(%esi),%eax
9319 ++ adcl $0,%ebp
9320 ++ # sqr a[3]*a[3]
9321 ++ mull %eax
9322 ++ addl %eax,%ebx
9323 ++ adcl %edx,%ecx
9324 ++ movl (%esi),%edx
9325 ++ adcl $0,%ebp
9326 ++ movl %ebx,24(%edi)
9327 ++ movl 28(%esi),%eax
9328 ++ # saved r[6]
9329 ++ # ############### Calculate word 7
9330 ++ xorl %ebx,%ebx
9331 ++ # sqr a[7]*a[0]
9332 ++ mull %edx
9333 ++ addl %eax,%eax
9334 ++ adcl %edx,%edx
9335 ++ adcl $0,%ebx
9336 ++ addl %eax,%ecx
9337 ++ adcl %edx,%ebp
9338 ++ movl 24(%esi),%eax
9339 ++ adcl $0,%ebx
9340 ++ movl 4(%esi),%edx
9341 ++ # sqr a[6]*a[1]
9342 ++ mull %edx
9343 ++ addl %eax,%eax
9344 ++ adcl %edx,%edx
9345 ++ adcl $0,%ebx
9346 ++ addl %eax,%ecx
9347 ++ adcl %edx,%ebp
9348 ++ movl 20(%esi),%eax
9349 ++ adcl $0,%ebx
9350 ++ movl 8(%esi),%edx
9351 ++ # sqr a[5]*a[2]
9352 ++ mull %edx
9353 ++ addl %eax,%eax
9354 ++ adcl %edx,%edx
9355 ++ adcl $0,%ebx
9356 ++ addl %eax,%ecx
9357 ++ adcl %edx,%ebp
9358 ++ movl 16(%esi),%eax
9359 ++ adcl $0,%ebx
9360 ++ movl 12(%esi),%edx
9361 ++ # sqr a[4]*a[3]
9362 ++ mull %edx
9363 ++ addl %eax,%eax
9364 ++ adcl %edx,%edx
9365 ++ adcl $0,%ebx
9366 ++ addl %eax,%ecx
9367 ++ adcl %edx,%ebp
9368 ++ movl 28(%esi),%eax
9369 ++ adcl $0,%ebx
9370 ++ movl %ecx,28(%edi)
9371 ++ movl 4(%esi),%edx
9372 ++ # saved r[7]
9373 ++ # ############### Calculate word 8
9374 ++ xorl %ecx,%ecx
9375 ++ # sqr a[7]*a[1]
9376 ++ mull %edx
9377 ++ addl %eax,%eax
9378 ++ adcl %edx,%edx
9379 ++ adcl $0,%ecx
9380 ++ addl %eax,%ebp
9381 ++ adcl %edx,%ebx
9382 ++ movl 24(%esi),%eax
9383 ++ adcl $0,%ecx
9384 ++ movl 8(%esi),%edx
9385 ++ # sqr a[6]*a[2]
9386 ++ mull %edx
9387 ++ addl %eax,%eax
9388 ++ adcl %edx,%edx
9389 ++ adcl $0,%ecx
9390 ++ addl %eax,%ebp
9391 ++ adcl %edx,%ebx
9392 ++ movl 20(%esi),%eax
9393 ++ adcl $0,%ecx
9394 ++ movl 12(%esi),%edx
9395 ++ # sqr a[5]*a[3]
9396 ++ mull %edx
9397 ++ addl %eax,%eax
9398 ++ adcl %edx,%edx
9399 ++ adcl $0,%ecx
9400 ++ addl %eax,%ebp
9401 ++ adcl %edx,%ebx
9402 ++ movl 16(%esi),%eax
9403 ++ adcl $0,%ecx
9404 ++ # sqr a[4]*a[4]
9405 ++ mull %eax
9406 ++ addl %eax,%ebp
9407 ++ adcl %edx,%ebx
9408 ++ movl 8(%esi),%edx
9409 ++ adcl $0,%ecx
9410 ++ movl %ebp,32(%edi)
9411 ++ movl 28(%esi),%eax
9412 ++ # saved r[8]
9413 ++ # ############### Calculate word 9
9414 ++ xorl %ebp,%ebp
9415 ++ # sqr a[7]*a[2]
9416 ++ mull %edx
9417 ++ addl %eax,%eax
9418 ++ adcl %edx,%edx
9419 ++ adcl $0,%ebp
9420 ++ addl %eax,%ebx
9421 ++ adcl %edx,%ecx
9422 ++ movl 24(%esi),%eax
9423 ++ adcl $0,%ebp
9424 ++ movl 12(%esi),%edx
9425 ++ # sqr a[6]*a[3]
9426 ++ mull %edx
9427 ++ addl %eax,%eax
9428 ++ adcl %edx,%edx
9429 ++ adcl $0,%ebp
9430 ++ addl %eax,%ebx
9431 ++ adcl %edx,%ecx
9432 ++ movl 20(%esi),%eax
9433 ++ adcl $0,%ebp
9434 ++ movl 16(%esi),%edx
9435 ++ # sqr a[5]*a[4]
9436 ++ mull %edx
9437 ++ addl %eax,%eax
9438 ++ adcl %edx,%edx
9439 ++ adcl $0,%ebp
9440 ++ addl %eax,%ebx
9441 ++ adcl %edx,%ecx
9442 ++ movl 28(%esi),%eax
9443 ++ adcl $0,%ebp
9444 ++ movl %ebx,36(%edi)
9445 ++ movl 12(%esi),%edx
9446 ++ # saved r[9]
9447 ++ # ############### Calculate word 10
9448 ++ xorl %ebx,%ebx
9449 ++ # sqr a[7]*a[3]
9450 ++ mull %edx
9451 ++ addl %eax,%eax
9452 ++ adcl %edx,%edx
9453 ++ adcl $0,%ebx
9454 ++ addl %eax,%ecx
9455 ++ adcl %edx,%ebp
9456 ++ movl 24(%esi),%eax
9457 ++ adcl $0,%ebx
9458 ++ movl 16(%esi),%edx
9459 ++ # sqr a[6]*a[4]
9460 ++ mull %edx
9461 ++ addl %eax,%eax
9462 ++ adcl %edx,%edx
9463 ++ adcl $0,%ebx
9464 ++ addl %eax,%ecx
9465 ++ adcl %edx,%ebp
9466 ++ movl 20(%esi),%eax
9467 ++ adcl $0,%ebx
9468 ++ # sqr a[5]*a[5]
9469 ++ mull %eax
9470 ++ addl %eax,%ecx
9471 ++ adcl %edx,%ebp
9472 ++ movl 16(%esi),%edx
9473 ++ adcl $0,%ebx
9474 ++ movl %ecx,40(%edi)
9475 ++ movl 28(%esi),%eax
9476 ++ # saved r[10]
9477 ++ # ############### Calculate word 11
9478 ++ xorl %ecx,%ecx
9479 ++ # sqr a[7]*a[4]
9480 ++ mull %edx
9481 ++ addl %eax,%eax
9482 ++ adcl %edx,%edx
9483 ++ adcl $0,%ecx
9484 ++ addl %eax,%ebp
9485 ++ adcl %edx,%ebx
9486 ++ movl 24(%esi),%eax
9487 ++ adcl $0,%ecx
9488 ++ movl 20(%esi),%edx
9489 ++ # sqr a[6]*a[5]
9490 ++ mull %edx
9491 ++ addl %eax,%eax
9492 ++ adcl %edx,%edx
9493 ++ adcl $0,%ecx
9494 ++ addl %eax,%ebp
9495 ++ adcl %edx,%ebx
9496 ++ movl 28(%esi),%eax
9497 ++ adcl $0,%ecx
9498 ++ movl %ebp,44(%edi)
9499 ++ movl 20(%esi),%edx
9500 ++ # saved r[11]
9501 ++ # ############### Calculate word 12
9502 ++ xorl %ebp,%ebp
9503 ++ # sqr a[7]*a[5]
9504 ++ mull %edx
9505 ++ addl %eax,%eax
9506 ++ adcl %edx,%edx
9507 ++ adcl $0,%ebp
9508 ++ addl %eax,%ebx
9509 ++ adcl %edx,%ecx
9510 ++ movl 24(%esi),%eax
9511 ++ adcl $0,%ebp
9512 ++ # sqr a[6]*a[6]
9513 ++ mull %eax
9514 ++ addl %eax,%ebx
9515 ++ adcl %edx,%ecx
9516 ++ movl 24(%esi),%edx
9517 ++ adcl $0,%ebp
9518 ++ movl %ebx,48(%edi)
9519 ++ movl 28(%esi),%eax
9520 ++ # saved r[12]
9521 ++ # ############### Calculate word 13
9522 ++ xorl %ebx,%ebx
9523 ++ # sqr a[7]*a[6]
9524 ++ mull %edx
9525 ++ addl %eax,%eax
9526 ++ adcl %edx,%edx
9527 ++ adcl $0,%ebx
9528 ++ addl %eax,%ecx
9529 ++ adcl %edx,%ebp
9530 ++ movl 28(%esi),%eax
9531 ++ adcl $0,%ebx
9532 ++ movl %ecx,52(%edi)
9533 ++ # saved r[13]
9534 ++ # ############### Calculate word 14
9535 ++ xorl %ecx,%ecx
9536 ++ # sqr a[7]*a[7]
9537 ++ mull %eax
9538 ++ addl %eax,%ebp
9539 ++ adcl %edx,%ebx
9540 ++ adcl $0,%ecx
9541 ++ movl %ebp,56(%edi)
9542 ++ # saved r[14]
9543 ++ movl %ebx,60(%edi)
9544 ++ popl %ebx
9545 ++ popl %ebp
9546 ++ popl %edi
9547 ++ popl %esi
9548 ++ ret
9549 ++.globl _bn_sqr_comba4
9550 ++.align 4
9551 ++_bn_sqr_comba4:
9552 ++L_bn_sqr_comba4_begin:
9553 ++ pushl %esi
9554 ++ pushl %edi
9555 ++ pushl %ebp
9556 ++ pushl %ebx
9557 ++ movl 20(%esp),%edi
9558 ++ movl 24(%esp),%esi
9559 ++ xorl %ebx,%ebx
9560 ++ xorl %ecx,%ecx
9561 ++ movl (%esi),%eax
9562 ++ # ############### Calculate word 0
9563 ++ xorl %ebp,%ebp
9564 ++ # sqr a[0]*a[0]
9565 ++ mull %eax
9566 ++ addl %eax,%ebx
9567 ++ adcl %edx,%ecx
9568 ++ movl (%esi),%edx
9569 ++ adcl $0,%ebp
9570 ++ movl %ebx,(%edi)
9571 ++ movl 4(%esi),%eax
9572 ++ # saved r[0]
9573 ++ # ############### Calculate word 1
9574 ++ xorl %ebx,%ebx
9575 ++ # sqr a[1]*a[0]
9576 ++ mull %edx
9577 ++ addl %eax,%eax
9578 ++ adcl %edx,%edx
9579 ++ adcl $0,%ebx
9580 ++ addl %eax,%ecx
9581 ++ adcl %edx,%ebp
9582 ++ movl 8(%esi),%eax
9583 ++ adcl $0,%ebx
9584 ++ movl %ecx,4(%edi)
9585 ++ movl (%esi),%edx
9586 ++ # saved r[1]
9587 ++ # ############### Calculate word 2
9588 ++ xorl %ecx,%ecx
9589 ++ # sqr a[2]*a[0]
9590 ++ mull %edx
9591 ++ addl %eax,%eax
9592 ++ adcl %edx,%edx
9593 ++ adcl $0,%ecx
9594 ++ addl %eax,%ebp
9595 ++ adcl %edx,%ebx
9596 ++ movl 4(%esi),%eax
9597 ++ adcl $0,%ecx
9598 ++ # sqr a[1]*a[1]
9599 ++ mull %eax
9600 ++ addl %eax,%ebp
9601 ++ adcl %edx,%ebx
9602 ++ movl (%esi),%edx
9603 ++ adcl $0,%ecx
9604 ++ movl %ebp,8(%edi)
9605 ++ movl 12(%esi),%eax
9606 ++ # saved r[2]
9607 ++ # ############### Calculate word 3
9608 ++ xorl %ebp,%ebp
9609 ++ # sqr a[3]*a[0]
9610 ++ mull %edx
9611 ++ addl %eax,%eax
9612 ++ adcl %edx,%edx
9613 ++ adcl $0,%ebp
9614 ++ addl %eax,%ebx
9615 ++ adcl %edx,%ecx
9616 ++ movl 8(%esi),%eax
9617 ++ adcl $0,%ebp
9618 ++ movl 4(%esi),%edx
9619 ++ # sqr a[2]*a[1]
9620 ++ mull %edx
9621 ++ addl %eax,%eax
9622 ++ adcl %edx,%edx
9623 ++ adcl $0,%ebp
9624 ++ addl %eax,%ebx
9625 ++ adcl %edx,%ecx
9626 ++ movl 12(%esi),%eax
9627 ++ adcl $0,%ebp
9628 ++ movl %ebx,12(%edi)
9629 ++ movl 4(%esi),%edx
9630 ++ # saved r[3]
9631 ++ # ############### Calculate word 4
9632 ++ xorl %ebx,%ebx
9633 ++ # sqr a[3]*a[1]
9634 ++ mull %edx
9635 ++ addl %eax,%eax
9636 ++ adcl %edx,%edx
9637 ++ adcl $0,%ebx
9638 ++ addl %eax,%ecx
9639 ++ adcl %edx,%ebp
9640 ++ movl 8(%esi),%eax
9641 ++ adcl $0,%ebx
9642 ++ # sqr a[2]*a[2]
9643 ++ mull %eax
9644 ++ addl %eax,%ecx
9645 ++ adcl %edx,%ebp
9646 ++ movl 8(%esi),%edx
9647 ++ adcl $0,%ebx
9648 ++ movl %ecx,16(%edi)
9649 ++ movl 12(%esi),%eax
9650 ++ # saved r[4]
9651 ++ # ############### Calculate word 5
9652 ++ xorl %ecx,%ecx
9653 ++ # sqr a[3]*a[2]
9654 ++ mull %edx
9655 ++ addl %eax,%eax
9656 ++ adcl %edx,%edx
9657 ++ adcl $0,%ecx
9658 ++ addl %eax,%ebp
9659 ++ adcl %edx,%ebx
9660 ++ movl 12(%esi),%eax
9661 ++ adcl $0,%ecx
9662 ++ movl %ebp,20(%edi)
9663 ++ # saved r[5]
9664 ++ # ############### Calculate word 6
9665 ++ xorl %ebp,%ebp
9666 ++ # sqr a[3]*a[3]
9667 ++ mull %eax
9668 ++ addl %eax,%ebx
9669 ++ adcl %edx,%ecx
9670 ++ adcl $0,%ebp
9671 ++ movl %ebx,24(%edi)
9672 ++ # saved r[6]
9673 ++ movl %ecx,28(%edi)
9674 ++ popl %ebx
9675 ++ popl %ebp
9676 ++ popl %edi
9677 ++ popl %esi
9678 ++ ret
9679 +diff --git a/crypto/bn/asm/x86-gf2m-mac.S b/crypto/bn/asm/x86-gf2m-mac.S
9680 +new file mode 100644
9681 +index 0000000..31718e0
9682 +--- /dev/null
9683 ++++ b/crypto/bn/asm/x86-gf2m-mac.S
9684 +@@ -0,0 +1,332 @@
9685 ++.file "crypto/bn/asm/x86-gf2m.s"
9686 ++.text
9687 ++.align 4
9688 ++__mul_1x1_mmx:
9689 ++ subl $36,%esp
9690 ++ movl %eax,%ecx
9691 ++ leal (%eax,%eax,1),%edx
9692 ++ andl $1073741823,%ecx
9693 ++ leal (%edx,%edx,1),%ebp
9694 ++ movl $0,(%esp)
9695 ++ andl $2147483647,%edx
9696 ++ movd %eax,%mm2
9697 ++ movd %ebx,%mm3
9698 ++ movl %ecx,4(%esp)
9699 ++ xorl %edx,%ecx
9700 ++ pxor %mm5,%mm5
9701 ++ pxor %mm4,%mm4
9702 ++ movl %edx,8(%esp)
9703 ++ xorl %ebp,%edx
9704 ++ movl %ecx,12(%esp)
9705 ++ pcmpgtd %mm2,%mm5
9706 ++ paddd %mm2,%mm2
9707 ++ xorl %edx,%ecx
9708 ++ movl %ebp,16(%esp)
9709 ++ xorl %edx,%ebp
9710 ++ pand %mm3,%mm5
9711 ++ pcmpgtd %mm2,%mm4
9712 ++ movl %ecx,20(%esp)
9713 ++ xorl %ecx,%ebp
9714 ++ psllq $31,%mm5
9715 ++ pand %mm3,%mm4
9716 ++ movl %edx,24(%esp)
9717 ++ movl $7,%esi
9718 ++ movl %ebp,28(%esp)
9719 ++ movl %esi,%ebp
9720 ++ andl %ebx,%esi
9721 ++ shrl $3,%ebx
9722 ++ movl %ebp,%edi
9723 ++ psllq $30,%mm4
9724 ++ andl %ebx,%edi
9725 ++ shrl $3,%ebx
9726 ++ movd (%esp,%esi,4),%mm0
9727 ++ movl %ebp,%esi
9728 ++ andl %ebx,%esi
9729 ++ shrl $3,%ebx
9730 ++ movd (%esp,%edi,4),%mm2
9731 ++ movl %ebp,%edi
9732 ++ psllq $3,%mm2
9733 ++ andl %ebx,%edi
9734 ++ shrl $3,%ebx
9735 ++ pxor %mm2,%mm0
9736 ++ movd (%esp,%esi,4),%mm1
9737 ++ movl %ebp,%esi
9738 ++ psllq $6,%mm1
9739 ++ andl %ebx,%esi
9740 ++ shrl $3,%ebx
9741 ++ pxor %mm1,%mm0
9742 ++ movd (%esp,%edi,4),%mm2
9743 ++ movl %ebp,%edi
9744 ++ psllq $9,%mm2
9745 ++ andl %ebx,%edi
9746 ++ shrl $3,%ebx
9747 ++ pxor %mm2,%mm0
9748 ++ movd (%esp,%esi,4),%mm1
9749 ++ movl %ebp,%esi
9750 ++ psllq $12,%mm1
9751 ++ andl %ebx,%esi
9752 ++ shrl $3,%ebx
9753 ++ pxor %mm1,%mm0
9754 ++ movd (%esp,%edi,4),%mm2
9755 ++ movl %ebp,%edi
9756 ++ psllq $15,%mm2
9757 ++ andl %ebx,%edi
9758 ++ shrl $3,%ebx
9759 ++ pxor %mm2,%mm0
9760 ++ movd (%esp,%esi,4),%mm1
9761 ++ movl %ebp,%esi
9762 ++ psllq $18,%mm1
9763 ++ andl %ebx,%esi
9764 ++ shrl $3,%ebx
9765 ++ pxor %mm1,%mm0
9766 ++ movd (%esp,%edi,4),%mm2
9767 ++ movl %ebp,%edi
9768 ++ psllq $21,%mm2
9769 ++ andl %ebx,%edi
9770 ++ shrl $3,%ebx
9771 ++ pxor %mm2,%mm0
9772 ++ movd (%esp,%esi,4),%mm1
9773 ++ movl %ebp,%esi
9774 ++ psllq $24,%mm1
9775 ++ andl %ebx,%esi
9776 ++ shrl $3,%ebx
9777 ++ pxor %mm1,%mm0
9778 ++ movd (%esp,%edi,4),%mm2
9779 ++ pxor %mm4,%mm0
9780 ++ psllq $27,%mm2
9781 ++ pxor %mm2,%mm0
9782 ++ movd (%esp,%esi,4),%mm1
9783 ++ pxor %mm5,%mm0
9784 ++ psllq $30,%mm1
9785 ++ addl $36,%esp
9786 ++ pxor %mm1,%mm0
9787 ++ ret
9788 ++.align 4
9789 ++__mul_1x1_ialu:
9790 ++ subl $36,%esp
9791 ++ movl %eax,%ecx
9792 ++ leal (%eax,%eax,1),%edx
9793 ++ leal (,%eax,4),%ebp
9794 ++ andl $1073741823,%ecx
9795 ++ leal (%eax,%eax,1),%edi
9796 ++ sarl $31,%eax
9797 ++ movl $0,(%esp)
9798 ++ andl $2147483647,%edx
9799 ++ movl %ecx,4(%esp)
9800 ++ xorl %edx,%ecx
9801 ++ movl %edx,8(%esp)
9802 ++ xorl %ebp,%edx
9803 ++ movl %ecx,12(%esp)
9804 ++ xorl %edx,%ecx
9805 ++ movl %ebp,16(%esp)
9806 ++ xorl %edx,%ebp
9807 ++ movl %ecx,20(%esp)
9808 ++ xorl %ecx,%ebp
9809 ++ sarl $31,%edi
9810 ++ andl %ebx,%eax
9811 ++ movl %edx,24(%esp)
9812 ++ andl %ebx,%edi
9813 ++ movl %ebp,28(%esp)
9814 ++ movl %eax,%edx
9815 ++ shll $31,%eax
9816 ++ movl %edi,%ecx
9817 ++ shrl $1,%edx
9818 ++ movl $7,%esi
9819 ++ shll $30,%edi
9820 ++ andl %ebx,%esi
9821 ++ shrl $2,%ecx
9822 ++ xorl %edi,%eax
9823 ++ shrl $3,%ebx
9824 ++ movl $7,%edi
9825 ++ andl %ebx,%edi
9826 ++ shrl $3,%ebx
9827 ++ xorl %ecx,%edx
9828 ++ xorl (%esp,%esi,4),%eax
9829 ++ movl $7,%esi
9830 ++ andl %ebx,%esi
9831 ++ shrl $3,%ebx
9832 ++ movl (%esp,%edi,4),%ebp
9833 ++ movl $7,%edi
9834 ++ movl %ebp,%ecx
9835 ++ shll $3,%ebp
9836 ++ andl %ebx,%edi
9837 ++ shrl $29,%ecx
9838 ++ xorl %ebp,%eax
9839 ++ shrl $3,%ebx
9840 ++ xorl %ecx,%edx
9841 ++ movl (%esp,%esi,4),%ecx
9842 ++ movl $7,%esi
9843 ++ movl %ecx,%ebp
9844 ++ shll $6,%ecx
9845 ++ andl %ebx,%esi
9846 ++ shrl $26,%ebp
9847 ++ xorl %ecx,%eax
9848 ++ shrl $3,%ebx
9849 ++ xorl %ebp,%edx
9850 ++ movl (%esp,%edi,4),%ebp
9851 ++ movl $7,%edi
9852 ++ movl %ebp,%ecx
9853 ++ shll $9,%ebp
9854 ++ andl %ebx,%edi
9855 ++ shrl $23,%ecx
9856 ++ xorl %ebp,%eax
9857 ++ shrl $3,%ebx
9858 ++ xorl %ecx,%edx
9859 ++ movl (%esp,%esi,4),%ecx
9860 ++ movl $7,%esi
9861 ++ movl %ecx,%ebp
9862 ++ shll $12,%ecx
9863 ++ andl %ebx,%esi
9864 ++ shrl $20,%ebp
9865 ++ xorl %ecx,%eax
9866 ++ shrl $3,%ebx
9867 ++ xorl %ebp,%edx
9868 ++ movl (%esp,%edi,4),%ebp
9869 ++ movl $7,%edi
9870 ++ movl %ebp,%ecx
9871 ++ shll $15,%ebp
9872 ++ andl %ebx,%edi
9873 ++ shrl $17,%ecx
9874 ++ xorl %ebp,%eax
9875 ++ shrl $3,%ebx
9876 ++ xorl %ecx,%edx
9877 ++ movl (%esp,%esi,4),%ecx
9878 ++ movl $7,%esi
9879 ++ movl %ecx,%ebp
9880 ++ shll $18,%ecx
9881 ++ andl %ebx,%esi
9882 ++ shrl $14,%ebp
9883 ++ xorl %ecx,%eax
9884 ++ shrl $3,%ebx
9885 ++ xorl %ebp,%edx
9886 ++ movl (%esp,%edi,4),%ebp
9887 ++ movl $7,%edi
9888 ++ movl %ebp,%ecx
9889 ++ shll $21,%ebp
9890 ++ andl %ebx,%edi
9891 ++ shrl $11,%ecx
9892 ++ xorl %ebp,%eax
9893 ++ shrl $3,%ebx
9894 ++ xorl %ecx,%edx
9895 ++ movl (%esp,%esi,4),%ecx
9896 ++ movl $7,%esi
9897 ++ movl %ecx,%ebp
9898 ++ shll $24,%ecx
9899 ++ andl %ebx,%esi
9900 ++ shrl $8,%ebp
9901 ++ xorl %ecx,%eax
9902 ++ shrl $3,%ebx
9903 ++ xorl %ebp,%edx
9904 ++ movl (%esp,%edi,4),%ebp
9905 ++ movl %ebp,%ecx
9906 ++ shll $27,%ebp
9907 ++ movl (%esp,%esi,4),%edi
9908 ++ shrl $5,%ecx
9909 ++ movl %edi,%esi
9910 ++ xorl %ebp,%eax
9911 ++ shll $30,%edi
9912 ++ xorl %ecx,%edx
9913 ++ shrl $2,%esi
9914 ++ xorl %edi,%eax
9915 ++ xorl %esi,%edx
9916 ++ addl $36,%esp
9917 ++ ret
9918 ++.globl _bn_GF2m_mul_2x2
9919 ++.align 4
9920 ++_bn_GF2m_mul_2x2:
9921 ++L_bn_GF2m_mul_2x2_begin:
9922 ++ call L000PIC_me_up
9923 ++L000PIC_me_up:
9924 ++ popl %edx
9925 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L000PIC_me_up(%edx),%edx
9926 ++ movl (%edx),%eax
9927 ++ movl 4(%edx),%edx
9928 ++ testl $8388608,%eax
9929 ++ jz L001ialu
9930 ++ pushl %ebp
9931 ++ pushl %ebx
9932 ++ pushl %esi
9933 ++ pushl %edi
9934 ++ movl 24(%esp),%eax
9935 ++ movl 32(%esp),%ebx
9936 ++ call __mul_1x1_mmx
9937 ++ movq %mm0,%mm7
9938 ++ movl 28(%esp),%eax
9939 ++ movl 36(%esp),%ebx
9940 ++ call __mul_1x1_mmx
9941 ++ movq %mm0,%mm6
9942 ++ movl 24(%esp),%eax
9943 ++ movl 32(%esp),%ebx
9944 ++ xorl 28(%esp),%eax
9945 ++ xorl 36(%esp),%ebx
9946 ++ call __mul_1x1_mmx
9947 ++ pxor %mm7,%mm0
9948 ++ movl 20(%esp),%eax
9949 ++ pxor %mm6,%mm0
9950 ++ movq %mm0,%mm2
9951 ++ psllq $32,%mm0
9952 ++ popl %edi
9953 ++ psrlq $32,%mm2
9954 ++ popl %esi
9955 ++ pxor %mm6,%mm0
9956 ++ popl %ebx
9957 ++ pxor %mm7,%mm2
9958 ++ movq %mm0,(%eax)
9959 ++ popl %ebp
9960 ++ movq %mm2,8(%eax)
9961 ++ emms
9962 ++ ret
9963 ++.align 4,0x90
9964 ++L001ialu:
9965 ++ pushl %ebp
9966 ++ pushl %ebx
9967 ++ pushl %esi
9968 ++ pushl %edi
9969 ++ subl $20,%esp
9970 ++ movl 44(%esp),%eax
9971 ++ movl 52(%esp),%ebx
9972 ++ call __mul_1x1_ialu
9973 ++ movl %eax,8(%esp)
9974 ++ movl %edx,12(%esp)
9975 ++ movl 48(%esp),%eax
9976 ++ movl 56(%esp),%ebx
9977 ++ call __mul_1x1_ialu
9978 ++ movl %eax,(%esp)
9979 ++ movl %edx,4(%esp)
9980 ++ movl 44(%esp),%eax
9981 ++ movl 52(%esp),%ebx
9982 ++ xorl 48(%esp),%eax
9983 ++ xorl 56(%esp),%ebx
9984 ++ call __mul_1x1_ialu
9985 ++ movl 40(%esp),%ebp
9986 ++ movl (%esp),%ebx
9987 ++ movl 4(%esp),%ecx
9988 ++ movl 8(%esp),%edi
9989 ++ movl 12(%esp),%esi
9990 ++ xorl %edx,%eax
9991 ++ xorl %ecx,%edx
9992 ++ xorl %ebx,%eax
9993 ++ movl %ebx,(%ebp)
9994 ++ xorl %edi,%edx
9995 ++ movl %esi,12(%ebp)
9996 ++ xorl %esi,%eax
9997 ++ addl $20,%esp
9998 ++ xorl %esi,%edx
9999 ++ popl %edi
10000 ++ xorl %edx,%eax
10001 ++ popl %esi
10002 ++ movl %edx,8(%ebp)
10003 ++ popl %ebx
10004 ++ movl %eax,4(%ebp)
10005 ++ popl %ebp
10006 ++ ret
10007 ++.byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
10008 ++.byte 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
10009 ++.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
10010 ++.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
10011 ++.byte 62,0
10012 ++.section __IMPORT,__pointers,non_lazy_symbol_pointers
10013 ++L_OPENSSL_ia32cap_P$non_lazy_ptr:
10014 ++.indirect_symbol _OPENSSL_ia32cap_P
10015 ++.long 0
10016 ++.comm _OPENSSL_ia32cap_P,8,2
10017 +diff --git a/crypto/bn/asm/x86-mont-mac.S b/crypto/bn/asm/x86-mont-mac.S
10018 +new file mode 100644
10019 +index 0000000..aab259a
10020 +--- /dev/null
10021 ++++ b/crypto/bn/asm/x86-mont-mac.S
10022 +@@ -0,0 +1,336 @@
10023 ++.file "crypto/bn/asm/x86-mont.s"
10024 ++.text
10025 ++.globl _bn_mul_mont
10026 ++.align 4
10027 ++_bn_mul_mont:
10028 ++L_bn_mul_mont_begin:
10029 ++ pushl %ebp
10030 ++ pushl %ebx
10031 ++ pushl %esi
10032 ++ pushl %edi
10033 ++ xorl %eax,%eax
10034 ++ movl 40(%esp),%edi
10035 ++ cmpl $4,%edi
10036 ++ jl L000just_leave
10037 ++ leal 20(%esp),%esi
10038 ++ leal 24(%esp),%edx
10039 ++ movl %esp,%ebp
10040 ++ addl $2,%edi
10041 ++ negl %edi
10042 ++ leal -32(%esp,%edi,4),%esp
10043 ++ negl %edi
10044 ++ movl %esp,%eax
10045 ++ subl %edx,%eax
10046 ++ andl $2047,%eax
10047 ++ subl %eax,%esp
10048 ++ xorl %esp,%edx
10049 ++ andl $2048,%edx
10050 ++ xorl $2048,%edx
10051 ++ subl %edx,%esp
10052 ++ andl $-64,%esp
10053 ++ movl (%esi),%eax
10054 ++ movl 4(%esi),%ebx
10055 ++ movl 8(%esi),%ecx
10056 ++ movl 12(%esi),%edx
10057 ++ movl 16(%esi),%esi
10058 ++ movl (%esi),%esi
10059 ++ movl %eax,4(%esp)
10060 ++ movl %ebx,8(%esp)
10061 ++ movl %ecx,12(%esp)
10062 ++ movl %edx,16(%esp)
10063 ++ movl %esi,20(%esp)
10064 ++ leal -3(%edi),%ebx
10065 ++ movl %ebp,24(%esp)
10066 ++ movl 8(%esp),%esi
10067 ++ leal 1(%ebx),%ebp
10068 ++ movl 12(%esp),%edi
10069 ++ xorl %ecx,%ecx
10070 ++ movl %esi,%edx
10071 ++ andl $1,%ebp
10072 ++ subl %edi,%edx
10073 ++ leal 4(%edi,%ebx,4),%eax
10074 ++ orl %edx,%ebp
10075 ++ movl (%edi),%edi
10076 ++ jz L001bn_sqr_mont
10077 ++ movl %eax,28(%esp)
10078 ++ movl (%esi),%eax
10079 ++ xorl %edx,%edx
10080 ++.align 4,0x90
10081 ++L002mull:
10082 ++ movl %edx,%ebp
10083 ++ mull %edi
10084 ++ addl %eax,%ebp
10085 ++ leal 1(%ecx),%ecx
10086 ++ adcl $0,%edx
10087 ++ movl (%esi,%ecx,4),%eax
10088 ++ cmpl %ebx,%ecx
10089 ++ movl %ebp,28(%esp,%ecx,4)
10090 ++ jl L002mull
10091 ++ movl %edx,%ebp
10092 ++ mull %edi
10093 ++ movl 20(%esp),%edi
10094 ++ addl %ebp,%eax
10095 ++ movl 16(%esp),%esi
10096 ++ adcl $0,%edx
10097 ++ imull 32(%esp),%edi
10098 ++ movl %eax,32(%esp,%ebx,4)
10099 ++ xorl %ecx,%ecx
10100 ++ movl %edx,36(%esp,%ebx,4)
10101 ++ movl %ecx,40(%esp,%ebx,4)
10102 ++ movl (%esi),%eax
10103 ++ mull %edi
10104 ++ addl 32(%esp),%eax
10105 ++ movl 4(%esi),%eax
10106 ++ adcl $0,%edx
10107 ++ incl %ecx
10108 ++ jmp L0032ndmadd
10109 ++.align 4,0x90
10110 ++L0041stmadd:
10111 ++ movl %edx,%ebp
10112 ++ mull %edi
10113 ++ addl 32(%esp,%ecx,4),%ebp
10114 ++ leal 1(%ecx),%ecx
10115 ++ adcl $0,%edx
10116 ++ addl %eax,%ebp
10117 ++ movl (%esi,%ecx,4),%eax
10118 ++ adcl $0,%edx
10119 ++ cmpl %ebx,%ecx
10120 ++ movl %ebp,28(%esp,%ecx,4)
10121 ++ jl L0041stmadd
10122 ++ movl %edx,%ebp
10123 ++ mull %edi
10124 ++ addl 32(%esp,%ebx,4),%eax
10125 ++ movl 20(%esp),%edi
10126 ++ adcl $0,%edx
10127 ++ movl 16(%esp),%esi
10128 ++ addl %eax,%ebp
10129 ++ adcl $0,%edx
10130 ++ imull 32(%esp),%edi
10131 ++ xorl %ecx,%ecx
10132 ++ addl 36(%esp,%ebx,4),%edx
10133 ++ movl %ebp,32(%esp,%ebx,4)
10134 ++ adcl $0,%ecx
10135 ++ movl (%esi),%eax
10136 ++ movl %edx,36(%esp,%ebx,4)
10137 ++ movl %ecx,40(%esp,%ebx,4)
10138 ++ mull %edi
10139 ++ addl 32(%esp),%eax
10140 ++ movl 4(%esi),%eax
10141 ++ adcl $0,%edx
10142 ++ movl $1,%ecx
10143 ++.align 4,0x90
10144 ++L0032ndmadd:
10145 ++ movl %edx,%ebp
10146 ++ mull %edi
10147 ++ addl 32(%esp,%ecx,4),%ebp
10148 ++ leal 1(%ecx),%ecx
10149 ++ adcl $0,%edx
10150 ++ addl %eax,%ebp
10151 ++ movl (%esi,%ecx,4),%eax
10152 ++ adcl $0,%edx
10153 ++ cmpl %ebx,%ecx
10154 ++ movl %ebp,24(%esp,%ecx,4)
10155 ++ jl L0032ndmadd
10156 ++ movl %edx,%ebp
10157 ++ mull %edi
10158 ++ addl 32(%esp,%ebx,4),%ebp
10159 ++ adcl $0,%edx
10160 ++ addl %eax,%ebp
10161 ++ adcl $0,%edx
10162 ++ movl %ebp,28(%esp,%ebx,4)
10163 ++ xorl %eax,%eax
10164 ++ movl 12(%esp),%ecx
10165 ++ addl 36(%esp,%ebx,4),%edx
10166 ++ adcl 40(%esp,%ebx,4),%eax
10167 ++ leal 4(%ecx),%ecx
10168 ++ movl %edx,32(%esp,%ebx,4)
10169 ++ cmpl 28(%esp),%ecx
10170 ++ movl %eax,36(%esp,%ebx,4)
10171 ++ je L005common_tail
10172 ++ movl (%ecx),%edi
10173 ++ movl 8(%esp),%esi
10174 ++ movl %ecx,12(%esp)
10175 ++ xorl %ecx,%ecx
10176 ++ xorl %edx,%edx
10177 ++ movl (%esi),%eax
10178 ++ jmp L0041stmadd
10179 ++.align 4,0x90
10180 ++L001bn_sqr_mont:
10181 ++ movl %ebx,(%esp)
10182 ++ movl %ecx,12(%esp)
10183 ++ movl %edi,%eax
10184 ++ mull %edi
10185 ++ movl %eax,32(%esp)
10186 ++ movl %edx,%ebx
10187 ++ shrl $1,%edx
10188 ++ andl $1,%ebx
10189 ++ incl %ecx
10190 ++.align 4,0x90
10191 ++L006sqr:
10192 ++ movl (%esi,%ecx,4),%eax
10193 ++ movl %edx,%ebp
10194 ++ mull %edi
10195 ++ addl %ebp,%eax
10196 ++ leal 1(%ecx),%ecx
10197 ++ adcl $0,%edx
10198 ++ leal (%ebx,%eax,2),%ebp
10199 ++ shrl $31,%eax
10200 ++ cmpl (%esp),%ecx
10201 ++ movl %eax,%ebx
10202 ++ movl %ebp,28(%esp,%ecx,4)
10203 ++ jl L006sqr
10204 ++ movl (%esi,%ecx,4),%eax
10205 ++ movl %edx,%ebp
10206 ++ mull %edi
10207 ++ addl %ebp,%eax
10208 ++ movl 20(%esp),%edi
10209 ++ adcl $0,%edx
10210 ++ movl 16(%esp),%esi
10211 ++ leal (%ebx,%eax,2),%ebp
10212 ++ imull 32(%esp),%edi
10213 ++ shrl $31,%eax
10214 ++ movl %ebp,32(%esp,%ecx,4)
10215 ++ leal (%eax,%edx,2),%ebp
10216 ++ movl (%esi),%eax
10217 ++ shrl $31,%edx
10218 ++ movl %ebp,36(%esp,%ecx,4)
10219 ++ movl %edx,40(%esp,%ecx,4)
10220 ++ mull %edi
10221 ++ addl 32(%esp),%eax
10222 ++ movl %ecx,%ebx
10223 ++ adcl $0,%edx
10224 ++ movl 4(%esi),%eax
10225 ++ movl $1,%ecx
10226 ++.align 4,0x90
10227 ++L0073rdmadd:
10228 ++ movl %edx,%ebp
10229 ++ mull %edi
10230 ++ addl 32(%esp,%ecx,4),%ebp
10231 ++ adcl $0,%edx
10232 ++ addl %eax,%ebp
10233 ++ movl 4(%esi,%ecx,4),%eax
10234 ++ adcl $0,%edx
10235 ++ movl %ebp,28(%esp,%ecx,4)
10236 ++ movl %edx,%ebp
10237 ++ mull %edi
10238 ++ addl 36(%esp,%ecx,4),%ebp
10239 ++ leal 2(%ecx),%ecx
10240 ++ adcl $0,%edx
10241 ++ addl %eax,%ebp
10242 ++ movl (%esi,%ecx,4),%eax
10243 ++ adcl $0,%edx
10244 ++ cmpl %ebx,%ecx
10245 ++ movl %ebp,24(%esp,%ecx,4)
10246 ++ jl L0073rdmadd
10247 ++ movl %edx,%ebp
10248 ++ mull %edi
10249 ++ addl 32(%esp,%ebx,4),%ebp
10250 ++ adcl $0,%edx
10251 ++ addl %eax,%ebp
10252 ++ adcl $0,%edx
10253 ++ movl %ebp,28(%esp,%ebx,4)
10254 ++ movl 12(%esp),%ecx
10255 ++ xorl %eax,%eax
10256 ++ movl 8(%esp),%esi
10257 ++ addl 36(%esp,%ebx,4),%edx
10258 ++ adcl 40(%esp,%ebx,4),%eax
10259 ++ movl %edx,32(%esp,%ebx,4)
10260 ++ cmpl %ebx,%ecx
10261 ++ movl %eax,36(%esp,%ebx,4)
10262 ++ je L005common_tail
10263 ++ movl 4(%esi,%ecx,4),%edi
10264 ++ leal 1(%ecx),%ecx
10265 ++ movl %edi,%eax
10266 ++ movl %ecx,12(%esp)
10267 ++ mull %edi
10268 ++ addl 32(%esp,%ecx,4),%eax
10269 ++ adcl $0,%edx
10270 ++ movl %eax,32(%esp,%ecx,4)
10271 ++ xorl %ebp,%ebp
10272 ++ cmpl %ebx,%ecx
10273 ++ leal 1(%ecx),%ecx
10274 ++ je L008sqrlast
10275 ++ movl %edx,%ebx
10276 ++ shrl $1,%edx
10277 ++ andl $1,%ebx
10278 ++.align 4,0x90
10279 ++L009sqradd:
10280 ++ movl (%esi,%ecx,4),%eax
10281 ++ movl %edx,%ebp
10282 ++ mull %edi
10283 ++ addl %ebp,%eax
10284 ++ leal (%eax,%eax,1),%ebp
10285 ++ adcl $0,%edx
10286 ++ shrl $31,%eax
10287 ++ addl 32(%esp,%ecx,4),%ebp
10288 ++ leal 1(%ecx),%ecx
10289 ++ adcl $0,%eax
10290 ++ addl %ebx,%ebp
10291 ++ adcl $0,%eax
10292 ++ cmpl (%esp),%ecx
10293 ++ movl %ebp,28(%esp,%ecx,4)
10294 ++ movl %eax,%ebx
10295 ++ jle L009sqradd
10296 ++ movl %edx,%ebp
10297 ++ addl %edx,%edx
10298 ++ shrl $31,%ebp
10299 ++ addl %ebx,%edx
10300 ++ adcl $0,%ebp
10301 ++L008sqrlast:
10302 ++ movl 20(%esp),%edi
10303 ++ movl 16(%esp),%esi
10304 ++ imull 32(%esp),%edi
10305 ++ addl 32(%esp,%ecx,4),%edx
10306 ++ movl (%esi),%eax
10307 ++ adcl $0,%ebp
10308 ++ movl %edx,32(%esp,%ecx,4)
10309 ++ movl %ebp,36(%esp,%ecx,4)
10310 ++ mull %edi
10311 ++ addl 32(%esp),%eax
10312 ++ leal -1(%ecx),%ebx
10313 ++ adcl $0,%edx
10314 ++ movl $1,%ecx
10315 ++ movl 4(%esi),%eax
10316 ++ jmp L0073rdmadd
10317 ++.align 4,0x90
10318 ++L005common_tail:
10319 ++ movl 16(%esp),%ebp
10320 ++ movl 4(%esp),%edi
10321 ++ leal 32(%esp),%esi
10322 ++ movl (%esi),%eax
10323 ++ movl %ebx,%ecx
10324 ++ xorl %edx,%edx
10325 ++.align 4,0x90
10326 ++L010sub:
10327 ++ sbbl (%ebp,%edx,4),%eax
10328 ++ movl %eax,(%edi,%edx,4)
10329 ++ decl %ecx
10330 ++ movl 4(%esi,%edx,4),%eax
10331 ++ leal 1(%edx),%edx
10332 ++ jge L010sub
10333 ++ sbbl $0,%eax
10334 ++ andl %eax,%esi
10335 ++ notl %eax
10336 ++ movl %edi,%ebp
10337 ++ andl %eax,%ebp
10338 ++ orl %ebp,%esi
10339 ++.align 4,0x90
10340 ++L011copy:
10341 ++ movl (%esi,%ebx,4),%eax
10342 ++ movl %eax,(%edi,%ebx,4)
10343 ++ movl %ecx,32(%esp,%ebx,4)
10344 ++ decl %ebx
10345 ++ jge L011copy
10346 ++ movl 24(%esp),%esp
10347 ++ movl $1,%eax
10348 ++L000just_leave:
10349 ++ popl %edi
10350 ++ popl %esi
10351 ++ popl %ebx
10352 ++ popl %ebp
10353 ++ ret
10354 ++.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
10355 ++.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
10356 ++.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
10357 ++.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
10358 ++.byte 111,114,103,62,0
10359 +diff --git a/crypto/des/asm/crypt586-mac.S b/crypto/des/asm/crypt586-mac.S
10360 +new file mode 100644
10361 +index 0000000..9156a65
10362 +--- /dev/null
10363 ++++ b/crypto/des/asm/crypt586-mac.S
10364 +@@ -0,0 +1,880 @@
10365 ++.file "crypt586.s"
10366 ++.text
10367 ++.globl _fcrypt_body
10368 ++.align 4
10369 ++_fcrypt_body:
10370 ++L_fcrypt_body_begin:
10371 ++ pushl %ebp
10372 ++ pushl %ebx
10373 ++ pushl %esi
10374 ++ pushl %edi
10375 ++
10376 ++ # Load the 2 words
10377 ++ xorl %edi,%edi
10378 ++ xorl %esi,%esi
10379 ++ call L000PIC_me_up
10380 ++L000PIC_me_up:
10381 ++ popl %edx
10382 ++ movl L_DES_SPtrans$non_lazy_ptr-L000PIC_me_up(%edx),%edx
10383 ++ pushl %edx
10384 ++ movl 28(%esp),%ebp
10385 ++ pushl $25
10386 ++L001start:
10387 ++
10388 ++ # Round 0
10389 ++ movl 36(%esp),%eax
10390 ++ movl %esi,%edx
10391 ++ shrl $16,%edx
10392 ++ movl 40(%esp),%ecx
10393 ++ xorl %esi,%edx
10394 ++ andl %edx,%eax
10395 ++ andl %ecx,%edx
10396 ++ movl %eax,%ebx
10397 ++ shll $16,%ebx
10398 ++ movl %edx,%ecx
10399 ++ shll $16,%ecx
10400 ++ xorl %ebx,%eax
10401 ++ xorl %ecx,%edx
10402 ++ movl (%ebp),%ebx
10403 ++ xorl %ebx,%eax
10404 ++ movl 4(%ebp),%ecx
10405 ++ xorl %esi,%eax
10406 ++ xorl %esi,%edx
10407 ++ xorl %ecx,%edx
10408 ++ andl $0xfcfcfcfc,%eax
10409 ++ xorl %ebx,%ebx
10410 ++ andl $0xcfcfcfcf,%edx
10411 ++ xorl %ecx,%ecx
10412 ++ movb %al,%bl
10413 ++ movb %ah,%cl
10414 ++ rorl $4,%edx
10415 ++ movl 4(%esp),%ebp
10416 ++ xorl (%ebp,%ebx,1),%edi
10417 ++ movb %dl,%bl
10418 ++ xorl 0x200(%ebp,%ecx,1),%edi
10419 ++ movb %dh,%cl
10420 ++ shrl $16,%eax
10421 ++ xorl 0x100(%ebp,%ebx,1),%edi
10422 ++ movb %ah,%bl
10423 ++ shrl $16,%edx
10424 ++ xorl 0x300(%ebp,%ecx,1),%edi
10425 ++ movb %dh,%cl
10426 ++ andl $0xff,%eax
10427 ++ andl $0xff,%edx
10428 ++ movl 0x600(%ebp,%ebx,1),%ebx
10429 ++ xorl %ebx,%edi
10430 ++ movl 0x700(%ebp,%ecx,1),%ebx
10431 ++ xorl %ebx,%edi
10432 ++ movl 0x400(%ebp,%eax,1),%ebx
10433 ++ xorl %ebx,%edi
10434 ++ movl 0x500(%ebp,%edx,1),%ebx
10435 ++ xorl %ebx,%edi
10436 ++ movl 32(%esp),%ebp
10437 ++
10438 ++ # Round 1
10439 ++ movl 36(%esp),%eax
10440 ++ movl %edi,%edx
10441 ++ shrl $16,%edx
10442 ++ movl 40(%esp),%ecx
10443 ++ xorl %edi,%edx
10444 ++ andl %edx,%eax
10445 ++ andl %ecx,%edx
10446 ++ movl %eax,%ebx
10447 ++ shll $16,%ebx
10448 ++ movl %edx,%ecx
10449 ++ shll $16,%ecx
10450 ++ xorl %ebx,%eax
10451 ++ xorl %ecx,%edx
10452 ++ movl 8(%ebp),%ebx
10453 ++ xorl %ebx,%eax
10454 ++ movl 12(%ebp),%ecx
10455 ++ xorl %edi,%eax
10456 ++ xorl %edi,%edx
10457 ++ xorl %ecx,%edx
10458 ++ andl $0xfcfcfcfc,%eax
10459 ++ xorl %ebx,%ebx
10460 ++ andl $0xcfcfcfcf,%edx
10461 ++ xorl %ecx,%ecx
10462 ++ movb %al,%bl
10463 ++ movb %ah,%cl
10464 ++ rorl $4,%edx
10465 ++ movl 4(%esp),%ebp
10466 ++ xorl (%ebp,%ebx,1),%esi
10467 ++ movb %dl,%bl
10468 ++ xorl 0x200(%ebp,%ecx,1),%esi
10469 ++ movb %dh,%cl
10470 ++ shrl $16,%eax
10471 ++ xorl 0x100(%ebp,%ebx,1),%esi
10472 ++ movb %ah,%bl
10473 ++ shrl $16,%edx
10474 ++ xorl 0x300(%ebp,%ecx,1),%esi
10475 ++ movb %dh,%cl
10476 ++ andl $0xff,%eax
10477 ++ andl $0xff,%edx
10478 ++ movl 0x600(%ebp,%ebx,1),%ebx
10479 ++ xorl %ebx,%esi
10480 ++ movl 0x700(%ebp,%ecx,1),%ebx
10481 ++ xorl %ebx,%esi
10482 ++ movl 0x400(%ebp,%eax,1),%ebx
10483 ++ xorl %ebx,%esi
10484 ++ movl 0x500(%ebp,%edx,1),%ebx
10485 ++ xorl %ebx,%esi
10486 ++ movl 32(%esp),%ebp
10487 ++
10488 ++ # Round 2
10489 ++ movl 36(%esp),%eax
10490 ++ movl %esi,%edx
10491 ++ shrl $16,%edx
10492 ++ movl 40(%esp),%ecx
10493 ++ xorl %esi,%edx
10494 ++ andl %edx,%eax
10495 ++ andl %ecx,%edx
10496 ++ movl %eax,%ebx
10497 ++ shll $16,%ebx
10498 ++ movl %edx,%ecx
10499 ++ shll $16,%ecx
10500 ++ xorl %ebx,%eax
10501 ++ xorl %ecx,%edx
10502 ++ movl 16(%ebp),%ebx
10503 ++ xorl %ebx,%eax
10504 ++ movl 20(%ebp),%ecx
10505 ++ xorl %esi,%eax
10506 ++ xorl %esi,%edx
10507 ++ xorl %ecx,%edx
10508 ++ andl $0xfcfcfcfc,%eax
10509 ++ xorl %ebx,%ebx
10510 ++ andl $0xcfcfcfcf,%edx
10511 ++ xorl %ecx,%ecx
10512 ++ movb %al,%bl
10513 ++ movb %ah,%cl
10514 ++ rorl $4,%edx
10515 ++ movl 4(%esp),%ebp
10516 ++ xorl (%ebp,%ebx,1),%edi
10517 ++ movb %dl,%bl
10518 ++ xorl 0x200(%ebp,%ecx,1),%edi
10519 ++ movb %dh,%cl
10520 ++ shrl $16,%eax
10521 ++ xorl 0x100(%ebp,%ebx,1),%edi
10522 ++ movb %ah,%bl
10523 ++ shrl $16,%edx
10524 ++ xorl 0x300(%ebp,%ecx,1),%edi
10525 ++ movb %dh,%cl
10526 ++ andl $0xff,%eax
10527 ++ andl $0xff,%edx
10528 ++ movl 0x600(%ebp,%ebx,1),%ebx
10529 ++ xorl %ebx,%edi
10530 ++ movl 0x700(%ebp,%ecx,1),%ebx
10531 ++ xorl %ebx,%edi
10532 ++ movl 0x400(%ebp,%eax,1),%ebx
10533 ++ xorl %ebx,%edi
10534 ++ movl 0x500(%ebp,%edx,1),%ebx
10535 ++ xorl %ebx,%edi
10536 ++ movl 32(%esp),%ebp
10537 ++
10538 ++ # Round 3
10539 ++ movl 36(%esp),%eax
10540 ++ movl %edi,%edx
10541 ++ shrl $16,%edx
10542 ++ movl 40(%esp),%ecx
10543 ++ xorl %edi,%edx
10544 ++ andl %edx,%eax
10545 ++ andl %ecx,%edx
10546 ++ movl %eax,%ebx
10547 ++ shll $16,%ebx
10548 ++ movl %edx,%ecx
10549 ++ shll $16,%ecx
10550 ++ xorl %ebx,%eax
10551 ++ xorl %ecx,%edx
10552 ++ movl 24(%ebp),%ebx
10553 ++ xorl %ebx,%eax
10554 ++ movl 28(%ebp),%ecx
10555 ++ xorl %edi,%eax
10556 ++ xorl %edi,%edx
10557 ++ xorl %ecx,%edx
10558 ++ andl $0xfcfcfcfc,%eax
10559 ++ xorl %ebx,%ebx
10560 ++ andl $0xcfcfcfcf,%edx
10561 ++ xorl %ecx,%ecx
10562 ++ movb %al,%bl
10563 ++ movb %ah,%cl
10564 ++ rorl $4,%edx
10565 ++ movl 4(%esp),%ebp
10566 ++ xorl (%ebp,%ebx,1),%esi
10567 ++ movb %dl,%bl
10568 ++ xorl 0x200(%ebp,%ecx,1),%esi
10569 ++ movb %dh,%cl
10570 ++ shrl $16,%eax
10571 ++ xorl 0x100(%ebp,%ebx,1),%esi
10572 ++ movb %ah,%bl
10573 ++ shrl $16,%edx
10574 ++ xorl 0x300(%ebp,%ecx,1),%esi
10575 ++ movb %dh,%cl
10576 ++ andl $0xff,%eax
10577 ++ andl $0xff,%edx
10578 ++ movl 0x600(%ebp,%ebx,1),%ebx
10579 ++ xorl %ebx,%esi
10580 ++ movl 0x700(%ebp,%ecx,1),%ebx
10581 ++ xorl %ebx,%esi
10582 ++ movl 0x400(%ebp,%eax,1),%ebx
10583 ++ xorl %ebx,%esi
10584 ++ movl 0x500(%ebp,%edx,1),%ebx
10585 ++ xorl %ebx,%esi
10586 ++ movl 32(%esp),%ebp
10587 ++
10588 ++ # Round 4
10589 ++ movl 36(%esp),%eax
10590 ++ movl %esi,%edx
10591 ++ shrl $16,%edx
10592 ++ movl 40(%esp),%ecx
10593 ++ xorl %esi,%edx
10594 ++ andl %edx,%eax
10595 ++ andl %ecx,%edx
10596 ++ movl %eax,%ebx
10597 ++ shll $16,%ebx
10598 ++ movl %edx,%ecx
10599 ++ shll $16,%ecx
10600 ++ xorl %ebx,%eax
10601 ++ xorl %ecx,%edx
10602 ++ movl 32(%ebp),%ebx
10603 ++ xorl %ebx,%eax
10604 ++ movl 36(%ebp),%ecx
10605 ++ xorl %esi,%eax
10606 ++ xorl %esi,%edx
10607 ++ xorl %ecx,%edx
10608 ++ andl $0xfcfcfcfc,%eax
10609 ++ xorl %ebx,%ebx
10610 ++ andl $0xcfcfcfcf,%edx
10611 ++ xorl %ecx,%ecx
10612 ++ movb %al,%bl
10613 ++ movb %ah,%cl
10614 ++ rorl $4,%edx
10615 ++ movl 4(%esp),%ebp
10616 ++ xorl (%ebp,%ebx,1),%edi
10617 ++ movb %dl,%bl
10618 ++ xorl 0x200(%ebp,%ecx,1),%edi
10619 ++ movb %dh,%cl
10620 ++ shrl $16,%eax
10621 ++ xorl 0x100(%ebp,%ebx,1),%edi
10622 ++ movb %ah,%bl
10623 ++ shrl $16,%edx
10624 ++ xorl 0x300(%ebp,%ecx,1),%edi
10625 ++ movb %dh,%cl
10626 ++ andl $0xff,%eax
10627 ++ andl $0xff,%edx
10628 ++ movl 0x600(%ebp,%ebx,1),%ebx
10629 ++ xorl %ebx,%edi
10630 ++ movl 0x700(%ebp,%ecx,1),%ebx
10631 ++ xorl %ebx,%edi
10632 ++ movl 0x400(%ebp,%eax,1),%ebx
10633 ++ xorl %ebx,%edi
10634 ++ movl 0x500(%ebp,%edx,1),%ebx
10635 ++ xorl %ebx,%edi
10636 ++ movl 32(%esp),%ebp
10637 ++
10638 ++ # Round 5
10639 ++ movl 36(%esp),%eax
10640 ++ movl %edi,%edx
10641 ++ shrl $16,%edx
10642 ++ movl 40(%esp),%ecx
10643 ++ xorl %edi,%edx
10644 ++ andl %edx,%eax
10645 ++ andl %ecx,%edx
10646 ++ movl %eax,%ebx
10647 ++ shll $16,%ebx
10648 ++ movl %edx,%ecx
10649 ++ shll $16,%ecx
10650 ++ xorl %ebx,%eax
10651 ++ xorl %ecx,%edx
10652 ++ movl 40(%ebp),%ebx
10653 ++ xorl %ebx,%eax
10654 ++ movl 44(%ebp),%ecx
10655 ++ xorl %edi,%eax
10656 ++ xorl %edi,%edx
10657 ++ xorl %ecx,%edx
10658 ++ andl $0xfcfcfcfc,%eax
10659 ++ xorl %ebx,%ebx
10660 ++ andl $0xcfcfcfcf,%edx
10661 ++ xorl %ecx,%ecx
10662 ++ movb %al,%bl
10663 ++ movb %ah,%cl
10664 ++ rorl $4,%edx
10665 ++ movl 4(%esp),%ebp
10666 ++ xorl (%ebp,%ebx,1),%esi
10667 ++ movb %dl,%bl
10668 ++ xorl 0x200(%ebp,%ecx,1),%esi
10669 ++ movb %dh,%cl
10670 ++ shrl $16,%eax
10671 ++ xorl 0x100(%ebp,%ebx,1),%esi
10672 ++ movb %ah,%bl
10673 ++ shrl $16,%edx
10674 ++ xorl 0x300(%ebp,%ecx,1),%esi
10675 ++ movb %dh,%cl
10676 ++ andl $0xff,%eax
10677 ++ andl $0xff,%edx
10678 ++ movl 0x600(%ebp,%ebx,1),%ebx
10679 ++ xorl %ebx,%esi
10680 ++ movl 0x700(%ebp,%ecx,1),%ebx
10681 ++ xorl %ebx,%esi
10682 ++ movl 0x400(%ebp,%eax,1),%ebx
10683 ++ xorl %ebx,%esi
10684 ++ movl 0x500(%ebp,%edx,1),%ebx
10685 ++ xorl %ebx,%esi
10686 ++ movl 32(%esp),%ebp
10687 ++
10688 ++ # Round 6
10689 ++ movl 36(%esp),%eax
10690 ++ movl %esi,%edx
10691 ++ shrl $16,%edx
10692 ++ movl 40(%esp),%ecx
10693 ++ xorl %esi,%edx
10694 ++ andl %edx,%eax
10695 ++ andl %ecx,%edx
10696 ++ movl %eax,%ebx
10697 ++ shll $16,%ebx
10698 ++ movl %edx,%ecx
10699 ++ shll $16,%ecx
10700 ++ xorl %ebx,%eax
10701 ++ xorl %ecx,%edx
10702 ++ movl 48(%ebp),%ebx
10703 ++ xorl %ebx,%eax
10704 ++ movl 52(%ebp),%ecx
10705 ++ xorl %esi,%eax
10706 ++ xorl %esi,%edx
10707 ++ xorl %ecx,%edx
10708 ++ andl $0xfcfcfcfc,%eax
10709 ++ xorl %ebx,%ebx
10710 ++ andl $0xcfcfcfcf,%edx
10711 ++ xorl %ecx,%ecx
10712 ++ movb %al,%bl
10713 ++ movb %ah,%cl
10714 ++ rorl $4,%edx
10715 ++ movl 4(%esp),%ebp
10716 ++ xorl (%ebp,%ebx,1),%edi
10717 ++ movb %dl,%bl
10718 ++ xorl 0x200(%ebp,%ecx,1),%edi
10719 ++ movb %dh,%cl
10720 ++ shrl $16,%eax
10721 ++ xorl 0x100(%ebp,%ebx,1),%edi
10722 ++ movb %ah,%bl
10723 ++ shrl $16,%edx
10724 ++ xorl 0x300(%ebp,%ecx,1),%edi
10725 ++ movb %dh,%cl
10726 ++ andl $0xff,%eax
10727 ++ andl $0xff,%edx
10728 ++ movl 0x600(%ebp,%ebx,1),%ebx
10729 ++ xorl %ebx,%edi
10730 ++ movl 0x700(%ebp,%ecx,1),%ebx
10731 ++ xorl %ebx,%edi
10732 ++ movl 0x400(%ebp,%eax,1),%ebx
10733 ++ xorl %ebx,%edi
10734 ++ movl 0x500(%ebp,%edx,1),%ebx
10735 ++ xorl %ebx,%edi
10736 ++ movl 32(%esp),%ebp
10737 ++
10738 ++ # Round 7
10739 ++ movl 36(%esp),%eax
10740 ++ movl %edi,%edx
10741 ++ shrl $16,%edx
10742 ++ movl 40(%esp),%ecx
10743 ++ xorl %edi,%edx
10744 ++ andl %edx,%eax
10745 ++ andl %ecx,%edx
10746 ++ movl %eax,%ebx
10747 ++ shll $16,%ebx
10748 ++ movl %edx,%ecx
10749 ++ shll $16,%ecx
10750 ++ xorl %ebx,%eax
10751 ++ xorl %ecx,%edx
10752 ++ movl 56(%ebp),%ebx
10753 ++ xorl %ebx,%eax
10754 ++ movl 60(%ebp),%ecx
10755 ++ xorl %edi,%eax
10756 ++ xorl %edi,%edx
10757 ++ xorl %ecx,%edx
10758 ++ andl $0xfcfcfcfc,%eax
10759 ++ xorl %ebx,%ebx
10760 ++ andl $0xcfcfcfcf,%edx
10761 ++ xorl %ecx,%ecx
10762 ++ movb %al,%bl
10763 ++ movb %ah,%cl
10764 ++ rorl $4,%edx
10765 ++ movl 4(%esp),%ebp
10766 ++ xorl (%ebp,%ebx,1),%esi
10767 ++ movb %dl,%bl
10768 ++ xorl 0x200(%ebp,%ecx,1),%esi
10769 ++ movb %dh,%cl
10770 ++ shrl $16,%eax
10771 ++ xorl 0x100(%ebp,%ebx,1),%esi
10772 ++ movb %ah,%bl
10773 ++ shrl $16,%edx
10774 ++ xorl 0x300(%ebp,%ecx,1),%esi
10775 ++ movb %dh,%cl
10776 ++ andl $0xff,%eax
10777 ++ andl $0xff,%edx
10778 ++ movl 0x600(%ebp,%ebx,1),%ebx
10779 ++ xorl %ebx,%esi
10780 ++ movl 0x700(%ebp,%ecx,1),%ebx
10781 ++ xorl %ebx,%esi
10782 ++ movl 0x400(%ebp,%eax,1),%ebx
10783 ++ xorl %ebx,%esi
10784 ++ movl 0x500(%ebp,%edx,1),%ebx
10785 ++ xorl %ebx,%esi
10786 ++ movl 32(%esp),%ebp
10787 ++
10788 ++ # Round 8
10789 ++ movl 36(%esp),%eax
10790 ++ movl %esi,%edx
10791 ++ shrl $16,%edx
10792 ++ movl 40(%esp),%ecx
10793 ++ xorl %esi,%edx
10794 ++ andl %edx,%eax
10795 ++ andl %ecx,%edx
10796 ++ movl %eax,%ebx
10797 ++ shll $16,%ebx
10798 ++ movl %edx,%ecx
10799 ++ shll $16,%ecx
10800 ++ xorl %ebx,%eax
10801 ++ xorl %ecx,%edx
10802 ++ movl 64(%ebp),%ebx
10803 ++ xorl %ebx,%eax
10804 ++ movl 68(%ebp),%ecx
10805 ++ xorl %esi,%eax
10806 ++ xorl %esi,%edx
10807 ++ xorl %ecx,%edx
10808 ++ andl $0xfcfcfcfc,%eax
10809 ++ xorl %ebx,%ebx
10810 ++ andl $0xcfcfcfcf,%edx
10811 ++ xorl %ecx,%ecx
10812 ++ movb %al,%bl
10813 ++ movb %ah,%cl
10814 ++ rorl $4,%edx
10815 ++ movl 4(%esp),%ebp
10816 ++ xorl (%ebp,%ebx,1),%edi
10817 ++ movb %dl,%bl
10818 ++ xorl 0x200(%ebp,%ecx,1),%edi
10819 ++ movb %dh,%cl
10820 ++ shrl $16,%eax
10821 ++ xorl 0x100(%ebp,%ebx,1),%edi
10822 ++ movb %ah,%bl
10823 ++ shrl $16,%edx
10824 ++ xorl 0x300(%ebp,%ecx,1),%edi
10825 ++ movb %dh,%cl
10826 ++ andl $0xff,%eax
10827 ++ andl $0xff,%edx
10828 ++ movl 0x600(%ebp,%ebx,1),%ebx
10829 ++ xorl %ebx,%edi
10830 ++ movl 0x700(%ebp,%ecx,1),%ebx
10831 ++ xorl %ebx,%edi
10832 ++ movl 0x400(%ebp,%eax,1),%ebx
10833 ++ xorl %ebx,%edi
10834 ++ movl 0x500(%ebp,%edx,1),%ebx
10835 ++ xorl %ebx,%edi
10836 ++ movl 32(%esp),%ebp
10837 ++
10838 ++ # Round 9
10839 ++ movl 36(%esp),%eax
10840 ++ movl %edi,%edx
10841 ++ shrl $16,%edx
10842 ++ movl 40(%esp),%ecx
10843 ++ xorl %edi,%edx
10844 ++ andl %edx,%eax
10845 ++ andl %ecx,%edx
10846 ++ movl %eax,%ebx
10847 ++ shll $16,%ebx
10848 ++ movl %edx,%ecx
10849 ++ shll $16,%ecx
10850 ++ xorl %ebx,%eax
10851 ++ xorl %ecx,%edx
10852 ++ movl 72(%ebp),%ebx
10853 ++ xorl %ebx,%eax
10854 ++ movl 76(%ebp),%ecx
10855 ++ xorl %edi,%eax
10856 ++ xorl %edi,%edx
10857 ++ xorl %ecx,%edx
10858 ++ andl $0xfcfcfcfc,%eax
10859 ++ xorl %ebx,%ebx
10860 ++ andl $0xcfcfcfcf,%edx
10861 ++ xorl %ecx,%ecx
10862 ++ movb %al,%bl
10863 ++ movb %ah,%cl
10864 ++ rorl $4,%edx
10865 ++ movl 4(%esp),%ebp
10866 ++ xorl (%ebp,%ebx,1),%esi
10867 ++ movb %dl,%bl
10868 ++ xorl 0x200(%ebp,%ecx,1),%esi
10869 ++ movb %dh,%cl
10870 ++ shrl $16,%eax
10871 ++ xorl 0x100(%ebp,%ebx,1),%esi
10872 ++ movb %ah,%bl
10873 ++ shrl $16,%edx
10874 ++ xorl 0x300(%ebp,%ecx,1),%esi
10875 ++ movb %dh,%cl
10876 ++ andl $0xff,%eax
10877 ++ andl $0xff,%edx
10878 ++ movl 0x600(%ebp,%ebx,1),%ebx
10879 ++ xorl %ebx,%esi
10880 ++ movl 0x700(%ebp,%ecx,1),%ebx
10881 ++ xorl %ebx,%esi
10882 ++ movl 0x400(%ebp,%eax,1),%ebx
10883 ++ xorl %ebx,%esi
10884 ++ movl 0x500(%ebp,%edx,1),%ebx
10885 ++ xorl %ebx,%esi
10886 ++ movl 32(%esp),%ebp
10887 ++
10888 ++ # Round 10
10889 ++ movl 36(%esp),%eax
10890 ++ movl %esi,%edx
10891 ++ shrl $16,%edx
10892 ++ movl 40(%esp),%ecx
10893 ++ xorl %esi,%edx
10894 ++ andl %edx,%eax
10895 ++ andl %ecx,%edx
10896 ++ movl %eax,%ebx
10897 ++ shll $16,%ebx
10898 ++ movl %edx,%ecx
10899 ++ shll $16,%ecx
10900 ++ xorl %ebx,%eax
10901 ++ xorl %ecx,%edx
10902 ++ movl 80(%ebp),%ebx
10903 ++ xorl %ebx,%eax
10904 ++ movl 84(%ebp),%ecx
10905 ++ xorl %esi,%eax
10906 ++ xorl %esi,%edx
10907 ++ xorl %ecx,%edx
10908 ++ andl $0xfcfcfcfc,%eax
10909 ++ xorl %ebx,%ebx
10910 ++ andl $0xcfcfcfcf,%edx
10911 ++ xorl %ecx,%ecx
10912 ++ movb %al,%bl
10913 ++ movb %ah,%cl
10914 ++ rorl $4,%edx
10915 ++ movl 4(%esp),%ebp
10916 ++ xorl (%ebp,%ebx,1),%edi
10917 ++ movb %dl,%bl
10918 ++ xorl 0x200(%ebp,%ecx,1),%edi
10919 ++ movb %dh,%cl
10920 ++ shrl $16,%eax
10921 ++ xorl 0x100(%ebp,%ebx,1),%edi
10922 ++ movb %ah,%bl
10923 ++ shrl $16,%edx
10924 ++ xorl 0x300(%ebp,%ecx,1),%edi
10925 ++ movb %dh,%cl
10926 ++ andl $0xff,%eax
10927 ++ andl $0xff,%edx
10928 ++ movl 0x600(%ebp,%ebx,1),%ebx
10929 ++ xorl %ebx,%edi
10930 ++ movl 0x700(%ebp,%ecx,1),%ebx
10931 ++ xorl %ebx,%edi
10932 ++ movl 0x400(%ebp,%eax,1),%ebx
10933 ++ xorl %ebx,%edi
10934 ++ movl 0x500(%ebp,%edx,1),%ebx
10935 ++ xorl %ebx,%edi
10936 ++ movl 32(%esp),%ebp
10937 ++
10938 ++ # Round 11
10939 ++ movl 36(%esp),%eax
10940 ++ movl %edi,%edx
10941 ++ shrl $16,%edx
10942 ++ movl 40(%esp),%ecx
10943 ++ xorl %edi,%edx
10944 ++ andl %edx,%eax
10945 ++ andl %ecx,%edx
10946 ++ movl %eax,%ebx
10947 ++ shll $16,%ebx
10948 ++ movl %edx,%ecx
10949 ++ shll $16,%ecx
10950 ++ xorl %ebx,%eax
10951 ++ xorl %ecx,%edx
10952 ++ movl 88(%ebp),%ebx
10953 ++ xorl %ebx,%eax
10954 ++ movl 92(%ebp),%ecx
10955 ++ xorl %edi,%eax
10956 ++ xorl %edi,%edx
10957 ++ xorl %ecx,%edx
10958 ++ andl $0xfcfcfcfc,%eax
10959 ++ xorl %ebx,%ebx
10960 ++ andl $0xcfcfcfcf,%edx
10961 ++ xorl %ecx,%ecx
10962 ++ movb %al,%bl
10963 ++ movb %ah,%cl
10964 ++ rorl $4,%edx
10965 ++ movl 4(%esp),%ebp
10966 ++ xorl (%ebp,%ebx,1),%esi
10967 ++ movb %dl,%bl
10968 ++ xorl 0x200(%ebp,%ecx,1),%esi
10969 ++ movb %dh,%cl
10970 ++ shrl $16,%eax
10971 ++ xorl 0x100(%ebp,%ebx,1),%esi
10972 ++ movb %ah,%bl
10973 ++ shrl $16,%edx
10974 ++ xorl 0x300(%ebp,%ecx,1),%esi
10975 ++ movb %dh,%cl
10976 ++ andl $0xff,%eax
10977 ++ andl $0xff,%edx
10978 ++ movl 0x600(%ebp,%ebx,1),%ebx
10979 ++ xorl %ebx,%esi
10980 ++ movl 0x700(%ebp,%ecx,1),%ebx
10981 ++ xorl %ebx,%esi
10982 ++ movl 0x400(%ebp,%eax,1),%ebx
10983 ++ xorl %ebx,%esi
10984 ++ movl 0x500(%ebp,%edx,1),%ebx
10985 ++ xorl %ebx,%esi
10986 ++ movl 32(%esp),%ebp
10987 ++
10988 ++ # Round 12
10989 ++ movl 36(%esp),%eax
10990 ++ movl %esi,%edx
10991 ++ shrl $16,%edx
10992 ++ movl 40(%esp),%ecx
10993 ++ xorl %esi,%edx
10994 ++ andl %edx,%eax
10995 ++ andl %ecx,%edx
10996 ++ movl %eax,%ebx
10997 ++ shll $16,%ebx
10998 ++ movl %edx,%ecx
10999 ++ shll $16,%ecx
11000 ++ xorl %ebx,%eax
11001 ++ xorl %ecx,%edx
11002 ++ movl 96(%ebp),%ebx
11003 ++ xorl %ebx,%eax
11004 ++ movl 100(%ebp),%ecx
11005 ++ xorl %esi,%eax
11006 ++ xorl %esi,%edx
11007 ++ xorl %ecx,%edx
11008 ++ andl $0xfcfcfcfc,%eax
11009 ++ xorl %ebx,%ebx
11010 ++ andl $0xcfcfcfcf,%edx
11011 ++ xorl %ecx,%ecx
11012 ++ movb %al,%bl
11013 ++ movb %ah,%cl
11014 ++ rorl $4,%edx
11015 ++ movl 4(%esp),%ebp
11016 ++ xorl (%ebp,%ebx,1),%edi
11017 ++ movb %dl,%bl
11018 ++ xorl 0x200(%ebp,%ecx,1),%edi
11019 ++ movb %dh,%cl
11020 ++ shrl $16,%eax
11021 ++ xorl 0x100(%ebp,%ebx,1),%edi
11022 ++ movb %ah,%bl
11023 ++ shrl $16,%edx
11024 ++ xorl 0x300(%ebp,%ecx,1),%edi
11025 ++ movb %dh,%cl
11026 ++ andl $0xff,%eax
11027 ++ andl $0xff,%edx
11028 ++ movl 0x600(%ebp,%ebx,1),%ebx
11029 ++ xorl %ebx,%edi
11030 ++ movl 0x700(%ebp,%ecx,1),%ebx
11031 ++ xorl %ebx,%edi
11032 ++ movl 0x400(%ebp,%eax,1),%ebx
11033 ++ xorl %ebx,%edi
11034 ++ movl 0x500(%ebp,%edx,1),%ebx
11035 ++ xorl %ebx,%edi
11036 ++ movl 32(%esp),%ebp
11037 ++
11038 ++ # Round 13
11039 ++ movl 36(%esp),%eax
11040 ++ movl %edi,%edx
11041 ++ shrl $16,%edx
11042 ++ movl 40(%esp),%ecx
11043 ++ xorl %edi,%edx
11044 ++ andl %edx,%eax
11045 ++ andl %ecx,%edx
11046 ++ movl %eax,%ebx
11047 ++ shll $16,%ebx
11048 ++ movl %edx,%ecx
11049 ++ shll $16,%ecx
11050 ++ xorl %ebx,%eax
11051 ++ xorl %ecx,%edx
11052 ++ movl 104(%ebp),%ebx
11053 ++ xorl %ebx,%eax
11054 ++ movl 108(%ebp),%ecx
11055 ++ xorl %edi,%eax
11056 ++ xorl %edi,%edx
11057 ++ xorl %ecx,%edx
11058 ++ andl $0xfcfcfcfc,%eax
11059 ++ xorl %ebx,%ebx
11060 ++ andl $0xcfcfcfcf,%edx
11061 ++ xorl %ecx,%ecx
11062 ++ movb %al,%bl
11063 ++ movb %ah,%cl
11064 ++ rorl $4,%edx
11065 ++ movl 4(%esp),%ebp
11066 ++ xorl (%ebp,%ebx,1),%esi
11067 ++ movb %dl,%bl
11068 ++ xorl 0x200(%ebp,%ecx,1),%esi
11069 ++ movb %dh,%cl
11070 ++ shrl $16,%eax
11071 ++ xorl 0x100(%ebp,%ebx,1),%esi
11072 ++ movb %ah,%bl
11073 ++ shrl $16,%edx
11074 ++ xorl 0x300(%ebp,%ecx,1),%esi
11075 ++ movb %dh,%cl
11076 ++ andl $0xff,%eax
11077 ++ andl $0xff,%edx
11078 ++ movl 0x600(%ebp,%ebx,1),%ebx
11079 ++ xorl %ebx,%esi
11080 ++ movl 0x700(%ebp,%ecx,1),%ebx
11081 ++ xorl %ebx,%esi
11082 ++ movl 0x400(%ebp,%eax,1),%ebx
11083 ++ xorl %ebx,%esi
11084 ++ movl 0x500(%ebp,%edx,1),%ebx
11085 ++ xorl %ebx,%esi
11086 ++ movl 32(%esp),%ebp
11087 ++
11088 ++ # Round 14
11089 ++ movl 36(%esp),%eax
11090 ++ movl %esi,%edx
11091 ++ shrl $16,%edx
11092 ++ movl 40(%esp),%ecx
11093 ++ xorl %esi,%edx
11094 ++ andl %edx,%eax
11095 ++ andl %ecx,%edx
11096 ++ movl %eax,%ebx
11097 ++ shll $16,%ebx
11098 ++ movl %edx,%ecx
11099 ++ shll $16,%ecx
11100 ++ xorl %ebx,%eax
11101 ++ xorl %ecx,%edx
11102 ++ movl 112(%ebp),%ebx
11103 ++ xorl %ebx,%eax
11104 ++ movl 116(%ebp),%ecx
11105 ++ xorl %esi,%eax
11106 ++ xorl %esi,%edx
11107 ++ xorl %ecx,%edx
11108 ++ andl $0xfcfcfcfc,%eax
11109 ++ xorl %ebx,%ebx
11110 ++ andl $0xcfcfcfcf,%edx
11111 ++ xorl %ecx,%ecx
11112 ++ movb %al,%bl
11113 ++ movb %ah,%cl
11114 ++ rorl $4,%edx
11115 ++ movl 4(%esp),%ebp
11116 ++ xorl (%ebp,%ebx,1),%edi
11117 ++ movb %dl,%bl
11118 ++ xorl 0x200(%ebp,%ecx,1),%edi
11119 ++ movb %dh,%cl
11120 ++ shrl $16,%eax
11121 ++ xorl 0x100(%ebp,%ebx,1),%edi
11122 ++ movb %ah,%bl
11123 ++ shrl $16,%edx
11124 ++ xorl 0x300(%ebp,%ecx,1),%edi
11125 ++ movb %dh,%cl
11126 ++ andl $0xff,%eax
11127 ++ andl $0xff,%edx
11128 ++ movl 0x600(%ebp,%ebx,1),%ebx
11129 ++ xorl %ebx,%edi
11130 ++ movl 0x700(%ebp,%ecx,1),%ebx
11131 ++ xorl %ebx,%edi
11132 ++ movl 0x400(%ebp,%eax,1),%ebx
11133 ++ xorl %ebx,%edi
11134 ++ movl 0x500(%ebp,%edx,1),%ebx
11135 ++ xorl %ebx,%edi
11136 ++ movl 32(%esp),%ebp
11137 ++
11138 ++ # Round 15
11139 ++ movl 36(%esp),%eax
11140 ++ movl %edi,%edx
11141 ++ shrl $16,%edx
11142 ++ movl 40(%esp),%ecx
11143 ++ xorl %edi,%edx
11144 ++ andl %edx,%eax
11145 ++ andl %ecx,%edx
11146 ++ movl %eax,%ebx
11147 ++ shll $16,%ebx
11148 ++ movl %edx,%ecx
11149 ++ shll $16,%ecx
11150 ++ xorl %ebx,%eax
11151 ++ xorl %ecx,%edx
11152 ++ movl 120(%ebp),%ebx
11153 ++ xorl %ebx,%eax
11154 ++ movl 124(%ebp),%ecx
11155 ++ xorl %edi,%eax
11156 ++ xorl %edi,%edx
11157 ++ xorl %ecx,%edx
11158 ++ andl $0xfcfcfcfc,%eax
11159 ++ xorl %ebx,%ebx
11160 ++ andl $0xcfcfcfcf,%edx
11161 ++ xorl %ecx,%ecx
11162 ++ movb %al,%bl
11163 ++ movb %ah,%cl
11164 ++ rorl $4,%edx
11165 ++ movl 4(%esp),%ebp
11166 ++ xorl (%ebp,%ebx,1),%esi
11167 ++ movb %dl,%bl
11168 ++ xorl 0x200(%ebp,%ecx,1),%esi
11169 ++ movb %dh,%cl
11170 ++ shrl $16,%eax
11171 ++ xorl 0x100(%ebp,%ebx,1),%esi
11172 ++ movb %ah,%bl
11173 ++ shrl $16,%edx
11174 ++ xorl 0x300(%ebp,%ecx,1),%esi
11175 ++ movb %dh,%cl
11176 ++ andl $0xff,%eax
11177 ++ andl $0xff,%edx
11178 ++ movl 0x600(%ebp,%ebx,1),%ebx
11179 ++ xorl %ebx,%esi
11180 ++ movl 0x700(%ebp,%ecx,1),%ebx
11181 ++ xorl %ebx,%esi
11182 ++ movl 0x400(%ebp,%eax,1),%ebx
11183 ++ xorl %ebx,%esi
11184 ++ movl 0x500(%ebp,%edx,1),%ebx
11185 ++ xorl %ebx,%esi
11186 ++ movl 32(%esp),%ebp
11187 ++ movl (%esp),%ebx
11188 ++ movl %edi,%eax
11189 ++ decl %ebx
11190 ++ movl %esi,%edi
11191 ++ movl %eax,%esi
11192 ++ movl %ebx,(%esp)
11193 ++ jnz L001start
11194 ++
11195 ++ # FP
11196 ++ movl 28(%esp),%edx
11197 ++ rorl $1,%edi
11198 ++ movl %esi,%eax
11199 ++ xorl %edi,%esi
11200 ++ andl $0xaaaaaaaa,%esi
11201 ++ xorl %esi,%eax
11202 ++ xorl %esi,%edi
11203 ++
11204 ++ roll $23,%eax
11205 ++ movl %eax,%esi
11206 ++ xorl %edi,%eax
11207 ++ andl $0x03fc03fc,%eax
11208 ++ xorl %eax,%esi
11209 ++ xorl %eax,%edi
11210 ++
11211 ++ roll $10,%esi
11212 ++ movl %esi,%eax
11213 ++ xorl %edi,%esi
11214 ++ andl $0x33333333,%esi
11215 ++ xorl %esi,%eax
11216 ++ xorl %esi,%edi
11217 ++
11218 ++ roll $18,%edi
11219 ++ movl %edi,%esi
11220 ++ xorl %eax,%edi
11221 ++ andl $0xfff0000f,%edi
11222 ++ xorl %edi,%esi
11223 ++ xorl %edi,%eax
11224 ++
11225 ++ roll $12,%esi
11226 ++ movl %esi,%edi
11227 ++ xorl %eax,%esi
11228 ++ andl $0xf0f0f0f0,%esi
11229 ++ xorl %esi,%edi
11230 ++ xorl %esi,%eax
11231 ++
11232 ++ rorl $4,%eax
11233 ++ movl %eax,(%edx)
11234 ++ movl %edi,4(%edx)
11235 ++ addl $8,%esp
11236 ++ popl %edi
11237 ++ popl %esi
11238 ++ popl %ebx
11239 ++ popl %ebp
11240 ++ ret
11241 ++.section __IMPORT,__pointers,non_lazy_symbol_pointers
11242 ++L_DES_SPtrans$non_lazy_ptr:
11243 ++.indirect_symbol _DES_SPtrans
11244 ++.long 0
11245 +diff --git a/crypto/des/asm/des-586-mac.S b/crypto/des/asm/des-586-mac.S
11246 +new file mode 100644
11247 +index 0000000..4969416
11248 +--- /dev/null
11249 ++++ b/crypto/des/asm/des-586-mac.S
11250 +@@ -0,0 +1,1821 @@
11251 ++.file "des-586.s"
11252 ++.text
11253 ++.globl _DES_SPtrans
11254 ++.align 4
11255 ++__x86_DES_encrypt:
11256 ++ pushl %ecx
11257 ++ # Round 0
11258 ++ movl (%ecx),%eax
11259 ++ xorl %ebx,%ebx
11260 ++ movl 4(%ecx),%edx
11261 ++ xorl %esi,%eax
11262 ++ xorl %ecx,%ecx
11263 ++ xorl %esi,%edx
11264 ++ andl $0xfcfcfcfc,%eax
11265 ++ andl $0xcfcfcfcf,%edx
11266 ++ movb %al,%bl
11267 ++ movb %ah,%cl
11268 ++ rorl $4,%edx
11269 ++ xorl (%ebp,%ebx,1),%edi
11270 ++ movb %dl,%bl
11271 ++ xorl 0x200(%ebp,%ecx,1),%edi
11272 ++ movb %dh,%cl
11273 ++ shrl $16,%eax
11274 ++ xorl 0x100(%ebp,%ebx,1),%edi
11275 ++ movb %ah,%bl
11276 ++ shrl $16,%edx
11277 ++ xorl 0x300(%ebp,%ecx,1),%edi
11278 ++ movb %dh,%cl
11279 ++ andl $0xff,%eax
11280 ++ andl $0xff,%edx
11281 ++ xorl 0x600(%ebp,%ebx,1),%edi
11282 ++ xorl 0x700(%ebp,%ecx,1),%edi
11283 ++ movl (%esp),%ecx
11284 ++ xorl 0x400(%ebp,%eax,1),%edi
11285 ++ xorl 0x500(%ebp,%edx,1),%edi
11286 ++ # Round 1
11287 ++ movl 8(%ecx),%eax
11288 ++ xorl %ebx,%ebx
11289 ++ movl 12(%ecx),%edx
11290 ++ xorl %edi,%eax
11291 ++ xorl %ecx,%ecx
11292 ++ xorl %edi,%edx
11293 ++ andl $0xfcfcfcfc,%eax
11294 ++ andl $0xcfcfcfcf,%edx
11295 ++ movb %al,%bl
11296 ++ movb %ah,%cl
11297 ++ rorl $4,%edx
11298 ++ xorl (%ebp,%ebx,1),%esi
11299 ++ movb %dl,%bl
11300 ++ xorl 0x200(%ebp,%ecx,1),%esi
11301 ++ movb %dh,%cl
11302 ++ shrl $16,%eax
11303 ++ xorl 0x100(%ebp,%ebx,1),%esi
11304 ++ movb %ah,%bl
11305 ++ shrl $16,%edx
11306 ++ xorl 0x300(%ebp,%ecx,1),%esi
11307 ++ movb %dh,%cl
11308 ++ andl $0xff,%eax
11309 ++ andl $0xff,%edx
11310 ++ xorl 0x600(%ebp,%ebx,1),%esi
11311 ++ xorl 0x700(%ebp,%ecx,1),%esi
11312 ++ movl (%esp),%ecx
11313 ++ xorl 0x400(%ebp,%eax,1),%esi
11314 ++ xorl 0x500(%ebp,%edx,1),%esi
11315 ++ # Round 2
11316 ++ movl 16(%ecx),%eax
11317 ++ xorl %ebx,%ebx
11318 ++ movl 20(%ecx),%edx
11319 ++ xorl %esi,%eax
11320 ++ xorl %ecx,%ecx
11321 ++ xorl %esi,%edx
11322 ++ andl $0xfcfcfcfc,%eax
11323 ++ andl $0xcfcfcfcf,%edx
11324 ++ movb %al,%bl
11325 ++ movb %ah,%cl
11326 ++ rorl $4,%edx
11327 ++ xorl (%ebp,%ebx,1),%edi
11328 ++ movb %dl,%bl
11329 ++ xorl 0x200(%ebp,%ecx,1),%edi
11330 ++ movb %dh,%cl
11331 ++ shrl $16,%eax
11332 ++ xorl 0x100(%ebp,%ebx,1),%edi
11333 ++ movb %ah,%bl
11334 ++ shrl $16,%edx
11335 ++ xorl 0x300(%ebp,%ecx,1),%edi
11336 ++ movb %dh,%cl
11337 ++ andl $0xff,%eax
11338 ++ andl $0xff,%edx
11339 ++ xorl 0x600(%ebp,%ebx,1),%edi
11340 ++ xorl 0x700(%ebp,%ecx,1),%edi
11341 ++ movl (%esp),%ecx
11342 ++ xorl 0x400(%ebp,%eax,1),%edi
11343 ++ xorl 0x500(%ebp,%edx,1),%edi
11344 ++ # Round 3
11345 ++ movl 24(%ecx),%eax
11346 ++ xorl %ebx,%ebx
11347 ++ movl 28(%ecx),%edx
11348 ++ xorl %edi,%eax
11349 ++ xorl %ecx,%ecx
11350 ++ xorl %edi,%edx
11351 ++ andl $0xfcfcfcfc,%eax
11352 ++ andl $0xcfcfcfcf,%edx
11353 ++ movb %al,%bl
11354 ++ movb %ah,%cl
11355 ++ rorl $4,%edx
11356 ++ xorl (%ebp,%ebx,1),%esi
11357 ++ movb %dl,%bl
11358 ++ xorl 0x200(%ebp,%ecx,1),%esi
11359 ++ movb %dh,%cl
11360 ++ shrl $16,%eax
11361 ++ xorl 0x100(%ebp,%ebx,1),%esi
11362 ++ movb %ah,%bl
11363 ++ shrl $16,%edx
11364 ++ xorl 0x300(%ebp,%ecx,1),%esi
11365 ++ movb %dh,%cl
11366 ++ andl $0xff,%eax
11367 ++ andl $0xff,%edx
11368 ++ xorl 0x600(%ebp,%ebx,1),%esi
11369 ++ xorl 0x700(%ebp,%ecx,1),%esi
11370 ++ movl (%esp),%ecx
11371 ++ xorl 0x400(%ebp,%eax,1),%esi
11372 ++ xorl 0x500(%ebp,%edx,1),%esi
11373 ++ # Round 4
11374 ++ movl 32(%ecx),%eax
11375 ++ xorl %ebx,%ebx
11376 ++ movl 36(%ecx),%edx
11377 ++ xorl %esi,%eax
11378 ++ xorl %ecx,%ecx
11379 ++ xorl %esi,%edx
11380 ++ andl $0xfcfcfcfc,%eax
11381 ++ andl $0xcfcfcfcf,%edx
11382 ++ movb %al,%bl
11383 ++ movb %ah,%cl
11384 ++ rorl $4,%edx
11385 ++ xorl (%ebp,%ebx,1),%edi
11386 ++ movb %dl,%bl
11387 ++ xorl 0x200(%ebp,%ecx,1),%edi
11388 ++ movb %dh,%cl
11389 ++ shrl $16,%eax
11390 ++ xorl 0x100(%ebp,%ebx,1),%edi
11391 ++ movb %ah,%bl
11392 ++ shrl $16,%edx
11393 ++ xorl 0x300(%ebp,%ecx,1),%edi
11394 ++ movb %dh,%cl
11395 ++ andl $0xff,%eax
11396 ++ andl $0xff,%edx
11397 ++ xorl 0x600(%ebp,%ebx,1),%edi
11398 ++ xorl 0x700(%ebp,%ecx,1),%edi
11399 ++ movl (%esp),%ecx
11400 ++ xorl 0x400(%ebp,%eax,1),%edi
11401 ++ xorl 0x500(%ebp,%edx,1),%edi
11402 ++ # Round 5
11403 ++ movl 40(%ecx),%eax
11404 ++ xorl %ebx,%ebx
11405 ++ movl 44(%ecx),%edx
11406 ++ xorl %edi,%eax
11407 ++ xorl %ecx,%ecx
11408 ++ xorl %edi,%edx
11409 ++ andl $0xfcfcfcfc,%eax
11410 ++ andl $0xcfcfcfcf,%edx
11411 ++ movb %al,%bl
11412 ++ movb %ah,%cl
11413 ++ rorl $4,%edx
11414 ++ xorl (%ebp,%ebx,1),%esi
11415 ++ movb %dl,%bl
11416 ++ xorl 0x200(%ebp,%ecx,1),%esi
11417 ++ movb %dh,%cl
11418 ++ shrl $16,%eax
11419 ++ xorl 0x100(%ebp,%ebx,1),%esi
11420 ++ movb %ah,%bl
11421 ++ shrl $16,%edx
11422 ++ xorl 0x300(%ebp,%ecx,1),%esi
11423 ++ movb %dh,%cl
11424 ++ andl $0xff,%eax
11425 ++ andl $0xff,%edx
11426 ++ xorl 0x600(%ebp,%ebx,1),%esi
11427 ++ xorl 0x700(%ebp,%ecx,1),%esi
11428 ++ movl (%esp),%ecx
11429 ++ xorl 0x400(%ebp,%eax,1),%esi
11430 ++ xorl 0x500(%ebp,%edx,1),%esi
11431 ++ # Round 6
11432 ++ movl 48(%ecx),%eax
11433 ++ xorl %ebx,%ebx
11434 ++ movl 52(%ecx),%edx
11435 ++ xorl %esi,%eax
11436 ++ xorl %ecx,%ecx
11437 ++ xorl %esi,%edx
11438 ++ andl $0xfcfcfcfc,%eax
11439 ++ andl $0xcfcfcfcf,%edx
11440 ++ movb %al,%bl
11441 ++ movb %ah,%cl
11442 ++ rorl $4,%edx
11443 ++ xorl (%ebp,%ebx,1),%edi
11444 ++ movb %dl,%bl
11445 ++ xorl 0x200(%ebp,%ecx,1),%edi
11446 ++ movb %dh,%cl
11447 ++ shrl $16,%eax
11448 ++ xorl 0x100(%ebp,%ebx,1),%edi
11449 ++ movb %ah,%bl
11450 ++ shrl $16,%edx
11451 ++ xorl 0x300(%ebp,%ecx,1),%edi
11452 ++ movb %dh,%cl
11453 ++ andl $0xff,%eax
11454 ++ andl $0xff,%edx
11455 ++ xorl 0x600(%ebp,%ebx,1),%edi
11456 ++ xorl 0x700(%ebp,%ecx,1),%edi
11457 ++ movl (%esp),%ecx
11458 ++ xorl 0x400(%ebp,%eax,1),%edi
11459 ++ xorl 0x500(%ebp,%edx,1),%edi
11460 ++ # Round 7
11461 ++ movl 56(%ecx),%eax
11462 ++ xorl %ebx,%ebx
11463 ++ movl 60(%ecx),%edx
11464 ++ xorl %edi,%eax
11465 ++ xorl %ecx,%ecx
11466 ++ xorl %edi,%edx
11467 ++ andl $0xfcfcfcfc,%eax
11468 ++ andl $0xcfcfcfcf,%edx
11469 ++ movb %al,%bl
11470 ++ movb %ah,%cl
11471 ++ rorl $4,%edx
11472 ++ xorl (%ebp,%ebx,1),%esi
11473 ++ movb %dl,%bl
11474 ++ xorl 0x200(%ebp,%ecx,1),%esi
11475 ++ movb %dh,%cl
11476 ++ shrl $16,%eax
11477 ++ xorl 0x100(%ebp,%ebx,1),%esi
11478 ++ movb %ah,%bl
11479 ++ shrl $16,%edx
11480 ++ xorl 0x300(%ebp,%ecx,1),%esi
11481 ++ movb %dh,%cl
11482 ++ andl $0xff,%eax
11483 ++ andl $0xff,%edx
11484 ++ xorl 0x600(%ebp,%ebx,1),%esi
11485 ++ xorl 0x700(%ebp,%ecx,1),%esi
11486 ++ movl (%esp),%ecx
11487 ++ xorl 0x400(%ebp,%eax,1),%esi
11488 ++ xorl 0x500(%ebp,%edx,1),%esi
11489 ++ # Round 8
11490 ++ movl 64(%ecx),%eax
11491 ++ xorl %ebx,%ebx
11492 ++ movl 68(%ecx),%edx
11493 ++ xorl %esi,%eax
11494 ++ xorl %ecx,%ecx
11495 ++ xorl %esi,%edx
11496 ++ andl $0xfcfcfcfc,%eax
11497 ++ andl $0xcfcfcfcf,%edx
11498 ++ movb %al,%bl
11499 ++ movb %ah,%cl
11500 ++ rorl $4,%edx
11501 ++ xorl (%ebp,%ebx,1),%edi
11502 ++ movb %dl,%bl
11503 ++ xorl 0x200(%ebp,%ecx,1),%edi
11504 ++ movb %dh,%cl
11505 ++ shrl $16,%eax
11506 ++ xorl 0x100(%ebp,%ebx,1),%edi
11507 ++ movb %ah,%bl
11508 ++ shrl $16,%edx
11509 ++ xorl 0x300(%ebp,%ecx,1),%edi
11510 ++ movb %dh,%cl
11511 ++ andl $0xff,%eax
11512 ++ andl $0xff,%edx
11513 ++ xorl 0x600(%ebp,%ebx,1),%edi
11514 ++ xorl 0x700(%ebp,%ecx,1),%edi
11515 ++ movl (%esp),%ecx
11516 ++ xorl 0x400(%ebp,%eax,1),%edi
11517 ++ xorl 0x500(%ebp,%edx,1),%edi
11518 ++ # Round 9
11519 ++ movl 72(%ecx),%eax
11520 ++ xorl %ebx,%ebx
11521 ++ movl 76(%ecx),%edx
11522 ++ xorl %edi,%eax
11523 ++ xorl %ecx,%ecx
11524 ++ xorl %edi,%edx
11525 ++ andl $0xfcfcfcfc,%eax
11526 ++ andl $0xcfcfcfcf,%edx
11527 ++ movb %al,%bl
11528 ++ movb %ah,%cl
11529 ++ rorl $4,%edx
11530 ++ xorl (%ebp,%ebx,1),%esi
11531 ++ movb %dl,%bl
11532 ++ xorl 0x200(%ebp,%ecx,1),%esi
11533 ++ movb %dh,%cl
11534 ++ shrl $16,%eax
11535 ++ xorl 0x100(%ebp,%ebx,1),%esi
11536 ++ movb %ah,%bl
11537 ++ shrl $16,%edx
11538 ++ xorl 0x300(%ebp,%ecx,1),%esi
11539 ++ movb %dh,%cl
11540 ++ andl $0xff,%eax
11541 ++ andl $0xff,%edx
11542 ++ xorl 0x600(%ebp,%ebx,1),%esi
11543 ++ xorl 0x700(%ebp,%ecx,1),%esi
11544 ++ movl (%esp),%ecx
11545 ++ xorl 0x400(%ebp,%eax,1),%esi
11546 ++ xorl 0x500(%ebp,%edx,1),%esi
11547 ++ # Round 10
11548 ++ movl 80(%ecx),%eax
11549 ++ xorl %ebx,%ebx
11550 ++ movl 84(%ecx),%edx
11551 ++ xorl %esi,%eax
11552 ++ xorl %ecx,%ecx
11553 ++ xorl %esi,%edx
11554 ++ andl $0xfcfcfcfc,%eax
11555 ++ andl $0xcfcfcfcf,%edx
11556 ++ movb %al,%bl
11557 ++ movb %ah,%cl
11558 ++ rorl $4,%edx
11559 ++ xorl (%ebp,%ebx,1),%edi
11560 ++ movb %dl,%bl
11561 ++ xorl 0x200(%ebp,%ecx,1),%edi
11562 ++ movb %dh,%cl
11563 ++ shrl $16,%eax
11564 ++ xorl 0x100(%ebp,%ebx,1),%edi
11565 ++ movb %ah,%bl
11566 ++ shrl $16,%edx
11567 ++ xorl 0x300(%ebp,%ecx,1),%edi
11568 ++ movb %dh,%cl
11569 ++ andl $0xff,%eax
11570 ++ andl $0xff,%edx
11571 ++ xorl 0x600(%ebp,%ebx,1),%edi
11572 ++ xorl 0x700(%ebp,%ecx,1),%edi
11573 ++ movl (%esp),%ecx
11574 ++ xorl 0x400(%ebp,%eax,1),%edi
11575 ++ xorl 0x500(%ebp,%edx,1),%edi
11576 ++ # Round 11
11577 ++ movl 88(%ecx),%eax
11578 ++ xorl %ebx,%ebx
11579 ++ movl 92(%ecx),%edx
11580 ++ xorl %edi,%eax
11581 ++ xorl %ecx,%ecx
11582 ++ xorl %edi,%edx
11583 ++ andl $0xfcfcfcfc,%eax
11584 ++ andl $0xcfcfcfcf,%edx
11585 ++ movb %al,%bl
11586 ++ movb %ah,%cl
11587 ++ rorl $4,%edx
11588 ++ xorl (%ebp,%ebx,1),%esi
11589 ++ movb %dl,%bl
11590 ++ xorl 0x200(%ebp,%ecx,1),%esi
11591 ++ movb %dh,%cl
11592 ++ shrl $16,%eax
11593 ++ xorl 0x100(%ebp,%ebx,1),%esi
11594 ++ movb %ah,%bl
11595 ++ shrl $16,%edx
11596 ++ xorl 0x300(%ebp,%ecx,1),%esi
11597 ++ movb %dh,%cl
11598 ++ andl $0xff,%eax
11599 ++ andl $0xff,%edx
11600 ++ xorl 0x600(%ebp,%ebx,1),%esi
11601 ++ xorl 0x700(%ebp,%ecx,1),%esi
11602 ++ movl (%esp),%ecx
11603 ++ xorl 0x400(%ebp,%eax,1),%esi
11604 ++ xorl 0x500(%ebp,%edx,1),%esi
11605 ++ # Round 12
11606 ++ movl 96(%ecx),%eax
11607 ++ xorl %ebx,%ebx
11608 ++ movl 100(%ecx),%edx
11609 ++ xorl %esi,%eax
11610 ++ xorl %ecx,%ecx
11611 ++ xorl %esi,%edx
11612 ++ andl $0xfcfcfcfc,%eax
11613 ++ andl $0xcfcfcfcf,%edx
11614 ++ movb %al,%bl
11615 ++ movb %ah,%cl
11616 ++ rorl $4,%edx
11617 ++ xorl (%ebp,%ebx,1),%edi
11618 ++ movb %dl,%bl
11619 ++ xorl 0x200(%ebp,%ecx,1),%edi
11620 ++ movb %dh,%cl
11621 ++ shrl $16,%eax
11622 ++ xorl 0x100(%ebp,%ebx,1),%edi
11623 ++ movb %ah,%bl
11624 ++ shrl $16,%edx
11625 ++ xorl 0x300(%ebp,%ecx,1),%edi
11626 ++ movb %dh,%cl
11627 ++ andl $0xff,%eax
11628 ++ andl $0xff,%edx
11629 ++ xorl 0x600(%ebp,%ebx,1),%edi
11630 ++ xorl 0x700(%ebp,%ecx,1),%edi
11631 ++ movl (%esp),%ecx
11632 ++ xorl 0x400(%ebp,%eax,1),%edi
11633 ++ xorl 0x500(%ebp,%edx,1),%edi
11634 ++ # Round 13
11635 ++ movl 104(%ecx),%eax
11636 ++ xorl %ebx,%ebx
11637 ++ movl 108(%ecx),%edx
11638 ++ xorl %edi,%eax
11639 ++ xorl %ecx,%ecx
11640 ++ xorl %edi,%edx
11641 ++ andl $0xfcfcfcfc,%eax
11642 ++ andl $0xcfcfcfcf,%edx
11643 ++ movb %al,%bl
11644 ++ movb %ah,%cl
11645 ++ rorl $4,%edx
11646 ++ xorl (%ebp,%ebx,1),%esi
11647 ++ movb %dl,%bl
11648 ++ xorl 0x200(%ebp,%ecx,1),%esi
11649 ++ movb %dh,%cl
11650 ++ shrl $16,%eax
11651 ++ xorl 0x100(%ebp,%ebx,1),%esi
11652 ++ movb %ah,%bl
11653 ++ shrl $16,%edx
11654 ++ xorl 0x300(%ebp,%ecx,1),%esi
11655 ++ movb %dh,%cl
11656 ++ andl $0xff,%eax
11657 ++ andl $0xff,%edx
11658 ++ xorl 0x600(%ebp,%ebx,1),%esi
11659 ++ xorl 0x700(%ebp,%ecx,1),%esi
11660 ++ movl (%esp),%ecx
11661 ++ xorl 0x400(%ebp,%eax,1),%esi
11662 ++ xorl 0x500(%ebp,%edx,1),%esi
11663 ++ # Round 14
11664 ++ movl 112(%ecx),%eax
11665 ++ xorl %ebx,%ebx
11666 ++ movl 116(%ecx),%edx
11667 ++ xorl %esi,%eax
11668 ++ xorl %ecx,%ecx
11669 ++ xorl %esi,%edx
11670 ++ andl $0xfcfcfcfc,%eax
11671 ++ andl $0xcfcfcfcf,%edx
11672 ++ movb %al,%bl
11673 ++ movb %ah,%cl
11674 ++ rorl $4,%edx
11675 ++ xorl (%ebp,%ebx,1),%edi
11676 ++ movb %dl,%bl
11677 ++ xorl 0x200(%ebp,%ecx,1),%edi
11678 ++ movb %dh,%cl
11679 ++ shrl $16,%eax
11680 ++ xorl 0x100(%ebp,%ebx,1),%edi
11681 ++ movb %ah,%bl
11682 ++ shrl $16,%edx
11683 ++ xorl 0x300(%ebp,%ecx,1),%edi
11684 ++ movb %dh,%cl
11685 ++ andl $0xff,%eax
11686 ++ andl $0xff,%edx
11687 ++ xorl 0x600(%ebp,%ebx,1),%edi
11688 ++ xorl 0x700(%ebp,%ecx,1),%edi
11689 ++ movl (%esp),%ecx
11690 ++ xorl 0x400(%ebp,%eax,1),%edi
11691 ++ xorl 0x500(%ebp,%edx,1),%edi
11692 ++ # Round 15
11693 ++ movl 120(%ecx),%eax
11694 ++ xorl %ebx,%ebx
11695 ++ movl 124(%ecx),%edx
11696 ++ xorl %edi,%eax
11697 ++ xorl %ecx,%ecx
11698 ++ xorl %edi,%edx
11699 ++ andl $0xfcfcfcfc,%eax
11700 ++ andl $0xcfcfcfcf,%edx
11701 ++ movb %al,%bl
11702 ++ movb %ah,%cl
11703 ++ rorl $4,%edx
11704 ++ xorl (%ebp,%ebx,1),%esi
11705 ++ movb %dl,%bl
11706 ++ xorl 0x200(%ebp,%ecx,1),%esi
11707 ++ movb %dh,%cl
11708 ++ shrl $16,%eax
11709 ++ xorl 0x100(%ebp,%ebx,1),%esi
11710 ++ movb %ah,%bl
11711 ++ shrl $16,%edx
11712 ++ xorl 0x300(%ebp,%ecx,1),%esi
11713 ++ movb %dh,%cl
11714 ++ andl $0xff,%eax
11715 ++ andl $0xff,%edx
11716 ++ xorl 0x600(%ebp,%ebx,1),%esi
11717 ++ xorl 0x700(%ebp,%ecx,1),%esi
11718 ++ movl (%esp),%ecx
11719 ++ xorl 0x400(%ebp,%eax,1),%esi
11720 ++ xorl 0x500(%ebp,%edx,1),%esi
11721 ++ addl $4,%esp
11722 ++ ret
11723 ++.align 4
11724 ++__x86_DES_decrypt:
11725 ++ pushl %ecx
11726 ++ # Round 15
11727 ++ movl 120(%ecx),%eax
11728 ++ xorl %ebx,%ebx
11729 ++ movl 124(%ecx),%edx
11730 ++ xorl %esi,%eax
11731 ++ xorl %ecx,%ecx
11732 ++ xorl %esi,%edx
11733 ++ andl $0xfcfcfcfc,%eax
11734 ++ andl $0xcfcfcfcf,%edx
11735 ++ movb %al,%bl
11736 ++ movb %ah,%cl
11737 ++ rorl $4,%edx
11738 ++ xorl (%ebp,%ebx,1),%edi
11739 ++ movb %dl,%bl
11740 ++ xorl 0x200(%ebp,%ecx,1),%edi
11741 ++ movb %dh,%cl
11742 ++ shrl $16,%eax
11743 ++ xorl 0x100(%ebp,%ebx,1),%edi
11744 ++ movb %ah,%bl
11745 ++ shrl $16,%edx
11746 ++ xorl 0x300(%ebp,%ecx,1),%edi
11747 ++ movb %dh,%cl
11748 ++ andl $0xff,%eax
11749 ++ andl $0xff,%edx
11750 ++ xorl 0x600(%ebp,%ebx,1),%edi
11751 ++ xorl 0x700(%ebp,%ecx,1),%edi
11752 ++ movl (%esp),%ecx
11753 ++ xorl 0x400(%ebp,%eax,1),%edi
11754 ++ xorl 0x500(%ebp,%edx,1),%edi
11755 ++ # Round 14
11756 ++ movl 112(%ecx),%eax
11757 ++ xorl %ebx,%ebx
11758 ++ movl 116(%ecx),%edx
11759 ++ xorl %edi,%eax
11760 ++ xorl %ecx,%ecx
11761 ++ xorl %edi,%edx
11762 ++ andl $0xfcfcfcfc,%eax
11763 ++ andl $0xcfcfcfcf,%edx
11764 ++ movb %al,%bl
11765 ++ movb %ah,%cl
11766 ++ rorl $4,%edx
11767 ++ xorl (%ebp,%ebx,1),%esi
11768 ++ movb %dl,%bl
11769 ++ xorl 0x200(%ebp,%ecx,1),%esi
11770 ++ movb %dh,%cl
11771 ++ shrl $16,%eax
11772 ++ xorl 0x100(%ebp,%ebx,1),%esi
11773 ++ movb %ah,%bl
11774 ++ shrl $16,%edx
11775 ++ xorl 0x300(%ebp,%ecx,1),%esi
11776 ++ movb %dh,%cl
11777 ++ andl $0xff,%eax
11778 ++ andl $0xff,%edx
11779 ++ xorl 0x600(%ebp,%ebx,1),%esi
11780 ++ xorl 0x700(%ebp,%ecx,1),%esi
11781 ++ movl (%esp),%ecx
11782 ++ xorl 0x400(%ebp,%eax,1),%esi
11783 ++ xorl 0x500(%ebp,%edx,1),%esi
11784 ++ # Round 13
11785 ++ movl 104(%ecx),%eax
11786 ++ xorl %ebx,%ebx
11787 ++ movl 108(%ecx),%edx
11788 ++ xorl %esi,%eax
11789 ++ xorl %ecx,%ecx
11790 ++ xorl %esi,%edx
11791 ++ andl $0xfcfcfcfc,%eax
11792 ++ andl $0xcfcfcfcf,%edx
11793 ++ movb %al,%bl
11794 ++ movb %ah,%cl
11795 ++ rorl $4,%edx
11796 ++ xorl (%ebp,%ebx,1),%edi
11797 ++ movb %dl,%bl
11798 ++ xorl 0x200(%ebp,%ecx,1),%edi
11799 ++ movb %dh,%cl
11800 ++ shrl $16,%eax
11801 ++ xorl 0x100(%ebp,%ebx,1),%edi
11802 ++ movb %ah,%bl
11803 ++ shrl $16,%edx
11804 ++ xorl 0x300(%ebp,%ecx,1),%edi
11805 ++ movb %dh,%cl
11806 ++ andl $0xff,%eax
11807 ++ andl $0xff,%edx
11808 ++ xorl 0x600(%ebp,%ebx,1),%edi
11809 ++ xorl 0x700(%ebp,%ecx,1),%edi
11810 ++ movl (%esp),%ecx
11811 ++ xorl 0x400(%ebp,%eax,1),%edi
11812 ++ xorl 0x500(%ebp,%edx,1),%edi
11813 ++ # Round 12
11814 ++ movl 96(%ecx),%eax
11815 ++ xorl %ebx,%ebx
11816 ++ movl 100(%ecx),%edx
11817 ++ xorl %edi,%eax
11818 ++ xorl %ecx,%ecx
11819 ++ xorl %edi,%edx
11820 ++ andl $0xfcfcfcfc,%eax
11821 ++ andl $0xcfcfcfcf,%edx
11822 ++ movb %al,%bl
11823 ++ movb %ah,%cl
11824 ++ rorl $4,%edx
11825 ++ xorl (%ebp,%ebx,1),%esi
11826 ++ movb %dl,%bl
11827 ++ xorl 0x200(%ebp,%ecx,1),%esi
11828 ++ movb %dh,%cl
11829 ++ shrl $16,%eax
11830 ++ xorl 0x100(%ebp,%ebx,1),%esi
11831 ++ movb %ah,%bl
11832 ++ shrl $16,%edx
11833 ++ xorl 0x300(%ebp,%ecx,1),%esi
11834 ++ movb %dh,%cl
11835 ++ andl $0xff,%eax
11836 ++ andl $0xff,%edx
11837 ++ xorl 0x600(%ebp,%ebx,1),%esi
11838 ++ xorl 0x700(%ebp,%ecx,1),%esi
11839 ++ movl (%esp),%ecx
11840 ++ xorl 0x400(%ebp,%eax,1),%esi
11841 ++ xorl 0x500(%ebp,%edx,1),%esi
11842 ++ # Round 11
11843 ++ movl 88(%ecx),%eax
11844 ++ xorl %ebx,%ebx
11845 ++ movl 92(%ecx),%edx
11846 ++ xorl %esi,%eax
11847 ++ xorl %ecx,%ecx
11848 ++ xorl %esi,%edx
11849 ++ andl $0xfcfcfcfc,%eax
11850 ++ andl $0xcfcfcfcf,%edx
11851 ++ movb %al,%bl
11852 ++ movb %ah,%cl
11853 ++ rorl $4,%edx
11854 ++ xorl (%ebp,%ebx,1),%edi
11855 ++ movb %dl,%bl
11856 ++ xorl 0x200(%ebp,%ecx,1),%edi
11857 ++ movb %dh,%cl
11858 ++ shrl $16,%eax
11859 ++ xorl 0x100(%ebp,%ebx,1),%edi
11860 ++ movb %ah,%bl
11861 ++ shrl $16,%edx
11862 ++ xorl 0x300(%ebp,%ecx,1),%edi
11863 ++ movb %dh,%cl
11864 ++ andl $0xff,%eax
11865 ++ andl $0xff,%edx
11866 ++ xorl 0x600(%ebp,%ebx,1),%edi
11867 ++ xorl 0x700(%ebp,%ecx,1),%edi
11868 ++ movl (%esp),%ecx
11869 ++ xorl 0x400(%ebp,%eax,1),%edi
11870 ++ xorl 0x500(%ebp,%edx,1),%edi
11871 ++ # Round 10
11872 ++ movl 80(%ecx),%eax
11873 ++ xorl %ebx,%ebx
11874 ++ movl 84(%ecx),%edx
11875 ++ xorl %edi,%eax
11876 ++ xorl %ecx,%ecx
11877 ++ xorl %edi,%edx
11878 ++ andl $0xfcfcfcfc,%eax
11879 ++ andl $0xcfcfcfcf,%edx
11880 ++ movb %al,%bl
11881 ++ movb %ah,%cl
11882 ++ rorl $4,%edx
11883 ++ xorl (%ebp,%ebx,1),%esi
11884 ++ movb %dl,%bl
11885 ++ xorl 0x200(%ebp,%ecx,1),%esi
11886 ++ movb %dh,%cl
11887 ++ shrl $16,%eax
11888 ++ xorl 0x100(%ebp,%ebx,1),%esi
11889 ++ movb %ah,%bl
11890 ++ shrl $16,%edx
11891 ++ xorl 0x300(%ebp,%ecx,1),%esi
11892 ++ movb %dh,%cl
11893 ++ andl $0xff,%eax
11894 ++ andl $0xff,%edx
11895 ++ xorl 0x600(%ebp,%ebx,1),%esi
11896 ++ xorl 0x700(%ebp,%ecx,1),%esi
11897 ++ movl (%esp),%ecx
11898 ++ xorl 0x400(%ebp,%eax,1),%esi
11899 ++ xorl 0x500(%ebp,%edx,1),%esi
11900 ++ # Round 9
11901 ++ movl 72(%ecx),%eax
11902 ++ xorl %ebx,%ebx
11903 ++ movl 76(%ecx),%edx
11904 ++ xorl %esi,%eax
11905 ++ xorl %ecx,%ecx
11906 ++ xorl %esi,%edx
11907 ++ andl $0xfcfcfcfc,%eax
11908 ++ andl $0xcfcfcfcf,%edx
11909 ++ movb %al,%bl
11910 ++ movb %ah,%cl
11911 ++ rorl $4,%edx
11912 ++ xorl (%ebp,%ebx,1),%edi
11913 ++ movb %dl,%bl
11914 ++ xorl 0x200(%ebp,%ecx,1),%edi
11915 ++ movb %dh,%cl
11916 ++ shrl $16,%eax
11917 ++ xorl 0x100(%ebp,%ebx,1),%edi
11918 ++ movb %ah,%bl
11919 ++ shrl $16,%edx
11920 ++ xorl 0x300(%ebp,%ecx,1),%edi
11921 ++ movb %dh,%cl
11922 ++ andl $0xff,%eax
11923 ++ andl $0xff,%edx
11924 ++ xorl 0x600(%ebp,%ebx,1),%edi
11925 ++ xorl 0x700(%ebp,%ecx,1),%edi
11926 ++ movl (%esp),%ecx
11927 ++ xorl 0x400(%ebp,%eax,1),%edi
11928 ++ xorl 0x500(%ebp,%edx,1),%edi
11929 ++ # Round 8
11930 ++ movl 64(%ecx),%eax
11931 ++ xorl %ebx,%ebx
11932 ++ movl 68(%ecx),%edx
11933 ++ xorl %edi,%eax
11934 ++ xorl %ecx,%ecx
11935 ++ xorl %edi,%edx
11936 ++ andl $0xfcfcfcfc,%eax
11937 ++ andl $0xcfcfcfcf,%edx
11938 ++ movb %al,%bl
11939 ++ movb %ah,%cl
11940 ++ rorl $4,%edx
11941 ++ xorl (%ebp,%ebx,1),%esi
11942 ++ movb %dl,%bl
11943 ++ xorl 0x200(%ebp,%ecx,1),%esi
11944 ++ movb %dh,%cl
11945 ++ shrl $16,%eax
11946 ++ xorl 0x100(%ebp,%ebx,1),%esi
11947 ++ movb %ah,%bl
11948 ++ shrl $16,%edx
11949 ++ xorl 0x300(%ebp,%ecx,1),%esi
11950 ++ movb %dh,%cl
11951 ++ andl $0xff,%eax
11952 ++ andl $0xff,%edx
11953 ++ xorl 0x600(%ebp,%ebx,1),%esi
11954 ++ xorl 0x700(%ebp,%ecx,1),%esi
11955 ++ movl (%esp),%ecx
11956 ++ xorl 0x400(%ebp,%eax,1),%esi
11957 ++ xorl 0x500(%ebp,%edx,1),%esi
11958 ++ # Round 7
11959 ++ movl 56(%ecx),%eax
11960 ++ xorl %ebx,%ebx
11961 ++ movl 60(%ecx),%edx
11962 ++ xorl %esi,%eax
11963 ++ xorl %ecx,%ecx
11964 ++ xorl %esi,%edx
11965 ++ andl $0xfcfcfcfc,%eax
11966 ++ andl $0xcfcfcfcf,%edx
11967 ++ movb %al,%bl
11968 ++ movb %ah,%cl
11969 ++ rorl $4,%edx
11970 ++ xorl (%ebp,%ebx,1),%edi
11971 ++ movb %dl,%bl
11972 ++ xorl 0x200(%ebp,%ecx,1),%edi
11973 ++ movb %dh,%cl
11974 ++ shrl $16,%eax
11975 ++ xorl 0x100(%ebp,%ebx,1),%edi
11976 ++ movb %ah,%bl
11977 ++ shrl $16,%edx
11978 ++ xorl 0x300(%ebp,%ecx,1),%edi
11979 ++ movb %dh,%cl
11980 ++ andl $0xff,%eax
11981 ++ andl $0xff,%edx
11982 ++ xorl 0x600(%ebp,%ebx,1),%edi
11983 ++ xorl 0x700(%ebp,%ecx,1),%edi
11984 ++ movl (%esp),%ecx
11985 ++ xorl 0x400(%ebp,%eax,1),%edi
11986 ++ xorl 0x500(%ebp,%edx,1),%edi
11987 ++ # Round 6
11988 ++ movl 48(%ecx),%eax
11989 ++ xorl %ebx,%ebx
11990 ++ movl 52(%ecx),%edx
11991 ++ xorl %edi,%eax
11992 ++ xorl %ecx,%ecx
11993 ++ xorl %edi,%edx
11994 ++ andl $0xfcfcfcfc,%eax
11995 ++ andl $0xcfcfcfcf,%edx
11996 ++ movb %al,%bl
11997 ++ movb %ah,%cl
11998 ++ rorl $4,%edx
11999 ++ xorl (%ebp,%ebx,1),%esi
12000 ++ movb %dl,%bl
12001 ++ xorl 0x200(%ebp,%ecx,1),%esi
12002 ++ movb %dh,%cl
12003 ++ shrl $16,%eax
12004 ++ xorl 0x100(%ebp,%ebx,1),%esi
12005 ++ movb %ah,%bl
12006 ++ shrl $16,%edx
12007 ++ xorl 0x300(%ebp,%ecx,1),%esi
12008 ++ movb %dh,%cl
12009 ++ andl $0xff,%eax
12010 ++ andl $0xff,%edx
12011 ++ xorl 0x600(%ebp,%ebx,1),%esi
12012 ++ xorl 0x700(%ebp,%ecx,1),%esi
12013 ++ movl (%esp),%ecx
12014 ++ xorl 0x400(%ebp,%eax,1),%esi
12015 ++ xorl 0x500(%ebp,%edx,1),%esi
12016 ++ # Round 5
12017 ++ movl 40(%ecx),%eax
12018 ++ xorl %ebx,%ebx
12019 ++ movl 44(%ecx),%edx
12020 ++ xorl %esi,%eax
12021 ++ xorl %ecx,%ecx
12022 ++ xorl %esi,%edx
12023 ++ andl $0xfcfcfcfc,%eax
12024 ++ andl $0xcfcfcfcf,%edx
12025 ++ movb %al,%bl
12026 ++ movb %ah,%cl
12027 ++ rorl $4,%edx
12028 ++ xorl (%ebp,%ebx,1),%edi
12029 ++ movb %dl,%bl
12030 ++ xorl 0x200(%ebp,%ecx,1),%edi
12031 ++ movb %dh,%cl
12032 ++ shrl $16,%eax
12033 ++ xorl 0x100(%ebp,%ebx,1),%edi
12034 ++ movb %ah,%bl
12035 ++ shrl $16,%edx
12036 ++ xorl 0x300(%ebp,%ecx,1),%edi
12037 ++ movb %dh,%cl
12038 ++ andl $0xff,%eax
12039 ++ andl $0xff,%edx
12040 ++ xorl 0x600(%ebp,%ebx,1),%edi
12041 ++ xorl 0x700(%ebp,%ecx,1),%edi
12042 ++ movl (%esp),%ecx
12043 ++ xorl 0x400(%ebp,%eax,1),%edi
12044 ++ xorl 0x500(%ebp,%edx,1),%edi
12045 ++ # Round 4
12046 ++ movl 32(%ecx),%eax
12047 ++ xorl %ebx,%ebx
12048 ++ movl 36(%ecx),%edx
12049 ++ xorl %edi,%eax
12050 ++ xorl %ecx,%ecx
12051 ++ xorl %edi,%edx
12052 ++ andl $0xfcfcfcfc,%eax
12053 ++ andl $0xcfcfcfcf,%edx
12054 ++ movb %al,%bl
12055 ++ movb %ah,%cl
12056 ++ rorl $4,%edx
12057 ++ xorl (%ebp,%ebx,1),%esi
12058 ++ movb %dl,%bl
12059 ++ xorl 0x200(%ebp,%ecx,1),%esi
12060 ++ movb %dh,%cl
12061 ++ shrl $16,%eax
12062 ++ xorl 0x100(%ebp,%ebx,1),%esi
12063 ++ movb %ah,%bl
12064 ++ shrl $16,%edx
12065 ++ xorl 0x300(%ebp,%ecx,1),%esi
12066 ++ movb %dh,%cl
12067 ++ andl $0xff,%eax
12068 ++ andl $0xff,%edx
12069 ++ xorl 0x600(%ebp,%ebx,1),%esi
12070 ++ xorl 0x700(%ebp,%ecx,1),%esi
12071 ++ movl (%esp),%ecx
12072 ++ xorl 0x400(%ebp,%eax,1),%esi
12073 ++ xorl 0x500(%ebp,%edx,1),%esi
12074 ++ # Round 3
12075 ++ movl 24(%ecx),%eax
12076 ++ xorl %ebx,%ebx
12077 ++ movl 28(%ecx),%edx
12078 ++ xorl %esi,%eax
12079 ++ xorl %ecx,%ecx
12080 ++ xorl %esi,%edx
12081 ++ andl $0xfcfcfcfc,%eax
12082 ++ andl $0xcfcfcfcf,%edx
12083 ++ movb %al,%bl
12084 ++ movb %ah,%cl
12085 ++ rorl $4,%edx
12086 ++ xorl (%ebp,%ebx,1),%edi
12087 ++ movb %dl,%bl
12088 ++ xorl 0x200(%ebp,%ecx,1),%edi
12089 ++ movb %dh,%cl
12090 ++ shrl $16,%eax
12091 ++ xorl 0x100(%ebp,%ebx,1),%edi
12092 ++ movb %ah,%bl
12093 ++ shrl $16,%edx
12094 ++ xorl 0x300(%ebp,%ecx,1),%edi
12095 ++ movb %dh,%cl
12096 ++ andl $0xff,%eax
12097 ++ andl $0xff,%edx
12098 ++ xorl 0x600(%ebp,%ebx,1),%edi
12099 ++ xorl 0x700(%ebp,%ecx,1),%edi
12100 ++ movl (%esp),%ecx
12101 ++ xorl 0x400(%ebp,%eax,1),%edi
12102 ++ xorl 0x500(%ebp,%edx,1),%edi
12103 ++ # Round 2
12104 ++ movl 16(%ecx),%eax
12105 ++ xorl %ebx,%ebx
12106 ++ movl 20(%ecx),%edx
12107 ++ xorl %edi,%eax
12108 ++ xorl %ecx,%ecx
12109 ++ xorl %edi,%edx
12110 ++ andl $0xfcfcfcfc,%eax
12111 ++ andl $0xcfcfcfcf,%edx
12112 ++ movb %al,%bl
12113 ++ movb %ah,%cl
12114 ++ rorl $4,%edx
12115 ++ xorl (%ebp,%ebx,1),%esi
12116 ++ movb %dl,%bl
12117 ++ xorl 0x200(%ebp,%ecx,1),%esi
12118 ++ movb %dh,%cl
12119 ++ shrl $16,%eax
12120 ++ xorl 0x100(%ebp,%ebx,1),%esi
12121 ++ movb %ah,%bl
12122 ++ shrl $16,%edx
12123 ++ xorl 0x300(%ebp,%ecx,1),%esi
12124 ++ movb %dh,%cl
12125 ++ andl $0xff,%eax
12126 ++ andl $0xff,%edx
12127 ++ xorl 0x600(%ebp,%ebx,1),%esi
12128 ++ xorl 0x700(%ebp,%ecx,1),%esi
12129 ++ movl (%esp),%ecx
12130 ++ xorl 0x400(%ebp,%eax,1),%esi
12131 ++ xorl 0x500(%ebp,%edx,1),%esi
12132 ++ # Round 1
12133 ++ movl 8(%ecx),%eax
12134 ++ xorl %ebx,%ebx
12135 ++ movl 12(%ecx),%edx
12136 ++ xorl %esi,%eax
12137 ++ xorl %ecx,%ecx
12138 ++ xorl %esi,%edx
12139 ++ andl $0xfcfcfcfc,%eax
12140 ++ andl $0xcfcfcfcf,%edx
12141 ++ movb %al,%bl
12142 ++ movb %ah,%cl
12143 ++ rorl $4,%edx
12144 ++ xorl (%ebp,%ebx,1),%edi
12145 ++ movb %dl,%bl
12146 ++ xorl 0x200(%ebp,%ecx,1),%edi
12147 ++ movb %dh,%cl
12148 ++ shrl $16,%eax
12149 ++ xorl 0x100(%ebp,%ebx,1),%edi
12150 ++ movb %ah,%bl
12151 ++ shrl $16,%edx
12152 ++ xorl 0x300(%ebp,%ecx,1),%edi
12153 ++ movb %dh,%cl
12154 ++ andl $0xff,%eax
12155 ++ andl $0xff,%edx
12156 ++ xorl 0x600(%ebp,%ebx,1),%edi
12157 ++ xorl 0x700(%ebp,%ecx,1),%edi
12158 ++ movl (%esp),%ecx
12159 ++ xorl 0x400(%ebp,%eax,1),%edi
12160 ++ xorl 0x500(%ebp,%edx,1),%edi
12161 ++ # Round 0
12162 ++ movl (%ecx),%eax
12163 ++ xorl %ebx,%ebx
12164 ++ movl 4(%ecx),%edx
12165 ++ xorl %edi,%eax
12166 ++ xorl %ecx,%ecx
12167 ++ xorl %edi,%edx
12168 ++ andl $0xfcfcfcfc,%eax
12169 ++ andl $0xcfcfcfcf,%edx
12170 ++ movb %al,%bl
12171 ++ movb %ah,%cl
12172 ++ rorl $4,%edx
12173 ++ xorl (%ebp,%ebx,1),%esi
12174 ++ movb %dl,%bl
12175 ++ xorl 0x200(%ebp,%ecx,1),%esi
12176 ++ movb %dh,%cl
12177 ++ shrl $16,%eax
12178 ++ xorl 0x100(%ebp,%ebx,1),%esi
12179 ++ movb %ah,%bl
12180 ++ shrl $16,%edx
12181 ++ xorl 0x300(%ebp,%ecx,1),%esi
12182 ++ movb %dh,%cl
12183 ++ andl $0xff,%eax
12184 ++ andl $0xff,%edx
12185 ++ xorl 0x600(%ebp,%ebx,1),%esi
12186 ++ xorl 0x700(%ebp,%ecx,1),%esi
12187 ++ movl (%esp),%ecx
12188 ++ xorl 0x400(%ebp,%eax,1),%esi
12189 ++ xorl 0x500(%ebp,%edx,1),%esi
12190 ++ addl $4,%esp
12191 ++ ret
12192 ++.globl _DES_encrypt1
12193 ++.align 4
12194 ++_DES_encrypt1:
12195 ++L_DES_encrypt1_begin:
12196 ++ pushl %esi
12197 ++ pushl %edi
12198 ++
12199 ++ # Load the 2 words
12200 ++ movl 12(%esp),%esi
12201 ++ xorl %ecx,%ecx
12202 ++ pushl %ebx
12203 ++ pushl %ebp
12204 ++ movl (%esi),%eax
12205 ++ movl 28(%esp),%ebx
12206 ++ movl 4(%esi),%edi
12207 ++
12208 ++ # IP
12209 ++ roll $4,%eax
12210 ++ movl %eax,%esi
12211 ++ xorl %edi,%eax
12212 ++ andl $0xf0f0f0f0,%eax
12213 ++ xorl %eax,%esi
12214 ++ xorl %eax,%edi
12215 ++
12216 ++ roll $20,%edi
12217 ++ movl %edi,%eax
12218 ++ xorl %esi,%edi
12219 ++ andl $0xfff0000f,%edi
12220 ++ xorl %edi,%eax
12221 ++ xorl %edi,%esi
12222 ++
12223 ++ roll $14,%eax
12224 ++ movl %eax,%edi
12225 ++ xorl %esi,%eax
12226 ++ andl $0x33333333,%eax
12227 ++ xorl %eax,%edi
12228 ++ xorl %eax,%esi
12229 ++
12230 ++ roll $22,%esi
12231 ++ movl %esi,%eax
12232 ++ xorl %edi,%esi
12233 ++ andl $0x03fc03fc,%esi
12234 ++ xorl %esi,%eax
12235 ++ xorl %esi,%edi
12236 ++
12237 ++ roll $9,%eax
12238 ++ movl %eax,%esi
12239 ++ xorl %edi,%eax
12240 ++ andl $0xaaaaaaaa,%eax
12241 ++ xorl %eax,%esi
12242 ++ xorl %eax,%edi
12243 ++
12244 ++ roll $1,%edi
12245 ++ call L000pic_point
12246 ++L000pic_point:
12247 ++ popl %ebp
12248 ++ leal _DES_SPtrans-L000pic_point(%ebp),%ebp
12249 ++ movl 24(%esp),%ecx
12250 ++ cmpl $0,%ebx
12251 ++ je L001decrypt
12252 ++ call __x86_DES_encrypt
12253 ++ jmp L002done
12254 ++L001decrypt:
12255 ++ call __x86_DES_decrypt
12256 ++L002done:
12257 ++
12258 ++ # FP
12259 ++ movl 20(%esp),%edx
12260 ++ rorl $1,%esi
12261 ++ movl %edi,%eax
12262 ++ xorl %esi,%edi
12263 ++ andl $0xaaaaaaaa,%edi
12264 ++ xorl %edi,%eax
12265 ++ xorl %edi,%esi
12266 ++
12267 ++ roll $23,%eax
12268 ++ movl %eax,%edi
12269 ++ xorl %esi,%eax
12270 ++ andl $0x03fc03fc,%eax
12271 ++ xorl %eax,%edi
12272 ++ xorl %eax,%esi
12273 ++
12274 ++ roll $10,%edi
12275 ++ movl %edi,%eax
12276 ++ xorl %esi,%edi
12277 ++ andl $0x33333333,%edi
12278 ++ xorl %edi,%eax
12279 ++ xorl %edi,%esi
12280 ++
12281 ++ roll $18,%esi
12282 ++ movl %esi,%edi
12283 ++ xorl %eax,%esi
12284 ++ andl $0xfff0000f,%esi
12285 ++ xorl %esi,%edi
12286 ++ xorl %esi,%eax
12287 ++
12288 ++ roll $12,%edi
12289 ++ movl %edi,%esi
12290 ++ xorl %eax,%edi
12291 ++ andl $0xf0f0f0f0,%edi
12292 ++ xorl %edi,%esi
12293 ++ xorl %edi,%eax
12294 ++
12295 ++ rorl $4,%eax
12296 ++ movl %eax,(%edx)
12297 ++ movl %esi,4(%edx)
12298 ++ popl %ebp
12299 ++ popl %ebx
12300 ++ popl %edi
12301 ++ popl %esi
12302 ++ ret
12303 ++.globl _DES_encrypt2
12304 ++.align 4
12305 ++_DES_encrypt2:
12306 ++L_DES_encrypt2_begin:
12307 ++ pushl %esi
12308 ++ pushl %edi
12309 ++
12310 ++ # Load the 2 words
12311 ++ movl 12(%esp),%eax
12312 ++ xorl %ecx,%ecx
12313 ++ pushl %ebx
12314 ++ pushl %ebp
12315 ++ movl (%eax),%esi
12316 ++ movl 28(%esp),%ebx
12317 ++ roll $3,%esi
12318 ++ movl 4(%eax),%edi
12319 ++ roll $3,%edi
12320 ++ call L003pic_point
12321 ++L003pic_point:
12322 ++ popl %ebp
12323 ++ leal _DES_SPtrans-L003pic_point(%ebp),%ebp
12324 ++ movl 24(%esp),%ecx
12325 ++ cmpl $0,%ebx
12326 ++ je L004decrypt
12327 ++ call __x86_DES_encrypt
12328 ++ jmp L005done
12329 ++L004decrypt:
12330 ++ call __x86_DES_decrypt
12331 ++L005done:
12332 ++
12333 ++ # Fixup
12334 ++ rorl $3,%edi
12335 ++ movl 20(%esp),%eax
12336 ++ rorl $3,%esi
12337 ++ movl %edi,(%eax)
12338 ++ movl %esi,4(%eax)
12339 ++ popl %ebp
12340 ++ popl %ebx
12341 ++ popl %edi
12342 ++ popl %esi
12343 ++ ret
12344 ++.globl _DES_encrypt3
12345 ++.align 4
12346 ++_DES_encrypt3:
12347 ++L_DES_encrypt3_begin:
12348 ++ pushl %ebx
12349 ++ movl 8(%esp),%ebx
12350 ++ pushl %ebp
12351 ++ pushl %esi
12352 ++ pushl %edi
12353 ++
12354 ++ # Load the data words
12355 ++ movl (%ebx),%edi
12356 ++ movl 4(%ebx),%esi
12357 ++ subl $12,%esp
12358 ++
12359 ++ # IP
12360 ++ roll $4,%edi
12361 ++ movl %edi,%edx
12362 ++ xorl %esi,%edi
12363 ++ andl $0xf0f0f0f0,%edi
12364 ++ xorl %edi,%edx
12365 ++ xorl %edi,%esi
12366 ++
12367 ++ roll $20,%esi
12368 ++ movl %esi,%edi
12369 ++ xorl %edx,%esi
12370 ++ andl $0xfff0000f,%esi
12371 ++ xorl %esi,%edi
12372 ++ xorl %esi,%edx
12373 ++
12374 ++ roll $14,%edi
12375 ++ movl %edi,%esi
12376 ++ xorl %edx,%edi
12377 ++ andl $0x33333333,%edi
12378 ++ xorl %edi,%esi
12379 ++ xorl %edi,%edx
12380 ++
12381 ++ roll $22,%edx
12382 ++ movl %edx,%edi
12383 ++ xorl %esi,%edx
12384 ++ andl $0x03fc03fc,%edx
12385 ++ xorl %edx,%edi
12386 ++ xorl %edx,%esi
12387 ++
12388 ++ roll $9,%edi
12389 ++ movl %edi,%edx
12390 ++ xorl %esi,%edi
12391 ++ andl $0xaaaaaaaa,%edi
12392 ++ xorl %edi,%edx
12393 ++ xorl %edi,%esi
12394 ++
12395 ++ rorl $3,%edx
12396 ++ rorl $2,%esi
12397 ++ movl %esi,4(%ebx)
12398 ++ movl 36(%esp),%eax
12399 ++ movl %edx,(%ebx)
12400 ++ movl 40(%esp),%edi
12401 ++ movl 44(%esp),%esi
12402 ++ movl $1,8(%esp)
12403 ++ movl %eax,4(%esp)
12404 ++ movl %ebx,(%esp)
12405 ++ call L_DES_encrypt2_begin
12406 ++ movl $0,8(%esp)
12407 ++ movl %edi,4(%esp)
12408 ++ movl %ebx,(%esp)
12409 ++ call L_DES_encrypt2_begin
12410 ++ movl $1,8(%esp)
12411 ++ movl %esi,4(%esp)
12412 ++ movl %ebx,(%esp)
12413 ++ call L_DES_encrypt2_begin
12414 ++ addl $12,%esp
12415 ++ movl (%ebx),%edi
12416 ++ movl 4(%ebx),%esi
12417 ++
12418 ++ # FP
12419 ++ roll $2,%esi
12420 ++ roll $3,%edi
12421 ++ movl %edi,%eax
12422 ++ xorl %esi,%edi
12423 ++ andl $0xaaaaaaaa,%edi
12424 ++ xorl %edi,%eax
12425 ++ xorl %edi,%esi
12426 ++
12427 ++ roll $23,%eax
12428 ++ movl %eax,%edi
12429 ++ xorl %esi,%eax
12430 ++ andl $0x03fc03fc,%eax
12431 ++ xorl %eax,%edi
12432 ++ xorl %eax,%esi
12433 ++
12434 ++ roll $10,%edi
12435 ++ movl %edi,%eax
12436 ++ xorl %esi,%edi
12437 ++ andl $0x33333333,%edi
12438 ++ xorl %edi,%eax
12439 ++ xorl %edi,%esi
12440 ++
12441 ++ roll $18,%esi
12442 ++ movl %esi,%edi
12443 ++ xorl %eax,%esi
12444 ++ andl $0xfff0000f,%esi
12445 ++ xorl %esi,%edi
12446 ++ xorl %esi,%eax
12447 ++
12448 ++ roll $12,%edi
12449 ++ movl %edi,%esi
12450 ++ xorl %eax,%edi
12451 ++ andl $0xf0f0f0f0,%edi
12452 ++ xorl %edi,%esi
12453 ++ xorl %edi,%eax
12454 ++
12455 ++ rorl $4,%eax
12456 ++ movl %eax,(%ebx)
12457 ++ movl %esi,4(%ebx)
12458 ++ popl %edi
12459 ++ popl %esi
12460 ++ popl %ebp
12461 ++ popl %ebx
12462 ++ ret
12463 ++.globl _DES_decrypt3
12464 ++.align 4
12465 ++_DES_decrypt3:
12466 ++L_DES_decrypt3_begin:
12467 ++ pushl %ebx
12468 ++ movl 8(%esp),%ebx
12469 ++ pushl %ebp
12470 ++ pushl %esi
12471 ++ pushl %edi
12472 ++
12473 ++ # Load the data words
12474 ++ movl (%ebx),%edi
12475 ++ movl 4(%ebx),%esi
12476 ++ subl $12,%esp
12477 ++
12478 ++ # IP
12479 ++ roll $4,%edi
12480 ++ movl %edi,%edx
12481 ++ xorl %esi,%edi
12482 ++ andl $0xf0f0f0f0,%edi
12483 ++ xorl %edi,%edx
12484 ++ xorl %edi,%esi
12485 ++
12486 ++ roll $20,%esi
12487 ++ movl %esi,%edi
12488 ++ xorl %edx,%esi
12489 ++ andl $0xfff0000f,%esi
12490 ++ xorl %esi,%edi
12491 ++ xorl %esi,%edx
12492 ++
12493 ++ roll $14,%edi
12494 ++ movl %edi,%esi
12495 ++ xorl %edx,%edi
12496 ++ andl $0x33333333,%edi
12497 ++ xorl %edi,%esi
12498 ++ xorl %edi,%edx
12499 ++
12500 ++ roll $22,%edx
12501 ++ movl %edx,%edi
12502 ++ xorl %esi,%edx
12503 ++ andl $0x03fc03fc,%edx
12504 ++ xorl %edx,%edi
12505 ++ xorl %edx,%esi
12506 ++
12507 ++ roll $9,%edi
12508 ++ movl %edi,%edx
12509 ++ xorl %esi,%edi
12510 ++ andl $0xaaaaaaaa,%edi
12511 ++ xorl %edi,%edx
12512 ++ xorl %edi,%esi
12513 ++
12514 ++ rorl $3,%edx
12515 ++ rorl $2,%esi
12516 ++ movl %esi,4(%ebx)
12517 ++ movl 36(%esp),%esi
12518 ++ movl %edx,(%ebx)
12519 ++ movl 40(%esp),%edi
12520 ++ movl 44(%esp),%eax
12521 ++ movl $0,8(%esp)
12522 ++ movl %eax,4(%esp)
12523 ++ movl %ebx,(%esp)
12524 ++ call L_DES_encrypt2_begin
12525 ++ movl $1,8(%esp)
12526 ++ movl %edi,4(%esp)
12527 ++ movl %ebx,(%esp)
12528 ++ call L_DES_encrypt2_begin
12529 ++ movl $0,8(%esp)
12530 ++ movl %esi,4(%esp)
12531 ++ movl %ebx,(%esp)
12532 ++ call L_DES_encrypt2_begin
12533 ++ addl $12,%esp
12534 ++ movl (%ebx),%edi
12535 ++ movl 4(%ebx),%esi
12536 ++
12537 ++ # FP
12538 ++ roll $2,%esi
12539 ++ roll $3,%edi
12540 ++ movl %edi,%eax
12541 ++ xorl %esi,%edi
12542 ++ andl $0xaaaaaaaa,%edi
12543 ++ xorl %edi,%eax
12544 ++ xorl %edi,%esi
12545 ++
12546 ++ roll $23,%eax
12547 ++ movl %eax,%edi
12548 ++ xorl %esi,%eax
12549 ++ andl $0x03fc03fc,%eax
12550 ++ xorl %eax,%edi
12551 ++ xorl %eax,%esi
12552 ++
12553 ++ roll $10,%edi
12554 ++ movl %edi,%eax
12555 ++ xorl %esi,%edi
12556 ++ andl $0x33333333,%edi
12557 ++ xorl %edi,%eax
12558 ++ xorl %edi,%esi
12559 ++
12560 ++ roll $18,%esi
12561 ++ movl %esi,%edi
12562 ++ xorl %eax,%esi
12563 ++ andl $0xfff0000f,%esi
12564 ++ xorl %esi,%edi
12565 ++ xorl %esi,%eax
12566 ++
12567 ++ roll $12,%edi
12568 ++ movl %edi,%esi
12569 ++ xorl %eax,%edi
12570 ++ andl $0xf0f0f0f0,%edi
12571 ++ xorl %edi,%esi
12572 ++ xorl %edi,%eax
12573 ++
12574 ++ rorl $4,%eax
12575 ++ movl %eax,(%ebx)
12576 ++ movl %esi,4(%ebx)
12577 ++ popl %edi
12578 ++ popl %esi
12579 ++ popl %ebp
12580 ++ popl %ebx
12581 ++ ret
12582 ++.globl _DES_ncbc_encrypt
12583 ++.align 4
12584 ++_DES_ncbc_encrypt:
12585 ++L_DES_ncbc_encrypt_begin:
12586 ++
12587 ++ pushl %ebp
12588 ++ pushl %ebx
12589 ++ pushl %esi
12590 ++ pushl %edi
12591 ++ movl 28(%esp),%ebp
12592 ++ # getting iv ptr from parameter 4
12593 ++ movl 36(%esp),%ebx
12594 ++ movl (%ebx),%esi
12595 ++ movl 4(%ebx),%edi
12596 ++ pushl %edi
12597 ++ pushl %esi
12598 ++ pushl %edi
12599 ++ pushl %esi
12600 ++ movl %esp,%ebx
12601 ++ movl 36(%esp),%esi
12602 ++ movl 40(%esp),%edi
12603 ++ # getting encrypt flag from parameter 5
12604 ++ movl 56(%esp),%ecx
12605 ++ # get and push parameter 5
12606 ++ pushl %ecx
12607 ++ # get and push parameter 3
12608 ++ movl 52(%esp),%eax
12609 ++ pushl %eax
12610 ++ pushl %ebx
12611 ++ cmpl $0,%ecx
12612 ++ jz L006decrypt
12613 ++ andl $4294967288,%ebp
12614 ++ movl 12(%esp),%eax
12615 ++ movl 16(%esp),%ebx
12616 ++ jz L007encrypt_finish
12617 ++L008encrypt_loop:
12618 ++ movl (%esi),%ecx
12619 ++ movl 4(%esi),%edx
12620 ++ xorl %ecx,%eax
12621 ++ xorl %edx,%ebx
12622 ++ movl %eax,12(%esp)
12623 ++ movl %ebx,16(%esp)
12624 ++ call L_DES_encrypt1_begin
12625 ++ movl 12(%esp),%eax
12626 ++ movl 16(%esp),%ebx
12627 ++ movl %eax,(%edi)
12628 ++ movl %ebx,4(%edi)
12629 ++ addl $8,%esi
12630 ++ addl $8,%edi
12631 ++ subl $8,%ebp
12632 ++ jnz L008encrypt_loop
12633 ++L007encrypt_finish:
12634 ++ movl 56(%esp),%ebp
12635 ++ andl $7,%ebp
12636 ++ jz L009finish
12637 ++ call L010PIC_point
12638 ++L010PIC_point:
12639 ++ popl %edx
12640 ++ leal L011cbc_enc_jmp_table-L010PIC_point(%edx),%ecx
12641 ++ movl (%ecx,%ebp,4),%ebp
12642 ++ addl %edx,%ebp
12643 ++ xorl %ecx,%ecx
12644 ++ xorl %edx,%edx
12645 ++ jmp *%ebp
12646 ++L012ej7:
12647 ++ movb 6(%esi),%dh
12648 ++ shll $8,%edx
12649 ++L013ej6:
12650 ++ movb 5(%esi),%dh
12651 ++L014ej5:
12652 ++ movb 4(%esi),%dl
12653 ++L015ej4:
12654 ++ movl (%esi),%ecx
12655 ++ jmp L016ejend
12656 ++L017ej3:
12657 ++ movb 2(%esi),%ch
12658 ++ shll $8,%ecx
12659 ++L018ej2:
12660 ++ movb 1(%esi),%ch
12661 ++L019ej1:
12662 ++ movb (%esi),%cl
12663 ++L016ejend:
12664 ++ xorl %ecx,%eax
12665 ++ xorl %edx,%ebx
12666 ++ movl %eax,12(%esp)
12667 ++ movl %ebx,16(%esp)
12668 ++ call L_DES_encrypt1_begin
12669 ++ movl 12(%esp),%eax
12670 ++ movl 16(%esp),%ebx
12671 ++ movl %eax,(%edi)
12672 ++ movl %ebx,4(%edi)
12673 ++ jmp L009finish
12674 ++L006decrypt:
12675 ++ andl $4294967288,%ebp
12676 ++ movl 20(%esp),%eax
12677 ++ movl 24(%esp),%ebx
12678 ++ jz L020decrypt_finish
12679 ++L021decrypt_loop:
12680 ++ movl (%esi),%eax
12681 ++ movl 4(%esi),%ebx
12682 ++ movl %eax,12(%esp)
12683 ++ movl %ebx,16(%esp)
12684 ++ call L_DES_encrypt1_begin
12685 ++ movl 12(%esp),%eax
12686 ++ movl 16(%esp),%ebx
12687 ++ movl 20(%esp),%ecx
12688 ++ movl 24(%esp),%edx
12689 ++ xorl %eax,%ecx
12690 ++ xorl %ebx,%edx
12691 ++ movl (%esi),%eax
12692 ++ movl 4(%esi),%ebx
12693 ++ movl %ecx,(%edi)
12694 ++ movl %edx,4(%edi)
12695 ++ movl %eax,20(%esp)
12696 ++ movl %ebx,24(%esp)
12697 ++ addl $8,%esi
12698 ++ addl $8,%edi
12699 ++ subl $8,%ebp
12700 ++ jnz L021decrypt_loop
12701 ++L020decrypt_finish:
12702 ++ movl 56(%esp),%ebp
12703 ++ andl $7,%ebp
12704 ++ jz L009finish
12705 ++ movl (%esi),%eax
12706 ++ movl 4(%esi),%ebx
12707 ++ movl %eax,12(%esp)
12708 ++ movl %ebx,16(%esp)
12709 ++ call L_DES_encrypt1_begin
12710 ++ movl 12(%esp),%eax
12711 ++ movl 16(%esp),%ebx
12712 ++ movl 20(%esp),%ecx
12713 ++ movl 24(%esp),%edx
12714 ++ xorl %eax,%ecx
12715 ++ xorl %ebx,%edx
12716 ++ movl (%esi),%eax
12717 ++ movl 4(%esi),%ebx
12718 ++L022dj7:
12719 ++ rorl $16,%edx
12720 ++ movb %dl,6(%edi)
12721 ++ shrl $16,%edx
12722 ++L023dj6:
12723 ++ movb %dh,5(%edi)
12724 ++L024dj5:
12725 ++ movb %dl,4(%edi)
12726 ++L025dj4:
12727 ++ movl %ecx,(%edi)
12728 ++ jmp L026djend
12729 ++L027dj3:
12730 ++ rorl $16,%ecx
12731 ++ movb %cl,2(%edi)
12732 ++ shll $16,%ecx
12733 ++L028dj2:
12734 ++ movb %ch,1(%esi)
12735 ++L029dj1:
12736 ++ movb %cl,(%esi)
12737 ++L026djend:
12738 ++ jmp L009finish
12739 ++L009finish:
12740 ++ movl 64(%esp),%ecx
12741 ++ addl $28,%esp
12742 ++ movl %eax,(%ecx)
12743 ++ movl %ebx,4(%ecx)
12744 ++ popl %edi
12745 ++ popl %esi
12746 ++ popl %ebx
12747 ++ popl %ebp
12748 ++ ret
12749 ++.align 6,0x90
12750 ++L011cbc_enc_jmp_table:
12751 ++.long 0
12752 ++.long L019ej1-L010PIC_point
12753 ++.long L018ej2-L010PIC_point
12754 ++.long L017ej3-L010PIC_point
12755 ++.long L015ej4-L010PIC_point
12756 ++.long L014ej5-L010PIC_point
12757 ++.long L013ej6-L010PIC_point
12758 ++.long L012ej7-L010PIC_point
12759 ++.align 6,0x90
12760 ++.globl _DES_ede3_cbc_encrypt
12761 ++.align 4
12762 ++_DES_ede3_cbc_encrypt:
12763 ++L_DES_ede3_cbc_encrypt_begin:
12764 ++
12765 ++ pushl %ebp
12766 ++ pushl %ebx
12767 ++ pushl %esi
12768 ++ pushl %edi
12769 ++ movl 28(%esp),%ebp
12770 ++ # getting iv ptr from parameter 6
12771 ++ movl 44(%esp),%ebx
12772 ++ movl (%ebx),%esi
12773 ++ movl 4(%ebx),%edi
12774 ++ pushl %edi
12775 ++ pushl %esi
12776 ++ pushl %edi
12777 ++ pushl %esi
12778 ++ movl %esp,%ebx
12779 ++ movl 36(%esp),%esi
12780 ++ movl 40(%esp),%edi
12781 ++ # getting encrypt flag from parameter 7
12782 ++ movl 64(%esp),%ecx
12783 ++ # get and push parameter 5
12784 ++ movl 56(%esp),%eax
12785 ++ pushl %eax
12786 ++ # get and push parameter 4
12787 ++ movl 56(%esp),%eax
12788 ++ pushl %eax
12789 ++ # get and push parameter 3
12790 ++ movl 56(%esp),%eax
12791 ++ pushl %eax
12792 ++ pushl %ebx
12793 ++ cmpl $0,%ecx
12794 ++ jz L030decrypt
12795 ++ andl $4294967288,%ebp
12796 ++ movl 16(%esp),%eax
12797 ++ movl 20(%esp),%ebx
12798 ++ jz L031encrypt_finish
12799 ++L032encrypt_loop:
12800 ++ movl (%esi),%ecx
12801 ++ movl 4(%esi),%edx
12802 ++ xorl %ecx,%eax
12803 ++ xorl %edx,%ebx
12804 ++ movl %eax,16(%esp)
12805 ++ movl %ebx,20(%esp)
12806 ++ call L_DES_encrypt3_begin
12807 ++ movl 16(%esp),%eax
12808 ++ movl 20(%esp),%ebx
12809 ++ movl %eax,(%edi)
12810 ++ movl %ebx,4(%edi)
12811 ++ addl $8,%esi
12812 ++ addl $8,%edi
12813 ++ subl $8,%ebp
12814 ++ jnz L032encrypt_loop
12815 ++L031encrypt_finish:
12816 ++ movl 60(%esp),%ebp
12817 ++ andl $7,%ebp
12818 ++ jz L033finish
12819 ++ call L034PIC_point
12820 ++L034PIC_point:
12821 ++ popl %edx
12822 ++ leal L035cbc_enc_jmp_table-L034PIC_point(%edx),%ecx
12823 ++ movl (%ecx,%ebp,4),%ebp
12824 ++ addl %edx,%ebp
12825 ++ xorl %ecx,%ecx
12826 ++ xorl %edx,%edx
12827 ++ jmp *%ebp
12828 ++L036ej7:
12829 ++ movb 6(%esi),%dh
12830 ++ shll $8,%edx
12831 ++L037ej6:
12832 ++ movb 5(%esi),%dh
12833 ++L038ej5:
12834 ++ movb 4(%esi),%dl
12835 ++L039ej4:
12836 ++ movl (%esi),%ecx
12837 ++ jmp L040ejend
12838 ++L041ej3:
12839 ++ movb 2(%esi),%ch
12840 ++ shll $8,%ecx
12841 ++L042ej2:
12842 ++ movb 1(%esi),%ch
12843 ++L043ej1:
12844 ++ movb (%esi),%cl
12845 ++L040ejend:
12846 ++ xorl %ecx,%eax
12847 ++ xorl %edx,%ebx
12848 ++ movl %eax,16(%esp)
12849 ++ movl %ebx,20(%esp)
12850 ++ call L_DES_encrypt3_begin
12851 ++ movl 16(%esp),%eax
12852 ++ movl 20(%esp),%ebx
12853 ++ movl %eax,(%edi)
12854 ++ movl %ebx,4(%edi)
12855 ++ jmp L033finish
12856 ++L030decrypt:
12857 ++ andl $4294967288,%ebp
12858 ++ movl 24(%esp),%eax
12859 ++ movl 28(%esp),%ebx
12860 ++ jz L044decrypt_finish
12861 ++L045decrypt_loop:
12862 ++ movl (%esi),%eax
12863 ++ movl 4(%esi),%ebx
12864 ++ movl %eax,16(%esp)
12865 ++ movl %ebx,20(%esp)
12866 ++ call L_DES_decrypt3_begin
12867 ++ movl 16(%esp),%eax
12868 ++ movl 20(%esp),%ebx
12869 ++ movl 24(%esp),%ecx
12870 ++ movl 28(%esp),%edx
12871 ++ xorl %eax,%ecx
12872 ++ xorl %ebx,%edx
12873 ++ movl (%esi),%eax
12874 ++ movl 4(%esi),%ebx
12875 ++ movl %ecx,(%edi)
12876 ++ movl %edx,4(%edi)
12877 ++ movl %eax,24(%esp)
12878 ++ movl %ebx,28(%esp)
12879 ++ addl $8,%esi
12880 ++ addl $8,%edi
12881 ++ subl $8,%ebp
12882 ++ jnz L045decrypt_loop
12883 ++L044decrypt_finish:
12884 ++ movl 60(%esp),%ebp
12885 ++ andl $7,%ebp
12886 ++ jz L033finish
12887 ++ movl (%esi),%eax
12888 ++ movl 4(%esi),%ebx
12889 ++ movl %eax,16(%esp)
12890 ++ movl %ebx,20(%esp)
12891 ++ call L_DES_decrypt3_begin
12892 ++ movl 16(%esp),%eax
12893 ++ movl 20(%esp),%ebx
12894 ++ movl 24(%esp),%ecx
12895 ++ movl 28(%esp),%edx
12896 ++ xorl %eax,%ecx
12897 ++ xorl %ebx,%edx
12898 ++ movl (%esi),%eax
12899 ++ movl 4(%esi),%ebx
12900 ++L046dj7:
12901 ++ rorl $16,%edx
12902 ++ movb %dl,6(%edi)
12903 ++ shrl $16,%edx
12904 ++L047dj6:
12905 ++ movb %dh,5(%edi)
12906 ++L048dj5:
12907 ++ movb %dl,4(%edi)
12908 ++L049dj4:
12909 ++ movl %ecx,(%edi)
12910 ++ jmp L050djend
12911 ++L051dj3:
12912 ++ rorl $16,%ecx
12913 ++ movb %cl,2(%edi)
12914 ++ shll $16,%ecx
12915 ++L052dj2:
12916 ++ movb %ch,1(%esi)
12917 ++L053dj1:
12918 ++ movb %cl,(%esi)
12919 ++L050djend:
12920 ++ jmp L033finish
12921 ++L033finish:
12922 ++ movl 76(%esp),%ecx
12923 ++ addl $32,%esp
12924 ++ movl %eax,(%ecx)
12925 ++ movl %ebx,4(%ecx)
12926 ++ popl %edi
12927 ++ popl %esi
12928 ++ popl %ebx
12929 ++ popl %ebp
12930 ++ ret
12931 ++.align 6,0x90
12932 ++L035cbc_enc_jmp_table:
12933 ++.long 0
12934 ++.long L043ej1-L034PIC_point
12935 ++.long L042ej2-L034PIC_point
12936 ++.long L041ej3-L034PIC_point
12937 ++.long L039ej4-L034PIC_point
12938 ++.long L038ej5-L034PIC_point
12939 ++.long L037ej6-L034PIC_point
12940 ++.long L036ej7-L034PIC_point
12941 ++.align 6,0x90
12942 ++.align 6,0x90
12943 ++_DES_SPtrans:
12944 ++.long 34080768,524288,33554434,34080770
12945 ++.long 33554432,526338,524290,33554434
12946 ++.long 526338,34080768,34078720,2050
12947 ++.long 33556482,33554432,0,524290
12948 ++.long 524288,2,33556480,526336
12949 ++.long 34080770,34078720,2050,33556480
12950 ++.long 2,2048,526336,34078722
12951 ++.long 2048,33556482,34078722,0
12952 ++.long 0,34080770,33556480,524290
12953 ++.long 34080768,524288,2050,33556480
12954 ++.long 34078722,2048,526336,33554434
12955 ++.long 526338,2,33554434,34078720
12956 ++.long 34080770,526336,34078720,33556482
12957 ++.long 33554432,2050,524290,0
12958 ++.long 524288,33554432,33556482,34080768
12959 ++.long 2,34078722,2048,526338
12960 ++.long 1074823184,0,1081344,1074790400
12961 ++.long 1073741840,32784,1073774592,1081344
12962 ++.long 32768,1074790416,16,1073774592
12963 ++.long 1048592,1074823168,1074790400,16
12964 ++.long 1048576,1073774608,1074790416,32768
12965 ++.long 1081360,1073741824,0,1048592
12966 ++.long 1073774608,1081360,1074823168,1073741840
12967 ++.long 1073741824,1048576,32784,1074823184
12968 ++.long 1048592,1074823168,1073774592,1081360
12969 ++.long 1074823184,1048592,1073741840,0
12970 ++.long 1073741824,32784,1048576,1074790416
12971 ++.long 32768,1073741824,1081360,1073774608
12972 ++.long 1074823168,32768,0,1073741840
12973 ++.long 16,1074823184,1081344,1074790400
12974 ++.long 1074790416,1048576,32784,1073774592
12975 ++.long 1073774608,16,1074790400,1081344
12976 ++.long 67108865,67371264,256,67109121
12977 ++.long 262145,67108864,67109121,262400
12978 ++.long 67109120,262144,67371008,1
12979 ++.long 67371265,257,1,67371009
12980 ++.long 0,262145,67371264,256
12981 ++.long 257,67371265,262144,67108865
12982 ++.long 67371009,67109120,262401,67371008
12983 ++.long 262400,0,67108864,262401
12984 ++.long 67371264,256,1,262144
12985 ++.long 257,262145,67371008,67109121
12986 ++.long 0,67371264,262400,67371009
12987 ++.long 262145,67108864,67371265,1
12988 ++.long 262401,67108865,67108864,67371265
12989 ++.long 262144,67109120,67109121,262400
12990 ++.long 67109120,0,67371009,257
12991 ++.long 67108865,262401,256,67371008
12992 ++.long 4198408,268439552,8,272633864
12993 ++.long 0,272629760,268439560,4194312
12994 ++.long 272633856,268435464,268435456,4104
12995 ++.long 268435464,4198408,4194304,268435456
12996 ++.long 272629768,4198400,4096,8
12997 ++.long 4198400,268439560,272629760,4096
12998 ++.long 4104,0,4194312,272633856
12999 ++.long 268439552,272629768,272633864,4194304
13000 ++.long 272629768,4104,4194304,268435464
13001 ++.long 4198400,268439552,8,272629760
13002 ++.long 268439560,0,4096,4194312
13003 ++.long 0,272629768,272633856,4096
13004 ++.long 268435456,272633864,4198408,4194304
13005 ++.long 272633864,8,268439552,4198408
13006 ++.long 4194312,4198400,272629760,268439560
13007 ++.long 4104,268435456,268435464,272633856
13008 ++.long 134217728,65536,1024,134284320
13009 ++.long 134283296,134218752,66592,134283264
13010 ++.long 65536,32,134217760,66560
13011 ++.long 134218784,134283296,134284288,0
13012 ++.long 66560,134217728,65568,1056
13013 ++.long 134218752,66592,0,134217760
13014 ++.long 32,134218784,134284320,65568
13015 ++.long 134283264,1024,1056,134284288
13016 ++.long 134284288,134218784,65568,134283264
13017 ++.long 65536,32,134217760,134218752
13018 ++.long 134217728,66560,134284320,0
13019 ++.long 66592,134217728,1024,65568
13020 ++.long 134218784,1024,0,134284320
13021 ++.long 134283296,134284288,1056,65536
13022 ++.long 66560,134283296,134218752,1056
13023 ++.long 32,66592,134283264,134217760
13024 ++.long 2147483712,2097216,0,2149588992
13025 ++.long 2097216,8192,2147491904,2097152
13026 ++.long 8256,2149589056,2105344,2147483648
13027 ++.long 2147491840,2147483712,2149580800,2105408
13028 ++.long 2097152,2147491904,2149580864,0
13029 ++.long 8192,64,2149588992,2149580864
13030 ++.long 2149589056,2149580800,2147483648,8256
13031 ++.long 64,2105344,2105408,2147491840
13032 ++.long 8256,2147483648,2147491840,2105408
13033 ++.long 2149588992,2097216,0,2147491840
13034 ++.long 2147483648,8192,2149580864,2097152
13035 ++.long 2097216,2149589056,2105344,64
13036 ++.long 2149589056,2105344,2097152,2147491904
13037 ++.long 2147483712,2149580800,2105408,0
13038 ++.long 8192,2147483712,2147491904,2149588992
13039 ++.long 2149580800,8256,64,2149580864
13040 ++.long 16384,512,16777728,16777220
13041 ++.long 16794116,16388,16896,0
13042 ++.long 16777216,16777732,516,16793600
13043 ++.long 4,16794112,16793600,516
13044 ++.long 16777732,16384,16388,16794116
13045 ++.long 0,16777728,16777220,16896
13046 ++.long 16793604,16900,16794112,4
13047 ++.long 16900,16793604,512,16777216
13048 ++.long 16900,16793600,16793604,516
13049 ++.long 16384,512,16777216,16793604
13050 ++.long 16777732,16900,16896,0
13051 ++.long 512,16777220,4,16777728
13052 ++.long 0,16777732,16777728,16896
13053 ++.long 516,16384,16794116,16777216
13054 ++.long 16794112,4,16388,16794116
13055 ++.long 16777220,16794112,16793600,16388
13056 ++.long 545259648,545390592,131200,0
13057 ++.long 537001984,8388736,545259520,545390720
13058 ++.long 128,536870912,8519680,131200
13059 ++.long 8519808,537002112,536871040,545259520
13060 ++.long 131072,8519808,8388736,537001984
13061 ++.long 545390720,536871040,0,8519680
13062 ++.long 536870912,8388608,537002112,545259648
13063 ++.long 8388608,131072,545390592,128
13064 ++.long 8388608,131072,536871040,545390720
13065 ++.long 131200,536870912,0,8519680
13066 ++.long 545259648,537002112,537001984,8388736
13067 ++.long 545390592,128,8388736,537001984
13068 ++.long 545390720,8388608,545259520,536871040
13069 ++.long 8519680,131200,537002112,545259520
13070 ++.long 128,545390592,8519808,0
13071 ++.long 536870912,545259648,131072,8519808
13072 +diff --git a/crypto/md5/asm/md5-586-mac.S b/crypto/md5/asm/md5-586-mac.S
13073 +new file mode 100644
13074 +index 0000000..8413d0c
13075 +--- /dev/null
13076 ++++ b/crypto/md5/asm/md5-586-mac.S
13077 +@@ -0,0 +1,677 @@
13078 ++.file "crypto/md5/asm/md5-586.s"
13079 ++.text
13080 ++.globl _md5_block_asm_data_order
13081 ++.align 4
13082 ++_md5_block_asm_data_order:
13083 ++L_md5_block_asm_data_order_begin:
13084 ++ pushl %esi
13085 ++ pushl %edi
13086 ++ movl 12(%esp),%edi
13087 ++ movl 16(%esp),%esi
13088 ++ movl 20(%esp),%ecx
13089 ++ pushl %ebp
13090 ++ shll $6,%ecx
13091 ++ pushl %ebx
13092 ++ addl %esi,%ecx
13093 ++ subl $64,%ecx
13094 ++ movl (%edi),%eax
13095 ++ pushl %ecx
13096 ++ movl 4(%edi),%ebx
13097 ++ movl 8(%edi),%ecx
13098 ++ movl 12(%edi),%edx
13099 ++L000start:
13100 ++
13101 ++ # R0 section
13102 ++ movl %ecx,%edi
13103 ++ movl (%esi),%ebp
13104 ++ # R0 0
13105 ++ xorl %edx,%edi
13106 ++ andl %ebx,%edi
13107 ++ leal 3614090360(%eax,%ebp,1),%eax
13108 ++ xorl %edx,%edi
13109 ++ addl %edi,%eax
13110 ++ movl %ebx,%edi
13111 ++ roll $7,%eax
13112 ++ movl 4(%esi),%ebp
13113 ++ addl %ebx,%eax
13114 ++ # R0 1
13115 ++ xorl %ecx,%edi
13116 ++ andl %eax,%edi
13117 ++ leal 3905402710(%edx,%ebp,1),%edx
13118 ++ xorl %ecx,%edi
13119 ++ addl %edi,%edx
13120 ++ movl %eax,%edi
13121 ++ roll $12,%edx
13122 ++ movl 8(%esi),%ebp
13123 ++ addl %eax,%edx
13124 ++ # R0 2
13125 ++ xorl %ebx,%edi
13126 ++ andl %edx,%edi
13127 ++ leal 606105819(%ecx,%ebp,1),%ecx
13128 ++ xorl %ebx,%edi
13129 ++ addl %edi,%ecx
13130 ++ movl %edx,%edi
13131 ++ roll $17,%ecx
13132 ++ movl 12(%esi),%ebp
13133 ++ addl %edx,%ecx
13134 ++ # R0 3
13135 ++ xorl %eax,%edi
13136 ++ andl %ecx,%edi
13137 ++ leal 3250441966(%ebx,%ebp,1),%ebx
13138 ++ xorl %eax,%edi
13139 ++ addl %edi,%ebx
13140 ++ movl %ecx,%edi
13141 ++ roll $22,%ebx
13142 ++ movl 16(%esi),%ebp
13143 ++ addl %ecx,%ebx
13144 ++ # R0 4
13145 ++ xorl %edx,%edi
13146 ++ andl %ebx,%edi
13147 ++ leal 4118548399(%eax,%ebp,1),%eax
13148 ++ xorl %edx,%edi
13149 ++ addl %edi,%eax
13150 ++ movl %ebx,%edi
13151 ++ roll $7,%eax
13152 ++ movl 20(%esi),%ebp
13153 ++ addl %ebx,%eax
13154 ++ # R0 5
13155 ++ xorl %ecx,%edi
13156 ++ andl %eax,%edi
13157 ++ leal 1200080426(%edx,%ebp,1),%edx
13158 ++ xorl %ecx,%edi
13159 ++ addl %edi,%edx
13160 ++ movl %eax,%edi
13161 ++ roll $12,%edx
13162 ++ movl 24(%esi),%ebp
13163 ++ addl %eax,%edx
13164 ++ # R0 6
13165 ++ xorl %ebx,%edi
13166 ++ andl %edx,%edi
13167 ++ leal 2821735955(%ecx,%ebp,1),%ecx
13168 ++ xorl %ebx,%edi
13169 ++ addl %edi,%ecx
13170 ++ movl %edx,%edi
13171 ++ roll $17,%ecx
13172 ++ movl 28(%esi),%ebp
13173 ++ addl %edx,%ecx
13174 ++ # R0 7
13175 ++ xorl %eax,%edi
13176 ++ andl %ecx,%edi
13177 ++ leal 4249261313(%ebx,%ebp,1),%ebx
13178 ++ xorl %eax,%edi
13179 ++ addl %edi,%ebx
13180 ++ movl %ecx,%edi
13181 ++ roll $22,%ebx
13182 ++ movl 32(%esi),%ebp
13183 ++ addl %ecx,%ebx
13184 ++ # R0 8
13185 ++ xorl %edx,%edi
13186 ++ andl %ebx,%edi
13187 ++ leal 1770035416(%eax,%ebp,1),%eax
13188 ++ xorl %edx,%edi
13189 ++ addl %edi,%eax
13190 ++ movl %ebx,%edi
13191 ++ roll $7,%eax
13192 ++ movl 36(%esi),%ebp
13193 ++ addl %ebx,%eax
13194 ++ # R0 9
13195 ++ xorl %ecx,%edi
13196 ++ andl %eax,%edi
13197 ++ leal 2336552879(%edx,%ebp,1),%edx
13198 ++ xorl %ecx,%edi
13199 ++ addl %edi,%edx
13200 ++ movl %eax,%edi
13201 ++ roll $12,%edx
13202 ++ movl 40(%esi),%ebp
13203 ++ addl %eax,%edx
13204 ++ # R0 10
13205 ++ xorl %ebx,%edi
13206 ++ andl %edx,%edi
13207 ++ leal 4294925233(%ecx,%ebp,1),%ecx
13208 ++ xorl %ebx,%edi
13209 ++ addl %edi,%ecx
13210 ++ movl %edx,%edi
13211 ++ roll $17,%ecx
13212 ++ movl 44(%esi),%ebp
13213 ++ addl %edx,%ecx
13214 ++ # R0 11
13215 ++ xorl %eax,%edi
13216 ++ andl %ecx,%edi
13217 ++ leal 2304563134(%ebx,%ebp,1),%ebx
13218 ++ xorl %eax,%edi
13219 ++ addl %edi,%ebx
13220 ++ movl %ecx,%edi
13221 ++ roll $22,%ebx
13222 ++ movl 48(%esi),%ebp
13223 ++ addl %ecx,%ebx
13224 ++ # R0 12
13225 ++ xorl %edx,%edi
13226 ++ andl %ebx,%edi
13227 ++ leal 1804603682(%eax,%ebp,1),%eax
13228 ++ xorl %edx,%edi
13229 ++ addl %edi,%eax
13230 ++ movl %ebx,%edi
13231 ++ roll $7,%eax
13232 ++ movl 52(%esi),%ebp
13233 ++ addl %ebx,%eax
13234 ++ # R0 13
13235 ++ xorl %ecx,%edi
13236 ++ andl %eax,%edi
13237 ++ leal 4254626195(%edx,%ebp,1),%edx
13238 ++ xorl %ecx,%edi
13239 ++ addl %edi,%edx
13240 ++ movl %eax,%edi
13241 ++ roll $12,%edx
13242 ++ movl 56(%esi),%ebp
13243 ++ addl %eax,%edx
13244 ++ # R0 14
13245 ++ xorl %ebx,%edi
13246 ++ andl %edx,%edi
13247 ++ leal 2792965006(%ecx,%ebp,1),%ecx
13248 ++ xorl %ebx,%edi
13249 ++ addl %edi,%ecx
13250 ++ movl %edx,%edi
13251 ++ roll $17,%ecx
13252 ++ movl 60(%esi),%ebp
13253 ++ addl %edx,%ecx
13254 ++ # R0 15
13255 ++ xorl %eax,%edi
13256 ++ andl %ecx,%edi
13257 ++ leal 1236535329(%ebx,%ebp,1),%ebx
13258 ++ xorl %eax,%edi
13259 ++ addl %edi,%ebx
13260 ++ movl %ecx,%edi
13261 ++ roll $22,%ebx
13262 ++ movl 4(%esi),%ebp
13263 ++ addl %ecx,%ebx
13264 ++
13265 ++ # R1 section
13266 ++ # R1 16
13267 ++ leal 4129170786(%eax,%ebp,1),%eax
13268 ++ xorl %ebx,%edi
13269 ++ andl %edx,%edi
13270 ++ movl 24(%esi),%ebp
13271 ++ xorl %ecx,%edi
13272 ++ addl %edi,%eax
13273 ++ movl %ebx,%edi
13274 ++ roll $5,%eax
13275 ++ addl %ebx,%eax
13276 ++ # R1 17
13277 ++ leal 3225465664(%edx,%ebp,1),%edx
13278 ++ xorl %eax,%edi
13279 ++ andl %ecx,%edi
13280 ++ movl 44(%esi),%ebp
13281 ++ xorl %ebx,%edi
13282 ++ addl %edi,%edx
13283 ++ movl %eax,%edi
13284 ++ roll $9,%edx
13285 ++ addl %eax,%edx
13286 ++ # R1 18
13287 ++ leal 643717713(%ecx,%ebp,1),%ecx
13288 ++ xorl %edx,%edi
13289 ++ andl %ebx,%edi
13290 ++ movl (%esi),%ebp
13291 ++ xorl %eax,%edi
13292 ++ addl %edi,%ecx
13293 ++ movl %edx,%edi
13294 ++ roll $14,%ecx
13295 ++ addl %edx,%ecx
13296 ++ # R1 19
13297 ++ leal 3921069994(%ebx,%ebp,1),%ebx
13298 ++ xorl %ecx,%edi
13299 ++ andl %eax,%edi
13300 ++ movl 20(%esi),%ebp
13301 ++ xorl %edx,%edi
13302 ++ addl %edi,%ebx
13303 ++ movl %ecx,%edi
13304 ++ roll $20,%ebx
13305 ++ addl %ecx,%ebx
13306 ++ # R1 20
13307 ++ leal 3593408605(%eax,%ebp,1),%eax
13308 ++ xorl %ebx,%edi
13309 ++ andl %edx,%edi
13310 ++ movl 40(%esi),%ebp
13311 ++ xorl %ecx,%edi
13312 ++ addl %edi,%eax
13313 ++ movl %ebx,%edi
13314 ++ roll $5,%eax
13315 ++ addl %ebx,%eax
13316 ++ # R1 21
13317 ++ leal 38016083(%edx,%ebp,1),%edx
13318 ++ xorl %eax,%edi
13319 ++ andl %ecx,%edi
13320 ++ movl 60(%esi),%ebp
13321 ++ xorl %ebx,%edi
13322 ++ addl %edi,%edx
13323 ++ movl %eax,%edi
13324 ++ roll $9,%edx
13325 ++ addl %eax,%edx
13326 ++ # R1 22
13327 ++ leal 3634488961(%ecx,%ebp,1),%ecx
13328 ++ xorl %edx,%edi
13329 ++ andl %ebx,%edi
13330 ++ movl 16(%esi),%ebp
13331 ++ xorl %eax,%edi
13332 ++ addl %edi,%ecx
13333 ++ movl %edx,%edi
13334 ++ roll $14,%ecx
13335 ++ addl %edx,%ecx
13336 ++ # R1 23
13337 ++ leal 3889429448(%ebx,%ebp,1),%ebx
13338 ++ xorl %ecx,%edi
13339 ++ andl %eax,%edi
13340 ++ movl 36(%esi),%ebp
13341 ++ xorl %edx,%edi
13342 ++ addl %edi,%ebx
13343 ++ movl %ecx,%edi
13344 ++ roll $20,%ebx
13345 ++ addl %ecx,%ebx
13346 ++ # R1 24
13347 ++ leal 568446438(%eax,%ebp,1),%eax
13348 ++ xorl %ebx,%edi
13349 ++ andl %edx,%edi
13350 ++ movl 56(%esi),%ebp
13351 ++ xorl %ecx,%edi
13352 ++ addl %edi,%eax
13353 ++ movl %ebx,%edi
13354 ++ roll $5,%eax
13355 ++ addl %ebx,%eax
13356 ++ # R1 25
13357 ++ leal 3275163606(%edx,%ebp,1),%edx
13358 ++ xorl %eax,%edi
13359 ++ andl %ecx,%edi
13360 ++ movl 12(%esi),%ebp
13361 ++ xorl %ebx,%edi
13362 ++ addl %edi,%edx
13363 ++ movl %eax,%edi
13364 ++ roll $9,%edx
13365 ++ addl %eax,%edx
13366 ++ # R1 26
13367 ++ leal 4107603335(%ecx,%ebp,1),%ecx
13368 ++ xorl %edx,%edi
13369 ++ andl %ebx,%edi
13370 ++ movl 32(%esi),%ebp
13371 ++ xorl %eax,%edi
13372 ++ addl %edi,%ecx
13373 ++ movl %edx,%edi
13374 ++ roll $14,%ecx
13375 ++ addl %edx,%ecx
13376 ++ # R1 27
13377 ++ leal 1163531501(%ebx,%ebp,1),%ebx
13378 ++ xorl %ecx,%edi
13379 ++ andl %eax,%edi
13380 ++ movl 52(%esi),%ebp
13381 ++ xorl %edx,%edi
13382 ++ addl %edi,%ebx
13383 ++ movl %ecx,%edi
13384 ++ roll $20,%ebx
13385 ++ addl %ecx,%ebx
13386 ++ # R1 28
13387 ++ leal 2850285829(%eax,%ebp,1),%eax
13388 ++ xorl %ebx,%edi
13389 ++ andl %edx,%edi
13390 ++ movl 8(%esi),%ebp
13391 ++ xorl %ecx,%edi
13392 ++ addl %edi,%eax
13393 ++ movl %ebx,%edi
13394 ++ roll $5,%eax
13395 ++ addl %ebx,%eax
13396 ++ # R1 29
13397 ++ leal 4243563512(%edx,%ebp,1),%edx
13398 ++ xorl %eax,%edi
13399 ++ andl %ecx,%edi
13400 ++ movl 28(%esi),%ebp
13401 ++ xorl %ebx,%edi
13402 ++ addl %edi,%edx
13403 ++ movl %eax,%edi
13404 ++ roll $9,%edx
13405 ++ addl %eax,%edx
13406 ++ # R1 30
13407 ++ leal 1735328473(%ecx,%ebp,1),%ecx
13408 ++ xorl %edx,%edi
13409 ++ andl %ebx,%edi
13410 ++ movl 48(%esi),%ebp
13411 ++ xorl %eax,%edi
13412 ++ addl %edi,%ecx
13413 ++ movl %edx,%edi
13414 ++ roll $14,%ecx
13415 ++ addl %edx,%ecx
13416 ++ # R1 31
13417 ++ leal 2368359562(%ebx,%ebp,1),%ebx
13418 ++ xorl %ecx,%edi
13419 ++ andl %eax,%edi
13420 ++ movl 20(%esi),%ebp
13421 ++ xorl %edx,%edi
13422 ++ addl %edi,%ebx
13423 ++ movl %ecx,%edi
13424 ++ roll $20,%ebx
13425 ++ addl %ecx,%ebx
13426 ++
13427 ++ # R2 section
13428 ++ # R2 32
13429 ++ xorl %edx,%edi
13430 ++ xorl %ebx,%edi
13431 ++ leal 4294588738(%eax,%ebp,1),%eax
13432 ++ addl %edi,%eax
13433 ++ roll $4,%eax
13434 ++ movl 32(%esi),%ebp
13435 ++ movl %ebx,%edi
13436 ++ # R2 33
13437 ++ leal 2272392833(%edx,%ebp,1),%edx
13438 ++ addl %ebx,%eax
13439 ++ xorl %ecx,%edi
13440 ++ xorl %eax,%edi
13441 ++ movl 44(%esi),%ebp
13442 ++ addl %edi,%edx
13443 ++ movl %eax,%edi
13444 ++ roll $11,%edx
13445 ++ addl %eax,%edx
13446 ++ # R2 34
13447 ++ xorl %ebx,%edi
13448 ++ xorl %edx,%edi
13449 ++ leal 1839030562(%ecx,%ebp,1),%ecx
13450 ++ addl %edi,%ecx
13451 ++ roll $16,%ecx
13452 ++ movl 56(%esi),%ebp
13453 ++ movl %edx,%edi
13454 ++ # R2 35
13455 ++ leal 4259657740(%ebx,%ebp,1),%ebx
13456 ++ addl %edx,%ecx
13457 ++ xorl %eax,%edi
13458 ++ xorl %ecx,%edi
13459 ++ movl 4(%esi),%ebp
13460 ++ addl %edi,%ebx
13461 ++ movl %ecx,%edi
13462 ++ roll $23,%ebx
13463 ++ addl %ecx,%ebx
13464 ++ # R2 36
13465 ++ xorl %edx,%edi
13466 ++ xorl %ebx,%edi
13467 ++ leal 2763975236(%eax,%ebp,1),%eax
13468 ++ addl %edi,%eax
13469 ++ roll $4,%eax
13470 ++ movl 16(%esi),%ebp
13471 ++ movl %ebx,%edi
13472 ++ # R2 37
13473 ++ leal 1272893353(%edx,%ebp,1),%edx
13474 ++ addl %ebx,%eax
13475 ++ xorl %ecx,%edi
13476 ++ xorl %eax,%edi
13477 ++ movl 28(%esi),%ebp
13478 ++ addl %edi,%edx
13479 ++ movl %eax,%edi
13480 ++ roll $11,%edx
13481 ++ addl %eax,%edx
13482 ++ # R2 38
13483 ++ xorl %ebx,%edi
13484 ++ xorl %edx,%edi
13485 ++ leal 4139469664(%ecx,%ebp,1),%ecx
13486 ++ addl %edi,%ecx
13487 ++ roll $16,%ecx
13488 ++ movl 40(%esi),%ebp
13489 ++ movl %edx,%edi
13490 ++ # R2 39
13491 ++ leal 3200236656(%ebx,%ebp,1),%ebx
13492 ++ addl %edx,%ecx
13493 ++ xorl %eax,%edi
13494 ++ xorl %ecx,%edi
13495 ++ movl 52(%esi),%ebp
13496 ++ addl %edi,%ebx
13497 ++ movl %ecx,%edi
13498 ++ roll $23,%ebx
13499 ++ addl %ecx,%ebx
13500 ++ # R2 40
13501 ++ xorl %edx,%edi
13502 ++ xorl %ebx,%edi
13503 ++ leal 681279174(%eax,%ebp,1),%eax
13504 ++ addl %edi,%eax
13505 ++ roll $4,%eax
13506 ++ movl (%esi),%ebp
13507 ++ movl %ebx,%edi
13508 ++ # R2 41
13509 ++ leal 3936430074(%edx,%ebp,1),%edx
13510 ++ addl %ebx,%eax
13511 ++ xorl %ecx,%edi
13512 ++ xorl %eax,%edi
13513 ++ movl 12(%esi),%ebp
13514 ++ addl %edi,%edx
13515 ++ movl %eax,%edi
13516 ++ roll $11,%edx
13517 ++ addl %eax,%edx
13518 ++ # R2 42
13519 ++ xorl %ebx,%edi
13520 ++ xorl %edx,%edi
13521 ++ leal 3572445317(%ecx,%ebp,1),%ecx
13522 ++ addl %edi,%ecx
13523 ++ roll $16,%ecx
13524 ++ movl 24(%esi),%ebp
13525 ++ movl %edx,%edi
13526 ++ # R2 43
13527 ++ leal 76029189(%ebx,%ebp,1),%ebx
13528 ++ addl %edx,%ecx
13529 ++ xorl %eax,%edi
13530 ++ xorl %ecx,%edi
13531 ++ movl 36(%esi),%ebp
13532 ++ addl %edi,%ebx
13533 ++ movl %ecx,%edi
13534 ++ roll $23,%ebx
13535 ++ addl %ecx,%ebx
13536 ++ # R2 44
13537 ++ xorl %edx,%edi
13538 ++ xorl %ebx,%edi
13539 ++ leal 3654602809(%eax,%ebp,1),%eax
13540 ++ addl %edi,%eax
13541 ++ roll $4,%eax
13542 ++ movl 48(%esi),%ebp
13543 ++ movl %ebx,%edi
13544 ++ # R2 45
13545 ++ leal 3873151461(%edx,%ebp,1),%edx
13546 ++ addl %ebx,%eax
13547 ++ xorl %ecx,%edi
13548 ++ xorl %eax,%edi
13549 ++ movl 60(%esi),%ebp
13550 ++ addl %edi,%edx
13551 ++ movl %eax,%edi
13552 ++ roll $11,%edx
13553 ++ addl %eax,%edx
13554 ++ # R2 46
13555 ++ xorl %ebx,%edi
13556 ++ xorl %edx,%edi
13557 ++ leal 530742520(%ecx,%ebp,1),%ecx
13558 ++ addl %edi,%ecx
13559 ++ roll $16,%ecx
13560 ++ movl 8(%esi),%ebp
13561 ++ movl %edx,%edi
13562 ++ # R2 47
13563 ++ leal 3299628645(%ebx,%ebp,1),%ebx
13564 ++ addl %edx,%ecx
13565 ++ xorl %eax,%edi
13566 ++ xorl %ecx,%edi
13567 ++ movl (%esi),%ebp
13568 ++ addl %edi,%ebx
13569 ++ movl $-1,%edi
13570 ++ roll $23,%ebx
13571 ++ addl %ecx,%ebx
13572 ++
13573 ++ # R3 section
13574 ++ # R3 48
13575 ++ xorl %edx,%edi
13576 ++ orl %ebx,%edi
13577 ++ leal 4096336452(%eax,%ebp,1),%eax
13578 ++ xorl %ecx,%edi
13579 ++ movl 28(%esi),%ebp
13580 ++ addl %edi,%eax
13581 ++ movl $-1,%edi
13582 ++ roll $6,%eax
13583 ++ xorl %ecx,%edi
13584 ++ addl %ebx,%eax
13585 ++ # R3 49
13586 ++ orl %eax,%edi
13587 ++ leal 1126891415(%edx,%ebp,1),%edx
13588 ++ xorl %ebx,%edi
13589 ++ movl 56(%esi),%ebp
13590 ++ addl %edi,%edx
13591 ++ movl $-1,%edi
13592 ++ roll $10,%edx
13593 ++ xorl %ebx,%edi
13594 ++ addl %eax,%edx
13595 ++ # R3 50
13596 ++ orl %edx,%edi
13597 ++ leal 2878612391(%ecx,%ebp,1),%ecx
13598 ++ xorl %eax,%edi
13599 ++ movl 20(%esi),%ebp
13600 ++ addl %edi,%ecx
13601 ++ movl $-1,%edi
13602 ++ roll $15,%ecx
13603 ++ xorl %eax,%edi
13604 ++ addl %edx,%ecx
13605 ++ # R3 51
13606 ++ orl %ecx,%edi
13607 ++ leal 4237533241(%ebx,%ebp,1),%ebx
13608 ++ xorl %edx,%edi
13609 ++ movl 48(%esi),%ebp
13610 ++ addl %edi,%ebx
13611 ++ movl $-1,%edi
13612 ++ roll $21,%ebx
13613 ++ xorl %edx,%edi
13614 ++ addl %ecx,%ebx
13615 ++ # R3 52
13616 ++ orl %ebx,%edi
13617 ++ leal 1700485571(%eax,%ebp,1),%eax
13618 ++ xorl %ecx,%edi
13619 ++ movl 12(%esi),%ebp
13620 ++ addl %edi,%eax
13621 ++ movl $-1,%edi
13622 ++ roll $6,%eax
13623 ++ xorl %ecx,%edi
13624 ++ addl %ebx,%eax
13625 ++ # R3 53
13626 ++ orl %eax,%edi
13627 ++ leal 2399980690(%edx,%ebp,1),%edx
13628 ++ xorl %ebx,%edi
13629 ++ movl 40(%esi),%ebp
13630 ++ addl %edi,%edx
13631 ++ movl $-1,%edi
13632 ++ roll $10,%edx
13633 ++ xorl %ebx,%edi
13634 ++ addl %eax,%edx
13635 ++ # R3 54
13636 ++ orl %edx,%edi
13637 ++ leal 4293915773(%ecx,%ebp,1),%ecx
13638 ++ xorl %eax,%edi
13639 ++ movl 4(%esi),%ebp
13640 ++ addl %edi,%ecx
13641 ++ movl $-1,%edi
13642 ++ roll $15,%ecx
13643 ++ xorl %eax,%edi
13644 ++ addl %edx,%ecx
13645 ++ # R3 55
13646 ++ orl %ecx,%edi
13647 ++ leal 2240044497(%ebx,%ebp,1),%ebx
13648 ++ xorl %edx,%edi
13649 ++ movl 32(%esi),%ebp
13650 ++ addl %edi,%ebx
13651 ++ movl $-1,%edi
13652 ++ roll $21,%ebx
13653 ++ xorl %edx,%edi
13654 ++ addl %ecx,%ebx
13655 ++ # R3 56
13656 ++ orl %ebx,%edi
13657 ++ leal 1873313359(%eax,%ebp,1),%eax
13658 ++ xorl %ecx,%edi
13659 ++ movl 60(%esi),%ebp
13660 ++ addl %edi,%eax
13661 ++ movl $-1,%edi
13662 ++ roll $6,%eax
13663 ++ xorl %ecx,%edi
13664 ++ addl %ebx,%eax
13665 ++ # R3 57
13666 ++ orl %eax,%edi
13667 ++ leal 4264355552(%edx,%ebp,1),%edx
13668 ++ xorl %ebx,%edi
13669 ++ movl 24(%esi),%ebp
13670 ++ addl %edi,%edx
13671 ++ movl $-1,%edi
13672 ++ roll $10,%edx
13673 ++ xorl %ebx,%edi
13674 ++ addl %eax,%edx
13675 ++ # R3 58
13676 ++ orl %edx,%edi
13677 ++ leal 2734768916(%ecx,%ebp,1),%ecx
13678 ++ xorl %eax,%edi
13679 ++ movl 52(%esi),%ebp
13680 ++ addl %edi,%ecx
13681 ++ movl $-1,%edi
13682 ++ roll $15,%ecx
13683 ++ xorl %eax,%edi
13684 ++ addl %edx,%ecx
13685 ++ # R3 59
13686 ++ orl %ecx,%edi
13687 ++ leal 1309151649(%ebx,%ebp,1),%ebx
13688 ++ xorl %edx,%edi
13689 ++ movl 16(%esi),%ebp
13690 ++ addl %edi,%ebx
13691 ++ movl $-1,%edi
13692 ++ roll $21,%ebx
13693 ++ xorl %edx,%edi
13694 ++ addl %ecx,%ebx
13695 ++ # R3 60
13696 ++ orl %ebx,%edi
13697 ++ leal 4149444226(%eax,%ebp,1),%eax
13698 ++ xorl %ecx,%edi
13699 ++ movl 44(%esi),%ebp
13700 ++ addl %edi,%eax
13701 ++ movl $-1,%edi
13702 ++ roll $6,%eax
13703 ++ xorl %ecx,%edi
13704 ++ addl %ebx,%eax
13705 ++ # R3 61
13706 ++ orl %eax,%edi
13707 ++ leal 3174756917(%edx,%ebp,1),%edx
13708 ++ xorl %ebx,%edi
13709 ++ movl 8(%esi),%ebp
13710 ++ addl %edi,%edx
13711 ++ movl $-1,%edi
13712 ++ roll $10,%edx
13713 ++ xorl %ebx,%edi
13714 ++ addl %eax,%edx
13715 ++ # R3 62
13716 ++ orl %edx,%edi
13717 ++ leal 718787259(%ecx,%ebp,1),%ecx
13718 ++ xorl %eax,%edi
13719 ++ movl 36(%esi),%ebp
13720 ++ addl %edi,%ecx
13721 ++ movl $-1,%edi
13722 ++ roll $15,%ecx
13723 ++ xorl %eax,%edi
13724 ++ addl %edx,%ecx
13725 ++ # R3 63
13726 ++ orl %ecx,%edi
13727 ++ leal 3951481745(%ebx,%ebp,1),%ebx
13728 ++ xorl %edx,%edi
13729 ++ movl 24(%esp),%ebp
13730 ++ addl %edi,%ebx
13731 ++ addl $64,%esi
13732 ++ roll $21,%ebx
13733 ++ movl (%ebp),%edi
13734 ++ addl %ecx,%ebx
13735 ++ addl %edi,%eax
13736 ++ movl 4(%ebp),%edi
13737 ++ addl %edi,%ebx
13738 ++ movl 8(%ebp),%edi
13739 ++ addl %edi,%ecx
13740 ++ movl 12(%ebp),%edi
13741 ++ addl %edi,%edx
13742 ++ movl %eax,(%ebp)
13743 ++ movl %ebx,4(%ebp)
13744 ++ movl (%esp),%edi
13745 ++ movl %ecx,8(%ebp)
13746 ++ movl %edx,12(%ebp)
13747 ++ cmpl %esi,%edi
13748 ++ jae L000start
13749 ++ popl %eax
13750 ++ popl %ebx
13751 ++ popl %ebp
13752 ++ popl %edi
13753 ++ popl %esi
13754 ++ ret
13755 +diff --git a/crypto/modes/asm/ghash-x86-mac.S b/crypto/modes/asm/ghash-x86-mac. S
13756 +new file mode 100644
13757 +index 0000000..dc6ba14
13758 +--- /dev/null
13759 ++++ b/crypto/modes/asm/ghash-x86-mac.S
13760 +@@ -0,0 +1,718 @@
13761 ++.file "ghash-x86.s"
13762 ++.text
13763 ++.globl _gcm_gmult_4bit_x86
13764 ++.align 4
13765 ++_gcm_gmult_4bit_x86:
13766 ++L_gcm_gmult_4bit_x86_begin:
13767 ++ pushl %ebp
13768 ++ pushl %ebx
13769 ++ pushl %esi
13770 ++ pushl %edi
13771 ++ subl $84,%esp
13772 ++ movl 104(%esp),%edi
13773 ++ movl 108(%esp),%esi
13774 ++ movl (%edi),%ebp
13775 ++ movl 4(%edi),%edx
13776 ++ movl 8(%edi),%ecx
13777 ++ movl 12(%edi),%ebx
13778 ++ movl $0,16(%esp)
13779 ++ movl $471859200,20(%esp)
13780 ++ movl $943718400,24(%esp)
13781 ++ movl $610271232,28(%esp)
13782 ++ movl $1887436800,32(%esp)
13783 ++ movl $1822425088,36(%esp)
13784 ++ movl $1220542464,40(%esp)
13785 ++ movl $1423966208,44(%esp)
13786 ++ movl $3774873600,48(%esp)
13787 ++ movl $4246732800,52(%esp)
13788 ++ movl $3644850176,56(%esp)
13789 ++ movl $3311403008,60(%esp)
13790 ++ movl $2441084928,64(%esp)
13791 ++ movl $2376073216,68(%esp)
13792 ++ movl $2847932416,72(%esp)
13793 ++ movl $3051356160,76(%esp)
13794 ++ movl %ebp,(%esp)
13795 ++ movl %edx,4(%esp)
13796 ++ movl %ecx,8(%esp)
13797 ++ movl %ebx,12(%esp)
13798 ++ shrl $20,%ebx
13799 ++ andl $240,%ebx
13800 ++ movl 4(%esi,%ebx,1),%ebp
13801 ++ movl (%esi,%ebx,1),%edx
13802 ++ movl 12(%esi,%ebx,1),%ecx
13803 ++ movl 8(%esi,%ebx,1),%ebx
13804 ++ xorl %eax,%eax
13805 ++ movl $15,%edi
13806 ++ jmp L000x86_loop
13807 ++.align 4,0x90
13808 ++L000x86_loop:
13809 ++ movb %bl,%al
13810 ++ shrdl $4,%ecx,%ebx
13811 ++ andb $15,%al
13812 ++ shrdl $4,%edx,%ecx
13813 ++ shrdl $4,%ebp,%edx
13814 ++ shrl $4,%ebp
13815 ++ xorl 16(%esp,%eax,4),%ebp
13816 ++ movb (%esp,%edi,1),%al
13817 ++ andb $240,%al
13818 ++ xorl 8(%esi,%eax,1),%ebx
13819 ++ xorl 12(%esi,%eax,1),%ecx
13820 ++ xorl (%esi,%eax,1),%edx
13821 ++ xorl 4(%esi,%eax,1),%ebp
13822 ++ decl %edi
13823 ++ js L001x86_break
13824 ++ movb %bl,%al
13825 ++ shrdl $4,%ecx,%ebx
13826 ++ andb $15,%al
13827 ++ shrdl $4,%edx,%ecx
13828 ++ shrdl $4,%ebp,%edx
13829 ++ shrl $4,%ebp
13830 ++ xorl 16(%esp,%eax,4),%ebp
13831 ++ movb (%esp,%edi,1),%al
13832 ++ shlb $4,%al
13833 ++ xorl 8(%esi,%eax,1),%ebx
13834 ++ xorl 12(%esi,%eax,1),%ecx
13835 ++ xorl (%esi,%eax,1),%edx
13836 ++ xorl 4(%esi,%eax,1),%ebp
13837 ++ jmp L000x86_loop
13838 ++.align 4,0x90
13839 ++L001x86_break:
13840 ++ bswap %ebx
13841 ++ bswap %ecx
13842 ++ bswap %edx
13843 ++ bswap %ebp
13844 ++ movl 104(%esp),%edi
13845 ++ movl %ebx,12(%edi)
13846 ++ movl %ecx,8(%edi)
13847 ++ movl %edx,4(%edi)
13848 ++ movl %ebp,(%edi)
13849 ++ addl $84,%esp
13850 ++ popl %edi
13851 ++ popl %esi
13852 ++ popl %ebx
13853 ++ popl %ebp
13854 ++ ret
13855 ++.globl _gcm_ghash_4bit_x86
13856 ++.align 4
13857 ++_gcm_ghash_4bit_x86:
13858 ++L_gcm_ghash_4bit_x86_begin:
13859 ++ pushl %ebp
13860 ++ pushl %ebx
13861 ++ pushl %esi
13862 ++ pushl %edi
13863 ++ subl $84,%esp
13864 ++ movl 104(%esp),%ebx
13865 ++ movl 108(%esp),%esi
13866 ++ movl 112(%esp),%edi
13867 ++ movl 116(%esp),%ecx
13868 ++ addl %edi,%ecx
13869 ++ movl %ecx,116(%esp)
13870 ++ movl (%ebx),%ebp
13871 ++ movl 4(%ebx),%edx
13872 ++ movl 8(%ebx),%ecx
13873 ++ movl 12(%ebx),%ebx
13874 ++ movl $0,16(%esp)
13875 ++ movl $471859200,20(%esp)
13876 ++ movl $943718400,24(%esp)
13877 ++ movl $610271232,28(%esp)
13878 ++ movl $1887436800,32(%esp)
13879 ++ movl $1822425088,36(%esp)
13880 ++ movl $1220542464,40(%esp)
13881 ++ movl $1423966208,44(%esp)
13882 ++ movl $3774873600,48(%esp)
13883 ++ movl $4246732800,52(%esp)
13884 ++ movl $3644850176,56(%esp)
13885 ++ movl $3311403008,60(%esp)
13886 ++ movl $2441084928,64(%esp)
13887 ++ movl $2376073216,68(%esp)
13888 ++ movl $2847932416,72(%esp)
13889 ++ movl $3051356160,76(%esp)
13890 ++.align 4,0x90
13891 ++L002x86_outer_loop:
13892 ++ xorl 12(%edi),%ebx
13893 ++ xorl 8(%edi),%ecx
13894 ++ xorl 4(%edi),%edx
13895 ++ xorl (%edi),%ebp
13896 ++ movl %ebx,12(%esp)
13897 ++ movl %ecx,8(%esp)
13898 ++ movl %edx,4(%esp)
13899 ++ movl %ebp,(%esp)
13900 ++ shrl $20,%ebx
13901 ++ andl $240,%ebx
13902 ++ movl 4(%esi,%ebx,1),%ebp
13903 ++ movl (%esi,%ebx,1),%edx
13904 ++ movl 12(%esi,%ebx,1),%ecx
13905 ++ movl 8(%esi,%ebx,1),%ebx
13906 ++ xorl %eax,%eax
13907 ++ movl $15,%edi
13908 ++ jmp L003x86_loop
13909 ++.align 4,0x90
13910 ++L003x86_loop:
13911 ++ movb %bl,%al
13912 ++ shrdl $4,%ecx,%ebx
13913 ++ andb $15,%al
13914 ++ shrdl $4,%edx,%ecx
13915 ++ shrdl $4,%ebp,%edx
13916 ++ shrl $4,%ebp
13917 ++ xorl 16(%esp,%eax,4),%ebp
13918 ++ movb (%esp,%edi,1),%al
13919 ++ andb $240,%al
13920 ++ xorl 8(%esi,%eax,1),%ebx
13921 ++ xorl 12(%esi,%eax,1),%ecx
13922 ++ xorl (%esi,%eax,1),%edx
13923 ++ xorl 4(%esi,%eax,1),%ebp
13924 ++ decl %edi
13925 ++ js L004x86_break
13926 ++ movb %bl,%al
13927 ++ shrdl $4,%ecx,%ebx
13928 ++ andb $15,%al
13929 ++ shrdl $4,%edx,%ecx
13930 ++ shrdl $4,%ebp,%edx
13931 ++ shrl $4,%ebp
13932 ++ xorl 16(%esp,%eax,4),%ebp
13933 ++ movb (%esp,%edi,1),%al
13934 ++ shlb $4,%al
13935 ++ xorl 8(%esi,%eax,1),%ebx
13936 ++ xorl 12(%esi,%eax,1),%ecx
13937 ++ xorl (%esi,%eax,1),%edx
13938 ++ xorl 4(%esi,%eax,1),%ebp
13939 ++ jmp L003x86_loop
13940 ++.align 4,0x90
13941 ++L004x86_break:
13942 ++ bswap %ebx
13943 ++ bswap %ecx
13944 ++ bswap %edx
13945 ++ bswap %ebp
13946 ++ movl 112(%esp),%edi
13947 ++ leal 16(%edi),%edi
13948 ++ cmpl 116(%esp),%edi
13949 ++ movl %edi,112(%esp)
13950 ++ jb L002x86_outer_loop
13951 ++ movl 104(%esp),%edi
13952 ++ movl %ebx,12(%edi)
13953 ++ movl %ecx,8(%edi)
13954 ++ movl %edx,4(%edi)
13955 ++ movl %ebp,(%edi)
13956 ++ addl $84,%esp
13957 ++ popl %edi
13958 ++ popl %esi
13959 ++ popl %ebx
13960 ++ popl %ebp
13961 ++ ret
13962 ++.align 4
13963 ++__mmx_gmult_4bit_inner:
13964 ++ xorl %ecx,%ecx
13965 ++ movl %ebx,%edx
13966 ++ movb %dl,%cl
13967 ++ shlb $4,%cl
13968 ++ andl $240,%edx
13969 ++ movq 8(%esi,%ecx,1),%mm0
13970 ++ movq (%esi,%ecx,1),%mm1
13971 ++ movd %mm0,%ebp
13972 ++ psrlq $4,%mm0
13973 ++ movq %mm1,%mm2
13974 ++ psrlq $4,%mm1
13975 ++ pxor 8(%esi,%edx,1),%mm0
13976 ++ movb 14(%edi),%cl
13977 ++ psllq $60,%mm2
13978 ++ andl $15,%ebp
13979 ++ pxor (%esi,%edx,1),%mm1
13980 ++ movl %ecx,%edx
13981 ++ movd %mm0,%ebx
13982 ++ pxor %mm2,%mm0
13983 ++ shlb $4,%cl
13984 ++ psrlq $4,%mm0
13985 ++ movq %mm1,%mm2
13986 ++ psrlq $4,%mm1
13987 ++ pxor 8(%esi,%ecx,1),%mm0
13988 ++ psllq $60,%mm2
13989 ++ andl $240,%edx
13990 ++ pxor (%eax,%ebp,8),%mm1
13991 ++ andl $15,%ebx
13992 ++ pxor (%esi,%ecx,1),%mm1
13993 ++ movd %mm0,%ebp
13994 ++ pxor %mm2,%mm0
13995 ++ psrlq $4,%mm0
13996 ++ movq %mm1,%mm2
13997 ++ psrlq $4,%mm1
13998 ++ pxor 8(%esi,%edx,1),%mm0
13999 ++ movb 13(%edi),%cl
14000 ++ psllq $60,%mm2
14001 ++ pxor (%eax,%ebx,8),%mm1
14002 ++ andl $15,%ebp
14003 ++ pxor (%esi,%edx,1),%mm1
14004 ++ movl %ecx,%edx
14005 ++ movd %mm0,%ebx
14006 ++ pxor %mm2,%mm0
14007 ++ shlb $4,%cl
14008 ++ psrlq $4,%mm0
14009 ++ movq %mm1,%mm2
14010 ++ psrlq $4,%mm1
14011 ++ pxor 8(%esi,%ecx,1),%mm0
14012 ++ psllq $60,%mm2
14013 ++ andl $240,%edx
14014 ++ pxor (%eax,%ebp,8),%mm1
14015 ++ andl $15,%ebx
14016 ++ pxor (%esi,%ecx,1),%mm1
14017 ++ movd %mm0,%ebp
14018 ++ pxor %mm2,%mm0
14019 ++ psrlq $4,%mm0
14020 ++ movq %mm1,%mm2
14021 ++ psrlq $4,%mm1
14022 ++ pxor 8(%esi,%edx,1),%mm0
14023 ++ movb 12(%edi),%cl
14024 ++ psllq $60,%mm2
14025 ++ pxor (%eax,%ebx,8),%mm1
14026 ++ andl $15,%ebp
14027 ++ pxor (%esi,%edx,1),%mm1
14028 ++ movl %ecx,%edx
14029 ++ movd %mm0,%ebx
14030 ++ pxor %mm2,%mm0
14031 ++ shlb $4,%cl
14032 ++ psrlq $4,%mm0
14033 ++ movq %mm1,%mm2
14034 ++ psrlq $4,%mm1
14035 ++ pxor 8(%esi,%ecx,1),%mm0
14036 ++ psllq $60,%mm2
14037 ++ andl $240,%edx
14038 ++ pxor (%eax,%ebp,8),%mm1
14039 ++ andl $15,%ebx
14040 ++ pxor (%esi,%ecx,1),%mm1
14041 ++ movd %mm0,%ebp
14042 ++ pxor %mm2,%mm0
14043 ++ psrlq $4,%mm0
14044 ++ movq %mm1,%mm2
14045 ++ psrlq $4,%mm1
14046 ++ pxor 8(%esi,%edx,1),%mm0
14047 ++ movb 11(%edi),%cl
14048 ++ psllq $60,%mm2
14049 ++ pxor (%eax,%ebx,8),%mm1
14050 ++ andl $15,%ebp
14051 ++ pxor (%esi,%edx,1),%mm1
14052 ++ movl %ecx,%edx
14053 ++ movd %mm0,%ebx
14054 ++ pxor %mm2,%mm0
14055 ++ shlb $4,%cl
14056 ++ psrlq $4,%mm0
14057 ++ movq %mm1,%mm2
14058 ++ psrlq $4,%mm1
14059 ++ pxor 8(%esi,%ecx,1),%mm0
14060 ++ psllq $60,%mm2
14061 ++ andl $240,%edx
14062 ++ pxor (%eax,%ebp,8),%mm1
14063 ++ andl $15,%ebx
14064 ++ pxor (%esi,%ecx,1),%mm1
14065 ++ movd %mm0,%ebp
14066 ++ pxor %mm2,%mm0
14067 ++ psrlq $4,%mm0
14068 ++ movq %mm1,%mm2
14069 ++ psrlq $4,%mm1
14070 ++ pxor 8(%esi,%edx,1),%mm0
14071 ++ movb 10(%edi),%cl
14072 ++ psllq $60,%mm2
14073 ++ pxor (%eax,%ebx,8),%mm1
14074 ++ andl $15,%ebp
14075 ++ pxor (%esi,%edx,1),%mm1
14076 ++ movl %ecx,%edx
14077 ++ movd %mm0,%ebx
14078 ++ pxor %mm2,%mm0
14079 ++ shlb $4,%cl
14080 ++ psrlq $4,%mm0
14081 ++ movq %mm1,%mm2
14082 ++ psrlq $4,%mm1
14083 ++ pxor 8(%esi,%ecx,1),%mm0
14084 ++ psllq $60,%mm2
14085 ++ andl $240,%edx
14086 ++ pxor (%eax,%ebp,8),%mm1
14087 ++ andl $15,%ebx
14088 ++ pxor (%esi,%ecx,1),%mm1
14089 ++ movd %mm0,%ebp
14090 ++ pxor %mm2,%mm0
14091 ++ psrlq $4,%mm0
14092 ++ movq %mm1,%mm2
14093 ++ psrlq $4,%mm1
14094 ++ pxor 8(%esi,%edx,1),%mm0
14095 ++ movb 9(%edi),%cl
14096 ++ psllq $60,%mm2
14097 ++ pxor (%eax,%ebx,8),%mm1
14098 ++ andl $15,%ebp
14099 ++ pxor (%esi,%edx,1),%mm1
14100 ++ movl %ecx,%edx
14101 ++ movd %mm0,%ebx
14102 ++ pxor %mm2,%mm0
14103 ++ shlb $4,%cl
14104 ++ psrlq $4,%mm0
14105 ++ movq %mm1,%mm2
14106 ++ psrlq $4,%mm1
14107 ++ pxor 8(%esi,%ecx,1),%mm0
14108 ++ psllq $60,%mm2
14109 ++ andl $240,%edx
14110 ++ pxor (%eax,%ebp,8),%mm1
14111 ++ andl $15,%ebx
14112 ++ pxor (%esi,%ecx,1),%mm1
14113 ++ movd %mm0,%ebp
14114 ++ pxor %mm2,%mm0
14115 ++ psrlq $4,%mm0
14116 ++ movq %mm1,%mm2
14117 ++ psrlq $4,%mm1
14118 ++ pxor 8(%esi,%edx,1),%mm0
14119 ++ movb 8(%edi),%cl
14120 ++ psllq $60,%mm2
14121 ++ pxor (%eax,%ebx,8),%mm1
14122 ++ andl $15,%ebp
14123 ++ pxor (%esi,%edx,1),%mm1
14124 ++ movl %ecx,%edx
14125 ++ movd %mm0,%ebx
14126 ++ pxor %mm2,%mm0
14127 ++ shlb $4,%cl
14128 ++ psrlq $4,%mm0
14129 ++ movq %mm1,%mm2
14130 ++ psrlq $4,%mm1
14131 ++ pxor 8(%esi,%ecx,1),%mm0
14132 ++ psllq $60,%mm2
14133 ++ andl $240,%edx
14134 ++ pxor (%eax,%ebp,8),%mm1
14135 ++ andl $15,%ebx
14136 ++ pxor (%esi,%ecx,1),%mm1
14137 ++ movd %mm0,%ebp
14138 ++ pxor %mm2,%mm0
14139 ++ psrlq $4,%mm0
14140 ++ movq %mm1,%mm2
14141 ++ psrlq $4,%mm1
14142 ++ pxor 8(%esi,%edx,1),%mm0
14143 ++ movb 7(%edi),%cl
14144 ++ psllq $60,%mm2
14145 ++ pxor (%eax,%ebx,8),%mm1
14146 ++ andl $15,%ebp
14147 ++ pxor (%esi,%edx,1),%mm1
14148 ++ movl %ecx,%edx
14149 ++ movd %mm0,%ebx
14150 ++ pxor %mm2,%mm0
14151 ++ shlb $4,%cl
14152 ++ psrlq $4,%mm0
14153 ++ movq %mm1,%mm2
14154 ++ psrlq $4,%mm1
14155 ++ pxor 8(%esi,%ecx,1),%mm0
14156 ++ psllq $60,%mm2
14157 ++ andl $240,%edx
14158 ++ pxor (%eax,%ebp,8),%mm1
14159 ++ andl $15,%ebx
14160 ++ pxor (%esi,%ecx,1),%mm1
14161 ++ movd %mm0,%ebp
14162 ++ pxor %mm2,%mm0
14163 ++ psrlq $4,%mm0
14164 ++ movq %mm1,%mm2
14165 ++ psrlq $4,%mm1
14166 ++ pxor 8(%esi,%edx,1),%mm0
14167 ++ movb 6(%edi),%cl
14168 ++ psllq $60,%mm2
14169 ++ pxor (%eax,%ebx,8),%mm1
14170 ++ andl $15,%ebp
14171 ++ pxor (%esi,%edx,1),%mm1
14172 ++ movl %ecx,%edx
14173 ++ movd %mm0,%ebx
14174 ++ pxor %mm2,%mm0
14175 ++ shlb $4,%cl
14176 ++ psrlq $4,%mm0
14177 ++ movq %mm1,%mm2
14178 ++ psrlq $4,%mm1
14179 ++ pxor 8(%esi,%ecx,1),%mm0
14180 ++ psllq $60,%mm2
14181 ++ andl $240,%edx
14182 ++ pxor (%eax,%ebp,8),%mm1
14183 ++ andl $15,%ebx
14184 ++ pxor (%esi,%ecx,1),%mm1
14185 ++ movd %mm0,%ebp
14186 ++ pxor %mm2,%mm0
14187 ++ psrlq $4,%mm0
14188 ++ movq %mm1,%mm2
14189 ++ psrlq $4,%mm1
14190 ++ pxor 8(%esi,%edx,1),%mm0
14191 ++ movb 5(%edi),%cl
14192 ++ psllq $60,%mm2
14193 ++ pxor (%eax,%ebx,8),%mm1
14194 ++ andl $15,%ebp
14195 ++ pxor (%esi,%edx,1),%mm1
14196 ++ movl %ecx,%edx
14197 ++ movd %mm0,%ebx
14198 ++ pxor %mm2,%mm0
14199 ++ shlb $4,%cl
14200 ++ psrlq $4,%mm0
14201 ++ movq %mm1,%mm2
14202 ++ psrlq $4,%mm1
14203 ++ pxor 8(%esi,%ecx,1),%mm0
14204 ++ psllq $60,%mm2
14205 ++ andl $240,%edx
14206 ++ pxor (%eax,%ebp,8),%mm1
14207 ++ andl $15,%ebx
14208 ++ pxor (%esi,%ecx,1),%mm1
14209 ++ movd %mm0,%ebp
14210 ++ pxor %mm2,%mm0
14211 ++ psrlq $4,%mm0
14212 ++ movq %mm1,%mm2
14213 ++ psrlq $4,%mm1
14214 ++ pxor 8(%esi,%edx,1),%mm0
14215 ++ movb 4(%edi),%cl
14216 ++ psllq $60,%mm2
14217 ++ pxor (%eax,%ebx,8),%mm1
14218 ++ andl $15,%ebp
14219 ++ pxor (%esi,%edx,1),%mm1
14220 ++ movl %ecx,%edx
14221 ++ movd %mm0,%ebx
14222 ++ pxor %mm2,%mm0
14223 ++ shlb $4,%cl
14224 ++ psrlq $4,%mm0
14225 ++ movq %mm1,%mm2
14226 ++ psrlq $4,%mm1
14227 ++ pxor 8(%esi,%ecx,1),%mm0
14228 ++ psllq $60,%mm2
14229 ++ andl $240,%edx
14230 ++ pxor (%eax,%ebp,8),%mm1
14231 ++ andl $15,%ebx
14232 ++ pxor (%esi,%ecx,1),%mm1
14233 ++ movd %mm0,%ebp
14234 ++ pxor %mm2,%mm0
14235 ++ psrlq $4,%mm0
14236 ++ movq %mm1,%mm2
14237 ++ psrlq $4,%mm1
14238 ++ pxor 8(%esi,%edx,1),%mm0
14239 ++ movb 3(%edi),%cl
14240 ++ psllq $60,%mm2
14241 ++ pxor (%eax,%ebx,8),%mm1
14242 ++ andl $15,%ebp
14243 ++ pxor (%esi,%edx,1),%mm1
14244 ++ movl %ecx,%edx
14245 ++ movd %mm0,%ebx
14246 ++ pxor %mm2,%mm0
14247 ++ shlb $4,%cl
14248 ++ psrlq $4,%mm0
14249 ++ movq %mm1,%mm2
14250 ++ psrlq $4,%mm1
14251 ++ pxor 8(%esi,%ecx,1),%mm0
14252 ++ psllq $60,%mm2
14253 ++ andl $240,%edx
14254 ++ pxor (%eax,%ebp,8),%mm1
14255 ++ andl $15,%ebx
14256 ++ pxor (%esi,%ecx,1),%mm1
14257 ++ movd %mm0,%ebp
14258 ++ pxor %mm2,%mm0
14259 ++ psrlq $4,%mm0
14260 ++ movq %mm1,%mm2
14261 ++ psrlq $4,%mm1
14262 ++ pxor 8(%esi,%edx,1),%mm0
14263 ++ movb 2(%edi),%cl
14264 ++ psllq $60,%mm2
14265 ++ pxor (%eax,%ebx,8),%mm1
14266 ++ andl $15,%ebp
14267 ++ pxor (%esi,%edx,1),%mm1
14268 ++ movl %ecx,%edx
14269 ++ movd %mm0,%ebx
14270 ++ pxor %mm2,%mm0
14271 ++ shlb $4,%cl
14272 ++ psrlq $4,%mm0
14273 ++ movq %mm1,%mm2
14274 ++ psrlq $4,%mm1
14275 ++ pxor 8(%esi,%ecx,1),%mm0
14276 ++ psllq $60,%mm2
14277 ++ andl $240,%edx
14278 ++ pxor (%eax,%ebp,8),%mm1
14279 ++ andl $15,%ebx
14280 ++ pxor (%esi,%ecx,1),%mm1
14281 ++ movd %mm0,%ebp
14282 ++ pxor %mm2,%mm0
14283 ++ psrlq $4,%mm0
14284 ++ movq %mm1,%mm2
14285 ++ psrlq $4,%mm1
14286 ++ pxor 8(%esi,%edx,1),%mm0
14287 ++ movb 1(%edi),%cl
14288 ++ psllq $60,%mm2
14289 ++ pxor (%eax,%ebx,8),%mm1
14290 ++ andl $15,%ebp
14291 ++ pxor (%esi,%edx,1),%mm1
14292 ++ movl %ecx,%edx
14293 ++ movd %mm0,%ebx
14294 ++ pxor %mm2,%mm0
14295 ++ shlb $4,%cl
14296 ++ psrlq $4,%mm0
14297 ++ movq %mm1,%mm2
14298 ++ psrlq $4,%mm1
14299 ++ pxor 8(%esi,%ecx,1),%mm0
14300 ++ psllq $60,%mm2
14301 ++ andl $240,%edx
14302 ++ pxor (%eax,%ebp,8),%mm1
14303 ++ andl $15,%ebx
14304 ++ pxor (%esi,%ecx,1),%mm1
14305 ++ movd %mm0,%ebp
14306 ++ pxor %mm2,%mm0
14307 ++ psrlq $4,%mm0
14308 ++ movq %mm1,%mm2
14309 ++ psrlq $4,%mm1
14310 ++ pxor 8(%esi,%edx,1),%mm0
14311 ++ movb (%edi),%cl
14312 ++ psllq $60,%mm2
14313 ++ pxor (%eax,%ebx,8),%mm1
14314 ++ andl $15,%ebp
14315 ++ pxor (%esi,%edx,1),%mm1
14316 ++ movl %ecx,%edx
14317 ++ movd %mm0,%ebx
14318 ++ pxor %mm2,%mm0
14319 ++ shlb $4,%cl
14320 ++ psrlq $4,%mm0
14321 ++ movq %mm1,%mm2
14322 ++ psrlq $4,%mm1
14323 ++ pxor 8(%esi,%ecx,1),%mm0
14324 ++ psllq $60,%mm2
14325 ++ andl $240,%edx
14326 ++ pxor (%eax,%ebp,8),%mm1
14327 ++ andl $15,%ebx
14328 ++ pxor (%esi,%ecx,1),%mm1
14329 ++ movd %mm0,%ebp
14330 ++ pxor %mm2,%mm0
14331 ++ psrlq $4,%mm0
14332 ++ movq %mm1,%mm2
14333 ++ psrlq $4,%mm1
14334 ++ pxor 8(%esi,%edx,1),%mm0
14335 ++ psllq $60,%mm2
14336 ++ pxor (%eax,%ebx,8),%mm1
14337 ++ andl $15,%ebp
14338 ++ pxor (%esi,%edx,1),%mm1
14339 ++ movd %mm0,%ebx
14340 ++ pxor %mm2,%mm0
14341 ++ movl 4(%eax,%ebp,8),%edi
14342 ++ psrlq $32,%mm0
14343 ++ movd %mm1,%edx
14344 ++ psrlq $32,%mm1
14345 ++ movd %mm0,%ecx
14346 ++ movd %mm1,%ebp
14347 ++ shll $4,%edi
14348 ++ bswap %ebx
14349 ++ bswap %edx
14350 ++ bswap %ecx
14351 ++ xorl %edi,%ebp
14352 ++ bswap %ebp
14353 ++ ret
14354 ++.globl _gcm_gmult_4bit_mmx
14355 ++.align 4
14356 ++_gcm_gmult_4bit_mmx:
14357 ++L_gcm_gmult_4bit_mmx_begin:
14358 ++ pushl %ebp
14359 ++ pushl %ebx
14360 ++ pushl %esi
14361 ++ pushl %edi
14362 ++ movl 20(%esp),%edi
14363 ++ movl 24(%esp),%esi
14364 ++ call L005pic_point
14365 ++L005pic_point:
14366 ++ popl %eax
14367 ++ leal Lrem_4bit-L005pic_point(%eax),%eax
14368 ++ movzbl 15(%edi),%ebx
14369 ++ call __mmx_gmult_4bit_inner
14370 ++ movl 20(%esp),%edi
14371 ++ emms
14372 ++ movl %ebx,12(%edi)
14373 ++ movl %edx,4(%edi)
14374 ++ movl %ecx,8(%edi)
14375 ++ movl %ebp,(%edi)
14376 ++ popl %edi
14377 ++ popl %esi
14378 ++ popl %ebx
14379 ++ popl %ebp
14380 ++ ret
14381 ++.globl _gcm_ghash_4bit_mmx
14382 ++.align 4
14383 ++_gcm_ghash_4bit_mmx:
14384 ++L_gcm_ghash_4bit_mmx_begin:
14385 ++ pushl %ebp
14386 ++ pushl %ebx
14387 ++ pushl %esi
14388 ++ pushl %edi
14389 ++ movl 20(%esp),%ebp
14390 ++ movl 24(%esp),%esi
14391 ++ movl 28(%esp),%edi
14392 ++ movl 32(%esp),%ecx
14393 ++ call L006pic_point
14394 ++L006pic_point:
14395 ++ popl %eax
14396 ++ leal Lrem_4bit-L006pic_point(%eax),%eax
14397 ++ addl %edi,%ecx
14398 ++ movl %ecx,32(%esp)
14399 ++ subl $20,%esp
14400 ++ movl 12(%ebp),%ebx
14401 ++ movl 4(%ebp),%edx
14402 ++ movl 8(%ebp),%ecx
14403 ++ movl (%ebp),%ebp
14404 ++ jmp L007mmx_outer_loop
14405 ++.align 4,0x90
14406 ++L007mmx_outer_loop:
14407 ++ xorl 12(%edi),%ebx
14408 ++ xorl 4(%edi),%edx
14409 ++ xorl 8(%edi),%ecx
14410 ++ xorl (%edi),%ebp
14411 ++ movl %edi,48(%esp)
14412 ++ movl %ebx,12(%esp)
14413 ++ movl %edx,4(%esp)
14414 ++ movl %ecx,8(%esp)
14415 ++ movl %ebp,(%esp)
14416 ++ movl %esp,%edi
14417 ++ shrl $24,%ebx
14418 ++ call __mmx_gmult_4bit_inner
14419 ++ movl 48(%esp),%edi
14420 ++ leal 16(%edi),%edi
14421 ++ cmpl 52(%esp),%edi
14422 ++ jb L007mmx_outer_loop
14423 ++ movl 40(%esp),%edi
14424 ++ emms
14425 ++ movl %ebx,12(%edi)
14426 ++ movl %edx,4(%edi)
14427 ++ movl %ecx,8(%edi)
14428 ++ movl %ebp,(%edi)
14429 ++ addl $20,%esp
14430 ++ popl %edi
14431 ++ popl %esi
14432 ++ popl %ebx
14433 ++ popl %ebp
14434 ++ ret
14435 ++.align 6,0x90
14436 ++Lrem_4bit:
14437 ++.long 0,0,0,29491200,0,58982400,0,38141952
14438 ++.long 0,117964800,0,113901568,0,76283904,0,88997888
14439 ++.long 0,235929600,0,265420800,0,227803136,0,206962688
14440 ++.long 0,152567808,0,148504576,0,177995776,0,190709760
14441 ++.align 6,0x90
14442 ++L008rem_8bit:
14443 ++.value 0,450,900,582,1800,1738,1164,1358
14444 ++.value 3600,4050,3476,3158,2328,2266,2716,2910
14445 ++.value 7200,7650,8100,7782,6952,6890,6316,6510
14446 ++.value 4656,5106,4532,4214,5432,5370,5820,6014
14447 ++.value 14400,14722,15300,14854,16200,16010,15564,15630
14448 ++.value 13904,14226,13780,13334,12632,12442,13020,13086
14449 ++.value 9312,9634,10212,9766,9064,8874,8428,8494
14450 ++.value 10864,11186,10740,10294,11640,11450,12028,12094
14451 ++.value 28800,28994,29444,29382,30600,30282,29708,30158
14452 ++.value 32400,32594,32020,31958,31128,30810,31260,31710
14453 ++.value 27808,28002,28452,28390,27560,27242,26668,27118
14454 ++.value 25264,25458,24884,24822,26040,25722,26172,26622
14455 ++.value 18624,18690,19268,19078,20424,19978,19532,19854
14456 ++.value 18128,18194,17748,17558,16856,16410,16988,17310
14457 ++.value 21728,21794,22372,22182,21480,21034,20588,20910
14458 ++.value 23280,23346,22900,22710,24056,23610,24188,24510
14459 ++.value 57600,57538,57988,58182,58888,59338,58764,58446
14460 ++.value 61200,61138,60564,60758,59416,59866,60316,59998
14461 ++.value 64800,64738,65188,65382,64040,64490,63916,63598
14462 ++.value 62256,62194,61620,61814,62520,62970,63420,63102
14463 ++.value 55616,55426,56004,56070,56904,57226,56780,56334
14464 ++.value 55120,54930,54484,54550,53336,53658,54236,53790
14465 ++.value 50528,50338,50916,50982,49768,50090,49644,49198
14466 ++.value 52080,51890,51444,51510,52344,52666,53244,52798
14467 ++.value 37248,36930,37380,37830,38536,38730,38156,38094
14468 ++.value 40848,40530,39956,40406,39064,39258,39708,39646
14469 ++.value 36256,35938,36388,36838,35496,35690,35116,35054
14470 ++.value 33712,33394,32820,33270,33976,34170,34620,34558
14471 ++.value 43456,43010,43588,43910,44744,44810,44364,44174
14472 ++.value 42960,42514,42068,42390,41176,41242,41820,41630
14473 ++.value 46560,46114,46692,47014,45800,45866,45420,45230
14474 ++.value 48112,47666,47220,47542,48376,48442,49020,48830
14475 ++.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
14476 ++.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
14477 ++.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
14478 ++.byte 0
14479 +diff --git a/crypto/sha/asm/sha1-586-mac.S b/crypto/sha/asm/sha1-586-mac.S
14480 +new file mode 100644
14481 +index 0000000..b843b80
14482 +--- /dev/null
14483 ++++ b/crypto/sha/asm/sha1-586-mac.S
14484 +@@ -0,0 +1,1378 @@
14485 ++.file "sha1-586.s"
14486 ++.text
14487 ++.globl _sha1_block_data_order
14488 ++.align 4
14489 ++_sha1_block_data_order:
14490 ++L_sha1_block_data_order_begin:
14491 ++ pushl %ebp
14492 ++ pushl %ebx
14493 ++ pushl %esi
14494 ++ pushl %edi
14495 ++ movl 20(%esp),%ebp
14496 ++ movl 24(%esp),%esi
14497 ++ movl 28(%esp),%eax
14498 ++ subl $76,%esp
14499 ++ shll $6,%eax
14500 ++ addl %esi,%eax
14501 ++ movl %eax,104(%esp)
14502 ++ movl 16(%ebp),%edi
14503 ++ jmp L000loop
14504 ++.align 4,0x90
14505 ++L000loop:
14506 ++ movl (%esi),%eax
14507 ++ movl 4(%esi),%ebx
14508 ++ movl 8(%esi),%ecx
14509 ++ movl 12(%esi),%edx
14510 ++ bswap %eax
14511 ++ bswap %ebx
14512 ++ bswap %ecx
14513 ++ bswap %edx
14514 ++ movl %eax,(%esp)
14515 ++ movl %ebx,4(%esp)
14516 ++ movl %ecx,8(%esp)
14517 ++ movl %edx,12(%esp)
14518 ++ movl 16(%esi),%eax
14519 ++ movl 20(%esi),%ebx
14520 ++ movl 24(%esi),%ecx
14521 ++ movl 28(%esi),%edx
14522 ++ bswap %eax
14523 ++ bswap %ebx
14524 ++ bswap %ecx
14525 ++ bswap %edx
14526 ++ movl %eax,16(%esp)
14527 ++ movl %ebx,20(%esp)
14528 ++ movl %ecx,24(%esp)
14529 ++ movl %edx,28(%esp)
14530 ++ movl 32(%esi),%eax
14531 ++ movl 36(%esi),%ebx
14532 ++ movl 40(%esi),%ecx
14533 ++ movl 44(%esi),%edx
14534 ++ bswap %eax
14535 ++ bswap %ebx
14536 ++ bswap %ecx
14537 ++ bswap %edx
14538 ++ movl %eax,32(%esp)
14539 ++ movl %ebx,36(%esp)
14540 ++ movl %ecx,40(%esp)
14541 ++ movl %edx,44(%esp)
14542 ++ movl 48(%esi),%eax
14543 ++ movl 52(%esi),%ebx
14544 ++ movl 56(%esi),%ecx
14545 ++ movl 60(%esi),%edx
14546 ++ bswap %eax
14547 ++ bswap %ebx
14548 ++ bswap %ecx
14549 ++ bswap %edx
14550 ++ movl %eax,48(%esp)
14551 ++ movl %ebx,52(%esp)
14552 ++ movl %ecx,56(%esp)
14553 ++ movl %edx,60(%esp)
14554 ++ movl %esi,100(%esp)
14555 ++ movl (%ebp),%eax
14556 ++ movl 4(%ebp),%ebx
14557 ++ movl 8(%ebp),%ecx
14558 ++ movl 12(%ebp),%edx
14559 ++ # 00_15 0
14560 ++ movl %ecx,%esi
14561 ++ movl %eax,%ebp
14562 ++ roll $5,%ebp
14563 ++ xorl %edx,%esi
14564 ++ addl %edi,%ebp
14565 ++ movl (%esp),%edi
14566 ++ andl %ebx,%esi
14567 ++ rorl $2,%ebx
14568 ++ xorl %edx,%esi
14569 ++ leal 1518500249(%ebp,%edi,1),%ebp
14570 ++ addl %esi,%ebp
14571 ++ # 00_15 1
14572 ++ movl %ebx,%edi
14573 ++ movl %ebp,%esi
14574 ++ roll $5,%ebp
14575 ++ xorl %ecx,%edi
14576 ++ addl %edx,%ebp
14577 ++ movl 4(%esp),%edx
14578 ++ andl %eax,%edi
14579 ++ rorl $2,%eax
14580 ++ xorl %ecx,%edi
14581 ++ leal 1518500249(%ebp,%edx,1),%ebp
14582 ++ addl %edi,%ebp
14583 ++ # 00_15 2
14584 ++ movl %eax,%edx
14585 ++ movl %ebp,%edi
14586 ++ roll $5,%ebp
14587 ++ xorl %ebx,%edx
14588 ++ addl %ecx,%ebp
14589 ++ movl 8(%esp),%ecx
14590 ++ andl %esi,%edx
14591 ++ rorl $2,%esi
14592 ++ xorl %ebx,%edx
14593 ++ leal 1518500249(%ebp,%ecx,1),%ebp
14594 ++ addl %edx,%ebp
14595 ++ # 00_15 3
14596 ++ movl %esi,%ecx
14597 ++ movl %ebp,%edx
14598 ++ roll $5,%ebp
14599 ++ xorl %eax,%ecx
14600 ++ addl %ebx,%ebp
14601 ++ movl 12(%esp),%ebx
14602 ++ andl %edi,%ecx
14603 ++ rorl $2,%edi
14604 ++ xorl %eax,%ecx
14605 ++ leal 1518500249(%ebp,%ebx,1),%ebp
14606 ++ addl %ecx,%ebp
14607 ++ # 00_15 4
14608 ++ movl %edi,%ebx
14609 ++ movl %ebp,%ecx
14610 ++ roll $5,%ebp
14611 ++ xorl %esi,%ebx
14612 ++ addl %eax,%ebp
14613 ++ movl 16(%esp),%eax
14614 ++ andl %edx,%ebx
14615 ++ rorl $2,%edx
14616 ++ xorl %esi,%ebx
14617 ++ leal 1518500249(%ebp,%eax,1),%ebp
14618 ++ addl %ebx,%ebp
14619 ++ # 00_15 5
14620 ++ movl %edx,%eax
14621 ++ movl %ebp,%ebx
14622 ++ roll $5,%ebp
14623 ++ xorl %edi,%eax
14624 ++ addl %esi,%ebp
14625 ++ movl 20(%esp),%esi
14626 ++ andl %ecx,%eax
14627 ++ rorl $2,%ecx
14628 ++ xorl %edi,%eax
14629 ++ leal 1518500249(%ebp,%esi,1),%ebp
14630 ++ addl %eax,%ebp
14631 ++ # 00_15 6
14632 ++ movl %ecx,%esi
14633 ++ movl %ebp,%eax
14634 ++ roll $5,%ebp
14635 ++ xorl %edx,%esi
14636 ++ addl %edi,%ebp
14637 ++ movl 24(%esp),%edi
14638 ++ andl %ebx,%esi
14639 ++ rorl $2,%ebx
14640 ++ xorl %edx,%esi
14641 ++ leal 1518500249(%ebp,%edi,1),%ebp
14642 ++ addl %esi,%ebp
14643 ++ # 00_15 7
14644 ++ movl %ebx,%edi
14645 ++ movl %ebp,%esi
14646 ++ roll $5,%ebp
14647 ++ xorl %ecx,%edi
14648 ++ addl %edx,%ebp
14649 ++ movl 28(%esp),%edx
14650 ++ andl %eax,%edi
14651 ++ rorl $2,%eax
14652 ++ xorl %ecx,%edi
14653 ++ leal 1518500249(%ebp,%edx,1),%ebp
14654 ++ addl %edi,%ebp
14655 ++ # 00_15 8
14656 ++ movl %eax,%edx
14657 ++ movl %ebp,%edi
14658 ++ roll $5,%ebp
14659 ++ xorl %ebx,%edx
14660 ++ addl %ecx,%ebp
14661 ++ movl 32(%esp),%ecx
14662 ++ andl %esi,%edx
14663 ++ rorl $2,%esi
14664 ++ xorl %ebx,%edx
14665 ++ leal 1518500249(%ebp,%ecx,1),%ebp
14666 ++ addl %edx,%ebp
14667 ++ # 00_15 9
14668 ++ movl %esi,%ecx
14669 ++ movl %ebp,%edx
14670 ++ roll $5,%ebp
14671 ++ xorl %eax,%ecx
14672 ++ addl %ebx,%ebp
14673 ++ movl 36(%esp),%ebx
14674 ++ andl %edi,%ecx
14675 ++ rorl $2,%edi
14676 ++ xorl %eax,%ecx
14677 ++ leal 1518500249(%ebp,%ebx,1),%ebp
14678 ++ addl %ecx,%ebp
14679 ++ # 00_15 10
14680 ++ movl %edi,%ebx
14681 ++ movl %ebp,%ecx
14682 ++ roll $5,%ebp
14683 ++ xorl %esi,%ebx
14684 ++ addl %eax,%ebp
14685 ++ movl 40(%esp),%eax
14686 ++ andl %edx,%ebx
14687 ++ rorl $2,%edx
14688 ++ xorl %esi,%ebx
14689 ++ leal 1518500249(%ebp,%eax,1),%ebp
14690 ++ addl %ebx,%ebp
14691 ++ # 00_15 11
14692 ++ movl %edx,%eax
14693 ++ movl %ebp,%ebx
14694 ++ roll $5,%ebp
14695 ++ xorl %edi,%eax
14696 ++ addl %esi,%ebp
14697 ++ movl 44(%esp),%esi
14698 ++ andl %ecx,%eax
14699 ++ rorl $2,%ecx
14700 ++ xorl %edi,%eax
14701 ++ leal 1518500249(%ebp,%esi,1),%ebp
14702 ++ addl %eax,%ebp
14703 ++ # 00_15 12
14704 ++ movl %ecx,%esi
14705 ++ movl %ebp,%eax
14706 ++ roll $5,%ebp
14707 ++ xorl %edx,%esi
14708 ++ addl %edi,%ebp
14709 ++ movl 48(%esp),%edi
14710 ++ andl %ebx,%esi
14711 ++ rorl $2,%ebx
14712 ++ xorl %edx,%esi
14713 ++ leal 1518500249(%ebp,%edi,1),%ebp
14714 ++ addl %esi,%ebp
14715 ++ # 00_15 13
14716 ++ movl %ebx,%edi
14717 ++ movl %ebp,%esi
14718 ++ roll $5,%ebp
14719 ++ xorl %ecx,%edi
14720 ++ addl %edx,%ebp
14721 ++ movl 52(%esp),%edx
14722 ++ andl %eax,%edi
14723 ++ rorl $2,%eax
14724 ++ xorl %ecx,%edi
14725 ++ leal 1518500249(%ebp,%edx,1),%ebp
14726 ++ addl %edi,%ebp
14727 ++ # 00_15 14
14728 ++ movl %eax,%edx
14729 ++ movl %ebp,%edi
14730 ++ roll $5,%ebp
14731 ++ xorl %ebx,%edx
14732 ++ addl %ecx,%ebp
14733 ++ movl 56(%esp),%ecx
14734 ++ andl %esi,%edx
14735 ++ rorl $2,%esi
14736 ++ xorl %ebx,%edx
14737 ++ leal 1518500249(%ebp,%ecx,1),%ebp
14738 ++ addl %edx,%ebp
14739 ++ # 00_15 15
14740 ++ movl %esi,%ecx
14741 ++ movl %ebp,%edx
14742 ++ roll $5,%ebp
14743 ++ xorl %eax,%ecx
14744 ++ addl %ebx,%ebp
14745 ++ movl 60(%esp),%ebx
14746 ++ andl %edi,%ecx
14747 ++ rorl $2,%edi
14748 ++ xorl %eax,%ecx
14749 ++ leal 1518500249(%ebp,%ebx,1),%ebp
14750 ++ movl (%esp),%ebx
14751 ++ addl %ebp,%ecx
14752 ++ # 16_19 16
14753 ++ movl %edi,%ebp
14754 ++ xorl 8(%esp),%ebx
14755 ++ xorl %esi,%ebp
14756 ++ xorl 32(%esp),%ebx
14757 ++ andl %edx,%ebp
14758 ++ xorl 52(%esp),%ebx
14759 ++ roll $1,%ebx
14760 ++ xorl %esi,%ebp
14761 ++ addl %ebp,%eax
14762 ++ movl %ecx,%ebp
14763 ++ rorl $2,%edx
14764 ++ movl %ebx,(%esp)
14765 ++ roll $5,%ebp
14766 ++ leal 1518500249(%ebx,%eax,1),%ebx
14767 ++ movl 4(%esp),%eax
14768 ++ addl %ebp,%ebx
14769 ++ # 16_19 17
14770 ++ movl %edx,%ebp
14771 ++ xorl 12(%esp),%eax
14772 ++ xorl %edi,%ebp
14773 ++ xorl 36(%esp),%eax
14774 ++ andl %ecx,%ebp
14775 ++ xorl 56(%esp),%eax
14776 ++ roll $1,%eax
14777 ++ xorl %edi,%ebp
14778 ++ addl %ebp,%esi
14779 ++ movl %ebx,%ebp
14780 ++ rorl $2,%ecx
14781 ++ movl %eax,4(%esp)
14782 ++ roll $5,%ebp
14783 ++ leal 1518500249(%eax,%esi,1),%eax
14784 ++ movl 8(%esp),%esi
14785 ++ addl %ebp,%eax
14786 ++ # 16_19 18
14787 ++ movl %ecx,%ebp
14788 ++ xorl 16(%esp),%esi
14789 ++ xorl %edx,%ebp
14790 ++ xorl 40(%esp),%esi
14791 ++ andl %ebx,%ebp
14792 ++ xorl 60(%esp),%esi
14793 ++ roll $1,%esi
14794 ++ xorl %edx,%ebp
14795 ++ addl %ebp,%edi
14796 ++ movl %eax,%ebp
14797 ++ rorl $2,%ebx
14798 ++ movl %esi,8(%esp)
14799 ++ roll $5,%ebp
14800 ++ leal 1518500249(%esi,%edi,1),%esi
14801 ++ movl 12(%esp),%edi
14802 ++ addl %ebp,%esi
14803 ++ # 16_19 19
14804 ++ movl %ebx,%ebp
14805 ++ xorl 20(%esp),%edi
14806 ++ xorl %ecx,%ebp
14807 ++ xorl 44(%esp),%edi
14808 ++ andl %eax,%ebp
14809 ++ xorl (%esp),%edi
14810 ++ roll $1,%edi
14811 ++ xorl %ecx,%ebp
14812 ++ addl %ebp,%edx
14813 ++ movl %esi,%ebp
14814 ++ rorl $2,%eax
14815 ++ movl %edi,12(%esp)
14816 ++ roll $5,%ebp
14817 ++ leal 1518500249(%edi,%edx,1),%edi
14818 ++ movl 16(%esp),%edx
14819 ++ addl %ebp,%edi
14820 ++ # 20_39 20
14821 ++ movl %esi,%ebp
14822 ++ xorl 24(%esp),%edx
14823 ++ xorl %eax,%ebp
14824 ++ xorl 48(%esp),%edx
14825 ++ xorl %ebx,%ebp
14826 ++ xorl 4(%esp),%edx
14827 ++ roll $1,%edx
14828 ++ addl %ebp,%ecx
14829 ++ rorl $2,%esi
14830 ++ movl %edi,%ebp
14831 ++ roll $5,%ebp
14832 ++ movl %edx,16(%esp)
14833 ++ leal 1859775393(%edx,%ecx,1),%edx
14834 ++ movl 20(%esp),%ecx
14835 ++ addl %ebp,%edx
14836 ++ # 20_39 21
14837 ++ movl %edi,%ebp
14838 ++ xorl 28(%esp),%ecx
14839 ++ xorl %esi,%ebp
14840 ++ xorl 52(%esp),%ecx
14841 ++ xorl %eax,%ebp
14842 ++ xorl 8(%esp),%ecx
14843 ++ roll $1,%ecx
14844 ++ addl %ebp,%ebx
14845 ++ rorl $2,%edi
14846 ++ movl %edx,%ebp
14847 ++ roll $5,%ebp
14848 ++ movl %ecx,20(%esp)
14849 ++ leal 1859775393(%ecx,%ebx,1),%ecx
14850 ++ movl 24(%esp),%ebx
14851 ++ addl %ebp,%ecx
14852 ++ # 20_39 22
14853 ++ movl %edx,%ebp
14854 ++ xorl 32(%esp),%ebx
14855 ++ xorl %edi,%ebp
14856 ++ xorl 56(%esp),%ebx
14857 ++ xorl %esi,%ebp
14858 ++ xorl 12(%esp),%ebx
14859 ++ roll $1,%ebx
14860 ++ addl %ebp,%eax
14861 ++ rorl $2,%edx
14862 ++ movl %ecx,%ebp
14863 ++ roll $5,%ebp
14864 ++ movl %ebx,24(%esp)
14865 ++ leal 1859775393(%ebx,%eax,1),%ebx
14866 ++ movl 28(%esp),%eax
14867 ++ addl %ebp,%ebx
14868 ++ # 20_39 23
14869 ++ movl %ecx,%ebp
14870 ++ xorl 36(%esp),%eax
14871 ++ xorl %edx,%ebp
14872 ++ xorl 60(%esp),%eax
14873 ++ xorl %edi,%ebp
14874 ++ xorl 16(%esp),%eax
14875 ++ roll $1,%eax
14876 ++ addl %ebp,%esi
14877 ++ rorl $2,%ecx
14878 ++ movl %ebx,%ebp
14879 ++ roll $5,%ebp
14880 ++ movl %eax,28(%esp)
14881 ++ leal 1859775393(%eax,%esi,1),%eax
14882 ++ movl 32(%esp),%esi
14883 ++ addl %ebp,%eax
14884 ++ # 20_39 24
14885 ++ movl %ebx,%ebp
14886 ++ xorl 40(%esp),%esi
14887 ++ xorl %ecx,%ebp
14888 ++ xorl (%esp),%esi
14889 ++ xorl %edx,%ebp
14890 ++ xorl 20(%esp),%esi
14891 ++ roll $1,%esi
14892 ++ addl %ebp,%edi
14893 ++ rorl $2,%ebx
14894 ++ movl %eax,%ebp
14895 ++ roll $5,%ebp
14896 ++ movl %esi,32(%esp)
14897 ++ leal 1859775393(%esi,%edi,1),%esi
14898 ++ movl 36(%esp),%edi
14899 ++ addl %ebp,%esi
14900 ++ # 20_39 25
14901 ++ movl %eax,%ebp
14902 ++ xorl 44(%esp),%edi
14903 ++ xorl %ebx,%ebp
14904 ++ xorl 4(%esp),%edi
14905 ++ xorl %ecx,%ebp
14906 ++ xorl 24(%esp),%edi
14907 ++ roll $1,%edi
14908 ++ addl %ebp,%edx
14909 ++ rorl $2,%eax
14910 ++ movl %esi,%ebp
14911 ++ roll $5,%ebp
14912 ++ movl %edi,36(%esp)
14913 ++ leal 1859775393(%edi,%edx,1),%edi
14914 ++ movl 40(%esp),%edx
14915 ++ addl %ebp,%edi
14916 ++ # 20_39 26
14917 ++ movl %esi,%ebp
14918 ++ xorl 48(%esp),%edx
14919 ++ xorl %eax,%ebp
14920 ++ xorl 8(%esp),%edx
14921 ++ xorl %ebx,%ebp
14922 ++ xorl 28(%esp),%edx
14923 ++ roll $1,%edx
14924 ++ addl %ebp,%ecx
14925 ++ rorl $2,%esi
14926 ++ movl %edi,%ebp
14927 ++ roll $5,%ebp
14928 ++ movl %edx,40(%esp)
14929 ++ leal 1859775393(%edx,%ecx,1),%edx
14930 ++ movl 44(%esp),%ecx
14931 ++ addl %ebp,%edx
14932 ++ # 20_39 27
14933 ++ movl %edi,%ebp
14934 ++ xorl 52(%esp),%ecx
14935 ++ xorl %esi,%ebp
14936 ++ xorl 12(%esp),%ecx
14937 ++ xorl %eax,%ebp
14938 ++ xorl 32(%esp),%ecx
14939 ++ roll $1,%ecx
14940 ++ addl %ebp,%ebx
14941 ++ rorl $2,%edi
14942 ++ movl %edx,%ebp
14943 ++ roll $5,%ebp
14944 ++ movl %ecx,44(%esp)
14945 ++ leal 1859775393(%ecx,%ebx,1),%ecx
14946 ++ movl 48(%esp),%ebx
14947 ++ addl %ebp,%ecx
14948 ++ # 20_39 28
14949 ++ movl %edx,%ebp
14950 ++ xorl 56(%esp),%ebx
14951 ++ xorl %edi,%ebp
14952 ++ xorl 16(%esp),%ebx
14953 ++ xorl %esi,%ebp
14954 ++ xorl 36(%esp),%ebx
14955 ++ roll $1,%ebx
14956 ++ addl %ebp,%eax
14957 ++ rorl $2,%edx
14958 ++ movl %ecx,%ebp
14959 ++ roll $5,%ebp
14960 ++ movl %ebx,48(%esp)
14961 ++ leal 1859775393(%ebx,%eax,1),%ebx
14962 ++ movl 52(%esp),%eax
14963 ++ addl %ebp,%ebx
14964 ++ # 20_39 29
14965 ++ movl %ecx,%ebp
14966 ++ xorl 60(%esp),%eax
14967 ++ xorl %edx,%ebp
14968 ++ xorl 20(%esp),%eax
14969 ++ xorl %edi,%ebp
14970 ++ xorl 40(%esp),%eax
14971 ++ roll $1,%eax
14972 ++ addl %ebp,%esi
14973 ++ rorl $2,%ecx
14974 ++ movl %ebx,%ebp
14975 ++ roll $5,%ebp
14976 ++ movl %eax,52(%esp)
14977 ++ leal 1859775393(%eax,%esi,1),%eax
14978 ++ movl 56(%esp),%esi
14979 ++ addl %ebp,%eax
14980 ++ # 20_39 30
14981 ++ movl %ebx,%ebp
14982 ++ xorl (%esp),%esi
14983 ++ xorl %ecx,%ebp
14984 ++ xorl 24(%esp),%esi
14985 ++ xorl %edx,%ebp
14986 ++ xorl 44(%esp),%esi
14987 ++ roll $1,%esi
14988 ++ addl %ebp,%edi
14989 ++ rorl $2,%ebx
14990 ++ movl %eax,%ebp
14991 ++ roll $5,%ebp
14992 ++ movl %esi,56(%esp)
14993 ++ leal 1859775393(%esi,%edi,1),%esi
14994 ++ movl 60(%esp),%edi
14995 ++ addl %ebp,%esi
14996 ++ # 20_39 31
14997 ++ movl %eax,%ebp
14998 ++ xorl 4(%esp),%edi
14999 ++ xorl %ebx,%ebp
15000 ++ xorl 28(%esp),%edi
15001 ++ xorl %ecx,%ebp
15002 ++ xorl 48(%esp),%edi
15003 ++ roll $1,%edi
15004 ++ addl %ebp,%edx
15005 ++ rorl $2,%eax
15006 ++ movl %esi,%ebp
15007 ++ roll $5,%ebp
15008 ++ movl %edi,60(%esp)
15009 ++ leal 1859775393(%edi,%edx,1),%edi
15010 ++ movl (%esp),%edx
15011 ++ addl %ebp,%edi
15012 ++ # 20_39 32
15013 ++ movl %esi,%ebp
15014 ++ xorl 8(%esp),%edx
15015 ++ xorl %eax,%ebp
15016 ++ xorl 32(%esp),%edx
15017 ++ xorl %ebx,%ebp
15018 ++ xorl 52(%esp),%edx
15019 ++ roll $1,%edx
15020 ++ addl %ebp,%ecx
15021 ++ rorl $2,%esi
15022 ++ movl %edi,%ebp
15023 ++ roll $5,%ebp
15024 ++ movl %edx,(%esp)
15025 ++ leal 1859775393(%edx,%ecx,1),%edx
15026 ++ movl 4(%esp),%ecx
15027 ++ addl %ebp,%edx
15028 ++ # 20_39 33
15029 ++ movl %edi,%ebp
15030 ++ xorl 12(%esp),%ecx
15031 ++ xorl %esi,%ebp
15032 ++ xorl 36(%esp),%ecx
15033 ++ xorl %eax,%ebp
15034 ++ xorl 56(%esp),%ecx
15035 ++ roll $1,%ecx
15036 ++ addl %ebp,%ebx
15037 ++ rorl $2,%edi
15038 ++ movl %edx,%ebp
15039 ++ roll $5,%ebp
15040 ++ movl %ecx,4(%esp)
15041 ++ leal 1859775393(%ecx,%ebx,1),%ecx
15042 ++ movl 8(%esp),%ebx
15043 ++ addl %ebp,%ecx
15044 ++ # 20_39 34
15045 ++ movl %edx,%ebp
15046 ++ xorl 16(%esp),%ebx
15047 ++ xorl %edi,%ebp
15048 ++ xorl 40(%esp),%ebx
15049 ++ xorl %esi,%ebp
15050 ++ xorl 60(%esp),%ebx
15051 ++ roll $1,%ebx
15052 ++ addl %ebp,%eax
15053 ++ rorl $2,%edx
15054 ++ movl %ecx,%ebp
15055 ++ roll $5,%ebp
15056 ++ movl %ebx,8(%esp)
15057 ++ leal 1859775393(%ebx,%eax,1),%ebx
15058 ++ movl 12(%esp),%eax
15059 ++ addl %ebp,%ebx
15060 ++ # 20_39 35
15061 ++ movl %ecx,%ebp
15062 ++ xorl 20(%esp),%eax
15063 ++ xorl %edx,%ebp
15064 ++ xorl 44(%esp),%eax
15065 ++ xorl %edi,%ebp
15066 ++ xorl (%esp),%eax
15067 ++ roll $1,%eax
15068 ++ addl %ebp,%esi
15069 ++ rorl $2,%ecx
15070 ++ movl %ebx,%ebp
15071 ++ roll $5,%ebp
15072 ++ movl %eax,12(%esp)
15073 ++ leal 1859775393(%eax,%esi,1),%eax
15074 ++ movl 16(%esp),%esi
15075 ++ addl %ebp,%eax
15076 ++ # 20_39 36
15077 ++ movl %ebx,%ebp
15078 ++ xorl 24(%esp),%esi
15079 ++ xorl %ecx,%ebp
15080 ++ xorl 48(%esp),%esi
15081 ++ xorl %edx,%ebp
15082 ++ xorl 4(%esp),%esi
15083 ++ roll $1,%esi
15084 ++ addl %ebp,%edi
15085 ++ rorl $2,%ebx
15086 ++ movl %eax,%ebp
15087 ++ roll $5,%ebp
15088 ++ movl %esi,16(%esp)
15089 ++ leal 1859775393(%esi,%edi,1),%esi
15090 ++ movl 20(%esp),%edi
15091 ++ addl %ebp,%esi
15092 ++ # 20_39 37
15093 ++ movl %eax,%ebp
15094 ++ xorl 28(%esp),%edi
15095 ++ xorl %ebx,%ebp
15096 ++ xorl 52(%esp),%edi
15097 ++ xorl %ecx,%ebp
15098 ++ xorl 8(%esp),%edi
15099 ++ roll $1,%edi
15100 ++ addl %ebp,%edx
15101 ++ rorl $2,%eax
15102 ++ movl %esi,%ebp
15103 ++ roll $5,%ebp
15104 ++ movl %edi,20(%esp)
15105 ++ leal 1859775393(%edi,%edx,1),%edi
15106 ++ movl 24(%esp),%edx
15107 ++ addl %ebp,%edi
15108 ++ # 20_39 38
15109 ++ movl %esi,%ebp
15110 ++ xorl 32(%esp),%edx
15111 ++ xorl %eax,%ebp
15112 ++ xorl 56(%esp),%edx
15113 ++ xorl %ebx,%ebp
15114 ++ xorl 12(%esp),%edx
15115 ++ roll $1,%edx
15116 ++ addl %ebp,%ecx
15117 ++ rorl $2,%esi
15118 ++ movl %edi,%ebp
15119 ++ roll $5,%ebp
15120 ++ movl %edx,24(%esp)
15121 ++ leal 1859775393(%edx,%ecx,1),%edx
15122 ++ movl 28(%esp),%ecx
15123 ++ addl %ebp,%edx
15124 ++ # 20_39 39
15125 ++ movl %edi,%ebp
15126 ++ xorl 36(%esp),%ecx
15127 ++ xorl %esi,%ebp
15128 ++ xorl 60(%esp),%ecx
15129 ++ xorl %eax,%ebp
15130 ++ xorl 16(%esp),%ecx
15131 ++ roll $1,%ecx
15132 ++ addl %ebp,%ebx
15133 ++ rorl $2,%edi
15134 ++ movl %edx,%ebp
15135 ++ roll $5,%ebp
15136 ++ movl %ecx,28(%esp)
15137 ++ leal 1859775393(%ecx,%ebx,1),%ecx
15138 ++ movl 32(%esp),%ebx
15139 ++ addl %ebp,%ecx
15140 ++ # 40_59 40
15141 ++ movl %edi,%ebp
15142 ++ xorl 40(%esp),%ebx
15143 ++ xorl %esi,%ebp
15144 ++ xorl (%esp),%ebx
15145 ++ andl %edx,%ebp
15146 ++ xorl 20(%esp),%ebx
15147 ++ roll $1,%ebx
15148 ++ addl %eax,%ebp
15149 ++ rorl $2,%edx
15150 ++ movl %ecx,%eax
15151 ++ roll $5,%eax
15152 ++ movl %ebx,32(%esp)
15153 ++ leal 2400959708(%ebx,%ebp,1),%ebx
15154 ++ movl %edi,%ebp
15155 ++ addl %eax,%ebx
15156 ++ andl %esi,%ebp
15157 ++ movl 36(%esp),%eax
15158 ++ addl %ebp,%ebx
15159 ++ # 40_59 41
15160 ++ movl %edx,%ebp
15161 ++ xorl 44(%esp),%eax
15162 ++ xorl %edi,%ebp
15163 ++ xorl 4(%esp),%eax
15164 ++ andl %ecx,%ebp
15165 ++ xorl 24(%esp),%eax
15166 ++ roll $1,%eax
15167 ++ addl %esi,%ebp
15168 ++ rorl $2,%ecx
15169 ++ movl %ebx,%esi
15170 ++ roll $5,%esi
15171 ++ movl %eax,36(%esp)
15172 ++ leal 2400959708(%eax,%ebp,1),%eax
15173 ++ movl %edx,%ebp
15174 ++ addl %esi,%eax
15175 ++ andl %edi,%ebp
15176 ++ movl 40(%esp),%esi
15177 ++ addl %ebp,%eax
15178 ++ # 40_59 42
15179 ++ movl %ecx,%ebp
15180 ++ xorl 48(%esp),%esi
15181 ++ xorl %edx,%ebp
15182 ++ xorl 8(%esp),%esi
15183 ++ andl %ebx,%ebp
15184 ++ xorl 28(%esp),%esi
15185 ++ roll $1,%esi
15186 ++ addl %edi,%ebp
15187 ++ rorl $2,%ebx
15188 ++ movl %eax,%edi
15189 ++ roll $5,%edi
15190 ++ movl %esi,40(%esp)
15191 ++ leal 2400959708(%esi,%ebp,1),%esi
15192 ++ movl %ecx,%ebp
15193 ++ addl %edi,%esi
15194 ++ andl %edx,%ebp
15195 ++ movl 44(%esp),%edi
15196 ++ addl %ebp,%esi
15197 ++ # 40_59 43
15198 ++ movl %ebx,%ebp
15199 ++ xorl 52(%esp),%edi
15200 ++ xorl %ecx,%ebp
15201 ++ xorl 12(%esp),%edi
15202 ++ andl %eax,%ebp
15203 ++ xorl 32(%esp),%edi
15204 ++ roll $1,%edi
15205 ++ addl %edx,%ebp
15206 ++ rorl $2,%eax
15207 ++ movl %esi,%edx
15208 ++ roll $5,%edx
15209 ++ movl %edi,44(%esp)
15210 ++ leal 2400959708(%edi,%ebp,1),%edi
15211 ++ movl %ebx,%ebp
15212 ++ addl %edx,%edi
15213 ++ andl %ecx,%ebp
15214 ++ movl 48(%esp),%edx
15215 ++ addl %ebp,%edi
15216 ++ # 40_59 44
15217 ++ movl %eax,%ebp
15218 ++ xorl 56(%esp),%edx
15219 ++ xorl %ebx,%ebp
15220 ++ xorl 16(%esp),%edx
15221 ++ andl %esi,%ebp
15222 ++ xorl 36(%esp),%edx
15223 ++ roll $1,%edx
15224 ++ addl %ecx,%ebp
15225 ++ rorl $2,%esi
15226 ++ movl %edi,%ecx
15227 ++ roll $5,%ecx
15228 ++ movl %edx,48(%esp)
15229 ++ leal 2400959708(%edx,%ebp,1),%edx
15230 ++ movl %eax,%ebp
15231 ++ addl %ecx,%edx
15232 ++ andl %ebx,%ebp
15233 ++ movl 52(%esp),%ecx
15234 ++ addl %ebp,%edx
15235 ++ # 40_59 45
15236 ++ movl %esi,%ebp
15237 ++ xorl 60(%esp),%ecx
15238 ++ xorl %eax,%ebp
15239 ++ xorl 20(%esp),%ecx
15240 ++ andl %edi,%ebp
15241 ++ xorl 40(%esp),%ecx
15242 ++ roll $1,%ecx
15243 ++ addl %ebx,%ebp
15244 ++ rorl $2,%edi
15245 ++ movl %edx,%ebx
15246 ++ roll $5,%ebx
15247 ++ movl %ecx,52(%esp)
15248 ++ leal 2400959708(%ecx,%ebp,1),%ecx
15249 ++ movl %esi,%ebp
15250 ++ addl %ebx,%ecx
15251 ++ andl %eax,%ebp
15252 ++ movl 56(%esp),%ebx
15253 ++ addl %ebp,%ecx
15254 ++ # 40_59 46
15255 ++ movl %edi,%ebp
15256 ++ xorl (%esp),%ebx
15257 ++ xorl %esi,%ebp
15258 ++ xorl 24(%esp),%ebx
15259 ++ andl %edx,%ebp
15260 ++ xorl 44(%esp),%ebx
15261 ++ roll $1,%ebx
15262 ++ addl %eax,%ebp
15263 ++ rorl $2,%edx
15264 ++ movl %ecx,%eax
15265 ++ roll $5,%eax
15266 ++ movl %ebx,56(%esp)
15267 ++ leal 2400959708(%ebx,%ebp,1),%ebx
15268 ++ movl %edi,%ebp
15269 ++ addl %eax,%ebx
15270 ++ andl %esi,%ebp
15271 ++ movl 60(%esp),%eax
15272 ++ addl %ebp,%ebx
15273 ++ # 40_59 47
15274 ++ movl %edx,%ebp
15275 ++ xorl 4(%esp),%eax
15276 ++ xorl %edi,%ebp
15277 ++ xorl 28(%esp),%eax
15278 ++ andl %ecx,%ebp
15279 ++ xorl 48(%esp),%eax
15280 ++ roll $1,%eax
15281 ++ addl %esi,%ebp
15282 ++ rorl $2,%ecx
15283 ++ movl %ebx,%esi
15284 ++ roll $5,%esi
15285 ++ movl %eax,60(%esp)
15286 ++ leal 2400959708(%eax,%ebp,1),%eax
15287 ++ movl %edx,%ebp
15288 ++ addl %esi,%eax
15289 ++ andl %edi,%ebp
15290 ++ movl (%esp),%esi
15291 ++ addl %ebp,%eax
15292 ++ # 40_59 48
15293 ++ movl %ecx,%ebp
15294 ++ xorl 8(%esp),%esi
15295 ++ xorl %edx,%ebp
15296 ++ xorl 32(%esp),%esi
15297 ++ andl %ebx,%ebp
15298 ++ xorl 52(%esp),%esi
15299 ++ roll $1,%esi
15300 ++ addl %edi,%ebp
15301 ++ rorl $2,%ebx
15302 ++ movl %eax,%edi
15303 ++ roll $5,%edi
15304 ++ movl %esi,(%esp)
15305 ++ leal 2400959708(%esi,%ebp,1),%esi
15306 ++ movl %ecx,%ebp
15307 ++ addl %edi,%esi
15308 ++ andl %edx,%ebp
15309 ++ movl 4(%esp),%edi
15310 ++ addl %ebp,%esi
15311 ++ # 40_59 49
15312 ++ movl %ebx,%ebp
15313 ++ xorl 12(%esp),%edi
15314 ++ xorl %ecx,%ebp
15315 ++ xorl 36(%esp),%edi
15316 ++ andl %eax,%ebp
15317 ++ xorl 56(%esp),%edi
15318 ++ roll $1,%edi
15319 ++ addl %edx,%ebp
15320 ++ rorl $2,%eax
15321 ++ movl %esi,%edx
15322 ++ roll $5,%edx
15323 ++ movl %edi,4(%esp)
15324 ++ leal 2400959708(%edi,%ebp,1),%edi
15325 ++ movl %ebx,%ebp
15326 ++ addl %edx,%edi
15327 ++ andl %ecx,%ebp
15328 ++ movl 8(%esp),%edx
15329 ++ addl %ebp,%edi
15330 ++ # 40_59 50
15331 ++ movl %eax,%ebp
15332 ++ xorl 16(%esp),%edx
15333 ++ xorl %ebx,%ebp
15334 ++ xorl 40(%esp),%edx
15335 ++ andl %esi,%ebp
15336 ++ xorl 60(%esp),%edx
15337 ++ roll $1,%edx
15338 ++ addl %ecx,%ebp
15339 ++ rorl $2,%esi
15340 ++ movl %edi,%ecx
15341 ++ roll $5,%ecx
15342 ++ movl %edx,8(%esp)
15343 ++ leal 2400959708(%edx,%ebp,1),%edx
15344 ++ movl %eax,%ebp
15345 ++ addl %ecx,%edx
15346 ++ andl %ebx,%ebp
15347 ++ movl 12(%esp),%ecx
15348 ++ addl %ebp,%edx
15349 ++ # 40_59 51
15350 ++ movl %esi,%ebp
15351 ++ xorl 20(%esp),%ecx
15352 ++ xorl %eax,%ebp
15353 ++ xorl 44(%esp),%ecx
15354 ++ andl %edi,%ebp
15355 ++ xorl (%esp),%ecx
15356 ++ roll $1,%ecx
15357 ++ addl %ebx,%ebp
15358 ++ rorl $2,%edi
15359 ++ movl %edx,%ebx
15360 ++ roll $5,%ebx
15361 ++ movl %ecx,12(%esp)
15362 ++ leal 2400959708(%ecx,%ebp,1),%ecx
15363 ++ movl %esi,%ebp
15364 ++ addl %ebx,%ecx
15365 ++ andl %eax,%ebp
15366 ++ movl 16(%esp),%ebx
15367 ++ addl %ebp,%ecx
15368 ++ # 40_59 52
15369 ++ movl %edi,%ebp
15370 ++ xorl 24(%esp),%ebx
15371 ++ xorl %esi,%ebp
15372 ++ xorl 48(%esp),%ebx
15373 ++ andl %edx,%ebp
15374 ++ xorl 4(%esp),%ebx
15375 ++ roll $1,%ebx
15376 ++ addl %eax,%ebp
15377 ++ rorl $2,%edx
15378 ++ movl %ecx,%eax
15379 ++ roll $5,%eax
15380 ++ movl %ebx,16(%esp)
15381 ++ leal 2400959708(%ebx,%ebp,1),%ebx
15382 ++ movl %edi,%ebp
15383 ++ addl %eax,%ebx
15384 ++ andl %esi,%ebp
15385 ++ movl 20(%esp),%eax
15386 ++ addl %ebp,%ebx
15387 ++ # 40_59 53
15388 ++ movl %edx,%ebp
15389 ++ xorl 28(%esp),%eax
15390 ++ xorl %edi,%ebp
15391 ++ xorl 52(%esp),%eax
15392 ++ andl %ecx,%ebp
15393 ++ xorl 8(%esp),%eax
15394 ++ roll $1,%eax
15395 ++ addl %esi,%ebp
15396 ++ rorl $2,%ecx
15397 ++ movl %ebx,%esi
15398 ++ roll $5,%esi
15399 ++ movl %eax,20(%esp)
15400 ++ leal 2400959708(%eax,%ebp,1),%eax
15401 ++ movl %edx,%ebp
15402 ++ addl %esi,%eax
15403 ++ andl %edi,%ebp
15404 ++ movl 24(%esp),%esi
15405 ++ addl %ebp,%eax
15406 ++ # 40_59 54
15407 ++ movl %ecx,%ebp
15408 ++ xorl 32(%esp),%esi
15409 ++ xorl %edx,%ebp
15410 ++ xorl 56(%esp),%esi
15411 ++ andl %ebx,%ebp
15412 ++ xorl 12(%esp),%esi
15413 ++ roll $1,%esi
15414 ++ addl %edi,%ebp
15415 ++ rorl $2,%ebx
15416 ++ movl %eax,%edi
15417 ++ roll $5,%edi
15418 ++ movl %esi,24(%esp)
15419 ++ leal 2400959708(%esi,%ebp,1),%esi
15420 ++ movl %ecx,%ebp
15421 ++ addl %edi,%esi
15422 ++ andl %edx,%ebp
15423 ++ movl 28(%esp),%edi
15424 ++ addl %ebp,%esi
15425 ++ # 40_59 55
15426 ++ movl %ebx,%ebp
15427 ++ xorl 36(%esp),%edi
15428 ++ xorl %ecx,%ebp
15429 ++ xorl 60(%esp),%edi
15430 ++ andl %eax,%ebp
15431 ++ xorl 16(%esp),%edi
15432 ++ roll $1,%edi
15433 ++ addl %edx,%ebp
15434 ++ rorl $2,%eax
15435 ++ movl %esi,%edx
15436 ++ roll $5,%edx
15437 ++ movl %edi,28(%esp)
15438 ++ leal 2400959708(%edi,%ebp,1),%edi
15439 ++ movl %ebx,%ebp
15440 ++ addl %edx,%edi
15441 ++ andl %ecx,%ebp
15442 ++ movl 32(%esp),%edx
15443 ++ addl %ebp,%edi
15444 ++ # 40_59 56
15445 ++ movl %eax,%ebp
15446 ++ xorl 40(%esp),%edx
15447 ++ xorl %ebx,%ebp
15448 ++ xorl (%esp),%edx
15449 ++ andl %esi,%ebp
15450 ++ xorl 20(%esp),%edx
15451 ++ roll $1,%edx
15452 ++ addl %ecx,%ebp
15453 ++ rorl $2,%esi
15454 ++ movl %edi,%ecx
15455 ++ roll $5,%ecx
15456 ++ movl %edx,32(%esp)
15457 ++ leal 2400959708(%edx,%ebp,1),%edx
15458 ++ movl %eax,%ebp
15459 ++ addl %ecx,%edx
15460 ++ andl %ebx,%ebp
15461 ++ movl 36(%esp),%ecx
15462 ++ addl %ebp,%edx
15463 ++ # 40_59 57
15464 ++ movl %esi,%ebp
15465 ++ xorl 44(%esp),%ecx
15466 ++ xorl %eax,%ebp
15467 ++ xorl 4(%esp),%ecx
15468 ++ andl %edi,%ebp
15469 ++ xorl 24(%esp),%ecx
15470 ++ roll $1,%ecx
15471 ++ addl %ebx,%ebp
15472 ++ rorl $2,%edi
15473 ++ movl %edx,%ebx
15474 ++ roll $5,%ebx
15475 ++ movl %ecx,36(%esp)
15476 ++ leal 2400959708(%ecx,%ebp,1),%ecx
15477 ++ movl %esi,%ebp
15478 ++ addl %ebx,%ecx
15479 ++ andl %eax,%ebp
15480 ++ movl 40(%esp),%ebx
15481 ++ addl %ebp,%ecx
15482 ++ # 40_59 58
15483 ++ movl %edi,%ebp
15484 ++ xorl 48(%esp),%ebx
15485 ++ xorl %esi,%ebp
15486 ++ xorl 8(%esp),%ebx
15487 ++ andl %edx,%ebp
15488 ++ xorl 28(%esp),%ebx
15489 ++ roll $1,%ebx
15490 ++ addl %eax,%ebp
15491 ++ rorl $2,%edx
15492 ++ movl %ecx,%eax
15493 ++ roll $5,%eax
15494 ++ movl %ebx,40(%esp)
15495 ++ leal 2400959708(%ebx,%ebp,1),%ebx
15496 ++ movl %edi,%ebp
15497 ++ addl %eax,%ebx
15498 ++ andl %esi,%ebp
15499 ++ movl 44(%esp),%eax
15500 ++ addl %ebp,%ebx
15501 ++ # 40_59 59
15502 ++ movl %edx,%ebp
15503 ++ xorl 52(%esp),%eax
15504 ++ xorl %edi,%ebp
15505 ++ xorl 12(%esp),%eax
15506 ++ andl %ecx,%ebp
15507 ++ xorl 32(%esp),%eax
15508 ++ roll $1,%eax
15509 ++ addl %esi,%ebp
15510 ++ rorl $2,%ecx
15511 ++ movl %ebx,%esi
15512 ++ roll $5,%esi
15513 ++ movl %eax,44(%esp)
15514 ++ leal 2400959708(%eax,%ebp,1),%eax
15515 ++ movl %edx,%ebp
15516 ++ addl %esi,%eax
15517 ++ andl %edi,%ebp
15518 ++ movl 48(%esp),%esi
15519 ++ addl %ebp,%eax
15520 ++ # 20_39 60
15521 ++ movl %ebx,%ebp
15522 ++ xorl 56(%esp),%esi
15523 ++ xorl %ecx,%ebp
15524 ++ xorl 16(%esp),%esi
15525 ++ xorl %edx,%ebp
15526 ++ xorl 36(%esp),%esi
15527 ++ roll $1,%esi
15528 ++ addl %ebp,%edi
15529 ++ rorl $2,%ebx
15530 ++ movl %eax,%ebp
15531 ++ roll $5,%ebp
15532 ++ movl %esi,48(%esp)
15533 ++ leal 3395469782(%esi,%edi,1),%esi
15534 ++ movl 52(%esp),%edi
15535 ++ addl %ebp,%esi
15536 ++ # 20_39 61
15537 ++ movl %eax,%ebp
15538 ++ xorl 60(%esp),%edi
15539 ++ xorl %ebx,%ebp
15540 ++ xorl 20(%esp),%edi
15541 ++ xorl %ecx,%ebp
15542 ++ xorl 40(%esp),%edi
15543 ++ roll $1,%edi
15544 ++ addl %ebp,%edx
15545 ++ rorl $2,%eax
15546 ++ movl %esi,%ebp
15547 ++ roll $5,%ebp
15548 ++ movl %edi,52(%esp)
15549 ++ leal 3395469782(%edi,%edx,1),%edi
15550 ++ movl 56(%esp),%edx
15551 ++ addl %ebp,%edi
15552 ++ # 20_39 62
15553 ++ movl %esi,%ebp
15554 ++ xorl (%esp),%edx
15555 ++ xorl %eax,%ebp
15556 ++ xorl 24(%esp),%edx
15557 ++ xorl %ebx,%ebp
15558 ++ xorl 44(%esp),%edx
15559 ++ roll $1,%edx
15560 ++ addl %ebp,%ecx
15561 ++ rorl $2,%esi
15562 ++ movl %edi,%ebp
15563 ++ roll $5,%ebp
15564 ++ movl %edx,56(%esp)
15565 ++ leal 3395469782(%edx,%ecx,1),%edx
15566 ++ movl 60(%esp),%ecx
15567 ++ addl %ebp,%edx
15568 ++ # 20_39 63
15569 ++ movl %edi,%ebp
15570 ++ xorl 4(%esp),%ecx
15571 ++ xorl %esi,%ebp
15572 ++ xorl 28(%esp),%ecx
15573 ++ xorl %eax,%ebp
15574 ++ xorl 48(%esp),%ecx
15575 ++ roll $1,%ecx
15576 ++ addl %ebp,%ebx
15577 ++ rorl $2,%edi
15578 ++ movl %edx,%ebp
15579 ++ roll $5,%ebp
15580 ++ movl %ecx,60(%esp)
15581 ++ leal 3395469782(%ecx,%ebx,1),%ecx
15582 ++ movl (%esp),%ebx
15583 ++ addl %ebp,%ecx
15584 ++ # 20_39 64
15585 ++ movl %edx,%ebp
15586 ++ xorl 8(%esp),%ebx
15587 ++ xorl %edi,%ebp
15588 ++ xorl 32(%esp),%ebx
15589 ++ xorl %esi,%ebp
15590 ++ xorl 52(%esp),%ebx
15591 ++ roll $1,%ebx
15592 ++ addl %ebp,%eax
15593 ++ rorl $2,%edx
15594 ++ movl %ecx,%ebp
15595 ++ roll $5,%ebp
15596 ++ movl %ebx,(%esp)
15597 ++ leal 3395469782(%ebx,%eax,1),%ebx
15598 ++ movl 4(%esp),%eax
15599 ++ addl %ebp,%ebx
15600 ++ # 20_39 65
15601 ++ movl %ecx,%ebp
15602 ++ xorl 12(%esp),%eax
15603 ++ xorl %edx,%ebp
15604 ++ xorl 36(%esp),%eax
15605 ++ xorl %edi,%ebp
15606 ++ xorl 56(%esp),%eax
15607 ++ roll $1,%eax
15608 ++ addl %ebp,%esi
15609 ++ rorl $2,%ecx
15610 ++ movl %ebx,%ebp
15611 ++ roll $5,%ebp
15612 ++ movl %eax,4(%esp)
15613 ++ leal 3395469782(%eax,%esi,1),%eax
15614 ++ movl 8(%esp),%esi
15615 ++ addl %ebp,%eax
15616 ++ # 20_39 66
15617 ++ movl %ebx,%ebp
15618 ++ xorl 16(%esp),%esi
15619 ++ xorl %ecx,%ebp
15620 ++ xorl 40(%esp),%esi
15621 ++ xorl %edx,%ebp
15622 ++ xorl 60(%esp),%esi
15623 ++ roll $1,%esi
15624 ++ addl %ebp,%edi
15625 ++ rorl $2,%ebx
15626 ++ movl %eax,%ebp
15627 ++ roll $5,%ebp
15628 ++ movl %esi,8(%esp)
15629 ++ leal 3395469782(%esi,%edi,1),%esi
15630 ++ movl 12(%esp),%edi
15631 ++ addl %ebp,%esi
15632 ++ # 20_39 67
15633 ++ movl %eax,%ebp
15634 ++ xorl 20(%esp),%edi
15635 ++ xorl %ebx,%ebp
15636 ++ xorl 44(%esp),%edi
15637 ++ xorl %ecx,%ebp
15638 ++ xorl (%esp),%edi
15639 ++ roll $1,%edi
15640 ++ addl %ebp,%edx
15641 ++ rorl $2,%eax
15642 ++ movl %esi,%ebp
15643 ++ roll $5,%ebp
15644 ++ movl %edi,12(%esp)
15645 ++ leal 3395469782(%edi,%edx,1),%edi
15646 ++ movl 16(%esp),%edx
15647 ++ addl %ebp,%edi
15648 ++ # 20_39 68
15649 ++ movl %esi,%ebp
15650 ++ xorl 24(%esp),%edx
15651 ++ xorl %eax,%ebp
15652 ++ xorl 48(%esp),%edx
15653 ++ xorl %ebx,%ebp
15654 ++ xorl 4(%esp),%edx
15655 ++ roll $1,%edx
15656 ++ addl %ebp,%ecx
15657 ++ rorl $2,%esi
15658 ++ movl %edi,%ebp
15659 ++ roll $5,%ebp
15660 ++ movl %edx,16(%esp)
15661 ++ leal 3395469782(%edx,%ecx,1),%edx
15662 ++ movl 20(%esp),%ecx
15663 ++ addl %ebp,%edx
15664 ++ # 20_39 69
15665 ++ movl %edi,%ebp
15666 ++ xorl 28(%esp),%ecx
15667 ++ xorl %esi,%ebp
15668 ++ xorl 52(%esp),%ecx
15669 ++ xorl %eax,%ebp
15670 ++ xorl 8(%esp),%ecx
15671 ++ roll $1,%ecx
15672 ++ addl %ebp,%ebx
15673 ++ rorl $2,%edi
15674 ++ movl %edx,%ebp
15675 ++ roll $5,%ebp
15676 ++ movl %ecx,20(%esp)
15677 ++ leal 3395469782(%ecx,%ebx,1),%ecx
15678 ++ movl 24(%esp),%ebx
15679 ++ addl %ebp,%ecx
15680 ++ # 20_39 70
15681 ++ movl %edx,%ebp
15682 ++ xorl 32(%esp),%ebx
15683 ++ xorl %edi,%ebp
15684 ++ xorl 56(%esp),%ebx
15685 ++ xorl %esi,%ebp
15686 ++ xorl 12(%esp),%ebx
15687 ++ roll $1,%ebx
15688 ++ addl %ebp,%eax
15689 ++ rorl $2,%edx
15690 ++ movl %ecx,%ebp
15691 ++ roll $5,%ebp
15692 ++ movl %ebx,24(%esp)
15693 ++ leal 3395469782(%ebx,%eax,1),%ebx
15694 ++ movl 28(%esp),%eax
15695 ++ addl %ebp,%ebx
15696 ++ # 20_39 71
15697 ++ movl %ecx,%ebp
15698 ++ xorl 36(%esp),%eax
15699 ++ xorl %edx,%ebp
15700 ++ xorl 60(%esp),%eax
15701 ++ xorl %edi,%ebp
15702 ++ xorl 16(%esp),%eax
15703 ++ roll $1,%eax
15704 ++ addl %ebp,%esi
15705 ++ rorl $2,%ecx
15706 ++ movl %ebx,%ebp
15707 ++ roll $5,%ebp
15708 ++ movl %eax,28(%esp)
15709 ++ leal 3395469782(%eax,%esi,1),%eax
15710 ++ movl 32(%esp),%esi
15711 ++ addl %ebp,%eax
15712 ++ # 20_39 72
15713 ++ movl %ebx,%ebp
15714 ++ xorl 40(%esp),%esi
15715 ++ xorl %ecx,%ebp
15716 ++ xorl (%esp),%esi
15717 ++ xorl %edx,%ebp
15718 ++ xorl 20(%esp),%esi
15719 ++ roll $1,%esi
15720 ++ addl %ebp,%edi
15721 ++ rorl $2,%ebx
15722 ++ movl %eax,%ebp
15723 ++ roll $5,%ebp
15724 ++ movl %esi,32(%esp)
15725 ++ leal 3395469782(%esi,%edi,1),%esi
15726 ++ movl 36(%esp),%edi
15727 ++ addl %ebp,%esi
15728 ++ # 20_39 73
15729 ++ movl %eax,%ebp
15730 ++ xorl 44(%esp),%edi
15731 ++ xorl %ebx,%ebp
15732 ++ xorl 4(%esp),%edi
15733 ++ xorl %ecx,%ebp
15734 ++ xorl 24(%esp),%edi
15735 ++ roll $1,%edi
15736 ++ addl %ebp,%edx
15737 ++ rorl $2,%eax
15738 ++ movl %esi,%ebp
15739 ++ roll $5,%ebp
15740 ++ movl %edi,36(%esp)
15741 ++ leal 3395469782(%edi,%edx,1),%edi
15742 ++ movl 40(%esp),%edx
15743 ++ addl %ebp,%edi
15744 ++ # 20_39 74
15745 ++ movl %esi,%ebp
15746 ++ xorl 48(%esp),%edx
15747 ++ xorl %eax,%ebp
15748 ++ xorl 8(%esp),%edx
15749 ++ xorl %ebx,%ebp
15750 ++ xorl 28(%esp),%edx
15751 ++ roll $1,%edx
15752 ++ addl %ebp,%ecx
15753 ++ rorl $2,%esi
15754 ++ movl %edi,%ebp
15755 ++ roll $5,%ebp
15756 ++ movl %edx,40(%esp)
15757 ++ leal 3395469782(%edx,%ecx,1),%edx
15758 ++ movl 44(%esp),%ecx
15759 ++ addl %ebp,%edx
15760 ++ # 20_39 75
15761 ++ movl %edi,%ebp
15762 ++ xorl 52(%esp),%ecx
15763 ++ xorl %esi,%ebp
15764 ++ xorl 12(%esp),%ecx
15765 ++ xorl %eax,%ebp
15766 ++ xorl 32(%esp),%ecx
15767 ++ roll $1,%ecx
15768 ++ addl %ebp,%ebx
15769 ++ rorl $2,%edi
15770 ++ movl %edx,%ebp
15771 ++ roll $5,%ebp
15772 ++ movl %ecx,44(%esp)
15773 ++ leal 3395469782(%ecx,%ebx,1),%ecx
15774 ++ movl 48(%esp),%ebx
15775 ++ addl %ebp,%ecx
15776 ++ # 20_39 76
15777 ++ movl %edx,%ebp
15778 ++ xorl 56(%esp),%ebx
15779 ++ xorl %edi,%ebp
15780 ++ xorl 16(%esp),%ebx
15781 ++ xorl %esi,%ebp
15782 ++ xorl 36(%esp),%ebx
15783 ++ roll $1,%ebx
15784 ++ addl %ebp,%eax
15785 ++ rorl $2,%edx
15786 ++ movl %ecx,%ebp
15787 ++ roll $5,%ebp
15788 ++ movl %ebx,48(%esp)
15789 ++ leal 3395469782(%ebx,%eax,1),%ebx
15790 ++ movl 52(%esp),%eax
15791 ++ addl %ebp,%ebx
15792 ++ # 20_39 77
15793 ++ movl %ecx,%ebp
15794 ++ xorl 60(%esp),%eax
15795 ++ xorl %edx,%ebp
15796 ++ xorl 20(%esp),%eax
15797 ++ xorl %edi,%ebp
15798 ++ xorl 40(%esp),%eax
15799 ++ roll $1,%eax
15800 ++ addl %ebp,%esi
15801 ++ rorl $2,%ecx
15802 ++ movl %ebx,%ebp
15803 ++ roll $5,%ebp
15804 ++ leal 3395469782(%eax,%esi,1),%eax
15805 ++ movl 56(%esp),%esi
15806 ++ addl %ebp,%eax
15807 ++ # 20_39 78
15808 ++ movl %ebx,%ebp
15809 ++ xorl (%esp),%esi
15810 ++ xorl %ecx,%ebp
15811 ++ xorl 24(%esp),%esi
15812 ++ xorl %edx,%ebp
15813 ++ xorl 44(%esp),%esi
15814 ++ roll $1,%esi
15815 ++ addl %ebp,%edi
15816 ++ rorl $2,%ebx
15817 ++ movl %eax,%ebp
15818 ++ roll $5,%ebp
15819 ++ leal 3395469782(%esi,%edi,1),%esi
15820 ++ movl 60(%esp),%edi
15821 ++ addl %ebp,%esi
15822 ++ # 20_39 79
15823 ++ movl %eax,%ebp
15824 ++ xorl 4(%esp),%edi
15825 ++ xorl %ebx,%ebp
15826 ++ xorl 28(%esp),%edi
15827 ++ xorl %ecx,%ebp
15828 ++ xorl 48(%esp),%edi
15829 ++ roll $1,%edi
15830 ++ addl %ebp,%edx
15831 ++ rorl $2,%eax
15832 ++ movl %esi,%ebp
15833 ++ roll $5,%ebp
15834 ++ leal 3395469782(%edi,%edx,1),%edi
15835 ++ addl %ebp,%edi
15836 ++ movl 96(%esp),%ebp
15837 ++ movl 100(%esp),%edx
15838 ++ addl (%ebp),%edi
15839 ++ addl 4(%ebp),%esi
15840 ++ addl 8(%ebp),%eax
15841 ++ addl 12(%ebp),%ebx
15842 ++ addl 16(%ebp),%ecx
15843 ++ movl %edi,(%ebp)
15844 ++ addl $64,%edx
15845 ++ movl %esi,4(%ebp)
15846 ++ cmpl 104(%esp),%edx
15847 ++ movl %eax,8(%ebp)
15848 ++ movl %ecx,%edi
15849 ++ movl %ebx,12(%ebp)
15850 ++ movl %edx,%esi
15851 ++ movl %ecx,16(%ebp)
15852 ++ jb L000loop
15853 ++ addl $76,%esp
15854 ++ popl %edi
15855 ++ popl %esi
15856 ++ popl %ebx
15857 ++ popl %ebp
15858 ++ ret
15859 ++.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
15860 ++.byte 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
15861 ++.byte 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
15862 ++.byte 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
15863 +diff --git a/crypto/sha/asm/sha256-586-mac.S b/crypto/sha/asm/sha256-586-mac.S
15864 +new file mode 100644
15865 +index 0000000..67c7a96
15866 +--- /dev/null
15867 ++++ b/crypto/sha/asm/sha256-586-mac.S
15868 +@@ -0,0 +1,256 @@
15869 ++.file "sha512-586.s"
15870 ++.text
15871 ++.globl _sha256_block_data_order
15872 ++.align 4
15873 ++_sha256_block_data_order:
15874 ++L_sha256_block_data_order_begin:
15875 ++ pushl %ebp
15876 ++ pushl %ebx
15877 ++ pushl %esi
15878 ++ pushl %edi
15879 ++ movl 20(%esp),%esi
15880 ++ movl 24(%esp),%edi
15881 ++ movl 28(%esp),%eax
15882 ++ movl %esp,%ebx
15883 ++ call L000pic_point
15884 ++L000pic_point:
15885 ++ popl %ebp
15886 ++ leal L001K256-L000pic_point(%ebp),%ebp
15887 ++ subl $16,%esp
15888 ++ andl $-64,%esp
15889 ++ shll $6,%eax
15890 ++ addl %edi,%eax
15891 ++ movl %esi,(%esp)
15892 ++ movl %edi,4(%esp)
15893 ++ movl %eax,8(%esp)
15894 ++ movl %ebx,12(%esp)
15895 ++.align 4,0x90
15896 ++L002loop:
15897 ++ movl (%edi),%eax
15898 ++ movl 4(%edi),%ebx
15899 ++ movl 8(%edi),%ecx
15900 ++ movl 12(%edi),%edx
15901 ++ bswap %eax
15902 ++ bswap %ebx
15903 ++ bswap %ecx
15904 ++ bswap %edx
15905 ++ pushl %eax
15906 ++ pushl %ebx
15907 ++ pushl %ecx
15908 ++ pushl %edx
15909 ++ movl 16(%edi),%eax
15910 ++ movl 20(%edi),%ebx
15911 ++ movl 24(%edi),%ecx
15912 ++ movl 28(%edi),%edx
15913 ++ bswap %eax
15914 ++ bswap %ebx
15915 ++ bswap %ecx
15916 ++ bswap %edx
15917 ++ pushl %eax
15918 ++ pushl %ebx
15919 ++ pushl %ecx
15920 ++ pushl %edx
15921 ++ movl 32(%edi),%eax
15922 ++ movl 36(%edi),%ebx
15923 ++ movl 40(%edi),%ecx
15924 ++ movl 44(%edi),%edx
15925 ++ bswap %eax
15926 ++ bswap %ebx
15927 ++ bswap %ecx
15928 ++ bswap %edx
15929 ++ pushl %eax
15930 ++ pushl %ebx
15931 ++ pushl %ecx
15932 ++ pushl %edx
15933 ++ movl 48(%edi),%eax
15934 ++ movl 52(%edi),%ebx
15935 ++ movl 56(%edi),%ecx
15936 ++ movl 60(%edi),%edx
15937 ++ bswap %eax
15938 ++ bswap %ebx
15939 ++ bswap %ecx
15940 ++ bswap %edx
15941 ++ pushl %eax
15942 ++ pushl %ebx
15943 ++ pushl %ecx
15944 ++ pushl %edx
15945 ++ addl $64,%edi
15946 ++ subl $32,%esp
15947 ++ movl %edi,100(%esp)
15948 ++ movl (%esi),%eax
15949 ++ movl 4(%esi),%ebx
15950 ++ movl 8(%esi),%ecx
15951 ++ movl 12(%esi),%edi
15952 ++ movl %ebx,4(%esp)
15953 ++ movl %ecx,8(%esp)
15954 ++ movl %edi,12(%esp)
15955 ++ movl 16(%esi),%edx
15956 ++ movl 20(%esi),%ebx
15957 ++ movl 24(%esi),%ecx
15958 ++ movl 28(%esi),%edi
15959 ++ movl %ebx,20(%esp)
15960 ++ movl %ecx,24(%esp)
15961 ++ movl %edi,28(%esp)
15962 ++.align 4,0x90
15963 ++L00300_15:
15964 ++ movl 92(%esp),%ebx
15965 ++ movl %edx,%ecx
15966 ++ rorl $14,%ecx
15967 ++ movl 20(%esp),%esi
15968 ++ xorl %edx,%ecx
15969 ++ rorl $5,%ecx
15970 ++ xorl %edx,%ecx
15971 ++ rorl $6,%ecx
15972 ++ movl 24(%esp),%edi
15973 ++ addl %ecx,%ebx
15974 ++ xorl %edi,%esi
15975 ++ movl %edx,16(%esp)
15976 ++ movl %eax,%ecx
15977 ++ andl %edx,%esi
15978 ++ movl 12(%esp),%edx
15979 ++ xorl %edi,%esi
15980 ++ movl %eax,%edi
15981 ++ addl %esi,%ebx
15982 ++ rorl $9,%ecx
15983 ++ addl 28(%esp),%ebx
15984 ++ xorl %eax,%ecx
15985 ++ rorl $11,%ecx
15986 ++ movl 4(%esp),%esi
15987 ++ xorl %eax,%ecx
15988 ++ rorl $2,%ecx
15989 ++ addl %ebx,%edx
15990 ++ movl 8(%esp),%edi
15991 ++ addl %ecx,%ebx
15992 ++ movl %eax,(%esp)
15993 ++ movl %eax,%ecx
15994 ++ subl $4,%esp
15995 ++ orl %esi,%eax
15996 ++ andl %esi,%ecx
15997 ++ andl %edi,%eax
15998 ++ movl (%ebp),%esi
15999 ++ orl %ecx,%eax
16000 ++ addl $4,%ebp
16001 ++ addl %ebx,%eax
16002 ++ addl %esi,%edx
16003 ++ addl %esi,%eax
16004 ++ cmpl $3248222580,%esi
16005 ++ jne L00300_15
16006 ++ movl 152(%esp),%ebx
16007 ++.align 4,0x90
16008 ++L00416_63:
16009 ++ movl %ebx,%esi
16010 ++ movl 100(%esp),%ecx
16011 ++ rorl $11,%esi
16012 ++ movl %ecx,%edi
16013 ++ xorl %ebx,%esi
16014 ++ rorl $7,%esi
16015 ++ shrl $3,%ebx
16016 ++ rorl $2,%edi
16017 ++ xorl %esi,%ebx
16018 ++ xorl %ecx,%edi
16019 ++ rorl $17,%edi
16020 ++ shrl $10,%ecx
16021 ++ addl 156(%esp),%ebx
16022 ++ xorl %ecx,%edi
16023 ++ addl 120(%esp),%ebx
16024 ++ movl %edx,%ecx
16025 ++ addl %edi,%ebx
16026 ++ rorl $14,%ecx
16027 ++ movl 20(%esp),%esi
16028 ++ xorl %edx,%ecx
16029 ++ rorl $5,%ecx
16030 ++ movl %ebx,92(%esp)
16031 ++ xorl %edx,%ecx
16032 ++ rorl $6,%ecx
16033 ++ movl 24(%esp),%edi
16034 ++ addl %ecx,%ebx
16035 ++ xorl %edi,%esi
16036 ++ movl %edx,16(%esp)
16037 ++ movl %eax,%ecx
16038 ++ andl %edx,%esi
16039 ++ movl 12(%esp),%edx
16040 ++ xorl %edi,%esi
16041 ++ movl %eax,%edi
16042 ++ addl %esi,%ebx
16043 ++ rorl $9,%ecx
16044 ++ addl 28(%esp),%ebx
16045 ++ xorl %eax,%ecx
16046 ++ rorl $11,%ecx
16047 ++ movl 4(%esp),%esi
16048 ++ xorl %eax,%ecx
16049 ++ rorl $2,%ecx
16050 ++ addl %ebx,%edx
16051 ++ movl 8(%esp),%edi
16052 ++ addl %ecx,%ebx
16053 ++ movl %eax,(%esp)
16054 ++ movl %eax,%ecx
16055 ++ subl $4,%esp
16056 ++ orl %esi,%eax
16057 ++ andl %esi,%ecx
16058 ++ andl %edi,%eax
16059 ++ movl (%ebp),%esi
16060 ++ orl %ecx,%eax
16061 ++ addl $4,%ebp
16062 ++ addl %ebx,%eax
16063 ++ movl 152(%esp),%ebx
16064 ++ addl %esi,%edx
16065 ++ addl %esi,%eax
16066 ++ cmpl $3329325298,%esi
16067 ++ jne L00416_63
16068 ++ movl 352(%esp),%esi
16069 ++ movl 4(%esp),%ebx
16070 ++ movl 8(%esp),%ecx
16071 ++ movl 12(%esp),%edi
16072 ++ addl (%esi),%eax
16073 ++ addl 4(%esi),%ebx
16074 ++ addl 8(%esi),%ecx
16075 ++ addl 12(%esi),%edi
16076 ++ movl %eax,(%esi)
16077 ++ movl %ebx,4(%esi)
16078 ++ movl %ecx,8(%esi)
16079 ++ movl %edi,12(%esi)
16080 ++ movl 20(%esp),%eax
16081 ++ movl 24(%esp),%ebx
16082 ++ movl 28(%esp),%ecx
16083 ++ movl 356(%esp),%edi
16084 ++ addl 16(%esi),%edx
16085 ++ addl 20(%esi),%eax
16086 ++ addl 24(%esi),%ebx
16087 ++ addl 28(%esi),%ecx
16088 ++ movl %edx,16(%esi)
16089 ++ movl %eax,20(%esi)
16090 ++ movl %ebx,24(%esi)
16091 ++ movl %ecx,28(%esi)
16092 ++ addl $352,%esp
16093 ++ subl $256,%ebp
16094 ++ cmpl 8(%esp),%edi
16095 ++ jb L002loop
16096 ++ movl 12(%esp),%esp
16097 ++ popl %edi
16098 ++ popl %esi
16099 ++ popl %ebx
16100 ++ popl %ebp
16101 ++ ret
16102 ++.align 6,0x90
16103 ++L001K256:
16104 ++.long 1116352408,1899447441,3049323471,3921009573
16105 ++.long 961987163,1508970993,2453635748,2870763221
16106 ++.long 3624381080,310598401,607225278,1426881987
16107 ++.long 1925078388,2162078206,2614888103,3248222580
16108 ++.long 3835390401,4022224774,264347078,604807628
16109 ++.long 770255983,1249150122,1555081692,1996064986
16110 ++.long 2554220882,2821834349,2952996808,3210313671
16111 ++.long 3336571891,3584528711,113926993,338241895
16112 ++.long 666307205,773529912,1294757372,1396182291
16113 ++.long 1695183700,1986661051,2177026350,2456956037
16114 ++.long 2730485921,2820302411,3259730800,3345764771
16115 ++.long 3516065817,3600352804,4094571909,275423344
16116 ++.long 430227734,506948616,659060556,883997877
16117 ++.long 958139571,1322822218,1537002063,1747873779
16118 ++.long 1955562222,2024104815,2227730452,2361852424
16119 ++.long 2428436474,2756734187,3204031479,3329325298
16120 ++.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
16121 ++.byte 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
16122 ++.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
16123 ++.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
16124 ++.byte 62,0
16125 +diff --git a/crypto/sha/asm/sha512-586-mac.S b/crypto/sha/asm/sha512-586-mac.S
16126 +new file mode 100644
16127 +index 0000000..2c99753
16128 +--- /dev/null
16129 ++++ b/crypto/sha/asm/sha512-586-mac.S
16130 +@@ -0,0 +1,561 @@
16131 ++.file "sha512-586.s"
16132 ++.text
16133 ++.globl _sha512_block_data_order
16134 ++.align 4
16135 ++_sha512_block_data_order:
16136 ++L_sha512_block_data_order_begin:
16137 ++ pushl %ebp
16138 ++ pushl %ebx
16139 ++ pushl %esi
16140 ++ pushl %edi
16141 ++ movl 20(%esp),%esi
16142 ++ movl 24(%esp),%edi
16143 ++ movl 28(%esp),%eax
16144 ++ movl %esp,%ebx
16145 ++ call L000pic_point
16146 ++L000pic_point:
16147 ++ popl %ebp
16148 ++ leal L001K512-L000pic_point(%ebp),%ebp
16149 ++ subl $16,%esp
16150 ++ andl $-64,%esp
16151 ++ shll $7,%eax
16152 ++ addl %edi,%eax
16153 ++ movl %esi,(%esp)
16154 ++ movl %edi,4(%esp)
16155 ++ movl %eax,8(%esp)
16156 ++ movl %ebx,12(%esp)
16157 ++.align 4,0x90
16158 ++L002loop_x86:
16159 ++ movl (%edi),%eax
16160 ++ movl 4(%edi),%ebx
16161 ++ movl 8(%edi),%ecx
16162 ++ movl 12(%edi),%edx
16163 ++ bswap %eax
16164 ++ bswap %ebx
16165 ++ bswap %ecx
16166 ++ bswap %edx
16167 ++ pushl %eax
16168 ++ pushl %ebx
16169 ++ pushl %ecx
16170 ++ pushl %edx
16171 ++ movl 16(%edi),%eax
16172 ++ movl 20(%edi),%ebx
16173 ++ movl 24(%edi),%ecx
16174 ++ movl 28(%edi),%edx
16175 ++ bswap %eax
16176 ++ bswap %ebx
16177 ++ bswap %ecx
16178 ++ bswap %edx
16179 ++ pushl %eax
16180 ++ pushl %ebx
16181 ++ pushl %ecx
16182 ++ pushl %edx
16183 ++ movl 32(%edi),%eax
16184 ++ movl 36(%edi),%ebx
16185 ++ movl 40(%edi),%ecx
16186 ++ movl 44(%edi),%edx
16187 ++ bswap %eax
16188 ++ bswap %ebx
16189 ++ bswap %ecx
16190 ++ bswap %edx
16191 ++ pushl %eax
16192 ++ pushl %ebx
16193 ++ pushl %ecx
16194 ++ pushl %edx
16195 ++ movl 48(%edi),%eax
16196 ++ movl 52(%edi),%ebx
16197 ++ movl 56(%edi),%ecx
16198 ++ movl 60(%edi),%edx
16199 ++ bswap %eax
16200 ++ bswap %ebx
16201 ++ bswap %ecx
16202 ++ bswap %edx
16203 ++ pushl %eax
16204 ++ pushl %ebx
16205 ++ pushl %ecx
16206 ++ pushl %edx
16207 ++ movl 64(%edi),%eax
16208 ++ movl 68(%edi),%ebx
16209 ++ movl 72(%edi),%ecx
16210 ++ movl 76(%edi),%edx
16211 ++ bswap %eax
16212 ++ bswap %ebx
16213 ++ bswap %ecx
16214 ++ bswap %edx
16215 ++ pushl %eax
16216 ++ pushl %ebx
16217 ++ pushl %ecx
16218 ++ pushl %edx
16219 ++ movl 80(%edi),%eax
16220 ++ movl 84(%edi),%ebx
16221 ++ movl 88(%edi),%ecx
16222 ++ movl 92(%edi),%edx
16223 ++ bswap %eax
16224 ++ bswap %ebx
16225 ++ bswap %ecx
16226 ++ bswap %edx
16227 ++ pushl %eax
16228 ++ pushl %ebx
16229 ++ pushl %ecx
16230 ++ pushl %edx
16231 ++ movl 96(%edi),%eax
16232 ++ movl 100(%edi),%ebx
16233 ++ movl 104(%edi),%ecx
16234 ++ movl 108(%edi),%edx
16235 ++ bswap %eax
16236 ++ bswap %ebx
16237 ++ bswap %ecx
16238 ++ bswap %edx
16239 ++ pushl %eax
16240 ++ pushl %ebx
16241 ++ pushl %ecx
16242 ++ pushl %edx
16243 ++ movl 112(%edi),%eax
16244 ++ movl 116(%edi),%ebx
16245 ++ movl 120(%edi),%ecx
16246 ++ movl 124(%edi),%edx
16247 ++ bswap %eax
16248 ++ bswap %ebx
16249 ++ bswap %ecx
16250 ++ bswap %edx
16251 ++ pushl %eax
16252 ++ pushl %ebx
16253 ++ pushl %ecx
16254 ++ pushl %edx
16255 ++ addl $128,%edi
16256 ++ subl $72,%esp
16257 ++ movl %edi,204(%esp)
16258 ++ leal 8(%esp),%edi
16259 ++ movl $16,%ecx
16260 ++.long 2784229001
16261 ++.align 4,0x90
16262 ++L00300_15_x86:
16263 ++ movl 40(%esp),%ecx
16264 ++ movl 44(%esp),%edx
16265 ++ movl %ecx,%esi
16266 ++ shrl $9,%ecx
16267 ++ movl %edx,%edi
16268 ++ shrl $9,%edx
16269 ++ movl %ecx,%ebx
16270 ++ shll $14,%esi
16271 ++ movl %edx,%eax
16272 ++ shll $14,%edi
16273 ++ xorl %esi,%ebx
16274 ++ shrl $5,%ecx
16275 ++ xorl %edi,%eax
16276 ++ shrl $5,%edx
16277 ++ xorl %ecx,%eax
16278 ++ shll $4,%esi
16279 ++ xorl %edx,%ebx
16280 ++ shll $4,%edi
16281 ++ xorl %esi,%ebx
16282 ++ shrl $4,%ecx
16283 ++ xorl %edi,%eax
16284 ++ shrl $4,%edx
16285 ++ xorl %ecx,%eax
16286 ++ shll $5,%esi
16287 ++ xorl %edx,%ebx
16288 ++ shll $5,%edi
16289 ++ xorl %esi,%eax
16290 ++ xorl %edi,%ebx
16291 ++ movl 48(%esp),%ecx
16292 ++ movl 52(%esp),%edx
16293 ++ movl 56(%esp),%esi
16294 ++ movl 60(%esp),%edi
16295 ++ addl 64(%esp),%eax
16296 ++ adcl 68(%esp),%ebx
16297 ++ xorl %esi,%ecx
16298 ++ xorl %edi,%edx
16299 ++ andl 40(%esp),%ecx
16300 ++ andl 44(%esp),%edx
16301 ++ addl 192(%esp),%eax
16302 ++ adcl 196(%esp),%ebx
16303 ++ xorl %esi,%ecx
16304 ++ xorl %edi,%edx
16305 ++ movl (%ebp),%esi
16306 ++ movl 4(%ebp),%edi
16307 ++ addl %ecx,%eax
16308 ++ adcl %edx,%ebx
16309 ++ movl 32(%esp),%ecx
16310 ++ movl 36(%esp),%edx
16311 ++ addl %esi,%eax
16312 ++ adcl %edi,%ebx
16313 ++ movl %eax,(%esp)
16314 ++ movl %ebx,4(%esp)
16315 ++ addl %ecx,%eax
16316 ++ adcl %edx,%ebx
16317 ++ movl 8(%esp),%ecx
16318 ++ movl 12(%esp),%edx
16319 ++ movl %eax,32(%esp)
16320 ++ movl %ebx,36(%esp)
16321 ++ movl %ecx,%esi
16322 ++ shrl $2,%ecx
16323 ++ movl %edx,%edi
16324 ++ shrl $2,%edx
16325 ++ movl %ecx,%ebx
16326 ++ shll $4,%esi
16327 ++ movl %edx,%eax
16328 ++ shll $4,%edi
16329 ++ xorl %esi,%ebx
16330 ++ shrl $5,%ecx
16331 ++ xorl %edi,%eax
16332 ++ shrl $5,%edx
16333 ++ xorl %ecx,%ebx
16334 ++ shll $21,%esi
16335 ++ xorl %edx,%eax
16336 ++ shll $21,%edi
16337 ++ xorl %esi,%eax
16338 ++ shrl $21,%ecx
16339 ++ xorl %edi,%ebx
16340 ++ shrl $21,%edx
16341 ++ xorl %ecx,%eax
16342 ++ shll $5,%esi
16343 ++ xorl %edx,%ebx
16344 ++ shll $5,%edi
16345 ++ xorl %esi,%eax
16346 ++ xorl %edi,%ebx
16347 ++ movl 8(%esp),%ecx
16348 ++ movl 12(%esp),%edx
16349 ++ movl 16(%esp),%esi
16350 ++ movl 20(%esp),%edi
16351 ++ addl (%esp),%eax
16352 ++ adcl 4(%esp),%ebx
16353 ++ orl %esi,%ecx
16354 ++ orl %edi,%edx
16355 ++ andl 24(%esp),%ecx
16356 ++ andl 28(%esp),%edx
16357 ++ andl 8(%esp),%esi
16358 ++ andl 12(%esp),%edi
16359 ++ orl %esi,%ecx
16360 ++ orl %edi,%edx
16361 ++ addl %ecx,%eax
16362 ++ adcl %edx,%ebx
16363 ++ movl %eax,(%esp)
16364 ++ movl %ebx,4(%esp)
16365 ++ movb (%ebp),%dl
16366 ++ subl $8,%esp
16367 ++ leal 8(%ebp),%ebp
16368 ++ cmpb $148,%dl
16369 ++ jne L00300_15_x86
16370 ++.align 4,0x90
16371 ++L00416_79_x86:
16372 ++ movl 312(%esp),%ecx
16373 ++ movl 316(%esp),%edx
16374 ++ movl %ecx,%esi
16375 ++ shrl $1,%ecx
16376 ++ movl %edx,%edi
16377 ++ shrl $1,%edx
16378 ++ movl %ecx,%eax
16379 ++ shll $24,%esi
16380 ++ movl %edx,%ebx
16381 ++ shll $24,%edi
16382 ++ xorl %esi,%ebx
16383 ++ shrl $6,%ecx
16384 ++ xorl %edi,%eax
16385 ++ shrl $6,%edx
16386 ++ xorl %ecx,%eax
16387 ++ shll $7,%esi
16388 ++ xorl %edx,%ebx
16389 ++ shll $1,%edi
16390 ++ xorl %esi,%ebx
16391 ++ shrl $1,%ecx
16392 ++ xorl %edi,%eax
16393 ++ shrl $1,%edx
16394 ++ xorl %ecx,%eax
16395 ++ shll $6,%edi
16396 ++ xorl %edx,%ebx
16397 ++ xorl %edi,%eax
16398 ++ movl %eax,(%esp)
16399 ++ movl %ebx,4(%esp)
16400 ++ movl 208(%esp),%ecx
16401 ++ movl 212(%esp),%edx
16402 ++ movl %ecx,%esi
16403 ++ shrl $6,%ecx
16404 ++ movl %edx,%edi
16405 ++ shrl $6,%edx
16406 ++ movl %ecx,%eax
16407 ++ shll $3,%esi
16408 ++ movl %edx,%ebx
16409 ++ shll $3,%edi
16410 ++ xorl %esi,%eax
16411 ++ shrl $13,%ecx
16412 ++ xorl %edi,%ebx
16413 ++ shrl $13,%edx
16414 ++ xorl %ecx,%eax
16415 ++ shll $10,%esi
16416 ++ xorl %edx,%ebx
16417 ++ shll $10,%edi
16418 ++ xorl %esi,%ebx
16419 ++ shrl $10,%ecx
16420 ++ xorl %edi,%eax
16421 ++ shrl $10,%edx
16422 ++ xorl %ecx,%ebx
16423 ++ shll $13,%edi
16424 ++ xorl %edx,%eax
16425 ++ xorl %edi,%eax
16426 ++ movl 320(%esp),%ecx
16427 ++ movl 324(%esp),%edx
16428 ++ addl (%esp),%eax
16429 ++ adcl 4(%esp),%ebx
16430 ++ movl 248(%esp),%esi
16431 ++ movl 252(%esp),%edi
16432 ++ addl %ecx,%eax
16433 ++ adcl %edx,%ebx
16434 ++ addl %esi,%eax
16435 ++ adcl %edi,%ebx
16436 ++ movl %eax,192(%esp)
16437 ++ movl %ebx,196(%esp)
16438 ++ movl 40(%esp),%ecx
16439 ++ movl 44(%esp),%edx
16440 ++ movl %ecx,%esi
16441 ++ shrl $9,%ecx
16442 ++ movl %edx,%edi
16443 ++ shrl $9,%edx
16444 ++ movl %ecx,%ebx
16445 ++ shll $14,%esi
16446 ++ movl %edx,%eax
16447 ++ shll $14,%edi
16448 ++ xorl %esi,%ebx
16449 ++ shrl $5,%ecx
16450 ++ xorl %edi,%eax
16451 ++ shrl $5,%edx
16452 ++ xorl %ecx,%eax
16453 ++ shll $4,%esi
16454 ++ xorl %edx,%ebx
16455 ++ shll $4,%edi
16456 ++ xorl %esi,%ebx
16457 ++ shrl $4,%ecx
16458 ++ xorl %edi,%eax
16459 ++ shrl $4,%edx
16460 ++ xorl %ecx,%eax
16461 ++ shll $5,%esi
16462 ++ xorl %edx,%ebx
16463 ++ shll $5,%edi
16464 ++ xorl %esi,%eax
16465 ++ xorl %edi,%ebx
16466 ++ movl 48(%esp),%ecx
16467 ++ movl 52(%esp),%edx
16468 ++ movl 56(%esp),%esi
16469 ++ movl 60(%esp),%edi
16470 ++ addl 64(%esp),%eax
16471 ++ adcl 68(%esp),%ebx
16472 ++ xorl %esi,%ecx
16473 ++ xorl %edi,%edx
16474 ++ andl 40(%esp),%ecx
16475 ++ andl 44(%esp),%edx
16476 ++ addl 192(%esp),%eax
16477 ++ adcl 196(%esp),%ebx
16478 ++ xorl %esi,%ecx
16479 ++ xorl %edi,%edx
16480 ++ movl (%ebp),%esi
16481 ++ movl 4(%ebp),%edi
16482 ++ addl %ecx,%eax
16483 ++ adcl %edx,%ebx
16484 ++ movl 32(%esp),%ecx
16485 ++ movl 36(%esp),%edx
16486 ++ addl %esi,%eax
16487 ++ adcl %edi,%ebx
16488 ++ movl %eax,(%esp)
16489 ++ movl %ebx,4(%esp)
16490 ++ addl %ecx,%eax
16491 ++ adcl %edx,%ebx
16492 ++ movl 8(%esp),%ecx
16493 ++ movl 12(%esp),%edx
16494 ++ movl %eax,32(%esp)
16495 ++ movl %ebx,36(%esp)
16496 ++ movl %ecx,%esi
16497 ++ shrl $2,%ecx
16498 ++ movl %edx,%edi
16499 ++ shrl $2,%edx
16500 ++ movl %ecx,%ebx
16501 ++ shll $4,%esi
16502 ++ movl %edx,%eax
16503 ++ shll $4,%edi
16504 ++ xorl %esi,%ebx
16505 ++ shrl $5,%ecx
16506 ++ xorl %edi,%eax
16507 ++ shrl $5,%edx
16508 ++ xorl %ecx,%ebx
16509 ++ shll $21,%esi
16510 ++ xorl %edx,%eax
16511 ++ shll $21,%edi
16512 ++ xorl %esi,%eax
16513 ++ shrl $21,%ecx
16514 ++ xorl %edi,%ebx
16515 ++ shrl $21,%edx
16516 ++ xorl %ecx,%eax
16517 ++ shll $5,%esi
16518 ++ xorl %edx,%ebx
16519 ++ shll $5,%edi
16520 ++ xorl %esi,%eax
16521 ++ xorl %edi,%ebx
16522 ++ movl 8(%esp),%ecx
16523 ++ movl 12(%esp),%edx
16524 ++ movl 16(%esp),%esi
16525 ++ movl 20(%esp),%edi
16526 ++ addl (%esp),%eax
16527 ++ adcl 4(%esp),%ebx
16528 ++ orl %esi,%ecx
16529 ++ orl %edi,%edx
16530 ++ andl 24(%esp),%ecx
16531 ++ andl 28(%esp),%edx
16532 ++ andl 8(%esp),%esi
16533 ++ andl 12(%esp),%edi
16534 ++ orl %esi,%ecx
16535 ++ orl %edi,%edx
16536 ++ addl %ecx,%eax
16537 ++ adcl %edx,%ebx
16538 ++ movl %eax,(%esp)
16539 ++ movl %ebx,4(%esp)
16540 ++ movb (%ebp),%dl
16541 ++ subl $8,%esp
16542 ++ leal 8(%ebp),%ebp
16543 ++ cmpb $23,%dl
16544 ++ jne L00416_79_x86
16545 ++ movl 840(%esp),%esi
16546 ++ movl 844(%esp),%edi
16547 ++ movl (%esi),%eax
16548 ++ movl 4(%esi),%ebx
16549 ++ movl 8(%esi),%ecx
16550 ++ movl 12(%esi),%edx
16551 ++ addl 8(%esp),%eax
16552 ++ adcl 12(%esp),%ebx
16553 ++ movl %eax,(%esi)
16554 ++ movl %ebx,4(%esi)
16555 ++ addl 16(%esp),%ecx
16556 ++ adcl 20(%esp),%edx
16557 ++ movl %ecx,8(%esi)
16558 ++ movl %edx,12(%esi)
16559 ++ movl 16(%esi),%eax
16560 ++ movl 20(%esi),%ebx
16561 ++ movl 24(%esi),%ecx
16562 ++ movl 28(%esi),%edx
16563 ++ addl 24(%esp),%eax
16564 ++ adcl 28(%esp),%ebx
16565 ++ movl %eax,16(%esi)
16566 ++ movl %ebx,20(%esi)
16567 ++ addl 32(%esp),%ecx
16568 ++ adcl 36(%esp),%edx
16569 ++ movl %ecx,24(%esi)
16570 ++ movl %edx,28(%esi)
16571 ++ movl 32(%esi),%eax
16572 ++ movl 36(%esi),%ebx
16573 ++ movl 40(%esi),%ecx
16574 ++ movl 44(%esi),%edx
16575 ++ addl 40(%esp),%eax
16576 ++ adcl 44(%esp),%ebx
16577 ++ movl %eax,32(%esi)
16578 ++ movl %ebx,36(%esi)
16579 ++ addl 48(%esp),%ecx
16580 ++ adcl 52(%esp),%edx
16581 ++ movl %ecx,40(%esi)
16582 ++ movl %edx,44(%esi)
16583 ++ movl 48(%esi),%eax
16584 ++ movl 52(%esi),%ebx
16585 ++ movl 56(%esi),%ecx
16586 ++ movl 60(%esi),%edx
16587 ++ addl 56(%esp),%eax
16588 ++ adcl 60(%esp),%ebx
16589 ++ movl %eax,48(%esi)
16590 ++ movl %ebx,52(%esi)
16591 ++ addl 64(%esp),%ecx
16592 ++ adcl 68(%esp),%edx
16593 ++ movl %ecx,56(%esi)
16594 ++ movl %edx,60(%esi)
16595 ++ addl $840,%esp
16596 ++ subl $640,%ebp
16597 ++ cmpl 8(%esp),%edi
16598 ++ jb L002loop_x86
16599 ++ movl 12(%esp),%esp
16600 ++ popl %edi
16601 ++ popl %esi
16602 ++ popl %ebx
16603 ++ popl %ebp
16604 ++ ret
16605 ++.align 6,0x90
16606 ++L001K512:
16607 ++.long 3609767458,1116352408
16608 ++.long 602891725,1899447441
16609 ++.long 3964484399,3049323471
16610 ++.long 2173295548,3921009573
16611 ++.long 4081628472,961987163
16612 ++.long 3053834265,1508970993
16613 ++.long 2937671579,2453635748
16614 ++.long 3664609560,2870763221
16615 ++.long 2734883394,3624381080
16616 ++.long 1164996542,310598401
16617 ++.long 1323610764,607225278
16618 ++.long 3590304994,1426881987
16619 ++.long 4068182383,1925078388
16620 ++.long 991336113,2162078206
16621 ++.long 633803317,2614888103
16622 ++.long 3479774868,3248222580
16623 ++.long 2666613458,3835390401
16624 ++.long 944711139,4022224774
16625 ++.long 2341262773,264347078
16626 ++.long 2007800933,604807628
16627 ++.long 1495990901,770255983
16628 ++.long 1856431235,1249150122
16629 ++.long 3175218132,1555081692
16630 ++.long 2198950837,1996064986
16631 ++.long 3999719339,2554220882
16632 ++.long 766784016,2821834349
16633 ++.long 2566594879,2952996808
16634 ++.long 3203337956,3210313671
16635 ++.long 1034457026,3336571891
16636 ++.long 2466948901,3584528711
16637 ++.long 3758326383,113926993
16638 ++.long 168717936,338241895
16639 ++.long 1188179964,666307205
16640 ++.long 1546045734,773529912
16641 ++.long 1522805485,1294757372
16642 ++.long 2643833823,1396182291
16643 ++.long 2343527390,1695183700
16644 ++.long 1014477480,1986661051
16645 ++.long 1206759142,2177026350
16646 ++.long 344077627,2456956037
16647 ++.long 1290863460,2730485921
16648 ++.long 3158454273,2820302411
16649 ++.long 3505952657,3259730800
16650 ++.long 106217008,3345764771
16651 ++.long 3606008344,3516065817
16652 ++.long 1432725776,3600352804
16653 ++.long 1467031594,4094571909
16654 ++.long 851169720,275423344
16655 ++.long 3100823752,430227734
16656 ++.long 1363258195,506948616
16657 ++.long 3750685593,659060556
16658 ++.long 3785050280,883997877
16659 ++.long 3318307427,958139571
16660 ++.long 3812723403,1322822218
16661 ++.long 2003034995,1537002063
16662 ++.long 3602036899,1747873779
16663 ++.long 1575990012,1955562222
16664 ++.long 1125592928,2024104815
16665 ++.long 2716904306,2227730452
16666 ++.long 442776044,2361852424
16667 ++.long 593698344,2428436474
16668 ++.long 3733110249,2756734187
16669 ++.long 2999351573,3204031479
16670 ++.long 3815920427,3329325298
16671 ++.long 3928383900,3391569614
16672 ++.long 566280711,3515267271
16673 ++.long 3454069534,3940187606
16674 ++.long 4000239992,4118630271
16675 ++.long 1914138554,116418474
16676 ++.long 2731055270,174292421
16677 ++.long 3203993006,289380356
16678 ++.long 320620315,460393269
16679 ++.long 587496836,685471733
16680 ++.long 1086792851,852142971
16681 ++.long 365543100,1017036298
16682 ++.long 2618297676,1126000580
16683 ++.long 3409855158,1288033470
16684 ++.long 4234509866,1501505948
16685 ++.long 987167468,1607167915
16686 ++.long 1246189591,1816402316
16687 ++.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
16688 ++.byte 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
16689 ++.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
16690 ++.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
16691 ++.byte 62,0
16692 +diff --git a/crypto/x86cpuid-mac.S b/crypto/x86cpuid-mac.S
16693 +new file mode 100644
16694 +index 0000000..db36e6f
16695 +--- /dev/null
16696 ++++ b/crypto/x86cpuid-mac.S
16697 +@@ -0,0 +1,316 @@
16698 ++.file "x86cpuid.s"
16699 ++.text
16700 ++.globl _OPENSSL_ia32_cpuid
16701 ++.align 4
16702 ++_OPENSSL_ia32_cpuid:
16703 ++L_OPENSSL_ia32_cpuid_begin:
16704 ++ pushl %ebp
16705 ++ pushl %ebx
16706 ++ pushl %esi
16707 ++ pushl %edi
16708 ++ xorl %edx,%edx
16709 ++ pushfl
16710 ++ popl %eax
16711 ++ movl %eax,%ecx
16712 ++ xorl $2097152,%eax
16713 ++ pushl %eax
16714 ++ popfl
16715 ++ pushfl
16716 ++ popl %eax
16717 ++ xorl %eax,%ecx
16718 ++ xorl %eax,%eax
16719 ++ btl $21,%ecx
16720 ++ jnc L000nocpuid
16721 ++ .byte 0x0f,0xa2
16722 ++ movl %eax,%edi
16723 ++ xorl %eax,%eax
16724 ++ cmpl $1970169159,%ebx
16725 ++ setne %al
16726 ++ movl %eax,%ebp
16727 ++ cmpl $1231384169,%edx
16728 ++ setne %al
16729 ++ orl %eax,%ebp
16730 ++ cmpl $1818588270,%ecx
16731 ++ setne %al
16732 ++ orl %eax,%ebp
16733 ++ jz L001intel
16734 ++ cmpl $1752462657,%ebx
16735 ++ setne %al
16736 ++ movl %eax,%esi
16737 ++ cmpl $1769238117,%edx
16738 ++ setne %al
16739 ++ orl %eax,%esi
16740 ++ cmpl $1145913699,%ecx
16741 ++ setne %al
16742 ++ orl %eax,%esi
16743 ++ jnz L001intel
16744 ++ movl $2147483648,%eax
16745 ++ .byte 0x0f,0xa2
16746 ++ cmpl $2147483649,%eax
16747 ++ jb L001intel
16748 ++ movl %eax,%esi
16749 ++ movl $2147483649,%eax
16750 ++ .byte 0x0f,0xa2
16751 ++ orl %ecx,%ebp
16752 ++ andl $2049,%ebp
16753 ++ cmpl $2147483656,%esi
16754 ++ jb L001intel
16755 ++ movl $2147483656,%eax
16756 ++ .byte 0x0f,0xa2
16757 ++ movzbl %cl,%esi
16758 ++ incl %esi
16759 ++ movl $1,%eax
16760 ++ .byte 0x0f,0xa2
16761 ++ btl $28,%edx
16762 ++ jnc L002generic
16763 ++ shrl $16,%ebx
16764 ++ andl $255,%ebx
16765 ++ cmpl %esi,%ebx
16766 ++ ja L002generic
16767 ++ andl $4026531839,%edx
16768 ++ jmp L002generic
16769 ++L001intel:
16770 ++ cmpl $4,%edi
16771 ++ movl $-1,%edi
16772 ++ jb L003nocacheinfo
16773 ++ movl $4,%eax
16774 ++ movl $0,%ecx
16775 ++ .byte 0x0f,0xa2
16776 ++ movl %eax,%edi
16777 ++ shrl $14,%edi
16778 ++ andl $4095,%edi
16779 ++L003nocacheinfo:
16780 ++ movl $1,%eax
16781 ++ .byte 0x0f,0xa2
16782 ++ andl $3220176895,%edx
16783 ++ cmpl $0,%ebp
16784 ++ jne L004notintel
16785 ++ orl $1073741824,%edx
16786 ++ andb $15,%ah
16787 ++ cmpb $15,%ah
16788 ++ jne L004notintel
16789 ++ orl $1048576,%edx
16790 ++L004notintel:
16791 ++ btl $28,%edx
16792 ++ jnc L002generic
16793 ++ andl $4026531839,%edx
16794 ++ cmpl $0,%edi
16795 ++ je L002generic
16796 ++ orl $268435456,%edx
16797 ++ shrl $16,%ebx
16798 ++ cmpb $1,%bl
16799 ++ ja L002generic
16800 ++ andl $4026531839,%edx
16801 ++L002generic:
16802 ++ andl $2048,%ebp
16803 ++ andl $4294965247,%ecx
16804 ++ movl %edx,%esi
16805 ++ orl %ecx,%ebp
16806 ++ btl $27,%ecx
16807 ++ jnc L005clear_avx
16808 ++ xorl %ecx,%ecx
16809 ++.byte 15,1,208
16810 ++ andl $6,%eax
16811 ++ cmpl $6,%eax
16812 ++ je L006done
16813 ++ cmpl $2,%eax
16814 ++ je L005clear_avx
16815 ++L007clear_xmm:
16816 ++ andl $4261412861,%ebp
16817 ++ andl $4278190079,%esi
16818 ++L005clear_avx:
16819 ++ andl $4026525695,%ebp
16820 ++L006done:
16821 ++ movl %esi,%eax
16822 ++ movl %ebp,%edx
16823 ++L000nocpuid:
16824 ++ popl %edi
16825 ++ popl %esi
16826 ++ popl %ebx
16827 ++ popl %ebp
16828 ++ ret
16829 ++.globl _OPENSSL_rdtsc
16830 ++.align 4
16831 ++_OPENSSL_rdtsc:
16832 ++L_OPENSSL_rdtsc_begin:
16833 ++ xorl %eax,%eax
16834 ++ xorl %edx,%edx
16835 ++ call L008PIC_me_up
16836 ++L008PIC_me_up:
16837 ++ popl %ecx
16838 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L008PIC_me_up(%ecx),%ecx
16839 ++ btl $4,(%ecx)
16840 ++ jnc L009notsc
16841 ++ .byte 0x0f,0x31
16842 ++L009notsc:
16843 ++ ret
16844 ++.globl _OPENSSL_instrument_halt
16845 ++.align 4
16846 ++_OPENSSL_instrument_halt:
16847 ++L_OPENSSL_instrument_halt_begin:
16848 ++ call L010PIC_me_up
16849 ++L010PIC_me_up:
16850 ++ popl %ecx
16851 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L010PIC_me_up(%ecx),%ecx
16852 ++ btl $4,(%ecx)
16853 ++ jnc L011nohalt
16854 ++.long 2421723150
16855 ++ andl $3,%eax
16856 ++ jnz L011nohalt
16857 ++ pushfl
16858 ++ popl %eax
16859 ++ btl $9,%eax
16860 ++ jnc L011nohalt
16861 ++ .byte 0x0f,0x31
16862 ++ pushl %edx
16863 ++ pushl %eax
16864 ++ hlt
16865 ++ .byte 0x0f,0x31
16866 ++ subl (%esp),%eax
16867 ++ sbbl 4(%esp),%edx
16868 ++ addl $8,%esp
16869 ++ ret
16870 ++L011nohalt:
16871 ++ xorl %eax,%eax
16872 ++ xorl %edx,%edx
16873 ++ ret
16874 ++.globl _OPENSSL_far_spin
16875 ++.align 4
16876 ++_OPENSSL_far_spin:
16877 ++L_OPENSSL_far_spin_begin:
16878 ++ pushfl
16879 ++ popl %eax
16880 ++ btl $9,%eax
16881 ++ jnc L012nospin
16882 ++ movl 4(%esp),%eax
16883 ++ movl 8(%esp),%ecx
16884 ++.long 2430111262
16885 ++ xorl %eax,%eax
16886 ++ movl (%ecx),%edx
16887 ++ jmp L013spin
16888 ++.align 4,0x90
16889 ++L013spin:
16890 ++ incl %eax
16891 ++ cmpl (%ecx),%edx
16892 ++ je L013spin
16893 ++.long 529567888
16894 ++ ret
16895 ++L012nospin:
16896 ++ xorl %eax,%eax
16897 ++ xorl %edx,%edx
16898 ++ ret
16899 ++.globl _OPENSSL_wipe_cpu
16900 ++.align 4
16901 ++_OPENSSL_wipe_cpu:
16902 ++L_OPENSSL_wipe_cpu_begin:
16903 ++ xorl %eax,%eax
16904 ++ xorl %edx,%edx
16905 ++ call L014PIC_me_up
16906 ++L014PIC_me_up:
16907 ++ popl %ecx
16908 ++ movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L014PIC_me_up(%ecx),%ecx
16909 ++ movl (%ecx),%ecx
16910 ++ btl $1,(%ecx)
16911 ++ jnc L015no_x87
16912 ++.long 4007259865,4007259865,4007259865,4007259865,2430851995
16913 ++L015no_x87:
16914 ++ leal 4(%esp),%eax
16915 ++ ret
16916 ++.globl _OPENSSL_atomic_add
16917 ++.align 4
16918 ++_OPENSSL_atomic_add:
16919 ++L_OPENSSL_atomic_add_begin:
16920 ++ movl 4(%esp),%edx
16921 ++ movl 8(%esp),%ecx
16922 ++ pushl %ebx
16923 ++ nop
16924 ++ movl (%edx),%eax
16925 ++L016spin:
16926 ++ leal (%eax,%ecx,1),%ebx
16927 ++ nop
16928 ++.long 447811568
16929 ++ jne L016spin
16930 ++ movl %ebx,%eax
16931 ++ popl %ebx
16932 ++ ret
16933 ++.globl _OPENSSL_indirect_call
16934 ++.align 4
16935 ++_OPENSSL_indirect_call:
16936 ++L_OPENSSL_indirect_call_begin:
16937 ++ pushl %ebp
16938 ++ movl %esp,%ebp
16939 ++ subl $28,%esp
16940 ++ movl 12(%ebp),%ecx
16941 ++ movl %ecx,(%esp)
16942 ++ movl 16(%ebp),%edx
16943 ++ movl %edx,4(%esp)
16944 ++ movl 20(%ebp),%eax
16945 ++ movl %eax,8(%esp)
16946 ++ movl 24(%ebp),%eax
16947 ++ movl %eax,12(%esp)
16948 ++ movl 28(%ebp),%eax
16949 ++ movl %eax,16(%esp)
16950 ++ movl 32(%ebp),%eax
16951 ++ movl %eax,20(%esp)
16952 ++ movl 36(%ebp),%eax
16953 ++ movl %eax,24(%esp)
16954 ++ call *8(%ebp)
16955 ++ movl %ebp,%esp
16956 ++ popl %ebp
16957 ++ ret
16958 ++.globl _OPENSSL_cleanse
16959 ++.align 4
16960 ++_OPENSSL_cleanse:
16961 ++L_OPENSSL_cleanse_begin:
16962 ++ movl 4(%esp),%edx
16963 ++ movl 8(%esp),%ecx
16964 ++ xorl %eax,%eax
16965 ++ cmpl $7,%ecx
16966 ++ jae L017lot
16967 ++ cmpl $0,%ecx
16968 ++ je L018ret
16969 ++L019little:
16970 ++ movb %al,(%edx)
16971 ++ subl $1,%ecx
16972 ++ leal 1(%edx),%edx
16973 ++ jnz L019little
16974 ++L018ret:
16975 ++ ret
16976 ++.align 4,0x90
16977 ++L017lot:
16978 ++ testl $3,%edx
16979 ++ jz L020aligned
16980 ++ movb %al,(%edx)
16981 ++ leal -1(%ecx),%ecx
16982 ++ leal 1(%edx),%edx
16983 ++ jmp L017lot
16984 ++L020aligned:
16985 ++ movl %eax,(%edx)
16986 ++ leal -4(%ecx),%ecx
16987 ++ testl $-4,%ecx
16988 ++ leal 4(%edx),%edx
16989 ++ jnz L020aligned
16990 ++ cmpl $0,%ecx
16991 ++ jne L019little
16992 ++ ret
16993 ++.globl _OPENSSL_ia32_rdrand
16994 ++.align 4
16995 ++_OPENSSL_ia32_rdrand:
16996 ++L_OPENSSL_ia32_rdrand_begin:
16997 ++ movl $8,%ecx
16998 ++L021loop:
16999 ++.byte 15,199,240
17000 ++ jc L022break
17001 ++ loop L021loop
17002 ++L022break:
17003 ++ cmpl $0,%eax
17004 ++ cmovel %ecx,%eax
17005 ++ ret
17006 ++.section __IMPORT,__pointers,non_lazy_symbol_pointers
17007 ++L_OPENSSL_ia32cap_P$non_lazy_ptr:
17008 ++.indirect_symbol _OPENSSL_ia32cap_P
17009 ++.long 0
17010 ++.comm _OPENSSL_ia32cap_P,8,2
17011 ++.mod_init_func
17012 ++.align 2
17013 ++.long _OPENSSL_cpuid_setup
17014 +--
17015 +1.8.3.2
17016 +
OLDNEW
« no previous file with comments | « patches.chromium/0009-stricter_cutthrough.patch ('k') | patches.chromium/0011-fix_limit_checks.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698