1 .text
2 .globl	_aesni_encrypt
3 .type	_aesni_encrypt,@function
4 .align	4
5 _aesni_encrypt:
6 L_aesni_encrypt_begin:
7 	%ifdef __CET__
8 
9 .byte	243,15,30,251
10 	%endif
11 
12 	movl	4(%esp),%eax
13 	movl	12(%esp),%edx
14 	movups	(%eax),%xmm2
15 	movl	240(%edx),%ecx
16 	movl	8(%esp),%eax
17 	movups	(%edx),%xmm0
18 	movups	16(%edx),%xmm1
19 	leal	32(%edx),%edx
20 	xorps	%xmm0,%xmm2
21 L000enc1_loop_1:
22 .byte	102,15,56,220,209
23 	decl	%ecx
24 	movups	(%edx),%xmm1
25 	leal	16(%edx),%edx
26 	jnz	L000enc1_loop_1
27 .byte	102,15,56,221,209
28 	pxor	%xmm0,%xmm0
29 	pxor	%xmm1,%xmm1
30 	movups	%xmm2,(%eax)
31 	pxor	%xmm2,%xmm2
32 	ret
33 .globl	_aesni_decrypt
34 .type	_aesni_decrypt,@function
35 .align	4
36 _aesni_decrypt:
37 L_aesni_decrypt_begin:
38 	%ifdef __CET__
39 
40 .byte	243,15,30,251
41 	%endif
42 
43 	movl	4(%esp),%eax
44 	movl	12(%esp),%edx
45 	movups	(%eax),%xmm2
46 	movl	240(%edx),%ecx
47 	movl	8(%esp),%eax
48 	movups	(%edx),%xmm0
49 	movups	16(%edx),%xmm1
50 	leal	32(%edx),%edx
51 	xorps	%xmm0,%xmm2
52 L001dec1_loop_2:
53 .byte	102,15,56,222,209
54 	decl	%ecx
55 	movups	(%edx),%xmm1
56 	leal	16(%edx),%edx
57 	jnz	L001dec1_loop_2
58 .byte	102,15,56,223,209
59 	pxor	%xmm0,%xmm0
60 	pxor	%xmm1,%xmm1
61 	movups	%xmm2,(%eax)
62 	pxor	%xmm2,%xmm2
63 	ret
64 .type	__aesni_encrypt2,@function
65 .align	4
66 __aesni_encrypt2:
67 	%ifdef __CET__
68 
69 .byte	243,15,30,251
70 	%endif
71 
72 	movups	(%edx),%xmm0
73 	shll	$4,%ecx
74 	movups	16(%edx),%xmm1
75 	xorps	%xmm0,%xmm2
76 	pxor	%xmm0,%xmm3
77 	movups	32(%edx),%xmm0
78 	leal	32(%edx,%ecx,1),%edx
79 	negl	%ecx
80 	addl	$16,%ecx
81 L002enc2_loop:
82 .byte	102,15,56,220,209
83 .byte	102,15,56,220,217
84 	movups	(%edx,%ecx,1),%xmm1
85 	addl	$32,%ecx
86 .byte	102,15,56,220,208
87 .byte	102,15,56,220,216
88 	movups	-16(%edx,%ecx,1),%xmm0
89 	jnz	L002enc2_loop
90 .byte	102,15,56,220,209
91 .byte	102,15,56,220,217
92 .byte	102,15,56,221,208
93 .byte	102,15,56,221,216
94 	ret
95 .type	__aesni_decrypt2,@function
96 .align	4
97 __aesni_decrypt2:
98 	%ifdef __CET__
99 
100 .byte	243,15,30,251
101 	%endif
102 
103 	movups	(%edx),%xmm0
104 	shll	$4,%ecx
105 	movups	16(%edx),%xmm1
106 	xorps	%xmm0,%xmm2
107 	pxor	%xmm0,%xmm3
108 	movups	32(%edx),%xmm0
109 	leal	32(%edx,%ecx,1),%edx
110 	negl	%ecx
111 	addl	$16,%ecx
112 L003dec2_loop:
113 .byte	102,15,56,222,209
114 .byte	102,15,56,222,217
115 	movups	(%edx,%ecx,1),%xmm1
116 	addl	$32,%ecx
117 .byte	102,15,56,222,208
118 .byte	102,15,56,222,216
119 	movups	-16(%edx,%ecx,1),%xmm0
120 	jnz	L003dec2_loop
121 .byte	102,15,56,222,209
122 .byte	102,15,56,222,217
123 .byte	102,15,56,223,208
124 .byte	102,15,56,223,216
125 	ret
126 .type	__aesni_encrypt3,@function
127 .align	4
128 __aesni_encrypt3:
129 	%ifdef __CET__
130 
131 .byte	243,15,30,251
132 	%endif
133 
134 	movups	(%edx),%xmm0
135 	shll	$4,%ecx
136 	movups	16(%edx),%xmm1
137 	xorps	%xmm0,%xmm2
138 	pxor	%xmm0,%xmm3
139 	pxor	%xmm0,%xmm4
140 	movups	32(%edx),%xmm0
141 	leal	32(%edx,%ecx,1),%edx
142 	negl	%ecx
143 	addl	$16,%ecx
144 L004enc3_loop:
145 .byte	102,15,56,220,209
146 .byte	102,15,56,220,217
147 .byte	102,15,56,220,225
148 	movups	(%edx,%ecx,1),%xmm1
149 	addl	$32,%ecx
150 .byte	102,15,56,220,208
151 .byte	102,15,56,220,216
152 .byte	102,15,56,220,224
153 	movups	-16(%edx,%ecx,1),%xmm0
154 	jnz	L004enc3_loop
155 .byte	102,15,56,220,209
156 .byte	102,15,56,220,217
157 .byte	102,15,56,220,225
158 .byte	102,15,56,221,208
159 .byte	102,15,56,221,216
160 .byte	102,15,56,221,224
161 	ret
162 .type	__aesni_decrypt3,@function
163 .align	4
164 __aesni_decrypt3:
165 	%ifdef __CET__
166 
167 .byte	243,15,30,251
168 	%endif
169 
170 	movups	(%edx),%xmm0
171 	shll	$4,%ecx
172 	movups	16(%edx),%xmm1
173 	xorps	%xmm0,%xmm2
174 	pxor	%xmm0,%xmm3
175 	pxor	%xmm0,%xmm4
176 	movups	32(%edx),%xmm0
177 	leal	32(%edx,%ecx,1),%edx
178 	negl	%ecx
179 	addl	$16,%ecx
180 L005dec3_loop:
181 .byte	102,15,56,222,209
182 .byte	102,15,56,222,217
183 .byte	102,15,56,222,225
184 	movups	(%edx,%ecx,1),%xmm1
185 	addl	$32,%ecx
186 .byte	102,15,56,222,208
187 .byte	102,15,56,222,216
188 .byte	102,15,56,222,224
189 	movups	-16(%edx,%ecx,1),%xmm0
190 	jnz	L005dec3_loop
191 .byte	102,15,56,222,209
192 .byte	102,15,56,222,217
193 .byte	102,15,56,222,225
194 .byte	102,15,56,223,208
195 .byte	102,15,56,223,216
196 .byte	102,15,56,223,224
197 	ret
198 .type	__aesni_encrypt4,@function
199 .align	4
200 __aesni_encrypt4:
201 	%ifdef __CET__
202 
203 .byte	243,15,30,251
204 	%endif
205 
206 	movups	(%edx),%xmm0
207 	movups	16(%edx),%xmm1
208 	shll	$4,%ecx
209 	xorps	%xmm0,%xmm2
210 	pxor	%xmm0,%xmm3
211 	pxor	%xmm0,%xmm4
212 	pxor	%xmm0,%xmm5
213 	movups	32(%edx),%xmm0
214 	leal	32(%edx,%ecx,1),%edx
215 	negl	%ecx
216 .byte	15,31,64,0
217 	addl	$16,%ecx
218 L006enc4_loop:
219 .byte	102,15,56,220,209
220 .byte	102,15,56,220,217
221 .byte	102,15,56,220,225
222 .byte	102,15,56,220,233
223 	movups	(%edx,%ecx,1),%xmm1
224 	addl	$32,%ecx
225 .byte	102,15,56,220,208
226 .byte	102,15,56,220,216
227 .byte	102,15,56,220,224
228 .byte	102,15,56,220,232
229 	movups	-16(%edx,%ecx,1),%xmm0
230 	jnz	L006enc4_loop
231 .byte	102,15,56,220,209
232 .byte	102,15,56,220,217
233 .byte	102,15,56,220,225
234 .byte	102,15,56,220,233
235 .byte	102,15,56,221,208
236 .byte	102,15,56,221,216
237 .byte	102,15,56,221,224
238 .byte	102,15,56,221,232
239 	ret
240 .type	__aesni_decrypt4,@function
241 .align	4
242 __aesni_decrypt4:
243 	%ifdef __CET__
244 
245 .byte	243,15,30,251
246 	%endif
247 
248 	movups	(%edx),%xmm0
249 	movups	16(%edx),%xmm1
250 	shll	$4,%ecx
251 	xorps	%xmm0,%xmm2
252 	pxor	%xmm0,%xmm3
253 	pxor	%xmm0,%xmm4
254 	pxor	%xmm0,%xmm5
255 	movups	32(%edx),%xmm0
256 	leal	32(%edx,%ecx,1),%edx
257 	negl	%ecx
258 .byte	15,31,64,0
259 	addl	$16,%ecx
260 L007dec4_loop:
261 .byte	102,15,56,222,209
262 .byte	102,15,56,222,217
263 .byte	102,15,56,222,225
264 .byte	102,15,56,222,233
265 	movups	(%edx,%ecx,1),%xmm1
266 	addl	$32,%ecx
267 .byte	102,15,56,222,208
268 .byte	102,15,56,222,216
269 .byte	102,15,56,222,224
270 .byte	102,15,56,222,232
271 	movups	-16(%edx,%ecx,1),%xmm0
272 	jnz	L007dec4_loop
273 .byte	102,15,56,222,209
274 .byte	102,15,56,222,217
275 .byte	102,15,56,222,225
276 .byte	102,15,56,222,233
277 .byte	102,15,56,223,208
278 .byte	102,15,56,223,216
279 .byte	102,15,56,223,224
280 .byte	102,15,56,223,232
281 	ret
282 .type	__aesni_encrypt6,@function
283 .align	4
284 __aesni_encrypt6:
285 	%ifdef __CET__
286 
287 .byte	243,15,30,251
288 	%endif
289 
290 	movups	(%edx),%xmm0
291 	shll	$4,%ecx
292 	movups	16(%edx),%xmm1
293 	xorps	%xmm0,%xmm2
294 	pxor	%xmm0,%xmm3
295 	pxor	%xmm0,%xmm4
296 .byte	102,15,56,220,209
297 	pxor	%xmm0,%xmm5
298 	pxor	%xmm0,%xmm6
299 .byte	102,15,56,220,217
300 	leal	32(%edx,%ecx,1),%edx
301 	negl	%ecx
302 .byte	102,15,56,220,225
303 	pxor	%xmm0,%xmm7
304 	movups	(%edx,%ecx,1),%xmm0
305 	addl	$16,%ecx
306 	jmp	L008_aesni_encrypt6_inner
307 .align	4,0x90
308 L009enc6_loop:
309 .byte	102,15,56,220,209
310 .byte	102,15,56,220,217
311 .byte	102,15,56,220,225
312 L008_aesni_encrypt6_inner:
313 .byte	102,15,56,220,233
314 .byte	102,15,56,220,241
315 .byte	102,15,56,220,249
316 L_aesni_encrypt6_enter:
317 	movups	(%edx,%ecx,1),%xmm1
318 	addl	$32,%ecx
319 .byte	102,15,56,220,208
320 .byte	102,15,56,220,216
321 .byte	102,15,56,220,224
322 .byte	102,15,56,220,232
323 .byte	102,15,56,220,240
324 .byte	102,15,56,220,248
325 	movups	-16(%edx,%ecx,1),%xmm0
326 	jnz	L009enc6_loop
327 .byte	102,15,56,220,209
328 .byte	102,15,56,220,217
329 .byte	102,15,56,220,225
330 .byte	102,15,56,220,233
331 .byte	102,15,56,220,241
332 .byte	102,15,56,220,249
333 .byte	102,15,56,221,208
334 .byte	102,15,56,221,216
335 .byte	102,15,56,221,224
336 .byte	102,15,56,221,232
337 .byte	102,15,56,221,240
338 .byte	102,15,56,221,248
339 	ret
340 .type	__aesni_decrypt6,@function
341 .align	4
342 __aesni_decrypt6:
343 	%ifdef __CET__
344 
345 .byte	243,15,30,251
346 	%endif
347 
348 	movups	(%edx),%xmm0
349 	shll	$4,%ecx
350 	movups	16(%edx),%xmm1
351 	xorps	%xmm0,%xmm2
352 	pxor	%xmm0,%xmm3
353 	pxor	%xmm0,%xmm4
354 .byte	102,15,56,222,209
355 	pxor	%xmm0,%xmm5
356 	pxor	%xmm0,%xmm6
357 .byte	102,15,56,222,217
358 	leal	32(%edx,%ecx,1),%edx
359 	negl	%ecx
360 .byte	102,15,56,222,225
361 	pxor	%xmm0,%xmm7
362 	movups	(%edx,%ecx,1),%xmm0
363 	addl	$16,%ecx
364 	jmp	L010_aesni_decrypt6_inner
365 .align	4,0x90
366 L011dec6_loop:
367 .byte	102,15,56,222,209
368 .byte	102,15,56,222,217
369 .byte	102,15,56,222,225
370 L010_aesni_decrypt6_inner:
371 .byte	102,15,56,222,233
372 .byte	102,15,56,222,241
373 .byte	102,15,56,222,249
374 L_aesni_decrypt6_enter:
375 	movups	(%edx,%ecx,1),%xmm1
376 	addl	$32,%ecx
377 .byte	102,15,56,222,208
378 .byte	102,15,56,222,216
379 .byte	102,15,56,222,224
380 .byte	102,15,56,222,232
381 .byte	102,15,56,222,240
382 .byte	102,15,56,222,248
383 	movups	-16(%edx,%ecx,1),%xmm0
384 	jnz	L011dec6_loop
385 .byte	102,15,56,222,209
386 .byte	102,15,56,222,217
387 .byte	102,15,56,222,225
388 .byte	102,15,56,222,233
389 .byte	102,15,56,222,241
390 .byte	102,15,56,222,249
391 .byte	102,15,56,223,208
392 .byte	102,15,56,223,216
393 .byte	102,15,56,223,224
394 .byte	102,15,56,223,232
395 .byte	102,15,56,223,240
396 .byte	102,15,56,223,248
397 	ret
398 .globl	_aesni_ecb_encrypt
399 .type	_aesni_ecb_encrypt,@function
400 .align	4
401 _aesni_ecb_encrypt:
402 L_aesni_ecb_encrypt_begin:
403 	%ifdef __CET__
404 
405 .byte	243,15,30,251
406 	%endif
407 
408 	pushl	%ebp
409 	pushl	%ebx
410 	pushl	%esi
411 	pushl	%edi
412 	movl	20(%esp),%esi
413 	movl	24(%esp),%edi
414 	movl	28(%esp),%eax
415 	movl	32(%esp),%edx
416 	movl	36(%esp),%ebx
417 	andl	$-16,%eax
418 	jz	L012ecb_ret
419 	movl	240(%edx),%ecx
420 	testl	%ebx,%ebx
421 	jz	L013ecb_decrypt
422 	movl	%edx,%ebp
423 	movl	%ecx,%ebx
424 	cmpl	$96,%eax
425 	jb	L014ecb_enc_tail
426 	movdqu	(%esi),%xmm2
427 	movdqu	16(%esi),%xmm3
428 	movdqu	32(%esi),%xmm4
429 	movdqu	48(%esi),%xmm5
430 	movdqu	64(%esi),%xmm6
431 	movdqu	80(%esi),%xmm7
432 	leal	96(%esi),%esi
433 	subl	$96,%eax
434 	jmp	L015ecb_enc_loop6_enter
435 .align	4,0x90
436 L016ecb_enc_loop6:
437 	movups	%xmm2,(%edi)
438 	movdqu	(%esi),%xmm2
439 	movups	%xmm3,16(%edi)
440 	movdqu	16(%esi),%xmm3
441 	movups	%xmm4,32(%edi)
442 	movdqu	32(%esi),%xmm4
443 	movups	%xmm5,48(%edi)
444 	movdqu	48(%esi),%xmm5
445 	movups	%xmm6,64(%edi)
446 	movdqu	64(%esi),%xmm6
447 	movups	%xmm7,80(%edi)
448 	leal	96(%edi),%edi
449 	movdqu	80(%esi),%xmm7
450 	leal	96(%esi),%esi
451 L015ecb_enc_loop6_enter:
452 	call	__aesni_encrypt6
453 	movl	%ebp,%edx
454 	movl	%ebx,%ecx
455 	subl	$96,%eax
456 	jnc	L016ecb_enc_loop6
457 	movups	%xmm2,(%edi)
458 	movups	%xmm3,16(%edi)
459 	movups	%xmm4,32(%edi)
460 	movups	%xmm5,48(%edi)
461 	movups	%xmm6,64(%edi)
462 	movups	%xmm7,80(%edi)
463 	leal	96(%edi),%edi
464 	addl	$96,%eax
465 	jz	L012ecb_ret
466 L014ecb_enc_tail:
467 	movups	(%esi),%xmm2
468 	cmpl	$32,%eax
469 	jb	L017ecb_enc_one
470 	movups	16(%esi),%xmm3
471 	je	L018ecb_enc_two
472 	movups	32(%esi),%xmm4
473 	cmpl	$64,%eax
474 	jb	L019ecb_enc_three
475 	movups	48(%esi),%xmm5
476 	je	L020ecb_enc_four
477 	movups	64(%esi),%xmm6
478 	xorps	%xmm7,%xmm7
479 	call	__aesni_encrypt6
480 	movups	%xmm2,(%edi)
481 	movups	%xmm3,16(%edi)
482 	movups	%xmm4,32(%edi)
483 	movups	%xmm5,48(%edi)
484 	movups	%xmm6,64(%edi)
485 	jmp	L012ecb_ret
486 .align	4,0x90
487 L017ecb_enc_one:
488 	movups	(%edx),%xmm0
489 	movups	16(%edx),%xmm1
490 	leal	32(%edx),%edx
491 	xorps	%xmm0,%xmm2
492 L021enc1_loop_3:
493 .byte	102,15,56,220,209
494 	decl	%ecx
495 	movups	(%edx),%xmm1
496 	leal	16(%edx),%edx
497 	jnz	L021enc1_loop_3
498 .byte	102,15,56,221,209
499 	movups	%xmm2,(%edi)
500 	jmp	L012ecb_ret
501 .align	4,0x90
502 L018ecb_enc_two:
503 	call	__aesni_encrypt2
504 	movups	%xmm2,(%edi)
505 	movups	%xmm3,16(%edi)
506 	jmp	L012ecb_ret
507 .align	4,0x90
508 L019ecb_enc_three:
509 	call	__aesni_encrypt3
510 	movups	%xmm2,(%edi)
511 	movups	%xmm3,16(%edi)
512 	movups	%xmm4,32(%edi)
513 	jmp	L012ecb_ret
514 .align	4,0x90
515 L020ecb_enc_four:
516 	call	__aesni_encrypt4
517 	movups	%xmm2,(%edi)
518 	movups	%xmm3,16(%edi)
519 	movups	%xmm4,32(%edi)
520 	movups	%xmm5,48(%edi)
521 	jmp	L012ecb_ret
522 .align	4,0x90
523 L013ecb_decrypt:
524 	movl	%edx,%ebp
525 	movl	%ecx,%ebx
526 	cmpl	$96,%eax
527 	jb	L022ecb_dec_tail
528 	movdqu	(%esi),%xmm2
529 	movdqu	16(%esi),%xmm3
530 	movdqu	32(%esi),%xmm4
531 	movdqu	48(%esi),%xmm5
532 	movdqu	64(%esi),%xmm6
533 	movdqu	80(%esi),%xmm7
534 	leal	96(%esi),%esi
535 	subl	$96,%eax
536 	jmp	L023ecb_dec_loop6_enter
537 .align	4,0x90
538 L024ecb_dec_loop6:
539 	movups	%xmm2,(%edi)
540 	movdqu	(%esi),%xmm2
541 	movups	%xmm3,16(%edi)
542 	movdqu	16(%esi),%xmm3
543 	movups	%xmm4,32(%edi)
544 	movdqu	32(%esi),%xmm4
545 	movups	%xmm5,48(%edi)
546 	movdqu	48(%esi),%xmm5
547 	movups	%xmm6,64(%edi)
548 	movdqu	64(%esi),%xmm6
549 	movups	%xmm7,80(%edi)
550 	leal	96(%edi),%edi
551 	movdqu	80(%esi),%xmm7
552 	leal	96(%esi),%esi
553 L023ecb_dec_loop6_enter:
554 	call	__aesni_decrypt6
555 	movl	%ebp,%edx
556 	movl	%ebx,%ecx
557 	subl	$96,%eax
558 	jnc	L024ecb_dec_loop6
559 	movups	%xmm2,(%edi)
560 	movups	%xmm3,16(%edi)
561 	movups	%xmm4,32(%edi)
562 	movups	%xmm5,48(%edi)
563 	movups	%xmm6,64(%edi)
564 	movups	%xmm7,80(%edi)
565 	leal	96(%edi),%edi
566 	addl	$96,%eax
567 	jz	L012ecb_ret
568 L022ecb_dec_tail:
569 	movups	(%esi),%xmm2
570 	cmpl	$32,%eax
571 	jb	L025ecb_dec_one
572 	movups	16(%esi),%xmm3
573 	je	L026ecb_dec_two
574 	movups	32(%esi),%xmm4
575 	cmpl	$64,%eax
576 	jb	L027ecb_dec_three
577 	movups	48(%esi),%xmm5
578 	je	L028ecb_dec_four
579 	movups	64(%esi),%xmm6
580 	xorps	%xmm7,%xmm7
581 	call	__aesni_decrypt6
582 	movups	%xmm2,(%edi)
583 	movups	%xmm3,16(%edi)
584 	movups	%xmm4,32(%edi)
585 	movups	%xmm5,48(%edi)
586 	movups	%xmm6,64(%edi)
587 	jmp	L012ecb_ret
588 .align	4,0x90
589 L025ecb_dec_one:
590 	movups	(%edx),%xmm0
591 	movups	16(%edx),%xmm1
592 	leal	32(%edx),%edx
593 	xorps	%xmm0,%xmm2
594 L029dec1_loop_4:
595 .byte	102,15,56,222,209
596 	decl	%ecx
597 	movups	(%edx),%xmm1
598 	leal	16(%edx),%edx
599 	jnz	L029dec1_loop_4
600 .byte	102,15,56,223,209
601 	movups	%xmm2,(%edi)
602 	jmp	L012ecb_ret
603 .align	4,0x90
604 L026ecb_dec_two:
605 	call	__aesni_decrypt2
606 	movups	%xmm2,(%edi)
607 	movups	%xmm3,16(%edi)
608 	jmp	L012ecb_ret
609 .align	4,0x90
610 L027ecb_dec_three:
611 	call	__aesni_decrypt3
612 	movups	%xmm2,(%edi)
613 	movups	%xmm3,16(%edi)
614 	movups	%xmm4,32(%edi)
615 	jmp	L012ecb_ret
616 .align	4,0x90
617 L028ecb_dec_four:
618 	call	__aesni_decrypt4
619 	movups	%xmm2,(%edi)
620 	movups	%xmm3,16(%edi)
621 	movups	%xmm4,32(%edi)
622 	movups	%xmm5,48(%edi)
623 L012ecb_ret:
624 	pxor	%xmm0,%xmm0
625 	pxor	%xmm1,%xmm1
626 	pxor	%xmm2,%xmm2
627 	pxor	%xmm3,%xmm3
628 	pxor	%xmm4,%xmm4
629 	pxor	%xmm5,%xmm5
630 	pxor	%xmm6,%xmm6
631 	pxor	%xmm7,%xmm7
632 	popl	%edi
633 	popl	%esi
634 	popl	%ebx
635 	popl	%ebp
636 	ret
637 .globl	_aesni_ccm64_encrypt_blocks
638 .type	_aesni_ccm64_encrypt_blocks,@function
639 .align	4
640 _aesni_ccm64_encrypt_blocks:
641 L_aesni_ccm64_encrypt_blocks_begin:
642 	%ifdef __CET__
643 
644 .byte	243,15,30,251
645 	%endif
646 
647 	pushl	%ebp
648 	pushl	%ebx
649 	pushl	%esi
650 	pushl	%edi
651 	movl	20(%esp),%esi
652 	movl	24(%esp),%edi
653 	movl	28(%esp),%eax
654 	movl	32(%esp),%edx
655 	movl	36(%esp),%ebx
656 	movl	40(%esp),%ecx
657 	movl	%esp,%ebp
658 	subl	$60,%esp
659 	andl	$-16,%esp
660 	movl	%ebp,48(%esp)
661 	movdqu	(%ebx),%xmm7
662 	movdqu	(%ecx),%xmm3
663 	movl	240(%edx),%ecx
664 	movl	$202182159,(%esp)
665 	movl	$134810123,4(%esp)
666 	movl	$67438087,8(%esp)
667 	movl	$66051,12(%esp)
668 	movl	$1,%ebx
669 	xorl	%ebp,%ebp
670 	movl	%ebx,16(%esp)
671 	movl	%ebp,20(%esp)
672 	movl	%ebp,24(%esp)
673 	movl	%ebp,28(%esp)
674 	shll	$4,%ecx
675 	movl	$16,%ebx
676 	leal	(%edx),%ebp
677 	movdqa	(%esp),%xmm5
678 	movdqa	%xmm7,%xmm2
679 	leal	32(%edx,%ecx,1),%edx
680 	subl	%ecx,%ebx
681 .byte	102,15,56,0,253
682 L030ccm64_enc_outer:
683 	movups	(%ebp),%xmm0
684 	movl	%ebx,%ecx
685 	movups	(%esi),%xmm6
686 	xorps	%xmm0,%xmm2
687 	movups	16(%ebp),%xmm1
688 	xorps	%xmm6,%xmm0
689 	xorps	%xmm0,%xmm3
690 	movups	32(%ebp),%xmm0
691 L031ccm64_enc2_loop:
692 .byte	102,15,56,220,209
693 .byte	102,15,56,220,217
694 	movups	(%edx,%ecx,1),%xmm1
695 	addl	$32,%ecx
696 .byte	102,15,56,220,208
697 .byte	102,15,56,220,216
698 	movups	-16(%edx,%ecx,1),%xmm0
699 	jnz	L031ccm64_enc2_loop
700 .byte	102,15,56,220,209
701 .byte	102,15,56,220,217
702 	paddq	16(%esp),%xmm7
703 	decl	%eax
704 .byte	102,15,56,221,208
705 .byte	102,15,56,221,216
706 	leal	16(%esi),%esi
707 	xorps	%xmm2,%xmm6
708 	movdqa	%xmm7,%xmm2
709 	movups	%xmm6,(%edi)
710 .byte	102,15,56,0,213
711 	leal	16(%edi),%edi
712 	jnz	L030ccm64_enc_outer
713 	movl	48(%esp),%esp
714 	movl	40(%esp),%edi
715 	movups	%xmm3,(%edi)
716 	pxor	%xmm0,%xmm0
717 	pxor	%xmm1,%xmm1
718 	pxor	%xmm2,%xmm2
719 	pxor	%xmm3,%xmm3
720 	pxor	%xmm4,%xmm4
721 	pxor	%xmm5,%xmm5
722 	pxor	%xmm6,%xmm6
723 	pxor	%xmm7,%xmm7
724 	popl	%edi
725 	popl	%esi
726 	popl	%ebx
727 	popl	%ebp
728 	ret
729 .globl	_aesni_ccm64_decrypt_blocks
730 .type	_aesni_ccm64_decrypt_blocks,@function
731 .align	4
732 _aesni_ccm64_decrypt_blocks:
733 L_aesni_ccm64_decrypt_blocks_begin:
734 	%ifdef __CET__
735 
736 .byte	243,15,30,251
737 	%endif
738 
739 	pushl	%ebp
740 	pushl	%ebx
741 	pushl	%esi
742 	pushl	%edi
743 	movl	20(%esp),%esi
744 	movl	24(%esp),%edi
745 	movl	28(%esp),%eax
746 	movl	32(%esp),%edx
747 	movl	36(%esp),%ebx
748 	movl	40(%esp),%ecx
749 	movl	%esp,%ebp
750 	subl	$60,%esp
751 	andl	$-16,%esp
752 	movl	%ebp,48(%esp)
753 	movdqu	(%ebx),%xmm7
754 	movdqu	(%ecx),%xmm3
755 	movl	240(%edx),%ecx
756 	movl	$202182159,(%esp)
757 	movl	$134810123,4(%esp)
758 	movl	$67438087,8(%esp)
759 	movl	$66051,12(%esp)
760 	movl	$1,%ebx
761 	xorl	%ebp,%ebp
762 	movl	%ebx,16(%esp)
763 	movl	%ebp,20(%esp)
764 	movl	%ebp,24(%esp)
765 	movl	%ebp,28(%esp)
766 	movdqa	(%esp),%xmm5
767 	movdqa	%xmm7,%xmm2
768 	movl	%edx,%ebp
769 	movl	%ecx,%ebx
770 .byte	102,15,56,0,253
771 	movups	(%edx),%xmm0
772 	movups	16(%edx),%xmm1
773 	leal	32(%edx),%edx
774 	xorps	%xmm0,%xmm2
775 L032enc1_loop_5:
776 .byte	102,15,56,220,209
777 	decl	%ecx
778 	movups	(%edx),%xmm1
779 	leal	16(%edx),%edx
780 	jnz	L032enc1_loop_5
781 .byte	102,15,56,221,209
782 	shll	$4,%ebx
783 	movl	$16,%ecx
784 	movups	(%esi),%xmm6
785 	paddq	16(%esp),%xmm7
786 	leal	16(%esi),%esi
787 	subl	%ebx,%ecx
788 	leal	32(%ebp,%ebx,1),%edx
789 	movl	%ecx,%ebx
790 	jmp	L033ccm64_dec_outer
791 .align	4,0x90
792 L033ccm64_dec_outer:
793 	xorps	%xmm2,%xmm6
794 	movdqa	%xmm7,%xmm2
795 	movups	%xmm6,(%edi)
796 	leal	16(%edi),%edi
797 .byte	102,15,56,0,213
798 	subl	$1,%eax
799 	jz	L034ccm64_dec_break
800 	movups	(%ebp),%xmm0
801 	movl	%ebx,%ecx
802 	movups	16(%ebp),%xmm1
803 	xorps	%xmm0,%xmm6
804 	xorps	%xmm0,%xmm2
805 	xorps	%xmm6,%xmm3
806 	movups	32(%ebp),%xmm0
807 L035ccm64_dec2_loop:
808 .byte	102,15,56,220,209
809 .byte	102,15,56,220,217
810 	movups	(%edx,%ecx,1),%xmm1
811 	addl	$32,%ecx
812 .byte	102,15,56,220,208
813 .byte	102,15,56,220,216
814 	movups	-16(%edx,%ecx,1),%xmm0
815 	jnz	L035ccm64_dec2_loop
816 	movups	(%esi),%xmm6
817 	paddq	16(%esp),%xmm7
818 .byte	102,15,56,220,209
819 .byte	102,15,56,220,217
820 .byte	102,15,56,221,208
821 .byte	102,15,56,221,216
822 	leal	16(%esi),%esi
823 	jmp	L033ccm64_dec_outer
824 .align	4,0x90
825 L034ccm64_dec_break:
826 	movl	240(%ebp),%ecx
827 	movl	%ebp,%edx
828 	movups	(%edx),%xmm0
829 	movups	16(%edx),%xmm1
830 	xorps	%xmm0,%xmm6
831 	leal	32(%edx),%edx
832 	xorps	%xmm6,%xmm3
833 L036enc1_loop_6:
834 .byte	102,15,56,220,217
835 	decl	%ecx
836 	movups	(%edx),%xmm1
837 	leal	16(%edx),%edx
838 	jnz	L036enc1_loop_6
839 .byte	102,15,56,221,217
840 	movl	48(%esp),%esp
841 	movl	40(%esp),%edi
842 	movups	%xmm3,(%edi)
843 	pxor	%xmm0,%xmm0
844 	pxor	%xmm1,%xmm1
845 	pxor	%xmm2,%xmm2
846 	pxor	%xmm3,%xmm3
847 	pxor	%xmm4,%xmm4
848 	pxor	%xmm5,%xmm5
849 	pxor	%xmm6,%xmm6
850 	pxor	%xmm7,%xmm7
851 	popl	%edi
852 	popl	%esi
853 	popl	%ebx
854 	popl	%ebp
855 	ret
856 .globl	_aesni_ctr32_encrypt_blocks
857 .type	_aesni_ctr32_encrypt_blocks,@function
858 .align	4
859 _aesni_ctr32_encrypt_blocks:
860 L_aesni_ctr32_encrypt_blocks_begin:
861 	%ifdef __CET__
862 
863 .byte	243,15,30,251
864 	%endif
865 
866 	pushl	%ebp
867 	pushl	%ebx
868 	pushl	%esi
869 	pushl	%edi
870 	movl	20(%esp),%esi
871 	movl	24(%esp),%edi
872 	movl	28(%esp),%eax
873 	movl	32(%esp),%edx
874 	movl	36(%esp),%ebx
875 	movl	%esp,%ebp
876 	subl	$88,%esp
877 	andl	$-16,%esp
878 	movl	%ebp,80(%esp)
879 	cmpl	$1,%eax
880 	je	L037ctr32_one_shortcut
881 	movdqu	(%ebx),%xmm7
882 	movl	$202182159,(%esp)
883 	movl	$134810123,4(%esp)
884 	movl	$67438087,8(%esp)
885 	movl	$66051,12(%esp)
886 	movl	$6,%ecx
887 	xorl	%ebp,%ebp
888 	movl	%ecx,16(%esp)
889 	movl	%ecx,20(%esp)
890 	movl	%ecx,24(%esp)
891 	movl	%ebp,28(%esp)
892 .byte	102,15,58,22,251,3
893 .byte	102,15,58,34,253,3
894 	movl	240(%edx),%ecx
895 	bswap	%ebx
896 	pxor	%xmm0,%xmm0
897 	pxor	%xmm1,%xmm1
898 	movdqa	(%esp),%xmm2
899 .byte	102,15,58,34,195,0
900 	leal	3(%ebx),%ebp
901 .byte	102,15,58,34,205,0
902 	incl	%ebx
903 .byte	102,15,58,34,195,1
904 	incl	%ebp
905 .byte	102,15,58,34,205,1
906 	incl	%ebx
907 .byte	102,15,58,34,195,2
908 	incl	%ebp
909 .byte	102,15,58,34,205,2
910 	movdqa	%xmm0,48(%esp)
911 .byte	102,15,56,0,194
912 	movdqu	(%edx),%xmm6
913 	movdqa	%xmm1,64(%esp)
914 .byte	102,15,56,0,202
915 	pshufd	$192,%xmm0,%xmm2
916 	pshufd	$128,%xmm0,%xmm3
917 	cmpl	$6,%eax
918 	jb	L038ctr32_tail
919 	pxor	%xmm6,%xmm7
920 	shll	$4,%ecx
921 	movl	$16,%ebx
922 	movdqa	%xmm7,32(%esp)
923 	movl	%edx,%ebp
924 	subl	%ecx,%ebx
925 	leal	32(%edx,%ecx,1),%edx
926 	subl	$6,%eax
927 	jmp	L039ctr32_loop6
928 .align	4,0x90
929 L039ctr32_loop6:
930 	pshufd	$64,%xmm0,%xmm4
931 	movdqa	32(%esp),%xmm0
932 	pshufd	$192,%xmm1,%xmm5
933 	pxor	%xmm0,%xmm2
934 	pshufd	$128,%xmm1,%xmm6
935 	pxor	%xmm0,%xmm3
936 	pshufd	$64,%xmm1,%xmm7
937 	movups	16(%ebp),%xmm1
938 	pxor	%xmm0,%xmm4
939 	pxor	%xmm0,%xmm5
940 .byte	102,15,56,220,209
941 	pxor	%xmm0,%xmm6
942 	pxor	%xmm0,%xmm7
943 .byte	102,15,56,220,217
944 	movups	32(%ebp),%xmm0
945 	movl	%ebx,%ecx
946 .byte	102,15,56,220,225
947 .byte	102,15,56,220,233
948 .byte	102,15,56,220,241
949 .byte	102,15,56,220,249
950 	call	L_aesni_encrypt6_enter
951 	movups	(%esi),%xmm1
952 	movups	16(%esi),%xmm0
953 	xorps	%xmm1,%xmm2
954 	movups	32(%esi),%xmm1
955 	xorps	%xmm0,%xmm3
956 	movups	%xmm2,(%edi)
957 	movdqa	16(%esp),%xmm0
958 	xorps	%xmm1,%xmm4
959 	movdqa	64(%esp),%xmm1
960 	movups	%xmm3,16(%edi)
961 	movups	%xmm4,32(%edi)
962 	paddd	%xmm0,%xmm1
963 	paddd	48(%esp),%xmm0
964 	movdqa	(%esp),%xmm2
965 	movups	48(%esi),%xmm3
966 	movups	64(%esi),%xmm4
967 	xorps	%xmm3,%xmm5
968 	movups	80(%esi),%xmm3
969 	leal	96(%esi),%esi
970 	movdqa	%xmm0,48(%esp)
971 .byte	102,15,56,0,194
972 	xorps	%xmm4,%xmm6
973 	movups	%xmm5,48(%edi)
974 	xorps	%xmm3,%xmm7
975 	movdqa	%xmm1,64(%esp)
976 .byte	102,15,56,0,202
977 	movups	%xmm6,64(%edi)
978 	pshufd	$192,%xmm0,%xmm2
979 	movups	%xmm7,80(%edi)
980 	leal	96(%edi),%edi
981 	pshufd	$128,%xmm0,%xmm3
982 	subl	$6,%eax
983 	jnc	L039ctr32_loop6
984 	addl	$6,%eax
985 	jz	L040ctr32_ret
986 	movdqu	(%ebp),%xmm7
987 	movl	%ebp,%edx
988 	pxor	32(%esp),%xmm7
989 	movl	240(%ebp),%ecx
990 L038ctr32_tail:
991 	por	%xmm7,%xmm2
992 	cmpl	$2,%eax
993 	jb	L041ctr32_one
994 	pshufd	$64,%xmm0,%xmm4
995 	por	%xmm7,%xmm3
996 	je	L042ctr32_two
997 	pshufd	$192,%xmm1,%xmm5
998 	por	%xmm7,%xmm4
999 	cmpl	$4,%eax
1000 	jb	L043ctr32_three
1001 	pshufd	$128,%xmm1,%xmm6
1002 	por	%xmm7,%xmm5
1003 	je	L044ctr32_four
1004 	por	%xmm7,%xmm6
1005 	call	__aesni_encrypt6
1006 	movups	(%esi),%xmm1
1007 	movups	16(%esi),%xmm0
1008 	xorps	%xmm1,%xmm2
1009 	movups	32(%esi),%xmm1
1010 	xorps	%xmm0,%xmm3
1011 	movups	48(%esi),%xmm0
1012 	xorps	%xmm1,%xmm4
1013 	movups	64(%esi),%xmm1
1014 	xorps	%xmm0,%xmm5
1015 	movups	%xmm2,(%edi)
1016 	xorps	%xmm1,%xmm6
1017 	movups	%xmm3,16(%edi)
1018 	movups	%xmm4,32(%edi)
1019 	movups	%xmm5,48(%edi)
1020 	movups	%xmm6,64(%edi)
1021 	jmp	L040ctr32_ret
1022 .align	4,0x90
1023 L037ctr32_one_shortcut:
1024 	movups	(%ebx),%xmm2
1025 	movl	240(%edx),%ecx
1026 L041ctr32_one:
1027 	movups	(%edx),%xmm0
1028 	movups	16(%edx),%xmm1
1029 	leal	32(%edx),%edx
1030 	xorps	%xmm0,%xmm2
1031 L045enc1_loop_7:
1032 .byte	102,15,56,220,209
1033 	decl	%ecx
1034 	movups	(%edx),%xmm1
1035 	leal	16(%edx),%edx
1036 	jnz	L045enc1_loop_7
1037 .byte	102,15,56,221,209
1038 	movups	(%esi),%xmm6
1039 	xorps	%xmm2,%xmm6
1040 	movups	%xmm6,(%edi)
1041 	jmp	L040ctr32_ret
1042 .align	4,0x90
1043 L042ctr32_two:
1044 	call	__aesni_encrypt2
1045 	movups	(%esi),%xmm5
1046 	movups	16(%esi),%xmm6
1047 	xorps	%xmm5,%xmm2
1048 	xorps	%xmm6,%xmm3
1049 	movups	%xmm2,(%edi)
1050 	movups	%xmm3,16(%edi)
1051 	jmp	L040ctr32_ret
1052 .align	4,0x90
1053 L043ctr32_three:
1054 	call	__aesni_encrypt3
1055 	movups	(%esi),%xmm5
1056 	movups	16(%esi),%xmm6
1057 	xorps	%xmm5,%xmm2
1058 	movups	32(%esi),%xmm7
1059 	xorps	%xmm6,%xmm3
1060 	movups	%xmm2,(%edi)
1061 	xorps	%xmm7,%xmm4
1062 	movups	%xmm3,16(%edi)
1063 	movups	%xmm4,32(%edi)
1064 	jmp	L040ctr32_ret
1065 .align	4,0x90
1066 L044ctr32_four:
1067 	call	__aesni_encrypt4
1068 	movups	(%esi),%xmm6
1069 	movups	16(%esi),%xmm7
1070 	movups	32(%esi),%xmm1
1071 	xorps	%xmm6,%xmm2
1072 	movups	48(%esi),%xmm0
1073 	xorps	%xmm7,%xmm3
1074 	movups	%xmm2,(%edi)
1075 	xorps	%xmm1,%xmm4
1076 	movups	%xmm3,16(%edi)
1077 	xorps	%xmm0,%xmm5
1078 	movups	%xmm4,32(%edi)
1079 	movups	%xmm5,48(%edi)
1080 L040ctr32_ret:
1081 	pxor	%xmm0,%xmm0
1082 	pxor	%xmm1,%xmm1
1083 	pxor	%xmm2,%xmm2
1084 	pxor	%xmm3,%xmm3
1085 	pxor	%xmm4,%xmm4
1086 	movdqa	%xmm0,32(%esp)
1087 	pxor	%xmm5,%xmm5
1088 	movdqa	%xmm0,48(%esp)
1089 	pxor	%xmm6,%xmm6
1090 	movdqa	%xmm0,64(%esp)
1091 	pxor	%xmm7,%xmm7
1092 	movl	80(%esp),%esp
1093 	popl	%edi
1094 	popl	%esi
1095 	popl	%ebx
1096 	popl	%ebp
1097 	ret
1098 .globl	_aesni_xts_encrypt
1099 .type	_aesni_xts_encrypt,@function
1100 .align	4
1101 _aesni_xts_encrypt:
1102 L_aesni_xts_encrypt_begin:
1103 	%ifdef __CET__
1104 
1105 .byte	243,15,30,251
1106 	%endif
1107 
1108 	pushl	%ebp
1109 	pushl	%ebx
1110 	pushl	%esi
1111 	pushl	%edi
1112 	movl	36(%esp),%edx
1113 	movl	40(%esp),%esi
1114 	movl	240(%edx),%ecx
1115 	movups	(%esi),%xmm2
1116 	movups	(%edx),%xmm0
1117 	movups	16(%edx),%xmm1
1118 	leal	32(%edx),%edx
1119 	xorps	%xmm0,%xmm2
1120 L046enc1_loop_8:
1121 .byte	102,15,56,220,209
1122 	decl	%ecx
1123 	movups	(%edx),%xmm1
1124 	leal	16(%edx),%edx
1125 	jnz	L046enc1_loop_8
1126 .byte	102,15,56,221,209
1127 	movl	20(%esp),%esi
1128 	movl	24(%esp),%edi
1129 	movl	28(%esp),%eax
1130 	movl	32(%esp),%edx
1131 	movl	%esp,%ebp
1132 	subl	$120,%esp
1133 	movl	240(%edx),%ecx
1134 	andl	$-16,%esp
1135 	movl	$135,96(%esp)
1136 	movl	$0,100(%esp)
1137 	movl	$1,104(%esp)
1138 	movl	$0,108(%esp)
1139 	movl	%eax,112(%esp)
1140 	movl	%ebp,116(%esp)
1141 	movdqa	%xmm2,%xmm1
1142 	pxor	%xmm0,%xmm0
1143 	movdqa	96(%esp),%xmm3
1144 	pcmpgtd	%xmm1,%xmm0
1145 	andl	$-16,%eax
1146 	movl	%edx,%ebp
1147 	movl	%ecx,%ebx
1148 	subl	$96,%eax
1149 	jc	L047xts_enc_short
1150 	shll	$4,%ecx
1151 	movl	$16,%ebx
1152 	subl	%ecx,%ebx
1153 	leal	32(%edx,%ecx,1),%edx
1154 	jmp	L048xts_enc_loop6
1155 .align	4,0x90
1156 L048xts_enc_loop6:
1157 	pshufd	$19,%xmm0,%xmm2
1158 	pxor	%xmm0,%xmm0
1159 	movdqa	%xmm1,(%esp)
1160 	paddq	%xmm1,%xmm1
1161 	pand	%xmm3,%xmm2
1162 	pcmpgtd	%xmm1,%xmm0
1163 	pxor	%xmm2,%xmm1
1164 	pshufd	$19,%xmm0,%xmm2
1165 	pxor	%xmm0,%xmm0
1166 	movdqa	%xmm1,16(%esp)
1167 	paddq	%xmm1,%xmm1
1168 	pand	%xmm3,%xmm2
1169 	pcmpgtd	%xmm1,%xmm0
1170 	pxor	%xmm2,%xmm1
1171 	pshufd	$19,%xmm0,%xmm2
1172 	pxor	%xmm0,%xmm0
1173 	movdqa	%xmm1,32(%esp)
1174 	paddq	%xmm1,%xmm1
1175 	pand	%xmm3,%xmm2
1176 	pcmpgtd	%xmm1,%xmm0
1177 	pxor	%xmm2,%xmm1
1178 	pshufd	$19,%xmm0,%xmm2
1179 	pxor	%xmm0,%xmm0
1180 	movdqa	%xmm1,48(%esp)
1181 	paddq	%xmm1,%xmm1
1182 	pand	%xmm3,%xmm2
1183 	pcmpgtd	%xmm1,%xmm0
1184 	pxor	%xmm2,%xmm1
1185 	pshufd	$19,%xmm0,%xmm7
1186 	movdqa	%xmm1,64(%esp)
1187 	paddq	%xmm1,%xmm1
1188 	movups	(%ebp),%xmm0
1189 	pand	%xmm3,%xmm7
1190 	movups	(%esi),%xmm2
1191 	pxor	%xmm1,%xmm7
1192 	movl	%ebx,%ecx
1193 	movdqu	16(%esi),%xmm3
1194 	xorps	%xmm0,%xmm2
1195 	movdqu	32(%esi),%xmm4
1196 	pxor	%xmm0,%xmm3
1197 	movdqu	48(%esi),%xmm5
1198 	pxor	%xmm0,%xmm4
1199 	movdqu	64(%esi),%xmm6
1200 	pxor	%xmm0,%xmm5
1201 	movdqu	80(%esi),%xmm1
1202 	pxor	%xmm0,%xmm6
1203 	leal	96(%esi),%esi
1204 	pxor	(%esp),%xmm2
1205 	movdqa	%xmm7,80(%esp)
1206 	pxor	%xmm1,%xmm7
1207 	movups	16(%ebp),%xmm1
1208 	pxor	16(%esp),%xmm3
1209 	pxor	32(%esp),%xmm4
1210 .byte	102,15,56,220,209
1211 	pxor	48(%esp),%xmm5
1212 	pxor	64(%esp),%xmm6
1213 .byte	102,15,56,220,217
1214 	pxor	%xmm0,%xmm7
1215 	movups	32(%ebp),%xmm0
1216 .byte	102,15,56,220,225
1217 .byte	102,15,56,220,233
1218 .byte	102,15,56,220,241
1219 .byte	102,15,56,220,249
1220 	call	L_aesni_encrypt6_enter
1221 	movdqa	80(%esp),%xmm1
1222 	pxor	%xmm0,%xmm0
1223 	xorps	(%esp),%xmm2
1224 	pcmpgtd	%xmm1,%xmm0
1225 	xorps	16(%esp),%xmm3
1226 	movups	%xmm2,(%edi)
1227 	xorps	32(%esp),%xmm4
1228 	movups	%xmm3,16(%edi)
1229 	xorps	48(%esp),%xmm5
1230 	movups	%xmm4,32(%edi)
1231 	xorps	64(%esp),%xmm6
1232 	movups	%xmm5,48(%edi)
1233 	xorps	%xmm1,%xmm7
1234 	movups	%xmm6,64(%edi)
1235 	pshufd	$19,%xmm0,%xmm2
1236 	movups	%xmm7,80(%edi)
1237 	leal	96(%edi),%edi
1238 	movdqa	96(%esp),%xmm3
1239 	pxor	%xmm0,%xmm0
1240 	paddq	%xmm1,%xmm1
1241 	pand	%xmm3,%xmm2
1242 	pcmpgtd	%xmm1,%xmm0
1243 	pxor	%xmm2,%xmm1
1244 	subl	$96,%eax
1245 	jnc	L048xts_enc_loop6
1246 	movl	240(%ebp),%ecx
1247 	movl	%ebp,%edx
1248 	movl	%ecx,%ebx
1249 L047xts_enc_short:
1250 	addl	$96,%eax
1251 	jz	L049xts_enc_done6x
1252 	movdqa	%xmm1,%xmm5
1253 	cmpl	$32,%eax
1254 	jb	L050xts_enc_one
1255 	pshufd	$19,%xmm0,%xmm2
1256 	pxor	%xmm0,%xmm0
1257 	paddq	%xmm1,%xmm1
1258 	pand	%xmm3,%xmm2
1259 	pcmpgtd	%xmm1,%xmm0
1260 	pxor	%xmm2,%xmm1
1261 	je	L051xts_enc_two
1262 	pshufd	$19,%xmm0,%xmm2
1263 	pxor	%xmm0,%xmm0
1264 	movdqa	%xmm1,%xmm6
1265 	paddq	%xmm1,%xmm1
1266 	pand	%xmm3,%xmm2
1267 	pcmpgtd	%xmm1,%xmm0
1268 	pxor	%xmm2,%xmm1
1269 	cmpl	$64,%eax
1270 	jb	L052xts_enc_three
1271 	pshufd	$19,%xmm0,%xmm2
1272 	pxor	%xmm0,%xmm0
1273 	movdqa	%xmm1,%xmm7
1274 	paddq	%xmm1,%xmm1
1275 	pand	%xmm3,%xmm2
1276 	pcmpgtd	%xmm1,%xmm0
1277 	pxor	%xmm2,%xmm1
1278 	movdqa	%xmm5,(%esp)
1279 	movdqa	%xmm6,16(%esp)
1280 	je	L053xts_enc_four
1281 	movdqa	%xmm7,32(%esp)
1282 	pshufd	$19,%xmm0,%xmm7
1283 	movdqa	%xmm1,48(%esp)
1284 	paddq	%xmm1,%xmm1
1285 	pand	%xmm3,%xmm7
1286 	pxor	%xmm1,%xmm7
1287 	movdqu	(%esi),%xmm2
1288 	movdqu	16(%esi),%xmm3
1289 	movdqu	32(%esi),%xmm4
1290 	pxor	(%esp),%xmm2
1291 	movdqu	48(%esi),%xmm5
1292 	pxor	16(%esp),%xmm3
1293 	movdqu	64(%esi),%xmm6
1294 	pxor	32(%esp),%xmm4
1295 	leal	80(%esi),%esi
1296 	pxor	48(%esp),%xmm5
1297 	movdqa	%xmm7,64(%esp)
1298 	pxor	%xmm7,%xmm6
1299 	call	__aesni_encrypt6
1300 	movaps	64(%esp),%xmm1
1301 	xorps	(%esp),%xmm2
1302 	xorps	16(%esp),%xmm3
1303 	xorps	32(%esp),%xmm4
1304 	movups	%xmm2,(%edi)
1305 	xorps	48(%esp),%xmm5
1306 	movups	%xmm3,16(%edi)
1307 	xorps	%xmm1,%xmm6
1308 	movups	%xmm4,32(%edi)
1309 	movups	%xmm5,48(%edi)
1310 	movups	%xmm6,64(%edi)
1311 	leal	80(%edi),%edi
1312 	jmp	L054xts_enc_done
1313 .align	4,0x90
1314 L050xts_enc_one:
1315 	movups	(%esi),%xmm2
1316 	leal	16(%esi),%esi
1317 	xorps	%xmm5,%xmm2
1318 	movups	(%edx),%xmm0
1319 	movups	16(%edx),%xmm1
1320 	leal	32(%edx),%edx
1321 	xorps	%xmm0,%xmm2
1322 L055enc1_loop_9:
1323 .byte	102,15,56,220,209
1324 	decl	%ecx
1325 	movups	(%edx),%xmm1
1326 	leal	16(%edx),%edx
1327 	jnz	L055enc1_loop_9
1328 .byte	102,15,56,221,209
1329 	xorps	%xmm5,%xmm2
1330 	movups	%xmm2,(%edi)
1331 	leal	16(%edi),%edi
1332 	movdqa	%xmm5,%xmm1
1333 	jmp	L054xts_enc_done
1334 .align	4,0x90
1335 L051xts_enc_two:
1336 	movaps	%xmm1,%xmm6
1337 	movups	(%esi),%xmm2
1338 	movups	16(%esi),%xmm3
1339 	leal	32(%esi),%esi
1340 	xorps	%xmm5,%xmm2
1341 	xorps	%xmm6,%xmm3
1342 	call	__aesni_encrypt2
1343 	xorps	%xmm5,%xmm2
1344 	xorps	%xmm6,%xmm3
1345 	movups	%xmm2,(%edi)
1346 	movups	%xmm3,16(%edi)
1347 	leal	32(%edi),%edi
1348 	movdqa	%xmm6,%xmm1
1349 	jmp	L054xts_enc_done
1350 .align	4,0x90
1351 L052xts_enc_three:
1352 	movaps	%xmm1,%xmm7
1353 	movups	(%esi),%xmm2
1354 	movups	16(%esi),%xmm3
1355 	movups	32(%esi),%xmm4
1356 	leal	48(%esi),%esi
1357 	xorps	%xmm5,%xmm2
1358 	xorps	%xmm6,%xmm3
1359 	xorps	%xmm7,%xmm4
1360 	call	__aesni_encrypt3
1361 	xorps	%xmm5,%xmm2
1362 	xorps	%xmm6,%xmm3
1363 	xorps	%xmm7,%xmm4
1364 	movups	%xmm2,(%edi)
1365 	movups	%xmm3,16(%edi)
1366 	movups	%xmm4,32(%edi)
1367 	leal	48(%edi),%edi
1368 	movdqa	%xmm7,%xmm1
1369 	jmp	L054xts_enc_done
1370 .align	4,0x90
1371 L053xts_enc_four:
1372 	movaps	%xmm1,%xmm6
1373 	movups	(%esi),%xmm2
1374 	movups	16(%esi),%xmm3
1375 	movups	32(%esi),%xmm4
1376 	xorps	(%esp),%xmm2
1377 	movups	48(%esi),%xmm5
1378 	leal	64(%esi),%esi
1379 	xorps	16(%esp),%xmm3
1380 	xorps	%xmm7,%xmm4
1381 	xorps	%xmm6,%xmm5
1382 	call	__aesni_encrypt4
1383 	xorps	(%esp),%xmm2
1384 	xorps	16(%esp),%xmm3
1385 	xorps	%xmm7,%xmm4
1386 	movups	%xmm2,(%edi)
1387 	xorps	%xmm6,%xmm5
1388 	movups	%xmm3,16(%edi)
1389 	movups	%xmm4,32(%edi)
1390 	movups	%xmm5,48(%edi)
1391 	leal	64(%edi),%edi
1392 	movdqa	%xmm6,%xmm1
1393 	jmp	L054xts_enc_done
1394 .align	4,0x90
1395 L049xts_enc_done6x:
1396 	movl	112(%esp),%eax
1397 	andl	$15,%eax
1398 	jz	L056xts_enc_ret
1399 	movdqa	%xmm1,%xmm5
1400 	movl	%eax,112(%esp)
1401 	jmp	L057xts_enc_steal
1402 .align	4,0x90
1403 L054xts_enc_done:
1404 	movl	112(%esp),%eax
1405 	pxor	%xmm0,%xmm0
1406 	andl	$15,%eax
1407 	jz	L056xts_enc_ret
1408 	pcmpgtd	%xmm1,%xmm0
1409 	movl	%eax,112(%esp)
1410 	pshufd	$19,%xmm0,%xmm5
1411 	paddq	%xmm1,%xmm1
1412 	pand	96(%esp),%xmm5
1413 	pxor	%xmm1,%xmm5
1414 L057xts_enc_steal:
1415 	movzbl	(%esi),%ecx
1416 	movzbl	-16(%edi),%edx
1417 	leal	1(%esi),%esi
1418 	movb	%cl,-16(%edi)
1419 	movb	%dl,(%edi)
1420 	leal	1(%edi),%edi
1421 	subl	$1,%eax
1422 	jnz	L057xts_enc_steal
1423 	subl	112(%esp),%edi
1424 	movl	%ebp,%edx
1425 	movl	%ebx,%ecx
1426 	movups	-16(%edi),%xmm2
1427 	xorps	%xmm5,%xmm2
1428 	movups	(%edx),%xmm0
1429 	movups	16(%edx),%xmm1
1430 	leal	32(%edx),%edx
1431 	xorps	%xmm0,%xmm2
1432 L058enc1_loop_10:
1433 .byte	102,15,56,220,209
1434 	decl	%ecx
1435 	movups	(%edx),%xmm1
1436 	leal	16(%edx),%edx
1437 	jnz	L058enc1_loop_10
1438 .byte	102,15,56,221,209
1439 	xorps	%xmm5,%xmm2
1440 	movups	%xmm2,-16(%edi)
1441 L056xts_enc_ret:
1442 	pxor	%xmm0,%xmm0
1443 	pxor	%xmm1,%xmm1
1444 	pxor	%xmm2,%xmm2
1445 	movdqa	%xmm0,(%esp)
1446 	pxor	%xmm3,%xmm3
1447 	movdqa	%xmm0,16(%esp)
1448 	pxor	%xmm4,%xmm4
1449 	movdqa	%xmm0,32(%esp)
1450 	pxor	%xmm5,%xmm5
1451 	movdqa	%xmm0,48(%esp)
1452 	pxor	%xmm6,%xmm6
1453 	movdqa	%xmm0,64(%esp)
1454 	pxor	%xmm7,%xmm7
1455 	movdqa	%xmm0,80(%esp)
1456 	movl	116(%esp),%esp
1457 	popl	%edi
1458 	popl	%esi
1459 	popl	%ebx
1460 	popl	%ebp
1461 	ret
1462 .globl	_aesni_xts_decrypt
1463 .type	_aesni_xts_decrypt,@function
1464 .align	4
1465 _aesni_xts_decrypt:
1466 L_aesni_xts_decrypt_begin:
1467 	%ifdef __CET__
1468 
1469 .byte	243,15,30,251
1470 	%endif
1471 
1472 	pushl	%ebp
1473 	pushl	%ebx
1474 	pushl	%esi
1475 	pushl	%edi
1476 	movl	36(%esp),%edx
1477 	movl	40(%esp),%esi
1478 	movl	240(%edx),%ecx
1479 	movups	(%esi),%xmm2
1480 	movups	(%edx),%xmm0
1481 	movups	16(%edx),%xmm1
1482 	leal	32(%edx),%edx
1483 	xorps	%xmm0,%xmm2
1484 L059enc1_loop_11:
1485 .byte	102,15,56,220,209
1486 	decl	%ecx
1487 	movups	(%edx),%xmm1
1488 	leal	16(%edx),%edx
1489 	jnz	L059enc1_loop_11
1490 .byte	102,15,56,221,209
1491 	movl	20(%esp),%esi
1492 	movl	24(%esp),%edi
1493 	movl	28(%esp),%eax
1494 	movl	32(%esp),%edx
1495 	movl	%esp,%ebp
1496 	subl	$120,%esp
1497 	andl	$-16,%esp
1498 	xorl	%ebx,%ebx
1499 	testl	$15,%eax
1500 	setnz	%bl
1501 	shll	$4,%ebx
1502 	subl	%ebx,%eax
1503 	movl	$135,96(%esp)
1504 	movl	$0,100(%esp)
1505 	movl	$1,104(%esp)
1506 	movl	$0,108(%esp)
1507 	movl	%eax,112(%esp)
1508 	movl	%ebp,116(%esp)
1509 	movl	240(%edx),%ecx
1510 	movl	%edx,%ebp
1511 	movl	%ecx,%ebx
1512 	movdqa	%xmm2,%xmm1
1513 	pxor	%xmm0,%xmm0
1514 	movdqa	96(%esp),%xmm3
1515 	pcmpgtd	%xmm1,%xmm0
1516 	andl	$-16,%eax
1517 	subl	$96,%eax
1518 	jc	L060xts_dec_short
1519 	shll	$4,%ecx
1520 	movl	$16,%ebx
1521 	subl	%ecx,%ebx
1522 	leal	32(%edx,%ecx,1),%edx
1523 	jmp	L061xts_dec_loop6
1524 .align	4,0x90
1525 L061xts_dec_loop6:
1526 	pshufd	$19,%xmm0,%xmm2
1527 	pxor	%xmm0,%xmm0
1528 	movdqa	%xmm1,(%esp)
1529 	paddq	%xmm1,%xmm1
1530 	pand	%xmm3,%xmm2
1531 	pcmpgtd	%xmm1,%xmm0
1532 	pxor	%xmm2,%xmm1
1533 	pshufd	$19,%xmm0,%xmm2
1534 	pxor	%xmm0,%xmm0
1535 	movdqa	%xmm1,16(%esp)
1536 	paddq	%xmm1,%xmm1
1537 	pand	%xmm3,%xmm2
1538 	pcmpgtd	%xmm1,%xmm0
1539 	pxor	%xmm2,%xmm1
1540 	pshufd	$19,%xmm0,%xmm2
1541 	pxor	%xmm0,%xmm0
1542 	movdqa	%xmm1,32(%esp)
1543 	paddq	%xmm1,%xmm1
1544 	pand	%xmm3,%xmm2
1545 	pcmpgtd	%xmm1,%xmm0
1546 	pxor	%xmm2,%xmm1
1547 	pshufd	$19,%xmm0,%xmm2
1548 	pxor	%xmm0,%xmm0
1549 	movdqa	%xmm1,48(%esp)
1550 	paddq	%xmm1,%xmm1
1551 	pand	%xmm3,%xmm2
1552 	pcmpgtd	%xmm1,%xmm0
1553 	pxor	%xmm2,%xmm1
1554 	pshufd	$19,%xmm0,%xmm7
1555 	movdqa	%xmm1,64(%esp)
1556 	paddq	%xmm1,%xmm1
1557 	movups	(%ebp),%xmm0
1558 	pand	%xmm3,%xmm7
1559 	movups	(%esi),%xmm2
1560 	pxor	%xmm1,%xmm7
1561 	movl	%ebx,%ecx
1562 	movdqu	16(%esi),%xmm3
1563 	xorps	%xmm0,%xmm2
1564 	movdqu	32(%esi),%xmm4
1565 	pxor	%xmm0,%xmm3
1566 	movdqu	48(%esi),%xmm5
1567 	pxor	%xmm0,%xmm4
1568 	movdqu	64(%esi),%xmm6
1569 	pxor	%xmm0,%xmm5
1570 	movdqu	80(%esi),%xmm1
1571 	pxor	%xmm0,%xmm6
1572 	leal	96(%esi),%esi
1573 	pxor	(%esp),%xmm2
1574 	movdqa	%xmm7,80(%esp)
1575 	pxor	%xmm1,%xmm7
1576 	movups	16(%ebp),%xmm1
1577 	pxor	16(%esp),%xmm3
1578 	pxor	32(%esp),%xmm4
1579 .byte	102,15,56,222,209
1580 	pxor	48(%esp),%xmm5
1581 	pxor	64(%esp),%xmm6
1582 .byte	102,15,56,222,217
1583 	pxor	%xmm0,%xmm7
1584 	movups	32(%ebp),%xmm0
1585 .byte	102,15,56,222,225
1586 .byte	102,15,56,222,233
1587 .byte	102,15,56,222,241
1588 .byte	102,15,56,222,249
1589 	call	L_aesni_decrypt6_enter
1590 	movdqa	80(%esp),%xmm1
1591 	pxor	%xmm0,%xmm0
1592 	xorps	(%esp),%xmm2
1593 	pcmpgtd	%xmm1,%xmm0
1594 	xorps	16(%esp),%xmm3
1595 	movups	%xmm2,(%edi)
1596 	xorps	32(%esp),%xmm4
1597 	movups	%xmm3,16(%edi)
1598 	xorps	48(%esp),%xmm5
1599 	movups	%xmm4,32(%edi)
1600 	xorps	64(%esp),%xmm6
1601 	movups	%xmm5,48(%edi)
1602 	xorps	%xmm1,%xmm7
1603 	movups	%xmm6,64(%edi)
1604 	pshufd	$19,%xmm0,%xmm2
1605 	movups	%xmm7,80(%edi)
1606 	leal	96(%edi),%edi
1607 	movdqa	96(%esp),%xmm3
1608 	pxor	%xmm0,%xmm0
1609 	paddq	%xmm1,%xmm1
1610 	pand	%xmm3,%xmm2
1611 	pcmpgtd	%xmm1,%xmm0
1612 	pxor	%xmm2,%xmm1
1613 	subl	$96,%eax
1614 	jnc	L061xts_dec_loop6
1615 	movl	240(%ebp),%ecx
1616 	movl	%ebp,%edx
1617 	movl	%ecx,%ebx
1618 L060xts_dec_short:
1619 	addl	$96,%eax
1620 	jz	L062xts_dec_done6x
1621 	movdqa	%xmm1,%xmm5
1622 	cmpl	$32,%eax
1623 	jb	L063xts_dec_one
1624 	pshufd	$19,%xmm0,%xmm2
1625 	pxor	%xmm0,%xmm0
1626 	paddq	%xmm1,%xmm1
1627 	pand	%xmm3,%xmm2
1628 	pcmpgtd	%xmm1,%xmm0
1629 	pxor	%xmm2,%xmm1
1630 	je	L064xts_dec_two
1631 	pshufd	$19,%xmm0,%xmm2
1632 	pxor	%xmm0,%xmm0
1633 	movdqa	%xmm1,%xmm6
1634 	paddq	%xmm1,%xmm1
1635 	pand	%xmm3,%xmm2
1636 	pcmpgtd	%xmm1,%xmm0
1637 	pxor	%xmm2,%xmm1
1638 	cmpl	$64,%eax
1639 	jb	L065xts_dec_three
1640 	pshufd	$19,%xmm0,%xmm2
1641 	pxor	%xmm0,%xmm0
1642 	movdqa	%xmm1,%xmm7
1643 	paddq	%xmm1,%xmm1
1644 	pand	%xmm3,%xmm2
1645 	pcmpgtd	%xmm1,%xmm0
1646 	pxor	%xmm2,%xmm1
1647 	movdqa	%xmm5,(%esp)
1648 	movdqa	%xmm6,16(%esp)
1649 	je	L066xts_dec_four
1650 	movdqa	%xmm7,32(%esp)
1651 	pshufd	$19,%xmm0,%xmm7
1652 	movdqa	%xmm1,48(%esp)
1653 	paddq	%xmm1,%xmm1
1654 	pand	%xmm3,%xmm7
1655 	pxor	%xmm1,%xmm7
1656 	movdqu	(%esi),%xmm2
1657 	movdqu	16(%esi),%xmm3
1658 	movdqu	32(%esi),%xmm4
1659 	pxor	(%esp),%xmm2
1660 	movdqu	48(%esi),%xmm5
1661 	pxor	16(%esp),%xmm3
1662 	movdqu	64(%esi),%xmm6
1663 	pxor	32(%esp),%xmm4
1664 	leal	80(%esi),%esi
1665 	pxor	48(%esp),%xmm5
1666 	movdqa	%xmm7,64(%esp)
1667 	pxor	%xmm7,%xmm6
1668 	call	__aesni_decrypt6
1669 	movaps	64(%esp),%xmm1
1670 	xorps	(%esp),%xmm2
1671 	xorps	16(%esp),%xmm3
1672 	xorps	32(%esp),%xmm4
1673 	movups	%xmm2,(%edi)
1674 	xorps	48(%esp),%xmm5
1675 	movups	%xmm3,16(%edi)
1676 	xorps	%xmm1,%xmm6
1677 	movups	%xmm4,32(%edi)
1678 	movups	%xmm5,48(%edi)
1679 	movups	%xmm6,64(%edi)
1680 	leal	80(%edi),%edi
1681 	jmp	L067xts_dec_done
1682 .align	4,0x90
1683 L063xts_dec_one:
1684 	movups	(%esi),%xmm2
1685 	leal	16(%esi),%esi
1686 	xorps	%xmm5,%xmm2
1687 	movups	(%edx),%xmm0
1688 	movups	16(%edx),%xmm1
1689 	leal	32(%edx),%edx
1690 	xorps	%xmm0,%xmm2
1691 L068dec1_loop_12:
1692 .byte	102,15,56,222,209
1693 	decl	%ecx
1694 	movups	(%edx),%xmm1
1695 	leal	16(%edx),%edx
1696 	jnz	L068dec1_loop_12
1697 .byte	102,15,56,223,209
1698 	xorps	%xmm5,%xmm2
1699 	movups	%xmm2,(%edi)
1700 	leal	16(%edi),%edi
1701 	movdqa	%xmm5,%xmm1
1702 	jmp	L067xts_dec_done
1703 .align	4,0x90
1704 L064xts_dec_two:
1705 	movaps	%xmm1,%xmm6
1706 	movups	(%esi),%xmm2
1707 	movups	16(%esi),%xmm3
1708 	leal	32(%esi),%esi
1709 	xorps	%xmm5,%xmm2
1710 	xorps	%xmm6,%xmm3
1711 	call	__aesni_decrypt2
1712 	xorps	%xmm5,%xmm2
1713 	xorps	%xmm6,%xmm3
1714 	movups	%xmm2,(%edi)
1715 	movups	%xmm3,16(%edi)
1716 	leal	32(%edi),%edi
1717 	movdqa	%xmm6,%xmm1
1718 	jmp	L067xts_dec_done
1719 .align	4,0x90
1720 L065xts_dec_three:
1721 	movaps	%xmm1,%xmm7
1722 	movups	(%esi),%xmm2
1723 	movups	16(%esi),%xmm3
1724 	movups	32(%esi),%xmm4
1725 	leal	48(%esi),%esi
1726 	xorps	%xmm5,%xmm2
1727 	xorps	%xmm6,%xmm3
1728 	xorps	%xmm7,%xmm4
1729 	call	__aesni_decrypt3
1730 	xorps	%xmm5,%xmm2
1731 	xorps	%xmm6,%xmm3
1732 	xorps	%xmm7,%xmm4
1733 	movups	%xmm2,(%edi)
1734 	movups	%xmm3,16(%edi)
1735 	movups	%xmm4,32(%edi)
1736 	leal	48(%edi),%edi
1737 	movdqa	%xmm7,%xmm1
1738 	jmp	L067xts_dec_done
1739 .align	4,0x90
1740 L066xts_dec_four:
1741 	movaps	%xmm1,%xmm6
1742 	movups	(%esi),%xmm2
1743 	movups	16(%esi),%xmm3
1744 	movups	32(%esi),%xmm4
1745 	xorps	(%esp),%xmm2
1746 	movups	48(%esi),%xmm5
1747 	leal	64(%esi),%esi
1748 	xorps	16(%esp),%xmm3
1749 	xorps	%xmm7,%xmm4
1750 	xorps	%xmm6,%xmm5
1751 	call	__aesni_decrypt4
1752 	xorps	(%esp),%xmm2
1753 	xorps	16(%esp),%xmm3
1754 	xorps	%xmm7,%xmm4
1755 	movups	%xmm2,(%edi)
1756 	xorps	%xmm6,%xmm5
1757 	movups	%xmm3,16(%edi)
1758 	movups	%xmm4,32(%edi)
1759 	movups	%xmm5,48(%edi)
1760 	leal	64(%edi),%edi
1761 	movdqa	%xmm6,%xmm1
1762 	jmp	L067xts_dec_done
1763 .align	4,0x90
1764 L062xts_dec_done6x:
1765 	movl	112(%esp),%eax
1766 	andl	$15,%eax
1767 	jz	L069xts_dec_ret
1768 	movl	%eax,112(%esp)
1769 	jmp	L070xts_dec_only_one_more
1770 .align	4,0x90
1771 L067xts_dec_done:
1772 	movl	112(%esp),%eax
1773 	pxor	%xmm0,%xmm0
1774 	andl	$15,%eax
1775 	jz	L069xts_dec_ret
1776 	pcmpgtd	%xmm1,%xmm0
1777 	movl	%eax,112(%esp)
1778 	pshufd	$19,%xmm0,%xmm2
1779 	pxor	%xmm0,%xmm0
1780 	movdqa	96(%esp),%xmm3
1781 	paddq	%xmm1,%xmm1
1782 	pand	%xmm3,%xmm2
1783 	pcmpgtd	%xmm1,%xmm0
1784 	pxor	%xmm2,%xmm1
1785 L070xts_dec_only_one_more:
1786 	pshufd	$19,%xmm0,%xmm5
1787 	movdqa	%xmm1,%xmm6
1788 	paddq	%xmm1,%xmm1
1789 	pand	%xmm3,%xmm5
1790 	pxor	%xmm1,%xmm5
1791 	movl	%ebp,%edx
1792 	movl	%ebx,%ecx
1793 	movups	(%esi),%xmm2
1794 	xorps	%xmm5,%xmm2
1795 	movups	(%edx),%xmm0
1796 	movups	16(%edx),%xmm1
1797 	leal	32(%edx),%edx
1798 	xorps	%xmm0,%xmm2
1799 L071dec1_loop_13:
1800 .byte	102,15,56,222,209
1801 	decl	%ecx
1802 	movups	(%edx),%xmm1
1803 	leal	16(%edx),%edx
1804 	jnz	L071dec1_loop_13
1805 .byte	102,15,56,223,209
1806 	xorps	%xmm5,%xmm2
1807 	movups	%xmm2,(%edi)
1808 L072xts_dec_steal:
1809 	movzbl	16(%esi),%ecx
1810 	movzbl	(%edi),%edx
1811 	leal	1(%esi),%esi
1812 	movb	%cl,(%edi)
1813 	movb	%dl,16(%edi)
1814 	leal	1(%edi),%edi
1815 	subl	$1,%eax
1816 	jnz	L072xts_dec_steal
1817 	subl	112(%esp),%edi
1818 	movl	%ebp,%edx
1819 	movl	%ebx,%ecx
1820 	movups	(%edi),%xmm2
1821 	xorps	%xmm6,%xmm2
1822 	movups	(%edx),%xmm0
1823 	movups	16(%edx),%xmm1
1824 	leal	32(%edx),%edx
1825 	xorps	%xmm0,%xmm2
1826 L073dec1_loop_14:
1827 .byte	102,15,56,222,209
1828 	decl	%ecx
1829 	movups	(%edx),%xmm1
1830 	leal	16(%edx),%edx
1831 	jnz	L073dec1_loop_14
1832 .byte	102,15,56,223,209
1833 	xorps	%xmm6,%xmm2
1834 	movups	%xmm2,(%edi)
1835 L069xts_dec_ret:
1836 	pxor	%xmm0,%xmm0
1837 	pxor	%xmm1,%xmm1
1838 	pxor	%xmm2,%xmm2
1839 	movdqa	%xmm0,(%esp)
1840 	pxor	%xmm3,%xmm3
1841 	movdqa	%xmm0,16(%esp)
1842 	pxor	%xmm4,%xmm4
1843 	movdqa	%xmm0,32(%esp)
1844 	pxor	%xmm5,%xmm5
1845 	movdqa	%xmm0,48(%esp)
1846 	pxor	%xmm6,%xmm6
1847 	movdqa	%xmm0,64(%esp)
1848 	pxor	%xmm7,%xmm7
1849 	movdqa	%xmm0,80(%esp)
1850 	movl	116(%esp),%esp
1851 	popl	%edi
1852 	popl	%esi
1853 	popl	%ebx
1854 	popl	%ebp
1855 	ret
1856 .globl	_aesni_ocb_encrypt
1857 .type	_aesni_ocb_encrypt,@function
1858 .align	4
1859 _aesni_ocb_encrypt:
1860 L_aesni_ocb_encrypt_begin:
1861 	%ifdef __CET__
1862 
1863 .byte	243,15,30,251
1864 	%endif
1865 
1866 	pushl	%ebp
1867 	pushl	%ebx
1868 	pushl	%esi
1869 	pushl	%edi
1870 	movl	40(%esp),%ecx
1871 	movl	48(%esp),%ebx
1872 	movl	20(%esp),%esi
1873 	movl	24(%esp),%edi
1874 	movl	28(%esp),%eax
1875 	movl	32(%esp),%edx
1876 	movdqu	(%ecx),%xmm0
1877 	movl	36(%esp),%ebp
1878 	movdqu	(%ebx),%xmm1
1879 	movl	44(%esp),%ebx
1880 	movl	%esp,%ecx
1881 	subl	$132,%esp
1882 	andl	$-16,%esp
1883 	subl	%esi,%edi
1884 	shll	$4,%eax
1885 	leal	-96(%esi,%eax,1),%eax
1886 	movl	%edi,120(%esp)
1887 	movl	%eax,124(%esp)
1888 	movl	%ecx,128(%esp)
1889 	movl	240(%edx),%ecx
1890 	testl	$1,%ebp
1891 	jnz	L074odd
1892 	bsfl	%ebp,%eax
1893 	addl	$1,%ebp
1894 	shll	$4,%eax
1895 	movdqu	(%ebx,%eax,1),%xmm7
1896 	movl	%edx,%eax
1897 	movdqu	(%esi),%xmm2
1898 	leal	16(%esi),%esi
1899 	pxor	%xmm0,%xmm7
1900 	pxor	%xmm2,%xmm1
1901 	pxor	%xmm7,%xmm2
1902 	movdqa	%xmm1,%xmm6
1903 	movups	(%edx),%xmm0
1904 	movups	16(%edx),%xmm1
1905 	leal	32(%edx),%edx
1906 	xorps	%xmm0,%xmm2
1907 L075enc1_loop_15:
1908 .byte	102,15,56,220,209
1909 	decl	%ecx
1910 	movups	(%edx),%xmm1
1911 	leal	16(%edx),%edx
1912 	jnz	L075enc1_loop_15
1913 .byte	102,15,56,221,209
1914 	xorps	%xmm7,%xmm2
1915 	movdqa	%xmm7,%xmm0
1916 	movdqa	%xmm6,%xmm1
1917 	movups	%xmm2,-16(%edi,%esi,1)
1918 	movl	240(%eax),%ecx
1919 	movl	%eax,%edx
1920 	movl	124(%esp),%eax
1921 L074odd:
1922 	shll	$4,%ecx
1923 	movl	$16,%edi
1924 	subl	%ecx,%edi
1925 	movl	%edx,112(%esp)
1926 	leal	32(%edx,%ecx,1),%edx
1927 	movl	%edi,116(%esp)
1928 	cmpl	%eax,%esi
1929 	ja	L076short
1930 	jmp	L077grandloop
1931 .align	5,0x90
1932 L077grandloop:
1933 	leal	1(%ebp),%ecx
1934 	leal	3(%ebp),%eax
1935 	leal	5(%ebp),%edi
1936 	addl	$6,%ebp
1937 	bsfl	%ecx,%ecx
1938 	bsfl	%eax,%eax
1939 	bsfl	%edi,%edi
1940 	shll	$4,%ecx
1941 	shll	$4,%eax
1942 	shll	$4,%edi
1943 	movdqu	(%ebx),%xmm2
1944 	movdqu	(%ebx,%ecx,1),%xmm3
1945 	movl	116(%esp),%ecx
1946 	movdqa	%xmm2,%xmm4
1947 	movdqu	(%ebx,%eax,1),%xmm5
1948 	movdqa	%xmm2,%xmm6
1949 	movdqu	(%ebx,%edi,1),%xmm7
1950 	pxor	%xmm0,%xmm2
1951 	pxor	%xmm2,%xmm3
1952 	movdqa	%xmm2,(%esp)
1953 	pxor	%xmm3,%xmm4
1954 	movdqa	%xmm3,16(%esp)
1955 	pxor	%xmm4,%xmm5
1956 	movdqa	%xmm4,32(%esp)
1957 	pxor	%xmm5,%xmm6
1958 	movdqa	%xmm5,48(%esp)
1959 	pxor	%xmm6,%xmm7
1960 	movdqa	%xmm6,64(%esp)
1961 	movdqa	%xmm7,80(%esp)
1962 	movups	-48(%edx,%ecx,1),%xmm0
1963 	movdqu	(%esi),%xmm2
1964 	movdqu	16(%esi),%xmm3
1965 	movdqu	32(%esi),%xmm4
1966 	movdqu	48(%esi),%xmm5
1967 	movdqu	64(%esi),%xmm6
1968 	movdqu	80(%esi),%xmm7
1969 	leal	96(%esi),%esi
1970 	pxor	%xmm2,%xmm1
1971 	pxor	%xmm0,%xmm2
1972 	pxor	%xmm3,%xmm1
1973 	pxor	%xmm0,%xmm3
1974 	pxor	%xmm4,%xmm1
1975 	pxor	%xmm0,%xmm4
1976 	pxor	%xmm5,%xmm1
1977 	pxor	%xmm0,%xmm5
1978 	pxor	%xmm6,%xmm1
1979 	pxor	%xmm0,%xmm6
1980 	pxor	%xmm7,%xmm1
1981 	pxor	%xmm0,%xmm7
1982 	movdqa	%xmm1,96(%esp)
1983 	movups	-32(%edx,%ecx,1),%xmm1
1984 	pxor	(%esp),%xmm2
1985 	pxor	16(%esp),%xmm3
1986 	pxor	32(%esp),%xmm4
1987 	pxor	48(%esp),%xmm5
1988 	pxor	64(%esp),%xmm6
1989 	pxor	80(%esp),%xmm7
1990 	movups	-16(%edx,%ecx,1),%xmm0
1991 .byte	102,15,56,220,209
1992 .byte	102,15,56,220,217
1993 .byte	102,15,56,220,225
1994 .byte	102,15,56,220,233
1995 .byte	102,15,56,220,241
1996 .byte	102,15,56,220,249
1997 	movl	120(%esp),%edi
1998 	movl	124(%esp),%eax
1999 	call	L_aesni_encrypt6_enter
2000 	movdqa	80(%esp),%xmm0
2001 	pxor	(%esp),%xmm2
2002 	pxor	16(%esp),%xmm3
2003 	pxor	32(%esp),%xmm4
2004 	pxor	48(%esp),%xmm5
2005 	pxor	64(%esp),%xmm6
2006 	pxor	%xmm0,%xmm7
2007 	movdqa	96(%esp),%xmm1
2008 	movdqu	%xmm2,-96(%edi,%esi,1)
2009 	movdqu	%xmm3,-80(%edi,%esi,1)
2010 	movdqu	%xmm4,-64(%edi,%esi,1)
2011 	movdqu	%xmm5,-48(%edi,%esi,1)
2012 	movdqu	%xmm6,-32(%edi,%esi,1)
2013 	movdqu	%xmm7,-16(%edi,%esi,1)
2014 	cmpl	%eax,%esi
2015 	jbe	L077grandloop
2016 L076short:
2017 	addl	$96,%eax
2018 	subl	%esi,%eax
2019 	jz	L078done
2020 	cmpl	$32,%eax
2021 	jb	L079one
2022 	je	L080two
2023 	cmpl	$64,%eax
2024 	jb	L081three
2025 	je	L082four
2026 	leal	1(%ebp),%ecx
2027 	leal	3(%ebp),%eax
2028 	bsfl	%ecx,%ecx
2029 	bsfl	%eax,%eax
2030 	shll	$4,%ecx
2031 	shll	$4,%eax
2032 	movdqu	(%ebx),%xmm2
2033 	movdqu	(%ebx,%ecx,1),%xmm3
2034 	movl	116(%esp),%ecx
2035 	movdqa	%xmm2,%xmm4
2036 	movdqu	(%ebx,%eax,1),%xmm5
2037 	movdqa	%xmm2,%xmm6
2038 	pxor	%xmm0,%xmm2
2039 	pxor	%xmm2,%xmm3
2040 	movdqa	%xmm2,(%esp)
2041 	pxor	%xmm3,%xmm4
2042 	movdqa	%xmm3,16(%esp)
2043 	pxor	%xmm4,%xmm5
2044 	movdqa	%xmm4,32(%esp)
2045 	pxor	%xmm5,%xmm6
2046 	movdqa	%xmm5,48(%esp)
2047 	pxor	%xmm6,%xmm7
2048 	movdqa	%xmm6,64(%esp)
2049 	movups	-48(%edx,%ecx,1),%xmm0
2050 	movdqu	(%esi),%xmm2
2051 	movdqu	16(%esi),%xmm3
2052 	movdqu	32(%esi),%xmm4
2053 	movdqu	48(%esi),%xmm5
2054 	movdqu	64(%esi),%xmm6
2055 	pxor	%xmm7,%xmm7
2056 	pxor	%xmm2,%xmm1
2057 	pxor	%xmm0,%xmm2
2058 	pxor	%xmm3,%xmm1
2059 	pxor	%xmm0,%xmm3
2060 	pxor	%xmm4,%xmm1
2061 	pxor	%xmm0,%xmm4
2062 	pxor	%xmm5,%xmm1
2063 	pxor	%xmm0,%xmm5
2064 	pxor	%xmm6,%xmm1
2065 	pxor	%xmm0,%xmm6
2066 	movdqa	%xmm1,96(%esp)
2067 	movups	-32(%edx,%ecx,1),%xmm1
2068 	pxor	(%esp),%xmm2
2069 	pxor	16(%esp),%xmm3
2070 	pxor	32(%esp),%xmm4
2071 	pxor	48(%esp),%xmm5
2072 	pxor	64(%esp),%xmm6
2073 	movups	-16(%edx,%ecx,1),%xmm0
2074 .byte	102,15,56,220,209
2075 .byte	102,15,56,220,217
2076 .byte	102,15,56,220,225
2077 .byte	102,15,56,220,233
2078 .byte	102,15,56,220,241
2079 .byte	102,15,56,220,249
2080 	movl	120(%esp),%edi
2081 	call	L_aesni_encrypt6_enter
2082 	movdqa	64(%esp),%xmm0
2083 	pxor	(%esp),%xmm2
2084 	pxor	16(%esp),%xmm3
2085 	pxor	32(%esp),%xmm4
2086 	pxor	48(%esp),%xmm5
2087 	pxor	%xmm0,%xmm6
2088 	movdqa	96(%esp),%xmm1
2089 	movdqu	%xmm2,(%edi,%esi,1)
2090 	movdqu	%xmm3,16(%edi,%esi,1)
2091 	movdqu	%xmm4,32(%edi,%esi,1)
2092 	movdqu	%xmm5,48(%edi,%esi,1)
2093 	movdqu	%xmm6,64(%edi,%esi,1)
2094 	jmp	L078done
2095 .align	4,0x90
2096 L079one:
2097 	movdqu	(%ebx),%xmm7
2098 	movl	112(%esp),%edx
2099 	movdqu	(%esi),%xmm2
2100 	movl	240(%edx),%ecx
2101 	pxor	%xmm0,%xmm7
2102 	pxor	%xmm2,%xmm1
2103 	pxor	%xmm7,%xmm2
2104 	movdqa	%xmm1,%xmm6
2105 	movl	120(%esp),%edi
2106 	movups	(%edx),%xmm0
2107 	movups	16(%edx),%xmm1
2108 	leal	32(%edx),%edx
2109 	xorps	%xmm0,%xmm2
2110 L083enc1_loop_16:
2111 .byte	102,15,56,220,209
2112 	decl	%ecx
2113 	movups	(%edx),%xmm1
2114 	leal	16(%edx),%edx
2115 	jnz	L083enc1_loop_16
2116 .byte	102,15,56,221,209
2117 	xorps	%xmm7,%xmm2
2118 	movdqa	%xmm7,%xmm0
2119 	movdqa	%xmm6,%xmm1
2120 	movups	%xmm2,(%edi,%esi,1)
2121 	jmp	L078done
2122 .align	4,0x90
2123 L080two:
2124 	leal	1(%ebp),%ecx
2125 	movl	112(%esp),%edx
2126 	bsfl	%ecx,%ecx
2127 	shll	$4,%ecx
2128 	movdqu	(%ebx),%xmm6
2129 	movdqu	(%ebx,%ecx,1),%xmm7
2130 	movdqu	(%esi),%xmm2
2131 	movdqu	16(%esi),%xmm3
2132 	movl	240(%edx),%ecx
2133 	pxor	%xmm0,%xmm6
2134 	pxor	%xmm6,%xmm7
2135 	pxor	%xmm2,%xmm1
2136 	pxor	%xmm6,%xmm2
2137 	pxor	%xmm3,%xmm1
2138 	pxor	%xmm7,%xmm3
2139 	movdqa	%xmm1,%xmm5
2140 	movl	120(%esp),%edi
2141 	call	__aesni_encrypt2
2142 	xorps	%xmm6,%xmm2
2143 	xorps	%xmm7,%xmm3
2144 	movdqa	%xmm7,%xmm0
2145 	movdqa	%xmm5,%xmm1
2146 	movups	%xmm2,(%edi,%esi,1)
2147 	movups	%xmm3,16(%edi,%esi,1)
2148 	jmp	L078done
2149 .align	4,0x90
2150 L081three:
2151 	leal	1(%ebp),%ecx
2152 	movl	112(%esp),%edx
2153 	bsfl	%ecx,%ecx
2154 	shll	$4,%ecx
2155 	movdqu	(%ebx),%xmm5
2156 	movdqu	(%ebx,%ecx,1),%xmm6
2157 	movdqa	%xmm5,%xmm7
2158 	movdqu	(%esi),%xmm2
2159 	movdqu	16(%esi),%xmm3
2160 	movdqu	32(%esi),%xmm4
2161 	movl	240(%edx),%ecx
2162 	pxor	%xmm0,%xmm5
2163 	pxor	%xmm5,%xmm6
2164 	pxor	%xmm6,%xmm7
2165 	pxor	%xmm2,%xmm1
2166 	pxor	%xmm5,%xmm2
2167 	pxor	%xmm3,%xmm1
2168 	pxor	%xmm6,%xmm3
2169 	pxor	%xmm4,%xmm1
2170 	pxor	%xmm7,%xmm4
2171 	movdqa	%xmm1,96(%esp)
2172 	movl	120(%esp),%edi
2173 	call	__aesni_encrypt3
2174 	xorps	%xmm5,%xmm2
2175 	xorps	%xmm6,%xmm3
2176 	xorps	%xmm7,%xmm4
2177 	movdqa	%xmm7,%xmm0
2178 	movdqa	96(%esp),%xmm1
2179 	movups	%xmm2,(%edi,%esi,1)
2180 	movups	%xmm3,16(%edi,%esi,1)
2181 	movups	%xmm4,32(%edi,%esi,1)
2182 	jmp	L078done
2183 .align	4,0x90
2184 L082four:
2185 	leal	1(%ebp),%ecx
2186 	leal	3(%ebp),%eax
2187 	bsfl	%ecx,%ecx
2188 	bsfl	%eax,%eax
2189 	movl	112(%esp),%edx
2190 	shll	$4,%ecx
2191 	shll	$4,%eax
2192 	movdqu	(%ebx),%xmm4
2193 	movdqu	(%ebx,%ecx,1),%xmm5
2194 	movdqa	%xmm4,%xmm6
2195 	movdqu	(%ebx,%eax,1),%xmm7
2196 	pxor	%xmm0,%xmm4
2197 	movdqu	(%esi),%xmm2
2198 	pxor	%xmm4,%xmm5
2199 	movdqu	16(%esi),%xmm3
2200 	pxor	%xmm5,%xmm6
2201 	movdqa	%xmm4,(%esp)
2202 	pxor	%xmm6,%xmm7
2203 	movdqa	%xmm5,16(%esp)
2204 	movdqu	32(%esi),%xmm4
2205 	movdqu	48(%esi),%xmm5
2206 	movl	240(%edx),%ecx
2207 	pxor	%xmm2,%xmm1
2208 	pxor	(%esp),%xmm2
2209 	pxor	%xmm3,%xmm1
2210 	pxor	16(%esp),%xmm3
2211 	pxor	%xmm4,%xmm1
2212 	pxor	%xmm6,%xmm4
2213 	pxor	%xmm5,%xmm1
2214 	pxor	%xmm7,%xmm5
2215 	movdqa	%xmm1,96(%esp)
2216 	movl	120(%esp),%edi
2217 	call	__aesni_encrypt4
2218 	xorps	(%esp),%xmm2
2219 	xorps	16(%esp),%xmm3
2220 	xorps	%xmm6,%xmm4
2221 	movups	%xmm2,(%edi,%esi,1)
2222 	xorps	%xmm7,%xmm5
2223 	movups	%xmm3,16(%edi,%esi,1)
2224 	movdqa	%xmm7,%xmm0
2225 	movups	%xmm4,32(%edi,%esi,1)
2226 	movdqa	96(%esp),%xmm1
2227 	movups	%xmm5,48(%edi,%esi,1)
2228 L078done:
2229 	movl	128(%esp),%edx
2230 	pxor	%xmm2,%xmm2
2231 	pxor	%xmm3,%xmm3
2232 	movdqa	%xmm2,(%esp)
2233 	pxor	%xmm4,%xmm4
2234 	movdqa	%xmm2,16(%esp)
2235 	pxor	%xmm5,%xmm5
2236 	movdqa	%xmm2,32(%esp)
2237 	pxor	%xmm6,%xmm6
2238 	movdqa	%xmm2,48(%esp)
2239 	pxor	%xmm7,%xmm7
2240 	movdqa	%xmm2,64(%esp)
2241 	movdqa	%xmm2,80(%esp)
2242 	movdqa	%xmm2,96(%esp)
2243 	leal	(%edx),%esp
2244 	movl	40(%esp),%ecx
2245 	movl	48(%esp),%ebx
2246 	movdqu	%xmm0,(%ecx)
2247 	pxor	%xmm0,%xmm0
2248 	movdqu	%xmm1,(%ebx)
2249 	pxor	%xmm1,%xmm1
2250 	popl	%edi
2251 	popl	%esi
2252 	popl	%ebx
2253 	popl	%ebp
2254 	ret
2255 .globl	_aesni_ocb_decrypt
2256 .type	_aesni_ocb_decrypt,@function
2257 .align	4
2258 _aesni_ocb_decrypt:
2259 L_aesni_ocb_decrypt_begin:
2260 	%ifdef __CET__
2261 
2262 .byte	243,15,30,251
2263 	%endif
2264 
2265 	pushl	%ebp
2266 	pushl	%ebx
2267 	pushl	%esi
2268 	pushl	%edi
2269 	movl	40(%esp),%ecx
2270 	movl	48(%esp),%ebx
2271 	movl	20(%esp),%esi
2272 	movl	24(%esp),%edi
2273 	movl	28(%esp),%eax
2274 	movl	32(%esp),%edx
2275 	movdqu	(%ecx),%xmm0
2276 	movl	36(%esp),%ebp
2277 	movdqu	(%ebx),%xmm1
2278 	movl	44(%esp),%ebx
2279 	movl	%esp,%ecx
2280 	subl	$132,%esp
2281 	andl	$-16,%esp
2282 	subl	%esi,%edi
2283 	shll	$4,%eax
2284 	leal	-96(%esi,%eax,1),%eax
2285 	movl	%edi,120(%esp)
2286 	movl	%eax,124(%esp)
2287 	movl	%ecx,128(%esp)
2288 	movl	240(%edx),%ecx
2289 	testl	$1,%ebp
2290 	jnz	L084odd
2291 	bsfl	%ebp,%eax
2292 	addl	$1,%ebp
2293 	shll	$4,%eax
2294 	movdqu	(%ebx,%eax,1),%xmm7
2295 	movl	%edx,%eax
2296 	movdqu	(%esi),%xmm2
2297 	leal	16(%esi),%esi
2298 	pxor	%xmm0,%xmm7
2299 	pxor	%xmm7,%xmm2
2300 	movdqa	%xmm1,%xmm6
2301 	movups	(%edx),%xmm0
2302 	movups	16(%edx),%xmm1
2303 	leal	32(%edx),%edx
2304 	xorps	%xmm0,%xmm2
2305 L085dec1_loop_17:
2306 .byte	102,15,56,222,209
2307 	decl	%ecx
2308 	movups	(%edx),%xmm1
2309 	leal	16(%edx),%edx
2310 	jnz	L085dec1_loop_17
2311 .byte	102,15,56,223,209
2312 	xorps	%xmm7,%xmm2
2313 	movaps	%xmm6,%xmm1
2314 	movdqa	%xmm7,%xmm0
2315 	xorps	%xmm2,%xmm1
2316 	movups	%xmm2,-16(%edi,%esi,1)
2317 	movl	240(%eax),%ecx
2318 	movl	%eax,%edx
2319 	movl	124(%esp),%eax
2320 L084odd:
2321 	shll	$4,%ecx
2322 	movl	$16,%edi
2323 	subl	%ecx,%edi
2324 	movl	%edx,112(%esp)
2325 	leal	32(%edx,%ecx,1),%edx
2326 	movl	%edi,116(%esp)
2327 	cmpl	%eax,%esi
2328 	ja	L086short
2329 	jmp	L087grandloop
2330 .align	5,0x90
2331 L087grandloop:
2332 	leal	1(%ebp),%ecx
2333 	leal	3(%ebp),%eax
2334 	leal	5(%ebp),%edi
2335 	addl	$6,%ebp
2336 	bsfl	%ecx,%ecx
2337 	bsfl	%eax,%eax
2338 	bsfl	%edi,%edi
2339 	shll	$4,%ecx
2340 	shll	$4,%eax
2341 	shll	$4,%edi
2342 	movdqu	(%ebx),%xmm2
2343 	movdqu	(%ebx,%ecx,1),%xmm3
2344 	movl	116(%esp),%ecx
2345 	movdqa	%xmm2,%xmm4
2346 	movdqu	(%ebx,%eax,1),%xmm5
2347 	movdqa	%xmm2,%xmm6
2348 	movdqu	(%ebx,%edi,1),%xmm7
2349 	pxor	%xmm0,%xmm2
2350 	pxor	%xmm2,%xmm3
2351 	movdqa	%xmm2,(%esp)
2352 	pxor	%xmm3,%xmm4
2353 	movdqa	%xmm3,16(%esp)
2354 	pxor	%xmm4,%xmm5
2355 	movdqa	%xmm4,32(%esp)
2356 	pxor	%xmm5,%xmm6
2357 	movdqa	%xmm5,48(%esp)
2358 	pxor	%xmm6,%xmm7
2359 	movdqa	%xmm6,64(%esp)
2360 	movdqa	%xmm7,80(%esp)
2361 	movups	-48(%edx,%ecx,1),%xmm0
2362 	movdqu	(%esi),%xmm2
2363 	movdqu	16(%esi),%xmm3
2364 	movdqu	32(%esi),%xmm4
2365 	movdqu	48(%esi),%xmm5
2366 	movdqu	64(%esi),%xmm6
2367 	movdqu	80(%esi),%xmm7
2368 	leal	96(%esi),%esi
2369 	movdqa	%xmm1,96(%esp)
2370 	pxor	%xmm0,%xmm2
2371 	pxor	%xmm0,%xmm3
2372 	pxor	%xmm0,%xmm4
2373 	pxor	%xmm0,%xmm5
2374 	pxor	%xmm0,%xmm6
2375 	pxor	%xmm0,%xmm7
2376 	movups	-32(%edx,%ecx,1),%xmm1
2377 	pxor	(%esp),%xmm2
2378 	pxor	16(%esp),%xmm3
2379 	pxor	32(%esp),%xmm4
2380 	pxor	48(%esp),%xmm5
2381 	pxor	64(%esp),%xmm6
2382 	pxor	80(%esp),%xmm7
2383 	movups	-16(%edx,%ecx,1),%xmm0
2384 .byte	102,15,56,222,209
2385 .byte	102,15,56,222,217
2386 .byte	102,15,56,222,225
2387 .byte	102,15,56,222,233
2388 .byte	102,15,56,222,241
2389 .byte	102,15,56,222,249
2390 	movl	120(%esp),%edi
2391 	movl	124(%esp),%eax
2392 	call	L_aesni_decrypt6_enter
2393 	movdqa	80(%esp),%xmm0
2394 	pxor	(%esp),%xmm2
2395 	movdqa	96(%esp),%xmm1
2396 	pxor	16(%esp),%xmm3
2397 	pxor	32(%esp),%xmm4
2398 	pxor	48(%esp),%xmm5
2399 	pxor	64(%esp),%xmm6
2400 	pxor	%xmm0,%xmm7
2401 	pxor	%xmm2,%xmm1
2402 	movdqu	%xmm2,-96(%edi,%esi,1)
2403 	pxor	%xmm3,%xmm1
2404 	movdqu	%xmm3,-80(%edi,%esi,1)
2405 	pxor	%xmm4,%xmm1
2406 	movdqu	%xmm4,-64(%edi,%esi,1)
2407 	pxor	%xmm5,%xmm1
2408 	movdqu	%xmm5,-48(%edi,%esi,1)
2409 	pxor	%xmm6,%xmm1
2410 	movdqu	%xmm6,-32(%edi,%esi,1)
2411 	pxor	%xmm7,%xmm1
2412 	movdqu	%xmm7,-16(%edi,%esi,1)
2413 	cmpl	%eax,%esi
2414 	jbe	L087grandloop
2415 L086short:
2416 	addl	$96,%eax
2417 	subl	%esi,%eax
2418 	jz	L088done
2419 	cmpl	$32,%eax
2420 	jb	L089one
2421 	je	L090two
2422 	cmpl	$64,%eax
2423 	jb	L091three
2424 	je	L092four
2425 	leal	1(%ebp),%ecx
2426 	leal	3(%ebp),%eax
2427 	bsfl	%ecx,%ecx
2428 	bsfl	%eax,%eax
2429 	shll	$4,%ecx
2430 	shll	$4,%eax
2431 	movdqu	(%ebx),%xmm2
2432 	movdqu	(%ebx,%ecx,1),%xmm3
2433 	movl	116(%esp),%ecx
2434 	movdqa	%xmm2,%xmm4
2435 	movdqu	(%ebx,%eax,1),%xmm5
2436 	movdqa	%xmm2,%xmm6
2437 	pxor	%xmm0,%xmm2
2438 	pxor	%xmm2,%xmm3
2439 	movdqa	%xmm2,(%esp)
2440 	pxor	%xmm3,%xmm4
2441 	movdqa	%xmm3,16(%esp)
2442 	pxor	%xmm4,%xmm5
2443 	movdqa	%xmm4,32(%esp)
2444 	pxor	%xmm5,%xmm6
2445 	movdqa	%xmm5,48(%esp)
2446 	pxor	%xmm6,%xmm7
2447 	movdqa	%xmm6,64(%esp)
2448 	movups	-48(%edx,%ecx,1),%xmm0
2449 	movdqu	(%esi),%xmm2
2450 	movdqu	16(%esi),%xmm3
2451 	movdqu	32(%esi),%xmm4
2452 	movdqu	48(%esi),%xmm5
2453 	movdqu	64(%esi),%xmm6
2454 	pxor	%xmm7,%xmm7
2455 	movdqa	%xmm1,96(%esp)
2456 	pxor	%xmm0,%xmm2
2457 	pxor	%xmm0,%xmm3
2458 	pxor	%xmm0,%xmm4
2459 	pxor	%xmm0,%xmm5
2460 	pxor	%xmm0,%xmm6
2461 	movups	-32(%edx,%ecx,1),%xmm1
2462 	pxor	(%esp),%xmm2
2463 	pxor	16(%esp),%xmm3
2464 	pxor	32(%esp),%xmm4
2465 	pxor	48(%esp),%xmm5
2466 	pxor	64(%esp),%xmm6
2467 	movups	-16(%edx,%ecx,1),%xmm0
2468 .byte	102,15,56,222,209
2469 .byte	102,15,56,222,217
2470 .byte	102,15,56,222,225
2471 .byte	102,15,56,222,233
2472 .byte	102,15,56,222,241
2473 .byte	102,15,56,222,249
2474 	movl	120(%esp),%edi
2475 	call	L_aesni_decrypt6_enter
2476 	movdqa	64(%esp),%xmm0
2477 	pxor	(%esp),%xmm2
2478 	movdqa	96(%esp),%xmm1
2479 	pxor	16(%esp),%xmm3
2480 	pxor	32(%esp),%xmm4
2481 	pxor	48(%esp),%xmm5
2482 	pxor	%xmm0,%xmm6
2483 	pxor	%xmm2,%xmm1
2484 	movdqu	%xmm2,(%edi,%esi,1)
2485 	pxor	%xmm3,%xmm1
2486 	movdqu	%xmm3,16(%edi,%esi,1)
2487 	pxor	%xmm4,%xmm1
2488 	movdqu	%xmm4,32(%edi,%esi,1)
2489 	pxor	%xmm5,%xmm1
2490 	movdqu	%xmm5,48(%edi,%esi,1)
2491 	pxor	%xmm6,%xmm1
2492 	movdqu	%xmm6,64(%edi,%esi,1)
2493 	jmp	L088done
2494 .align	4,0x90
2495 L089one:
2496 	movdqu	(%ebx),%xmm7
2497 	movl	112(%esp),%edx
2498 	movdqu	(%esi),%xmm2
2499 	movl	240(%edx),%ecx
2500 	pxor	%xmm0,%xmm7
2501 	pxor	%xmm7,%xmm2
2502 	movdqa	%xmm1,%xmm6
2503 	movl	120(%esp),%edi
2504 	movups	(%edx),%xmm0
2505 	movups	16(%edx),%xmm1
2506 	leal	32(%edx),%edx
2507 	xorps	%xmm0,%xmm2
2508 L093dec1_loop_18:
2509 .byte	102,15,56,222,209
2510 	decl	%ecx
2511 	movups	(%edx),%xmm1
2512 	leal	16(%edx),%edx
2513 	jnz	L093dec1_loop_18
2514 .byte	102,15,56,223,209
2515 	xorps	%xmm7,%xmm2
2516 	movaps	%xmm6,%xmm1
2517 	movdqa	%xmm7,%xmm0
2518 	xorps	%xmm2,%xmm1
2519 	movups	%xmm2,(%edi,%esi,1)
2520 	jmp	L088done
2521 .align	4,0x90
2522 L090two:
2523 	leal	1(%ebp),%ecx
2524 	movl	112(%esp),%edx
2525 	bsfl	%ecx,%ecx
2526 	shll	$4,%ecx
2527 	movdqu	(%ebx),%xmm6
2528 	movdqu	(%ebx,%ecx,1),%xmm7
2529 	movdqu	(%esi),%xmm2
2530 	movdqu	16(%esi),%xmm3
2531 	movl	240(%edx),%ecx
2532 	movdqa	%xmm1,%xmm5
2533 	pxor	%xmm0,%xmm6
2534 	pxor	%xmm6,%xmm7
2535 	pxor	%xmm6,%xmm2
2536 	pxor	%xmm7,%xmm3
2537 	movl	120(%esp),%edi
2538 	call	__aesni_decrypt2
2539 	xorps	%xmm6,%xmm2
2540 	xorps	%xmm7,%xmm3
2541 	movdqa	%xmm7,%xmm0
2542 	xorps	%xmm2,%xmm5
2543 	movups	%xmm2,(%edi,%esi,1)
2544 	xorps	%xmm3,%xmm5
2545 	movups	%xmm3,16(%edi,%esi,1)
2546 	movaps	%xmm5,%xmm1
2547 	jmp	L088done
2548 .align	4,0x90
2549 L091three:
2550 	leal	1(%ebp),%ecx
2551 	movl	112(%esp),%edx
2552 	bsfl	%ecx,%ecx
2553 	shll	$4,%ecx
2554 	movdqu	(%ebx),%xmm5
2555 	movdqu	(%ebx,%ecx,1),%xmm6
2556 	movdqa	%xmm5,%xmm7
2557 	movdqu	(%esi),%xmm2
2558 	movdqu	16(%esi),%xmm3
2559 	movdqu	32(%esi),%xmm4
2560 	movl	240(%edx),%ecx
2561 	movdqa	%xmm1,96(%esp)
2562 	pxor	%xmm0,%xmm5
2563 	pxor	%xmm5,%xmm6
2564 	pxor	%xmm6,%xmm7
2565 	pxor	%xmm5,%xmm2
2566 	pxor	%xmm6,%xmm3
2567 	pxor	%xmm7,%xmm4
2568 	movl	120(%esp),%edi
2569 	call	__aesni_decrypt3
2570 	movdqa	96(%esp),%xmm1
2571 	xorps	%xmm5,%xmm2
2572 	xorps	%xmm6,%xmm3
2573 	xorps	%xmm7,%xmm4
2574 	movups	%xmm2,(%edi,%esi,1)
2575 	pxor	%xmm2,%xmm1
2576 	movdqa	%xmm7,%xmm0
2577 	movups	%xmm3,16(%edi,%esi,1)
2578 	pxor	%xmm3,%xmm1
2579 	movups	%xmm4,32(%edi,%esi,1)
2580 	pxor	%xmm4,%xmm1
2581 	jmp	L088done
2582 .align	4,0x90
2583 L092four:
2584 	leal	1(%ebp),%ecx
2585 	leal	3(%ebp),%eax
2586 	bsfl	%ecx,%ecx
2587 	bsfl	%eax,%eax
2588 	movl	112(%esp),%edx
2589 	shll	$4,%ecx
2590 	shll	$4,%eax
2591 	movdqu	(%ebx),%xmm4
2592 	movdqu	(%ebx,%ecx,1),%xmm5
2593 	movdqa	%xmm4,%xmm6
2594 	movdqu	(%ebx,%eax,1),%xmm7
2595 	pxor	%xmm0,%xmm4
2596 	movdqu	(%esi),%xmm2
2597 	pxor	%xmm4,%xmm5
2598 	movdqu	16(%esi),%xmm3
2599 	pxor	%xmm5,%xmm6
2600 	movdqa	%xmm4,(%esp)
2601 	pxor	%xmm6,%xmm7
2602 	movdqa	%xmm5,16(%esp)
2603 	movdqu	32(%esi),%xmm4
2604 	movdqu	48(%esi),%xmm5
2605 	movl	240(%edx),%ecx
2606 	movdqa	%xmm1,96(%esp)
2607 	pxor	(%esp),%xmm2
2608 	pxor	16(%esp),%xmm3
2609 	pxor	%xmm6,%xmm4
2610 	pxor	%xmm7,%xmm5
2611 	movl	120(%esp),%edi
2612 	call	__aesni_decrypt4
2613 	movdqa	96(%esp),%xmm1
2614 	xorps	(%esp),%xmm2
2615 	xorps	16(%esp),%xmm3
2616 	xorps	%xmm6,%xmm4
2617 	movups	%xmm2,(%edi,%esi,1)
2618 	pxor	%xmm2,%xmm1
2619 	xorps	%xmm7,%xmm5
2620 	movups	%xmm3,16(%edi,%esi,1)
2621 	pxor	%xmm3,%xmm1
2622 	movdqa	%xmm7,%xmm0
2623 	movups	%xmm4,32(%edi,%esi,1)
2624 	pxor	%xmm4,%xmm1
2625 	movups	%xmm5,48(%edi,%esi,1)
2626 	pxor	%xmm5,%xmm1
2627 L088done:
2628 	movl	128(%esp),%edx
2629 	pxor	%xmm2,%xmm2
2630 	pxor	%xmm3,%xmm3
2631 	movdqa	%xmm2,(%esp)
2632 	pxor	%xmm4,%xmm4
2633 	movdqa	%xmm2,16(%esp)
2634 	pxor	%xmm5,%xmm5
2635 	movdqa	%xmm2,32(%esp)
2636 	pxor	%xmm6,%xmm6
2637 	movdqa	%xmm2,48(%esp)
2638 	pxor	%xmm7,%xmm7
2639 	movdqa	%xmm2,64(%esp)
2640 	movdqa	%xmm2,80(%esp)
2641 	movdqa	%xmm2,96(%esp)
2642 	leal	(%edx),%esp
2643 	movl	40(%esp),%ecx
2644 	movl	48(%esp),%ebx
2645 	movdqu	%xmm0,(%ecx)
2646 	pxor	%xmm0,%xmm0
2647 	movdqu	%xmm1,(%ebx)
2648 	pxor	%xmm1,%xmm1
2649 	popl	%edi
2650 	popl	%esi
2651 	popl	%ebx
2652 	popl	%ebp
2653 	ret
2654 .globl	_aesni_cbc_encrypt
2655 .type	_aesni_cbc_encrypt,@function
2656 .align	4
2657 _aesni_cbc_encrypt:
2658 L_aesni_cbc_encrypt_begin:
2659 	%ifdef __CET__
2660 
2661 .byte	243,15,30,251
2662 	%endif
2663 
2664 	pushl	%ebp
2665 	pushl	%ebx
2666 	pushl	%esi
2667 	pushl	%edi
2668 	movl	20(%esp),%esi
2669 	movl	%esp,%ebx
2670 	movl	24(%esp),%edi
2671 	subl	$24,%ebx
2672 	movl	28(%esp),%eax
2673 	andl	$-16,%ebx
2674 	movl	32(%esp),%edx
2675 	movl	36(%esp),%ebp
2676 	testl	%eax,%eax
2677 	jz	L094cbc_abort
2678 	cmpl	$0,40(%esp)
2679 	xchgl	%esp,%ebx
2680 	movups	(%ebp),%xmm7
2681 	movl	240(%edx),%ecx
2682 	movl	%edx,%ebp
2683 	movl	%ebx,16(%esp)
2684 	movl	%ecx,%ebx
2685 	je	L095cbc_decrypt
2686 	movaps	%xmm7,%xmm2
2687 	cmpl	$16,%eax
2688 	jb	L096cbc_enc_tail
2689 	subl	$16,%eax
2690 	jmp	L097cbc_enc_loop
2691 .align	4,0x90
2692 L097cbc_enc_loop:
2693 	movups	(%esi),%xmm7
2694 	leal	16(%esi),%esi
2695 	movups	(%edx),%xmm0
2696 	movups	16(%edx),%xmm1
2697 	xorps	%xmm0,%xmm7
2698 	leal	32(%edx),%edx
2699 	xorps	%xmm7,%xmm2
2700 L098enc1_loop_19:
2701 .byte	102,15,56,220,209
2702 	decl	%ecx
2703 	movups	(%edx),%xmm1
2704 	leal	16(%edx),%edx
2705 	jnz	L098enc1_loop_19
2706 .byte	102,15,56,221,209
2707 	movl	%ebx,%ecx
2708 	movl	%ebp,%edx
2709 	movups	%xmm2,(%edi)
2710 	leal	16(%edi),%edi
2711 	subl	$16,%eax
2712 	jnc	L097cbc_enc_loop
2713 	addl	$16,%eax
2714 	jnz	L096cbc_enc_tail
2715 	movaps	%xmm2,%xmm7
2716 	pxor	%xmm2,%xmm2
2717 	jmp	L099cbc_ret
2718 L096cbc_enc_tail:
2719 	movl	%eax,%ecx
2720 .long	2767451785
2721 	movl	$16,%ecx
2722 	subl	%eax,%ecx
2723 	xorl	%eax,%eax
2724 .long	2868115081
2725 	leal	-16(%edi),%edi
2726 	movl	%ebx,%ecx
2727 	movl	%edi,%esi
2728 	movl	%ebp,%edx
2729 	jmp	L097cbc_enc_loop
2730 .align	4,0x90
2731 L095cbc_decrypt:
2732 	cmpl	$80,%eax
2733 	jbe	L100cbc_dec_tail
2734 	movaps	%xmm7,(%esp)
2735 	subl	$80,%eax
2736 	jmp	L101cbc_dec_loop6_enter
2737 .align	4,0x90
2738 L102cbc_dec_loop6:
2739 	movaps	%xmm0,(%esp)
2740 	movups	%xmm7,(%edi)
2741 	leal	16(%edi),%edi
2742 L101cbc_dec_loop6_enter:
2743 	movdqu	(%esi),%xmm2
2744 	movdqu	16(%esi),%xmm3
2745 	movdqu	32(%esi),%xmm4
2746 	movdqu	48(%esi),%xmm5
2747 	movdqu	64(%esi),%xmm6
2748 	movdqu	80(%esi),%xmm7
2749 	call	__aesni_decrypt6
2750 	movups	(%esi),%xmm1
2751 	movups	16(%esi),%xmm0
2752 	xorps	(%esp),%xmm2
2753 	xorps	%xmm1,%xmm3
2754 	movups	32(%esi),%xmm1
2755 	xorps	%xmm0,%xmm4
2756 	movups	48(%esi),%xmm0
2757 	xorps	%xmm1,%xmm5
2758 	movups	64(%esi),%xmm1
2759 	xorps	%xmm0,%xmm6
2760 	movups	80(%esi),%xmm0
2761 	xorps	%xmm1,%xmm7
2762 	movups	%xmm2,(%edi)
2763 	movups	%xmm3,16(%edi)
2764 	leal	96(%esi),%esi
2765 	movups	%xmm4,32(%edi)
2766 	movl	%ebx,%ecx
2767 	movups	%xmm5,48(%edi)
2768 	movl	%ebp,%edx
2769 	movups	%xmm6,64(%edi)
2770 	leal	80(%edi),%edi
2771 	subl	$96,%eax
2772 	ja	L102cbc_dec_loop6
2773 	movaps	%xmm7,%xmm2
2774 	movaps	%xmm0,%xmm7
2775 	addl	$80,%eax
2776 	jle	L103cbc_dec_clear_tail_collected
2777 	movups	%xmm2,(%edi)
2778 	leal	16(%edi),%edi
2779 L100cbc_dec_tail:
2780 	movups	(%esi),%xmm2
2781 	movaps	%xmm2,%xmm6
2782 	cmpl	$16,%eax
2783 	jbe	L104cbc_dec_one
2784 	movups	16(%esi),%xmm3
2785 	movaps	%xmm3,%xmm5
2786 	cmpl	$32,%eax
2787 	jbe	L105cbc_dec_two
2788 	movups	32(%esi),%xmm4
2789 	cmpl	$48,%eax
2790 	jbe	L106cbc_dec_three
2791 	movups	48(%esi),%xmm5
2792 	cmpl	$64,%eax
2793 	jbe	L107cbc_dec_four
2794 	movups	64(%esi),%xmm6
2795 	movaps	%xmm7,(%esp)
2796 	movups	(%esi),%xmm2
2797 	xorps	%xmm7,%xmm7
2798 	call	__aesni_decrypt6
2799 	movups	(%esi),%xmm1
2800 	movups	16(%esi),%xmm0
2801 	xorps	(%esp),%xmm2
2802 	xorps	%xmm1,%xmm3
2803 	movups	32(%esi),%xmm1
2804 	xorps	%xmm0,%xmm4
2805 	movups	48(%esi),%xmm0
2806 	xorps	%xmm1,%xmm5
2807 	movups	64(%esi),%xmm7
2808 	xorps	%xmm0,%xmm6
2809 	movups	%xmm2,(%edi)
2810 	movups	%xmm3,16(%edi)
2811 	pxor	%xmm3,%xmm3
2812 	movups	%xmm4,32(%edi)
2813 	pxor	%xmm4,%xmm4
2814 	movups	%xmm5,48(%edi)
2815 	pxor	%xmm5,%xmm5
2816 	leal	64(%edi),%edi
2817 	movaps	%xmm6,%xmm2
2818 	pxor	%xmm6,%xmm6
2819 	subl	$80,%eax
2820 	jmp	L108cbc_dec_tail_collected
2821 .align	4,0x90
2822 L104cbc_dec_one:
2823 	movups	(%edx),%xmm0
2824 	movups	16(%edx),%xmm1
2825 	leal	32(%edx),%edx
2826 	xorps	%xmm0,%xmm2
2827 L109dec1_loop_20:
2828 .byte	102,15,56,222,209
2829 	decl	%ecx
2830 	movups	(%edx),%xmm1
2831 	leal	16(%edx),%edx
2832 	jnz	L109dec1_loop_20
2833 .byte	102,15,56,223,209
2834 	xorps	%xmm7,%xmm2
2835 	movaps	%xmm6,%xmm7
2836 	subl	$16,%eax
2837 	jmp	L108cbc_dec_tail_collected
2838 .align	4,0x90
2839 L105cbc_dec_two:
2840 	call	__aesni_decrypt2
2841 	xorps	%xmm7,%xmm2
2842 	xorps	%xmm6,%xmm3
2843 	movups	%xmm2,(%edi)
2844 	movaps	%xmm3,%xmm2
2845 	pxor	%xmm3,%xmm3
2846 	leal	16(%edi),%edi
2847 	movaps	%xmm5,%xmm7
2848 	subl	$32,%eax
2849 	jmp	L108cbc_dec_tail_collected
2850 .align	4,0x90
2851 L106cbc_dec_three:
2852 	call	__aesni_decrypt3
2853 	xorps	%xmm7,%xmm2
2854 	xorps	%xmm6,%xmm3
2855 	xorps	%xmm5,%xmm4
2856 	movups	%xmm2,(%edi)
2857 	movaps	%xmm4,%xmm2
2858 	pxor	%xmm4,%xmm4
2859 	movups	%xmm3,16(%edi)
2860 	pxor	%xmm3,%xmm3
2861 	leal	32(%edi),%edi
2862 	movups	32(%esi),%xmm7
2863 	subl	$48,%eax
2864 	jmp	L108cbc_dec_tail_collected
2865 .align	4,0x90
2866 L107cbc_dec_four:
2867 	call	__aesni_decrypt4
2868 	movups	16(%esi),%xmm1
2869 	movups	32(%esi),%xmm0
2870 	xorps	%xmm7,%xmm2
2871 	movups	48(%esi),%xmm7
2872 	xorps	%xmm6,%xmm3
2873 	movups	%xmm2,(%edi)
2874 	xorps	%xmm1,%xmm4
2875 	movups	%xmm3,16(%edi)
2876 	pxor	%xmm3,%xmm3
2877 	xorps	%xmm0,%xmm5
2878 	movups	%xmm4,32(%edi)
2879 	pxor	%xmm4,%xmm4
2880 	leal	48(%edi),%edi
2881 	movaps	%xmm5,%xmm2
2882 	pxor	%xmm5,%xmm5
2883 	subl	$64,%eax
2884 	jmp	L108cbc_dec_tail_collected
2885 .align	4,0x90
2886 L103cbc_dec_clear_tail_collected:
2887 	pxor	%xmm3,%xmm3
2888 	pxor	%xmm4,%xmm4
2889 	pxor	%xmm5,%xmm5
2890 	pxor	%xmm6,%xmm6
2891 L108cbc_dec_tail_collected:
2892 	andl	$15,%eax
2893 	jnz	L110cbc_dec_tail_partial
2894 	movups	%xmm2,(%edi)
2895 	pxor	%xmm0,%xmm0
2896 	jmp	L099cbc_ret
2897 .align	4,0x90
2898 L110cbc_dec_tail_partial:
2899 	movaps	%xmm2,(%esp)
2900 	pxor	%xmm0,%xmm0
2901 	movl	$16,%ecx
2902 	movl	%esp,%esi
2903 	subl	%eax,%ecx
2904 .long	2767451785
2905 	movdqa	%xmm2,(%esp)
2906 L099cbc_ret:
2907 	movl	16(%esp),%esp
2908 	movl	36(%esp),%ebp
2909 	pxor	%xmm2,%xmm2
2910 	pxor	%xmm1,%xmm1
2911 	movups	%xmm7,(%ebp)
2912 	pxor	%xmm7,%xmm7
2913 L094cbc_abort:
2914 	popl	%edi
2915 	popl	%esi
2916 	popl	%ebx
2917 	popl	%ebp
2918 	ret
2919 .type	__aesni_set_encrypt_key,@function
2920 .align	4
2921 __aesni_set_encrypt_key:
2922 	%ifdef __CET__
2923 
2924 .byte	243,15,30,251
2925 	%endif
2926 
2927 	pushl	%ebp
2928 	pushl	%ebx
2929 	testl	%eax,%eax
2930 	jz	L111bad_pointer
2931 	testl	%edx,%edx
2932 	jz	L111bad_pointer
2933 	call	L112pic
2934 L112pic:
2935 	popl	%ebx
2936 	leal	Lkey_const-L112pic(%ebx),%ebx
2937 	leal	__GLOBAL_OFFSET_TABLE_+[.-Lkey_const](%ebx),%ebp
2938 	movl	_OPENSSL_ia32cap_P@GOT(%ebp),%ebp
2939 	movups	(%eax),%xmm0
2940 	xorps	%xmm4,%xmm4
2941 	movl	4(%ebp),%ebp
2942 	leal	16(%edx),%edx
2943 	andl	$268437504,%ebp
2944 	cmpl	$256,%ecx
2945 	je	L11314rounds
2946 	cmpl	$192,%ecx
2947 	je	L11412rounds
2948 	cmpl	$128,%ecx
2949 	jne	L115bad_keybits
2950 .align	4,0x90
2951 L11610rounds:
2952 	cmpl	$268435456,%ebp
2953 	je	L11710rounds_alt
2954 	movl	$9,%ecx
2955 	movups	%xmm0,-16(%edx)
2956 .byte	102,15,58,223,200,1
2957 	call	L118key_128_cold
2958 .byte	102,15,58,223,200,2
2959 	call	L119key_128
2960 .byte	102,15,58,223,200,4
2961 	call	L119key_128
2962 .byte	102,15,58,223,200,8
2963 	call	L119key_128
2964 .byte	102,15,58,223,200,16
2965 	call	L119key_128
2966 .byte	102,15,58,223,200,32
2967 	call	L119key_128
2968 .byte	102,15,58,223,200,64
2969 	call	L119key_128
2970 .byte	102,15,58,223,200,128
2971 	call	L119key_128
2972 .byte	102,15,58,223,200,27
2973 	call	L119key_128
2974 .byte	102,15,58,223,200,54
2975 	call	L119key_128
2976 	movups	%xmm0,(%edx)
2977 	movl	%ecx,80(%edx)
2978 	jmp	L120good_key
2979 .align	4,0x90
2980 L119key_128:
2981 	movups	%xmm0,(%edx)
2982 	leal	16(%edx),%edx
2983 L118key_128_cold:
2984 	shufps	$16,%xmm0,%xmm4
2985 	xorps	%xmm4,%xmm0
2986 	shufps	$140,%xmm0,%xmm4
2987 	xorps	%xmm4,%xmm0
2988 	shufps	$255,%xmm1,%xmm1
2989 	xorps	%xmm1,%xmm0
2990 	ret
2991 .align	4,0x90
2992 L11710rounds_alt:
2993 	movdqa	(%ebx),%xmm5
2994 	movl	$8,%ecx
2995 	movdqa	32(%ebx),%xmm4
2996 	movdqa	%xmm0,%xmm2
2997 	movdqu	%xmm0,-16(%edx)
2998 L121loop_key128:
2999 .byte	102,15,56,0,197
3000 .byte	102,15,56,221,196
3001 	pslld	$1,%xmm4
3002 	leal	16(%edx),%edx
3003 	movdqa	%xmm2,%xmm3
3004 	pslldq	$4,%xmm2
3005 	pxor	%xmm2,%xmm3
3006 	pslldq	$4,%xmm2
3007 	pxor	%xmm2,%xmm3
3008 	pslldq	$4,%xmm2
3009 	pxor	%xmm3,%xmm2
3010 	pxor	%xmm2,%xmm0
3011 	movdqu	%xmm0,-16(%edx)
3012 	movdqa	%xmm0,%xmm2
3013 	decl	%ecx
3014 	jnz	L121loop_key128
3015 	movdqa	48(%ebx),%xmm4
3016 .byte	102,15,56,0,197
3017 .byte	102,15,56,221,196
3018 	pslld	$1,%xmm4
3019 	movdqa	%xmm2,%xmm3
3020 	pslldq	$4,%xmm2
3021 	pxor	%xmm2,%xmm3
3022 	pslldq	$4,%xmm2
3023 	pxor	%xmm2,%xmm3
3024 	pslldq	$4,%xmm2
3025 	pxor	%xmm3,%xmm2
3026 	pxor	%xmm2,%xmm0
3027 	movdqu	%xmm0,(%edx)
3028 	movdqa	%xmm0,%xmm2
3029 .byte	102,15,56,0,197
3030 .byte	102,15,56,221,196
3031 	movdqa	%xmm2,%xmm3
3032 	pslldq	$4,%xmm2
3033 	pxor	%xmm2,%xmm3
3034 	pslldq	$4,%xmm2
3035 	pxor	%xmm2,%xmm3
3036 	pslldq	$4,%xmm2
3037 	pxor	%xmm3,%xmm2
3038 	pxor	%xmm2,%xmm0
3039 	movdqu	%xmm0,16(%edx)
3040 	movl	$9,%ecx
3041 	movl	%ecx,96(%edx)
3042 	jmp	L120good_key
3043 .align	4,0x90
3044 L11412rounds:
3045 	movq	16(%eax),%xmm2
3046 	cmpl	$268435456,%ebp
3047 	je	L12212rounds_alt
3048 	movl	$11,%ecx
3049 	movups	%xmm0,-16(%edx)
3050 .byte	102,15,58,223,202,1
3051 	call	L123key_192a_cold
3052 .byte	102,15,58,223,202,2
3053 	call	L124key_192b
3054 .byte	102,15,58,223,202,4
3055 	call	L125key_192a
3056 .byte	102,15,58,223,202,8
3057 	call	L124key_192b
3058 .byte	102,15,58,223,202,16
3059 	call	L125key_192a
3060 .byte	102,15,58,223,202,32
3061 	call	L124key_192b
3062 .byte	102,15,58,223,202,64
3063 	call	L125key_192a
3064 .byte	102,15,58,223,202,128
3065 	call	L124key_192b
3066 	movups	%xmm0,(%edx)
3067 	movl	%ecx,48(%edx)
3068 	jmp	L120good_key
3069 .align	4,0x90
3070 L125key_192a:
3071 	movups	%xmm0,(%edx)
3072 	leal	16(%edx),%edx
3073 .align	4,0x90
3074 L123key_192a_cold:
3075 	movaps	%xmm2,%xmm5
3076 L126key_192b_warm:
3077 	shufps	$16,%xmm0,%xmm4
3078 	movdqa	%xmm2,%xmm3
3079 	xorps	%xmm4,%xmm0
3080 	shufps	$140,%xmm0,%xmm4
3081 	pslldq	$4,%xmm3
3082 	xorps	%xmm4,%xmm0
3083 	pshufd	$85,%xmm1,%xmm1
3084 	pxor	%xmm3,%xmm2
3085 	pxor	%xmm1,%xmm0
3086 	pshufd	$255,%xmm0,%xmm3
3087 	pxor	%xmm3,%xmm2
3088 	ret
3089 .align	4,0x90
3090 L124key_192b:
3091 	movaps	%xmm0,%xmm3
3092 	shufps	$68,%xmm0,%xmm5
3093 	movups	%xmm5,(%edx)
3094 	shufps	$78,%xmm2,%xmm3
3095 	movups	%xmm3,16(%edx)
3096 	leal	32(%edx),%edx
3097 	jmp	L126key_192b_warm
3098 .align	4,0x90
3099 L12212rounds_alt:
3100 	movdqa	16(%ebx),%xmm5
3101 	movdqa	32(%ebx),%xmm4
3102 	movl	$8,%ecx
3103 	movdqu	%xmm0,-16(%edx)
3104 L127loop_key192:
3105 	movq	%xmm2,(%edx)
3106 	movdqa	%xmm2,%xmm1
3107 .byte	102,15,56,0,213
3108 .byte	102,15,56,221,212
3109 	pslld	$1,%xmm4
3110 	leal	24(%edx),%edx
3111 	movdqa	%xmm0,%xmm3
3112 	pslldq	$4,%xmm0
3113 	pxor	%xmm0,%xmm3
3114 	pslldq	$4,%xmm0
3115 	pxor	%xmm0,%xmm3
3116 	pslldq	$4,%xmm0
3117 	pxor	%xmm3,%xmm0
3118 	pshufd	$255,%xmm0,%xmm3
3119 	pxor	%xmm1,%xmm3
3120 	pslldq	$4,%xmm1
3121 	pxor	%xmm1,%xmm3
3122 	pxor	%xmm2,%xmm0
3123 	pxor	%xmm3,%xmm2
3124 	movdqu	%xmm0,-16(%edx)
3125 	decl	%ecx
3126 	jnz	L127loop_key192
3127 	movl	$11,%ecx
3128 	movl	%ecx,32(%edx)
3129 	jmp	L120good_key
3130 .align	4,0x90
3131 L11314rounds:
3132 	movups	16(%eax),%xmm2
3133 	leal	16(%edx),%edx
3134 	cmpl	$268435456,%ebp
3135 	je	L12814rounds_alt
3136 	movl	$13,%ecx
3137 	movups	%xmm0,-32(%edx)
3138 	movups	%xmm2,-16(%edx)
3139 .byte	102,15,58,223,202,1
3140 	call	L129key_256a_cold
3141 .byte	102,15,58,223,200,1
3142 	call	L130key_256b
3143 .byte	102,15,58,223,202,2
3144 	call	L131key_256a
3145 .byte	102,15,58,223,200,2
3146 	call	L130key_256b
3147 .byte	102,15,58,223,202,4
3148 	call	L131key_256a
3149 .byte	102,15,58,223,200,4
3150 	call	L130key_256b
3151 .byte	102,15,58,223,202,8
3152 	call	L131key_256a
3153 .byte	102,15,58,223,200,8
3154 	call	L130key_256b
3155 .byte	102,15,58,223,202,16
3156 	call	L131key_256a
3157 .byte	102,15,58,223,200,16
3158 	call	L130key_256b
3159 .byte	102,15,58,223,202,32
3160 	call	L131key_256a
3161 .byte	102,15,58,223,200,32
3162 	call	L130key_256b
3163 .byte	102,15,58,223,202,64
3164 	call	L131key_256a
3165 	movups	%xmm0,(%edx)
3166 	movl	%ecx,16(%edx)
3167 	xorl	%eax,%eax
3168 	jmp	L120good_key
3169 .align	4,0x90
3170 L131key_256a:
3171 	movups	%xmm2,(%edx)
3172 	leal	16(%edx),%edx
3173 L129key_256a_cold:
3174 	shufps	$16,%xmm0,%xmm4
3175 	xorps	%xmm4,%xmm0
3176 	shufps	$140,%xmm0,%xmm4
3177 	xorps	%xmm4,%xmm0
3178 	shufps	$255,%xmm1,%xmm1
3179 	xorps	%xmm1,%xmm0
3180 	ret
3181 .align	4,0x90
3182 L130key_256b:
3183 	movups	%xmm0,(%edx)
3184 	leal	16(%edx),%edx
3185 	shufps	$16,%xmm2,%xmm4
3186 	xorps	%xmm4,%xmm2
3187 	shufps	$140,%xmm2,%xmm4
3188 	xorps	%xmm4,%xmm2
3189 	shufps	$170,%xmm1,%xmm1
3190 	xorps	%xmm1,%xmm2
3191 	ret
3192 .align	4,0x90
3193 L12814rounds_alt:
3194 	movdqa	(%ebx),%xmm5
3195 	movdqa	32(%ebx),%xmm4
3196 	movl	$7,%ecx
3197 	movdqu	%xmm0,-32(%edx)
3198 	movdqa	%xmm2,%xmm1
3199 	movdqu	%xmm2,-16(%edx)
3200 L132loop_key256:
3201 .byte	102,15,56,0,213
3202 .byte	102,15,56,221,212
3203 	movdqa	%xmm0,%xmm3
3204 	pslldq	$4,%xmm0
3205 	pxor	%xmm0,%xmm3
3206 	pslldq	$4,%xmm0
3207 	pxor	%xmm0,%xmm3
3208 	pslldq	$4,%xmm0
3209 	pxor	%xmm3,%xmm0
3210 	pslld	$1,%xmm4
3211 	pxor	%xmm2,%xmm0
3212 	movdqu	%xmm0,(%edx)
3213 	decl	%ecx
3214 	jz	L133done_key256
3215 	pshufd	$255,%xmm0,%xmm2
3216 	pxor	%xmm3,%xmm3
3217 .byte	102,15,56,221,211
3218 	movdqa	%xmm1,%xmm3
3219 	pslldq	$4,%xmm1
3220 	pxor	%xmm1,%xmm3
3221 	pslldq	$4,%xmm1
3222 	pxor	%xmm1,%xmm3
3223 	pslldq	$4,%xmm1
3224 	pxor	%xmm3,%xmm1
3225 	pxor	%xmm1,%xmm2
3226 	movdqu	%xmm2,16(%edx)
3227 	leal	32(%edx),%edx
3228 	movdqa	%xmm2,%xmm1
3229 	jmp	L132loop_key256
3230 L133done_key256:
3231 	movl	$13,%ecx
3232 	movl	%ecx,16(%edx)
3233 L120good_key:
3234 	pxor	%xmm0,%xmm0
3235 	pxor	%xmm1,%xmm1
3236 	pxor	%xmm2,%xmm2
3237 	pxor	%xmm3,%xmm3
3238 	pxor	%xmm4,%xmm4
3239 	pxor	%xmm5,%xmm5
3240 	xorl	%eax,%eax
3241 	popl	%ebx
3242 	popl	%ebp
3243 	ret
3244 .align	2,0x90
3245 L111bad_pointer:
3246 	movl	$-1,%eax
3247 	popl	%ebx
3248 	popl	%ebp
3249 	ret
3250 .align	2,0x90
3251 L115bad_keybits:
3252 	pxor	%xmm0,%xmm0
3253 	movl	$-2,%eax
3254 	popl	%ebx
3255 	popl	%ebp
3256 	ret
3257 .globl	_aesni_set_encrypt_key
3258 .type	_aesni_set_encrypt_key,@function
3259 .align	4
3260 _aesni_set_encrypt_key:
3261 L_aesni_set_encrypt_key_begin:
3262 	%ifdef __CET__
3263 
3264 .byte	243,15,30,251
3265 	%endif
3266 
3267 	movl	4(%esp),%eax
3268 	movl	8(%esp),%ecx
3269 	movl	12(%esp),%edx
3270 	call	__aesni_set_encrypt_key
3271 	ret
3272 .globl	_aesni_set_decrypt_key
3273 .type	_aesni_set_decrypt_key,@function
3274 .align	4
3275 _aesni_set_decrypt_key:
3276 L_aesni_set_decrypt_key_begin:
3277 	%ifdef __CET__
3278 
3279 .byte	243,15,30,251
3280 	%endif
3281 
3282 	movl	4(%esp),%eax
3283 	movl	8(%esp),%ecx
3284 	movl	12(%esp),%edx
3285 	call	__aesni_set_encrypt_key
3286 	movl	12(%esp),%edx
3287 	shll	$4,%ecx
3288 	testl	%eax,%eax
3289 	jnz	L134dec_key_ret
3290 	leal	16(%edx,%ecx,1),%eax
3291 	movups	(%edx),%xmm0
3292 	movups	(%eax),%xmm1
3293 	movups	%xmm0,(%eax)
3294 	movups	%xmm1,(%edx)
3295 	leal	16(%edx),%edx
3296 	leal	-16(%eax),%eax
3297 L135dec_key_inverse:
3298 	movups	(%edx),%xmm0
3299 	movups	(%eax),%xmm1
3300 .byte	102,15,56,219,192
3301 .byte	102,15,56,219,201
3302 	leal	16(%edx),%edx
3303 	leal	-16(%eax),%eax
3304 	movups	%xmm0,16(%eax)
3305 	movups	%xmm1,-16(%edx)
3306 	cmpl	%edx,%eax
3307 	ja	L135dec_key_inverse
3308 	movups	(%edx),%xmm0
3309 .byte	102,15,56,219,192
3310 	movups	%xmm0,(%edx)
3311 	pxor	%xmm0,%xmm0
3312 	pxor	%xmm1,%xmm1
3313 	xorl	%eax,%eax
3314 L134dec_key_ret:
3315 	ret
3316 .align	6,0x90
3317 Lkey_const:
3318 .long	202313229,202313229,202313229,202313229
3319 .long	67569157,67569157,67569157,67569157
3320 .long	1,1,1,1
3321 .long	27,27,27,27
3322 .byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
3323 .byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
3324 .byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
3325 .byte	115,108,46,111,114,103,62,0
3326 .comm	_OPENSSL_ia32cap_P,16
3327