1299481Sjkim# $FreeBSD: releng/11.0/secure/lib/libcrypto/i386/vpaes-x86.S 299481 2016-05-11 20:11:21Z jkim $
2299481Sjkim# Do not modify. This file is auto-generated from vpaes-x86.pl.
3299389Sjkim#ifdef PIC
4299389Sjkim.file	"vpaes-x86.S"
5238405Sjkim.text
6238405Sjkim.align	64
7238405Sjkim.L_vpaes_consts:
8238405Sjkim.long	218628480,235210255,168496130,67568393
9238405Sjkim.long	252381056,17041926,33884169,51187212
10238405Sjkim.long	252645135,252645135,252645135,252645135
11238405Sjkim.long	1512730624,3266504856,1377990664,3401244816
12238405Sjkim.long	830229760,1275146365,2969422977,3447763452
13238405Sjkim.long	3411033600,2979783055,338359620,2782886510
14238405Sjkim.long	4209124096,907596821,221174255,1006095553
15238405Sjkim.long	191964160,3799684038,3164090317,1589111125
16238405Sjkim.long	182528256,1777043520,2877432650,3265356744
17238405Sjkim.long	1874708224,3503451415,3305285752,363511674
18238405Sjkim.long	1606117888,3487855781,1093350906,2384367825
19238405Sjkim.long	197121,67569157,134941193,202313229
20238405Sjkim.long	67569157,134941193,202313229,197121
21238405Sjkim.long	134941193,202313229,197121,67569157
22238405Sjkim.long	202313229,197121,67569157,134941193
23238405Sjkim.long	33619971,100992007,168364043,235736079
24238405Sjkim.long	235736079,33619971,100992007,168364043
25238405Sjkim.long	168364043,235736079,33619971,100992007
26238405Sjkim.long	100992007,168364043,235736079,33619971
27238405Sjkim.long	50462976,117835012,185207048,252579084
28238405Sjkim.long	252314880,51251460,117574920,184942860
29238405Sjkim.long	184682752,252054788,50987272,118359308
30238405Sjkim.long	118099200,185467140,251790600,50727180
31238405Sjkim.long	2946363062,528716217,1300004225,1881839624
32238405Sjkim.long	1532713819,1532713819,1532713819,1532713819
33238405Sjkim.long	3602276352,4288629033,3737020424,4153884961
34238405Sjkim.long	1354558464,32357713,2958822624,3775749553
35238405Sjkim.long	1201988352,132424512,1572796698,503232858
36238405Sjkim.long	2213177600,1597421020,4103937655,675398315
37238405Sjkim.long	2749646592,4273543773,1511898873,121693092
38238405Sjkim.long	3040248576,1103263732,2871565598,1608280554
39238405Sjkim.long	2236667136,2588920351,482954393,64377734
40238405Sjkim.long	3069987328,291237287,2117370568,3650299247
41238405Sjkim.long	533321216,3573750986,2572112006,1401264716
42238405Sjkim.long	1339849704,2721158661,548607111,3445553514
43238405Sjkim.long	2128193280,3054596040,2183486460,1257083700
44238405Sjkim.long	655635200,1165381986,3923443150,2344132524
45238405Sjkim.long	190078720,256924420,290342170,357187870
46238405Sjkim.long	1610966272,2263057382,4103205268,309794674
47238405Sjkim.long	2592527872,2233205587,1335446729,3402964816
48238405Sjkim.long	3973531904,3225098121,3002836325,1918774430
49238405Sjkim.long	3870401024,2102906079,2284471353,4117666579
50238405Sjkim.long	617007872,1021508343,366931923,691083277
51238405Sjkim.long	2528395776,3491914898,2968704004,1613121270
52238405Sjkim.long	3445188352,3247741094,844474987,4093578302
53238405Sjkim.long	651481088,1190302358,1689581232,574775300
54238405Sjkim.long	4289380608,206939853,2555985458,2489840491
55238405Sjkim.long	2130264064,327674451,3566485037,3349835193
56238405Sjkim.long	2470714624,316102159,3636825756,3393945945
57238405Sjkim.byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
58238405Sjkim.byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
59238405Sjkim.byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
60238405Sjkim.byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
61238405Sjkim.byte	118,101,114,115,105,116,121,41,0
62238405Sjkim.align	64
63238405Sjkim.type	_vpaes_preheat,@function
64238405Sjkim.align	16
65238405Sjkim_vpaes_preheat:
66238405Sjkim	addl	(%esp),%ebp
67238405Sjkim	movdqa	-48(%ebp),%xmm7
68238405Sjkim	movdqa	-16(%ebp),%xmm6
69238405Sjkim	ret
70238405Sjkim.size	_vpaes_preheat,.-_vpaes_preheat
71238405Sjkim.type	_vpaes_encrypt_core,@function
72238405Sjkim.align	16
73238405Sjkim_vpaes_encrypt_core:
74238405Sjkim	movl	$16,%ecx
75238405Sjkim	movl	240(%edx),%eax
76238405Sjkim	movdqa	%xmm6,%xmm1
77238405Sjkim	movdqa	(%ebp),%xmm2
78238405Sjkim	pandn	%xmm0,%xmm1
79290207Sjkim	pand	%xmm6,%xmm0
80238405Sjkim	movdqu	(%edx),%xmm5
81238405Sjkim.byte	102,15,56,0,208
82238405Sjkim	movdqa	16(%ebp),%xmm0
83238405Sjkim	pxor	%xmm5,%xmm2
84290207Sjkim	psrld	$4,%xmm1
85238405Sjkim	addl	$16,%edx
86290207Sjkim.byte	102,15,56,0,193
87238405Sjkim	leal	192(%ebp),%ebx
88290207Sjkim	pxor	%xmm2,%xmm0
89238405Sjkim	jmp	.L000enc_entry
90238405Sjkim.align	16
91238405Sjkim.L001enc_loop:
92238405Sjkim	movdqa	32(%ebp),%xmm4
93290207Sjkim	movdqa	48(%ebp),%xmm0
94238405Sjkim.byte	102,15,56,0,226
95290207Sjkim.byte	102,15,56,0,195
96238405Sjkim	pxor	%xmm5,%xmm4
97290207Sjkim	movdqa	64(%ebp),%xmm5
98238405Sjkim	pxor	%xmm4,%xmm0
99290207Sjkim	movdqa	-64(%ebx,%ecx,1),%xmm1
100238405Sjkim.byte	102,15,56,0,234
101238405Sjkim	movdqa	80(%ebp),%xmm2
102290207Sjkim	movdqa	(%ebx,%ecx,1),%xmm4
103238405Sjkim.byte	102,15,56,0,211
104290207Sjkim	movdqa	%xmm0,%xmm3
105238405Sjkim	pxor	%xmm5,%xmm2
106238405Sjkim.byte	102,15,56,0,193
107238405Sjkim	addl	$16,%edx
108238405Sjkim	pxor	%xmm2,%xmm0
109238405Sjkim.byte	102,15,56,0,220
110238405Sjkim	addl	$16,%ecx
111238405Sjkim	pxor	%xmm0,%xmm3
112238405Sjkim.byte	102,15,56,0,193
113238405Sjkim	andl	$48,%ecx
114290207Sjkim	subl	$1,%eax
115238405Sjkim	pxor	%xmm3,%xmm0
116238405Sjkim.L000enc_entry:
117238405Sjkim	movdqa	%xmm6,%xmm1
118290207Sjkim	movdqa	-32(%ebp),%xmm5
119238405Sjkim	pandn	%xmm0,%xmm1
120238405Sjkim	psrld	$4,%xmm1
121238405Sjkim	pand	%xmm6,%xmm0
122238405Sjkim.byte	102,15,56,0,232
123290207Sjkim	movdqa	%xmm7,%xmm3
124238405Sjkim	pxor	%xmm1,%xmm0
125238405Sjkim.byte	102,15,56,0,217
126290207Sjkim	movdqa	%xmm7,%xmm4
127238405Sjkim	pxor	%xmm5,%xmm3
128238405Sjkim.byte	102,15,56,0,224
129290207Sjkim	movdqa	%xmm7,%xmm2
130238405Sjkim	pxor	%xmm5,%xmm4
131238405Sjkim.byte	102,15,56,0,211
132290207Sjkim	movdqa	%xmm7,%xmm3
133238405Sjkim	pxor	%xmm0,%xmm2
134290207Sjkim.byte	102,15,56,0,220
135238405Sjkim	movdqu	(%edx),%xmm5
136238405Sjkim	pxor	%xmm1,%xmm3
137238405Sjkim	jnz	.L001enc_loop
138238405Sjkim	movdqa	96(%ebp),%xmm4
139238405Sjkim	movdqa	112(%ebp),%xmm0
140238405Sjkim.byte	102,15,56,0,226
141238405Sjkim	pxor	%xmm5,%xmm4
142238405Sjkim.byte	102,15,56,0,195
143238405Sjkim	movdqa	64(%ebx,%ecx,1),%xmm1
144238405Sjkim	pxor	%xmm4,%xmm0
145238405Sjkim.byte	102,15,56,0,193
146238405Sjkim	ret
147238405Sjkim.size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
148238405Sjkim.type	_vpaes_decrypt_core,@function
149238405Sjkim.align	16
150238405Sjkim_vpaes_decrypt_core:
151290207Sjkim	leal	608(%ebp),%ebx
152238405Sjkim	movl	240(%edx),%eax
153238405Sjkim	movdqa	%xmm6,%xmm1
154238405Sjkim	movdqa	-64(%ebx),%xmm2
155238405Sjkim	pandn	%xmm0,%xmm1
156238405Sjkim	movl	%eax,%ecx
157238405Sjkim	psrld	$4,%xmm1
158238405Sjkim	movdqu	(%edx),%xmm5
159238405Sjkim	shll	$4,%ecx
160238405Sjkim	pand	%xmm6,%xmm0
161238405Sjkim.byte	102,15,56,0,208
162238405Sjkim	movdqa	-48(%ebx),%xmm0
163238405Sjkim	xorl	$48,%ecx
164238405Sjkim.byte	102,15,56,0,193
165238405Sjkim	andl	$48,%ecx
166238405Sjkim	pxor	%xmm5,%xmm2
167238405Sjkim	movdqa	176(%ebp),%xmm5
168238405Sjkim	pxor	%xmm2,%xmm0
169238405Sjkim	addl	$16,%edx
170238405Sjkim	leal	-352(%ebx,%ecx,1),%ecx
171238405Sjkim	jmp	.L002dec_entry
172238405Sjkim.align	16
173238405Sjkim.L003dec_loop:
174238405Sjkim	movdqa	-32(%ebx),%xmm4
175290207Sjkim	movdqa	-16(%ebx),%xmm1
176238405Sjkim.byte	102,15,56,0,226
177290207Sjkim.byte	102,15,56,0,203
178238405Sjkim	pxor	%xmm4,%xmm0
179238405Sjkim	movdqa	(%ebx),%xmm4
180290207Sjkim	pxor	%xmm1,%xmm0
181290207Sjkim	movdqa	16(%ebx),%xmm1
182238405Sjkim.byte	102,15,56,0,226
183290207Sjkim.byte	102,15,56,0,197
184290207Sjkim.byte	102,15,56,0,203
185238405Sjkim	pxor	%xmm4,%xmm0
186238405Sjkim	movdqa	32(%ebx),%xmm4
187290207Sjkim	pxor	%xmm1,%xmm0
188290207Sjkim	movdqa	48(%ebx),%xmm1
189238405Sjkim.byte	102,15,56,0,226
190290207Sjkim.byte	102,15,56,0,197
191290207Sjkim.byte	102,15,56,0,203
192238405Sjkim	pxor	%xmm4,%xmm0
193238405Sjkim	movdqa	64(%ebx),%xmm4
194290207Sjkim	pxor	%xmm1,%xmm0
195290207Sjkim	movdqa	80(%ebx),%xmm1
196238405Sjkim.byte	102,15,56,0,226
197290207Sjkim.byte	102,15,56,0,197
198290207Sjkim.byte	102,15,56,0,203
199238405Sjkim	pxor	%xmm4,%xmm0
200290207Sjkim	addl	$16,%edx
201238405Sjkim.byte	102,15,58,15,237,12
202290207Sjkim	pxor	%xmm1,%xmm0
203290207Sjkim	subl	$1,%eax
204238405Sjkim.L002dec_entry:
205238405Sjkim	movdqa	%xmm6,%xmm1
206290207Sjkim	movdqa	-32(%ebp),%xmm2
207238405Sjkim	pandn	%xmm0,%xmm1
208290207Sjkim	pand	%xmm6,%xmm0
209238405Sjkim	psrld	$4,%xmm1
210238405Sjkim.byte	102,15,56,0,208
211290207Sjkim	movdqa	%xmm7,%xmm3
212238405Sjkim	pxor	%xmm1,%xmm0
213238405Sjkim.byte	102,15,56,0,217
214290207Sjkim	movdqa	%xmm7,%xmm4
215238405Sjkim	pxor	%xmm2,%xmm3
216238405Sjkim.byte	102,15,56,0,224
217238405Sjkim	pxor	%xmm2,%xmm4
218238405Sjkim	movdqa	%xmm7,%xmm2
219238405Sjkim.byte	102,15,56,0,211
220290207Sjkim	movdqa	%xmm7,%xmm3
221238405Sjkim	pxor	%xmm0,%xmm2
222238405Sjkim.byte	102,15,56,0,220
223290207Sjkim	movdqu	(%edx),%xmm0
224238405Sjkim	pxor	%xmm1,%xmm3
225238405Sjkim	jnz	.L003dec_loop
226238405Sjkim	movdqa	96(%ebx),%xmm4
227238405Sjkim.byte	102,15,56,0,226
228238405Sjkim	pxor	%xmm0,%xmm4
229238405Sjkim	movdqa	112(%ebx),%xmm0
230238405Sjkim	movdqa	(%ecx),%xmm2
231238405Sjkim.byte	102,15,56,0,195
232238405Sjkim	pxor	%xmm4,%xmm0
233238405Sjkim.byte	102,15,56,0,194
234238405Sjkim	ret
235238405Sjkim.size	_vpaes_decrypt_core,.-_vpaes_decrypt_core
236238405Sjkim.type	_vpaes_schedule_core,@function
237238405Sjkim.align	16
238238405Sjkim_vpaes_schedule_core:
239238405Sjkim	addl	(%esp),%ebp
240238405Sjkim	movdqu	(%esi),%xmm0
241238405Sjkim	movdqa	320(%ebp),%xmm2
242238405Sjkim	movdqa	%xmm0,%xmm3
243238405Sjkim	leal	(%ebp),%ebx
244238405Sjkim	movdqa	%xmm2,4(%esp)
245238405Sjkim	call	_vpaes_schedule_transform
246238405Sjkim	movdqa	%xmm0,%xmm7
247238405Sjkim	testl	%edi,%edi
248238405Sjkim	jnz	.L004schedule_am_decrypting
249238405Sjkim	movdqu	%xmm0,(%edx)
250238405Sjkim	jmp	.L005schedule_go
251238405Sjkim.L004schedule_am_decrypting:
252238405Sjkim	movdqa	256(%ebp,%ecx,1),%xmm1
253238405Sjkim.byte	102,15,56,0,217
254238405Sjkim	movdqu	%xmm3,(%edx)
255238405Sjkim	xorl	$48,%ecx
256238405Sjkim.L005schedule_go:
257238405Sjkim	cmpl	$192,%eax
258238405Sjkim	ja	.L006schedule_256
259238405Sjkim	je	.L007schedule_192
260238405Sjkim.L008schedule_128:
261238405Sjkim	movl	$10,%eax
262238405Sjkim.L009loop_schedule_128:
263238405Sjkim	call	_vpaes_schedule_round
264238405Sjkim	decl	%eax
265238405Sjkim	jz	.L010schedule_mangle_last
266238405Sjkim	call	_vpaes_schedule_mangle
267238405Sjkim	jmp	.L009loop_schedule_128
268238405Sjkim.align	16
269238405Sjkim.L007schedule_192:
270238405Sjkim	movdqu	8(%esi),%xmm0
271238405Sjkim	call	_vpaes_schedule_transform
272238405Sjkim	movdqa	%xmm0,%xmm6
273238405Sjkim	pxor	%xmm4,%xmm4
274238405Sjkim	movhlps	%xmm4,%xmm6
275238405Sjkim	movl	$4,%eax
276238405Sjkim.L011loop_schedule_192:
277238405Sjkim	call	_vpaes_schedule_round
278238405Sjkim.byte	102,15,58,15,198,8
279238405Sjkim	call	_vpaes_schedule_mangle
280238405Sjkim	call	_vpaes_schedule_192_smear
281238405Sjkim	call	_vpaes_schedule_mangle
282238405Sjkim	call	_vpaes_schedule_round
283238405Sjkim	decl	%eax
284238405Sjkim	jz	.L010schedule_mangle_last
285238405Sjkim	call	_vpaes_schedule_mangle
286238405Sjkim	call	_vpaes_schedule_192_smear
287238405Sjkim	jmp	.L011loop_schedule_192
288238405Sjkim.align	16
289238405Sjkim.L006schedule_256:
290238405Sjkim	movdqu	16(%esi),%xmm0
291238405Sjkim	call	_vpaes_schedule_transform
292238405Sjkim	movl	$7,%eax
293238405Sjkim.L012loop_schedule_256:
294238405Sjkim	call	_vpaes_schedule_mangle
295238405Sjkim	movdqa	%xmm0,%xmm6
296238405Sjkim	call	_vpaes_schedule_round
297238405Sjkim	decl	%eax
298238405Sjkim	jz	.L010schedule_mangle_last
299238405Sjkim	call	_vpaes_schedule_mangle
300238405Sjkim	pshufd	$255,%xmm0,%xmm0
301238405Sjkim	movdqa	%xmm7,20(%esp)
302238405Sjkim	movdqa	%xmm6,%xmm7
303238405Sjkim	call	.L_vpaes_schedule_low_round
304238405Sjkim	movdqa	20(%esp),%xmm7
305238405Sjkim	jmp	.L012loop_schedule_256
306238405Sjkim.align	16
307238405Sjkim.L010schedule_mangle_last:
308238405Sjkim	leal	384(%ebp),%ebx
309238405Sjkim	testl	%edi,%edi
310238405Sjkim	jnz	.L013schedule_mangle_last_dec
311238405Sjkim	movdqa	256(%ebp,%ecx,1),%xmm1
312238405Sjkim.byte	102,15,56,0,193
313238405Sjkim	leal	352(%ebp),%ebx
314238405Sjkim	addl	$32,%edx
315238405Sjkim.L013schedule_mangle_last_dec:
316238405Sjkim	addl	$-16,%edx
317238405Sjkim	pxor	336(%ebp),%xmm0
318238405Sjkim	call	_vpaes_schedule_transform
319238405Sjkim	movdqu	%xmm0,(%edx)
320238405Sjkim	pxor	%xmm0,%xmm0
321238405Sjkim	pxor	%xmm1,%xmm1
322238405Sjkim	pxor	%xmm2,%xmm2
323238405Sjkim	pxor	%xmm3,%xmm3
324238405Sjkim	pxor	%xmm4,%xmm4
325238405Sjkim	pxor	%xmm5,%xmm5
326238405Sjkim	pxor	%xmm6,%xmm6
327238405Sjkim	pxor	%xmm7,%xmm7
328238405Sjkim	ret
329238405Sjkim.size	_vpaes_schedule_core,.-_vpaes_schedule_core
330238405Sjkim.type	_vpaes_schedule_192_smear,@function
331238405Sjkim.align	16
332238405Sjkim_vpaes_schedule_192_smear:
333290207Sjkim	pshufd	$128,%xmm6,%xmm1
334238405Sjkim	pshufd	$254,%xmm7,%xmm0
335290207Sjkim	pxor	%xmm1,%xmm6
336290207Sjkim	pxor	%xmm1,%xmm1
337238405Sjkim	pxor	%xmm0,%xmm6
338238405Sjkim	movdqa	%xmm6,%xmm0
339238405Sjkim	movhlps	%xmm1,%xmm6
340238405Sjkim	ret
341238405Sjkim.size	_vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
342238405Sjkim.type	_vpaes_schedule_round,@function
343238405Sjkim.align	16
344238405Sjkim_vpaes_schedule_round:
345238405Sjkim	movdqa	8(%esp),%xmm2
346238405Sjkim	pxor	%xmm1,%xmm1
347238405Sjkim.byte	102,15,58,15,202,15
348238405Sjkim.byte	102,15,58,15,210,15
349238405Sjkim	pxor	%xmm1,%xmm7
350238405Sjkim	pshufd	$255,%xmm0,%xmm0
351238405Sjkim.byte	102,15,58,15,192,1
352238405Sjkim	movdqa	%xmm2,8(%esp)
353238405Sjkim.L_vpaes_schedule_low_round:
354238405Sjkim	movdqa	%xmm7,%xmm1
355238405Sjkim	pslldq	$4,%xmm7
356238405Sjkim	pxor	%xmm1,%xmm7
357238405Sjkim	movdqa	%xmm7,%xmm1
358238405Sjkim	pslldq	$8,%xmm7
359238405Sjkim	pxor	%xmm1,%xmm7
360238405Sjkim	pxor	336(%ebp),%xmm7
361238405Sjkim	movdqa	-16(%ebp),%xmm4
362238405Sjkim	movdqa	-48(%ebp),%xmm5
363238405Sjkim	movdqa	%xmm4,%xmm1
364238405Sjkim	pandn	%xmm0,%xmm1
365238405Sjkim	psrld	$4,%xmm1
366238405Sjkim	pand	%xmm4,%xmm0
367238405Sjkim	movdqa	-32(%ebp),%xmm2
368238405Sjkim.byte	102,15,56,0,208
369238405Sjkim	pxor	%xmm1,%xmm0
370238405Sjkim	movdqa	%xmm5,%xmm3
371238405Sjkim.byte	102,15,56,0,217
372238405Sjkim	pxor	%xmm2,%xmm3
373238405Sjkim	movdqa	%xmm5,%xmm4
374238405Sjkim.byte	102,15,56,0,224
375238405Sjkim	pxor	%xmm2,%xmm4
376238405Sjkim	movdqa	%xmm5,%xmm2
377238405Sjkim.byte	102,15,56,0,211
378238405Sjkim	pxor	%xmm0,%xmm2
379238405Sjkim	movdqa	%xmm5,%xmm3
380238405Sjkim.byte	102,15,56,0,220
381238405Sjkim	pxor	%xmm1,%xmm3
382238405Sjkim	movdqa	32(%ebp),%xmm4
383238405Sjkim.byte	102,15,56,0,226
384238405Sjkim	movdqa	48(%ebp),%xmm0
385238405Sjkim.byte	102,15,56,0,195
386238405Sjkim	pxor	%xmm4,%xmm0
387238405Sjkim	pxor	%xmm7,%xmm0
388238405Sjkim	movdqa	%xmm0,%xmm7
389238405Sjkim	ret
390238405Sjkim.size	_vpaes_schedule_round,.-_vpaes_schedule_round
391238405Sjkim.type	_vpaes_schedule_transform,@function
392238405Sjkim.align	16
393238405Sjkim_vpaes_schedule_transform:
394238405Sjkim	movdqa	-16(%ebp),%xmm2
395238405Sjkim	movdqa	%xmm2,%xmm1
396238405Sjkim	pandn	%xmm0,%xmm1
397238405Sjkim	psrld	$4,%xmm1
398238405Sjkim	pand	%xmm2,%xmm0
399238405Sjkim	movdqa	(%ebx),%xmm2
400238405Sjkim.byte	102,15,56,0,208
401238405Sjkim	movdqa	16(%ebx),%xmm0
402238405Sjkim.byte	102,15,56,0,193
403238405Sjkim	pxor	%xmm2,%xmm0
404238405Sjkim	ret
405238405Sjkim.size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
406238405Sjkim.type	_vpaes_schedule_mangle,@function
407238405Sjkim.align	16
408238405Sjkim_vpaes_schedule_mangle:
409238405Sjkim	movdqa	%xmm0,%xmm4
410238405Sjkim	movdqa	128(%ebp),%xmm5
411238405Sjkim	testl	%edi,%edi
412238405Sjkim	jnz	.L014schedule_mangle_dec
413238405Sjkim	addl	$16,%edx
414238405Sjkim	pxor	336(%ebp),%xmm4
415238405Sjkim.byte	102,15,56,0,229
416238405Sjkim	movdqa	%xmm4,%xmm3
417238405Sjkim.byte	102,15,56,0,229
418238405Sjkim	pxor	%xmm4,%xmm3
419238405Sjkim.byte	102,15,56,0,229
420238405Sjkim	pxor	%xmm4,%xmm3
421238405Sjkim	jmp	.L015schedule_mangle_both
422238405Sjkim.align	16
423238405Sjkim.L014schedule_mangle_dec:
424238405Sjkim	movdqa	-16(%ebp),%xmm2
425238405Sjkim	leal	416(%ebp),%esi
426238405Sjkim	movdqa	%xmm2,%xmm1
427238405Sjkim	pandn	%xmm4,%xmm1
428238405Sjkim	psrld	$4,%xmm1
429238405Sjkim	pand	%xmm2,%xmm4
430238405Sjkim	movdqa	(%esi),%xmm2
431238405Sjkim.byte	102,15,56,0,212
432238405Sjkim	movdqa	16(%esi),%xmm3
433238405Sjkim.byte	102,15,56,0,217
434238405Sjkim	pxor	%xmm2,%xmm3
435238405Sjkim.byte	102,15,56,0,221
436238405Sjkim	movdqa	32(%esi),%xmm2
437238405Sjkim.byte	102,15,56,0,212
438238405Sjkim	pxor	%xmm3,%xmm2
439238405Sjkim	movdqa	48(%esi),%xmm3
440238405Sjkim.byte	102,15,56,0,217
441238405Sjkim	pxor	%xmm2,%xmm3
442238405Sjkim.byte	102,15,56,0,221
443238405Sjkim	movdqa	64(%esi),%xmm2
444238405Sjkim.byte	102,15,56,0,212
445238405Sjkim	pxor	%xmm3,%xmm2
446238405Sjkim	movdqa	80(%esi),%xmm3
447238405Sjkim.byte	102,15,56,0,217
448238405Sjkim	pxor	%xmm2,%xmm3
449238405Sjkim.byte	102,15,56,0,221
450238405Sjkim	movdqa	96(%esi),%xmm2
451238405Sjkim.byte	102,15,56,0,212
452238405Sjkim	pxor	%xmm3,%xmm2
453238405Sjkim	movdqa	112(%esi),%xmm3
454238405Sjkim.byte	102,15,56,0,217
455238405Sjkim	pxor	%xmm2,%xmm3
456238405Sjkim	addl	$-16,%edx
457238405Sjkim.L015schedule_mangle_both:
458238405Sjkim	movdqa	256(%ebp,%ecx,1),%xmm1
459238405Sjkim.byte	102,15,56,0,217
460238405Sjkim	addl	$-16,%ecx
461238405Sjkim	andl	$48,%ecx
462238405Sjkim	movdqu	%xmm3,(%edx)
463238405Sjkim	ret
464238405Sjkim.size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
465238405Sjkim.globl	vpaes_set_encrypt_key
466238405Sjkim.type	vpaes_set_encrypt_key,@function
467238405Sjkim.align	16
468238405Sjkimvpaes_set_encrypt_key:
469238405Sjkim.L_vpaes_set_encrypt_key_begin:
470238405Sjkim	pushl	%ebp
471238405Sjkim	pushl	%ebx
472238405Sjkim	pushl	%esi
473238405Sjkim	pushl	%edi
474238405Sjkim	movl	20(%esp),%esi
475238405Sjkim	leal	-56(%esp),%ebx
476238405Sjkim	movl	24(%esp),%eax
477238405Sjkim	andl	$-16,%ebx
478238405Sjkim	movl	28(%esp),%edx
479238405Sjkim	xchgl	%esp,%ebx
480238405Sjkim	movl	%ebx,48(%esp)
481238405Sjkim	movl	%eax,%ebx
482238405Sjkim	shrl	$5,%ebx
483238405Sjkim	addl	$5,%ebx
484238405Sjkim	movl	%ebx,240(%edx)
485238405Sjkim	movl	$48,%ecx
486238405Sjkim	movl	$0,%edi
487238405Sjkim	leal	.L_vpaes_consts+0x30-.L016pic_point,%ebp
488238405Sjkim	call	_vpaes_schedule_core
489238405Sjkim.L016pic_point:
490238405Sjkim	movl	48(%esp),%esp
491238405Sjkim	xorl	%eax,%eax
492238405Sjkim	popl	%edi
493238405Sjkim	popl	%esi
494238405Sjkim	popl	%ebx
495238405Sjkim	popl	%ebp
496238405Sjkim	ret
497238405Sjkim.size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
498238405Sjkim.globl	vpaes_set_decrypt_key
499238405Sjkim.type	vpaes_set_decrypt_key,@function
500238405Sjkim.align	16
501238405Sjkimvpaes_set_decrypt_key:
502238405Sjkim.L_vpaes_set_decrypt_key_begin:
503238405Sjkim	pushl	%ebp
504238405Sjkim	pushl	%ebx
505238405Sjkim	pushl	%esi
506238405Sjkim	pushl	%edi
507238405Sjkim	movl	20(%esp),%esi
508238405Sjkim	leal	-56(%esp),%ebx
509238405Sjkim	movl	24(%esp),%eax
510238405Sjkim	andl	$-16,%ebx
511238405Sjkim	movl	28(%esp),%edx
512238405Sjkim	xchgl	%esp,%ebx
513238405Sjkim	movl	%ebx,48(%esp)
514238405Sjkim	movl	%eax,%ebx
515238405Sjkim	shrl	$5,%ebx
516238405Sjkim	addl	$5,%ebx
517238405Sjkim	movl	%ebx,240(%edx)
518238405Sjkim	shll	$4,%ebx
519238405Sjkim	leal	16(%edx,%ebx,1),%edx
520238405Sjkim	movl	$1,%edi
521238405Sjkim	movl	%eax,%ecx
522238405Sjkim	shrl	$1,%ecx
523238405Sjkim	andl	$32,%ecx
524238405Sjkim	xorl	$32,%ecx
525238405Sjkim	leal	.L_vpaes_consts+0x30-.L017pic_point,%ebp
526238405Sjkim	call	_vpaes_schedule_core
527238405Sjkim.L017pic_point:
528238405Sjkim	movl	48(%esp),%esp
529238405Sjkim	xorl	%eax,%eax
530238405Sjkim	popl	%edi
531238405Sjkim	popl	%esi
532238405Sjkim	popl	%ebx
533238405Sjkim	popl	%ebp
534238405Sjkim	ret
535238405Sjkim.size	vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
536238405Sjkim.globl	vpaes_encrypt
537238405Sjkim.type	vpaes_encrypt,@function
538238405Sjkim.align	16
539238405Sjkimvpaes_encrypt:
540238405Sjkim.L_vpaes_encrypt_begin:
541238405Sjkim	pushl	%ebp
542238405Sjkim	pushl	%ebx
543238405Sjkim	pushl	%esi
544238405Sjkim	pushl	%edi
545238405Sjkim	leal	.L_vpaes_consts+0x30-.L018pic_point,%ebp
546238405Sjkim	call	_vpaes_preheat
547238405Sjkim.L018pic_point:
548238405Sjkim	movl	20(%esp),%esi
549238405Sjkim	leal	-56(%esp),%ebx
550238405Sjkim	movl	24(%esp),%edi
551238405Sjkim	andl	$-16,%ebx
552238405Sjkim	movl	28(%esp),%edx
553238405Sjkim	xchgl	%esp,%ebx
554238405Sjkim	movl	%ebx,48(%esp)
555238405Sjkim	movdqu	(%esi),%xmm0
556238405Sjkim	call	_vpaes_encrypt_core
557238405Sjkim	movdqu	%xmm0,(%edi)
558238405Sjkim	movl	48(%esp),%esp
559238405Sjkim	popl	%edi
560238405Sjkim	popl	%esi
561238405Sjkim	popl	%ebx
562238405Sjkim	popl	%ebp
563238405Sjkim	ret
564238405Sjkim.size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
565238405Sjkim.globl	vpaes_decrypt
566238405Sjkim.type	vpaes_decrypt,@function
567238405Sjkim.align	16
568238405Sjkimvpaes_decrypt:
569238405Sjkim.L_vpaes_decrypt_begin:
570238405Sjkim	pushl	%ebp
571238405Sjkim	pushl	%ebx
572238405Sjkim	pushl	%esi
573238405Sjkim	pushl	%edi
574238405Sjkim	leal	.L_vpaes_consts+0x30-.L019pic_point,%ebp
575238405Sjkim	call	_vpaes_preheat
576238405Sjkim.L019pic_point:
577238405Sjkim	movl	20(%esp),%esi
578238405Sjkim	leal	-56(%esp),%ebx
579238405Sjkim	movl	24(%esp),%edi
580238405Sjkim	andl	$-16,%ebx
581238405Sjkim	movl	28(%esp),%edx
582238405Sjkim	xchgl	%esp,%ebx
583238405Sjkim	movl	%ebx,48(%esp)
584238405Sjkim	movdqu	(%esi),%xmm0
585238405Sjkim	call	_vpaes_decrypt_core
586238405Sjkim	movdqu	%xmm0,(%edi)
587238405Sjkim	movl	48(%esp),%esp
588238405Sjkim	popl	%edi
589238405Sjkim	popl	%esi
590238405Sjkim	popl	%ebx
591238405Sjkim	popl	%ebp
592238405Sjkim	ret
593238405Sjkim.size	vpaes_decrypt,.-.L_vpaes_decrypt_begin
594238405Sjkim.globl	vpaes_cbc_encrypt
595238405Sjkim.type	vpaes_cbc_encrypt,@function
596238405Sjkim.align	16
597238405Sjkimvpaes_cbc_encrypt:
598238405Sjkim.L_vpaes_cbc_encrypt_begin:
599238405Sjkim	pushl	%ebp
600238405Sjkim	pushl	%ebx
601238405Sjkim	pushl	%esi
602238405Sjkim	pushl	%edi
603238405Sjkim	movl	20(%esp),%esi
604238405Sjkim	movl	24(%esp),%edi
605238405Sjkim	movl	28(%esp),%eax
606238405Sjkim	movl	32(%esp),%edx
607238405Sjkim	subl	$16,%eax
608238405Sjkim	jc	.L020cbc_abort
609238405Sjkim	leal	-56(%esp),%ebx
610238405Sjkim	movl	36(%esp),%ebp
611238405Sjkim	andl	$-16,%ebx
612238405Sjkim	movl	40(%esp),%ecx
613238405Sjkim	xchgl	%esp,%ebx
614238405Sjkim	movdqu	(%ebp),%xmm1
615238405Sjkim	subl	%esi,%edi
616238405Sjkim	movl	%ebx,48(%esp)
617238405Sjkim	movl	%edi,(%esp)
618238405Sjkim	movl	%edx,4(%esp)
619238405Sjkim	movl	%ebp,8(%esp)
620238405Sjkim	movl	%eax,%edi
621238405Sjkim	leal	.L_vpaes_consts+0x30-.L021pic_point,%ebp
622238405Sjkim	call	_vpaes_preheat
623238405Sjkim.L021pic_point:
624238405Sjkim	cmpl	$0,%ecx
625238405Sjkim	je	.L022cbc_dec_loop
626238405Sjkim	jmp	.L023cbc_enc_loop
627238405Sjkim.align	16
628238405Sjkim.L023cbc_enc_loop:
629238405Sjkim	movdqu	(%esi),%xmm0
630238405Sjkim	pxor	%xmm1,%xmm0
631238405Sjkim	call	_vpaes_encrypt_core
632238405Sjkim	movl	(%esp),%ebx
633238405Sjkim	movl	4(%esp),%edx
634238405Sjkim	movdqa	%xmm0,%xmm1
635238405Sjkim	movdqu	%xmm0,(%ebx,%esi,1)
636238405Sjkim	leal	16(%esi),%esi
637238405Sjkim	subl	$16,%edi
638238405Sjkim	jnc	.L023cbc_enc_loop
639238405Sjkim	jmp	.L024cbc_done
640238405Sjkim.align	16
641238405Sjkim.L022cbc_dec_loop:
642238405Sjkim	movdqu	(%esi),%xmm0
643238405Sjkim	movdqa	%xmm1,16(%esp)
644238405Sjkim	movdqa	%xmm0,32(%esp)
645238405Sjkim	call	_vpaes_decrypt_core
646238405Sjkim	movl	(%esp),%ebx
647238405Sjkim	movl	4(%esp),%edx
648238405Sjkim	pxor	16(%esp),%xmm0
649238405Sjkim	movdqa	32(%esp),%xmm1
650238405Sjkim	movdqu	%xmm0,(%ebx,%esi,1)
651238405Sjkim	leal	16(%esi),%esi
652238405Sjkim	subl	$16,%edi
653238405Sjkim	jnc	.L022cbc_dec_loop
654238405Sjkim.L024cbc_done:
655238405Sjkim	movl	8(%esp),%ebx
656238405Sjkim	movl	48(%esp),%esp
657238405Sjkim	movdqu	%xmm1,(%ebx)
658238405Sjkim.L020cbc_abort:
659238405Sjkim	popl	%edi
660238405Sjkim	popl	%esi
661238405Sjkim	popl	%ebx
662238405Sjkim	popl	%ebp
663238405Sjkim	ret
664238405Sjkim.size	vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
665299389Sjkim#else
666299389Sjkim.file	"vpaes-x86.S"
667299389Sjkim.text
668299389Sjkim.align	64
669299389Sjkim.L_vpaes_consts:
670299389Sjkim.long	218628480,235210255,168496130,67568393
671299389Sjkim.long	252381056,17041926,33884169,51187212
672299389Sjkim.long	252645135,252645135,252645135,252645135
673299389Sjkim.long	1512730624,3266504856,1377990664,3401244816
674299389Sjkim.long	830229760,1275146365,2969422977,3447763452
675299389Sjkim.long	3411033600,2979783055,338359620,2782886510
676299389Sjkim.long	4209124096,907596821,221174255,1006095553
677299389Sjkim.long	191964160,3799684038,3164090317,1589111125
678299389Sjkim.long	182528256,1777043520,2877432650,3265356744
679299389Sjkim.long	1874708224,3503451415,3305285752,363511674
680299389Sjkim.long	1606117888,3487855781,1093350906,2384367825
681299389Sjkim.long	197121,67569157,134941193,202313229
682299389Sjkim.long	67569157,134941193,202313229,197121
683299389Sjkim.long	134941193,202313229,197121,67569157
684299389Sjkim.long	202313229,197121,67569157,134941193
685299389Sjkim.long	33619971,100992007,168364043,235736079
686299389Sjkim.long	235736079,33619971,100992007,168364043
687299389Sjkim.long	168364043,235736079,33619971,100992007
688299389Sjkim.long	100992007,168364043,235736079,33619971
689299389Sjkim.long	50462976,117835012,185207048,252579084
690299389Sjkim.long	252314880,51251460,117574920,184942860
691299389Sjkim.long	184682752,252054788,50987272,118359308
692299389Sjkim.long	118099200,185467140,251790600,50727180
693299389Sjkim.long	2946363062,528716217,1300004225,1881839624
694299389Sjkim.long	1532713819,1532713819,1532713819,1532713819
695299389Sjkim.long	3602276352,4288629033,3737020424,4153884961
696299389Sjkim.long	1354558464,32357713,2958822624,3775749553
697299389Sjkim.long	1201988352,132424512,1572796698,503232858
698299389Sjkim.long	2213177600,1597421020,4103937655,675398315
699299389Sjkim.long	2749646592,4273543773,1511898873,121693092
700299389Sjkim.long	3040248576,1103263732,2871565598,1608280554
701299389Sjkim.long	2236667136,2588920351,482954393,64377734
702299389Sjkim.long	3069987328,291237287,2117370568,3650299247
703299389Sjkim.long	533321216,3573750986,2572112006,1401264716
704299389Sjkim.long	1339849704,2721158661,548607111,3445553514
705299389Sjkim.long	2128193280,3054596040,2183486460,1257083700
706299389Sjkim.long	655635200,1165381986,3923443150,2344132524
707299389Sjkim.long	190078720,256924420,290342170,357187870
708299389Sjkim.long	1610966272,2263057382,4103205268,309794674
709299389Sjkim.long	2592527872,2233205587,1335446729,3402964816
710299389Sjkim.long	3973531904,3225098121,3002836325,1918774430
711299389Sjkim.long	3870401024,2102906079,2284471353,4117666579
712299389Sjkim.long	617007872,1021508343,366931923,691083277
713299389Sjkim.long	2528395776,3491914898,2968704004,1613121270
714299389Sjkim.long	3445188352,3247741094,844474987,4093578302
715299389Sjkim.long	651481088,1190302358,1689581232,574775300
716299389Sjkim.long	4289380608,206939853,2555985458,2489840491
717299389Sjkim.long	2130264064,327674451,3566485037,3349835193
718299389Sjkim.long	2470714624,316102159,3636825756,3393945945
719299389Sjkim.byte	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
720299389Sjkim.byte	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
721299389Sjkim.byte	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
722299389Sjkim.byte	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
723299389Sjkim.byte	118,101,114,115,105,116,121,41,0
724299389Sjkim.align	64
725299389Sjkim.type	_vpaes_preheat,@function
726299389Sjkim.align	16
727299389Sjkim_vpaes_preheat:
728299389Sjkim	addl	(%esp),%ebp
729299389Sjkim	movdqa	-48(%ebp),%xmm7
730299389Sjkim	movdqa	-16(%ebp),%xmm6
731299389Sjkim	ret
732299389Sjkim.size	_vpaes_preheat,.-_vpaes_preheat
733299389Sjkim.type	_vpaes_encrypt_core,@function
734299389Sjkim.align	16
735299389Sjkim_vpaes_encrypt_core:
736299389Sjkim	movl	$16,%ecx
737299389Sjkim	movl	240(%edx),%eax
738299389Sjkim	movdqa	%xmm6,%xmm1
739299389Sjkim	movdqa	(%ebp),%xmm2
740299389Sjkim	pandn	%xmm0,%xmm1
741299389Sjkim	pand	%xmm6,%xmm0
742299389Sjkim	movdqu	(%edx),%xmm5
743299389Sjkim.byte	102,15,56,0,208
744299389Sjkim	movdqa	16(%ebp),%xmm0
745299389Sjkim	pxor	%xmm5,%xmm2
746299389Sjkim	psrld	$4,%xmm1
747299389Sjkim	addl	$16,%edx
748299389Sjkim.byte	102,15,56,0,193
749299389Sjkim	leal	192(%ebp),%ebx
750299389Sjkim	pxor	%xmm2,%xmm0
751299389Sjkim	jmp	.L000enc_entry
752299389Sjkim.align	16
753299389Sjkim.L001enc_loop:
754299389Sjkim	movdqa	32(%ebp),%xmm4
755299389Sjkim	movdqa	48(%ebp),%xmm0
756299389Sjkim.byte	102,15,56,0,226
757299389Sjkim.byte	102,15,56,0,195
758299389Sjkim	pxor	%xmm5,%xmm4
759299389Sjkim	movdqa	64(%ebp),%xmm5
760299389Sjkim	pxor	%xmm4,%xmm0
761299389Sjkim	movdqa	-64(%ebx,%ecx,1),%xmm1
762299389Sjkim.byte	102,15,56,0,234
763299389Sjkim	movdqa	80(%ebp),%xmm2
764299389Sjkim	movdqa	(%ebx,%ecx,1),%xmm4
765299389Sjkim.byte	102,15,56,0,211
766299389Sjkim	movdqa	%xmm0,%xmm3
767299389Sjkim	pxor	%xmm5,%xmm2
768299389Sjkim.byte	102,15,56,0,193
769299389Sjkim	addl	$16,%edx
770299389Sjkim	pxor	%xmm2,%xmm0
771299389Sjkim.byte	102,15,56,0,220
772299389Sjkim	addl	$16,%ecx
773299389Sjkim	pxor	%xmm0,%xmm3
774299389Sjkim.byte	102,15,56,0,193
775299389Sjkim	andl	$48,%ecx
776299389Sjkim	subl	$1,%eax
777299389Sjkim	pxor	%xmm3,%xmm0
778299389Sjkim.L000enc_entry:
779299389Sjkim	movdqa	%xmm6,%xmm1
780299389Sjkim	movdqa	-32(%ebp),%xmm5
781299389Sjkim	pandn	%xmm0,%xmm1
782299389Sjkim	psrld	$4,%xmm1
783299389Sjkim	pand	%xmm6,%xmm0
784299389Sjkim.byte	102,15,56,0,232
785299389Sjkim	movdqa	%xmm7,%xmm3
786299389Sjkim	pxor	%xmm1,%xmm0
787299389Sjkim.byte	102,15,56,0,217
788299389Sjkim	movdqa	%xmm7,%xmm4
789299389Sjkim	pxor	%xmm5,%xmm3
790299389Sjkim.byte	102,15,56,0,224
791299389Sjkim	movdqa	%xmm7,%xmm2
792299389Sjkim	pxor	%xmm5,%xmm4
793299389Sjkim.byte	102,15,56,0,211
794299389Sjkim	movdqa	%xmm7,%xmm3
795299389Sjkim	pxor	%xmm0,%xmm2
796299389Sjkim.byte	102,15,56,0,220
797299389Sjkim	movdqu	(%edx),%xmm5
798299389Sjkim	pxor	%xmm1,%xmm3
799299389Sjkim	jnz	.L001enc_loop
800299389Sjkim	movdqa	96(%ebp),%xmm4
801299389Sjkim	movdqa	112(%ebp),%xmm0
802299389Sjkim.byte	102,15,56,0,226
803299389Sjkim	pxor	%xmm5,%xmm4
804299389Sjkim.byte	102,15,56,0,195
805299389Sjkim	movdqa	64(%ebx,%ecx,1),%xmm1
806299389Sjkim	pxor	%xmm4,%xmm0
807299389Sjkim.byte	102,15,56,0,193
808299389Sjkim	ret
809299389Sjkim.size	_vpaes_encrypt_core,.-_vpaes_encrypt_core
810299389Sjkim.type	_vpaes_decrypt_core,@function
811299389Sjkim.align	16
812299389Sjkim_vpaes_decrypt_core:
813299389Sjkim	leal	608(%ebp),%ebx
814299389Sjkim	movl	240(%edx),%eax
815299389Sjkim	movdqa	%xmm6,%xmm1
816299389Sjkim	movdqa	-64(%ebx),%xmm2
817299389Sjkim	pandn	%xmm0,%xmm1
818299389Sjkim	movl	%eax,%ecx
819299389Sjkim	psrld	$4,%xmm1
820299389Sjkim	movdqu	(%edx),%xmm5
821299389Sjkim	shll	$4,%ecx
822299389Sjkim	pand	%xmm6,%xmm0
823299389Sjkim.byte	102,15,56,0,208
824299389Sjkim	movdqa	-48(%ebx),%xmm0
825299389Sjkim	xorl	$48,%ecx
826299389Sjkim.byte	102,15,56,0,193
827299389Sjkim	andl	$48,%ecx
828299389Sjkim	pxor	%xmm5,%xmm2
829299389Sjkim	movdqa	176(%ebp),%xmm5
830299389Sjkim	pxor	%xmm2,%xmm0
831299389Sjkim	addl	$16,%edx
832299389Sjkim	leal	-352(%ebx,%ecx,1),%ecx
833299389Sjkim	jmp	.L002dec_entry
834299389Sjkim.align	16
835299389Sjkim.L003dec_loop:
836299389Sjkim	movdqa	-32(%ebx),%xmm4
837299389Sjkim	movdqa	-16(%ebx),%xmm1
838299389Sjkim.byte	102,15,56,0,226
839299389Sjkim.byte	102,15,56,0,203
840299389Sjkim	pxor	%xmm4,%xmm0
841299389Sjkim	movdqa	(%ebx),%xmm4
842299389Sjkim	pxor	%xmm1,%xmm0
843299389Sjkim	movdqa	16(%ebx),%xmm1
844299389Sjkim.byte	102,15,56,0,226
845299389Sjkim.byte	102,15,56,0,197
846299389Sjkim.byte	102,15,56,0,203
847299389Sjkim	pxor	%xmm4,%xmm0
848299389Sjkim	movdqa	32(%ebx),%xmm4
849299389Sjkim	pxor	%xmm1,%xmm0
850299389Sjkim	movdqa	48(%ebx),%xmm1
851299389Sjkim.byte	102,15,56,0,226
852299389Sjkim.byte	102,15,56,0,197
853299389Sjkim.byte	102,15,56,0,203
854299389Sjkim	pxor	%xmm4,%xmm0
855299389Sjkim	movdqa	64(%ebx),%xmm4
856299389Sjkim	pxor	%xmm1,%xmm0
857299389Sjkim	movdqa	80(%ebx),%xmm1
858299389Sjkim.byte	102,15,56,0,226
859299389Sjkim.byte	102,15,56,0,197
860299389Sjkim.byte	102,15,56,0,203
861299389Sjkim	pxor	%xmm4,%xmm0
862299389Sjkim	addl	$16,%edx
863299389Sjkim.byte	102,15,58,15,237,12
864299389Sjkim	pxor	%xmm1,%xmm0
865299389Sjkim	subl	$1,%eax
866299389Sjkim.L002dec_entry:
867299389Sjkim	movdqa	%xmm6,%xmm1
868299389Sjkim	movdqa	-32(%ebp),%xmm2
869299389Sjkim	pandn	%xmm0,%xmm1
870299389Sjkim	pand	%xmm6,%xmm0
871299389Sjkim	psrld	$4,%xmm1
872299389Sjkim.byte	102,15,56,0,208
873299389Sjkim	movdqa	%xmm7,%xmm3
874299389Sjkim	pxor	%xmm1,%xmm0
875299389Sjkim.byte	102,15,56,0,217
876299389Sjkim	movdqa	%xmm7,%xmm4
877299389Sjkim	pxor	%xmm2,%xmm3
878299389Sjkim.byte	102,15,56,0,224
879299389Sjkim	pxor	%xmm2,%xmm4
880299389Sjkim	movdqa	%xmm7,%xmm2
881299389Sjkim.byte	102,15,56,0,211
882299389Sjkim	movdqa	%xmm7,%xmm3
883299389Sjkim	pxor	%xmm0,%xmm2
884299389Sjkim.byte	102,15,56,0,220
885299389Sjkim	movdqu	(%edx),%xmm0
886299389Sjkim	pxor	%xmm1,%xmm3
887299389Sjkim	jnz	.L003dec_loop
888299389Sjkim	movdqa	96(%ebx),%xmm4
889299389Sjkim.byte	102,15,56,0,226
890299389Sjkim	pxor	%xmm0,%xmm4
891299389Sjkim	movdqa	112(%ebx),%xmm0
892299389Sjkim	movdqa	(%ecx),%xmm2
893299389Sjkim.byte	102,15,56,0,195
894299389Sjkim	pxor	%xmm4,%xmm0
895299389Sjkim.byte	102,15,56,0,194
896299389Sjkim	ret
897299389Sjkim.size	_vpaes_decrypt_core,.-_vpaes_decrypt_core
898299389Sjkim.type	_vpaes_schedule_core,@function
899299389Sjkim.align	16
900299389Sjkim_vpaes_schedule_core:
901299389Sjkim	addl	(%esp),%ebp
902299389Sjkim	movdqu	(%esi),%xmm0
903299389Sjkim	movdqa	320(%ebp),%xmm2
904299389Sjkim	movdqa	%xmm0,%xmm3
905299389Sjkim	leal	(%ebp),%ebx
906299389Sjkim	movdqa	%xmm2,4(%esp)
907299389Sjkim	call	_vpaes_schedule_transform
908299389Sjkim	movdqa	%xmm0,%xmm7
909299389Sjkim	testl	%edi,%edi
910299389Sjkim	jnz	.L004schedule_am_decrypting
911299389Sjkim	movdqu	%xmm0,(%edx)
912299389Sjkim	jmp	.L005schedule_go
913299389Sjkim.L004schedule_am_decrypting:
914299389Sjkim	movdqa	256(%ebp,%ecx,1),%xmm1
915299389Sjkim.byte	102,15,56,0,217
916299389Sjkim	movdqu	%xmm3,(%edx)
917299389Sjkim	xorl	$48,%ecx
918299389Sjkim.L005schedule_go:
919299389Sjkim	cmpl	$192,%eax
920299389Sjkim	ja	.L006schedule_256
921299389Sjkim	je	.L007schedule_192
922299389Sjkim.L008schedule_128:
923299389Sjkim	movl	$10,%eax
924299389Sjkim.L009loop_schedule_128:
925299389Sjkim	call	_vpaes_schedule_round
926299389Sjkim	decl	%eax
927299389Sjkim	jz	.L010schedule_mangle_last
928299389Sjkim	call	_vpaes_schedule_mangle
929299389Sjkim	jmp	.L009loop_schedule_128
930299389Sjkim.align	16
931299389Sjkim.L007schedule_192:
932299389Sjkim	movdqu	8(%esi),%xmm0
933299389Sjkim	call	_vpaes_schedule_transform
934299389Sjkim	movdqa	%xmm0,%xmm6
935299389Sjkim	pxor	%xmm4,%xmm4
936299389Sjkim	movhlps	%xmm4,%xmm6
937299389Sjkim	movl	$4,%eax
938299389Sjkim.L011loop_schedule_192:
939299389Sjkim	call	_vpaes_schedule_round
940299389Sjkim.byte	102,15,58,15,198,8
941299389Sjkim	call	_vpaes_schedule_mangle
942299389Sjkim	call	_vpaes_schedule_192_smear
943299389Sjkim	call	_vpaes_schedule_mangle
944299389Sjkim	call	_vpaes_schedule_round
945299389Sjkim	decl	%eax
946299389Sjkim	jz	.L010schedule_mangle_last
947299389Sjkim	call	_vpaes_schedule_mangle
948299389Sjkim	call	_vpaes_schedule_192_smear
949299389Sjkim	jmp	.L011loop_schedule_192
950299389Sjkim.align	16
951299389Sjkim.L006schedule_256:
952299389Sjkim	movdqu	16(%esi),%xmm0
953299389Sjkim	call	_vpaes_schedule_transform
954299389Sjkim	movl	$7,%eax
955299389Sjkim.L012loop_schedule_256:
956299389Sjkim	call	_vpaes_schedule_mangle
957299389Sjkim	movdqa	%xmm0,%xmm6
958299389Sjkim	call	_vpaes_schedule_round
959299389Sjkim	decl	%eax
960299389Sjkim	jz	.L010schedule_mangle_last
961299389Sjkim	call	_vpaes_schedule_mangle
962299389Sjkim	pshufd	$255,%xmm0,%xmm0
963299389Sjkim	movdqa	%xmm7,20(%esp)
964299389Sjkim	movdqa	%xmm6,%xmm7
965299389Sjkim	call	.L_vpaes_schedule_low_round
966299389Sjkim	movdqa	20(%esp),%xmm7
967299389Sjkim	jmp	.L012loop_schedule_256
968299389Sjkim.align	16
969299389Sjkim.L010schedule_mangle_last:
970299389Sjkim	leal	384(%ebp),%ebx
971299389Sjkim	testl	%edi,%edi
972299389Sjkim	jnz	.L013schedule_mangle_last_dec
973299389Sjkim	movdqa	256(%ebp,%ecx,1),%xmm1
974299389Sjkim.byte	102,15,56,0,193
975299389Sjkim	leal	352(%ebp),%ebx
976299389Sjkim	addl	$32,%edx
977299389Sjkim.L013schedule_mangle_last_dec:
978299389Sjkim	addl	$-16,%edx
979299389Sjkim	pxor	336(%ebp),%xmm0
980299389Sjkim	call	_vpaes_schedule_transform
981299389Sjkim	movdqu	%xmm0,(%edx)
982299389Sjkim	pxor	%xmm0,%xmm0
983299389Sjkim	pxor	%xmm1,%xmm1
984299389Sjkim	pxor	%xmm2,%xmm2
985299389Sjkim	pxor	%xmm3,%xmm3
986299389Sjkim	pxor	%xmm4,%xmm4
987299389Sjkim	pxor	%xmm5,%xmm5
988299389Sjkim	pxor	%xmm6,%xmm6
989299389Sjkim	pxor	%xmm7,%xmm7
990299389Sjkim	ret
991299389Sjkim.size	_vpaes_schedule_core,.-_vpaes_schedule_core
992299389Sjkim.type	_vpaes_schedule_192_smear,@function
993299389Sjkim.align	16
994299389Sjkim_vpaes_schedule_192_smear:
995299389Sjkim	pshufd	$128,%xmm6,%xmm1
996299389Sjkim	pshufd	$254,%xmm7,%xmm0
997299389Sjkim	pxor	%xmm1,%xmm6
998299389Sjkim	pxor	%xmm1,%xmm1
999299389Sjkim	pxor	%xmm0,%xmm6
1000299389Sjkim	movdqa	%xmm6,%xmm0
1001299389Sjkim	movhlps	%xmm1,%xmm6
1002299389Sjkim	ret
1003299389Sjkim.size	_vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
1004299389Sjkim.type	_vpaes_schedule_round,@function
1005299389Sjkim.align	16
1006299389Sjkim_vpaes_schedule_round:
1007299389Sjkim	movdqa	8(%esp),%xmm2
1008299389Sjkim	pxor	%xmm1,%xmm1
1009299389Sjkim.byte	102,15,58,15,202,15
1010299389Sjkim.byte	102,15,58,15,210,15
1011299389Sjkim	pxor	%xmm1,%xmm7
1012299389Sjkim	pshufd	$255,%xmm0,%xmm0
1013299389Sjkim.byte	102,15,58,15,192,1
1014299389Sjkim	movdqa	%xmm2,8(%esp)
1015299389Sjkim.L_vpaes_schedule_low_round:
1016299389Sjkim	movdqa	%xmm7,%xmm1
1017299389Sjkim	pslldq	$4,%xmm7
1018299389Sjkim	pxor	%xmm1,%xmm7
1019299389Sjkim	movdqa	%xmm7,%xmm1
1020299389Sjkim	pslldq	$8,%xmm7
1021299389Sjkim	pxor	%xmm1,%xmm7
1022299389Sjkim	pxor	336(%ebp),%xmm7
1023299389Sjkim	movdqa	-16(%ebp),%xmm4
1024299389Sjkim	movdqa	-48(%ebp),%xmm5
1025299389Sjkim	movdqa	%xmm4,%xmm1
1026299389Sjkim	pandn	%xmm0,%xmm1
1027299389Sjkim	psrld	$4,%xmm1
1028299389Sjkim	pand	%xmm4,%xmm0
1029299389Sjkim	movdqa	-32(%ebp),%xmm2
1030299389Sjkim.byte	102,15,56,0,208
1031299389Sjkim	pxor	%xmm1,%xmm0
1032299389Sjkim	movdqa	%xmm5,%xmm3
1033299389Sjkim.byte	102,15,56,0,217
1034299389Sjkim	pxor	%xmm2,%xmm3
1035299389Sjkim	movdqa	%xmm5,%xmm4
1036299389Sjkim.byte	102,15,56,0,224
1037299389Sjkim	pxor	%xmm2,%xmm4
1038299389Sjkim	movdqa	%xmm5,%xmm2
1039299389Sjkim.byte	102,15,56,0,211
1040299389Sjkim	pxor	%xmm0,%xmm2
1041299389Sjkim	movdqa	%xmm5,%xmm3
1042299389Sjkim.byte	102,15,56,0,220
1043299389Sjkim	pxor	%xmm1,%xmm3
1044299389Sjkim	movdqa	32(%ebp),%xmm4
1045299389Sjkim.byte	102,15,56,0,226
1046299389Sjkim	movdqa	48(%ebp),%xmm0
1047299389Sjkim.byte	102,15,56,0,195
1048299389Sjkim	pxor	%xmm4,%xmm0
1049299389Sjkim	pxor	%xmm7,%xmm0
1050299389Sjkim	movdqa	%xmm0,%xmm7
1051299389Sjkim	ret
1052299389Sjkim.size	_vpaes_schedule_round,.-_vpaes_schedule_round
1053299389Sjkim.type	_vpaes_schedule_transform,@function
1054299389Sjkim.align	16
1055299389Sjkim_vpaes_schedule_transform:
1056299389Sjkim	movdqa	-16(%ebp),%xmm2
1057299389Sjkim	movdqa	%xmm2,%xmm1
1058299389Sjkim	pandn	%xmm0,%xmm1
1059299389Sjkim	psrld	$4,%xmm1
1060299389Sjkim	pand	%xmm2,%xmm0
1061299389Sjkim	movdqa	(%ebx),%xmm2
1062299389Sjkim.byte	102,15,56,0,208
1063299389Sjkim	movdqa	16(%ebx),%xmm0
1064299389Sjkim.byte	102,15,56,0,193
1065299389Sjkim	pxor	%xmm2,%xmm0
1066299389Sjkim	ret
1067299389Sjkim.size	_vpaes_schedule_transform,.-_vpaes_schedule_transform
1068299389Sjkim.type	_vpaes_schedule_mangle,@function
1069299389Sjkim.align	16
1070299389Sjkim_vpaes_schedule_mangle:
1071299389Sjkim	movdqa	%xmm0,%xmm4
1072299389Sjkim	movdqa	128(%ebp),%xmm5
1073299389Sjkim	testl	%edi,%edi
1074299389Sjkim	jnz	.L014schedule_mangle_dec
1075299389Sjkim	addl	$16,%edx
1076299389Sjkim	pxor	336(%ebp),%xmm4
1077299389Sjkim.byte	102,15,56,0,229
1078299389Sjkim	movdqa	%xmm4,%xmm3
1079299389Sjkim.byte	102,15,56,0,229
1080299389Sjkim	pxor	%xmm4,%xmm3
1081299389Sjkim.byte	102,15,56,0,229
1082299389Sjkim	pxor	%xmm4,%xmm3
1083299389Sjkim	jmp	.L015schedule_mangle_both
1084299389Sjkim.align	16
1085299389Sjkim.L014schedule_mangle_dec:
1086299389Sjkim	movdqa	-16(%ebp),%xmm2
1087299389Sjkim	leal	416(%ebp),%esi
1088299389Sjkim	movdqa	%xmm2,%xmm1
1089299389Sjkim	pandn	%xmm4,%xmm1
1090299389Sjkim	psrld	$4,%xmm1
1091299389Sjkim	pand	%xmm2,%xmm4
1092299389Sjkim	movdqa	(%esi),%xmm2
1093299389Sjkim.byte	102,15,56,0,212
1094299389Sjkim	movdqa	16(%esi),%xmm3
1095299389Sjkim.byte	102,15,56,0,217
1096299389Sjkim	pxor	%xmm2,%xmm3
1097299389Sjkim.byte	102,15,56,0,221
1098299389Sjkim	movdqa	32(%esi),%xmm2
1099299389Sjkim.byte	102,15,56,0,212
1100299389Sjkim	pxor	%xmm3,%xmm2
1101299389Sjkim	movdqa	48(%esi),%xmm3
1102299389Sjkim.byte	102,15,56,0,217
1103299389Sjkim	pxor	%xmm2,%xmm3
1104299389Sjkim.byte	102,15,56,0,221
1105299389Sjkim	movdqa	64(%esi),%xmm2
1106299389Sjkim.byte	102,15,56,0,212
1107299389Sjkim	pxor	%xmm3,%xmm2
1108299389Sjkim	movdqa	80(%esi),%xmm3
1109299389Sjkim.byte	102,15,56,0,217
1110299389Sjkim	pxor	%xmm2,%xmm3
1111299389Sjkim.byte	102,15,56,0,221
1112299389Sjkim	movdqa	96(%esi),%xmm2
1113299389Sjkim.byte	102,15,56,0,212
1114299389Sjkim	pxor	%xmm3,%xmm2
1115299389Sjkim	movdqa	112(%esi),%xmm3
1116299389Sjkim.byte	102,15,56,0,217
1117299389Sjkim	pxor	%xmm2,%xmm3
1118299389Sjkim	addl	$-16,%edx
1119299389Sjkim.L015schedule_mangle_both:
1120299389Sjkim	movdqa	256(%ebp,%ecx,1),%xmm1
1121299389Sjkim.byte	102,15,56,0,217
1122299389Sjkim	addl	$-16,%ecx
1123299389Sjkim	andl	$48,%ecx
1124299389Sjkim	movdqu	%xmm3,(%edx)
1125299389Sjkim	ret
1126299389Sjkim.size	_vpaes_schedule_mangle,.-_vpaes_schedule_mangle
1127299389Sjkim.globl	vpaes_set_encrypt_key
1128299389Sjkim.type	vpaes_set_encrypt_key,@function
1129299389Sjkim.align	16
1130299389Sjkimvpaes_set_encrypt_key:
1131299389Sjkim.L_vpaes_set_encrypt_key_begin:
1132299389Sjkim	pushl	%ebp
1133299389Sjkim	pushl	%ebx
1134299389Sjkim	pushl	%esi
1135299389Sjkim	pushl	%edi
1136299389Sjkim	movl	20(%esp),%esi
1137299389Sjkim	leal	-56(%esp),%ebx
1138299389Sjkim	movl	24(%esp),%eax
1139299389Sjkim	andl	$-16,%ebx
1140299389Sjkim	movl	28(%esp),%edx
1141299389Sjkim	xchgl	%esp,%ebx
1142299389Sjkim	movl	%ebx,48(%esp)
1143299389Sjkim	movl	%eax,%ebx
1144299389Sjkim	shrl	$5,%ebx
1145299389Sjkim	addl	$5,%ebx
1146299389Sjkim	movl	%ebx,240(%edx)
1147299389Sjkim	movl	$48,%ecx
1148299389Sjkim	movl	$0,%edi
1149299389Sjkim	leal	.L_vpaes_consts+0x30-.L016pic_point,%ebp
1150299389Sjkim	call	_vpaes_schedule_core
1151299389Sjkim.L016pic_point:
1152299389Sjkim	movl	48(%esp),%esp
1153299389Sjkim	xorl	%eax,%eax
1154299389Sjkim	popl	%edi
1155299389Sjkim	popl	%esi
1156299389Sjkim	popl	%ebx
1157299389Sjkim	popl	%ebp
1158299389Sjkim	ret
1159299389Sjkim.size	vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
1160299389Sjkim.globl	vpaes_set_decrypt_key
1161299389Sjkim.type	vpaes_set_decrypt_key,@function
1162299389Sjkim.align	16
1163299389Sjkimvpaes_set_decrypt_key:
1164299389Sjkim.L_vpaes_set_decrypt_key_begin:
1165299389Sjkim	pushl	%ebp
1166299389Sjkim	pushl	%ebx
1167299389Sjkim	pushl	%esi
1168299389Sjkim	pushl	%edi
1169299389Sjkim	movl	20(%esp),%esi
1170299389Sjkim	leal	-56(%esp),%ebx
1171299389Sjkim	movl	24(%esp),%eax
1172299389Sjkim	andl	$-16,%ebx
1173299389Sjkim	movl	28(%esp),%edx
1174299389Sjkim	xchgl	%esp,%ebx
1175299389Sjkim	movl	%ebx,48(%esp)
1176299389Sjkim	movl	%eax,%ebx
1177299389Sjkim	shrl	$5,%ebx
1178299389Sjkim	addl	$5,%ebx
1179299389Sjkim	movl	%ebx,240(%edx)
1180299389Sjkim	shll	$4,%ebx
1181299389Sjkim	leal	16(%edx,%ebx,1),%edx
1182299389Sjkim	movl	$1,%edi
1183299389Sjkim	movl	%eax,%ecx
1184299389Sjkim	shrl	$1,%ecx
1185299389Sjkim	andl	$32,%ecx
1186299389Sjkim	xorl	$32,%ecx
1187299389Sjkim	leal	.L_vpaes_consts+0x30-.L017pic_point,%ebp
1188299389Sjkim	call	_vpaes_schedule_core
1189299389Sjkim.L017pic_point:
1190299389Sjkim	movl	48(%esp),%esp
1191299389Sjkim	xorl	%eax,%eax
1192299389Sjkim	popl	%edi
1193299389Sjkim	popl	%esi
1194299389Sjkim	popl	%ebx
1195299389Sjkim	popl	%ebp
1196299389Sjkim	ret
1197299389Sjkim.size	vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
1198299389Sjkim.globl	vpaes_encrypt
1199299389Sjkim.type	vpaes_encrypt,@function
1200299389Sjkim.align	16
1201299389Sjkimvpaes_encrypt:
1202299389Sjkim.L_vpaes_encrypt_begin:
1203299389Sjkim	pushl	%ebp
1204299389Sjkim	pushl	%ebx
1205299389Sjkim	pushl	%esi
1206299389Sjkim	pushl	%edi
1207299389Sjkim	leal	.L_vpaes_consts+0x30-.L018pic_point,%ebp
1208299389Sjkim	call	_vpaes_preheat
1209299389Sjkim.L018pic_point:
1210299389Sjkim	movl	20(%esp),%esi
1211299389Sjkim	leal	-56(%esp),%ebx
1212299389Sjkim	movl	24(%esp),%edi
1213299389Sjkim	andl	$-16,%ebx
1214299389Sjkim	movl	28(%esp),%edx
1215299389Sjkim	xchgl	%esp,%ebx
1216299389Sjkim	movl	%ebx,48(%esp)
1217299389Sjkim	movdqu	(%esi),%xmm0
1218299389Sjkim	call	_vpaes_encrypt_core
1219299389Sjkim	movdqu	%xmm0,(%edi)
1220299389Sjkim	movl	48(%esp),%esp
1221299389Sjkim	popl	%edi
1222299389Sjkim	popl	%esi
1223299389Sjkim	popl	%ebx
1224299389Sjkim	popl	%ebp
1225299389Sjkim	ret
1226299389Sjkim.size	vpaes_encrypt,.-.L_vpaes_encrypt_begin
1227299389Sjkim.globl	vpaes_decrypt
1228299389Sjkim.type	vpaes_decrypt,@function
1229299389Sjkim.align	16
1230299389Sjkimvpaes_decrypt:
1231299389Sjkim.L_vpaes_decrypt_begin:
1232299389Sjkim	pushl	%ebp
1233299389Sjkim	pushl	%ebx
1234299389Sjkim	pushl	%esi
1235299389Sjkim	pushl	%edi
1236299389Sjkim	leal	.L_vpaes_consts+0x30-.L019pic_point,%ebp
1237299389Sjkim	call	_vpaes_preheat
1238299389Sjkim.L019pic_point:
1239299389Sjkim	movl	20(%esp),%esi
1240299389Sjkim	leal	-56(%esp),%ebx
1241299389Sjkim	movl	24(%esp),%edi
1242299389Sjkim	andl	$-16,%ebx
1243299389Sjkim	movl	28(%esp),%edx
1244299389Sjkim	xchgl	%esp,%ebx
1245299389Sjkim	movl	%ebx,48(%esp)
1246299389Sjkim	movdqu	(%esi),%xmm0
1247299389Sjkim	call	_vpaes_decrypt_core
1248299389Sjkim	movdqu	%xmm0,(%edi)
1249299389Sjkim	movl	48(%esp),%esp
1250299389Sjkim	popl	%edi
1251299389Sjkim	popl	%esi
1252299389Sjkim	popl	%ebx
1253299389Sjkim	popl	%ebp
1254299389Sjkim	ret
1255299389Sjkim.size	vpaes_decrypt,.-.L_vpaes_decrypt_begin
1256299389Sjkim.globl	vpaes_cbc_encrypt
1257299389Sjkim.type	vpaes_cbc_encrypt,@function
1258299389Sjkim.align	16
1259299389Sjkimvpaes_cbc_encrypt:
1260299389Sjkim.L_vpaes_cbc_encrypt_begin:
1261299389Sjkim	pushl	%ebp
1262299389Sjkim	pushl	%ebx
1263299389Sjkim	pushl	%esi
1264299389Sjkim	pushl	%edi
1265299389Sjkim	movl	20(%esp),%esi
1266299389Sjkim	movl	24(%esp),%edi
1267299389Sjkim	movl	28(%esp),%eax
1268299389Sjkim	movl	32(%esp),%edx
1269299389Sjkim	subl	$16,%eax
1270299389Sjkim	jc	.L020cbc_abort
1271299389Sjkim	leal	-56(%esp),%ebx
1272299389Sjkim	movl	36(%esp),%ebp
1273299389Sjkim	andl	$-16,%ebx
1274299389Sjkim	movl	40(%esp),%ecx
1275299389Sjkim	xchgl	%esp,%ebx
1276299389Sjkim	movdqu	(%ebp),%xmm1
1277299389Sjkim	subl	%esi,%edi
1278299389Sjkim	movl	%ebx,48(%esp)
1279299389Sjkim	movl	%edi,(%esp)
1280299389Sjkim	movl	%edx,4(%esp)
1281299389Sjkim	movl	%ebp,8(%esp)
1282299389Sjkim	movl	%eax,%edi
1283299389Sjkim	leal	.L_vpaes_consts+0x30-.L021pic_point,%ebp
1284299389Sjkim	call	_vpaes_preheat
1285299389Sjkim.L021pic_point:
1286299389Sjkim	cmpl	$0,%ecx
1287299389Sjkim	je	.L022cbc_dec_loop
1288299389Sjkim	jmp	.L023cbc_enc_loop
1289299389Sjkim.align	16
1290299389Sjkim.L023cbc_enc_loop:
1291299389Sjkim	movdqu	(%esi),%xmm0
1292299389Sjkim	pxor	%xmm1,%xmm0
1293299389Sjkim	call	_vpaes_encrypt_core
1294299389Sjkim	movl	(%esp),%ebx
1295299389Sjkim	movl	4(%esp),%edx
1296299389Sjkim	movdqa	%xmm0,%xmm1
1297299389Sjkim	movdqu	%xmm0,(%ebx,%esi,1)
1298299389Sjkim	leal	16(%esi),%esi
1299299389Sjkim	subl	$16,%edi
1300299389Sjkim	jnc	.L023cbc_enc_loop
1301299389Sjkim	jmp	.L024cbc_done
1302299389Sjkim.align	16
1303299389Sjkim.L022cbc_dec_loop:
1304299389Sjkim	movdqu	(%esi),%xmm0
1305299389Sjkim	movdqa	%xmm1,16(%esp)
1306299389Sjkim	movdqa	%xmm0,32(%esp)
1307299389Sjkim	call	_vpaes_decrypt_core
1308299389Sjkim	movl	(%esp),%ebx
1309299389Sjkim	movl	4(%esp),%edx
1310299389Sjkim	pxor	16(%esp),%xmm0
1311299389Sjkim	movdqa	32(%esp),%xmm1
1312299389Sjkim	movdqu	%xmm0,(%ebx,%esi,1)
1313299389Sjkim	leal	16(%esi),%esi
1314299389Sjkim	subl	$16,%edi
1315299389Sjkim	jnc	.L022cbc_dec_loop
1316299389Sjkim.L024cbc_done:
1317299389Sjkim	movl	8(%esp),%ebx
1318299389Sjkim	movl	48(%esp),%esp
1319299389Sjkim	movdqu	%xmm1,(%ebx)
1320299389Sjkim.L020cbc_abort:
1321299389Sjkim	popl	%edi
1322299389Sjkim	popl	%esi
1323299389Sjkim	popl	%ebx
1324299389Sjkim	popl	%ebp
1325299389Sjkim	ret
1326299389Sjkim.size	vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
1327299389Sjkim#endif
1328