Blame lib/accelerated/x86/macosx/aesni-gcm-x86_64.s

Packit Service 991b93
# Copyright (c) 2011-2016, Andy Polyakov <appro@openssl.org>
Packit aea12f
# All rights reserved.
Packit aea12f
#
Packit aea12f
# Redistribution and use in source and binary forms, with or without
Packit aea12f
# modification, are permitted provided that the following conditions
Packit aea12f
# are met:
Packit aea12f
# 
Packit aea12f
#     * Redistributions of source code must retain copyright notices,
Packit aea12f
#      this list of conditions and the following disclaimer.
Packit aea12f
#
Packit aea12f
#     * Redistributions in binary form must reproduce the above
Packit aea12f
#      copyright notice, this list of conditions and the following
Packit aea12f
#      disclaimer in the documentation and/or other materials
Packit aea12f
#      provided with the distribution.
Packit aea12f
#
Packit aea12f
#     * Neither the name of the Andy Polyakov nor the names of its
Packit aea12f
#      copyright holder and contributors may be used to endorse or
Packit aea12f
#      promote products derived from this software without specific
Packit aea12f
#      prior written permission.
Packit aea12f
#
Packit aea12f
# ALTERNATIVELY, provided that this notice is retained in full, this
Packit aea12f
# product may be distributed under the terms of the GNU General Public
Packit aea12f
# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
Packit aea12f
# those given above.
Packit aea12f
#
Packit aea12f
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
Packit aea12f
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit aea12f
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit aea12f
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit aea12f
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Packit aea12f
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit aea12f
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit aea12f
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit aea12f
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit aea12f
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit aea12f
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit aea12f
#
Packit aea12f
# *** This file is auto-generated ***
Packit aea12f
#
Packit aea12f
.text	
Packit aea12f
Packit aea12f
Packit aea12f
.p2align	5
Packit aea12f
_aesni_ctr32_ghash_6x:
Packit aea12f
	vmovdqu	32(%r11),%xmm2
Packit aea12f
	subq	$6,%rdx
Packit aea12f
	vpxor	%xmm4,%xmm4,%xmm4
Packit aea12f
	vmovdqu	0-128(%rcx),%xmm15
Packit aea12f
	vpaddb	%xmm2,%xmm1,%xmm10
Packit aea12f
	vpaddb	%xmm2,%xmm10,%xmm11
Packit aea12f
	vpaddb	%xmm2,%xmm11,%xmm12
Packit aea12f
	vpaddb	%xmm2,%xmm12,%xmm13
Packit aea12f
	vpaddb	%xmm2,%xmm13,%xmm14
Packit aea12f
	vpxor	%xmm15,%xmm1,%xmm9
Packit aea12f
	vmovdqu	%xmm4,16+8(%rsp)
Packit aea12f
	jmp	L$oop6x
Packit aea12f
Packit aea12f
.p2align	5
Packit aea12f
L$oop6x:
Packit aea12f
	addl	$100663296,%ebx
Packit aea12f
	jc	L$handle_ctr32
Packit aea12f
	vmovdqu	0-32(%r9),%xmm3
Packit aea12f
	vpaddb	%xmm2,%xmm14,%xmm1
Packit aea12f
	vpxor	%xmm15,%xmm10,%xmm10
Packit aea12f
	vpxor	%xmm15,%xmm11,%xmm11
Packit aea12f
Packit aea12f
L$resume_ctr32:
Packit aea12f
	vmovdqu	%xmm1,(%r8)
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm7,%xmm5
Packit aea12f
	vpxor	%xmm15,%xmm12,%xmm12
Packit aea12f
	vmovups	16-128(%rcx),%xmm2
Packit aea12f
	vpclmulqdq	$0x01,%xmm3,%xmm7,%xmm6
Packit aea12f
	xorq	%r12,%r12
Packit aea12f
	cmpq	%r14,%r15
Packit aea12f
Packit aea12f
	vaesenc	%xmm2,%xmm9,%xmm9
Packit aea12f
	vmovdqu	48+8(%rsp),%xmm0
Packit aea12f
	vpxor	%xmm15,%xmm13,%xmm13
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm7,%xmm1
Packit aea12f
	vaesenc	%xmm2,%xmm10,%xmm10
Packit aea12f
	vpxor	%xmm15,%xmm14,%xmm14
Packit aea12f
	setnc	%r12b
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm7,%xmm7
Packit aea12f
	vaesenc	%xmm2,%xmm11,%xmm11
Packit aea12f
	vmovdqu	16-32(%r9),%xmm3
Packit aea12f
	negq	%r12
Packit aea12f
	vaesenc	%xmm2,%xmm12,%xmm12
Packit aea12f
	vpxor	%xmm5,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm0,%xmm5
Packit aea12f
	vpxor	%xmm4,%xmm8,%xmm8
Packit aea12f
	vaesenc	%xmm2,%xmm13,%xmm13
Packit aea12f
	vpxor	%xmm5,%xmm1,%xmm4
Packit aea12f
	andq	$0x60,%r12
Packit aea12f
	vmovups	32-128(%rcx),%xmm15
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm0,%xmm1
Packit aea12f
	vaesenc	%xmm2,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x01,%xmm3,%xmm0,%xmm2
Packit aea12f
	leaq	(%r14,%r12,1),%r14
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	16+8(%rsp),%xmm8,%xmm8
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm0,%xmm3
Packit aea12f
	vmovdqu	64+8(%rsp),%xmm0
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	movbeq	88(%r14),%r13
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	movbeq	80(%r14),%r12
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	movq	%r13,32+8(%rsp)
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	movq	%r12,40+8(%rsp)
Packit aea12f
	vmovdqu	48-32(%r9),%xmm5
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vmovups	48-128(%rcx),%xmm15
Packit aea12f
	vpxor	%xmm1,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x00,%xmm5,%xmm0,%xmm1
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm2,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x10,%xmm5,%xmm0,%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vpxor	%xmm3,%xmm7,%xmm7
Packit aea12f
	vpclmulqdq	$0x01,%xmm5,%xmm0,%xmm3
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	vpclmulqdq	$0x11,%xmm5,%xmm0,%xmm5
Packit aea12f
	vmovdqu	80+8(%rsp),%xmm0
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vpxor	%xmm1,%xmm4,%xmm4
Packit aea12f
	vmovdqu	64-32(%r9),%xmm1
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vmovups	64-128(%rcx),%xmm15
Packit aea12f
	vpxor	%xmm2,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x00,%xmm1,%xmm0,%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm3,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x10,%xmm1,%xmm0,%xmm3
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	movbeq	72(%r14),%r13
Packit aea12f
	vpxor	%xmm5,%xmm7,%xmm7
Packit aea12f
	vpclmulqdq	$0x01,%xmm1,%xmm0,%xmm5
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	movbeq	64(%r14),%r12
Packit aea12f
	vpclmulqdq	$0x11,%xmm1,%xmm0,%xmm1
Packit aea12f
	vmovdqu	96+8(%rsp),%xmm0
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	movq	%r13,48+8(%rsp)
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	movq	%r12,56+8(%rsp)
Packit aea12f
	vpxor	%xmm2,%xmm4,%xmm4
Packit aea12f
	vmovdqu	96-32(%r9),%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vmovups	80-128(%rcx),%xmm15
Packit aea12f
	vpxor	%xmm3,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x00,%xmm2,%xmm0,%xmm3
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm5,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x10,%xmm2,%xmm0,%xmm5
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	movbeq	56(%r14),%r13
Packit aea12f
	vpxor	%xmm1,%xmm7,%xmm7
Packit aea12f
	vpclmulqdq	$0x01,%xmm2,%xmm0,%xmm1
Packit aea12f
	vpxor	112+8(%rsp),%xmm8,%xmm8
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	movbeq	48(%r14),%r12
Packit aea12f
	vpclmulqdq	$0x11,%xmm2,%xmm0,%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	movq	%r13,64+8(%rsp)
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	movq	%r12,72+8(%rsp)
Packit aea12f
	vpxor	%xmm3,%xmm4,%xmm4
Packit aea12f
	vmovdqu	112-32(%r9),%xmm3
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vmovups	96-128(%rcx),%xmm15
Packit aea12f
	vpxor	%xmm5,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm8,%xmm5
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm1,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x01,%xmm3,%xmm8,%xmm1
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	movbeq	40(%r14),%r13
Packit aea12f
	vpxor	%xmm2,%xmm7,%xmm7
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm8,%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	movbeq	32(%r14),%r12
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm8,%xmm8
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	movq	%r13,80+8(%rsp)
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	movq	%r12,88+8(%rsp)
Packit aea12f
	vpxor	%xmm5,%xmm6,%xmm6
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
	vpxor	%xmm1,%xmm6,%xmm6
Packit aea12f
Packit aea12f
	vmovups	112-128(%rcx),%xmm15
Packit aea12f
	vpslldq	$8,%xmm6,%xmm5
Packit aea12f
	vpxor	%xmm2,%xmm4,%xmm4
Packit aea12f
	vmovdqu	16(%r11),%xmm3
Packit aea12f
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm8,%xmm7,%xmm7
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vpxor	%xmm5,%xmm4,%xmm4
Packit aea12f
	movbeq	24(%r14),%r13
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	movbeq	16(%r14),%r12
Packit aea12f
	vpalignr	$8,%xmm4,%xmm4,%xmm0
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm4,%xmm4
Packit aea12f
	movq	%r13,96+8(%rsp)
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	movq	%r12,104+8(%rsp)
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vmovups	128-128(%rcx),%xmm1
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vaesenc	%xmm1,%xmm9,%xmm9
Packit aea12f
	vmovups	144-128(%rcx),%xmm15
Packit aea12f
	vaesenc	%xmm1,%xmm10,%xmm10
Packit aea12f
	vpsrldq	$8,%xmm6,%xmm6
Packit aea12f
	vaesenc	%xmm1,%xmm11,%xmm11
Packit aea12f
	vpxor	%xmm6,%xmm7,%xmm7
Packit aea12f
	vaesenc	%xmm1,%xmm12,%xmm12
Packit aea12f
	vpxor	%xmm0,%xmm4,%xmm4
Packit aea12f
	movbeq	8(%r14),%r13
Packit aea12f
	vaesenc	%xmm1,%xmm13,%xmm13
Packit aea12f
	movbeq	0(%r14),%r12
Packit aea12f
	vaesenc	%xmm1,%xmm14,%xmm14
Packit aea12f
	vmovups	160-128(%rcx),%xmm1
Packit aea12f
	cmpl	$11,%ebp
Packit aea12f
	jb	L$enc_tail
Packit aea12f
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vaesenc	%xmm1,%xmm9,%xmm9
Packit aea12f
	vaesenc	%xmm1,%xmm10,%xmm10
Packit aea12f
	vaesenc	%xmm1,%xmm11,%xmm11
Packit aea12f
	vaesenc	%xmm1,%xmm12,%xmm12
Packit aea12f
	vaesenc	%xmm1,%xmm13,%xmm13
Packit aea12f
	vmovups	176-128(%rcx),%xmm15
Packit aea12f
	vaesenc	%xmm1,%xmm14,%xmm14
Packit aea12f
	vmovups	192-128(%rcx),%xmm1
Packit aea12f
	je	L$enc_tail
Packit aea12f
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
Packit aea12f
	vaesenc	%xmm1,%xmm9,%xmm9
Packit aea12f
	vaesenc	%xmm1,%xmm10,%xmm10
Packit aea12f
	vaesenc	%xmm1,%xmm11,%xmm11
Packit aea12f
	vaesenc	%xmm1,%xmm12,%xmm12
Packit aea12f
	vaesenc	%xmm1,%xmm13,%xmm13
Packit aea12f
	vmovups	208-128(%rcx),%xmm15
Packit aea12f
	vaesenc	%xmm1,%xmm14,%xmm14
Packit aea12f
	vmovups	224-128(%rcx),%xmm1
Packit aea12f
	jmp	L$enc_tail
Packit aea12f
Packit aea12f
.p2align	5
Packit aea12f
L$handle_ctr32:
Packit aea12f
	vmovdqu	(%r11),%xmm0
Packit aea12f
	vpshufb	%xmm0,%xmm1,%xmm6
Packit aea12f
	vmovdqu	48(%r11),%xmm5
Packit aea12f
	vpaddd	64(%r11),%xmm6,%xmm10
Packit aea12f
	vpaddd	%xmm5,%xmm6,%xmm11
Packit aea12f
	vmovdqu	0-32(%r9),%xmm3
Packit aea12f
	vpaddd	%xmm5,%xmm10,%xmm12
Packit aea12f
	vpshufb	%xmm0,%xmm10,%xmm10
Packit aea12f
	vpaddd	%xmm5,%xmm11,%xmm13
Packit aea12f
	vpshufb	%xmm0,%xmm11,%xmm11
Packit aea12f
	vpxor	%xmm15,%xmm10,%xmm10
Packit aea12f
	vpaddd	%xmm5,%xmm12,%xmm14
Packit aea12f
	vpshufb	%xmm0,%xmm12,%xmm12
Packit aea12f
	vpxor	%xmm15,%xmm11,%xmm11
Packit aea12f
	vpaddd	%xmm5,%xmm13,%xmm1
Packit aea12f
	vpshufb	%xmm0,%xmm13,%xmm13
Packit aea12f
	vpshufb	%xmm0,%xmm14,%xmm14
Packit aea12f
	vpshufb	%xmm0,%xmm1,%xmm1
Packit aea12f
	jmp	L$resume_ctr32
Packit aea12f
Packit aea12f
.p2align	5
Packit aea12f
L$enc_tail:
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vmovdqu	%xmm7,16+8(%rsp)
Packit aea12f
	vpalignr	$8,%xmm4,%xmm4,%xmm8
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm4,%xmm4
Packit aea12f
	vpxor	0(%rdi),%xmm1,%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	vpxor	16(%rdi),%xmm1,%xmm0
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	vpxor	32(%rdi),%xmm1,%xmm5
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vpxor	48(%rdi),%xmm1,%xmm6
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
	vpxor	64(%rdi),%xmm1,%xmm7
Packit aea12f
	vpxor	80(%rdi),%xmm1,%xmm3
Packit aea12f
	vmovdqu	(%r8),%xmm1
Packit aea12f
Packit aea12f
	vaesenclast	%xmm2,%xmm9,%xmm9
Packit aea12f
	vmovdqu	32(%r11),%xmm2
Packit aea12f
	vaesenclast	%xmm0,%xmm10,%xmm10
Packit aea12f
	vpaddb	%xmm2,%xmm1,%xmm0
Packit aea12f
	movq	%r13,112+8(%rsp)
Packit aea12f
	leaq	96(%rdi),%rdi
Packit aea12f
	vaesenclast	%xmm5,%xmm11,%xmm11
Packit aea12f
	vpaddb	%xmm2,%xmm0,%xmm5
Packit aea12f
	movq	%r12,120+8(%rsp)
Packit aea12f
	leaq	96(%rsi),%rsi
Packit aea12f
	vmovdqu	0-128(%rcx),%xmm15
Packit aea12f
	vaesenclast	%xmm6,%xmm12,%xmm12
Packit aea12f
	vpaddb	%xmm2,%xmm5,%xmm6
Packit aea12f
	vaesenclast	%xmm7,%xmm13,%xmm13
Packit aea12f
	vpaddb	%xmm2,%xmm6,%xmm7
Packit aea12f
	vaesenclast	%xmm3,%xmm14,%xmm14
Packit aea12f
	vpaddb	%xmm2,%xmm7,%xmm3
Packit aea12f
Packit aea12f
	addq	$0x60,%r10
Packit aea12f
	subq	$0x6,%rdx
Packit aea12f
	jc	L$6x_done
Packit aea12f
Packit aea12f
	vmovups	%xmm9,-96(%rsi)
Packit aea12f
	vpxor	%xmm15,%xmm1,%xmm9
Packit aea12f
	vmovups	%xmm10,-80(%rsi)
Packit aea12f
	vmovdqa	%xmm0,%xmm10
Packit aea12f
	vmovups	%xmm11,-64(%rsi)
Packit aea12f
	vmovdqa	%xmm5,%xmm11
Packit aea12f
	vmovups	%xmm12,-48(%rsi)
Packit aea12f
	vmovdqa	%xmm6,%xmm12
Packit aea12f
	vmovups	%xmm13,-32(%rsi)
Packit aea12f
	vmovdqa	%xmm7,%xmm13
Packit aea12f
	vmovups	%xmm14,-16(%rsi)
Packit aea12f
	vmovdqa	%xmm3,%xmm14
Packit aea12f
	vmovdqu	32+8(%rsp),%xmm7
Packit aea12f
	jmp	L$oop6x
Packit aea12f
Packit aea12f
L$6x_done:
Packit aea12f
	vpxor	16+8(%rsp),%xmm8,%xmm8
Packit aea12f
	vpxor	%xmm4,%xmm8,%xmm8
Packit aea12f
Packit aea12f
	.byte	0xf3,0xc3
Packit aea12f
Packit aea12f
.globl	_aesni_gcm_decrypt
Packit aea12f
Packit aea12f
.p2align	5
Packit aea12f
_aesni_gcm_decrypt:
Packit Service 991b93
Packit aea12f
	xorq	%r10,%r10
Packit aea12f
	cmpq	$0x60,%rdx
Packit aea12f
	jb	L$gcm_dec_abort
Packit aea12f
Packit aea12f
	leaq	(%rsp),%rax
Packit Service 991b93
Packit aea12f
	pushq	%rbx
Packit Service 991b93
Packit aea12f
	pushq	%rbp
Packit Service 991b93
Packit aea12f
	pushq	%r12
Packit Service 991b93
Packit aea12f
	pushq	%r13
Packit Service 991b93
Packit aea12f
	pushq	%r14
Packit Service 991b93
Packit aea12f
	pushq	%r15
Packit Service 991b93
Packit aea12f
	vzeroupper
Packit aea12f
Packit aea12f
	vmovdqu	(%r8),%xmm1
Packit aea12f
	addq	$-128,%rsp
Packit aea12f
	movl	12(%r8),%ebx
Packit aea12f
	leaq	L$bswap_mask(%rip),%r11
Packit aea12f
	leaq	-128(%rcx),%r14
Packit aea12f
	movq	$0xf80,%r15
Packit aea12f
	vmovdqu	(%r9),%xmm8
Packit aea12f
	andq	$-128,%rsp
Packit aea12f
	vmovdqu	(%r11),%xmm0
Packit aea12f
	leaq	128(%rcx),%rcx
Packit aea12f
	leaq	32+32(%r9),%r9
Packit aea12f
	movl	240-128(%rcx),%ebp
Packit aea12f
	vpshufb	%xmm0,%xmm8,%xmm8
Packit aea12f
Packit aea12f
	andq	%r15,%r14
Packit aea12f
	andq	%rsp,%r15
Packit aea12f
	subq	%r14,%r15
Packit aea12f
	jc	L$dec_no_key_aliasing
Packit aea12f
	cmpq	$768,%r15
Packit aea12f
	jnc	L$dec_no_key_aliasing
Packit aea12f
	subq	%r15,%rsp
Packit aea12f
L$dec_no_key_aliasing:
Packit aea12f
Packit aea12f
	vmovdqu	80(%rdi),%xmm7
Packit aea12f
	leaq	(%rdi),%r14
Packit aea12f
	vmovdqu	64(%rdi),%xmm4
Packit aea12f
	leaq	-192(%rdi,%rdx,1),%r15
Packit aea12f
	vmovdqu	48(%rdi),%xmm5
Packit aea12f
	shrq	$4,%rdx
Packit aea12f
	xorq	%r10,%r10
Packit aea12f
	vmovdqu	32(%rdi),%xmm6
Packit aea12f
	vpshufb	%xmm0,%xmm7,%xmm7
Packit aea12f
	vmovdqu	16(%rdi),%xmm2
Packit aea12f
	vpshufb	%xmm0,%xmm4,%xmm4
Packit aea12f
	vmovdqu	(%rdi),%xmm3
Packit aea12f
	vpshufb	%xmm0,%xmm5,%xmm5
Packit aea12f
	vmovdqu	%xmm4,48(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm6,%xmm6
Packit aea12f
	vmovdqu	%xmm5,64(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm2,%xmm2
Packit aea12f
	vmovdqu	%xmm6,80(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm3,%xmm3
Packit aea12f
	vmovdqu	%xmm2,96(%rsp)
Packit aea12f
	vmovdqu	%xmm3,112(%rsp)
Packit aea12f
Packit aea12f
	call	_aesni_ctr32_ghash_6x
Packit aea12f
Packit aea12f
	vmovups	%xmm9,-96(%rsi)
Packit aea12f
	vmovups	%xmm10,-80(%rsi)
Packit aea12f
	vmovups	%xmm11,-64(%rsi)
Packit aea12f
	vmovups	%xmm12,-48(%rsi)
Packit aea12f
	vmovups	%xmm13,-32(%rsi)
Packit aea12f
	vmovups	%xmm14,-16(%rsi)
Packit aea12f
Packit aea12f
	vpshufb	(%r11),%xmm8,%xmm8
Packit aea12f
	vmovdqu	%xmm8,-64(%r9)
Packit aea12f
Packit aea12f
	vzeroupper
Packit aea12f
	movq	-48(%rax),%r15
Packit Service 991b93
Packit aea12f
	movq	-40(%rax),%r14
Packit Service 991b93
Packit aea12f
	movq	-32(%rax),%r13
Packit Service 991b93
Packit aea12f
	movq	-24(%rax),%r12
Packit Service 991b93
Packit aea12f
	movq	-16(%rax),%rbp
Packit Service 991b93
Packit aea12f
	movq	-8(%rax),%rbx
Packit Service 991b93
Packit aea12f
	leaq	(%rax),%rsp
Packit Service 991b93
Packit aea12f
L$gcm_dec_abort:
Packit aea12f
	movq	%r10,%rax
Packit aea12f
	.byte	0xf3,0xc3
Packit aea12f
Packit aea12f
Packit Service 991b93
Packit aea12f
.p2align	5
Packit aea12f
_aesni_ctr32_6x:
Packit aea12f
	vmovdqu	0-128(%rcx),%xmm4
Packit aea12f
	vmovdqu	32(%r11),%xmm2
Packit aea12f
	leaq	-1(%rbp),%r13
Packit aea12f
	vmovups	16-128(%rcx),%xmm15
Packit aea12f
	leaq	32-128(%rcx),%r12
Packit aea12f
	vpxor	%xmm4,%xmm1,%xmm9
Packit aea12f
	addl	$100663296,%ebx
Packit aea12f
	jc	L$handle_ctr32_2
Packit aea12f
	vpaddb	%xmm2,%xmm1,%xmm10
Packit aea12f
	vpaddb	%xmm2,%xmm10,%xmm11
Packit aea12f
	vpxor	%xmm4,%xmm10,%xmm10
Packit aea12f
	vpaddb	%xmm2,%xmm11,%xmm12
Packit aea12f
	vpxor	%xmm4,%xmm11,%xmm11
Packit aea12f
	vpaddb	%xmm2,%xmm12,%xmm13
Packit aea12f
	vpxor	%xmm4,%xmm12,%xmm12
Packit aea12f
	vpaddb	%xmm2,%xmm13,%xmm14
Packit aea12f
	vpxor	%xmm4,%xmm13,%xmm13
Packit aea12f
	vpaddb	%xmm2,%xmm14,%xmm1
Packit aea12f
	vpxor	%xmm4,%xmm14,%xmm14
Packit aea12f
	jmp	L$oop_ctr32
Packit aea12f
Packit aea12f
.p2align	4
Packit aea12f
L$oop_ctr32:
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
	vmovups	(%r12),%xmm15
Packit aea12f
	leaq	16(%r12),%r12
Packit aea12f
	decl	%r13d
Packit aea12f
	jnz	L$oop_ctr32
Packit aea12f
Packit aea12f
	vmovdqu	(%r12),%xmm3
Packit aea12f
	vaesenc	%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	0(%rdi),%xmm3,%xmm4
Packit aea12f
	vaesenc	%xmm15,%xmm10,%xmm10
Packit aea12f
	vpxor	16(%rdi),%xmm3,%xmm5
Packit aea12f
	vaesenc	%xmm15,%xmm11,%xmm11
Packit aea12f
	vpxor	32(%rdi),%xmm3,%xmm6
Packit aea12f
	vaesenc	%xmm15,%xmm12,%xmm12
Packit aea12f
	vpxor	48(%rdi),%xmm3,%xmm8
Packit aea12f
	vaesenc	%xmm15,%xmm13,%xmm13
Packit aea12f
	vpxor	64(%rdi),%xmm3,%xmm2
Packit aea12f
	vaesenc	%xmm15,%xmm14,%xmm14
Packit aea12f
	vpxor	80(%rdi),%xmm3,%xmm3
Packit aea12f
	leaq	96(%rdi),%rdi
Packit aea12f
Packit aea12f
	vaesenclast	%xmm4,%xmm9,%xmm9
Packit aea12f
	vaesenclast	%xmm5,%xmm10,%xmm10
Packit aea12f
	vaesenclast	%xmm6,%xmm11,%xmm11
Packit aea12f
	vaesenclast	%xmm8,%xmm12,%xmm12
Packit aea12f
	vaesenclast	%xmm2,%xmm13,%xmm13
Packit aea12f
	vaesenclast	%xmm3,%xmm14,%xmm14
Packit aea12f
	vmovups	%xmm9,0(%rsi)
Packit aea12f
	vmovups	%xmm10,16(%rsi)
Packit aea12f
	vmovups	%xmm11,32(%rsi)
Packit aea12f
	vmovups	%xmm12,48(%rsi)
Packit aea12f
	vmovups	%xmm13,64(%rsi)
Packit aea12f
	vmovups	%xmm14,80(%rsi)
Packit aea12f
	leaq	96(%rsi),%rsi
Packit aea12f
Packit aea12f
	.byte	0xf3,0xc3
Packit aea12f
.p2align	5
Packit aea12f
L$handle_ctr32_2:
Packit aea12f
	vpshufb	%xmm0,%xmm1,%xmm6
Packit aea12f
	vmovdqu	48(%r11),%xmm5
Packit aea12f
	vpaddd	64(%r11),%xmm6,%xmm10
Packit aea12f
	vpaddd	%xmm5,%xmm6,%xmm11
Packit aea12f
	vpaddd	%xmm5,%xmm10,%xmm12
Packit aea12f
	vpshufb	%xmm0,%xmm10,%xmm10
Packit aea12f
	vpaddd	%xmm5,%xmm11,%xmm13
Packit aea12f
	vpshufb	%xmm0,%xmm11,%xmm11
Packit aea12f
	vpxor	%xmm4,%xmm10,%xmm10
Packit aea12f
	vpaddd	%xmm5,%xmm12,%xmm14
Packit aea12f
	vpshufb	%xmm0,%xmm12,%xmm12
Packit aea12f
	vpxor	%xmm4,%xmm11,%xmm11
Packit aea12f
	vpaddd	%xmm5,%xmm13,%xmm1
Packit aea12f
	vpshufb	%xmm0,%xmm13,%xmm13
Packit aea12f
	vpxor	%xmm4,%xmm12,%xmm12
Packit aea12f
	vpshufb	%xmm0,%xmm14,%xmm14
Packit aea12f
	vpxor	%xmm4,%xmm13,%xmm13
Packit aea12f
	vpshufb	%xmm0,%xmm1,%xmm1
Packit aea12f
	vpxor	%xmm4,%xmm14,%xmm14
Packit aea12f
	jmp	L$oop_ctr32
Packit aea12f
Packit aea12f
Packit aea12f
.globl	_aesni_gcm_encrypt
Packit aea12f
Packit aea12f
.p2align	5
Packit aea12f
_aesni_gcm_encrypt:
Packit Service 991b93
Packit aea12f
	xorq	%r10,%r10
Packit aea12f
	cmpq	$288,%rdx
Packit aea12f
	jb	L$gcm_enc_abort
Packit aea12f
Packit aea12f
	leaq	(%rsp),%rax
Packit Service 991b93
Packit aea12f
	pushq	%rbx
Packit Service 991b93
Packit aea12f
	pushq	%rbp
Packit Service 991b93
Packit aea12f
	pushq	%r12
Packit Service 991b93
Packit aea12f
	pushq	%r13
Packit Service 991b93
Packit aea12f
	pushq	%r14
Packit Service 991b93
Packit aea12f
	pushq	%r15
Packit Service 991b93
Packit aea12f
	vzeroupper
Packit aea12f
Packit aea12f
	vmovdqu	(%r8),%xmm1
Packit aea12f
	addq	$-128,%rsp
Packit aea12f
	movl	12(%r8),%ebx
Packit aea12f
	leaq	L$bswap_mask(%rip),%r11
Packit aea12f
	leaq	-128(%rcx),%r14
Packit aea12f
	movq	$0xf80,%r15
Packit aea12f
	leaq	128(%rcx),%rcx
Packit aea12f
	vmovdqu	(%r11),%xmm0
Packit aea12f
	andq	$-128,%rsp
Packit aea12f
	movl	240-128(%rcx),%ebp
Packit aea12f
Packit aea12f
	andq	%r15,%r14
Packit aea12f
	andq	%rsp,%r15
Packit aea12f
	subq	%r14,%r15
Packit aea12f
	jc	L$enc_no_key_aliasing
Packit aea12f
	cmpq	$768,%r15
Packit aea12f
	jnc	L$enc_no_key_aliasing
Packit aea12f
	subq	%r15,%rsp
Packit aea12f
L$enc_no_key_aliasing:
Packit aea12f
Packit aea12f
	leaq	(%rsi),%r14
Packit aea12f
	leaq	-192(%rsi,%rdx,1),%r15
Packit aea12f
	shrq	$4,%rdx
Packit aea12f
Packit aea12f
	call	_aesni_ctr32_6x
Packit aea12f
	vpshufb	%xmm0,%xmm9,%xmm8
Packit aea12f
	vpshufb	%xmm0,%xmm10,%xmm2
Packit aea12f
	vmovdqu	%xmm8,112(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm11,%xmm4
Packit aea12f
	vmovdqu	%xmm2,96(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm12,%xmm5
Packit aea12f
	vmovdqu	%xmm4,80(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm13,%xmm6
Packit aea12f
	vmovdqu	%xmm5,64(%rsp)
Packit aea12f
	vpshufb	%xmm0,%xmm14,%xmm7
Packit aea12f
	vmovdqu	%xmm6,48(%rsp)
Packit aea12f
Packit aea12f
	call	_aesni_ctr32_6x
Packit aea12f
Packit aea12f
	vmovdqu	(%r9),%xmm8
Packit aea12f
	leaq	32+32(%r9),%r9
Packit aea12f
	subq	$12,%rdx
Packit aea12f
	movq	$192,%r10
Packit aea12f
	vpshufb	%xmm0,%xmm8,%xmm8
Packit aea12f
Packit aea12f
	call	_aesni_ctr32_ghash_6x
Packit aea12f
	vmovdqu	32(%rsp),%xmm7
Packit aea12f
	vmovdqu	(%r11),%xmm0
Packit aea12f
	vmovdqu	0-32(%r9),%xmm3
Packit aea12f
	vpunpckhqdq	%xmm7,%xmm7,%xmm1
Packit aea12f
	vmovdqu	32-32(%r9),%xmm15
Packit aea12f
	vmovups	%xmm9,-96(%rsi)
Packit aea12f
	vpshufb	%xmm0,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm7,%xmm1,%xmm1
Packit aea12f
	vmovups	%xmm10,-80(%rsi)
Packit aea12f
	vpshufb	%xmm0,%xmm10,%xmm10
Packit aea12f
	vmovups	%xmm11,-64(%rsi)
Packit aea12f
	vpshufb	%xmm0,%xmm11,%xmm11
Packit aea12f
	vmovups	%xmm12,-48(%rsi)
Packit aea12f
	vpshufb	%xmm0,%xmm12,%xmm12
Packit aea12f
	vmovups	%xmm13,-32(%rsi)
Packit aea12f
	vpshufb	%xmm0,%xmm13,%xmm13
Packit aea12f
	vmovups	%xmm14,-16(%rsi)
Packit aea12f
	vpshufb	%xmm0,%xmm14,%xmm14
Packit aea12f
	vmovdqu	%xmm9,16(%rsp)
Packit aea12f
	vmovdqu	48(%rsp),%xmm6
Packit aea12f
	vmovdqu	16-32(%r9),%xmm0
Packit aea12f
	vpunpckhqdq	%xmm6,%xmm6,%xmm2
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm7,%xmm5
Packit aea12f
	vpxor	%xmm6,%xmm2,%xmm2
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm7,%xmm7
Packit aea12f
	vpclmulqdq	$0x00,%xmm15,%xmm1,%xmm1
Packit aea12f
Packit aea12f
	vmovdqu	64(%rsp),%xmm9
Packit aea12f
	vpclmulqdq	$0x00,%xmm0,%xmm6,%xmm4
Packit aea12f
	vmovdqu	48-32(%r9),%xmm3
Packit aea12f
	vpxor	%xmm5,%xmm4,%xmm4
Packit aea12f
	vpunpckhqdq	%xmm9,%xmm9,%xmm5
Packit aea12f
	vpclmulqdq	$0x11,%xmm0,%xmm6,%xmm6
Packit aea12f
	vpxor	%xmm9,%xmm5,%xmm5
Packit aea12f
	vpxor	%xmm7,%xmm6,%xmm6
Packit aea12f
	vpclmulqdq	$0x10,%xmm15,%xmm2,%xmm2
Packit aea12f
	vmovdqu	80-32(%r9),%xmm15
Packit aea12f
	vpxor	%xmm1,%xmm2,%xmm2
Packit aea12f
Packit aea12f
	vmovdqu	80(%rsp),%xmm1
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm9,%xmm7
Packit aea12f
	vmovdqu	64-32(%r9),%xmm0
Packit aea12f
	vpxor	%xmm4,%xmm7,%xmm7
Packit aea12f
	vpunpckhqdq	%xmm1,%xmm1,%xmm4
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm1,%xmm4,%xmm4
Packit aea12f
	vpxor	%xmm6,%xmm9,%xmm9
Packit aea12f
	vpclmulqdq	$0x00,%xmm15,%xmm5,%xmm5
Packit aea12f
	vpxor	%xmm2,%xmm5,%xmm5
Packit aea12f
Packit aea12f
	vmovdqu	96(%rsp),%xmm2
Packit aea12f
	vpclmulqdq	$0x00,%xmm0,%xmm1,%xmm6
Packit aea12f
	vmovdqu	96-32(%r9),%xmm3
Packit aea12f
	vpxor	%xmm7,%xmm6,%xmm6
Packit aea12f
	vpunpckhqdq	%xmm2,%xmm2,%xmm7
Packit aea12f
	vpclmulqdq	$0x11,%xmm0,%xmm1,%xmm1
Packit aea12f
	vpxor	%xmm2,%xmm7,%xmm7
Packit aea12f
	vpxor	%xmm9,%xmm1,%xmm1
Packit aea12f
	vpclmulqdq	$0x10,%xmm15,%xmm4,%xmm4
Packit aea12f
	vmovdqu	128-32(%r9),%xmm15
Packit aea12f
	vpxor	%xmm5,%xmm4,%xmm4
Packit aea12f
Packit aea12f
	vpxor	112(%rsp),%xmm8,%xmm8
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm2,%xmm5
Packit aea12f
	vmovdqu	112-32(%r9),%xmm0
Packit aea12f
	vpunpckhqdq	%xmm8,%xmm8,%xmm9
Packit aea12f
	vpxor	%xmm6,%xmm5,%xmm5
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm2,%xmm2
Packit aea12f
	vpxor	%xmm8,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm1,%xmm2,%xmm2
Packit aea12f
	vpclmulqdq	$0x00,%xmm15,%xmm7,%xmm7
Packit aea12f
	vpxor	%xmm4,%xmm7,%xmm4
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x00,%xmm0,%xmm8,%xmm6
Packit aea12f
	vmovdqu	0-32(%r9),%xmm3
Packit aea12f
	vpunpckhqdq	%xmm14,%xmm14,%xmm1
Packit aea12f
	vpclmulqdq	$0x11,%xmm0,%xmm8,%xmm8
Packit aea12f
	vpxor	%xmm14,%xmm1,%xmm1
Packit aea12f
	vpxor	%xmm5,%xmm6,%xmm5
Packit aea12f
	vpclmulqdq	$0x10,%xmm15,%xmm9,%xmm9
Packit aea12f
	vmovdqu	32-32(%r9),%xmm15
Packit aea12f
	vpxor	%xmm2,%xmm8,%xmm7
Packit aea12f
	vpxor	%xmm4,%xmm9,%xmm6
Packit aea12f
Packit aea12f
	vmovdqu	16-32(%r9),%xmm0
Packit aea12f
	vpxor	%xmm5,%xmm7,%xmm9
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm14,%xmm4
Packit aea12f
	vpxor	%xmm9,%xmm6,%xmm6
Packit aea12f
	vpunpckhqdq	%xmm13,%xmm13,%xmm2
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm14,%xmm14
Packit aea12f
	vpxor	%xmm13,%xmm2,%xmm2
Packit aea12f
	vpslldq	$8,%xmm6,%xmm9
Packit aea12f
	vpclmulqdq	$0x00,%xmm15,%xmm1,%xmm1
Packit aea12f
	vpxor	%xmm9,%xmm5,%xmm8
Packit aea12f
	vpsrldq	$8,%xmm6,%xmm6
Packit aea12f
	vpxor	%xmm6,%xmm7,%xmm7
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x00,%xmm0,%xmm13,%xmm5
Packit aea12f
	vmovdqu	48-32(%r9),%xmm3
Packit aea12f
	vpxor	%xmm4,%xmm5,%xmm5
Packit aea12f
	vpunpckhqdq	%xmm12,%xmm12,%xmm9
Packit aea12f
	vpclmulqdq	$0x11,%xmm0,%xmm13,%xmm13
Packit aea12f
	vpxor	%xmm12,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm14,%xmm13,%xmm13
Packit aea12f
	vpalignr	$8,%xmm8,%xmm8,%xmm14
Packit aea12f
	vpclmulqdq	$0x10,%xmm15,%xmm2,%xmm2
Packit aea12f
	vmovdqu	80-32(%r9),%xmm15
Packit aea12f
	vpxor	%xmm1,%xmm2,%xmm2
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm12,%xmm4
Packit aea12f
	vmovdqu	64-32(%r9),%xmm0
Packit aea12f
	vpxor	%xmm5,%xmm4,%xmm4
Packit aea12f
	vpunpckhqdq	%xmm11,%xmm11,%xmm1
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm12,%xmm12
Packit aea12f
	vpxor	%xmm11,%xmm1,%xmm1
Packit aea12f
	vpxor	%xmm13,%xmm12,%xmm12
Packit aea12f
	vxorps	16(%rsp),%xmm7,%xmm7
Packit aea12f
	vpclmulqdq	$0x00,%xmm15,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm2,%xmm9,%xmm9
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x10,16(%r11),%xmm8,%xmm8
Packit aea12f
	vxorps	%xmm14,%xmm8,%xmm8
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x00,%xmm0,%xmm11,%xmm5
Packit aea12f
	vmovdqu	96-32(%r9),%xmm3
Packit aea12f
	vpxor	%xmm4,%xmm5,%xmm5
Packit aea12f
	vpunpckhqdq	%xmm10,%xmm10,%xmm2
Packit aea12f
	vpclmulqdq	$0x11,%xmm0,%xmm11,%xmm11
Packit aea12f
	vpxor	%xmm10,%xmm2,%xmm2
Packit aea12f
	vpalignr	$8,%xmm8,%xmm8,%xmm14
Packit aea12f
	vpxor	%xmm12,%xmm11,%xmm11
Packit aea12f
	vpclmulqdq	$0x10,%xmm15,%xmm1,%xmm1
Packit aea12f
	vmovdqu	128-32(%r9),%xmm15
Packit aea12f
	vpxor	%xmm9,%xmm1,%xmm1
Packit aea12f
Packit aea12f
	vxorps	%xmm7,%xmm14,%xmm14
Packit aea12f
	vpclmulqdq	$0x10,16(%r11),%xmm8,%xmm8
Packit aea12f
	vxorps	%xmm14,%xmm8,%xmm8
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x00,%xmm3,%xmm10,%xmm4
Packit aea12f
	vmovdqu	112-32(%r9),%xmm0
Packit aea12f
	vpxor	%xmm5,%xmm4,%xmm4
Packit aea12f
	vpunpckhqdq	%xmm8,%xmm8,%xmm9
Packit aea12f
	vpclmulqdq	$0x11,%xmm3,%xmm10,%xmm10
Packit aea12f
	vpxor	%xmm8,%xmm9,%xmm9
Packit aea12f
	vpxor	%xmm11,%xmm10,%xmm10
Packit aea12f
	vpclmulqdq	$0x00,%xmm15,%xmm2,%xmm2
Packit aea12f
	vpxor	%xmm1,%xmm2,%xmm2
Packit aea12f
Packit aea12f
	vpclmulqdq	$0x00,%xmm0,%xmm8,%xmm5
Packit aea12f
	vpclmulqdq	$0x11,%xmm0,%xmm8,%xmm7
Packit aea12f
	vpxor	%xmm4,%xmm5,%xmm5
Packit aea12f
	vpclmulqdq	$0x10,%xmm15,%xmm9,%xmm6
Packit aea12f
	vpxor	%xmm10,%xmm7,%xmm7
Packit aea12f
	vpxor	%xmm2,%xmm6,%xmm6
Packit aea12f
Packit aea12f
	vpxor	%xmm5,%xmm7,%xmm4
Packit aea12f
	vpxor	%xmm4,%xmm6,%xmm6
Packit aea12f
	vpslldq	$8,%xmm6,%xmm1
Packit aea12f
	vmovdqu	16(%r11),%xmm3
Packit aea12f
	vpsrldq	$8,%xmm6,%xmm6
Packit aea12f
	vpxor	%xmm1,%xmm5,%xmm8
Packit aea12f
	vpxor	%xmm6,%xmm7,%xmm7
Packit aea12f
Packit aea12f
	vpalignr	$8,%xmm8,%xmm8,%xmm2
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm8,%xmm8
Packit aea12f
	vpxor	%xmm2,%xmm8,%xmm8
Packit aea12f
Packit aea12f
	vpalignr	$8,%xmm8,%xmm8,%xmm2
Packit aea12f
	vpclmulqdq	$0x10,%xmm3,%xmm8,%xmm8
Packit aea12f
	vpxor	%xmm7,%xmm2,%xmm2
Packit aea12f
	vpxor	%xmm2,%xmm8,%xmm8
Packit aea12f
	vpshufb	(%r11),%xmm8,%xmm8
Packit aea12f
	vmovdqu	%xmm8,-64(%r9)
Packit aea12f
Packit aea12f
	vzeroupper
Packit aea12f
	movq	-48(%rax),%r15
Packit Service 991b93
Packit aea12f
	movq	-40(%rax),%r14
Packit Service 991b93
Packit aea12f
	movq	-32(%rax),%r13
Packit Service 991b93
Packit aea12f
	movq	-24(%rax),%r12
Packit Service 991b93
Packit aea12f
	movq	-16(%rax),%rbp
Packit Service 991b93
Packit aea12f
	movq	-8(%rax),%rbx
Packit Service 991b93
Packit aea12f
	leaq	(%rax),%rsp
Packit Service 991b93
Packit aea12f
L$gcm_enc_abort:
Packit aea12f
	movq	%r10,%rax
Packit aea12f
	.byte	0xf3,0xc3
Packit aea12f
Packit Service 991b93
Packit aea12f
.p2align	6
Packit aea12f
L$bswap_mask:
Packit aea12f
.byte	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
Packit aea12f
L$poly:
Packit aea12f
.byte	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
Packit aea12f
L$one_msb:
Packit aea12f
.byte	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
Packit aea12f
L$two_lsb:
Packit aea12f
.byte	2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Packit aea12f
L$one_lsb:
Packit aea12f
.byte	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Packit aea12f
.byte	65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,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 aea12f
.p2align	6
Packit aea12f