1 .text
2 .type	__x86_AES_encrypt_compact,@function
3 .align	4
4 __x86_AES_encrypt_compact:
5 	%ifdef __CET__
6 
7 .byte	243,15,30,251
8 	%endif
9 
10 	movl	%edi,20(%esp)
11 	xorl	(%edi),%eax
12 	xorl	4(%edi),%ebx
13 	xorl	8(%edi),%ecx
14 	xorl	12(%edi),%edx
15 	movl	240(%edi),%esi
16 	leal	-2(%esi,%esi,1),%esi
17 	leal	(%edi,%esi,8),%esi
18 	movl	%esi,24(%esp)
19 	movl	-128(%ebp),%edi
20 	movl	-96(%ebp),%esi
21 	movl	-64(%ebp),%edi
22 	movl	-32(%ebp),%esi
23 	movl	(%ebp),%edi
24 	movl	32(%ebp),%esi
25 	movl	64(%ebp),%edi
26 	movl	96(%ebp),%esi
27 .align	4,0x90
28 L000loop:
29 	movl	%eax,%esi
30 	andl	$255,%esi
31 	movzbl	-128(%ebp,%esi,1),%esi
32 	movzbl	%bh,%edi
33 	movzbl	-128(%ebp,%edi,1),%edi
34 	shll	$8,%edi
35 	xorl	%edi,%esi
36 	movl	%ecx,%edi
37 	shrl	$16,%edi
38 	andl	$255,%edi
39 	movzbl	-128(%ebp,%edi,1),%edi
40 	shll	$16,%edi
41 	xorl	%edi,%esi
42 	movl	%edx,%edi
43 	shrl	$24,%edi
44 	movzbl	-128(%ebp,%edi,1),%edi
45 	shll	$24,%edi
46 	xorl	%edi,%esi
47 	movl	%esi,4(%esp)
48 	movl	%ebx,%esi
49 	andl	$255,%esi
50 	shrl	$16,%ebx
51 	movzbl	-128(%ebp,%esi,1),%esi
52 	movzbl	%ch,%edi
53 	movzbl	-128(%ebp,%edi,1),%edi
54 	shll	$8,%edi
55 	xorl	%edi,%esi
56 	movl	%edx,%edi
57 	shrl	$16,%edi
58 	andl	$255,%edi
59 	movzbl	-128(%ebp,%edi,1),%edi
60 	shll	$16,%edi
61 	xorl	%edi,%esi
62 	movl	%eax,%edi
63 	shrl	$24,%edi
64 	movzbl	-128(%ebp,%edi,1),%edi
65 	shll	$24,%edi
66 	xorl	%edi,%esi
67 	movl	%esi,8(%esp)
68 	movl	%ecx,%esi
69 	andl	$255,%esi
70 	shrl	$24,%ecx
71 	movzbl	-128(%ebp,%esi,1),%esi
72 	movzbl	%dh,%edi
73 	movzbl	-128(%ebp,%edi,1),%edi
74 	shll	$8,%edi
75 	xorl	%edi,%esi
76 	movl	%eax,%edi
77 	shrl	$16,%edi
78 	andl	$255,%edx
79 	andl	$255,%edi
80 	movzbl	-128(%ebp,%edi,1),%edi
81 	shll	$16,%edi
82 	xorl	%edi,%esi
83 	movzbl	%bh,%edi
84 	movzbl	-128(%ebp,%edi,1),%edi
85 	shll	$24,%edi
86 	xorl	%edi,%esi
87 	andl	$255,%edx
88 	movzbl	-128(%ebp,%edx,1),%edx
89 	movzbl	%ah,%eax
90 	movzbl	-128(%ebp,%eax,1),%eax
91 	shll	$8,%eax
92 	xorl	%eax,%edx
93 	movl	4(%esp),%eax
94 	andl	$255,%ebx
95 	movzbl	-128(%ebp,%ebx,1),%ebx
96 	shll	$16,%ebx
97 	xorl	%ebx,%edx
98 	movl	8(%esp),%ebx
99 	movzbl	-128(%ebp,%ecx,1),%ecx
100 	shll	$24,%ecx
101 	xorl	%ecx,%edx
102 	movl	%esi,%ecx
103 	movl	$2155905152,%ebp
104 	andl	%ecx,%ebp
105 	leal	(%ecx,%ecx,1),%edi
106 	movl	%ebp,%esi
107 	shrl	$7,%ebp
108 	andl	$4278124286,%edi
109 	subl	%ebp,%esi
110 	movl	%ecx,%ebp
111 	andl	$454761243,%esi
112 	rorl	$16,%ebp
113 	xorl	%edi,%esi
114 	movl	%ecx,%edi
115 	xorl	%esi,%ecx
116 	rorl	$24,%edi
117 	xorl	%ebp,%esi
118 	roll	$24,%ecx
119 	xorl	%edi,%esi
120 	movl	$2155905152,%ebp
121 	xorl	%esi,%ecx
122 	andl	%edx,%ebp
123 	leal	(%edx,%edx,1),%edi
124 	movl	%ebp,%esi
125 	shrl	$7,%ebp
126 	andl	$4278124286,%edi
127 	subl	%ebp,%esi
128 	movl	%edx,%ebp
129 	andl	$454761243,%esi
130 	rorl	$16,%ebp
131 	xorl	%edi,%esi
132 	movl	%edx,%edi
133 	xorl	%esi,%edx
134 	rorl	$24,%edi
135 	xorl	%ebp,%esi
136 	roll	$24,%edx
137 	xorl	%edi,%esi
138 	movl	$2155905152,%ebp
139 	xorl	%esi,%edx
140 	andl	%eax,%ebp
141 	leal	(%eax,%eax,1),%edi
142 	movl	%ebp,%esi
143 	shrl	$7,%ebp
144 	andl	$4278124286,%edi
145 	subl	%ebp,%esi
146 	movl	%eax,%ebp
147 	andl	$454761243,%esi
148 	rorl	$16,%ebp
149 	xorl	%edi,%esi
150 	movl	%eax,%edi
151 	xorl	%esi,%eax
152 	rorl	$24,%edi
153 	xorl	%ebp,%esi
154 	roll	$24,%eax
155 	xorl	%edi,%esi
156 	movl	$2155905152,%ebp
157 	xorl	%esi,%eax
158 	andl	%ebx,%ebp
159 	leal	(%ebx,%ebx,1),%edi
160 	movl	%ebp,%esi
161 	shrl	$7,%ebp
162 	andl	$4278124286,%edi
163 	subl	%ebp,%esi
164 	movl	%ebx,%ebp
165 	andl	$454761243,%esi
166 	rorl	$16,%ebp
167 	xorl	%edi,%esi
168 	movl	%ebx,%edi
169 	xorl	%esi,%ebx
170 	rorl	$24,%edi
171 	xorl	%ebp,%esi
172 	roll	$24,%ebx
173 	xorl	%edi,%esi
174 	xorl	%esi,%ebx
175 	movl	20(%esp),%edi
176 	movl	28(%esp),%ebp
177 	addl	$16,%edi
178 	xorl	(%edi),%eax
179 	xorl	4(%edi),%ebx
180 	xorl	8(%edi),%ecx
181 	xorl	12(%edi),%edx
182 	cmpl	24(%esp),%edi
183 	movl	%edi,20(%esp)
184 	jb	L000loop
185 	movl	%eax,%esi
186 	andl	$255,%esi
187 	movzbl	-128(%ebp,%esi,1),%esi
188 	movzbl	%bh,%edi
189 	movzbl	-128(%ebp,%edi,1),%edi
190 	shll	$8,%edi
191 	xorl	%edi,%esi
192 	movl	%ecx,%edi
193 	shrl	$16,%edi
194 	andl	$255,%edi
195 	movzbl	-128(%ebp,%edi,1),%edi
196 	shll	$16,%edi
197 	xorl	%edi,%esi
198 	movl	%edx,%edi
199 	shrl	$24,%edi
200 	movzbl	-128(%ebp,%edi,1),%edi
201 	shll	$24,%edi
202 	xorl	%edi,%esi
203 	movl	%esi,4(%esp)
204 	movl	%ebx,%esi
205 	andl	$255,%esi
206 	shrl	$16,%ebx
207 	movzbl	-128(%ebp,%esi,1),%esi
208 	movzbl	%ch,%edi
209 	movzbl	-128(%ebp,%edi,1),%edi
210 	shll	$8,%edi
211 	xorl	%edi,%esi
212 	movl	%edx,%edi
213 	shrl	$16,%edi
214 	andl	$255,%edi
215 	movzbl	-128(%ebp,%edi,1),%edi
216 	shll	$16,%edi
217 	xorl	%edi,%esi
218 	movl	%eax,%edi
219 	shrl	$24,%edi
220 	movzbl	-128(%ebp,%edi,1),%edi
221 	shll	$24,%edi
222 	xorl	%edi,%esi
223 	movl	%esi,8(%esp)
224 	movl	%ecx,%esi
225 	andl	$255,%esi
226 	shrl	$24,%ecx
227 	movzbl	-128(%ebp,%esi,1),%esi
228 	movzbl	%dh,%edi
229 	movzbl	-128(%ebp,%edi,1),%edi
230 	shll	$8,%edi
231 	xorl	%edi,%esi
232 	movl	%eax,%edi
233 	shrl	$16,%edi
234 	andl	$255,%edx
235 	andl	$255,%edi
236 	movzbl	-128(%ebp,%edi,1),%edi
237 	shll	$16,%edi
238 	xorl	%edi,%esi
239 	movzbl	%bh,%edi
240 	movzbl	-128(%ebp,%edi,1),%edi
241 	shll	$24,%edi
242 	xorl	%edi,%esi
243 	movl	20(%esp),%edi
244 	andl	$255,%edx
245 	movzbl	-128(%ebp,%edx,1),%edx
246 	movzbl	%ah,%eax
247 	movzbl	-128(%ebp,%eax,1),%eax
248 	shll	$8,%eax
249 	xorl	%eax,%edx
250 	movl	4(%esp),%eax
251 	andl	$255,%ebx
252 	movzbl	-128(%ebp,%ebx,1),%ebx
253 	shll	$16,%ebx
254 	xorl	%ebx,%edx
255 	movl	8(%esp),%ebx
256 	movzbl	-128(%ebp,%ecx,1),%ecx
257 	shll	$24,%ecx
258 	xorl	%ecx,%edx
259 	movl	%esi,%ecx
260 	xorl	16(%edi),%eax
261 	xorl	20(%edi),%ebx
262 	xorl	24(%edi),%ecx
263 	xorl	28(%edi),%edx
264 	ret
265 .type	__sse_AES_encrypt_compact,@function
266 .align	4
267 __sse_AES_encrypt_compact:
268 	%ifdef __CET__
269 
270 .byte	243,15,30,251
271 	%endif
272 
273 	pxor	(%edi),%mm0
274 	pxor	8(%edi),%mm4
275 	movl	240(%edi),%esi
276 	leal	-2(%esi,%esi,1),%esi
277 	leal	(%edi,%esi,8),%esi
278 	movl	%esi,24(%esp)
279 	movl	$454761243,%eax
280 	movl	%eax,8(%esp)
281 	movl	%eax,12(%esp)
282 	movl	-128(%ebp),%eax
283 	movl	-96(%ebp),%ebx
284 	movl	-64(%ebp),%ecx
285 	movl	-32(%ebp),%edx
286 	movl	(%ebp),%eax
287 	movl	32(%ebp),%ebx
288 	movl	64(%ebp),%ecx
289 	movl	96(%ebp),%edx
290 .align	4,0x90
291 L001loop:
292 	pshufw	$8,%mm0,%mm1
293 	pshufw	$13,%mm4,%mm5
294 	movd	%mm1,%eax
295 	movd	%mm5,%ebx
296 	movl	%edi,20(%esp)
297 	movzbl	%al,%esi
298 	movzbl	%ah,%edx
299 	pshufw	$13,%mm0,%mm2
300 	movzbl	-128(%ebp,%esi,1),%ecx
301 	movzbl	%bl,%edi
302 	movzbl	-128(%ebp,%edx,1),%edx
303 	shrl	$16,%eax
304 	shll	$8,%edx
305 	movzbl	-128(%ebp,%edi,1),%esi
306 	movzbl	%bh,%edi
307 	shll	$16,%esi
308 	pshufw	$8,%mm4,%mm6
309 	orl	%esi,%ecx
310 	movzbl	-128(%ebp,%edi,1),%esi
311 	movzbl	%ah,%edi
312 	shll	$24,%esi
313 	shrl	$16,%ebx
314 	orl	%esi,%edx
315 	movzbl	-128(%ebp,%edi,1),%esi
316 	movzbl	%bh,%edi
317 	shll	$8,%esi
318 	orl	%esi,%ecx
319 	movzbl	-128(%ebp,%edi,1),%esi
320 	movzbl	%al,%edi
321 	shll	$24,%esi
322 	orl	%esi,%ecx
323 	movzbl	-128(%ebp,%edi,1),%esi
324 	movzbl	%bl,%edi
325 	movd	%mm2,%eax
326 	movd	%ecx,%mm0
327 	movzbl	-128(%ebp,%edi,1),%ecx
328 	movzbl	%ah,%edi
329 	shll	$16,%ecx
330 	movd	%mm6,%ebx
331 	orl	%esi,%ecx
332 	movzbl	-128(%ebp,%edi,1),%esi
333 	movzbl	%bh,%edi
334 	shll	$24,%esi
335 	orl	%esi,%ecx
336 	movzbl	-128(%ebp,%edi,1),%esi
337 	movzbl	%bl,%edi
338 	shll	$8,%esi
339 	shrl	$16,%ebx
340 	orl	%esi,%ecx
341 	movzbl	-128(%ebp,%edi,1),%esi
342 	movzbl	%al,%edi
343 	shrl	$16,%eax
344 	movd	%ecx,%mm1
345 	movzbl	-128(%ebp,%edi,1),%ecx
346 	movzbl	%ah,%edi
347 	shll	$16,%ecx
348 	andl	$255,%eax
349 	orl	%esi,%ecx
350 	punpckldq	%mm1,%mm0
351 	movzbl	-128(%ebp,%edi,1),%esi
352 	movzbl	%bh,%edi
353 	shll	$24,%esi
354 	andl	$255,%ebx
355 	movzbl	-128(%ebp,%eax,1),%eax
356 	orl	%esi,%ecx
357 	shll	$16,%eax
358 	movzbl	-128(%ebp,%edi,1),%esi
359 	orl	%eax,%edx
360 	shll	$8,%esi
361 	movzbl	-128(%ebp,%ebx,1),%ebx
362 	orl	%esi,%ecx
363 	orl	%ebx,%edx
364 	movl	20(%esp),%edi
365 	movd	%ecx,%mm4
366 	movd	%edx,%mm5
367 	punpckldq	%mm5,%mm4
368 	addl	$16,%edi
369 	cmpl	24(%esp),%edi
370 	ja	L002out
371 	movq	8(%esp),%mm2
372 	pxor	%mm3,%mm3
373 	pxor	%mm7,%mm7
374 	movq	%mm0,%mm1
375 	movq	%mm4,%mm5
376 	pcmpgtb	%mm0,%mm3
377 	pcmpgtb	%mm4,%mm7
378 	pand	%mm2,%mm3
379 	pand	%mm2,%mm7
380 	pshufw	$177,%mm0,%mm2
381 	pshufw	$177,%mm4,%mm6
382 	paddb	%mm0,%mm0
383 	paddb	%mm4,%mm4
384 	pxor	%mm3,%mm0
385 	pxor	%mm7,%mm4
386 	pshufw	$177,%mm2,%mm3
387 	pshufw	$177,%mm6,%mm7
388 	pxor	%mm0,%mm1
389 	pxor	%mm4,%mm5
390 	pxor	%mm2,%mm0
391 	pxor	%mm6,%mm4
392 	movq	%mm3,%mm2
393 	movq	%mm7,%mm6
394 	pslld	$8,%mm3
395 	pslld	$8,%mm7
396 	psrld	$24,%mm2
397 	psrld	$24,%mm6
398 	pxor	%mm3,%mm0
399 	pxor	%mm7,%mm4
400 	pxor	%mm2,%mm0
401 	pxor	%mm6,%mm4
402 	movq	%mm1,%mm3
403 	movq	%mm5,%mm7
404 	movq	(%edi),%mm2
405 	movq	8(%edi),%mm6
406 	psrld	$8,%mm1
407 	psrld	$8,%mm5
408 	movl	-128(%ebp),%eax
409 	pslld	$24,%mm3
410 	pslld	$24,%mm7
411 	movl	-64(%ebp),%ebx
412 	pxor	%mm1,%mm0
413 	pxor	%mm5,%mm4
414 	movl	(%ebp),%ecx
415 	pxor	%mm3,%mm0
416 	pxor	%mm7,%mm4
417 	movl	64(%ebp),%edx
418 	pxor	%mm2,%mm0
419 	pxor	%mm6,%mm4
420 	jmp	L001loop
421 .align	4,0x90
422 L002out:
423 	pxor	(%edi),%mm0
424 	pxor	8(%edi),%mm4
425 	ret
426 .type	__x86_AES_encrypt,@function
427 .align	4
428 __x86_AES_encrypt:
429 	%ifdef __CET__
430 
431 .byte	243,15,30,251
432 	%endif
433 
434 	movl	%edi,20(%esp)
435 	xorl	(%edi),%eax
436 	xorl	4(%edi),%ebx
437 	xorl	8(%edi),%ecx
438 	xorl	12(%edi),%edx
439 	movl	240(%edi),%esi
440 	leal	-2(%esi,%esi,1),%esi
441 	leal	(%edi,%esi,8),%esi
442 	movl	%esi,24(%esp)
443 .align	4,0x90
444 L003loop:
445 	movl	%eax,%esi
446 	andl	$255,%esi
447 	movl	(%ebp,%esi,8),%esi
448 	movzbl	%bh,%edi
449 	xorl	3(%ebp,%edi,8),%esi
450 	movl	%ecx,%edi
451 	shrl	$16,%edi
452 	andl	$255,%edi
453 	xorl	2(%ebp,%edi,8),%esi
454 	movl	%edx,%edi
455 	shrl	$24,%edi
456 	xorl	1(%ebp,%edi,8),%esi
457 	movl	%esi,4(%esp)
458 	movl	%ebx,%esi
459 	andl	$255,%esi
460 	shrl	$16,%ebx
461 	movl	(%ebp,%esi,8),%esi
462 	movzbl	%ch,%edi
463 	xorl	3(%ebp,%edi,8),%esi
464 	movl	%edx,%edi
465 	shrl	$16,%edi
466 	andl	$255,%edi
467 	xorl	2(%ebp,%edi,8),%esi
468 	movl	%eax,%edi
469 	shrl	$24,%edi
470 	xorl	1(%ebp,%edi,8),%esi
471 	movl	%esi,8(%esp)
472 	movl	%ecx,%esi
473 	andl	$255,%esi
474 	shrl	$24,%ecx
475 	movl	(%ebp,%esi,8),%esi
476 	movzbl	%dh,%edi
477 	xorl	3(%ebp,%edi,8),%esi
478 	movl	%eax,%edi
479 	shrl	$16,%edi
480 	andl	$255,%edx
481 	andl	$255,%edi
482 	xorl	2(%ebp,%edi,8),%esi
483 	movzbl	%bh,%edi
484 	xorl	1(%ebp,%edi,8),%esi
485 	movl	20(%esp),%edi
486 	movl	(%ebp,%edx,8),%edx
487 	movzbl	%ah,%eax
488 	xorl	3(%ebp,%eax,8),%edx
489 	movl	4(%esp),%eax
490 	andl	$255,%ebx
491 	xorl	2(%ebp,%ebx,8),%edx
492 	movl	8(%esp),%ebx
493 	xorl	1(%ebp,%ecx,8),%edx
494 	movl	%esi,%ecx
495 	addl	$16,%edi
496 	xorl	(%edi),%eax
497 	xorl	4(%edi),%ebx
498 	xorl	8(%edi),%ecx
499 	xorl	12(%edi),%edx
500 	cmpl	24(%esp),%edi
501 	movl	%edi,20(%esp)
502 	jb	L003loop
503 	movl	%eax,%esi
504 	andl	$255,%esi
505 	movl	2(%ebp,%esi,8),%esi
506 	andl	$255,%esi
507 	movzbl	%bh,%edi
508 	movl	(%ebp,%edi,8),%edi
509 	andl	$65280,%edi
510 	xorl	%edi,%esi
511 	movl	%ecx,%edi
512 	shrl	$16,%edi
513 	andl	$255,%edi
514 	movl	(%ebp,%edi,8),%edi
515 	andl	$16711680,%edi
516 	xorl	%edi,%esi
517 	movl	%edx,%edi
518 	shrl	$24,%edi
519 	movl	2(%ebp,%edi,8),%edi
520 	andl	$4278190080,%edi
521 	xorl	%edi,%esi
522 	movl	%esi,4(%esp)
523 	movl	%ebx,%esi
524 	andl	$255,%esi
525 	shrl	$16,%ebx
526 	movl	2(%ebp,%esi,8),%esi
527 	andl	$255,%esi
528 	movzbl	%ch,%edi
529 	movl	(%ebp,%edi,8),%edi
530 	andl	$65280,%edi
531 	xorl	%edi,%esi
532 	movl	%edx,%edi
533 	shrl	$16,%edi
534 	andl	$255,%edi
535 	movl	(%ebp,%edi,8),%edi
536 	andl	$16711680,%edi
537 	xorl	%edi,%esi
538 	movl	%eax,%edi
539 	shrl	$24,%edi
540 	movl	2(%ebp,%edi,8),%edi
541 	andl	$4278190080,%edi
542 	xorl	%edi,%esi
543 	movl	%esi,8(%esp)
544 	movl	%ecx,%esi
545 	andl	$255,%esi
546 	shrl	$24,%ecx
547 	movl	2(%ebp,%esi,8),%esi
548 	andl	$255,%esi
549 	movzbl	%dh,%edi
550 	movl	(%ebp,%edi,8),%edi
551 	andl	$65280,%edi
552 	xorl	%edi,%esi
553 	movl	%eax,%edi
554 	shrl	$16,%edi
555 	andl	$255,%edx
556 	andl	$255,%edi
557 	movl	(%ebp,%edi,8),%edi
558 	andl	$16711680,%edi
559 	xorl	%edi,%esi
560 	movzbl	%bh,%edi
561 	movl	2(%ebp,%edi,8),%edi
562 	andl	$4278190080,%edi
563 	xorl	%edi,%esi
564 	movl	20(%esp),%edi
565 	andl	$255,%edx
566 	movl	2(%ebp,%edx,8),%edx
567 	andl	$255,%edx
568 	movzbl	%ah,%eax
569 	movl	(%ebp,%eax,8),%eax
570 	andl	$65280,%eax
571 	xorl	%eax,%edx
572 	movl	4(%esp),%eax
573 	andl	$255,%ebx
574 	movl	(%ebp,%ebx,8),%ebx
575 	andl	$16711680,%ebx
576 	xorl	%ebx,%edx
577 	movl	8(%esp),%ebx
578 	movl	2(%ebp,%ecx,8),%ecx
579 	andl	$4278190080,%ecx
580 	xorl	%ecx,%edx
581 	movl	%esi,%ecx
582 	addl	$16,%edi
583 	xorl	(%edi),%eax
584 	xorl	4(%edi),%ebx
585 	xorl	8(%edi),%ecx
586 	xorl	12(%edi),%edx
587 	ret
588 .align	6,0x90
589 LAES_Te:
590 .long	2774754246,2774754246
591 .long	2222750968,2222750968
592 .long	2574743534,2574743534
593 .long	2373680118,2373680118
594 .long	234025727,234025727
595 .long	3177933782,3177933782
596 .long	2976870366,2976870366
597 .long	1422247313,1422247313
598 .long	1345335392,1345335392
599 .long	50397442,50397442
600 .long	2842126286,2842126286
601 .long	2099981142,2099981142
602 .long	436141799,436141799
603 .long	1658312629,1658312629
604 .long	3870010189,3870010189
605 .long	2591454956,2591454956
606 .long	1170918031,1170918031
607 .long	2642575903,2642575903
608 .long	1086966153,1086966153
609 .long	2273148410,2273148410
610 .long	368769775,368769775
611 .long	3948501426,3948501426
612 .long	3376891790,3376891790
613 .long	200339707,200339707
614 .long	3970805057,3970805057
615 .long	1742001331,1742001331
616 .long	4255294047,4255294047
617 .long	3937382213,3937382213
618 .long	3214711843,3214711843
619 .long	4154762323,4154762323
620 .long	2524082916,2524082916
621 .long	1539358875,1539358875
622 .long	3266819957,3266819957
623 .long	486407649,486407649
624 .long	2928907069,2928907069
625 .long	1780885068,1780885068
626 .long	1513502316,1513502316
627 .long	1094664062,1094664062
628 .long	49805301,49805301
629 .long	1338821763,1338821763
630 .long	1546925160,1546925160
631 .long	4104496465,4104496465
632 .long	887481809,887481809
633 .long	150073849,150073849
634 .long	2473685474,2473685474
635 .long	1943591083,1943591083
636 .long	1395732834,1395732834
637 .long	1058346282,1058346282
638 .long	201589768,201589768
639 .long	1388824469,1388824469
640 .long	1696801606,1696801606
641 .long	1589887901,1589887901
642 .long	672667696,672667696
643 .long	2711000631,2711000631
644 .long	251987210,251987210
645 .long	3046808111,3046808111
646 .long	151455502,151455502
647 .long	907153956,907153956
648 .long	2608889883,2608889883
649 .long	1038279391,1038279391
650 .long	652995533,652995533
651 .long	1764173646,1764173646
652 .long	3451040383,3451040383
653 .long	2675275242,2675275242
654 .long	453576978,453576978
655 .long	2659418909,2659418909
656 .long	1949051992,1949051992
657 .long	773462580,773462580
658 .long	756751158,756751158
659 .long	2993581788,2993581788
660 .long	3998898868,3998898868
661 .long	4221608027,4221608027
662 .long	4132590244,4132590244
663 .long	1295727478,1295727478
664 .long	1641469623,1641469623
665 .long	3467883389,3467883389
666 .long	2066295122,2066295122
667 .long	1055122397,1055122397
668 .long	1898917726,1898917726
669 .long	2542044179,2542044179
670 .long	4115878822,4115878822
671 .long	1758581177,1758581177
672 .long	0,0
673 .long	753790401,753790401
674 .long	1612718144,1612718144
675 .long	536673507,536673507
676 .long	3367088505,3367088505
677 .long	3982187446,3982187446
678 .long	3194645204,3194645204
679 .long	1187761037,1187761037
680 .long	3653156455,3653156455
681 .long	1262041458,1262041458
682 .long	3729410708,3729410708
683 .long	3561770136,3561770136
684 .long	3898103984,3898103984
685 .long	1255133061,1255133061
686 .long	1808847035,1808847035
687 .long	720367557,720367557
688 .long	3853167183,3853167183
689 .long	385612781,385612781
690 .long	3309519750,3309519750
691 .long	3612167578,3612167578
692 .long	1429418854,1429418854
693 .long	2491778321,2491778321
694 .long	3477423498,3477423498
695 .long	284817897,284817897
696 .long	100794884,100794884
697 .long	2172616702,2172616702
698 .long	4031795360,4031795360
699 .long	1144798328,1144798328
700 .long	3131023141,3131023141
701 .long	3819481163,3819481163
702 .long	4082192802,4082192802
703 .long	4272137053,4272137053
704 .long	3225436288,3225436288
705 .long	2324664069,2324664069
706 .long	2912064063,2912064063
707 .long	3164445985,3164445985
708 .long	1211644016,1211644016
709 .long	83228145,83228145
710 .long	3753688163,3753688163
711 .long	3249976951,3249976951
712 .long	1977277103,1977277103
713 .long	1663115586,1663115586
714 .long	806359072,806359072
715 .long	452984805,452984805
716 .long	250868733,250868733
717 .long	1842533055,1842533055
718 .long	1288555905,1288555905
719 .long	336333848,336333848
720 .long	890442534,890442534
721 .long	804056259,804056259
722 .long	3781124030,3781124030
723 .long	2727843637,2727843637
724 .long	3427026056,3427026056
725 .long	957814574,957814574
726 .long	1472513171,1472513171
727 .long	4071073621,4071073621
728 .long	2189328124,2189328124
729 .long	1195195770,1195195770
730 .long	2892260552,2892260552
731 .long	3881655738,3881655738
732 .long	723065138,723065138
733 .long	2507371494,2507371494
734 .long	2690670784,2690670784
735 .long	2558624025,2558624025
736 .long	3511635870,3511635870
737 .long	2145180835,2145180835
738 .long	1713513028,1713513028
739 .long	2116692564,2116692564
740 .long	2878378043,2878378043
741 .long	2206763019,2206763019
742 .long	3393603212,3393603212
743 .long	703524551,703524551
744 .long	3552098411,3552098411
745 .long	1007948840,1007948840
746 .long	2044649127,2044649127
747 .long	3797835452,3797835452
748 .long	487262998,487262998
749 .long	1994120109,1994120109
750 .long	1004593371,1004593371
751 .long	1446130276,1446130276
752 .long	1312438900,1312438900
753 .long	503974420,503974420
754 .long	3679013266,3679013266
755 .long	168166924,168166924
756 .long	1814307912,1814307912
757 .long	3831258296,3831258296
758 .long	1573044895,1573044895
759 .long	1859376061,1859376061
760 .long	4021070915,4021070915
761 .long	2791465668,2791465668
762 .long	2828112185,2828112185
763 .long	2761266481,2761266481
764 .long	937747667,937747667
765 .long	2339994098,2339994098
766 .long	854058965,854058965
767 .long	1137232011,1137232011
768 .long	1496790894,1496790894
769 .long	3077402074,3077402074
770 .long	2358086913,2358086913
771 .long	1691735473,1691735473
772 .long	3528347292,3528347292
773 .long	3769215305,3769215305
774 .long	3027004632,3027004632
775 .long	4199962284,4199962284
776 .long	133494003,133494003
777 .long	636152527,636152527
778 .long	2942657994,2942657994
779 .long	2390391540,2390391540
780 .long	3920539207,3920539207
781 .long	403179536,403179536
782 .long	3585784431,3585784431
783 .long	2289596656,2289596656
784 .long	1864705354,1864705354
785 .long	1915629148,1915629148
786 .long	605822008,605822008
787 .long	4054230615,4054230615
788 .long	3350508659,3350508659
789 .long	1371981463,1371981463
790 .long	602466507,602466507
791 .long	2094914977,2094914977
792 .long	2624877800,2624877800
793 .long	555687742,555687742
794 .long	3712699286,3712699286
795 .long	3703422305,3703422305
796 .long	2257292045,2257292045
797 .long	2240449039,2240449039
798 .long	2423288032,2423288032
799 .long	1111375484,1111375484
800 .long	3300242801,3300242801
801 .long	2858837708,2858837708
802 .long	3628615824,3628615824
803 .long	84083462,84083462
804 .long	32962295,32962295
805 .long	302911004,302911004
806 .long	2741068226,2741068226
807 .long	1597322602,1597322602
808 .long	4183250862,4183250862
809 .long	3501832553,3501832553
810 .long	2441512471,2441512471
811 .long	1489093017,1489093017
812 .long	656219450,656219450
813 .long	3114180135,3114180135
814 .long	954327513,954327513
815 .long	335083755,335083755
816 .long	3013122091,3013122091
817 .long	856756514,856756514
818 .long	3144247762,3144247762
819 .long	1893325225,1893325225
820 .long	2307821063,2307821063
821 .long	2811532339,2811532339
822 .long	3063651117,3063651117
823 .long	572399164,572399164
824 .long	2458355477,2458355477
825 .long	552200649,552200649
826 .long	1238290055,1238290055
827 .long	4283782570,4283782570
828 .long	2015897680,2015897680
829 .long	2061492133,2061492133
830 .long	2408352771,2408352771
831 .long	4171342169,4171342169
832 .long	2156497161,2156497161
833 .long	386731290,386731290
834 .long	3669999461,3669999461
835 .long	837215959,837215959
836 .long	3326231172,3326231172
837 .long	3093850320,3093850320
838 .long	3275833730,3275833730
839 .long	2962856233,2962856233
840 .long	1999449434,1999449434
841 .long	286199582,286199582
842 .long	3417354363,3417354363
843 .long	4233385128,4233385128
844 .long	3602627437,3602627437
845 .long	974525996,974525996
846 .byte	99,124,119,123,242,107,111,197
847 .byte	48,1,103,43,254,215,171,118
848 .byte	202,130,201,125,250,89,71,240
849 .byte	173,212,162,175,156,164,114,192
850 .byte	183,253,147,38,54,63,247,204
851 .byte	52,165,229,241,113,216,49,21
852 .byte	4,199,35,195,24,150,5,154
853 .byte	7,18,128,226,235,39,178,117
854 .byte	9,131,44,26,27,110,90,160
855 .byte	82,59,214,179,41,227,47,132
856 .byte	83,209,0,237,32,252,177,91
857 .byte	106,203,190,57,74,76,88,207
858 .byte	208,239,170,251,67,77,51,133
859 .byte	69,249,2,127,80,60,159,168
860 .byte	81,163,64,143,146,157,56,245
861 .byte	188,182,218,33,16,255,243,210
862 .byte	205,12,19,236,95,151,68,23
863 .byte	196,167,126,61,100,93,25,115
864 .byte	96,129,79,220,34,42,144,136
865 .byte	70,238,184,20,222,94,11,219
866 .byte	224,50,58,10,73,6,36,92
867 .byte	194,211,172,98,145,149,228,121
868 .byte	231,200,55,109,141,213,78,169
869 .byte	108,86,244,234,101,122,174,8
870 .byte	186,120,37,46,28,166,180,198
871 .byte	232,221,116,31,75,189,139,138
872 .byte	112,62,181,102,72,3,246,14
873 .byte	97,53,87,185,134,193,29,158
874 .byte	225,248,152,17,105,217,142,148
875 .byte	155,30,135,233,206,85,40,223
876 .byte	140,161,137,13,191,230,66,104
877 .byte	65,153,45,15,176,84,187,22
878 .byte	99,124,119,123,242,107,111,197
879 .byte	48,1,103,43,254,215,171,118
880 .byte	202,130,201,125,250,89,71,240
881 .byte	173,212,162,175,156,164,114,192
882 .byte	183,253,147,38,54,63,247,204
883 .byte	52,165,229,241,113,216,49,21
884 .byte	4,199,35,195,24,150,5,154
885 .byte	7,18,128,226,235,39,178,117
886 .byte	9,131,44,26,27,110,90,160
887 .byte	82,59,214,179,41,227,47,132
888 .byte	83,209,0,237,32,252,177,91
889 .byte	106,203,190,57,74,76,88,207
890 .byte	208,239,170,251,67,77,51,133
891 .byte	69,249,2,127,80,60,159,168
892 .byte	81,163,64,143,146,157,56,245
893 .byte	188,182,218,33,16,255,243,210
894 .byte	205,12,19,236,95,151,68,23
895 .byte	196,167,126,61,100,93,25,115
896 .byte	96,129,79,220,34,42,144,136
897 .byte	70,238,184,20,222,94,11,219
898 .byte	224,50,58,10,73,6,36,92
899 .byte	194,211,172,98,145,149,228,121
900 .byte	231,200,55,109,141,213,78,169
901 .byte	108,86,244,234,101,122,174,8
902 .byte	186,120,37,46,28,166,180,198
903 .byte	232,221,116,31,75,189,139,138
904 .byte	112,62,181,102,72,3,246,14
905 .byte	97,53,87,185,134,193,29,158
906 .byte	225,248,152,17,105,217,142,148
907 .byte	155,30,135,233,206,85,40,223
908 .byte	140,161,137,13,191,230,66,104
909 .byte	65,153,45,15,176,84,187,22
910 .byte	99,124,119,123,242,107,111,197
911 .byte	48,1,103,43,254,215,171,118
912 .byte	202,130,201,125,250,89,71,240
913 .byte	173,212,162,175,156,164,114,192
914 .byte	183,253,147,38,54,63,247,204
915 .byte	52,165,229,241,113,216,49,21
916 .byte	4,199,35,195,24,150,5,154
917 .byte	7,18,128,226,235,39,178,117
918 .byte	9,131,44,26,27,110,90,160
919 .byte	82,59,214,179,41,227,47,132
920 .byte	83,209,0,237,32,252,177,91
921 .byte	106,203,190,57,74,76,88,207
922 .byte	208,239,170,251,67,77,51,133
923 .byte	69,249,2,127,80,60,159,168
924 .byte	81,163,64,143,146,157,56,245
925 .byte	188,182,218,33,16,255,243,210
926 .byte	205,12,19,236,95,151,68,23
927 .byte	196,167,126,61,100,93,25,115
928 .byte	96,129,79,220,34,42,144,136
929 .byte	70,238,184,20,222,94,11,219
930 .byte	224,50,58,10,73,6,36,92
931 .byte	194,211,172,98,145,149,228,121
932 .byte	231,200,55,109,141,213,78,169
933 .byte	108,86,244,234,101,122,174,8
934 .byte	186,120,37,46,28,166,180,198
935 .byte	232,221,116,31,75,189,139,138
936 .byte	112,62,181,102,72,3,246,14
937 .byte	97,53,87,185,134,193,29,158
938 .byte	225,248,152,17,105,217,142,148
939 .byte	155,30,135,233,206,85,40,223
940 .byte	140,161,137,13,191,230,66,104
941 .byte	65,153,45,15,176,84,187,22
942 .byte	99,124,119,123,242,107,111,197
943 .byte	48,1,103,43,254,215,171,118
944 .byte	202,130,201,125,250,89,71,240
945 .byte	173,212,162,175,156,164,114,192
946 .byte	183,253,147,38,54,63,247,204
947 .byte	52,165,229,241,113,216,49,21
948 .byte	4,199,35,195,24,150,5,154
949 .byte	7,18,128,226,235,39,178,117
950 .byte	9,131,44,26,27,110,90,160
951 .byte	82,59,214,179,41,227,47,132
952 .byte	83,209,0,237,32,252,177,91
953 .byte	106,203,190,57,74,76,88,207
954 .byte	208,239,170,251,67,77,51,133
955 .byte	69,249,2,127,80,60,159,168
956 .byte	81,163,64,143,146,157,56,245
957 .byte	188,182,218,33,16,255,243,210
958 .byte	205,12,19,236,95,151,68,23
959 .byte	196,167,126,61,100,93,25,115
960 .byte	96,129,79,220,34,42,144,136
961 .byte	70,238,184,20,222,94,11,219
962 .byte	224,50,58,10,73,6,36,92
963 .byte	194,211,172,98,145,149,228,121
964 .byte	231,200,55,109,141,213,78,169
965 .byte	108,86,244,234,101,122,174,8
966 .byte	186,120,37,46,28,166,180,198
967 .byte	232,221,116,31,75,189,139,138
968 .byte	112,62,181,102,72,3,246,14
969 .byte	97,53,87,185,134,193,29,158
970 .byte	225,248,152,17,105,217,142,148
971 .byte	155,30,135,233,206,85,40,223
972 .byte	140,161,137,13,191,230,66,104
973 .byte	65,153,45,15,176,84,187,22
974 .long	1,2,4,8
975 .long	16,32,64,128
976 .long	27,54,0,0
977 .long	0,0,0,0
978 .globl	_AES_encrypt
979 .type	_AES_encrypt,@function
980 .align	4
981 _AES_encrypt:
982 L_AES_encrypt_begin:
983 	%ifdef __CET__
984 
985 .byte	243,15,30,251
986 	%endif
987 
988 	pushl	%ebp
989 	pushl	%ebx
990 	pushl	%esi
991 	pushl	%edi
992 	movl	20(%esp),%esi
993 	movl	28(%esp),%edi
994 	movl	%esp,%eax
995 	subl	$36,%esp
996 	andl	$-64,%esp
997 	leal	-127(%edi),%ebx
998 	subl	%esp,%ebx
999 	negl	%ebx
1000 	andl	$960,%ebx
1001 	subl	%ebx,%esp
1002 	addl	$4,%esp
1003 	movl	%eax,28(%esp)
1004 	call	L004pic_point
1005 L004pic_point:
1006 	popl	%ebp
1007 	leal	__GLOBAL_OFFSET_TABLE_+[.-L004pic_point](%ebp),%eax
1008 	movl	_OPENSSL_ia32cap_P@GOT(%eax),%eax
1009 	leal	LAES_Te-L004pic_point(%ebp),%ebp
1010 	leal	764(%esp),%ebx
1011 	subl	%ebp,%ebx
1012 	andl	$768,%ebx
1013 	leal	2176(%ebp,%ebx,1),%ebp
1014 	btl	$25,(%eax)
1015 	jnc	L005x86
1016 	movq	(%esi),%mm0
1017 	movq	8(%esi),%mm4
1018 	call	__sse_AES_encrypt_compact
1019 	movl	28(%esp),%esp
1020 	movl	24(%esp),%esi
1021 	movq	%mm0,(%esi)
1022 	movq	%mm4,8(%esi)
1023 	emms
1024 	popl	%edi
1025 	popl	%esi
1026 	popl	%ebx
1027 	popl	%ebp
1028 	ret
1029 .align	4,0x90
1030 L005x86:
1031 	movl	%ebp,24(%esp)
1032 	movl	(%esi),%eax
1033 	movl	4(%esi),%ebx
1034 	movl	8(%esi),%ecx
1035 	movl	12(%esi),%edx
1036 	call	__x86_AES_encrypt_compact
1037 	movl	28(%esp),%esp
1038 	movl	24(%esp),%esi
1039 	movl	%eax,(%esi)
1040 	movl	%ebx,4(%esi)
1041 	movl	%ecx,8(%esi)
1042 	movl	%edx,12(%esi)
1043 	popl	%edi
1044 	popl	%esi
1045 	popl	%ebx
1046 	popl	%ebp
1047 	ret
1048 .type	__x86_AES_decrypt_compact,@function
1049 .align	4
1050 __x86_AES_decrypt_compact:
1051 	%ifdef __CET__
1052 
1053 .byte	243,15,30,251
1054 	%endif
1055 
1056 	movl	%edi,20(%esp)
1057 	xorl	(%edi),%eax
1058 	xorl	4(%edi),%ebx
1059 	xorl	8(%edi),%ecx
1060 	xorl	12(%edi),%edx
1061 	movl	240(%edi),%esi
1062 	leal	-2(%esi,%esi,1),%esi
1063 	leal	(%edi,%esi,8),%esi
1064 	movl	%esi,24(%esp)
1065 	movl	-128(%ebp),%edi
1066 	movl	-96(%ebp),%esi
1067 	movl	-64(%ebp),%edi
1068 	movl	-32(%ebp),%esi
1069 	movl	(%ebp),%edi
1070 	movl	32(%ebp),%esi
1071 	movl	64(%ebp),%edi
1072 	movl	96(%ebp),%esi
1073 .align	4,0x90
1074 L006loop:
1075 	movl	%eax,%esi
1076 	andl	$255,%esi
1077 	movzbl	-128(%ebp,%esi,1),%esi
1078 	movzbl	%dh,%edi
1079 	movzbl	-128(%ebp,%edi,1),%edi
1080 	shll	$8,%edi
1081 	xorl	%edi,%esi
1082 	movl	%ecx,%edi
1083 	shrl	$16,%edi
1084 	andl	$255,%edi
1085 	movzbl	-128(%ebp,%edi,1),%edi
1086 	shll	$16,%edi
1087 	xorl	%edi,%esi
1088 	movl	%ebx,%edi
1089 	shrl	$24,%edi
1090 	movzbl	-128(%ebp,%edi,1),%edi
1091 	shll	$24,%edi
1092 	xorl	%edi,%esi
1093 	movl	%esi,4(%esp)
1094 	movl	%ebx,%esi
1095 	andl	$255,%esi
1096 	movzbl	-128(%ebp,%esi,1),%esi
1097 	movzbl	%ah,%edi
1098 	movzbl	-128(%ebp,%edi,1),%edi
1099 	shll	$8,%edi
1100 	xorl	%edi,%esi
1101 	movl	%edx,%edi
1102 	shrl	$16,%edi
1103 	andl	$255,%edi
1104 	movzbl	-128(%ebp,%edi,1),%edi
1105 	shll	$16,%edi
1106 	xorl	%edi,%esi
1107 	movl	%ecx,%edi
1108 	shrl	$24,%edi
1109 	movzbl	-128(%ebp,%edi,1),%edi
1110 	shll	$24,%edi
1111 	xorl	%edi,%esi
1112 	movl	%esi,8(%esp)
1113 	movl	%ecx,%esi
1114 	andl	$255,%esi
1115 	movzbl	-128(%ebp,%esi,1),%esi
1116 	movzbl	%bh,%edi
1117 	movzbl	-128(%ebp,%edi,1),%edi
1118 	shll	$8,%edi
1119 	xorl	%edi,%esi
1120 	movl	%eax,%edi
1121 	shrl	$16,%edi
1122 	andl	$255,%edi
1123 	movzbl	-128(%ebp,%edi,1),%edi
1124 	shll	$16,%edi
1125 	xorl	%edi,%esi
1126 	movl	%edx,%edi
1127 	shrl	$24,%edi
1128 	movzbl	-128(%ebp,%edi,1),%edi
1129 	shll	$24,%edi
1130 	xorl	%edi,%esi
1131 	andl	$255,%edx
1132 	movzbl	-128(%ebp,%edx,1),%edx
1133 	movzbl	%ch,%ecx
1134 	movzbl	-128(%ebp,%ecx,1),%ecx
1135 	shll	$8,%ecx
1136 	xorl	%ecx,%edx
1137 	movl	%esi,%ecx
1138 	shrl	$16,%ebx
1139 	andl	$255,%ebx
1140 	movzbl	-128(%ebp,%ebx,1),%ebx
1141 	shll	$16,%ebx
1142 	xorl	%ebx,%edx
1143 	shrl	$24,%eax
1144 	movzbl	-128(%ebp,%eax,1),%eax
1145 	shll	$24,%eax
1146 	xorl	%eax,%edx
1147 	movl	$2155905152,%edi
1148 	andl	%ecx,%edi
1149 	movl	%edi,%esi
1150 	shrl	$7,%edi
1151 	leal	(%ecx,%ecx,1),%eax
1152 	subl	%edi,%esi
1153 	andl	$4278124286,%eax
1154 	andl	$454761243,%esi
1155 	xorl	%esi,%eax
1156 	movl	$2155905152,%edi
1157 	andl	%eax,%edi
1158 	movl	%edi,%esi
1159 	shrl	$7,%edi
1160 	leal	(%eax,%eax,1),%ebx
1161 	subl	%edi,%esi
1162 	andl	$4278124286,%ebx
1163 	andl	$454761243,%esi
1164 	xorl	%ecx,%eax
1165 	xorl	%esi,%ebx
1166 	movl	$2155905152,%edi
1167 	andl	%ebx,%edi
1168 	movl	%edi,%esi
1169 	shrl	$7,%edi
1170 	leal	(%ebx,%ebx,1),%ebp
1171 	subl	%edi,%esi
1172 	andl	$4278124286,%ebp
1173 	andl	$454761243,%esi
1174 	xorl	%ecx,%ebx
1175 	roll	$8,%ecx
1176 	xorl	%esi,%ebp
1177 	xorl	%eax,%ecx
1178 	xorl	%ebp,%eax
1179 	xorl	%ebx,%ecx
1180 	xorl	%ebp,%ebx
1181 	roll	$24,%eax
1182 	xorl	%ebp,%ecx
1183 	roll	$16,%ebx
1184 	xorl	%eax,%ecx
1185 	roll	$8,%ebp
1186 	xorl	%ebx,%ecx
1187 	movl	4(%esp),%eax
1188 	xorl	%ebp,%ecx
1189 	movl	%ecx,12(%esp)
1190 	movl	$2155905152,%edi
1191 	andl	%edx,%edi
1192 	movl	%edi,%esi
1193 	shrl	$7,%edi
1194 	leal	(%edx,%edx,1),%ebx
1195 	subl	%edi,%esi
1196 	andl	$4278124286,%ebx
1197 	andl	$454761243,%esi
1198 	xorl	%esi,%ebx
1199 	movl	$2155905152,%edi
1200 	andl	%ebx,%edi
1201 	movl	%edi,%esi
1202 	shrl	$7,%edi
1203 	leal	(%ebx,%ebx,1),%ecx
1204 	subl	%edi,%esi
1205 	andl	$4278124286,%ecx
1206 	andl	$454761243,%esi
1207 	xorl	%edx,%ebx
1208 	xorl	%esi,%ecx
1209 	movl	$2155905152,%edi
1210 	andl	%ecx,%edi
1211 	movl	%edi,%esi
1212 	shrl	$7,%edi
1213 	leal	(%ecx,%ecx,1),%ebp
1214 	subl	%edi,%esi
1215 	andl	$4278124286,%ebp
1216 	andl	$454761243,%esi
1217 	xorl	%edx,%ecx
1218 	roll	$8,%edx
1219 	xorl	%esi,%ebp
1220 	xorl	%ebx,%edx
1221 	xorl	%ebp,%ebx
1222 	xorl	%ecx,%edx
1223 	xorl	%ebp,%ecx
1224 	roll	$24,%ebx
1225 	xorl	%ebp,%edx
1226 	roll	$16,%ecx
1227 	xorl	%ebx,%edx
1228 	roll	$8,%ebp
1229 	xorl	%ecx,%edx
1230 	movl	8(%esp),%ebx
1231 	xorl	%ebp,%edx
1232 	movl	%edx,16(%esp)
1233 	movl	$2155905152,%edi
1234 	andl	%eax,%edi
1235 	movl	%edi,%esi
1236 	shrl	$7,%edi
1237 	leal	(%eax,%eax,1),%ecx
1238 	subl	%edi,%esi
1239 	andl	$4278124286,%ecx
1240 	andl	$454761243,%esi
1241 	xorl	%esi,%ecx
1242 	movl	$2155905152,%edi
1243 	andl	%ecx,%edi
1244 	movl	%edi,%esi
1245 	shrl	$7,%edi
1246 	leal	(%ecx,%ecx,1),%edx
1247 	subl	%edi,%esi
1248 	andl	$4278124286,%edx
1249 	andl	$454761243,%esi
1250 	xorl	%eax,%ecx
1251 	xorl	%esi,%edx
1252 	movl	$2155905152,%edi
1253 	andl	%edx,%edi
1254 	movl	%edi,%esi
1255 	shrl	$7,%edi
1256 	leal	(%edx,%edx,1),%ebp
1257 	subl	%edi,%esi
1258 	andl	$4278124286,%ebp
1259 	andl	$454761243,%esi
1260 	xorl	%eax,%edx
1261 	roll	$8,%eax
1262 	xorl	%esi,%ebp
1263 	xorl	%ecx,%eax
1264 	xorl	%ebp,%ecx
1265 	xorl	%edx,%eax
1266 	xorl	%ebp,%edx
1267 	roll	$24,%ecx
1268 	xorl	%ebp,%eax
1269 	roll	$16,%edx
1270 	xorl	%ecx,%eax
1271 	roll	$8,%ebp
1272 	xorl	%edx,%eax
1273 	xorl	%ebp,%eax
1274 	movl	$2155905152,%edi
1275 	andl	%ebx,%edi
1276 	movl	%edi,%esi
1277 	shrl	$7,%edi
1278 	leal	(%ebx,%ebx,1),%ecx
1279 	subl	%edi,%esi
1280 	andl	$4278124286,%ecx
1281 	andl	$454761243,%esi
1282 	xorl	%esi,%ecx
1283 	movl	$2155905152,%edi
1284 	andl	%ecx,%edi
1285 	movl	%edi,%esi
1286 	shrl	$7,%edi
1287 	leal	(%ecx,%ecx,1),%edx
1288 	subl	%edi,%esi
1289 	andl	$4278124286,%edx
1290 	andl	$454761243,%esi
1291 	xorl	%ebx,%ecx
1292 	xorl	%esi,%edx
1293 	movl	$2155905152,%edi
1294 	andl	%edx,%edi
1295 	movl	%edi,%esi
1296 	shrl	$7,%edi
1297 	leal	(%edx,%edx,1),%ebp
1298 	subl	%edi,%esi
1299 	andl	$4278124286,%ebp
1300 	andl	$454761243,%esi
1301 	xorl	%ebx,%edx
1302 	roll	$8,%ebx
1303 	xorl	%esi,%ebp
1304 	xorl	%ecx,%ebx
1305 	xorl	%ebp,%ecx
1306 	xorl	%edx,%ebx
1307 	xorl	%ebp,%edx
1308 	roll	$24,%ecx
1309 	xorl	%ebp,%ebx
1310 	roll	$16,%edx
1311 	xorl	%ecx,%ebx
1312 	roll	$8,%ebp
1313 	xorl	%edx,%ebx
1314 	movl	12(%esp),%ecx
1315 	xorl	%ebp,%ebx
1316 	movl	16(%esp),%edx
1317 	movl	20(%esp),%edi
1318 	movl	28(%esp),%ebp
1319 	addl	$16,%edi
1320 	xorl	(%edi),%eax
1321 	xorl	4(%edi),%ebx
1322 	xorl	8(%edi),%ecx
1323 	xorl	12(%edi),%edx
1324 	cmpl	24(%esp),%edi
1325 	movl	%edi,20(%esp)
1326 	jb	L006loop
1327 	movl	%eax,%esi
1328 	andl	$255,%esi
1329 	movzbl	-128(%ebp,%esi,1),%esi
1330 	movzbl	%dh,%edi
1331 	movzbl	-128(%ebp,%edi,1),%edi
1332 	shll	$8,%edi
1333 	xorl	%edi,%esi
1334 	movl	%ecx,%edi
1335 	shrl	$16,%edi
1336 	andl	$255,%edi
1337 	movzbl	-128(%ebp,%edi,1),%edi
1338 	shll	$16,%edi
1339 	xorl	%edi,%esi
1340 	movl	%ebx,%edi
1341 	shrl	$24,%edi
1342 	movzbl	-128(%ebp,%edi,1),%edi
1343 	shll	$24,%edi
1344 	xorl	%edi,%esi
1345 	movl	%esi,4(%esp)
1346 	movl	%ebx,%esi
1347 	andl	$255,%esi
1348 	movzbl	-128(%ebp,%esi,1),%esi
1349 	movzbl	%ah,%edi
1350 	movzbl	-128(%ebp,%edi,1),%edi
1351 	shll	$8,%edi
1352 	xorl	%edi,%esi
1353 	movl	%edx,%edi
1354 	shrl	$16,%edi
1355 	andl	$255,%edi
1356 	movzbl	-128(%ebp,%edi,1),%edi
1357 	shll	$16,%edi
1358 	xorl	%edi,%esi
1359 	movl	%ecx,%edi
1360 	shrl	$24,%edi
1361 	movzbl	-128(%ebp,%edi,1),%edi
1362 	shll	$24,%edi
1363 	xorl	%edi,%esi
1364 	movl	%esi,8(%esp)
1365 	movl	%ecx,%esi
1366 	andl	$255,%esi
1367 	movzbl	-128(%ebp,%esi,1),%esi
1368 	movzbl	%bh,%edi
1369 	movzbl	-128(%ebp,%edi,1),%edi
1370 	shll	$8,%edi
1371 	xorl	%edi,%esi
1372 	movl	%eax,%edi
1373 	shrl	$16,%edi
1374 	andl	$255,%edi
1375 	movzbl	-128(%ebp,%edi,1),%edi
1376 	shll	$16,%edi
1377 	xorl	%edi,%esi
1378 	movl	%edx,%edi
1379 	shrl	$24,%edi
1380 	movzbl	-128(%ebp,%edi,1),%edi
1381 	shll	$24,%edi
1382 	xorl	%edi,%esi
1383 	movl	20(%esp),%edi
1384 	andl	$255,%edx
1385 	movzbl	-128(%ebp,%edx,1),%edx
1386 	movzbl	%ch,%ecx
1387 	movzbl	-128(%ebp,%ecx,1),%ecx
1388 	shll	$8,%ecx
1389 	xorl	%ecx,%edx
1390 	movl	%esi,%ecx
1391 	shrl	$16,%ebx
1392 	andl	$255,%ebx
1393 	movzbl	-128(%ebp,%ebx,1),%ebx
1394 	shll	$16,%ebx
1395 	xorl	%ebx,%edx
1396 	movl	8(%esp),%ebx
1397 	shrl	$24,%eax
1398 	movzbl	-128(%ebp,%eax,1),%eax
1399 	shll	$24,%eax
1400 	xorl	%eax,%edx
1401 	movl	4(%esp),%eax
1402 	xorl	16(%edi),%eax
1403 	xorl	20(%edi),%ebx
1404 	xorl	24(%edi),%ecx
1405 	xorl	28(%edi),%edx
1406 	ret
1407 .type	__sse_AES_decrypt_compact,@function
1408 .align	4
1409 __sse_AES_decrypt_compact:
1410 	%ifdef __CET__
1411 
1412 .byte	243,15,30,251
1413 	%endif
1414 
1415 	pxor	(%edi),%mm0
1416 	pxor	8(%edi),%mm4
1417 	movl	240(%edi),%esi
1418 	leal	-2(%esi,%esi,1),%esi
1419 	leal	(%edi,%esi,8),%esi
1420 	movl	%esi,24(%esp)
1421 	movl	$454761243,%eax
1422 	movl	%eax,8(%esp)
1423 	movl	%eax,12(%esp)
1424 	movl	-128(%ebp),%eax
1425 	movl	-96(%ebp),%ebx
1426 	movl	-64(%ebp),%ecx
1427 	movl	-32(%ebp),%edx
1428 	movl	(%ebp),%eax
1429 	movl	32(%ebp),%ebx
1430 	movl	64(%ebp),%ecx
1431 	movl	96(%ebp),%edx
1432 .align	4,0x90
1433 L007loop:
1434 	pshufw	$12,%mm0,%mm1
1435 	pshufw	$9,%mm4,%mm5
1436 	movd	%mm1,%eax
1437 	movd	%mm5,%ebx
1438 	movl	%edi,20(%esp)
1439 	movzbl	%al,%esi
1440 	movzbl	%ah,%edx
1441 	pshufw	$6,%mm0,%mm2
1442 	movzbl	-128(%ebp,%esi,1),%ecx
1443 	movzbl	%bl,%edi
1444 	movzbl	-128(%ebp,%edx,1),%edx
1445 	shrl	$16,%eax
1446 	shll	$8,%edx
1447 	movzbl	-128(%ebp,%edi,1),%esi
1448 	movzbl	%bh,%edi
1449 	shll	$16,%esi
1450 	pshufw	$3,%mm4,%mm6
1451 	orl	%esi,%ecx
1452 	movzbl	-128(%ebp,%edi,1),%esi
1453 	movzbl	%ah,%edi
1454 	shll	$24,%esi
1455 	shrl	$16,%ebx
1456 	orl	%esi,%edx
1457 	movzbl	-128(%ebp,%edi,1),%esi
1458 	movzbl	%bh,%edi
1459 	shll	$24,%esi
1460 	orl	%esi,%ecx
1461 	movzbl	-128(%ebp,%edi,1),%esi
1462 	movzbl	%al,%edi
1463 	shll	$8,%esi
1464 	movd	%mm2,%eax
1465 	orl	%esi,%ecx
1466 	movzbl	-128(%ebp,%edi,1),%esi
1467 	movzbl	%bl,%edi
1468 	shll	$16,%esi
1469 	movd	%mm6,%ebx
1470 	movd	%ecx,%mm0
1471 	movzbl	-128(%ebp,%edi,1),%ecx
1472 	movzbl	%al,%edi
1473 	orl	%esi,%ecx
1474 	movzbl	-128(%ebp,%edi,1),%esi
1475 	movzbl	%bl,%edi
1476 	orl	%esi,%edx
1477 	movzbl	-128(%ebp,%edi,1),%esi
1478 	movzbl	%ah,%edi
1479 	shll	$16,%esi
1480 	shrl	$16,%eax
1481 	orl	%esi,%edx
1482 	movzbl	-128(%ebp,%edi,1),%esi
1483 	movzbl	%bh,%edi
1484 	shrl	$16,%ebx
1485 	shll	$8,%esi
1486 	movd	%edx,%mm1
1487 	movzbl	-128(%ebp,%edi,1),%edx
1488 	movzbl	%bh,%edi
1489 	shll	$24,%edx
1490 	andl	$255,%ebx
1491 	orl	%esi,%edx
1492 	punpckldq	%mm1,%mm0
1493 	movzbl	-128(%ebp,%edi,1),%esi
1494 	movzbl	%al,%edi
1495 	shll	$8,%esi
1496 	movzbl	%ah,%eax
1497 	movzbl	-128(%ebp,%ebx,1),%ebx
1498 	orl	%esi,%ecx
1499 	movzbl	-128(%ebp,%edi,1),%esi
1500 	orl	%ebx,%edx
1501 	shll	$16,%esi
1502 	movzbl	-128(%ebp,%eax,1),%eax
1503 	orl	%esi,%edx
1504 	shll	$24,%eax
1505 	orl	%eax,%ecx
1506 	movl	20(%esp),%edi
1507 	movd	%edx,%mm4
1508 	movd	%ecx,%mm5
1509 	punpckldq	%mm5,%mm4
1510 	addl	$16,%edi
1511 	cmpl	24(%esp),%edi
1512 	ja	L008out
1513 	movq	%mm0,%mm3
1514 	movq	%mm4,%mm7
1515 	pshufw	$228,%mm0,%mm2
1516 	pshufw	$228,%mm4,%mm6
1517 	movq	%mm0,%mm1
1518 	movq	%mm4,%mm5
1519 	pshufw	$177,%mm0,%mm0
1520 	pshufw	$177,%mm4,%mm4
1521 	pslld	$8,%mm2
1522 	pslld	$8,%mm6
1523 	psrld	$8,%mm3
1524 	psrld	$8,%mm7
1525 	pxor	%mm2,%mm0
1526 	pxor	%mm6,%mm4
1527 	pxor	%mm3,%mm0
1528 	pxor	%mm7,%mm4
1529 	pslld	$16,%mm2
1530 	pslld	$16,%mm6
1531 	psrld	$16,%mm3
1532 	psrld	$16,%mm7
1533 	pxor	%mm2,%mm0
1534 	pxor	%mm6,%mm4
1535 	pxor	%mm3,%mm0
1536 	pxor	%mm7,%mm4
1537 	movq	8(%esp),%mm3
1538 	pxor	%mm2,%mm2
1539 	pxor	%mm6,%mm6
1540 	pcmpgtb	%mm1,%mm2
1541 	pcmpgtb	%mm5,%mm6
1542 	pand	%mm3,%mm2
1543 	pand	%mm3,%mm6
1544 	paddb	%mm1,%mm1
1545 	paddb	%mm5,%mm5
1546 	pxor	%mm2,%mm1
1547 	pxor	%mm6,%mm5
1548 	movq	%mm1,%mm3
1549 	movq	%mm5,%mm7
1550 	movq	%mm1,%mm2
1551 	movq	%mm5,%mm6
1552 	pxor	%mm1,%mm0
1553 	pxor	%mm5,%mm4
1554 	pslld	$24,%mm3
1555 	pslld	$24,%mm7
1556 	psrld	$8,%mm2
1557 	psrld	$8,%mm6
1558 	pxor	%mm3,%mm0
1559 	pxor	%mm7,%mm4
1560 	pxor	%mm2,%mm0
1561 	pxor	%mm6,%mm4
1562 	movq	8(%esp),%mm2
1563 	pxor	%mm3,%mm3
1564 	pxor	%mm7,%mm7
1565 	pcmpgtb	%mm1,%mm3
1566 	pcmpgtb	%mm5,%mm7
1567 	pand	%mm2,%mm3
1568 	pand	%mm2,%mm7
1569 	paddb	%mm1,%mm1
1570 	paddb	%mm5,%mm5
1571 	pxor	%mm3,%mm1
1572 	pxor	%mm7,%mm5
1573 	pshufw	$177,%mm1,%mm3
1574 	pshufw	$177,%mm5,%mm7
1575 	pxor	%mm1,%mm0
1576 	pxor	%mm5,%mm4
1577 	pxor	%mm3,%mm0
1578 	pxor	%mm7,%mm4
1579 	pxor	%mm3,%mm3
1580 	pxor	%mm7,%mm7
1581 	pcmpgtb	%mm1,%mm3
1582 	pcmpgtb	%mm5,%mm7
1583 	pand	%mm2,%mm3
1584 	pand	%mm2,%mm7
1585 	paddb	%mm1,%mm1
1586 	paddb	%mm5,%mm5
1587 	pxor	%mm3,%mm1
1588 	pxor	%mm7,%mm5
1589 	pxor	%mm1,%mm0
1590 	pxor	%mm5,%mm4
1591 	movq	%mm1,%mm3
1592 	movq	%mm5,%mm7
1593 	pshufw	$177,%mm1,%mm2
1594 	pshufw	$177,%mm5,%mm6
1595 	pxor	%mm2,%mm0
1596 	pxor	%mm6,%mm4
1597 	pslld	$8,%mm1
1598 	pslld	$8,%mm5
1599 	psrld	$8,%mm3
1600 	psrld	$8,%mm7
1601 	movq	(%edi),%mm2
1602 	movq	8(%edi),%mm6
1603 	pxor	%mm1,%mm0
1604 	pxor	%mm5,%mm4
1605 	pxor	%mm3,%mm0
1606 	pxor	%mm7,%mm4
1607 	movl	-128(%ebp),%eax
1608 	pslld	$16,%mm1
1609 	pslld	$16,%mm5
1610 	movl	-64(%ebp),%ebx
1611 	psrld	$16,%mm3
1612 	psrld	$16,%mm7
1613 	movl	(%ebp),%ecx
1614 	pxor	%mm1,%mm0
1615 	pxor	%mm5,%mm4
1616 	movl	64(%ebp),%edx
1617 	pxor	%mm3,%mm0
1618 	pxor	%mm7,%mm4
1619 	pxor	%mm2,%mm0
1620 	pxor	%mm6,%mm4
1621 	jmp	L007loop
1622 .align	4,0x90
1623 L008out:
1624 	pxor	(%edi),%mm0
1625 	pxor	8(%edi),%mm4
1626 	ret
1627 .type	__x86_AES_decrypt,@function
1628 .align	4
1629 __x86_AES_decrypt:
1630 	%ifdef __CET__
1631 
1632 .byte	243,15,30,251
1633 	%endif
1634 
1635 	movl	%edi,20(%esp)
1636 	xorl	(%edi),%eax
1637 	xorl	4(%edi),%ebx
1638 	xorl	8(%edi),%ecx
1639 	xorl	12(%edi),%edx
1640 	movl	240(%edi),%esi
1641 	leal	-2(%esi,%esi,1),%esi
1642 	leal	(%edi,%esi,8),%esi
1643 	movl	%esi,24(%esp)
1644 .align	4,0x90
1645 L009loop:
1646 	movl	%eax,%esi
1647 	andl	$255,%esi
1648 	movl	(%ebp,%esi,8),%esi
1649 	movzbl	%dh,%edi
1650 	xorl	3(%ebp,%edi,8),%esi
1651 	movl	%ecx,%edi
1652 	shrl	$16,%edi
1653 	andl	$255,%edi
1654 	xorl	2(%ebp,%edi,8),%esi
1655 	movl	%ebx,%edi
1656 	shrl	$24,%edi
1657 	xorl	1(%ebp,%edi,8),%esi
1658 	movl	%esi,4(%esp)
1659 	movl	%ebx,%esi
1660 	andl	$255,%esi
1661 	movl	(%ebp,%esi,8),%esi
1662 	movzbl	%ah,%edi
1663 	xorl	3(%ebp,%edi,8),%esi
1664 	movl	%edx,%edi
1665 	shrl	$16,%edi
1666 	andl	$255,%edi
1667 	xorl	2(%ebp,%edi,8),%esi
1668 	movl	%ecx,%edi
1669 	shrl	$24,%edi
1670 	xorl	1(%ebp,%edi,8),%esi
1671 	movl	%esi,8(%esp)
1672 	movl	%ecx,%esi
1673 	andl	$255,%esi
1674 	movl	(%ebp,%esi,8),%esi
1675 	movzbl	%bh,%edi
1676 	xorl	3(%ebp,%edi,8),%esi
1677 	movl	%eax,%edi
1678 	shrl	$16,%edi
1679 	andl	$255,%edi
1680 	xorl	2(%ebp,%edi,8),%esi
1681 	movl	%edx,%edi
1682 	shrl	$24,%edi
1683 	xorl	1(%ebp,%edi,8),%esi
1684 	movl	20(%esp),%edi
1685 	andl	$255,%edx
1686 	movl	(%ebp,%edx,8),%edx
1687 	movzbl	%ch,%ecx
1688 	xorl	3(%ebp,%ecx,8),%edx
1689 	movl	%esi,%ecx
1690 	shrl	$16,%ebx
1691 	andl	$255,%ebx
1692 	xorl	2(%ebp,%ebx,8),%edx
1693 	movl	8(%esp),%ebx
1694 	shrl	$24,%eax
1695 	xorl	1(%ebp,%eax,8),%edx
1696 	movl	4(%esp),%eax
1697 	addl	$16,%edi
1698 	xorl	(%edi),%eax
1699 	xorl	4(%edi),%ebx
1700 	xorl	8(%edi),%ecx
1701 	xorl	12(%edi),%edx
1702 	cmpl	24(%esp),%edi
1703 	movl	%edi,20(%esp)
1704 	jb	L009loop
1705 	leal	2176(%ebp),%ebp
1706 	movl	-128(%ebp),%edi
1707 	movl	-96(%ebp),%esi
1708 	movl	-64(%ebp),%edi
1709 	movl	-32(%ebp),%esi
1710 	movl	(%ebp),%edi
1711 	movl	32(%ebp),%esi
1712 	movl	64(%ebp),%edi
1713 	movl	96(%ebp),%esi
1714 	leal	-128(%ebp),%ebp
1715 	movl	%eax,%esi
1716 	andl	$255,%esi
1717 	movzbl	(%ebp,%esi,1),%esi
1718 	movzbl	%dh,%edi
1719 	movzbl	(%ebp,%edi,1),%edi
1720 	shll	$8,%edi
1721 	xorl	%edi,%esi
1722 	movl	%ecx,%edi
1723 	shrl	$16,%edi
1724 	andl	$255,%edi
1725 	movzbl	(%ebp,%edi,1),%edi
1726 	shll	$16,%edi
1727 	xorl	%edi,%esi
1728 	movl	%ebx,%edi
1729 	shrl	$24,%edi
1730 	movzbl	(%ebp,%edi,1),%edi
1731 	shll	$24,%edi
1732 	xorl	%edi,%esi
1733 	movl	%esi,4(%esp)
1734 	movl	%ebx,%esi
1735 	andl	$255,%esi
1736 	movzbl	(%ebp,%esi,1),%esi
1737 	movzbl	%ah,%edi
1738 	movzbl	(%ebp,%edi,1),%edi
1739 	shll	$8,%edi
1740 	xorl	%edi,%esi
1741 	movl	%edx,%edi
1742 	shrl	$16,%edi
1743 	andl	$255,%edi
1744 	movzbl	(%ebp,%edi,1),%edi
1745 	shll	$16,%edi
1746 	xorl	%edi,%esi
1747 	movl	%ecx,%edi
1748 	shrl	$24,%edi
1749 	movzbl	(%ebp,%edi,1),%edi
1750 	shll	$24,%edi
1751 	xorl	%edi,%esi
1752 	movl	%esi,8(%esp)
1753 	movl	%ecx,%esi
1754 	andl	$255,%esi
1755 	movzbl	(%ebp,%esi,1),%esi
1756 	movzbl	%bh,%edi
1757 	movzbl	(%ebp,%edi,1),%edi
1758 	shll	$8,%edi
1759 	xorl	%edi,%esi
1760 	movl	%eax,%edi
1761 	shrl	$16,%edi
1762 	andl	$255,%edi
1763 	movzbl	(%ebp,%edi,1),%edi
1764 	shll	$16,%edi
1765 	xorl	%edi,%esi
1766 	movl	%edx,%edi
1767 	shrl	$24,%edi
1768 	movzbl	(%ebp,%edi,1),%edi
1769 	shll	$24,%edi
1770 	xorl	%edi,%esi
1771 	movl	20(%esp),%edi
1772 	andl	$255,%edx
1773 	movzbl	(%ebp,%edx,1),%edx
1774 	movzbl	%ch,%ecx
1775 	movzbl	(%ebp,%ecx,1),%ecx
1776 	shll	$8,%ecx
1777 	xorl	%ecx,%edx
1778 	movl	%esi,%ecx
1779 	shrl	$16,%ebx
1780 	andl	$255,%ebx
1781 	movzbl	(%ebp,%ebx,1),%ebx
1782 	shll	$16,%ebx
1783 	xorl	%ebx,%edx
1784 	movl	8(%esp),%ebx
1785 	shrl	$24,%eax
1786 	movzbl	(%ebp,%eax,1),%eax
1787 	shll	$24,%eax
1788 	xorl	%eax,%edx
1789 	movl	4(%esp),%eax
1790 	leal	-2048(%ebp),%ebp
1791 	addl	$16,%edi
1792 	xorl	(%edi),%eax
1793 	xorl	4(%edi),%ebx
1794 	xorl	8(%edi),%ecx
1795 	xorl	12(%edi),%edx
1796 	ret
1797 .align	6,0x90
1798 LAES_Td:
1799 .long	1353184337,1353184337
1800 .long	1399144830,1399144830
1801 .long	3282310938,3282310938
1802 .long	2522752826,2522752826
1803 .long	3412831035,3412831035
1804 .long	4047871263,4047871263
1805 .long	2874735276,2874735276
1806 .long	2466505547,2466505547
1807 .long	1442459680,1442459680
1808 .long	4134368941,4134368941
1809 .long	2440481928,2440481928
1810 .long	625738485,625738485
1811 .long	4242007375,4242007375
1812 .long	3620416197,3620416197
1813 .long	2151953702,2151953702
1814 .long	2409849525,2409849525
1815 .long	1230680542,1230680542
1816 .long	1729870373,1729870373
1817 .long	2551114309,2551114309
1818 .long	3787521629,3787521629
1819 .long	41234371,41234371
1820 .long	317738113,317738113
1821 .long	2744600205,2744600205
1822 .long	3338261355,3338261355
1823 .long	3881799427,3881799427
1824 .long	2510066197,2510066197
1825 .long	3950669247,3950669247
1826 .long	3663286933,3663286933
1827 .long	763608788,763608788
1828 .long	3542185048,3542185048
1829 .long	694804553,694804553
1830 .long	1154009486,1154009486
1831 .long	1787413109,1787413109
1832 .long	2021232372,2021232372
1833 .long	1799248025,1799248025
1834 .long	3715217703,3715217703
1835 .long	3058688446,3058688446
1836 .long	397248752,397248752
1837 .long	1722556617,1722556617
1838 .long	3023752829,3023752829
1839 .long	407560035,407560035
1840 .long	2184256229,2184256229
1841 .long	1613975959,1613975959
1842 .long	1165972322,1165972322
1843 .long	3765920945,3765920945
1844 .long	2226023355,2226023355
1845 .long	480281086,480281086
1846 .long	2485848313,2485848313
1847 .long	1483229296,1483229296
1848 .long	436028815,436028815
1849 .long	2272059028,2272059028
1850 .long	3086515026,3086515026
1851 .long	601060267,601060267
1852 .long	3791801202,3791801202
1853 .long	1468997603,1468997603
1854 .long	715871590,715871590
1855 .long	120122290,120122290
1856 .long	63092015,63092015
1857 .long	2591802758,2591802758
1858 .long	2768779219,2768779219
1859 .long	4068943920,4068943920
1860 .long	2997206819,2997206819
1861 .long	3127509762,3127509762
1862 .long	1552029421,1552029421
1863 .long	723308426,723308426
1864 .long	2461301159,2461301159
1865 .long	4042393587,4042393587
1866 .long	2715969870,2715969870
1867 .long	3455375973,3455375973
1868 .long	3586000134,3586000134
1869 .long	526529745,526529745
1870 .long	2331944644,2331944644
1871 .long	2639474228,2639474228
1872 .long	2689987490,2689987490
1873 .long	853641733,853641733
1874 .long	1978398372,1978398372
1875 .long	971801355,971801355
1876 .long	2867814464,2867814464
1877 .long	111112542,111112542
1878 .long	1360031421,1360031421
1879 .long	4186579262,4186579262
1880 .long	1023860118,1023860118
1881 .long	2919579357,2919579357
1882 .long	1186850381,1186850381
1883 .long	3045938321,3045938321
1884 .long	90031217,90031217
1885 .long	1876166148,1876166148
1886 .long	4279586912,4279586912
1887 .long	620468249,620468249
1888 .long	2548678102,2548678102
1889 .long	3426959497,3426959497
1890 .long	2006899047,2006899047
1891 .long	3175278768,3175278768
1892 .long	2290845959,2290845959
1893 .long	945494503,945494503
1894 .long	3689859193,3689859193
1895 .long	1191869601,1191869601
1896 .long	3910091388,3910091388
1897 .long	3374220536,3374220536
1898 .long	0,0
1899 .long	2206629897,2206629897
1900 .long	1223502642,1223502642
1901 .long	2893025566,2893025566
1902 .long	1316117100,1316117100
1903 .long	4227796733,4227796733
1904 .long	1446544655,1446544655
1905 .long	517320253,517320253
1906 .long	658058550,658058550
1907 .long	1691946762,1691946762
1908 .long	564550760,564550760
1909 .long	3511966619,3511966619
1910 .long	976107044,976107044
1911 .long	2976320012,2976320012
1912 .long	266819475,266819475
1913 .long	3533106868,3533106868
1914 .long	2660342555,2660342555
1915 .long	1338359936,1338359936
1916 .long	2720062561,2720062561
1917 .long	1766553434,1766553434
1918 .long	370807324,370807324
1919 .long	179999714,179999714
1920 .long	3844776128,3844776128
1921 .long	1138762300,1138762300
1922 .long	488053522,488053522
1923 .long	185403662,185403662
1924 .long	2915535858,2915535858
1925 .long	3114841645,3114841645
1926 .long	3366526484,3366526484
1927 .long	2233069911,2233069911
1928 .long	1275557295,1275557295
1929 .long	3151862254,3151862254
1930 .long	4250959779,4250959779
1931 .long	2670068215,2670068215
1932 .long	3170202204,3170202204
1933 .long	3309004356,3309004356
1934 .long	880737115,880737115
1935 .long	1982415755,1982415755
1936 .long	3703972811,3703972811
1937 .long	1761406390,1761406390
1938 .long	1676797112,1676797112
1939 .long	3403428311,3403428311
1940 .long	277177154,277177154
1941 .long	1076008723,1076008723
1942 .long	538035844,538035844
1943 .long	2099530373,2099530373
1944 .long	4164795346,4164795346
1945 .long	288553390,288553390
1946 .long	1839278535,1839278535
1947 .long	1261411869,1261411869
1948 .long	4080055004,4080055004
1949 .long	3964831245,3964831245
1950 .long	3504587127,3504587127
1951 .long	1813426987,1813426987
1952 .long	2579067049,2579067049
1953 .long	4199060497,4199060497
1954 .long	577038663,577038663
1955 .long	3297574056,3297574056
1956 .long	440397984,440397984
1957 .long	3626794326,3626794326
1958 .long	4019204898,4019204898
1959 .long	3343796615,3343796615
1960 .long	3251714265,3251714265
1961 .long	4272081548,4272081548
1962 .long	906744984,906744984
1963 .long	3481400742,3481400742
1964 .long	685669029,685669029
1965 .long	646887386,646887386
1966 .long	2764025151,2764025151
1967 .long	3835509292,3835509292
1968 .long	227702864,227702864
1969 .long	2613862250,2613862250
1970 .long	1648787028,1648787028
1971 .long	3256061430,3256061430
1972 .long	3904428176,3904428176
1973 .long	1593260334,1593260334
1974 .long	4121936770,4121936770
1975 .long	3196083615,3196083615
1976 .long	2090061929,2090061929
1977 .long	2838353263,2838353263
1978 .long	3004310991,3004310991
1979 .long	999926984,999926984
1980 .long	2809993232,2809993232
1981 .long	1852021992,1852021992
1982 .long	2075868123,2075868123
1983 .long	158869197,158869197
1984 .long	4095236462,4095236462
1985 .long	28809964,28809964
1986 .long	2828685187,2828685187
1987 .long	1701746150,1701746150
1988 .long	2129067946,2129067946
1989 .long	147831841,147831841
1990 .long	3873969647,3873969647
1991 .long	3650873274,3650873274
1992 .long	3459673930,3459673930
1993 .long	3557400554,3557400554
1994 .long	3598495785,3598495785
1995 .long	2947720241,2947720241
1996 .long	824393514,824393514
1997 .long	815048134,815048134
1998 .long	3227951669,3227951669
1999 .long	935087732,935087732
2000 .long	2798289660,2798289660
2001 .long	2966458592,2966458592
2002 .long	366520115,366520115
2003 .long	1251476721,1251476721
2004 .long	4158319681,4158319681
2005 .long	240176511,240176511
2006 .long	804688151,804688151
2007 .long	2379631990,2379631990
2008 .long	1303441219,1303441219
2009 .long	1414376140,1414376140
2010 .long	3741619940,3741619940
2011 .long	3820343710,3820343710
2012 .long	461924940,461924940
2013 .long	3089050817,3089050817
2014 .long	2136040774,2136040774
2015 .long	82468509,82468509
2016 .long	1563790337,1563790337
2017 .long	1937016826,1937016826
2018 .long	776014843,776014843
2019 .long	1511876531,1511876531
2020 .long	1389550482,1389550482
2021 .long	861278441,861278441
2022 .long	323475053,323475053
2023 .long	2355222426,2355222426
2024 .long	2047648055,2047648055
2025 .long	2383738969,2383738969
2026 .long	2302415851,2302415851
2027 .long	3995576782,3995576782
2028 .long	902390199,902390199
2029 .long	3991215329,3991215329
2030 .long	1018251130,1018251130
2031 .long	1507840668,1507840668
2032 .long	1064563285,1064563285
2033 .long	2043548696,2043548696
2034 .long	3208103795,3208103795
2035 .long	3939366739,3939366739
2036 .long	1537932639,1537932639
2037 .long	342834655,342834655
2038 .long	2262516856,2262516856
2039 .long	2180231114,2180231114
2040 .long	1053059257,1053059257
2041 .long	741614648,741614648
2042 .long	1598071746,1598071746
2043 .long	1925389590,1925389590
2044 .long	203809468,203809468
2045 .long	2336832552,2336832552
2046 .long	1100287487,1100287487
2047 .long	1895934009,1895934009
2048 .long	3736275976,3736275976
2049 .long	2632234200,2632234200
2050 .long	2428589668,2428589668
2051 .long	1636092795,1636092795
2052 .long	1890988757,1890988757
2053 .long	1952214088,1952214088
2054 .long	1113045200,1113045200
2055 .byte	82,9,106,213,48,54,165,56
2056 .byte	191,64,163,158,129,243,215,251
2057 .byte	124,227,57,130,155,47,255,135
2058 .byte	52,142,67,68,196,222,233,203
2059 .byte	84,123,148,50,166,194,35,61
2060 .byte	238,76,149,11,66,250,195,78
2061 .byte	8,46,161,102,40,217,36,178
2062 .byte	118,91,162,73,109,139,209,37
2063 .byte	114,248,246,100,134,104,152,22
2064 .byte	212,164,92,204,93,101,182,146
2065 .byte	108,112,72,80,253,237,185,218
2066 .byte	94,21,70,87,167,141,157,132
2067 .byte	144,216,171,0,140,188,211,10
2068 .byte	247,228,88,5,184,179,69,6
2069 .byte	208,44,30,143,202,63,15,2
2070 .byte	193,175,189,3,1,19,138,107
2071 .byte	58,145,17,65,79,103,220,234
2072 .byte	151,242,207,206,240,180,230,115
2073 .byte	150,172,116,34,231,173,53,133
2074 .byte	226,249,55,232,28,117,223,110
2075 .byte	71,241,26,113,29,41,197,137
2076 .byte	111,183,98,14,170,24,190,27
2077 .byte	252,86,62,75,198,210,121,32
2078 .byte	154,219,192,254,120,205,90,244
2079 .byte	31,221,168,51,136,7,199,49
2080 .byte	177,18,16,89,39,128,236,95
2081 .byte	96,81,127,169,25,181,74,13
2082 .byte	45,229,122,159,147,201,156,239
2083 .byte	160,224,59,77,174,42,245,176
2084 .byte	200,235,187,60,131,83,153,97
2085 .byte	23,43,4,126,186,119,214,38
2086 .byte	225,105,20,99,85,33,12,125
2087 .byte	82,9,106,213,48,54,165,56
2088 .byte	191,64,163,158,129,243,215,251
2089 .byte	124,227,57,130,155,47,255,135
2090 .byte	52,142,67,68,196,222,233,203
2091 .byte	84,123,148,50,166,194,35,61
2092 .byte	238,76,149,11,66,250,195,78
2093 .byte	8,46,161,102,40,217,36,178
2094 .byte	118,91,162,73,109,139,209,37
2095 .byte	114,248,246,100,134,104,152,22
2096 .byte	212,164,92,204,93,101,182,146
2097 .byte	108,112,72,80,253,237,185,218
2098 .byte	94,21,70,87,167,141,157,132
2099 .byte	144,216,171,0,140,188,211,10
2100 .byte	247,228,88,5,184,179,69,6
2101 .byte	208,44,30,143,202,63,15,2
2102 .byte	193,175,189,3,1,19,138,107
2103 .byte	58,145,17,65,79,103,220,234
2104 .byte	151,242,207,206,240,180,230,115
2105 .byte	150,172,116,34,231,173,53,133
2106 .byte	226,249,55,232,28,117,223,110
2107 .byte	71,241,26,113,29,41,197,137
2108 .byte	111,183,98,14,170,24,190,27
2109 .byte	252,86,62,75,198,210,121,32
2110 .byte	154,219,192,254,120,205,90,244
2111 .byte	31,221,168,51,136,7,199,49
2112 .byte	177,18,16,89,39,128,236,95
2113 .byte	96,81,127,169,25,181,74,13
2114 .byte	45,229,122,159,147,201,156,239
2115 .byte	160,224,59,77,174,42,245,176
2116 .byte	200,235,187,60,131,83,153,97
2117 .byte	23,43,4,126,186,119,214,38
2118 .byte	225,105,20,99,85,33,12,125
2119 .byte	82,9,106,213,48,54,165,56
2120 .byte	191,64,163,158,129,243,215,251
2121 .byte	124,227,57,130,155,47,255,135
2122 .byte	52,142,67,68,196,222,233,203
2123 .byte	84,123,148,50,166,194,35,61
2124 .byte	238,76,149,11,66,250,195,78
2125 .byte	8,46,161,102,40,217,36,178
2126 .byte	118,91,162,73,109,139,209,37
2127 .byte	114,248,246,100,134,104,152,22
2128 .byte	212,164,92,204,93,101,182,146
2129 .byte	108,112,72,80,253,237,185,218
2130 .byte	94,21,70,87,167,141,157,132
2131 .byte	144,216,171,0,140,188,211,10
2132 .byte	247,228,88,5,184,179,69,6
2133 .byte	208,44,30,143,202,63,15,2
2134 .byte	193,175,189,3,1,19,138,107
2135 .byte	58,145,17,65,79,103,220,234
2136 .byte	151,242,207,206,240,180,230,115
2137 .byte	150,172,116,34,231,173,53,133
2138 .byte	226,249,55,232,28,117,223,110
2139 .byte	71,241,26,113,29,41,197,137
2140 .byte	111,183,98,14,170,24,190,27
2141 .byte	252,86,62,75,198,210,121,32
2142 .byte	154,219,192,254,120,205,90,244
2143 .byte	31,221,168,51,136,7,199,49
2144 .byte	177,18,16,89,39,128,236,95
2145 .byte	96,81,127,169,25,181,74,13
2146 .byte	45,229,122,159,147,201,156,239
2147 .byte	160,224,59,77,174,42,245,176
2148 .byte	200,235,187,60,131,83,153,97
2149 .byte	23,43,4,126,186,119,214,38
2150 .byte	225,105,20,99,85,33,12,125
2151 .byte	82,9,106,213,48,54,165,56
2152 .byte	191,64,163,158,129,243,215,251
2153 .byte	124,227,57,130,155,47,255,135
2154 .byte	52,142,67,68,196,222,233,203
2155 .byte	84,123,148,50,166,194,35,61
2156 .byte	238,76,149,11,66,250,195,78
2157 .byte	8,46,161,102,40,217,36,178
2158 .byte	118,91,162,73,109,139,209,37
2159 .byte	114,248,246,100,134,104,152,22
2160 .byte	212,164,92,204,93,101,182,146
2161 .byte	108,112,72,80,253,237,185,218
2162 .byte	94,21,70,87,167,141,157,132
2163 .byte	144,216,171,0,140,188,211,10
2164 .byte	247,228,88,5,184,179,69,6
2165 .byte	208,44,30,143,202,63,15,2
2166 .byte	193,175,189,3,1,19,138,107
2167 .byte	58,145,17,65,79,103,220,234
2168 .byte	151,242,207,206,240,180,230,115
2169 .byte	150,172,116,34,231,173,53,133
2170 .byte	226,249,55,232,28,117,223,110
2171 .byte	71,241,26,113,29,41,197,137
2172 .byte	111,183,98,14,170,24,190,27
2173 .byte	252,86,62,75,198,210,121,32
2174 .byte	154,219,192,254,120,205,90,244
2175 .byte	31,221,168,51,136,7,199,49
2176 .byte	177,18,16,89,39,128,236,95
2177 .byte	96,81,127,169,25,181,74,13
2178 .byte	45,229,122,159,147,201,156,239
2179 .byte	160,224,59,77,174,42,245,176
2180 .byte	200,235,187,60,131,83,153,97
2181 .byte	23,43,4,126,186,119,214,38
2182 .byte	225,105,20,99,85,33,12,125
2183 .globl	_AES_decrypt
2184 .type	_AES_decrypt,@function
2185 .align	4
2186 _AES_decrypt:
2187 L_AES_decrypt_begin:
2188 	%ifdef __CET__
2189 
2190 .byte	243,15,30,251
2191 	%endif
2192 
2193 	pushl	%ebp
2194 	pushl	%ebx
2195 	pushl	%esi
2196 	pushl	%edi
2197 	movl	20(%esp),%esi
2198 	movl	28(%esp),%edi
2199 	movl	%esp,%eax
2200 	subl	$36,%esp
2201 	andl	$-64,%esp
2202 	leal	-127(%edi),%ebx
2203 	subl	%esp,%ebx
2204 	negl	%ebx
2205 	andl	$960,%ebx
2206 	subl	%ebx,%esp
2207 	addl	$4,%esp
2208 	movl	%eax,28(%esp)
2209 	call	L010pic_point
2210 L010pic_point:
2211 	popl	%ebp
2212 	leal	__GLOBAL_OFFSET_TABLE_+[.-L010pic_point](%ebp),%eax
2213 	movl	_OPENSSL_ia32cap_P@GOT(%eax),%eax
2214 	leal	LAES_Td-L010pic_point(%ebp),%ebp
2215 	leal	764(%esp),%ebx
2216 	subl	%ebp,%ebx
2217 	andl	$768,%ebx
2218 	leal	2176(%ebp,%ebx,1),%ebp
2219 	btl	$25,(%eax)
2220 	jnc	L011x86
2221 	movq	(%esi),%mm0
2222 	movq	8(%esi),%mm4
2223 	call	__sse_AES_decrypt_compact
2224 	movl	28(%esp),%esp
2225 	movl	24(%esp),%esi
2226 	movq	%mm0,(%esi)
2227 	movq	%mm4,8(%esi)
2228 	emms
2229 	popl	%edi
2230 	popl	%esi
2231 	popl	%ebx
2232 	popl	%ebp
2233 	ret
2234 .align	4,0x90
2235 L011x86:
2236 	movl	%ebp,24(%esp)
2237 	movl	(%esi),%eax
2238 	movl	4(%esi),%ebx
2239 	movl	8(%esi),%ecx
2240 	movl	12(%esi),%edx
2241 	call	__x86_AES_decrypt_compact
2242 	movl	28(%esp),%esp
2243 	movl	24(%esp),%esi
2244 	movl	%eax,(%esi)
2245 	movl	%ebx,4(%esi)
2246 	movl	%ecx,8(%esi)
2247 	movl	%edx,12(%esi)
2248 	popl	%edi
2249 	popl	%esi
2250 	popl	%ebx
2251 	popl	%ebp
2252 	ret
2253 .globl	_AES_cbc_encrypt
2254 .type	_AES_cbc_encrypt,@function
2255 .align	4
2256 _AES_cbc_encrypt:
2257 L_AES_cbc_encrypt_begin:
2258 	%ifdef __CET__
2259 
2260 .byte	243,15,30,251
2261 	%endif
2262 
2263 	pushl	%ebp
2264 	pushl	%ebx
2265 	pushl	%esi
2266 	pushl	%edi
2267 	movl	28(%esp),%ecx
2268 	cmpl	$0,%ecx
2269 	je	L012drop_out
2270 	call	L013pic_point
2271 L013pic_point:
2272 	popl	%ebp
2273 	leal	__GLOBAL_OFFSET_TABLE_+[.-L013pic_point](%ebp),%eax
2274 	movl	_OPENSSL_ia32cap_P@GOT(%eax),%eax
2275 	cmpl	$0,40(%esp)
2276 	leal	LAES_Te-L013pic_point(%ebp),%ebp
2277 	jne	L014picked_te
2278 	leal	LAES_Td-LAES_Te(%ebp),%ebp
2279 L014picked_te:
2280 	pushfl
2281 	cld
2282 	cmpl	$512,%ecx
2283 	jb	L015slow_way
2284 	testl	$15,%ecx
2285 	jnz	L015slow_way
2286 	btl	$28,(%eax)
2287 	jc	L015slow_way
2288 	leal	-324(%esp),%esi
2289 	andl	$-64,%esi
2290 	movl	%ebp,%eax
2291 	leal	2304(%ebp),%ebx
2292 	movl	%esi,%edx
2293 	andl	$4095,%eax
2294 	andl	$4095,%ebx
2295 	andl	$4095,%edx
2296 	cmpl	%ebx,%edx
2297 	jb	L016tbl_break_out
2298 	subl	%ebx,%edx
2299 	subl	%edx,%esi
2300 	jmp	L017tbl_ok
2301 .align	2,0x90
2302 L016tbl_break_out:
2303 	subl	%eax,%edx
2304 	andl	$4095,%edx
2305 	addl	$384,%edx
2306 	subl	%edx,%esi
2307 .align	2,0x90
2308 L017tbl_ok:
2309 	leal	24(%esp),%edx
2310 	xchgl	%esi,%esp
2311 	addl	$4,%esp
2312 	movl	%ebp,24(%esp)
2313 	movl	%esi,28(%esp)
2314 	movl	(%edx),%eax
2315 	movl	4(%edx),%ebx
2316 	movl	12(%edx),%edi
2317 	movl	16(%edx),%esi
2318 	movl	20(%edx),%edx
2319 	movl	%eax,32(%esp)
2320 	movl	%ebx,36(%esp)
2321 	movl	%ecx,40(%esp)
2322 	movl	%edi,44(%esp)
2323 	movl	%esi,48(%esp)
2324 	movl	$0,316(%esp)
2325 	movl	%edi,%ebx
2326 	movl	$61,%ecx
2327 	subl	%ebp,%ebx
2328 	movl	%edi,%esi
2329 	andl	$4095,%ebx
2330 	leal	76(%esp),%edi
2331 	cmpl	$2304,%ebx
2332 	jb	L018do_copy
2333 	cmpl	$3852,%ebx
2334 	jb	L019skip_copy
2335 .align	2,0x90
2336 L018do_copy:
2337 	movl	%edi,44(%esp)
2338 .long	2784229001
2339 L019skip_copy:
2340 	movl	$16,%edi
2341 .align	2,0x90
2342 L020prefetch_tbl:
2343 	movl	(%ebp),%eax
2344 	movl	32(%ebp),%ebx
2345 	movl	64(%ebp),%ecx
2346 	movl	96(%ebp),%esi
2347 	leal	128(%ebp),%ebp
2348 	subl	$1,%edi
2349 	jnz	L020prefetch_tbl
2350 	subl	$2048,%ebp
2351 	movl	32(%esp),%esi
2352 	movl	48(%esp),%edi
2353 	cmpl	$0,%edx
2354 	je	L021fast_decrypt
2355 	movl	(%edi),%eax
2356 	movl	4(%edi),%ebx
2357 .align	4,0x90
2358 L022fast_enc_loop:
2359 	movl	8(%edi),%ecx
2360 	movl	12(%edi),%edx
2361 	xorl	(%esi),%eax
2362 	xorl	4(%esi),%ebx
2363 	xorl	8(%esi),%ecx
2364 	xorl	12(%esi),%edx
2365 	movl	44(%esp),%edi
2366 	call	__x86_AES_encrypt
2367 	movl	32(%esp),%esi
2368 	movl	36(%esp),%edi
2369 	movl	%eax,(%edi)
2370 	movl	%ebx,4(%edi)
2371 	movl	%ecx,8(%edi)
2372 	movl	%edx,12(%edi)
2373 	leal	16(%esi),%esi
2374 	movl	40(%esp),%ecx
2375 	movl	%esi,32(%esp)
2376 	leal	16(%edi),%edx
2377 	movl	%edx,36(%esp)
2378 	subl	$16,%ecx
2379 	movl	%ecx,40(%esp)
2380 	jnz	L022fast_enc_loop
2381 	movl	48(%esp),%esi
2382 	movl	8(%edi),%ecx
2383 	movl	12(%edi),%edx
2384 	movl	%eax,(%esi)
2385 	movl	%ebx,4(%esi)
2386 	movl	%ecx,8(%esi)
2387 	movl	%edx,12(%esi)
2388 	cmpl	$0,316(%esp)
2389 	movl	44(%esp),%edi
2390 	je	L023skip_ezero
2391 	movl	$60,%ecx
2392 	xorl	%eax,%eax
2393 .align	2,0x90
2394 .long	2884892297
2395 L023skip_ezero:
2396 	movl	28(%esp),%esp
2397 	popfl
2398 L012drop_out:
2399 	popl	%edi
2400 	popl	%esi
2401 	popl	%ebx
2402 	popl	%ebp
2403 	ret
2404 	pushfl
2405 .align	4,0x90
2406 L021fast_decrypt:
2407 	cmpl	36(%esp),%esi
2408 	je	L024fast_dec_in_place
2409 	movl	%edi,52(%esp)
2410 .align	2,0x90
2411 .align	4,0x90
2412 L025fast_dec_loop:
2413 	movl	(%esi),%eax
2414 	movl	4(%esi),%ebx
2415 	movl	8(%esi),%ecx
2416 	movl	12(%esi),%edx
2417 	movl	44(%esp),%edi
2418 	call	__x86_AES_decrypt
2419 	movl	52(%esp),%edi
2420 	movl	40(%esp),%esi
2421 	xorl	(%edi),%eax
2422 	xorl	4(%edi),%ebx
2423 	xorl	8(%edi),%ecx
2424 	xorl	12(%edi),%edx
2425 	movl	36(%esp),%edi
2426 	movl	32(%esp),%esi
2427 	movl	%eax,(%edi)
2428 	movl	%ebx,4(%edi)
2429 	movl	%ecx,8(%edi)
2430 	movl	%edx,12(%edi)
2431 	movl	40(%esp),%ecx
2432 	movl	%esi,52(%esp)
2433 	leal	16(%esi),%esi
2434 	movl	%esi,32(%esp)
2435 	leal	16(%edi),%edi
2436 	movl	%edi,36(%esp)
2437 	subl	$16,%ecx
2438 	movl	%ecx,40(%esp)
2439 	jnz	L025fast_dec_loop
2440 	movl	52(%esp),%edi
2441 	movl	48(%esp),%esi
2442 	movl	(%edi),%eax
2443 	movl	4(%edi),%ebx
2444 	movl	8(%edi),%ecx
2445 	movl	12(%edi),%edx
2446 	movl	%eax,(%esi)
2447 	movl	%ebx,4(%esi)
2448 	movl	%ecx,8(%esi)
2449 	movl	%edx,12(%esi)
2450 	jmp	L026fast_dec_out
2451 .align	4,0x90
2452 L024fast_dec_in_place:
2453 L027fast_dec_in_place_loop:
2454 	movl	(%esi),%eax
2455 	movl	4(%esi),%ebx
2456 	movl	8(%esi),%ecx
2457 	movl	12(%esi),%edx
2458 	leal	60(%esp),%edi
2459 	movl	%eax,(%edi)
2460 	movl	%ebx,4(%edi)
2461 	movl	%ecx,8(%edi)
2462 	movl	%edx,12(%edi)
2463 	movl	44(%esp),%edi
2464 	call	__x86_AES_decrypt
2465 	movl	48(%esp),%edi
2466 	movl	36(%esp),%esi
2467 	xorl	(%edi),%eax
2468 	xorl	4(%edi),%ebx
2469 	xorl	8(%edi),%ecx
2470 	xorl	12(%edi),%edx
2471 	movl	%eax,(%esi)
2472 	movl	%ebx,4(%esi)
2473 	movl	%ecx,8(%esi)
2474 	movl	%edx,12(%esi)
2475 	leal	16(%esi),%esi
2476 	movl	%esi,36(%esp)
2477 	leal	60(%esp),%esi
2478 	movl	(%esi),%eax
2479 	movl	4(%esi),%ebx
2480 	movl	8(%esi),%ecx
2481 	movl	12(%esi),%edx
2482 	movl	%eax,(%edi)
2483 	movl	%ebx,4(%edi)
2484 	movl	%ecx,8(%edi)
2485 	movl	%edx,12(%edi)
2486 	movl	32(%esp),%esi
2487 	movl	40(%esp),%ecx
2488 	leal	16(%esi),%esi
2489 	movl	%esi,32(%esp)
2490 	subl	$16,%ecx
2491 	movl	%ecx,40(%esp)
2492 	jnz	L027fast_dec_in_place_loop
2493 .align	2,0x90
2494 L026fast_dec_out:
2495 	cmpl	$0,316(%esp)
2496 	movl	44(%esp),%edi
2497 	je	L028skip_dzero
2498 	movl	$60,%ecx
2499 	xorl	%eax,%eax
2500 .align	2,0x90
2501 .long	2884892297
2502 L028skip_dzero:
2503 	movl	28(%esp),%esp
2504 	popfl
2505 	popl	%edi
2506 	popl	%esi
2507 	popl	%ebx
2508 	popl	%ebp
2509 	ret
2510 	pushfl
2511 .align	4,0x90
2512 L015slow_way:
2513 	movl	(%eax),%eax
2514 	movl	36(%esp),%edi
2515 	leal	-80(%esp),%esi
2516 	andl	$-64,%esi
2517 	leal	-143(%edi),%ebx
2518 	subl	%esi,%ebx
2519 	negl	%ebx
2520 	andl	$960,%ebx
2521 	subl	%ebx,%esi
2522 	leal	768(%esi),%ebx
2523 	subl	%ebp,%ebx
2524 	andl	$768,%ebx
2525 	leal	2176(%ebp,%ebx,1),%ebp
2526 	leal	24(%esp),%edx
2527 	xchgl	%esi,%esp
2528 	addl	$4,%esp
2529 	movl	%ebp,24(%esp)
2530 	movl	%esi,28(%esp)
2531 	movl	%eax,52(%esp)
2532 	movl	(%edx),%eax
2533 	movl	4(%edx),%ebx
2534 	movl	16(%edx),%esi
2535 	movl	20(%edx),%edx
2536 	movl	%eax,32(%esp)
2537 	movl	%ebx,36(%esp)
2538 	movl	%ecx,40(%esp)
2539 	movl	%edi,44(%esp)
2540 	movl	%esi,48(%esp)
2541 	movl	%esi,%edi
2542 	movl	%eax,%esi
2543 	cmpl	$0,%edx
2544 	je	L029slow_decrypt
2545 	cmpl	$16,%ecx
2546 	movl	%ebx,%edx
2547 	jb	L030slow_enc_tail
2548 	btl	$25,52(%esp)
2549 	jnc	L031slow_enc_x86
2550 	movq	(%edi),%mm0
2551 	movq	8(%edi),%mm4
2552 .align	4,0x90
2553 L032slow_enc_loop_sse:
2554 	pxor	(%esi),%mm0
2555 	pxor	8(%esi),%mm4
2556 	movl	44(%esp),%edi
2557 	call	__sse_AES_encrypt_compact
2558 	movl	32(%esp),%esi
2559 	movl	36(%esp),%edi
2560 	movl	40(%esp),%ecx
2561 	movq	%mm0,(%edi)
2562 	movq	%mm4,8(%edi)
2563 	leal	16(%esi),%esi
2564 	movl	%esi,32(%esp)
2565 	leal	16(%edi),%edx
2566 	movl	%edx,36(%esp)
2567 	subl	$16,%ecx
2568 	cmpl	$16,%ecx
2569 	movl	%ecx,40(%esp)
2570 	jae	L032slow_enc_loop_sse
2571 	testl	$15,%ecx
2572 	jnz	L030slow_enc_tail
2573 	movl	48(%esp),%esi
2574 	movq	%mm0,(%esi)
2575 	movq	%mm4,8(%esi)
2576 	emms
2577 	movl	28(%esp),%esp
2578 	popfl
2579 	popl	%edi
2580 	popl	%esi
2581 	popl	%ebx
2582 	popl	%ebp
2583 	ret
2584 	pushfl
2585 .align	4,0x90
2586 L031slow_enc_x86:
2587 	movl	(%edi),%eax
2588 	movl	4(%edi),%ebx
2589 .align	2,0x90
2590 L033slow_enc_loop_x86:
2591 	movl	8(%edi),%ecx
2592 	movl	12(%edi),%edx
2593 	xorl	(%esi),%eax
2594 	xorl	4(%esi),%ebx
2595 	xorl	8(%esi),%ecx
2596 	xorl	12(%esi),%edx
2597 	movl	44(%esp),%edi
2598 	call	__x86_AES_encrypt_compact
2599 	movl	32(%esp),%esi
2600 	movl	36(%esp),%edi
2601 	movl	%eax,(%edi)
2602 	movl	%ebx,4(%edi)
2603 	movl	%ecx,8(%edi)
2604 	movl	%edx,12(%edi)
2605 	movl	40(%esp),%ecx
2606 	leal	16(%esi),%esi
2607 	movl	%esi,32(%esp)
2608 	leal	16(%edi),%edx
2609 	movl	%edx,36(%esp)
2610 	subl	$16,%ecx
2611 	cmpl	$16,%ecx
2612 	movl	%ecx,40(%esp)
2613 	jae	L033slow_enc_loop_x86
2614 	testl	$15,%ecx
2615 	jnz	L030slow_enc_tail
2616 	movl	48(%esp),%esi
2617 	movl	8(%edi),%ecx
2618 	movl	12(%edi),%edx
2619 	movl	%eax,(%esi)
2620 	movl	%ebx,4(%esi)
2621 	movl	%ecx,8(%esi)
2622 	movl	%edx,12(%esi)
2623 	movl	28(%esp),%esp
2624 	popfl
2625 	popl	%edi
2626 	popl	%esi
2627 	popl	%ebx
2628 	popl	%ebp
2629 	ret
2630 	pushfl
2631 .align	4,0x90
2632 L030slow_enc_tail:
2633 	emms
2634 	movl	%edx,%edi
2635 	movl	$16,%ebx
2636 	subl	%ecx,%ebx
2637 	cmpl	%esi,%edi
2638 	je	L034enc_in_place
2639 .align	2,0x90
2640 .long	2767451785
2641 	jmp	L035enc_skip_in_place
2642 L034enc_in_place:
2643 	leal	(%edi,%ecx,1),%edi
2644 L035enc_skip_in_place:
2645 	movl	%ebx,%ecx
2646 	xorl	%eax,%eax
2647 .align	2,0x90
2648 .long	2868115081
2649 	movl	48(%esp),%edi
2650 	movl	%edx,%esi
2651 	movl	(%edi),%eax
2652 	movl	4(%edi),%ebx
2653 	movl	$16,40(%esp)
2654 	jmp	L033slow_enc_loop_x86
2655 .align	4,0x90
2656 L029slow_decrypt:
2657 	btl	$25,52(%esp)
2658 	jnc	L036slow_dec_loop_x86
2659 .align	2,0x90
2660 L037slow_dec_loop_sse:
2661 	movq	(%esi),%mm0
2662 	movq	8(%esi),%mm4
2663 	movl	44(%esp),%edi
2664 	call	__sse_AES_decrypt_compact
2665 	movl	32(%esp),%esi
2666 	leal	60(%esp),%eax
2667 	movl	36(%esp),%ebx
2668 	movl	40(%esp),%ecx
2669 	movl	48(%esp),%edi
2670 	movq	(%esi),%mm1
2671 	movq	8(%esi),%mm5
2672 	pxor	(%edi),%mm0
2673 	pxor	8(%edi),%mm4
2674 	movq	%mm1,(%edi)
2675 	movq	%mm5,8(%edi)
2676 	subl	$16,%ecx
2677 	jc	L038slow_dec_partial_sse
2678 	movq	%mm0,(%ebx)
2679 	movq	%mm4,8(%ebx)
2680 	leal	16(%ebx),%ebx
2681 	movl	%ebx,36(%esp)
2682 	leal	16(%esi),%esi
2683 	movl	%esi,32(%esp)
2684 	movl	%ecx,40(%esp)
2685 	jnz	L037slow_dec_loop_sse
2686 	emms
2687 	movl	28(%esp),%esp
2688 	popfl
2689 	popl	%edi
2690 	popl	%esi
2691 	popl	%ebx
2692 	popl	%ebp
2693 	ret
2694 	pushfl
2695 .align	4,0x90
2696 L038slow_dec_partial_sse:
2697 	movq	%mm0,(%eax)
2698 	movq	%mm4,8(%eax)
2699 	emms
2700 	addl	$16,%ecx
2701 	movl	%ebx,%edi
2702 	movl	%eax,%esi
2703 .align	2,0x90
2704 .long	2767451785
2705 	movl	28(%esp),%esp
2706 	popfl
2707 	popl	%edi
2708 	popl	%esi
2709 	popl	%ebx
2710 	popl	%ebp
2711 	ret
2712 	pushfl
2713 .align	4,0x90
2714 L036slow_dec_loop_x86:
2715 	movl	(%esi),%eax
2716 	movl	4(%esi),%ebx
2717 	movl	8(%esi),%ecx
2718 	movl	12(%esi),%edx
2719 	leal	60(%esp),%edi
2720 	movl	%eax,(%edi)
2721 	movl	%ebx,4(%edi)
2722 	movl	%ecx,8(%edi)
2723 	movl	%edx,12(%edi)
2724 	movl	44(%esp),%edi
2725 	call	__x86_AES_decrypt_compact
2726 	movl	48(%esp),%edi
2727 	movl	40(%esp),%esi
2728 	xorl	(%edi),%eax
2729 	xorl	4(%edi),%ebx
2730 	xorl	8(%edi),%ecx
2731 	xorl	12(%edi),%edx
2732 	subl	$16,%esi
2733 	jc	L039slow_dec_partial_x86
2734 	movl	%esi,40(%esp)
2735 	movl	36(%esp),%esi
2736 	movl	%eax,(%esi)
2737 	movl	%ebx,4(%esi)
2738 	movl	%ecx,8(%esi)
2739 	movl	%edx,12(%esi)
2740 	leal	16(%esi),%esi
2741 	movl	%esi,36(%esp)
2742 	leal	60(%esp),%esi
2743 	movl	(%esi),%eax
2744 	movl	4(%esi),%ebx
2745 	movl	8(%esi),%ecx
2746 	movl	12(%esi),%edx
2747 	movl	%eax,(%edi)
2748 	movl	%ebx,4(%edi)
2749 	movl	%ecx,8(%edi)
2750 	movl	%edx,12(%edi)
2751 	movl	32(%esp),%esi
2752 	leal	16(%esi),%esi
2753 	movl	%esi,32(%esp)
2754 	jnz	L036slow_dec_loop_x86
2755 	movl	28(%esp),%esp
2756 	popfl
2757 	popl	%edi
2758 	popl	%esi
2759 	popl	%ebx
2760 	popl	%ebp
2761 	ret
2762 	pushfl
2763 .align	4,0x90
2764 L039slow_dec_partial_x86:
2765 	leal	60(%esp),%esi
2766 	movl	%eax,(%esi)
2767 	movl	%ebx,4(%esi)
2768 	movl	%ecx,8(%esi)
2769 	movl	%edx,12(%esi)
2770 	movl	32(%esp),%esi
2771 	movl	(%esi),%eax
2772 	movl	4(%esi),%ebx
2773 	movl	8(%esi),%ecx
2774 	movl	12(%esi),%edx
2775 	movl	%eax,(%edi)
2776 	movl	%ebx,4(%edi)
2777 	movl	%ecx,8(%edi)
2778 	movl	%edx,12(%edi)
2779 	movl	40(%esp),%ecx
2780 	movl	36(%esp),%edi
2781 	leal	60(%esp),%esi
2782 .align	2,0x90
2783 .long	2767451785
2784 	movl	28(%esp),%esp
2785 	popfl
2786 	popl	%edi
2787 	popl	%esi
2788 	popl	%ebx
2789 	popl	%ebp
2790 	ret
2791 .type	__x86_AES_set_encrypt_key,@function
2792 .align	4
2793 __x86_AES_set_encrypt_key:
2794 	%ifdef __CET__
2795 
2796 .byte	243,15,30,251
2797 	%endif
2798 
2799 	pushl	%ebp
2800 	pushl	%ebx
2801 	pushl	%esi
2802 	pushl	%edi
2803 	movl	24(%esp),%esi
2804 	movl	32(%esp),%edi
2805 	testl	$-1,%esi
2806 	jz	L040badpointer
2807 	testl	$-1,%edi
2808 	jz	L040badpointer
2809 	call	L041pic_point
2810 L041pic_point:
2811 	popl	%ebp
2812 	leal	LAES_Te-L041pic_point(%ebp),%ebp
2813 	leal	2176(%ebp),%ebp
2814 	movl	-128(%ebp),%eax
2815 	movl	-96(%ebp),%ebx
2816 	movl	-64(%ebp),%ecx
2817 	movl	-32(%ebp),%edx
2818 	movl	(%ebp),%eax
2819 	movl	32(%ebp),%ebx
2820 	movl	64(%ebp),%ecx
2821 	movl	96(%ebp),%edx
2822 	movl	28(%esp),%ecx
2823 	cmpl	$128,%ecx
2824 	je	L04210rounds
2825 	cmpl	$192,%ecx
2826 	je	L04312rounds
2827 	cmpl	$256,%ecx
2828 	je	L04414rounds
2829 	movl	$-2,%eax
2830 	jmp	L045exit
2831 L04210rounds:
2832 	movl	(%esi),%eax
2833 	movl	4(%esi),%ebx
2834 	movl	8(%esi),%ecx
2835 	movl	12(%esi),%edx
2836 	movl	%eax,(%edi)
2837 	movl	%ebx,4(%edi)
2838 	movl	%ecx,8(%edi)
2839 	movl	%edx,12(%edi)
2840 	xorl	%ecx,%ecx
2841 	jmp	L04610shortcut
2842 .align	2,0x90
2843 L04710loop:
2844 	movl	(%edi),%eax
2845 	movl	12(%edi),%edx
2846 L04610shortcut:
2847 	movzbl	%dl,%esi
2848 	movzbl	-128(%ebp,%esi,1),%ebx
2849 	movzbl	%dh,%esi
2850 	shll	$24,%ebx
2851 	xorl	%ebx,%eax
2852 	movzbl	-128(%ebp,%esi,1),%ebx
2853 	shrl	$16,%edx
2854 	movzbl	%dl,%esi
2855 	xorl	%ebx,%eax
2856 	movzbl	-128(%ebp,%esi,1),%ebx
2857 	movzbl	%dh,%esi
2858 	shll	$8,%ebx
2859 	xorl	%ebx,%eax
2860 	movzbl	-128(%ebp,%esi,1),%ebx
2861 	shll	$16,%ebx
2862 	xorl	%ebx,%eax
2863 	xorl	896(%ebp,%ecx,4),%eax
2864 	movl	%eax,16(%edi)
2865 	xorl	4(%edi),%eax
2866 	movl	%eax,20(%edi)
2867 	xorl	8(%edi),%eax
2868 	movl	%eax,24(%edi)
2869 	xorl	12(%edi),%eax
2870 	movl	%eax,28(%edi)
2871 	incl	%ecx
2872 	addl	$16,%edi
2873 	cmpl	$10,%ecx
2874 	jl	L04710loop
2875 	movl	$10,80(%edi)
2876 	xorl	%eax,%eax
2877 	jmp	L045exit
2878 L04312rounds:
2879 	movl	(%esi),%eax
2880 	movl	4(%esi),%ebx
2881 	movl	8(%esi),%ecx
2882 	movl	12(%esi),%edx
2883 	movl	%eax,(%edi)
2884 	movl	%ebx,4(%edi)
2885 	movl	%ecx,8(%edi)
2886 	movl	%edx,12(%edi)
2887 	movl	16(%esi),%ecx
2888 	movl	20(%esi),%edx
2889 	movl	%ecx,16(%edi)
2890 	movl	%edx,20(%edi)
2891 	xorl	%ecx,%ecx
2892 	jmp	L04812shortcut
2893 .align	2,0x90
2894 L04912loop:
2895 	movl	(%edi),%eax
2896 	movl	20(%edi),%edx
2897 L04812shortcut:
2898 	movzbl	%dl,%esi
2899 	movzbl	-128(%ebp,%esi,1),%ebx
2900 	movzbl	%dh,%esi
2901 	shll	$24,%ebx
2902 	xorl	%ebx,%eax
2903 	movzbl	-128(%ebp,%esi,1),%ebx
2904 	shrl	$16,%edx
2905 	movzbl	%dl,%esi
2906 	xorl	%ebx,%eax
2907 	movzbl	-128(%ebp,%esi,1),%ebx
2908 	movzbl	%dh,%esi
2909 	shll	$8,%ebx
2910 	xorl	%ebx,%eax
2911 	movzbl	-128(%ebp,%esi,1),%ebx
2912 	shll	$16,%ebx
2913 	xorl	%ebx,%eax
2914 	xorl	896(%ebp,%ecx,4),%eax
2915 	movl	%eax,24(%edi)
2916 	xorl	4(%edi),%eax
2917 	movl	%eax,28(%edi)
2918 	xorl	8(%edi),%eax
2919 	movl	%eax,32(%edi)
2920 	xorl	12(%edi),%eax
2921 	movl	%eax,36(%edi)
2922 	cmpl	$7,%ecx
2923 	je	L05012break
2924 	incl	%ecx
2925 	xorl	16(%edi),%eax
2926 	movl	%eax,40(%edi)
2927 	xorl	20(%edi),%eax
2928 	movl	%eax,44(%edi)
2929 	addl	$24,%edi
2930 	jmp	L04912loop
2931 L05012break:
2932 	movl	$12,72(%edi)
2933 	xorl	%eax,%eax
2934 	jmp	L045exit
2935 L04414rounds:
2936 	movl	(%esi),%eax
2937 	movl	4(%esi),%ebx
2938 	movl	8(%esi),%ecx
2939 	movl	12(%esi),%edx
2940 	movl	%eax,(%edi)
2941 	movl	%ebx,4(%edi)
2942 	movl	%ecx,8(%edi)
2943 	movl	%edx,12(%edi)
2944 	movl	16(%esi),%eax
2945 	movl	20(%esi),%ebx
2946 	movl	24(%esi),%ecx
2947 	movl	28(%esi),%edx
2948 	movl	%eax,16(%edi)
2949 	movl	%ebx,20(%edi)
2950 	movl	%ecx,24(%edi)
2951 	movl	%edx,28(%edi)
2952 	xorl	%ecx,%ecx
2953 	jmp	L05114shortcut
2954 .align	2,0x90
2955 L05214loop:
2956 	movl	28(%edi),%edx
2957 L05114shortcut:
2958 	movl	(%edi),%eax
2959 	movzbl	%dl,%esi
2960 	movzbl	-128(%ebp,%esi,1),%ebx
2961 	movzbl	%dh,%esi
2962 	shll	$24,%ebx
2963 	xorl	%ebx,%eax
2964 	movzbl	-128(%ebp,%esi,1),%ebx
2965 	shrl	$16,%edx
2966 	movzbl	%dl,%esi
2967 	xorl	%ebx,%eax
2968 	movzbl	-128(%ebp,%esi,1),%ebx
2969 	movzbl	%dh,%esi
2970 	shll	$8,%ebx
2971 	xorl	%ebx,%eax
2972 	movzbl	-128(%ebp,%esi,1),%ebx
2973 	shll	$16,%ebx
2974 	xorl	%ebx,%eax
2975 	xorl	896(%ebp,%ecx,4),%eax
2976 	movl	%eax,32(%edi)
2977 	xorl	4(%edi),%eax
2978 	movl	%eax,36(%edi)
2979 	xorl	8(%edi),%eax
2980 	movl	%eax,40(%edi)
2981 	xorl	12(%edi),%eax
2982 	movl	%eax,44(%edi)
2983 	cmpl	$6,%ecx
2984 	je	L05314break
2985 	incl	%ecx
2986 	movl	%eax,%edx
2987 	movl	16(%edi),%eax
2988 	movzbl	%dl,%esi
2989 	movzbl	-128(%ebp,%esi,1),%ebx
2990 	movzbl	%dh,%esi
2991 	xorl	%ebx,%eax
2992 	movzbl	-128(%ebp,%esi,1),%ebx
2993 	shrl	$16,%edx
2994 	shll	$8,%ebx
2995 	movzbl	%dl,%esi
2996 	xorl	%ebx,%eax
2997 	movzbl	-128(%ebp,%esi,1),%ebx
2998 	movzbl	%dh,%esi
2999 	shll	$16,%ebx
3000 	xorl	%ebx,%eax
3001 	movzbl	-128(%ebp,%esi,1),%ebx
3002 	shll	$24,%ebx
3003 	xorl	%ebx,%eax
3004 	movl	%eax,48(%edi)
3005 	xorl	20(%edi),%eax
3006 	movl	%eax,52(%edi)
3007 	xorl	24(%edi),%eax
3008 	movl	%eax,56(%edi)
3009 	xorl	28(%edi),%eax
3010 	movl	%eax,60(%edi)
3011 	addl	$32,%edi
3012 	jmp	L05214loop
3013 L05314break:
3014 	movl	$14,48(%edi)
3015 	xorl	%eax,%eax
3016 	jmp	L045exit
3017 L040badpointer:
3018 	movl	$-1,%eax
3019 L045exit:
3020 	popl	%edi
3021 	popl	%esi
3022 	popl	%ebx
3023 	popl	%ebp
3024 	ret
3025 .globl	_AES_set_encrypt_key
3026 .type	_AES_set_encrypt_key,@function
3027 .align	4
3028 _AES_set_encrypt_key:
3029 L_AES_set_encrypt_key_begin:
3030 	%ifdef __CET__
3031 
3032 .byte	243,15,30,251
3033 	%endif
3034 
3035 	call	__x86_AES_set_encrypt_key
3036 	ret
3037 .globl	_AES_set_decrypt_key
3038 .type	_AES_set_decrypt_key,@function
3039 .align	4
3040 _AES_set_decrypt_key:
3041 L_AES_set_decrypt_key_begin:
3042 	%ifdef __CET__
3043 
3044 .byte	243,15,30,251
3045 	%endif
3046 
3047 	call	__x86_AES_set_encrypt_key
3048 	cmpl	$0,%eax
3049 	je	L054proceed
3050 	ret
3051 L054proceed:
3052 	pushl	%ebp
3053 	pushl	%ebx
3054 	pushl	%esi
3055 	pushl	%edi
3056 	movl	28(%esp),%esi
3057 	movl	240(%esi),%ecx
3058 	leal	(,%ecx,4),%ecx
3059 	leal	(%esi,%ecx,4),%edi
3060 .align	2,0x90
3061 L055invert:
3062 	movl	(%esi),%eax
3063 	movl	4(%esi),%ebx
3064 	movl	(%edi),%ecx
3065 	movl	4(%edi),%edx
3066 	movl	%eax,(%edi)
3067 	movl	%ebx,4(%edi)
3068 	movl	%ecx,(%esi)
3069 	movl	%edx,4(%esi)
3070 	movl	8(%esi),%eax
3071 	movl	12(%esi),%ebx
3072 	movl	8(%edi),%ecx
3073 	movl	12(%edi),%edx
3074 	movl	%eax,8(%edi)
3075 	movl	%ebx,12(%edi)
3076 	movl	%ecx,8(%esi)
3077 	movl	%edx,12(%esi)
3078 	addl	$16,%esi
3079 	subl	$16,%edi
3080 	cmpl	%edi,%esi
3081 	jne	L055invert
3082 	movl	28(%esp),%edi
3083 	movl	240(%edi),%esi
3084 	leal	-2(%esi,%esi,1),%esi
3085 	leal	(%edi,%esi,8),%esi
3086 	movl	%esi,28(%esp)
3087 	movl	16(%edi),%eax
3088 .align	2,0x90
3089 L056permute:
3090 	addl	$16,%edi
3091 	movl	$2155905152,%ebp
3092 	andl	%eax,%ebp
3093 	leal	(%eax,%eax,1),%ebx
3094 	movl	%ebp,%esi
3095 	shrl	$7,%ebp
3096 	subl	%ebp,%esi
3097 	andl	$4278124286,%ebx
3098 	andl	$454761243,%esi
3099 	xorl	%esi,%ebx
3100 	movl	$2155905152,%ebp
3101 	andl	%ebx,%ebp
3102 	leal	(%ebx,%ebx,1),%ecx
3103 	movl	%ebp,%esi
3104 	shrl	$7,%ebp
3105 	subl	%ebp,%esi
3106 	andl	$4278124286,%ecx
3107 	andl	$454761243,%esi
3108 	xorl	%eax,%ebx
3109 	xorl	%esi,%ecx
3110 	movl	$2155905152,%ebp
3111 	andl	%ecx,%ebp
3112 	leal	(%ecx,%ecx,1),%edx
3113 	movl	%ebp,%esi
3114 	shrl	$7,%ebp
3115 	xorl	%eax,%ecx
3116 	subl	%ebp,%esi
3117 	andl	$4278124286,%edx
3118 	andl	$454761243,%esi
3119 	roll	$8,%eax
3120 	xorl	%esi,%edx
3121 	movl	4(%edi),%ebp
3122 	xorl	%ebx,%eax
3123 	xorl	%edx,%ebx
3124 	xorl	%ecx,%eax
3125 	roll	$24,%ebx
3126 	xorl	%edx,%ecx
3127 	xorl	%edx,%eax
3128 	roll	$16,%ecx
3129 	xorl	%ebx,%eax
3130 	roll	$8,%edx
3131 	xorl	%ecx,%eax
3132 	movl	%ebp,%ebx
3133 	xorl	%edx,%eax
3134 	movl	%eax,(%edi)
3135 	movl	$2155905152,%ebp
3136 	andl	%ebx,%ebp
3137 	leal	(%ebx,%ebx,1),%ecx
3138 	movl	%ebp,%esi
3139 	shrl	$7,%ebp
3140 	subl	%ebp,%esi
3141 	andl	$4278124286,%ecx
3142 	andl	$454761243,%esi
3143 	xorl	%esi,%ecx
3144 	movl	$2155905152,%ebp
3145 	andl	%ecx,%ebp
3146 	leal	(%ecx,%ecx,1),%edx
3147 	movl	%ebp,%esi
3148 	shrl	$7,%ebp
3149 	subl	%ebp,%esi
3150 	andl	$4278124286,%edx
3151 	andl	$454761243,%esi
3152 	xorl	%ebx,%ecx
3153 	xorl	%esi,%edx
3154 	movl	$2155905152,%ebp
3155 	andl	%edx,%ebp
3156 	leal	(%edx,%edx,1),%eax
3157 	movl	%ebp,%esi
3158 	shrl	$7,%ebp
3159 	xorl	%ebx,%edx
3160 	subl	%ebp,%esi
3161 	andl	$4278124286,%eax
3162 	andl	$454761243,%esi
3163 	roll	$8,%ebx
3164 	xorl	%esi,%eax
3165 	movl	8(%edi),%ebp
3166 	xorl	%ecx,%ebx
3167 	xorl	%eax,%ecx
3168 	xorl	%edx,%ebx
3169 	roll	$24,%ecx
3170 	xorl	%eax,%edx
3171 	xorl	%eax,%ebx
3172 	roll	$16,%edx
3173 	xorl	%ecx,%ebx
3174 	roll	$8,%eax
3175 	xorl	%edx,%ebx
3176 	movl	%ebp,%ecx
3177 	xorl	%eax,%ebx
3178 	movl	%ebx,4(%edi)
3179 	movl	$2155905152,%ebp
3180 	andl	%ecx,%ebp
3181 	leal	(%ecx,%ecx,1),%edx
3182 	movl	%ebp,%esi
3183 	shrl	$7,%ebp
3184 	subl	%ebp,%esi
3185 	andl	$4278124286,%edx
3186 	andl	$454761243,%esi
3187 	xorl	%esi,%edx
3188 	movl	$2155905152,%ebp
3189 	andl	%edx,%ebp
3190 	leal	(%edx,%edx,1),%eax
3191 	movl	%ebp,%esi
3192 	shrl	$7,%ebp
3193 	subl	%ebp,%esi
3194 	andl	$4278124286,%eax
3195 	andl	$454761243,%esi
3196 	xorl	%ecx,%edx
3197 	xorl	%esi,%eax
3198 	movl	$2155905152,%ebp
3199 	andl	%eax,%ebp
3200 	leal	(%eax,%eax,1),%ebx
3201 	movl	%ebp,%esi
3202 	shrl	$7,%ebp
3203 	xorl	%ecx,%eax
3204 	subl	%ebp,%esi
3205 	andl	$4278124286,%ebx
3206 	andl	$454761243,%esi
3207 	roll	$8,%ecx
3208 	xorl	%esi,%ebx
3209 	movl	12(%edi),%ebp
3210 	xorl	%edx,%ecx
3211 	xorl	%ebx,%edx
3212 	xorl	%eax,%ecx
3213 	roll	$24,%edx
3214 	xorl	%ebx,%eax
3215 	xorl	%ebx,%ecx
3216 	roll	$16,%eax
3217 	xorl	%edx,%ecx
3218 	roll	$8,%ebx
3219 	xorl	%eax,%ecx
3220 	movl	%ebp,%edx
3221 	xorl	%ebx,%ecx
3222 	movl	%ecx,8(%edi)
3223 	movl	$2155905152,%ebp
3224 	andl	%edx,%ebp
3225 	leal	(%edx,%edx,1),%eax
3226 	movl	%ebp,%esi
3227 	shrl	$7,%ebp
3228 	subl	%ebp,%esi
3229 	andl	$4278124286,%eax
3230 	andl	$454761243,%esi
3231 	xorl	%esi,%eax
3232 	movl	$2155905152,%ebp
3233 	andl	%eax,%ebp
3234 	leal	(%eax,%eax,1),%ebx
3235 	movl	%ebp,%esi
3236 	shrl	$7,%ebp
3237 	subl	%ebp,%esi
3238 	andl	$4278124286,%ebx
3239 	andl	$454761243,%esi
3240 	xorl	%edx,%eax
3241 	xorl	%esi,%ebx
3242 	movl	$2155905152,%ebp
3243 	andl	%ebx,%ebp
3244 	leal	(%ebx,%ebx,1),%ecx
3245 	movl	%ebp,%esi
3246 	shrl	$7,%ebp
3247 	xorl	%edx,%ebx
3248 	subl	%ebp,%esi
3249 	andl	$4278124286,%ecx
3250 	andl	$454761243,%esi
3251 	roll	$8,%edx
3252 	xorl	%esi,%ecx
3253 	movl	16(%edi),%ebp
3254 	xorl	%eax,%edx
3255 	xorl	%ecx,%eax
3256 	xorl	%ebx,%edx
3257 	roll	$24,%eax
3258 	xorl	%ecx,%ebx
3259 	xorl	%ecx,%edx
3260 	roll	$16,%ebx
3261 	xorl	%eax,%edx
3262 	roll	$8,%ecx
3263 	xorl	%ebx,%edx
3264 	movl	%ebp,%eax
3265 	xorl	%ecx,%edx
3266 	movl	%edx,12(%edi)
3267 	cmpl	28(%esp),%edi
3268 	jb	L056permute
3269 	xorl	%eax,%eax
3270 	popl	%edi
3271 	popl	%esi
3272 	popl	%ebx
3273 	popl	%ebp
3274 	ret
3275 .byte	65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
3276 .byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
3277 .byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3278 .comm	_OPENSSL_ia32cap_P,16
3279