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

Side by Side Diff: openssl/crypto/aes/asm/aesni-x86.S

Issue 2072073002: Delete bundled copy of OpenSSL and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/openssl@master
Patch Set: Delete bundled copy of OpenSSL and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « openssl/crypto/aes/asm/aesni-sha1-x86_64.pl ('k') | openssl/crypto/aes/asm/aesni-x86.pl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 .file "crypto/aes/asm/aesni-x86.s"
2 .text
3 .globl aesni_encrypt
4 .type aesni_encrypt,@function
5 .align 16
6 aesni_encrypt:
7 .L_aesni_encrypt_begin:
8 movl 4(%esp),%eax
9 movl 12(%esp),%edx
10 movups (%eax),%xmm2
11 movl 240(%edx),%ecx
12 movl 8(%esp),%eax
13 movups (%edx),%xmm0
14 movups 16(%edx),%xmm1
15 leal 32(%edx),%edx
16 xorps %xmm0,%xmm2
17 .L000enc1_loop_1:
18 .byte 102,15,56,220,209
19 decl %ecx
20 movups (%edx),%xmm1
21 leal 16(%edx),%edx
22 jnz .L000enc1_loop_1
23 .byte 102,15,56,221,209
24 movups %xmm2,(%eax)
25 ret
26 .size aesni_encrypt,.-.L_aesni_encrypt_begin
27 .globl aesni_decrypt
28 .type aesni_decrypt,@function
29 .align 16
30 aesni_decrypt:
31 .L_aesni_decrypt_begin:
32 movl 4(%esp),%eax
33 movl 12(%esp),%edx
34 movups (%eax),%xmm2
35 movl 240(%edx),%ecx
36 movl 8(%esp),%eax
37 movups (%edx),%xmm0
38 movups 16(%edx),%xmm1
39 leal 32(%edx),%edx
40 xorps %xmm0,%xmm2
41 .L001dec1_loop_2:
42 .byte 102,15,56,222,209
43 decl %ecx
44 movups (%edx),%xmm1
45 leal 16(%edx),%edx
46 jnz .L001dec1_loop_2
47 .byte 102,15,56,223,209
48 movups %xmm2,(%eax)
49 ret
50 .size aesni_decrypt,.-.L_aesni_decrypt_begin
51 .type _aesni_encrypt3,@function
52 .align 16
53 _aesni_encrypt3:
54 movups (%edx),%xmm0
55 shrl $1,%ecx
56 movups 16(%edx),%xmm1
57 leal 32(%edx),%edx
58 xorps %xmm0,%xmm2
59 pxor %xmm0,%xmm3
60 pxor %xmm0,%xmm4
61 movups (%edx),%xmm0
62 .L002enc3_loop:
63 .byte 102,15,56,220,209
64 .byte 102,15,56,220,217
65 decl %ecx
66 .byte 102,15,56,220,225
67 movups 16(%edx),%xmm1
68 .byte 102,15,56,220,208
69 .byte 102,15,56,220,216
70 leal 32(%edx),%edx
71 .byte 102,15,56,220,224
72 movups (%edx),%xmm0
73 jnz .L002enc3_loop
74 .byte 102,15,56,220,209
75 .byte 102,15,56,220,217
76 .byte 102,15,56,220,225
77 .byte 102,15,56,221,208
78 .byte 102,15,56,221,216
79 .byte 102,15,56,221,224
80 ret
81 .size _aesni_encrypt3,.-_aesni_encrypt3
82 .type _aesni_decrypt3,@function
83 .align 16
84 _aesni_decrypt3:
85 movups (%edx),%xmm0
86 shrl $1,%ecx
87 movups 16(%edx),%xmm1
88 leal 32(%edx),%edx
89 xorps %xmm0,%xmm2
90 pxor %xmm0,%xmm3
91 pxor %xmm0,%xmm4
92 movups (%edx),%xmm0
93 .L003dec3_loop:
94 .byte 102,15,56,222,209
95 .byte 102,15,56,222,217
96 decl %ecx
97 .byte 102,15,56,222,225
98 movups 16(%edx),%xmm1
99 .byte 102,15,56,222,208
100 .byte 102,15,56,222,216
101 leal 32(%edx),%edx
102 .byte 102,15,56,222,224
103 movups (%edx),%xmm0
104 jnz .L003dec3_loop
105 .byte 102,15,56,222,209
106 .byte 102,15,56,222,217
107 .byte 102,15,56,222,225
108 .byte 102,15,56,223,208
109 .byte 102,15,56,223,216
110 .byte 102,15,56,223,224
111 ret
112 .size _aesni_decrypt3,.-_aesni_decrypt3
113 .type _aesni_encrypt4,@function
114 .align 16
115 _aesni_encrypt4:
116 movups (%edx),%xmm0
117 movups 16(%edx),%xmm1
118 shrl $1,%ecx
119 leal 32(%edx),%edx
120 xorps %xmm0,%xmm2
121 pxor %xmm0,%xmm3
122 pxor %xmm0,%xmm4
123 pxor %xmm0,%xmm5
124 movups (%edx),%xmm0
125 .L004enc4_loop:
126 .byte 102,15,56,220,209
127 .byte 102,15,56,220,217
128 decl %ecx
129 .byte 102,15,56,220,225
130 .byte 102,15,56,220,233
131 movups 16(%edx),%xmm1
132 .byte 102,15,56,220,208
133 .byte 102,15,56,220,216
134 leal 32(%edx),%edx
135 .byte 102,15,56,220,224
136 .byte 102,15,56,220,232
137 movups (%edx),%xmm0
138 jnz .L004enc4_loop
139 .byte 102,15,56,220,209
140 .byte 102,15,56,220,217
141 .byte 102,15,56,220,225
142 .byte 102,15,56,220,233
143 .byte 102,15,56,221,208
144 .byte 102,15,56,221,216
145 .byte 102,15,56,221,224
146 .byte 102,15,56,221,232
147 ret
148 .size _aesni_encrypt4,.-_aesni_encrypt4
149 .type _aesni_decrypt4,@function
150 .align 16
151 _aesni_decrypt4:
152 movups (%edx),%xmm0
153 movups 16(%edx),%xmm1
154 shrl $1,%ecx
155 leal 32(%edx),%edx
156 xorps %xmm0,%xmm2
157 pxor %xmm0,%xmm3
158 pxor %xmm0,%xmm4
159 pxor %xmm0,%xmm5
160 movups (%edx),%xmm0
161 .L005dec4_loop:
162 .byte 102,15,56,222,209
163 .byte 102,15,56,222,217
164 decl %ecx
165 .byte 102,15,56,222,225
166 .byte 102,15,56,222,233
167 movups 16(%edx),%xmm1
168 .byte 102,15,56,222,208
169 .byte 102,15,56,222,216
170 leal 32(%edx),%edx
171 .byte 102,15,56,222,224
172 .byte 102,15,56,222,232
173 movups (%edx),%xmm0
174 jnz .L005dec4_loop
175 .byte 102,15,56,222,209
176 .byte 102,15,56,222,217
177 .byte 102,15,56,222,225
178 .byte 102,15,56,222,233
179 .byte 102,15,56,223,208
180 .byte 102,15,56,223,216
181 .byte 102,15,56,223,224
182 .byte 102,15,56,223,232
183 ret
184 .size _aesni_decrypt4,.-_aesni_decrypt4
185 .type _aesni_encrypt6,@function
186 .align 16
187 _aesni_encrypt6:
188 movups (%edx),%xmm0
189 shrl $1,%ecx
190 movups 16(%edx),%xmm1
191 leal 32(%edx),%edx
192 xorps %xmm0,%xmm2
193 pxor %xmm0,%xmm3
194 .byte 102,15,56,220,209
195 pxor %xmm0,%xmm4
196 .byte 102,15,56,220,217
197 pxor %xmm0,%xmm5
198 decl %ecx
199 .byte 102,15,56,220,225
200 pxor %xmm0,%xmm6
201 .byte 102,15,56,220,233
202 pxor %xmm0,%xmm7
203 .byte 102,15,56,220,241
204 movups (%edx),%xmm0
205 .byte 102,15,56,220,249
206 jmp .L_aesni_encrypt6_enter
207 .align 16
208 .L006enc6_loop:
209 .byte 102,15,56,220,209
210 .byte 102,15,56,220,217
211 decl %ecx
212 .byte 102,15,56,220,225
213 .byte 102,15,56,220,233
214 .byte 102,15,56,220,241
215 .byte 102,15,56,220,249
216 .align 16
217 .L_aesni_encrypt6_enter:
218 movups 16(%edx),%xmm1
219 .byte 102,15,56,220,208
220 .byte 102,15,56,220,216
221 leal 32(%edx),%edx
222 .byte 102,15,56,220,224
223 .byte 102,15,56,220,232
224 .byte 102,15,56,220,240
225 .byte 102,15,56,220,248
226 movups (%edx),%xmm0
227 jnz .L006enc6_loop
228 .byte 102,15,56,220,209
229 .byte 102,15,56,220,217
230 .byte 102,15,56,220,225
231 .byte 102,15,56,220,233
232 .byte 102,15,56,220,241
233 .byte 102,15,56,220,249
234 .byte 102,15,56,221,208
235 .byte 102,15,56,221,216
236 .byte 102,15,56,221,224
237 .byte 102,15,56,221,232
238 .byte 102,15,56,221,240
239 .byte 102,15,56,221,248
240 ret
241 .size _aesni_encrypt6,.-_aesni_encrypt6
242 .type _aesni_decrypt6,@function
243 .align 16
244 _aesni_decrypt6:
245 movups (%edx),%xmm0
246 shrl $1,%ecx
247 movups 16(%edx),%xmm1
248 leal 32(%edx),%edx
249 xorps %xmm0,%xmm2
250 pxor %xmm0,%xmm3
251 .byte 102,15,56,222,209
252 pxor %xmm0,%xmm4
253 .byte 102,15,56,222,217
254 pxor %xmm0,%xmm5
255 decl %ecx
256 .byte 102,15,56,222,225
257 pxor %xmm0,%xmm6
258 .byte 102,15,56,222,233
259 pxor %xmm0,%xmm7
260 .byte 102,15,56,222,241
261 movups (%edx),%xmm0
262 .byte 102,15,56,222,249
263 jmp .L_aesni_decrypt6_enter
264 .align 16
265 .L007dec6_loop:
266 .byte 102,15,56,222,209
267 .byte 102,15,56,222,217
268 decl %ecx
269 .byte 102,15,56,222,225
270 .byte 102,15,56,222,233
271 .byte 102,15,56,222,241
272 .byte 102,15,56,222,249
273 .align 16
274 .L_aesni_decrypt6_enter:
275 movups 16(%edx),%xmm1
276 .byte 102,15,56,222,208
277 .byte 102,15,56,222,216
278 leal 32(%edx),%edx
279 .byte 102,15,56,222,224
280 .byte 102,15,56,222,232
281 .byte 102,15,56,222,240
282 .byte 102,15,56,222,248
283 movups (%edx),%xmm0
284 jnz .L007dec6_loop
285 .byte 102,15,56,222,209
286 .byte 102,15,56,222,217
287 .byte 102,15,56,222,225
288 .byte 102,15,56,222,233
289 .byte 102,15,56,222,241
290 .byte 102,15,56,222,249
291 .byte 102,15,56,223,208
292 .byte 102,15,56,223,216
293 .byte 102,15,56,223,224
294 .byte 102,15,56,223,232
295 .byte 102,15,56,223,240
296 .byte 102,15,56,223,248
297 ret
298 .size _aesni_decrypt6,.-_aesni_decrypt6
299 .globl aesni_ecb_encrypt
300 .type aesni_ecb_encrypt,@function
301 .align 16
302 aesni_ecb_encrypt:
303 .L_aesni_ecb_encrypt_begin:
304 pushl %ebp
305 pushl %ebx
306 pushl %esi
307 pushl %edi
308 movl 20(%esp),%esi
309 movl 24(%esp),%edi
310 movl 28(%esp),%eax
311 movl 32(%esp),%edx
312 movl 36(%esp),%ebx
313 andl $-16,%eax
314 jz .L008ecb_ret
315 movl 240(%edx),%ecx
316 testl %ebx,%ebx
317 jz .L009ecb_decrypt
318 movl %edx,%ebp
319 movl %ecx,%ebx
320 cmpl $96,%eax
321 jb .L010ecb_enc_tail
322 movdqu (%esi),%xmm2
323 movdqu 16(%esi),%xmm3
324 movdqu 32(%esi),%xmm4
325 movdqu 48(%esi),%xmm5
326 movdqu 64(%esi),%xmm6
327 movdqu 80(%esi),%xmm7
328 leal 96(%esi),%esi
329 subl $96,%eax
330 jmp .L011ecb_enc_loop6_enter
331 .align 16
332 .L012ecb_enc_loop6:
333 movups %xmm2,(%edi)
334 movdqu (%esi),%xmm2
335 movups %xmm3,16(%edi)
336 movdqu 16(%esi),%xmm3
337 movups %xmm4,32(%edi)
338 movdqu 32(%esi),%xmm4
339 movups %xmm5,48(%edi)
340 movdqu 48(%esi),%xmm5
341 movups %xmm6,64(%edi)
342 movdqu 64(%esi),%xmm6
343 movups %xmm7,80(%edi)
344 leal 96(%edi),%edi
345 movdqu 80(%esi),%xmm7
346 leal 96(%esi),%esi
347 .L011ecb_enc_loop6_enter:
348 call _aesni_encrypt6
349 movl %ebp,%edx
350 movl %ebx,%ecx
351 subl $96,%eax
352 jnc .L012ecb_enc_loop6
353 movups %xmm2,(%edi)
354 movups %xmm3,16(%edi)
355 movups %xmm4,32(%edi)
356 movups %xmm5,48(%edi)
357 movups %xmm6,64(%edi)
358 movups %xmm7,80(%edi)
359 leal 96(%edi),%edi
360 addl $96,%eax
361 jz .L008ecb_ret
362 .L010ecb_enc_tail:
363 movups (%esi),%xmm2
364 cmpl $32,%eax
365 jb .L013ecb_enc_one
366 movups 16(%esi),%xmm3
367 je .L014ecb_enc_two
368 movups 32(%esi),%xmm4
369 cmpl $64,%eax
370 jb .L015ecb_enc_three
371 movups 48(%esi),%xmm5
372 je .L016ecb_enc_four
373 movups 64(%esi),%xmm6
374 xorps %xmm7,%xmm7
375 call _aesni_encrypt6
376 movups %xmm2,(%edi)
377 movups %xmm3,16(%edi)
378 movups %xmm4,32(%edi)
379 movups %xmm5,48(%edi)
380 movups %xmm6,64(%edi)
381 jmp .L008ecb_ret
382 .align 16
383 .L013ecb_enc_one:
384 movups (%edx),%xmm0
385 movups 16(%edx),%xmm1
386 leal 32(%edx),%edx
387 xorps %xmm0,%xmm2
388 .L017enc1_loop_3:
389 .byte 102,15,56,220,209
390 decl %ecx
391 movups (%edx),%xmm1
392 leal 16(%edx),%edx
393 jnz .L017enc1_loop_3
394 .byte 102,15,56,221,209
395 movups %xmm2,(%edi)
396 jmp .L008ecb_ret
397 .align 16
398 .L014ecb_enc_two:
399 xorps %xmm4,%xmm4
400 call _aesni_encrypt3
401 movups %xmm2,(%edi)
402 movups %xmm3,16(%edi)
403 jmp .L008ecb_ret
404 .align 16
405 .L015ecb_enc_three:
406 call _aesni_encrypt3
407 movups %xmm2,(%edi)
408 movups %xmm3,16(%edi)
409 movups %xmm4,32(%edi)
410 jmp .L008ecb_ret
411 .align 16
412 .L016ecb_enc_four:
413 call _aesni_encrypt4
414 movups %xmm2,(%edi)
415 movups %xmm3,16(%edi)
416 movups %xmm4,32(%edi)
417 movups %xmm5,48(%edi)
418 jmp .L008ecb_ret
419 .align 16
420 .L009ecb_decrypt:
421 movl %edx,%ebp
422 movl %ecx,%ebx
423 cmpl $96,%eax
424 jb .L018ecb_dec_tail
425 movdqu (%esi),%xmm2
426 movdqu 16(%esi),%xmm3
427 movdqu 32(%esi),%xmm4
428 movdqu 48(%esi),%xmm5
429 movdqu 64(%esi),%xmm6
430 movdqu 80(%esi),%xmm7
431 leal 96(%esi),%esi
432 subl $96,%eax
433 jmp .L019ecb_dec_loop6_enter
434 .align 16
435 .L020ecb_dec_loop6:
436 movups %xmm2,(%edi)
437 movdqu (%esi),%xmm2
438 movups %xmm3,16(%edi)
439 movdqu 16(%esi),%xmm3
440 movups %xmm4,32(%edi)
441 movdqu 32(%esi),%xmm4
442 movups %xmm5,48(%edi)
443 movdqu 48(%esi),%xmm5
444 movups %xmm6,64(%edi)
445 movdqu 64(%esi),%xmm6
446 movups %xmm7,80(%edi)
447 leal 96(%edi),%edi
448 movdqu 80(%esi),%xmm7
449 leal 96(%esi),%esi
450 .L019ecb_dec_loop6_enter:
451 call _aesni_decrypt6
452 movl %ebp,%edx
453 movl %ebx,%ecx
454 subl $96,%eax
455 jnc .L020ecb_dec_loop6
456 movups %xmm2,(%edi)
457 movups %xmm3,16(%edi)
458 movups %xmm4,32(%edi)
459 movups %xmm5,48(%edi)
460 movups %xmm6,64(%edi)
461 movups %xmm7,80(%edi)
462 leal 96(%edi),%edi
463 addl $96,%eax
464 jz .L008ecb_ret
465 .L018ecb_dec_tail:
466 movups (%esi),%xmm2
467 cmpl $32,%eax
468 jb .L021ecb_dec_one
469 movups 16(%esi),%xmm3
470 je .L022ecb_dec_two
471 movups 32(%esi),%xmm4
472 cmpl $64,%eax
473 jb .L023ecb_dec_three
474 movups 48(%esi),%xmm5
475 je .L024ecb_dec_four
476 movups 64(%esi),%xmm6
477 xorps %xmm7,%xmm7
478 call _aesni_decrypt6
479 movups %xmm2,(%edi)
480 movups %xmm3,16(%edi)
481 movups %xmm4,32(%edi)
482 movups %xmm5,48(%edi)
483 movups %xmm6,64(%edi)
484 jmp .L008ecb_ret
485 .align 16
486 .L021ecb_dec_one:
487 movups (%edx),%xmm0
488 movups 16(%edx),%xmm1
489 leal 32(%edx),%edx
490 xorps %xmm0,%xmm2
491 .L025dec1_loop_4:
492 .byte 102,15,56,222,209
493 decl %ecx
494 movups (%edx),%xmm1
495 leal 16(%edx),%edx
496 jnz .L025dec1_loop_4
497 .byte 102,15,56,223,209
498 movups %xmm2,(%edi)
499 jmp .L008ecb_ret
500 .align 16
501 .L022ecb_dec_two:
502 xorps %xmm4,%xmm4
503 call _aesni_decrypt3
504 movups %xmm2,(%edi)
505 movups %xmm3,16(%edi)
506 jmp .L008ecb_ret
507 .align 16
508 .L023ecb_dec_three:
509 call _aesni_decrypt3
510 movups %xmm2,(%edi)
511 movups %xmm3,16(%edi)
512 movups %xmm4,32(%edi)
513 jmp .L008ecb_ret
514 .align 16
515 .L024ecb_dec_four:
516 call _aesni_decrypt4
517 movups %xmm2,(%edi)
518 movups %xmm3,16(%edi)
519 movups %xmm4,32(%edi)
520 movups %xmm5,48(%edi)
521 .L008ecb_ret:
522 popl %edi
523 popl %esi
524 popl %ebx
525 popl %ebp
526 ret
527 .size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
528 .globl aesni_ccm64_encrypt_blocks
529 .type aesni_ccm64_encrypt_blocks,@function
530 .align 16
531 aesni_ccm64_encrypt_blocks:
532 .L_aesni_ccm64_encrypt_blocks_begin:
533 pushl %ebp
534 pushl %ebx
535 pushl %esi
536 pushl %edi
537 movl 20(%esp),%esi
538 movl 24(%esp),%edi
539 movl 28(%esp),%eax
540 movl 32(%esp),%edx
541 movl 36(%esp),%ebx
542 movl 40(%esp),%ecx
543 movl %esp,%ebp
544 subl $60,%esp
545 andl $-16,%esp
546 movl %ebp,48(%esp)
547 movdqu (%ebx),%xmm7
548 movdqu (%ecx),%xmm3
549 movl 240(%edx),%ecx
550 movl $202182159,(%esp)
551 movl $134810123,4(%esp)
552 movl $67438087,8(%esp)
553 movl $66051,12(%esp)
554 movl $1,%ebx
555 xorl %ebp,%ebp
556 movl %ebx,16(%esp)
557 movl %ebp,20(%esp)
558 movl %ebp,24(%esp)
559 movl %ebp,28(%esp)
560 shrl $1,%ecx
561 leal (%edx),%ebp
562 movdqa (%esp),%xmm5
563 movdqa %xmm7,%xmm2
564 movl %ecx,%ebx
565 .byte 102,15,56,0,253
566 .L026ccm64_enc_outer:
567 movups (%ebp),%xmm0
568 movl %ebx,%ecx
569 movups (%esi),%xmm6
570 xorps %xmm0,%xmm2
571 movups 16(%ebp),%xmm1
572 xorps %xmm6,%xmm0
573 leal 32(%ebp),%edx
574 xorps %xmm0,%xmm3
575 movups (%edx),%xmm0
576 .L027ccm64_enc2_loop:
577 .byte 102,15,56,220,209
578 decl %ecx
579 .byte 102,15,56,220,217
580 movups 16(%edx),%xmm1
581 .byte 102,15,56,220,208
582 leal 32(%edx),%edx
583 .byte 102,15,56,220,216
584 movups (%edx),%xmm0
585 jnz .L027ccm64_enc2_loop
586 .byte 102,15,56,220,209
587 .byte 102,15,56,220,217
588 paddq 16(%esp),%xmm7
589 .byte 102,15,56,221,208
590 .byte 102,15,56,221,216
591 decl %eax
592 leal 16(%esi),%esi
593 xorps %xmm2,%xmm6
594 movdqa %xmm7,%xmm2
595 movups %xmm6,(%edi)
596 leal 16(%edi),%edi
597 .byte 102,15,56,0,213
598 jnz .L026ccm64_enc_outer
599 movl 48(%esp),%esp
600 movl 40(%esp),%edi
601 movups %xmm3,(%edi)
602 popl %edi
603 popl %esi
604 popl %ebx
605 popl %ebp
606 ret
607 .size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
608 .globl aesni_ccm64_decrypt_blocks
609 .type aesni_ccm64_decrypt_blocks,@function
610 .align 16
611 aesni_ccm64_decrypt_blocks:
612 .L_aesni_ccm64_decrypt_blocks_begin:
613 pushl %ebp
614 pushl %ebx
615 pushl %esi
616 pushl %edi
617 movl 20(%esp),%esi
618 movl 24(%esp),%edi
619 movl 28(%esp),%eax
620 movl 32(%esp),%edx
621 movl 36(%esp),%ebx
622 movl 40(%esp),%ecx
623 movl %esp,%ebp
624 subl $60,%esp
625 andl $-16,%esp
626 movl %ebp,48(%esp)
627 movdqu (%ebx),%xmm7
628 movdqu (%ecx),%xmm3
629 movl 240(%edx),%ecx
630 movl $202182159,(%esp)
631 movl $134810123,4(%esp)
632 movl $67438087,8(%esp)
633 movl $66051,12(%esp)
634 movl $1,%ebx
635 xorl %ebp,%ebp
636 movl %ebx,16(%esp)
637 movl %ebp,20(%esp)
638 movl %ebp,24(%esp)
639 movl %ebp,28(%esp)
640 movdqa (%esp),%xmm5
641 movdqa %xmm7,%xmm2
642 movl %edx,%ebp
643 movl %ecx,%ebx
644 .byte 102,15,56,0,253
645 movups (%edx),%xmm0
646 movups 16(%edx),%xmm1
647 leal 32(%edx),%edx
648 xorps %xmm0,%xmm2
649 .L028enc1_loop_5:
650 .byte 102,15,56,220,209
651 decl %ecx
652 movups (%edx),%xmm1
653 leal 16(%edx),%edx
654 jnz .L028enc1_loop_5
655 .byte 102,15,56,221,209
656 movups (%esi),%xmm6
657 paddq 16(%esp),%xmm7
658 leal 16(%esi),%esi
659 jmp .L029ccm64_dec_outer
660 .align 16
661 .L029ccm64_dec_outer:
662 xorps %xmm2,%xmm6
663 movdqa %xmm7,%xmm2
664 movl %ebx,%ecx
665 movups %xmm6,(%edi)
666 leal 16(%edi),%edi
667 .byte 102,15,56,0,213
668 subl $1,%eax
669 jz .L030ccm64_dec_break
670 movups (%ebp),%xmm0
671 shrl $1,%ecx
672 movups 16(%ebp),%xmm1
673 xorps %xmm0,%xmm6
674 leal 32(%ebp),%edx
675 xorps %xmm0,%xmm2
676 xorps %xmm6,%xmm3
677 movups (%edx),%xmm0
678 .L031ccm64_dec2_loop:
679 .byte 102,15,56,220,209
680 decl %ecx
681 .byte 102,15,56,220,217
682 movups 16(%edx),%xmm1
683 .byte 102,15,56,220,208
684 leal 32(%edx),%edx
685 .byte 102,15,56,220,216
686 movups (%edx),%xmm0
687 jnz .L031ccm64_dec2_loop
688 movups (%esi),%xmm6
689 paddq 16(%esp),%xmm7
690 .byte 102,15,56,220,209
691 .byte 102,15,56,220,217
692 leal 16(%esi),%esi
693 .byte 102,15,56,221,208
694 .byte 102,15,56,221,216
695 jmp .L029ccm64_dec_outer
696 .align 16
697 .L030ccm64_dec_break:
698 movl %ebp,%edx
699 movups (%edx),%xmm0
700 movups 16(%edx),%xmm1
701 xorps %xmm0,%xmm6
702 leal 32(%edx),%edx
703 xorps %xmm6,%xmm3
704 .L032enc1_loop_6:
705 .byte 102,15,56,220,217
706 decl %ecx
707 movups (%edx),%xmm1
708 leal 16(%edx),%edx
709 jnz .L032enc1_loop_6
710 .byte 102,15,56,221,217
711 movl 48(%esp),%esp
712 movl 40(%esp),%edi
713 movups %xmm3,(%edi)
714 popl %edi
715 popl %esi
716 popl %ebx
717 popl %ebp
718 ret
719 .size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
720 .globl aesni_ctr32_encrypt_blocks
721 .type aesni_ctr32_encrypt_blocks,@function
722 .align 16
723 aesni_ctr32_encrypt_blocks:
724 .L_aesni_ctr32_encrypt_blocks_begin:
725 pushl %ebp
726 pushl %ebx
727 pushl %esi
728 pushl %edi
729 movl 20(%esp),%esi
730 movl 24(%esp),%edi
731 movl 28(%esp),%eax
732 movl 32(%esp),%edx
733 movl 36(%esp),%ebx
734 movl %esp,%ebp
735 subl $88,%esp
736 andl $-16,%esp
737 movl %ebp,80(%esp)
738 cmpl $1,%eax
739 je .L033ctr32_one_shortcut
740 movdqu (%ebx),%xmm7
741 movl $202182159,(%esp)
742 movl $134810123,4(%esp)
743 movl $67438087,8(%esp)
744 movl $66051,12(%esp)
745 movl $6,%ecx
746 xorl %ebp,%ebp
747 movl %ecx,16(%esp)
748 movl %ecx,20(%esp)
749 movl %ecx,24(%esp)
750 movl %ebp,28(%esp)
751 .byte 102,15,58,22,251,3
752 .byte 102,15,58,34,253,3
753 movl 240(%edx),%ecx
754 bswap %ebx
755 pxor %xmm1,%xmm1
756 pxor %xmm0,%xmm0
757 movdqa (%esp),%xmm2
758 .byte 102,15,58,34,203,0
759 leal 3(%ebx),%ebp
760 .byte 102,15,58,34,197,0
761 incl %ebx
762 .byte 102,15,58,34,203,1
763 incl %ebp
764 .byte 102,15,58,34,197,1
765 incl %ebx
766 .byte 102,15,58,34,203,2
767 incl %ebp
768 .byte 102,15,58,34,197,2
769 movdqa %xmm1,48(%esp)
770 .byte 102,15,56,0,202
771 movdqa %xmm0,64(%esp)
772 .byte 102,15,56,0,194
773 pshufd $192,%xmm1,%xmm2
774 pshufd $128,%xmm1,%xmm3
775 cmpl $6,%eax
776 jb .L034ctr32_tail
777 movdqa %xmm7,32(%esp)
778 shrl $1,%ecx
779 movl %edx,%ebp
780 movl %ecx,%ebx
781 subl $6,%eax
782 jmp .L035ctr32_loop6
783 .align 16
784 .L035ctr32_loop6:
785 pshufd $64,%xmm1,%xmm4
786 movdqa 32(%esp),%xmm1
787 pshufd $192,%xmm0,%xmm5
788 por %xmm1,%xmm2
789 pshufd $128,%xmm0,%xmm6
790 por %xmm1,%xmm3
791 pshufd $64,%xmm0,%xmm7
792 por %xmm1,%xmm4
793 por %xmm1,%xmm5
794 por %xmm1,%xmm6
795 por %xmm1,%xmm7
796 movups (%ebp),%xmm0
797 movups 16(%ebp),%xmm1
798 leal 32(%ebp),%edx
799 decl %ecx
800 pxor %xmm0,%xmm2
801 pxor %xmm0,%xmm3
802 .byte 102,15,56,220,209
803 pxor %xmm0,%xmm4
804 .byte 102,15,56,220,217
805 pxor %xmm0,%xmm5
806 .byte 102,15,56,220,225
807 pxor %xmm0,%xmm6
808 .byte 102,15,56,220,233
809 pxor %xmm0,%xmm7
810 .byte 102,15,56,220,241
811 movups (%edx),%xmm0
812 .byte 102,15,56,220,249
813 call .L_aesni_encrypt6_enter
814 movups (%esi),%xmm1
815 movups 16(%esi),%xmm0
816 xorps %xmm1,%xmm2
817 movups 32(%esi),%xmm1
818 xorps %xmm0,%xmm3
819 movups %xmm2,(%edi)
820 movdqa 16(%esp),%xmm0
821 xorps %xmm1,%xmm4
822 movdqa 48(%esp),%xmm1
823 movups %xmm3,16(%edi)
824 movups %xmm4,32(%edi)
825 paddd %xmm0,%xmm1
826 paddd 64(%esp),%xmm0
827 movdqa (%esp),%xmm2
828 movups 48(%esi),%xmm3
829 movups 64(%esi),%xmm4
830 xorps %xmm3,%xmm5
831 movups 80(%esi),%xmm3
832 leal 96(%esi),%esi
833 movdqa %xmm1,48(%esp)
834 .byte 102,15,56,0,202
835 xorps %xmm4,%xmm6
836 movups %xmm5,48(%edi)
837 xorps %xmm3,%xmm7
838 movdqa %xmm0,64(%esp)
839 .byte 102,15,56,0,194
840 movups %xmm6,64(%edi)
841 pshufd $192,%xmm1,%xmm2
842 movups %xmm7,80(%edi)
843 leal 96(%edi),%edi
844 movl %ebx,%ecx
845 pshufd $128,%xmm1,%xmm3
846 subl $6,%eax
847 jnc .L035ctr32_loop6
848 addl $6,%eax
849 jz .L036ctr32_ret
850 movl %ebp,%edx
851 leal 1(,%ecx,2),%ecx
852 movdqa 32(%esp),%xmm7
853 .L034ctr32_tail:
854 por %xmm7,%xmm2
855 cmpl $2,%eax
856 jb .L037ctr32_one
857 pshufd $64,%xmm1,%xmm4
858 por %xmm7,%xmm3
859 je .L038ctr32_two
860 pshufd $192,%xmm0,%xmm5
861 por %xmm7,%xmm4
862 cmpl $4,%eax
863 jb .L039ctr32_three
864 pshufd $128,%xmm0,%xmm6
865 por %xmm7,%xmm5
866 je .L040ctr32_four
867 por %xmm7,%xmm6
868 call _aesni_encrypt6
869 movups (%esi),%xmm1
870 movups 16(%esi),%xmm0
871 xorps %xmm1,%xmm2
872 movups 32(%esi),%xmm1
873 xorps %xmm0,%xmm3
874 movups 48(%esi),%xmm0
875 xorps %xmm1,%xmm4
876 movups 64(%esi),%xmm1
877 xorps %xmm0,%xmm5
878 movups %xmm2,(%edi)
879 xorps %xmm1,%xmm6
880 movups %xmm3,16(%edi)
881 movups %xmm4,32(%edi)
882 movups %xmm5,48(%edi)
883 movups %xmm6,64(%edi)
884 jmp .L036ctr32_ret
885 .align 16
886 .L033ctr32_one_shortcut:
887 movups (%ebx),%xmm2
888 movl 240(%edx),%ecx
889 .L037ctr32_one:
890 movups (%edx),%xmm0
891 movups 16(%edx),%xmm1
892 leal 32(%edx),%edx
893 xorps %xmm0,%xmm2
894 .L041enc1_loop_7:
895 .byte 102,15,56,220,209
896 decl %ecx
897 movups (%edx),%xmm1
898 leal 16(%edx),%edx
899 jnz .L041enc1_loop_7
900 .byte 102,15,56,221,209
901 movups (%esi),%xmm6
902 xorps %xmm2,%xmm6
903 movups %xmm6,(%edi)
904 jmp .L036ctr32_ret
905 .align 16
906 .L038ctr32_two:
907 call _aesni_encrypt3
908 movups (%esi),%xmm5
909 movups 16(%esi),%xmm6
910 xorps %xmm5,%xmm2
911 xorps %xmm6,%xmm3
912 movups %xmm2,(%edi)
913 movups %xmm3,16(%edi)
914 jmp .L036ctr32_ret
915 .align 16
916 .L039ctr32_three:
917 call _aesni_encrypt3
918 movups (%esi),%xmm5
919 movups 16(%esi),%xmm6
920 xorps %xmm5,%xmm2
921 movups 32(%esi),%xmm7
922 xorps %xmm6,%xmm3
923 movups %xmm2,(%edi)
924 xorps %xmm7,%xmm4
925 movups %xmm3,16(%edi)
926 movups %xmm4,32(%edi)
927 jmp .L036ctr32_ret
928 .align 16
929 .L040ctr32_four:
930 call _aesni_encrypt4
931 movups (%esi),%xmm6
932 movups 16(%esi),%xmm7
933 movups 32(%esi),%xmm1
934 xorps %xmm6,%xmm2
935 movups 48(%esi),%xmm0
936 xorps %xmm7,%xmm3
937 movups %xmm2,(%edi)
938 xorps %xmm1,%xmm4
939 movups %xmm3,16(%edi)
940 xorps %xmm0,%xmm5
941 movups %xmm4,32(%edi)
942 movups %xmm5,48(%edi)
943 .L036ctr32_ret:
944 movl 80(%esp),%esp
945 popl %edi
946 popl %esi
947 popl %ebx
948 popl %ebp
949 ret
950 .size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
951 .globl aesni_xts_encrypt
952 .type aesni_xts_encrypt,@function
953 .align 16
954 aesni_xts_encrypt:
955 .L_aesni_xts_encrypt_begin:
956 pushl %ebp
957 pushl %ebx
958 pushl %esi
959 pushl %edi
960 movl 36(%esp),%edx
961 movl 40(%esp),%esi
962 movl 240(%edx),%ecx
963 movups (%esi),%xmm2
964 movups (%edx),%xmm0
965 movups 16(%edx),%xmm1
966 leal 32(%edx),%edx
967 xorps %xmm0,%xmm2
968 .L042enc1_loop_8:
969 .byte 102,15,56,220,209
970 decl %ecx
971 movups (%edx),%xmm1
972 leal 16(%edx),%edx
973 jnz .L042enc1_loop_8
974 .byte 102,15,56,221,209
975 movl 20(%esp),%esi
976 movl 24(%esp),%edi
977 movl 28(%esp),%eax
978 movl 32(%esp),%edx
979 movl %esp,%ebp
980 subl $120,%esp
981 movl 240(%edx),%ecx
982 andl $-16,%esp
983 movl $135,96(%esp)
984 movl $0,100(%esp)
985 movl $1,104(%esp)
986 movl $0,108(%esp)
987 movl %eax,112(%esp)
988 movl %ebp,116(%esp)
989 movdqa %xmm2,%xmm1
990 pxor %xmm0,%xmm0
991 movdqa 96(%esp),%xmm3
992 pcmpgtd %xmm1,%xmm0
993 andl $-16,%eax
994 movl %edx,%ebp
995 movl %ecx,%ebx
996 subl $96,%eax
997 jc .L043xts_enc_short
998 shrl $1,%ecx
999 movl %ecx,%ebx
1000 jmp .L044xts_enc_loop6
1001 .align 16
1002 .L044xts_enc_loop6:
1003 pshufd $19,%xmm0,%xmm2
1004 pxor %xmm0,%xmm0
1005 movdqa %xmm1,(%esp)
1006 paddq %xmm1,%xmm1
1007 pand %xmm3,%xmm2
1008 pcmpgtd %xmm1,%xmm0
1009 pxor %xmm2,%xmm1
1010 pshufd $19,%xmm0,%xmm2
1011 pxor %xmm0,%xmm0
1012 movdqa %xmm1,16(%esp)
1013 paddq %xmm1,%xmm1
1014 pand %xmm3,%xmm2
1015 pcmpgtd %xmm1,%xmm0
1016 pxor %xmm2,%xmm1
1017 pshufd $19,%xmm0,%xmm2
1018 pxor %xmm0,%xmm0
1019 movdqa %xmm1,32(%esp)
1020 paddq %xmm1,%xmm1
1021 pand %xmm3,%xmm2
1022 pcmpgtd %xmm1,%xmm0
1023 pxor %xmm2,%xmm1
1024 pshufd $19,%xmm0,%xmm2
1025 pxor %xmm0,%xmm0
1026 movdqa %xmm1,48(%esp)
1027 paddq %xmm1,%xmm1
1028 pand %xmm3,%xmm2
1029 pcmpgtd %xmm1,%xmm0
1030 pxor %xmm2,%xmm1
1031 pshufd $19,%xmm0,%xmm7
1032 movdqa %xmm1,64(%esp)
1033 paddq %xmm1,%xmm1
1034 movups (%ebp),%xmm0
1035 pand %xmm3,%xmm7
1036 movups (%esi),%xmm2
1037 pxor %xmm1,%xmm7
1038 movdqu 16(%esi),%xmm3
1039 xorps %xmm0,%xmm2
1040 movdqu 32(%esi),%xmm4
1041 pxor %xmm0,%xmm3
1042 movdqu 48(%esi),%xmm5
1043 pxor %xmm0,%xmm4
1044 movdqu 64(%esi),%xmm6
1045 pxor %xmm0,%xmm5
1046 movdqu 80(%esi),%xmm1
1047 pxor %xmm0,%xmm6
1048 leal 96(%esi),%esi
1049 pxor (%esp),%xmm2
1050 movdqa %xmm7,80(%esp)
1051 pxor %xmm1,%xmm7
1052 movups 16(%ebp),%xmm1
1053 leal 32(%ebp),%edx
1054 pxor 16(%esp),%xmm3
1055 .byte 102,15,56,220,209
1056 pxor 32(%esp),%xmm4
1057 .byte 102,15,56,220,217
1058 pxor 48(%esp),%xmm5
1059 decl %ecx
1060 .byte 102,15,56,220,225
1061 pxor 64(%esp),%xmm6
1062 .byte 102,15,56,220,233
1063 pxor %xmm0,%xmm7
1064 .byte 102,15,56,220,241
1065 movups (%edx),%xmm0
1066 .byte 102,15,56,220,249
1067 call .L_aesni_encrypt6_enter
1068 movdqa 80(%esp),%xmm1
1069 pxor %xmm0,%xmm0
1070 xorps (%esp),%xmm2
1071 pcmpgtd %xmm1,%xmm0
1072 xorps 16(%esp),%xmm3
1073 movups %xmm2,(%edi)
1074 xorps 32(%esp),%xmm4
1075 movups %xmm3,16(%edi)
1076 xorps 48(%esp),%xmm5
1077 movups %xmm4,32(%edi)
1078 xorps 64(%esp),%xmm6
1079 movups %xmm5,48(%edi)
1080 xorps %xmm1,%xmm7
1081 movups %xmm6,64(%edi)
1082 pshufd $19,%xmm0,%xmm2
1083 movups %xmm7,80(%edi)
1084 leal 96(%edi),%edi
1085 movdqa 96(%esp),%xmm3
1086 pxor %xmm0,%xmm0
1087 paddq %xmm1,%xmm1
1088 pand %xmm3,%xmm2
1089 pcmpgtd %xmm1,%xmm0
1090 movl %ebx,%ecx
1091 pxor %xmm2,%xmm1
1092 subl $96,%eax
1093 jnc .L044xts_enc_loop6
1094 leal 1(,%ecx,2),%ecx
1095 movl %ebp,%edx
1096 movl %ecx,%ebx
1097 .L043xts_enc_short:
1098 addl $96,%eax
1099 jz .L045xts_enc_done6x
1100 movdqa %xmm1,%xmm5
1101 cmpl $32,%eax
1102 jb .L046xts_enc_one
1103 pshufd $19,%xmm0,%xmm2
1104 pxor %xmm0,%xmm0
1105 paddq %xmm1,%xmm1
1106 pand %xmm3,%xmm2
1107 pcmpgtd %xmm1,%xmm0
1108 pxor %xmm2,%xmm1
1109 je .L047xts_enc_two
1110 pshufd $19,%xmm0,%xmm2
1111 pxor %xmm0,%xmm0
1112 movdqa %xmm1,%xmm6
1113 paddq %xmm1,%xmm1
1114 pand %xmm3,%xmm2
1115 pcmpgtd %xmm1,%xmm0
1116 pxor %xmm2,%xmm1
1117 cmpl $64,%eax
1118 jb .L048xts_enc_three
1119 pshufd $19,%xmm0,%xmm2
1120 pxor %xmm0,%xmm0
1121 movdqa %xmm1,%xmm7
1122 paddq %xmm1,%xmm1
1123 pand %xmm3,%xmm2
1124 pcmpgtd %xmm1,%xmm0
1125 pxor %xmm2,%xmm1
1126 movdqa %xmm5,(%esp)
1127 movdqa %xmm6,16(%esp)
1128 je .L049xts_enc_four
1129 movdqa %xmm7,32(%esp)
1130 pshufd $19,%xmm0,%xmm7
1131 movdqa %xmm1,48(%esp)
1132 paddq %xmm1,%xmm1
1133 pand %xmm3,%xmm7
1134 pxor %xmm1,%xmm7
1135 movdqu (%esi),%xmm2
1136 movdqu 16(%esi),%xmm3
1137 movdqu 32(%esi),%xmm4
1138 pxor (%esp),%xmm2
1139 movdqu 48(%esi),%xmm5
1140 pxor 16(%esp),%xmm3
1141 movdqu 64(%esi),%xmm6
1142 pxor 32(%esp),%xmm4
1143 leal 80(%esi),%esi
1144 pxor 48(%esp),%xmm5
1145 movdqa %xmm7,64(%esp)
1146 pxor %xmm7,%xmm6
1147 call _aesni_encrypt6
1148 movaps 64(%esp),%xmm1
1149 xorps (%esp),%xmm2
1150 xorps 16(%esp),%xmm3
1151 xorps 32(%esp),%xmm4
1152 movups %xmm2,(%edi)
1153 xorps 48(%esp),%xmm5
1154 movups %xmm3,16(%edi)
1155 xorps %xmm1,%xmm6
1156 movups %xmm4,32(%edi)
1157 movups %xmm5,48(%edi)
1158 movups %xmm6,64(%edi)
1159 leal 80(%edi),%edi
1160 jmp .L050xts_enc_done
1161 .align 16
1162 .L046xts_enc_one:
1163 movups (%esi),%xmm2
1164 leal 16(%esi),%esi
1165 xorps %xmm5,%xmm2
1166 movups (%edx),%xmm0
1167 movups 16(%edx),%xmm1
1168 leal 32(%edx),%edx
1169 xorps %xmm0,%xmm2
1170 .L051enc1_loop_9:
1171 .byte 102,15,56,220,209
1172 decl %ecx
1173 movups (%edx),%xmm1
1174 leal 16(%edx),%edx
1175 jnz .L051enc1_loop_9
1176 .byte 102,15,56,221,209
1177 xorps %xmm5,%xmm2
1178 movups %xmm2,(%edi)
1179 leal 16(%edi),%edi
1180 movdqa %xmm5,%xmm1
1181 jmp .L050xts_enc_done
1182 .align 16
1183 .L047xts_enc_two:
1184 movaps %xmm1,%xmm6
1185 movups (%esi),%xmm2
1186 movups 16(%esi),%xmm3
1187 leal 32(%esi),%esi
1188 xorps %xmm5,%xmm2
1189 xorps %xmm6,%xmm3
1190 xorps %xmm4,%xmm4
1191 call _aesni_encrypt3
1192 xorps %xmm5,%xmm2
1193 xorps %xmm6,%xmm3
1194 movups %xmm2,(%edi)
1195 movups %xmm3,16(%edi)
1196 leal 32(%edi),%edi
1197 movdqa %xmm6,%xmm1
1198 jmp .L050xts_enc_done
1199 .align 16
1200 .L048xts_enc_three:
1201 movaps %xmm1,%xmm7
1202 movups (%esi),%xmm2
1203 movups 16(%esi),%xmm3
1204 movups 32(%esi),%xmm4
1205 leal 48(%esi),%esi
1206 xorps %xmm5,%xmm2
1207 xorps %xmm6,%xmm3
1208 xorps %xmm7,%xmm4
1209 call _aesni_encrypt3
1210 xorps %xmm5,%xmm2
1211 xorps %xmm6,%xmm3
1212 xorps %xmm7,%xmm4
1213 movups %xmm2,(%edi)
1214 movups %xmm3,16(%edi)
1215 movups %xmm4,32(%edi)
1216 leal 48(%edi),%edi
1217 movdqa %xmm7,%xmm1
1218 jmp .L050xts_enc_done
1219 .align 16
1220 .L049xts_enc_four:
1221 movaps %xmm1,%xmm6
1222 movups (%esi),%xmm2
1223 movups 16(%esi),%xmm3
1224 movups 32(%esi),%xmm4
1225 xorps (%esp),%xmm2
1226 movups 48(%esi),%xmm5
1227 leal 64(%esi),%esi
1228 xorps 16(%esp),%xmm3
1229 xorps %xmm7,%xmm4
1230 xorps %xmm6,%xmm5
1231 call _aesni_encrypt4
1232 xorps (%esp),%xmm2
1233 xorps 16(%esp),%xmm3
1234 xorps %xmm7,%xmm4
1235 movups %xmm2,(%edi)
1236 xorps %xmm6,%xmm5
1237 movups %xmm3,16(%edi)
1238 movups %xmm4,32(%edi)
1239 movups %xmm5,48(%edi)
1240 leal 64(%edi),%edi
1241 movdqa %xmm6,%xmm1
1242 jmp .L050xts_enc_done
1243 .align 16
1244 .L045xts_enc_done6x:
1245 movl 112(%esp),%eax
1246 andl $15,%eax
1247 jz .L052xts_enc_ret
1248 movdqa %xmm1,%xmm5
1249 movl %eax,112(%esp)
1250 jmp .L053xts_enc_steal
1251 .align 16
1252 .L050xts_enc_done:
1253 movl 112(%esp),%eax
1254 pxor %xmm0,%xmm0
1255 andl $15,%eax
1256 jz .L052xts_enc_ret
1257 pcmpgtd %xmm1,%xmm0
1258 movl %eax,112(%esp)
1259 pshufd $19,%xmm0,%xmm5
1260 paddq %xmm1,%xmm1
1261 pand 96(%esp),%xmm5
1262 pxor %xmm1,%xmm5
1263 .L053xts_enc_steal:
1264 movzbl (%esi),%ecx
1265 movzbl -16(%edi),%edx
1266 leal 1(%esi),%esi
1267 movb %cl,-16(%edi)
1268 movb %dl,(%edi)
1269 leal 1(%edi),%edi
1270 subl $1,%eax
1271 jnz .L053xts_enc_steal
1272 subl 112(%esp),%edi
1273 movl %ebp,%edx
1274 movl %ebx,%ecx
1275 movups -16(%edi),%xmm2
1276 xorps %xmm5,%xmm2
1277 movups (%edx),%xmm0
1278 movups 16(%edx),%xmm1
1279 leal 32(%edx),%edx
1280 xorps %xmm0,%xmm2
1281 .L054enc1_loop_10:
1282 .byte 102,15,56,220,209
1283 decl %ecx
1284 movups (%edx),%xmm1
1285 leal 16(%edx),%edx
1286 jnz .L054enc1_loop_10
1287 .byte 102,15,56,221,209
1288 xorps %xmm5,%xmm2
1289 movups %xmm2,-16(%edi)
1290 .L052xts_enc_ret:
1291 movl 116(%esp),%esp
1292 popl %edi
1293 popl %esi
1294 popl %ebx
1295 popl %ebp
1296 ret
1297 .size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1298 .globl aesni_xts_decrypt
1299 .type aesni_xts_decrypt,@function
1300 .align 16
1301 aesni_xts_decrypt:
1302 .L_aesni_xts_decrypt_begin:
1303 pushl %ebp
1304 pushl %ebx
1305 pushl %esi
1306 pushl %edi
1307 movl 36(%esp),%edx
1308 movl 40(%esp),%esi
1309 movl 240(%edx),%ecx
1310 movups (%esi),%xmm2
1311 movups (%edx),%xmm0
1312 movups 16(%edx),%xmm1
1313 leal 32(%edx),%edx
1314 xorps %xmm0,%xmm2
1315 .L055enc1_loop_11:
1316 .byte 102,15,56,220,209
1317 decl %ecx
1318 movups (%edx),%xmm1
1319 leal 16(%edx),%edx
1320 jnz .L055enc1_loop_11
1321 .byte 102,15,56,221,209
1322 movl 20(%esp),%esi
1323 movl 24(%esp),%edi
1324 movl 28(%esp),%eax
1325 movl 32(%esp),%edx
1326 movl %esp,%ebp
1327 subl $120,%esp
1328 andl $-16,%esp
1329 xorl %ebx,%ebx
1330 testl $15,%eax
1331 setnz %bl
1332 shll $4,%ebx
1333 subl %ebx,%eax
1334 movl $135,96(%esp)
1335 movl $0,100(%esp)
1336 movl $1,104(%esp)
1337 movl $0,108(%esp)
1338 movl %eax,112(%esp)
1339 movl %ebp,116(%esp)
1340 movl 240(%edx),%ecx
1341 movl %edx,%ebp
1342 movl %ecx,%ebx
1343 movdqa %xmm2,%xmm1
1344 pxor %xmm0,%xmm0
1345 movdqa 96(%esp),%xmm3
1346 pcmpgtd %xmm1,%xmm0
1347 andl $-16,%eax
1348 subl $96,%eax
1349 jc .L056xts_dec_short
1350 shrl $1,%ecx
1351 movl %ecx,%ebx
1352 jmp .L057xts_dec_loop6
1353 .align 16
1354 .L057xts_dec_loop6:
1355 pshufd $19,%xmm0,%xmm2
1356 pxor %xmm0,%xmm0
1357 movdqa %xmm1,(%esp)
1358 paddq %xmm1,%xmm1
1359 pand %xmm3,%xmm2
1360 pcmpgtd %xmm1,%xmm0
1361 pxor %xmm2,%xmm1
1362 pshufd $19,%xmm0,%xmm2
1363 pxor %xmm0,%xmm0
1364 movdqa %xmm1,16(%esp)
1365 paddq %xmm1,%xmm1
1366 pand %xmm3,%xmm2
1367 pcmpgtd %xmm1,%xmm0
1368 pxor %xmm2,%xmm1
1369 pshufd $19,%xmm0,%xmm2
1370 pxor %xmm0,%xmm0
1371 movdqa %xmm1,32(%esp)
1372 paddq %xmm1,%xmm1
1373 pand %xmm3,%xmm2
1374 pcmpgtd %xmm1,%xmm0
1375 pxor %xmm2,%xmm1
1376 pshufd $19,%xmm0,%xmm2
1377 pxor %xmm0,%xmm0
1378 movdqa %xmm1,48(%esp)
1379 paddq %xmm1,%xmm1
1380 pand %xmm3,%xmm2
1381 pcmpgtd %xmm1,%xmm0
1382 pxor %xmm2,%xmm1
1383 pshufd $19,%xmm0,%xmm7
1384 movdqa %xmm1,64(%esp)
1385 paddq %xmm1,%xmm1
1386 movups (%ebp),%xmm0
1387 pand %xmm3,%xmm7
1388 movups (%esi),%xmm2
1389 pxor %xmm1,%xmm7
1390 movdqu 16(%esi),%xmm3
1391 xorps %xmm0,%xmm2
1392 movdqu 32(%esi),%xmm4
1393 pxor %xmm0,%xmm3
1394 movdqu 48(%esi),%xmm5
1395 pxor %xmm0,%xmm4
1396 movdqu 64(%esi),%xmm6
1397 pxor %xmm0,%xmm5
1398 movdqu 80(%esi),%xmm1
1399 pxor %xmm0,%xmm6
1400 leal 96(%esi),%esi
1401 pxor (%esp),%xmm2
1402 movdqa %xmm7,80(%esp)
1403 pxor %xmm1,%xmm7
1404 movups 16(%ebp),%xmm1
1405 leal 32(%ebp),%edx
1406 pxor 16(%esp),%xmm3
1407 .byte 102,15,56,222,209
1408 pxor 32(%esp),%xmm4
1409 .byte 102,15,56,222,217
1410 pxor 48(%esp),%xmm5
1411 decl %ecx
1412 .byte 102,15,56,222,225
1413 pxor 64(%esp),%xmm6
1414 .byte 102,15,56,222,233
1415 pxor %xmm0,%xmm7
1416 .byte 102,15,56,222,241
1417 movups (%edx),%xmm0
1418 .byte 102,15,56,222,249
1419 call .L_aesni_decrypt6_enter
1420 movdqa 80(%esp),%xmm1
1421 pxor %xmm0,%xmm0
1422 xorps (%esp),%xmm2
1423 pcmpgtd %xmm1,%xmm0
1424 xorps 16(%esp),%xmm3
1425 movups %xmm2,(%edi)
1426 xorps 32(%esp),%xmm4
1427 movups %xmm3,16(%edi)
1428 xorps 48(%esp),%xmm5
1429 movups %xmm4,32(%edi)
1430 xorps 64(%esp),%xmm6
1431 movups %xmm5,48(%edi)
1432 xorps %xmm1,%xmm7
1433 movups %xmm6,64(%edi)
1434 pshufd $19,%xmm0,%xmm2
1435 movups %xmm7,80(%edi)
1436 leal 96(%edi),%edi
1437 movdqa 96(%esp),%xmm3
1438 pxor %xmm0,%xmm0
1439 paddq %xmm1,%xmm1
1440 pand %xmm3,%xmm2
1441 pcmpgtd %xmm1,%xmm0
1442 movl %ebx,%ecx
1443 pxor %xmm2,%xmm1
1444 subl $96,%eax
1445 jnc .L057xts_dec_loop6
1446 leal 1(,%ecx,2),%ecx
1447 movl %ebp,%edx
1448 movl %ecx,%ebx
1449 .L056xts_dec_short:
1450 addl $96,%eax
1451 jz .L058xts_dec_done6x
1452 movdqa %xmm1,%xmm5
1453 cmpl $32,%eax
1454 jb .L059xts_dec_one
1455 pshufd $19,%xmm0,%xmm2
1456 pxor %xmm0,%xmm0
1457 paddq %xmm1,%xmm1
1458 pand %xmm3,%xmm2
1459 pcmpgtd %xmm1,%xmm0
1460 pxor %xmm2,%xmm1
1461 je .L060xts_dec_two
1462 pshufd $19,%xmm0,%xmm2
1463 pxor %xmm0,%xmm0
1464 movdqa %xmm1,%xmm6
1465 paddq %xmm1,%xmm1
1466 pand %xmm3,%xmm2
1467 pcmpgtd %xmm1,%xmm0
1468 pxor %xmm2,%xmm1
1469 cmpl $64,%eax
1470 jb .L061xts_dec_three
1471 pshufd $19,%xmm0,%xmm2
1472 pxor %xmm0,%xmm0
1473 movdqa %xmm1,%xmm7
1474 paddq %xmm1,%xmm1
1475 pand %xmm3,%xmm2
1476 pcmpgtd %xmm1,%xmm0
1477 pxor %xmm2,%xmm1
1478 movdqa %xmm5,(%esp)
1479 movdqa %xmm6,16(%esp)
1480 je .L062xts_dec_four
1481 movdqa %xmm7,32(%esp)
1482 pshufd $19,%xmm0,%xmm7
1483 movdqa %xmm1,48(%esp)
1484 paddq %xmm1,%xmm1
1485 pand %xmm3,%xmm7
1486 pxor %xmm1,%xmm7
1487 movdqu (%esi),%xmm2
1488 movdqu 16(%esi),%xmm3
1489 movdqu 32(%esi),%xmm4
1490 pxor (%esp),%xmm2
1491 movdqu 48(%esi),%xmm5
1492 pxor 16(%esp),%xmm3
1493 movdqu 64(%esi),%xmm6
1494 pxor 32(%esp),%xmm4
1495 leal 80(%esi),%esi
1496 pxor 48(%esp),%xmm5
1497 movdqa %xmm7,64(%esp)
1498 pxor %xmm7,%xmm6
1499 call _aesni_decrypt6
1500 movaps 64(%esp),%xmm1
1501 xorps (%esp),%xmm2
1502 xorps 16(%esp),%xmm3
1503 xorps 32(%esp),%xmm4
1504 movups %xmm2,(%edi)
1505 xorps 48(%esp),%xmm5
1506 movups %xmm3,16(%edi)
1507 xorps %xmm1,%xmm6
1508 movups %xmm4,32(%edi)
1509 movups %xmm5,48(%edi)
1510 movups %xmm6,64(%edi)
1511 leal 80(%edi),%edi
1512 jmp .L063xts_dec_done
1513 .align 16
1514 .L059xts_dec_one:
1515 movups (%esi),%xmm2
1516 leal 16(%esi),%esi
1517 xorps %xmm5,%xmm2
1518 movups (%edx),%xmm0
1519 movups 16(%edx),%xmm1
1520 leal 32(%edx),%edx
1521 xorps %xmm0,%xmm2
1522 .L064dec1_loop_12:
1523 .byte 102,15,56,222,209
1524 decl %ecx
1525 movups (%edx),%xmm1
1526 leal 16(%edx),%edx
1527 jnz .L064dec1_loop_12
1528 .byte 102,15,56,223,209
1529 xorps %xmm5,%xmm2
1530 movups %xmm2,(%edi)
1531 leal 16(%edi),%edi
1532 movdqa %xmm5,%xmm1
1533 jmp .L063xts_dec_done
1534 .align 16
1535 .L060xts_dec_two:
1536 movaps %xmm1,%xmm6
1537 movups (%esi),%xmm2
1538 movups 16(%esi),%xmm3
1539 leal 32(%esi),%esi
1540 xorps %xmm5,%xmm2
1541 xorps %xmm6,%xmm3
1542 call _aesni_decrypt3
1543 xorps %xmm5,%xmm2
1544 xorps %xmm6,%xmm3
1545 movups %xmm2,(%edi)
1546 movups %xmm3,16(%edi)
1547 leal 32(%edi),%edi
1548 movdqa %xmm6,%xmm1
1549 jmp .L063xts_dec_done
1550 .align 16
1551 .L061xts_dec_three:
1552 movaps %xmm1,%xmm7
1553 movups (%esi),%xmm2
1554 movups 16(%esi),%xmm3
1555 movups 32(%esi),%xmm4
1556 leal 48(%esi),%esi
1557 xorps %xmm5,%xmm2
1558 xorps %xmm6,%xmm3
1559 xorps %xmm7,%xmm4
1560 call _aesni_decrypt3
1561 xorps %xmm5,%xmm2
1562 xorps %xmm6,%xmm3
1563 xorps %xmm7,%xmm4
1564 movups %xmm2,(%edi)
1565 movups %xmm3,16(%edi)
1566 movups %xmm4,32(%edi)
1567 leal 48(%edi),%edi
1568 movdqa %xmm7,%xmm1
1569 jmp .L063xts_dec_done
1570 .align 16
1571 .L062xts_dec_four:
1572 movaps %xmm1,%xmm6
1573 movups (%esi),%xmm2
1574 movups 16(%esi),%xmm3
1575 movups 32(%esi),%xmm4
1576 xorps (%esp),%xmm2
1577 movups 48(%esi),%xmm5
1578 leal 64(%esi),%esi
1579 xorps 16(%esp),%xmm3
1580 xorps %xmm7,%xmm4
1581 xorps %xmm6,%xmm5
1582 call _aesni_decrypt4
1583 xorps (%esp),%xmm2
1584 xorps 16(%esp),%xmm3
1585 xorps %xmm7,%xmm4
1586 movups %xmm2,(%edi)
1587 xorps %xmm6,%xmm5
1588 movups %xmm3,16(%edi)
1589 movups %xmm4,32(%edi)
1590 movups %xmm5,48(%edi)
1591 leal 64(%edi),%edi
1592 movdqa %xmm6,%xmm1
1593 jmp .L063xts_dec_done
1594 .align 16
1595 .L058xts_dec_done6x:
1596 movl 112(%esp),%eax
1597 andl $15,%eax
1598 jz .L065xts_dec_ret
1599 movl %eax,112(%esp)
1600 jmp .L066xts_dec_only_one_more
1601 .align 16
1602 .L063xts_dec_done:
1603 movl 112(%esp),%eax
1604 pxor %xmm0,%xmm0
1605 andl $15,%eax
1606 jz .L065xts_dec_ret
1607 pcmpgtd %xmm1,%xmm0
1608 movl %eax,112(%esp)
1609 pshufd $19,%xmm0,%xmm2
1610 pxor %xmm0,%xmm0
1611 movdqa 96(%esp),%xmm3
1612 paddq %xmm1,%xmm1
1613 pand %xmm3,%xmm2
1614 pcmpgtd %xmm1,%xmm0
1615 pxor %xmm2,%xmm1
1616 .L066xts_dec_only_one_more:
1617 pshufd $19,%xmm0,%xmm5
1618 movdqa %xmm1,%xmm6
1619 paddq %xmm1,%xmm1
1620 pand %xmm3,%xmm5
1621 pxor %xmm1,%xmm5
1622 movl %ebp,%edx
1623 movl %ebx,%ecx
1624 movups (%esi),%xmm2
1625 xorps %xmm5,%xmm2
1626 movups (%edx),%xmm0
1627 movups 16(%edx),%xmm1
1628 leal 32(%edx),%edx
1629 xorps %xmm0,%xmm2
1630 .L067dec1_loop_13:
1631 .byte 102,15,56,222,209
1632 decl %ecx
1633 movups (%edx),%xmm1
1634 leal 16(%edx),%edx
1635 jnz .L067dec1_loop_13
1636 .byte 102,15,56,223,209
1637 xorps %xmm5,%xmm2
1638 movups %xmm2,(%edi)
1639 .L068xts_dec_steal:
1640 movzbl 16(%esi),%ecx
1641 movzbl (%edi),%edx
1642 leal 1(%esi),%esi
1643 movb %cl,(%edi)
1644 movb %dl,16(%edi)
1645 leal 1(%edi),%edi
1646 subl $1,%eax
1647 jnz .L068xts_dec_steal
1648 subl 112(%esp),%edi
1649 movl %ebp,%edx
1650 movl %ebx,%ecx
1651 movups (%edi),%xmm2
1652 xorps %xmm6,%xmm2
1653 movups (%edx),%xmm0
1654 movups 16(%edx),%xmm1
1655 leal 32(%edx),%edx
1656 xorps %xmm0,%xmm2
1657 .L069dec1_loop_14:
1658 .byte 102,15,56,222,209
1659 decl %ecx
1660 movups (%edx),%xmm1
1661 leal 16(%edx),%edx
1662 jnz .L069dec1_loop_14
1663 .byte 102,15,56,223,209
1664 xorps %xmm6,%xmm2
1665 movups %xmm2,(%edi)
1666 .L065xts_dec_ret:
1667 movl 116(%esp),%esp
1668 popl %edi
1669 popl %esi
1670 popl %ebx
1671 popl %ebp
1672 ret
1673 .size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1674 .globl aesni_cbc_encrypt
1675 .type aesni_cbc_encrypt,@function
1676 .align 16
1677 aesni_cbc_encrypt:
1678 .L_aesni_cbc_encrypt_begin:
1679 pushl %ebp
1680 pushl %ebx
1681 pushl %esi
1682 pushl %edi
1683 movl 20(%esp),%esi
1684 movl %esp,%ebx
1685 movl 24(%esp),%edi
1686 subl $24,%ebx
1687 movl 28(%esp),%eax
1688 andl $-16,%ebx
1689 movl 32(%esp),%edx
1690 movl 36(%esp),%ebp
1691 testl %eax,%eax
1692 jz .L070cbc_abort
1693 cmpl $0,40(%esp)
1694 xchgl %esp,%ebx
1695 movups (%ebp),%xmm7
1696 movl 240(%edx),%ecx
1697 movl %edx,%ebp
1698 movl %ebx,16(%esp)
1699 movl %ecx,%ebx
1700 je .L071cbc_decrypt
1701 movaps %xmm7,%xmm2
1702 cmpl $16,%eax
1703 jb .L072cbc_enc_tail
1704 subl $16,%eax
1705 jmp .L073cbc_enc_loop
1706 .align 16
1707 .L073cbc_enc_loop:
1708 movups (%esi),%xmm7
1709 leal 16(%esi),%esi
1710 movups (%edx),%xmm0
1711 movups 16(%edx),%xmm1
1712 xorps %xmm0,%xmm7
1713 leal 32(%edx),%edx
1714 xorps %xmm7,%xmm2
1715 .L074enc1_loop_15:
1716 .byte 102,15,56,220,209
1717 decl %ecx
1718 movups (%edx),%xmm1
1719 leal 16(%edx),%edx
1720 jnz .L074enc1_loop_15
1721 .byte 102,15,56,221,209
1722 movl %ebx,%ecx
1723 movl %ebp,%edx
1724 movups %xmm2,(%edi)
1725 leal 16(%edi),%edi
1726 subl $16,%eax
1727 jnc .L073cbc_enc_loop
1728 addl $16,%eax
1729 jnz .L072cbc_enc_tail
1730 movaps %xmm2,%xmm7
1731 jmp .L075cbc_ret
1732 .L072cbc_enc_tail:
1733 movl %eax,%ecx
1734 .long 2767451785
1735 movl $16,%ecx
1736 subl %eax,%ecx
1737 xorl %eax,%eax
1738 .long 2868115081
1739 leal -16(%edi),%edi
1740 movl %ebx,%ecx
1741 movl %edi,%esi
1742 movl %ebp,%edx
1743 jmp .L073cbc_enc_loop
1744 .align 16
1745 .L071cbc_decrypt:
1746 cmpl $80,%eax
1747 jbe .L076cbc_dec_tail
1748 movaps %xmm7,(%esp)
1749 subl $80,%eax
1750 jmp .L077cbc_dec_loop6_enter
1751 .align 16
1752 .L078cbc_dec_loop6:
1753 movaps %xmm0,(%esp)
1754 movups %xmm7,(%edi)
1755 leal 16(%edi),%edi
1756 .L077cbc_dec_loop6_enter:
1757 movdqu (%esi),%xmm2
1758 movdqu 16(%esi),%xmm3
1759 movdqu 32(%esi),%xmm4
1760 movdqu 48(%esi),%xmm5
1761 movdqu 64(%esi),%xmm6
1762 movdqu 80(%esi),%xmm7
1763 call _aesni_decrypt6
1764 movups (%esi),%xmm1
1765 movups 16(%esi),%xmm0
1766 xorps (%esp),%xmm2
1767 xorps %xmm1,%xmm3
1768 movups 32(%esi),%xmm1
1769 xorps %xmm0,%xmm4
1770 movups 48(%esi),%xmm0
1771 xorps %xmm1,%xmm5
1772 movups 64(%esi),%xmm1
1773 xorps %xmm0,%xmm6
1774 movups 80(%esi),%xmm0
1775 xorps %xmm1,%xmm7
1776 movups %xmm2,(%edi)
1777 movups %xmm3,16(%edi)
1778 leal 96(%esi),%esi
1779 movups %xmm4,32(%edi)
1780 movl %ebx,%ecx
1781 movups %xmm5,48(%edi)
1782 movl %ebp,%edx
1783 movups %xmm6,64(%edi)
1784 leal 80(%edi),%edi
1785 subl $96,%eax
1786 ja .L078cbc_dec_loop6
1787 movaps %xmm7,%xmm2
1788 movaps %xmm0,%xmm7
1789 addl $80,%eax
1790 jle .L079cbc_dec_tail_collected
1791 movups %xmm2,(%edi)
1792 leal 16(%edi),%edi
1793 .L076cbc_dec_tail:
1794 movups (%esi),%xmm2
1795 movaps %xmm2,%xmm6
1796 cmpl $16,%eax
1797 jbe .L080cbc_dec_one
1798 movups 16(%esi),%xmm3
1799 movaps %xmm3,%xmm5
1800 cmpl $32,%eax
1801 jbe .L081cbc_dec_two
1802 movups 32(%esi),%xmm4
1803 cmpl $48,%eax
1804 jbe .L082cbc_dec_three
1805 movups 48(%esi),%xmm5
1806 cmpl $64,%eax
1807 jbe .L083cbc_dec_four
1808 movups 64(%esi),%xmm6
1809 movaps %xmm7,(%esp)
1810 movups (%esi),%xmm2
1811 xorps %xmm7,%xmm7
1812 call _aesni_decrypt6
1813 movups (%esi),%xmm1
1814 movups 16(%esi),%xmm0
1815 xorps (%esp),%xmm2
1816 xorps %xmm1,%xmm3
1817 movups 32(%esi),%xmm1
1818 xorps %xmm0,%xmm4
1819 movups 48(%esi),%xmm0
1820 xorps %xmm1,%xmm5
1821 movups 64(%esi),%xmm7
1822 xorps %xmm0,%xmm6
1823 movups %xmm2,(%edi)
1824 movups %xmm3,16(%edi)
1825 movups %xmm4,32(%edi)
1826 movups %xmm5,48(%edi)
1827 leal 64(%edi),%edi
1828 movaps %xmm6,%xmm2
1829 subl $80,%eax
1830 jmp .L079cbc_dec_tail_collected
1831 .align 16
1832 .L080cbc_dec_one:
1833 movups (%edx),%xmm0
1834 movups 16(%edx),%xmm1
1835 leal 32(%edx),%edx
1836 xorps %xmm0,%xmm2
1837 .L084dec1_loop_16:
1838 .byte 102,15,56,222,209
1839 decl %ecx
1840 movups (%edx),%xmm1
1841 leal 16(%edx),%edx
1842 jnz .L084dec1_loop_16
1843 .byte 102,15,56,223,209
1844 xorps %xmm7,%xmm2
1845 movaps %xmm6,%xmm7
1846 subl $16,%eax
1847 jmp .L079cbc_dec_tail_collected
1848 .align 16
1849 .L081cbc_dec_two:
1850 xorps %xmm4,%xmm4
1851 call _aesni_decrypt3
1852 xorps %xmm7,%xmm2
1853 xorps %xmm6,%xmm3
1854 movups %xmm2,(%edi)
1855 movaps %xmm3,%xmm2
1856 leal 16(%edi),%edi
1857 movaps %xmm5,%xmm7
1858 subl $32,%eax
1859 jmp .L079cbc_dec_tail_collected
1860 .align 16
1861 .L082cbc_dec_three:
1862 call _aesni_decrypt3
1863 xorps %xmm7,%xmm2
1864 xorps %xmm6,%xmm3
1865 xorps %xmm5,%xmm4
1866 movups %xmm2,(%edi)
1867 movaps %xmm4,%xmm2
1868 movups %xmm3,16(%edi)
1869 leal 32(%edi),%edi
1870 movups 32(%esi),%xmm7
1871 subl $48,%eax
1872 jmp .L079cbc_dec_tail_collected
1873 .align 16
1874 .L083cbc_dec_four:
1875 call _aesni_decrypt4
1876 movups 16(%esi),%xmm1
1877 movups 32(%esi),%xmm0
1878 xorps %xmm7,%xmm2
1879 movups 48(%esi),%xmm7
1880 xorps %xmm6,%xmm3
1881 movups %xmm2,(%edi)
1882 xorps %xmm1,%xmm4
1883 movups %xmm3,16(%edi)
1884 xorps %xmm0,%xmm5
1885 movups %xmm4,32(%edi)
1886 leal 48(%edi),%edi
1887 movaps %xmm5,%xmm2
1888 subl $64,%eax
1889 .L079cbc_dec_tail_collected:
1890 andl $15,%eax
1891 jnz .L085cbc_dec_tail_partial
1892 movups %xmm2,(%edi)
1893 jmp .L075cbc_ret
1894 .align 16
1895 .L085cbc_dec_tail_partial:
1896 movaps %xmm2,(%esp)
1897 movl $16,%ecx
1898 movl %esp,%esi
1899 subl %eax,%ecx
1900 .long 2767451785
1901 .L075cbc_ret:
1902 movl 16(%esp),%esp
1903 movl 36(%esp),%ebp
1904 movups %xmm7,(%ebp)
1905 .L070cbc_abort:
1906 popl %edi
1907 popl %esi
1908 popl %ebx
1909 popl %ebp
1910 ret
1911 .size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
1912 .type _aesni_set_encrypt_key,@function
1913 .align 16
1914 _aesni_set_encrypt_key:
1915 testl %eax,%eax
1916 jz .L086bad_pointer
1917 testl %edx,%edx
1918 jz .L086bad_pointer
1919 movups (%eax),%xmm0
1920 xorps %xmm4,%xmm4
1921 leal 16(%edx),%edx
1922 cmpl $256,%ecx
1923 je .L08714rounds
1924 cmpl $192,%ecx
1925 je .L08812rounds
1926 cmpl $128,%ecx
1927 jne .L089bad_keybits
1928 .align 16
1929 .L09010rounds:
1930 movl $9,%ecx
1931 movups %xmm0,-16(%edx)
1932 .byte 102,15,58,223,200,1
1933 call .L091key_128_cold
1934 .byte 102,15,58,223,200,2
1935 call .L092key_128
1936 .byte 102,15,58,223,200,4
1937 call .L092key_128
1938 .byte 102,15,58,223,200,8
1939 call .L092key_128
1940 .byte 102,15,58,223,200,16
1941 call .L092key_128
1942 .byte 102,15,58,223,200,32
1943 call .L092key_128
1944 .byte 102,15,58,223,200,64
1945 call .L092key_128
1946 .byte 102,15,58,223,200,128
1947 call .L092key_128
1948 .byte 102,15,58,223,200,27
1949 call .L092key_128
1950 .byte 102,15,58,223,200,54
1951 call .L092key_128
1952 movups %xmm0,(%edx)
1953 movl %ecx,80(%edx)
1954 xorl %eax,%eax
1955 ret
1956 .align 16
1957 .L092key_128:
1958 movups %xmm0,(%edx)
1959 leal 16(%edx),%edx
1960 .L091key_128_cold:
1961 shufps $16,%xmm0,%xmm4
1962 xorps %xmm4,%xmm0
1963 shufps $140,%xmm0,%xmm4
1964 xorps %xmm4,%xmm0
1965 shufps $255,%xmm1,%xmm1
1966 xorps %xmm1,%xmm0
1967 ret
1968 .align 16
1969 .L08812rounds:
1970 movq 16(%eax),%xmm2
1971 movl $11,%ecx
1972 movups %xmm0,-16(%edx)
1973 .byte 102,15,58,223,202,1
1974 call .L093key_192a_cold
1975 .byte 102,15,58,223,202,2
1976 call .L094key_192b
1977 .byte 102,15,58,223,202,4
1978 call .L095key_192a
1979 .byte 102,15,58,223,202,8
1980 call .L094key_192b
1981 .byte 102,15,58,223,202,16
1982 call .L095key_192a
1983 .byte 102,15,58,223,202,32
1984 call .L094key_192b
1985 .byte 102,15,58,223,202,64
1986 call .L095key_192a
1987 .byte 102,15,58,223,202,128
1988 call .L094key_192b
1989 movups %xmm0,(%edx)
1990 movl %ecx,48(%edx)
1991 xorl %eax,%eax
1992 ret
1993 .align 16
1994 .L095key_192a:
1995 movups %xmm0,(%edx)
1996 leal 16(%edx),%edx
1997 .align 16
1998 .L093key_192a_cold:
1999 movaps %xmm2,%xmm5
2000 .L096key_192b_warm:
2001 shufps $16,%xmm0,%xmm4
2002 movdqa %xmm2,%xmm3
2003 xorps %xmm4,%xmm0
2004 shufps $140,%xmm0,%xmm4
2005 pslldq $4,%xmm3
2006 xorps %xmm4,%xmm0
2007 pshufd $85,%xmm1,%xmm1
2008 pxor %xmm3,%xmm2
2009 pxor %xmm1,%xmm0
2010 pshufd $255,%xmm0,%xmm3
2011 pxor %xmm3,%xmm2
2012 ret
2013 .align 16
2014 .L094key_192b:
2015 movaps %xmm0,%xmm3
2016 shufps $68,%xmm0,%xmm5
2017 movups %xmm5,(%edx)
2018 shufps $78,%xmm2,%xmm3
2019 movups %xmm3,16(%edx)
2020 leal 32(%edx),%edx
2021 jmp .L096key_192b_warm
2022 .align 16
2023 .L08714rounds:
2024 movups 16(%eax),%xmm2
2025 movl $13,%ecx
2026 leal 16(%edx),%edx
2027 movups %xmm0,-32(%edx)
2028 movups %xmm2,-16(%edx)
2029 .byte 102,15,58,223,202,1
2030 call .L097key_256a_cold
2031 .byte 102,15,58,223,200,1
2032 call .L098key_256b
2033 .byte 102,15,58,223,202,2
2034 call .L099key_256a
2035 .byte 102,15,58,223,200,2
2036 call .L098key_256b
2037 .byte 102,15,58,223,202,4
2038 call .L099key_256a
2039 .byte 102,15,58,223,200,4
2040 call .L098key_256b
2041 .byte 102,15,58,223,202,8
2042 call .L099key_256a
2043 .byte 102,15,58,223,200,8
2044 call .L098key_256b
2045 .byte 102,15,58,223,202,16
2046 call .L099key_256a
2047 .byte 102,15,58,223,200,16
2048 call .L098key_256b
2049 .byte 102,15,58,223,202,32
2050 call .L099key_256a
2051 .byte 102,15,58,223,200,32
2052 call .L098key_256b
2053 .byte 102,15,58,223,202,64
2054 call .L099key_256a
2055 movups %xmm0,(%edx)
2056 movl %ecx,16(%edx)
2057 xorl %eax,%eax
2058 ret
2059 .align 16
2060 .L099key_256a:
2061 movups %xmm2,(%edx)
2062 leal 16(%edx),%edx
2063 .L097key_256a_cold:
2064 shufps $16,%xmm0,%xmm4
2065 xorps %xmm4,%xmm0
2066 shufps $140,%xmm0,%xmm4
2067 xorps %xmm4,%xmm0
2068 shufps $255,%xmm1,%xmm1
2069 xorps %xmm1,%xmm0
2070 ret
2071 .align 16
2072 .L098key_256b:
2073 movups %xmm0,(%edx)
2074 leal 16(%edx),%edx
2075 shufps $16,%xmm2,%xmm4
2076 xorps %xmm4,%xmm2
2077 shufps $140,%xmm2,%xmm4
2078 xorps %xmm4,%xmm2
2079 shufps $170,%xmm1,%xmm1
2080 xorps %xmm1,%xmm2
2081 ret
2082 .align 4
2083 .L086bad_pointer:
2084 movl $-1,%eax
2085 ret
2086 .align 4
2087 .L089bad_keybits:
2088 movl $-2,%eax
2089 ret
2090 .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
2091 .globl aesni_set_encrypt_key
2092 .type aesni_set_encrypt_key,@function
2093 .align 16
2094 aesni_set_encrypt_key:
2095 .L_aesni_set_encrypt_key_begin:
2096 movl 4(%esp),%eax
2097 movl 8(%esp),%ecx
2098 movl 12(%esp),%edx
2099 call _aesni_set_encrypt_key
2100 ret
2101 .size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
2102 .globl aesni_set_decrypt_key
2103 .type aesni_set_decrypt_key,@function
2104 .align 16
2105 aesni_set_decrypt_key:
2106 .L_aesni_set_decrypt_key_begin:
2107 movl 4(%esp),%eax
2108 movl 8(%esp),%ecx
2109 movl 12(%esp),%edx
2110 call _aesni_set_encrypt_key
2111 movl 12(%esp),%edx
2112 shll $4,%ecx
2113 testl %eax,%eax
2114 jnz .L100dec_key_ret
2115 leal 16(%edx,%ecx,1),%eax
2116 movups (%edx),%xmm0
2117 movups (%eax),%xmm1
2118 movups %xmm0,(%eax)
2119 movups %xmm1,(%edx)
2120 leal 16(%edx),%edx
2121 leal -16(%eax),%eax
2122 .L101dec_key_inverse:
2123 movups (%edx),%xmm0
2124 movups (%eax),%xmm1
2125 .byte 102,15,56,219,192
2126 .byte 102,15,56,219,201
2127 leal 16(%edx),%edx
2128 leal -16(%eax),%eax
2129 movups %xmm0,16(%eax)
2130 movups %xmm1,-16(%edx)
2131 cmpl %edx,%eax
2132 ja .L101dec_key_inverse
2133 movups (%edx),%xmm0
2134 .byte 102,15,56,219,192
2135 movups %xmm0,(%edx)
2136 xorl %eax,%eax
2137 .L100dec_key_ret:
2138 ret
2139 .size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
2140 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2141 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2142 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2143 .byte 115,108,46,111,114,103,62,0
OLDNEW
« no previous file with comments | « openssl/crypto/aes/asm/aesni-sha1-x86_64.pl ('k') | openssl/crypto/aes/asm/aesni-x86.pl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698