1 #if defined(__x86_64__)
26 movdqa L$k_ipt(%rip),%xmm2
32 movdqa L$k_ipt+16(%rip),%xmm0
37 leaq L$k_mc_backward(%rip),%r10
50 movdqa -64(%r11,%r10,1),%xmm1
52 movdqa (%r11,%r10,1),%xmm4
93 movdqa -96(%r10),%xmm4
94 movdqa -80(%r10),%xmm0
98 movdqa 64(%r11,%r10,1),%xmm1
100 .byte 102,15,56,0,193
115 movdqa L$k_dipt(%rip),%xmm2
122 .byte 102,15,56,0,208
123 movdqa L$k_dipt+16(%rip),%xmm0
125 leaq L$k_dsbd(%rip),%r10
126 .byte 102,15,56,0,193
129 movdqa L$k_mc_forward+48(%rip),%xmm5
140 movdqa -32(%r10),%xmm4
141 movdqa -16(%r10),%xmm1
142 .byte 102,15,56,0,226
143 .byte 102,15,56,0,203
147 movdqa 16(%r10),%xmm1
149 .byte 102,15,56,0,226
150 .byte 102,15,56,0,197
151 .byte 102,15,56,0,203
153 movdqa 32(%r10),%xmm4
155 movdqa 48(%r10),%xmm1
157 .byte 102,15,56,0,226
158 .byte 102,15,56,0,197
159 .byte 102,15,56,0,203
161 movdqa 64(%r10),%xmm4
163 movdqa 80(%r10),%xmm1
165 .byte 102,15,56,0,226
166 .byte 102,15,56,0,197
167 .byte 102,15,56,0,203
170 .byte 102,15,58,15,237,12
181 .byte 102,15,56,0,208
184 .byte 102,15,56,0,217
187 .byte 102,15,56,0,224
190 .byte 102,15,56,0,211
193 .byte 102,15,56,0,220
199 movdqa 96(%r10),%xmm4
200 .byte 102,15,56,0,226
202 movdqa 112(%r10),%xmm0
203 movdqa -352(%r11),%xmm2
204 .byte 102,15,56,0,195
206 .byte 102,15,56,0,194
217 _vpaes_schedule_core:
224 movdqa L$k_rcon(%rip),%xmm8
229 leaq L$k_ipt(%rip),%r11
230 call _vpaes_schedule_transform
233 leaq L$k_sr(%rip),%r10
235 jnz L$schedule_am_decrypting
241 L$schedule_am_decrypting:
243 movdqa (%r8,%r10,1),%xmm1
244 .byte 102,15,56,0,217
266 call _vpaes_schedule_round
268 jz L$schedule_mangle_last
269 call _vpaes_schedule_mangle
270 jmp L$oop_schedule_128
290 call _vpaes_schedule_transform
297 call _vpaes_schedule_round
298 .byte 102,15,58,15,198,8
299 call _vpaes_schedule_mangle
300 call _vpaes_schedule_192_smear
301 call _vpaes_schedule_mangle
302 call _vpaes_schedule_round
304 jz L$schedule_mangle_last
305 call _vpaes_schedule_mangle
306 call _vpaes_schedule_192_smear
307 jmp L$oop_schedule_192
321 movdqu 16(%rdi),%xmm0
322 call _vpaes_schedule_transform
326 call _vpaes_schedule_mangle
330 call _vpaes_schedule_round
332 jz L$schedule_mangle_last
333 call _vpaes_schedule_mangle
336 pshufd $255,%xmm0,%xmm0
339 call _vpaes_schedule_low_round
342 jmp L$oop_schedule_256
356 L$schedule_mangle_last:
358 leaq L$k_deskew(%rip),%r11
360 jnz L$schedule_mangle_last_dec
363 movdqa (%r8,%r10,1),%xmm1
364 .byte 102,15,56,0,193
365 leaq L$k_opt(%rip),%r11
368 L$schedule_mangle_last_dec:
370 pxor L$k_s63(%rip),%xmm0
371 call _vpaes_schedule_transform
402 _vpaes_schedule_192_smear:
403 pshufd $128,%xmm6,%xmm1
404 pshufd $254,%xmm7,%xmm0
433 _vpaes_schedule_round:
436 .byte 102,65,15,58,15,200,15
437 .byte 102,69,15,58,15,192,15
441 pshufd $255,%xmm0,%xmm0
442 .byte 102,15,58,15,192,1
447 _vpaes_schedule_low_round:
455 pxor L$k_s63(%rip),%xmm7
463 .byte 102,15,56,0,208
466 .byte 102,15,56,0,217
469 .byte 102,15,56,0,224
472 .byte 102,15,56,0,211
475 .byte 102,15,56,0,220
478 .byte 102,15,56,0,226
480 .byte 102,15,56,0,195
500 _vpaes_schedule_transform:
506 .byte 102,15,56,0,208
507 movdqa 16(%r11),%xmm0
508 .byte 102,15,56,0,193
538 _vpaes_schedule_mangle:
540 movdqa L$k_mc_forward(%rip),%xmm5
542 jnz L$schedule_mangle_dec
546 pxor L$k_s63(%rip),%xmm4
547 .byte 102,15,56,0,229
549 .byte 102,15,56,0,229
551 .byte 102,15,56,0,229
554 jmp L$schedule_mangle_both
556 L$schedule_mangle_dec:
558 leaq L$k_dksd(%rip),%r11
565 .byte 102,15,56,0,212
566 movdqa 16(%r11),%xmm3
567 .byte 102,15,56,0,217
569 .byte 102,15,56,0,221
571 movdqa 32(%r11),%xmm2
572 .byte 102,15,56,0,212
574 movdqa 48(%r11),%xmm3
575 .byte 102,15,56,0,217
577 .byte 102,15,56,0,221
579 movdqa 64(%r11),%xmm2
580 .byte 102,15,56,0,212
582 movdqa 80(%r11),%xmm3
583 .byte 102,15,56,0,217
585 .byte 102,15,56,0,221
587 movdqa 96(%r11),%xmm2
588 .byte 102,15,56,0,212
590 movdqa 112(%r11),%xmm3
591 .byte 102,15,56,0,217
596 L$schedule_mangle_both:
597 movdqa (%r8,%r10,1),%xmm1
598 .byte 102,15,56,0,217
608 .globl _vpaes_set_encrypt_key
609 .private_extern _vpaes_set_encrypt_key
612 _vpaes_set_encrypt_key:
620 call _vpaes_schedule_core
625 .globl _vpaes_set_decrypt_key
626 .private_extern _vpaes_set_decrypt_key
629 _vpaes_set_decrypt_key:
635 leaq 16(%rdx,%rax,1),%rdx
642 call _vpaes_schedule_core
647 .globl _vpaes_encrypt
648 .private_extern _vpaes_encrypt
654 call _vpaes_encrypt_core
659 .globl _vpaes_decrypt
660 .private_extern _vpaes_decrypt
666 call _vpaes_decrypt_core
670 .globl _vpaes_cbc_encrypt
671 .private_extern _vpaes_cbc_encrypt
688 call _vpaes_encrypt_core
690 movdqu %xmm0,(%rsi,%rdi,1)
699 call _vpaes_decrypt_core
702 movdqu %xmm0,(%rsi,%rdi,1)
720 leaq L$k_s0F(%rip),%r10
721 movdqa -32(%r10),%xmm10
722 movdqa -16(%r10),%xmm11
724 movdqa 48(%r10),%xmm13
725 movdqa 64(%r10),%xmm12
726 movdqa 80(%r10),%xmm15
727 movdqa 96(%r10),%xmm14
739 .quad 0x0E05060F0D080180, 0x040703090A0B0C02
740 .quad 0x01040A060F0B0780, 0x030D0E0C02050809
743 .quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F
746 .quad 0xC2B2E8985A2A7000, 0xCABAE09052227808
747 .quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81
750 .quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544
751 .quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF
753 .quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD
754 .quad 0x69EB88400AE12900, 0xC2A163C8AB82234A
756 .quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878
757 .quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA
760 .quad 0x0407060500030201, 0x0C0F0E0D080B0A09
761 .quad 0x080B0A0904070605, 0x000302010C0F0E0D
762 .quad 0x0C0F0E0D080B0A09, 0x0407060500030201
763 .quad 0x000302010C0F0E0D, 0x080B0A0904070605
766 .quad 0x0605040702010003, 0x0E0D0C0F0A09080B
767 .quad 0x020100030E0D0C0F, 0x0A09080B06050407
768 .quad 0x0E0D0C0F0A09080B, 0x0605040702010003
769 .quad 0x0A09080B06050407, 0x020100030E0D0C0F
772 .quad 0x0706050403020100, 0x0F0E0D0C0B0A0908
773 .quad 0x030E09040F0A0500, 0x0B06010C07020D08
774 .quad 0x0F060D040B020900, 0x070E050C030A0108
775 .quad 0x0B0E0104070A0D00, 0x0306090C0F020508
778 .quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81
781 .quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B
784 .quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808
785 .quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0
788 .quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A
789 .quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77
796 .quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9
797 .quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E
799 .quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99
800 .quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8
802 .quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086
803 .quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487
805 .quad 0xB6116FC87ED9A700, 0x4AED933482255BFC
806 .quad 0x4576516227143300, 0x8BB89FACE9DAFDCE
813 .quad 0x0F505B040B545F00, 0x154A411E114E451A
814 .quad 0x86E383E660056500, 0x12771772F491F194
817 .quad 0x851C03539A86D600, 0xCAD51F504F994CC9
818 .quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565
820 .quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439
821 .quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3
823 .quad 0xD022649296B44200, 0x602646F6B0F2D404
824 .quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B
826 .quad 0x46F2929626D4D000, 0x2242600464B4F6B0
827 .quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32
829 .quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D
830 .quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C
831 .byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0