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

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

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