Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / openssl / patches.chromium / 0010-mac_ia32_assembly.patch
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 +0200
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.505704796 +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 +