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