Path: blob/main/sys/crypto/openssl/amd64/vpaes-x86_64.S
39482 views
/* Do not modify. This file is auto-generated from vpaes-x86_64.pl. */1.text23456789101112131415161718.type _vpaes_encrypt_core,@function19.align 1620_vpaes_encrypt_core:21.cfi_startproc22movq %rdx,%r923movq $16,%r1124movl 240(%rdx),%eax25movdqa %xmm9,%xmm126movdqa .Lk_ipt(%rip),%xmm227pandn %xmm0,%xmm128movdqu (%r9),%xmm529psrld $4,%xmm130pand %xmm9,%xmm031.byte 102,15,56,0,20832movdqa .Lk_ipt+16(%rip),%xmm033.byte 102,15,56,0,19334pxor %xmm5,%xmm235addq $16,%r936pxor %xmm2,%xmm037leaq .Lk_mc_backward(%rip),%r1038jmp .Lenc_entry3940.align 1641.Lenc_loop:4243movdqa %xmm13,%xmm444movdqa %xmm12,%xmm045.byte 102,15,56,0,22646.byte 102,15,56,0,19547pxor %xmm5,%xmm448movdqa %xmm15,%xmm549pxor %xmm4,%xmm050movdqa -64(%r11,%r10,1),%xmm151.byte 102,15,56,0,23452movdqa (%r11,%r10,1),%xmm453movdqa %xmm14,%xmm254.byte 102,15,56,0,21155movdqa %xmm0,%xmm356pxor %xmm5,%xmm257.byte 102,15,56,0,19358addq $16,%r959pxor %xmm2,%xmm060.byte 102,15,56,0,22061addq $16,%r1162pxor %xmm0,%xmm363.byte 102,15,56,0,19364andq $0x30,%r1165subq $1,%rax66pxor %xmm3,%xmm06768.Lenc_entry:6970movdqa %xmm9,%xmm171movdqa %xmm11,%xmm572pandn %xmm0,%xmm173psrld $4,%xmm174pand %xmm9,%xmm075.byte 102,15,56,0,23276movdqa %xmm10,%xmm377pxor %xmm1,%xmm078.byte 102,15,56,0,21779movdqa %xmm10,%xmm480pxor %xmm5,%xmm381.byte 102,15,56,0,22482movdqa %xmm10,%xmm283pxor %xmm5,%xmm484.byte 102,15,56,0,21185movdqa %xmm10,%xmm386pxor %xmm0,%xmm287.byte 102,15,56,0,22088movdqu (%r9),%xmm589pxor %xmm1,%xmm390jnz .Lenc_loop919293movdqa -96(%r10),%xmm494movdqa -80(%r10),%xmm095.byte 102,15,56,0,22696pxor %xmm5,%xmm497.byte 102,15,56,0,19598movdqa 64(%r11,%r10,1),%xmm199pxor %xmm4,%xmm0100.byte 102,15,56,0,193101.byte 0xf3,0xc3102.cfi_endproc103.size _vpaes_encrypt_core,.-_vpaes_encrypt_core104105106107108109110.type _vpaes_decrypt_core,@function111.align 16112_vpaes_decrypt_core:113.cfi_startproc114movq %rdx,%r9115movl 240(%rdx),%eax116movdqa %xmm9,%xmm1117movdqa .Lk_dipt(%rip),%xmm2118pandn %xmm0,%xmm1119movq %rax,%r11120psrld $4,%xmm1121movdqu (%r9),%xmm5122shlq $4,%r11123pand %xmm9,%xmm0124.byte 102,15,56,0,208125movdqa .Lk_dipt+16(%rip),%xmm0126xorq $0x30,%r11127leaq .Lk_dsbd(%rip),%r10128.byte 102,15,56,0,193129andq $0x30,%r11130pxor %xmm5,%xmm2131movdqa .Lk_mc_forward+48(%rip),%xmm5132pxor %xmm2,%xmm0133addq $16,%r9134addq %r10,%r11135jmp .Ldec_entry136137.align 16138.Ldec_loop:139140141142movdqa -32(%r10),%xmm4143movdqa -16(%r10),%xmm1144.byte 102,15,56,0,226145.byte 102,15,56,0,203146pxor %xmm4,%xmm0147movdqa 0(%r10),%xmm4148pxor %xmm1,%xmm0149movdqa 16(%r10),%xmm1150151.byte 102,15,56,0,226152.byte 102,15,56,0,197153.byte 102,15,56,0,203154pxor %xmm4,%xmm0155movdqa 32(%r10),%xmm4156pxor %xmm1,%xmm0157movdqa 48(%r10),%xmm1158159.byte 102,15,56,0,226160.byte 102,15,56,0,197161.byte 102,15,56,0,203162pxor %xmm4,%xmm0163movdqa 64(%r10),%xmm4164pxor %xmm1,%xmm0165movdqa 80(%r10),%xmm1166167.byte 102,15,56,0,226168.byte 102,15,56,0,197169.byte 102,15,56,0,203170pxor %xmm4,%xmm0171addq $16,%r9172.byte 102,15,58,15,237,12173pxor %xmm1,%xmm0174subq $1,%rax175176.Ldec_entry:177178movdqa %xmm9,%xmm1179pandn %xmm0,%xmm1180movdqa %xmm11,%xmm2181psrld $4,%xmm1182pand %xmm9,%xmm0183.byte 102,15,56,0,208184movdqa %xmm10,%xmm3185pxor %xmm1,%xmm0186.byte 102,15,56,0,217187movdqa %xmm10,%xmm4188pxor %xmm2,%xmm3189.byte 102,15,56,0,224190pxor %xmm2,%xmm4191movdqa %xmm10,%xmm2192.byte 102,15,56,0,211193movdqa %xmm10,%xmm3194pxor %xmm0,%xmm2195.byte 102,15,56,0,220196movdqu (%r9),%xmm0197pxor %xmm1,%xmm3198jnz .Ldec_loop199200201movdqa 96(%r10),%xmm4202.byte 102,15,56,0,226203pxor %xmm0,%xmm4204movdqa 112(%r10),%xmm0205movdqa -352(%r11),%xmm2206.byte 102,15,56,0,195207pxor %xmm4,%xmm0208.byte 102,15,56,0,194209.byte 0xf3,0xc3210.cfi_endproc211.size _vpaes_decrypt_core,.-_vpaes_decrypt_core212213214215216217218.type _vpaes_schedule_core,@function219.align 16220_vpaes_schedule_core:221.cfi_startproc222223224225226227call _vpaes_preheat228movdqa .Lk_rcon(%rip),%xmm8229movdqu (%rdi),%xmm0230231232movdqa %xmm0,%xmm3233leaq .Lk_ipt(%rip),%r11234call _vpaes_schedule_transform235movdqa %xmm0,%xmm7236237leaq .Lk_sr(%rip),%r10238testq %rcx,%rcx239jnz .Lschedule_am_decrypting240241242movdqu %xmm0,(%rdx)243jmp .Lschedule_go244245.Lschedule_am_decrypting:246247movdqa (%r8,%r10,1),%xmm1248.byte 102,15,56,0,217249movdqu %xmm3,(%rdx)250xorq $0x30,%r8251252.Lschedule_go:253cmpl $192,%esi254ja .Lschedule_256255je .Lschedule_192256257258259260261262263264265266.Lschedule_128:267movl $10,%esi268269.Loop_schedule_128:270call _vpaes_schedule_round271decq %rsi272jz .Lschedule_mangle_last273call _vpaes_schedule_mangle274jmp .Loop_schedule_128275276277278279280281282283284285286287288289290291.align 16292.Lschedule_192:293movdqu 8(%rdi),%xmm0294call _vpaes_schedule_transform295movdqa %xmm0,%xmm6296pxor %xmm4,%xmm4297movhlps %xmm4,%xmm6298movl $4,%esi299300.Loop_schedule_192:301call _vpaes_schedule_round302.byte 102,15,58,15,198,8303call _vpaes_schedule_mangle304call _vpaes_schedule_192_smear305call _vpaes_schedule_mangle306call _vpaes_schedule_round307decq %rsi308jz .Lschedule_mangle_last309call _vpaes_schedule_mangle310call _vpaes_schedule_192_smear311jmp .Loop_schedule_192312313314315316317318319320321322323.align 16324.Lschedule_256:325movdqu 16(%rdi),%xmm0326call _vpaes_schedule_transform327movl $7,%esi328329.Loop_schedule_256:330call _vpaes_schedule_mangle331movdqa %xmm0,%xmm6332333334call _vpaes_schedule_round335decq %rsi336jz .Lschedule_mangle_last337call _vpaes_schedule_mangle338339340pshufd $0xFF,%xmm0,%xmm0341movdqa %xmm7,%xmm5342movdqa %xmm6,%xmm7343call _vpaes_schedule_low_round344movdqa %xmm5,%xmm7345346jmp .Loop_schedule_256347348349350351352353354355356357358359.align 16360.Lschedule_mangle_last:361362leaq .Lk_deskew(%rip),%r11363testq %rcx,%rcx364jnz .Lschedule_mangle_last_dec365366367movdqa (%r8,%r10,1),%xmm1368.byte 102,15,56,0,193369leaq .Lk_opt(%rip),%r11370addq $32,%rdx371372.Lschedule_mangle_last_dec:373addq $-16,%rdx374pxor .Lk_s63(%rip),%xmm0375call _vpaes_schedule_transform376movdqu %xmm0,(%rdx)377378379pxor %xmm0,%xmm0380pxor %xmm1,%xmm1381pxor %xmm2,%xmm2382pxor %xmm3,%xmm3383pxor %xmm4,%xmm4384pxor %xmm5,%xmm5385pxor %xmm6,%xmm6386pxor %xmm7,%xmm7387.byte 0xf3,0xc3388.cfi_endproc389.size _vpaes_schedule_core,.-_vpaes_schedule_core390391392393394395396397398399400401402403404405.type _vpaes_schedule_192_smear,@function406.align 16407_vpaes_schedule_192_smear:408.cfi_startproc409pshufd $0x80,%xmm6,%xmm1410pshufd $0xFE,%xmm7,%xmm0411pxor %xmm1,%xmm6412pxor %xmm1,%xmm1413pxor %xmm0,%xmm6414movdqa %xmm6,%xmm0415movhlps %xmm1,%xmm6416.byte 0xf3,0xc3417.cfi_endproc418.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear419420421422423424425426427428429430431432433434435436437438.type _vpaes_schedule_round,@function439.align 16440_vpaes_schedule_round:441.cfi_startproc442443pxor %xmm1,%xmm1444.byte 102,65,15,58,15,200,15445.byte 102,69,15,58,15,192,15446pxor %xmm1,%xmm7447448449pshufd $0xFF,%xmm0,%xmm0450.byte 102,15,58,15,192,1451452453454455_vpaes_schedule_low_round:456457movdqa %xmm7,%xmm1458pslldq $4,%xmm7459pxor %xmm1,%xmm7460movdqa %xmm7,%xmm1461pslldq $8,%xmm7462pxor %xmm1,%xmm7463pxor .Lk_s63(%rip),%xmm7464465466movdqa %xmm9,%xmm1467pandn %xmm0,%xmm1468psrld $4,%xmm1469pand %xmm9,%xmm0470movdqa %xmm11,%xmm2471.byte 102,15,56,0,208472pxor %xmm1,%xmm0473movdqa %xmm10,%xmm3474.byte 102,15,56,0,217475pxor %xmm2,%xmm3476movdqa %xmm10,%xmm4477.byte 102,15,56,0,224478pxor %xmm2,%xmm4479movdqa %xmm10,%xmm2480.byte 102,15,56,0,211481pxor %xmm0,%xmm2482movdqa %xmm10,%xmm3483.byte 102,15,56,0,220484pxor %xmm1,%xmm3485movdqa %xmm13,%xmm4486.byte 102,15,56,0,226487movdqa %xmm12,%xmm0488.byte 102,15,56,0,195489pxor %xmm4,%xmm0490491492pxor %xmm7,%xmm0493movdqa %xmm0,%xmm7494.byte 0xf3,0xc3495.cfi_endproc496.size _vpaes_schedule_round,.-_vpaes_schedule_round497498499500501502503504505506507.type _vpaes_schedule_transform,@function508.align 16509_vpaes_schedule_transform:510.cfi_startproc511movdqa %xmm9,%xmm1512pandn %xmm0,%xmm1513psrld $4,%xmm1514pand %xmm9,%xmm0515movdqa (%r11),%xmm2516.byte 102,15,56,0,208517movdqa 16(%r11),%xmm0518.byte 102,15,56,0,193519pxor %xmm2,%xmm0520.byte 0xf3,0xc3521.cfi_endproc522.size _vpaes_schedule_transform,.-_vpaes_schedule_transform523524525526527528529530531532533534535536537538539540541542543544545546547.type _vpaes_schedule_mangle,@function548.align 16549_vpaes_schedule_mangle:550.cfi_startproc551movdqa %xmm0,%xmm4552movdqa .Lk_mc_forward(%rip),%xmm5553testq %rcx,%rcx554jnz .Lschedule_mangle_dec555556557addq $16,%rdx558pxor .Lk_s63(%rip),%xmm4559.byte 102,15,56,0,229560movdqa %xmm4,%xmm3561.byte 102,15,56,0,229562pxor %xmm4,%xmm3563.byte 102,15,56,0,229564pxor %xmm4,%xmm3565566jmp .Lschedule_mangle_both567.align 16568.Lschedule_mangle_dec:569570leaq .Lk_dksd(%rip),%r11571movdqa %xmm9,%xmm1572pandn %xmm4,%xmm1573psrld $4,%xmm1574pand %xmm9,%xmm4575576movdqa 0(%r11),%xmm2577.byte 102,15,56,0,212578movdqa 16(%r11),%xmm3579.byte 102,15,56,0,217580pxor %xmm2,%xmm3581.byte 102,15,56,0,221582583movdqa 32(%r11),%xmm2584.byte 102,15,56,0,212585pxor %xmm3,%xmm2586movdqa 48(%r11),%xmm3587.byte 102,15,56,0,217588pxor %xmm2,%xmm3589.byte 102,15,56,0,221590591movdqa 64(%r11),%xmm2592.byte 102,15,56,0,212593pxor %xmm3,%xmm2594movdqa 80(%r11),%xmm3595.byte 102,15,56,0,217596pxor %xmm2,%xmm3597.byte 102,15,56,0,221598599movdqa 96(%r11),%xmm2600.byte 102,15,56,0,212601pxor %xmm3,%xmm2602movdqa 112(%r11),%xmm3603.byte 102,15,56,0,217604pxor %xmm2,%xmm3605606addq $-16,%rdx607608.Lschedule_mangle_both:609movdqa (%r8,%r10,1),%xmm1610.byte 102,15,56,0,217611addq $-16,%r8612andq $0x30,%r8613movdqu %xmm3,(%rdx)614.byte 0xf3,0xc3615.cfi_endproc616.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle617618619620621.globl vpaes_set_encrypt_key622.type vpaes_set_encrypt_key,@function623.align 16624vpaes_set_encrypt_key:625.cfi_startproc626.byte 243,15,30,250627movl %esi,%eax628shrl $5,%eax629addl $5,%eax630movl %eax,240(%rdx)631632movl $0,%ecx633movl $0x30,%r8d634call _vpaes_schedule_core635xorl %eax,%eax636.byte 0xf3,0xc3637.cfi_endproc638.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key639640.globl vpaes_set_decrypt_key641.type vpaes_set_decrypt_key,@function642.align 16643vpaes_set_decrypt_key:644.cfi_startproc645.byte 243,15,30,250646movl %esi,%eax647shrl $5,%eax648addl $5,%eax649movl %eax,240(%rdx)650shll $4,%eax651leaq 16(%rdx,%rax,1),%rdx652653movl $1,%ecx654movl %esi,%r8d655shrl $1,%r8d656andl $32,%r8d657xorl $32,%r8d658call _vpaes_schedule_core659xorl %eax,%eax660.byte 0xf3,0xc3661.cfi_endproc662.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key663664.globl vpaes_encrypt665.type vpaes_encrypt,@function666.align 16667vpaes_encrypt:668.cfi_startproc669.byte 243,15,30,250670movdqu (%rdi),%xmm0671call _vpaes_preheat672call _vpaes_encrypt_core673movdqu %xmm0,(%rsi)674.byte 0xf3,0xc3675.cfi_endproc676.size vpaes_encrypt,.-vpaes_encrypt677678.globl vpaes_decrypt679.type vpaes_decrypt,@function680.align 16681vpaes_decrypt:682.cfi_startproc683.byte 243,15,30,250684movdqu (%rdi),%xmm0685call _vpaes_preheat686call _vpaes_decrypt_core687movdqu %xmm0,(%rsi)688.byte 0xf3,0xc3689.cfi_endproc690.size vpaes_decrypt,.-vpaes_decrypt691.globl vpaes_cbc_encrypt692.type vpaes_cbc_encrypt,@function693.align 16694vpaes_cbc_encrypt:695.cfi_startproc696.byte 243,15,30,250697xchgq %rcx,%rdx698subq $16,%rcx699jc .Lcbc_abort700movdqu (%r8),%xmm6701subq %rdi,%rsi702call _vpaes_preheat703cmpl $0,%r9d704je .Lcbc_dec_loop705jmp .Lcbc_enc_loop706.align 16707.Lcbc_enc_loop:708movdqu (%rdi),%xmm0709pxor %xmm6,%xmm0710call _vpaes_encrypt_core711movdqa %xmm0,%xmm6712movdqu %xmm0,(%rsi,%rdi,1)713leaq 16(%rdi),%rdi714subq $16,%rcx715jnc .Lcbc_enc_loop716jmp .Lcbc_done717.align 16718.Lcbc_dec_loop:719movdqu (%rdi),%xmm0720movdqa %xmm0,%xmm7721call _vpaes_decrypt_core722pxor %xmm6,%xmm0723movdqa %xmm7,%xmm6724movdqu %xmm0,(%rsi,%rdi,1)725leaq 16(%rdi),%rdi726subq $16,%rcx727jnc .Lcbc_dec_loop728.Lcbc_done:729movdqu %xmm6,(%r8)730.Lcbc_abort:731.byte 0xf3,0xc3732.cfi_endproc733.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt734735736737738739740.type _vpaes_preheat,@function741.align 16742_vpaes_preheat:743.cfi_startproc744leaq .Lk_s0F(%rip),%r10745movdqa -32(%r10),%xmm10746movdqa -16(%r10),%xmm11747movdqa 0(%r10),%xmm9748movdqa 48(%r10),%xmm13749movdqa 64(%r10),%xmm12750movdqa 80(%r10),%xmm15751movdqa 96(%r10),%xmm14752.byte 0xf3,0xc3753.cfi_endproc754.size _vpaes_preheat,.-_vpaes_preheat755756757758759760.type _vpaes_consts,@object761.section .rodata762.align 64763_vpaes_consts:764.Lk_inv:765.quad 0x0E05060F0D080180, 0x040703090A0B0C02766.quad 0x01040A060F0B0780, 0x030D0E0C02050809767768.Lk_s0F:769.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F770771.Lk_ipt:772.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808773.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81774775.Lk_sb1:776.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544777.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF778.Lk_sb2:779.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD780.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A781.Lk_sbo:782.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878783.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA784785.Lk_mc_forward:786.quad 0x0407060500030201, 0x0C0F0E0D080B0A09787.quad 0x080B0A0904070605, 0x000302010C0F0E0D788.quad 0x0C0F0E0D080B0A09, 0x0407060500030201789.quad 0x000302010C0F0E0D, 0x080B0A0904070605790791.Lk_mc_backward:792.quad 0x0605040702010003, 0x0E0D0C0F0A09080B793.quad 0x020100030E0D0C0F, 0x0A09080B06050407794.quad 0x0E0D0C0F0A09080B, 0x0605040702010003795.quad 0x0A09080B06050407, 0x020100030E0D0C0F796797.Lk_sr:798.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908799.quad 0x030E09040F0A0500, 0x0B06010C07020D08800.quad 0x0F060D040B020900, 0x070E050C030A0108801.quad 0x0B0E0104070A0D00, 0x0306090C0F020508802803.Lk_rcon:804.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81805806.Lk_s63:807.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B808809.Lk_opt:810.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808811.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0812813.Lk_deskew:814.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A815.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77816817818819820821.Lk_dksd:822.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9823.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E824.Lk_dksb:825.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99826.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8827.Lk_dkse:828.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086829.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487830.Lk_dks9:831.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC832.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE833834835836837838.Lk_dipt:839.quad 0x0F505B040B545F00, 0x154A411E114E451A840.quad 0x86E383E660056500, 0x12771772F491F194841842.Lk_dsb9:843.quad 0x851C03539A86D600, 0xCAD51F504F994CC9844.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565845.Lk_dsbd:846.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439847.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3848.Lk_dsbb:849.quad 0xD022649296B44200, 0x602646F6B0F2D404850.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B851.Lk_dsbe:852.quad 0x46F2929626D4D000, 0x2242600464B4F6B0853.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32854.Lk_dsbo:855.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D856.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C857.align 64858.size _vpaes_consts,.-_vpaes_consts859.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,0860.section ".note.gnu.property", "a"861.p2align 3862.long 1f - 0f863.long 4f - 1f864.long 58650:866# "GNU" encoded with .byte, since .asciz isn't supported867# on Solaris.868.byte 0x47869.byte 0x4e870.byte 0x55871.byte 08721:873.p2align 3874.long 0xc0000002875.long 3f - 2f8762:877.long 38783:879.p2align 38804:881882883