Path: blob/main/sys/crypto/openssl/amd64/e_padlock-x86_64.S
39482 views
/* Do not modify. This file is auto-generated from e_padlock-x86_64.pl. */1.text2.globl padlock_capability3.type padlock_capability,@function4.align 165padlock_capability:6movq %rbx,%r87xorl %eax,%eax8cpuid9xorl %eax,%eax10cmpl $0x746e6543,%ebx11jne .Lzhaoxin12cmpl $0x48727561,%edx13jne .Lnoluck14cmpl $0x736c7561,%ecx15jne .Lnoluck16jmp .LzhaoxinEnd17.Lzhaoxin:18cmpl $0x68532020,%ebx19jne .Lnoluck20cmpl $0x68676e61,%edx21jne .Lnoluck22cmpl $0x20206961,%ecx23jne .Lnoluck24.LzhaoxinEnd:25movl $0xC0000000,%eax26cpuid27movl %eax,%edx28xorl %eax,%eax29cmpl $0xC0000001,%edx30jb .Lnoluck31movl $0xC0000001,%eax32cpuid33movl %edx,%eax34andl $0xffffffef,%eax35orl $0x10,%eax36.Lnoluck:37movq %r8,%rbx38.byte 0xf3,0xc339.size padlock_capability,.-padlock_capability4041.globl padlock_key_bswap42.type padlock_key_bswap,@function43.align 1644padlock_key_bswap:45movl 240(%rdi),%edx46incl %edx47shll $2,%edx48.Lbswap_loop:49movl (%rdi),%eax50bswapl %eax51movl %eax,(%rdi)52leaq 4(%rdi),%rdi53subl $1,%edx54jnz .Lbswap_loop55.byte 0xf3,0xc356.size padlock_key_bswap,.-padlock_key_bswap5758.globl padlock_verify_context59.type padlock_verify_context,@function60.align 1661padlock_verify_context:62movq %rdi,%rdx63pushf64leaq .Lpadlock_saved_context(%rip),%rax65call _padlock_verify_ctx66leaq 8(%rsp),%rsp67.byte 0xf3,0xc368.size padlock_verify_context,.-padlock_verify_context6970.type _padlock_verify_ctx,@function71.align 1672_padlock_verify_ctx:73movq 8(%rsp),%r874btq $30,%r875jnc .Lverified76cmpq (%rax),%rdx77je .Lverified78pushf79popf80.Lverified:81movq %rdx,(%rax)82.byte 0xf3,0xc383.size _padlock_verify_ctx,.-_padlock_verify_ctx8485.globl padlock_reload_key86.type padlock_reload_key,@function87.align 1688padlock_reload_key:89pushf90popf91.byte 0xf3,0xc392.size padlock_reload_key,.-padlock_reload_key9394.globl padlock_aes_block95.type padlock_aes_block,@function96.align 1697padlock_aes_block:98movq %rbx,%r899movq $1,%rcx100leaq 32(%rdx),%rbx101leaq 16(%rdx),%rdx102.byte 0xf3,0x0f,0xa7,0xc8103movq %r8,%rbx104.byte 0xf3,0xc3105.size padlock_aes_block,.-padlock_aes_block106107.globl padlock_xstore108.type padlock_xstore,@function109.align 16110padlock_xstore:111movl %esi,%edx112.byte 0x0f,0xa7,0xc0113.byte 0xf3,0xc3114.size padlock_xstore,.-padlock_xstore115116.globl padlock_sha1_oneshot117.type padlock_sha1_oneshot,@function118.align 16119padlock_sha1_oneshot:120movq %rdx,%rcx121movq %rdi,%rdx122movups (%rdi),%xmm0123subq $128+8,%rsp124movl 16(%rdi),%eax125movaps %xmm0,(%rsp)126movq %rsp,%rdi127movl %eax,16(%rsp)128xorq %rax,%rax129.byte 0xf3,0x0f,0xa6,0xc8130movaps (%rsp),%xmm0131movl 16(%rsp),%eax132addq $128+8,%rsp133movups %xmm0,(%rdx)134movl %eax,16(%rdx)135.byte 0xf3,0xc3136.size padlock_sha1_oneshot,.-padlock_sha1_oneshot137138.globl padlock_sha1_blocks139.type padlock_sha1_blocks,@function140.align 16141padlock_sha1_blocks:142movq %rdx,%rcx143movq %rdi,%rdx144movups (%rdi),%xmm0145subq $128+8,%rsp146movl 16(%rdi),%eax147movaps %xmm0,(%rsp)148movq %rsp,%rdi149movl %eax,16(%rsp)150movq $-1,%rax151.byte 0xf3,0x0f,0xa6,0xc8152movaps (%rsp),%xmm0153movl 16(%rsp),%eax154addq $128+8,%rsp155movups %xmm0,(%rdx)156movl %eax,16(%rdx)157.byte 0xf3,0xc3158.size padlock_sha1_blocks,.-padlock_sha1_blocks159160.globl padlock_sha256_oneshot161.type padlock_sha256_oneshot,@function162.align 16163padlock_sha256_oneshot:164movq %rdx,%rcx165movq %rdi,%rdx166movups (%rdi),%xmm0167subq $128+8,%rsp168movups 16(%rdi),%xmm1169movaps %xmm0,(%rsp)170movq %rsp,%rdi171movaps %xmm1,16(%rsp)172xorq %rax,%rax173.byte 0xf3,0x0f,0xa6,0xd0174movaps (%rsp),%xmm0175movaps 16(%rsp),%xmm1176addq $128+8,%rsp177movups %xmm0,(%rdx)178movups %xmm1,16(%rdx)179.byte 0xf3,0xc3180.size padlock_sha256_oneshot,.-padlock_sha256_oneshot181182.globl padlock_sha256_blocks183.type padlock_sha256_blocks,@function184.align 16185padlock_sha256_blocks:186movq %rdx,%rcx187movq %rdi,%rdx188movups (%rdi),%xmm0189subq $128+8,%rsp190movups 16(%rdi),%xmm1191movaps %xmm0,(%rsp)192movq %rsp,%rdi193movaps %xmm1,16(%rsp)194movq $-1,%rax195.byte 0xf3,0x0f,0xa6,0xd0196movaps (%rsp),%xmm0197movaps 16(%rsp),%xmm1198addq $128+8,%rsp199movups %xmm0,(%rdx)200movups %xmm1,16(%rdx)201.byte 0xf3,0xc3202.size padlock_sha256_blocks,.-padlock_sha256_blocks203204.globl padlock_sha512_blocks205.type padlock_sha512_blocks,@function206.align 16207padlock_sha512_blocks:208movq %rdx,%rcx209movq %rdi,%rdx210movups (%rdi),%xmm0211subq $128+8,%rsp212movups 16(%rdi),%xmm1213movups 32(%rdi),%xmm2214movups 48(%rdi),%xmm3215movaps %xmm0,(%rsp)216movq %rsp,%rdi217movaps %xmm1,16(%rsp)218movaps %xmm2,32(%rsp)219movaps %xmm3,48(%rsp)220.byte 0xf3,0x0f,0xa6,0xe0221movaps (%rsp),%xmm0222movaps 16(%rsp),%xmm1223movaps 32(%rsp),%xmm2224movaps 48(%rsp),%xmm3225addq $128+8,%rsp226movups %xmm0,(%rdx)227movups %xmm1,16(%rdx)228movups %xmm2,32(%rdx)229movups %xmm3,48(%rdx)230.byte 0xf3,0xc3231.size padlock_sha512_blocks,.-padlock_sha512_blocks232.globl padlock_ecb_encrypt233.type padlock_ecb_encrypt,@function234.align 16235padlock_ecb_encrypt:236pushq %rbp237pushq %rbx238239xorl %eax,%eax240testq $15,%rdx241jnz .Lecb_abort242testq $15,%rcx243jnz .Lecb_abort244leaq .Lpadlock_saved_context(%rip),%rax245pushf246cld247call _padlock_verify_ctx248leaq 16(%rdx),%rdx249xorl %eax,%eax250xorl %ebx,%ebx251testl $32,(%rdx)252jnz .Lecb_aligned253testq $0x0f,%rdi254setz %al255testq $0x0f,%rsi256setz %bl257testl %ebx,%eax258jnz .Lecb_aligned259negq %rax260movq $512,%rbx261notq %rax262leaq (%rsp),%rbp263cmpq %rbx,%rcx264cmovcq %rcx,%rbx265andq %rbx,%rax266movq %rcx,%rbx267negq %rax268andq $512-1,%rbx269leaq (%rax,%rbp,1),%rsp270movq $512,%rax271cmovzq %rax,%rbx272cmpq %rbx,%rcx273ja .Lecb_loop274movq %rsi,%rax275cmpq %rsp,%rbp276cmoveq %rdi,%rax277addq %rcx,%rax278negq %rax279andq $0xfff,%rax280cmpq $128,%rax281movq $-128,%rax282cmovaeq %rbx,%rax283andq %rax,%rbx284jz .Lecb_unaligned_tail285jmp .Lecb_loop286.align 16287.Lecb_loop:288cmpq %rcx,%rbx289cmovaq %rcx,%rbx290movq %rdi,%r8291movq %rsi,%r9292movq %rcx,%r10293movq %rbx,%rcx294movq %rbx,%r11295testq $0x0f,%rdi296cmovnzq %rsp,%rdi297testq $0x0f,%rsi298jz .Lecb_inp_aligned299shrq $3,%rcx300.byte 0xf3,0x48,0xa5301subq %rbx,%rdi302movq %rbx,%rcx303movq %rdi,%rsi304.Lecb_inp_aligned:305leaq -16(%rdx),%rax306leaq 16(%rdx),%rbx307shrq $4,%rcx308.byte 0xf3,0x0f,0xa7,200309movq %r8,%rdi310movq %r11,%rbx311testq $0x0f,%rdi312jz .Lecb_out_aligned313movq %rbx,%rcx314leaq (%rsp),%rsi315shrq $3,%rcx316.byte 0xf3,0x48,0xa5317subq %rbx,%rdi318.Lecb_out_aligned:319movq %r9,%rsi320movq %r10,%rcx321addq %rbx,%rdi322addq %rbx,%rsi323subq %rbx,%rcx324movq $512,%rbx325jz .Lecb_break326cmpq %rbx,%rcx327jae .Lecb_loop328.Lecb_unaligned_tail:329xorl %eax,%eax330cmpq %rsp,%rbp331cmoveq %rcx,%rax332movq %rdi,%r8333movq %rcx,%rbx334subq %rax,%rsp335shrq $3,%rcx336leaq (%rsp),%rdi337.byte 0xf3,0x48,0xa5338movq %rsp,%rsi339movq %r8,%rdi340movq %rbx,%rcx341jmp .Lecb_loop342.align 16343.Lecb_break:344cmpq %rbp,%rsp345je .Lecb_done346347pxor %xmm0,%xmm0348leaq (%rsp),%rax349.Lecb_bzero:350movaps %xmm0,(%rax)351leaq 16(%rax),%rax352cmpq %rax,%rbp353ja .Lecb_bzero354355.Lecb_done:356leaq (%rbp),%rsp357jmp .Lecb_exit358359.align 16360.Lecb_aligned:361leaq (%rsi,%rcx,1),%rbp362negq %rbp363andq $0xfff,%rbp364xorl %eax,%eax365cmpq $128,%rbp366movq $128-1,%rbp367cmovaeq %rax,%rbp368andq %rcx,%rbp369subq %rbp,%rcx370jz .Lecb_aligned_tail371leaq -16(%rdx),%rax372leaq 16(%rdx),%rbx373shrq $4,%rcx374.byte 0xf3,0x0f,0xa7,200375testq %rbp,%rbp376jz .Lecb_exit377378.Lecb_aligned_tail:379movq %rdi,%r8380movq %rbp,%rbx381movq %rbp,%rcx382leaq (%rsp),%rbp383subq %rcx,%rsp384shrq $3,%rcx385leaq (%rsp),%rdi386.byte 0xf3,0x48,0xa5387leaq (%r8),%rdi388leaq (%rsp),%rsi389movq %rbx,%rcx390jmp .Lecb_loop391.Lecb_exit:392movl $1,%eax393leaq 8(%rsp),%rsp394.Lecb_abort:395popq %rbx396popq %rbp397.byte 0xf3,0xc3398.size padlock_ecb_encrypt,.-padlock_ecb_encrypt399.globl padlock_cbc_encrypt400.type padlock_cbc_encrypt,@function401.align 16402padlock_cbc_encrypt:403pushq %rbp404pushq %rbx405406xorl %eax,%eax407testq $15,%rdx408jnz .Lcbc_abort409testq $15,%rcx410jnz .Lcbc_abort411leaq .Lpadlock_saved_context(%rip),%rax412pushf413cld414call _padlock_verify_ctx415leaq 16(%rdx),%rdx416xorl %eax,%eax417xorl %ebx,%ebx418testl $32,(%rdx)419jnz .Lcbc_aligned420testq $0x0f,%rdi421setz %al422testq $0x0f,%rsi423setz %bl424testl %ebx,%eax425jnz .Lcbc_aligned426negq %rax427movq $512,%rbx428notq %rax429leaq (%rsp),%rbp430cmpq %rbx,%rcx431cmovcq %rcx,%rbx432andq %rbx,%rax433movq %rcx,%rbx434negq %rax435andq $512-1,%rbx436leaq (%rax,%rbp,1),%rsp437movq $512,%rax438cmovzq %rax,%rbx439cmpq %rbx,%rcx440ja .Lcbc_loop441movq %rsi,%rax442cmpq %rsp,%rbp443cmoveq %rdi,%rax444addq %rcx,%rax445negq %rax446andq $0xfff,%rax447cmpq $64,%rax448movq $-64,%rax449cmovaeq %rbx,%rax450andq %rax,%rbx451jz .Lcbc_unaligned_tail452jmp .Lcbc_loop453.align 16454.Lcbc_loop:455cmpq %rcx,%rbx456cmovaq %rcx,%rbx457movq %rdi,%r8458movq %rsi,%r9459movq %rcx,%r10460movq %rbx,%rcx461movq %rbx,%r11462testq $0x0f,%rdi463cmovnzq %rsp,%rdi464testq $0x0f,%rsi465jz .Lcbc_inp_aligned466shrq $3,%rcx467.byte 0xf3,0x48,0xa5468subq %rbx,%rdi469movq %rbx,%rcx470movq %rdi,%rsi471.Lcbc_inp_aligned:472leaq -16(%rdx),%rax473leaq 16(%rdx),%rbx474shrq $4,%rcx475.byte 0xf3,0x0f,0xa7,208476movdqa (%rax),%xmm0477movdqa %xmm0,-16(%rdx)478movq %r8,%rdi479movq %r11,%rbx480testq $0x0f,%rdi481jz .Lcbc_out_aligned482movq %rbx,%rcx483leaq (%rsp),%rsi484shrq $3,%rcx485.byte 0xf3,0x48,0xa5486subq %rbx,%rdi487.Lcbc_out_aligned:488movq %r9,%rsi489movq %r10,%rcx490addq %rbx,%rdi491addq %rbx,%rsi492subq %rbx,%rcx493movq $512,%rbx494jz .Lcbc_break495cmpq %rbx,%rcx496jae .Lcbc_loop497.Lcbc_unaligned_tail:498xorl %eax,%eax499cmpq %rsp,%rbp500cmoveq %rcx,%rax501movq %rdi,%r8502movq %rcx,%rbx503subq %rax,%rsp504shrq $3,%rcx505leaq (%rsp),%rdi506.byte 0xf3,0x48,0xa5507movq %rsp,%rsi508movq %r8,%rdi509movq %rbx,%rcx510jmp .Lcbc_loop511.align 16512.Lcbc_break:513cmpq %rbp,%rsp514je .Lcbc_done515516pxor %xmm0,%xmm0517leaq (%rsp),%rax518.Lcbc_bzero:519movaps %xmm0,(%rax)520leaq 16(%rax),%rax521cmpq %rax,%rbp522ja .Lcbc_bzero523524.Lcbc_done:525leaq (%rbp),%rsp526jmp .Lcbc_exit527528.align 16529.Lcbc_aligned:530leaq (%rsi,%rcx,1),%rbp531negq %rbp532andq $0xfff,%rbp533xorl %eax,%eax534cmpq $64,%rbp535movq $64-1,%rbp536cmovaeq %rax,%rbp537andq %rcx,%rbp538subq %rbp,%rcx539jz .Lcbc_aligned_tail540leaq -16(%rdx),%rax541leaq 16(%rdx),%rbx542shrq $4,%rcx543.byte 0xf3,0x0f,0xa7,208544movdqa (%rax),%xmm0545movdqa %xmm0,-16(%rdx)546testq %rbp,%rbp547jz .Lcbc_exit548549.Lcbc_aligned_tail:550movq %rdi,%r8551movq %rbp,%rbx552movq %rbp,%rcx553leaq (%rsp),%rbp554subq %rcx,%rsp555shrq $3,%rcx556leaq (%rsp),%rdi557.byte 0xf3,0x48,0xa5558leaq (%r8),%rdi559leaq (%rsp),%rsi560movq %rbx,%rcx561jmp .Lcbc_loop562.Lcbc_exit:563movl $1,%eax564leaq 8(%rsp),%rsp565.Lcbc_abort:566popq %rbx567popq %rbp568.byte 0xf3,0xc3569.size padlock_cbc_encrypt,.-padlock_cbc_encrypt570.globl padlock_cfb_encrypt571.type padlock_cfb_encrypt,@function572.align 16573padlock_cfb_encrypt:574pushq %rbp575pushq %rbx576577xorl %eax,%eax578testq $15,%rdx579jnz .Lcfb_abort580testq $15,%rcx581jnz .Lcfb_abort582leaq .Lpadlock_saved_context(%rip),%rax583pushf584cld585call _padlock_verify_ctx586leaq 16(%rdx),%rdx587xorl %eax,%eax588xorl %ebx,%ebx589testl $32,(%rdx)590jnz .Lcfb_aligned591testq $0x0f,%rdi592setz %al593testq $0x0f,%rsi594setz %bl595testl %ebx,%eax596jnz .Lcfb_aligned597negq %rax598movq $512,%rbx599notq %rax600leaq (%rsp),%rbp601cmpq %rbx,%rcx602cmovcq %rcx,%rbx603andq %rbx,%rax604movq %rcx,%rbx605negq %rax606andq $512-1,%rbx607leaq (%rax,%rbp,1),%rsp608movq $512,%rax609cmovzq %rax,%rbx610jmp .Lcfb_loop611.align 16612.Lcfb_loop:613cmpq %rcx,%rbx614cmovaq %rcx,%rbx615movq %rdi,%r8616movq %rsi,%r9617movq %rcx,%r10618movq %rbx,%rcx619movq %rbx,%r11620testq $0x0f,%rdi621cmovnzq %rsp,%rdi622testq $0x0f,%rsi623jz .Lcfb_inp_aligned624shrq $3,%rcx625.byte 0xf3,0x48,0xa5626subq %rbx,%rdi627movq %rbx,%rcx628movq %rdi,%rsi629.Lcfb_inp_aligned:630leaq -16(%rdx),%rax631leaq 16(%rdx),%rbx632shrq $4,%rcx633.byte 0xf3,0x0f,0xa7,224634movdqa (%rax),%xmm0635movdqa %xmm0,-16(%rdx)636movq %r8,%rdi637movq %r11,%rbx638testq $0x0f,%rdi639jz .Lcfb_out_aligned640movq %rbx,%rcx641leaq (%rsp),%rsi642shrq $3,%rcx643.byte 0xf3,0x48,0xa5644subq %rbx,%rdi645.Lcfb_out_aligned:646movq %r9,%rsi647movq %r10,%rcx648addq %rbx,%rdi649addq %rbx,%rsi650subq %rbx,%rcx651movq $512,%rbx652jnz .Lcfb_loop653cmpq %rbp,%rsp654je .Lcfb_done655656pxor %xmm0,%xmm0657leaq (%rsp),%rax658.Lcfb_bzero:659movaps %xmm0,(%rax)660leaq 16(%rax),%rax661cmpq %rax,%rbp662ja .Lcfb_bzero663664.Lcfb_done:665leaq (%rbp),%rsp666jmp .Lcfb_exit667668.align 16669.Lcfb_aligned:670leaq -16(%rdx),%rax671leaq 16(%rdx),%rbx672shrq $4,%rcx673.byte 0xf3,0x0f,0xa7,224674movdqa (%rax),%xmm0675movdqa %xmm0,-16(%rdx)676.Lcfb_exit:677movl $1,%eax678leaq 8(%rsp),%rsp679.Lcfb_abort:680popq %rbx681popq %rbp682.byte 0xf3,0xc3683.size padlock_cfb_encrypt,.-padlock_cfb_encrypt684.globl padlock_ofb_encrypt685.type padlock_ofb_encrypt,@function686.align 16687padlock_ofb_encrypt:688pushq %rbp689pushq %rbx690691xorl %eax,%eax692testq $15,%rdx693jnz .Lofb_abort694testq $15,%rcx695jnz .Lofb_abort696leaq .Lpadlock_saved_context(%rip),%rax697pushf698cld699call _padlock_verify_ctx700leaq 16(%rdx),%rdx701xorl %eax,%eax702xorl %ebx,%ebx703testl $32,(%rdx)704jnz .Lofb_aligned705testq $0x0f,%rdi706setz %al707testq $0x0f,%rsi708setz %bl709testl %ebx,%eax710jnz .Lofb_aligned711negq %rax712movq $512,%rbx713notq %rax714leaq (%rsp),%rbp715cmpq %rbx,%rcx716cmovcq %rcx,%rbx717andq %rbx,%rax718movq %rcx,%rbx719negq %rax720andq $512-1,%rbx721leaq (%rax,%rbp,1),%rsp722movq $512,%rax723cmovzq %rax,%rbx724jmp .Lofb_loop725.align 16726.Lofb_loop:727cmpq %rcx,%rbx728cmovaq %rcx,%rbx729movq %rdi,%r8730movq %rsi,%r9731movq %rcx,%r10732movq %rbx,%rcx733movq %rbx,%r11734testq $0x0f,%rdi735cmovnzq %rsp,%rdi736testq $0x0f,%rsi737jz .Lofb_inp_aligned738shrq $3,%rcx739.byte 0xf3,0x48,0xa5740subq %rbx,%rdi741movq %rbx,%rcx742movq %rdi,%rsi743.Lofb_inp_aligned:744leaq -16(%rdx),%rax745leaq 16(%rdx),%rbx746shrq $4,%rcx747.byte 0xf3,0x0f,0xa7,232748movdqa (%rax),%xmm0749movdqa %xmm0,-16(%rdx)750movq %r8,%rdi751movq %r11,%rbx752testq $0x0f,%rdi753jz .Lofb_out_aligned754movq %rbx,%rcx755leaq (%rsp),%rsi756shrq $3,%rcx757.byte 0xf3,0x48,0xa5758subq %rbx,%rdi759.Lofb_out_aligned:760movq %r9,%rsi761movq %r10,%rcx762addq %rbx,%rdi763addq %rbx,%rsi764subq %rbx,%rcx765movq $512,%rbx766jnz .Lofb_loop767cmpq %rbp,%rsp768je .Lofb_done769770pxor %xmm0,%xmm0771leaq (%rsp),%rax772.Lofb_bzero:773movaps %xmm0,(%rax)774leaq 16(%rax),%rax775cmpq %rax,%rbp776ja .Lofb_bzero777778.Lofb_done:779leaq (%rbp),%rsp780jmp .Lofb_exit781782.align 16783.Lofb_aligned:784leaq -16(%rdx),%rax785leaq 16(%rdx),%rbx786shrq $4,%rcx787.byte 0xf3,0x0f,0xa7,232788movdqa (%rax),%xmm0789movdqa %xmm0,-16(%rdx)790.Lofb_exit:791movl $1,%eax792leaq 8(%rsp),%rsp793.Lofb_abort:794popq %rbx795popq %rbp796.byte 0xf3,0xc3797.size padlock_ofb_encrypt,.-padlock_ofb_encrypt798.globl padlock_ctr32_encrypt799.type padlock_ctr32_encrypt,@function800.align 16801padlock_ctr32_encrypt:802pushq %rbp803pushq %rbx804805xorl %eax,%eax806testq $15,%rdx807jnz .Lctr32_abort808testq $15,%rcx809jnz .Lctr32_abort810leaq .Lpadlock_saved_context(%rip),%rax811pushf812cld813call _padlock_verify_ctx814leaq 16(%rdx),%rdx815xorl %eax,%eax816xorl %ebx,%ebx817testl $32,(%rdx)818jnz .Lctr32_aligned819testq $0x0f,%rdi820setz %al821testq $0x0f,%rsi822setz %bl823testl %ebx,%eax824jnz .Lctr32_aligned825negq %rax826movq $512,%rbx827notq %rax828leaq (%rsp),%rbp829cmpq %rbx,%rcx830cmovcq %rcx,%rbx831andq %rbx,%rax832movq %rcx,%rbx833negq %rax834andq $512-1,%rbx835leaq (%rax,%rbp,1),%rsp836movq $512,%rax837cmovzq %rax,%rbx838.Lctr32_reenter:839movl -4(%rdx),%eax840bswapl %eax841negl %eax842andl $31,%eax843movq $512,%rbx844shll $4,%eax845cmovzq %rbx,%rax846cmpq %rax,%rcx847cmovaq %rax,%rbx848cmovbeq %rcx,%rbx849cmpq %rbx,%rcx850ja .Lctr32_loop851movq %rsi,%rax852cmpq %rsp,%rbp853cmoveq %rdi,%rax854addq %rcx,%rax855negq %rax856andq $0xfff,%rax857cmpq $32,%rax858movq $-32,%rax859cmovaeq %rbx,%rax860andq %rax,%rbx861jz .Lctr32_unaligned_tail862jmp .Lctr32_loop863.align 16864.Lctr32_loop:865cmpq %rcx,%rbx866cmovaq %rcx,%rbx867movq %rdi,%r8868movq %rsi,%r9869movq %rcx,%r10870movq %rbx,%rcx871movq %rbx,%r11872testq $0x0f,%rdi873cmovnzq %rsp,%rdi874testq $0x0f,%rsi875jz .Lctr32_inp_aligned876shrq $3,%rcx877.byte 0xf3,0x48,0xa5878subq %rbx,%rdi879movq %rbx,%rcx880movq %rdi,%rsi881.Lctr32_inp_aligned:882leaq -16(%rdx),%rax883leaq 16(%rdx),%rbx884shrq $4,%rcx885.byte 0xf3,0x0f,0xa7,216886movl -4(%rdx),%eax887testl $0xffff0000,%eax888jnz .Lctr32_no_carry889bswapl %eax890addl $0x10000,%eax891bswapl %eax892movl %eax,-4(%rdx)893.Lctr32_no_carry:894movq %r8,%rdi895movq %r11,%rbx896testq $0x0f,%rdi897jz .Lctr32_out_aligned898movq %rbx,%rcx899leaq (%rsp),%rsi900shrq $3,%rcx901.byte 0xf3,0x48,0xa5902subq %rbx,%rdi903.Lctr32_out_aligned:904movq %r9,%rsi905movq %r10,%rcx906addq %rbx,%rdi907addq %rbx,%rsi908subq %rbx,%rcx909movq $512,%rbx910jz .Lctr32_break911cmpq %rbx,%rcx912jae .Lctr32_loop913movq %rcx,%rbx914movq %rsi,%rax915cmpq %rsp,%rbp916cmoveq %rdi,%rax917addq %rcx,%rax918negq %rax919andq $0xfff,%rax920cmpq $32,%rax921movq $-32,%rax922cmovaeq %rbx,%rax923andq %rax,%rbx924jnz .Lctr32_loop925.Lctr32_unaligned_tail:926xorl %eax,%eax927cmpq %rsp,%rbp928cmoveq %rcx,%rax929movq %rdi,%r8930movq %rcx,%rbx931subq %rax,%rsp932shrq $3,%rcx933leaq (%rsp),%rdi934.byte 0xf3,0x48,0xa5935movq %rsp,%rsi936movq %r8,%rdi937movq %rbx,%rcx938jmp .Lctr32_loop939.align 16940.Lctr32_break:941cmpq %rbp,%rsp942je .Lctr32_done943944pxor %xmm0,%xmm0945leaq (%rsp),%rax946.Lctr32_bzero:947movaps %xmm0,(%rax)948leaq 16(%rax),%rax949cmpq %rax,%rbp950ja .Lctr32_bzero951952.Lctr32_done:953leaq (%rbp),%rsp954jmp .Lctr32_exit955956.align 16957.Lctr32_aligned:958movl -4(%rdx),%eax959bswapl %eax960negl %eax961andl $0xffff,%eax962movq $1048576,%rbx963shll $4,%eax964cmovzq %rbx,%rax965cmpq %rax,%rcx966cmovaq %rax,%rbx967cmovbeq %rcx,%rbx968jbe .Lctr32_aligned_skip969970.Lctr32_aligned_loop:971movq %rcx,%r10972movq %rbx,%rcx973movq %rbx,%r11974975leaq -16(%rdx),%rax976leaq 16(%rdx),%rbx977shrq $4,%rcx978.byte 0xf3,0x0f,0xa7,216979980movl -4(%rdx),%eax981bswapl %eax982addl $0x10000,%eax983bswapl %eax984movl %eax,-4(%rdx)985986movq %r10,%rcx987subq %r11,%rcx988movq $1048576,%rbx989jz .Lctr32_exit990cmpq %rbx,%rcx991jae .Lctr32_aligned_loop992993.Lctr32_aligned_skip:994leaq (%rsi,%rcx,1),%rbp995negq %rbp996andq $0xfff,%rbp997xorl %eax,%eax998cmpq $32,%rbp999movq $32-1,%rbp1000cmovaeq %rax,%rbp1001andq %rcx,%rbp1002subq %rbp,%rcx1003jz .Lctr32_aligned_tail1004leaq -16(%rdx),%rax1005leaq 16(%rdx),%rbx1006shrq $4,%rcx1007.byte 0xf3,0x0f,0xa7,2161008testq %rbp,%rbp1009jz .Lctr32_exit10101011.Lctr32_aligned_tail:1012movq %rdi,%r81013movq %rbp,%rbx1014movq %rbp,%rcx1015leaq (%rsp),%rbp1016subq %rcx,%rsp1017shrq $3,%rcx1018leaq (%rsp),%rdi1019.byte 0xf3,0x48,0xa51020leaq (%r8),%rdi1021leaq (%rsp),%rsi1022movq %rbx,%rcx1023jmp .Lctr32_loop1024.Lctr32_exit:1025movl $1,%eax1026leaq 8(%rsp),%rsp1027.Lctr32_abort:1028popq %rbx1029popq %rbp1030.byte 0xf3,0xc31031.size padlock_ctr32_encrypt,.-padlock_ctr32_encrypt1032.byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95,54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,01033.align 161034.data1035.align 81036.Lpadlock_saved_context:1037.quad 01038.section ".note.gnu.property", "a"1039.p2align 31040.long 1f - 0f1041.long 4f - 1f1042.long 510430:1044# "GNU" encoded with .byte, since .asciz isn't supported1045# on Solaris.1046.byte 0x471047.byte 0x4e1048.byte 0x551049.byte 010501:1051.p2align 31052.long 0xc00000021053.long 3f - 2f10542:1055.long 310563:1057.p2align 310584:105910601061