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
504 vpaes_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
542 vpaes_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
585 vpaes_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
619 vpaes_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
653 vpaes_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
732 0:
733 	.asciz "GNU"
734 1:
735 	.p2align 2
736 	.long 0xc0000002
737 	.long 3f - 2f
738 2:
739 	.long 3
740 3:
741 	.p2align 2
742 4:
743