Blame lib/accelerated/x86/elf/e_padlock-x86_64.s

Packit Service ff7022
# Copyright (c) 2011-2016, Andy Polyakov <appro@openssl.org>
Packit Service 4684c1
# All rights reserved.
Packit Service 4684c1
#
Packit Service 4684c1
# Redistribution and use in source and binary forms, with or without
Packit Service 4684c1
# modification, are permitted provided that the following conditions
Packit Service 4684c1
# are met:
Packit Service 4684c1
# 
Packit Service 4684c1
#     * Redistributions of source code must retain copyright notices,
Packit Service 4684c1
#      this list of conditions and the following disclaimer.
Packit Service 4684c1
#
Packit Service 4684c1
#     * Redistributions in binary form must reproduce the above
Packit Service 4684c1
#      copyright notice, this list of conditions and the following
Packit Service 4684c1
#      disclaimer in the documentation and/or other materials
Packit Service 4684c1
#      provided with the distribution.
Packit Service 4684c1
#
Packit Service 4684c1
#     * Neither the name of the Andy Polyakov nor the names of its
Packit Service 4684c1
#      copyright holder and contributors may be used to endorse or
Packit Service 4684c1
#      promote products derived from this software without specific
Packit Service 4684c1
#      prior written permission.
Packit Service 4684c1
#
Packit Service 4684c1
# ALTERNATIVELY, provided that this notice is retained in full, this
Packit Service 4684c1
# product may be distributed under the terms of the GNU General Public
Packit Service 4684c1
# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
Packit Service 4684c1
# those given above.
Packit Service 4684c1
#
Packit Service 4684c1
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
Packit Service 4684c1
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit Service 4684c1
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit Service 4684c1
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit Service 4684c1
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Packit Service 4684c1
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit Service 4684c1
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit Service 4684c1
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit Service 4684c1
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit Service 4684c1
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit Service 4684c1
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit Service 4684c1
#
Packit Service 4684c1
# *** This file is auto-generated ***
Packit Service 4684c1
#
Packit Service 4684c1
.text	
Packit Service 4684c1
.globl	padlock_capability
Packit Service 4684c1
.type	padlock_capability,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_capability:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rbx,%r8
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cpuid
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service ff7022
	cmpl	$0x746e6543,%ebx
Packit Service ff7022
	jne	.Lzhaoxin
Packit Service ff7022
	cmpl	$0x48727561,%edx
Packit Service 4684c1
	jne	.Lnoluck
Packit Service ff7022
	cmpl	$0x736c7561,%ecx
Packit Service 4684c1
	jne	.Lnoluck
Packit Service ff7022
	jmp	.LzhaoxinEnd
Packit Service ff7022
.Lzhaoxin:
Packit Service ff7022
	cmpl	$0x68532020,%ebx
Packit Service 4684c1
	jne	.Lnoluck
Packit Service ff7022
	cmpl	$0x68676e61,%edx
Packit Service ff7022
	jne	.Lnoluck
Packit Service ff7022
	cmpl	$0x20206961,%ecx
Packit Service ff7022
	jne	.Lnoluck
Packit Service ff7022
.LzhaoxinEnd:
Packit Service ff7022
	movl	$0xC0000000,%eax
Packit Service 4684c1
	cpuid
Packit Service 4684c1
	movl	%eax,%edx
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service ff7022
	cmpl	$0xC0000001,%edx
Packit Service 4684c1
	jb	.Lnoluck
Packit Service ff7022
	movl	$0xC0000001,%eax
Packit Service 4684c1
	cpuid
Packit Service 4684c1
	movl	%edx,%eax
Packit Service ff7022
	andl	$0xffffffef,%eax
Packit Service ff7022
	orl	$0x10,%eax
Packit Service 4684c1
.Lnoluck:
Packit Service 4684c1
	movq	%r8,%rbx
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_capability,.-padlock_capability
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_key_bswap
Packit Service 4684c1
.type	padlock_key_bswap,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_key_bswap:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movl	240(%rdi),%edx
Packit Service 4684c1
.Lbswap_loop:
Packit Service 4684c1
	movl	(%rdi),%eax
Packit Service 4684c1
	bswapl	%eax
Packit Service 4684c1
	movl	%eax,(%rdi)
Packit Service 4684c1
	leaq	4(%rdi),%rdi
Packit Service 4684c1
	subl	$1,%edx
Packit Service 4684c1
	jnz	.Lbswap_loop
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_key_bswap,.-padlock_key_bswap
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_verify_context
Packit Service 4684c1
.type	padlock_verify_context,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_verify_context:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rdi,%rdx
Packit Service 4684c1
	pushf
Packit Service 4684c1
	leaq	.Lpadlock_saved_context(%rip),%rax
Packit Service 4684c1
	call	_padlock_verify_ctx
Packit Service 4684c1
	leaq	8(%rsp),%rsp
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_verify_context,.-padlock_verify_context
Packit Service 4684c1
Packit Service 4684c1
.type	_padlock_verify_ctx,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
_padlock_verify_ctx:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	8(%rsp),%r8
Packit Service 4684c1
	btq	$30,%r8
Packit Service 4684c1
	jnc	.Lverified
Packit Service 4684c1
	cmpq	(%rax),%rdx
Packit Service 4684c1
	je	.Lverified
Packit Service 4684c1
	pushf
Packit Service 4684c1
	popf
Packit Service 4684c1
.Lverified:
Packit Service 4684c1
	movq	%rdx,(%rax)
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	_padlock_verify_ctx,.-_padlock_verify_ctx
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_reload_key
Packit Service 4684c1
.type	padlock_reload_key,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_reload_key:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	pushf
Packit Service 4684c1
	popf
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_reload_key,.-padlock_reload_key
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_aes_block
Packit Service 4684c1
.type	padlock_aes_block,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_aes_block:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rbx,%r8
Packit Service 4684c1
	movq	$1,%rcx
Packit Service 4684c1
	leaq	32(%rdx),%rbx
Packit Service 4684c1
	leaq	16(%rdx),%rdx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,0xc8
Packit Service 4684c1
	movq	%r8,%rbx
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_aes_block,.-padlock_aes_block
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_xstore
Packit Service 4684c1
.type	padlock_xstore,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_xstore:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movl	%esi,%edx
Packit Service ff7022
.byte	0x0f,0xa7,0xc0
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_xstore,.-padlock_xstore
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_sha1_oneshot
Packit Service 4684c1
.type	padlock_sha1_oneshot,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_sha1_oneshot:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rdx,%rcx
Packit Service 4684c1
	movq	%rdi,%rdx
Packit Service 4684c1
	movups	(%rdi),%xmm0
Packit Service 4684c1
	subq	$128+8,%rsp
Packit Service 4684c1
	movl	16(%rdi),%eax
Packit Service 4684c1
	movaps	%xmm0,(%rsp)
Packit Service 4684c1
	movq	%rsp,%rdi
Packit Service 4684c1
	movl	%eax,16(%rsp)
Packit Service 4684c1
	xorq	%rax,%rax
Packit Service ff7022
.byte	0xf3,0x0f,0xa6,0xc8
Packit Service 4684c1
	movaps	(%rsp),%xmm0
Packit Service 4684c1
	movl	16(%rsp),%eax
Packit Service 4684c1
	addq	$128+8,%rsp
Packit Service 4684c1
	movups	%xmm0,(%rdx)
Packit Service 4684c1
	movl	%eax,16(%rdx)
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_sha1_oneshot,.-padlock_sha1_oneshot
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_sha1_blocks
Packit Service 4684c1
.type	padlock_sha1_blocks,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_sha1_blocks:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rdx,%rcx
Packit Service 4684c1
	movq	%rdi,%rdx
Packit Service 4684c1
	movups	(%rdi),%xmm0
Packit Service 4684c1
	subq	$128+8,%rsp
Packit Service 4684c1
	movl	16(%rdi),%eax
Packit Service 4684c1
	movaps	%xmm0,(%rsp)
Packit Service 4684c1
	movq	%rsp,%rdi
Packit Service 4684c1
	movl	%eax,16(%rsp)
Packit Service 4684c1
	movq	$-1,%rax
Packit Service ff7022
.byte	0xf3,0x0f,0xa6,0xc8
Packit Service 4684c1
	movaps	(%rsp),%xmm0
Packit Service 4684c1
	movl	16(%rsp),%eax
Packit Service 4684c1
	addq	$128+8,%rsp
Packit Service 4684c1
	movups	%xmm0,(%rdx)
Packit Service 4684c1
	movl	%eax,16(%rdx)
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_sha1_blocks,.-padlock_sha1_blocks
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_sha256_oneshot
Packit Service 4684c1
.type	padlock_sha256_oneshot,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_sha256_oneshot:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rdx,%rcx
Packit Service 4684c1
	movq	%rdi,%rdx
Packit Service 4684c1
	movups	(%rdi),%xmm0
Packit Service 4684c1
	subq	$128+8,%rsp
Packit Service 4684c1
	movups	16(%rdi),%xmm1
Packit Service 4684c1
	movaps	%xmm0,(%rsp)
Packit Service 4684c1
	movq	%rsp,%rdi
Packit Service 4684c1
	movaps	%xmm1,16(%rsp)
Packit Service 4684c1
	xorq	%rax,%rax
Packit Service ff7022
.byte	0xf3,0x0f,0xa6,0xd0
Packit Service 4684c1
	movaps	(%rsp),%xmm0
Packit Service 4684c1
	movaps	16(%rsp),%xmm1
Packit Service 4684c1
	addq	$128+8,%rsp
Packit Service 4684c1
	movups	%xmm0,(%rdx)
Packit Service 4684c1
	movups	%xmm1,16(%rdx)
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_sha256_oneshot,.-padlock_sha256_oneshot
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_sha256_blocks
Packit Service 4684c1
.type	padlock_sha256_blocks,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_sha256_blocks:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rdx,%rcx
Packit Service 4684c1
	movq	%rdi,%rdx
Packit Service 4684c1
	movups	(%rdi),%xmm0
Packit Service 4684c1
	subq	$128+8,%rsp
Packit Service 4684c1
	movups	16(%rdi),%xmm1
Packit Service 4684c1
	movaps	%xmm0,(%rsp)
Packit Service 4684c1
	movq	%rsp,%rdi
Packit Service 4684c1
	movaps	%xmm1,16(%rsp)
Packit Service 4684c1
	movq	$-1,%rax
Packit Service ff7022
.byte	0xf3,0x0f,0xa6,0xd0
Packit Service 4684c1
	movaps	(%rsp),%xmm0
Packit Service 4684c1
	movaps	16(%rsp),%xmm1
Packit Service 4684c1
	addq	$128+8,%rsp
Packit Service 4684c1
	movups	%xmm0,(%rdx)
Packit Service 4684c1
	movups	%xmm1,16(%rdx)
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_sha256_blocks,.-padlock_sha256_blocks
Packit Service 4684c1
Packit Service 4684c1
.globl	padlock_sha512_blocks
Packit Service 4684c1
.type	padlock_sha512_blocks,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_sha512_blocks:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	movq	%rdx,%rcx
Packit Service 4684c1
	movq	%rdi,%rdx
Packit Service 4684c1
	movups	(%rdi),%xmm0
Packit Service 4684c1
	subq	$128+8,%rsp
Packit Service 4684c1
	movups	16(%rdi),%xmm1
Packit Service 4684c1
	movups	32(%rdi),%xmm2
Packit Service 4684c1
	movups	48(%rdi),%xmm3
Packit Service 4684c1
	movaps	%xmm0,(%rsp)
Packit Service 4684c1
	movq	%rsp,%rdi
Packit Service 4684c1
	movaps	%xmm1,16(%rsp)
Packit Service 4684c1
	movaps	%xmm2,32(%rsp)
Packit Service 4684c1
	movaps	%xmm3,48(%rsp)
Packit Service ff7022
.byte	0xf3,0x0f,0xa6,0xe0
Packit Service 4684c1
	movaps	(%rsp),%xmm0
Packit Service 4684c1
	movaps	16(%rsp),%xmm1
Packit Service 4684c1
	movaps	32(%rsp),%xmm2
Packit Service 4684c1
	movaps	48(%rsp),%xmm3
Packit Service 4684c1
	addq	$128+8,%rsp
Packit Service 4684c1
	movups	%xmm0,(%rdx)
Packit Service 4684c1
	movups	%xmm1,16(%rdx)
Packit Service 4684c1
	movups	%xmm2,32(%rdx)
Packit Service 4684c1
	movups	%xmm3,48(%rdx)
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_sha512_blocks,.-padlock_sha512_blocks
Packit Service 4684c1
.globl	padlock_ecb_encrypt
Packit Service 4684c1
.type	padlock_ecb_encrypt,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_ecb_encrypt:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	pushq	%rbp
Packit Service 4684c1
	pushq	%rbx
Packit Service 4684c1
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	testq	$15,%rdx
Packit Service 4684c1
	jnz	.Lecb_abort
Packit Service 4684c1
	testq	$15,%rcx
Packit Service 4684c1
	jnz	.Lecb_abort
Packit Service 4684c1
	leaq	.Lpadlock_saved_context(%rip),%rax
Packit Service 4684c1
	pushf
Packit Service 4684c1
	cld
Packit Service 4684c1
	call	_padlock_verify_ctx
Packit Service 4684c1
	leaq	16(%rdx),%rdx
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	xorl	%ebx,%ebx
Packit Service 4684c1
	testl	$32,(%rdx)
Packit Service 4684c1
	jnz	.Lecb_aligned
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	setz	%al
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	setz	%bl
Packit Service 4684c1
	testl	%ebx,%eax
Packit Service 4684c1
	jnz	.Lecb_aligned
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	notq	%rax
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	cmovcq	%rcx,%rbx
Packit Service 4684c1
	andq	%rbx,%rax
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	andq	$512-1,%rbx
Packit Service 4684c1
	leaq	(%rax,%rbp,1),%rsp
Packit Service 4684c1
	movq	$512,%rax
Packit Service 4684c1
	cmovzq	%rax,%rbx
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	ja	.Lecb_loop
Packit Service 4684c1
	movq	%rsi,%rax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rdi,%rax
Packit Service 4684c1
	addq	%rcx,%rax
Packit Service 4684c1
	negq	%rax
Packit Service ff7022
	andq	$0xfff,%rax
Packit Service 4684c1
	cmpq	$128,%rax
Packit Service 4684c1
	movq	$-128,%rax
Packit Service 4684c1
	cmovaeq	%rbx,%rax
Packit Service 4684c1
	andq	%rax,%rbx
Packit Service 4684c1
	jz	.Lecb_unaligned_tail
Packit Service 4684c1
	jmp	.Lecb_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lecb_loop:
Packit Service 4684c1
	cmpq	%rcx,%rbx
Packit Service 4684c1
	cmovaq	%rcx,%rbx
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rsi,%r9
Packit Service 4684c1
	movq	%rcx,%r10
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rbx,%r11
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	cmovnzq	%rsp,%rdi
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	jz	.Lecb_inp_aligned
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rdi,%rsi
Packit Service 4684c1
.Lecb_inp_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,200
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%r11,%rbx
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	jz	.Lecb_out_aligned
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
.Lecb_out_aligned:
Packit Service 4684c1
	movq	%r9,%rsi
Packit Service 4684c1
	movq	%r10,%rcx
Packit Service 4684c1
	addq	%rbx,%rdi
Packit Service 4684c1
	addq	%rbx,%rsi
Packit Service 4684c1
	subq	%rbx,%rcx
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	jz	.Lecb_break
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	jae	.Lecb_loop
Packit Service 4684c1
.Lecb_unaligned_tail:
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rcx,%rax
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	subq	%rax,%rsp
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rdi
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	movq	%rsp,%rsi
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	jmp	.Lecb_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lecb_break:
Packit Service 4684c1
	cmpq	%rbp,%rsp
Packit Service 4684c1
	je	.Lecb_done
Packit Service 4684c1
Packit Service 4684c1
	pxor	%xmm0,%xmm0
Packit Service 4684c1
	leaq	(%rsp),%rax
Packit Service 4684c1
.Lecb_bzero:
Packit Service 4684c1
	movaps	%xmm0,(%rax)
Packit Service 4684c1
	leaq	16(%rax),%rax
Packit Service 4684c1
	cmpq	%rax,%rbp
Packit Service 4684c1
	ja	.Lecb_bzero
Packit Service 4684c1
Packit Service 4684c1
.Lecb_done:
Packit Service 4684c1
	leaq	(%rbp),%rsp
Packit Service 4684c1
	jmp	.Lecb_exit
Packit Service 4684c1
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lecb_aligned:
Packit Service 4684c1
	leaq	(%rsi,%rcx,1),%rbp
Packit Service 4684c1
	negq	%rbp
Packit Service ff7022
	andq	$0xfff,%rbp
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cmpq	$128,%rbp
Packit Service 4684c1
	movq	$128-1,%rbp
Packit Service 4684c1
	cmovaeq	%rax,%rbp
Packit Service 4684c1
	andq	%rcx,%rbp
Packit Service 4684c1
	subq	%rbp,%rcx
Packit Service 4684c1
	jz	.Lecb_aligned_tail
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,200
Packit Service 4684c1
	testq	%rbp,%rbp
Packit Service 4684c1
	jz	.Lecb_exit
Packit Service 4684c1
Packit Service 4684c1
.Lecb_aligned_tail:
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rbp,%rbx
Packit Service 4684c1
	movq	%rbp,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	subq	%rcx,%rsp
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rdi
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	leaq	(%r8),%rdi
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	jmp	.Lecb_loop
Packit Service 4684c1
.Lecb_exit:
Packit Service 4684c1
	movl	$1,%eax
Packit Service 4684c1
	leaq	8(%rsp),%rsp
Packit Service 4684c1
.Lecb_abort:
Packit Service 4684c1
	popq	%rbx
Packit Service 4684c1
	popq	%rbp
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_ecb_encrypt,.-padlock_ecb_encrypt
Packit Service 4684c1
.globl	padlock_cbc_encrypt
Packit Service 4684c1
.type	padlock_cbc_encrypt,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_cbc_encrypt:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	pushq	%rbp
Packit Service 4684c1
	pushq	%rbx
Packit Service 4684c1
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	testq	$15,%rdx
Packit Service 4684c1
	jnz	.Lcbc_abort
Packit Service 4684c1
	testq	$15,%rcx
Packit Service 4684c1
	jnz	.Lcbc_abort
Packit Service 4684c1
	leaq	.Lpadlock_saved_context(%rip),%rax
Packit Service 4684c1
	pushf
Packit Service 4684c1
	cld
Packit Service 4684c1
	call	_padlock_verify_ctx
Packit Service 4684c1
	leaq	16(%rdx),%rdx
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	xorl	%ebx,%ebx
Packit Service 4684c1
	testl	$32,(%rdx)
Packit Service 4684c1
	jnz	.Lcbc_aligned
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	setz	%al
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	setz	%bl
Packit Service 4684c1
	testl	%ebx,%eax
Packit Service 4684c1
	jnz	.Lcbc_aligned
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	notq	%rax
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	cmovcq	%rcx,%rbx
Packit Service 4684c1
	andq	%rbx,%rax
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	andq	$512-1,%rbx
Packit Service 4684c1
	leaq	(%rax,%rbp,1),%rsp
Packit Service 4684c1
	movq	$512,%rax
Packit Service 4684c1
	cmovzq	%rax,%rbx
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	ja	.Lcbc_loop
Packit Service 4684c1
	movq	%rsi,%rax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rdi,%rax
Packit Service 4684c1
	addq	%rcx,%rax
Packit Service 4684c1
	negq	%rax
Packit Service ff7022
	andq	$0xfff,%rax
Packit Service 4684c1
	cmpq	$64,%rax
Packit Service 4684c1
	movq	$-64,%rax
Packit Service 4684c1
	cmovaeq	%rbx,%rax
Packit Service 4684c1
	andq	%rax,%rbx
Packit Service 4684c1
	jz	.Lcbc_unaligned_tail
Packit Service 4684c1
	jmp	.Lcbc_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lcbc_loop:
Packit Service 4684c1
	cmpq	%rcx,%rbx
Packit Service 4684c1
	cmovaq	%rcx,%rbx
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rsi,%r9
Packit Service 4684c1
	movq	%rcx,%r10
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rbx,%r11
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	cmovnzq	%rsp,%rdi
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	jz	.Lcbc_inp_aligned
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rdi,%rsi
Packit Service 4684c1
.Lcbc_inp_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,208
Packit Service 4684c1
	movdqa	(%rax),%xmm0
Packit Service 4684c1
	movdqa	%xmm0,-16(%rdx)
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%r11,%rbx
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	jz	.Lcbc_out_aligned
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
.Lcbc_out_aligned:
Packit Service 4684c1
	movq	%r9,%rsi
Packit Service 4684c1
	movq	%r10,%rcx
Packit Service 4684c1
	addq	%rbx,%rdi
Packit Service 4684c1
	addq	%rbx,%rsi
Packit Service 4684c1
	subq	%rbx,%rcx
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	jz	.Lcbc_break
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	jae	.Lcbc_loop
Packit Service 4684c1
.Lcbc_unaligned_tail:
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rcx,%rax
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	subq	%rax,%rsp
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rdi
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	movq	%rsp,%rsi
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	jmp	.Lcbc_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lcbc_break:
Packit Service 4684c1
	cmpq	%rbp,%rsp
Packit Service 4684c1
	je	.Lcbc_done
Packit Service 4684c1
Packit Service 4684c1
	pxor	%xmm0,%xmm0
Packit Service 4684c1
	leaq	(%rsp),%rax
Packit Service 4684c1
.Lcbc_bzero:
Packit Service 4684c1
	movaps	%xmm0,(%rax)
Packit Service 4684c1
	leaq	16(%rax),%rax
Packit Service 4684c1
	cmpq	%rax,%rbp
Packit Service 4684c1
	ja	.Lcbc_bzero
Packit Service 4684c1
Packit Service 4684c1
.Lcbc_done:
Packit Service 4684c1
	leaq	(%rbp),%rsp
Packit Service 4684c1
	jmp	.Lcbc_exit
Packit Service 4684c1
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lcbc_aligned:
Packit Service 4684c1
	leaq	(%rsi,%rcx,1),%rbp
Packit Service 4684c1
	negq	%rbp
Packit Service ff7022
	andq	$0xfff,%rbp
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cmpq	$64,%rbp
Packit Service 4684c1
	movq	$64-1,%rbp
Packit Service 4684c1
	cmovaeq	%rax,%rbp
Packit Service 4684c1
	andq	%rcx,%rbp
Packit Service 4684c1
	subq	%rbp,%rcx
Packit Service 4684c1
	jz	.Lcbc_aligned_tail
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,208
Packit Service 4684c1
	movdqa	(%rax),%xmm0
Packit Service 4684c1
	movdqa	%xmm0,-16(%rdx)
Packit Service 4684c1
	testq	%rbp,%rbp
Packit Service 4684c1
	jz	.Lcbc_exit
Packit Service 4684c1
Packit Service 4684c1
.Lcbc_aligned_tail:
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rbp,%rbx
Packit Service 4684c1
	movq	%rbp,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	subq	%rcx,%rsp
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rdi
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	leaq	(%r8),%rdi
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	jmp	.Lcbc_loop
Packit Service 4684c1
.Lcbc_exit:
Packit Service 4684c1
	movl	$1,%eax
Packit Service 4684c1
	leaq	8(%rsp),%rsp
Packit Service 4684c1
.Lcbc_abort:
Packit Service 4684c1
	popq	%rbx
Packit Service 4684c1
	popq	%rbp
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_cbc_encrypt,.-padlock_cbc_encrypt
Packit Service 4684c1
.globl	padlock_cfb_encrypt
Packit Service 4684c1
.type	padlock_cfb_encrypt,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_cfb_encrypt:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	pushq	%rbp
Packit Service 4684c1
	pushq	%rbx
Packit Service 4684c1
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	testq	$15,%rdx
Packit Service 4684c1
	jnz	.Lcfb_abort
Packit Service 4684c1
	testq	$15,%rcx
Packit Service 4684c1
	jnz	.Lcfb_abort
Packit Service 4684c1
	leaq	.Lpadlock_saved_context(%rip),%rax
Packit Service 4684c1
	pushf
Packit Service 4684c1
	cld
Packit Service 4684c1
	call	_padlock_verify_ctx
Packit Service 4684c1
	leaq	16(%rdx),%rdx
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	xorl	%ebx,%ebx
Packit Service 4684c1
	testl	$32,(%rdx)
Packit Service 4684c1
	jnz	.Lcfb_aligned
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	setz	%al
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	setz	%bl
Packit Service 4684c1
	testl	%ebx,%eax
Packit Service 4684c1
	jnz	.Lcfb_aligned
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	notq	%rax
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	cmovcq	%rcx,%rbx
Packit Service 4684c1
	andq	%rbx,%rax
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	andq	$512-1,%rbx
Packit Service 4684c1
	leaq	(%rax,%rbp,1),%rsp
Packit Service 4684c1
	movq	$512,%rax
Packit Service 4684c1
	cmovzq	%rax,%rbx
Packit Service 4684c1
	jmp	.Lcfb_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lcfb_loop:
Packit Service 4684c1
	cmpq	%rcx,%rbx
Packit Service 4684c1
	cmovaq	%rcx,%rbx
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rsi,%r9
Packit Service 4684c1
	movq	%rcx,%r10
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rbx,%r11
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	cmovnzq	%rsp,%rdi
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	jz	.Lcfb_inp_aligned
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rdi,%rsi
Packit Service 4684c1
.Lcfb_inp_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,224
Packit Service 4684c1
	movdqa	(%rax),%xmm0
Packit Service 4684c1
	movdqa	%xmm0,-16(%rdx)
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%r11,%rbx
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	jz	.Lcfb_out_aligned
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
.Lcfb_out_aligned:
Packit Service 4684c1
	movq	%r9,%rsi
Packit Service 4684c1
	movq	%r10,%rcx
Packit Service 4684c1
	addq	%rbx,%rdi
Packit Service 4684c1
	addq	%rbx,%rsi
Packit Service 4684c1
	subq	%rbx,%rcx
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	jnz	.Lcfb_loop
Packit Service 4684c1
	cmpq	%rbp,%rsp
Packit Service 4684c1
	je	.Lcfb_done
Packit Service 4684c1
Packit Service 4684c1
	pxor	%xmm0,%xmm0
Packit Service 4684c1
	leaq	(%rsp),%rax
Packit Service 4684c1
.Lcfb_bzero:
Packit Service 4684c1
	movaps	%xmm0,(%rax)
Packit Service 4684c1
	leaq	16(%rax),%rax
Packit Service 4684c1
	cmpq	%rax,%rbp
Packit Service 4684c1
	ja	.Lcfb_bzero
Packit Service 4684c1
Packit Service 4684c1
.Lcfb_done:
Packit Service 4684c1
	leaq	(%rbp),%rsp
Packit Service 4684c1
	jmp	.Lcfb_exit
Packit Service 4684c1
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lcfb_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,224
Packit Service 4684c1
	movdqa	(%rax),%xmm0
Packit Service 4684c1
	movdqa	%xmm0,-16(%rdx)
Packit Service 4684c1
.Lcfb_exit:
Packit Service 4684c1
	movl	$1,%eax
Packit Service 4684c1
	leaq	8(%rsp),%rsp
Packit Service 4684c1
.Lcfb_abort:
Packit Service 4684c1
	popq	%rbx
Packit Service 4684c1
	popq	%rbp
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_cfb_encrypt,.-padlock_cfb_encrypt
Packit Service 4684c1
.globl	padlock_ofb_encrypt
Packit Service 4684c1
.type	padlock_ofb_encrypt,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_ofb_encrypt:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	pushq	%rbp
Packit Service 4684c1
	pushq	%rbx
Packit Service 4684c1
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	testq	$15,%rdx
Packit Service 4684c1
	jnz	.Lofb_abort
Packit Service 4684c1
	testq	$15,%rcx
Packit Service 4684c1
	jnz	.Lofb_abort
Packit Service 4684c1
	leaq	.Lpadlock_saved_context(%rip),%rax
Packit Service 4684c1
	pushf
Packit Service 4684c1
	cld
Packit Service 4684c1
	call	_padlock_verify_ctx
Packit Service 4684c1
	leaq	16(%rdx),%rdx
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	xorl	%ebx,%ebx
Packit Service 4684c1
	testl	$32,(%rdx)
Packit Service 4684c1
	jnz	.Lofb_aligned
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	setz	%al
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	setz	%bl
Packit Service 4684c1
	testl	%ebx,%eax
Packit Service 4684c1
	jnz	.Lofb_aligned
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	notq	%rax
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	cmovcq	%rcx,%rbx
Packit Service 4684c1
	andq	%rbx,%rax
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	andq	$512-1,%rbx
Packit Service 4684c1
	leaq	(%rax,%rbp,1),%rsp
Packit Service 4684c1
	movq	$512,%rax
Packit Service 4684c1
	cmovzq	%rax,%rbx
Packit Service 4684c1
	jmp	.Lofb_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lofb_loop:
Packit Service 4684c1
	cmpq	%rcx,%rbx
Packit Service 4684c1
	cmovaq	%rcx,%rbx
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rsi,%r9
Packit Service 4684c1
	movq	%rcx,%r10
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rbx,%r11
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	cmovnzq	%rsp,%rdi
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	jz	.Lofb_inp_aligned
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rdi,%rsi
Packit Service 4684c1
.Lofb_inp_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,232
Packit Service 4684c1
	movdqa	(%rax),%xmm0
Packit Service 4684c1
	movdqa	%xmm0,-16(%rdx)
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%r11,%rbx
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	jz	.Lofb_out_aligned
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
.Lofb_out_aligned:
Packit Service 4684c1
	movq	%r9,%rsi
Packit Service 4684c1
	movq	%r10,%rcx
Packit Service 4684c1
	addq	%rbx,%rdi
Packit Service 4684c1
	addq	%rbx,%rsi
Packit Service 4684c1
	subq	%rbx,%rcx
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	jnz	.Lofb_loop
Packit Service 4684c1
	cmpq	%rbp,%rsp
Packit Service 4684c1
	je	.Lofb_done
Packit Service 4684c1
Packit Service 4684c1
	pxor	%xmm0,%xmm0
Packit Service 4684c1
	leaq	(%rsp),%rax
Packit Service 4684c1
.Lofb_bzero:
Packit Service 4684c1
	movaps	%xmm0,(%rax)
Packit Service 4684c1
	leaq	16(%rax),%rax
Packit Service 4684c1
	cmpq	%rax,%rbp
Packit Service 4684c1
	ja	.Lofb_bzero
Packit Service 4684c1
Packit Service 4684c1
.Lofb_done:
Packit Service 4684c1
	leaq	(%rbp),%rsp
Packit Service 4684c1
	jmp	.Lofb_exit
Packit Service 4684c1
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lofb_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,232
Packit Service 4684c1
	movdqa	(%rax),%xmm0
Packit Service 4684c1
	movdqa	%xmm0,-16(%rdx)
Packit Service 4684c1
.Lofb_exit:
Packit Service 4684c1
	movl	$1,%eax
Packit Service 4684c1
	leaq	8(%rsp),%rsp
Packit Service 4684c1
.Lofb_abort:
Packit Service 4684c1
	popq	%rbx
Packit Service 4684c1
	popq	%rbp
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_ofb_encrypt,.-padlock_ofb_encrypt
Packit Service 4684c1
.globl	padlock_ctr32_encrypt
Packit Service 4684c1
.type	padlock_ctr32_encrypt,@function
Packit Service 4684c1
.align	16
Packit Service 4684c1
padlock_ctr32_encrypt:
Packit Service ff7022
.cfi_startproc	
Packit Service ff7022
.byte	243,15,30,250
Packit Service 4684c1
	pushq	%rbp
Packit Service 4684c1
	pushq	%rbx
Packit Service 4684c1
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	testq	$15,%rdx
Packit Service 4684c1
	jnz	.Lctr32_abort
Packit Service 4684c1
	testq	$15,%rcx
Packit Service 4684c1
	jnz	.Lctr32_abort
Packit Service 4684c1
	leaq	.Lpadlock_saved_context(%rip),%rax
Packit Service 4684c1
	pushf
Packit Service 4684c1
	cld
Packit Service 4684c1
	call	_padlock_verify_ctx
Packit Service 4684c1
	leaq	16(%rdx),%rdx
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	xorl	%ebx,%ebx
Packit Service 4684c1
	testl	$32,(%rdx)
Packit Service 4684c1
	jnz	.Lctr32_aligned
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	setz	%al
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	setz	%bl
Packit Service 4684c1
	testl	%ebx,%eax
Packit Service 4684c1
	jnz	.Lctr32_aligned
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	notq	%rax
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	cmovcq	%rcx,%rbx
Packit Service 4684c1
	andq	%rbx,%rax
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	negq	%rax
Packit Service 4684c1
	andq	$512-1,%rbx
Packit Service 4684c1
	leaq	(%rax,%rbp,1),%rsp
Packit Service 4684c1
	movq	$512,%rax
Packit Service 4684c1
	cmovzq	%rax,%rbx
Packit Service 4684c1
.Lctr32_reenter:
Packit Service 4684c1
	movl	-4(%rdx),%eax
Packit Service 4684c1
	bswapl	%eax
Packit Service 4684c1
	negl	%eax
Packit Service 4684c1
	andl	$31,%eax
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	shll	$4,%eax
Packit Service 4684c1
	cmovzq	%rbx,%rax
Packit Service 4684c1
	cmpq	%rax,%rcx
Packit Service 4684c1
	cmovaq	%rax,%rbx
Packit Service 4684c1
	cmovbeq	%rcx,%rbx
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	ja	.Lctr32_loop
Packit Service 4684c1
	movq	%rsi,%rax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rdi,%rax
Packit Service 4684c1
	addq	%rcx,%rax
Packit Service 4684c1
	negq	%rax
Packit Service ff7022
	andq	$0xfff,%rax
Packit Service 4684c1
	cmpq	$32,%rax
Packit Service 4684c1
	movq	$-32,%rax
Packit Service 4684c1
	cmovaeq	%rbx,%rax
Packit Service 4684c1
	andq	%rax,%rbx
Packit Service 4684c1
	jz	.Lctr32_unaligned_tail
Packit Service 4684c1
	jmp	.Lctr32_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lctr32_loop:
Packit Service 4684c1
	cmpq	%rcx,%rbx
Packit Service 4684c1
	cmovaq	%rcx,%rbx
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rsi,%r9
Packit Service 4684c1
	movq	%rcx,%r10
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rbx,%r11
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	cmovnzq	%rsp,%rdi
Packit Service ff7022
	testq	$0x0f,%rsi
Packit Service 4684c1
	jz	.Lctr32_inp_aligned
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rdi,%rsi
Packit Service 4684c1
.Lctr32_inp_aligned:
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,216
Packit Service 4684c1
	movl	-4(%rdx),%eax
Packit Service ff7022
	testl	$0xffff0000,%eax
Packit Service 4684c1
	jnz	.Lctr32_no_carry
Packit Service 4684c1
	bswapl	%eax
Packit Service ff7022
	addl	$0x10000,%eax
Packit Service 4684c1
	bswapl	%eax
Packit Service 4684c1
	movl	%eax,-4(%rdx)
Packit Service 4684c1
.Lctr32_no_carry:
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%r11,%rbx
Packit Service ff7022
	testq	$0x0f,%rdi
Packit Service 4684c1
	jz	.Lctr32_out_aligned
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	subq	%rbx,%rdi
Packit Service 4684c1
.Lctr32_out_aligned:
Packit Service 4684c1
	movq	%r9,%rsi
Packit Service 4684c1
	movq	%r10,%rcx
Packit Service 4684c1
	addq	%rbx,%rdi
Packit Service 4684c1
	addq	%rbx,%rsi
Packit Service 4684c1
	subq	%rbx,%rcx
Packit Service 4684c1
	movq	$512,%rbx
Packit Service 4684c1
	jz	.Lctr32_break
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	jae	.Lctr32_loop
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	movq	%rsi,%rax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rdi,%rax
Packit Service 4684c1
	addq	%rcx,%rax
Packit Service 4684c1
	negq	%rax
Packit Service ff7022
	andq	$0xfff,%rax
Packit Service 4684c1
	cmpq	$32,%rax
Packit Service 4684c1
	movq	$-32,%rax
Packit Service 4684c1
	cmovaeq	%rbx,%rax
Packit Service 4684c1
	andq	%rax,%rbx
Packit Service 4684c1
	jnz	.Lctr32_loop
Packit Service 4684c1
.Lctr32_unaligned_tail:
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cmpq	%rsp,%rbp
Packit Service 4684c1
	cmoveq	%rcx,%rax
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rcx,%rbx
Packit Service 4684c1
	subq	%rax,%rsp
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rdi
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	movq	%rsp,%rsi
Packit Service 4684c1
	movq	%r8,%rdi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	jmp	.Lctr32_loop
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lctr32_break:
Packit Service 4684c1
	cmpq	%rbp,%rsp
Packit Service 4684c1
	je	.Lctr32_done
Packit Service 4684c1
Packit Service 4684c1
	pxor	%xmm0,%xmm0
Packit Service 4684c1
	leaq	(%rsp),%rax
Packit Service 4684c1
.Lctr32_bzero:
Packit Service 4684c1
	movaps	%xmm0,(%rax)
Packit Service 4684c1
	leaq	16(%rax),%rax
Packit Service 4684c1
	cmpq	%rax,%rbp
Packit Service 4684c1
	ja	.Lctr32_bzero
Packit Service 4684c1
Packit Service 4684c1
.Lctr32_done:
Packit Service 4684c1
	leaq	(%rbp),%rsp
Packit Service 4684c1
	jmp	.Lctr32_exit
Packit Service 4684c1
Packit Service 4684c1
.align	16
Packit Service 4684c1
.Lctr32_aligned:
Packit Service 4684c1
	movl	-4(%rdx),%eax
Packit Service 4684c1
	bswapl	%eax
Packit Service 4684c1
	negl	%eax
Packit Service ff7022
	andl	$0xffff,%eax
Packit Service 4684c1
	movq	$1048576,%rbx
Packit Service 4684c1
	shll	$4,%eax
Packit Service 4684c1
	cmovzq	%rbx,%rax
Packit Service 4684c1
	cmpq	%rax,%rcx
Packit Service 4684c1
	cmovaq	%rax,%rbx
Packit Service 4684c1
	cmovbeq	%rcx,%rbx
Packit Service 4684c1
	jbe	.Lctr32_aligned_skip
Packit Service 4684c1
Packit Service 4684c1
.Lctr32_aligned_loop:
Packit Service 4684c1
	movq	%rcx,%r10
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	movq	%rbx,%r11
Packit Service 4684c1
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,216
Packit Service 4684c1
Packit Service 4684c1
	movl	-4(%rdx),%eax
Packit Service 4684c1
	bswapl	%eax
Packit Service ff7022
	addl	$0x10000,%eax
Packit Service 4684c1
	bswapl	%eax
Packit Service 4684c1
	movl	%eax,-4(%rdx)
Packit Service 4684c1
Packit Service 4684c1
	movq	%r10,%rcx
Packit Service 4684c1
	subq	%r11,%rcx
Packit Service 4684c1
	movq	$1048576,%rbx
Packit Service 4684c1
	jz	.Lctr32_exit
Packit Service 4684c1
	cmpq	%rbx,%rcx
Packit Service 4684c1
	jae	.Lctr32_aligned_loop
Packit Service 4684c1
Packit Service 4684c1
.Lctr32_aligned_skip:
Packit Service 4684c1
	leaq	(%rsi,%rcx,1),%rbp
Packit Service 4684c1
	negq	%rbp
Packit Service ff7022
	andq	$0xfff,%rbp
Packit Service 4684c1
	xorl	%eax,%eax
Packit Service 4684c1
	cmpq	$32,%rbp
Packit Service 4684c1
	movq	$32-1,%rbp
Packit Service 4684c1
	cmovaeq	%rax,%rbp
Packit Service 4684c1
	andq	%rcx,%rbp
Packit Service 4684c1
	subq	%rbp,%rcx
Packit Service 4684c1
	jz	.Lctr32_aligned_tail
Packit Service 4684c1
	leaq	-16(%rdx),%rax
Packit Service 4684c1
	leaq	16(%rdx),%rbx
Packit Service 4684c1
	shrq	$4,%rcx
Packit Service ff7022
.byte	0xf3,0x0f,0xa7,216
Packit Service 4684c1
	testq	%rbp,%rbp
Packit Service 4684c1
	jz	.Lctr32_exit
Packit Service 4684c1
Packit Service 4684c1
.Lctr32_aligned_tail:
Packit Service 4684c1
	movq	%rdi,%r8
Packit Service 4684c1
	movq	%rbp,%rbx
Packit Service 4684c1
	movq	%rbp,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rbp
Packit Service 4684c1
	subq	%rcx,%rsp
Packit Service 4684c1
	shrq	$3,%rcx
Packit Service 4684c1
	leaq	(%rsp),%rdi
Packit Service ff7022
.byte	0xf3,0x48,0xa5
Packit Service 4684c1
	leaq	(%r8),%rdi
Packit Service 4684c1
	leaq	(%rsp),%rsi
Packit Service 4684c1
	movq	%rbx,%rcx
Packit Service 4684c1
	jmp	.Lctr32_loop
Packit Service 4684c1
.Lctr32_exit:
Packit Service 4684c1
	movl	$1,%eax
Packit Service 4684c1
	leaq	8(%rsp),%rsp
Packit Service 4684c1
.Lctr32_abort:
Packit Service 4684c1
	popq	%rbx
Packit Service 4684c1
	popq	%rbp
Packit Service 4684c1
	.byte	0xf3,0xc3
Packit Service ff7022
.cfi_endproc	
Packit Service 4684c1
.size	padlock_ctr32_encrypt,.-padlock_ctr32_encrypt
Packit Service 4684c1
.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,0
Packit Service 4684c1
.align	16
Packit Service 4684c1
.data	
Packit Service 4684c1
.align	8
Packit Service 4684c1
.Lpadlock_saved_context:
Packit Service 4684c1
.quad	0
Packit Service ff7022
	.section ".note.gnu.property", "a"
Packit Service ff7022
	.p2align 3
Packit Service ff7022
	.long 1f - 0f
Packit Service ff7022
	.long 4f - 1f
Packit Service ff7022
	.long 5
Packit Service ff7022
0:
Packit Service ff7022
	# "GNU" encoded with .byte, since .asciz isn't supported
Packit Service ff7022
	# on Solaris.
Packit Service ff7022
	.byte 0x47
Packit Service ff7022
	.byte 0x4e
Packit Service ff7022
	.byte 0x55
Packit Service ff7022
	.byte 0
Packit Service ff7022
1:
Packit Service ff7022
	.p2align 3
Packit Service ff7022
	.long 0xc0000002
Packit Service ff7022
	.long 3f - 2f
Packit Service ff7022
2:
Packit Service ff7022
	.long 3
Packit Service ff7022
3:
Packit Service ff7022
	.p2align 3
Packit Service ff7022
4:
Packit Service 4684c1
Packit Service 4684c1
.section .note.GNU-stack,"",%progbits