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

Side by Side Diff: third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S

Issue 2354623003: Pull boringssl generated source from boringssl_gen (Closed)
Patch Set: . Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #if defined(__i386__)
2 .file "src/crypto/aes/asm/aesni-x86.S"
3 .text
4 .globl aesni_encrypt
5 .hidden aesni_encrypt
6 .type aesni_encrypt,@function
7 .align 16
8 aesni_encrypt:
9 .L_aesni_encrypt_begin:
10 movl 4(%esp),%eax
11 movl 12(%esp),%edx
12 movups (%eax),%xmm2
13 movl 240(%edx),%ecx
14 movl 8(%esp),%eax
15 movups (%edx),%xmm0
16 movups 16(%edx),%xmm1
17 leal 32(%edx),%edx
18 xorps %xmm0,%xmm2
19 .L000enc1_loop_1:
20 .byte 102,15,56,220,209
21 decl %ecx
22 movups (%edx),%xmm1
23 leal 16(%edx),%edx
24 jnz .L000enc1_loop_1
25 .byte 102,15,56,221,209
26 pxor %xmm0,%xmm0
27 pxor %xmm1,%xmm1
28 movups %xmm2,(%eax)
29 pxor %xmm2,%xmm2
30 ret
31 .size aesni_encrypt,.-.L_aesni_encrypt_begin
32 .globl aesni_decrypt
33 .hidden aesni_decrypt
34 .type aesni_decrypt,@function
35 .align 16
36 aesni_decrypt:
37 .L_aesni_decrypt_begin:
38 movl 4(%esp),%eax
39 movl 12(%esp),%edx
40 movups (%eax),%xmm2
41 movl 240(%edx),%ecx
42 movl 8(%esp),%eax
43 movups (%edx),%xmm0
44 movups 16(%edx),%xmm1
45 leal 32(%edx),%edx
46 xorps %xmm0,%xmm2
47 .L001dec1_loop_2:
48 .byte 102,15,56,222,209
49 decl %ecx
50 movups (%edx),%xmm1
51 leal 16(%edx),%edx
52 jnz .L001dec1_loop_2
53 .byte 102,15,56,223,209
54 pxor %xmm0,%xmm0
55 pxor %xmm1,%xmm1
56 movups %xmm2,(%eax)
57 pxor %xmm2,%xmm2
58 ret
59 .size aesni_decrypt,.-.L_aesni_decrypt_begin
60 .hidden _aesni_encrypt2
61 .type _aesni_encrypt2,@function
62 .align 16
63 _aesni_encrypt2:
64 movups (%edx),%xmm0
65 shll $4,%ecx
66 movups 16(%edx),%xmm1
67 xorps %xmm0,%xmm2
68 pxor %xmm0,%xmm3
69 movups 32(%edx),%xmm0
70 leal 32(%edx,%ecx,1),%edx
71 negl %ecx
72 addl $16,%ecx
73 .L002enc2_loop:
74 .byte 102,15,56,220,209
75 .byte 102,15,56,220,217
76 movups (%edx,%ecx,1),%xmm1
77 addl $32,%ecx
78 .byte 102,15,56,220,208
79 .byte 102,15,56,220,216
80 movups -16(%edx,%ecx,1),%xmm0
81 jnz .L002enc2_loop
82 .byte 102,15,56,220,209
83 .byte 102,15,56,220,217
84 .byte 102,15,56,221,208
85 .byte 102,15,56,221,216
86 ret
87 .size _aesni_encrypt2,.-_aesni_encrypt2
88 .hidden _aesni_decrypt2
89 .type _aesni_decrypt2,@function
90 .align 16
91 _aesni_decrypt2:
92 movups (%edx),%xmm0
93 shll $4,%ecx
94 movups 16(%edx),%xmm1
95 xorps %xmm0,%xmm2
96 pxor %xmm0,%xmm3
97 movups 32(%edx),%xmm0
98 leal 32(%edx,%ecx,1),%edx
99 negl %ecx
100 addl $16,%ecx
101 .L003dec2_loop:
102 .byte 102,15,56,222,209
103 .byte 102,15,56,222,217
104 movups (%edx,%ecx,1),%xmm1
105 addl $32,%ecx
106 .byte 102,15,56,222,208
107 .byte 102,15,56,222,216
108 movups -16(%edx,%ecx,1),%xmm0
109 jnz .L003dec2_loop
110 .byte 102,15,56,222,209
111 .byte 102,15,56,222,217
112 .byte 102,15,56,223,208
113 .byte 102,15,56,223,216
114 ret
115 .size _aesni_decrypt2,.-_aesni_decrypt2
116 .hidden _aesni_encrypt3
117 .type _aesni_encrypt3,@function
118 .align 16
119 _aesni_encrypt3:
120 movups (%edx),%xmm0
121 shll $4,%ecx
122 movups 16(%edx),%xmm1
123 xorps %xmm0,%xmm2
124 pxor %xmm0,%xmm3
125 pxor %xmm0,%xmm4
126 movups 32(%edx),%xmm0
127 leal 32(%edx,%ecx,1),%edx
128 negl %ecx
129 addl $16,%ecx
130 .L004enc3_loop:
131 .byte 102,15,56,220,209
132 .byte 102,15,56,220,217
133 .byte 102,15,56,220,225
134 movups (%edx,%ecx,1),%xmm1
135 addl $32,%ecx
136 .byte 102,15,56,220,208
137 .byte 102,15,56,220,216
138 .byte 102,15,56,220,224
139 movups -16(%edx,%ecx,1),%xmm0
140 jnz .L004enc3_loop
141 .byte 102,15,56,220,209
142 .byte 102,15,56,220,217
143 .byte 102,15,56,220,225
144 .byte 102,15,56,221,208
145 .byte 102,15,56,221,216
146 .byte 102,15,56,221,224
147 ret
148 .size _aesni_encrypt3,.-_aesni_encrypt3
149 .hidden _aesni_decrypt3
150 .type _aesni_decrypt3,@function
151 .align 16
152 _aesni_decrypt3:
153 movups (%edx),%xmm0
154 shll $4,%ecx
155 movups 16(%edx),%xmm1
156 xorps %xmm0,%xmm2
157 pxor %xmm0,%xmm3
158 pxor %xmm0,%xmm4
159 movups 32(%edx),%xmm0
160 leal 32(%edx,%ecx,1),%edx
161 negl %ecx
162 addl $16,%ecx
163 .L005dec3_loop:
164 .byte 102,15,56,222,209
165 .byte 102,15,56,222,217
166 .byte 102,15,56,222,225
167 movups (%edx,%ecx,1),%xmm1
168 addl $32,%ecx
169 .byte 102,15,56,222,208
170 .byte 102,15,56,222,216
171 .byte 102,15,56,222,224
172 movups -16(%edx,%ecx,1),%xmm0
173 jnz .L005dec3_loop
174 .byte 102,15,56,222,209
175 .byte 102,15,56,222,217
176 .byte 102,15,56,222,225
177 .byte 102,15,56,223,208
178 .byte 102,15,56,223,216
179 .byte 102,15,56,223,224
180 ret
181 .size _aesni_decrypt3,.-_aesni_decrypt3
182 .hidden _aesni_encrypt4
183 .type _aesni_encrypt4,@function
184 .align 16
185 _aesni_encrypt4:
186 movups (%edx),%xmm0
187 movups 16(%edx),%xmm1
188 shll $4,%ecx
189 xorps %xmm0,%xmm2
190 pxor %xmm0,%xmm3
191 pxor %xmm0,%xmm4
192 pxor %xmm0,%xmm5
193 movups 32(%edx),%xmm0
194 leal 32(%edx,%ecx,1),%edx
195 negl %ecx
196 .byte 15,31,64,0
197 addl $16,%ecx
198 .L006enc4_loop:
199 .byte 102,15,56,220,209
200 .byte 102,15,56,220,217
201 .byte 102,15,56,220,225
202 .byte 102,15,56,220,233
203 movups (%edx,%ecx,1),%xmm1
204 addl $32,%ecx
205 .byte 102,15,56,220,208
206 .byte 102,15,56,220,216
207 .byte 102,15,56,220,224
208 .byte 102,15,56,220,232
209 movups -16(%edx,%ecx,1),%xmm0
210 jnz .L006enc4_loop
211 .byte 102,15,56,220,209
212 .byte 102,15,56,220,217
213 .byte 102,15,56,220,225
214 .byte 102,15,56,220,233
215 .byte 102,15,56,221,208
216 .byte 102,15,56,221,216
217 .byte 102,15,56,221,224
218 .byte 102,15,56,221,232
219 ret
220 .size _aesni_encrypt4,.-_aesni_encrypt4
221 .hidden _aesni_decrypt4
222 .type _aesni_decrypt4,@function
223 .align 16
224 _aesni_decrypt4:
225 movups (%edx),%xmm0
226 movups 16(%edx),%xmm1
227 shll $4,%ecx
228 xorps %xmm0,%xmm2
229 pxor %xmm0,%xmm3
230 pxor %xmm0,%xmm4
231 pxor %xmm0,%xmm5
232 movups 32(%edx),%xmm0
233 leal 32(%edx,%ecx,1),%edx
234 negl %ecx
235 .byte 15,31,64,0
236 addl $16,%ecx
237 .L007dec4_loop:
238 .byte 102,15,56,222,209
239 .byte 102,15,56,222,217
240 .byte 102,15,56,222,225
241 .byte 102,15,56,222,233
242 movups (%edx,%ecx,1),%xmm1
243 addl $32,%ecx
244 .byte 102,15,56,222,208
245 .byte 102,15,56,222,216
246 .byte 102,15,56,222,224
247 .byte 102,15,56,222,232
248 movups -16(%edx,%ecx,1),%xmm0
249 jnz .L007dec4_loop
250 .byte 102,15,56,222,209
251 .byte 102,15,56,222,217
252 .byte 102,15,56,222,225
253 .byte 102,15,56,222,233
254 .byte 102,15,56,223,208
255 .byte 102,15,56,223,216
256 .byte 102,15,56,223,224
257 .byte 102,15,56,223,232
258 ret
259 .size _aesni_decrypt4,.-_aesni_decrypt4
260 .hidden _aesni_encrypt6
261 .type _aesni_encrypt6,@function
262 .align 16
263 _aesni_encrypt6:
264 movups (%edx),%xmm0
265 shll $4,%ecx
266 movups 16(%edx),%xmm1
267 xorps %xmm0,%xmm2
268 pxor %xmm0,%xmm3
269 pxor %xmm0,%xmm4
270 .byte 102,15,56,220,209
271 pxor %xmm0,%xmm5
272 pxor %xmm0,%xmm6
273 .byte 102,15,56,220,217
274 leal 32(%edx,%ecx,1),%edx
275 negl %ecx
276 .byte 102,15,56,220,225
277 pxor %xmm0,%xmm7
278 movups (%edx,%ecx,1),%xmm0
279 addl $16,%ecx
280 jmp .L008_aesni_encrypt6_inner
281 .align 16
282 .L009enc6_loop:
283 .byte 102,15,56,220,209
284 .byte 102,15,56,220,217
285 .byte 102,15,56,220,225
286 .L008_aesni_encrypt6_inner:
287 .byte 102,15,56,220,233
288 .byte 102,15,56,220,241
289 .byte 102,15,56,220,249
290 .L_aesni_encrypt6_enter:
291 movups (%edx,%ecx,1),%xmm1
292 addl $32,%ecx
293 .byte 102,15,56,220,208
294 .byte 102,15,56,220,216
295 .byte 102,15,56,220,224
296 .byte 102,15,56,220,232
297 .byte 102,15,56,220,240
298 .byte 102,15,56,220,248
299 movups -16(%edx,%ecx,1),%xmm0
300 jnz .L009enc6_loop
301 .byte 102,15,56,220,209
302 .byte 102,15,56,220,217
303 .byte 102,15,56,220,225
304 .byte 102,15,56,220,233
305 .byte 102,15,56,220,241
306 .byte 102,15,56,220,249
307 .byte 102,15,56,221,208
308 .byte 102,15,56,221,216
309 .byte 102,15,56,221,224
310 .byte 102,15,56,221,232
311 .byte 102,15,56,221,240
312 .byte 102,15,56,221,248
313 ret
314 .size _aesni_encrypt6,.-_aesni_encrypt6
315 .hidden _aesni_decrypt6
316 .type _aesni_decrypt6,@function
317 .align 16
318 _aesni_decrypt6:
319 movups (%edx),%xmm0
320 shll $4,%ecx
321 movups 16(%edx),%xmm1
322 xorps %xmm0,%xmm2
323 pxor %xmm0,%xmm3
324 pxor %xmm0,%xmm4
325 .byte 102,15,56,222,209
326 pxor %xmm0,%xmm5
327 pxor %xmm0,%xmm6
328 .byte 102,15,56,222,217
329 leal 32(%edx,%ecx,1),%edx
330 negl %ecx
331 .byte 102,15,56,222,225
332 pxor %xmm0,%xmm7
333 movups (%edx,%ecx,1),%xmm0
334 addl $16,%ecx
335 jmp .L010_aesni_decrypt6_inner
336 .align 16
337 .L011dec6_loop:
338 .byte 102,15,56,222,209
339 .byte 102,15,56,222,217
340 .byte 102,15,56,222,225
341 .L010_aesni_decrypt6_inner:
342 .byte 102,15,56,222,233
343 .byte 102,15,56,222,241
344 .byte 102,15,56,222,249
345 .L_aesni_decrypt6_enter:
346 movups (%edx,%ecx,1),%xmm1
347 addl $32,%ecx
348 .byte 102,15,56,222,208
349 .byte 102,15,56,222,216
350 .byte 102,15,56,222,224
351 .byte 102,15,56,222,232
352 .byte 102,15,56,222,240
353 .byte 102,15,56,222,248
354 movups -16(%edx,%ecx,1),%xmm0
355 jnz .L011dec6_loop
356 .byte 102,15,56,222,209
357 .byte 102,15,56,222,217
358 .byte 102,15,56,222,225
359 .byte 102,15,56,222,233
360 .byte 102,15,56,222,241
361 .byte 102,15,56,222,249
362 .byte 102,15,56,223,208
363 .byte 102,15,56,223,216
364 .byte 102,15,56,223,224
365 .byte 102,15,56,223,232
366 .byte 102,15,56,223,240
367 .byte 102,15,56,223,248
368 ret
369 .size _aesni_decrypt6,.-_aesni_decrypt6
370 .globl aesni_ecb_encrypt
371 .hidden aesni_ecb_encrypt
372 .type aesni_ecb_encrypt,@function
373 .align 16
374 aesni_ecb_encrypt:
375 .L_aesni_ecb_encrypt_begin:
376 pushl %ebp
377 pushl %ebx
378 pushl %esi
379 pushl %edi
380 movl 20(%esp),%esi
381 movl 24(%esp),%edi
382 movl 28(%esp),%eax
383 movl 32(%esp),%edx
384 movl 36(%esp),%ebx
385 andl $-16,%eax
386 jz .L012ecb_ret
387 movl 240(%edx),%ecx
388 testl %ebx,%ebx
389 jz .L013ecb_decrypt
390 movl %edx,%ebp
391 movl %ecx,%ebx
392 cmpl $96,%eax
393 jb .L014ecb_enc_tail
394 movdqu (%esi),%xmm2
395 movdqu 16(%esi),%xmm3
396 movdqu 32(%esi),%xmm4
397 movdqu 48(%esi),%xmm5
398 movdqu 64(%esi),%xmm6
399 movdqu 80(%esi),%xmm7
400 leal 96(%esi),%esi
401 subl $96,%eax
402 jmp .L015ecb_enc_loop6_enter
403 .align 16
404 .L016ecb_enc_loop6:
405 movups %xmm2,(%edi)
406 movdqu (%esi),%xmm2
407 movups %xmm3,16(%edi)
408 movdqu 16(%esi),%xmm3
409 movups %xmm4,32(%edi)
410 movdqu 32(%esi),%xmm4
411 movups %xmm5,48(%edi)
412 movdqu 48(%esi),%xmm5
413 movups %xmm6,64(%edi)
414 movdqu 64(%esi),%xmm6
415 movups %xmm7,80(%edi)
416 leal 96(%edi),%edi
417 movdqu 80(%esi),%xmm7
418 leal 96(%esi),%esi
419 .L015ecb_enc_loop6_enter:
420 call _aesni_encrypt6
421 movl %ebp,%edx
422 movl %ebx,%ecx
423 subl $96,%eax
424 jnc .L016ecb_enc_loop6
425 movups %xmm2,(%edi)
426 movups %xmm3,16(%edi)
427 movups %xmm4,32(%edi)
428 movups %xmm5,48(%edi)
429 movups %xmm6,64(%edi)
430 movups %xmm7,80(%edi)
431 leal 96(%edi),%edi
432 addl $96,%eax
433 jz .L012ecb_ret
434 .L014ecb_enc_tail:
435 movups (%esi),%xmm2
436 cmpl $32,%eax
437 jb .L017ecb_enc_one
438 movups 16(%esi),%xmm3
439 je .L018ecb_enc_two
440 movups 32(%esi),%xmm4
441 cmpl $64,%eax
442 jb .L019ecb_enc_three
443 movups 48(%esi),%xmm5
444 je .L020ecb_enc_four
445 movups 64(%esi),%xmm6
446 xorps %xmm7,%xmm7
447 call _aesni_encrypt6
448 movups %xmm2,(%edi)
449 movups %xmm3,16(%edi)
450 movups %xmm4,32(%edi)
451 movups %xmm5,48(%edi)
452 movups %xmm6,64(%edi)
453 jmp .L012ecb_ret
454 .align 16
455 .L017ecb_enc_one:
456 movups (%edx),%xmm0
457 movups 16(%edx),%xmm1
458 leal 32(%edx),%edx
459 xorps %xmm0,%xmm2
460 .L021enc1_loop_3:
461 .byte 102,15,56,220,209
462 decl %ecx
463 movups (%edx),%xmm1
464 leal 16(%edx),%edx
465 jnz .L021enc1_loop_3
466 .byte 102,15,56,221,209
467 movups %xmm2,(%edi)
468 jmp .L012ecb_ret
469 .align 16
470 .L018ecb_enc_two:
471 call _aesni_encrypt2
472 movups %xmm2,(%edi)
473 movups %xmm3,16(%edi)
474 jmp .L012ecb_ret
475 .align 16
476 .L019ecb_enc_three:
477 call _aesni_encrypt3
478 movups %xmm2,(%edi)
479 movups %xmm3,16(%edi)
480 movups %xmm4,32(%edi)
481 jmp .L012ecb_ret
482 .align 16
483 .L020ecb_enc_four:
484 call _aesni_encrypt4
485 movups %xmm2,(%edi)
486 movups %xmm3,16(%edi)
487 movups %xmm4,32(%edi)
488 movups %xmm5,48(%edi)
489 jmp .L012ecb_ret
490 .align 16
491 .L013ecb_decrypt:
492 movl %edx,%ebp
493 movl %ecx,%ebx
494 cmpl $96,%eax
495 jb .L022ecb_dec_tail
496 movdqu (%esi),%xmm2
497 movdqu 16(%esi),%xmm3
498 movdqu 32(%esi),%xmm4
499 movdqu 48(%esi),%xmm5
500 movdqu 64(%esi),%xmm6
501 movdqu 80(%esi),%xmm7
502 leal 96(%esi),%esi
503 subl $96,%eax
504 jmp .L023ecb_dec_loop6_enter
505 .align 16
506 .L024ecb_dec_loop6:
507 movups %xmm2,(%edi)
508 movdqu (%esi),%xmm2
509 movups %xmm3,16(%edi)
510 movdqu 16(%esi),%xmm3
511 movups %xmm4,32(%edi)
512 movdqu 32(%esi),%xmm4
513 movups %xmm5,48(%edi)
514 movdqu 48(%esi),%xmm5
515 movups %xmm6,64(%edi)
516 movdqu 64(%esi),%xmm6
517 movups %xmm7,80(%edi)
518 leal 96(%edi),%edi
519 movdqu 80(%esi),%xmm7
520 leal 96(%esi),%esi
521 .L023ecb_dec_loop6_enter:
522 call _aesni_decrypt6
523 movl %ebp,%edx
524 movl %ebx,%ecx
525 subl $96,%eax
526 jnc .L024ecb_dec_loop6
527 movups %xmm2,(%edi)
528 movups %xmm3,16(%edi)
529 movups %xmm4,32(%edi)
530 movups %xmm5,48(%edi)
531 movups %xmm6,64(%edi)
532 movups %xmm7,80(%edi)
533 leal 96(%edi),%edi
534 addl $96,%eax
535 jz .L012ecb_ret
536 .L022ecb_dec_tail:
537 movups (%esi),%xmm2
538 cmpl $32,%eax
539 jb .L025ecb_dec_one
540 movups 16(%esi),%xmm3
541 je .L026ecb_dec_two
542 movups 32(%esi),%xmm4
543 cmpl $64,%eax
544 jb .L027ecb_dec_three
545 movups 48(%esi),%xmm5
546 je .L028ecb_dec_four
547 movups 64(%esi),%xmm6
548 xorps %xmm7,%xmm7
549 call _aesni_decrypt6
550 movups %xmm2,(%edi)
551 movups %xmm3,16(%edi)
552 movups %xmm4,32(%edi)
553 movups %xmm5,48(%edi)
554 movups %xmm6,64(%edi)
555 jmp .L012ecb_ret
556 .align 16
557 .L025ecb_dec_one:
558 movups (%edx),%xmm0
559 movups 16(%edx),%xmm1
560 leal 32(%edx),%edx
561 xorps %xmm0,%xmm2
562 .L029dec1_loop_4:
563 .byte 102,15,56,222,209
564 decl %ecx
565 movups (%edx),%xmm1
566 leal 16(%edx),%edx
567 jnz .L029dec1_loop_4
568 .byte 102,15,56,223,209
569 movups %xmm2,(%edi)
570 jmp .L012ecb_ret
571 .align 16
572 .L026ecb_dec_two:
573 call _aesni_decrypt2
574 movups %xmm2,(%edi)
575 movups %xmm3,16(%edi)
576 jmp .L012ecb_ret
577 .align 16
578 .L027ecb_dec_three:
579 call _aesni_decrypt3
580 movups %xmm2,(%edi)
581 movups %xmm3,16(%edi)
582 movups %xmm4,32(%edi)
583 jmp .L012ecb_ret
584 .align 16
585 .L028ecb_dec_four:
586 call _aesni_decrypt4
587 movups %xmm2,(%edi)
588 movups %xmm3,16(%edi)
589 movups %xmm4,32(%edi)
590 movups %xmm5,48(%edi)
591 .L012ecb_ret:
592 pxor %xmm0,%xmm0
593 pxor %xmm1,%xmm1
594 pxor %xmm2,%xmm2
595 pxor %xmm3,%xmm3
596 pxor %xmm4,%xmm4
597 pxor %xmm5,%xmm5
598 pxor %xmm6,%xmm6
599 pxor %xmm7,%xmm7
600 popl %edi
601 popl %esi
602 popl %ebx
603 popl %ebp
604 ret
605 .size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
606 .globl aesni_ccm64_encrypt_blocks
607 .hidden aesni_ccm64_encrypt_blocks
608 .type aesni_ccm64_encrypt_blocks,@function
609 .align 16
610 aesni_ccm64_encrypt_blocks:
611 .L_aesni_ccm64_encrypt_blocks_begin:
612 pushl %ebp
613 pushl %ebx
614 pushl %esi
615 pushl %edi
616 movl 20(%esp),%esi
617 movl 24(%esp),%edi
618 movl 28(%esp),%eax
619 movl 32(%esp),%edx
620 movl 36(%esp),%ebx
621 movl 40(%esp),%ecx
622 movl %esp,%ebp
623 subl $60,%esp
624 andl $-16,%esp
625 movl %ebp,48(%esp)
626 movdqu (%ebx),%xmm7
627 movdqu (%ecx),%xmm3
628 movl 240(%edx),%ecx
629 movl $202182159,(%esp)
630 movl $134810123,4(%esp)
631 movl $67438087,8(%esp)
632 movl $66051,12(%esp)
633 movl $1,%ebx
634 xorl %ebp,%ebp
635 movl %ebx,16(%esp)
636 movl %ebp,20(%esp)
637 movl %ebp,24(%esp)
638 movl %ebp,28(%esp)
639 shll $4,%ecx
640 movl $16,%ebx
641 leal (%edx),%ebp
642 movdqa (%esp),%xmm5
643 movdqa %xmm7,%xmm2
644 leal 32(%edx,%ecx,1),%edx
645 subl %ecx,%ebx
646 .byte 102,15,56,0,253
647 .L030ccm64_enc_outer:
648 movups (%ebp),%xmm0
649 movl %ebx,%ecx
650 movups (%esi),%xmm6
651 xorps %xmm0,%xmm2
652 movups 16(%ebp),%xmm1
653 xorps %xmm6,%xmm0
654 xorps %xmm0,%xmm3
655 movups 32(%ebp),%xmm0
656 .L031ccm64_enc2_loop:
657 .byte 102,15,56,220,209
658 .byte 102,15,56,220,217
659 movups (%edx,%ecx,1),%xmm1
660 addl $32,%ecx
661 .byte 102,15,56,220,208
662 .byte 102,15,56,220,216
663 movups -16(%edx,%ecx,1),%xmm0
664 jnz .L031ccm64_enc2_loop
665 .byte 102,15,56,220,209
666 .byte 102,15,56,220,217
667 paddq 16(%esp),%xmm7
668 decl %eax
669 .byte 102,15,56,221,208
670 .byte 102,15,56,221,216
671 leal 16(%esi),%esi
672 xorps %xmm2,%xmm6
673 movdqa %xmm7,%xmm2
674 movups %xmm6,(%edi)
675 .byte 102,15,56,0,213
676 leal 16(%edi),%edi
677 jnz .L030ccm64_enc_outer
678 movl 48(%esp),%esp
679 movl 40(%esp),%edi
680 movups %xmm3,(%edi)
681 pxor %xmm0,%xmm0
682 pxor %xmm1,%xmm1
683 pxor %xmm2,%xmm2
684 pxor %xmm3,%xmm3
685 pxor %xmm4,%xmm4
686 pxor %xmm5,%xmm5
687 pxor %xmm6,%xmm6
688 pxor %xmm7,%xmm7
689 popl %edi
690 popl %esi
691 popl %ebx
692 popl %ebp
693 ret
694 .size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
695 .globl aesni_ccm64_decrypt_blocks
696 .hidden aesni_ccm64_decrypt_blocks
697 .type aesni_ccm64_decrypt_blocks,@function
698 .align 16
699 aesni_ccm64_decrypt_blocks:
700 .L_aesni_ccm64_decrypt_blocks_begin:
701 pushl %ebp
702 pushl %ebx
703 pushl %esi
704 pushl %edi
705 movl 20(%esp),%esi
706 movl 24(%esp),%edi
707 movl 28(%esp),%eax
708 movl 32(%esp),%edx
709 movl 36(%esp),%ebx
710 movl 40(%esp),%ecx
711 movl %esp,%ebp
712 subl $60,%esp
713 andl $-16,%esp
714 movl %ebp,48(%esp)
715 movdqu (%ebx),%xmm7
716 movdqu (%ecx),%xmm3
717 movl 240(%edx),%ecx
718 movl $202182159,(%esp)
719 movl $134810123,4(%esp)
720 movl $67438087,8(%esp)
721 movl $66051,12(%esp)
722 movl $1,%ebx
723 xorl %ebp,%ebp
724 movl %ebx,16(%esp)
725 movl %ebp,20(%esp)
726 movl %ebp,24(%esp)
727 movl %ebp,28(%esp)
728 movdqa (%esp),%xmm5
729 movdqa %xmm7,%xmm2
730 movl %edx,%ebp
731 movl %ecx,%ebx
732 .byte 102,15,56,0,253
733 movups (%edx),%xmm0
734 movups 16(%edx),%xmm1
735 leal 32(%edx),%edx
736 xorps %xmm0,%xmm2
737 .L032enc1_loop_5:
738 .byte 102,15,56,220,209
739 decl %ecx
740 movups (%edx),%xmm1
741 leal 16(%edx),%edx
742 jnz .L032enc1_loop_5
743 .byte 102,15,56,221,209
744 shll $4,%ebx
745 movl $16,%ecx
746 movups (%esi),%xmm6
747 paddq 16(%esp),%xmm7
748 leal 16(%esi),%esi
749 subl %ebx,%ecx
750 leal 32(%ebp,%ebx,1),%edx
751 movl %ecx,%ebx
752 jmp .L033ccm64_dec_outer
753 .align 16
754 .L033ccm64_dec_outer:
755 xorps %xmm2,%xmm6
756 movdqa %xmm7,%xmm2
757 movups %xmm6,(%edi)
758 leal 16(%edi),%edi
759 .byte 102,15,56,0,213
760 subl $1,%eax
761 jz .L034ccm64_dec_break
762 movups (%ebp),%xmm0
763 movl %ebx,%ecx
764 movups 16(%ebp),%xmm1
765 xorps %xmm0,%xmm6
766 xorps %xmm0,%xmm2
767 xorps %xmm6,%xmm3
768 movups 32(%ebp),%xmm0
769 .L035ccm64_dec2_loop:
770 .byte 102,15,56,220,209
771 .byte 102,15,56,220,217
772 movups (%edx,%ecx,1),%xmm1
773 addl $32,%ecx
774 .byte 102,15,56,220,208
775 .byte 102,15,56,220,216
776 movups -16(%edx,%ecx,1),%xmm0
777 jnz .L035ccm64_dec2_loop
778 movups (%esi),%xmm6
779 paddq 16(%esp),%xmm7
780 .byte 102,15,56,220,209
781 .byte 102,15,56,220,217
782 .byte 102,15,56,221,208
783 .byte 102,15,56,221,216
784 leal 16(%esi),%esi
785 jmp .L033ccm64_dec_outer
786 .align 16
787 .L034ccm64_dec_break:
788 movl 240(%ebp),%ecx
789 movl %ebp,%edx
790 movups (%edx),%xmm0
791 movups 16(%edx),%xmm1
792 xorps %xmm0,%xmm6
793 leal 32(%edx),%edx
794 xorps %xmm6,%xmm3
795 .L036enc1_loop_6:
796 .byte 102,15,56,220,217
797 decl %ecx
798 movups (%edx),%xmm1
799 leal 16(%edx),%edx
800 jnz .L036enc1_loop_6
801 .byte 102,15,56,221,217
802 movl 48(%esp),%esp
803 movl 40(%esp),%edi
804 movups %xmm3,(%edi)
805 pxor %xmm0,%xmm0
806 pxor %xmm1,%xmm1
807 pxor %xmm2,%xmm2
808 pxor %xmm3,%xmm3
809 pxor %xmm4,%xmm4
810 pxor %xmm5,%xmm5
811 pxor %xmm6,%xmm6
812 pxor %xmm7,%xmm7
813 popl %edi
814 popl %esi
815 popl %ebx
816 popl %ebp
817 ret
818 .size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
819 .globl aesni_ctr32_encrypt_blocks
820 .hidden aesni_ctr32_encrypt_blocks
821 .type aesni_ctr32_encrypt_blocks,@function
822 .align 16
823 aesni_ctr32_encrypt_blocks:
824 .L_aesni_ctr32_encrypt_blocks_begin:
825 pushl %ebp
826 pushl %ebx
827 pushl %esi
828 pushl %edi
829 movl 20(%esp),%esi
830 movl 24(%esp),%edi
831 movl 28(%esp),%eax
832 movl 32(%esp),%edx
833 movl 36(%esp),%ebx
834 movl %esp,%ebp
835 subl $88,%esp
836 andl $-16,%esp
837 movl %ebp,80(%esp)
838 cmpl $1,%eax
839 je .L037ctr32_one_shortcut
840 movdqu (%ebx),%xmm7
841 movl $202182159,(%esp)
842 movl $134810123,4(%esp)
843 movl $67438087,8(%esp)
844 movl $66051,12(%esp)
845 movl $6,%ecx
846 xorl %ebp,%ebp
847 movl %ecx,16(%esp)
848 movl %ecx,20(%esp)
849 movl %ecx,24(%esp)
850 movl %ebp,28(%esp)
851 .byte 102,15,58,22,251,3
852 .byte 102,15,58,34,253,3
853 movl 240(%edx),%ecx
854 bswap %ebx
855 pxor %xmm0,%xmm0
856 pxor %xmm1,%xmm1
857 movdqa (%esp),%xmm2
858 .byte 102,15,58,34,195,0
859 leal 3(%ebx),%ebp
860 .byte 102,15,58,34,205,0
861 incl %ebx
862 .byte 102,15,58,34,195,1
863 incl %ebp
864 .byte 102,15,58,34,205,1
865 incl %ebx
866 .byte 102,15,58,34,195,2
867 incl %ebp
868 .byte 102,15,58,34,205,2
869 movdqa %xmm0,48(%esp)
870 .byte 102,15,56,0,194
871 movdqu (%edx),%xmm6
872 movdqa %xmm1,64(%esp)
873 .byte 102,15,56,0,202
874 pshufd $192,%xmm0,%xmm2
875 pshufd $128,%xmm0,%xmm3
876 cmpl $6,%eax
877 jb .L038ctr32_tail
878 pxor %xmm6,%xmm7
879 shll $4,%ecx
880 movl $16,%ebx
881 movdqa %xmm7,32(%esp)
882 movl %edx,%ebp
883 subl %ecx,%ebx
884 leal 32(%edx,%ecx,1),%edx
885 subl $6,%eax
886 jmp .L039ctr32_loop6
887 .align 16
888 .L039ctr32_loop6:
889 pshufd $64,%xmm0,%xmm4
890 movdqa 32(%esp),%xmm0
891 pshufd $192,%xmm1,%xmm5
892 pxor %xmm0,%xmm2
893 pshufd $128,%xmm1,%xmm6
894 pxor %xmm0,%xmm3
895 pshufd $64,%xmm1,%xmm7
896 movups 16(%ebp),%xmm1
897 pxor %xmm0,%xmm4
898 pxor %xmm0,%xmm5
899 .byte 102,15,56,220,209
900 pxor %xmm0,%xmm6
901 pxor %xmm0,%xmm7
902 .byte 102,15,56,220,217
903 movups 32(%ebp),%xmm0
904 movl %ebx,%ecx
905 .byte 102,15,56,220,225
906 .byte 102,15,56,220,233
907 .byte 102,15,56,220,241
908 .byte 102,15,56,220,249
909 call .L_aesni_encrypt6_enter
910 movups (%esi),%xmm1
911 movups 16(%esi),%xmm0
912 xorps %xmm1,%xmm2
913 movups 32(%esi),%xmm1
914 xorps %xmm0,%xmm3
915 movups %xmm2,(%edi)
916 movdqa 16(%esp),%xmm0
917 xorps %xmm1,%xmm4
918 movdqa 64(%esp),%xmm1
919 movups %xmm3,16(%edi)
920 movups %xmm4,32(%edi)
921 paddd %xmm0,%xmm1
922 paddd 48(%esp),%xmm0
923 movdqa (%esp),%xmm2
924 movups 48(%esi),%xmm3
925 movups 64(%esi),%xmm4
926 xorps %xmm3,%xmm5
927 movups 80(%esi),%xmm3
928 leal 96(%esi),%esi
929 movdqa %xmm0,48(%esp)
930 .byte 102,15,56,0,194
931 xorps %xmm4,%xmm6
932 movups %xmm5,48(%edi)
933 xorps %xmm3,%xmm7
934 movdqa %xmm1,64(%esp)
935 .byte 102,15,56,0,202
936 movups %xmm6,64(%edi)
937 pshufd $192,%xmm0,%xmm2
938 movups %xmm7,80(%edi)
939 leal 96(%edi),%edi
940 pshufd $128,%xmm0,%xmm3
941 subl $6,%eax
942 jnc .L039ctr32_loop6
943 addl $6,%eax
944 jz .L040ctr32_ret
945 movdqu (%ebp),%xmm7
946 movl %ebp,%edx
947 pxor 32(%esp),%xmm7
948 movl 240(%ebp),%ecx
949 .L038ctr32_tail:
950 por %xmm7,%xmm2
951 cmpl $2,%eax
952 jb .L041ctr32_one
953 pshufd $64,%xmm0,%xmm4
954 por %xmm7,%xmm3
955 je .L042ctr32_two
956 pshufd $192,%xmm1,%xmm5
957 por %xmm7,%xmm4
958 cmpl $4,%eax
959 jb .L043ctr32_three
960 pshufd $128,%xmm1,%xmm6
961 por %xmm7,%xmm5
962 je .L044ctr32_four
963 por %xmm7,%xmm6
964 call _aesni_encrypt6
965 movups (%esi),%xmm1
966 movups 16(%esi),%xmm0
967 xorps %xmm1,%xmm2
968 movups 32(%esi),%xmm1
969 xorps %xmm0,%xmm3
970 movups 48(%esi),%xmm0
971 xorps %xmm1,%xmm4
972 movups 64(%esi),%xmm1
973 xorps %xmm0,%xmm5
974 movups %xmm2,(%edi)
975 xorps %xmm1,%xmm6
976 movups %xmm3,16(%edi)
977 movups %xmm4,32(%edi)
978 movups %xmm5,48(%edi)
979 movups %xmm6,64(%edi)
980 jmp .L040ctr32_ret
981 .align 16
982 .L037ctr32_one_shortcut:
983 movups (%ebx),%xmm2
984 movl 240(%edx),%ecx
985 .L041ctr32_one:
986 movups (%edx),%xmm0
987 movups 16(%edx),%xmm1
988 leal 32(%edx),%edx
989 xorps %xmm0,%xmm2
990 .L045enc1_loop_7:
991 .byte 102,15,56,220,209
992 decl %ecx
993 movups (%edx),%xmm1
994 leal 16(%edx),%edx
995 jnz .L045enc1_loop_7
996 .byte 102,15,56,221,209
997 movups (%esi),%xmm6
998 xorps %xmm2,%xmm6
999 movups %xmm6,(%edi)
1000 jmp .L040ctr32_ret
1001 .align 16
1002 .L042ctr32_two:
1003 call _aesni_encrypt2
1004 movups (%esi),%xmm5
1005 movups 16(%esi),%xmm6
1006 xorps %xmm5,%xmm2
1007 xorps %xmm6,%xmm3
1008 movups %xmm2,(%edi)
1009 movups %xmm3,16(%edi)
1010 jmp .L040ctr32_ret
1011 .align 16
1012 .L043ctr32_three:
1013 call _aesni_encrypt3
1014 movups (%esi),%xmm5
1015 movups 16(%esi),%xmm6
1016 xorps %xmm5,%xmm2
1017 movups 32(%esi),%xmm7
1018 xorps %xmm6,%xmm3
1019 movups %xmm2,(%edi)
1020 xorps %xmm7,%xmm4
1021 movups %xmm3,16(%edi)
1022 movups %xmm4,32(%edi)
1023 jmp .L040ctr32_ret
1024 .align 16
1025 .L044ctr32_four:
1026 call _aesni_encrypt4
1027 movups (%esi),%xmm6
1028 movups 16(%esi),%xmm7
1029 movups 32(%esi),%xmm1
1030 xorps %xmm6,%xmm2
1031 movups 48(%esi),%xmm0
1032 xorps %xmm7,%xmm3
1033 movups %xmm2,(%edi)
1034 xorps %xmm1,%xmm4
1035 movups %xmm3,16(%edi)
1036 xorps %xmm0,%xmm5
1037 movups %xmm4,32(%edi)
1038 movups %xmm5,48(%edi)
1039 .L040ctr32_ret:
1040 pxor %xmm0,%xmm0
1041 pxor %xmm1,%xmm1
1042 pxor %xmm2,%xmm2
1043 pxor %xmm3,%xmm3
1044 pxor %xmm4,%xmm4
1045 movdqa %xmm0,32(%esp)
1046 pxor %xmm5,%xmm5
1047 movdqa %xmm0,48(%esp)
1048 pxor %xmm6,%xmm6
1049 movdqa %xmm0,64(%esp)
1050 pxor %xmm7,%xmm7
1051 movl 80(%esp),%esp
1052 popl %edi
1053 popl %esi
1054 popl %ebx
1055 popl %ebp
1056 ret
1057 .size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
1058 .globl aesni_xts_encrypt
1059 .hidden aesni_xts_encrypt
1060 .type aesni_xts_encrypt,@function
1061 .align 16
1062 aesni_xts_encrypt:
1063 .L_aesni_xts_encrypt_begin:
1064 pushl %ebp
1065 pushl %ebx
1066 pushl %esi
1067 pushl %edi
1068 movl 36(%esp),%edx
1069 movl 40(%esp),%esi
1070 movl 240(%edx),%ecx
1071 movups (%esi),%xmm2
1072 movups (%edx),%xmm0
1073 movups 16(%edx),%xmm1
1074 leal 32(%edx),%edx
1075 xorps %xmm0,%xmm2
1076 .L046enc1_loop_8:
1077 .byte 102,15,56,220,209
1078 decl %ecx
1079 movups (%edx),%xmm1
1080 leal 16(%edx),%edx
1081 jnz .L046enc1_loop_8
1082 .byte 102,15,56,221,209
1083 movl 20(%esp),%esi
1084 movl 24(%esp),%edi
1085 movl 28(%esp),%eax
1086 movl 32(%esp),%edx
1087 movl %esp,%ebp
1088 subl $120,%esp
1089 movl 240(%edx),%ecx
1090 andl $-16,%esp
1091 movl $135,96(%esp)
1092 movl $0,100(%esp)
1093 movl $1,104(%esp)
1094 movl $0,108(%esp)
1095 movl %eax,112(%esp)
1096 movl %ebp,116(%esp)
1097 movdqa %xmm2,%xmm1
1098 pxor %xmm0,%xmm0
1099 movdqa 96(%esp),%xmm3
1100 pcmpgtd %xmm1,%xmm0
1101 andl $-16,%eax
1102 movl %edx,%ebp
1103 movl %ecx,%ebx
1104 subl $96,%eax
1105 jc .L047xts_enc_short
1106 shll $4,%ecx
1107 movl $16,%ebx
1108 subl %ecx,%ebx
1109 leal 32(%edx,%ecx,1),%edx
1110 jmp .L048xts_enc_loop6
1111 .align 16
1112 .L048xts_enc_loop6:
1113 pshufd $19,%xmm0,%xmm2
1114 pxor %xmm0,%xmm0
1115 movdqa %xmm1,(%esp)
1116 paddq %xmm1,%xmm1
1117 pand %xmm3,%xmm2
1118 pcmpgtd %xmm1,%xmm0
1119 pxor %xmm2,%xmm1
1120 pshufd $19,%xmm0,%xmm2
1121 pxor %xmm0,%xmm0
1122 movdqa %xmm1,16(%esp)
1123 paddq %xmm1,%xmm1
1124 pand %xmm3,%xmm2
1125 pcmpgtd %xmm1,%xmm0
1126 pxor %xmm2,%xmm1
1127 pshufd $19,%xmm0,%xmm2
1128 pxor %xmm0,%xmm0
1129 movdqa %xmm1,32(%esp)
1130 paddq %xmm1,%xmm1
1131 pand %xmm3,%xmm2
1132 pcmpgtd %xmm1,%xmm0
1133 pxor %xmm2,%xmm1
1134 pshufd $19,%xmm0,%xmm2
1135 pxor %xmm0,%xmm0
1136 movdqa %xmm1,48(%esp)
1137 paddq %xmm1,%xmm1
1138 pand %xmm3,%xmm2
1139 pcmpgtd %xmm1,%xmm0
1140 pxor %xmm2,%xmm1
1141 pshufd $19,%xmm0,%xmm7
1142 movdqa %xmm1,64(%esp)
1143 paddq %xmm1,%xmm1
1144 movups (%ebp),%xmm0
1145 pand %xmm3,%xmm7
1146 movups (%esi),%xmm2
1147 pxor %xmm1,%xmm7
1148 movl %ebx,%ecx
1149 movdqu 16(%esi),%xmm3
1150 xorps %xmm0,%xmm2
1151 movdqu 32(%esi),%xmm4
1152 pxor %xmm0,%xmm3
1153 movdqu 48(%esi),%xmm5
1154 pxor %xmm0,%xmm4
1155 movdqu 64(%esi),%xmm6
1156 pxor %xmm0,%xmm5
1157 movdqu 80(%esi),%xmm1
1158 pxor %xmm0,%xmm6
1159 leal 96(%esi),%esi
1160 pxor (%esp),%xmm2
1161 movdqa %xmm7,80(%esp)
1162 pxor %xmm1,%xmm7
1163 movups 16(%ebp),%xmm1
1164 pxor 16(%esp),%xmm3
1165 pxor 32(%esp),%xmm4
1166 .byte 102,15,56,220,209
1167 pxor 48(%esp),%xmm5
1168 pxor 64(%esp),%xmm6
1169 .byte 102,15,56,220,217
1170 pxor %xmm0,%xmm7
1171 movups 32(%ebp),%xmm0
1172 .byte 102,15,56,220,225
1173 .byte 102,15,56,220,233
1174 .byte 102,15,56,220,241
1175 .byte 102,15,56,220,249
1176 call .L_aesni_encrypt6_enter
1177 movdqa 80(%esp),%xmm1
1178 pxor %xmm0,%xmm0
1179 xorps (%esp),%xmm2
1180 pcmpgtd %xmm1,%xmm0
1181 xorps 16(%esp),%xmm3
1182 movups %xmm2,(%edi)
1183 xorps 32(%esp),%xmm4
1184 movups %xmm3,16(%edi)
1185 xorps 48(%esp),%xmm5
1186 movups %xmm4,32(%edi)
1187 xorps 64(%esp),%xmm6
1188 movups %xmm5,48(%edi)
1189 xorps %xmm1,%xmm7
1190 movups %xmm6,64(%edi)
1191 pshufd $19,%xmm0,%xmm2
1192 movups %xmm7,80(%edi)
1193 leal 96(%edi),%edi
1194 movdqa 96(%esp),%xmm3
1195 pxor %xmm0,%xmm0
1196 paddq %xmm1,%xmm1
1197 pand %xmm3,%xmm2
1198 pcmpgtd %xmm1,%xmm0
1199 pxor %xmm2,%xmm1
1200 subl $96,%eax
1201 jnc .L048xts_enc_loop6
1202 movl 240(%ebp),%ecx
1203 movl %ebp,%edx
1204 movl %ecx,%ebx
1205 .L047xts_enc_short:
1206 addl $96,%eax
1207 jz .L049xts_enc_done6x
1208 movdqa %xmm1,%xmm5
1209 cmpl $32,%eax
1210 jb .L050xts_enc_one
1211 pshufd $19,%xmm0,%xmm2
1212 pxor %xmm0,%xmm0
1213 paddq %xmm1,%xmm1
1214 pand %xmm3,%xmm2
1215 pcmpgtd %xmm1,%xmm0
1216 pxor %xmm2,%xmm1
1217 je .L051xts_enc_two
1218 pshufd $19,%xmm0,%xmm2
1219 pxor %xmm0,%xmm0
1220 movdqa %xmm1,%xmm6
1221 paddq %xmm1,%xmm1
1222 pand %xmm3,%xmm2
1223 pcmpgtd %xmm1,%xmm0
1224 pxor %xmm2,%xmm1
1225 cmpl $64,%eax
1226 jb .L052xts_enc_three
1227 pshufd $19,%xmm0,%xmm2
1228 pxor %xmm0,%xmm0
1229 movdqa %xmm1,%xmm7
1230 paddq %xmm1,%xmm1
1231 pand %xmm3,%xmm2
1232 pcmpgtd %xmm1,%xmm0
1233 pxor %xmm2,%xmm1
1234 movdqa %xmm5,(%esp)
1235 movdqa %xmm6,16(%esp)
1236 je .L053xts_enc_four
1237 movdqa %xmm7,32(%esp)
1238 pshufd $19,%xmm0,%xmm7
1239 movdqa %xmm1,48(%esp)
1240 paddq %xmm1,%xmm1
1241 pand %xmm3,%xmm7
1242 pxor %xmm1,%xmm7
1243 movdqu (%esi),%xmm2
1244 movdqu 16(%esi),%xmm3
1245 movdqu 32(%esi),%xmm4
1246 pxor (%esp),%xmm2
1247 movdqu 48(%esi),%xmm5
1248 pxor 16(%esp),%xmm3
1249 movdqu 64(%esi),%xmm6
1250 pxor 32(%esp),%xmm4
1251 leal 80(%esi),%esi
1252 pxor 48(%esp),%xmm5
1253 movdqa %xmm7,64(%esp)
1254 pxor %xmm7,%xmm6
1255 call _aesni_encrypt6
1256 movaps 64(%esp),%xmm1
1257 xorps (%esp),%xmm2
1258 xorps 16(%esp),%xmm3
1259 xorps 32(%esp),%xmm4
1260 movups %xmm2,(%edi)
1261 xorps 48(%esp),%xmm5
1262 movups %xmm3,16(%edi)
1263 xorps %xmm1,%xmm6
1264 movups %xmm4,32(%edi)
1265 movups %xmm5,48(%edi)
1266 movups %xmm6,64(%edi)
1267 leal 80(%edi),%edi
1268 jmp .L054xts_enc_done
1269 .align 16
1270 .L050xts_enc_one:
1271 movups (%esi),%xmm2
1272 leal 16(%esi),%esi
1273 xorps %xmm5,%xmm2
1274 movups (%edx),%xmm0
1275 movups 16(%edx),%xmm1
1276 leal 32(%edx),%edx
1277 xorps %xmm0,%xmm2
1278 .L055enc1_loop_9:
1279 .byte 102,15,56,220,209
1280 decl %ecx
1281 movups (%edx),%xmm1
1282 leal 16(%edx),%edx
1283 jnz .L055enc1_loop_9
1284 .byte 102,15,56,221,209
1285 xorps %xmm5,%xmm2
1286 movups %xmm2,(%edi)
1287 leal 16(%edi),%edi
1288 movdqa %xmm5,%xmm1
1289 jmp .L054xts_enc_done
1290 .align 16
1291 .L051xts_enc_two:
1292 movaps %xmm1,%xmm6
1293 movups (%esi),%xmm2
1294 movups 16(%esi),%xmm3
1295 leal 32(%esi),%esi
1296 xorps %xmm5,%xmm2
1297 xorps %xmm6,%xmm3
1298 call _aesni_encrypt2
1299 xorps %xmm5,%xmm2
1300 xorps %xmm6,%xmm3
1301 movups %xmm2,(%edi)
1302 movups %xmm3,16(%edi)
1303 leal 32(%edi),%edi
1304 movdqa %xmm6,%xmm1
1305 jmp .L054xts_enc_done
1306 .align 16
1307 .L052xts_enc_three:
1308 movaps %xmm1,%xmm7
1309 movups (%esi),%xmm2
1310 movups 16(%esi),%xmm3
1311 movups 32(%esi),%xmm4
1312 leal 48(%esi),%esi
1313 xorps %xmm5,%xmm2
1314 xorps %xmm6,%xmm3
1315 xorps %xmm7,%xmm4
1316 call _aesni_encrypt3
1317 xorps %xmm5,%xmm2
1318 xorps %xmm6,%xmm3
1319 xorps %xmm7,%xmm4
1320 movups %xmm2,(%edi)
1321 movups %xmm3,16(%edi)
1322 movups %xmm4,32(%edi)
1323 leal 48(%edi),%edi
1324 movdqa %xmm7,%xmm1
1325 jmp .L054xts_enc_done
1326 .align 16
1327 .L053xts_enc_four:
1328 movaps %xmm1,%xmm6
1329 movups (%esi),%xmm2
1330 movups 16(%esi),%xmm3
1331 movups 32(%esi),%xmm4
1332 xorps (%esp),%xmm2
1333 movups 48(%esi),%xmm5
1334 leal 64(%esi),%esi
1335 xorps 16(%esp),%xmm3
1336 xorps %xmm7,%xmm4
1337 xorps %xmm6,%xmm5
1338 call _aesni_encrypt4
1339 xorps (%esp),%xmm2
1340 xorps 16(%esp),%xmm3
1341 xorps %xmm7,%xmm4
1342 movups %xmm2,(%edi)
1343 xorps %xmm6,%xmm5
1344 movups %xmm3,16(%edi)
1345 movups %xmm4,32(%edi)
1346 movups %xmm5,48(%edi)
1347 leal 64(%edi),%edi
1348 movdqa %xmm6,%xmm1
1349 jmp .L054xts_enc_done
1350 .align 16
1351 .L049xts_enc_done6x:
1352 movl 112(%esp),%eax
1353 andl $15,%eax
1354 jz .L056xts_enc_ret
1355 movdqa %xmm1,%xmm5
1356 movl %eax,112(%esp)
1357 jmp .L057xts_enc_steal
1358 .align 16
1359 .L054xts_enc_done:
1360 movl 112(%esp),%eax
1361 pxor %xmm0,%xmm0
1362 andl $15,%eax
1363 jz .L056xts_enc_ret
1364 pcmpgtd %xmm1,%xmm0
1365 movl %eax,112(%esp)
1366 pshufd $19,%xmm0,%xmm5
1367 paddq %xmm1,%xmm1
1368 pand 96(%esp),%xmm5
1369 pxor %xmm1,%xmm5
1370 .L057xts_enc_steal:
1371 movzbl (%esi),%ecx
1372 movzbl -16(%edi),%edx
1373 leal 1(%esi),%esi
1374 movb %cl,-16(%edi)
1375 movb %dl,(%edi)
1376 leal 1(%edi),%edi
1377 subl $1,%eax
1378 jnz .L057xts_enc_steal
1379 subl 112(%esp),%edi
1380 movl %ebp,%edx
1381 movl %ebx,%ecx
1382 movups -16(%edi),%xmm2
1383 xorps %xmm5,%xmm2
1384 movups (%edx),%xmm0
1385 movups 16(%edx),%xmm1
1386 leal 32(%edx),%edx
1387 xorps %xmm0,%xmm2
1388 .L058enc1_loop_10:
1389 .byte 102,15,56,220,209
1390 decl %ecx
1391 movups (%edx),%xmm1
1392 leal 16(%edx),%edx
1393 jnz .L058enc1_loop_10
1394 .byte 102,15,56,221,209
1395 xorps %xmm5,%xmm2
1396 movups %xmm2,-16(%edi)
1397 .L056xts_enc_ret:
1398 pxor %xmm0,%xmm0
1399 pxor %xmm1,%xmm1
1400 pxor %xmm2,%xmm2
1401 movdqa %xmm0,(%esp)
1402 pxor %xmm3,%xmm3
1403 movdqa %xmm0,16(%esp)
1404 pxor %xmm4,%xmm4
1405 movdqa %xmm0,32(%esp)
1406 pxor %xmm5,%xmm5
1407 movdqa %xmm0,48(%esp)
1408 pxor %xmm6,%xmm6
1409 movdqa %xmm0,64(%esp)
1410 pxor %xmm7,%xmm7
1411 movdqa %xmm0,80(%esp)
1412 movl 116(%esp),%esp
1413 popl %edi
1414 popl %esi
1415 popl %ebx
1416 popl %ebp
1417 ret
1418 .size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1419 .globl aesni_xts_decrypt
1420 .hidden aesni_xts_decrypt
1421 .type aesni_xts_decrypt,@function
1422 .align 16
1423 aesni_xts_decrypt:
1424 .L_aesni_xts_decrypt_begin:
1425 pushl %ebp
1426 pushl %ebx
1427 pushl %esi
1428 pushl %edi
1429 movl 36(%esp),%edx
1430 movl 40(%esp),%esi
1431 movl 240(%edx),%ecx
1432 movups (%esi),%xmm2
1433 movups (%edx),%xmm0
1434 movups 16(%edx),%xmm1
1435 leal 32(%edx),%edx
1436 xorps %xmm0,%xmm2
1437 .L059enc1_loop_11:
1438 .byte 102,15,56,220,209
1439 decl %ecx
1440 movups (%edx),%xmm1
1441 leal 16(%edx),%edx
1442 jnz .L059enc1_loop_11
1443 .byte 102,15,56,221,209
1444 movl 20(%esp),%esi
1445 movl 24(%esp),%edi
1446 movl 28(%esp),%eax
1447 movl 32(%esp),%edx
1448 movl %esp,%ebp
1449 subl $120,%esp
1450 andl $-16,%esp
1451 xorl %ebx,%ebx
1452 testl $15,%eax
1453 setnz %bl
1454 shll $4,%ebx
1455 subl %ebx,%eax
1456 movl $135,96(%esp)
1457 movl $0,100(%esp)
1458 movl $1,104(%esp)
1459 movl $0,108(%esp)
1460 movl %eax,112(%esp)
1461 movl %ebp,116(%esp)
1462 movl 240(%edx),%ecx
1463 movl %edx,%ebp
1464 movl %ecx,%ebx
1465 movdqa %xmm2,%xmm1
1466 pxor %xmm0,%xmm0
1467 movdqa 96(%esp),%xmm3
1468 pcmpgtd %xmm1,%xmm0
1469 andl $-16,%eax
1470 subl $96,%eax
1471 jc .L060xts_dec_short
1472 shll $4,%ecx
1473 movl $16,%ebx
1474 subl %ecx,%ebx
1475 leal 32(%edx,%ecx,1),%edx
1476 jmp .L061xts_dec_loop6
1477 .align 16
1478 .L061xts_dec_loop6:
1479 pshufd $19,%xmm0,%xmm2
1480 pxor %xmm0,%xmm0
1481 movdqa %xmm1,(%esp)
1482 paddq %xmm1,%xmm1
1483 pand %xmm3,%xmm2
1484 pcmpgtd %xmm1,%xmm0
1485 pxor %xmm2,%xmm1
1486 pshufd $19,%xmm0,%xmm2
1487 pxor %xmm0,%xmm0
1488 movdqa %xmm1,16(%esp)
1489 paddq %xmm1,%xmm1
1490 pand %xmm3,%xmm2
1491 pcmpgtd %xmm1,%xmm0
1492 pxor %xmm2,%xmm1
1493 pshufd $19,%xmm0,%xmm2
1494 pxor %xmm0,%xmm0
1495 movdqa %xmm1,32(%esp)
1496 paddq %xmm1,%xmm1
1497 pand %xmm3,%xmm2
1498 pcmpgtd %xmm1,%xmm0
1499 pxor %xmm2,%xmm1
1500 pshufd $19,%xmm0,%xmm2
1501 pxor %xmm0,%xmm0
1502 movdqa %xmm1,48(%esp)
1503 paddq %xmm1,%xmm1
1504 pand %xmm3,%xmm2
1505 pcmpgtd %xmm1,%xmm0
1506 pxor %xmm2,%xmm1
1507 pshufd $19,%xmm0,%xmm7
1508 movdqa %xmm1,64(%esp)
1509 paddq %xmm1,%xmm1
1510 movups (%ebp),%xmm0
1511 pand %xmm3,%xmm7
1512 movups (%esi),%xmm2
1513 pxor %xmm1,%xmm7
1514 movl %ebx,%ecx
1515 movdqu 16(%esi),%xmm3
1516 xorps %xmm0,%xmm2
1517 movdqu 32(%esi),%xmm4
1518 pxor %xmm0,%xmm3
1519 movdqu 48(%esi),%xmm5
1520 pxor %xmm0,%xmm4
1521 movdqu 64(%esi),%xmm6
1522 pxor %xmm0,%xmm5
1523 movdqu 80(%esi),%xmm1
1524 pxor %xmm0,%xmm6
1525 leal 96(%esi),%esi
1526 pxor (%esp),%xmm2
1527 movdqa %xmm7,80(%esp)
1528 pxor %xmm1,%xmm7
1529 movups 16(%ebp),%xmm1
1530 pxor 16(%esp),%xmm3
1531 pxor 32(%esp),%xmm4
1532 .byte 102,15,56,222,209
1533 pxor 48(%esp),%xmm5
1534 pxor 64(%esp),%xmm6
1535 .byte 102,15,56,222,217
1536 pxor %xmm0,%xmm7
1537 movups 32(%ebp),%xmm0
1538 .byte 102,15,56,222,225
1539 .byte 102,15,56,222,233
1540 .byte 102,15,56,222,241
1541 .byte 102,15,56,222,249
1542 call .L_aesni_decrypt6_enter
1543 movdqa 80(%esp),%xmm1
1544 pxor %xmm0,%xmm0
1545 xorps (%esp),%xmm2
1546 pcmpgtd %xmm1,%xmm0
1547 xorps 16(%esp),%xmm3
1548 movups %xmm2,(%edi)
1549 xorps 32(%esp),%xmm4
1550 movups %xmm3,16(%edi)
1551 xorps 48(%esp),%xmm5
1552 movups %xmm4,32(%edi)
1553 xorps 64(%esp),%xmm6
1554 movups %xmm5,48(%edi)
1555 xorps %xmm1,%xmm7
1556 movups %xmm6,64(%edi)
1557 pshufd $19,%xmm0,%xmm2
1558 movups %xmm7,80(%edi)
1559 leal 96(%edi),%edi
1560 movdqa 96(%esp),%xmm3
1561 pxor %xmm0,%xmm0
1562 paddq %xmm1,%xmm1
1563 pand %xmm3,%xmm2
1564 pcmpgtd %xmm1,%xmm0
1565 pxor %xmm2,%xmm1
1566 subl $96,%eax
1567 jnc .L061xts_dec_loop6
1568 movl 240(%ebp),%ecx
1569 movl %ebp,%edx
1570 movl %ecx,%ebx
1571 .L060xts_dec_short:
1572 addl $96,%eax
1573 jz .L062xts_dec_done6x
1574 movdqa %xmm1,%xmm5
1575 cmpl $32,%eax
1576 jb .L063xts_dec_one
1577 pshufd $19,%xmm0,%xmm2
1578 pxor %xmm0,%xmm0
1579 paddq %xmm1,%xmm1
1580 pand %xmm3,%xmm2
1581 pcmpgtd %xmm1,%xmm0
1582 pxor %xmm2,%xmm1
1583 je .L064xts_dec_two
1584 pshufd $19,%xmm0,%xmm2
1585 pxor %xmm0,%xmm0
1586 movdqa %xmm1,%xmm6
1587 paddq %xmm1,%xmm1
1588 pand %xmm3,%xmm2
1589 pcmpgtd %xmm1,%xmm0
1590 pxor %xmm2,%xmm1
1591 cmpl $64,%eax
1592 jb .L065xts_dec_three
1593 pshufd $19,%xmm0,%xmm2
1594 pxor %xmm0,%xmm0
1595 movdqa %xmm1,%xmm7
1596 paddq %xmm1,%xmm1
1597 pand %xmm3,%xmm2
1598 pcmpgtd %xmm1,%xmm0
1599 pxor %xmm2,%xmm1
1600 movdqa %xmm5,(%esp)
1601 movdqa %xmm6,16(%esp)
1602 je .L066xts_dec_four
1603 movdqa %xmm7,32(%esp)
1604 pshufd $19,%xmm0,%xmm7
1605 movdqa %xmm1,48(%esp)
1606 paddq %xmm1,%xmm1
1607 pand %xmm3,%xmm7
1608 pxor %xmm1,%xmm7
1609 movdqu (%esi),%xmm2
1610 movdqu 16(%esi),%xmm3
1611 movdqu 32(%esi),%xmm4
1612 pxor (%esp),%xmm2
1613 movdqu 48(%esi),%xmm5
1614 pxor 16(%esp),%xmm3
1615 movdqu 64(%esi),%xmm6
1616 pxor 32(%esp),%xmm4
1617 leal 80(%esi),%esi
1618 pxor 48(%esp),%xmm5
1619 movdqa %xmm7,64(%esp)
1620 pxor %xmm7,%xmm6
1621 call _aesni_decrypt6
1622 movaps 64(%esp),%xmm1
1623 xorps (%esp),%xmm2
1624 xorps 16(%esp),%xmm3
1625 xorps 32(%esp),%xmm4
1626 movups %xmm2,(%edi)
1627 xorps 48(%esp),%xmm5
1628 movups %xmm3,16(%edi)
1629 xorps %xmm1,%xmm6
1630 movups %xmm4,32(%edi)
1631 movups %xmm5,48(%edi)
1632 movups %xmm6,64(%edi)
1633 leal 80(%edi),%edi
1634 jmp .L067xts_dec_done
1635 .align 16
1636 .L063xts_dec_one:
1637 movups (%esi),%xmm2
1638 leal 16(%esi),%esi
1639 xorps %xmm5,%xmm2
1640 movups (%edx),%xmm0
1641 movups 16(%edx),%xmm1
1642 leal 32(%edx),%edx
1643 xorps %xmm0,%xmm2
1644 .L068dec1_loop_12:
1645 .byte 102,15,56,222,209
1646 decl %ecx
1647 movups (%edx),%xmm1
1648 leal 16(%edx),%edx
1649 jnz .L068dec1_loop_12
1650 .byte 102,15,56,223,209
1651 xorps %xmm5,%xmm2
1652 movups %xmm2,(%edi)
1653 leal 16(%edi),%edi
1654 movdqa %xmm5,%xmm1
1655 jmp .L067xts_dec_done
1656 .align 16
1657 .L064xts_dec_two:
1658 movaps %xmm1,%xmm6
1659 movups (%esi),%xmm2
1660 movups 16(%esi),%xmm3
1661 leal 32(%esi),%esi
1662 xorps %xmm5,%xmm2
1663 xorps %xmm6,%xmm3
1664 call _aesni_decrypt2
1665 xorps %xmm5,%xmm2
1666 xorps %xmm6,%xmm3
1667 movups %xmm2,(%edi)
1668 movups %xmm3,16(%edi)
1669 leal 32(%edi),%edi
1670 movdqa %xmm6,%xmm1
1671 jmp .L067xts_dec_done
1672 .align 16
1673 .L065xts_dec_three:
1674 movaps %xmm1,%xmm7
1675 movups (%esi),%xmm2
1676 movups 16(%esi),%xmm3
1677 movups 32(%esi),%xmm4
1678 leal 48(%esi),%esi
1679 xorps %xmm5,%xmm2
1680 xorps %xmm6,%xmm3
1681 xorps %xmm7,%xmm4
1682 call _aesni_decrypt3
1683 xorps %xmm5,%xmm2
1684 xorps %xmm6,%xmm3
1685 xorps %xmm7,%xmm4
1686 movups %xmm2,(%edi)
1687 movups %xmm3,16(%edi)
1688 movups %xmm4,32(%edi)
1689 leal 48(%edi),%edi
1690 movdqa %xmm7,%xmm1
1691 jmp .L067xts_dec_done
1692 .align 16
1693 .L066xts_dec_four:
1694 movaps %xmm1,%xmm6
1695 movups (%esi),%xmm2
1696 movups 16(%esi),%xmm3
1697 movups 32(%esi),%xmm4
1698 xorps (%esp),%xmm2
1699 movups 48(%esi),%xmm5
1700 leal 64(%esi),%esi
1701 xorps 16(%esp),%xmm3
1702 xorps %xmm7,%xmm4
1703 xorps %xmm6,%xmm5
1704 call _aesni_decrypt4
1705 xorps (%esp),%xmm2
1706 xorps 16(%esp),%xmm3
1707 xorps %xmm7,%xmm4
1708 movups %xmm2,(%edi)
1709 xorps %xmm6,%xmm5
1710 movups %xmm3,16(%edi)
1711 movups %xmm4,32(%edi)
1712 movups %xmm5,48(%edi)
1713 leal 64(%edi),%edi
1714 movdqa %xmm6,%xmm1
1715 jmp .L067xts_dec_done
1716 .align 16
1717 .L062xts_dec_done6x:
1718 movl 112(%esp),%eax
1719 andl $15,%eax
1720 jz .L069xts_dec_ret
1721 movl %eax,112(%esp)
1722 jmp .L070xts_dec_only_one_more
1723 .align 16
1724 .L067xts_dec_done:
1725 movl 112(%esp),%eax
1726 pxor %xmm0,%xmm0
1727 andl $15,%eax
1728 jz .L069xts_dec_ret
1729 pcmpgtd %xmm1,%xmm0
1730 movl %eax,112(%esp)
1731 pshufd $19,%xmm0,%xmm2
1732 pxor %xmm0,%xmm0
1733 movdqa 96(%esp),%xmm3
1734 paddq %xmm1,%xmm1
1735 pand %xmm3,%xmm2
1736 pcmpgtd %xmm1,%xmm0
1737 pxor %xmm2,%xmm1
1738 .L070xts_dec_only_one_more:
1739 pshufd $19,%xmm0,%xmm5
1740 movdqa %xmm1,%xmm6
1741 paddq %xmm1,%xmm1
1742 pand %xmm3,%xmm5
1743 pxor %xmm1,%xmm5
1744 movl %ebp,%edx
1745 movl %ebx,%ecx
1746 movups (%esi),%xmm2
1747 xorps %xmm5,%xmm2
1748 movups (%edx),%xmm0
1749 movups 16(%edx),%xmm1
1750 leal 32(%edx),%edx
1751 xorps %xmm0,%xmm2
1752 .L071dec1_loop_13:
1753 .byte 102,15,56,222,209
1754 decl %ecx
1755 movups (%edx),%xmm1
1756 leal 16(%edx),%edx
1757 jnz .L071dec1_loop_13
1758 .byte 102,15,56,223,209
1759 xorps %xmm5,%xmm2
1760 movups %xmm2,(%edi)
1761 .L072xts_dec_steal:
1762 movzbl 16(%esi),%ecx
1763 movzbl (%edi),%edx
1764 leal 1(%esi),%esi
1765 movb %cl,(%edi)
1766 movb %dl,16(%edi)
1767 leal 1(%edi),%edi
1768 subl $1,%eax
1769 jnz .L072xts_dec_steal
1770 subl 112(%esp),%edi
1771 movl %ebp,%edx
1772 movl %ebx,%ecx
1773 movups (%edi),%xmm2
1774 xorps %xmm6,%xmm2
1775 movups (%edx),%xmm0
1776 movups 16(%edx),%xmm1
1777 leal 32(%edx),%edx
1778 xorps %xmm0,%xmm2
1779 .L073dec1_loop_14:
1780 .byte 102,15,56,222,209
1781 decl %ecx
1782 movups (%edx),%xmm1
1783 leal 16(%edx),%edx
1784 jnz .L073dec1_loop_14
1785 .byte 102,15,56,223,209
1786 xorps %xmm6,%xmm2
1787 movups %xmm2,(%edi)
1788 .L069xts_dec_ret:
1789 pxor %xmm0,%xmm0
1790 pxor %xmm1,%xmm1
1791 pxor %xmm2,%xmm2
1792 movdqa %xmm0,(%esp)
1793 pxor %xmm3,%xmm3
1794 movdqa %xmm0,16(%esp)
1795 pxor %xmm4,%xmm4
1796 movdqa %xmm0,32(%esp)
1797 pxor %xmm5,%xmm5
1798 movdqa %xmm0,48(%esp)
1799 pxor %xmm6,%xmm6
1800 movdqa %xmm0,64(%esp)
1801 pxor %xmm7,%xmm7
1802 movdqa %xmm0,80(%esp)
1803 movl 116(%esp),%esp
1804 popl %edi
1805 popl %esi
1806 popl %ebx
1807 popl %ebp
1808 ret
1809 .size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1810 .globl aesni_cbc_encrypt
1811 .hidden aesni_cbc_encrypt
1812 .type aesni_cbc_encrypt,@function
1813 .align 16
1814 aesni_cbc_encrypt:
1815 .L_aesni_cbc_encrypt_begin:
1816 pushl %ebp
1817 pushl %ebx
1818 pushl %esi
1819 pushl %edi
1820 movl 20(%esp),%esi
1821 movl %esp,%ebx
1822 movl 24(%esp),%edi
1823 subl $24,%ebx
1824 movl 28(%esp),%eax
1825 andl $-16,%ebx
1826 movl 32(%esp),%edx
1827 movl 36(%esp),%ebp
1828 testl %eax,%eax
1829 jz .L074cbc_abort
1830 cmpl $0,40(%esp)
1831 xchgl %esp,%ebx
1832 movups (%ebp),%xmm7
1833 movl 240(%edx),%ecx
1834 movl %edx,%ebp
1835 movl %ebx,16(%esp)
1836 movl %ecx,%ebx
1837 je .L075cbc_decrypt
1838 movaps %xmm7,%xmm2
1839 cmpl $16,%eax
1840 jb .L076cbc_enc_tail
1841 subl $16,%eax
1842 jmp .L077cbc_enc_loop
1843 .align 16
1844 .L077cbc_enc_loop:
1845 movups (%esi),%xmm7
1846 leal 16(%esi),%esi
1847 movups (%edx),%xmm0
1848 movups 16(%edx),%xmm1
1849 xorps %xmm0,%xmm7
1850 leal 32(%edx),%edx
1851 xorps %xmm7,%xmm2
1852 .L078enc1_loop_15:
1853 .byte 102,15,56,220,209
1854 decl %ecx
1855 movups (%edx),%xmm1
1856 leal 16(%edx),%edx
1857 jnz .L078enc1_loop_15
1858 .byte 102,15,56,221,209
1859 movl %ebx,%ecx
1860 movl %ebp,%edx
1861 movups %xmm2,(%edi)
1862 leal 16(%edi),%edi
1863 subl $16,%eax
1864 jnc .L077cbc_enc_loop
1865 addl $16,%eax
1866 jnz .L076cbc_enc_tail
1867 movaps %xmm2,%xmm7
1868 pxor %xmm2,%xmm2
1869 jmp .L079cbc_ret
1870 .L076cbc_enc_tail:
1871 movl %eax,%ecx
1872 .long 2767451785
1873 movl $16,%ecx
1874 subl %eax,%ecx
1875 xorl %eax,%eax
1876 .long 2868115081
1877 leal -16(%edi),%edi
1878 movl %ebx,%ecx
1879 movl %edi,%esi
1880 movl %ebp,%edx
1881 jmp .L077cbc_enc_loop
1882 .align 16
1883 .L075cbc_decrypt:
1884 cmpl $80,%eax
1885 jbe .L080cbc_dec_tail
1886 movaps %xmm7,(%esp)
1887 subl $80,%eax
1888 jmp .L081cbc_dec_loop6_enter
1889 .align 16
1890 .L082cbc_dec_loop6:
1891 movaps %xmm0,(%esp)
1892 movups %xmm7,(%edi)
1893 leal 16(%edi),%edi
1894 .L081cbc_dec_loop6_enter:
1895 movdqu (%esi),%xmm2
1896 movdqu 16(%esi),%xmm3
1897 movdqu 32(%esi),%xmm4
1898 movdqu 48(%esi),%xmm5
1899 movdqu 64(%esi),%xmm6
1900 movdqu 80(%esi),%xmm7
1901 call _aesni_decrypt6
1902 movups (%esi),%xmm1
1903 movups 16(%esi),%xmm0
1904 xorps (%esp),%xmm2
1905 xorps %xmm1,%xmm3
1906 movups 32(%esi),%xmm1
1907 xorps %xmm0,%xmm4
1908 movups 48(%esi),%xmm0
1909 xorps %xmm1,%xmm5
1910 movups 64(%esi),%xmm1
1911 xorps %xmm0,%xmm6
1912 movups 80(%esi),%xmm0
1913 xorps %xmm1,%xmm7
1914 movups %xmm2,(%edi)
1915 movups %xmm3,16(%edi)
1916 leal 96(%esi),%esi
1917 movups %xmm4,32(%edi)
1918 movl %ebx,%ecx
1919 movups %xmm5,48(%edi)
1920 movl %ebp,%edx
1921 movups %xmm6,64(%edi)
1922 leal 80(%edi),%edi
1923 subl $96,%eax
1924 ja .L082cbc_dec_loop6
1925 movaps %xmm7,%xmm2
1926 movaps %xmm0,%xmm7
1927 addl $80,%eax
1928 jle .L083cbc_dec_clear_tail_collected
1929 movups %xmm2,(%edi)
1930 leal 16(%edi),%edi
1931 .L080cbc_dec_tail:
1932 movups (%esi),%xmm2
1933 movaps %xmm2,%xmm6
1934 cmpl $16,%eax
1935 jbe .L084cbc_dec_one
1936 movups 16(%esi),%xmm3
1937 movaps %xmm3,%xmm5
1938 cmpl $32,%eax
1939 jbe .L085cbc_dec_two
1940 movups 32(%esi),%xmm4
1941 cmpl $48,%eax
1942 jbe .L086cbc_dec_three
1943 movups 48(%esi),%xmm5
1944 cmpl $64,%eax
1945 jbe .L087cbc_dec_four
1946 movups 64(%esi),%xmm6
1947 movaps %xmm7,(%esp)
1948 movups (%esi),%xmm2
1949 xorps %xmm7,%xmm7
1950 call _aesni_decrypt6
1951 movups (%esi),%xmm1
1952 movups 16(%esi),%xmm0
1953 xorps (%esp),%xmm2
1954 xorps %xmm1,%xmm3
1955 movups 32(%esi),%xmm1
1956 xorps %xmm0,%xmm4
1957 movups 48(%esi),%xmm0
1958 xorps %xmm1,%xmm5
1959 movups 64(%esi),%xmm7
1960 xorps %xmm0,%xmm6
1961 movups %xmm2,(%edi)
1962 movups %xmm3,16(%edi)
1963 pxor %xmm3,%xmm3
1964 movups %xmm4,32(%edi)
1965 pxor %xmm4,%xmm4
1966 movups %xmm5,48(%edi)
1967 pxor %xmm5,%xmm5
1968 leal 64(%edi),%edi
1969 movaps %xmm6,%xmm2
1970 pxor %xmm6,%xmm6
1971 subl $80,%eax
1972 jmp .L088cbc_dec_tail_collected
1973 .align 16
1974 .L084cbc_dec_one:
1975 movups (%edx),%xmm0
1976 movups 16(%edx),%xmm1
1977 leal 32(%edx),%edx
1978 xorps %xmm0,%xmm2
1979 .L089dec1_loop_16:
1980 .byte 102,15,56,222,209
1981 decl %ecx
1982 movups (%edx),%xmm1
1983 leal 16(%edx),%edx
1984 jnz .L089dec1_loop_16
1985 .byte 102,15,56,223,209
1986 xorps %xmm7,%xmm2
1987 movaps %xmm6,%xmm7
1988 subl $16,%eax
1989 jmp .L088cbc_dec_tail_collected
1990 .align 16
1991 .L085cbc_dec_two:
1992 call _aesni_decrypt2
1993 xorps %xmm7,%xmm2
1994 xorps %xmm6,%xmm3
1995 movups %xmm2,(%edi)
1996 movaps %xmm3,%xmm2
1997 pxor %xmm3,%xmm3
1998 leal 16(%edi),%edi
1999 movaps %xmm5,%xmm7
2000 subl $32,%eax
2001 jmp .L088cbc_dec_tail_collected
2002 .align 16
2003 .L086cbc_dec_three:
2004 call _aesni_decrypt3
2005 xorps %xmm7,%xmm2
2006 xorps %xmm6,%xmm3
2007 xorps %xmm5,%xmm4
2008 movups %xmm2,(%edi)
2009 movaps %xmm4,%xmm2
2010 pxor %xmm4,%xmm4
2011 movups %xmm3,16(%edi)
2012 pxor %xmm3,%xmm3
2013 leal 32(%edi),%edi
2014 movups 32(%esi),%xmm7
2015 subl $48,%eax
2016 jmp .L088cbc_dec_tail_collected
2017 .align 16
2018 .L087cbc_dec_four:
2019 call _aesni_decrypt4
2020 movups 16(%esi),%xmm1
2021 movups 32(%esi),%xmm0
2022 xorps %xmm7,%xmm2
2023 movups 48(%esi),%xmm7
2024 xorps %xmm6,%xmm3
2025 movups %xmm2,(%edi)
2026 xorps %xmm1,%xmm4
2027 movups %xmm3,16(%edi)
2028 pxor %xmm3,%xmm3
2029 xorps %xmm0,%xmm5
2030 movups %xmm4,32(%edi)
2031 pxor %xmm4,%xmm4
2032 leal 48(%edi),%edi
2033 movaps %xmm5,%xmm2
2034 pxor %xmm5,%xmm5
2035 subl $64,%eax
2036 jmp .L088cbc_dec_tail_collected
2037 .align 16
2038 .L083cbc_dec_clear_tail_collected:
2039 pxor %xmm3,%xmm3
2040 pxor %xmm4,%xmm4
2041 pxor %xmm5,%xmm5
2042 pxor %xmm6,%xmm6
2043 .L088cbc_dec_tail_collected:
2044 andl $15,%eax
2045 jnz .L090cbc_dec_tail_partial
2046 movups %xmm2,(%edi)
2047 pxor %xmm0,%xmm0
2048 jmp .L079cbc_ret
2049 .align 16
2050 .L090cbc_dec_tail_partial:
2051 movaps %xmm2,(%esp)
2052 pxor %xmm0,%xmm0
2053 movl $16,%ecx
2054 movl %esp,%esi
2055 subl %eax,%ecx
2056 .long 2767451785
2057 movdqa %xmm2,(%esp)
2058 .L079cbc_ret:
2059 movl 16(%esp),%esp
2060 movl 36(%esp),%ebp
2061 pxor %xmm2,%xmm2
2062 pxor %xmm1,%xmm1
2063 movups %xmm7,(%ebp)
2064 pxor %xmm7,%xmm7
2065 .L074cbc_abort:
2066 popl %edi
2067 popl %esi
2068 popl %ebx
2069 popl %ebp
2070 ret
2071 .size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
2072 .hidden _aesni_set_encrypt_key
2073 .type _aesni_set_encrypt_key,@function
2074 .align 16
2075 _aesni_set_encrypt_key:
2076 pushl %ebp
2077 pushl %ebx
2078 testl %eax,%eax
2079 jz .L091bad_pointer
2080 testl %edx,%edx
2081 jz .L091bad_pointer
2082 call .L092pic
2083 .L092pic:
2084 popl %ebx
2085 leal .Lkey_const-.L092pic(%ebx),%ebx
2086 leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
2087 movups (%eax),%xmm0
2088 xorps %xmm4,%xmm4
2089 movl 4(%ebp),%ebp
2090 leal 16(%edx),%edx
2091 andl $268437504,%ebp
2092 cmpl $256,%ecx
2093 je .L09314rounds
2094 cmpl $192,%ecx
2095 je .L09412rounds
2096 cmpl $128,%ecx
2097 jne .L095bad_keybits
2098 .align 16
2099 .L09610rounds:
2100 cmpl $268435456,%ebp
2101 je .L09710rounds_alt
2102 movl $9,%ecx
2103 movups %xmm0,-16(%edx)
2104 .byte 102,15,58,223,200,1
2105 call .L098key_128_cold
2106 .byte 102,15,58,223,200,2
2107 call .L099key_128
2108 .byte 102,15,58,223,200,4
2109 call .L099key_128
2110 .byte 102,15,58,223,200,8
2111 call .L099key_128
2112 .byte 102,15,58,223,200,16
2113 call .L099key_128
2114 .byte 102,15,58,223,200,32
2115 call .L099key_128
2116 .byte 102,15,58,223,200,64
2117 call .L099key_128
2118 .byte 102,15,58,223,200,128
2119 call .L099key_128
2120 .byte 102,15,58,223,200,27
2121 call .L099key_128
2122 .byte 102,15,58,223,200,54
2123 call .L099key_128
2124 movups %xmm0,(%edx)
2125 movl %ecx,80(%edx)
2126 jmp .L100good_key
2127 .align 16
2128 .L099key_128:
2129 movups %xmm0,(%edx)
2130 leal 16(%edx),%edx
2131 .L098key_128_cold:
2132 shufps $16,%xmm0,%xmm4
2133 xorps %xmm4,%xmm0
2134 shufps $140,%xmm0,%xmm4
2135 xorps %xmm4,%xmm0
2136 shufps $255,%xmm1,%xmm1
2137 xorps %xmm1,%xmm0
2138 ret
2139 .align 16
2140 .L09710rounds_alt:
2141 movdqa (%ebx),%xmm5
2142 movl $8,%ecx
2143 movdqa 32(%ebx),%xmm4
2144 movdqa %xmm0,%xmm2
2145 movdqu %xmm0,-16(%edx)
2146 .L101loop_key128:
2147 .byte 102,15,56,0,197
2148 .byte 102,15,56,221,196
2149 pslld $1,%xmm4
2150 leal 16(%edx),%edx
2151 movdqa %xmm2,%xmm3
2152 pslldq $4,%xmm2
2153 pxor %xmm2,%xmm3
2154 pslldq $4,%xmm2
2155 pxor %xmm2,%xmm3
2156 pslldq $4,%xmm2
2157 pxor %xmm3,%xmm2
2158 pxor %xmm2,%xmm0
2159 movdqu %xmm0,-16(%edx)
2160 movdqa %xmm0,%xmm2
2161 decl %ecx
2162 jnz .L101loop_key128
2163 movdqa 48(%ebx),%xmm4
2164 .byte 102,15,56,0,197
2165 .byte 102,15,56,221,196
2166 pslld $1,%xmm4
2167 movdqa %xmm2,%xmm3
2168 pslldq $4,%xmm2
2169 pxor %xmm2,%xmm3
2170 pslldq $4,%xmm2
2171 pxor %xmm2,%xmm3
2172 pslldq $4,%xmm2
2173 pxor %xmm3,%xmm2
2174 pxor %xmm2,%xmm0
2175 movdqu %xmm0,(%edx)
2176 movdqa %xmm0,%xmm2
2177 .byte 102,15,56,0,197
2178 .byte 102,15,56,221,196
2179 movdqa %xmm2,%xmm3
2180 pslldq $4,%xmm2
2181 pxor %xmm2,%xmm3
2182 pslldq $4,%xmm2
2183 pxor %xmm2,%xmm3
2184 pslldq $4,%xmm2
2185 pxor %xmm3,%xmm2
2186 pxor %xmm2,%xmm0
2187 movdqu %xmm0,16(%edx)
2188 movl $9,%ecx
2189 movl %ecx,96(%edx)
2190 jmp .L100good_key
2191 .align 16
2192 .L09412rounds:
2193 movq 16(%eax),%xmm2
2194 cmpl $268435456,%ebp
2195 je .L10212rounds_alt
2196 movl $11,%ecx
2197 movups %xmm0,-16(%edx)
2198 .byte 102,15,58,223,202,1
2199 call .L103key_192a_cold
2200 .byte 102,15,58,223,202,2
2201 call .L104key_192b
2202 .byte 102,15,58,223,202,4
2203 call .L105key_192a
2204 .byte 102,15,58,223,202,8
2205 call .L104key_192b
2206 .byte 102,15,58,223,202,16
2207 call .L105key_192a
2208 .byte 102,15,58,223,202,32
2209 call .L104key_192b
2210 .byte 102,15,58,223,202,64
2211 call .L105key_192a
2212 .byte 102,15,58,223,202,128
2213 call .L104key_192b
2214 movups %xmm0,(%edx)
2215 movl %ecx,48(%edx)
2216 jmp .L100good_key
2217 .align 16
2218 .L105key_192a:
2219 movups %xmm0,(%edx)
2220 leal 16(%edx),%edx
2221 .align 16
2222 .L103key_192a_cold:
2223 movaps %xmm2,%xmm5
2224 .L106key_192b_warm:
2225 shufps $16,%xmm0,%xmm4
2226 movdqa %xmm2,%xmm3
2227 xorps %xmm4,%xmm0
2228 shufps $140,%xmm0,%xmm4
2229 pslldq $4,%xmm3
2230 xorps %xmm4,%xmm0
2231 pshufd $85,%xmm1,%xmm1
2232 pxor %xmm3,%xmm2
2233 pxor %xmm1,%xmm0
2234 pshufd $255,%xmm0,%xmm3
2235 pxor %xmm3,%xmm2
2236 ret
2237 .align 16
2238 .L104key_192b:
2239 movaps %xmm0,%xmm3
2240 shufps $68,%xmm0,%xmm5
2241 movups %xmm5,(%edx)
2242 shufps $78,%xmm2,%xmm3
2243 movups %xmm3,16(%edx)
2244 leal 32(%edx),%edx
2245 jmp .L106key_192b_warm
2246 .align 16
2247 .L10212rounds_alt:
2248 movdqa 16(%ebx),%xmm5
2249 movdqa 32(%ebx),%xmm4
2250 movl $8,%ecx
2251 movdqu %xmm0,-16(%edx)
2252 .L107loop_key192:
2253 movq %xmm2,(%edx)
2254 movdqa %xmm2,%xmm1
2255 .byte 102,15,56,0,213
2256 .byte 102,15,56,221,212
2257 pslld $1,%xmm4
2258 leal 24(%edx),%edx
2259 movdqa %xmm0,%xmm3
2260 pslldq $4,%xmm0
2261 pxor %xmm0,%xmm3
2262 pslldq $4,%xmm0
2263 pxor %xmm0,%xmm3
2264 pslldq $4,%xmm0
2265 pxor %xmm3,%xmm0
2266 pshufd $255,%xmm0,%xmm3
2267 pxor %xmm1,%xmm3
2268 pslldq $4,%xmm1
2269 pxor %xmm1,%xmm3
2270 pxor %xmm2,%xmm0
2271 pxor %xmm3,%xmm2
2272 movdqu %xmm0,-16(%edx)
2273 decl %ecx
2274 jnz .L107loop_key192
2275 movl $11,%ecx
2276 movl %ecx,32(%edx)
2277 jmp .L100good_key
2278 .align 16
2279 .L09314rounds:
2280 movups 16(%eax),%xmm2
2281 leal 16(%edx),%edx
2282 cmpl $268435456,%ebp
2283 je .L10814rounds_alt
2284 movl $13,%ecx
2285 movups %xmm0,-32(%edx)
2286 movups %xmm2,-16(%edx)
2287 .byte 102,15,58,223,202,1
2288 call .L109key_256a_cold
2289 .byte 102,15,58,223,200,1
2290 call .L110key_256b
2291 .byte 102,15,58,223,202,2
2292 call .L111key_256a
2293 .byte 102,15,58,223,200,2
2294 call .L110key_256b
2295 .byte 102,15,58,223,202,4
2296 call .L111key_256a
2297 .byte 102,15,58,223,200,4
2298 call .L110key_256b
2299 .byte 102,15,58,223,202,8
2300 call .L111key_256a
2301 .byte 102,15,58,223,200,8
2302 call .L110key_256b
2303 .byte 102,15,58,223,202,16
2304 call .L111key_256a
2305 .byte 102,15,58,223,200,16
2306 call .L110key_256b
2307 .byte 102,15,58,223,202,32
2308 call .L111key_256a
2309 .byte 102,15,58,223,200,32
2310 call .L110key_256b
2311 .byte 102,15,58,223,202,64
2312 call .L111key_256a
2313 movups %xmm0,(%edx)
2314 movl %ecx,16(%edx)
2315 xorl %eax,%eax
2316 jmp .L100good_key
2317 .align 16
2318 .L111key_256a:
2319 movups %xmm2,(%edx)
2320 leal 16(%edx),%edx
2321 .L109key_256a_cold:
2322 shufps $16,%xmm0,%xmm4
2323 xorps %xmm4,%xmm0
2324 shufps $140,%xmm0,%xmm4
2325 xorps %xmm4,%xmm0
2326 shufps $255,%xmm1,%xmm1
2327 xorps %xmm1,%xmm0
2328 ret
2329 .align 16
2330 .L110key_256b:
2331 movups %xmm0,(%edx)
2332 leal 16(%edx),%edx
2333 shufps $16,%xmm2,%xmm4
2334 xorps %xmm4,%xmm2
2335 shufps $140,%xmm2,%xmm4
2336 xorps %xmm4,%xmm2
2337 shufps $170,%xmm1,%xmm1
2338 xorps %xmm1,%xmm2
2339 ret
2340 .align 16
2341 .L10814rounds_alt:
2342 movdqa (%ebx),%xmm5
2343 movdqa 32(%ebx),%xmm4
2344 movl $7,%ecx
2345 movdqu %xmm0,-32(%edx)
2346 movdqa %xmm2,%xmm1
2347 movdqu %xmm2,-16(%edx)
2348 .L112loop_key256:
2349 .byte 102,15,56,0,213
2350 .byte 102,15,56,221,212
2351 movdqa %xmm0,%xmm3
2352 pslldq $4,%xmm0
2353 pxor %xmm0,%xmm3
2354 pslldq $4,%xmm0
2355 pxor %xmm0,%xmm3
2356 pslldq $4,%xmm0
2357 pxor %xmm3,%xmm0
2358 pslld $1,%xmm4
2359 pxor %xmm2,%xmm0
2360 movdqu %xmm0,(%edx)
2361 decl %ecx
2362 jz .L113done_key256
2363 pshufd $255,%xmm0,%xmm2
2364 pxor %xmm3,%xmm3
2365 .byte 102,15,56,221,211
2366 movdqa %xmm1,%xmm3
2367 pslldq $4,%xmm1
2368 pxor %xmm1,%xmm3
2369 pslldq $4,%xmm1
2370 pxor %xmm1,%xmm3
2371 pslldq $4,%xmm1
2372 pxor %xmm3,%xmm1
2373 pxor %xmm1,%xmm2
2374 movdqu %xmm2,16(%edx)
2375 leal 32(%edx),%edx
2376 movdqa %xmm2,%xmm1
2377 jmp .L112loop_key256
2378 .L113done_key256:
2379 movl $13,%ecx
2380 movl %ecx,16(%edx)
2381 .L100good_key:
2382 pxor %xmm0,%xmm0
2383 pxor %xmm1,%xmm1
2384 pxor %xmm2,%xmm2
2385 pxor %xmm3,%xmm3
2386 pxor %xmm4,%xmm4
2387 pxor %xmm5,%xmm5
2388 xorl %eax,%eax
2389 popl %ebx
2390 popl %ebp
2391 ret
2392 .align 4
2393 .L091bad_pointer:
2394 movl $-1,%eax
2395 popl %ebx
2396 popl %ebp
2397 ret
2398 .align 4
2399 .L095bad_keybits:
2400 pxor %xmm0,%xmm0
2401 movl $-2,%eax
2402 popl %ebx
2403 popl %ebp
2404 ret
2405 .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
2406 .globl aesni_set_encrypt_key
2407 .hidden aesni_set_encrypt_key
2408 .type aesni_set_encrypt_key,@function
2409 .align 16
2410 aesni_set_encrypt_key:
2411 .L_aesni_set_encrypt_key_begin:
2412 movl 4(%esp),%eax
2413 movl 8(%esp),%ecx
2414 movl 12(%esp),%edx
2415 call _aesni_set_encrypt_key
2416 ret
2417 .size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
2418 .globl aesni_set_decrypt_key
2419 .hidden aesni_set_decrypt_key
2420 .type aesni_set_decrypt_key,@function
2421 .align 16
2422 aesni_set_decrypt_key:
2423 .L_aesni_set_decrypt_key_begin:
2424 movl 4(%esp),%eax
2425 movl 8(%esp),%ecx
2426 movl 12(%esp),%edx
2427 call _aesni_set_encrypt_key
2428 movl 12(%esp),%edx
2429 shll $4,%ecx
2430 testl %eax,%eax
2431 jnz .L114dec_key_ret
2432 leal 16(%edx,%ecx,1),%eax
2433 movups (%edx),%xmm0
2434 movups (%eax),%xmm1
2435 movups %xmm0,(%eax)
2436 movups %xmm1,(%edx)
2437 leal 16(%edx),%edx
2438 leal -16(%eax),%eax
2439 .L115dec_key_inverse:
2440 movups (%edx),%xmm0
2441 movups (%eax),%xmm1
2442 .byte 102,15,56,219,192
2443 .byte 102,15,56,219,201
2444 leal 16(%edx),%edx
2445 leal -16(%eax),%eax
2446 movups %xmm0,16(%eax)
2447 movups %xmm1,-16(%edx)
2448 cmpl %edx,%eax
2449 ja .L115dec_key_inverse
2450 movups (%edx),%xmm0
2451 .byte 102,15,56,219,192
2452 movups %xmm0,(%edx)
2453 pxor %xmm0,%xmm0
2454 pxor %xmm1,%xmm1
2455 xorl %eax,%eax
2456 .L114dec_key_ret:
2457 ret
2458 .size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
2459 .align 64
2460 .Lkey_const:
2461 .long 202313229,202313229,202313229,202313229
2462 .long 67569157,67569157,67569157,67569157
2463 .long 1,1,1,1
2464 .long 27,27,27,27
2465 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2466 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2467 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2468 .byte 115,108,46,111,114,103,62,0
2469 #endif
OLDNEW
« no previous file with comments | « third_party/boringssl/linux-x86/crypto/aes/aes-586.S ('k') | third_party/boringssl/linux-x86/crypto/aes/vpaes-x86.S » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698