• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.text
2.align	6,0x90
3L_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	6,0x90
59.align	4
60__vpaes_preheat:
61	%ifdef __CET__
62
63.byte	243,15,30,251
64	%endif
65
66	addl	(%esp),%ebp
67	movdqa	-48(%ebp),%xmm7
68	movdqa	-16(%ebp),%xmm6
69	ret
70.align	4
71__vpaes_encrypt_core:
72	%ifdef __CET__
73
74.byte	243,15,30,251
75	%endif
76
77	movl	$16,%ecx
78	movl	240(%edx),%eax
79	movdqa	%xmm6,%xmm1
80	movdqa	(%ebp),%xmm2
81	pandn	%xmm0,%xmm1
82	pand	%xmm6,%xmm0
83	movdqu	(%edx),%xmm5
84.byte	102,15,56,0,208
85	movdqa	16(%ebp),%xmm0
86	pxor	%xmm5,%xmm2
87	psrld	$4,%xmm1
88	addl	$16,%edx
89.byte	102,15,56,0,193
90	leal	192(%ebp),%ebx
91	pxor	%xmm2,%xmm0
92	jmp	L000enc_entry
93.align	4,0x90
94L001enc_loop:
95	movdqa	32(%ebp),%xmm4
96	movdqa	48(%ebp),%xmm0
97.byte	102,15,56,0,226
98.byte	102,15,56,0,195
99	pxor	%xmm5,%xmm4
100	movdqa	64(%ebp),%xmm5
101	pxor	%xmm4,%xmm0
102	movdqa	-64(%ebx,%ecx,1),%xmm1
103.byte	102,15,56,0,234
104	movdqa	80(%ebp),%xmm2
105	movdqa	(%ebx,%ecx,1),%xmm4
106.byte	102,15,56,0,211
107	movdqa	%xmm0,%xmm3
108	pxor	%xmm5,%xmm2
109.byte	102,15,56,0,193
110	addl	$16,%edx
111	pxor	%xmm2,%xmm0
112.byte	102,15,56,0,220
113	addl	$16,%ecx
114	pxor	%xmm0,%xmm3
115.byte	102,15,56,0,193
116	andl	$48,%ecx
117	subl	$1,%eax
118	pxor	%xmm3,%xmm0
119L000enc_entry:
120	movdqa	%xmm6,%xmm1
121	movdqa	-32(%ebp),%xmm5
122	pandn	%xmm0,%xmm1
123	psrld	$4,%xmm1
124	pand	%xmm6,%xmm0
125.byte	102,15,56,0,232
126	movdqa	%xmm7,%xmm3
127	pxor	%xmm1,%xmm0
128.byte	102,15,56,0,217
129	movdqa	%xmm7,%xmm4
130	pxor	%xmm5,%xmm3
131.byte	102,15,56,0,224
132	movdqa	%xmm7,%xmm2
133	pxor	%xmm5,%xmm4
134.byte	102,15,56,0,211
135	movdqa	%xmm7,%xmm3
136	pxor	%xmm0,%xmm2
137.byte	102,15,56,0,220
138	movdqu	(%edx),%xmm5
139	pxor	%xmm1,%xmm3
140	jnz	L001enc_loop
141	movdqa	96(%ebp),%xmm4
142	movdqa	112(%ebp),%xmm0
143.byte	102,15,56,0,226
144	pxor	%xmm5,%xmm4
145.byte	102,15,56,0,195
146	movdqa	64(%ebx,%ecx,1),%xmm1
147	pxor	%xmm4,%xmm0
148.byte	102,15,56,0,193
149	ret
150.align	4
151__vpaes_decrypt_core:
152	%ifdef __CET__
153
154.byte	243,15,30,251
155	%endif
156
157	leal	608(%ebp),%ebx
158	movl	240(%edx),%eax
159	movdqa	%xmm6,%xmm1
160	movdqa	-64(%ebx),%xmm2
161	pandn	%xmm0,%xmm1
162	movl	%eax,%ecx
163	psrld	$4,%xmm1
164	movdqu	(%edx),%xmm5
165	shll	$4,%ecx
166	pand	%xmm6,%xmm0
167.byte	102,15,56,0,208
168	movdqa	-48(%ebx),%xmm0
169	xorl	$48,%ecx
170.byte	102,15,56,0,193
171	andl	$48,%ecx
172	pxor	%xmm5,%xmm2
173	movdqa	176(%ebp),%xmm5
174	pxor	%xmm2,%xmm0
175	addl	$16,%edx
176	leal	-352(%ebx,%ecx,1),%ecx
177	jmp	L002dec_entry
178.align	4,0x90
179L003dec_loop:
180	movdqa	-32(%ebx),%xmm4
181	movdqa	-16(%ebx),%xmm1
182.byte	102,15,56,0,226
183.byte	102,15,56,0,203
184	pxor	%xmm4,%xmm0
185	movdqa	(%ebx),%xmm4
186	pxor	%xmm1,%xmm0
187	movdqa	16(%ebx),%xmm1
188.byte	102,15,56,0,226
189.byte	102,15,56,0,197
190.byte	102,15,56,0,203
191	pxor	%xmm4,%xmm0
192	movdqa	32(%ebx),%xmm4
193	pxor	%xmm1,%xmm0
194	movdqa	48(%ebx),%xmm1
195.byte	102,15,56,0,226
196.byte	102,15,56,0,197
197.byte	102,15,56,0,203
198	pxor	%xmm4,%xmm0
199	movdqa	64(%ebx),%xmm4
200	pxor	%xmm1,%xmm0
201	movdqa	80(%ebx),%xmm1
202.byte	102,15,56,0,226
203.byte	102,15,56,0,197
204.byte	102,15,56,0,203
205	pxor	%xmm4,%xmm0
206	addl	$16,%edx
207.byte	102,15,58,15,237,12
208	pxor	%xmm1,%xmm0
209	subl	$1,%eax
210L002dec_entry:
211	movdqa	%xmm6,%xmm1
212	movdqa	-32(%ebp),%xmm2
213	pandn	%xmm0,%xmm1
214	pand	%xmm6,%xmm0
215	psrld	$4,%xmm1
216.byte	102,15,56,0,208
217	movdqa	%xmm7,%xmm3
218	pxor	%xmm1,%xmm0
219.byte	102,15,56,0,217
220	movdqa	%xmm7,%xmm4
221	pxor	%xmm2,%xmm3
222.byte	102,15,56,0,224
223	pxor	%xmm2,%xmm4
224	movdqa	%xmm7,%xmm2
225.byte	102,15,56,0,211
226	movdqa	%xmm7,%xmm3
227	pxor	%xmm0,%xmm2
228.byte	102,15,56,0,220
229	movdqu	(%edx),%xmm0
230	pxor	%xmm1,%xmm3
231	jnz	L003dec_loop
232	movdqa	96(%ebx),%xmm4
233.byte	102,15,56,0,226
234	pxor	%xmm0,%xmm4
235	movdqa	112(%ebx),%xmm0
236	movdqa	(%ecx),%xmm2
237.byte	102,15,56,0,195
238	pxor	%xmm4,%xmm0
239.byte	102,15,56,0,194
240	ret
241.align	4
242__vpaes_schedule_core:
243	%ifdef __CET__
244
245.byte	243,15,30,251
246	%endif
247
248	addl	(%esp),%ebp
249	movdqu	(%esi),%xmm0
250	movdqa	320(%ebp),%xmm2
251	movdqa	%xmm0,%xmm3
252	leal	(%ebp),%ebx
253	movdqa	%xmm2,4(%esp)
254	call	__vpaes_schedule_transform
255	movdqa	%xmm0,%xmm7
256	testl	%edi,%edi
257	jnz	L004schedule_am_decrypting
258	movdqu	%xmm0,(%edx)
259	jmp	L005schedule_go
260L004schedule_am_decrypting:
261	movdqa	256(%ebp,%ecx,1),%xmm1
262.byte	102,15,56,0,217
263	movdqu	%xmm3,(%edx)
264	xorl	$48,%ecx
265L005schedule_go:
266	cmpl	$192,%eax
267	ja	L006schedule_256
268	je	L007schedule_192
269L008schedule_128:
270	movl	$10,%eax
271L009loop_schedule_128:
272	call	__vpaes_schedule_round
273	decl	%eax
274	jz	L010schedule_mangle_last
275	call	__vpaes_schedule_mangle
276	jmp	L009loop_schedule_128
277.align	4,0x90
278L007schedule_192:
279	movdqu	8(%esi),%xmm0
280	call	__vpaes_schedule_transform
281	movdqa	%xmm0,%xmm6
282	pxor	%xmm4,%xmm4
283	movhlps	%xmm4,%xmm6
284	movl	$4,%eax
285L011loop_schedule_192:
286	call	__vpaes_schedule_round
287.byte	102,15,58,15,198,8
288	call	__vpaes_schedule_mangle
289	call	__vpaes_schedule_192_smear
290	call	__vpaes_schedule_mangle
291	call	__vpaes_schedule_round
292	decl	%eax
293	jz	L010schedule_mangle_last
294	call	__vpaes_schedule_mangle
295	call	__vpaes_schedule_192_smear
296	jmp	L011loop_schedule_192
297.align	4,0x90
298L006schedule_256:
299	movdqu	16(%esi),%xmm0
300	call	__vpaes_schedule_transform
301	movl	$7,%eax
302L012loop_schedule_256:
303	call	__vpaes_schedule_mangle
304	movdqa	%xmm0,%xmm6
305	call	__vpaes_schedule_round
306	decl	%eax
307	jz	L010schedule_mangle_last
308	call	__vpaes_schedule_mangle
309	pshufd	$255,%xmm0,%xmm0
310	movdqa	%xmm7,20(%esp)
311	movdqa	%xmm6,%xmm7
312	call	L_vpaes_schedule_low_round
313	movdqa	20(%esp),%xmm7
314	jmp	L012loop_schedule_256
315.align	4,0x90
316L010schedule_mangle_last:
317	leal	384(%ebp),%ebx
318	testl	%edi,%edi
319	jnz	L013schedule_mangle_last_dec
320	movdqa	256(%ebp,%ecx,1),%xmm1
321.byte	102,15,56,0,193
322	leal	352(%ebp),%ebx
323	addl	$32,%edx
324L013schedule_mangle_last_dec:
325	addl	$-16,%edx
326	pxor	336(%ebp),%xmm0
327	call	__vpaes_schedule_transform
328	movdqu	%xmm0,(%edx)
329	pxor	%xmm0,%xmm0
330	pxor	%xmm1,%xmm1
331	pxor	%xmm2,%xmm2
332	pxor	%xmm3,%xmm3
333	pxor	%xmm4,%xmm4
334	pxor	%xmm5,%xmm5
335	pxor	%xmm6,%xmm6
336	pxor	%xmm7,%xmm7
337	ret
338.align	4
339__vpaes_schedule_192_smear:
340	%ifdef __CET__
341
342.byte	243,15,30,251
343	%endif
344
345	pshufd	$128,%xmm6,%xmm1
346	pshufd	$254,%xmm7,%xmm0
347	pxor	%xmm1,%xmm6
348	pxor	%xmm1,%xmm1
349	pxor	%xmm0,%xmm6
350	movdqa	%xmm6,%xmm0
351	movhlps	%xmm1,%xmm6
352	ret
353.align	4
354__vpaes_schedule_round:
355	%ifdef __CET__
356
357.byte	243,15,30,251
358	%endif
359
360	movdqa	8(%esp),%xmm2
361	pxor	%xmm1,%xmm1
362.byte	102,15,58,15,202,15
363.byte	102,15,58,15,210,15
364	pxor	%xmm1,%xmm7
365	pshufd	$255,%xmm0,%xmm0
366.byte	102,15,58,15,192,1
367	movdqa	%xmm2,8(%esp)
368L_vpaes_schedule_low_round:
369	movdqa	%xmm7,%xmm1
370	pslldq	$4,%xmm7
371	pxor	%xmm1,%xmm7
372	movdqa	%xmm7,%xmm1
373	pslldq	$8,%xmm7
374	pxor	%xmm1,%xmm7
375	pxor	336(%ebp),%xmm7
376	movdqa	-16(%ebp),%xmm4
377	movdqa	-48(%ebp),%xmm5
378	movdqa	%xmm4,%xmm1
379	pandn	%xmm0,%xmm1
380	psrld	$4,%xmm1
381	pand	%xmm4,%xmm0
382	movdqa	-32(%ebp),%xmm2
383.byte	102,15,56,0,208
384	pxor	%xmm1,%xmm0
385	movdqa	%xmm5,%xmm3
386.byte	102,15,56,0,217
387	pxor	%xmm2,%xmm3
388	movdqa	%xmm5,%xmm4
389.byte	102,15,56,0,224
390	pxor	%xmm2,%xmm4
391	movdqa	%xmm5,%xmm2
392.byte	102,15,56,0,211
393	pxor	%xmm0,%xmm2
394	movdqa	%xmm5,%xmm3
395.byte	102,15,56,0,220
396	pxor	%xmm1,%xmm3
397	movdqa	32(%ebp),%xmm4
398.byte	102,15,56,0,226
399	movdqa	48(%ebp),%xmm0
400.byte	102,15,56,0,195
401	pxor	%xmm4,%xmm0
402	pxor	%xmm7,%xmm0
403	movdqa	%xmm0,%xmm7
404	ret
405.align	4
406__vpaes_schedule_transform:
407	%ifdef __CET__
408
409.byte	243,15,30,251
410	%endif
411
412	movdqa	-16(%ebp),%xmm2
413	movdqa	%xmm2,%xmm1
414	pandn	%xmm0,%xmm1
415	psrld	$4,%xmm1
416	pand	%xmm2,%xmm0
417	movdqa	(%ebx),%xmm2
418.byte	102,15,56,0,208
419	movdqa	16(%ebx),%xmm0
420.byte	102,15,56,0,193
421	pxor	%xmm2,%xmm0
422	ret
423.align	4
424__vpaes_schedule_mangle:
425	%ifdef __CET__
426
427.byte	243,15,30,251
428	%endif
429
430	movdqa	%xmm0,%xmm4
431	movdqa	128(%ebp),%xmm5
432	testl	%edi,%edi
433	jnz	L014schedule_mangle_dec
434	addl	$16,%edx
435	pxor	336(%ebp),%xmm4
436.byte	102,15,56,0,229
437	movdqa	%xmm4,%xmm3
438.byte	102,15,56,0,229
439	pxor	%xmm4,%xmm3
440.byte	102,15,56,0,229
441	pxor	%xmm4,%xmm3
442	jmp	L015schedule_mangle_both
443.align	4,0x90
444L014schedule_mangle_dec:
445	movdqa	-16(%ebp),%xmm2
446	leal	416(%ebp),%esi
447	movdqa	%xmm2,%xmm1
448	pandn	%xmm4,%xmm1
449	psrld	$4,%xmm1
450	pand	%xmm2,%xmm4
451	movdqa	(%esi),%xmm2
452.byte	102,15,56,0,212
453	movdqa	16(%esi),%xmm3
454.byte	102,15,56,0,217
455	pxor	%xmm2,%xmm3
456.byte	102,15,56,0,221
457	movdqa	32(%esi),%xmm2
458.byte	102,15,56,0,212
459	pxor	%xmm3,%xmm2
460	movdqa	48(%esi),%xmm3
461.byte	102,15,56,0,217
462	pxor	%xmm2,%xmm3
463.byte	102,15,56,0,221
464	movdqa	64(%esi),%xmm2
465.byte	102,15,56,0,212
466	pxor	%xmm3,%xmm2
467	movdqa	80(%esi),%xmm3
468.byte	102,15,56,0,217
469	pxor	%xmm2,%xmm3
470.byte	102,15,56,0,221
471	movdqa	96(%esi),%xmm2
472.byte	102,15,56,0,212
473	pxor	%xmm3,%xmm2
474	movdqa	112(%esi),%xmm3
475.byte	102,15,56,0,217
476	pxor	%xmm2,%xmm3
477	addl	$-16,%edx
478L015schedule_mangle_both:
479	movdqa	256(%ebp,%ecx,1),%xmm1
480.byte	102,15,56,0,217
481	addl	$-16,%ecx
482	andl	$48,%ecx
483	movdqu	%xmm3,(%edx)
484	ret
485.globl	_vpaes_set_encrypt_key
486.align	4
487_vpaes_set_encrypt_key:
488L_vpaes_set_encrypt_key_begin:
489	%ifdef __CET__
490
491.byte	243,15,30,251
492	%endif
493
494	pushl	%ebp
495	pushl	%ebx
496	pushl	%esi
497	pushl	%edi
498	movl	20(%esp),%esi
499	leal	-56(%esp),%ebx
500	movl	24(%esp),%eax
501	andl	$-16,%ebx
502	movl	28(%esp),%edx
503	xchgl	%esp,%ebx
504	movl	%ebx,48(%esp)
505	movl	%eax,%ebx
506	shrl	$5,%ebx
507	addl	$5,%ebx
508	movl	%ebx,240(%edx)
509	movl	$48,%ecx
510	movl	$0,%edi
511	leal	L_vpaes_consts+0x30-L016pic_point,%ebp
512	call	__vpaes_schedule_core
513L016pic_point:
514	movl	48(%esp),%esp
515	xorl	%eax,%eax
516	popl	%edi
517	popl	%esi
518	popl	%ebx
519	popl	%ebp
520	ret
521.globl	_vpaes_set_decrypt_key
522.align	4
523_vpaes_set_decrypt_key:
524L_vpaes_set_decrypt_key_begin:
525	%ifdef __CET__
526
527.byte	243,15,30,251
528	%endif
529
530	pushl	%ebp
531	pushl	%ebx
532	pushl	%esi
533	pushl	%edi
534	movl	20(%esp),%esi
535	leal	-56(%esp),%ebx
536	movl	24(%esp),%eax
537	andl	$-16,%ebx
538	movl	28(%esp),%edx
539	xchgl	%esp,%ebx
540	movl	%ebx,48(%esp)
541	movl	%eax,%ebx
542	shrl	$5,%ebx
543	addl	$5,%ebx
544	movl	%ebx,240(%edx)
545	shll	$4,%ebx
546	leal	16(%edx,%ebx,1),%edx
547	movl	$1,%edi
548	movl	%eax,%ecx
549	shrl	$1,%ecx
550	andl	$32,%ecx
551	xorl	$32,%ecx
552	leal	L_vpaes_consts+0x30-L017pic_point,%ebp
553	call	__vpaes_schedule_core
554L017pic_point:
555	movl	48(%esp),%esp
556	xorl	%eax,%eax
557	popl	%edi
558	popl	%esi
559	popl	%ebx
560	popl	%ebp
561	ret
562.globl	_vpaes_encrypt
563.align	4
564_vpaes_encrypt:
565L_vpaes_encrypt_begin:
566	%ifdef __CET__
567
568.byte	243,15,30,251
569	%endif
570
571	pushl	%ebp
572	pushl	%ebx
573	pushl	%esi
574	pushl	%edi
575	leal	L_vpaes_consts+0x30-L018pic_point,%ebp
576	call	__vpaes_preheat
577L018pic_point:
578	movl	20(%esp),%esi
579	leal	-56(%esp),%ebx
580	movl	24(%esp),%edi
581	andl	$-16,%ebx
582	movl	28(%esp),%edx
583	xchgl	%esp,%ebx
584	movl	%ebx,48(%esp)
585	movdqu	(%esi),%xmm0
586	call	__vpaes_encrypt_core
587	movdqu	%xmm0,(%edi)
588	movl	48(%esp),%esp
589	popl	%edi
590	popl	%esi
591	popl	%ebx
592	popl	%ebp
593	ret
594.globl	_vpaes_decrypt
595.align	4
596_vpaes_decrypt:
597L_vpaes_decrypt_begin:
598	%ifdef __CET__
599
600.byte	243,15,30,251
601	%endif
602
603	pushl	%ebp
604	pushl	%ebx
605	pushl	%esi
606	pushl	%edi
607	leal	L_vpaes_consts+0x30-L019pic_point,%ebp
608	call	__vpaes_preheat
609L019pic_point:
610	movl	20(%esp),%esi
611	leal	-56(%esp),%ebx
612	movl	24(%esp),%edi
613	andl	$-16,%ebx
614	movl	28(%esp),%edx
615	xchgl	%esp,%ebx
616	movl	%ebx,48(%esp)
617	movdqu	(%esi),%xmm0
618	call	__vpaes_decrypt_core
619	movdqu	%xmm0,(%edi)
620	movl	48(%esp),%esp
621	popl	%edi
622	popl	%esi
623	popl	%ebx
624	popl	%ebp
625	ret
626.globl	_vpaes_cbc_encrypt
627.align	4
628_vpaes_cbc_encrypt:
629L_vpaes_cbc_encrypt_begin:
630	%ifdef __CET__
631
632.byte	243,15,30,251
633	%endif
634
635	pushl	%ebp
636	pushl	%ebx
637	pushl	%esi
638	pushl	%edi
639	movl	20(%esp),%esi
640	movl	24(%esp),%edi
641	movl	28(%esp),%eax
642	movl	32(%esp),%edx
643	subl	$16,%eax
644	jc	L020cbc_abort
645	leal	-56(%esp),%ebx
646	movl	36(%esp),%ebp
647	andl	$-16,%ebx
648	movl	40(%esp),%ecx
649	xchgl	%esp,%ebx
650	movdqu	(%ebp),%xmm1
651	subl	%esi,%edi
652	movl	%ebx,48(%esp)
653	movl	%edi,(%esp)
654	movl	%edx,4(%esp)
655	movl	%ebp,8(%esp)
656	movl	%eax,%edi
657	leal	L_vpaes_consts+0x30-L021pic_point,%ebp
658	call	__vpaes_preheat
659L021pic_point:
660	cmpl	$0,%ecx
661	je	L022cbc_dec_loop
662	jmp	L023cbc_enc_loop
663.align	4,0x90
664L023cbc_enc_loop:
665	movdqu	(%esi),%xmm0
666	pxor	%xmm1,%xmm0
667	call	__vpaes_encrypt_core
668	movl	(%esp),%ebx
669	movl	4(%esp),%edx
670	movdqa	%xmm0,%xmm1
671	movdqu	%xmm0,(%ebx,%esi,1)
672	leal	16(%esi),%esi
673	subl	$16,%edi
674	jnc	L023cbc_enc_loop
675	jmp	L024cbc_done
676.align	4,0x90
677L022cbc_dec_loop:
678	movdqu	(%esi),%xmm0
679	movdqa	%xmm1,16(%esp)
680	movdqa	%xmm0,32(%esp)
681	call	__vpaes_decrypt_core
682	movl	(%esp),%ebx
683	movl	4(%esp),%edx
684	pxor	16(%esp),%xmm0
685	movdqa	32(%esp),%xmm1
686	movdqu	%xmm0,(%ebx,%esi,1)
687	leal	16(%esi),%esi
688	subl	$16,%edi
689	jnc	L022cbc_dec_loop
690L024cbc_done:
691	movl	8(%esp),%ebx
692	movl	48(%esp),%esp
693	movdqu	%xmm1,(%ebx)
694L020cbc_abort:
695	popl	%edi
696	popl	%esi
697	popl	%ebx
698	popl	%ebp
699	ret
700