xref: /freebsd/sys/crypto/openssl/amd64/aesni-xts-avx512.S (revision 4757b351ea9d59d71d4a38b82506d2d16fcd560d)
1*4757b351SPierre Pronchery/* Do not modify. This file is auto-generated from aesni-xts-avx512.pl. */
2*4757b351SPierre Pronchery.text
3*4757b351SPierre Pronchery
4*4757b351SPierre Pronchery.globl	aesni_xts_avx512_eligible
5*4757b351SPierre Pronchery.type	aesni_xts_avx512_eligible,@function
6*4757b351SPierre Pronchery.align	32
7*4757b351SPierre Proncheryaesni_xts_avx512_eligible:
8*4757b351SPierre Pronchery	movl	OPENSSL_ia32cap_P+8(%rip),%ecx
9*4757b351SPierre Pronchery	xorl	%eax,%eax
10*4757b351SPierre Pronchery
11*4757b351SPierre Pronchery	andl	$0xc0030000,%ecx
12*4757b351SPierre Pronchery	cmpl	$0xc0030000,%ecx
13*4757b351SPierre Pronchery	jne	.L_done
14*4757b351SPierre Pronchery	movl	OPENSSL_ia32cap_P+12(%rip),%ecx
15*4757b351SPierre Pronchery
16*4757b351SPierre Pronchery	andl	$0x640,%ecx
17*4757b351SPierre Pronchery	cmpl	$0x640,%ecx
18*4757b351SPierre Pronchery	cmovel	%ecx,%eax
19*4757b351SPierre Pronchery.L_done:
20*4757b351SPierre Pronchery	.byte	0xf3,0xc3
21*4757b351SPierre Pronchery.size	aesni_xts_avx512_eligible, .-aesni_xts_avx512_eligible
22*4757b351SPierre Pronchery.globl	aesni_xts_128_encrypt_avx512
23*4757b351SPierre Pronchery.hidden	aesni_xts_128_encrypt_avx512
24*4757b351SPierre Pronchery.type	aesni_xts_128_encrypt_avx512,@function
25*4757b351SPierre Pronchery.align	32
26*4757b351SPierre Proncheryaesni_xts_128_encrypt_avx512:
27*4757b351SPierre Pronchery.cfi_startproc
28*4757b351SPierre Pronchery.byte	243,15,30,250
29*4757b351SPierre Pronchery	pushq	%rbp
30*4757b351SPierre Pronchery	movq	%rsp,%rbp
31*4757b351SPierre Pronchery	subq	$136,%rsp
32*4757b351SPierre Pronchery	andq	$0xffffffffffffffc0,%rsp
33*4757b351SPierre Pronchery	movq	%rbx,128(%rsp)
34*4757b351SPierre Pronchery	movq	$0x87,%r10
35*4757b351SPierre Pronchery	vmovdqu	(%r9),%xmm1
36*4757b351SPierre Pronchery	vpxor	(%r8),%xmm1,%xmm1
37*4757b351SPierre Pronchery	vaesenc	16(%r8),%xmm1,%xmm1
38*4757b351SPierre Pronchery	vaesenc	32(%r8),%xmm1,%xmm1
39*4757b351SPierre Pronchery	vaesenc	48(%r8),%xmm1,%xmm1
40*4757b351SPierre Pronchery	vaesenc	64(%r8),%xmm1,%xmm1
41*4757b351SPierre Pronchery	vaesenc	80(%r8),%xmm1,%xmm1
42*4757b351SPierre Pronchery	vaesenc	96(%r8),%xmm1,%xmm1
43*4757b351SPierre Pronchery	vaesenc	112(%r8),%xmm1,%xmm1
44*4757b351SPierre Pronchery	vaesenc	128(%r8),%xmm1,%xmm1
45*4757b351SPierre Pronchery	vaesenc	144(%r8),%xmm1,%xmm1
46*4757b351SPierre Pronchery	vaesenclast	160(%r8),%xmm1,%xmm1
47*4757b351SPierre Pronchery	vmovdqa	%xmm1,(%rsp)
48*4757b351SPierre Pronchery
49*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
50*4757b351SPierre Pronchery	jl	.L_less_than_128_bytes_hEgxyDlCngwrfFe
51*4757b351SPierre Pronchery	vpbroadcastq	%r10,%zmm25
52*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
53*4757b351SPierre Pronchery	jge	.L_start_by16_hEgxyDlCngwrfFe
54*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
55*4757b351SPierre Pronchery	jge	.L_start_by8_hEgxyDlCngwrfFe
56*4757b351SPierre Pronchery
57*4757b351SPierre Pronchery.L_do_n_blocks_hEgxyDlCngwrfFe:
58*4757b351SPierre Pronchery	cmpq	$0x0,%rdx
59*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
60*4757b351SPierre Pronchery	cmpq	$0x70,%rdx
61*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe
62*4757b351SPierre Pronchery	cmpq	$0x60,%rdx
63*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe
64*4757b351SPierre Pronchery	cmpq	$0x50,%rdx
65*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe
66*4757b351SPierre Pronchery	cmpq	$0x40,%rdx
67*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe
68*4757b351SPierre Pronchery	cmpq	$0x30,%rdx
69*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe
70*4757b351SPierre Pronchery	cmpq	$0x20,%rdx
71*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe
72*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
73*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe
74*4757b351SPierre Pronchery	vmovdqa	%xmm0,%xmm8
75*4757b351SPierre Pronchery	vmovdqa	%xmm9,%xmm0
76*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
77*4757b351SPierre Pronchery
78*4757b351SPierre Pronchery.L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe:
79*4757b351SPierre Pronchery	movq	$0x0000ffffffffffff,%r8
80*4757b351SPierre Pronchery	kmovq	%r8,%k1
81*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
82*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2{%k1}
83*4757b351SPierre Pronchery	addq	$0x70,%rdi
84*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
85*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
86*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
87*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
88*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
89*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
90*4757b351SPierre Pronchery
91*4757b351SPierre Pronchery
92*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
93*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
94*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
95*4757b351SPierre Pronchery
96*4757b351SPierre Pronchery
97*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
98*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
99*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
100*4757b351SPierre Pronchery
101*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
102*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
103*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
104*4757b351SPierre Pronchery
105*4757b351SPierre Pronchery
106*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
107*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
108*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
109*4757b351SPierre Pronchery
110*4757b351SPierre Pronchery
111*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
112*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
113*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
114*4757b351SPierre Pronchery
115*4757b351SPierre Pronchery
116*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
117*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
118*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
119*4757b351SPierre Pronchery
120*4757b351SPierre Pronchery
121*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
122*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
123*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
124*4757b351SPierre Pronchery
125*4757b351SPierre Pronchery
126*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
127*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
128*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
129*4757b351SPierre Pronchery
130*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
131*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
132*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
133*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
134*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
135*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
136*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
137*4757b351SPierre Pronchery	addq	$0x70,%rsi
138*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm2,%xmm8
139*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm10,%xmm0
140*4757b351SPierre Pronchery	andq	$0xf,%rdx
141*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
142*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
143*4757b351SPierre Pronchery
144*4757b351SPierre Pronchery.L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe:
145*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
146*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%ymm2
147*4757b351SPierre Pronchery	addq	$0x60,%rdi
148*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
149*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
150*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
151*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
152*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
153*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
154*4757b351SPierre Pronchery
155*4757b351SPierre Pronchery
156*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
157*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
158*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
159*4757b351SPierre Pronchery
160*4757b351SPierre Pronchery
161*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
162*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
163*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
164*4757b351SPierre Pronchery
165*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
166*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
167*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
168*4757b351SPierre Pronchery
169*4757b351SPierre Pronchery
170*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
171*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
172*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
173*4757b351SPierre Pronchery
174*4757b351SPierre Pronchery
175*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
176*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
177*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
178*4757b351SPierre Pronchery
179*4757b351SPierre Pronchery
180*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
181*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
182*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
183*4757b351SPierre Pronchery
184*4757b351SPierre Pronchery
185*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
186*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
187*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
188*4757b351SPierre Pronchery
189*4757b351SPierre Pronchery
190*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
191*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
192*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
193*4757b351SPierre Pronchery
194*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
195*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
196*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
197*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
198*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
199*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
200*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
201*4757b351SPierre Pronchery	addq	$0x60,%rsi
202*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm2,%xmm8
203*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm0
204*4757b351SPierre Pronchery	andq	$0xf,%rdx
205*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
206*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
207*4757b351SPierre Pronchery
208*4757b351SPierre Pronchery.L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe:
209*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
210*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm2
211*4757b351SPierre Pronchery	addq	$0x50,%rdi
212*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
213*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
214*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
215*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
216*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
217*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
218*4757b351SPierre Pronchery
219*4757b351SPierre Pronchery
220*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
221*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
222*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
223*4757b351SPierre Pronchery
224*4757b351SPierre Pronchery
225*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
226*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
227*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
228*4757b351SPierre Pronchery
229*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
230*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
231*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
232*4757b351SPierre Pronchery
233*4757b351SPierre Pronchery
234*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
235*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
236*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
237*4757b351SPierre Pronchery
238*4757b351SPierre Pronchery
239*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
240*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
241*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
242*4757b351SPierre Pronchery
243*4757b351SPierre Pronchery
244*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
245*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
246*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
247*4757b351SPierre Pronchery
248*4757b351SPierre Pronchery
249*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
250*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
251*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
252*4757b351SPierre Pronchery
253*4757b351SPierre Pronchery
254*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
255*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
256*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
257*4757b351SPierre Pronchery
258*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
259*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
260*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
261*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
262*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
263*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
264*4757b351SPierre Pronchery	vmovdqu	%xmm2,64(%rsi)
265*4757b351SPierre Pronchery	addq	$0x50,%rsi
266*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
267*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm0
268*4757b351SPierre Pronchery	andq	$0xf,%rdx
269*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
270*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
271*4757b351SPierre Pronchery
272*4757b351SPierre Pronchery.L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe:
273*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
274*4757b351SPierre Pronchery	addq	$0x40,%rdi
275*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
276*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
277*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
278*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
279*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
280*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
281*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
282*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
283*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
284*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
285*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
286*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
287*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
288*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
289*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
290*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
291*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
292*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
293*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
294*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
295*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
296*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
297*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
298*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
299*4757b351SPierre Pronchery	addq	$0x40,%rsi
300*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm1,%xmm8
301*4757b351SPierre Pronchery	vmovdqa64	%xmm10,%xmm0
302*4757b351SPierre Pronchery	andq	$0xf,%rdx
303*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
304*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
305*4757b351SPierre Pronchery.L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe:
306*4757b351SPierre Pronchery	movq	$-1,%r8
307*4757b351SPierre Pronchery	shrq	$0x10,%r8
308*4757b351SPierre Pronchery	kmovq	%r8,%k1
309*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1{%k1}
310*4757b351SPierre Pronchery	addq	$0x30,%rdi
311*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
312*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
313*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
314*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
315*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
316*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
317*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
318*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
319*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
320*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
321*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
322*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
323*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
324*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
325*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
326*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
327*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
328*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
329*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
330*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
331*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
332*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
333*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
334*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi){%k1}
335*4757b351SPierre Pronchery	addq	$0x30,%rsi
336*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm1,%xmm8
337*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm9,%xmm0
338*4757b351SPierre Pronchery	andq	$0xf,%rdx
339*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
340*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
341*4757b351SPierre Pronchery.L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe:
342*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%ymm1
343*4757b351SPierre Pronchery	addq	$0x20,%rdi
344*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%ymm0
345*4757b351SPierre Pronchery	vpternlogq	$0x96,%ymm0,%ymm9,%ymm1
346*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%ymm0
347*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
348*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%ymm0
349*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
350*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%ymm0
351*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
352*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%ymm0
353*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
354*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%ymm0
355*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
356*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%ymm0
357*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
358*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%ymm0
359*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
360*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%ymm0
361*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
362*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%ymm0
363*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
364*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%ymm0
365*4757b351SPierre Pronchery	vaesenclast	%ymm0,%ymm1,%ymm1
366*4757b351SPierre Pronchery	vpxorq	%ymm9,%ymm1,%ymm1
367*4757b351SPierre Pronchery	vmovdqu	%ymm1,(%rsi)
368*4757b351SPierre Pronchery	addq	$0x20,%rsi
369*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm1,%xmm8
370*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm0
371*4757b351SPierre Pronchery	andq	$0xf,%rdx
372*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
373*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
374*4757b351SPierre Pronchery.L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe:
375*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
376*4757b351SPierre Pronchery	addq	$0x10,%rdi
377*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
378*4757b351SPierre Pronchery	vpxor	(%rcx),%xmm1,%xmm1
379*4757b351SPierre Pronchery	vaesenc	16(%rcx),%xmm1,%xmm1
380*4757b351SPierre Pronchery	vaesenc	32(%rcx),%xmm1,%xmm1
381*4757b351SPierre Pronchery	vaesenc	48(%rcx),%xmm1,%xmm1
382*4757b351SPierre Pronchery	vaesenc	64(%rcx),%xmm1,%xmm1
383*4757b351SPierre Pronchery	vaesenc	80(%rcx),%xmm1,%xmm1
384*4757b351SPierre Pronchery	vaesenc	96(%rcx),%xmm1,%xmm1
385*4757b351SPierre Pronchery	vaesenc	112(%rcx),%xmm1,%xmm1
386*4757b351SPierre Pronchery	vaesenc	128(%rcx),%xmm1,%xmm1
387*4757b351SPierre Pronchery	vaesenc	144(%rcx),%xmm1,%xmm1
388*4757b351SPierre Pronchery	vaesenclast	160(%rcx),%xmm1,%xmm1
389*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
390*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
391*4757b351SPierre Pronchery	addq	$0x10,%rsi
392*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
393*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm0
394*4757b351SPierre Pronchery	andq	$0xf,%rdx
395*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
396*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
397*4757b351SPierre Pronchery
398*4757b351SPierre Pronchery
399*4757b351SPierre Pronchery.L_start_by16_hEgxyDlCngwrfFe:
400*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
401*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
402*4757b351SPierre Pronchery	movq	$0xaa,%r8
403*4757b351SPierre Pronchery	kmovq	%r8,%k2
404*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
405*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
406*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
407*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
408*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
409*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
410*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
411*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
412*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
413*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
414*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
415*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
416*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
417*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm11
418*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm11,%zmm11
419*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm15
420*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm15,%zmm16
421*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm12
422*4757b351SPierre Pronchery	vpxord	%zmm16,%zmm12,%zmm12
423*4757b351SPierre Pronchery
424*4757b351SPierre Pronchery.L_main_loop_run_16_hEgxyDlCngwrfFe:
425*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
426*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
427*4757b351SPierre Pronchery	vmovdqu8	128(%rdi),%zmm3
428*4757b351SPierre Pronchery	vmovdqu8	192(%rdi),%zmm4
429*4757b351SPierre Pronchery	addq	$0x100,%rdi
430*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
431*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
432*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
433*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
434*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
435*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
436*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
437*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm3,%zmm3
438*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm4,%zmm4
439*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm11,%zmm13
440*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
441*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm11,%zmm15
442*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
443*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
444*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
445*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
446*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
447*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
448*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
449*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
450*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
451*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
452*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
453*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
454*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
455*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
456*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
457*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
458*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm12,%zmm13
459*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
460*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm12,%zmm16
461*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
462*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
463*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
464*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
465*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
466*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
467*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
468*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
469*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
470*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
471*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
472*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
473*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
474*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
475*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
476*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
477*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm15,%zmm13
478*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
479*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm15,%zmm17
480*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm17,%zmm17
481*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
482*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
483*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
484*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
485*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
486*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
487*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
488*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
489*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
490*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
491*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
492*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
493*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
494*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
495*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
496*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm16,%zmm13
497*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
498*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm16,%zmm18
499*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm18,%zmm18
500*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
501*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
502*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
503*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm3,%zmm3
504*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm4,%zmm4
505*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
506*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
507*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
508*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
509*4757b351SPierre Pronchery
510*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
511*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
512*4757b351SPierre Pronchery	vmovdqa32	%zmm17,%zmm11
513*4757b351SPierre Pronchery	vmovdqa32	%zmm18,%zmm12
514*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
515*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
516*4757b351SPierre Pronchery	vmovdqu8	%zmm3,128(%rsi)
517*4757b351SPierre Pronchery	vmovdqu8	%zmm4,192(%rsi)
518*4757b351SPierre Pronchery	addq	$0x100,%rsi
519*4757b351SPierre Pronchery	subq	$0x100,%rdx
520*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
521*4757b351SPierre Pronchery	jae	.L_main_loop_run_16_hEgxyDlCngwrfFe
522*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
523*4757b351SPierre Pronchery	jae	.L_main_loop_run_8_hEgxyDlCngwrfFe
524*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm4,%xmm0
525*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_hEgxyDlCngwrfFe
526*4757b351SPierre Pronchery
527*4757b351SPierre Pronchery.L_start_by8_hEgxyDlCngwrfFe:
528*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
529*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
530*4757b351SPierre Pronchery	movq	$0xaa,%r8
531*4757b351SPierre Pronchery	kmovq	%r8,%k2
532*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
533*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
534*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
535*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
536*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
537*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
538*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
539*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
540*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
541*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
542*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
543*4757b351SPierre Pronchery
544*4757b351SPierre Pronchery.L_main_loop_run_8_hEgxyDlCngwrfFe:
545*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
546*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
547*4757b351SPierre Pronchery	addq	$0x80,%rdi
548*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
549*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
550*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
551*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
552*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
553*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm15
554*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
555*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
556*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
557*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
558*4757b351SPierre Pronchery
559*4757b351SPierre Pronchery
560*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
561*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
562*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
563*4757b351SPierre Pronchery
564*4757b351SPierre Pronchery
565*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
566*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
567*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
568*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm13
569*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
570*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm16
571*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
572*4757b351SPierre Pronchery
573*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
574*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
575*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
576*4757b351SPierre Pronchery
577*4757b351SPierre Pronchery
578*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
579*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
580*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
581*4757b351SPierre Pronchery
582*4757b351SPierre Pronchery
583*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
584*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
585*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
586*4757b351SPierre Pronchery
587*4757b351SPierre Pronchery
588*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
589*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
590*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
591*4757b351SPierre Pronchery
592*4757b351SPierre Pronchery
593*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
594*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
595*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
596*4757b351SPierre Pronchery
597*4757b351SPierre Pronchery
598*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
599*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
600*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
601*4757b351SPierre Pronchery
602*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
603*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
604*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
605*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
606*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
607*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
608*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
609*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
610*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
611*4757b351SPierre Pronchery	addq	$0x80,%rsi
612*4757b351SPierre Pronchery	subq	$0x80,%rdx
613*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
614*4757b351SPierre Pronchery	jae	.L_main_loop_run_8_hEgxyDlCngwrfFe
615*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm2,%xmm0
616*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_hEgxyDlCngwrfFe
617*4757b351SPierre Pronchery
618*4757b351SPierre Pronchery.L_steal_cipher_hEgxyDlCngwrfFe:
619*4757b351SPierre Pronchery	vmovdqa	%xmm8,%xmm2
620*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
621*4757b351SPierre Pronchery	vmovdqu	(%rax,%rdx,1),%xmm10
622*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm8,%xmm8
623*4757b351SPierre Pronchery	vmovdqu	-16(%rdi,%rdx,1),%xmm3
624*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi,%rdx,1)
625*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
626*4757b351SPierre Pronchery	addq	$16,%rax
627*4757b351SPierre Pronchery	subq	%rdx,%rax
628*4757b351SPierre Pronchery	vmovdqu	(%rax),%xmm10
629*4757b351SPierre Pronchery	vpxor	mask1(%rip),%xmm10,%xmm10
630*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm3,%xmm3
631*4757b351SPierre Pronchery	vpblendvb	%xmm10,%xmm2,%xmm3,%xmm3
632*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm8
633*4757b351SPierre Pronchery	vpxor	(%rcx),%xmm8,%xmm8
634*4757b351SPierre Pronchery	vaesenc	16(%rcx),%xmm8,%xmm8
635*4757b351SPierre Pronchery	vaesenc	32(%rcx),%xmm8,%xmm8
636*4757b351SPierre Pronchery	vaesenc	48(%rcx),%xmm8,%xmm8
637*4757b351SPierre Pronchery	vaesenc	64(%rcx),%xmm8,%xmm8
638*4757b351SPierre Pronchery	vaesenc	80(%rcx),%xmm8,%xmm8
639*4757b351SPierre Pronchery	vaesenc	96(%rcx),%xmm8,%xmm8
640*4757b351SPierre Pronchery	vaesenc	112(%rcx),%xmm8,%xmm8
641*4757b351SPierre Pronchery	vaesenc	128(%rcx),%xmm8,%xmm8
642*4757b351SPierre Pronchery	vaesenc	144(%rcx),%xmm8,%xmm8
643*4757b351SPierre Pronchery	vaesenclast	160(%rcx),%xmm8,%xmm8
644*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm8,%xmm8
645*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi)
646*4757b351SPierre Pronchery.L_ret_hEgxyDlCngwrfFe:
647*4757b351SPierre Pronchery	movq	128(%rsp),%rbx
648*4757b351SPierre Pronchery	xorq	%r8,%r8
649*4757b351SPierre Pronchery	movq	%r8,128(%rsp)
650*4757b351SPierre Pronchery
651*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm0,%zmm0
652*4757b351SPierre Pronchery	movq	%rbp,%rsp
653*4757b351SPierre Pronchery	popq	%rbp
654*4757b351SPierre Pronchery	vzeroupper
655*4757b351SPierre Pronchery	.byte	0xf3,0xc3
656*4757b351SPierre Pronchery
657*4757b351SPierre Pronchery.L_less_than_128_bytes_hEgxyDlCngwrfFe:
658*4757b351SPierre Pronchery	vpbroadcastq	%r10,%zmm25
659*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
660*4757b351SPierre Pronchery	jb	.L_ret_hEgxyDlCngwrfFe
661*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
662*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
663*4757b351SPierre Pronchery	movl	$0xaa,%r8d
664*4757b351SPierre Pronchery	kmovq	%r8,%k2
665*4757b351SPierre Pronchery	movq	%rdx,%r8
666*4757b351SPierre Pronchery	andq	$0x70,%r8
667*4757b351SPierre Pronchery	cmpq	$0x60,%r8
668*4757b351SPierre Pronchery	je	.L_num_blocks_is_6_hEgxyDlCngwrfFe
669*4757b351SPierre Pronchery	cmpq	$0x50,%r8
670*4757b351SPierre Pronchery	je	.L_num_blocks_is_5_hEgxyDlCngwrfFe
671*4757b351SPierre Pronchery	cmpq	$0x40,%r8
672*4757b351SPierre Pronchery	je	.L_num_blocks_is_4_hEgxyDlCngwrfFe
673*4757b351SPierre Pronchery	cmpq	$0x30,%r8
674*4757b351SPierre Pronchery	je	.L_num_blocks_is_3_hEgxyDlCngwrfFe
675*4757b351SPierre Pronchery	cmpq	$0x20,%r8
676*4757b351SPierre Pronchery	je	.L_num_blocks_is_2_hEgxyDlCngwrfFe
677*4757b351SPierre Pronchery	cmpq	$0x10,%r8
678*4757b351SPierre Pronchery	je	.L_num_blocks_is_1_hEgxyDlCngwrfFe
679*4757b351SPierre Pronchery
680*4757b351SPierre Pronchery.L_num_blocks_is_7_hEgxyDlCngwrfFe:
681*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
682*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
683*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
684*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
685*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
686*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
687*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
688*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
689*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
690*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
691*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
692*4757b351SPierre Pronchery	movq	$0x0000ffffffffffff,%r8
693*4757b351SPierre Pronchery	kmovq	%r8,%k1
694*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
695*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2{%k1}
696*4757b351SPierre Pronchery
697*4757b351SPierre Pronchery	addq	$0x70,%rdi
698*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
699*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
700*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
701*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
702*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
703*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
704*4757b351SPierre Pronchery
705*4757b351SPierre Pronchery
706*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
707*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
708*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
709*4757b351SPierre Pronchery
710*4757b351SPierre Pronchery
711*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
712*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
713*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
714*4757b351SPierre Pronchery
715*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
716*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
717*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
718*4757b351SPierre Pronchery
719*4757b351SPierre Pronchery
720*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
721*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
722*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
723*4757b351SPierre Pronchery
724*4757b351SPierre Pronchery
725*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
726*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
727*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
728*4757b351SPierre Pronchery
729*4757b351SPierre Pronchery
730*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
731*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
732*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
733*4757b351SPierre Pronchery
734*4757b351SPierre Pronchery
735*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
736*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
737*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
738*4757b351SPierre Pronchery
739*4757b351SPierre Pronchery
740*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
741*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
742*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
743*4757b351SPierre Pronchery
744*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
745*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
746*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
747*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
748*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
749*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
750*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
751*4757b351SPierre Pronchery	addq	$0x70,%rsi
752*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm2,%xmm8
753*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm10,%xmm0
754*4757b351SPierre Pronchery	andq	$0xf,%rdx
755*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
756*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
757*4757b351SPierre Pronchery.L_num_blocks_is_6_hEgxyDlCngwrfFe:
758*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
759*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
760*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
761*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
762*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
763*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
764*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
765*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
766*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
767*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
768*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
769*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
770*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%ymm2
771*4757b351SPierre Pronchery	addq	$96,%rdi
772*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
773*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
774*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
775*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
776*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
777*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
778*4757b351SPierre Pronchery
779*4757b351SPierre Pronchery
780*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
781*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
782*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
783*4757b351SPierre Pronchery
784*4757b351SPierre Pronchery
785*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
786*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
787*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
788*4757b351SPierre Pronchery
789*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
790*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
791*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
792*4757b351SPierre Pronchery
793*4757b351SPierre Pronchery
794*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
795*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
796*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
797*4757b351SPierre Pronchery
798*4757b351SPierre Pronchery
799*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
800*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
801*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
802*4757b351SPierre Pronchery
803*4757b351SPierre Pronchery
804*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
805*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
806*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
807*4757b351SPierre Pronchery
808*4757b351SPierre Pronchery
809*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
810*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
811*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
812*4757b351SPierre Pronchery
813*4757b351SPierre Pronchery
814*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
815*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
816*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
817*4757b351SPierre Pronchery
818*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
819*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
820*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
821*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
822*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
823*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
824*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
825*4757b351SPierre Pronchery	addq	$96,%rsi
826*4757b351SPierre Pronchery
827*4757b351SPierre Pronchery	vextracti32x4	$0x1,%ymm2,%xmm8
828*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm0
829*4757b351SPierre Pronchery	andq	$0xf,%rdx
830*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
831*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
832*4757b351SPierre Pronchery.L_num_blocks_is_5_hEgxyDlCngwrfFe:
833*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
834*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
835*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
836*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
837*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
838*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
839*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
840*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
841*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
842*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
843*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
844*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
845*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%xmm2
846*4757b351SPierre Pronchery	addq	$80,%rdi
847*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
848*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
849*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
850*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
851*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
852*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
853*4757b351SPierre Pronchery
854*4757b351SPierre Pronchery
855*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
856*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
857*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
858*4757b351SPierre Pronchery
859*4757b351SPierre Pronchery
860*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
861*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
862*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
863*4757b351SPierre Pronchery
864*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
865*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
866*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
867*4757b351SPierre Pronchery
868*4757b351SPierre Pronchery
869*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
870*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
871*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
872*4757b351SPierre Pronchery
873*4757b351SPierre Pronchery
874*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
875*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
876*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
877*4757b351SPierre Pronchery
878*4757b351SPierre Pronchery
879*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
880*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
881*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
882*4757b351SPierre Pronchery
883*4757b351SPierre Pronchery
884*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
885*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
886*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
887*4757b351SPierre Pronchery
888*4757b351SPierre Pronchery
889*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
890*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
891*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
892*4757b351SPierre Pronchery
893*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
894*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
895*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
896*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
897*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
898*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
899*4757b351SPierre Pronchery	vmovdqu8	%xmm2,64(%rsi)
900*4757b351SPierre Pronchery	addq	$80,%rsi
901*4757b351SPierre Pronchery
902*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
903*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm0
904*4757b351SPierre Pronchery	andq	$0xf,%rdx
905*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
906*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
907*4757b351SPierre Pronchery.L_num_blocks_is_4_hEgxyDlCngwrfFe:
908*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
909*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
910*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
911*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
912*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
913*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
914*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
915*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
916*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
917*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
918*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
919*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
920*4757b351SPierre Pronchery	addq	$64,%rdi
921*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
922*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
923*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
924*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
925*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
926*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
927*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
928*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
929*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
930*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
931*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
932*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
933*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
934*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
935*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
936*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
937*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
938*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
939*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
940*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
941*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
942*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
943*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
944*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
945*4757b351SPierre Pronchery	addq	$64,%rsi
946*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm1,%xmm8
947*4757b351SPierre Pronchery	vmovdqa	%xmm10,%xmm0
948*4757b351SPierre Pronchery	andq	$0xf,%rdx
949*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
950*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
951*4757b351SPierre Pronchery.L_num_blocks_is_3_hEgxyDlCngwrfFe:
952*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
953*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
954*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
955*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
956*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
957*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
958*4757b351SPierre Pronchery	movq	$0x0000ffffffffffff,%r8
959*4757b351SPierre Pronchery	kmovq	%r8,%k1
960*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1{%k1}
961*4757b351SPierre Pronchery	addq	$48,%rdi
962*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
963*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
964*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
965*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
966*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
967*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
968*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
969*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
970*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
971*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
972*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
973*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
974*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
975*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
976*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
977*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
978*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
979*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
980*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
981*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
982*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
983*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
984*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
985*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi){%k1}
986*4757b351SPierre Pronchery	addq	$48,%rsi
987*4757b351SPierre Pronchery	vextracti32x4	$2,%zmm1,%xmm8
988*4757b351SPierre Pronchery	vextracti32x4	$3,%zmm9,%xmm0
989*4757b351SPierre Pronchery	andq	$0xf,%rdx
990*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
991*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
992*4757b351SPierre Pronchery.L_num_blocks_is_2_hEgxyDlCngwrfFe:
993*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
994*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
995*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
996*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
997*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
998*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
999*4757b351SPierre Pronchery
1000*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%ymm1
1001*4757b351SPierre Pronchery	addq	$32,%rdi
1002*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%ymm0
1003*4757b351SPierre Pronchery	vpternlogq	$0x96,%ymm0,%ymm9,%ymm1
1004*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%ymm0
1005*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1006*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%ymm0
1007*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1008*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%ymm0
1009*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1010*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%ymm0
1011*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1012*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%ymm0
1013*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1014*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%ymm0
1015*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1016*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%ymm0
1017*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1018*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%ymm0
1019*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1020*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%ymm0
1021*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1022*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%ymm0
1023*4757b351SPierre Pronchery	vaesenclast	%ymm0,%ymm1,%ymm1
1024*4757b351SPierre Pronchery	vpxorq	%ymm9,%ymm1,%ymm1
1025*4757b351SPierre Pronchery	vmovdqu8	%ymm1,0(%rsi)
1026*4757b351SPierre Pronchery	addq	$32,%rsi
1027*4757b351SPierre Pronchery
1028*4757b351SPierre Pronchery	vextracti32x4	$1,%ymm1,%xmm8
1029*4757b351SPierre Pronchery	vextracti32x4	$2,%zmm9,%xmm0
1030*4757b351SPierre Pronchery	andq	$0xf,%rdx
1031*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
1032*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
1033*4757b351SPierre Pronchery.L_num_blocks_is_1_hEgxyDlCngwrfFe:
1034*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
1035*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
1036*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
1037*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
1038*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
1039*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
1040*4757b351SPierre Pronchery
1041*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%xmm1
1042*4757b351SPierre Pronchery	addq	$16,%rdi
1043*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%ymm0
1044*4757b351SPierre Pronchery	vpternlogq	$0x96,%ymm0,%ymm9,%ymm1
1045*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%ymm0
1046*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1047*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%ymm0
1048*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1049*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%ymm0
1050*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1051*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%ymm0
1052*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1053*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%ymm0
1054*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1055*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%ymm0
1056*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1057*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%ymm0
1058*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1059*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%ymm0
1060*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1061*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%ymm0
1062*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
1063*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%ymm0
1064*4757b351SPierre Pronchery	vaesenclast	%ymm0,%ymm1,%ymm1
1065*4757b351SPierre Pronchery	vpxorq	%ymm9,%ymm1,%ymm1
1066*4757b351SPierre Pronchery	vmovdqu8	%xmm1,0(%rsi)
1067*4757b351SPierre Pronchery	addq	$16,%rsi
1068*4757b351SPierre Pronchery
1069*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
1070*4757b351SPierre Pronchery	vextracti32x4	$1,%zmm9,%xmm0
1071*4757b351SPierre Pronchery	andq	$0xf,%rdx
1072*4757b351SPierre Pronchery	je	.L_ret_hEgxyDlCngwrfFe
1073*4757b351SPierre Pronchery	jmp	.L_steal_cipher_hEgxyDlCngwrfFe
1074*4757b351SPierre Pronchery.cfi_endproc
1075*4757b351SPierre Pronchery.globl	aesni_xts_128_decrypt_avx512
1076*4757b351SPierre Pronchery.hidden	aesni_xts_128_decrypt_avx512
1077*4757b351SPierre Pronchery.type	aesni_xts_128_decrypt_avx512,@function
1078*4757b351SPierre Pronchery.align	32
1079*4757b351SPierre Proncheryaesni_xts_128_decrypt_avx512:
1080*4757b351SPierre Pronchery.cfi_startproc
1081*4757b351SPierre Pronchery.byte	243,15,30,250
1082*4757b351SPierre Pronchery	pushq	%rbp
1083*4757b351SPierre Pronchery	movq	%rsp,%rbp
1084*4757b351SPierre Pronchery	subq	$136,%rsp
1085*4757b351SPierre Pronchery	andq	$0xffffffffffffffc0,%rsp
1086*4757b351SPierre Pronchery	movq	%rbx,128(%rsp)
1087*4757b351SPierre Pronchery	movq	$0x87,%r10
1088*4757b351SPierre Pronchery	vmovdqu	(%r9),%xmm1
1089*4757b351SPierre Pronchery	vpxor	(%r8),%xmm1,%xmm1
1090*4757b351SPierre Pronchery	vaesenc	16(%r8),%xmm1,%xmm1
1091*4757b351SPierre Pronchery	vaesenc	32(%r8),%xmm1,%xmm1
1092*4757b351SPierre Pronchery	vaesenc	48(%r8),%xmm1,%xmm1
1093*4757b351SPierre Pronchery	vaesenc	64(%r8),%xmm1,%xmm1
1094*4757b351SPierre Pronchery	vaesenc	80(%r8),%xmm1,%xmm1
1095*4757b351SPierre Pronchery	vaesenc	96(%r8),%xmm1,%xmm1
1096*4757b351SPierre Pronchery	vaesenc	112(%r8),%xmm1,%xmm1
1097*4757b351SPierre Pronchery	vaesenc	128(%r8),%xmm1,%xmm1
1098*4757b351SPierre Pronchery	vaesenc	144(%r8),%xmm1,%xmm1
1099*4757b351SPierre Pronchery	vaesenclast	160(%r8),%xmm1,%xmm1
1100*4757b351SPierre Pronchery	vmovdqa	%xmm1,(%rsp)
1101*4757b351SPierre Pronchery
1102*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
1103*4757b351SPierre Pronchery	jb	.L_less_than_128_bytes_amivrujEyduiFoi
1104*4757b351SPierre Pronchery	vpbroadcastq	%r10,%zmm25
1105*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
1106*4757b351SPierre Pronchery	jge	.L_start_by16_amivrujEyduiFoi
1107*4757b351SPierre Pronchery	jmp	.L_start_by8_amivrujEyduiFoi
1108*4757b351SPierre Pronchery
1109*4757b351SPierre Pronchery.L_do_n_blocks_amivrujEyduiFoi:
1110*4757b351SPierre Pronchery	cmpq	$0x0,%rdx
1111*4757b351SPierre Pronchery	je	.L_ret_amivrujEyduiFoi
1112*4757b351SPierre Pronchery	cmpq	$0x70,%rdx
1113*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_7_amivrujEyduiFoi
1114*4757b351SPierre Pronchery	cmpq	$0x60,%rdx
1115*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_6_amivrujEyduiFoi
1116*4757b351SPierre Pronchery	cmpq	$0x50,%rdx
1117*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_5_amivrujEyduiFoi
1118*4757b351SPierre Pronchery	cmpq	$0x40,%rdx
1119*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_4_amivrujEyduiFoi
1120*4757b351SPierre Pronchery	cmpq	$0x30,%rdx
1121*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_3_amivrujEyduiFoi
1122*4757b351SPierre Pronchery	cmpq	$0x20,%rdx
1123*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_2_amivrujEyduiFoi
1124*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
1125*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_1_amivrujEyduiFoi
1126*4757b351SPierre Pronchery
1127*4757b351SPierre Pronchery
1128*4757b351SPierre Pronchery	vmovdqu	%xmm5,%xmm1
1129*4757b351SPierre Pronchery
1130*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1131*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
1132*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
1133*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
1134*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1135*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
1136*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1137*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
1138*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1139*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
1140*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1141*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
1142*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1143*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
1144*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1145*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
1146*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1147*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
1148*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1149*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
1150*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1151*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
1152*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
1153*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1154*4757b351SPierre Pronchery	vmovdqu	%xmm1,-16(%rsi)
1155*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
1156*4757b351SPierre Pronchery
1157*4757b351SPierre Pronchery
1158*4757b351SPierre Pronchery	movq	$0x1,%r8
1159*4757b351SPierre Pronchery	kmovq	%r8,%k1
1160*4757b351SPierre Pronchery	vpsllq	$0x3f,%xmm9,%xmm13
1161*4757b351SPierre Pronchery	vpsraq	$0x3f,%xmm13,%xmm14
1162*4757b351SPierre Pronchery	vpandq	%xmm25,%xmm14,%xmm5
1163*4757b351SPierre Pronchery	vpxorq	%xmm5,%xmm9,%xmm9{%k1}
1164*4757b351SPierre Pronchery	vpsrldq	$0x8,%xmm9,%xmm10
1165*4757b351SPierre Pronchery.byte	98, 211, 181, 8, 115, 194, 1
1166*4757b351SPierre Pronchery	vpslldq	$0x8,%xmm13,%xmm13
1167*4757b351SPierre Pronchery	vpxorq	%xmm13,%xmm0,%xmm0
1168*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1169*4757b351SPierre Pronchery
1170*4757b351SPierre Pronchery.L_remaining_num_blocks_is_7_amivrujEyduiFoi:
1171*4757b351SPierre Pronchery	movq	$0xffffffffffffffff,%r8
1172*4757b351SPierre Pronchery	shrq	$0x10,%r8
1173*4757b351SPierre Pronchery	kmovq	%r8,%k1
1174*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
1175*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2{%k1}
1176*4757b351SPierre Pronchery	addq	$0x70,%rdi
1177*4757b351SPierre Pronchery	andq	$0xf,%rdx
1178*4757b351SPierre Pronchery	je	.L_done_7_remain_amivrujEyduiFoi
1179*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm12
1180*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm10,%xmm13
1181*4757b351SPierre Pronchery	vinserti32x4	$0x2,%xmm13,%zmm10,%zmm10
1182*4757b351SPierre Pronchery
1183*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1184*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1185*4757b351SPierre Pronchery
1186*4757b351SPierre Pronchery
1187*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1188*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1189*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1190*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1191*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1192*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1193*4757b351SPierre Pronchery
1194*4757b351SPierre Pronchery
1195*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1196*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1197*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1198*4757b351SPierre Pronchery
1199*4757b351SPierre Pronchery
1200*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1201*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1202*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1203*4757b351SPierre Pronchery
1204*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1205*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1206*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1207*4757b351SPierre Pronchery
1208*4757b351SPierre Pronchery
1209*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1210*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1211*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1212*4757b351SPierre Pronchery
1213*4757b351SPierre Pronchery
1214*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1215*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1216*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1217*4757b351SPierre Pronchery
1218*4757b351SPierre Pronchery
1219*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1220*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1221*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1222*4757b351SPierre Pronchery
1223*4757b351SPierre Pronchery
1224*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1225*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1226*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1227*4757b351SPierre Pronchery
1228*4757b351SPierre Pronchery
1229*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1230*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1231*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1232*4757b351SPierre Pronchery
1233*4757b351SPierre Pronchery
1234*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1235*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1236*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1237*4757b351SPierre Pronchery
1238*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1239*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1240*4757b351SPierre Pronchery
1241*4757b351SPierre Pronchery
1242*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1243*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1244*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1245*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
1246*4757b351SPierre Pronchery	addq	$0x70,%rsi
1247*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm2,%xmm8
1248*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
1249*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1250*4757b351SPierre Pronchery
1251*4757b351SPierre Pronchery.L_done_7_remain_amivrujEyduiFoi:
1252*4757b351SPierre Pronchery
1253*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1254*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1255*4757b351SPierre Pronchery
1256*4757b351SPierre Pronchery
1257*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1258*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1259*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1260*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1261*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1262*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1263*4757b351SPierre Pronchery
1264*4757b351SPierre Pronchery
1265*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1266*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1267*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1268*4757b351SPierre Pronchery
1269*4757b351SPierre Pronchery
1270*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1271*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1272*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1273*4757b351SPierre Pronchery
1274*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1275*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1276*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1277*4757b351SPierre Pronchery
1278*4757b351SPierre Pronchery
1279*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1280*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1281*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1282*4757b351SPierre Pronchery
1283*4757b351SPierre Pronchery
1284*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1285*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1286*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1287*4757b351SPierre Pronchery
1288*4757b351SPierre Pronchery
1289*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1290*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1291*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1292*4757b351SPierre Pronchery
1293*4757b351SPierre Pronchery
1294*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1295*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1296*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1297*4757b351SPierre Pronchery
1298*4757b351SPierre Pronchery
1299*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1300*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1301*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1302*4757b351SPierre Pronchery
1303*4757b351SPierre Pronchery
1304*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1305*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1306*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1307*4757b351SPierre Pronchery
1308*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1309*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1310*4757b351SPierre Pronchery
1311*4757b351SPierre Pronchery
1312*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1313*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1314*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1315*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
1316*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
1317*4757b351SPierre Pronchery
1318*4757b351SPierre Pronchery.L_remaining_num_blocks_is_6_amivrujEyduiFoi:
1319*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
1320*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%ymm2
1321*4757b351SPierre Pronchery	addq	$0x60,%rdi
1322*4757b351SPierre Pronchery	andq	$0xf,%rdx
1323*4757b351SPierre Pronchery	je	.L_done_6_remain_amivrujEyduiFoi
1324*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm12
1325*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm13
1326*4757b351SPierre Pronchery	vinserti32x4	$0x1,%xmm13,%zmm10,%zmm10
1327*4757b351SPierre Pronchery
1328*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1329*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1330*4757b351SPierre Pronchery
1331*4757b351SPierre Pronchery
1332*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1333*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1334*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1335*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1336*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1337*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1338*4757b351SPierre Pronchery
1339*4757b351SPierre Pronchery
1340*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1341*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1342*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1343*4757b351SPierre Pronchery
1344*4757b351SPierre Pronchery
1345*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1346*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1347*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1348*4757b351SPierre Pronchery
1349*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1350*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1351*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1352*4757b351SPierre Pronchery
1353*4757b351SPierre Pronchery
1354*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1355*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1356*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1357*4757b351SPierre Pronchery
1358*4757b351SPierre Pronchery
1359*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1360*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1361*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1362*4757b351SPierre Pronchery
1363*4757b351SPierre Pronchery
1364*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1365*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1366*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1367*4757b351SPierre Pronchery
1368*4757b351SPierre Pronchery
1369*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1370*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1371*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1372*4757b351SPierre Pronchery
1373*4757b351SPierre Pronchery
1374*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1375*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1376*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1377*4757b351SPierre Pronchery
1378*4757b351SPierre Pronchery
1379*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1380*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1381*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1382*4757b351SPierre Pronchery
1383*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1384*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1385*4757b351SPierre Pronchery
1386*4757b351SPierre Pronchery
1387*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1388*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1389*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1390*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
1391*4757b351SPierre Pronchery	addq	$0x60,%rsi
1392*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm2,%xmm8
1393*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
1394*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1395*4757b351SPierre Pronchery
1396*4757b351SPierre Pronchery.L_done_6_remain_amivrujEyduiFoi:
1397*4757b351SPierre Pronchery
1398*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1399*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1400*4757b351SPierre Pronchery
1401*4757b351SPierre Pronchery
1402*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1403*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1404*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1405*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1406*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1407*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1408*4757b351SPierre Pronchery
1409*4757b351SPierre Pronchery
1410*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1411*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1412*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1413*4757b351SPierre Pronchery
1414*4757b351SPierre Pronchery
1415*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1416*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1417*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1418*4757b351SPierre Pronchery
1419*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1420*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1421*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1422*4757b351SPierre Pronchery
1423*4757b351SPierre Pronchery
1424*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1425*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1426*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1427*4757b351SPierre Pronchery
1428*4757b351SPierre Pronchery
1429*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1430*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1431*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1432*4757b351SPierre Pronchery
1433*4757b351SPierre Pronchery
1434*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1435*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1436*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1437*4757b351SPierre Pronchery
1438*4757b351SPierre Pronchery
1439*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1440*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1441*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1442*4757b351SPierre Pronchery
1443*4757b351SPierre Pronchery
1444*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1445*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1446*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1447*4757b351SPierre Pronchery
1448*4757b351SPierre Pronchery
1449*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1450*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1451*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1452*4757b351SPierre Pronchery
1453*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1454*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1455*4757b351SPierre Pronchery
1456*4757b351SPierre Pronchery
1457*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1458*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1459*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1460*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
1461*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
1462*4757b351SPierre Pronchery
1463*4757b351SPierre Pronchery.L_remaining_num_blocks_is_5_amivrujEyduiFoi:
1464*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
1465*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm2
1466*4757b351SPierre Pronchery	addq	$0x50,%rdi
1467*4757b351SPierre Pronchery	andq	$0xf,%rdx
1468*4757b351SPierre Pronchery	je	.L_done_5_remain_amivrujEyduiFoi
1469*4757b351SPierre Pronchery	vmovdqa	%xmm10,%xmm12
1470*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm10
1471*4757b351SPierre Pronchery
1472*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1473*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1474*4757b351SPierre Pronchery
1475*4757b351SPierre Pronchery
1476*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1477*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1478*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1479*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1480*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1481*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1482*4757b351SPierre Pronchery
1483*4757b351SPierre Pronchery
1484*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1485*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1486*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1487*4757b351SPierre Pronchery
1488*4757b351SPierre Pronchery
1489*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1490*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1491*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1492*4757b351SPierre Pronchery
1493*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1494*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1495*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1496*4757b351SPierre Pronchery
1497*4757b351SPierre Pronchery
1498*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1499*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1500*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1501*4757b351SPierre Pronchery
1502*4757b351SPierre Pronchery
1503*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1504*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1505*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1506*4757b351SPierre Pronchery
1507*4757b351SPierre Pronchery
1508*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1509*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1510*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1511*4757b351SPierre Pronchery
1512*4757b351SPierre Pronchery
1513*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1514*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1515*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1516*4757b351SPierre Pronchery
1517*4757b351SPierre Pronchery
1518*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1519*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1520*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1521*4757b351SPierre Pronchery
1522*4757b351SPierre Pronchery
1523*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1524*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1525*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1526*4757b351SPierre Pronchery
1527*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1528*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1529*4757b351SPierre Pronchery
1530*4757b351SPierre Pronchery
1531*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1532*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1533*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1534*4757b351SPierre Pronchery	vmovdqu	%xmm2,64(%rsi)
1535*4757b351SPierre Pronchery	addq	$0x50,%rsi
1536*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
1537*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
1538*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1539*4757b351SPierre Pronchery
1540*4757b351SPierre Pronchery.L_done_5_remain_amivrujEyduiFoi:
1541*4757b351SPierre Pronchery
1542*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1543*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1544*4757b351SPierre Pronchery
1545*4757b351SPierre Pronchery
1546*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1547*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1548*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1549*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1550*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1551*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1552*4757b351SPierre Pronchery
1553*4757b351SPierre Pronchery
1554*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1555*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1556*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1557*4757b351SPierre Pronchery
1558*4757b351SPierre Pronchery
1559*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1560*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1561*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1562*4757b351SPierre Pronchery
1563*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1564*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1565*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1566*4757b351SPierre Pronchery
1567*4757b351SPierre Pronchery
1568*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1569*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1570*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1571*4757b351SPierre Pronchery
1572*4757b351SPierre Pronchery
1573*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1574*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1575*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1576*4757b351SPierre Pronchery
1577*4757b351SPierre Pronchery
1578*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1579*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1580*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1581*4757b351SPierre Pronchery
1582*4757b351SPierre Pronchery
1583*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1584*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1585*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1586*4757b351SPierre Pronchery
1587*4757b351SPierre Pronchery
1588*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1589*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1590*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1591*4757b351SPierre Pronchery
1592*4757b351SPierre Pronchery
1593*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1594*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1595*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1596*4757b351SPierre Pronchery
1597*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1598*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1599*4757b351SPierre Pronchery
1600*4757b351SPierre Pronchery
1601*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1602*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1603*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1604*4757b351SPierre Pronchery	vmovdqu8	%xmm2,64(%rsi)
1605*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
1606*4757b351SPierre Pronchery
1607*4757b351SPierre Pronchery.L_remaining_num_blocks_is_4_amivrujEyduiFoi:
1608*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
1609*4757b351SPierre Pronchery	addq	$0x40,%rdi
1610*4757b351SPierre Pronchery	andq	$0xf,%rdx
1611*4757b351SPierre Pronchery	je	.L_done_4_remain_amivrujEyduiFoi
1612*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm9,%xmm12
1613*4757b351SPierre Pronchery	vinserti32x4	$0x3,%xmm10,%zmm9,%zmm9
1614*4757b351SPierre Pronchery
1615*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1616*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1617*4757b351SPierre Pronchery
1618*4757b351SPierre Pronchery
1619*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1620*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1621*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1622*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1623*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1624*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1625*4757b351SPierre Pronchery
1626*4757b351SPierre Pronchery
1627*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1628*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1629*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1630*4757b351SPierre Pronchery
1631*4757b351SPierre Pronchery
1632*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1633*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1634*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1635*4757b351SPierre Pronchery
1636*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1637*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1638*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1639*4757b351SPierre Pronchery
1640*4757b351SPierre Pronchery
1641*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1642*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1643*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1644*4757b351SPierre Pronchery
1645*4757b351SPierre Pronchery
1646*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1647*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1648*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1649*4757b351SPierre Pronchery
1650*4757b351SPierre Pronchery
1651*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1652*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1653*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1654*4757b351SPierre Pronchery
1655*4757b351SPierre Pronchery
1656*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1657*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1658*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1659*4757b351SPierre Pronchery
1660*4757b351SPierre Pronchery
1661*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1662*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1663*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1664*4757b351SPierre Pronchery
1665*4757b351SPierre Pronchery
1666*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1667*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1668*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1669*4757b351SPierre Pronchery
1670*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1671*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1672*4757b351SPierre Pronchery
1673*4757b351SPierre Pronchery
1674*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1675*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1676*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1677*4757b351SPierre Pronchery	addq	$0x40,%rsi
1678*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm1,%xmm8
1679*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
1680*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1681*4757b351SPierre Pronchery
1682*4757b351SPierre Pronchery.L_done_4_remain_amivrujEyduiFoi:
1683*4757b351SPierre Pronchery
1684*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1685*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1686*4757b351SPierre Pronchery
1687*4757b351SPierre Pronchery
1688*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
1689*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
1690*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
1691*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
1692*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1693*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1694*4757b351SPierre Pronchery
1695*4757b351SPierre Pronchery
1696*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
1697*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1698*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1699*4757b351SPierre Pronchery
1700*4757b351SPierre Pronchery
1701*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
1702*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1703*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1704*4757b351SPierre Pronchery
1705*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
1706*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1707*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1708*4757b351SPierre Pronchery
1709*4757b351SPierre Pronchery
1710*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
1711*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1712*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1713*4757b351SPierre Pronchery
1714*4757b351SPierre Pronchery
1715*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
1716*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1717*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1718*4757b351SPierre Pronchery
1719*4757b351SPierre Pronchery
1720*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
1721*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1722*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1723*4757b351SPierre Pronchery
1724*4757b351SPierre Pronchery
1725*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
1726*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1727*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1728*4757b351SPierre Pronchery
1729*4757b351SPierre Pronchery
1730*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
1731*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
1732*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
1733*4757b351SPierre Pronchery
1734*4757b351SPierre Pronchery
1735*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
1736*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
1737*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
1738*4757b351SPierre Pronchery
1739*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
1740*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
1741*4757b351SPierre Pronchery
1742*4757b351SPierre Pronchery
1743*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
1744*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
1745*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
1746*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
1747*4757b351SPierre Pronchery
1748*4757b351SPierre Pronchery.L_remaining_num_blocks_is_3_amivrujEyduiFoi:
1749*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
1750*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
1751*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
1752*4757b351SPierre Pronchery	addq	$0x30,%rdi
1753*4757b351SPierre Pronchery	andq	$0xf,%rdx
1754*4757b351SPierre Pronchery	je	.L_done_3_remain_amivrujEyduiFoi
1755*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm13
1756*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm10
1757*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm9,%xmm11
1758*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1759*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1760*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
1761*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
1762*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
1763*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
1764*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
1765*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
1766*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1767*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1768*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1769*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
1770*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1771*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1772*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1773*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
1774*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1775*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1776*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1777*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
1778*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1779*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1780*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1781*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
1782*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1783*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1784*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1785*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
1786*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1787*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1788*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1789*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
1790*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1791*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1792*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1793*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
1794*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1795*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1796*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1797*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
1798*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1799*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1800*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1801*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
1802*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
1803*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
1804*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
1805*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1806*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1807*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
1808*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
1809*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
1810*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
1811*4757b351SPierre Pronchery	addq	$0x30,%rsi
1812*4757b351SPierre Pronchery	vmovdqa	%xmm3,%xmm8
1813*4757b351SPierre Pronchery	vmovdqa	%xmm13,%xmm0
1814*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1815*4757b351SPierre Pronchery
1816*4757b351SPierre Pronchery.L_done_3_remain_amivrujEyduiFoi:
1817*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm10
1818*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm11
1819*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1820*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1821*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
1822*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
1823*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
1824*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
1825*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
1826*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
1827*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1828*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1829*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1830*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
1831*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1832*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1833*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1834*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
1835*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1836*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1837*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1838*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
1839*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1840*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1841*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1842*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
1843*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1844*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1845*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1846*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
1847*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1848*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1849*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1850*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
1851*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1852*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1853*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1854*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
1855*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1856*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1857*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1858*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
1859*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1860*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1861*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
1862*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
1863*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
1864*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
1865*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
1866*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1867*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1868*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
1869*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
1870*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
1871*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
1872*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
1873*4757b351SPierre Pronchery
1874*4757b351SPierre Pronchery.L_remaining_num_blocks_is_2_amivrujEyduiFoi:
1875*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
1876*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
1877*4757b351SPierre Pronchery	addq	$0x20,%rdi
1878*4757b351SPierre Pronchery	andq	$0xf,%rdx
1879*4757b351SPierre Pronchery	je	.L_done_2_remain_amivrujEyduiFoi
1880*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm10
1881*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm12
1882*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1883*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1884*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
1885*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
1886*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
1887*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
1888*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1889*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1890*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
1891*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1892*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1893*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
1894*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1895*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1896*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
1897*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1898*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1899*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
1900*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1901*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1902*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
1903*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1904*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1905*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
1906*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1907*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1908*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
1909*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1910*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1911*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
1912*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1913*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1914*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
1915*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
1916*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
1917*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1918*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1919*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
1920*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
1921*4757b351SPierre Pronchery	addq	$0x20,%rsi
1922*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
1923*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
1924*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
1925*4757b351SPierre Pronchery
1926*4757b351SPierre Pronchery.L_done_2_remain_amivrujEyduiFoi:
1927*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm10
1928*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1929*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1930*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
1931*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
1932*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
1933*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
1934*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1935*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1936*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
1937*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1938*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1939*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
1940*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1941*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1942*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
1943*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1944*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1945*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
1946*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1947*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1948*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
1949*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1950*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1951*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
1952*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1953*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1954*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
1955*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1956*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1957*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
1958*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1959*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
1960*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
1961*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
1962*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
1963*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
1964*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
1965*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
1966*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
1967*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
1968*4757b351SPierre Pronchery
1969*4757b351SPierre Pronchery.L_remaining_num_blocks_is_1_amivrujEyduiFoi:
1970*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
1971*4757b351SPierre Pronchery	addq	$0x10,%rdi
1972*4757b351SPierre Pronchery	andq	$0xf,%rdx
1973*4757b351SPierre Pronchery	je	.L_done_1_remain_amivrujEyduiFoi
1974*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm11
1975*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm1,%xmm1
1976*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
1977*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
1978*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
1979*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1980*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
1981*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1982*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
1983*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1984*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
1985*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1986*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
1987*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1988*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
1989*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1990*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
1991*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1992*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
1993*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1994*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
1995*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
1996*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
1997*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
1998*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm1,%xmm1
1999*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
2000*4757b351SPierre Pronchery	addq	$0x10,%rsi
2001*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
2002*4757b351SPierre Pronchery	vmovdqa	%xmm9,%xmm0
2003*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
2004*4757b351SPierre Pronchery
2005*4757b351SPierre Pronchery.L_done_1_remain_amivrujEyduiFoi:
2006*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2007*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
2008*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
2009*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
2010*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2011*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
2012*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2013*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
2014*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2015*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
2016*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2017*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
2018*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2019*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
2020*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2021*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
2022*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2023*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
2024*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2025*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
2026*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2027*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
2028*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
2029*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2030*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
2031*4757b351SPierre Pronchery	jmp	.L_ret_amivrujEyduiFoi
2032*4757b351SPierre Pronchery
2033*4757b351SPierre Pronchery.L_start_by16_amivrujEyduiFoi:
2034*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
2035*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
2036*4757b351SPierre Pronchery	movq	$0xaa,%r8
2037*4757b351SPierre Pronchery	kmovq	%r8,%k2
2038*4757b351SPierre Pronchery
2039*4757b351SPierre Pronchery
2040*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
2041*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
2042*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
2043*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
2044*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
2045*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
2046*4757b351SPierre Pronchery
2047*4757b351SPierre Pronchery
2048*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
2049*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
2050*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
2051*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
2052*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
2053*4757b351SPierre Pronchery
2054*4757b351SPierre Pronchery
2055*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
2056*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2057*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm11
2058*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm11,%zmm11
2059*4757b351SPierre Pronchery
2060*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm15
2061*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm15,%zmm16
2062*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm12
2063*4757b351SPierre Pronchery	vpxord	%zmm16,%zmm12,%zmm12
2064*4757b351SPierre Pronchery
2065*4757b351SPierre Pronchery.L_main_loop_run_16_amivrujEyduiFoi:
2066*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
2067*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
2068*4757b351SPierre Pronchery	vmovdqu8	128(%rdi),%zmm3
2069*4757b351SPierre Pronchery	vmovdqu8	192(%rdi),%zmm4
2070*4757b351SPierre Pronchery	vmovdqu8	240(%rdi),%xmm5
2071*4757b351SPierre Pronchery	addq	$0x100,%rdi
2072*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
2073*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
2074*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
2075*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
2076*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
2077*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
2078*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
2079*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm3,%zmm3
2080*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm4,%zmm4
2081*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm11,%zmm13
2082*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2083*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm11,%zmm15
2084*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
2085*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
2086*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2087*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2088*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2089*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2090*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
2091*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2092*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2093*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2094*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2095*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
2096*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2097*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2098*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2099*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2100*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm12,%zmm13
2101*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2102*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm12,%zmm16
2103*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
2104*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
2105*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2106*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2107*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2108*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2109*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
2110*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2111*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2112*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2113*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2114*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
2115*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2116*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2117*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2118*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2119*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm15,%zmm13
2120*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2121*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm15,%zmm17
2122*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm17,%zmm17
2123*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
2124*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2125*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2126*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2127*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2128*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
2129*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2130*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2131*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2132*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2133*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
2134*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2135*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2136*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
2137*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
2138*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm16,%zmm13
2139*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2140*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm16,%zmm18
2141*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm18,%zmm18
2142*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
2143*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
2144*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
2145*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm3,%zmm3
2146*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm4,%zmm4
2147*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
2148*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
2149*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
2150*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
2151*4757b351SPierre Pronchery
2152*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
2153*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
2154*4757b351SPierre Pronchery	vmovdqa32	%zmm17,%zmm11
2155*4757b351SPierre Pronchery	vmovdqa32	%zmm18,%zmm12
2156*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
2157*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
2158*4757b351SPierre Pronchery	vmovdqu8	%zmm3,128(%rsi)
2159*4757b351SPierre Pronchery	vmovdqu8	%zmm4,192(%rsi)
2160*4757b351SPierre Pronchery	addq	$0x100,%rsi
2161*4757b351SPierre Pronchery	subq	$0x100,%rdx
2162*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
2163*4757b351SPierre Pronchery	jge	.L_main_loop_run_16_amivrujEyduiFoi
2164*4757b351SPierre Pronchery
2165*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
2166*4757b351SPierre Pronchery	jge	.L_main_loop_run_8_amivrujEyduiFoi
2167*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_amivrujEyduiFoi
2168*4757b351SPierre Pronchery
2169*4757b351SPierre Pronchery.L_start_by8_amivrujEyduiFoi:
2170*4757b351SPierre Pronchery
2171*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
2172*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
2173*4757b351SPierre Pronchery	movq	$0xaa,%r8
2174*4757b351SPierre Pronchery	kmovq	%r8,%k2
2175*4757b351SPierre Pronchery
2176*4757b351SPierre Pronchery
2177*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
2178*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
2179*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
2180*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
2181*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
2182*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
2183*4757b351SPierre Pronchery
2184*4757b351SPierre Pronchery
2185*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
2186*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
2187*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
2188*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
2189*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
2190*4757b351SPierre Pronchery
2191*4757b351SPierre Pronchery.L_main_loop_run_8_amivrujEyduiFoi:
2192*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
2193*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
2194*4757b351SPierre Pronchery	vmovdqu8	112(%rdi),%xmm5
2195*4757b351SPierre Pronchery	addq	$0x80,%rdi
2196*4757b351SPierre Pronchery
2197*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
2198*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
2199*4757b351SPierre Pronchery
2200*4757b351SPierre Pronchery
2201*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
2202*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
2203*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
2204*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
2205*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2206*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm15
2207*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
2208*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
2209*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2210*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2211*4757b351SPierre Pronchery
2212*4757b351SPierre Pronchery
2213*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
2214*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2215*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2216*4757b351SPierre Pronchery
2217*4757b351SPierre Pronchery
2218*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
2219*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2220*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2221*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm13
2222*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
2223*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm16
2224*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
2225*4757b351SPierre Pronchery
2226*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
2227*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2228*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2229*4757b351SPierre Pronchery
2230*4757b351SPierre Pronchery
2231*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
2232*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2233*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2234*4757b351SPierre Pronchery
2235*4757b351SPierre Pronchery
2236*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
2237*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2238*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2239*4757b351SPierre Pronchery
2240*4757b351SPierre Pronchery
2241*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
2242*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2243*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2244*4757b351SPierre Pronchery
2245*4757b351SPierre Pronchery
2246*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
2247*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2248*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2249*4757b351SPierre Pronchery
2250*4757b351SPierre Pronchery
2251*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
2252*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
2253*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
2254*4757b351SPierre Pronchery
2255*4757b351SPierre Pronchery
2256*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
2257*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
2258*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
2259*4757b351SPierre Pronchery
2260*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
2261*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
2262*4757b351SPierre Pronchery
2263*4757b351SPierre Pronchery
2264*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
2265*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
2266*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
2267*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
2268*4757b351SPierre Pronchery	addq	$0x80,%rsi
2269*4757b351SPierre Pronchery	subq	$0x80,%rdx
2270*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
2271*4757b351SPierre Pronchery	jge	.L_main_loop_run_8_amivrujEyduiFoi
2272*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_amivrujEyduiFoi
2273*4757b351SPierre Pronchery
2274*4757b351SPierre Pronchery.L_steal_cipher_amivrujEyduiFoi:
2275*4757b351SPierre Pronchery
2276*4757b351SPierre Pronchery	vmovdqa	%xmm8,%xmm2
2277*4757b351SPierre Pronchery
2278*4757b351SPierre Pronchery
2279*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
2280*4757b351SPierre Pronchery	vmovdqu	(%rax,%rdx,1),%xmm10
2281*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm8,%xmm8
2282*4757b351SPierre Pronchery
2283*4757b351SPierre Pronchery
2284*4757b351SPierre Pronchery	vmovdqu	-16(%rdi,%rdx,1),%xmm3
2285*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi,%rdx,1)
2286*4757b351SPierre Pronchery
2287*4757b351SPierre Pronchery
2288*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
2289*4757b351SPierre Pronchery	addq	$16,%rax
2290*4757b351SPierre Pronchery	subq	%rdx,%rax
2291*4757b351SPierre Pronchery	vmovdqu	(%rax),%xmm10
2292*4757b351SPierre Pronchery	vpxor	mask1(%rip),%xmm10,%xmm10
2293*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm3,%xmm3
2294*4757b351SPierre Pronchery
2295*4757b351SPierre Pronchery	vpblendvb	%xmm10,%xmm2,%xmm3,%xmm3
2296*4757b351SPierre Pronchery
2297*4757b351SPierre Pronchery
2298*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm8
2299*4757b351SPierre Pronchery
2300*4757b351SPierre Pronchery
2301*4757b351SPierre Pronchery	vpxor	(%rcx),%xmm8,%xmm8
2302*4757b351SPierre Pronchery	vaesdec	16(%rcx),%xmm8,%xmm8
2303*4757b351SPierre Pronchery	vaesdec	32(%rcx),%xmm8,%xmm8
2304*4757b351SPierre Pronchery	vaesdec	48(%rcx),%xmm8,%xmm8
2305*4757b351SPierre Pronchery	vaesdec	64(%rcx),%xmm8,%xmm8
2306*4757b351SPierre Pronchery	vaesdec	80(%rcx),%xmm8,%xmm8
2307*4757b351SPierre Pronchery	vaesdec	96(%rcx),%xmm8,%xmm8
2308*4757b351SPierre Pronchery	vaesdec	112(%rcx),%xmm8,%xmm8
2309*4757b351SPierre Pronchery	vaesdec	128(%rcx),%xmm8,%xmm8
2310*4757b351SPierre Pronchery	vaesdec	144(%rcx),%xmm8,%xmm8
2311*4757b351SPierre Pronchery	vaesdeclast	160(%rcx),%xmm8,%xmm8
2312*4757b351SPierre Pronchery
2313*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm8,%xmm8
2314*4757b351SPierre Pronchery
2315*4757b351SPierre Pronchery.L_done_amivrujEyduiFoi:
2316*4757b351SPierre Pronchery
2317*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi)
2318*4757b351SPierre Pronchery.L_ret_amivrujEyduiFoi:
2319*4757b351SPierre Pronchery	movq	128(%rsp),%rbx
2320*4757b351SPierre Pronchery	xorq	%r8,%r8
2321*4757b351SPierre Pronchery	movq	%r8,128(%rsp)
2322*4757b351SPierre Pronchery
2323*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm0,%zmm0
2324*4757b351SPierre Pronchery	movq	%rbp,%rsp
2325*4757b351SPierre Pronchery	popq	%rbp
2326*4757b351SPierre Pronchery	vzeroupper
2327*4757b351SPierre Pronchery	.byte	0xf3,0xc3
2328*4757b351SPierre Pronchery
2329*4757b351SPierre Pronchery.L_less_than_128_bytes_amivrujEyduiFoi:
2330*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
2331*4757b351SPierre Pronchery	jb	.L_ret_amivrujEyduiFoi
2332*4757b351SPierre Pronchery
2333*4757b351SPierre Pronchery	movq	%rdx,%r8
2334*4757b351SPierre Pronchery	andq	$0x70,%r8
2335*4757b351SPierre Pronchery	cmpq	$0x60,%r8
2336*4757b351SPierre Pronchery	je	.L_num_blocks_is_6_amivrujEyduiFoi
2337*4757b351SPierre Pronchery	cmpq	$0x50,%r8
2338*4757b351SPierre Pronchery	je	.L_num_blocks_is_5_amivrujEyduiFoi
2339*4757b351SPierre Pronchery	cmpq	$0x40,%r8
2340*4757b351SPierre Pronchery	je	.L_num_blocks_is_4_amivrujEyduiFoi
2341*4757b351SPierre Pronchery	cmpq	$0x30,%r8
2342*4757b351SPierre Pronchery	je	.L_num_blocks_is_3_amivrujEyduiFoi
2343*4757b351SPierre Pronchery	cmpq	$0x20,%r8
2344*4757b351SPierre Pronchery	je	.L_num_blocks_is_2_amivrujEyduiFoi
2345*4757b351SPierre Pronchery	cmpq	$0x10,%r8
2346*4757b351SPierre Pronchery	je	.L_num_blocks_is_1_amivrujEyduiFoi
2347*4757b351SPierre Pronchery
2348*4757b351SPierre Pronchery.L_num_blocks_is_7_amivrujEyduiFoi:
2349*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
2350*4757b351SPierre Pronchery	movq	0(%rsp),%rax
2351*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
2352*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
2353*4757b351SPierre Pronchery	xorq	%r11,%r11
2354*4757b351SPierre Pronchery	shlq	$1,%rax
2355*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2356*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2357*4757b351SPierre Pronchery	xorq	%r11,%rax
2358*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
2359*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
2360*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
2361*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
2362*4757b351SPierre Pronchery	xorq	%r11,%r11
2363*4757b351SPierre Pronchery	shlq	$1,%rax
2364*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2365*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2366*4757b351SPierre Pronchery	xorq	%r11,%rax
2367*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
2368*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
2369*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
2370*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
2371*4757b351SPierre Pronchery	xorq	%r11,%r11
2372*4757b351SPierre Pronchery	shlq	$1,%rax
2373*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2374*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2375*4757b351SPierre Pronchery	xorq	%r11,%rax
2376*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
2377*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
2378*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
2379*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
2380*4757b351SPierre Pronchery	xorq	%r11,%r11
2381*4757b351SPierre Pronchery	shlq	$1,%rax
2382*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2383*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2384*4757b351SPierre Pronchery	xorq	%r11,%rax
2385*4757b351SPierre Pronchery	movq	%rax,64(%rsp)
2386*4757b351SPierre Pronchery	movq	%rbx,64 + 8(%rsp)
2387*4757b351SPierre Pronchery	vmovdqa	64(%rsp),%xmm13
2388*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm5
2389*4757b351SPierre Pronchery	xorq	%r11,%r11
2390*4757b351SPierre Pronchery	shlq	$1,%rax
2391*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2392*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2393*4757b351SPierre Pronchery	xorq	%r11,%rax
2394*4757b351SPierre Pronchery	movq	%rax,80(%rsp)
2395*4757b351SPierre Pronchery	movq	%rbx,80 + 8(%rsp)
2396*4757b351SPierre Pronchery	vmovdqa	80(%rsp),%xmm14
2397*4757b351SPierre Pronchery	vmovdqu	80(%rdi),%xmm6
2398*4757b351SPierre Pronchery	xorq	%r11,%r11
2399*4757b351SPierre Pronchery	shlq	$1,%rax
2400*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2401*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2402*4757b351SPierre Pronchery	xorq	%r11,%rax
2403*4757b351SPierre Pronchery	movq	%rax,96(%rsp)
2404*4757b351SPierre Pronchery	movq	%rbx,96 + 8(%rsp)
2405*4757b351SPierre Pronchery	vmovdqa	96(%rsp),%xmm15
2406*4757b351SPierre Pronchery	vmovdqu	96(%rdi),%xmm7
2407*4757b351SPierre Pronchery	addq	$0x70,%rdi
2408*4757b351SPierre Pronchery	andq	$0xf,%rdx
2409*4757b351SPierre Pronchery	je	.L_done_7_amivrujEyduiFoi
2410*4757b351SPierre Pronchery
2411*4757b351SPierre Pronchery.L_steal_cipher_7_amivrujEyduiFoi:
2412*4757b351SPierre Pronchery	xorq	%r11,%r11
2413*4757b351SPierre Pronchery	shlq	$1,%rax
2414*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2415*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2416*4757b351SPierre Pronchery	xorq	%r11,%rax
2417*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
2418*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
2419*4757b351SPierre Pronchery	vmovdqa64	%xmm15,%xmm16
2420*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm15
2421*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2422*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2423*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2424*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2425*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2426*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2427*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
2428*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
2429*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
2430*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
2431*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
2432*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
2433*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
2434*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
2435*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm7,%xmm7
2436*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
2437*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2438*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2439*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2440*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2441*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2442*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2443*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2444*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
2445*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2446*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2447*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2448*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2449*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2450*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2451*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2452*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
2453*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2454*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2455*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2456*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2457*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2458*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2459*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2460*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
2461*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2462*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2463*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2464*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2465*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2466*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2467*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2468*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
2469*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2470*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2471*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2472*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2473*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2474*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2475*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2476*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
2477*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2478*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2479*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2480*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2481*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2482*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2483*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2484*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
2485*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2486*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2487*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2488*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2489*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2490*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2491*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2492*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
2493*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2494*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2495*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2496*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2497*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2498*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2499*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2500*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
2501*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2502*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2503*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2504*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2505*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2506*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2507*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2508*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
2509*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
2510*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
2511*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
2512*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
2513*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
2514*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
2515*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm7,%xmm7
2516*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2517*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2518*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2519*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2520*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2521*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2522*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
2523*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
2524*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
2525*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
2526*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
2527*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
2528*4757b351SPierre Pronchery	vmovdqu	%xmm6,80(%rsi)
2529*4757b351SPierre Pronchery	addq	$0x70,%rsi
2530*4757b351SPierre Pronchery	vmovdqa64	%xmm16,%xmm0
2531*4757b351SPierre Pronchery	vmovdqa	%xmm7,%xmm8
2532*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
2533*4757b351SPierre Pronchery
2534*4757b351SPierre Pronchery.L_done_7_amivrujEyduiFoi:
2535*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2536*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2537*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2538*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2539*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2540*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2541*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
2542*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
2543*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
2544*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
2545*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
2546*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
2547*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
2548*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
2549*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm7,%xmm7
2550*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
2551*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2552*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2553*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2554*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2555*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2556*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2557*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2558*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
2559*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2560*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2561*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2562*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2563*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2564*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2565*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2566*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
2567*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2568*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2569*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2570*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2571*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2572*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2573*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2574*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
2575*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2576*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2577*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2578*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2579*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2580*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2581*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2582*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
2583*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2584*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2585*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2586*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2587*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2588*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2589*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2590*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
2591*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2592*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2593*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2594*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2595*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2596*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2597*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2598*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
2599*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2600*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2601*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2602*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2603*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2604*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2605*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2606*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
2607*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2608*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2609*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2610*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2611*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2612*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2613*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2614*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
2615*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2616*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2617*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2618*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2619*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2620*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2621*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
2622*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
2623*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
2624*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
2625*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
2626*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
2627*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
2628*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
2629*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm7,%xmm7
2630*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2631*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2632*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2633*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2634*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2635*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2636*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
2637*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
2638*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
2639*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
2640*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
2641*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
2642*4757b351SPierre Pronchery	vmovdqu	%xmm6,80(%rsi)
2643*4757b351SPierre Pronchery	addq	$0x70,%rsi
2644*4757b351SPierre Pronchery	vmovdqa	%xmm7,%xmm8
2645*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
2646*4757b351SPierre Pronchery
2647*4757b351SPierre Pronchery.L_num_blocks_is_6_amivrujEyduiFoi:
2648*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
2649*4757b351SPierre Pronchery	movq	0(%rsp),%rax
2650*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
2651*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
2652*4757b351SPierre Pronchery	xorq	%r11,%r11
2653*4757b351SPierre Pronchery	shlq	$1,%rax
2654*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2655*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2656*4757b351SPierre Pronchery	xorq	%r11,%rax
2657*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
2658*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
2659*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
2660*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
2661*4757b351SPierre Pronchery	xorq	%r11,%r11
2662*4757b351SPierre Pronchery	shlq	$1,%rax
2663*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2664*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2665*4757b351SPierre Pronchery	xorq	%r11,%rax
2666*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
2667*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
2668*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
2669*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
2670*4757b351SPierre Pronchery	xorq	%r11,%r11
2671*4757b351SPierre Pronchery	shlq	$1,%rax
2672*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2673*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2674*4757b351SPierre Pronchery	xorq	%r11,%rax
2675*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
2676*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
2677*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
2678*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
2679*4757b351SPierre Pronchery	xorq	%r11,%r11
2680*4757b351SPierre Pronchery	shlq	$1,%rax
2681*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2682*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2683*4757b351SPierre Pronchery	xorq	%r11,%rax
2684*4757b351SPierre Pronchery	movq	%rax,64(%rsp)
2685*4757b351SPierre Pronchery	movq	%rbx,64 + 8(%rsp)
2686*4757b351SPierre Pronchery	vmovdqa	64(%rsp),%xmm13
2687*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm5
2688*4757b351SPierre Pronchery	xorq	%r11,%r11
2689*4757b351SPierre Pronchery	shlq	$1,%rax
2690*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2691*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2692*4757b351SPierre Pronchery	xorq	%r11,%rax
2693*4757b351SPierre Pronchery	movq	%rax,80(%rsp)
2694*4757b351SPierre Pronchery	movq	%rbx,80 + 8(%rsp)
2695*4757b351SPierre Pronchery	vmovdqa	80(%rsp),%xmm14
2696*4757b351SPierre Pronchery	vmovdqu	80(%rdi),%xmm6
2697*4757b351SPierre Pronchery	addq	$0x60,%rdi
2698*4757b351SPierre Pronchery	andq	$0xf,%rdx
2699*4757b351SPierre Pronchery	je	.L_done_6_amivrujEyduiFoi
2700*4757b351SPierre Pronchery
2701*4757b351SPierre Pronchery.L_steal_cipher_6_amivrujEyduiFoi:
2702*4757b351SPierre Pronchery	xorq	%r11,%r11
2703*4757b351SPierre Pronchery	shlq	$1,%rax
2704*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2705*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2706*4757b351SPierre Pronchery	xorq	%r11,%rax
2707*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
2708*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
2709*4757b351SPierre Pronchery	vmovdqa64	%xmm14,%xmm15
2710*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm14
2711*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2712*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2713*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2714*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2715*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2716*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2717*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
2718*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
2719*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
2720*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
2721*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
2722*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
2723*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
2724*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
2725*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2726*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2727*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2728*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2729*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2730*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2731*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
2732*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2733*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2734*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2735*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2736*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2737*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2738*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
2739*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2740*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2741*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2742*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2743*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2744*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2745*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
2746*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2747*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2748*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2749*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2750*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2751*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2752*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
2753*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2754*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2755*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2756*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2757*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2758*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2759*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
2760*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2761*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2762*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2763*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2764*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2765*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2766*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
2767*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2768*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2769*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2770*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2771*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2772*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2773*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
2774*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2775*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2776*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2777*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2778*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2779*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2780*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
2781*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2782*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2783*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2784*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2785*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2786*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2787*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
2788*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
2789*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
2790*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
2791*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
2792*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
2793*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
2794*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2795*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2796*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2797*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2798*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2799*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2800*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
2801*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
2802*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
2803*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
2804*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
2805*4757b351SPierre Pronchery	addq	$0x60,%rsi
2806*4757b351SPierre Pronchery	vmovdqa	%xmm15,%xmm0
2807*4757b351SPierre Pronchery	vmovdqa	%xmm6,%xmm8
2808*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
2809*4757b351SPierre Pronchery
2810*4757b351SPierre Pronchery.L_done_6_amivrujEyduiFoi:
2811*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2812*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2813*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2814*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2815*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2816*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2817*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
2818*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
2819*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
2820*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
2821*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
2822*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
2823*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
2824*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
2825*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2826*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2827*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2828*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2829*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2830*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2831*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
2832*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2833*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2834*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2835*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2836*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2837*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2838*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
2839*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2840*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2841*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2842*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2843*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2844*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2845*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
2846*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2847*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2848*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2849*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2850*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2851*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2852*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
2853*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2854*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2855*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2856*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2857*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2858*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2859*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
2860*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2861*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2862*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2863*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2864*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2865*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2866*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
2867*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2868*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2869*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2870*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2871*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2872*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2873*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
2874*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2875*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2876*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2877*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2878*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2879*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2880*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
2881*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2882*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2883*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2884*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2885*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2886*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
2887*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
2888*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
2889*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
2890*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
2891*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
2892*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
2893*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
2894*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2895*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2896*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2897*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2898*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2899*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
2900*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
2901*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
2902*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
2903*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
2904*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
2905*4757b351SPierre Pronchery	addq	$0x60,%rsi
2906*4757b351SPierre Pronchery	vmovdqa	%xmm6,%xmm8
2907*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
2908*4757b351SPierre Pronchery
2909*4757b351SPierre Pronchery.L_num_blocks_is_5_amivrujEyduiFoi:
2910*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
2911*4757b351SPierre Pronchery	movq	0(%rsp),%rax
2912*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
2913*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
2914*4757b351SPierre Pronchery	xorq	%r11,%r11
2915*4757b351SPierre Pronchery	shlq	$1,%rax
2916*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2917*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2918*4757b351SPierre Pronchery	xorq	%r11,%rax
2919*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
2920*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
2921*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
2922*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
2923*4757b351SPierre Pronchery	xorq	%r11,%r11
2924*4757b351SPierre Pronchery	shlq	$1,%rax
2925*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2926*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2927*4757b351SPierre Pronchery	xorq	%r11,%rax
2928*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
2929*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
2930*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
2931*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
2932*4757b351SPierre Pronchery	xorq	%r11,%r11
2933*4757b351SPierre Pronchery	shlq	$1,%rax
2934*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2935*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2936*4757b351SPierre Pronchery	xorq	%r11,%rax
2937*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
2938*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
2939*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
2940*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
2941*4757b351SPierre Pronchery	xorq	%r11,%r11
2942*4757b351SPierre Pronchery	shlq	$1,%rax
2943*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2944*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2945*4757b351SPierre Pronchery	xorq	%r11,%rax
2946*4757b351SPierre Pronchery	movq	%rax,64(%rsp)
2947*4757b351SPierre Pronchery	movq	%rbx,64 + 8(%rsp)
2948*4757b351SPierre Pronchery	vmovdqa	64(%rsp),%xmm13
2949*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm5
2950*4757b351SPierre Pronchery	addq	$0x50,%rdi
2951*4757b351SPierre Pronchery	andq	$0xf,%rdx
2952*4757b351SPierre Pronchery	je	.L_done_5_amivrujEyduiFoi
2953*4757b351SPierre Pronchery
2954*4757b351SPierre Pronchery.L_steal_cipher_5_amivrujEyduiFoi:
2955*4757b351SPierre Pronchery	xorq	%r11,%r11
2956*4757b351SPierre Pronchery	shlq	$1,%rax
2957*4757b351SPierre Pronchery	adcq	%rbx,%rbx
2958*4757b351SPierre Pronchery	cmovcq	%r10,%r11
2959*4757b351SPierre Pronchery	xorq	%r11,%rax
2960*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
2961*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
2962*4757b351SPierre Pronchery	vmovdqa64	%xmm13,%xmm14
2963*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm13
2964*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
2965*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
2966*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
2967*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
2968*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
2969*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
2970*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
2971*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
2972*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
2973*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
2974*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
2975*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
2976*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2977*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2978*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2979*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2980*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2981*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
2982*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2983*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2984*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2985*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2986*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2987*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
2988*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2989*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2990*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2991*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2992*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2993*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
2994*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
2995*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
2996*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
2997*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
2998*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
2999*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3000*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3001*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3002*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3003*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3004*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3005*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3006*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3007*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3008*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3009*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3010*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3011*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3012*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3013*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3014*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3015*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3016*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3017*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3018*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3019*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3020*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3021*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3022*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3023*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3024*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3025*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3026*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3027*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3028*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3029*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3030*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3031*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3032*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
3033*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
3034*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
3035*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3036*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3037*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3038*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3039*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
3040*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3041*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
3042*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
3043*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
3044*4757b351SPierre Pronchery	addq	$0x50,%rsi
3045*4757b351SPierre Pronchery	vmovdqa	%xmm14,%xmm0
3046*4757b351SPierre Pronchery	vmovdqa	%xmm5,%xmm8
3047*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
3048*4757b351SPierre Pronchery
3049*4757b351SPierre Pronchery.L_done_5_amivrujEyduiFoi:
3050*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3051*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3052*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3053*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3054*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
3055*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3056*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3057*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3058*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
3059*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
3060*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
3061*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3062*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3063*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3064*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3065*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3066*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3067*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3068*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3069*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3070*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3071*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3072*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3073*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3074*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3075*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3076*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3077*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3078*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3079*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3080*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3081*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3082*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3083*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3084*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3085*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3086*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3087*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3088*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3089*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3090*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3091*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3092*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3093*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3094*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3095*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3096*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3097*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3098*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3099*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3100*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3101*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3102*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3103*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3104*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3105*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3106*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3107*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3108*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3109*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3110*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3111*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3112*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3113*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3114*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
3115*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3116*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3117*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3118*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
3119*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
3120*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
3121*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3122*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3123*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3124*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3125*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
3126*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3127*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
3128*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
3129*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
3130*4757b351SPierre Pronchery	addq	$0x50,%rsi
3131*4757b351SPierre Pronchery	vmovdqa	%xmm5,%xmm8
3132*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
3133*4757b351SPierre Pronchery
3134*4757b351SPierre Pronchery.L_num_blocks_is_4_amivrujEyduiFoi:
3135*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
3136*4757b351SPierre Pronchery	movq	0(%rsp),%rax
3137*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
3138*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
3139*4757b351SPierre Pronchery	xorq	%r11,%r11
3140*4757b351SPierre Pronchery	shlq	$1,%rax
3141*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3142*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3143*4757b351SPierre Pronchery	xorq	%r11,%rax
3144*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3145*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
3146*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
3147*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
3148*4757b351SPierre Pronchery	xorq	%r11,%r11
3149*4757b351SPierre Pronchery	shlq	$1,%rax
3150*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3151*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3152*4757b351SPierre Pronchery	xorq	%r11,%rax
3153*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
3154*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
3155*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
3156*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
3157*4757b351SPierre Pronchery	xorq	%r11,%r11
3158*4757b351SPierre Pronchery	shlq	$1,%rax
3159*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3160*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3161*4757b351SPierre Pronchery	xorq	%r11,%rax
3162*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
3163*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
3164*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
3165*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
3166*4757b351SPierre Pronchery	addq	$0x40,%rdi
3167*4757b351SPierre Pronchery	andq	$0xf,%rdx
3168*4757b351SPierre Pronchery	je	.L_done_4_amivrujEyduiFoi
3169*4757b351SPierre Pronchery
3170*4757b351SPierre Pronchery.L_steal_cipher_4_amivrujEyduiFoi:
3171*4757b351SPierre Pronchery	xorq	%r11,%r11
3172*4757b351SPierre Pronchery	shlq	$1,%rax
3173*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3174*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3175*4757b351SPierre Pronchery	xorq	%r11,%rax
3176*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3177*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
3178*4757b351SPierre Pronchery	vmovdqa64	%xmm12,%xmm13
3179*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm12
3180*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3181*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3182*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3183*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3184*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3185*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3186*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3187*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
3188*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
3189*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3190*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3191*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3192*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3193*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3194*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3195*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3196*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3197*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3198*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3199*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3200*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3201*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3202*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3203*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3204*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3205*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3206*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3207*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3208*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3209*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3210*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3211*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3212*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3213*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3214*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3215*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3216*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3217*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3218*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3219*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3220*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3221*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3222*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3223*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3224*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3225*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3226*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3227*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3228*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3229*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3230*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3231*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3232*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3233*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3234*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3235*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3236*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3237*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
3238*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
3239*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3240*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3241*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3242*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3243*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3244*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
3245*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
3246*4757b351SPierre Pronchery	addq	$0x40,%rsi
3247*4757b351SPierre Pronchery	vmovdqa	%xmm13,%xmm0
3248*4757b351SPierre Pronchery	vmovdqa	%xmm4,%xmm8
3249*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
3250*4757b351SPierre Pronchery
3251*4757b351SPierre Pronchery.L_done_4_amivrujEyduiFoi:
3252*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3253*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3254*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3255*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3256*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3257*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3258*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3259*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
3260*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
3261*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3262*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3263*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3264*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3265*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3266*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3267*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3268*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3269*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3270*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3271*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3272*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3273*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3274*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3275*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3276*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3277*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3278*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3279*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3280*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3281*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3282*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3283*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3284*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3285*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3286*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3287*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3288*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3289*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3290*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3291*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3292*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3293*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3294*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3295*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3296*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3297*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3298*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3299*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3300*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3301*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3302*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3303*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3304*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3305*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
3306*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3307*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3308*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3309*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
3310*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
3311*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3312*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3313*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3314*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
3315*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3316*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
3317*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
3318*4757b351SPierre Pronchery	addq	$0x40,%rsi
3319*4757b351SPierre Pronchery	vmovdqa	%xmm4,%xmm8
3320*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
3321*4757b351SPierre Pronchery
3322*4757b351SPierre Pronchery.L_num_blocks_is_3_amivrujEyduiFoi:
3323*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
3324*4757b351SPierre Pronchery	movq	0(%rsp),%rax
3325*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
3326*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
3327*4757b351SPierre Pronchery	xorq	%r11,%r11
3328*4757b351SPierre Pronchery	shlq	$1,%rax
3329*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3330*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3331*4757b351SPierre Pronchery	xorq	%r11,%rax
3332*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3333*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
3334*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
3335*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
3336*4757b351SPierre Pronchery	xorq	%r11,%r11
3337*4757b351SPierre Pronchery	shlq	$1,%rax
3338*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3339*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3340*4757b351SPierre Pronchery	xorq	%r11,%rax
3341*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
3342*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
3343*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
3344*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
3345*4757b351SPierre Pronchery	addq	$0x30,%rdi
3346*4757b351SPierre Pronchery	andq	$0xf,%rdx
3347*4757b351SPierre Pronchery	je	.L_done_3_amivrujEyduiFoi
3348*4757b351SPierre Pronchery
3349*4757b351SPierre Pronchery.L_steal_cipher_3_amivrujEyduiFoi:
3350*4757b351SPierre Pronchery	xorq	%r11,%r11
3351*4757b351SPierre Pronchery	shlq	$1,%rax
3352*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3353*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3354*4757b351SPierre Pronchery	xorq	%r11,%rax
3355*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3356*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
3357*4757b351SPierre Pronchery	vmovdqa64	%xmm11,%xmm12
3358*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm11
3359*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3360*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3361*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3362*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3363*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3364*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3365*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
3366*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3367*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3368*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3369*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3370*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3371*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3372*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3373*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3374*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3375*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3376*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3377*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3378*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3379*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3380*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3381*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3382*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3383*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3384*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3385*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3386*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3387*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3388*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3389*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3390*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3391*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3392*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3393*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3394*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3395*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3396*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3397*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3398*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3399*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3400*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3401*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3402*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3403*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3404*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3405*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
3406*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3407*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3408*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3409*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3410*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
3411*4757b351SPierre Pronchery	addq	$0x30,%rsi
3412*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
3413*4757b351SPierre Pronchery	vmovdqa	%xmm3,%xmm8
3414*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
3415*4757b351SPierre Pronchery
3416*4757b351SPierre Pronchery.L_done_3_amivrujEyduiFoi:
3417*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3418*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3419*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3420*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3421*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3422*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3423*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
3424*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3425*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3426*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3427*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3428*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3429*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3430*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3431*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3432*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3433*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3434*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3435*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3436*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3437*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3438*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3439*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3440*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3441*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3442*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3443*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3444*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3445*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3446*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3447*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3448*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3449*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3450*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3451*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3452*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3453*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3454*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3455*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3456*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3457*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3458*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3459*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
3460*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3461*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3462*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3463*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
3464*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3465*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3466*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
3467*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3468*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
3469*4757b351SPierre Pronchery	addq	$0x30,%rsi
3470*4757b351SPierre Pronchery	vmovdqa	%xmm3,%xmm8
3471*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
3472*4757b351SPierre Pronchery
3473*4757b351SPierre Pronchery.L_num_blocks_is_2_amivrujEyduiFoi:
3474*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
3475*4757b351SPierre Pronchery	movq	0(%rsp),%rax
3476*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
3477*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
3478*4757b351SPierre Pronchery	xorq	%r11,%r11
3479*4757b351SPierre Pronchery	shlq	$1,%rax
3480*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3481*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3482*4757b351SPierre Pronchery	xorq	%r11,%rax
3483*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3484*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
3485*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
3486*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
3487*4757b351SPierre Pronchery	addq	$0x20,%rdi
3488*4757b351SPierre Pronchery	andq	$0xf,%rdx
3489*4757b351SPierre Pronchery	je	.L_done_2_amivrujEyduiFoi
3490*4757b351SPierre Pronchery
3491*4757b351SPierre Pronchery.L_steal_cipher_2_amivrujEyduiFoi:
3492*4757b351SPierre Pronchery	xorq	%r11,%r11
3493*4757b351SPierre Pronchery	shlq	$1,%rax
3494*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3495*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3496*4757b351SPierre Pronchery	xorq	%r11,%rax
3497*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3498*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
3499*4757b351SPierre Pronchery	vmovdqa64	%xmm10,%xmm11
3500*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
3501*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3502*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3503*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3504*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3505*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3506*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3507*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3508*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3509*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3510*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3511*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3512*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3513*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3514*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3515*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3516*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3517*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3518*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3519*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3520*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3521*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3522*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3523*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3524*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3525*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3526*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3527*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3528*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3529*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3530*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3531*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3532*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3533*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3534*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3535*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3536*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3537*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3538*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3539*4757b351SPierre Pronchery	addq	$0x20,%rsi
3540*4757b351SPierre Pronchery	vmovdqa	%xmm11,%xmm0
3541*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
3542*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
3543*4757b351SPierre Pronchery
3544*4757b351SPierre Pronchery.L_done_2_amivrujEyduiFoi:
3545*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3546*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3547*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3548*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3549*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
3550*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3551*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3552*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3553*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3554*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3555*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3556*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3557*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3558*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3559*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3560*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3561*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3562*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3563*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3564*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3565*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3566*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3567*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3568*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3569*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3570*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3571*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3572*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3573*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3574*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3575*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3576*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
3577*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3578*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3579*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
3580*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3581*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
3582*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
3583*4757b351SPierre Pronchery	addq	$0x20,%rsi
3584*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
3585*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
3586*4757b351SPierre Pronchery
3587*4757b351SPierre Pronchery.L_num_blocks_is_1_amivrujEyduiFoi:
3588*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
3589*4757b351SPierre Pronchery	movq	0(%rsp),%rax
3590*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
3591*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
3592*4757b351SPierre Pronchery	addq	$0x10,%rdi
3593*4757b351SPierre Pronchery	andq	$0xf,%rdx
3594*4757b351SPierre Pronchery	je	.L_done_1_amivrujEyduiFoi
3595*4757b351SPierre Pronchery
3596*4757b351SPierre Pronchery.L_steal_cipher_1_amivrujEyduiFoi:
3597*4757b351SPierre Pronchery	xorq	%r11,%r11
3598*4757b351SPierre Pronchery	shlq	$1,%rax
3599*4757b351SPierre Pronchery	adcq	%rbx,%rbx
3600*4757b351SPierre Pronchery	cmovcq	%r10,%r11
3601*4757b351SPierre Pronchery	xorq	%r11,%rax
3602*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
3603*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
3604*4757b351SPierre Pronchery	vmovdqa64	%xmm9,%xmm10
3605*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm9
3606*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3607*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3608*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3609*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3610*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3611*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3612*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3613*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3614*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3615*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3616*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3617*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3618*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3619*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3620*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3621*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3622*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3623*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3624*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3625*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3626*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3627*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3628*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3629*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3630*4757b351SPierre Pronchery	addq	$0x10,%rsi
3631*4757b351SPierre Pronchery	vmovdqa	%xmm10,%xmm0
3632*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
3633*4757b351SPierre Pronchery	jmp	.L_steal_cipher_amivrujEyduiFoi
3634*4757b351SPierre Pronchery
3635*4757b351SPierre Pronchery.L_done_1_amivrujEyduiFoi:
3636*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3637*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
3638*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
3639*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
3640*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3641*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
3642*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3643*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
3644*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3645*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
3646*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3647*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
3648*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3649*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
3650*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3651*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
3652*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3653*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
3654*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3655*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
3656*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
3657*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
3658*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
3659*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
3660*4757b351SPierre Pronchery	addq	$0x10,%rsi
3661*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
3662*4757b351SPierre Pronchery	jmp	.L_done_amivrujEyduiFoi
3663*4757b351SPierre Pronchery.cfi_endproc
3664*4757b351SPierre Pronchery.globl	aesni_xts_256_encrypt_avx512
3665*4757b351SPierre Pronchery.hidden	aesni_xts_256_encrypt_avx512
3666*4757b351SPierre Pronchery.type	aesni_xts_256_encrypt_avx512,@function
3667*4757b351SPierre Pronchery.align	32
3668*4757b351SPierre Proncheryaesni_xts_256_encrypt_avx512:
3669*4757b351SPierre Pronchery.cfi_startproc
3670*4757b351SPierre Pronchery.byte	243,15,30,250
3671*4757b351SPierre Pronchery	pushq	%rbp
3672*4757b351SPierre Pronchery	movq	%rsp,%rbp
3673*4757b351SPierre Pronchery	subq	$136,%rsp
3674*4757b351SPierre Pronchery	andq	$0xffffffffffffffc0,%rsp
3675*4757b351SPierre Pronchery	movq	%rbx,128(%rsp)
3676*4757b351SPierre Pronchery	movq	$0x87,%r10
3677*4757b351SPierre Pronchery	vmovdqu	(%r9),%xmm1
3678*4757b351SPierre Pronchery	vpxor	(%r8),%xmm1,%xmm1
3679*4757b351SPierre Pronchery	vaesenc	16(%r8),%xmm1,%xmm1
3680*4757b351SPierre Pronchery	vaesenc	32(%r8),%xmm1,%xmm1
3681*4757b351SPierre Pronchery	vaesenc	48(%r8),%xmm1,%xmm1
3682*4757b351SPierre Pronchery	vaesenc	64(%r8),%xmm1,%xmm1
3683*4757b351SPierre Pronchery	vaesenc	80(%r8),%xmm1,%xmm1
3684*4757b351SPierre Pronchery	vaesenc	96(%r8),%xmm1,%xmm1
3685*4757b351SPierre Pronchery	vaesenc	112(%r8),%xmm1,%xmm1
3686*4757b351SPierre Pronchery	vaesenc	128(%r8),%xmm1,%xmm1
3687*4757b351SPierre Pronchery	vaesenc	144(%r8),%xmm1,%xmm1
3688*4757b351SPierre Pronchery	vaesenc	160(%r8),%xmm1,%xmm1
3689*4757b351SPierre Pronchery	vaesenc	176(%r8),%xmm1,%xmm1
3690*4757b351SPierre Pronchery	vaesenc	192(%r8),%xmm1,%xmm1
3691*4757b351SPierre Pronchery	vaesenc	208(%r8),%xmm1,%xmm1
3692*4757b351SPierre Pronchery	vaesenclast	224(%r8),%xmm1,%xmm1
3693*4757b351SPierre Pronchery	vmovdqa	%xmm1,(%rsp)
3694*4757b351SPierre Pronchery
3695*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
3696*4757b351SPierre Pronchery	jl	.L_less_than_128_bytes_wcpqaDvsGlbjGoe
3697*4757b351SPierre Pronchery	vpbroadcastq	%r10,%zmm25
3698*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
3699*4757b351SPierre Pronchery	jge	.L_start_by16_wcpqaDvsGlbjGoe
3700*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
3701*4757b351SPierre Pronchery	jge	.L_start_by8_wcpqaDvsGlbjGoe
3702*4757b351SPierre Pronchery
3703*4757b351SPierre Pronchery.L_do_n_blocks_wcpqaDvsGlbjGoe:
3704*4757b351SPierre Pronchery	cmpq	$0x0,%rdx
3705*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
3706*4757b351SPierre Pronchery	cmpq	$0x70,%rdx
3707*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe
3708*4757b351SPierre Pronchery	cmpq	$0x60,%rdx
3709*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe
3710*4757b351SPierre Pronchery	cmpq	$0x50,%rdx
3711*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe
3712*4757b351SPierre Pronchery	cmpq	$0x40,%rdx
3713*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe
3714*4757b351SPierre Pronchery	cmpq	$0x30,%rdx
3715*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe
3716*4757b351SPierre Pronchery	cmpq	$0x20,%rdx
3717*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe
3718*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
3719*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe
3720*4757b351SPierre Pronchery	vmovdqa	%xmm0,%xmm8
3721*4757b351SPierre Pronchery	vmovdqa	%xmm9,%xmm0
3722*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
3723*4757b351SPierre Pronchery
3724*4757b351SPierre Pronchery.L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe:
3725*4757b351SPierre Pronchery	movq	$0x0000ffffffffffff,%r8
3726*4757b351SPierre Pronchery	kmovq	%r8,%k1
3727*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
3728*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2{%k1}
3729*4757b351SPierre Pronchery	addq	$0x70,%rdi
3730*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
3731*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
3732*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
3733*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
3734*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3735*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3736*4757b351SPierre Pronchery
3737*4757b351SPierre Pronchery
3738*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
3739*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3740*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3741*4757b351SPierre Pronchery
3742*4757b351SPierre Pronchery
3743*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
3744*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3745*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3746*4757b351SPierre Pronchery
3747*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
3748*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3749*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3750*4757b351SPierre Pronchery
3751*4757b351SPierre Pronchery
3752*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
3753*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3754*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3755*4757b351SPierre Pronchery
3756*4757b351SPierre Pronchery
3757*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
3758*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3759*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3760*4757b351SPierre Pronchery
3761*4757b351SPierre Pronchery
3762*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
3763*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3764*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3765*4757b351SPierre Pronchery
3766*4757b351SPierre Pronchery
3767*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
3768*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3769*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3770*4757b351SPierre Pronchery
3771*4757b351SPierre Pronchery
3772*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
3773*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3774*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3775*4757b351SPierre Pronchery
3776*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
3777*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3778*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3779*4757b351SPierre Pronchery
3780*4757b351SPierre Pronchery
3781*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
3782*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3783*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3784*4757b351SPierre Pronchery
3785*4757b351SPierre Pronchery
3786*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
3787*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3788*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3789*4757b351SPierre Pronchery
3790*4757b351SPierre Pronchery
3791*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
3792*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3793*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3794*4757b351SPierre Pronchery
3795*4757b351SPierre Pronchery
3796*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
3797*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
3798*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
3799*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
3800*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
3801*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
3802*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
3803*4757b351SPierre Pronchery	addq	$0x70,%rsi
3804*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm2,%xmm8
3805*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm10,%xmm0
3806*4757b351SPierre Pronchery	andq	$0xf,%rdx
3807*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
3808*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
3809*4757b351SPierre Pronchery
3810*4757b351SPierre Pronchery.L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe:
3811*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
3812*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%ymm2
3813*4757b351SPierre Pronchery	addq	$0x60,%rdi
3814*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
3815*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
3816*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
3817*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
3818*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3819*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3820*4757b351SPierre Pronchery
3821*4757b351SPierre Pronchery
3822*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
3823*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3824*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3825*4757b351SPierre Pronchery
3826*4757b351SPierre Pronchery
3827*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
3828*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3829*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3830*4757b351SPierre Pronchery
3831*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
3832*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3833*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3834*4757b351SPierre Pronchery
3835*4757b351SPierre Pronchery
3836*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
3837*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3838*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3839*4757b351SPierre Pronchery
3840*4757b351SPierre Pronchery
3841*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
3842*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3843*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3844*4757b351SPierre Pronchery
3845*4757b351SPierre Pronchery
3846*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
3847*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3848*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3849*4757b351SPierre Pronchery
3850*4757b351SPierre Pronchery
3851*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
3852*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3853*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3854*4757b351SPierre Pronchery
3855*4757b351SPierre Pronchery
3856*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
3857*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3858*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3859*4757b351SPierre Pronchery
3860*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
3861*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3862*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3863*4757b351SPierre Pronchery
3864*4757b351SPierre Pronchery
3865*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
3866*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3867*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3868*4757b351SPierre Pronchery
3869*4757b351SPierre Pronchery
3870*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
3871*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3872*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3873*4757b351SPierre Pronchery
3874*4757b351SPierre Pronchery
3875*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
3876*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3877*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3878*4757b351SPierre Pronchery
3879*4757b351SPierre Pronchery
3880*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
3881*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
3882*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
3883*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
3884*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
3885*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
3886*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
3887*4757b351SPierre Pronchery	addq	$0x60,%rsi
3888*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm2,%xmm8
3889*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm0
3890*4757b351SPierre Pronchery	andq	$0xf,%rdx
3891*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
3892*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
3893*4757b351SPierre Pronchery
3894*4757b351SPierre Pronchery.L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe:
3895*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
3896*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm2
3897*4757b351SPierre Pronchery	addq	$0x50,%rdi
3898*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
3899*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
3900*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
3901*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
3902*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3903*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3904*4757b351SPierre Pronchery
3905*4757b351SPierre Pronchery
3906*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
3907*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3908*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3909*4757b351SPierre Pronchery
3910*4757b351SPierre Pronchery
3911*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
3912*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3913*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3914*4757b351SPierre Pronchery
3915*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
3916*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3917*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3918*4757b351SPierre Pronchery
3919*4757b351SPierre Pronchery
3920*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
3921*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3922*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3923*4757b351SPierre Pronchery
3924*4757b351SPierre Pronchery
3925*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
3926*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3927*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3928*4757b351SPierre Pronchery
3929*4757b351SPierre Pronchery
3930*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
3931*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3932*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3933*4757b351SPierre Pronchery
3934*4757b351SPierre Pronchery
3935*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
3936*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3937*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3938*4757b351SPierre Pronchery
3939*4757b351SPierre Pronchery
3940*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
3941*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3942*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3943*4757b351SPierre Pronchery
3944*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
3945*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3946*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3947*4757b351SPierre Pronchery
3948*4757b351SPierre Pronchery
3949*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
3950*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3951*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3952*4757b351SPierre Pronchery
3953*4757b351SPierre Pronchery
3954*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
3955*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3956*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3957*4757b351SPierre Pronchery
3958*4757b351SPierre Pronchery
3959*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
3960*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3961*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
3962*4757b351SPierre Pronchery
3963*4757b351SPierre Pronchery
3964*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
3965*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
3966*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
3967*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
3968*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
3969*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
3970*4757b351SPierre Pronchery	vmovdqu	%xmm2,64(%rsi)
3971*4757b351SPierre Pronchery	addq	$0x50,%rsi
3972*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
3973*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm0
3974*4757b351SPierre Pronchery	andq	$0xf,%rdx
3975*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
3976*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
3977*4757b351SPierre Pronchery
3978*4757b351SPierre Pronchery.L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe:
3979*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
3980*4757b351SPierre Pronchery	addq	$0x40,%rdi
3981*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
3982*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
3983*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
3984*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3985*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
3986*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3987*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
3988*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3989*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
3990*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3991*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
3992*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3993*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
3994*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3995*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
3996*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3997*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
3998*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
3999*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4000*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4001*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4002*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4003*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4004*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4005*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4006*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4007*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4008*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4009*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4010*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4011*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4012*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
4013*4757b351SPierre Pronchery	addq	$0x40,%rsi
4014*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm1,%xmm8
4015*4757b351SPierre Pronchery	vmovdqa64	%xmm10,%xmm0
4016*4757b351SPierre Pronchery	andq	$0xf,%rdx
4017*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4018*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4019*4757b351SPierre Pronchery.L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe:
4020*4757b351SPierre Pronchery	movq	$-1,%r8
4021*4757b351SPierre Pronchery	shrq	$0x10,%r8
4022*4757b351SPierre Pronchery	kmovq	%r8,%k1
4023*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1{%k1}
4024*4757b351SPierre Pronchery	addq	$0x30,%rdi
4025*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4026*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4027*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4028*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4029*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4030*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4031*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4032*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4033*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4034*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4035*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4036*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4037*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4038*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4039*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4040*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4041*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4042*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4043*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4044*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4045*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4046*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4047*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4048*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4049*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4050*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4051*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4052*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4053*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4054*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4055*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4056*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi){%k1}
4057*4757b351SPierre Pronchery	addq	$0x30,%rsi
4058*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm1,%xmm8
4059*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm9,%xmm0
4060*4757b351SPierre Pronchery	andq	$0xf,%rdx
4061*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4062*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4063*4757b351SPierre Pronchery.L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe:
4064*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%ymm1
4065*4757b351SPierre Pronchery	addq	$0x20,%rdi
4066*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%ymm0
4067*4757b351SPierre Pronchery	vpternlogq	$0x96,%ymm0,%ymm9,%ymm1
4068*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%ymm0
4069*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4070*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%ymm0
4071*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4072*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%ymm0
4073*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4074*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%ymm0
4075*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4076*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%ymm0
4077*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4078*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%ymm0
4079*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4080*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%ymm0
4081*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4082*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%ymm0
4083*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4084*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%ymm0
4085*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4086*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%ymm0
4087*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4088*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%ymm0
4089*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4090*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%ymm0
4091*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4092*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%ymm0
4093*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4094*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%ymm0
4095*4757b351SPierre Pronchery	vaesenclast	%ymm0,%ymm1,%ymm1
4096*4757b351SPierre Pronchery	vpxorq	%ymm9,%ymm1,%ymm1
4097*4757b351SPierre Pronchery	vmovdqu	%ymm1,(%rsi)
4098*4757b351SPierre Pronchery	addq	$0x20,%rsi
4099*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm1,%xmm8
4100*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm0
4101*4757b351SPierre Pronchery	andq	$0xf,%rdx
4102*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4103*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4104*4757b351SPierre Pronchery.L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe:
4105*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
4106*4757b351SPierre Pronchery	addq	$0x10,%rdi
4107*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
4108*4757b351SPierre Pronchery	vpxor	(%rcx),%xmm1,%xmm1
4109*4757b351SPierre Pronchery	vaesenc	16(%rcx),%xmm1,%xmm1
4110*4757b351SPierre Pronchery	vaesenc	32(%rcx),%xmm1,%xmm1
4111*4757b351SPierre Pronchery	vaesenc	48(%rcx),%xmm1,%xmm1
4112*4757b351SPierre Pronchery	vaesenc	64(%rcx),%xmm1,%xmm1
4113*4757b351SPierre Pronchery	vaesenc	80(%rcx),%xmm1,%xmm1
4114*4757b351SPierre Pronchery	vaesenc	96(%rcx),%xmm1,%xmm1
4115*4757b351SPierre Pronchery	vaesenc	112(%rcx),%xmm1,%xmm1
4116*4757b351SPierre Pronchery	vaesenc	128(%rcx),%xmm1,%xmm1
4117*4757b351SPierre Pronchery	vaesenc	144(%rcx),%xmm1,%xmm1
4118*4757b351SPierre Pronchery	vaesenc	160(%rcx),%xmm1,%xmm1
4119*4757b351SPierre Pronchery	vaesenc	176(%rcx),%xmm1,%xmm1
4120*4757b351SPierre Pronchery	vaesenc	192(%rcx),%xmm1,%xmm1
4121*4757b351SPierre Pronchery	vaesenc	208(%rcx),%xmm1,%xmm1
4122*4757b351SPierre Pronchery	vaesenclast	224(%rcx),%xmm1,%xmm1
4123*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
4124*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
4125*4757b351SPierre Pronchery	addq	$0x10,%rsi
4126*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
4127*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm0
4128*4757b351SPierre Pronchery	andq	$0xf,%rdx
4129*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4130*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4131*4757b351SPierre Pronchery
4132*4757b351SPierre Pronchery
4133*4757b351SPierre Pronchery.L_start_by16_wcpqaDvsGlbjGoe:
4134*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
4135*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
4136*4757b351SPierre Pronchery	movq	$0xaa,%r8
4137*4757b351SPierre Pronchery	kmovq	%r8,%k2
4138*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4139*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4140*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4141*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
4142*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4143*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4144*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
4145*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
4146*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
4147*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
4148*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
4149*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
4150*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4151*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm11
4152*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm11,%zmm11
4153*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm15
4154*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm15,%zmm16
4155*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm12
4156*4757b351SPierre Pronchery	vpxord	%zmm16,%zmm12,%zmm12
4157*4757b351SPierre Pronchery
4158*4757b351SPierre Pronchery.L_main_loop_run_16_wcpqaDvsGlbjGoe:
4159*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
4160*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
4161*4757b351SPierre Pronchery	vmovdqu8	128(%rdi),%zmm3
4162*4757b351SPierre Pronchery	vmovdqu8	192(%rdi),%zmm4
4163*4757b351SPierre Pronchery	addq	$0x100,%rdi
4164*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4165*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
4166*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
4167*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
4168*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4169*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
4170*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
4171*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm3,%zmm3
4172*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm4,%zmm4
4173*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm11,%zmm13
4174*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4175*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm11,%zmm15
4176*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
4177*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4178*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4179*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4180*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4181*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4182*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4183*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4184*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4185*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4186*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4187*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4188*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4189*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4190*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4191*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4192*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm12,%zmm13
4193*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4194*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm12,%zmm16
4195*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
4196*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4197*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4198*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4199*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4200*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4201*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4202*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4203*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4204*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4205*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4206*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4207*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4208*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4209*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4210*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4211*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm15,%zmm13
4212*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4213*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm15,%zmm17
4214*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm17,%zmm17
4215*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4216*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4217*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4218*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4219*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4220*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4221*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4222*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4223*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4224*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4225*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4226*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4227*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4228*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4229*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4230*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm16,%zmm13
4231*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4232*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm16,%zmm18
4233*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm18,%zmm18
4234*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4235*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4236*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4237*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4238*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4239*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4240*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4241*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4242*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4243*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4244*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4245*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4246*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4247*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4248*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4249*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4250*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4251*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4252*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm3,%zmm3
4253*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm4,%zmm4
4254*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4255*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4256*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
4257*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm3,%zmm3
4258*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm4,%zmm4
4259*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4260*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
4261*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
4262*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
4263*4757b351SPierre Pronchery
4264*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
4265*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
4266*4757b351SPierre Pronchery	vmovdqa32	%zmm17,%zmm11
4267*4757b351SPierre Pronchery	vmovdqa32	%zmm18,%zmm12
4268*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
4269*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
4270*4757b351SPierre Pronchery	vmovdqu8	%zmm3,128(%rsi)
4271*4757b351SPierre Pronchery	vmovdqu8	%zmm4,192(%rsi)
4272*4757b351SPierre Pronchery	addq	$0x100,%rsi
4273*4757b351SPierre Pronchery	subq	$0x100,%rdx
4274*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
4275*4757b351SPierre Pronchery	jae	.L_main_loop_run_16_wcpqaDvsGlbjGoe
4276*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
4277*4757b351SPierre Pronchery	jae	.L_main_loop_run_8_wcpqaDvsGlbjGoe
4278*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm4,%xmm0
4279*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_wcpqaDvsGlbjGoe
4280*4757b351SPierre Pronchery
4281*4757b351SPierre Pronchery.L_start_by8_wcpqaDvsGlbjGoe:
4282*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
4283*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
4284*4757b351SPierre Pronchery	movq	$0xaa,%r8
4285*4757b351SPierre Pronchery	kmovq	%r8,%k2
4286*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4287*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4288*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4289*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
4290*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4291*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4292*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
4293*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
4294*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
4295*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
4296*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
4297*4757b351SPierre Pronchery
4298*4757b351SPierre Pronchery.L_main_loop_run_8_wcpqaDvsGlbjGoe:
4299*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
4300*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
4301*4757b351SPierre Pronchery	addq	$0x80,%rdi
4302*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4303*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4304*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
4305*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
4306*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4307*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm15
4308*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
4309*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4310*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4311*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4312*4757b351SPierre Pronchery
4313*4757b351SPierre Pronchery
4314*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4315*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4316*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4317*4757b351SPierre Pronchery
4318*4757b351SPierre Pronchery
4319*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4320*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4321*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4322*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm13
4323*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
4324*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm16
4325*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
4326*4757b351SPierre Pronchery
4327*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4328*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4329*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4330*4757b351SPierre Pronchery
4331*4757b351SPierre Pronchery
4332*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4333*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4334*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4335*4757b351SPierre Pronchery
4336*4757b351SPierre Pronchery
4337*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4338*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4339*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4340*4757b351SPierre Pronchery
4341*4757b351SPierre Pronchery
4342*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4343*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4344*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4345*4757b351SPierre Pronchery
4346*4757b351SPierre Pronchery
4347*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4348*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4349*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4350*4757b351SPierre Pronchery
4351*4757b351SPierre Pronchery
4352*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4353*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4354*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4355*4757b351SPierre Pronchery
4356*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4357*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4358*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4359*4757b351SPierre Pronchery
4360*4757b351SPierre Pronchery
4361*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4362*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4363*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4364*4757b351SPierre Pronchery
4365*4757b351SPierre Pronchery
4366*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4367*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4368*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4369*4757b351SPierre Pronchery
4370*4757b351SPierre Pronchery
4371*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4372*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4373*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4374*4757b351SPierre Pronchery
4375*4757b351SPierre Pronchery
4376*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4377*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4378*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
4379*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4380*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
4381*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
4382*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
4383*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
4384*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
4385*4757b351SPierre Pronchery	addq	$0x80,%rsi
4386*4757b351SPierre Pronchery	subq	$0x80,%rdx
4387*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
4388*4757b351SPierre Pronchery	jae	.L_main_loop_run_8_wcpqaDvsGlbjGoe
4389*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm2,%xmm0
4390*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_wcpqaDvsGlbjGoe
4391*4757b351SPierre Pronchery
4392*4757b351SPierre Pronchery.L_steal_cipher_wcpqaDvsGlbjGoe:
4393*4757b351SPierre Pronchery	vmovdqa	%xmm8,%xmm2
4394*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
4395*4757b351SPierre Pronchery	vmovdqu	(%rax,%rdx,1),%xmm10
4396*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm8,%xmm8
4397*4757b351SPierre Pronchery	vmovdqu	-16(%rdi,%rdx,1),%xmm3
4398*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi,%rdx,1)
4399*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
4400*4757b351SPierre Pronchery	addq	$16,%rax
4401*4757b351SPierre Pronchery	subq	%rdx,%rax
4402*4757b351SPierre Pronchery	vmovdqu	(%rax),%xmm10
4403*4757b351SPierre Pronchery	vpxor	mask1(%rip),%xmm10,%xmm10
4404*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm3,%xmm3
4405*4757b351SPierre Pronchery	vpblendvb	%xmm10,%xmm2,%xmm3,%xmm3
4406*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm8
4407*4757b351SPierre Pronchery	vpxor	(%rcx),%xmm8,%xmm8
4408*4757b351SPierre Pronchery	vaesenc	16(%rcx),%xmm8,%xmm8
4409*4757b351SPierre Pronchery	vaesenc	32(%rcx),%xmm8,%xmm8
4410*4757b351SPierre Pronchery	vaesenc	48(%rcx),%xmm8,%xmm8
4411*4757b351SPierre Pronchery	vaesenc	64(%rcx),%xmm8,%xmm8
4412*4757b351SPierre Pronchery	vaesenc	80(%rcx),%xmm8,%xmm8
4413*4757b351SPierre Pronchery	vaesenc	96(%rcx),%xmm8,%xmm8
4414*4757b351SPierre Pronchery	vaesenc	112(%rcx),%xmm8,%xmm8
4415*4757b351SPierre Pronchery	vaesenc	128(%rcx),%xmm8,%xmm8
4416*4757b351SPierre Pronchery	vaesenc	144(%rcx),%xmm8,%xmm8
4417*4757b351SPierre Pronchery	vaesenc	160(%rcx),%xmm8,%xmm8
4418*4757b351SPierre Pronchery	vaesenc	176(%rcx),%xmm8,%xmm8
4419*4757b351SPierre Pronchery	vaesenc	192(%rcx),%xmm8,%xmm8
4420*4757b351SPierre Pronchery	vaesenc	208(%rcx),%xmm8,%xmm8
4421*4757b351SPierre Pronchery	vaesenclast	224(%rcx),%xmm8,%xmm8
4422*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm8,%xmm8
4423*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi)
4424*4757b351SPierre Pronchery.L_ret_wcpqaDvsGlbjGoe:
4425*4757b351SPierre Pronchery	movq	128(%rsp),%rbx
4426*4757b351SPierre Pronchery	xorq	%r8,%r8
4427*4757b351SPierre Pronchery	movq	%r8,128(%rsp)
4428*4757b351SPierre Pronchery
4429*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm0,%zmm0
4430*4757b351SPierre Pronchery	movq	%rbp,%rsp
4431*4757b351SPierre Pronchery	popq	%rbp
4432*4757b351SPierre Pronchery	vzeroupper
4433*4757b351SPierre Pronchery	.byte	0xf3,0xc3
4434*4757b351SPierre Pronchery
4435*4757b351SPierre Pronchery.L_less_than_128_bytes_wcpqaDvsGlbjGoe:
4436*4757b351SPierre Pronchery	vpbroadcastq	%r10,%zmm25
4437*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
4438*4757b351SPierre Pronchery	jb	.L_ret_wcpqaDvsGlbjGoe
4439*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
4440*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
4441*4757b351SPierre Pronchery	movl	$0xaa,%r8d
4442*4757b351SPierre Pronchery	kmovq	%r8,%k2
4443*4757b351SPierre Pronchery	movq	%rdx,%r8
4444*4757b351SPierre Pronchery	andq	$0x70,%r8
4445*4757b351SPierre Pronchery	cmpq	$0x60,%r8
4446*4757b351SPierre Pronchery	je	.L_num_blocks_is_6_wcpqaDvsGlbjGoe
4447*4757b351SPierre Pronchery	cmpq	$0x50,%r8
4448*4757b351SPierre Pronchery	je	.L_num_blocks_is_5_wcpqaDvsGlbjGoe
4449*4757b351SPierre Pronchery	cmpq	$0x40,%r8
4450*4757b351SPierre Pronchery	je	.L_num_blocks_is_4_wcpqaDvsGlbjGoe
4451*4757b351SPierre Pronchery	cmpq	$0x30,%r8
4452*4757b351SPierre Pronchery	je	.L_num_blocks_is_3_wcpqaDvsGlbjGoe
4453*4757b351SPierre Pronchery	cmpq	$0x20,%r8
4454*4757b351SPierre Pronchery	je	.L_num_blocks_is_2_wcpqaDvsGlbjGoe
4455*4757b351SPierre Pronchery	cmpq	$0x10,%r8
4456*4757b351SPierre Pronchery	je	.L_num_blocks_is_1_wcpqaDvsGlbjGoe
4457*4757b351SPierre Pronchery
4458*4757b351SPierre Pronchery.L_num_blocks_is_7_wcpqaDvsGlbjGoe:
4459*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4460*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4461*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4462*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4463*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4464*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4465*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
4466*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
4467*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
4468*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
4469*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
4470*4757b351SPierre Pronchery	movq	$0x0000ffffffffffff,%r8
4471*4757b351SPierre Pronchery	kmovq	%r8,%k1
4472*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
4473*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2{%k1}
4474*4757b351SPierre Pronchery
4475*4757b351SPierre Pronchery	addq	$0x70,%rdi
4476*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4477*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4478*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
4479*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4480*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4481*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4482*4757b351SPierre Pronchery
4483*4757b351SPierre Pronchery
4484*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4485*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4486*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4487*4757b351SPierre Pronchery
4488*4757b351SPierre Pronchery
4489*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4490*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4491*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4492*4757b351SPierre Pronchery
4493*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4494*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4495*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4496*4757b351SPierre Pronchery
4497*4757b351SPierre Pronchery
4498*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4499*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4500*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4501*4757b351SPierre Pronchery
4502*4757b351SPierre Pronchery
4503*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4504*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4505*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4506*4757b351SPierre Pronchery
4507*4757b351SPierre Pronchery
4508*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4509*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4510*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4511*4757b351SPierre Pronchery
4512*4757b351SPierre Pronchery
4513*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4514*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4515*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4516*4757b351SPierre Pronchery
4517*4757b351SPierre Pronchery
4518*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4519*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4520*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4521*4757b351SPierre Pronchery
4522*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4523*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4524*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4525*4757b351SPierre Pronchery
4526*4757b351SPierre Pronchery
4527*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4528*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4529*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4530*4757b351SPierre Pronchery
4531*4757b351SPierre Pronchery
4532*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4533*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4534*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4535*4757b351SPierre Pronchery
4536*4757b351SPierre Pronchery
4537*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4538*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4539*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4540*4757b351SPierre Pronchery
4541*4757b351SPierre Pronchery
4542*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4543*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4544*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
4545*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4546*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
4547*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
4548*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
4549*4757b351SPierre Pronchery	addq	$0x70,%rsi
4550*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm2,%xmm8
4551*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm10,%xmm0
4552*4757b351SPierre Pronchery	andq	$0xf,%rdx
4553*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4554*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4555*4757b351SPierre Pronchery.L_num_blocks_is_6_wcpqaDvsGlbjGoe:
4556*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4557*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4558*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4559*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4560*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4561*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4562*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
4563*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
4564*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
4565*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
4566*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
4567*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
4568*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%ymm2
4569*4757b351SPierre Pronchery	addq	$96,%rdi
4570*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4571*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4572*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
4573*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4574*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4575*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4576*4757b351SPierre Pronchery
4577*4757b351SPierre Pronchery
4578*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4579*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4580*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4581*4757b351SPierre Pronchery
4582*4757b351SPierre Pronchery
4583*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4584*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4585*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4586*4757b351SPierre Pronchery
4587*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4588*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4589*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4590*4757b351SPierre Pronchery
4591*4757b351SPierre Pronchery
4592*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4593*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4594*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4595*4757b351SPierre Pronchery
4596*4757b351SPierre Pronchery
4597*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4598*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4599*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4600*4757b351SPierre Pronchery
4601*4757b351SPierre Pronchery
4602*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4603*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4604*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4605*4757b351SPierre Pronchery
4606*4757b351SPierre Pronchery
4607*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4608*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4609*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4610*4757b351SPierre Pronchery
4611*4757b351SPierre Pronchery
4612*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4613*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4614*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4615*4757b351SPierre Pronchery
4616*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4617*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4618*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4619*4757b351SPierre Pronchery
4620*4757b351SPierre Pronchery
4621*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4622*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4623*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4624*4757b351SPierre Pronchery
4625*4757b351SPierre Pronchery
4626*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4627*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4628*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4629*4757b351SPierre Pronchery
4630*4757b351SPierre Pronchery
4631*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4632*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4633*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4634*4757b351SPierre Pronchery
4635*4757b351SPierre Pronchery
4636*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4637*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4638*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
4639*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4640*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
4641*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
4642*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
4643*4757b351SPierre Pronchery	addq	$96,%rsi
4644*4757b351SPierre Pronchery
4645*4757b351SPierre Pronchery	vextracti32x4	$0x1,%ymm2,%xmm8
4646*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm0
4647*4757b351SPierre Pronchery	andq	$0xf,%rdx
4648*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4649*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4650*4757b351SPierre Pronchery.L_num_blocks_is_5_wcpqaDvsGlbjGoe:
4651*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4652*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4653*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4654*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4655*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4656*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4657*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
4658*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
4659*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
4660*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
4661*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
4662*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
4663*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%xmm2
4664*4757b351SPierre Pronchery	addq	$80,%rdi
4665*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4666*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4667*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm10,%zmm2
4668*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4669*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4670*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4671*4757b351SPierre Pronchery
4672*4757b351SPierre Pronchery
4673*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4674*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4675*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4676*4757b351SPierre Pronchery
4677*4757b351SPierre Pronchery
4678*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4679*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4680*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4681*4757b351SPierre Pronchery
4682*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4683*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4684*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4685*4757b351SPierre Pronchery
4686*4757b351SPierre Pronchery
4687*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4688*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4689*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4690*4757b351SPierre Pronchery
4691*4757b351SPierre Pronchery
4692*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4693*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4694*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4695*4757b351SPierre Pronchery
4696*4757b351SPierre Pronchery
4697*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4698*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4699*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4700*4757b351SPierre Pronchery
4701*4757b351SPierre Pronchery
4702*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4703*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4704*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4705*4757b351SPierre Pronchery
4706*4757b351SPierre Pronchery
4707*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4708*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4709*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4710*4757b351SPierre Pronchery
4711*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4712*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4713*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4714*4757b351SPierre Pronchery
4715*4757b351SPierre Pronchery
4716*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4717*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4718*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4719*4757b351SPierre Pronchery
4720*4757b351SPierre Pronchery
4721*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4722*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4723*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4724*4757b351SPierre Pronchery
4725*4757b351SPierre Pronchery
4726*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4727*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4728*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm2,%zmm2
4729*4757b351SPierre Pronchery
4730*4757b351SPierre Pronchery
4731*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4732*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4733*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm2,%zmm2
4734*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4735*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
4736*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
4737*4757b351SPierre Pronchery	vmovdqu8	%xmm2,64(%rsi)
4738*4757b351SPierre Pronchery	addq	$80,%rsi
4739*4757b351SPierre Pronchery
4740*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
4741*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm0
4742*4757b351SPierre Pronchery	andq	$0xf,%rdx
4743*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4744*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4745*4757b351SPierre Pronchery.L_num_blocks_is_4_wcpqaDvsGlbjGoe:
4746*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4747*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4748*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4749*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4750*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4751*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4752*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
4753*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
4754*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm6,%zmm7
4755*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
4756*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
4757*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1
4758*4757b351SPierre Pronchery	addq	$64,%rdi
4759*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4760*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4761*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4762*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4763*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4764*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4765*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4766*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4767*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4768*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4769*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4770*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4771*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4772*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4773*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4774*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4775*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4776*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4777*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4778*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4779*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4780*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4781*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4782*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4783*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4784*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4785*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4786*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4787*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4788*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4789*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4790*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi)
4791*4757b351SPierre Pronchery	addq	$64,%rsi
4792*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm1,%xmm8
4793*4757b351SPierre Pronchery	vmovdqa	%xmm10,%xmm0
4794*4757b351SPierre Pronchery	andq	$0xf,%rdx
4795*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4796*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4797*4757b351SPierre Pronchery.L_num_blocks_is_3_wcpqaDvsGlbjGoe:
4798*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4799*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4800*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4801*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4802*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4803*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4804*4757b351SPierre Pronchery	movq	$0x0000ffffffffffff,%r8
4805*4757b351SPierre Pronchery	kmovq	%r8,%k1
4806*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%zmm1{%k1}
4807*4757b351SPierre Pronchery	addq	$48,%rdi
4808*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
4809*4757b351SPierre Pronchery	vpternlogq	$0x96,%zmm0,%zmm9,%zmm1
4810*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
4811*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4812*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
4813*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4814*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
4815*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4816*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
4817*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4818*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
4819*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4820*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
4821*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4822*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
4823*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4824*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
4825*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4826*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
4827*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4828*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
4829*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4830*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
4831*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4832*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
4833*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4834*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
4835*4757b351SPierre Pronchery	vaesenc	%zmm0,%zmm1,%zmm1
4836*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
4837*4757b351SPierre Pronchery	vaesenclast	%zmm0,%zmm1,%zmm1
4838*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
4839*4757b351SPierre Pronchery	vmovdqu8	%zmm1,0(%rsi){%k1}
4840*4757b351SPierre Pronchery	addq	$48,%rsi
4841*4757b351SPierre Pronchery	vextracti32x4	$2,%zmm1,%xmm8
4842*4757b351SPierre Pronchery	vextracti32x4	$3,%zmm9,%xmm0
4843*4757b351SPierre Pronchery	andq	$0xf,%rdx
4844*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4845*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4846*4757b351SPierre Pronchery.L_num_blocks_is_2_wcpqaDvsGlbjGoe:
4847*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4848*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4849*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4850*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4851*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4852*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4853*4757b351SPierre Pronchery
4854*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%ymm1
4855*4757b351SPierre Pronchery	addq	$32,%rdi
4856*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%ymm0
4857*4757b351SPierre Pronchery	vpternlogq	$0x96,%ymm0,%ymm9,%ymm1
4858*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%ymm0
4859*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4860*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%ymm0
4861*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4862*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%ymm0
4863*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4864*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%ymm0
4865*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4866*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%ymm0
4867*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4868*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%ymm0
4869*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4870*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%ymm0
4871*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4872*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%ymm0
4873*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4874*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%ymm0
4875*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4876*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%ymm0
4877*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4878*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%ymm0
4879*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4880*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%ymm0
4881*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4882*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%ymm0
4883*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4884*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%ymm0
4885*4757b351SPierre Pronchery	vaesenclast	%ymm0,%ymm1,%ymm1
4886*4757b351SPierre Pronchery	vpxorq	%ymm9,%ymm1,%ymm1
4887*4757b351SPierre Pronchery	vmovdqu8	%ymm1,0(%rsi)
4888*4757b351SPierre Pronchery	addq	$32,%rsi
4889*4757b351SPierre Pronchery
4890*4757b351SPierre Pronchery	vextracti32x4	$1,%ymm1,%xmm8
4891*4757b351SPierre Pronchery	vextracti32x4	$2,%zmm9,%xmm0
4892*4757b351SPierre Pronchery	andq	$0xf,%rdx
4893*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4894*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4895*4757b351SPierre Pronchery.L_num_blocks_is_1_wcpqaDvsGlbjGoe:
4896*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
4897*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
4898*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
4899*4757b351SPierre Pronchery	vpclmulqdq	$0x00,%zmm25,%zmm2,%zmm3
4900*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
4901*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
4902*4757b351SPierre Pronchery
4903*4757b351SPierre Pronchery	vmovdqu8	0(%rdi),%xmm1
4904*4757b351SPierre Pronchery	addq	$16,%rdi
4905*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%ymm0
4906*4757b351SPierre Pronchery	vpternlogq	$0x96,%ymm0,%ymm9,%ymm1
4907*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%ymm0
4908*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4909*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%ymm0
4910*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4911*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%ymm0
4912*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4913*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%ymm0
4914*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4915*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%ymm0
4916*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4917*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%ymm0
4918*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4919*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%ymm0
4920*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4921*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%ymm0
4922*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4923*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%ymm0
4924*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4925*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%ymm0
4926*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4927*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%ymm0
4928*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4929*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%ymm0
4930*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4931*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%ymm0
4932*4757b351SPierre Pronchery	vaesenc	%ymm0,%ymm1,%ymm1
4933*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%ymm0
4934*4757b351SPierre Pronchery	vaesenclast	%ymm0,%ymm1,%ymm1
4935*4757b351SPierre Pronchery	vpxorq	%ymm9,%ymm1,%ymm1
4936*4757b351SPierre Pronchery	vmovdqu8	%xmm1,0(%rsi)
4937*4757b351SPierre Pronchery	addq	$16,%rsi
4938*4757b351SPierre Pronchery
4939*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
4940*4757b351SPierre Pronchery	vextracti32x4	$1,%zmm9,%xmm0
4941*4757b351SPierre Pronchery	andq	$0xf,%rdx
4942*4757b351SPierre Pronchery	je	.L_ret_wcpqaDvsGlbjGoe
4943*4757b351SPierre Pronchery	jmp	.L_steal_cipher_wcpqaDvsGlbjGoe
4944*4757b351SPierre Pronchery.cfi_endproc
4945*4757b351SPierre Pronchery.globl	aesni_xts_256_decrypt_avx512
4946*4757b351SPierre Pronchery.hidden	aesni_xts_256_decrypt_avx512
4947*4757b351SPierre Pronchery.type	aesni_xts_256_decrypt_avx512,@function
4948*4757b351SPierre Pronchery.align	32
4949*4757b351SPierre Proncheryaesni_xts_256_decrypt_avx512:
4950*4757b351SPierre Pronchery.cfi_startproc
4951*4757b351SPierre Pronchery.byte	243,15,30,250
4952*4757b351SPierre Pronchery	pushq	%rbp
4953*4757b351SPierre Pronchery	movq	%rsp,%rbp
4954*4757b351SPierre Pronchery	subq	$136,%rsp
4955*4757b351SPierre Pronchery	andq	$0xffffffffffffffc0,%rsp
4956*4757b351SPierre Pronchery	movq	%rbx,128(%rsp)
4957*4757b351SPierre Pronchery	movq	$0x87,%r10
4958*4757b351SPierre Pronchery	vmovdqu	(%r9),%xmm1
4959*4757b351SPierre Pronchery	vpxor	(%r8),%xmm1,%xmm1
4960*4757b351SPierre Pronchery	vaesenc	16(%r8),%xmm1,%xmm1
4961*4757b351SPierre Pronchery	vaesenc	32(%r8),%xmm1,%xmm1
4962*4757b351SPierre Pronchery	vaesenc	48(%r8),%xmm1,%xmm1
4963*4757b351SPierre Pronchery	vaesenc	64(%r8),%xmm1,%xmm1
4964*4757b351SPierre Pronchery	vaesenc	80(%r8),%xmm1,%xmm1
4965*4757b351SPierre Pronchery	vaesenc	96(%r8),%xmm1,%xmm1
4966*4757b351SPierre Pronchery	vaesenc	112(%r8),%xmm1,%xmm1
4967*4757b351SPierre Pronchery	vaesenc	128(%r8),%xmm1,%xmm1
4968*4757b351SPierre Pronchery	vaesenc	144(%r8),%xmm1,%xmm1
4969*4757b351SPierre Pronchery	vaesenc	160(%r8),%xmm1,%xmm1
4970*4757b351SPierre Pronchery	vaesenc	176(%r8),%xmm1,%xmm1
4971*4757b351SPierre Pronchery	vaesenc	192(%r8),%xmm1,%xmm1
4972*4757b351SPierre Pronchery	vaesenc	208(%r8),%xmm1,%xmm1
4973*4757b351SPierre Pronchery	vaesenclast	224(%r8),%xmm1,%xmm1
4974*4757b351SPierre Pronchery	vmovdqa	%xmm1,(%rsp)
4975*4757b351SPierre Pronchery
4976*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
4977*4757b351SPierre Pronchery	jb	.L_less_than_128_bytes_EmbgEptodyewbFa
4978*4757b351SPierre Pronchery	vpbroadcastq	%r10,%zmm25
4979*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
4980*4757b351SPierre Pronchery	jge	.L_start_by16_EmbgEptodyewbFa
4981*4757b351SPierre Pronchery	jmp	.L_start_by8_EmbgEptodyewbFa
4982*4757b351SPierre Pronchery
4983*4757b351SPierre Pronchery.L_do_n_blocks_EmbgEptodyewbFa:
4984*4757b351SPierre Pronchery	cmpq	$0x0,%rdx
4985*4757b351SPierre Pronchery	je	.L_ret_EmbgEptodyewbFa
4986*4757b351SPierre Pronchery	cmpq	$0x70,%rdx
4987*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_7_EmbgEptodyewbFa
4988*4757b351SPierre Pronchery	cmpq	$0x60,%rdx
4989*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_6_EmbgEptodyewbFa
4990*4757b351SPierre Pronchery	cmpq	$0x50,%rdx
4991*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_5_EmbgEptodyewbFa
4992*4757b351SPierre Pronchery	cmpq	$0x40,%rdx
4993*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_4_EmbgEptodyewbFa
4994*4757b351SPierre Pronchery	cmpq	$0x30,%rdx
4995*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_3_EmbgEptodyewbFa
4996*4757b351SPierre Pronchery	cmpq	$0x20,%rdx
4997*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_2_EmbgEptodyewbFa
4998*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
4999*4757b351SPierre Pronchery	jge	.L_remaining_num_blocks_is_1_EmbgEptodyewbFa
5000*4757b351SPierre Pronchery
5001*4757b351SPierre Pronchery
5002*4757b351SPierre Pronchery	vmovdqu	%xmm5,%xmm1
5003*4757b351SPierre Pronchery
5004*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5005*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
5006*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
5007*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
5008*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5009*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
5010*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5011*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
5012*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5013*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
5014*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5015*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
5016*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5017*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
5018*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5019*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
5020*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5021*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
5022*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5023*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
5024*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5025*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
5026*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5027*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
5028*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5029*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
5030*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5031*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
5032*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5033*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
5034*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
5035*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5036*4757b351SPierre Pronchery	vmovdqu	%xmm1,-16(%rsi)
5037*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
5038*4757b351SPierre Pronchery
5039*4757b351SPierre Pronchery
5040*4757b351SPierre Pronchery	movq	$0x1,%r8
5041*4757b351SPierre Pronchery	kmovq	%r8,%k1
5042*4757b351SPierre Pronchery	vpsllq	$0x3f,%xmm9,%xmm13
5043*4757b351SPierre Pronchery	vpsraq	$0x3f,%xmm13,%xmm14
5044*4757b351SPierre Pronchery	vpandq	%xmm25,%xmm14,%xmm5
5045*4757b351SPierre Pronchery	vpxorq	%xmm5,%xmm9,%xmm9{%k1}
5046*4757b351SPierre Pronchery	vpsrldq	$0x8,%xmm9,%xmm10
5047*4757b351SPierre Pronchery.byte	98, 211, 181, 8, 115, 194, 1
5048*4757b351SPierre Pronchery	vpslldq	$0x8,%xmm13,%xmm13
5049*4757b351SPierre Pronchery	vpxorq	%xmm13,%xmm0,%xmm0
5050*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
5051*4757b351SPierre Pronchery
5052*4757b351SPierre Pronchery.L_remaining_num_blocks_is_7_EmbgEptodyewbFa:
5053*4757b351SPierre Pronchery	movq	$0xffffffffffffffff,%r8
5054*4757b351SPierre Pronchery	shrq	$0x10,%r8
5055*4757b351SPierre Pronchery	kmovq	%r8,%k1
5056*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
5057*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2{%k1}
5058*4757b351SPierre Pronchery	addq	$0x70,%rdi
5059*4757b351SPierre Pronchery	andq	$0xf,%rdx
5060*4757b351SPierre Pronchery	je	.L_done_7_remain_EmbgEptodyewbFa
5061*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm12
5062*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm10,%xmm13
5063*4757b351SPierre Pronchery	vinserti32x4	$0x2,%xmm13,%zmm10,%zmm10
5064*4757b351SPierre Pronchery
5065*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5066*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5067*4757b351SPierre Pronchery
5068*4757b351SPierre Pronchery
5069*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5070*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5071*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5072*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5073*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5074*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5075*4757b351SPierre Pronchery
5076*4757b351SPierre Pronchery
5077*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5078*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5079*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5080*4757b351SPierre Pronchery
5081*4757b351SPierre Pronchery
5082*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5083*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5084*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5085*4757b351SPierre Pronchery
5086*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5087*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5088*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5089*4757b351SPierre Pronchery
5090*4757b351SPierre Pronchery
5091*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5092*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5093*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5094*4757b351SPierre Pronchery
5095*4757b351SPierre Pronchery
5096*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5097*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5098*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5099*4757b351SPierre Pronchery
5100*4757b351SPierre Pronchery
5101*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5102*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5103*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5104*4757b351SPierre Pronchery
5105*4757b351SPierre Pronchery
5106*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5107*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5108*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5109*4757b351SPierre Pronchery
5110*4757b351SPierre Pronchery
5111*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5112*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5113*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5114*4757b351SPierre Pronchery
5115*4757b351SPierre Pronchery
5116*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5117*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5118*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5119*4757b351SPierre Pronchery
5120*4757b351SPierre Pronchery
5121*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5122*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5123*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5124*4757b351SPierre Pronchery
5125*4757b351SPierre Pronchery
5126*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5127*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5128*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5129*4757b351SPierre Pronchery
5130*4757b351SPierre Pronchery
5131*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5132*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5133*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5134*4757b351SPierre Pronchery
5135*4757b351SPierre Pronchery
5136*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5137*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5138*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5139*4757b351SPierre Pronchery
5140*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5141*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5142*4757b351SPierre Pronchery
5143*4757b351SPierre Pronchery
5144*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5145*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5146*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5147*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
5148*4757b351SPierre Pronchery	addq	$0x70,%rsi
5149*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm2,%xmm8
5150*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
5151*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
5152*4757b351SPierre Pronchery
5153*4757b351SPierre Pronchery.L_done_7_remain_EmbgEptodyewbFa:
5154*4757b351SPierre Pronchery
5155*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5156*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5157*4757b351SPierre Pronchery
5158*4757b351SPierre Pronchery
5159*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5160*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5161*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5162*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5163*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5164*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5165*4757b351SPierre Pronchery
5166*4757b351SPierre Pronchery
5167*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5168*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5169*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5170*4757b351SPierre Pronchery
5171*4757b351SPierre Pronchery
5172*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5173*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5174*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5175*4757b351SPierre Pronchery
5176*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5177*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5178*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5179*4757b351SPierre Pronchery
5180*4757b351SPierre Pronchery
5181*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5182*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5183*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5184*4757b351SPierre Pronchery
5185*4757b351SPierre Pronchery
5186*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5187*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5188*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5189*4757b351SPierre Pronchery
5190*4757b351SPierre Pronchery
5191*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5192*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5193*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5194*4757b351SPierre Pronchery
5195*4757b351SPierre Pronchery
5196*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5197*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5198*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5199*4757b351SPierre Pronchery
5200*4757b351SPierre Pronchery
5201*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5202*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5203*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5204*4757b351SPierre Pronchery
5205*4757b351SPierre Pronchery
5206*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5207*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5208*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5209*4757b351SPierre Pronchery
5210*4757b351SPierre Pronchery
5211*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5212*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5213*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5214*4757b351SPierre Pronchery
5215*4757b351SPierre Pronchery
5216*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5217*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5218*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5219*4757b351SPierre Pronchery
5220*4757b351SPierre Pronchery
5221*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5222*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5223*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5224*4757b351SPierre Pronchery
5225*4757b351SPierre Pronchery
5226*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5227*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5228*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5229*4757b351SPierre Pronchery
5230*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5231*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5232*4757b351SPierre Pronchery
5233*4757b351SPierre Pronchery
5234*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5235*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5236*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5237*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi){%k1}
5238*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
5239*4757b351SPierre Pronchery
5240*4757b351SPierre Pronchery.L_remaining_num_blocks_is_6_EmbgEptodyewbFa:
5241*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
5242*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%ymm2
5243*4757b351SPierre Pronchery	addq	$0x60,%rdi
5244*4757b351SPierre Pronchery	andq	$0xf,%rdx
5245*4757b351SPierre Pronchery	je	.L_done_6_remain_EmbgEptodyewbFa
5246*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm12
5247*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm10,%xmm13
5248*4757b351SPierre Pronchery	vinserti32x4	$0x1,%xmm13,%zmm10,%zmm10
5249*4757b351SPierre Pronchery
5250*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5251*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5252*4757b351SPierre Pronchery
5253*4757b351SPierre Pronchery
5254*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5255*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5256*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5257*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5258*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5259*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5260*4757b351SPierre Pronchery
5261*4757b351SPierre Pronchery
5262*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5263*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5264*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5265*4757b351SPierre Pronchery
5266*4757b351SPierre Pronchery
5267*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5268*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5269*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5270*4757b351SPierre Pronchery
5271*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5272*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5273*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5274*4757b351SPierre Pronchery
5275*4757b351SPierre Pronchery
5276*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5277*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5278*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5279*4757b351SPierre Pronchery
5280*4757b351SPierre Pronchery
5281*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5282*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5283*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5284*4757b351SPierre Pronchery
5285*4757b351SPierre Pronchery
5286*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5287*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5288*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5289*4757b351SPierre Pronchery
5290*4757b351SPierre Pronchery
5291*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5292*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5293*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5294*4757b351SPierre Pronchery
5295*4757b351SPierre Pronchery
5296*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5297*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5298*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5299*4757b351SPierre Pronchery
5300*4757b351SPierre Pronchery
5301*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5302*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5303*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5304*4757b351SPierre Pronchery
5305*4757b351SPierre Pronchery
5306*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5307*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5308*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5309*4757b351SPierre Pronchery
5310*4757b351SPierre Pronchery
5311*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5312*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5313*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5314*4757b351SPierre Pronchery
5315*4757b351SPierre Pronchery
5316*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5317*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5318*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5319*4757b351SPierre Pronchery
5320*4757b351SPierre Pronchery
5321*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5322*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5323*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5324*4757b351SPierre Pronchery
5325*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5326*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5327*4757b351SPierre Pronchery
5328*4757b351SPierre Pronchery
5329*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5330*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5331*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5332*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
5333*4757b351SPierre Pronchery	addq	$0x60,%rsi
5334*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm2,%xmm8
5335*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
5336*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
5337*4757b351SPierre Pronchery
5338*4757b351SPierre Pronchery.L_done_6_remain_EmbgEptodyewbFa:
5339*4757b351SPierre Pronchery
5340*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5341*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5342*4757b351SPierre Pronchery
5343*4757b351SPierre Pronchery
5344*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5345*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5346*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5347*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5348*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5349*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5350*4757b351SPierre Pronchery
5351*4757b351SPierre Pronchery
5352*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5353*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5354*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5355*4757b351SPierre Pronchery
5356*4757b351SPierre Pronchery
5357*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5358*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5359*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5360*4757b351SPierre Pronchery
5361*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5362*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5363*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5364*4757b351SPierre Pronchery
5365*4757b351SPierre Pronchery
5366*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5367*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5368*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5369*4757b351SPierre Pronchery
5370*4757b351SPierre Pronchery
5371*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5372*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5373*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5374*4757b351SPierre Pronchery
5375*4757b351SPierre Pronchery
5376*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5377*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5378*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5379*4757b351SPierre Pronchery
5380*4757b351SPierre Pronchery
5381*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5382*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5383*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5384*4757b351SPierre Pronchery
5385*4757b351SPierre Pronchery
5386*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5387*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5388*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5389*4757b351SPierre Pronchery
5390*4757b351SPierre Pronchery
5391*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5392*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5393*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5394*4757b351SPierre Pronchery
5395*4757b351SPierre Pronchery
5396*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5397*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5398*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5399*4757b351SPierre Pronchery
5400*4757b351SPierre Pronchery
5401*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5402*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5403*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5404*4757b351SPierre Pronchery
5405*4757b351SPierre Pronchery
5406*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5407*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5408*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5409*4757b351SPierre Pronchery
5410*4757b351SPierre Pronchery
5411*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5412*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5413*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5414*4757b351SPierre Pronchery
5415*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5416*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5417*4757b351SPierre Pronchery
5418*4757b351SPierre Pronchery
5419*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5420*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5421*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5422*4757b351SPierre Pronchery	vmovdqu8	%ymm2,64(%rsi)
5423*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
5424*4757b351SPierre Pronchery
5425*4757b351SPierre Pronchery.L_remaining_num_blocks_is_5_EmbgEptodyewbFa:
5426*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
5427*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm2
5428*4757b351SPierre Pronchery	addq	$0x50,%rdi
5429*4757b351SPierre Pronchery	andq	$0xf,%rdx
5430*4757b351SPierre Pronchery	je	.L_done_5_remain_EmbgEptodyewbFa
5431*4757b351SPierre Pronchery	vmovdqa	%xmm10,%xmm12
5432*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm10,%xmm10
5433*4757b351SPierre Pronchery
5434*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5435*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5436*4757b351SPierre Pronchery
5437*4757b351SPierre Pronchery
5438*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5439*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5440*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5441*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5442*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5443*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5444*4757b351SPierre Pronchery
5445*4757b351SPierre Pronchery
5446*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5447*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5448*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5449*4757b351SPierre Pronchery
5450*4757b351SPierre Pronchery
5451*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5452*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5453*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5454*4757b351SPierre Pronchery
5455*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5456*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5457*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5458*4757b351SPierre Pronchery
5459*4757b351SPierre Pronchery
5460*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5461*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5462*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5463*4757b351SPierre Pronchery
5464*4757b351SPierre Pronchery
5465*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5466*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5467*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5468*4757b351SPierre Pronchery
5469*4757b351SPierre Pronchery
5470*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5471*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5472*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5473*4757b351SPierre Pronchery
5474*4757b351SPierre Pronchery
5475*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5476*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5477*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5478*4757b351SPierre Pronchery
5479*4757b351SPierre Pronchery
5480*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5481*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5482*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5483*4757b351SPierre Pronchery
5484*4757b351SPierre Pronchery
5485*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5486*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5487*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5488*4757b351SPierre Pronchery
5489*4757b351SPierre Pronchery
5490*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5491*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5492*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5493*4757b351SPierre Pronchery
5494*4757b351SPierre Pronchery
5495*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5496*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5497*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5498*4757b351SPierre Pronchery
5499*4757b351SPierre Pronchery
5500*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5501*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5502*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5503*4757b351SPierre Pronchery
5504*4757b351SPierre Pronchery
5505*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5506*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5507*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5508*4757b351SPierre Pronchery
5509*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5510*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5511*4757b351SPierre Pronchery
5512*4757b351SPierre Pronchery
5513*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5514*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5515*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5516*4757b351SPierre Pronchery	vmovdqu	%xmm2,64(%rsi)
5517*4757b351SPierre Pronchery	addq	$0x50,%rsi
5518*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
5519*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
5520*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
5521*4757b351SPierre Pronchery
5522*4757b351SPierre Pronchery.L_done_5_remain_EmbgEptodyewbFa:
5523*4757b351SPierre Pronchery
5524*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5525*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5526*4757b351SPierre Pronchery
5527*4757b351SPierre Pronchery
5528*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5529*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5530*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5531*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5532*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5533*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5534*4757b351SPierre Pronchery
5535*4757b351SPierre Pronchery
5536*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5537*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5538*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5539*4757b351SPierre Pronchery
5540*4757b351SPierre Pronchery
5541*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5542*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5543*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5544*4757b351SPierre Pronchery
5545*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5546*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5547*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5548*4757b351SPierre Pronchery
5549*4757b351SPierre Pronchery
5550*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5551*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5552*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5553*4757b351SPierre Pronchery
5554*4757b351SPierre Pronchery
5555*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5556*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5557*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5558*4757b351SPierre Pronchery
5559*4757b351SPierre Pronchery
5560*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5561*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5562*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5563*4757b351SPierre Pronchery
5564*4757b351SPierre Pronchery
5565*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5566*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5567*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5568*4757b351SPierre Pronchery
5569*4757b351SPierre Pronchery
5570*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5571*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5572*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5573*4757b351SPierre Pronchery
5574*4757b351SPierre Pronchery
5575*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5576*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5577*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5578*4757b351SPierre Pronchery
5579*4757b351SPierre Pronchery
5580*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5581*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5582*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5583*4757b351SPierre Pronchery
5584*4757b351SPierre Pronchery
5585*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5586*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5587*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5588*4757b351SPierre Pronchery
5589*4757b351SPierre Pronchery
5590*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5591*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5592*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5593*4757b351SPierre Pronchery
5594*4757b351SPierre Pronchery
5595*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5596*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5597*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5598*4757b351SPierre Pronchery
5599*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5600*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5601*4757b351SPierre Pronchery
5602*4757b351SPierre Pronchery
5603*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5604*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5605*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5606*4757b351SPierre Pronchery	vmovdqu8	%xmm2,64(%rsi)
5607*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
5608*4757b351SPierre Pronchery
5609*4757b351SPierre Pronchery.L_remaining_num_blocks_is_4_EmbgEptodyewbFa:
5610*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
5611*4757b351SPierre Pronchery	addq	$0x40,%rdi
5612*4757b351SPierre Pronchery	andq	$0xf,%rdx
5613*4757b351SPierre Pronchery	je	.L_done_4_remain_EmbgEptodyewbFa
5614*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm9,%xmm12
5615*4757b351SPierre Pronchery	vinserti32x4	$0x3,%xmm10,%zmm9,%zmm9
5616*4757b351SPierre Pronchery
5617*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5618*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5619*4757b351SPierre Pronchery
5620*4757b351SPierre Pronchery
5621*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5622*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5623*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5624*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5625*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5626*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5627*4757b351SPierre Pronchery
5628*4757b351SPierre Pronchery
5629*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5630*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5631*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5632*4757b351SPierre Pronchery
5633*4757b351SPierre Pronchery
5634*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5635*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5636*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5637*4757b351SPierre Pronchery
5638*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5639*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5640*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5641*4757b351SPierre Pronchery
5642*4757b351SPierre Pronchery
5643*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5644*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5645*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5646*4757b351SPierre Pronchery
5647*4757b351SPierre Pronchery
5648*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5649*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5650*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5651*4757b351SPierre Pronchery
5652*4757b351SPierre Pronchery
5653*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5654*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5655*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5656*4757b351SPierre Pronchery
5657*4757b351SPierre Pronchery
5658*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5659*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5660*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5661*4757b351SPierre Pronchery
5662*4757b351SPierre Pronchery
5663*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5664*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5665*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5666*4757b351SPierre Pronchery
5667*4757b351SPierre Pronchery
5668*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5669*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5670*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5671*4757b351SPierre Pronchery
5672*4757b351SPierre Pronchery
5673*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5674*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5675*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5676*4757b351SPierre Pronchery
5677*4757b351SPierre Pronchery
5678*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5679*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5680*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5681*4757b351SPierre Pronchery
5682*4757b351SPierre Pronchery
5683*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5684*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5685*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5686*4757b351SPierre Pronchery
5687*4757b351SPierre Pronchery
5688*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5689*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5690*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5691*4757b351SPierre Pronchery
5692*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5693*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5694*4757b351SPierre Pronchery
5695*4757b351SPierre Pronchery
5696*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5697*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5698*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5699*4757b351SPierre Pronchery	addq	$0x40,%rsi
5700*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm1,%xmm8
5701*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
5702*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
5703*4757b351SPierre Pronchery
5704*4757b351SPierre Pronchery.L_done_4_remain_EmbgEptodyewbFa:
5705*4757b351SPierre Pronchery
5706*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5707*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5708*4757b351SPierre Pronchery
5709*4757b351SPierre Pronchery
5710*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
5711*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
5712*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
5713*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
5714*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5715*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5716*4757b351SPierre Pronchery
5717*4757b351SPierre Pronchery
5718*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
5719*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5720*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5721*4757b351SPierre Pronchery
5722*4757b351SPierre Pronchery
5723*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
5724*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5725*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5726*4757b351SPierre Pronchery
5727*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
5728*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5729*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5730*4757b351SPierre Pronchery
5731*4757b351SPierre Pronchery
5732*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
5733*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5734*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5735*4757b351SPierre Pronchery
5736*4757b351SPierre Pronchery
5737*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
5738*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5739*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5740*4757b351SPierre Pronchery
5741*4757b351SPierre Pronchery
5742*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
5743*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5744*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5745*4757b351SPierre Pronchery
5746*4757b351SPierre Pronchery
5747*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
5748*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5749*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5750*4757b351SPierre Pronchery
5751*4757b351SPierre Pronchery
5752*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
5753*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5754*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5755*4757b351SPierre Pronchery
5756*4757b351SPierre Pronchery
5757*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
5758*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5759*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5760*4757b351SPierre Pronchery
5761*4757b351SPierre Pronchery
5762*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
5763*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5764*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5765*4757b351SPierre Pronchery
5766*4757b351SPierre Pronchery
5767*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
5768*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5769*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5770*4757b351SPierre Pronchery
5771*4757b351SPierre Pronchery
5772*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
5773*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
5774*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
5775*4757b351SPierre Pronchery
5776*4757b351SPierre Pronchery
5777*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
5778*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
5779*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
5780*4757b351SPierre Pronchery
5781*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
5782*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
5783*4757b351SPierre Pronchery
5784*4757b351SPierre Pronchery
5785*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
5786*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
5787*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
5788*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
5789*4757b351SPierre Pronchery
5790*4757b351SPierre Pronchery.L_remaining_num_blocks_is_3_EmbgEptodyewbFa:
5791*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
5792*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
5793*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
5794*4757b351SPierre Pronchery	addq	$0x30,%rdi
5795*4757b351SPierre Pronchery	andq	$0xf,%rdx
5796*4757b351SPierre Pronchery	je	.L_done_3_remain_EmbgEptodyewbFa
5797*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm13
5798*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm10
5799*4757b351SPierre Pronchery	vextracti32x4	$0x3,%zmm9,%xmm11
5800*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5801*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
5802*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
5803*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
5804*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
5805*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
5806*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
5807*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
5808*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5809*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5810*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5811*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
5812*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5813*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5814*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5815*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
5816*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5817*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5818*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5819*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
5820*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5821*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5822*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5823*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
5824*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5825*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5826*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5827*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
5828*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5829*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5830*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5831*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
5832*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5833*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5834*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5835*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
5836*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5837*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5838*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5839*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
5840*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5841*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5842*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5843*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
5844*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5845*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5846*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5847*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
5848*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5849*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5850*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5851*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
5852*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5853*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5854*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5855*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
5856*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5857*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5858*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5859*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
5860*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
5861*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
5862*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
5863*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5864*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
5865*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
5866*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
5867*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
5868*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
5869*4757b351SPierre Pronchery	addq	$0x30,%rsi
5870*4757b351SPierre Pronchery	vmovdqa	%xmm3,%xmm8
5871*4757b351SPierre Pronchery	vmovdqa	%xmm13,%xmm0
5872*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
5873*4757b351SPierre Pronchery
5874*4757b351SPierre Pronchery.L_done_3_remain_EmbgEptodyewbFa:
5875*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm10
5876*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm11
5877*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5878*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
5879*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
5880*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
5881*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
5882*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
5883*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
5884*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
5885*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5886*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5887*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5888*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
5889*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5890*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5891*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5892*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
5893*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5894*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5895*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5896*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
5897*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5898*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5899*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5900*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
5901*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5902*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5903*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5904*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
5905*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5906*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5907*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5908*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
5909*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5910*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5911*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5912*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
5913*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5914*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5915*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5916*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
5917*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5918*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5919*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5920*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
5921*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5922*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5923*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5924*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
5925*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5926*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5927*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5928*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
5929*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5930*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5931*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5932*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
5933*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5934*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5935*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
5936*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
5937*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
5938*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
5939*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
5940*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5941*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
5942*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
5943*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
5944*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
5945*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
5946*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
5947*4757b351SPierre Pronchery
5948*4757b351SPierre Pronchery.L_remaining_num_blocks_is_2_EmbgEptodyewbFa:
5949*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
5950*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
5951*4757b351SPierre Pronchery	addq	$0x20,%rdi
5952*4757b351SPierre Pronchery	andq	$0xf,%rdx
5953*4757b351SPierre Pronchery	je	.L_done_2_remain_EmbgEptodyewbFa
5954*4757b351SPierre Pronchery	vextracti32x4	$0x2,%zmm9,%xmm10
5955*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm12
5956*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
5957*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
5958*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
5959*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
5960*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
5961*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
5962*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5963*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5964*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
5965*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5966*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5967*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
5968*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5969*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5970*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
5971*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5972*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5973*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
5974*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5975*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5976*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
5977*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5978*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5979*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
5980*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5981*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5982*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
5983*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5984*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5985*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
5986*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5987*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5988*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
5989*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5990*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5991*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
5992*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5993*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5994*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
5995*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5996*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
5997*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
5998*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
5999*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6000*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
6001*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
6002*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
6003*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6004*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6005*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
6006*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
6007*4757b351SPierre Pronchery	addq	$0x20,%rsi
6008*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
6009*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
6010*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
6011*4757b351SPierre Pronchery
6012*4757b351SPierre Pronchery.L_done_2_remain_EmbgEptodyewbFa:
6013*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm10
6014*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6015*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6016*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
6017*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
6018*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
6019*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
6020*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6021*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6022*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
6023*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6024*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6025*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
6026*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6027*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6028*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
6029*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6030*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6031*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
6032*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6033*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6034*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
6035*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6036*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6037*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
6038*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6039*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6040*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
6041*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6042*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6043*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
6044*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6045*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6046*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
6047*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6048*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6049*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
6050*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6051*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6052*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
6053*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6054*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6055*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
6056*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6057*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6058*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
6059*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
6060*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
6061*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6062*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6063*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
6064*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
6065*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
6066*4757b351SPierre Pronchery
6067*4757b351SPierre Pronchery.L_remaining_num_blocks_is_1_EmbgEptodyewbFa:
6068*4757b351SPierre Pronchery	vmovdqu	(%rdi),%xmm1
6069*4757b351SPierre Pronchery	addq	$0x10,%rdi
6070*4757b351SPierre Pronchery	andq	$0xf,%rdx
6071*4757b351SPierre Pronchery	je	.L_done_1_remain_EmbgEptodyewbFa
6072*4757b351SPierre Pronchery	vextracti32x4	$0x1,%zmm9,%xmm11
6073*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm1,%xmm1
6074*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
6075*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
6076*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
6077*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6078*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
6079*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6080*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
6081*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6082*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
6083*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6084*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
6085*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6086*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
6087*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6088*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
6089*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6090*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
6091*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6092*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
6093*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6094*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
6095*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6096*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
6097*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6098*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
6099*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6100*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
6101*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6102*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
6103*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
6104*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm1,%xmm1
6105*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
6106*4757b351SPierre Pronchery	addq	$0x10,%rsi
6107*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
6108*4757b351SPierre Pronchery	vmovdqa	%xmm9,%xmm0
6109*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
6110*4757b351SPierre Pronchery
6111*4757b351SPierre Pronchery.L_done_1_remain_EmbgEptodyewbFa:
6112*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6113*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
6114*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
6115*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
6116*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6117*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
6118*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6119*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
6120*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6121*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
6122*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6123*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
6124*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6125*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
6126*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6127*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
6128*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6129*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
6130*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6131*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
6132*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6133*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
6134*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6135*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
6136*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6137*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
6138*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6139*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
6140*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6141*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
6142*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
6143*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6144*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
6145*4757b351SPierre Pronchery	jmp	.L_ret_EmbgEptodyewbFa
6146*4757b351SPierre Pronchery
6147*4757b351SPierre Pronchery.L_start_by16_EmbgEptodyewbFa:
6148*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
6149*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
6150*4757b351SPierre Pronchery	movq	$0xaa,%r8
6151*4757b351SPierre Pronchery	kmovq	%r8,%k2
6152*4757b351SPierre Pronchery
6153*4757b351SPierre Pronchery
6154*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
6155*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
6156*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
6157*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
6158*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
6159*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
6160*4757b351SPierre Pronchery
6161*4757b351SPierre Pronchery
6162*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
6163*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
6164*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
6165*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
6166*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
6167*4757b351SPierre Pronchery
6168*4757b351SPierre Pronchery
6169*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
6170*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6171*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm11
6172*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm11,%zmm11
6173*4757b351SPierre Pronchery
6174*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm15
6175*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm15,%zmm16
6176*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm12
6177*4757b351SPierre Pronchery	vpxord	%zmm16,%zmm12,%zmm12
6178*4757b351SPierre Pronchery
6179*4757b351SPierre Pronchery.L_main_loop_run_16_EmbgEptodyewbFa:
6180*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
6181*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
6182*4757b351SPierre Pronchery	vmovdqu8	128(%rdi),%zmm3
6183*4757b351SPierre Pronchery	vmovdqu8	192(%rdi),%zmm4
6184*4757b351SPierre Pronchery	vmovdqu8	240(%rdi),%xmm5
6185*4757b351SPierre Pronchery	addq	$0x100,%rdi
6186*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
6187*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
6188*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
6189*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
6190*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
6191*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
6192*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
6193*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm3,%zmm3
6194*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm4,%zmm4
6195*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm11,%zmm13
6196*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6197*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm11,%zmm15
6198*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
6199*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
6200*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6201*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6202*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6203*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6204*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
6205*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6206*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6207*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6208*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6209*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
6210*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6211*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6212*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6213*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6214*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm12,%zmm13
6215*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6216*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm12,%zmm16
6217*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
6218*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
6219*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6220*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6221*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6222*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6223*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
6224*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6225*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6226*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6227*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6228*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
6229*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6230*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6231*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6232*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6233*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm15,%zmm13
6234*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6235*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm15,%zmm17
6236*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm17,%zmm17
6237*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
6238*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6239*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6240*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6241*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6242*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
6243*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6244*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6245*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6246*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6247*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
6248*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6249*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6250*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6251*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6252*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm16,%zmm13
6253*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6254*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm16,%zmm18
6255*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm18,%zmm18
6256*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
6257*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6258*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6259*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6260*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6261*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
6262*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6263*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6264*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6265*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6266*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
6267*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6268*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6269*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6270*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6271*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
6272*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6273*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6274*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm3,%zmm3
6275*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm4,%zmm4
6276*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
6277*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
6278*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
6279*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm3,%zmm3
6280*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm4,%zmm4
6281*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
6282*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
6283*4757b351SPierre Pronchery	vpxorq	%zmm11,%zmm3,%zmm3
6284*4757b351SPierre Pronchery	vpxorq	%zmm12,%zmm4,%zmm4
6285*4757b351SPierre Pronchery
6286*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
6287*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
6288*4757b351SPierre Pronchery	vmovdqa32	%zmm17,%zmm11
6289*4757b351SPierre Pronchery	vmovdqa32	%zmm18,%zmm12
6290*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
6291*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
6292*4757b351SPierre Pronchery	vmovdqu8	%zmm3,128(%rsi)
6293*4757b351SPierre Pronchery	vmovdqu8	%zmm4,192(%rsi)
6294*4757b351SPierre Pronchery	addq	$0x100,%rsi
6295*4757b351SPierre Pronchery	subq	$0x100,%rdx
6296*4757b351SPierre Pronchery	cmpq	$0x100,%rdx
6297*4757b351SPierre Pronchery	jge	.L_main_loop_run_16_EmbgEptodyewbFa
6298*4757b351SPierre Pronchery
6299*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
6300*4757b351SPierre Pronchery	jge	.L_main_loop_run_8_EmbgEptodyewbFa
6301*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_EmbgEptodyewbFa
6302*4757b351SPierre Pronchery
6303*4757b351SPierre Pronchery.L_start_by8_EmbgEptodyewbFa:
6304*4757b351SPierre Pronchery
6305*4757b351SPierre Pronchery	vbroadcasti32x4	(%rsp),%zmm0
6306*4757b351SPierre Pronchery	vbroadcasti32x4	shufb_15_7(%rip),%zmm8
6307*4757b351SPierre Pronchery	movq	$0xaa,%r8
6308*4757b351SPierre Pronchery	kmovq	%r8,%k2
6309*4757b351SPierre Pronchery
6310*4757b351SPierre Pronchery
6311*4757b351SPierre Pronchery	vpshufb	%zmm8,%zmm0,%zmm1
6312*4757b351SPierre Pronchery	vpsllvq	const_dq3210(%rip),%zmm0,%zmm4
6313*4757b351SPierre Pronchery	vpsrlvq	const_dq5678(%rip),%zmm1,%zmm2
6314*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm2,%zmm3
6315*4757b351SPierre Pronchery	vpxorq	%zmm2,%zmm4,%zmm4{%k2}
6316*4757b351SPierre Pronchery	vpxord	%zmm4,%zmm3,%zmm9
6317*4757b351SPierre Pronchery
6318*4757b351SPierre Pronchery
6319*4757b351SPierre Pronchery	vpsllvq	const_dq7654(%rip),%zmm0,%zmm5
6320*4757b351SPierre Pronchery	vpsrlvq	const_dq1234(%rip),%zmm1,%zmm6
6321*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm6,%zmm7
6322*4757b351SPierre Pronchery	vpxorq	%zmm6,%zmm5,%zmm5{%k2}
6323*4757b351SPierre Pronchery	vpxord	%zmm5,%zmm7,%zmm10
6324*4757b351SPierre Pronchery
6325*4757b351SPierre Pronchery.L_main_loop_run_8_EmbgEptodyewbFa:
6326*4757b351SPierre Pronchery	vmovdqu8	(%rdi),%zmm1
6327*4757b351SPierre Pronchery	vmovdqu8	64(%rdi),%zmm2
6328*4757b351SPierre Pronchery	vmovdqu8	112(%rdi),%xmm5
6329*4757b351SPierre Pronchery	addq	$0x80,%rdi
6330*4757b351SPierre Pronchery
6331*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
6332*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
6333*4757b351SPierre Pronchery
6334*4757b351SPierre Pronchery
6335*4757b351SPierre Pronchery	vbroadcasti32x4	(%rcx),%zmm0
6336*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm1,%zmm1
6337*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm2,%zmm2
6338*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm9,%zmm13
6339*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6340*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm9,%zmm15
6341*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm15,%zmm15
6342*4757b351SPierre Pronchery	vbroadcasti32x4	16(%rcx),%zmm0
6343*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6344*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6345*4757b351SPierre Pronchery
6346*4757b351SPierre Pronchery
6347*4757b351SPierre Pronchery	vbroadcasti32x4	32(%rcx),%zmm0
6348*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6349*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6350*4757b351SPierre Pronchery
6351*4757b351SPierre Pronchery
6352*4757b351SPierre Pronchery	vbroadcasti32x4	48(%rcx),%zmm0
6353*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6354*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6355*4757b351SPierre Pronchery	vpsrldq	$0xf,%zmm10,%zmm13
6356*4757b351SPierre Pronchery	vpclmulqdq	$0x0,%zmm25,%zmm13,%zmm14
6357*4757b351SPierre Pronchery	vpslldq	$0x1,%zmm10,%zmm16
6358*4757b351SPierre Pronchery	vpxord	%zmm14,%zmm16,%zmm16
6359*4757b351SPierre Pronchery
6360*4757b351SPierre Pronchery	vbroadcasti32x4	64(%rcx),%zmm0
6361*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6362*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6363*4757b351SPierre Pronchery
6364*4757b351SPierre Pronchery
6365*4757b351SPierre Pronchery	vbroadcasti32x4	80(%rcx),%zmm0
6366*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6367*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6368*4757b351SPierre Pronchery
6369*4757b351SPierre Pronchery
6370*4757b351SPierre Pronchery	vbroadcasti32x4	96(%rcx),%zmm0
6371*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6372*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6373*4757b351SPierre Pronchery
6374*4757b351SPierre Pronchery
6375*4757b351SPierre Pronchery	vbroadcasti32x4	112(%rcx),%zmm0
6376*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6377*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6378*4757b351SPierre Pronchery
6379*4757b351SPierre Pronchery
6380*4757b351SPierre Pronchery	vbroadcasti32x4	128(%rcx),%zmm0
6381*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6382*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6383*4757b351SPierre Pronchery
6384*4757b351SPierre Pronchery
6385*4757b351SPierre Pronchery	vbroadcasti32x4	144(%rcx),%zmm0
6386*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6387*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6388*4757b351SPierre Pronchery
6389*4757b351SPierre Pronchery
6390*4757b351SPierre Pronchery	vbroadcasti32x4	160(%rcx),%zmm0
6391*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6392*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6393*4757b351SPierre Pronchery
6394*4757b351SPierre Pronchery
6395*4757b351SPierre Pronchery	vbroadcasti32x4	176(%rcx),%zmm0
6396*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6397*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6398*4757b351SPierre Pronchery
6399*4757b351SPierre Pronchery
6400*4757b351SPierre Pronchery	vbroadcasti32x4	192(%rcx),%zmm0
6401*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6402*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6403*4757b351SPierre Pronchery
6404*4757b351SPierre Pronchery
6405*4757b351SPierre Pronchery	vbroadcasti32x4	208(%rcx),%zmm0
6406*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm1,%zmm1
6407*4757b351SPierre Pronchery	vaesdec	%zmm0,%zmm2,%zmm2
6408*4757b351SPierre Pronchery
6409*4757b351SPierre Pronchery
6410*4757b351SPierre Pronchery	vbroadcasti32x4	224(%rcx),%zmm0
6411*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm1,%zmm1
6412*4757b351SPierre Pronchery	vaesdeclast	%zmm0,%zmm2,%zmm2
6413*4757b351SPierre Pronchery
6414*4757b351SPierre Pronchery	vpxorq	%zmm9,%zmm1,%zmm1
6415*4757b351SPierre Pronchery	vpxorq	%zmm10,%zmm2,%zmm2
6416*4757b351SPierre Pronchery
6417*4757b351SPierre Pronchery
6418*4757b351SPierre Pronchery	vmovdqa32	%zmm15,%zmm9
6419*4757b351SPierre Pronchery	vmovdqa32	%zmm16,%zmm10
6420*4757b351SPierre Pronchery	vmovdqu8	%zmm1,(%rsi)
6421*4757b351SPierre Pronchery	vmovdqu8	%zmm2,64(%rsi)
6422*4757b351SPierre Pronchery	addq	$0x80,%rsi
6423*4757b351SPierre Pronchery	subq	$0x80,%rdx
6424*4757b351SPierre Pronchery	cmpq	$0x80,%rdx
6425*4757b351SPierre Pronchery	jge	.L_main_loop_run_8_EmbgEptodyewbFa
6426*4757b351SPierre Pronchery	jmp	.L_do_n_blocks_EmbgEptodyewbFa
6427*4757b351SPierre Pronchery
6428*4757b351SPierre Pronchery.L_steal_cipher_EmbgEptodyewbFa:
6429*4757b351SPierre Pronchery
6430*4757b351SPierre Pronchery	vmovdqa	%xmm8,%xmm2
6431*4757b351SPierre Pronchery
6432*4757b351SPierre Pronchery
6433*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
6434*4757b351SPierre Pronchery	vmovdqu	(%rax,%rdx,1),%xmm10
6435*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm8,%xmm8
6436*4757b351SPierre Pronchery
6437*4757b351SPierre Pronchery
6438*4757b351SPierre Pronchery	vmovdqu	-16(%rdi,%rdx,1),%xmm3
6439*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi,%rdx,1)
6440*4757b351SPierre Pronchery
6441*4757b351SPierre Pronchery
6442*4757b351SPierre Pronchery	leaq	vpshufb_shf_table(%rip),%rax
6443*4757b351SPierre Pronchery	addq	$16,%rax
6444*4757b351SPierre Pronchery	subq	%rdx,%rax
6445*4757b351SPierre Pronchery	vmovdqu	(%rax),%xmm10
6446*4757b351SPierre Pronchery	vpxor	mask1(%rip),%xmm10,%xmm10
6447*4757b351SPierre Pronchery	vpshufb	%xmm10,%xmm3,%xmm3
6448*4757b351SPierre Pronchery
6449*4757b351SPierre Pronchery	vpblendvb	%xmm10,%xmm2,%xmm3,%xmm3
6450*4757b351SPierre Pronchery
6451*4757b351SPierre Pronchery
6452*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm8
6453*4757b351SPierre Pronchery
6454*4757b351SPierre Pronchery
6455*4757b351SPierre Pronchery	vpxor	(%rcx),%xmm8,%xmm8
6456*4757b351SPierre Pronchery	vaesdec	16(%rcx),%xmm8,%xmm8
6457*4757b351SPierre Pronchery	vaesdec	32(%rcx),%xmm8,%xmm8
6458*4757b351SPierre Pronchery	vaesdec	48(%rcx),%xmm8,%xmm8
6459*4757b351SPierre Pronchery	vaesdec	64(%rcx),%xmm8,%xmm8
6460*4757b351SPierre Pronchery	vaesdec	80(%rcx),%xmm8,%xmm8
6461*4757b351SPierre Pronchery	vaesdec	96(%rcx),%xmm8,%xmm8
6462*4757b351SPierre Pronchery	vaesdec	112(%rcx),%xmm8,%xmm8
6463*4757b351SPierre Pronchery	vaesdec	128(%rcx),%xmm8,%xmm8
6464*4757b351SPierre Pronchery	vaesdec	144(%rcx),%xmm8,%xmm8
6465*4757b351SPierre Pronchery	vaesdec	160(%rcx),%xmm8,%xmm8
6466*4757b351SPierre Pronchery	vaesdec	176(%rcx),%xmm8,%xmm8
6467*4757b351SPierre Pronchery	vaesdec	192(%rcx),%xmm8,%xmm8
6468*4757b351SPierre Pronchery	vaesdec	208(%rcx),%xmm8,%xmm8
6469*4757b351SPierre Pronchery	vaesdeclast	224(%rcx),%xmm8,%xmm8
6470*4757b351SPierre Pronchery
6471*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm8,%xmm8
6472*4757b351SPierre Pronchery
6473*4757b351SPierre Pronchery.L_done_EmbgEptodyewbFa:
6474*4757b351SPierre Pronchery
6475*4757b351SPierre Pronchery	vmovdqu	%xmm8,-16(%rsi)
6476*4757b351SPierre Pronchery.L_ret_EmbgEptodyewbFa:
6477*4757b351SPierre Pronchery	movq	128(%rsp),%rbx
6478*4757b351SPierre Pronchery	xorq	%r8,%r8
6479*4757b351SPierre Pronchery	movq	%r8,128(%rsp)
6480*4757b351SPierre Pronchery
6481*4757b351SPierre Pronchery	vpxorq	%zmm0,%zmm0,%zmm0
6482*4757b351SPierre Pronchery	movq	%rbp,%rsp
6483*4757b351SPierre Pronchery	popq	%rbp
6484*4757b351SPierre Pronchery	vzeroupper
6485*4757b351SPierre Pronchery	.byte	0xf3,0xc3
6486*4757b351SPierre Pronchery
6487*4757b351SPierre Pronchery.L_less_than_128_bytes_EmbgEptodyewbFa:
6488*4757b351SPierre Pronchery	cmpq	$0x10,%rdx
6489*4757b351SPierre Pronchery	jb	.L_ret_EmbgEptodyewbFa
6490*4757b351SPierre Pronchery
6491*4757b351SPierre Pronchery	movq	%rdx,%r8
6492*4757b351SPierre Pronchery	andq	$0x70,%r8
6493*4757b351SPierre Pronchery	cmpq	$0x60,%r8
6494*4757b351SPierre Pronchery	je	.L_num_blocks_is_6_EmbgEptodyewbFa
6495*4757b351SPierre Pronchery	cmpq	$0x50,%r8
6496*4757b351SPierre Pronchery	je	.L_num_blocks_is_5_EmbgEptodyewbFa
6497*4757b351SPierre Pronchery	cmpq	$0x40,%r8
6498*4757b351SPierre Pronchery	je	.L_num_blocks_is_4_EmbgEptodyewbFa
6499*4757b351SPierre Pronchery	cmpq	$0x30,%r8
6500*4757b351SPierre Pronchery	je	.L_num_blocks_is_3_EmbgEptodyewbFa
6501*4757b351SPierre Pronchery	cmpq	$0x20,%r8
6502*4757b351SPierre Pronchery	je	.L_num_blocks_is_2_EmbgEptodyewbFa
6503*4757b351SPierre Pronchery	cmpq	$0x10,%r8
6504*4757b351SPierre Pronchery	je	.L_num_blocks_is_1_EmbgEptodyewbFa
6505*4757b351SPierre Pronchery
6506*4757b351SPierre Pronchery.L_num_blocks_is_7_EmbgEptodyewbFa:
6507*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
6508*4757b351SPierre Pronchery	movq	0(%rsp),%rax
6509*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
6510*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
6511*4757b351SPierre Pronchery	xorq	%r11,%r11
6512*4757b351SPierre Pronchery	shlq	$1,%rax
6513*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6514*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6515*4757b351SPierre Pronchery	xorq	%r11,%rax
6516*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
6517*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
6518*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
6519*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
6520*4757b351SPierre Pronchery	xorq	%r11,%r11
6521*4757b351SPierre Pronchery	shlq	$1,%rax
6522*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6523*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6524*4757b351SPierre Pronchery	xorq	%r11,%rax
6525*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
6526*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
6527*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
6528*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
6529*4757b351SPierre Pronchery	xorq	%r11,%r11
6530*4757b351SPierre Pronchery	shlq	$1,%rax
6531*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6532*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6533*4757b351SPierre Pronchery	xorq	%r11,%rax
6534*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
6535*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
6536*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
6537*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
6538*4757b351SPierre Pronchery	xorq	%r11,%r11
6539*4757b351SPierre Pronchery	shlq	$1,%rax
6540*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6541*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6542*4757b351SPierre Pronchery	xorq	%r11,%rax
6543*4757b351SPierre Pronchery	movq	%rax,64(%rsp)
6544*4757b351SPierre Pronchery	movq	%rbx,64 + 8(%rsp)
6545*4757b351SPierre Pronchery	vmovdqa	64(%rsp),%xmm13
6546*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm5
6547*4757b351SPierre Pronchery	xorq	%r11,%r11
6548*4757b351SPierre Pronchery	shlq	$1,%rax
6549*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6550*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6551*4757b351SPierre Pronchery	xorq	%r11,%rax
6552*4757b351SPierre Pronchery	movq	%rax,80(%rsp)
6553*4757b351SPierre Pronchery	movq	%rbx,80 + 8(%rsp)
6554*4757b351SPierre Pronchery	vmovdqa	80(%rsp),%xmm14
6555*4757b351SPierre Pronchery	vmovdqu	80(%rdi),%xmm6
6556*4757b351SPierre Pronchery	xorq	%r11,%r11
6557*4757b351SPierre Pronchery	shlq	$1,%rax
6558*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6559*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6560*4757b351SPierre Pronchery	xorq	%r11,%rax
6561*4757b351SPierre Pronchery	movq	%rax,96(%rsp)
6562*4757b351SPierre Pronchery	movq	%rbx,96 + 8(%rsp)
6563*4757b351SPierre Pronchery	vmovdqa	96(%rsp),%xmm15
6564*4757b351SPierre Pronchery	vmovdqu	96(%rdi),%xmm7
6565*4757b351SPierre Pronchery	addq	$0x70,%rdi
6566*4757b351SPierre Pronchery	andq	$0xf,%rdx
6567*4757b351SPierre Pronchery	je	.L_done_7_EmbgEptodyewbFa
6568*4757b351SPierre Pronchery
6569*4757b351SPierre Pronchery.L_steal_cipher_7_EmbgEptodyewbFa:
6570*4757b351SPierre Pronchery	xorq	%r11,%r11
6571*4757b351SPierre Pronchery	shlq	$1,%rax
6572*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6573*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6574*4757b351SPierre Pronchery	xorq	%r11,%rax
6575*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
6576*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
6577*4757b351SPierre Pronchery	vmovdqa64	%xmm15,%xmm16
6578*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm15
6579*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6580*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6581*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
6582*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
6583*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
6584*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
6585*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
6586*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
6587*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
6588*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
6589*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
6590*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
6591*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
6592*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
6593*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm7,%xmm7
6594*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
6595*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6596*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6597*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6598*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6599*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6600*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6601*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6602*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
6603*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6604*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6605*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6606*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6607*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6608*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6609*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6610*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
6611*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6612*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6613*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6614*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6615*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6616*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6617*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6618*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
6619*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6620*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6621*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6622*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6623*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6624*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6625*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6626*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
6627*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6628*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6629*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6630*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6631*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6632*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6633*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6634*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
6635*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6636*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6637*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6638*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6639*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6640*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6641*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6642*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
6643*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6644*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6645*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6646*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6647*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6648*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6649*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6650*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
6651*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6652*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6653*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6654*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6655*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6656*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6657*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6658*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
6659*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6660*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6661*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6662*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6663*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6664*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6665*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6666*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
6667*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6668*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6669*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6670*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6671*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6672*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6673*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6674*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
6675*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6676*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6677*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6678*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6679*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6680*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6681*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6682*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
6683*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6684*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6685*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6686*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6687*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6688*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6689*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6690*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
6691*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6692*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6693*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6694*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6695*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6696*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6697*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6698*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
6699*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
6700*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
6701*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
6702*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
6703*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
6704*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
6705*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm7,%xmm7
6706*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6707*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6708*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
6709*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
6710*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
6711*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
6712*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
6713*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
6714*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
6715*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
6716*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
6717*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
6718*4757b351SPierre Pronchery	vmovdqu	%xmm6,80(%rsi)
6719*4757b351SPierre Pronchery	addq	$0x70,%rsi
6720*4757b351SPierre Pronchery	vmovdqa64	%xmm16,%xmm0
6721*4757b351SPierre Pronchery	vmovdqa	%xmm7,%xmm8
6722*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
6723*4757b351SPierre Pronchery
6724*4757b351SPierre Pronchery.L_done_7_EmbgEptodyewbFa:
6725*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6726*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6727*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
6728*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
6729*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
6730*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
6731*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
6732*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
6733*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
6734*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
6735*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
6736*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
6737*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
6738*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
6739*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm7,%xmm7
6740*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
6741*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6742*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6743*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6744*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6745*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6746*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6747*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6748*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
6749*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6750*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6751*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6752*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6753*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6754*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6755*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6756*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
6757*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6758*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6759*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6760*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6761*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6762*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6763*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6764*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
6765*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6766*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6767*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6768*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6769*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6770*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6771*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6772*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
6773*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6774*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6775*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6776*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6777*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6778*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6779*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6780*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
6781*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6782*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6783*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6784*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6785*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6786*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6787*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6788*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
6789*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6790*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6791*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6792*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6793*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6794*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6795*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6796*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
6797*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6798*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6799*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6800*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6801*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6802*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6803*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6804*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
6805*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6806*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6807*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6808*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6809*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6810*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6811*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6812*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
6813*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6814*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6815*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6816*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6817*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6818*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6819*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6820*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
6821*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6822*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6823*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6824*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6825*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6826*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6827*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6828*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
6829*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6830*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6831*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6832*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6833*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6834*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6835*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6836*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
6837*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6838*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6839*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6840*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6841*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6842*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6843*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm7,%xmm7
6844*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
6845*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
6846*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
6847*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
6848*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
6849*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
6850*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
6851*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm7,%xmm7
6852*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6853*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6854*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
6855*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
6856*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
6857*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
6858*4757b351SPierre Pronchery	vpxor	%xmm15,%xmm7,%xmm7
6859*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
6860*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
6861*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
6862*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
6863*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
6864*4757b351SPierre Pronchery	vmovdqu	%xmm6,80(%rsi)
6865*4757b351SPierre Pronchery	addq	$0x70,%rsi
6866*4757b351SPierre Pronchery	vmovdqa	%xmm7,%xmm8
6867*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
6868*4757b351SPierre Pronchery
6869*4757b351SPierre Pronchery.L_num_blocks_is_6_EmbgEptodyewbFa:
6870*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
6871*4757b351SPierre Pronchery	movq	0(%rsp),%rax
6872*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
6873*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
6874*4757b351SPierre Pronchery	xorq	%r11,%r11
6875*4757b351SPierre Pronchery	shlq	$1,%rax
6876*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6877*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6878*4757b351SPierre Pronchery	xorq	%r11,%rax
6879*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
6880*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
6881*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
6882*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
6883*4757b351SPierre Pronchery	xorq	%r11,%r11
6884*4757b351SPierre Pronchery	shlq	$1,%rax
6885*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6886*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6887*4757b351SPierre Pronchery	xorq	%r11,%rax
6888*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
6889*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
6890*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
6891*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
6892*4757b351SPierre Pronchery	xorq	%r11,%r11
6893*4757b351SPierre Pronchery	shlq	$1,%rax
6894*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6895*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6896*4757b351SPierre Pronchery	xorq	%r11,%rax
6897*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
6898*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
6899*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
6900*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
6901*4757b351SPierre Pronchery	xorq	%r11,%r11
6902*4757b351SPierre Pronchery	shlq	$1,%rax
6903*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6904*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6905*4757b351SPierre Pronchery	xorq	%r11,%rax
6906*4757b351SPierre Pronchery	movq	%rax,64(%rsp)
6907*4757b351SPierre Pronchery	movq	%rbx,64 + 8(%rsp)
6908*4757b351SPierre Pronchery	vmovdqa	64(%rsp),%xmm13
6909*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm5
6910*4757b351SPierre Pronchery	xorq	%r11,%r11
6911*4757b351SPierre Pronchery	shlq	$1,%rax
6912*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6913*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6914*4757b351SPierre Pronchery	xorq	%r11,%rax
6915*4757b351SPierre Pronchery	movq	%rax,80(%rsp)
6916*4757b351SPierre Pronchery	movq	%rbx,80 + 8(%rsp)
6917*4757b351SPierre Pronchery	vmovdqa	80(%rsp),%xmm14
6918*4757b351SPierre Pronchery	vmovdqu	80(%rdi),%xmm6
6919*4757b351SPierre Pronchery	addq	$0x60,%rdi
6920*4757b351SPierre Pronchery	andq	$0xf,%rdx
6921*4757b351SPierre Pronchery	je	.L_done_6_EmbgEptodyewbFa
6922*4757b351SPierre Pronchery
6923*4757b351SPierre Pronchery.L_steal_cipher_6_EmbgEptodyewbFa:
6924*4757b351SPierre Pronchery	xorq	%r11,%r11
6925*4757b351SPierre Pronchery	shlq	$1,%rax
6926*4757b351SPierre Pronchery	adcq	%rbx,%rbx
6927*4757b351SPierre Pronchery	cmovcq	%r10,%r11
6928*4757b351SPierre Pronchery	xorq	%r11,%rax
6929*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
6930*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
6931*4757b351SPierre Pronchery	vmovdqa64	%xmm14,%xmm15
6932*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm14
6933*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
6934*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
6935*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
6936*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
6937*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
6938*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
6939*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
6940*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
6941*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
6942*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
6943*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
6944*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
6945*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
6946*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
6947*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6948*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6949*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6950*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6951*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6952*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6953*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
6954*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6955*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6956*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6957*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6958*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6959*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6960*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
6961*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6962*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6963*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6964*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6965*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6966*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6967*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
6968*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6969*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6970*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6971*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6972*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6973*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6974*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
6975*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6976*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6977*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6978*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6979*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6980*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6981*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
6982*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6983*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6984*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6985*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6986*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6987*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6988*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
6989*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6990*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6991*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6992*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
6993*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
6994*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
6995*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
6996*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
6997*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
6998*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
6999*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7000*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7001*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7002*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7003*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7004*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7005*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7006*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7007*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7008*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7009*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7010*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7011*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7012*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7013*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7014*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7015*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7016*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7017*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7018*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7019*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7020*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7021*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7022*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7023*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7024*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7025*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7026*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7027*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7028*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7029*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7030*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7031*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7032*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7033*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7034*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7035*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7036*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7037*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7038*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7039*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7040*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7041*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
7042*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
7043*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
7044*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7045*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7046*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7047*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7048*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7049*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
7050*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7051*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7052*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
7053*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
7054*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
7055*4757b351SPierre Pronchery	addq	$0x60,%rsi
7056*4757b351SPierre Pronchery	vmovdqa	%xmm15,%xmm0
7057*4757b351SPierre Pronchery	vmovdqa	%xmm6,%xmm8
7058*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
7059*4757b351SPierre Pronchery
7060*4757b351SPierre Pronchery.L_done_6_EmbgEptodyewbFa:
7061*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7062*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7063*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7064*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7065*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7066*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
7067*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7068*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7069*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7070*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7071*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
7072*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
7073*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm6,%xmm6
7074*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7075*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7076*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7077*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7078*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7079*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7080*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7081*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7082*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7083*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7084*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7085*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7086*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7087*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7088*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7089*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7090*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7091*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7092*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7093*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7094*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7095*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7096*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7097*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7098*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7099*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7100*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7101*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7102*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7103*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7104*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7105*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7106*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7107*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7108*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7109*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7110*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7111*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7112*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7113*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7114*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7115*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7116*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7117*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7118*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7119*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7120*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7121*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7122*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7123*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7124*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7125*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7126*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7127*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7128*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7129*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7130*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7131*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7132*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7133*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7134*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7135*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7136*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7137*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7138*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7139*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7140*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7141*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7142*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7143*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7144*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7145*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7146*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7147*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7148*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7149*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7150*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7151*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7152*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7153*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7154*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7155*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7156*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7157*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7158*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7159*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7160*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7161*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7162*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7163*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7164*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm6,%xmm6
7165*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7166*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7167*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7168*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7169*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
7170*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
7171*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm6,%xmm6
7172*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7173*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7174*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7175*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7176*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7177*4757b351SPierre Pronchery	vpxor	%xmm14,%xmm6,%xmm6
7178*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7179*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7180*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
7181*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
7182*4757b351SPierre Pronchery	vmovdqu	%xmm5,64(%rsi)
7183*4757b351SPierre Pronchery	addq	$0x60,%rsi
7184*4757b351SPierre Pronchery	vmovdqa	%xmm6,%xmm8
7185*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
7186*4757b351SPierre Pronchery
7187*4757b351SPierre Pronchery.L_num_blocks_is_5_EmbgEptodyewbFa:
7188*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
7189*4757b351SPierre Pronchery	movq	0(%rsp),%rax
7190*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
7191*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
7192*4757b351SPierre Pronchery	xorq	%r11,%r11
7193*4757b351SPierre Pronchery	shlq	$1,%rax
7194*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7195*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7196*4757b351SPierre Pronchery	xorq	%r11,%rax
7197*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7198*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
7199*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
7200*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
7201*4757b351SPierre Pronchery	xorq	%r11,%r11
7202*4757b351SPierre Pronchery	shlq	$1,%rax
7203*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7204*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7205*4757b351SPierre Pronchery	xorq	%r11,%rax
7206*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
7207*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
7208*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
7209*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
7210*4757b351SPierre Pronchery	xorq	%r11,%r11
7211*4757b351SPierre Pronchery	shlq	$1,%rax
7212*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7213*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7214*4757b351SPierre Pronchery	xorq	%r11,%rax
7215*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
7216*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
7217*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
7218*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
7219*4757b351SPierre Pronchery	xorq	%r11,%r11
7220*4757b351SPierre Pronchery	shlq	$1,%rax
7221*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7222*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7223*4757b351SPierre Pronchery	xorq	%r11,%rax
7224*4757b351SPierre Pronchery	movq	%rax,64(%rsp)
7225*4757b351SPierre Pronchery	movq	%rbx,64 + 8(%rsp)
7226*4757b351SPierre Pronchery	vmovdqa	64(%rsp),%xmm13
7227*4757b351SPierre Pronchery	vmovdqu	64(%rdi),%xmm5
7228*4757b351SPierre Pronchery	addq	$0x50,%rdi
7229*4757b351SPierre Pronchery	andq	$0xf,%rdx
7230*4757b351SPierre Pronchery	je	.L_done_5_EmbgEptodyewbFa
7231*4757b351SPierre Pronchery
7232*4757b351SPierre Pronchery.L_steal_cipher_5_EmbgEptodyewbFa:
7233*4757b351SPierre Pronchery	xorq	%r11,%r11
7234*4757b351SPierre Pronchery	shlq	$1,%rax
7235*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7236*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7237*4757b351SPierre Pronchery	xorq	%r11,%rax
7238*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7239*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
7240*4757b351SPierre Pronchery	vmovdqa64	%xmm13,%xmm14
7241*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm13
7242*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7243*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7244*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7245*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7246*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7247*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7248*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7249*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7250*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7251*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
7252*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
7253*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7254*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7255*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7256*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7257*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7258*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7259*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7260*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7261*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7262*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7263*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7264*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7265*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7266*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7267*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7268*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7269*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7270*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7271*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7272*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7273*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7274*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7275*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7276*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7277*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7278*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7279*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7280*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7281*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7282*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7283*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7284*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7285*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7286*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7287*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7288*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7289*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7290*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7291*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7292*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7293*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7294*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7295*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7296*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7297*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7298*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7299*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7300*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7301*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7302*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7303*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7304*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7305*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7306*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7307*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7308*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7309*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7310*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7311*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7312*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7313*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7314*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7315*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7316*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7317*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7318*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7319*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7320*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7321*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7322*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7323*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7324*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7325*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7326*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7327*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7328*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7329*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7330*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7331*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7332*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7333*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7334*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7335*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
7336*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
7337*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7338*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7339*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7340*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7341*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7342*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7343*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7344*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
7345*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
7346*4757b351SPierre Pronchery	addq	$0x50,%rsi
7347*4757b351SPierre Pronchery	vmovdqa	%xmm14,%xmm0
7348*4757b351SPierre Pronchery	vmovdqa	%xmm5,%xmm8
7349*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
7350*4757b351SPierre Pronchery
7351*4757b351SPierre Pronchery.L_done_5_EmbgEptodyewbFa:
7352*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7353*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7354*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7355*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7356*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7357*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7358*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7359*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7360*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7361*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
7362*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm5,%xmm5
7363*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7364*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7365*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7366*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7367*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7368*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7369*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7370*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7371*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7372*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7373*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7374*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7375*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7376*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7377*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7378*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7379*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7380*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7381*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7382*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7383*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7384*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7385*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7386*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7387*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7388*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7389*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7390*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7391*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7392*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7393*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7394*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7395*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7396*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7397*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7398*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7399*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7400*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7401*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7402*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7403*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7404*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7405*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7406*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7407*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7408*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7409*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7410*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7411*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7412*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7413*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7414*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7415*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7416*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7417*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7418*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7419*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7420*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7421*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7422*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7423*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7424*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7425*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7426*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7427*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7428*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7429*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7430*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7431*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7432*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7433*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7434*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7435*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7436*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7437*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7438*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7439*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7440*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm5,%xmm5
7441*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7442*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7443*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7444*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7445*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
7446*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm5,%xmm5
7447*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7448*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7449*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7450*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7451*4757b351SPierre Pronchery	vpxor	%xmm13,%xmm5,%xmm5
7452*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7453*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7454*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
7455*4757b351SPierre Pronchery	vmovdqu	%xmm4,48(%rsi)
7456*4757b351SPierre Pronchery	addq	$0x50,%rsi
7457*4757b351SPierre Pronchery	vmovdqa	%xmm5,%xmm8
7458*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
7459*4757b351SPierre Pronchery
7460*4757b351SPierre Pronchery.L_num_blocks_is_4_EmbgEptodyewbFa:
7461*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
7462*4757b351SPierre Pronchery	movq	0(%rsp),%rax
7463*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
7464*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
7465*4757b351SPierre Pronchery	xorq	%r11,%r11
7466*4757b351SPierre Pronchery	shlq	$1,%rax
7467*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7468*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7469*4757b351SPierre Pronchery	xorq	%r11,%rax
7470*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7471*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
7472*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
7473*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
7474*4757b351SPierre Pronchery	xorq	%r11,%r11
7475*4757b351SPierre Pronchery	shlq	$1,%rax
7476*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7477*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7478*4757b351SPierre Pronchery	xorq	%r11,%rax
7479*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
7480*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
7481*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
7482*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
7483*4757b351SPierre Pronchery	xorq	%r11,%r11
7484*4757b351SPierre Pronchery	shlq	$1,%rax
7485*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7486*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7487*4757b351SPierre Pronchery	xorq	%r11,%rax
7488*4757b351SPierre Pronchery	movq	%rax,48(%rsp)
7489*4757b351SPierre Pronchery	movq	%rbx,48 + 8(%rsp)
7490*4757b351SPierre Pronchery	vmovdqa	48(%rsp),%xmm12
7491*4757b351SPierre Pronchery	vmovdqu	48(%rdi),%xmm4
7492*4757b351SPierre Pronchery	addq	$0x40,%rdi
7493*4757b351SPierre Pronchery	andq	$0xf,%rdx
7494*4757b351SPierre Pronchery	je	.L_done_4_EmbgEptodyewbFa
7495*4757b351SPierre Pronchery
7496*4757b351SPierre Pronchery.L_steal_cipher_4_EmbgEptodyewbFa:
7497*4757b351SPierre Pronchery	xorq	%r11,%r11
7498*4757b351SPierre Pronchery	shlq	$1,%rax
7499*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7500*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7501*4757b351SPierre Pronchery	xorq	%r11,%rax
7502*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7503*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
7504*4757b351SPierre Pronchery	vmovdqa64	%xmm12,%xmm13
7505*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm12
7506*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7507*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7508*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7509*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7510*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7511*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7512*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7513*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7514*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
7515*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7516*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7517*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7518*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7519*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7520*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7521*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7522*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7523*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7524*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7525*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7526*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7527*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7528*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7529*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7530*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7531*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7532*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7533*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7534*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7535*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7536*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7537*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7538*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7539*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7540*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7541*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7542*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7543*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7544*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7545*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7546*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7547*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7548*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7549*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7550*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7551*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7552*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7553*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7554*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7555*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7556*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7557*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7558*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7559*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7560*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7561*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7562*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7563*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7564*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7565*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7566*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7567*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7568*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7569*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7570*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7571*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7572*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7573*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7574*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7575*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7576*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7577*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7578*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7579*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7580*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7581*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7582*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7583*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7584*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
7585*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7586*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7587*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7588*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7589*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7590*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7591*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
7592*4757b351SPierre Pronchery	addq	$0x40,%rsi
7593*4757b351SPierre Pronchery	vmovdqa	%xmm13,%xmm0
7594*4757b351SPierre Pronchery	vmovdqa	%xmm4,%xmm8
7595*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
7596*4757b351SPierre Pronchery
7597*4757b351SPierre Pronchery.L_done_4_EmbgEptodyewbFa:
7598*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7599*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7600*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7601*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7602*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7603*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7604*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7605*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7606*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm4,%xmm4
7607*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7608*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7609*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7610*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7611*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7612*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7613*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7614*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7615*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7616*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7617*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7618*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7619*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7620*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7621*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7622*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7623*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7624*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7625*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7626*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7627*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7628*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7629*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7630*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7631*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7632*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7633*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7634*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7635*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7636*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7637*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7638*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7639*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7640*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7641*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7642*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7643*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7644*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7645*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7646*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7647*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7648*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7649*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7650*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7651*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7652*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7653*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7654*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7655*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7656*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7657*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7658*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7659*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7660*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7661*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7662*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7663*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7664*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7665*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7666*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7667*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7668*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7669*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7670*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7671*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm4,%xmm4
7672*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7673*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7674*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7675*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7676*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm4,%xmm4
7677*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7678*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7679*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7680*4757b351SPierre Pronchery	vpxor	%xmm12,%xmm4,%xmm4
7681*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7682*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7683*4757b351SPierre Pronchery	vmovdqu	%xmm3,32(%rsi)
7684*4757b351SPierre Pronchery	addq	$0x40,%rsi
7685*4757b351SPierre Pronchery	vmovdqa	%xmm4,%xmm8
7686*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
7687*4757b351SPierre Pronchery
7688*4757b351SPierre Pronchery.L_num_blocks_is_3_EmbgEptodyewbFa:
7689*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
7690*4757b351SPierre Pronchery	movq	0(%rsp),%rax
7691*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
7692*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
7693*4757b351SPierre Pronchery	xorq	%r11,%r11
7694*4757b351SPierre Pronchery	shlq	$1,%rax
7695*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7696*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7697*4757b351SPierre Pronchery	xorq	%r11,%rax
7698*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7699*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
7700*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
7701*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
7702*4757b351SPierre Pronchery	xorq	%r11,%r11
7703*4757b351SPierre Pronchery	shlq	$1,%rax
7704*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7705*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7706*4757b351SPierre Pronchery	xorq	%r11,%rax
7707*4757b351SPierre Pronchery	movq	%rax,32(%rsp)
7708*4757b351SPierre Pronchery	movq	%rbx,32 + 8(%rsp)
7709*4757b351SPierre Pronchery	vmovdqa	32(%rsp),%xmm11
7710*4757b351SPierre Pronchery	vmovdqu	32(%rdi),%xmm3
7711*4757b351SPierre Pronchery	addq	$0x30,%rdi
7712*4757b351SPierre Pronchery	andq	$0xf,%rdx
7713*4757b351SPierre Pronchery	je	.L_done_3_EmbgEptodyewbFa
7714*4757b351SPierre Pronchery
7715*4757b351SPierre Pronchery.L_steal_cipher_3_EmbgEptodyewbFa:
7716*4757b351SPierre Pronchery	xorq	%r11,%r11
7717*4757b351SPierre Pronchery	shlq	$1,%rax
7718*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7719*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7720*4757b351SPierre Pronchery	xorq	%r11,%rax
7721*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7722*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
7723*4757b351SPierre Pronchery	vmovdqa64	%xmm11,%xmm12
7724*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm11
7725*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7726*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7727*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7728*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7729*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7730*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7731*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7732*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7733*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7734*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7735*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7736*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7737*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7738*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7739*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7740*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7741*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7742*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7743*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7744*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7745*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7746*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7747*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7748*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7749*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7750*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7751*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7752*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7753*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7754*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7755*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7756*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7757*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7758*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7759*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7760*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7761*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7762*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7763*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7764*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7765*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7766*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7767*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7768*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7769*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7770*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7771*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7772*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7773*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7774*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7775*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7776*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7777*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7778*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7779*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7780*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7781*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7782*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7783*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7784*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7785*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7786*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7787*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7788*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7789*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7790*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7791*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7792*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7793*4757b351SPierre Pronchery	addq	$0x30,%rsi
7794*4757b351SPierre Pronchery	vmovdqa	%xmm12,%xmm0
7795*4757b351SPierre Pronchery	vmovdqa	%xmm3,%xmm8
7796*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
7797*4757b351SPierre Pronchery
7798*4757b351SPierre Pronchery.L_done_3_EmbgEptodyewbFa:
7799*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7800*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7801*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7802*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7803*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7804*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7805*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm3,%xmm3
7806*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7807*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7808*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7809*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7810*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7811*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7812*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7813*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7814*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7815*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7816*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7817*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7818*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7819*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7820*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7821*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7822*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7823*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7824*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7825*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7826*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7827*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7828*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7829*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7830*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7831*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7832*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7833*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7834*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7835*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7836*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7837*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7838*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7839*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7840*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7841*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7842*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7843*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7844*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7845*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7846*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7847*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7848*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7849*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7850*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7851*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7852*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7853*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7854*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7855*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7856*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7857*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm3,%xmm3
7858*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7859*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7860*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7861*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm3,%xmm3
7862*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7863*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7864*4757b351SPierre Pronchery	vpxor	%xmm11,%xmm3,%xmm3
7865*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7866*4757b351SPierre Pronchery	vmovdqu	%xmm2,16(%rsi)
7867*4757b351SPierre Pronchery	addq	$0x30,%rsi
7868*4757b351SPierre Pronchery	vmovdqa	%xmm3,%xmm8
7869*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
7870*4757b351SPierre Pronchery
7871*4757b351SPierre Pronchery.L_num_blocks_is_2_EmbgEptodyewbFa:
7872*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
7873*4757b351SPierre Pronchery	movq	0(%rsp),%rax
7874*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
7875*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
7876*4757b351SPierre Pronchery	xorq	%r11,%r11
7877*4757b351SPierre Pronchery	shlq	$1,%rax
7878*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7879*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7880*4757b351SPierre Pronchery	xorq	%r11,%rax
7881*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7882*4757b351SPierre Pronchery	movq	%rbx,16 + 8(%rsp)
7883*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
7884*4757b351SPierre Pronchery	vmovdqu	16(%rdi),%xmm2
7885*4757b351SPierre Pronchery	addq	$0x20,%rdi
7886*4757b351SPierre Pronchery	andq	$0xf,%rdx
7887*4757b351SPierre Pronchery	je	.L_done_2_EmbgEptodyewbFa
7888*4757b351SPierre Pronchery
7889*4757b351SPierre Pronchery.L_steal_cipher_2_EmbgEptodyewbFa:
7890*4757b351SPierre Pronchery	xorq	%r11,%r11
7891*4757b351SPierre Pronchery	shlq	$1,%rax
7892*4757b351SPierre Pronchery	adcq	%rbx,%rbx
7893*4757b351SPierre Pronchery	cmovcq	%r10,%r11
7894*4757b351SPierre Pronchery	xorq	%r11,%rax
7895*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
7896*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
7897*4757b351SPierre Pronchery	vmovdqa64	%xmm10,%xmm11
7898*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm10
7899*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7900*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7901*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7902*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7903*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7904*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7905*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7906*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7907*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7908*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7909*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7910*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7911*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7912*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7913*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7914*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7915*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7916*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7917*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7918*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7919*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7920*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7921*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7922*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7923*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7924*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7925*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7926*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7927*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7928*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7929*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7930*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7931*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7932*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7933*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7934*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7935*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7936*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7937*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7938*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7939*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7940*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7941*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7942*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7943*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
7944*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
7945*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
7946*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7947*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7948*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
7949*4757b351SPierre Pronchery	addq	$0x20,%rsi
7950*4757b351SPierre Pronchery	vmovdqa	%xmm11,%xmm0
7951*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
7952*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
7953*4757b351SPierre Pronchery
7954*4757b351SPierre Pronchery.L_done_2_EmbgEptodyewbFa:
7955*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
7956*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
7957*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
7958*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
7959*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm2,%xmm2
7960*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
7961*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7962*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7963*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
7964*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7965*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7966*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
7967*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7968*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7969*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
7970*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7971*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7972*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
7973*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7974*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7975*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
7976*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7977*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7978*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
7979*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7980*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7981*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
7982*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7983*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7984*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
7985*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7986*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7987*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
7988*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7989*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7990*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
7991*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7992*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7993*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
7994*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7995*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7996*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
7997*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
7998*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm2,%xmm2
7999*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
8000*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
8001*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm2,%xmm2
8002*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
8003*4757b351SPierre Pronchery	vpxor	%xmm10,%xmm2,%xmm2
8004*4757b351SPierre Pronchery	vmovdqu	%xmm1,(%rsi)
8005*4757b351SPierre Pronchery	addq	$0x20,%rsi
8006*4757b351SPierre Pronchery	vmovdqa	%xmm2,%xmm8
8007*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
8008*4757b351SPierre Pronchery
8009*4757b351SPierre Pronchery.L_num_blocks_is_1_EmbgEptodyewbFa:
8010*4757b351SPierre Pronchery	vmovdqa	0(%rsp),%xmm9
8011*4757b351SPierre Pronchery	movq	0(%rsp),%rax
8012*4757b351SPierre Pronchery	movq	8(%rsp),%rbx
8013*4757b351SPierre Pronchery	vmovdqu	0(%rdi),%xmm1
8014*4757b351SPierre Pronchery	addq	$0x10,%rdi
8015*4757b351SPierre Pronchery	andq	$0xf,%rdx
8016*4757b351SPierre Pronchery	je	.L_done_1_EmbgEptodyewbFa
8017*4757b351SPierre Pronchery
8018*4757b351SPierre Pronchery.L_steal_cipher_1_EmbgEptodyewbFa:
8019*4757b351SPierre Pronchery	xorq	%r11,%r11
8020*4757b351SPierre Pronchery	shlq	$1,%rax
8021*4757b351SPierre Pronchery	adcq	%rbx,%rbx
8022*4757b351SPierre Pronchery	cmovcq	%r10,%r11
8023*4757b351SPierre Pronchery	xorq	%r11,%rax
8024*4757b351SPierre Pronchery	movq	%rax,16(%rsp)
8025*4757b351SPierre Pronchery	movq	%rbx,24(%rsp)
8026*4757b351SPierre Pronchery	vmovdqa64	%xmm9,%xmm10
8027*4757b351SPierre Pronchery	vmovdqa	16(%rsp),%xmm9
8028*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
8029*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
8030*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
8031*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
8032*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8033*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
8034*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8035*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
8036*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8037*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
8038*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8039*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
8040*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8041*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
8042*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8043*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
8044*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8045*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
8046*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8047*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
8048*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8049*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
8050*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8051*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
8052*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8053*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
8054*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8055*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
8056*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8057*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
8058*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
8059*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
8060*4757b351SPierre Pronchery	addq	$0x10,%rsi
8061*4757b351SPierre Pronchery	vmovdqa	%xmm10,%xmm0
8062*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
8063*4757b351SPierre Pronchery	jmp	.L_steal_cipher_EmbgEptodyewbFa
8064*4757b351SPierre Pronchery
8065*4757b351SPierre Pronchery.L_done_1_EmbgEptodyewbFa:
8066*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
8067*4757b351SPierre Pronchery	vmovdqu	(%rcx),%xmm0
8068*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm1,%xmm1
8069*4757b351SPierre Pronchery	vmovdqu	16(%rcx),%xmm0
8070*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8071*4757b351SPierre Pronchery	vmovdqu	32(%rcx),%xmm0
8072*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8073*4757b351SPierre Pronchery	vmovdqu	48(%rcx),%xmm0
8074*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8075*4757b351SPierre Pronchery	vmovdqu	64(%rcx),%xmm0
8076*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8077*4757b351SPierre Pronchery	vmovdqu	80(%rcx),%xmm0
8078*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8079*4757b351SPierre Pronchery	vmovdqu	96(%rcx),%xmm0
8080*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8081*4757b351SPierre Pronchery	vmovdqu	112(%rcx),%xmm0
8082*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8083*4757b351SPierre Pronchery	vmovdqu	128(%rcx),%xmm0
8084*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8085*4757b351SPierre Pronchery	vmovdqu	144(%rcx),%xmm0
8086*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8087*4757b351SPierre Pronchery	vmovdqu	160(%rcx),%xmm0
8088*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8089*4757b351SPierre Pronchery	vmovdqu	176(%rcx),%xmm0
8090*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8091*4757b351SPierre Pronchery	vmovdqu	192(%rcx),%xmm0
8092*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8093*4757b351SPierre Pronchery	vmovdqu	208(%rcx),%xmm0
8094*4757b351SPierre Pronchery	vaesdec	%xmm0,%xmm1,%xmm1
8095*4757b351SPierre Pronchery	vmovdqu	224(%rcx),%xmm0
8096*4757b351SPierre Pronchery	vaesdeclast	%xmm0,%xmm1,%xmm1
8097*4757b351SPierre Pronchery	vpxor	%xmm9,%xmm1,%xmm1
8098*4757b351SPierre Pronchery	addq	$0x10,%rsi
8099*4757b351SPierre Pronchery	vmovdqa	%xmm1,%xmm8
8100*4757b351SPierre Pronchery	jmp	.L_done_EmbgEptodyewbFa
8101*4757b351SPierre Pronchery.cfi_endproc
8102*4757b351SPierre Pronchery.section	.rodata
8103*4757b351SPierre Pronchery.align	16
8104*4757b351SPierre Pronchery
8105*4757b351SPierre Proncheryvpshufb_shf_table:
8106*4757b351SPierre Pronchery.quad	0x8786858483828100, 0x8f8e8d8c8b8a8988
8107*4757b351SPierre Pronchery.quad	0x0706050403020100, 0x000e0d0c0b0a0908
8108*4757b351SPierre Pronchery
8109*4757b351SPierre Proncherymask1:
8110*4757b351SPierre Pronchery.quad	0x8080808080808080, 0x8080808080808080
8111*4757b351SPierre Pronchery
8112*4757b351SPierre Proncheryconst_dq3210:
8113*4757b351SPierre Pronchery.quad	0, 0, 1, 1, 2, 2, 3, 3
8114*4757b351SPierre Proncheryconst_dq5678:
8115*4757b351SPierre Pronchery.quad	8, 8, 7, 7, 6, 6, 5, 5
8116*4757b351SPierre Proncheryconst_dq7654:
8117*4757b351SPierre Pronchery.quad	4, 4, 5, 5, 6, 6, 7, 7
8118*4757b351SPierre Proncheryconst_dq1234:
8119*4757b351SPierre Pronchery.quad	4, 4, 3, 3, 2, 2, 1, 1
8120*4757b351SPierre Pronchery
8121*4757b351SPierre Proncheryshufb_15_7:
8122*4757b351SPierre Pronchery.byte	15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7, 0xff, 0xff
8123*4757b351SPierre Pronchery.byte	0xff, 0xff, 0xff, 0xff, 0xff
8124*4757b351SPierre Pronchery
8125*4757b351SPierre Pronchery.text
8126*4757b351SPierre Pronchery	.section ".note.gnu.property", "a"
8127*4757b351SPierre Pronchery	.p2align 3
8128*4757b351SPierre Pronchery	.long 1f - 0f
8129*4757b351SPierre Pronchery	.long 4f - 1f
8130*4757b351SPierre Pronchery	.long 5
8131*4757b351SPierre Pronchery0:
8132*4757b351SPierre Pronchery	# "GNU" encoded with .byte, since .asciz isn't supported
8133*4757b351SPierre Pronchery	# on Solaris.
8134*4757b351SPierre Pronchery	.byte 0x47
8135*4757b351SPierre Pronchery	.byte 0x4e
8136*4757b351SPierre Pronchery	.byte 0x55
8137*4757b351SPierre Pronchery	.byte 0
8138*4757b351SPierre Pronchery1:
8139*4757b351SPierre Pronchery	.p2align 3
8140*4757b351SPierre Pronchery	.long 0xc0000002
8141*4757b351SPierre Pronchery	.long 3f - 2f
8142*4757b351SPierre Pronchery2:
8143*4757b351SPierre Pronchery	.long 3
8144*4757b351SPierre Pronchery3:
8145*4757b351SPierre Pronchery	.p2align 3
8146*4757b351SPierre Pronchery4:
8147