xref: /minix3/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/vpaes-x86.S (revision ebfedea0ce5bbe81e252ddf32d732e40fb633fae)
1*ebfedea0SLionel Sambuc#include <machine/asm.h>
2*ebfedea0SLionel Sambuc.text
3*ebfedea0SLionel Sambuc.align	64
4*ebfedea0SLionel Sambuc.L_vpaes_consts:
5*ebfedea0SLionel Sambuc.long	218628480,235210255,168496130,67568393
6*ebfedea0SLionel Sambuc.long	252381056,17041926,33884169,51187212
7*ebfedea0SLionel Sambuc.long	252645135,252645135,252645135,252645135
8*ebfedea0SLionel Sambuc.long	1512730624,3266504856,1377990664,3401244816
9*ebfedea0SLionel Sambuc.long	830229760,1275146365,2969422977,3447763452
10*ebfedea0SLionel Sambuc.long	3411033600,2979783055,338359620,2782886510
11*ebfedea0SLionel Sambuc.long	4209124096,907596821,221174255,1006095553
12*ebfedea0SLionel Sambuc.long	191964160,3799684038,3164090317,1589111125
13*ebfedea0SLionel Sambuc.long	182528256,1777043520,2877432650,3265356744
14*ebfedea0SLionel Sambuc.long	1874708224,3503451415,3305285752,363511674
15*ebfedea0SLionel Sambuc.long	1606117888,3487855781,1093350906,2384367825
16*ebfedea0SLionel Sambuc.long	197121,67569157,134941193,202313229
17*ebfedea0SLionel Sambuc.long	67569157,134941193,202313229,197121
18*ebfedea0SLionel Sambuc.long	134941193,202313229,197121,67569157
19*ebfedea0SLionel Sambuc.long	202313229,197121,67569157,134941193
20*ebfedea0SLionel Sambuc.long	33619971,100992007,168364043,235736079
21*ebfedea0SLionel Sambuc.long	235736079,33619971,100992007,168364043
22*ebfedea0SLionel Sambuc.long	168364043,235736079,33619971,100992007
23*ebfedea0SLionel Sambuc.long	100992007,168364043,235736079,33619971
24*ebfedea0SLionel Sambuc.long	50462976,117835012,185207048,252579084
25*ebfedea0SLionel Sambuc.long	252314880,51251460,117574920,184942860
26*ebfedea0SLionel Sambuc.long	184682752,252054788,50987272,118359308
27*ebfedea0SLionel Sambuc.long	118099200,185467140,251790600,50727180
28*ebfedea0SLionel Sambuc.long	2946363062,528716217,1300004225,1881839624
29*ebfedea0SLionel Sambuc.long	1532713819,1532713819,1532713819,1532713819
30*ebfedea0SLionel Sambuc.long	3602276352,4288629033,3737020424,4153884961
31*ebfedea0SLionel Sambuc.long	1354558464,32357713,2958822624,3775749553
32*ebfedea0SLionel Sambuc.long	1201988352,132424512,1572796698,503232858
33*ebfedea0SLionel Sambuc.long	2213177600,1597421020,4103937655,675398315
34*ebfedea0SLionel Sambuc.long	2749646592,4273543773,1511898873,121693092
35*ebfedea0SLionel Sambuc.long	3040248576,1103263732,2871565598,1608280554
36*ebfedea0SLionel Sambuc.long	2236667136,2588920351,482954393,64377734
37*ebfedea0SLionel Sambuc.long	3069987328,291237287,2117370568,3650299247
38*ebfedea0SLionel Sambuc.long	533321216,3573750986,2572112006,1401264716
39*ebfedea0SLionel Sambuc.long	1339849704,2721158661,548607111,3445553514
40*ebfedea0SLionel Sambuc.long	2128193280,3054596040,2183486460,1257083700
41*ebfedea0SLionel Sambuc.long	655635200,1165381986,3923443150,2344132524
42*ebfedea0SLionel Sambuc.long	190078720,256924420,290342170,357187870
43*ebfedea0SLionel Sambuc.long	1610966272,2263057382,4103205268,309794674
44*ebfedea0SLionel Sambuc.long	2592527872,2233205587,1335446729,3402964816
45*ebfedea0SLionel Sambuc.long	3973531904,3225098121,3002836325,1918774430
46*ebfedea0SLionel Sambuc.long	3870401024,2102906079,2284471353,4117666579
47*ebfedea0SLionel Sambuc.long	617007872,1021508343,366931923,691083277
48*ebfedea0SLionel Sambuc.long	2528395776,3491914898,2968704004,1613121270
49*ebfedea0SLionel Sambuc.long	3445188352,3247741094,844474987,4093578302
50*ebfedea0SLionel Sambuc.long	651481088,1190302358,1689581232,574775300
51*ebfedea0SLionel Sambuc.long	4289380608,206939853,2555985458,2489840491
52*ebfedea0SLionel Sambuc.long	2130264064,327674451,3566485037,3349835193
53*ebfedea0SLionel Sambuc.long	2470714624,316102159,3636825756,3393945945
54*ebfedea0SLionel Sambuc.byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
55*ebfedea0SLionel Sambuc.byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
56*ebfedea0SLionel Sambuc.byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
57*ebfedea0SLionel Sambuc.byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
58*ebfedea0SLionel Sambuc.byte	118,101,114,115,105,116,121,41,0
59*ebfedea0SLionel Sambuc.align	64
60*ebfedea0SLionel Sambuc.type	_vpaes_preheat,@function
61*ebfedea0SLionel Sambuc.align	16
62*ebfedea0SLionel Sambuc_vpaes_preheat:
63*ebfedea0SLionel Sambuc	addl	(%esp),%ebp
64*ebfedea0SLionel Sambuc	movdqa	-48(%ebp),%xmm7
65*ebfedea0SLionel Sambuc	movdqa	-16(%ebp),%xmm6
66*ebfedea0SLionel Sambuc	ret
67*ebfedea0SLionel Sambuc.size	_vpaes_preheat,.-_vpaes_preheat
68*ebfedea0SLionel Sambuc.type	_vpaes_encrypt_core,@function
69*ebfedea0SLionel Sambuc.align	16
70*ebfedea0SLionel Sambuc_vpaes_encrypt_core:
71*ebfedea0SLionel Sambuc	movl	$16,%ecx
72*ebfedea0SLionel Sambuc	movl	240(%edx),%eax
73*ebfedea0SLionel Sambuc	movdqa	%xmm6,%xmm1
74*ebfedea0SLionel Sambuc	movdqa	(%ebp),%xmm2
75*ebfedea0SLionel Sambuc	pandn	%xmm0,%xmm1
76*ebfedea0SLionel Sambuc	movdqu	(%edx),%xmm5
77*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
78*ebfedea0SLionel Sambuc	pand	%xmm6,%xmm0
79*ebfedea0SLionel Sambuc.byte	102,15,56,0,208
80*ebfedea0SLionel Sambuc	movdqa	16(%ebp),%xmm0
81*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
82*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm2
83*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm0
84*ebfedea0SLionel Sambuc	addl	$16,%edx
85*ebfedea0SLionel Sambuc	leal	192(%ebp),%ebx
86*ebfedea0SLionel Sambuc	jmp	.L000enc_entry
87*ebfedea0SLionel Sambuc.align	16
88*ebfedea0SLionel Sambuc.L001enc_loop:
89*ebfedea0SLionel Sambuc	movdqa	32(%ebp),%xmm4
90*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
91*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm4
92*ebfedea0SLionel Sambuc	movdqa	48(%ebp),%xmm0
93*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
94*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
95*ebfedea0SLionel Sambuc	movdqa	64(%ebp),%xmm5
96*ebfedea0SLionel Sambuc.byte	102,15,56,0,234
97*ebfedea0SLionel Sambuc	movdqa	-64(%ebx,%ecx,1),%xmm1
98*ebfedea0SLionel Sambuc	movdqa	80(%ebp),%xmm2
99*ebfedea0SLionel Sambuc.byte	102,15,56,0,211
100*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm2
101*ebfedea0SLionel Sambuc	movdqa	(%ebx,%ecx,1),%xmm4
102*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm3
103*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
104*ebfedea0SLionel Sambuc	addl	$16,%edx
105*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm0
106*ebfedea0SLionel Sambuc.byte	102,15,56,0,220
107*ebfedea0SLionel Sambuc	addl	$16,%ecx
108*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm3
109*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
110*ebfedea0SLionel Sambuc	andl	$48,%ecx
111*ebfedea0SLionel Sambuc	pxor	%xmm3,%xmm0
112*ebfedea0SLionel Sambuc	subl	$1,%eax
113*ebfedea0SLionel Sambuc.L000enc_entry:
114*ebfedea0SLionel Sambuc	movdqa	%xmm6,%xmm1
115*ebfedea0SLionel Sambuc	pandn	%xmm0,%xmm1
116*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
117*ebfedea0SLionel Sambuc	pand	%xmm6,%xmm0
118*ebfedea0SLionel Sambuc	movdqa	-32(%ebp),%xmm5
119*ebfedea0SLionel Sambuc.byte	102,15,56,0,232
120*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm0
121*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm3
122*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
123*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm3
124*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm4
125*ebfedea0SLionel Sambuc.byte	102,15,56,0,224
126*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm4
127*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm2
128*ebfedea0SLionel Sambuc.byte	102,15,56,0,211
129*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm2
130*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm3
131*ebfedea0SLionel Sambuc	movdqu	(%edx),%xmm5
132*ebfedea0SLionel Sambuc.byte	102,15,56,0,220
133*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm3
134*ebfedea0SLionel Sambuc	jnz	.L001enc_loop
135*ebfedea0SLionel Sambuc	movdqa	96(%ebp),%xmm4
136*ebfedea0SLionel Sambuc	movdqa	112(%ebp),%xmm0
137*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
138*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm4
139*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
140*ebfedea0SLionel Sambuc	movdqa	64(%ebx,%ecx,1),%xmm1
141*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
142*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
143*ebfedea0SLionel Sambuc	ret
144*ebfedea0SLionel Sambuc.size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
145*ebfedea0SLionel Sambuc.type	_vpaes_decrypt_core,@function
146*ebfedea0SLionel Sambuc.align	16
147*ebfedea0SLionel Sambuc_vpaes_decrypt_core:
148*ebfedea0SLionel Sambuc	movl	240(%edx),%eax
149*ebfedea0SLionel Sambuc	leal	608(%ebp),%ebx
150*ebfedea0SLionel Sambuc	movdqa	%xmm6,%xmm1
151*ebfedea0SLionel Sambuc	movdqa	-64(%ebx),%xmm2
152*ebfedea0SLionel Sambuc	pandn	%xmm0,%xmm1
153*ebfedea0SLionel Sambuc	movl	%eax,%ecx
154*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
155*ebfedea0SLionel Sambuc	movdqu	(%edx),%xmm5
156*ebfedea0SLionel Sambuc	shll	$4,%ecx
157*ebfedea0SLionel Sambuc	pand	%xmm6,%xmm0
158*ebfedea0SLionel Sambuc.byte	102,15,56,0,208
159*ebfedea0SLionel Sambuc	movdqa	-48(%ebx),%xmm0
160*ebfedea0SLionel Sambuc	xorl	$48,%ecx
161*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
162*ebfedea0SLionel Sambuc	andl	$48,%ecx
163*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm2
164*ebfedea0SLionel Sambuc	movdqa	176(%ebp),%xmm5
165*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm0
166*ebfedea0SLionel Sambuc	addl	$16,%edx
167*ebfedea0SLionel Sambuc	leal	-352(%ebx,%ecx,1),%ecx
168*ebfedea0SLionel Sambuc	jmp	.L002dec_entry
169*ebfedea0SLionel Sambuc.align	16
170*ebfedea0SLionel Sambuc.L003dec_loop:
171*ebfedea0SLionel Sambuc	movdqa	-32(%ebx),%xmm4
172*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
173*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm4
174*ebfedea0SLionel Sambuc	movdqa	-16(%ebx),%xmm0
175*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
176*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
177*ebfedea0SLionel Sambuc	addl	$16,%edx
178*ebfedea0SLionel Sambuc.byte	102,15,56,0,197
179*ebfedea0SLionel Sambuc	movdqa	(%ebx),%xmm4
180*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
181*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm4
182*ebfedea0SLionel Sambuc	movdqa	16(%ebx),%xmm0
183*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
184*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
185*ebfedea0SLionel Sambuc	subl	$1,%eax
186*ebfedea0SLionel Sambuc.byte	102,15,56,0,197
187*ebfedea0SLionel Sambuc	movdqa	32(%ebx),%xmm4
188*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
189*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm4
190*ebfedea0SLionel Sambuc	movdqa	48(%ebx),%xmm0
191*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
192*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
193*ebfedea0SLionel Sambuc.byte	102,15,56,0,197
194*ebfedea0SLionel Sambuc	movdqa	64(%ebx),%xmm4
195*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
196*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm4
197*ebfedea0SLionel Sambuc	movdqa	80(%ebx),%xmm0
198*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
199*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
200*ebfedea0SLionel Sambuc.byte	102,15,58,15,237,12
201*ebfedea0SLionel Sambuc.L002dec_entry:
202*ebfedea0SLionel Sambuc	movdqa	%xmm6,%xmm1
203*ebfedea0SLionel Sambuc	pandn	%xmm0,%xmm1
204*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
205*ebfedea0SLionel Sambuc	pand	%xmm6,%xmm0
206*ebfedea0SLionel Sambuc	movdqa	-32(%ebp),%xmm2
207*ebfedea0SLionel Sambuc.byte	102,15,56,0,208
208*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm0
209*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm3
210*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
211*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm3
212*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm4
213*ebfedea0SLionel Sambuc.byte	102,15,56,0,224
214*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm4
215*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm2
216*ebfedea0SLionel Sambuc.byte	102,15,56,0,211
217*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm2
218*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm3
219*ebfedea0SLionel Sambuc.byte	102,15,56,0,220
220*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm3
221*ebfedea0SLionel Sambuc	movdqu	(%edx),%xmm0
222*ebfedea0SLionel Sambuc	jnz	.L003dec_loop
223*ebfedea0SLionel Sambuc	movdqa	96(%ebx),%xmm4
224*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
225*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm4
226*ebfedea0SLionel Sambuc	movdqa	112(%ebx),%xmm0
227*ebfedea0SLionel Sambuc	movdqa	(%ecx),%xmm2
228*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
229*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
230*ebfedea0SLionel Sambuc.byte	102,15,56,0,194
231*ebfedea0SLionel Sambuc	ret
232*ebfedea0SLionel Sambuc.size	_vpaes_decrypt_core,.-_vpaes_decrypt_core
233*ebfedea0SLionel Sambuc.type	_vpaes_schedule_core,@function
234*ebfedea0SLionel Sambuc.align	16
235*ebfedea0SLionel Sambuc_vpaes_schedule_core:
236*ebfedea0SLionel Sambuc	addl	(%esp),%ebp
237*ebfedea0SLionel Sambuc	movdqu	(%esi),%xmm0
238*ebfedea0SLionel Sambuc	movdqa	320(%ebp),%xmm2
239*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm3
240*ebfedea0SLionel Sambuc	leal	(%ebp),%ebx
241*ebfedea0SLionel Sambuc	movdqa	%xmm2,4(%esp)
242*ebfedea0SLionel Sambuc	call	_vpaes_schedule_transform
243*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm7
244*ebfedea0SLionel Sambuc	testl	%edi,%edi
245*ebfedea0SLionel Sambuc	jnz	.L004schedule_am_decrypting
246*ebfedea0SLionel Sambuc	movdqu	%xmm0,(%edx)
247*ebfedea0SLionel Sambuc	jmp	.L005schedule_go
248*ebfedea0SLionel Sambuc.L004schedule_am_decrypting:
249*ebfedea0SLionel Sambuc	movdqa	256(%ebp,%ecx,1),%xmm1
250*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
251*ebfedea0SLionel Sambuc	movdqu	%xmm3,(%edx)
252*ebfedea0SLionel Sambuc	xorl	$48,%ecx
253*ebfedea0SLionel Sambuc.L005schedule_go:
254*ebfedea0SLionel Sambuc	cmpl	$192,%eax
255*ebfedea0SLionel Sambuc	ja	.L006schedule_256
256*ebfedea0SLionel Sambuc	je	.L007schedule_192
257*ebfedea0SLionel Sambuc.L008schedule_128:
258*ebfedea0SLionel Sambuc	movl	$10,%eax
259*ebfedea0SLionel Sambuc.L009loop_schedule_128:
260*ebfedea0SLionel Sambuc	call	_vpaes_schedule_round
261*ebfedea0SLionel Sambuc	decl	%eax
262*ebfedea0SLionel Sambuc	jz	.L010schedule_mangle_last
263*ebfedea0SLionel Sambuc	call	_vpaes_schedule_mangle
264*ebfedea0SLionel Sambuc	jmp	.L009loop_schedule_128
265*ebfedea0SLionel Sambuc.align	16
266*ebfedea0SLionel Sambuc.L007schedule_192:
267*ebfedea0SLionel Sambuc	movdqu	8(%esi),%xmm0
268*ebfedea0SLionel Sambuc	call	_vpaes_schedule_transform
269*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm6
270*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm4
271*ebfedea0SLionel Sambuc	movhlps	%xmm4,%xmm6
272*ebfedea0SLionel Sambuc	movl	$4,%eax
273*ebfedea0SLionel Sambuc.L011loop_schedule_192:
274*ebfedea0SLionel Sambuc	call	_vpaes_schedule_round
275*ebfedea0SLionel Sambuc.byte	102,15,58,15,198,8
276*ebfedea0SLionel Sambuc	call	_vpaes_schedule_mangle
277*ebfedea0SLionel Sambuc	call	_vpaes_schedule_192_smear
278*ebfedea0SLionel Sambuc	call	_vpaes_schedule_mangle
279*ebfedea0SLionel Sambuc	call	_vpaes_schedule_round
280*ebfedea0SLionel Sambuc	decl	%eax
281*ebfedea0SLionel Sambuc	jz	.L010schedule_mangle_last
282*ebfedea0SLionel Sambuc	call	_vpaes_schedule_mangle
283*ebfedea0SLionel Sambuc	call	_vpaes_schedule_192_smear
284*ebfedea0SLionel Sambuc	jmp	.L011loop_schedule_192
285*ebfedea0SLionel Sambuc.align	16
286*ebfedea0SLionel Sambuc.L006schedule_256:
287*ebfedea0SLionel Sambuc	movdqu	16(%esi),%xmm0
288*ebfedea0SLionel Sambuc	call	_vpaes_schedule_transform
289*ebfedea0SLionel Sambuc	movl	$7,%eax
290*ebfedea0SLionel Sambuc.L012loop_schedule_256:
291*ebfedea0SLionel Sambuc	call	_vpaes_schedule_mangle
292*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm6
293*ebfedea0SLionel Sambuc	call	_vpaes_schedule_round
294*ebfedea0SLionel Sambuc	decl	%eax
295*ebfedea0SLionel Sambuc	jz	.L010schedule_mangle_last
296*ebfedea0SLionel Sambuc	call	_vpaes_schedule_mangle
297*ebfedea0SLionel Sambuc	pshufd	$255,%xmm0,%xmm0
298*ebfedea0SLionel Sambuc	movdqa	%xmm7,20(%esp)
299*ebfedea0SLionel Sambuc	movdqa	%xmm6,%xmm7
300*ebfedea0SLionel Sambuc	call	.L_vpaes_schedule_low_round
301*ebfedea0SLionel Sambuc	movdqa	20(%esp),%xmm7
302*ebfedea0SLionel Sambuc	jmp	.L012loop_schedule_256
303*ebfedea0SLionel Sambuc.align	16
304*ebfedea0SLionel Sambuc.L010schedule_mangle_last:
305*ebfedea0SLionel Sambuc	leal	384(%ebp),%ebx
306*ebfedea0SLionel Sambuc	testl	%edi,%edi
307*ebfedea0SLionel Sambuc	jnz	.L013schedule_mangle_last_dec
308*ebfedea0SLionel Sambuc	movdqa	256(%ebp,%ecx,1),%xmm1
309*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
310*ebfedea0SLionel Sambuc	leal	352(%ebp),%ebx
311*ebfedea0SLionel Sambuc	addl	$32,%edx
312*ebfedea0SLionel Sambuc.L013schedule_mangle_last_dec:
313*ebfedea0SLionel Sambuc	addl	$-16,%edx
314*ebfedea0SLionel Sambuc	pxor	336(%ebp),%xmm0
315*ebfedea0SLionel Sambuc	call	_vpaes_schedule_transform
316*ebfedea0SLionel Sambuc	movdqu	%xmm0,(%edx)
317*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm0
318*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm1
319*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm2
320*ebfedea0SLionel Sambuc	pxor	%xmm3,%xmm3
321*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm4
322*ebfedea0SLionel Sambuc	pxor	%xmm5,%xmm5
323*ebfedea0SLionel Sambuc	pxor	%xmm6,%xmm6
324*ebfedea0SLionel Sambuc	pxor	%xmm7,%xmm7
325*ebfedea0SLionel Sambuc	ret
326*ebfedea0SLionel Sambuc.size	_vpaes_schedule_core,.-_vpaes_schedule_core
327*ebfedea0SLionel Sambuc.type	_vpaes_schedule_192_smear,@function
328*ebfedea0SLionel Sambuc.align	16
329*ebfedea0SLionel Sambuc_vpaes_schedule_192_smear:
330*ebfedea0SLionel Sambuc	pshufd	$128,%xmm6,%xmm0
331*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm6
332*ebfedea0SLionel Sambuc	pshufd	$254,%xmm7,%xmm0
333*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm6
334*ebfedea0SLionel Sambuc	movdqa	%xmm6,%xmm0
335*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm1
336*ebfedea0SLionel Sambuc	movhlps	%xmm1,%xmm6
337*ebfedea0SLionel Sambuc	ret
338*ebfedea0SLionel Sambuc.size	_vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
339*ebfedea0SLionel Sambuc.type	_vpaes_schedule_round,@function
340*ebfedea0SLionel Sambuc.align	16
341*ebfedea0SLionel Sambuc_vpaes_schedule_round:
342*ebfedea0SLionel Sambuc	movdqa	8(%esp),%xmm2
343*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm1
344*ebfedea0SLionel Sambuc.byte	102,15,58,15,202,15
345*ebfedea0SLionel Sambuc.byte	102,15,58,15,210,15
346*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm7
347*ebfedea0SLionel Sambuc	pshufd	$255,%xmm0,%xmm0
348*ebfedea0SLionel Sambuc.byte	102,15,58,15,192,1
349*ebfedea0SLionel Sambuc	movdqa	%xmm2,8(%esp)
350*ebfedea0SLionel Sambuc.L_vpaes_schedule_low_round:
351*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm1
352*ebfedea0SLionel Sambuc	pslldq	$4,%xmm7
353*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm7
354*ebfedea0SLionel Sambuc	movdqa	%xmm7,%xmm1
355*ebfedea0SLionel Sambuc	pslldq	$8,%xmm7
356*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm7
357*ebfedea0SLionel Sambuc	pxor	336(%ebp),%xmm7
358*ebfedea0SLionel Sambuc	movdqa	-16(%ebp),%xmm4
359*ebfedea0SLionel Sambuc	movdqa	-48(%ebp),%xmm5
360*ebfedea0SLionel Sambuc	movdqa	%xmm4,%xmm1
361*ebfedea0SLionel Sambuc	pandn	%xmm0,%xmm1
362*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
363*ebfedea0SLionel Sambuc	pand	%xmm4,%xmm0
364*ebfedea0SLionel Sambuc	movdqa	-32(%ebp),%xmm2
365*ebfedea0SLionel Sambuc.byte	102,15,56,0,208
366*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm0
367*ebfedea0SLionel Sambuc	movdqa	%xmm5,%xmm3
368*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
369*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm3
370*ebfedea0SLionel Sambuc	movdqa	%xmm5,%xmm4
371*ebfedea0SLionel Sambuc.byte	102,15,56,0,224
372*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm4
373*ebfedea0SLionel Sambuc	movdqa	%xmm5,%xmm2
374*ebfedea0SLionel Sambuc.byte	102,15,56,0,211
375*ebfedea0SLionel Sambuc	pxor	%xmm0,%xmm2
376*ebfedea0SLionel Sambuc	movdqa	%xmm5,%xmm3
377*ebfedea0SLionel Sambuc.byte	102,15,56,0,220
378*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm3
379*ebfedea0SLionel Sambuc	movdqa	32(%ebp),%xmm4
380*ebfedea0SLionel Sambuc.byte	102,15,56,0,226
381*ebfedea0SLionel Sambuc	movdqa	48(%ebp),%xmm0
382*ebfedea0SLionel Sambuc.byte	102,15,56,0,195
383*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm0
384*ebfedea0SLionel Sambuc	pxor	%xmm7,%xmm0
385*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm7
386*ebfedea0SLionel Sambuc	ret
387*ebfedea0SLionel Sambuc.size	_vpaes_schedule_round,.-_vpaes_schedule_round
388*ebfedea0SLionel Sambuc.type	_vpaes_schedule_transform,@function
389*ebfedea0SLionel Sambuc.align	16
390*ebfedea0SLionel Sambuc_vpaes_schedule_transform:
391*ebfedea0SLionel Sambuc	movdqa	-16(%ebp),%xmm2
392*ebfedea0SLionel Sambuc	movdqa	%xmm2,%xmm1
393*ebfedea0SLionel Sambuc	pandn	%xmm0,%xmm1
394*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
395*ebfedea0SLionel Sambuc	pand	%xmm2,%xmm0
396*ebfedea0SLionel Sambuc	movdqa	(%ebx),%xmm2
397*ebfedea0SLionel Sambuc.byte	102,15,56,0,208
398*ebfedea0SLionel Sambuc	movdqa	16(%ebx),%xmm0
399*ebfedea0SLionel Sambuc.byte	102,15,56,0,193
400*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm0
401*ebfedea0SLionel Sambuc	ret
402*ebfedea0SLionel Sambuc.size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
403*ebfedea0SLionel Sambuc.type	_vpaes_schedule_mangle,@function
404*ebfedea0SLionel Sambuc.align	16
405*ebfedea0SLionel Sambuc_vpaes_schedule_mangle:
406*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm4
407*ebfedea0SLionel Sambuc	movdqa	128(%ebp),%xmm5
408*ebfedea0SLionel Sambuc	testl	%edi,%edi
409*ebfedea0SLionel Sambuc	jnz	.L014schedule_mangle_dec
410*ebfedea0SLionel Sambuc	addl	$16,%edx
411*ebfedea0SLionel Sambuc	pxor	336(%ebp),%xmm4
412*ebfedea0SLionel Sambuc.byte	102,15,56,0,229
413*ebfedea0SLionel Sambuc	movdqa	%xmm4,%xmm3
414*ebfedea0SLionel Sambuc.byte	102,15,56,0,229
415*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm3
416*ebfedea0SLionel Sambuc.byte	102,15,56,0,229
417*ebfedea0SLionel Sambuc	pxor	%xmm4,%xmm3
418*ebfedea0SLionel Sambuc	jmp	.L015schedule_mangle_both
419*ebfedea0SLionel Sambuc.align	16
420*ebfedea0SLionel Sambuc.L014schedule_mangle_dec:
421*ebfedea0SLionel Sambuc	movdqa	-16(%ebp),%xmm2
422*ebfedea0SLionel Sambuc	leal	416(%ebp),%esi
423*ebfedea0SLionel Sambuc	movdqa	%xmm2,%xmm1
424*ebfedea0SLionel Sambuc	pandn	%xmm4,%xmm1
425*ebfedea0SLionel Sambuc	psrld	$4,%xmm1
426*ebfedea0SLionel Sambuc	pand	%xmm2,%xmm4
427*ebfedea0SLionel Sambuc	movdqa	(%esi),%xmm2
428*ebfedea0SLionel Sambuc.byte	102,15,56,0,212
429*ebfedea0SLionel Sambuc	movdqa	16(%esi),%xmm3
430*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
431*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm3
432*ebfedea0SLionel Sambuc.byte	102,15,56,0,221
433*ebfedea0SLionel Sambuc	movdqa	32(%esi),%xmm2
434*ebfedea0SLionel Sambuc.byte	102,15,56,0,212
435*ebfedea0SLionel Sambuc	pxor	%xmm3,%xmm2
436*ebfedea0SLionel Sambuc	movdqa	48(%esi),%xmm3
437*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
438*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm3
439*ebfedea0SLionel Sambuc.byte	102,15,56,0,221
440*ebfedea0SLionel Sambuc	movdqa	64(%esi),%xmm2
441*ebfedea0SLionel Sambuc.byte	102,15,56,0,212
442*ebfedea0SLionel Sambuc	pxor	%xmm3,%xmm2
443*ebfedea0SLionel Sambuc	movdqa	80(%esi),%xmm3
444*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
445*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm3
446*ebfedea0SLionel Sambuc.byte	102,15,56,0,221
447*ebfedea0SLionel Sambuc	movdqa	96(%esi),%xmm2
448*ebfedea0SLionel Sambuc.byte	102,15,56,0,212
449*ebfedea0SLionel Sambuc	pxor	%xmm3,%xmm2
450*ebfedea0SLionel Sambuc	movdqa	112(%esi),%xmm3
451*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
452*ebfedea0SLionel Sambuc	pxor	%xmm2,%xmm3
453*ebfedea0SLionel Sambuc	addl	$-16,%edx
454*ebfedea0SLionel Sambuc.L015schedule_mangle_both:
455*ebfedea0SLionel Sambuc	movdqa	256(%ebp,%ecx,1),%xmm1
456*ebfedea0SLionel Sambuc.byte	102,15,56,0,217
457*ebfedea0SLionel Sambuc	addl	$-16,%ecx
458*ebfedea0SLionel Sambuc	andl	$48,%ecx
459*ebfedea0SLionel Sambuc	movdqu	%xmm3,(%edx)
460*ebfedea0SLionel Sambuc	ret
461*ebfedea0SLionel Sambuc.size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
462*ebfedea0SLionel Sambuc.globl	vpaes_set_encrypt_key
463*ebfedea0SLionel Sambuc.type	vpaes_set_encrypt_key,@function
464*ebfedea0SLionel Sambuc.align	16
465*ebfedea0SLionel Sambucvpaes_set_encrypt_key:
466*ebfedea0SLionel Sambuc.L_vpaes_set_encrypt_key_begin:
467*ebfedea0SLionel Sambuc	pushl	%ebp
468*ebfedea0SLionel Sambuc	pushl	%ebx
469*ebfedea0SLionel Sambuc	pushl	%esi
470*ebfedea0SLionel Sambuc	pushl	%edi
471*ebfedea0SLionel Sambuc	movl	20(%esp),%esi
472*ebfedea0SLionel Sambuc	leal	-56(%esp),%ebx
473*ebfedea0SLionel Sambuc	movl	24(%esp),%eax
474*ebfedea0SLionel Sambuc	andl	$-16,%ebx
475*ebfedea0SLionel Sambuc	movl	28(%esp),%edx
476*ebfedea0SLionel Sambuc	xchgl	%esp,%ebx
477*ebfedea0SLionel Sambuc	movl	%ebx,48(%esp)
478*ebfedea0SLionel Sambuc	movl	%eax,%ebx
479*ebfedea0SLionel Sambuc	shrl	$5,%ebx
480*ebfedea0SLionel Sambuc	addl	$5,%ebx
481*ebfedea0SLionel Sambuc	movl	%ebx,240(%edx)
482*ebfedea0SLionel Sambuc	movl	$48,%ecx
483*ebfedea0SLionel Sambuc	movl	$0,%edi
484*ebfedea0SLionel Sambuc	leal	.L_vpaes_consts+0x30-.L016pic_point,%ebp
485*ebfedea0SLionel Sambuc	call	_vpaes_schedule_core
486*ebfedea0SLionel Sambuc.L016pic_point:
487*ebfedea0SLionel Sambuc	movl	48(%esp),%esp
488*ebfedea0SLionel Sambuc	xorl	%eax,%eax
489*ebfedea0SLionel Sambuc	popl	%edi
490*ebfedea0SLionel Sambuc	popl	%esi
491*ebfedea0SLionel Sambuc	popl	%ebx
492*ebfedea0SLionel Sambuc	popl	%ebp
493*ebfedea0SLionel Sambuc	ret
494*ebfedea0SLionel Sambuc.size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
495*ebfedea0SLionel Sambuc.globl	vpaes_set_decrypt_key
496*ebfedea0SLionel Sambuc.type	vpaes_set_decrypt_key,@function
497*ebfedea0SLionel Sambuc.align	16
498*ebfedea0SLionel Sambucvpaes_set_decrypt_key:
499*ebfedea0SLionel Sambuc.L_vpaes_set_decrypt_key_begin:
500*ebfedea0SLionel Sambuc	pushl	%ebp
501*ebfedea0SLionel Sambuc	pushl	%ebx
502*ebfedea0SLionel Sambuc	pushl	%esi
503*ebfedea0SLionel Sambuc	pushl	%edi
504*ebfedea0SLionel Sambuc	movl	20(%esp),%esi
505*ebfedea0SLionel Sambuc	leal	-56(%esp),%ebx
506*ebfedea0SLionel Sambuc	movl	24(%esp),%eax
507*ebfedea0SLionel Sambuc	andl	$-16,%ebx
508*ebfedea0SLionel Sambuc	movl	28(%esp),%edx
509*ebfedea0SLionel Sambuc	xchgl	%esp,%ebx
510*ebfedea0SLionel Sambuc	movl	%ebx,48(%esp)
511*ebfedea0SLionel Sambuc	movl	%eax,%ebx
512*ebfedea0SLionel Sambuc	shrl	$5,%ebx
513*ebfedea0SLionel Sambuc	addl	$5,%ebx
514*ebfedea0SLionel Sambuc	movl	%ebx,240(%edx)
515*ebfedea0SLionel Sambuc	shll	$4,%ebx
516*ebfedea0SLionel Sambuc	leal	16(%edx,%ebx,1),%edx
517*ebfedea0SLionel Sambuc	movl	$1,%edi
518*ebfedea0SLionel Sambuc	movl	%eax,%ecx
519*ebfedea0SLionel Sambuc	shrl	$1,%ecx
520*ebfedea0SLionel Sambuc	andl	$32,%ecx
521*ebfedea0SLionel Sambuc	xorl	$32,%ecx
522*ebfedea0SLionel Sambuc	leal	.L_vpaes_consts+0x30-.L017pic_point,%ebp
523*ebfedea0SLionel Sambuc	call	_vpaes_schedule_core
524*ebfedea0SLionel Sambuc.L017pic_point:
525*ebfedea0SLionel Sambuc	movl	48(%esp),%esp
526*ebfedea0SLionel Sambuc	xorl	%eax,%eax
527*ebfedea0SLionel Sambuc	popl	%edi
528*ebfedea0SLionel Sambuc	popl	%esi
529*ebfedea0SLionel Sambuc	popl	%ebx
530*ebfedea0SLionel Sambuc	popl	%ebp
531*ebfedea0SLionel Sambuc	ret
532*ebfedea0SLionel Sambuc.size	vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
533*ebfedea0SLionel Sambuc.globl	vpaes_encrypt
534*ebfedea0SLionel Sambuc.type	vpaes_encrypt,@function
535*ebfedea0SLionel Sambuc.align	16
536*ebfedea0SLionel Sambucvpaes_encrypt:
537*ebfedea0SLionel Sambuc.L_vpaes_encrypt_begin:
538*ebfedea0SLionel Sambuc	pushl	%ebp
539*ebfedea0SLionel Sambuc	pushl	%ebx
540*ebfedea0SLionel Sambuc	pushl	%esi
541*ebfedea0SLionel Sambuc	pushl	%edi
542*ebfedea0SLionel Sambuc	leal	.L_vpaes_consts+0x30-.L018pic_point,%ebp
543*ebfedea0SLionel Sambuc	call	_vpaes_preheat
544*ebfedea0SLionel Sambuc.L018pic_point:
545*ebfedea0SLionel Sambuc	movl	20(%esp),%esi
546*ebfedea0SLionel Sambuc	leal	-56(%esp),%ebx
547*ebfedea0SLionel Sambuc	movl	24(%esp),%edi
548*ebfedea0SLionel Sambuc	andl	$-16,%ebx
549*ebfedea0SLionel Sambuc	movl	28(%esp),%edx
550*ebfedea0SLionel Sambuc	xchgl	%esp,%ebx
551*ebfedea0SLionel Sambuc	movl	%ebx,48(%esp)
552*ebfedea0SLionel Sambuc	movdqu	(%esi),%xmm0
553*ebfedea0SLionel Sambuc	call	_vpaes_encrypt_core
554*ebfedea0SLionel Sambuc	movdqu	%xmm0,(%edi)
555*ebfedea0SLionel Sambuc	movl	48(%esp),%esp
556*ebfedea0SLionel Sambuc	popl	%edi
557*ebfedea0SLionel Sambuc	popl	%esi
558*ebfedea0SLionel Sambuc	popl	%ebx
559*ebfedea0SLionel Sambuc	popl	%ebp
560*ebfedea0SLionel Sambuc	ret
561*ebfedea0SLionel Sambuc.size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
562*ebfedea0SLionel Sambuc.globl	vpaes_decrypt
563*ebfedea0SLionel Sambuc.type	vpaes_decrypt,@function
564*ebfedea0SLionel Sambuc.align	16
565*ebfedea0SLionel Sambucvpaes_decrypt:
566*ebfedea0SLionel Sambuc.L_vpaes_decrypt_begin:
567*ebfedea0SLionel Sambuc	pushl	%ebp
568*ebfedea0SLionel Sambuc	pushl	%ebx
569*ebfedea0SLionel Sambuc	pushl	%esi
570*ebfedea0SLionel Sambuc	pushl	%edi
571*ebfedea0SLionel Sambuc	leal	.L_vpaes_consts+0x30-.L019pic_point,%ebp
572*ebfedea0SLionel Sambuc	call	_vpaes_preheat
573*ebfedea0SLionel Sambuc.L019pic_point:
574*ebfedea0SLionel Sambuc	movl	20(%esp),%esi
575*ebfedea0SLionel Sambuc	leal	-56(%esp),%ebx
576*ebfedea0SLionel Sambuc	movl	24(%esp),%edi
577*ebfedea0SLionel Sambuc	andl	$-16,%ebx
578*ebfedea0SLionel Sambuc	movl	28(%esp),%edx
579*ebfedea0SLionel Sambuc	xchgl	%esp,%ebx
580*ebfedea0SLionel Sambuc	movl	%ebx,48(%esp)
581*ebfedea0SLionel Sambuc	movdqu	(%esi),%xmm0
582*ebfedea0SLionel Sambuc	call	_vpaes_decrypt_core
583*ebfedea0SLionel Sambuc	movdqu	%xmm0,(%edi)
584*ebfedea0SLionel Sambuc	movl	48(%esp),%esp
585*ebfedea0SLionel Sambuc	popl	%edi
586*ebfedea0SLionel Sambuc	popl	%esi
587*ebfedea0SLionel Sambuc	popl	%ebx
588*ebfedea0SLionel Sambuc	popl	%ebp
589*ebfedea0SLionel Sambuc	ret
590*ebfedea0SLionel Sambuc.size	vpaes_decrypt,.-.L_vpaes_decrypt_begin
591*ebfedea0SLionel Sambuc.globl	vpaes_cbc_encrypt
592*ebfedea0SLionel Sambuc.type	vpaes_cbc_encrypt,@function
593*ebfedea0SLionel Sambuc.align	16
594*ebfedea0SLionel Sambucvpaes_cbc_encrypt:
595*ebfedea0SLionel Sambuc.L_vpaes_cbc_encrypt_begin:
596*ebfedea0SLionel Sambuc	pushl	%ebp
597*ebfedea0SLionel Sambuc	pushl	%ebx
598*ebfedea0SLionel Sambuc	pushl	%esi
599*ebfedea0SLionel Sambuc	pushl	%edi
600*ebfedea0SLionel Sambuc	movl	20(%esp),%esi
601*ebfedea0SLionel Sambuc	movl	24(%esp),%edi
602*ebfedea0SLionel Sambuc	movl	28(%esp),%eax
603*ebfedea0SLionel Sambuc	movl	32(%esp),%edx
604*ebfedea0SLionel Sambuc	subl	$16,%eax
605*ebfedea0SLionel Sambuc	jc	.L020cbc_abort
606*ebfedea0SLionel Sambuc	leal	-56(%esp),%ebx
607*ebfedea0SLionel Sambuc	movl	36(%esp),%ebp
608*ebfedea0SLionel Sambuc	andl	$-16,%ebx
609*ebfedea0SLionel Sambuc	movl	40(%esp),%ecx
610*ebfedea0SLionel Sambuc	xchgl	%esp,%ebx
611*ebfedea0SLionel Sambuc	movdqu	(%ebp),%xmm1
612*ebfedea0SLionel Sambuc	subl	%esi,%edi
613*ebfedea0SLionel Sambuc	movl	%ebx,48(%esp)
614*ebfedea0SLionel Sambuc	movl	%edi,(%esp)
615*ebfedea0SLionel Sambuc	movl	%edx,4(%esp)
616*ebfedea0SLionel Sambuc	movl	%ebp,8(%esp)
617*ebfedea0SLionel Sambuc	movl	%eax,%edi
618*ebfedea0SLionel Sambuc	leal	.L_vpaes_consts+0x30-.L021pic_point,%ebp
619*ebfedea0SLionel Sambuc	call	_vpaes_preheat
620*ebfedea0SLionel Sambuc.L021pic_point:
621*ebfedea0SLionel Sambuc	cmpl	$0,%ecx
622*ebfedea0SLionel Sambuc	je	.L022cbc_dec_loop
623*ebfedea0SLionel Sambuc	jmp	.L023cbc_enc_loop
624*ebfedea0SLionel Sambuc.align	16
625*ebfedea0SLionel Sambuc.L023cbc_enc_loop:
626*ebfedea0SLionel Sambuc	movdqu	(%esi),%xmm0
627*ebfedea0SLionel Sambuc	pxor	%xmm1,%xmm0
628*ebfedea0SLionel Sambuc	call	_vpaes_encrypt_core
629*ebfedea0SLionel Sambuc	movl	(%esp),%ebx
630*ebfedea0SLionel Sambuc	movl	4(%esp),%edx
631*ebfedea0SLionel Sambuc	movdqa	%xmm0,%xmm1
632*ebfedea0SLionel Sambuc	movdqu	%xmm0,(%ebx,%esi,1)
633*ebfedea0SLionel Sambuc	leal	16(%esi),%esi
634*ebfedea0SLionel Sambuc	subl	$16,%edi
635*ebfedea0SLionel Sambuc	jnc	.L023cbc_enc_loop
636*ebfedea0SLionel Sambuc	jmp	.L024cbc_done
637*ebfedea0SLionel Sambuc.align	16
638*ebfedea0SLionel Sambuc.L022cbc_dec_loop:
639*ebfedea0SLionel Sambuc	movdqu	(%esi),%xmm0
640*ebfedea0SLionel Sambuc	movdqa	%xmm1,16(%esp)
641*ebfedea0SLionel Sambuc	movdqa	%xmm0,32(%esp)
642*ebfedea0SLionel Sambuc	call	_vpaes_decrypt_core
643*ebfedea0SLionel Sambuc	movl	(%esp),%ebx
644*ebfedea0SLionel Sambuc	movl	4(%esp),%edx
645*ebfedea0SLionel Sambuc	pxor	16(%esp),%xmm0
646*ebfedea0SLionel Sambuc	movdqa	32(%esp),%xmm1
647*ebfedea0SLionel Sambuc	movdqu	%xmm0,(%ebx,%esi,1)
648*ebfedea0SLionel Sambuc	leal	16(%esi),%esi
649*ebfedea0SLionel Sambuc	subl	$16,%edi
650*ebfedea0SLionel Sambuc	jnc	.L022cbc_dec_loop
651*ebfedea0SLionel Sambuc.L024cbc_done:
652*ebfedea0SLionel Sambuc	movl	8(%esp),%ebx
653*ebfedea0SLionel Sambuc	movl	48(%esp),%esp
654*ebfedea0SLionel Sambuc	movdqu	%xmm1,(%ebx)
655*ebfedea0SLionel Sambuc.L020cbc_abort:
656*ebfedea0SLionel Sambuc	popl	%edi
657*ebfedea0SLionel Sambuc	popl	%esi
658*ebfedea0SLionel Sambuc	popl	%ebx
659*ebfedea0SLionel Sambuc	popl	%ebp
660*ebfedea0SLionel Sambuc	ret
661*ebfedea0SLionel Sambuc.size	vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
662