xref: /freebsd/sys/crypto/openssl/i386/aes-586.S (revision 4b9d6057)
1/* Do not modify. This file is auto-generated from aes-586.pl. */
2#ifdef PIC
3.text
4.type	_x86_AES_encrypt_compact,@function
5.align	16
6_x86_AES_encrypt_compact:
7	#ifdef __CET__
8
9.byte	243,15,30,251
10	#endif
11
12	movl	%edi,20(%esp)
13	xorl	(%edi),%eax
14	xorl	4(%edi),%ebx
15	xorl	8(%edi),%ecx
16	xorl	12(%edi),%edx
17	movl	240(%edi),%esi
18	leal	-2(%esi,%esi,1),%esi
19	leal	(%edi,%esi,8),%esi
20	movl	%esi,24(%esp)
21	movl	-128(%ebp),%edi
22	movl	-96(%ebp),%esi
23	movl	-64(%ebp),%edi
24	movl	-32(%ebp),%esi
25	movl	(%ebp),%edi
26	movl	32(%ebp),%esi
27	movl	64(%ebp),%edi
28	movl	96(%ebp),%esi
29.align	16
30.L000loop:
31	movl	%eax,%esi
32	andl	$255,%esi
33	movzbl	-128(%ebp,%esi,1),%esi
34	movzbl	%bh,%edi
35	movzbl	-128(%ebp,%edi,1),%edi
36	shll	$8,%edi
37	xorl	%edi,%esi
38	movl	%ecx,%edi
39	shrl	$16,%edi
40	andl	$255,%edi
41	movzbl	-128(%ebp,%edi,1),%edi
42	shll	$16,%edi
43	xorl	%edi,%esi
44	movl	%edx,%edi
45	shrl	$24,%edi
46	movzbl	-128(%ebp,%edi,1),%edi
47	shll	$24,%edi
48	xorl	%edi,%esi
49	movl	%esi,4(%esp)
50
51	movl	%ebx,%esi
52	andl	$255,%esi
53	shrl	$16,%ebx
54	movzbl	-128(%ebp,%esi,1),%esi
55	movzbl	%ch,%edi
56	movzbl	-128(%ebp,%edi,1),%edi
57	shll	$8,%edi
58	xorl	%edi,%esi
59	movl	%edx,%edi
60	shrl	$16,%edi
61	andl	$255,%edi
62	movzbl	-128(%ebp,%edi,1),%edi
63	shll	$16,%edi
64	xorl	%edi,%esi
65	movl	%eax,%edi
66	shrl	$24,%edi
67	movzbl	-128(%ebp,%edi,1),%edi
68	shll	$24,%edi
69	xorl	%edi,%esi
70	movl	%esi,8(%esp)
71
72	movl	%ecx,%esi
73	andl	$255,%esi
74	shrl	$24,%ecx
75	movzbl	-128(%ebp,%esi,1),%esi
76	movzbl	%dh,%edi
77	movzbl	-128(%ebp,%edi,1),%edi
78	shll	$8,%edi
79	xorl	%edi,%esi
80	movl	%eax,%edi
81	shrl	$16,%edi
82	andl	$255,%edx
83	andl	$255,%edi
84	movzbl	-128(%ebp,%edi,1),%edi
85	shll	$16,%edi
86	xorl	%edi,%esi
87	movzbl	%bh,%edi
88	movzbl	-128(%ebp,%edi,1),%edi
89	shll	$24,%edi
90	xorl	%edi,%esi
91
92	andl	$255,%edx
93	movzbl	-128(%ebp,%edx,1),%edx
94	movzbl	%ah,%eax
95	movzbl	-128(%ebp,%eax,1),%eax
96	shll	$8,%eax
97	xorl	%eax,%edx
98	movl	4(%esp),%eax
99	andl	$255,%ebx
100	movzbl	-128(%ebp,%ebx,1),%ebx
101	shll	$16,%ebx
102	xorl	%ebx,%edx
103	movl	8(%esp),%ebx
104	movzbl	-128(%ebp,%ecx,1),%ecx
105	shll	$24,%ecx
106	xorl	%ecx,%edx
107	movl	%esi,%ecx
108
109	movl	$2155905152,%ebp
110	andl	%ecx,%ebp
111	leal	(%ecx,%ecx,1),%edi
112	movl	%ebp,%esi
113	shrl	$7,%ebp
114	andl	$4278124286,%edi
115	subl	%ebp,%esi
116	movl	%ecx,%ebp
117	andl	$454761243,%esi
118	rorl	$16,%ebp
119	xorl	%edi,%esi
120	movl	%ecx,%edi
121	xorl	%esi,%ecx
122	rorl	$24,%edi
123	xorl	%ebp,%esi
124	roll	$24,%ecx
125	xorl	%edi,%esi
126	movl	$2155905152,%ebp
127	xorl	%esi,%ecx
128	andl	%edx,%ebp
129	leal	(%edx,%edx,1),%edi
130	movl	%ebp,%esi
131	shrl	$7,%ebp
132	andl	$4278124286,%edi
133	subl	%ebp,%esi
134	movl	%edx,%ebp
135	andl	$454761243,%esi
136	rorl	$16,%ebp
137	xorl	%edi,%esi
138	movl	%edx,%edi
139	xorl	%esi,%edx
140	rorl	$24,%edi
141	xorl	%ebp,%esi
142	roll	$24,%edx
143	xorl	%edi,%esi
144	movl	$2155905152,%ebp
145	xorl	%esi,%edx
146	andl	%eax,%ebp
147	leal	(%eax,%eax,1),%edi
148	movl	%ebp,%esi
149	shrl	$7,%ebp
150	andl	$4278124286,%edi
151	subl	%ebp,%esi
152	movl	%eax,%ebp
153	andl	$454761243,%esi
154	rorl	$16,%ebp
155	xorl	%edi,%esi
156	movl	%eax,%edi
157	xorl	%esi,%eax
158	rorl	$24,%edi
159	xorl	%ebp,%esi
160	roll	$24,%eax
161	xorl	%edi,%esi
162	movl	$2155905152,%ebp
163	xorl	%esi,%eax
164	andl	%ebx,%ebp
165	leal	(%ebx,%ebx,1),%edi
166	movl	%ebp,%esi
167	shrl	$7,%ebp
168	andl	$4278124286,%edi
169	subl	%ebp,%esi
170	movl	%ebx,%ebp
171	andl	$454761243,%esi
172	rorl	$16,%ebp
173	xorl	%edi,%esi
174	movl	%ebx,%edi
175	xorl	%esi,%ebx
176	rorl	$24,%edi
177	xorl	%ebp,%esi
178	roll	$24,%ebx
179	xorl	%edi,%esi
180	xorl	%esi,%ebx
181	movl	20(%esp),%edi
182	movl	28(%esp),%ebp
183	addl	$16,%edi
184	xorl	(%edi),%eax
185	xorl	4(%edi),%ebx
186	xorl	8(%edi),%ecx
187	xorl	12(%edi),%edx
188	cmpl	24(%esp),%edi
189	movl	%edi,20(%esp)
190	jb	.L000loop
191	movl	%eax,%esi
192	andl	$255,%esi
193	movzbl	-128(%ebp,%esi,1),%esi
194	movzbl	%bh,%edi
195	movzbl	-128(%ebp,%edi,1),%edi
196	shll	$8,%edi
197	xorl	%edi,%esi
198	movl	%ecx,%edi
199	shrl	$16,%edi
200	andl	$255,%edi
201	movzbl	-128(%ebp,%edi,1),%edi
202	shll	$16,%edi
203	xorl	%edi,%esi
204	movl	%edx,%edi
205	shrl	$24,%edi
206	movzbl	-128(%ebp,%edi,1),%edi
207	shll	$24,%edi
208	xorl	%edi,%esi
209	movl	%esi,4(%esp)
210
211	movl	%ebx,%esi
212	andl	$255,%esi
213	shrl	$16,%ebx
214	movzbl	-128(%ebp,%esi,1),%esi
215	movzbl	%ch,%edi
216	movzbl	-128(%ebp,%edi,1),%edi
217	shll	$8,%edi
218	xorl	%edi,%esi
219	movl	%edx,%edi
220	shrl	$16,%edi
221	andl	$255,%edi
222	movzbl	-128(%ebp,%edi,1),%edi
223	shll	$16,%edi
224	xorl	%edi,%esi
225	movl	%eax,%edi
226	shrl	$24,%edi
227	movzbl	-128(%ebp,%edi,1),%edi
228	shll	$24,%edi
229	xorl	%edi,%esi
230	movl	%esi,8(%esp)
231
232	movl	%ecx,%esi
233	andl	$255,%esi
234	shrl	$24,%ecx
235	movzbl	-128(%ebp,%esi,1),%esi
236	movzbl	%dh,%edi
237	movzbl	-128(%ebp,%edi,1),%edi
238	shll	$8,%edi
239	xorl	%edi,%esi
240	movl	%eax,%edi
241	shrl	$16,%edi
242	andl	$255,%edx
243	andl	$255,%edi
244	movzbl	-128(%ebp,%edi,1),%edi
245	shll	$16,%edi
246	xorl	%edi,%esi
247	movzbl	%bh,%edi
248	movzbl	-128(%ebp,%edi,1),%edi
249	shll	$24,%edi
250	xorl	%edi,%esi
251
252	movl	20(%esp),%edi
253	andl	$255,%edx
254	movzbl	-128(%ebp,%edx,1),%edx
255	movzbl	%ah,%eax
256	movzbl	-128(%ebp,%eax,1),%eax
257	shll	$8,%eax
258	xorl	%eax,%edx
259	movl	4(%esp),%eax
260	andl	$255,%ebx
261	movzbl	-128(%ebp,%ebx,1),%ebx
262	shll	$16,%ebx
263	xorl	%ebx,%edx
264	movl	8(%esp),%ebx
265	movzbl	-128(%ebp,%ecx,1),%ecx
266	shll	$24,%ecx
267	xorl	%ecx,%edx
268	movl	%esi,%ecx
269
270	xorl	16(%edi),%eax
271	xorl	20(%edi),%ebx
272	xorl	24(%edi),%ecx
273	xorl	28(%edi),%edx
274	ret
275.size	_x86_AES_encrypt_compact,.-_x86_AES_encrypt_compact
276.type	_sse_AES_encrypt_compact,@function
277.align	16
278_sse_AES_encrypt_compact:
279	#ifdef __CET__
280
281.byte	243,15,30,251
282	#endif
283
284	pxor	(%edi),%mm0
285	pxor	8(%edi),%mm4
286	movl	240(%edi),%esi
287	leal	-2(%esi,%esi,1),%esi
288	leal	(%edi,%esi,8),%esi
289	movl	%esi,24(%esp)
290	movl	$454761243,%eax
291	movl	%eax,8(%esp)
292	movl	%eax,12(%esp)
293	movl	-128(%ebp),%eax
294	movl	-96(%ebp),%ebx
295	movl	-64(%ebp),%ecx
296	movl	-32(%ebp),%edx
297	movl	(%ebp),%eax
298	movl	32(%ebp),%ebx
299	movl	64(%ebp),%ecx
300	movl	96(%ebp),%edx
301.align	16
302.L001loop:
303	pshufw	$8,%mm0,%mm1
304	pshufw	$13,%mm4,%mm5
305	movd	%mm1,%eax
306	movd	%mm5,%ebx
307	movl	%edi,20(%esp)
308	movzbl	%al,%esi
309	movzbl	%ah,%edx
310	pshufw	$13,%mm0,%mm2
311	movzbl	-128(%ebp,%esi,1),%ecx
312	movzbl	%bl,%edi
313	movzbl	-128(%ebp,%edx,1),%edx
314	shrl	$16,%eax
315	shll	$8,%edx
316	movzbl	-128(%ebp,%edi,1),%esi
317	movzbl	%bh,%edi
318	shll	$16,%esi
319	pshufw	$8,%mm4,%mm6
320	orl	%esi,%ecx
321	movzbl	-128(%ebp,%edi,1),%esi
322	movzbl	%ah,%edi
323	shll	$24,%esi
324	shrl	$16,%ebx
325	orl	%esi,%edx
326	movzbl	-128(%ebp,%edi,1),%esi
327	movzbl	%bh,%edi
328	shll	$8,%esi
329	orl	%esi,%ecx
330	movzbl	-128(%ebp,%edi,1),%esi
331	movzbl	%al,%edi
332	shll	$24,%esi
333	orl	%esi,%ecx
334	movzbl	-128(%ebp,%edi,1),%esi
335	movzbl	%bl,%edi
336	movd	%mm2,%eax
337	movd	%ecx,%mm0
338	movzbl	-128(%ebp,%edi,1),%ecx
339	movzbl	%ah,%edi
340	shll	$16,%ecx
341	movd	%mm6,%ebx
342	orl	%esi,%ecx
343	movzbl	-128(%ebp,%edi,1),%esi
344	movzbl	%bh,%edi
345	shll	$24,%esi
346	orl	%esi,%ecx
347	movzbl	-128(%ebp,%edi,1),%esi
348	movzbl	%bl,%edi
349	shll	$8,%esi
350	shrl	$16,%ebx
351	orl	%esi,%ecx
352	movzbl	-128(%ebp,%edi,1),%esi
353	movzbl	%al,%edi
354	shrl	$16,%eax
355	movd	%ecx,%mm1
356	movzbl	-128(%ebp,%edi,1),%ecx
357	movzbl	%ah,%edi
358	shll	$16,%ecx
359	andl	$255,%eax
360	orl	%esi,%ecx
361	punpckldq	%mm1,%mm0
362	movzbl	-128(%ebp,%edi,1),%esi
363	movzbl	%bh,%edi
364	shll	$24,%esi
365	andl	$255,%ebx
366	movzbl	-128(%ebp,%eax,1),%eax
367	orl	%esi,%ecx
368	shll	$16,%eax
369	movzbl	-128(%ebp,%edi,1),%esi
370	orl	%eax,%edx
371	shll	$8,%esi
372	movzbl	-128(%ebp,%ebx,1),%ebx
373	orl	%esi,%ecx
374	orl	%ebx,%edx
375	movl	20(%esp),%edi
376	movd	%ecx,%mm4
377	movd	%edx,%mm5
378	punpckldq	%mm5,%mm4
379	addl	$16,%edi
380	cmpl	24(%esp),%edi
381	ja	.L002out
382	movq	8(%esp),%mm2
383	pxor	%mm3,%mm3
384	pxor	%mm7,%mm7
385	movq	%mm0,%mm1
386	movq	%mm4,%mm5
387	pcmpgtb	%mm0,%mm3
388	pcmpgtb	%mm4,%mm7
389	pand	%mm2,%mm3
390	pand	%mm2,%mm7
391	pshufw	$177,%mm0,%mm2
392	pshufw	$177,%mm4,%mm6
393	paddb	%mm0,%mm0
394	paddb	%mm4,%mm4
395	pxor	%mm3,%mm0
396	pxor	%mm7,%mm4
397	pshufw	$177,%mm2,%mm3
398	pshufw	$177,%mm6,%mm7
399	pxor	%mm0,%mm1
400	pxor	%mm4,%mm5
401	pxor	%mm2,%mm0
402	pxor	%mm6,%mm4
403	movq	%mm3,%mm2
404	movq	%mm7,%mm6
405	pslld	$8,%mm3
406	pslld	$8,%mm7
407	psrld	$24,%mm2
408	psrld	$24,%mm6
409	pxor	%mm3,%mm0
410	pxor	%mm7,%mm4
411	pxor	%mm2,%mm0
412	pxor	%mm6,%mm4
413	movq	%mm1,%mm3
414	movq	%mm5,%mm7
415	movq	(%edi),%mm2
416	movq	8(%edi),%mm6
417	psrld	$8,%mm1
418	psrld	$8,%mm5
419	movl	-128(%ebp),%eax
420	pslld	$24,%mm3
421	pslld	$24,%mm7
422	movl	-64(%ebp),%ebx
423	pxor	%mm1,%mm0
424	pxor	%mm5,%mm4
425	movl	(%ebp),%ecx
426	pxor	%mm3,%mm0
427	pxor	%mm7,%mm4
428	movl	64(%ebp),%edx
429	pxor	%mm2,%mm0
430	pxor	%mm6,%mm4
431	jmp	.L001loop
432.align	16
433.L002out:
434	pxor	(%edi),%mm0
435	pxor	8(%edi),%mm4
436	ret
437.size	_sse_AES_encrypt_compact,.-_sse_AES_encrypt_compact
438.type	_x86_AES_encrypt,@function
439.align	16
440_x86_AES_encrypt:
441	#ifdef __CET__
442
443.byte	243,15,30,251
444	#endif
445
446	movl	%edi,20(%esp)
447	xorl	(%edi),%eax
448	xorl	4(%edi),%ebx
449	xorl	8(%edi),%ecx
450	xorl	12(%edi),%edx
451	movl	240(%edi),%esi
452	leal	-2(%esi,%esi,1),%esi
453	leal	(%edi,%esi,8),%esi
454	movl	%esi,24(%esp)
455.align	16
456.L003loop:
457	movl	%eax,%esi
458	andl	$255,%esi
459	movl	(%ebp,%esi,8),%esi
460	movzbl	%bh,%edi
461	xorl	3(%ebp,%edi,8),%esi
462	movl	%ecx,%edi
463	shrl	$16,%edi
464	andl	$255,%edi
465	xorl	2(%ebp,%edi,8),%esi
466	movl	%edx,%edi
467	shrl	$24,%edi
468	xorl	1(%ebp,%edi,8),%esi
469	movl	%esi,4(%esp)
470
471	movl	%ebx,%esi
472	andl	$255,%esi
473	shrl	$16,%ebx
474	movl	(%ebp,%esi,8),%esi
475	movzbl	%ch,%edi
476	xorl	3(%ebp,%edi,8),%esi
477	movl	%edx,%edi
478	shrl	$16,%edi
479	andl	$255,%edi
480	xorl	2(%ebp,%edi,8),%esi
481	movl	%eax,%edi
482	shrl	$24,%edi
483	xorl	1(%ebp,%edi,8),%esi
484	movl	%esi,8(%esp)
485
486	movl	%ecx,%esi
487	andl	$255,%esi
488	shrl	$24,%ecx
489	movl	(%ebp,%esi,8),%esi
490	movzbl	%dh,%edi
491	xorl	3(%ebp,%edi,8),%esi
492	movl	%eax,%edi
493	shrl	$16,%edi
494	andl	$255,%edx
495	andl	$255,%edi
496	xorl	2(%ebp,%edi,8),%esi
497	movzbl	%bh,%edi
498	xorl	1(%ebp,%edi,8),%esi
499
500	movl	20(%esp),%edi
501	movl	(%ebp,%edx,8),%edx
502	movzbl	%ah,%eax
503	xorl	3(%ebp,%eax,8),%edx
504	movl	4(%esp),%eax
505	andl	$255,%ebx
506	xorl	2(%ebp,%ebx,8),%edx
507	movl	8(%esp),%ebx
508	xorl	1(%ebp,%ecx,8),%edx
509	movl	%esi,%ecx
510
511	addl	$16,%edi
512	xorl	(%edi),%eax
513	xorl	4(%edi),%ebx
514	xorl	8(%edi),%ecx
515	xorl	12(%edi),%edx
516	cmpl	24(%esp),%edi
517	movl	%edi,20(%esp)
518	jb	.L003loop
519	movl	%eax,%esi
520	andl	$255,%esi
521	movl	2(%ebp,%esi,8),%esi
522	andl	$255,%esi
523	movzbl	%bh,%edi
524	movl	(%ebp,%edi,8),%edi
525	andl	$65280,%edi
526	xorl	%edi,%esi
527	movl	%ecx,%edi
528	shrl	$16,%edi
529	andl	$255,%edi
530	movl	(%ebp,%edi,8),%edi
531	andl	$16711680,%edi
532	xorl	%edi,%esi
533	movl	%edx,%edi
534	shrl	$24,%edi
535	movl	2(%ebp,%edi,8),%edi
536	andl	$4278190080,%edi
537	xorl	%edi,%esi
538	movl	%esi,4(%esp)
539	movl	%ebx,%esi
540	andl	$255,%esi
541	shrl	$16,%ebx
542	movl	2(%ebp,%esi,8),%esi
543	andl	$255,%esi
544	movzbl	%ch,%edi
545	movl	(%ebp,%edi,8),%edi
546	andl	$65280,%edi
547	xorl	%edi,%esi
548	movl	%edx,%edi
549	shrl	$16,%edi
550	andl	$255,%edi
551	movl	(%ebp,%edi,8),%edi
552	andl	$16711680,%edi
553	xorl	%edi,%esi
554	movl	%eax,%edi
555	shrl	$24,%edi
556	movl	2(%ebp,%edi,8),%edi
557	andl	$4278190080,%edi
558	xorl	%edi,%esi
559	movl	%esi,8(%esp)
560	movl	%ecx,%esi
561	andl	$255,%esi
562	shrl	$24,%ecx
563	movl	2(%ebp,%esi,8),%esi
564	andl	$255,%esi
565	movzbl	%dh,%edi
566	movl	(%ebp,%edi,8),%edi
567	andl	$65280,%edi
568	xorl	%edi,%esi
569	movl	%eax,%edi
570	shrl	$16,%edi
571	andl	$255,%edx
572	andl	$255,%edi
573	movl	(%ebp,%edi,8),%edi
574	andl	$16711680,%edi
575	xorl	%edi,%esi
576	movzbl	%bh,%edi
577	movl	2(%ebp,%edi,8),%edi
578	andl	$4278190080,%edi
579	xorl	%edi,%esi
580	movl	20(%esp),%edi
581	andl	$255,%edx
582	movl	2(%ebp,%edx,8),%edx
583	andl	$255,%edx
584	movzbl	%ah,%eax
585	movl	(%ebp,%eax,8),%eax
586	andl	$65280,%eax
587	xorl	%eax,%edx
588	movl	4(%esp),%eax
589	andl	$255,%ebx
590	movl	(%ebp,%ebx,8),%ebx
591	andl	$16711680,%ebx
592	xorl	%ebx,%edx
593	movl	8(%esp),%ebx
594	movl	2(%ebp,%ecx,8),%ecx
595	andl	$4278190080,%ecx
596	xorl	%ecx,%edx
597	movl	%esi,%ecx
598	addl	$16,%edi
599	xorl	(%edi),%eax
600	xorl	4(%edi),%ebx
601	xorl	8(%edi),%ecx
602	xorl	12(%edi),%edx
603	ret
604.align	64
605.LAES_Te:
606.long	2774754246,2774754246
607.long	2222750968,2222750968
608.long	2574743534,2574743534
609.long	2373680118,2373680118
610.long	234025727,234025727
611.long	3177933782,3177933782
612.long	2976870366,2976870366
613.long	1422247313,1422247313
614.long	1345335392,1345335392
615.long	50397442,50397442
616.long	2842126286,2842126286
617.long	2099981142,2099981142
618.long	436141799,436141799
619.long	1658312629,1658312629
620.long	3870010189,3870010189
621.long	2591454956,2591454956
622.long	1170918031,1170918031
623.long	2642575903,2642575903
624.long	1086966153,1086966153
625.long	2273148410,2273148410
626.long	368769775,368769775
627.long	3948501426,3948501426
628.long	3376891790,3376891790
629.long	200339707,200339707
630.long	3970805057,3970805057
631.long	1742001331,1742001331
632.long	4255294047,4255294047
633.long	3937382213,3937382213
634.long	3214711843,3214711843
635.long	4154762323,4154762323
636.long	2524082916,2524082916
637.long	1539358875,1539358875
638.long	3266819957,3266819957
639.long	486407649,486407649
640.long	2928907069,2928907069
641.long	1780885068,1780885068
642.long	1513502316,1513502316
643.long	1094664062,1094664062
644.long	49805301,49805301
645.long	1338821763,1338821763
646.long	1546925160,1546925160
647.long	4104496465,4104496465
648.long	887481809,887481809
649.long	150073849,150073849
650.long	2473685474,2473685474
651.long	1943591083,1943591083
652.long	1395732834,1395732834
653.long	1058346282,1058346282
654.long	201589768,201589768
655.long	1388824469,1388824469
656.long	1696801606,1696801606
657.long	1589887901,1589887901
658.long	672667696,672667696
659.long	2711000631,2711000631
660.long	251987210,251987210
661.long	3046808111,3046808111
662.long	151455502,151455502
663.long	907153956,907153956
664.long	2608889883,2608889883
665.long	1038279391,1038279391
666.long	652995533,652995533
667.long	1764173646,1764173646
668.long	3451040383,3451040383
669.long	2675275242,2675275242
670.long	453576978,453576978
671.long	2659418909,2659418909
672.long	1949051992,1949051992
673.long	773462580,773462580
674.long	756751158,756751158
675.long	2993581788,2993581788
676.long	3998898868,3998898868
677.long	4221608027,4221608027
678.long	4132590244,4132590244
679.long	1295727478,1295727478
680.long	1641469623,1641469623
681.long	3467883389,3467883389
682.long	2066295122,2066295122
683.long	1055122397,1055122397
684.long	1898917726,1898917726
685.long	2542044179,2542044179
686.long	4115878822,4115878822
687.long	1758581177,1758581177
688.long	0,0
689.long	753790401,753790401
690.long	1612718144,1612718144
691.long	536673507,536673507
692.long	3367088505,3367088505
693.long	3982187446,3982187446
694.long	3194645204,3194645204
695.long	1187761037,1187761037
696.long	3653156455,3653156455
697.long	1262041458,1262041458
698.long	3729410708,3729410708
699.long	3561770136,3561770136
700.long	3898103984,3898103984
701.long	1255133061,1255133061
702.long	1808847035,1808847035
703.long	720367557,720367557
704.long	3853167183,3853167183
705.long	385612781,385612781
706.long	3309519750,3309519750
707.long	3612167578,3612167578
708.long	1429418854,1429418854
709.long	2491778321,2491778321
710.long	3477423498,3477423498
711.long	284817897,284817897
712.long	100794884,100794884
713.long	2172616702,2172616702
714.long	4031795360,4031795360
715.long	1144798328,1144798328
716.long	3131023141,3131023141
717.long	3819481163,3819481163
718.long	4082192802,4082192802
719.long	4272137053,4272137053
720.long	3225436288,3225436288
721.long	2324664069,2324664069
722.long	2912064063,2912064063
723.long	3164445985,3164445985
724.long	1211644016,1211644016
725.long	83228145,83228145
726.long	3753688163,3753688163
727.long	3249976951,3249976951
728.long	1977277103,1977277103
729.long	1663115586,1663115586
730.long	806359072,806359072
731.long	452984805,452984805
732.long	250868733,250868733
733.long	1842533055,1842533055
734.long	1288555905,1288555905
735.long	336333848,336333848
736.long	890442534,890442534
737.long	804056259,804056259
738.long	3781124030,3781124030
739.long	2727843637,2727843637
740.long	3427026056,3427026056
741.long	957814574,957814574
742.long	1472513171,1472513171
743.long	4071073621,4071073621
744.long	2189328124,2189328124
745.long	1195195770,1195195770
746.long	2892260552,2892260552
747.long	3881655738,3881655738
748.long	723065138,723065138
749.long	2507371494,2507371494
750.long	2690670784,2690670784
751.long	2558624025,2558624025
752.long	3511635870,3511635870
753.long	2145180835,2145180835
754.long	1713513028,1713513028
755.long	2116692564,2116692564
756.long	2878378043,2878378043
757.long	2206763019,2206763019
758.long	3393603212,3393603212
759.long	703524551,703524551
760.long	3552098411,3552098411
761.long	1007948840,1007948840
762.long	2044649127,2044649127
763.long	3797835452,3797835452
764.long	487262998,487262998
765.long	1994120109,1994120109
766.long	1004593371,1004593371
767.long	1446130276,1446130276
768.long	1312438900,1312438900
769.long	503974420,503974420
770.long	3679013266,3679013266
771.long	168166924,168166924
772.long	1814307912,1814307912
773.long	3831258296,3831258296
774.long	1573044895,1573044895
775.long	1859376061,1859376061
776.long	4021070915,4021070915
777.long	2791465668,2791465668
778.long	2828112185,2828112185
779.long	2761266481,2761266481
780.long	937747667,937747667
781.long	2339994098,2339994098
782.long	854058965,854058965
783.long	1137232011,1137232011
784.long	1496790894,1496790894
785.long	3077402074,3077402074
786.long	2358086913,2358086913
787.long	1691735473,1691735473
788.long	3528347292,3528347292
789.long	3769215305,3769215305
790.long	3027004632,3027004632
791.long	4199962284,4199962284
792.long	133494003,133494003
793.long	636152527,636152527
794.long	2942657994,2942657994
795.long	2390391540,2390391540
796.long	3920539207,3920539207
797.long	403179536,403179536
798.long	3585784431,3585784431
799.long	2289596656,2289596656
800.long	1864705354,1864705354
801.long	1915629148,1915629148
802.long	605822008,605822008
803.long	4054230615,4054230615
804.long	3350508659,3350508659
805.long	1371981463,1371981463
806.long	602466507,602466507
807.long	2094914977,2094914977
808.long	2624877800,2624877800
809.long	555687742,555687742
810.long	3712699286,3712699286
811.long	3703422305,3703422305
812.long	2257292045,2257292045
813.long	2240449039,2240449039
814.long	2423288032,2423288032
815.long	1111375484,1111375484
816.long	3300242801,3300242801
817.long	2858837708,2858837708
818.long	3628615824,3628615824
819.long	84083462,84083462
820.long	32962295,32962295
821.long	302911004,302911004
822.long	2741068226,2741068226
823.long	1597322602,1597322602
824.long	4183250862,4183250862
825.long	3501832553,3501832553
826.long	2441512471,2441512471
827.long	1489093017,1489093017
828.long	656219450,656219450
829.long	3114180135,3114180135
830.long	954327513,954327513
831.long	335083755,335083755
832.long	3013122091,3013122091
833.long	856756514,856756514
834.long	3144247762,3144247762
835.long	1893325225,1893325225
836.long	2307821063,2307821063
837.long	2811532339,2811532339
838.long	3063651117,3063651117
839.long	572399164,572399164
840.long	2458355477,2458355477
841.long	552200649,552200649
842.long	1238290055,1238290055
843.long	4283782570,4283782570
844.long	2015897680,2015897680
845.long	2061492133,2061492133
846.long	2408352771,2408352771
847.long	4171342169,4171342169
848.long	2156497161,2156497161
849.long	386731290,386731290
850.long	3669999461,3669999461
851.long	837215959,837215959
852.long	3326231172,3326231172
853.long	3093850320,3093850320
854.long	3275833730,3275833730
855.long	2962856233,2962856233
856.long	1999449434,1999449434
857.long	286199582,286199582
858.long	3417354363,3417354363
859.long	4233385128,4233385128
860.long	3602627437,3602627437
861.long	974525996,974525996
862.byte	99,124,119,123,242,107,111,197
863.byte	48,1,103,43,254,215,171,118
864.byte	202,130,201,125,250,89,71,240
865.byte	173,212,162,175,156,164,114,192
866.byte	183,253,147,38,54,63,247,204
867.byte	52,165,229,241,113,216,49,21
868.byte	4,199,35,195,24,150,5,154
869.byte	7,18,128,226,235,39,178,117
870.byte	9,131,44,26,27,110,90,160
871.byte	82,59,214,179,41,227,47,132
872.byte	83,209,0,237,32,252,177,91
873.byte	106,203,190,57,74,76,88,207
874.byte	208,239,170,251,67,77,51,133
875.byte	69,249,2,127,80,60,159,168
876.byte	81,163,64,143,146,157,56,245
877.byte	188,182,218,33,16,255,243,210
878.byte	205,12,19,236,95,151,68,23
879.byte	196,167,126,61,100,93,25,115
880.byte	96,129,79,220,34,42,144,136
881.byte	70,238,184,20,222,94,11,219
882.byte	224,50,58,10,73,6,36,92
883.byte	194,211,172,98,145,149,228,121
884.byte	231,200,55,109,141,213,78,169
885.byte	108,86,244,234,101,122,174,8
886.byte	186,120,37,46,28,166,180,198
887.byte	232,221,116,31,75,189,139,138
888.byte	112,62,181,102,72,3,246,14
889.byte	97,53,87,185,134,193,29,158
890.byte	225,248,152,17,105,217,142,148
891.byte	155,30,135,233,206,85,40,223
892.byte	140,161,137,13,191,230,66,104
893.byte	65,153,45,15,176,84,187,22
894.byte	99,124,119,123,242,107,111,197
895.byte	48,1,103,43,254,215,171,118
896.byte	202,130,201,125,250,89,71,240
897.byte	173,212,162,175,156,164,114,192
898.byte	183,253,147,38,54,63,247,204
899.byte	52,165,229,241,113,216,49,21
900.byte	4,199,35,195,24,150,5,154
901.byte	7,18,128,226,235,39,178,117
902.byte	9,131,44,26,27,110,90,160
903.byte	82,59,214,179,41,227,47,132
904.byte	83,209,0,237,32,252,177,91
905.byte	106,203,190,57,74,76,88,207
906.byte	208,239,170,251,67,77,51,133
907.byte	69,249,2,127,80,60,159,168
908.byte	81,163,64,143,146,157,56,245
909.byte	188,182,218,33,16,255,243,210
910.byte	205,12,19,236,95,151,68,23
911.byte	196,167,126,61,100,93,25,115
912.byte	96,129,79,220,34,42,144,136
913.byte	70,238,184,20,222,94,11,219
914.byte	224,50,58,10,73,6,36,92
915.byte	194,211,172,98,145,149,228,121
916.byte	231,200,55,109,141,213,78,169
917.byte	108,86,244,234,101,122,174,8
918.byte	186,120,37,46,28,166,180,198
919.byte	232,221,116,31,75,189,139,138
920.byte	112,62,181,102,72,3,246,14
921.byte	97,53,87,185,134,193,29,158
922.byte	225,248,152,17,105,217,142,148
923.byte	155,30,135,233,206,85,40,223
924.byte	140,161,137,13,191,230,66,104
925.byte	65,153,45,15,176,84,187,22
926.byte	99,124,119,123,242,107,111,197
927.byte	48,1,103,43,254,215,171,118
928.byte	202,130,201,125,250,89,71,240
929.byte	173,212,162,175,156,164,114,192
930.byte	183,253,147,38,54,63,247,204
931.byte	52,165,229,241,113,216,49,21
932.byte	4,199,35,195,24,150,5,154
933.byte	7,18,128,226,235,39,178,117
934.byte	9,131,44,26,27,110,90,160
935.byte	82,59,214,179,41,227,47,132
936.byte	83,209,0,237,32,252,177,91
937.byte	106,203,190,57,74,76,88,207
938.byte	208,239,170,251,67,77,51,133
939.byte	69,249,2,127,80,60,159,168
940.byte	81,163,64,143,146,157,56,245
941.byte	188,182,218,33,16,255,243,210
942.byte	205,12,19,236,95,151,68,23
943.byte	196,167,126,61,100,93,25,115
944.byte	96,129,79,220,34,42,144,136
945.byte	70,238,184,20,222,94,11,219
946.byte	224,50,58,10,73,6,36,92
947.byte	194,211,172,98,145,149,228,121
948.byte	231,200,55,109,141,213,78,169
949.byte	108,86,244,234,101,122,174,8
950.byte	186,120,37,46,28,166,180,198
951.byte	232,221,116,31,75,189,139,138
952.byte	112,62,181,102,72,3,246,14
953.byte	97,53,87,185,134,193,29,158
954.byte	225,248,152,17,105,217,142,148
955.byte	155,30,135,233,206,85,40,223
956.byte	140,161,137,13,191,230,66,104
957.byte	65,153,45,15,176,84,187,22
958.byte	99,124,119,123,242,107,111,197
959.byte	48,1,103,43,254,215,171,118
960.byte	202,130,201,125,250,89,71,240
961.byte	173,212,162,175,156,164,114,192
962.byte	183,253,147,38,54,63,247,204
963.byte	52,165,229,241,113,216,49,21
964.byte	4,199,35,195,24,150,5,154
965.byte	7,18,128,226,235,39,178,117
966.byte	9,131,44,26,27,110,90,160
967.byte	82,59,214,179,41,227,47,132
968.byte	83,209,0,237,32,252,177,91
969.byte	106,203,190,57,74,76,88,207
970.byte	208,239,170,251,67,77,51,133
971.byte	69,249,2,127,80,60,159,168
972.byte	81,163,64,143,146,157,56,245
973.byte	188,182,218,33,16,255,243,210
974.byte	205,12,19,236,95,151,68,23
975.byte	196,167,126,61,100,93,25,115
976.byte	96,129,79,220,34,42,144,136
977.byte	70,238,184,20,222,94,11,219
978.byte	224,50,58,10,73,6,36,92
979.byte	194,211,172,98,145,149,228,121
980.byte	231,200,55,109,141,213,78,169
981.byte	108,86,244,234,101,122,174,8
982.byte	186,120,37,46,28,166,180,198
983.byte	232,221,116,31,75,189,139,138
984.byte	112,62,181,102,72,3,246,14
985.byte	97,53,87,185,134,193,29,158
986.byte	225,248,152,17,105,217,142,148
987.byte	155,30,135,233,206,85,40,223
988.byte	140,161,137,13,191,230,66,104
989.byte	65,153,45,15,176,84,187,22
990.long	1,2,4,8
991.long	16,32,64,128
992.long	27,54,0,0
993.long	0,0,0,0
994.size	_x86_AES_encrypt,.-_x86_AES_encrypt
995.globl	AES_encrypt
996.type	AES_encrypt,@function
997.align	16
998AES_encrypt:
999.L_AES_encrypt_begin:
1000	#ifdef __CET__
1001
1002.byte	243,15,30,251
1003	#endif
1004
1005	pushl	%ebp
1006	pushl	%ebx
1007	pushl	%esi
1008	pushl	%edi
1009	movl	20(%esp),%esi
1010	movl	28(%esp),%edi
1011	movl	%esp,%eax
1012	subl	$36,%esp
1013	andl	$-64,%esp
1014	leal	-127(%edi),%ebx
1015	subl	%esp,%ebx
1016	negl	%ebx
1017	andl	$960,%ebx
1018	subl	%ebx,%esp
1019	addl	$4,%esp
1020	movl	%eax,28(%esp)
1021	call	.L004pic_point
1022.L004pic_point:
1023	popl	%ebp
1024	leal	OPENSSL_ia32cap_P-.L004pic_point(%ebp),%eax
1025	leal	.LAES_Te-.L004pic_point(%ebp),%ebp
1026	leal	764(%esp),%ebx
1027	subl	%ebp,%ebx
1028	andl	$768,%ebx
1029	leal	2176(%ebp,%ebx,1),%ebp
1030	btl	$25,(%eax)
1031	jnc	.L005x86
1032	movq	(%esi),%mm0
1033	movq	8(%esi),%mm4
1034	call	_sse_AES_encrypt_compact
1035	movl	28(%esp),%esp
1036	movl	24(%esp),%esi
1037	movq	%mm0,(%esi)
1038	movq	%mm4,8(%esi)
1039	emms
1040	popl	%edi
1041	popl	%esi
1042	popl	%ebx
1043	popl	%ebp
1044	ret
1045.align	16
1046.L005x86:
1047	movl	%ebp,24(%esp)
1048	movl	(%esi),%eax
1049	movl	4(%esi),%ebx
1050	movl	8(%esi),%ecx
1051	movl	12(%esi),%edx
1052	call	_x86_AES_encrypt_compact
1053	movl	28(%esp),%esp
1054	movl	24(%esp),%esi
1055	movl	%eax,(%esi)
1056	movl	%ebx,4(%esi)
1057	movl	%ecx,8(%esi)
1058	movl	%edx,12(%esi)
1059	popl	%edi
1060	popl	%esi
1061	popl	%ebx
1062	popl	%ebp
1063	ret
1064.size	AES_encrypt,.-.L_AES_encrypt_begin
1065.type	_x86_AES_decrypt_compact,@function
1066.align	16
1067_x86_AES_decrypt_compact:
1068	#ifdef __CET__
1069
1070.byte	243,15,30,251
1071	#endif
1072
1073	movl	%edi,20(%esp)
1074	xorl	(%edi),%eax
1075	xorl	4(%edi),%ebx
1076	xorl	8(%edi),%ecx
1077	xorl	12(%edi),%edx
1078	movl	240(%edi),%esi
1079	leal	-2(%esi,%esi,1),%esi
1080	leal	(%edi,%esi,8),%esi
1081	movl	%esi,24(%esp)
1082	movl	-128(%ebp),%edi
1083	movl	-96(%ebp),%esi
1084	movl	-64(%ebp),%edi
1085	movl	-32(%ebp),%esi
1086	movl	(%ebp),%edi
1087	movl	32(%ebp),%esi
1088	movl	64(%ebp),%edi
1089	movl	96(%ebp),%esi
1090.align	16
1091.L006loop:
1092	movl	%eax,%esi
1093	andl	$255,%esi
1094	movzbl	-128(%ebp,%esi,1),%esi
1095	movzbl	%dh,%edi
1096	movzbl	-128(%ebp,%edi,1),%edi
1097	shll	$8,%edi
1098	xorl	%edi,%esi
1099	movl	%ecx,%edi
1100	shrl	$16,%edi
1101	andl	$255,%edi
1102	movzbl	-128(%ebp,%edi,1),%edi
1103	shll	$16,%edi
1104	xorl	%edi,%esi
1105	movl	%ebx,%edi
1106	shrl	$24,%edi
1107	movzbl	-128(%ebp,%edi,1),%edi
1108	shll	$24,%edi
1109	xorl	%edi,%esi
1110	movl	%esi,4(%esp)
1111	movl	%ebx,%esi
1112	andl	$255,%esi
1113	movzbl	-128(%ebp,%esi,1),%esi
1114	movzbl	%ah,%edi
1115	movzbl	-128(%ebp,%edi,1),%edi
1116	shll	$8,%edi
1117	xorl	%edi,%esi
1118	movl	%edx,%edi
1119	shrl	$16,%edi
1120	andl	$255,%edi
1121	movzbl	-128(%ebp,%edi,1),%edi
1122	shll	$16,%edi
1123	xorl	%edi,%esi
1124	movl	%ecx,%edi
1125	shrl	$24,%edi
1126	movzbl	-128(%ebp,%edi,1),%edi
1127	shll	$24,%edi
1128	xorl	%edi,%esi
1129	movl	%esi,8(%esp)
1130	movl	%ecx,%esi
1131	andl	$255,%esi
1132	movzbl	-128(%ebp,%esi,1),%esi
1133	movzbl	%bh,%edi
1134	movzbl	-128(%ebp,%edi,1),%edi
1135	shll	$8,%edi
1136	xorl	%edi,%esi
1137	movl	%eax,%edi
1138	shrl	$16,%edi
1139	andl	$255,%edi
1140	movzbl	-128(%ebp,%edi,1),%edi
1141	shll	$16,%edi
1142	xorl	%edi,%esi
1143	movl	%edx,%edi
1144	shrl	$24,%edi
1145	movzbl	-128(%ebp,%edi,1),%edi
1146	shll	$24,%edi
1147	xorl	%edi,%esi
1148	andl	$255,%edx
1149	movzbl	-128(%ebp,%edx,1),%edx
1150	movzbl	%ch,%ecx
1151	movzbl	-128(%ebp,%ecx,1),%ecx
1152	shll	$8,%ecx
1153	xorl	%ecx,%edx
1154	movl	%esi,%ecx
1155	shrl	$16,%ebx
1156	andl	$255,%ebx
1157	movzbl	-128(%ebp,%ebx,1),%ebx
1158	shll	$16,%ebx
1159	xorl	%ebx,%edx
1160	shrl	$24,%eax
1161	movzbl	-128(%ebp,%eax,1),%eax
1162	shll	$24,%eax
1163	xorl	%eax,%edx
1164	movl	$2155905152,%edi
1165	andl	%ecx,%edi
1166	movl	%edi,%esi
1167	shrl	$7,%edi
1168	leal	(%ecx,%ecx,1),%eax
1169	subl	%edi,%esi
1170	andl	$4278124286,%eax
1171	andl	$454761243,%esi
1172	xorl	%esi,%eax
1173	movl	$2155905152,%edi
1174	andl	%eax,%edi
1175	movl	%edi,%esi
1176	shrl	$7,%edi
1177	leal	(%eax,%eax,1),%ebx
1178	subl	%edi,%esi
1179	andl	$4278124286,%ebx
1180	andl	$454761243,%esi
1181	xorl	%ecx,%eax
1182	xorl	%esi,%ebx
1183	movl	$2155905152,%edi
1184	andl	%ebx,%edi
1185	movl	%edi,%esi
1186	shrl	$7,%edi
1187	leal	(%ebx,%ebx,1),%ebp
1188	subl	%edi,%esi
1189	andl	$4278124286,%ebp
1190	andl	$454761243,%esi
1191	xorl	%ecx,%ebx
1192	roll	$8,%ecx
1193	xorl	%esi,%ebp
1194	xorl	%eax,%ecx
1195	xorl	%ebp,%eax
1196	xorl	%ebx,%ecx
1197	xorl	%ebp,%ebx
1198	roll	$24,%eax
1199	xorl	%ebp,%ecx
1200	roll	$16,%ebx
1201	xorl	%eax,%ecx
1202	roll	$8,%ebp
1203	xorl	%ebx,%ecx
1204	movl	4(%esp),%eax
1205	xorl	%ebp,%ecx
1206	movl	%ecx,12(%esp)
1207	movl	$2155905152,%edi
1208	andl	%edx,%edi
1209	movl	%edi,%esi
1210	shrl	$7,%edi
1211	leal	(%edx,%edx,1),%ebx
1212	subl	%edi,%esi
1213	andl	$4278124286,%ebx
1214	andl	$454761243,%esi
1215	xorl	%esi,%ebx
1216	movl	$2155905152,%edi
1217	andl	%ebx,%edi
1218	movl	%edi,%esi
1219	shrl	$7,%edi
1220	leal	(%ebx,%ebx,1),%ecx
1221	subl	%edi,%esi
1222	andl	$4278124286,%ecx
1223	andl	$454761243,%esi
1224	xorl	%edx,%ebx
1225	xorl	%esi,%ecx
1226	movl	$2155905152,%edi
1227	andl	%ecx,%edi
1228	movl	%edi,%esi
1229	shrl	$7,%edi
1230	leal	(%ecx,%ecx,1),%ebp
1231	subl	%edi,%esi
1232	andl	$4278124286,%ebp
1233	andl	$454761243,%esi
1234	xorl	%edx,%ecx
1235	roll	$8,%edx
1236	xorl	%esi,%ebp
1237	xorl	%ebx,%edx
1238	xorl	%ebp,%ebx
1239	xorl	%ecx,%edx
1240	xorl	%ebp,%ecx
1241	roll	$24,%ebx
1242	xorl	%ebp,%edx
1243	roll	$16,%ecx
1244	xorl	%ebx,%edx
1245	roll	$8,%ebp
1246	xorl	%ecx,%edx
1247	movl	8(%esp),%ebx
1248	xorl	%ebp,%edx
1249	movl	%edx,16(%esp)
1250	movl	$2155905152,%edi
1251	andl	%eax,%edi
1252	movl	%edi,%esi
1253	shrl	$7,%edi
1254	leal	(%eax,%eax,1),%ecx
1255	subl	%edi,%esi
1256	andl	$4278124286,%ecx
1257	andl	$454761243,%esi
1258	xorl	%esi,%ecx
1259	movl	$2155905152,%edi
1260	andl	%ecx,%edi
1261	movl	%edi,%esi
1262	shrl	$7,%edi
1263	leal	(%ecx,%ecx,1),%edx
1264	subl	%edi,%esi
1265	andl	$4278124286,%edx
1266	andl	$454761243,%esi
1267	xorl	%eax,%ecx
1268	xorl	%esi,%edx
1269	movl	$2155905152,%edi
1270	andl	%edx,%edi
1271	movl	%edi,%esi
1272	shrl	$7,%edi
1273	leal	(%edx,%edx,1),%ebp
1274	subl	%edi,%esi
1275	andl	$4278124286,%ebp
1276	andl	$454761243,%esi
1277	xorl	%eax,%edx
1278	roll	$8,%eax
1279	xorl	%esi,%ebp
1280	xorl	%ecx,%eax
1281	xorl	%ebp,%ecx
1282	xorl	%edx,%eax
1283	xorl	%ebp,%edx
1284	roll	$24,%ecx
1285	xorl	%ebp,%eax
1286	roll	$16,%edx
1287	xorl	%ecx,%eax
1288	roll	$8,%ebp
1289	xorl	%edx,%eax
1290	xorl	%ebp,%eax
1291	movl	$2155905152,%edi
1292	andl	%ebx,%edi
1293	movl	%edi,%esi
1294	shrl	$7,%edi
1295	leal	(%ebx,%ebx,1),%ecx
1296	subl	%edi,%esi
1297	andl	$4278124286,%ecx
1298	andl	$454761243,%esi
1299	xorl	%esi,%ecx
1300	movl	$2155905152,%edi
1301	andl	%ecx,%edi
1302	movl	%edi,%esi
1303	shrl	$7,%edi
1304	leal	(%ecx,%ecx,1),%edx
1305	subl	%edi,%esi
1306	andl	$4278124286,%edx
1307	andl	$454761243,%esi
1308	xorl	%ebx,%ecx
1309	xorl	%esi,%edx
1310	movl	$2155905152,%edi
1311	andl	%edx,%edi
1312	movl	%edi,%esi
1313	shrl	$7,%edi
1314	leal	(%edx,%edx,1),%ebp
1315	subl	%edi,%esi
1316	andl	$4278124286,%ebp
1317	andl	$454761243,%esi
1318	xorl	%ebx,%edx
1319	roll	$8,%ebx
1320	xorl	%esi,%ebp
1321	xorl	%ecx,%ebx
1322	xorl	%ebp,%ecx
1323	xorl	%edx,%ebx
1324	xorl	%ebp,%edx
1325	roll	$24,%ecx
1326	xorl	%ebp,%ebx
1327	roll	$16,%edx
1328	xorl	%ecx,%ebx
1329	roll	$8,%ebp
1330	xorl	%edx,%ebx
1331	movl	12(%esp),%ecx
1332	xorl	%ebp,%ebx
1333	movl	16(%esp),%edx
1334	movl	20(%esp),%edi
1335	movl	28(%esp),%ebp
1336	addl	$16,%edi
1337	xorl	(%edi),%eax
1338	xorl	4(%edi),%ebx
1339	xorl	8(%edi),%ecx
1340	xorl	12(%edi),%edx
1341	cmpl	24(%esp),%edi
1342	movl	%edi,20(%esp)
1343	jb	.L006loop
1344	movl	%eax,%esi
1345	andl	$255,%esi
1346	movzbl	-128(%ebp,%esi,1),%esi
1347	movzbl	%dh,%edi
1348	movzbl	-128(%ebp,%edi,1),%edi
1349	shll	$8,%edi
1350	xorl	%edi,%esi
1351	movl	%ecx,%edi
1352	shrl	$16,%edi
1353	andl	$255,%edi
1354	movzbl	-128(%ebp,%edi,1),%edi
1355	shll	$16,%edi
1356	xorl	%edi,%esi
1357	movl	%ebx,%edi
1358	shrl	$24,%edi
1359	movzbl	-128(%ebp,%edi,1),%edi
1360	shll	$24,%edi
1361	xorl	%edi,%esi
1362	movl	%esi,4(%esp)
1363	movl	%ebx,%esi
1364	andl	$255,%esi
1365	movzbl	-128(%ebp,%esi,1),%esi
1366	movzbl	%ah,%edi
1367	movzbl	-128(%ebp,%edi,1),%edi
1368	shll	$8,%edi
1369	xorl	%edi,%esi
1370	movl	%edx,%edi
1371	shrl	$16,%edi
1372	andl	$255,%edi
1373	movzbl	-128(%ebp,%edi,1),%edi
1374	shll	$16,%edi
1375	xorl	%edi,%esi
1376	movl	%ecx,%edi
1377	shrl	$24,%edi
1378	movzbl	-128(%ebp,%edi,1),%edi
1379	shll	$24,%edi
1380	xorl	%edi,%esi
1381	movl	%esi,8(%esp)
1382	movl	%ecx,%esi
1383	andl	$255,%esi
1384	movzbl	-128(%ebp,%esi,1),%esi
1385	movzbl	%bh,%edi
1386	movzbl	-128(%ebp,%edi,1),%edi
1387	shll	$8,%edi
1388	xorl	%edi,%esi
1389	movl	%eax,%edi
1390	shrl	$16,%edi
1391	andl	$255,%edi
1392	movzbl	-128(%ebp,%edi,1),%edi
1393	shll	$16,%edi
1394	xorl	%edi,%esi
1395	movl	%edx,%edi
1396	shrl	$24,%edi
1397	movzbl	-128(%ebp,%edi,1),%edi
1398	shll	$24,%edi
1399	xorl	%edi,%esi
1400	movl	20(%esp),%edi
1401	andl	$255,%edx
1402	movzbl	-128(%ebp,%edx,1),%edx
1403	movzbl	%ch,%ecx
1404	movzbl	-128(%ebp,%ecx,1),%ecx
1405	shll	$8,%ecx
1406	xorl	%ecx,%edx
1407	movl	%esi,%ecx
1408	shrl	$16,%ebx
1409	andl	$255,%ebx
1410	movzbl	-128(%ebp,%ebx,1),%ebx
1411	shll	$16,%ebx
1412	xorl	%ebx,%edx
1413	movl	8(%esp),%ebx
1414	shrl	$24,%eax
1415	movzbl	-128(%ebp,%eax,1),%eax
1416	shll	$24,%eax
1417	xorl	%eax,%edx
1418	movl	4(%esp),%eax
1419	xorl	16(%edi),%eax
1420	xorl	20(%edi),%ebx
1421	xorl	24(%edi),%ecx
1422	xorl	28(%edi),%edx
1423	ret
1424.size	_x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact
1425.type	_sse_AES_decrypt_compact,@function
1426.align	16
1427_sse_AES_decrypt_compact:
1428	#ifdef __CET__
1429
1430.byte	243,15,30,251
1431	#endif
1432
1433	pxor	(%edi),%mm0
1434	pxor	8(%edi),%mm4
1435	movl	240(%edi),%esi
1436	leal	-2(%esi,%esi,1),%esi
1437	leal	(%edi,%esi,8),%esi
1438	movl	%esi,24(%esp)
1439	movl	$454761243,%eax
1440	movl	%eax,8(%esp)
1441	movl	%eax,12(%esp)
1442	movl	-128(%ebp),%eax
1443	movl	-96(%ebp),%ebx
1444	movl	-64(%ebp),%ecx
1445	movl	-32(%ebp),%edx
1446	movl	(%ebp),%eax
1447	movl	32(%ebp),%ebx
1448	movl	64(%ebp),%ecx
1449	movl	96(%ebp),%edx
1450.align	16
1451.L007loop:
1452	pshufw	$12,%mm0,%mm1
1453	pshufw	$9,%mm4,%mm5
1454	movd	%mm1,%eax
1455	movd	%mm5,%ebx
1456	movl	%edi,20(%esp)
1457	movzbl	%al,%esi
1458	movzbl	%ah,%edx
1459	pshufw	$6,%mm0,%mm2
1460	movzbl	-128(%ebp,%esi,1),%ecx
1461	movzbl	%bl,%edi
1462	movzbl	-128(%ebp,%edx,1),%edx
1463	shrl	$16,%eax
1464	shll	$8,%edx
1465	movzbl	-128(%ebp,%edi,1),%esi
1466	movzbl	%bh,%edi
1467	shll	$16,%esi
1468	pshufw	$3,%mm4,%mm6
1469	orl	%esi,%ecx
1470	movzbl	-128(%ebp,%edi,1),%esi
1471	movzbl	%ah,%edi
1472	shll	$24,%esi
1473	shrl	$16,%ebx
1474	orl	%esi,%edx
1475	movzbl	-128(%ebp,%edi,1),%esi
1476	movzbl	%bh,%edi
1477	shll	$24,%esi
1478	orl	%esi,%ecx
1479	movzbl	-128(%ebp,%edi,1),%esi
1480	movzbl	%al,%edi
1481	shll	$8,%esi
1482	movd	%mm2,%eax
1483	orl	%esi,%ecx
1484	movzbl	-128(%ebp,%edi,1),%esi
1485	movzbl	%bl,%edi
1486	shll	$16,%esi
1487	movd	%mm6,%ebx
1488	movd	%ecx,%mm0
1489	movzbl	-128(%ebp,%edi,1),%ecx
1490	movzbl	%al,%edi
1491	orl	%esi,%ecx
1492	movzbl	-128(%ebp,%edi,1),%esi
1493	movzbl	%bl,%edi
1494	orl	%esi,%edx
1495	movzbl	-128(%ebp,%edi,1),%esi
1496	movzbl	%ah,%edi
1497	shll	$16,%esi
1498	shrl	$16,%eax
1499	orl	%esi,%edx
1500	movzbl	-128(%ebp,%edi,1),%esi
1501	movzbl	%bh,%edi
1502	shrl	$16,%ebx
1503	shll	$8,%esi
1504	movd	%edx,%mm1
1505	movzbl	-128(%ebp,%edi,1),%edx
1506	movzbl	%bh,%edi
1507	shll	$24,%edx
1508	andl	$255,%ebx
1509	orl	%esi,%edx
1510	punpckldq	%mm1,%mm0
1511	movzbl	-128(%ebp,%edi,1),%esi
1512	movzbl	%al,%edi
1513	shll	$8,%esi
1514	movzbl	%ah,%eax
1515	movzbl	-128(%ebp,%ebx,1),%ebx
1516	orl	%esi,%ecx
1517	movzbl	-128(%ebp,%edi,1),%esi
1518	orl	%ebx,%edx
1519	shll	$16,%esi
1520	movzbl	-128(%ebp,%eax,1),%eax
1521	orl	%esi,%edx
1522	shll	$24,%eax
1523	orl	%eax,%ecx
1524	movl	20(%esp),%edi
1525	movd	%edx,%mm4
1526	movd	%ecx,%mm5
1527	punpckldq	%mm5,%mm4
1528	addl	$16,%edi
1529	cmpl	24(%esp),%edi
1530	ja	.L008out
1531	movq	%mm0,%mm3
1532	movq	%mm4,%mm7
1533	pshufw	$228,%mm0,%mm2
1534	pshufw	$228,%mm4,%mm6
1535	movq	%mm0,%mm1
1536	movq	%mm4,%mm5
1537	pshufw	$177,%mm0,%mm0
1538	pshufw	$177,%mm4,%mm4
1539	pslld	$8,%mm2
1540	pslld	$8,%mm6
1541	psrld	$8,%mm3
1542	psrld	$8,%mm7
1543	pxor	%mm2,%mm0
1544	pxor	%mm6,%mm4
1545	pxor	%mm3,%mm0
1546	pxor	%mm7,%mm4
1547	pslld	$16,%mm2
1548	pslld	$16,%mm6
1549	psrld	$16,%mm3
1550	psrld	$16,%mm7
1551	pxor	%mm2,%mm0
1552	pxor	%mm6,%mm4
1553	pxor	%mm3,%mm0
1554	pxor	%mm7,%mm4
1555	movq	8(%esp),%mm3
1556	pxor	%mm2,%mm2
1557	pxor	%mm6,%mm6
1558	pcmpgtb	%mm1,%mm2
1559	pcmpgtb	%mm5,%mm6
1560	pand	%mm3,%mm2
1561	pand	%mm3,%mm6
1562	paddb	%mm1,%mm1
1563	paddb	%mm5,%mm5
1564	pxor	%mm2,%mm1
1565	pxor	%mm6,%mm5
1566	movq	%mm1,%mm3
1567	movq	%mm5,%mm7
1568	movq	%mm1,%mm2
1569	movq	%mm5,%mm6
1570	pxor	%mm1,%mm0
1571	pxor	%mm5,%mm4
1572	pslld	$24,%mm3
1573	pslld	$24,%mm7
1574	psrld	$8,%mm2
1575	psrld	$8,%mm6
1576	pxor	%mm3,%mm0
1577	pxor	%mm7,%mm4
1578	pxor	%mm2,%mm0
1579	pxor	%mm6,%mm4
1580	movq	8(%esp),%mm2
1581	pxor	%mm3,%mm3
1582	pxor	%mm7,%mm7
1583	pcmpgtb	%mm1,%mm3
1584	pcmpgtb	%mm5,%mm7
1585	pand	%mm2,%mm3
1586	pand	%mm2,%mm7
1587	paddb	%mm1,%mm1
1588	paddb	%mm5,%mm5
1589	pxor	%mm3,%mm1
1590	pxor	%mm7,%mm5
1591	pshufw	$177,%mm1,%mm3
1592	pshufw	$177,%mm5,%mm7
1593	pxor	%mm1,%mm0
1594	pxor	%mm5,%mm4
1595	pxor	%mm3,%mm0
1596	pxor	%mm7,%mm4
1597	pxor	%mm3,%mm3
1598	pxor	%mm7,%mm7
1599	pcmpgtb	%mm1,%mm3
1600	pcmpgtb	%mm5,%mm7
1601	pand	%mm2,%mm3
1602	pand	%mm2,%mm7
1603	paddb	%mm1,%mm1
1604	paddb	%mm5,%mm5
1605	pxor	%mm3,%mm1
1606	pxor	%mm7,%mm5
1607	pxor	%mm1,%mm0
1608	pxor	%mm5,%mm4
1609	movq	%mm1,%mm3
1610	movq	%mm5,%mm7
1611	pshufw	$177,%mm1,%mm2
1612	pshufw	$177,%mm5,%mm6
1613	pxor	%mm2,%mm0
1614	pxor	%mm6,%mm4
1615	pslld	$8,%mm1
1616	pslld	$8,%mm5
1617	psrld	$8,%mm3
1618	psrld	$8,%mm7
1619	movq	(%edi),%mm2
1620	movq	8(%edi),%mm6
1621	pxor	%mm1,%mm0
1622	pxor	%mm5,%mm4
1623	pxor	%mm3,%mm0
1624	pxor	%mm7,%mm4
1625	movl	-128(%ebp),%eax
1626	pslld	$16,%mm1
1627	pslld	$16,%mm5
1628	movl	-64(%ebp),%ebx
1629	psrld	$16,%mm3
1630	psrld	$16,%mm7
1631	movl	(%ebp),%ecx
1632	pxor	%mm1,%mm0
1633	pxor	%mm5,%mm4
1634	movl	64(%ebp),%edx
1635	pxor	%mm3,%mm0
1636	pxor	%mm7,%mm4
1637	pxor	%mm2,%mm0
1638	pxor	%mm6,%mm4
1639	jmp	.L007loop
1640.align	16
1641.L008out:
1642	pxor	(%edi),%mm0
1643	pxor	8(%edi),%mm4
1644	ret
1645.size	_sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact
1646.type	_x86_AES_decrypt,@function
1647.align	16
1648_x86_AES_decrypt:
1649	#ifdef __CET__
1650
1651.byte	243,15,30,251
1652	#endif
1653
1654	movl	%edi,20(%esp)
1655	xorl	(%edi),%eax
1656	xorl	4(%edi),%ebx
1657	xorl	8(%edi),%ecx
1658	xorl	12(%edi),%edx
1659	movl	240(%edi),%esi
1660	leal	-2(%esi,%esi,1),%esi
1661	leal	(%edi,%esi,8),%esi
1662	movl	%esi,24(%esp)
1663.align	16
1664.L009loop:
1665	movl	%eax,%esi
1666	andl	$255,%esi
1667	movl	(%ebp,%esi,8),%esi
1668	movzbl	%dh,%edi
1669	xorl	3(%ebp,%edi,8),%esi
1670	movl	%ecx,%edi
1671	shrl	$16,%edi
1672	andl	$255,%edi
1673	xorl	2(%ebp,%edi,8),%esi
1674	movl	%ebx,%edi
1675	shrl	$24,%edi
1676	xorl	1(%ebp,%edi,8),%esi
1677	movl	%esi,4(%esp)
1678
1679	movl	%ebx,%esi
1680	andl	$255,%esi
1681	movl	(%ebp,%esi,8),%esi
1682	movzbl	%ah,%edi
1683	xorl	3(%ebp,%edi,8),%esi
1684	movl	%edx,%edi
1685	shrl	$16,%edi
1686	andl	$255,%edi
1687	xorl	2(%ebp,%edi,8),%esi
1688	movl	%ecx,%edi
1689	shrl	$24,%edi
1690	xorl	1(%ebp,%edi,8),%esi
1691	movl	%esi,8(%esp)
1692
1693	movl	%ecx,%esi
1694	andl	$255,%esi
1695	movl	(%ebp,%esi,8),%esi
1696	movzbl	%bh,%edi
1697	xorl	3(%ebp,%edi,8),%esi
1698	movl	%eax,%edi
1699	shrl	$16,%edi
1700	andl	$255,%edi
1701	xorl	2(%ebp,%edi,8),%esi
1702	movl	%edx,%edi
1703	shrl	$24,%edi
1704	xorl	1(%ebp,%edi,8),%esi
1705
1706	movl	20(%esp),%edi
1707	andl	$255,%edx
1708	movl	(%ebp,%edx,8),%edx
1709	movzbl	%ch,%ecx
1710	xorl	3(%ebp,%ecx,8),%edx
1711	movl	%esi,%ecx
1712	shrl	$16,%ebx
1713	andl	$255,%ebx
1714	xorl	2(%ebp,%ebx,8),%edx
1715	movl	8(%esp),%ebx
1716	shrl	$24,%eax
1717	xorl	1(%ebp,%eax,8),%edx
1718	movl	4(%esp),%eax
1719
1720	addl	$16,%edi
1721	xorl	(%edi),%eax
1722	xorl	4(%edi),%ebx
1723	xorl	8(%edi),%ecx
1724	xorl	12(%edi),%edx
1725	cmpl	24(%esp),%edi
1726	movl	%edi,20(%esp)
1727	jb	.L009loop
1728	leal	2176(%ebp),%ebp
1729	movl	-128(%ebp),%edi
1730	movl	-96(%ebp),%esi
1731	movl	-64(%ebp),%edi
1732	movl	-32(%ebp),%esi
1733	movl	(%ebp),%edi
1734	movl	32(%ebp),%esi
1735	movl	64(%ebp),%edi
1736	movl	96(%ebp),%esi
1737	leal	-128(%ebp),%ebp
1738	movl	%eax,%esi
1739	andl	$255,%esi
1740	movzbl	(%ebp,%esi,1),%esi
1741	movzbl	%dh,%edi
1742	movzbl	(%ebp,%edi,1),%edi
1743	shll	$8,%edi
1744	xorl	%edi,%esi
1745	movl	%ecx,%edi
1746	shrl	$16,%edi
1747	andl	$255,%edi
1748	movzbl	(%ebp,%edi,1),%edi
1749	shll	$16,%edi
1750	xorl	%edi,%esi
1751	movl	%ebx,%edi
1752	shrl	$24,%edi
1753	movzbl	(%ebp,%edi,1),%edi
1754	shll	$24,%edi
1755	xorl	%edi,%esi
1756	movl	%esi,4(%esp)
1757	movl	%ebx,%esi
1758	andl	$255,%esi
1759	movzbl	(%ebp,%esi,1),%esi
1760	movzbl	%ah,%edi
1761	movzbl	(%ebp,%edi,1),%edi
1762	shll	$8,%edi
1763	xorl	%edi,%esi
1764	movl	%edx,%edi
1765	shrl	$16,%edi
1766	andl	$255,%edi
1767	movzbl	(%ebp,%edi,1),%edi
1768	shll	$16,%edi
1769	xorl	%edi,%esi
1770	movl	%ecx,%edi
1771	shrl	$24,%edi
1772	movzbl	(%ebp,%edi,1),%edi
1773	shll	$24,%edi
1774	xorl	%edi,%esi
1775	movl	%esi,8(%esp)
1776	movl	%ecx,%esi
1777	andl	$255,%esi
1778	movzbl	(%ebp,%esi,1),%esi
1779	movzbl	%bh,%edi
1780	movzbl	(%ebp,%edi,1),%edi
1781	shll	$8,%edi
1782	xorl	%edi,%esi
1783	movl	%eax,%edi
1784	shrl	$16,%edi
1785	andl	$255,%edi
1786	movzbl	(%ebp,%edi,1),%edi
1787	shll	$16,%edi
1788	xorl	%edi,%esi
1789	movl	%edx,%edi
1790	shrl	$24,%edi
1791	movzbl	(%ebp,%edi,1),%edi
1792	shll	$24,%edi
1793	xorl	%edi,%esi
1794	movl	20(%esp),%edi
1795	andl	$255,%edx
1796	movzbl	(%ebp,%edx,1),%edx
1797	movzbl	%ch,%ecx
1798	movzbl	(%ebp,%ecx,1),%ecx
1799	shll	$8,%ecx
1800	xorl	%ecx,%edx
1801	movl	%esi,%ecx
1802	shrl	$16,%ebx
1803	andl	$255,%ebx
1804	movzbl	(%ebp,%ebx,1),%ebx
1805	shll	$16,%ebx
1806	xorl	%ebx,%edx
1807	movl	8(%esp),%ebx
1808	shrl	$24,%eax
1809	movzbl	(%ebp,%eax,1),%eax
1810	shll	$24,%eax
1811	xorl	%eax,%edx
1812	movl	4(%esp),%eax
1813	leal	-2048(%ebp),%ebp
1814	addl	$16,%edi
1815	xorl	(%edi),%eax
1816	xorl	4(%edi),%ebx
1817	xorl	8(%edi),%ecx
1818	xorl	12(%edi),%edx
1819	ret
1820.align	64
1821.LAES_Td:
1822.long	1353184337,1353184337
1823.long	1399144830,1399144830
1824.long	3282310938,3282310938
1825.long	2522752826,2522752826
1826.long	3412831035,3412831035
1827.long	4047871263,4047871263
1828.long	2874735276,2874735276
1829.long	2466505547,2466505547
1830.long	1442459680,1442459680
1831.long	4134368941,4134368941
1832.long	2440481928,2440481928
1833.long	625738485,625738485
1834.long	4242007375,4242007375
1835.long	3620416197,3620416197
1836.long	2151953702,2151953702
1837.long	2409849525,2409849525
1838.long	1230680542,1230680542
1839.long	1729870373,1729870373
1840.long	2551114309,2551114309
1841.long	3787521629,3787521629
1842.long	41234371,41234371
1843.long	317738113,317738113
1844.long	2744600205,2744600205
1845.long	3338261355,3338261355
1846.long	3881799427,3881799427
1847.long	2510066197,2510066197
1848.long	3950669247,3950669247
1849.long	3663286933,3663286933
1850.long	763608788,763608788
1851.long	3542185048,3542185048
1852.long	694804553,694804553
1853.long	1154009486,1154009486
1854.long	1787413109,1787413109
1855.long	2021232372,2021232372
1856.long	1799248025,1799248025
1857.long	3715217703,3715217703
1858.long	3058688446,3058688446
1859.long	397248752,397248752
1860.long	1722556617,1722556617
1861.long	3023752829,3023752829
1862.long	407560035,407560035
1863.long	2184256229,2184256229
1864.long	1613975959,1613975959
1865.long	1165972322,1165972322
1866.long	3765920945,3765920945
1867.long	2226023355,2226023355
1868.long	480281086,480281086
1869.long	2485848313,2485848313
1870.long	1483229296,1483229296
1871.long	436028815,436028815
1872.long	2272059028,2272059028
1873.long	3086515026,3086515026
1874.long	601060267,601060267
1875.long	3791801202,3791801202
1876.long	1468997603,1468997603
1877.long	715871590,715871590
1878.long	120122290,120122290
1879.long	63092015,63092015
1880.long	2591802758,2591802758
1881.long	2768779219,2768779219
1882.long	4068943920,4068943920
1883.long	2997206819,2997206819
1884.long	3127509762,3127509762
1885.long	1552029421,1552029421
1886.long	723308426,723308426
1887.long	2461301159,2461301159
1888.long	4042393587,4042393587
1889.long	2715969870,2715969870
1890.long	3455375973,3455375973
1891.long	3586000134,3586000134
1892.long	526529745,526529745
1893.long	2331944644,2331944644
1894.long	2639474228,2639474228
1895.long	2689987490,2689987490
1896.long	853641733,853641733
1897.long	1978398372,1978398372
1898.long	971801355,971801355
1899.long	2867814464,2867814464
1900.long	111112542,111112542
1901.long	1360031421,1360031421
1902.long	4186579262,4186579262
1903.long	1023860118,1023860118
1904.long	2919579357,2919579357
1905.long	1186850381,1186850381
1906.long	3045938321,3045938321
1907.long	90031217,90031217
1908.long	1876166148,1876166148
1909.long	4279586912,4279586912
1910.long	620468249,620468249
1911.long	2548678102,2548678102
1912.long	3426959497,3426959497
1913.long	2006899047,2006899047
1914.long	3175278768,3175278768
1915.long	2290845959,2290845959
1916.long	945494503,945494503
1917.long	3689859193,3689859193
1918.long	1191869601,1191869601
1919.long	3910091388,3910091388
1920.long	3374220536,3374220536
1921.long	0,0
1922.long	2206629897,2206629897
1923.long	1223502642,1223502642
1924.long	2893025566,2893025566
1925.long	1316117100,1316117100
1926.long	4227796733,4227796733
1927.long	1446544655,1446544655
1928.long	517320253,517320253
1929.long	658058550,658058550
1930.long	1691946762,1691946762
1931.long	564550760,564550760
1932.long	3511966619,3511966619
1933.long	976107044,976107044
1934.long	2976320012,2976320012
1935.long	266819475,266819475
1936.long	3533106868,3533106868
1937.long	2660342555,2660342555
1938.long	1338359936,1338359936
1939.long	2720062561,2720062561
1940.long	1766553434,1766553434
1941.long	370807324,370807324
1942.long	179999714,179999714
1943.long	3844776128,3844776128
1944.long	1138762300,1138762300
1945.long	488053522,488053522
1946.long	185403662,185403662
1947.long	2915535858,2915535858
1948.long	3114841645,3114841645
1949.long	3366526484,3366526484
1950.long	2233069911,2233069911
1951.long	1275557295,1275557295
1952.long	3151862254,3151862254
1953.long	4250959779,4250959779
1954.long	2670068215,2670068215
1955.long	3170202204,3170202204
1956.long	3309004356,3309004356
1957.long	880737115,880737115
1958.long	1982415755,1982415755
1959.long	3703972811,3703972811
1960.long	1761406390,1761406390
1961.long	1676797112,1676797112
1962.long	3403428311,3403428311
1963.long	277177154,277177154
1964.long	1076008723,1076008723
1965.long	538035844,538035844
1966.long	2099530373,2099530373
1967.long	4164795346,4164795346
1968.long	288553390,288553390
1969.long	1839278535,1839278535
1970.long	1261411869,1261411869
1971.long	4080055004,4080055004
1972.long	3964831245,3964831245
1973.long	3504587127,3504587127
1974.long	1813426987,1813426987
1975.long	2579067049,2579067049
1976.long	4199060497,4199060497
1977.long	577038663,577038663
1978.long	3297574056,3297574056
1979.long	440397984,440397984
1980.long	3626794326,3626794326
1981.long	4019204898,4019204898
1982.long	3343796615,3343796615
1983.long	3251714265,3251714265
1984.long	4272081548,4272081548
1985.long	906744984,906744984
1986.long	3481400742,3481400742
1987.long	685669029,685669029
1988.long	646887386,646887386
1989.long	2764025151,2764025151
1990.long	3835509292,3835509292
1991.long	227702864,227702864
1992.long	2613862250,2613862250
1993.long	1648787028,1648787028
1994.long	3256061430,3256061430
1995.long	3904428176,3904428176
1996.long	1593260334,1593260334
1997.long	4121936770,4121936770
1998.long	3196083615,3196083615
1999.long	2090061929,2090061929
2000.long	2838353263,2838353263
2001.long	3004310991,3004310991
2002.long	999926984,999926984
2003.long	2809993232,2809993232
2004.long	1852021992,1852021992
2005.long	2075868123,2075868123
2006.long	158869197,158869197
2007.long	4095236462,4095236462
2008.long	28809964,28809964
2009.long	2828685187,2828685187
2010.long	1701746150,1701746150
2011.long	2129067946,2129067946
2012.long	147831841,147831841
2013.long	3873969647,3873969647
2014.long	3650873274,3650873274
2015.long	3459673930,3459673930
2016.long	3557400554,3557400554
2017.long	3598495785,3598495785
2018.long	2947720241,2947720241
2019.long	824393514,824393514
2020.long	815048134,815048134
2021.long	3227951669,3227951669
2022.long	935087732,935087732
2023.long	2798289660,2798289660
2024.long	2966458592,2966458592
2025.long	366520115,366520115
2026.long	1251476721,1251476721
2027.long	4158319681,4158319681
2028.long	240176511,240176511
2029.long	804688151,804688151
2030.long	2379631990,2379631990
2031.long	1303441219,1303441219
2032.long	1414376140,1414376140
2033.long	3741619940,3741619940
2034.long	3820343710,3820343710
2035.long	461924940,461924940
2036.long	3089050817,3089050817
2037.long	2136040774,2136040774
2038.long	82468509,82468509
2039.long	1563790337,1563790337
2040.long	1937016826,1937016826
2041.long	776014843,776014843
2042.long	1511876531,1511876531
2043.long	1389550482,1389550482
2044.long	861278441,861278441
2045.long	323475053,323475053
2046.long	2355222426,2355222426
2047.long	2047648055,2047648055
2048.long	2383738969,2383738969
2049.long	2302415851,2302415851
2050.long	3995576782,3995576782
2051.long	902390199,902390199
2052.long	3991215329,3991215329
2053.long	1018251130,1018251130
2054.long	1507840668,1507840668
2055.long	1064563285,1064563285
2056.long	2043548696,2043548696
2057.long	3208103795,3208103795
2058.long	3939366739,3939366739
2059.long	1537932639,1537932639
2060.long	342834655,342834655
2061.long	2262516856,2262516856
2062.long	2180231114,2180231114
2063.long	1053059257,1053059257
2064.long	741614648,741614648
2065.long	1598071746,1598071746
2066.long	1925389590,1925389590
2067.long	203809468,203809468
2068.long	2336832552,2336832552
2069.long	1100287487,1100287487
2070.long	1895934009,1895934009
2071.long	3736275976,3736275976
2072.long	2632234200,2632234200
2073.long	2428589668,2428589668
2074.long	1636092795,1636092795
2075.long	1890988757,1890988757
2076.long	1952214088,1952214088
2077.long	1113045200,1113045200
2078.byte	82,9,106,213,48,54,165,56
2079.byte	191,64,163,158,129,243,215,251
2080.byte	124,227,57,130,155,47,255,135
2081.byte	52,142,67,68,196,222,233,203
2082.byte	84,123,148,50,166,194,35,61
2083.byte	238,76,149,11,66,250,195,78
2084.byte	8,46,161,102,40,217,36,178
2085.byte	118,91,162,73,109,139,209,37
2086.byte	114,248,246,100,134,104,152,22
2087.byte	212,164,92,204,93,101,182,146
2088.byte	108,112,72,80,253,237,185,218
2089.byte	94,21,70,87,167,141,157,132
2090.byte	144,216,171,0,140,188,211,10
2091.byte	247,228,88,5,184,179,69,6
2092.byte	208,44,30,143,202,63,15,2
2093.byte	193,175,189,3,1,19,138,107
2094.byte	58,145,17,65,79,103,220,234
2095.byte	151,242,207,206,240,180,230,115
2096.byte	150,172,116,34,231,173,53,133
2097.byte	226,249,55,232,28,117,223,110
2098.byte	71,241,26,113,29,41,197,137
2099.byte	111,183,98,14,170,24,190,27
2100.byte	252,86,62,75,198,210,121,32
2101.byte	154,219,192,254,120,205,90,244
2102.byte	31,221,168,51,136,7,199,49
2103.byte	177,18,16,89,39,128,236,95
2104.byte	96,81,127,169,25,181,74,13
2105.byte	45,229,122,159,147,201,156,239
2106.byte	160,224,59,77,174,42,245,176
2107.byte	200,235,187,60,131,83,153,97
2108.byte	23,43,4,126,186,119,214,38
2109.byte	225,105,20,99,85,33,12,125
2110.byte	82,9,106,213,48,54,165,56
2111.byte	191,64,163,158,129,243,215,251
2112.byte	124,227,57,130,155,47,255,135
2113.byte	52,142,67,68,196,222,233,203
2114.byte	84,123,148,50,166,194,35,61
2115.byte	238,76,149,11,66,250,195,78
2116.byte	8,46,161,102,40,217,36,178
2117.byte	118,91,162,73,109,139,209,37
2118.byte	114,248,246,100,134,104,152,22
2119.byte	212,164,92,204,93,101,182,146
2120.byte	108,112,72,80,253,237,185,218
2121.byte	94,21,70,87,167,141,157,132
2122.byte	144,216,171,0,140,188,211,10
2123.byte	247,228,88,5,184,179,69,6
2124.byte	208,44,30,143,202,63,15,2
2125.byte	193,175,189,3,1,19,138,107
2126.byte	58,145,17,65,79,103,220,234
2127.byte	151,242,207,206,240,180,230,115
2128.byte	150,172,116,34,231,173,53,133
2129.byte	226,249,55,232,28,117,223,110
2130.byte	71,241,26,113,29,41,197,137
2131.byte	111,183,98,14,170,24,190,27
2132.byte	252,86,62,75,198,210,121,32
2133.byte	154,219,192,254,120,205,90,244
2134.byte	31,221,168,51,136,7,199,49
2135.byte	177,18,16,89,39,128,236,95
2136.byte	96,81,127,169,25,181,74,13
2137.byte	45,229,122,159,147,201,156,239
2138.byte	160,224,59,77,174,42,245,176
2139.byte	200,235,187,60,131,83,153,97
2140.byte	23,43,4,126,186,119,214,38
2141.byte	225,105,20,99,85,33,12,125
2142.byte	82,9,106,213,48,54,165,56
2143.byte	191,64,163,158,129,243,215,251
2144.byte	124,227,57,130,155,47,255,135
2145.byte	52,142,67,68,196,222,233,203
2146.byte	84,123,148,50,166,194,35,61
2147.byte	238,76,149,11,66,250,195,78
2148.byte	8,46,161,102,40,217,36,178
2149.byte	118,91,162,73,109,139,209,37
2150.byte	114,248,246,100,134,104,152,22
2151.byte	212,164,92,204,93,101,182,146
2152.byte	108,112,72,80,253,237,185,218
2153.byte	94,21,70,87,167,141,157,132
2154.byte	144,216,171,0,140,188,211,10
2155.byte	247,228,88,5,184,179,69,6
2156.byte	208,44,30,143,202,63,15,2
2157.byte	193,175,189,3,1,19,138,107
2158.byte	58,145,17,65,79,103,220,234
2159.byte	151,242,207,206,240,180,230,115
2160.byte	150,172,116,34,231,173,53,133
2161.byte	226,249,55,232,28,117,223,110
2162.byte	71,241,26,113,29,41,197,137
2163.byte	111,183,98,14,170,24,190,27
2164.byte	252,86,62,75,198,210,121,32
2165.byte	154,219,192,254,120,205,90,244
2166.byte	31,221,168,51,136,7,199,49
2167.byte	177,18,16,89,39,128,236,95
2168.byte	96,81,127,169,25,181,74,13
2169.byte	45,229,122,159,147,201,156,239
2170.byte	160,224,59,77,174,42,245,176
2171.byte	200,235,187,60,131,83,153,97
2172.byte	23,43,4,126,186,119,214,38
2173.byte	225,105,20,99,85,33,12,125
2174.byte	82,9,106,213,48,54,165,56
2175.byte	191,64,163,158,129,243,215,251
2176.byte	124,227,57,130,155,47,255,135
2177.byte	52,142,67,68,196,222,233,203
2178.byte	84,123,148,50,166,194,35,61
2179.byte	238,76,149,11,66,250,195,78
2180.byte	8,46,161,102,40,217,36,178
2181.byte	118,91,162,73,109,139,209,37
2182.byte	114,248,246,100,134,104,152,22
2183.byte	212,164,92,204,93,101,182,146
2184.byte	108,112,72,80,253,237,185,218
2185.byte	94,21,70,87,167,141,157,132
2186.byte	144,216,171,0,140,188,211,10
2187.byte	247,228,88,5,184,179,69,6
2188.byte	208,44,30,143,202,63,15,2
2189.byte	193,175,189,3,1,19,138,107
2190.byte	58,145,17,65,79,103,220,234
2191.byte	151,242,207,206,240,180,230,115
2192.byte	150,172,116,34,231,173,53,133
2193.byte	226,249,55,232,28,117,223,110
2194.byte	71,241,26,113,29,41,197,137
2195.byte	111,183,98,14,170,24,190,27
2196.byte	252,86,62,75,198,210,121,32
2197.byte	154,219,192,254,120,205,90,244
2198.byte	31,221,168,51,136,7,199,49
2199.byte	177,18,16,89,39,128,236,95
2200.byte	96,81,127,169,25,181,74,13
2201.byte	45,229,122,159,147,201,156,239
2202.byte	160,224,59,77,174,42,245,176
2203.byte	200,235,187,60,131,83,153,97
2204.byte	23,43,4,126,186,119,214,38
2205.byte	225,105,20,99,85,33,12,125
2206.size	_x86_AES_decrypt,.-_x86_AES_decrypt
2207.globl	AES_decrypt
2208.type	AES_decrypt,@function
2209.align	16
2210AES_decrypt:
2211.L_AES_decrypt_begin:
2212	#ifdef __CET__
2213
2214.byte	243,15,30,251
2215	#endif
2216
2217	pushl	%ebp
2218	pushl	%ebx
2219	pushl	%esi
2220	pushl	%edi
2221	movl	20(%esp),%esi
2222	movl	28(%esp),%edi
2223	movl	%esp,%eax
2224	subl	$36,%esp
2225	andl	$-64,%esp
2226	leal	-127(%edi),%ebx
2227	subl	%esp,%ebx
2228	negl	%ebx
2229	andl	$960,%ebx
2230	subl	%ebx,%esp
2231	addl	$4,%esp
2232	movl	%eax,28(%esp)
2233	call	.L010pic_point
2234.L010pic_point:
2235	popl	%ebp
2236	leal	OPENSSL_ia32cap_P-.L010pic_point(%ebp),%eax
2237	leal	.LAES_Td-.L010pic_point(%ebp),%ebp
2238	leal	764(%esp),%ebx
2239	subl	%ebp,%ebx
2240	andl	$768,%ebx
2241	leal	2176(%ebp,%ebx,1),%ebp
2242	btl	$25,(%eax)
2243	jnc	.L011x86
2244	movq	(%esi),%mm0
2245	movq	8(%esi),%mm4
2246	call	_sse_AES_decrypt_compact
2247	movl	28(%esp),%esp
2248	movl	24(%esp),%esi
2249	movq	%mm0,(%esi)
2250	movq	%mm4,8(%esi)
2251	emms
2252	popl	%edi
2253	popl	%esi
2254	popl	%ebx
2255	popl	%ebp
2256	ret
2257.align	16
2258.L011x86:
2259	movl	%ebp,24(%esp)
2260	movl	(%esi),%eax
2261	movl	4(%esi),%ebx
2262	movl	8(%esi),%ecx
2263	movl	12(%esi),%edx
2264	call	_x86_AES_decrypt_compact
2265	movl	28(%esp),%esp
2266	movl	24(%esp),%esi
2267	movl	%eax,(%esi)
2268	movl	%ebx,4(%esi)
2269	movl	%ecx,8(%esi)
2270	movl	%edx,12(%esi)
2271	popl	%edi
2272	popl	%esi
2273	popl	%ebx
2274	popl	%ebp
2275	ret
2276.size	AES_decrypt,.-.L_AES_decrypt_begin
2277.globl	AES_cbc_encrypt
2278.type	AES_cbc_encrypt,@function
2279.align	16
2280AES_cbc_encrypt:
2281.L_AES_cbc_encrypt_begin:
2282	#ifdef __CET__
2283
2284.byte	243,15,30,251
2285	#endif
2286
2287	pushl	%ebp
2288	pushl	%ebx
2289	pushl	%esi
2290	pushl	%edi
2291	movl	28(%esp),%ecx
2292	cmpl	$0,%ecx
2293	je	.L012drop_out
2294	call	.L013pic_point
2295.L013pic_point:
2296	popl	%ebp
2297	leal	OPENSSL_ia32cap_P-.L013pic_point(%ebp),%eax
2298	cmpl	$0,40(%esp)
2299	leal	.LAES_Te-.L013pic_point(%ebp),%ebp
2300	jne	.L014picked_te
2301	leal	.LAES_Td-.LAES_Te(%ebp),%ebp
2302.L014picked_te:
2303	pushfl
2304	cld
2305	cmpl	$512,%ecx
2306	jb	.L015slow_way
2307	testl	$15,%ecx
2308	jnz	.L015slow_way
2309	btl	$28,(%eax)
2310	jc	.L015slow_way
2311	leal	-324(%esp),%esi
2312	andl	$-64,%esi
2313	movl	%ebp,%eax
2314	leal	2304(%ebp),%ebx
2315	movl	%esi,%edx
2316	andl	$4095,%eax
2317	andl	$4095,%ebx
2318	andl	$4095,%edx
2319	cmpl	%ebx,%edx
2320	jb	.L016tbl_break_out
2321	subl	%ebx,%edx
2322	subl	%edx,%esi
2323	jmp	.L017tbl_ok
2324.align	4
2325.L016tbl_break_out:
2326	subl	%eax,%edx
2327	andl	$4095,%edx
2328	addl	$384,%edx
2329	subl	%edx,%esi
2330.align	4
2331.L017tbl_ok:
2332	leal	24(%esp),%edx
2333	xchgl	%esi,%esp
2334	addl	$4,%esp
2335	movl	%ebp,24(%esp)
2336	movl	%esi,28(%esp)
2337	movl	(%edx),%eax
2338	movl	4(%edx),%ebx
2339	movl	12(%edx),%edi
2340	movl	16(%edx),%esi
2341	movl	20(%edx),%edx
2342	movl	%eax,32(%esp)
2343	movl	%ebx,36(%esp)
2344	movl	%ecx,40(%esp)
2345	movl	%edi,44(%esp)
2346	movl	%esi,48(%esp)
2347	movl	$0,316(%esp)
2348	movl	%edi,%ebx
2349	movl	$61,%ecx
2350	subl	%ebp,%ebx
2351	movl	%edi,%esi
2352	andl	$4095,%ebx
2353	leal	76(%esp),%edi
2354	cmpl	$2304,%ebx
2355	jb	.L018do_copy
2356	cmpl	$3852,%ebx
2357	jb	.L019skip_copy
2358.align	4
2359.L018do_copy:
2360	movl	%edi,44(%esp)
2361.long	2784229001
2362.L019skip_copy:
2363	movl	$16,%edi
2364.align	4
2365.L020prefetch_tbl:
2366	movl	(%ebp),%eax
2367	movl	32(%ebp),%ebx
2368	movl	64(%ebp),%ecx
2369	movl	96(%ebp),%esi
2370	leal	128(%ebp),%ebp
2371	subl	$1,%edi
2372	jnz	.L020prefetch_tbl
2373	subl	$2048,%ebp
2374	movl	32(%esp),%esi
2375	movl	48(%esp),%edi
2376	cmpl	$0,%edx
2377	je	.L021fast_decrypt
2378	movl	(%edi),%eax
2379	movl	4(%edi),%ebx
2380.align	16
2381.L022fast_enc_loop:
2382	movl	8(%edi),%ecx
2383	movl	12(%edi),%edx
2384	xorl	(%esi),%eax
2385	xorl	4(%esi),%ebx
2386	xorl	8(%esi),%ecx
2387	xorl	12(%esi),%edx
2388	movl	44(%esp),%edi
2389	call	_x86_AES_encrypt
2390	movl	32(%esp),%esi
2391	movl	36(%esp),%edi
2392	movl	%eax,(%edi)
2393	movl	%ebx,4(%edi)
2394	movl	%ecx,8(%edi)
2395	movl	%edx,12(%edi)
2396	leal	16(%esi),%esi
2397	movl	40(%esp),%ecx
2398	movl	%esi,32(%esp)
2399	leal	16(%edi),%edx
2400	movl	%edx,36(%esp)
2401	subl	$16,%ecx
2402	movl	%ecx,40(%esp)
2403	jnz	.L022fast_enc_loop
2404	movl	48(%esp),%esi
2405	movl	8(%edi),%ecx
2406	movl	12(%edi),%edx
2407	movl	%eax,(%esi)
2408	movl	%ebx,4(%esi)
2409	movl	%ecx,8(%esi)
2410	movl	%edx,12(%esi)
2411	cmpl	$0,316(%esp)
2412	movl	44(%esp),%edi
2413	je	.L023skip_ezero
2414	movl	$60,%ecx
2415	xorl	%eax,%eax
2416.align	4
2417.long	2884892297
2418.L023skip_ezero:
2419	movl	28(%esp),%esp
2420	popfl
2421.L012drop_out:
2422	popl	%edi
2423	popl	%esi
2424	popl	%ebx
2425	popl	%ebp
2426	ret
2427	pushfl
2428.align	16
2429.L021fast_decrypt:
2430	cmpl	36(%esp),%esi
2431	je	.L024fast_dec_in_place
2432	movl	%edi,52(%esp)
2433.align	4
2434.align	16
2435.L025fast_dec_loop:
2436	movl	(%esi),%eax
2437	movl	4(%esi),%ebx
2438	movl	8(%esi),%ecx
2439	movl	12(%esi),%edx
2440	movl	44(%esp),%edi
2441	call	_x86_AES_decrypt
2442	movl	52(%esp),%edi
2443	movl	40(%esp),%esi
2444	xorl	(%edi),%eax
2445	xorl	4(%edi),%ebx
2446	xorl	8(%edi),%ecx
2447	xorl	12(%edi),%edx
2448	movl	36(%esp),%edi
2449	movl	32(%esp),%esi
2450	movl	%eax,(%edi)
2451	movl	%ebx,4(%edi)
2452	movl	%ecx,8(%edi)
2453	movl	%edx,12(%edi)
2454	movl	40(%esp),%ecx
2455	movl	%esi,52(%esp)
2456	leal	16(%esi),%esi
2457	movl	%esi,32(%esp)
2458	leal	16(%edi),%edi
2459	movl	%edi,36(%esp)
2460	subl	$16,%ecx
2461	movl	%ecx,40(%esp)
2462	jnz	.L025fast_dec_loop
2463	movl	52(%esp),%edi
2464	movl	48(%esp),%esi
2465	movl	(%edi),%eax
2466	movl	4(%edi),%ebx
2467	movl	8(%edi),%ecx
2468	movl	12(%edi),%edx
2469	movl	%eax,(%esi)
2470	movl	%ebx,4(%esi)
2471	movl	%ecx,8(%esi)
2472	movl	%edx,12(%esi)
2473	jmp	.L026fast_dec_out
2474.align	16
2475.L024fast_dec_in_place:
2476.L027fast_dec_in_place_loop:
2477	movl	(%esi),%eax
2478	movl	4(%esi),%ebx
2479	movl	8(%esi),%ecx
2480	movl	12(%esi),%edx
2481	leal	60(%esp),%edi
2482	movl	%eax,(%edi)
2483	movl	%ebx,4(%edi)
2484	movl	%ecx,8(%edi)
2485	movl	%edx,12(%edi)
2486	movl	44(%esp),%edi
2487	call	_x86_AES_decrypt
2488	movl	48(%esp),%edi
2489	movl	36(%esp),%esi
2490	xorl	(%edi),%eax
2491	xorl	4(%edi),%ebx
2492	xorl	8(%edi),%ecx
2493	xorl	12(%edi),%edx
2494	movl	%eax,(%esi)
2495	movl	%ebx,4(%esi)
2496	movl	%ecx,8(%esi)
2497	movl	%edx,12(%esi)
2498	leal	16(%esi),%esi
2499	movl	%esi,36(%esp)
2500	leal	60(%esp),%esi
2501	movl	(%esi),%eax
2502	movl	4(%esi),%ebx
2503	movl	8(%esi),%ecx
2504	movl	12(%esi),%edx
2505	movl	%eax,(%edi)
2506	movl	%ebx,4(%edi)
2507	movl	%ecx,8(%edi)
2508	movl	%edx,12(%edi)
2509	movl	32(%esp),%esi
2510	movl	40(%esp),%ecx
2511	leal	16(%esi),%esi
2512	movl	%esi,32(%esp)
2513	subl	$16,%ecx
2514	movl	%ecx,40(%esp)
2515	jnz	.L027fast_dec_in_place_loop
2516.align	4
2517.L026fast_dec_out:
2518	cmpl	$0,316(%esp)
2519	movl	44(%esp),%edi
2520	je	.L028skip_dzero
2521	movl	$60,%ecx
2522	xorl	%eax,%eax
2523.align	4
2524.long	2884892297
2525.L028skip_dzero:
2526	movl	28(%esp),%esp
2527	popfl
2528	popl	%edi
2529	popl	%esi
2530	popl	%ebx
2531	popl	%ebp
2532	ret
2533	pushfl
2534.align	16
2535.L015slow_way:
2536	movl	(%eax),%eax
2537	movl	36(%esp),%edi
2538	leal	-80(%esp),%esi
2539	andl	$-64,%esi
2540	leal	-143(%edi),%ebx
2541	subl	%esi,%ebx
2542	negl	%ebx
2543	andl	$960,%ebx
2544	subl	%ebx,%esi
2545	leal	768(%esi),%ebx
2546	subl	%ebp,%ebx
2547	andl	$768,%ebx
2548	leal	2176(%ebp,%ebx,1),%ebp
2549	leal	24(%esp),%edx
2550	xchgl	%esi,%esp
2551	addl	$4,%esp
2552	movl	%ebp,24(%esp)
2553	movl	%esi,28(%esp)
2554	movl	%eax,52(%esp)
2555	movl	(%edx),%eax
2556	movl	4(%edx),%ebx
2557	movl	16(%edx),%esi
2558	movl	20(%edx),%edx
2559	movl	%eax,32(%esp)
2560	movl	%ebx,36(%esp)
2561	movl	%ecx,40(%esp)
2562	movl	%edi,44(%esp)
2563	movl	%esi,48(%esp)
2564	movl	%esi,%edi
2565	movl	%eax,%esi
2566	cmpl	$0,%edx
2567	je	.L029slow_decrypt
2568	cmpl	$16,%ecx
2569	movl	%ebx,%edx
2570	jb	.L030slow_enc_tail
2571	btl	$25,52(%esp)
2572	jnc	.L031slow_enc_x86
2573	movq	(%edi),%mm0
2574	movq	8(%edi),%mm4
2575.align	16
2576.L032slow_enc_loop_sse:
2577	pxor	(%esi),%mm0
2578	pxor	8(%esi),%mm4
2579	movl	44(%esp),%edi
2580	call	_sse_AES_encrypt_compact
2581	movl	32(%esp),%esi
2582	movl	36(%esp),%edi
2583	movl	40(%esp),%ecx
2584	movq	%mm0,(%edi)
2585	movq	%mm4,8(%edi)
2586	leal	16(%esi),%esi
2587	movl	%esi,32(%esp)
2588	leal	16(%edi),%edx
2589	movl	%edx,36(%esp)
2590	subl	$16,%ecx
2591	cmpl	$16,%ecx
2592	movl	%ecx,40(%esp)
2593	jae	.L032slow_enc_loop_sse
2594	testl	$15,%ecx
2595	jnz	.L030slow_enc_tail
2596	movl	48(%esp),%esi
2597	movq	%mm0,(%esi)
2598	movq	%mm4,8(%esi)
2599	emms
2600	movl	28(%esp),%esp
2601	popfl
2602	popl	%edi
2603	popl	%esi
2604	popl	%ebx
2605	popl	%ebp
2606	ret
2607	pushfl
2608.align	16
2609.L031slow_enc_x86:
2610	movl	(%edi),%eax
2611	movl	4(%edi),%ebx
2612.align	4
2613.L033slow_enc_loop_x86:
2614	movl	8(%edi),%ecx
2615	movl	12(%edi),%edx
2616	xorl	(%esi),%eax
2617	xorl	4(%esi),%ebx
2618	xorl	8(%esi),%ecx
2619	xorl	12(%esi),%edx
2620	movl	44(%esp),%edi
2621	call	_x86_AES_encrypt_compact
2622	movl	32(%esp),%esi
2623	movl	36(%esp),%edi
2624	movl	%eax,(%edi)
2625	movl	%ebx,4(%edi)
2626	movl	%ecx,8(%edi)
2627	movl	%edx,12(%edi)
2628	movl	40(%esp),%ecx
2629	leal	16(%esi),%esi
2630	movl	%esi,32(%esp)
2631	leal	16(%edi),%edx
2632	movl	%edx,36(%esp)
2633	subl	$16,%ecx
2634	cmpl	$16,%ecx
2635	movl	%ecx,40(%esp)
2636	jae	.L033slow_enc_loop_x86
2637	testl	$15,%ecx
2638	jnz	.L030slow_enc_tail
2639	movl	48(%esp),%esi
2640	movl	8(%edi),%ecx
2641	movl	12(%edi),%edx
2642	movl	%eax,(%esi)
2643	movl	%ebx,4(%esi)
2644	movl	%ecx,8(%esi)
2645	movl	%edx,12(%esi)
2646	movl	28(%esp),%esp
2647	popfl
2648	popl	%edi
2649	popl	%esi
2650	popl	%ebx
2651	popl	%ebp
2652	ret
2653	pushfl
2654.align	16
2655.L030slow_enc_tail:
2656	emms
2657	movl	%edx,%edi
2658	movl	$16,%ebx
2659	subl	%ecx,%ebx
2660	cmpl	%esi,%edi
2661	je	.L034enc_in_place
2662.align	4
2663.long	2767451785
2664	jmp	.L035enc_skip_in_place
2665.L034enc_in_place:
2666	leal	(%edi,%ecx,1),%edi
2667.L035enc_skip_in_place:
2668	movl	%ebx,%ecx
2669	xorl	%eax,%eax
2670.align	4
2671.long	2868115081
2672	movl	48(%esp),%edi
2673	movl	%edx,%esi
2674	movl	(%edi),%eax
2675	movl	4(%edi),%ebx
2676	movl	$16,40(%esp)
2677	jmp	.L033slow_enc_loop_x86
2678.align	16
2679.L029slow_decrypt:
2680	btl	$25,52(%esp)
2681	jnc	.L036slow_dec_loop_x86
2682.align	4
2683.L037slow_dec_loop_sse:
2684	movq	(%esi),%mm0
2685	movq	8(%esi),%mm4
2686	movl	44(%esp),%edi
2687	call	_sse_AES_decrypt_compact
2688	movl	32(%esp),%esi
2689	leal	60(%esp),%eax
2690	movl	36(%esp),%ebx
2691	movl	40(%esp),%ecx
2692	movl	48(%esp),%edi
2693	movq	(%esi),%mm1
2694	movq	8(%esi),%mm5
2695	pxor	(%edi),%mm0
2696	pxor	8(%edi),%mm4
2697	movq	%mm1,(%edi)
2698	movq	%mm5,8(%edi)
2699	subl	$16,%ecx
2700	jc	.L038slow_dec_partial_sse
2701	movq	%mm0,(%ebx)
2702	movq	%mm4,8(%ebx)
2703	leal	16(%ebx),%ebx
2704	movl	%ebx,36(%esp)
2705	leal	16(%esi),%esi
2706	movl	%esi,32(%esp)
2707	movl	%ecx,40(%esp)
2708	jnz	.L037slow_dec_loop_sse
2709	emms
2710	movl	28(%esp),%esp
2711	popfl
2712	popl	%edi
2713	popl	%esi
2714	popl	%ebx
2715	popl	%ebp
2716	ret
2717	pushfl
2718.align	16
2719.L038slow_dec_partial_sse:
2720	movq	%mm0,(%eax)
2721	movq	%mm4,8(%eax)
2722	emms
2723	addl	$16,%ecx
2724	movl	%ebx,%edi
2725	movl	%eax,%esi
2726.align	4
2727.long	2767451785
2728	movl	28(%esp),%esp
2729	popfl
2730	popl	%edi
2731	popl	%esi
2732	popl	%ebx
2733	popl	%ebp
2734	ret
2735	pushfl
2736.align	16
2737.L036slow_dec_loop_x86:
2738	movl	(%esi),%eax
2739	movl	4(%esi),%ebx
2740	movl	8(%esi),%ecx
2741	movl	12(%esi),%edx
2742	leal	60(%esp),%edi
2743	movl	%eax,(%edi)
2744	movl	%ebx,4(%edi)
2745	movl	%ecx,8(%edi)
2746	movl	%edx,12(%edi)
2747	movl	44(%esp),%edi
2748	call	_x86_AES_decrypt_compact
2749	movl	48(%esp),%edi
2750	movl	40(%esp),%esi
2751	xorl	(%edi),%eax
2752	xorl	4(%edi),%ebx
2753	xorl	8(%edi),%ecx
2754	xorl	12(%edi),%edx
2755	subl	$16,%esi
2756	jc	.L039slow_dec_partial_x86
2757	movl	%esi,40(%esp)
2758	movl	36(%esp),%esi
2759	movl	%eax,(%esi)
2760	movl	%ebx,4(%esi)
2761	movl	%ecx,8(%esi)
2762	movl	%edx,12(%esi)
2763	leal	16(%esi),%esi
2764	movl	%esi,36(%esp)
2765	leal	60(%esp),%esi
2766	movl	(%esi),%eax
2767	movl	4(%esi),%ebx
2768	movl	8(%esi),%ecx
2769	movl	12(%esi),%edx
2770	movl	%eax,(%edi)
2771	movl	%ebx,4(%edi)
2772	movl	%ecx,8(%edi)
2773	movl	%edx,12(%edi)
2774	movl	32(%esp),%esi
2775	leal	16(%esi),%esi
2776	movl	%esi,32(%esp)
2777	jnz	.L036slow_dec_loop_x86
2778	movl	28(%esp),%esp
2779	popfl
2780	popl	%edi
2781	popl	%esi
2782	popl	%ebx
2783	popl	%ebp
2784	ret
2785	pushfl
2786.align	16
2787.L039slow_dec_partial_x86:
2788	leal	60(%esp),%esi
2789	movl	%eax,(%esi)
2790	movl	%ebx,4(%esi)
2791	movl	%ecx,8(%esi)
2792	movl	%edx,12(%esi)
2793	movl	32(%esp),%esi
2794	movl	(%esi),%eax
2795	movl	4(%esi),%ebx
2796	movl	8(%esi),%ecx
2797	movl	12(%esi),%edx
2798	movl	%eax,(%edi)
2799	movl	%ebx,4(%edi)
2800	movl	%ecx,8(%edi)
2801	movl	%edx,12(%edi)
2802	movl	40(%esp),%ecx
2803	movl	36(%esp),%edi
2804	leal	60(%esp),%esi
2805.align	4
2806.long	2767451785
2807	movl	28(%esp),%esp
2808	popfl
2809	popl	%edi
2810	popl	%esi
2811	popl	%ebx
2812	popl	%ebp
2813	ret
2814.size	AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin
2815.type	_x86_AES_set_encrypt_key,@function
2816.align	16
2817_x86_AES_set_encrypt_key:
2818	#ifdef __CET__
2819
2820.byte	243,15,30,251
2821	#endif
2822
2823	pushl	%ebp
2824	pushl	%ebx
2825	pushl	%esi
2826	pushl	%edi
2827	movl	24(%esp),%esi
2828	movl	32(%esp),%edi
2829	testl	$-1,%esi
2830	jz	.L040badpointer
2831	testl	$-1,%edi
2832	jz	.L040badpointer
2833	call	.L041pic_point
2834.L041pic_point:
2835	popl	%ebp
2836	leal	.LAES_Te-.L041pic_point(%ebp),%ebp
2837	leal	2176(%ebp),%ebp
2838	movl	-128(%ebp),%eax
2839	movl	-96(%ebp),%ebx
2840	movl	-64(%ebp),%ecx
2841	movl	-32(%ebp),%edx
2842	movl	(%ebp),%eax
2843	movl	32(%ebp),%ebx
2844	movl	64(%ebp),%ecx
2845	movl	96(%ebp),%edx
2846	movl	28(%esp),%ecx
2847	cmpl	$128,%ecx
2848	je	.L04210rounds
2849	cmpl	$192,%ecx
2850	je	.L04312rounds
2851	cmpl	$256,%ecx
2852	je	.L04414rounds
2853	movl	$-2,%eax
2854	jmp	.L045exit
2855.L04210rounds:
2856	movl	(%esi),%eax
2857	movl	4(%esi),%ebx
2858	movl	8(%esi),%ecx
2859	movl	12(%esi),%edx
2860	movl	%eax,(%edi)
2861	movl	%ebx,4(%edi)
2862	movl	%ecx,8(%edi)
2863	movl	%edx,12(%edi)
2864	xorl	%ecx,%ecx
2865	jmp	.L04610shortcut
2866.align	4
2867.L04710loop:
2868	movl	(%edi),%eax
2869	movl	12(%edi),%edx
2870.L04610shortcut:
2871	movzbl	%dl,%esi
2872	movzbl	-128(%ebp,%esi,1),%ebx
2873	movzbl	%dh,%esi
2874	shll	$24,%ebx
2875	xorl	%ebx,%eax
2876	movzbl	-128(%ebp,%esi,1),%ebx
2877	shrl	$16,%edx
2878	movzbl	%dl,%esi
2879	xorl	%ebx,%eax
2880	movzbl	-128(%ebp,%esi,1),%ebx
2881	movzbl	%dh,%esi
2882	shll	$8,%ebx
2883	xorl	%ebx,%eax
2884	movzbl	-128(%ebp,%esi,1),%ebx
2885	shll	$16,%ebx
2886	xorl	%ebx,%eax
2887	xorl	896(%ebp,%ecx,4),%eax
2888	movl	%eax,16(%edi)
2889	xorl	4(%edi),%eax
2890	movl	%eax,20(%edi)
2891	xorl	8(%edi),%eax
2892	movl	%eax,24(%edi)
2893	xorl	12(%edi),%eax
2894	movl	%eax,28(%edi)
2895	incl	%ecx
2896	addl	$16,%edi
2897	cmpl	$10,%ecx
2898	jl	.L04710loop
2899	movl	$10,80(%edi)
2900	xorl	%eax,%eax
2901	jmp	.L045exit
2902.L04312rounds:
2903	movl	(%esi),%eax
2904	movl	4(%esi),%ebx
2905	movl	8(%esi),%ecx
2906	movl	12(%esi),%edx
2907	movl	%eax,(%edi)
2908	movl	%ebx,4(%edi)
2909	movl	%ecx,8(%edi)
2910	movl	%edx,12(%edi)
2911	movl	16(%esi),%ecx
2912	movl	20(%esi),%edx
2913	movl	%ecx,16(%edi)
2914	movl	%edx,20(%edi)
2915	xorl	%ecx,%ecx
2916	jmp	.L04812shortcut
2917.align	4
2918.L04912loop:
2919	movl	(%edi),%eax
2920	movl	20(%edi),%edx
2921.L04812shortcut:
2922	movzbl	%dl,%esi
2923	movzbl	-128(%ebp,%esi,1),%ebx
2924	movzbl	%dh,%esi
2925	shll	$24,%ebx
2926	xorl	%ebx,%eax
2927	movzbl	-128(%ebp,%esi,1),%ebx
2928	shrl	$16,%edx
2929	movzbl	%dl,%esi
2930	xorl	%ebx,%eax
2931	movzbl	-128(%ebp,%esi,1),%ebx
2932	movzbl	%dh,%esi
2933	shll	$8,%ebx
2934	xorl	%ebx,%eax
2935	movzbl	-128(%ebp,%esi,1),%ebx
2936	shll	$16,%ebx
2937	xorl	%ebx,%eax
2938	xorl	896(%ebp,%ecx,4),%eax
2939	movl	%eax,24(%edi)
2940	xorl	4(%edi),%eax
2941	movl	%eax,28(%edi)
2942	xorl	8(%edi),%eax
2943	movl	%eax,32(%edi)
2944	xorl	12(%edi),%eax
2945	movl	%eax,36(%edi)
2946	cmpl	$7,%ecx
2947	je	.L05012break
2948	incl	%ecx
2949	xorl	16(%edi),%eax
2950	movl	%eax,40(%edi)
2951	xorl	20(%edi),%eax
2952	movl	%eax,44(%edi)
2953	addl	$24,%edi
2954	jmp	.L04912loop
2955.L05012break:
2956	movl	$12,72(%edi)
2957	xorl	%eax,%eax
2958	jmp	.L045exit
2959.L04414rounds:
2960	movl	(%esi),%eax
2961	movl	4(%esi),%ebx
2962	movl	8(%esi),%ecx
2963	movl	12(%esi),%edx
2964	movl	%eax,(%edi)
2965	movl	%ebx,4(%edi)
2966	movl	%ecx,8(%edi)
2967	movl	%edx,12(%edi)
2968	movl	16(%esi),%eax
2969	movl	20(%esi),%ebx
2970	movl	24(%esi),%ecx
2971	movl	28(%esi),%edx
2972	movl	%eax,16(%edi)
2973	movl	%ebx,20(%edi)
2974	movl	%ecx,24(%edi)
2975	movl	%edx,28(%edi)
2976	xorl	%ecx,%ecx
2977	jmp	.L05114shortcut
2978.align	4
2979.L05214loop:
2980	movl	28(%edi),%edx
2981.L05114shortcut:
2982	movl	(%edi),%eax
2983	movzbl	%dl,%esi
2984	movzbl	-128(%ebp,%esi,1),%ebx
2985	movzbl	%dh,%esi
2986	shll	$24,%ebx
2987	xorl	%ebx,%eax
2988	movzbl	-128(%ebp,%esi,1),%ebx
2989	shrl	$16,%edx
2990	movzbl	%dl,%esi
2991	xorl	%ebx,%eax
2992	movzbl	-128(%ebp,%esi,1),%ebx
2993	movzbl	%dh,%esi
2994	shll	$8,%ebx
2995	xorl	%ebx,%eax
2996	movzbl	-128(%ebp,%esi,1),%ebx
2997	shll	$16,%ebx
2998	xorl	%ebx,%eax
2999	xorl	896(%ebp,%ecx,4),%eax
3000	movl	%eax,32(%edi)
3001	xorl	4(%edi),%eax
3002	movl	%eax,36(%edi)
3003	xorl	8(%edi),%eax
3004	movl	%eax,40(%edi)
3005	xorl	12(%edi),%eax
3006	movl	%eax,44(%edi)
3007	cmpl	$6,%ecx
3008	je	.L05314break
3009	incl	%ecx
3010	movl	%eax,%edx
3011	movl	16(%edi),%eax
3012	movzbl	%dl,%esi
3013	movzbl	-128(%ebp,%esi,1),%ebx
3014	movzbl	%dh,%esi
3015	xorl	%ebx,%eax
3016	movzbl	-128(%ebp,%esi,1),%ebx
3017	shrl	$16,%edx
3018	shll	$8,%ebx
3019	movzbl	%dl,%esi
3020	xorl	%ebx,%eax
3021	movzbl	-128(%ebp,%esi,1),%ebx
3022	movzbl	%dh,%esi
3023	shll	$16,%ebx
3024	xorl	%ebx,%eax
3025	movzbl	-128(%ebp,%esi,1),%ebx
3026	shll	$24,%ebx
3027	xorl	%ebx,%eax
3028	movl	%eax,48(%edi)
3029	xorl	20(%edi),%eax
3030	movl	%eax,52(%edi)
3031	xorl	24(%edi),%eax
3032	movl	%eax,56(%edi)
3033	xorl	28(%edi),%eax
3034	movl	%eax,60(%edi)
3035	addl	$32,%edi
3036	jmp	.L05214loop
3037.L05314break:
3038	movl	$14,48(%edi)
3039	xorl	%eax,%eax
3040	jmp	.L045exit
3041.L040badpointer:
3042	movl	$-1,%eax
3043.L045exit:
3044	popl	%edi
3045	popl	%esi
3046	popl	%ebx
3047	popl	%ebp
3048	ret
3049.size	_x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key
3050.globl	AES_set_encrypt_key
3051.type	AES_set_encrypt_key,@function
3052.align	16
3053AES_set_encrypt_key:
3054.L_AES_set_encrypt_key_begin:
3055	#ifdef __CET__
3056
3057.byte	243,15,30,251
3058	#endif
3059
3060	call	_x86_AES_set_encrypt_key
3061	ret
3062.size	AES_set_encrypt_key,.-.L_AES_set_encrypt_key_begin
3063.globl	AES_set_decrypt_key
3064.type	AES_set_decrypt_key,@function
3065.align	16
3066AES_set_decrypt_key:
3067.L_AES_set_decrypt_key_begin:
3068	#ifdef __CET__
3069
3070.byte	243,15,30,251
3071	#endif
3072
3073	call	_x86_AES_set_encrypt_key
3074	cmpl	$0,%eax
3075	je	.L054proceed
3076	ret
3077.L054proceed:
3078	pushl	%ebp
3079	pushl	%ebx
3080	pushl	%esi
3081	pushl	%edi
3082	movl	28(%esp),%esi
3083	movl	240(%esi),%ecx
3084	leal	(,%ecx,4),%ecx
3085	leal	(%esi,%ecx,4),%edi
3086.align	4
3087.L055invert:
3088	movl	(%esi),%eax
3089	movl	4(%esi),%ebx
3090	movl	(%edi),%ecx
3091	movl	4(%edi),%edx
3092	movl	%eax,(%edi)
3093	movl	%ebx,4(%edi)
3094	movl	%ecx,(%esi)
3095	movl	%edx,4(%esi)
3096	movl	8(%esi),%eax
3097	movl	12(%esi),%ebx
3098	movl	8(%edi),%ecx
3099	movl	12(%edi),%edx
3100	movl	%eax,8(%edi)
3101	movl	%ebx,12(%edi)
3102	movl	%ecx,8(%esi)
3103	movl	%edx,12(%esi)
3104	addl	$16,%esi
3105	subl	$16,%edi
3106	cmpl	%edi,%esi
3107	jne	.L055invert
3108	movl	28(%esp),%edi
3109	movl	240(%edi),%esi
3110	leal	-2(%esi,%esi,1),%esi
3111	leal	(%edi,%esi,8),%esi
3112	movl	%esi,28(%esp)
3113	movl	16(%edi),%eax
3114.align	4
3115.L056permute:
3116	addl	$16,%edi
3117	movl	$2155905152,%ebp
3118	andl	%eax,%ebp
3119	leal	(%eax,%eax,1),%ebx
3120	movl	%ebp,%esi
3121	shrl	$7,%ebp
3122	subl	%ebp,%esi
3123	andl	$4278124286,%ebx
3124	andl	$454761243,%esi
3125	xorl	%esi,%ebx
3126	movl	$2155905152,%ebp
3127	andl	%ebx,%ebp
3128	leal	(%ebx,%ebx,1),%ecx
3129	movl	%ebp,%esi
3130	shrl	$7,%ebp
3131	subl	%ebp,%esi
3132	andl	$4278124286,%ecx
3133	andl	$454761243,%esi
3134	xorl	%eax,%ebx
3135	xorl	%esi,%ecx
3136	movl	$2155905152,%ebp
3137	andl	%ecx,%ebp
3138	leal	(%ecx,%ecx,1),%edx
3139	movl	%ebp,%esi
3140	shrl	$7,%ebp
3141	xorl	%eax,%ecx
3142	subl	%ebp,%esi
3143	andl	$4278124286,%edx
3144	andl	$454761243,%esi
3145	roll	$8,%eax
3146	xorl	%esi,%edx
3147	movl	4(%edi),%ebp
3148	xorl	%ebx,%eax
3149	xorl	%edx,%ebx
3150	xorl	%ecx,%eax
3151	roll	$24,%ebx
3152	xorl	%edx,%ecx
3153	xorl	%edx,%eax
3154	roll	$16,%ecx
3155	xorl	%ebx,%eax
3156	roll	$8,%edx
3157	xorl	%ecx,%eax
3158	movl	%ebp,%ebx
3159	xorl	%edx,%eax
3160	movl	%eax,(%edi)
3161	movl	$2155905152,%ebp
3162	andl	%ebx,%ebp
3163	leal	(%ebx,%ebx,1),%ecx
3164	movl	%ebp,%esi
3165	shrl	$7,%ebp
3166	subl	%ebp,%esi
3167	andl	$4278124286,%ecx
3168	andl	$454761243,%esi
3169	xorl	%esi,%ecx
3170	movl	$2155905152,%ebp
3171	andl	%ecx,%ebp
3172	leal	(%ecx,%ecx,1),%edx
3173	movl	%ebp,%esi
3174	shrl	$7,%ebp
3175	subl	%ebp,%esi
3176	andl	$4278124286,%edx
3177	andl	$454761243,%esi
3178	xorl	%ebx,%ecx
3179	xorl	%esi,%edx
3180	movl	$2155905152,%ebp
3181	andl	%edx,%ebp
3182	leal	(%edx,%edx,1),%eax
3183	movl	%ebp,%esi
3184	shrl	$7,%ebp
3185	xorl	%ebx,%edx
3186	subl	%ebp,%esi
3187	andl	$4278124286,%eax
3188	andl	$454761243,%esi
3189	roll	$8,%ebx
3190	xorl	%esi,%eax
3191	movl	8(%edi),%ebp
3192	xorl	%ecx,%ebx
3193	xorl	%eax,%ecx
3194	xorl	%edx,%ebx
3195	roll	$24,%ecx
3196	xorl	%eax,%edx
3197	xorl	%eax,%ebx
3198	roll	$16,%edx
3199	xorl	%ecx,%ebx
3200	roll	$8,%eax
3201	xorl	%edx,%ebx
3202	movl	%ebp,%ecx
3203	xorl	%eax,%ebx
3204	movl	%ebx,4(%edi)
3205	movl	$2155905152,%ebp
3206	andl	%ecx,%ebp
3207	leal	(%ecx,%ecx,1),%edx
3208	movl	%ebp,%esi
3209	shrl	$7,%ebp
3210	subl	%ebp,%esi
3211	andl	$4278124286,%edx
3212	andl	$454761243,%esi
3213	xorl	%esi,%edx
3214	movl	$2155905152,%ebp
3215	andl	%edx,%ebp
3216	leal	(%edx,%edx,1),%eax
3217	movl	%ebp,%esi
3218	shrl	$7,%ebp
3219	subl	%ebp,%esi
3220	andl	$4278124286,%eax
3221	andl	$454761243,%esi
3222	xorl	%ecx,%edx
3223	xorl	%esi,%eax
3224	movl	$2155905152,%ebp
3225	andl	%eax,%ebp
3226	leal	(%eax,%eax,1),%ebx
3227	movl	%ebp,%esi
3228	shrl	$7,%ebp
3229	xorl	%ecx,%eax
3230	subl	%ebp,%esi
3231	andl	$4278124286,%ebx
3232	andl	$454761243,%esi
3233	roll	$8,%ecx
3234	xorl	%esi,%ebx
3235	movl	12(%edi),%ebp
3236	xorl	%edx,%ecx
3237	xorl	%ebx,%edx
3238	xorl	%eax,%ecx
3239	roll	$24,%edx
3240	xorl	%ebx,%eax
3241	xorl	%ebx,%ecx
3242	roll	$16,%eax
3243	xorl	%edx,%ecx
3244	roll	$8,%ebx
3245	xorl	%eax,%ecx
3246	movl	%ebp,%edx
3247	xorl	%ebx,%ecx
3248	movl	%ecx,8(%edi)
3249	movl	$2155905152,%ebp
3250	andl	%edx,%ebp
3251	leal	(%edx,%edx,1),%eax
3252	movl	%ebp,%esi
3253	shrl	$7,%ebp
3254	subl	%ebp,%esi
3255	andl	$4278124286,%eax
3256	andl	$454761243,%esi
3257	xorl	%esi,%eax
3258	movl	$2155905152,%ebp
3259	andl	%eax,%ebp
3260	leal	(%eax,%eax,1),%ebx
3261	movl	%ebp,%esi
3262	shrl	$7,%ebp
3263	subl	%ebp,%esi
3264	andl	$4278124286,%ebx
3265	andl	$454761243,%esi
3266	xorl	%edx,%eax
3267	xorl	%esi,%ebx
3268	movl	$2155905152,%ebp
3269	andl	%ebx,%ebp
3270	leal	(%ebx,%ebx,1),%ecx
3271	movl	%ebp,%esi
3272	shrl	$7,%ebp
3273	xorl	%edx,%ebx
3274	subl	%ebp,%esi
3275	andl	$4278124286,%ecx
3276	andl	$454761243,%esi
3277	roll	$8,%edx
3278	xorl	%esi,%ecx
3279	movl	16(%edi),%ebp
3280	xorl	%eax,%edx
3281	xorl	%ecx,%eax
3282	xorl	%ebx,%edx
3283	roll	$24,%eax
3284	xorl	%ecx,%ebx
3285	xorl	%ecx,%edx
3286	roll	$16,%ebx
3287	xorl	%eax,%edx
3288	roll	$8,%ecx
3289	xorl	%ebx,%edx
3290	movl	%ebp,%eax
3291	xorl	%ecx,%edx
3292	movl	%edx,12(%edi)
3293	cmpl	28(%esp),%edi
3294	jb	.L056permute
3295	xorl	%eax,%eax
3296	popl	%edi
3297	popl	%esi
3298	popl	%ebx
3299	popl	%ebp
3300	ret
3301.size	AES_set_decrypt_key,.-.L_AES_set_decrypt_key_begin
3302.byte	65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
3303.byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
3304.byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3305.comm	OPENSSL_ia32cap_P,16,4
3306
3307	.section ".note.gnu.property", "a"
3308	.p2align 2
3309	.long 1f - 0f
3310	.long 4f - 1f
3311	.long 5
33120:
3313	.asciz "GNU"
33141:
3315	.p2align 2
3316	.long 0xc0000002
3317	.long 3f - 2f
33182:
3319	.long 3
33203:
3321	.p2align 2
33224:
3323#else
3324.text
3325.type	_x86_AES_encrypt_compact,@function
3326.align	16
3327_x86_AES_encrypt_compact:
3328	#ifdef __CET__
3329
3330.byte	243,15,30,251
3331	#endif
3332
3333	movl	%edi,20(%esp)
3334	xorl	(%edi),%eax
3335	xorl	4(%edi),%ebx
3336	xorl	8(%edi),%ecx
3337	xorl	12(%edi),%edx
3338	movl	240(%edi),%esi
3339	leal	-2(%esi,%esi,1),%esi
3340	leal	(%edi,%esi,8),%esi
3341	movl	%esi,24(%esp)
3342	movl	-128(%ebp),%edi
3343	movl	-96(%ebp),%esi
3344	movl	-64(%ebp),%edi
3345	movl	-32(%ebp),%esi
3346	movl	(%ebp),%edi
3347	movl	32(%ebp),%esi
3348	movl	64(%ebp),%edi
3349	movl	96(%ebp),%esi
3350.align	16
3351.L000loop:
3352	movl	%eax,%esi
3353	andl	$255,%esi
3354	movzbl	-128(%ebp,%esi,1),%esi
3355	movzbl	%bh,%edi
3356	movzbl	-128(%ebp,%edi,1),%edi
3357	shll	$8,%edi
3358	xorl	%edi,%esi
3359	movl	%ecx,%edi
3360	shrl	$16,%edi
3361	andl	$255,%edi
3362	movzbl	-128(%ebp,%edi,1),%edi
3363	shll	$16,%edi
3364	xorl	%edi,%esi
3365	movl	%edx,%edi
3366	shrl	$24,%edi
3367	movzbl	-128(%ebp,%edi,1),%edi
3368	shll	$24,%edi
3369	xorl	%edi,%esi
3370	movl	%esi,4(%esp)
3371
3372	movl	%ebx,%esi
3373	andl	$255,%esi
3374	shrl	$16,%ebx
3375	movzbl	-128(%ebp,%esi,1),%esi
3376	movzbl	%ch,%edi
3377	movzbl	-128(%ebp,%edi,1),%edi
3378	shll	$8,%edi
3379	xorl	%edi,%esi
3380	movl	%edx,%edi
3381	shrl	$16,%edi
3382	andl	$255,%edi
3383	movzbl	-128(%ebp,%edi,1),%edi
3384	shll	$16,%edi
3385	xorl	%edi,%esi
3386	movl	%eax,%edi
3387	shrl	$24,%edi
3388	movzbl	-128(%ebp,%edi,1),%edi
3389	shll	$24,%edi
3390	xorl	%edi,%esi
3391	movl	%esi,8(%esp)
3392
3393	movl	%ecx,%esi
3394	andl	$255,%esi
3395	shrl	$24,%ecx
3396	movzbl	-128(%ebp,%esi,1),%esi
3397	movzbl	%dh,%edi
3398	movzbl	-128(%ebp,%edi,1),%edi
3399	shll	$8,%edi
3400	xorl	%edi,%esi
3401	movl	%eax,%edi
3402	shrl	$16,%edi
3403	andl	$255,%edx
3404	andl	$255,%edi
3405	movzbl	-128(%ebp,%edi,1),%edi
3406	shll	$16,%edi
3407	xorl	%edi,%esi
3408	movzbl	%bh,%edi
3409	movzbl	-128(%ebp,%edi,1),%edi
3410	shll	$24,%edi
3411	xorl	%edi,%esi
3412
3413	andl	$255,%edx
3414	movzbl	-128(%ebp,%edx,1),%edx
3415	movzbl	%ah,%eax
3416	movzbl	-128(%ebp,%eax,1),%eax
3417	shll	$8,%eax
3418	xorl	%eax,%edx
3419	movl	4(%esp),%eax
3420	andl	$255,%ebx
3421	movzbl	-128(%ebp,%ebx,1),%ebx
3422	shll	$16,%ebx
3423	xorl	%ebx,%edx
3424	movl	8(%esp),%ebx
3425	movzbl	-128(%ebp,%ecx,1),%ecx
3426	shll	$24,%ecx
3427	xorl	%ecx,%edx
3428	movl	%esi,%ecx
3429
3430	movl	$2155905152,%ebp
3431	andl	%ecx,%ebp
3432	leal	(%ecx,%ecx,1),%edi
3433	movl	%ebp,%esi
3434	shrl	$7,%ebp
3435	andl	$4278124286,%edi
3436	subl	%ebp,%esi
3437	movl	%ecx,%ebp
3438	andl	$454761243,%esi
3439	rorl	$16,%ebp
3440	xorl	%edi,%esi
3441	movl	%ecx,%edi
3442	xorl	%esi,%ecx
3443	rorl	$24,%edi
3444	xorl	%ebp,%esi
3445	roll	$24,%ecx
3446	xorl	%edi,%esi
3447	movl	$2155905152,%ebp
3448	xorl	%esi,%ecx
3449	andl	%edx,%ebp
3450	leal	(%edx,%edx,1),%edi
3451	movl	%ebp,%esi
3452	shrl	$7,%ebp
3453	andl	$4278124286,%edi
3454	subl	%ebp,%esi
3455	movl	%edx,%ebp
3456	andl	$454761243,%esi
3457	rorl	$16,%ebp
3458	xorl	%edi,%esi
3459	movl	%edx,%edi
3460	xorl	%esi,%edx
3461	rorl	$24,%edi
3462	xorl	%ebp,%esi
3463	roll	$24,%edx
3464	xorl	%edi,%esi
3465	movl	$2155905152,%ebp
3466	xorl	%esi,%edx
3467	andl	%eax,%ebp
3468	leal	(%eax,%eax,1),%edi
3469	movl	%ebp,%esi
3470	shrl	$7,%ebp
3471	andl	$4278124286,%edi
3472	subl	%ebp,%esi
3473	movl	%eax,%ebp
3474	andl	$454761243,%esi
3475	rorl	$16,%ebp
3476	xorl	%edi,%esi
3477	movl	%eax,%edi
3478	xorl	%esi,%eax
3479	rorl	$24,%edi
3480	xorl	%ebp,%esi
3481	roll	$24,%eax
3482	xorl	%edi,%esi
3483	movl	$2155905152,%ebp
3484	xorl	%esi,%eax
3485	andl	%ebx,%ebp
3486	leal	(%ebx,%ebx,1),%edi
3487	movl	%ebp,%esi
3488	shrl	$7,%ebp
3489	andl	$4278124286,%edi
3490	subl	%ebp,%esi
3491	movl	%ebx,%ebp
3492	andl	$454761243,%esi
3493	rorl	$16,%ebp
3494	xorl	%edi,%esi
3495	movl	%ebx,%edi
3496	xorl	%esi,%ebx
3497	rorl	$24,%edi
3498	xorl	%ebp,%esi
3499	roll	$24,%ebx
3500	xorl	%edi,%esi
3501	xorl	%esi,%ebx
3502	movl	20(%esp),%edi
3503	movl	28(%esp),%ebp
3504	addl	$16,%edi
3505	xorl	(%edi),%eax
3506	xorl	4(%edi),%ebx
3507	xorl	8(%edi),%ecx
3508	xorl	12(%edi),%edx
3509	cmpl	24(%esp),%edi
3510	movl	%edi,20(%esp)
3511	jb	.L000loop
3512	movl	%eax,%esi
3513	andl	$255,%esi
3514	movzbl	-128(%ebp,%esi,1),%esi
3515	movzbl	%bh,%edi
3516	movzbl	-128(%ebp,%edi,1),%edi
3517	shll	$8,%edi
3518	xorl	%edi,%esi
3519	movl	%ecx,%edi
3520	shrl	$16,%edi
3521	andl	$255,%edi
3522	movzbl	-128(%ebp,%edi,1),%edi
3523	shll	$16,%edi
3524	xorl	%edi,%esi
3525	movl	%edx,%edi
3526	shrl	$24,%edi
3527	movzbl	-128(%ebp,%edi,1),%edi
3528	shll	$24,%edi
3529	xorl	%edi,%esi
3530	movl	%esi,4(%esp)
3531
3532	movl	%ebx,%esi
3533	andl	$255,%esi
3534	shrl	$16,%ebx
3535	movzbl	-128(%ebp,%esi,1),%esi
3536	movzbl	%ch,%edi
3537	movzbl	-128(%ebp,%edi,1),%edi
3538	shll	$8,%edi
3539	xorl	%edi,%esi
3540	movl	%edx,%edi
3541	shrl	$16,%edi
3542	andl	$255,%edi
3543	movzbl	-128(%ebp,%edi,1),%edi
3544	shll	$16,%edi
3545	xorl	%edi,%esi
3546	movl	%eax,%edi
3547	shrl	$24,%edi
3548	movzbl	-128(%ebp,%edi,1),%edi
3549	shll	$24,%edi
3550	xorl	%edi,%esi
3551	movl	%esi,8(%esp)
3552
3553	movl	%ecx,%esi
3554	andl	$255,%esi
3555	shrl	$24,%ecx
3556	movzbl	-128(%ebp,%esi,1),%esi
3557	movzbl	%dh,%edi
3558	movzbl	-128(%ebp,%edi,1),%edi
3559	shll	$8,%edi
3560	xorl	%edi,%esi
3561	movl	%eax,%edi
3562	shrl	$16,%edi
3563	andl	$255,%edx
3564	andl	$255,%edi
3565	movzbl	-128(%ebp,%edi,1),%edi
3566	shll	$16,%edi
3567	xorl	%edi,%esi
3568	movzbl	%bh,%edi
3569	movzbl	-128(%ebp,%edi,1),%edi
3570	shll	$24,%edi
3571	xorl	%edi,%esi
3572
3573	movl	20(%esp),%edi
3574	andl	$255,%edx
3575	movzbl	-128(%ebp,%edx,1),%edx
3576	movzbl	%ah,%eax
3577	movzbl	-128(%ebp,%eax,1),%eax
3578	shll	$8,%eax
3579	xorl	%eax,%edx
3580	movl	4(%esp),%eax
3581	andl	$255,%ebx
3582	movzbl	-128(%ebp,%ebx,1),%ebx
3583	shll	$16,%ebx
3584	xorl	%ebx,%edx
3585	movl	8(%esp),%ebx
3586	movzbl	-128(%ebp,%ecx,1),%ecx
3587	shll	$24,%ecx
3588	xorl	%ecx,%edx
3589	movl	%esi,%ecx
3590
3591	xorl	16(%edi),%eax
3592	xorl	20(%edi),%ebx
3593	xorl	24(%edi),%ecx
3594	xorl	28(%edi),%edx
3595	ret
3596.size	_x86_AES_encrypt_compact,.-_x86_AES_encrypt_compact
3597.type	_sse_AES_encrypt_compact,@function
3598.align	16
3599_sse_AES_encrypt_compact:
3600	#ifdef __CET__
3601
3602.byte	243,15,30,251
3603	#endif
3604
3605	pxor	(%edi),%mm0
3606	pxor	8(%edi),%mm4
3607	movl	240(%edi),%esi
3608	leal	-2(%esi,%esi,1),%esi
3609	leal	(%edi,%esi,8),%esi
3610	movl	%esi,24(%esp)
3611	movl	$454761243,%eax
3612	movl	%eax,8(%esp)
3613	movl	%eax,12(%esp)
3614	movl	-128(%ebp),%eax
3615	movl	-96(%ebp),%ebx
3616	movl	-64(%ebp),%ecx
3617	movl	-32(%ebp),%edx
3618	movl	(%ebp),%eax
3619	movl	32(%ebp),%ebx
3620	movl	64(%ebp),%ecx
3621	movl	96(%ebp),%edx
3622.align	16
3623.L001loop:
3624	pshufw	$8,%mm0,%mm1
3625	pshufw	$13,%mm4,%mm5
3626	movd	%mm1,%eax
3627	movd	%mm5,%ebx
3628	movl	%edi,20(%esp)
3629	movzbl	%al,%esi
3630	movzbl	%ah,%edx
3631	pshufw	$13,%mm0,%mm2
3632	movzbl	-128(%ebp,%esi,1),%ecx
3633	movzbl	%bl,%edi
3634	movzbl	-128(%ebp,%edx,1),%edx
3635	shrl	$16,%eax
3636	shll	$8,%edx
3637	movzbl	-128(%ebp,%edi,1),%esi
3638	movzbl	%bh,%edi
3639	shll	$16,%esi
3640	pshufw	$8,%mm4,%mm6
3641	orl	%esi,%ecx
3642	movzbl	-128(%ebp,%edi,1),%esi
3643	movzbl	%ah,%edi
3644	shll	$24,%esi
3645	shrl	$16,%ebx
3646	orl	%esi,%edx
3647	movzbl	-128(%ebp,%edi,1),%esi
3648	movzbl	%bh,%edi
3649	shll	$8,%esi
3650	orl	%esi,%ecx
3651	movzbl	-128(%ebp,%edi,1),%esi
3652	movzbl	%al,%edi
3653	shll	$24,%esi
3654	orl	%esi,%ecx
3655	movzbl	-128(%ebp,%edi,1),%esi
3656	movzbl	%bl,%edi
3657	movd	%mm2,%eax
3658	movd	%ecx,%mm0
3659	movzbl	-128(%ebp,%edi,1),%ecx
3660	movzbl	%ah,%edi
3661	shll	$16,%ecx
3662	movd	%mm6,%ebx
3663	orl	%esi,%ecx
3664	movzbl	-128(%ebp,%edi,1),%esi
3665	movzbl	%bh,%edi
3666	shll	$24,%esi
3667	orl	%esi,%ecx
3668	movzbl	-128(%ebp,%edi,1),%esi
3669	movzbl	%bl,%edi
3670	shll	$8,%esi
3671	shrl	$16,%ebx
3672	orl	%esi,%ecx
3673	movzbl	-128(%ebp,%edi,1),%esi
3674	movzbl	%al,%edi
3675	shrl	$16,%eax
3676	movd	%ecx,%mm1
3677	movzbl	-128(%ebp,%edi,1),%ecx
3678	movzbl	%ah,%edi
3679	shll	$16,%ecx
3680	andl	$255,%eax
3681	orl	%esi,%ecx
3682	punpckldq	%mm1,%mm0
3683	movzbl	-128(%ebp,%edi,1),%esi
3684	movzbl	%bh,%edi
3685	shll	$24,%esi
3686	andl	$255,%ebx
3687	movzbl	-128(%ebp,%eax,1),%eax
3688	orl	%esi,%ecx
3689	shll	$16,%eax
3690	movzbl	-128(%ebp,%edi,1),%esi
3691	orl	%eax,%edx
3692	shll	$8,%esi
3693	movzbl	-128(%ebp,%ebx,1),%ebx
3694	orl	%esi,%ecx
3695	orl	%ebx,%edx
3696	movl	20(%esp),%edi
3697	movd	%ecx,%mm4
3698	movd	%edx,%mm5
3699	punpckldq	%mm5,%mm4
3700	addl	$16,%edi
3701	cmpl	24(%esp),%edi
3702	ja	.L002out
3703	movq	8(%esp),%mm2
3704	pxor	%mm3,%mm3
3705	pxor	%mm7,%mm7
3706	movq	%mm0,%mm1
3707	movq	%mm4,%mm5
3708	pcmpgtb	%mm0,%mm3
3709	pcmpgtb	%mm4,%mm7
3710	pand	%mm2,%mm3
3711	pand	%mm2,%mm7
3712	pshufw	$177,%mm0,%mm2
3713	pshufw	$177,%mm4,%mm6
3714	paddb	%mm0,%mm0
3715	paddb	%mm4,%mm4
3716	pxor	%mm3,%mm0
3717	pxor	%mm7,%mm4
3718	pshufw	$177,%mm2,%mm3
3719	pshufw	$177,%mm6,%mm7
3720	pxor	%mm0,%mm1
3721	pxor	%mm4,%mm5
3722	pxor	%mm2,%mm0
3723	pxor	%mm6,%mm4
3724	movq	%mm3,%mm2
3725	movq	%mm7,%mm6
3726	pslld	$8,%mm3
3727	pslld	$8,%mm7
3728	psrld	$24,%mm2
3729	psrld	$24,%mm6
3730	pxor	%mm3,%mm0
3731	pxor	%mm7,%mm4
3732	pxor	%mm2,%mm0
3733	pxor	%mm6,%mm4
3734	movq	%mm1,%mm3
3735	movq	%mm5,%mm7
3736	movq	(%edi),%mm2
3737	movq	8(%edi),%mm6
3738	psrld	$8,%mm1
3739	psrld	$8,%mm5
3740	movl	-128(%ebp),%eax
3741	pslld	$24,%mm3
3742	pslld	$24,%mm7
3743	movl	-64(%ebp),%ebx
3744	pxor	%mm1,%mm0
3745	pxor	%mm5,%mm4
3746	movl	(%ebp),%ecx
3747	pxor	%mm3,%mm0
3748	pxor	%mm7,%mm4
3749	movl	64(%ebp),%edx
3750	pxor	%mm2,%mm0
3751	pxor	%mm6,%mm4
3752	jmp	.L001loop
3753.align	16
3754.L002out:
3755	pxor	(%edi),%mm0
3756	pxor	8(%edi),%mm4
3757	ret
3758.size	_sse_AES_encrypt_compact,.-_sse_AES_encrypt_compact
3759.type	_x86_AES_encrypt,@function
3760.align	16
3761_x86_AES_encrypt:
3762	#ifdef __CET__
3763
3764.byte	243,15,30,251
3765	#endif
3766
3767	movl	%edi,20(%esp)
3768	xorl	(%edi),%eax
3769	xorl	4(%edi),%ebx
3770	xorl	8(%edi),%ecx
3771	xorl	12(%edi),%edx
3772	movl	240(%edi),%esi
3773	leal	-2(%esi,%esi,1),%esi
3774	leal	(%edi,%esi,8),%esi
3775	movl	%esi,24(%esp)
3776.align	16
3777.L003loop:
3778	movl	%eax,%esi
3779	andl	$255,%esi
3780	movl	(%ebp,%esi,8),%esi
3781	movzbl	%bh,%edi
3782	xorl	3(%ebp,%edi,8),%esi
3783	movl	%ecx,%edi
3784	shrl	$16,%edi
3785	andl	$255,%edi
3786	xorl	2(%ebp,%edi,8),%esi
3787	movl	%edx,%edi
3788	shrl	$24,%edi
3789	xorl	1(%ebp,%edi,8),%esi
3790	movl	%esi,4(%esp)
3791
3792	movl	%ebx,%esi
3793	andl	$255,%esi
3794	shrl	$16,%ebx
3795	movl	(%ebp,%esi,8),%esi
3796	movzbl	%ch,%edi
3797	xorl	3(%ebp,%edi,8),%esi
3798	movl	%edx,%edi
3799	shrl	$16,%edi
3800	andl	$255,%edi
3801	xorl	2(%ebp,%edi,8),%esi
3802	movl	%eax,%edi
3803	shrl	$24,%edi
3804	xorl	1(%ebp,%edi,8),%esi
3805	movl	%esi,8(%esp)
3806
3807	movl	%ecx,%esi
3808	andl	$255,%esi
3809	shrl	$24,%ecx
3810	movl	(%ebp,%esi,8),%esi
3811	movzbl	%dh,%edi
3812	xorl	3(%ebp,%edi,8),%esi
3813	movl	%eax,%edi
3814	shrl	$16,%edi
3815	andl	$255,%edx
3816	andl	$255,%edi
3817	xorl	2(%ebp,%edi,8),%esi
3818	movzbl	%bh,%edi
3819	xorl	1(%ebp,%edi,8),%esi
3820
3821	movl	20(%esp),%edi
3822	movl	(%ebp,%edx,8),%edx
3823	movzbl	%ah,%eax
3824	xorl	3(%ebp,%eax,8),%edx
3825	movl	4(%esp),%eax
3826	andl	$255,%ebx
3827	xorl	2(%ebp,%ebx,8),%edx
3828	movl	8(%esp),%ebx
3829	xorl	1(%ebp,%ecx,8),%edx
3830	movl	%esi,%ecx
3831
3832	addl	$16,%edi
3833	xorl	(%edi),%eax
3834	xorl	4(%edi),%ebx
3835	xorl	8(%edi),%ecx
3836	xorl	12(%edi),%edx
3837	cmpl	24(%esp),%edi
3838	movl	%edi,20(%esp)
3839	jb	.L003loop
3840	movl	%eax,%esi
3841	andl	$255,%esi
3842	movl	2(%ebp,%esi,8),%esi
3843	andl	$255,%esi
3844	movzbl	%bh,%edi
3845	movl	(%ebp,%edi,8),%edi
3846	andl	$65280,%edi
3847	xorl	%edi,%esi
3848	movl	%ecx,%edi
3849	shrl	$16,%edi
3850	andl	$255,%edi
3851	movl	(%ebp,%edi,8),%edi
3852	andl	$16711680,%edi
3853	xorl	%edi,%esi
3854	movl	%edx,%edi
3855	shrl	$24,%edi
3856	movl	2(%ebp,%edi,8),%edi
3857	andl	$4278190080,%edi
3858	xorl	%edi,%esi
3859	movl	%esi,4(%esp)
3860	movl	%ebx,%esi
3861	andl	$255,%esi
3862	shrl	$16,%ebx
3863	movl	2(%ebp,%esi,8),%esi
3864	andl	$255,%esi
3865	movzbl	%ch,%edi
3866	movl	(%ebp,%edi,8),%edi
3867	andl	$65280,%edi
3868	xorl	%edi,%esi
3869	movl	%edx,%edi
3870	shrl	$16,%edi
3871	andl	$255,%edi
3872	movl	(%ebp,%edi,8),%edi
3873	andl	$16711680,%edi
3874	xorl	%edi,%esi
3875	movl	%eax,%edi
3876	shrl	$24,%edi
3877	movl	2(%ebp,%edi,8),%edi
3878	andl	$4278190080,%edi
3879	xorl	%edi,%esi
3880	movl	%esi,8(%esp)
3881	movl	%ecx,%esi
3882	andl	$255,%esi
3883	shrl	$24,%ecx
3884	movl	2(%ebp,%esi,8),%esi
3885	andl	$255,%esi
3886	movzbl	%dh,%edi
3887	movl	(%ebp,%edi,8),%edi
3888	andl	$65280,%edi
3889	xorl	%edi,%esi
3890	movl	%eax,%edi
3891	shrl	$16,%edi
3892	andl	$255,%edx
3893	andl	$255,%edi
3894	movl	(%ebp,%edi,8),%edi
3895	andl	$16711680,%edi
3896	xorl	%edi,%esi
3897	movzbl	%bh,%edi
3898	movl	2(%ebp,%edi,8),%edi
3899	andl	$4278190080,%edi
3900	xorl	%edi,%esi
3901	movl	20(%esp),%edi
3902	andl	$255,%edx
3903	movl	2(%ebp,%edx,8),%edx
3904	andl	$255,%edx
3905	movzbl	%ah,%eax
3906	movl	(%ebp,%eax,8),%eax
3907	andl	$65280,%eax
3908	xorl	%eax,%edx
3909	movl	4(%esp),%eax
3910	andl	$255,%ebx
3911	movl	(%ebp,%ebx,8),%ebx
3912	andl	$16711680,%ebx
3913	xorl	%ebx,%edx
3914	movl	8(%esp),%ebx
3915	movl	2(%ebp,%ecx,8),%ecx
3916	andl	$4278190080,%ecx
3917	xorl	%ecx,%edx
3918	movl	%esi,%ecx
3919	addl	$16,%edi
3920	xorl	(%edi),%eax
3921	xorl	4(%edi),%ebx
3922	xorl	8(%edi),%ecx
3923	xorl	12(%edi),%edx
3924	ret
3925.align	64
3926.LAES_Te:
3927.long	2774754246,2774754246
3928.long	2222750968,2222750968
3929.long	2574743534,2574743534
3930.long	2373680118,2373680118
3931.long	234025727,234025727
3932.long	3177933782,3177933782
3933.long	2976870366,2976870366
3934.long	1422247313,1422247313
3935.long	1345335392,1345335392
3936.long	50397442,50397442
3937.long	2842126286,2842126286
3938.long	2099981142,2099981142
3939.long	436141799,436141799
3940.long	1658312629,1658312629
3941.long	3870010189,3870010189
3942.long	2591454956,2591454956
3943.long	1170918031,1170918031
3944.long	2642575903,2642575903
3945.long	1086966153,1086966153
3946.long	2273148410,2273148410
3947.long	368769775,368769775
3948.long	3948501426,3948501426
3949.long	3376891790,3376891790
3950.long	200339707,200339707
3951.long	3970805057,3970805057
3952.long	1742001331,1742001331
3953.long	4255294047,4255294047
3954.long	3937382213,3937382213
3955.long	3214711843,3214711843
3956.long	4154762323,4154762323
3957.long	2524082916,2524082916
3958.long	1539358875,1539358875
3959.long	3266819957,3266819957
3960.long	486407649,486407649
3961.long	2928907069,2928907069
3962.long	1780885068,1780885068
3963.long	1513502316,1513502316
3964.long	1094664062,1094664062
3965.long	49805301,49805301
3966.long	1338821763,1338821763
3967.long	1546925160,1546925160
3968.long	4104496465,4104496465
3969.long	887481809,887481809
3970.long	150073849,150073849
3971.long	2473685474,2473685474
3972.long	1943591083,1943591083
3973.long	1395732834,1395732834
3974.long	1058346282,1058346282
3975.long	201589768,201589768
3976.long	1388824469,1388824469
3977.long	1696801606,1696801606
3978.long	1589887901,1589887901
3979.long	672667696,672667696
3980.long	2711000631,2711000631
3981.long	251987210,251987210
3982.long	3046808111,3046808111
3983.long	151455502,151455502
3984.long	907153956,907153956
3985.long	2608889883,2608889883
3986.long	1038279391,1038279391
3987.long	652995533,652995533
3988.long	1764173646,1764173646
3989.long	3451040383,3451040383
3990.long	2675275242,2675275242
3991.long	453576978,453576978
3992.long	2659418909,2659418909
3993.long	1949051992,1949051992
3994.long	773462580,773462580
3995.long	756751158,756751158
3996.long	2993581788,2993581788
3997.long	3998898868,3998898868
3998.long	4221608027,4221608027
3999.long	4132590244,4132590244
4000.long	1295727478,1295727478
4001.long	1641469623,1641469623
4002.long	3467883389,3467883389
4003.long	2066295122,2066295122
4004.long	1055122397,1055122397
4005.long	1898917726,1898917726
4006.long	2542044179,2542044179
4007.long	4115878822,4115878822
4008.long	1758581177,1758581177
4009.long	0,0
4010.long	753790401,753790401
4011.long	1612718144,1612718144
4012.long	536673507,536673507
4013.long	3367088505,3367088505
4014.long	3982187446,3982187446
4015.long	3194645204,3194645204
4016.long	1187761037,1187761037
4017.long	3653156455,3653156455
4018.long	1262041458,1262041458
4019.long	3729410708,3729410708
4020.long	3561770136,3561770136
4021.long	3898103984,3898103984
4022.long	1255133061,1255133061
4023.long	1808847035,1808847035
4024.long	720367557,720367557
4025.long	3853167183,3853167183
4026.long	385612781,385612781
4027.long	3309519750,3309519750
4028.long	3612167578,3612167578
4029.long	1429418854,1429418854
4030.long	2491778321,2491778321
4031.long	3477423498,3477423498
4032.long	284817897,284817897
4033.long	100794884,100794884
4034.long	2172616702,2172616702
4035.long	4031795360,4031795360
4036.long	1144798328,1144798328
4037.long	3131023141,3131023141
4038.long	3819481163,3819481163
4039.long	4082192802,4082192802
4040.long	4272137053,4272137053
4041.long	3225436288,3225436288
4042.long	2324664069,2324664069
4043.long	2912064063,2912064063
4044.long	3164445985,3164445985
4045.long	1211644016,1211644016
4046.long	83228145,83228145
4047.long	3753688163,3753688163
4048.long	3249976951,3249976951
4049.long	1977277103,1977277103
4050.long	1663115586,1663115586
4051.long	806359072,806359072
4052.long	452984805,452984805
4053.long	250868733,250868733
4054.long	1842533055,1842533055
4055.long	1288555905,1288555905
4056.long	336333848,336333848
4057.long	890442534,890442534
4058.long	804056259,804056259
4059.long	3781124030,3781124030
4060.long	2727843637,2727843637
4061.long	3427026056,3427026056
4062.long	957814574,957814574
4063.long	1472513171,1472513171
4064.long	4071073621,4071073621
4065.long	2189328124,2189328124
4066.long	1195195770,1195195770
4067.long	2892260552,2892260552
4068.long	3881655738,3881655738
4069.long	723065138,723065138
4070.long	2507371494,2507371494
4071.long	2690670784,2690670784
4072.long	2558624025,2558624025
4073.long	3511635870,3511635870
4074.long	2145180835,2145180835
4075.long	1713513028,1713513028
4076.long	2116692564,2116692564
4077.long	2878378043,2878378043
4078.long	2206763019,2206763019
4079.long	3393603212,3393603212
4080.long	703524551,703524551
4081.long	3552098411,3552098411
4082.long	1007948840,1007948840
4083.long	2044649127,2044649127
4084.long	3797835452,3797835452
4085.long	487262998,487262998
4086.long	1994120109,1994120109
4087.long	1004593371,1004593371
4088.long	1446130276,1446130276
4089.long	1312438900,1312438900
4090.long	503974420,503974420
4091.long	3679013266,3679013266
4092.long	168166924,168166924
4093.long	1814307912,1814307912
4094.long	3831258296,3831258296
4095.long	1573044895,1573044895
4096.long	1859376061,1859376061
4097.long	4021070915,4021070915
4098.long	2791465668,2791465668
4099.long	2828112185,2828112185
4100.long	2761266481,2761266481
4101.long	937747667,937747667
4102.long	2339994098,2339994098
4103.long	854058965,854058965
4104.long	1137232011,1137232011
4105.long	1496790894,1496790894
4106.long	3077402074,3077402074
4107.long	2358086913,2358086913
4108.long	1691735473,1691735473
4109.long	3528347292,3528347292
4110.long	3769215305,3769215305
4111.long	3027004632,3027004632
4112.long	4199962284,4199962284
4113.long	133494003,133494003
4114.long	636152527,636152527
4115.long	2942657994,2942657994
4116.long	2390391540,2390391540
4117.long	3920539207,3920539207
4118.long	403179536,403179536
4119.long	3585784431,3585784431
4120.long	2289596656,2289596656
4121.long	1864705354,1864705354
4122.long	1915629148,1915629148
4123.long	605822008,605822008
4124.long	4054230615,4054230615
4125.long	3350508659,3350508659
4126.long	1371981463,1371981463
4127.long	602466507,602466507
4128.long	2094914977,2094914977
4129.long	2624877800,2624877800
4130.long	555687742,555687742
4131.long	3712699286,3712699286
4132.long	3703422305,3703422305
4133.long	2257292045,2257292045
4134.long	2240449039,2240449039
4135.long	2423288032,2423288032
4136.long	1111375484,1111375484
4137.long	3300242801,3300242801
4138.long	2858837708,2858837708
4139.long	3628615824,3628615824
4140.long	84083462,84083462
4141.long	32962295,32962295
4142.long	302911004,302911004
4143.long	2741068226,2741068226
4144.long	1597322602,1597322602
4145.long	4183250862,4183250862
4146.long	3501832553,3501832553
4147.long	2441512471,2441512471
4148.long	1489093017,1489093017
4149.long	656219450,656219450
4150.long	3114180135,3114180135
4151.long	954327513,954327513
4152.long	335083755,335083755
4153.long	3013122091,3013122091
4154.long	856756514,856756514
4155.long	3144247762,3144247762
4156.long	1893325225,1893325225
4157.long	2307821063,2307821063
4158.long	2811532339,2811532339
4159.long	3063651117,3063651117
4160.long	572399164,572399164
4161.long	2458355477,2458355477
4162.long	552200649,552200649
4163.long	1238290055,1238290055
4164.long	4283782570,4283782570
4165.long	2015897680,2015897680
4166.long	2061492133,2061492133
4167.long	2408352771,2408352771
4168.long	4171342169,4171342169
4169.long	2156497161,2156497161
4170.long	386731290,386731290
4171.long	3669999461,3669999461
4172.long	837215959,837215959
4173.long	3326231172,3326231172
4174.long	3093850320,3093850320
4175.long	3275833730,3275833730
4176.long	2962856233,2962856233
4177.long	1999449434,1999449434
4178.long	286199582,286199582
4179.long	3417354363,3417354363
4180.long	4233385128,4233385128
4181.long	3602627437,3602627437
4182.long	974525996,974525996
4183.byte	99,124,119,123,242,107,111,197
4184.byte	48,1,103,43,254,215,171,118
4185.byte	202,130,201,125,250,89,71,240
4186.byte	173,212,162,175,156,164,114,192
4187.byte	183,253,147,38,54,63,247,204
4188.byte	52,165,229,241,113,216,49,21
4189.byte	4,199,35,195,24,150,5,154
4190.byte	7,18,128,226,235,39,178,117
4191.byte	9,131,44,26,27,110,90,160
4192.byte	82,59,214,179,41,227,47,132
4193.byte	83,209,0,237,32,252,177,91
4194.byte	106,203,190,57,74,76,88,207
4195.byte	208,239,170,251,67,77,51,133
4196.byte	69,249,2,127,80,60,159,168
4197.byte	81,163,64,143,146,157,56,245
4198.byte	188,182,218,33,16,255,243,210
4199.byte	205,12,19,236,95,151,68,23
4200.byte	196,167,126,61,100,93,25,115
4201.byte	96,129,79,220,34,42,144,136
4202.byte	70,238,184,20,222,94,11,219
4203.byte	224,50,58,10,73,6,36,92
4204.byte	194,211,172,98,145,149,228,121
4205.byte	231,200,55,109,141,213,78,169
4206.byte	108,86,244,234,101,122,174,8
4207.byte	186,120,37,46,28,166,180,198
4208.byte	232,221,116,31,75,189,139,138
4209.byte	112,62,181,102,72,3,246,14
4210.byte	97,53,87,185,134,193,29,158
4211.byte	225,248,152,17,105,217,142,148
4212.byte	155,30,135,233,206,85,40,223
4213.byte	140,161,137,13,191,230,66,104
4214.byte	65,153,45,15,176,84,187,22
4215.byte	99,124,119,123,242,107,111,197
4216.byte	48,1,103,43,254,215,171,118
4217.byte	202,130,201,125,250,89,71,240
4218.byte	173,212,162,175,156,164,114,192
4219.byte	183,253,147,38,54,63,247,204
4220.byte	52,165,229,241,113,216,49,21
4221.byte	4,199,35,195,24,150,5,154
4222.byte	7,18,128,226,235,39,178,117
4223.byte	9,131,44,26,27,110,90,160
4224.byte	82,59,214,179,41,227,47,132
4225.byte	83,209,0,237,32,252,177,91
4226.byte	106,203,190,57,74,76,88,207
4227.byte	208,239,170,251,67,77,51,133
4228.byte	69,249,2,127,80,60,159,168
4229.byte	81,163,64,143,146,157,56,245
4230.byte	188,182,218,33,16,255,243,210
4231.byte	205,12,19,236,95,151,68,23
4232.byte	196,167,126,61,100,93,25,115
4233.byte	96,129,79,220,34,42,144,136
4234.byte	70,238,184,20,222,94,11,219
4235.byte	224,50,58,10,73,6,36,92
4236.byte	194,211,172,98,145,149,228,121
4237.byte	231,200,55,109,141,213,78,169
4238.byte	108,86,244,234,101,122,174,8
4239.byte	186,120,37,46,28,166,180,198
4240.byte	232,221,116,31,75,189,139,138
4241.byte	112,62,181,102,72,3,246,14
4242.byte	97,53,87,185,134,193,29,158
4243.byte	225,248,152,17,105,217,142,148
4244.byte	155,30,135,233,206,85,40,223
4245.byte	140,161,137,13,191,230,66,104
4246.byte	65,153,45,15,176,84,187,22
4247.byte	99,124,119,123,242,107,111,197
4248.byte	48,1,103,43,254,215,171,118
4249.byte	202,130,201,125,250,89,71,240
4250.byte	173,212,162,175,156,164,114,192
4251.byte	183,253,147,38,54,63,247,204
4252.byte	52,165,229,241,113,216,49,21
4253.byte	4,199,35,195,24,150,5,154
4254.byte	7,18,128,226,235,39,178,117
4255.byte	9,131,44,26,27,110,90,160
4256.byte	82,59,214,179,41,227,47,132
4257.byte	83,209,0,237,32,252,177,91
4258.byte	106,203,190,57,74,76,88,207
4259.byte	208,239,170,251,67,77,51,133
4260.byte	69,249,2,127,80,60,159,168
4261.byte	81,163,64,143,146,157,56,245
4262.byte	188,182,218,33,16,255,243,210
4263.byte	205,12,19,236,95,151,68,23
4264.byte	196,167,126,61,100,93,25,115
4265.byte	96,129,79,220,34,42,144,136
4266.byte	70,238,184,20,222,94,11,219
4267.byte	224,50,58,10,73,6,36,92
4268.byte	194,211,172,98,145,149,228,121
4269.byte	231,200,55,109,141,213,78,169
4270.byte	108,86,244,234,101,122,174,8
4271.byte	186,120,37,46,28,166,180,198
4272.byte	232,221,116,31,75,189,139,138
4273.byte	112,62,181,102,72,3,246,14
4274.byte	97,53,87,185,134,193,29,158
4275.byte	225,248,152,17,105,217,142,148
4276.byte	155,30,135,233,206,85,40,223
4277.byte	140,161,137,13,191,230,66,104
4278.byte	65,153,45,15,176,84,187,22
4279.byte	99,124,119,123,242,107,111,197
4280.byte	48,1,103,43,254,215,171,118
4281.byte	202,130,201,125,250,89,71,240
4282.byte	173,212,162,175,156,164,114,192
4283.byte	183,253,147,38,54,63,247,204
4284.byte	52,165,229,241,113,216,49,21
4285.byte	4,199,35,195,24,150,5,154
4286.byte	7,18,128,226,235,39,178,117
4287.byte	9,131,44,26,27,110,90,160
4288.byte	82,59,214,179,41,227,47,132
4289.byte	83,209,0,237,32,252,177,91
4290.byte	106,203,190,57,74,76,88,207
4291.byte	208,239,170,251,67,77,51,133
4292.byte	69,249,2,127,80,60,159,168
4293.byte	81,163,64,143,146,157,56,245
4294.byte	188,182,218,33,16,255,243,210
4295.byte	205,12,19,236,95,151,68,23
4296.byte	196,167,126,61,100,93,25,115
4297.byte	96,129,79,220,34,42,144,136
4298.byte	70,238,184,20,222,94,11,219
4299.byte	224,50,58,10,73,6,36,92
4300.byte	194,211,172,98,145,149,228,121
4301.byte	231,200,55,109,141,213,78,169
4302.byte	108,86,244,234,101,122,174,8
4303.byte	186,120,37,46,28,166,180,198
4304.byte	232,221,116,31,75,189,139,138
4305.byte	112,62,181,102,72,3,246,14
4306.byte	97,53,87,185,134,193,29,158
4307.byte	225,248,152,17,105,217,142,148
4308.byte	155,30,135,233,206,85,40,223
4309.byte	140,161,137,13,191,230,66,104
4310.byte	65,153,45,15,176,84,187,22
4311.long	1,2,4,8
4312.long	16,32,64,128
4313.long	27,54,0,0
4314.long	0,0,0,0
4315.size	_x86_AES_encrypt,.-_x86_AES_encrypt
4316.globl	AES_encrypt
4317.type	AES_encrypt,@function
4318.align	16
4319AES_encrypt:
4320.L_AES_encrypt_begin:
4321	#ifdef __CET__
4322
4323.byte	243,15,30,251
4324	#endif
4325
4326	pushl	%ebp
4327	pushl	%ebx
4328	pushl	%esi
4329	pushl	%edi
4330	movl	20(%esp),%esi
4331	movl	28(%esp),%edi
4332	movl	%esp,%eax
4333	subl	$36,%esp
4334	andl	$-64,%esp
4335	leal	-127(%edi),%ebx
4336	subl	%esp,%ebx
4337	negl	%ebx
4338	andl	$960,%ebx
4339	subl	%ebx,%esp
4340	addl	$4,%esp
4341	movl	%eax,28(%esp)
4342	call	.L004pic_point
4343.L004pic_point:
4344	popl	%ebp
4345	leal	OPENSSL_ia32cap_P,%eax
4346	leal	.LAES_Te-.L004pic_point(%ebp),%ebp
4347	leal	764(%esp),%ebx
4348	subl	%ebp,%ebx
4349	andl	$768,%ebx
4350	leal	2176(%ebp,%ebx,1),%ebp
4351	btl	$25,(%eax)
4352	jnc	.L005x86
4353	movq	(%esi),%mm0
4354	movq	8(%esi),%mm4
4355	call	_sse_AES_encrypt_compact
4356	movl	28(%esp),%esp
4357	movl	24(%esp),%esi
4358	movq	%mm0,(%esi)
4359	movq	%mm4,8(%esi)
4360	emms
4361	popl	%edi
4362	popl	%esi
4363	popl	%ebx
4364	popl	%ebp
4365	ret
4366.align	16
4367.L005x86:
4368	movl	%ebp,24(%esp)
4369	movl	(%esi),%eax
4370	movl	4(%esi),%ebx
4371	movl	8(%esi),%ecx
4372	movl	12(%esi),%edx
4373	call	_x86_AES_encrypt_compact
4374	movl	28(%esp),%esp
4375	movl	24(%esp),%esi
4376	movl	%eax,(%esi)
4377	movl	%ebx,4(%esi)
4378	movl	%ecx,8(%esi)
4379	movl	%edx,12(%esi)
4380	popl	%edi
4381	popl	%esi
4382	popl	%ebx
4383	popl	%ebp
4384	ret
4385.size	AES_encrypt,.-.L_AES_encrypt_begin
4386.type	_x86_AES_decrypt_compact,@function
4387.align	16
4388_x86_AES_decrypt_compact:
4389	#ifdef __CET__
4390
4391.byte	243,15,30,251
4392	#endif
4393
4394	movl	%edi,20(%esp)
4395	xorl	(%edi),%eax
4396	xorl	4(%edi),%ebx
4397	xorl	8(%edi),%ecx
4398	xorl	12(%edi),%edx
4399	movl	240(%edi),%esi
4400	leal	-2(%esi,%esi,1),%esi
4401	leal	(%edi,%esi,8),%esi
4402	movl	%esi,24(%esp)
4403	movl	-128(%ebp),%edi
4404	movl	-96(%ebp),%esi
4405	movl	-64(%ebp),%edi
4406	movl	-32(%ebp),%esi
4407	movl	(%ebp),%edi
4408	movl	32(%ebp),%esi
4409	movl	64(%ebp),%edi
4410	movl	96(%ebp),%esi
4411.align	16
4412.L006loop:
4413	movl	%eax,%esi
4414	andl	$255,%esi
4415	movzbl	-128(%ebp,%esi,1),%esi
4416	movzbl	%dh,%edi
4417	movzbl	-128(%ebp,%edi,1),%edi
4418	shll	$8,%edi
4419	xorl	%edi,%esi
4420	movl	%ecx,%edi
4421	shrl	$16,%edi
4422	andl	$255,%edi
4423	movzbl	-128(%ebp,%edi,1),%edi
4424	shll	$16,%edi
4425	xorl	%edi,%esi
4426	movl	%ebx,%edi
4427	shrl	$24,%edi
4428	movzbl	-128(%ebp,%edi,1),%edi
4429	shll	$24,%edi
4430	xorl	%edi,%esi
4431	movl	%esi,4(%esp)
4432	movl	%ebx,%esi
4433	andl	$255,%esi
4434	movzbl	-128(%ebp,%esi,1),%esi
4435	movzbl	%ah,%edi
4436	movzbl	-128(%ebp,%edi,1),%edi
4437	shll	$8,%edi
4438	xorl	%edi,%esi
4439	movl	%edx,%edi
4440	shrl	$16,%edi
4441	andl	$255,%edi
4442	movzbl	-128(%ebp,%edi,1),%edi
4443	shll	$16,%edi
4444	xorl	%edi,%esi
4445	movl	%ecx,%edi
4446	shrl	$24,%edi
4447	movzbl	-128(%ebp,%edi,1),%edi
4448	shll	$24,%edi
4449	xorl	%edi,%esi
4450	movl	%esi,8(%esp)
4451	movl	%ecx,%esi
4452	andl	$255,%esi
4453	movzbl	-128(%ebp,%esi,1),%esi
4454	movzbl	%bh,%edi
4455	movzbl	-128(%ebp,%edi,1),%edi
4456	shll	$8,%edi
4457	xorl	%edi,%esi
4458	movl	%eax,%edi
4459	shrl	$16,%edi
4460	andl	$255,%edi
4461	movzbl	-128(%ebp,%edi,1),%edi
4462	shll	$16,%edi
4463	xorl	%edi,%esi
4464	movl	%edx,%edi
4465	shrl	$24,%edi
4466	movzbl	-128(%ebp,%edi,1),%edi
4467	shll	$24,%edi
4468	xorl	%edi,%esi
4469	andl	$255,%edx
4470	movzbl	-128(%ebp,%edx,1),%edx
4471	movzbl	%ch,%ecx
4472	movzbl	-128(%ebp,%ecx,1),%ecx
4473	shll	$8,%ecx
4474	xorl	%ecx,%edx
4475	movl	%esi,%ecx
4476	shrl	$16,%ebx
4477	andl	$255,%ebx
4478	movzbl	-128(%ebp,%ebx,1),%ebx
4479	shll	$16,%ebx
4480	xorl	%ebx,%edx
4481	shrl	$24,%eax
4482	movzbl	-128(%ebp,%eax,1),%eax
4483	shll	$24,%eax
4484	xorl	%eax,%edx
4485	movl	$2155905152,%edi
4486	andl	%ecx,%edi
4487	movl	%edi,%esi
4488	shrl	$7,%edi
4489	leal	(%ecx,%ecx,1),%eax
4490	subl	%edi,%esi
4491	andl	$4278124286,%eax
4492	andl	$454761243,%esi
4493	xorl	%esi,%eax
4494	movl	$2155905152,%edi
4495	andl	%eax,%edi
4496	movl	%edi,%esi
4497	shrl	$7,%edi
4498	leal	(%eax,%eax,1),%ebx
4499	subl	%edi,%esi
4500	andl	$4278124286,%ebx
4501	andl	$454761243,%esi
4502	xorl	%ecx,%eax
4503	xorl	%esi,%ebx
4504	movl	$2155905152,%edi
4505	andl	%ebx,%edi
4506	movl	%edi,%esi
4507	shrl	$7,%edi
4508	leal	(%ebx,%ebx,1),%ebp
4509	subl	%edi,%esi
4510	andl	$4278124286,%ebp
4511	andl	$454761243,%esi
4512	xorl	%ecx,%ebx
4513	roll	$8,%ecx
4514	xorl	%esi,%ebp
4515	xorl	%eax,%ecx
4516	xorl	%ebp,%eax
4517	xorl	%ebx,%ecx
4518	xorl	%ebp,%ebx
4519	roll	$24,%eax
4520	xorl	%ebp,%ecx
4521	roll	$16,%ebx
4522	xorl	%eax,%ecx
4523	roll	$8,%ebp
4524	xorl	%ebx,%ecx
4525	movl	4(%esp),%eax
4526	xorl	%ebp,%ecx
4527	movl	%ecx,12(%esp)
4528	movl	$2155905152,%edi
4529	andl	%edx,%edi
4530	movl	%edi,%esi
4531	shrl	$7,%edi
4532	leal	(%edx,%edx,1),%ebx
4533	subl	%edi,%esi
4534	andl	$4278124286,%ebx
4535	andl	$454761243,%esi
4536	xorl	%esi,%ebx
4537	movl	$2155905152,%edi
4538	andl	%ebx,%edi
4539	movl	%edi,%esi
4540	shrl	$7,%edi
4541	leal	(%ebx,%ebx,1),%ecx
4542	subl	%edi,%esi
4543	andl	$4278124286,%ecx
4544	andl	$454761243,%esi
4545	xorl	%edx,%ebx
4546	xorl	%esi,%ecx
4547	movl	$2155905152,%edi
4548	andl	%ecx,%edi
4549	movl	%edi,%esi
4550	shrl	$7,%edi
4551	leal	(%ecx,%ecx,1),%ebp
4552	subl	%edi,%esi
4553	andl	$4278124286,%ebp
4554	andl	$454761243,%esi
4555	xorl	%edx,%ecx
4556	roll	$8,%edx
4557	xorl	%esi,%ebp
4558	xorl	%ebx,%edx
4559	xorl	%ebp,%ebx
4560	xorl	%ecx,%edx
4561	xorl	%ebp,%ecx
4562	roll	$24,%ebx
4563	xorl	%ebp,%edx
4564	roll	$16,%ecx
4565	xorl	%ebx,%edx
4566	roll	$8,%ebp
4567	xorl	%ecx,%edx
4568	movl	8(%esp),%ebx
4569	xorl	%ebp,%edx
4570	movl	%edx,16(%esp)
4571	movl	$2155905152,%edi
4572	andl	%eax,%edi
4573	movl	%edi,%esi
4574	shrl	$7,%edi
4575	leal	(%eax,%eax,1),%ecx
4576	subl	%edi,%esi
4577	andl	$4278124286,%ecx
4578	andl	$454761243,%esi
4579	xorl	%esi,%ecx
4580	movl	$2155905152,%edi
4581	andl	%ecx,%edi
4582	movl	%edi,%esi
4583	shrl	$7,%edi
4584	leal	(%ecx,%ecx,1),%edx
4585	subl	%edi,%esi
4586	andl	$4278124286,%edx
4587	andl	$454761243,%esi
4588	xorl	%eax,%ecx
4589	xorl	%esi,%edx
4590	movl	$2155905152,%edi
4591	andl	%edx,%edi
4592	movl	%edi,%esi
4593	shrl	$7,%edi
4594	leal	(%edx,%edx,1),%ebp
4595	subl	%edi,%esi
4596	andl	$4278124286,%ebp
4597	andl	$454761243,%esi
4598	xorl	%eax,%edx
4599	roll	$8,%eax
4600	xorl	%esi,%ebp
4601	xorl	%ecx,%eax
4602	xorl	%ebp,%ecx
4603	xorl	%edx,%eax
4604	xorl	%ebp,%edx
4605	roll	$24,%ecx
4606	xorl	%ebp,%eax
4607	roll	$16,%edx
4608	xorl	%ecx,%eax
4609	roll	$8,%ebp
4610	xorl	%edx,%eax
4611	xorl	%ebp,%eax
4612	movl	$2155905152,%edi
4613	andl	%ebx,%edi
4614	movl	%edi,%esi
4615	shrl	$7,%edi
4616	leal	(%ebx,%ebx,1),%ecx
4617	subl	%edi,%esi
4618	andl	$4278124286,%ecx
4619	andl	$454761243,%esi
4620	xorl	%esi,%ecx
4621	movl	$2155905152,%edi
4622	andl	%ecx,%edi
4623	movl	%edi,%esi
4624	shrl	$7,%edi
4625	leal	(%ecx,%ecx,1),%edx
4626	subl	%edi,%esi
4627	andl	$4278124286,%edx
4628	andl	$454761243,%esi
4629	xorl	%ebx,%ecx
4630	xorl	%esi,%edx
4631	movl	$2155905152,%edi
4632	andl	%edx,%edi
4633	movl	%edi,%esi
4634	shrl	$7,%edi
4635	leal	(%edx,%edx,1),%ebp
4636	subl	%edi,%esi
4637	andl	$4278124286,%ebp
4638	andl	$454761243,%esi
4639	xorl	%ebx,%edx
4640	roll	$8,%ebx
4641	xorl	%esi,%ebp
4642	xorl	%ecx,%ebx
4643	xorl	%ebp,%ecx
4644	xorl	%edx,%ebx
4645	xorl	%ebp,%edx
4646	roll	$24,%ecx
4647	xorl	%ebp,%ebx
4648	roll	$16,%edx
4649	xorl	%ecx,%ebx
4650	roll	$8,%ebp
4651	xorl	%edx,%ebx
4652	movl	12(%esp),%ecx
4653	xorl	%ebp,%ebx
4654	movl	16(%esp),%edx
4655	movl	20(%esp),%edi
4656	movl	28(%esp),%ebp
4657	addl	$16,%edi
4658	xorl	(%edi),%eax
4659	xorl	4(%edi),%ebx
4660	xorl	8(%edi),%ecx
4661	xorl	12(%edi),%edx
4662	cmpl	24(%esp),%edi
4663	movl	%edi,20(%esp)
4664	jb	.L006loop
4665	movl	%eax,%esi
4666	andl	$255,%esi
4667	movzbl	-128(%ebp,%esi,1),%esi
4668	movzbl	%dh,%edi
4669	movzbl	-128(%ebp,%edi,1),%edi
4670	shll	$8,%edi
4671	xorl	%edi,%esi
4672	movl	%ecx,%edi
4673	shrl	$16,%edi
4674	andl	$255,%edi
4675	movzbl	-128(%ebp,%edi,1),%edi
4676	shll	$16,%edi
4677	xorl	%edi,%esi
4678	movl	%ebx,%edi
4679	shrl	$24,%edi
4680	movzbl	-128(%ebp,%edi,1),%edi
4681	shll	$24,%edi
4682	xorl	%edi,%esi
4683	movl	%esi,4(%esp)
4684	movl	%ebx,%esi
4685	andl	$255,%esi
4686	movzbl	-128(%ebp,%esi,1),%esi
4687	movzbl	%ah,%edi
4688	movzbl	-128(%ebp,%edi,1),%edi
4689	shll	$8,%edi
4690	xorl	%edi,%esi
4691	movl	%edx,%edi
4692	shrl	$16,%edi
4693	andl	$255,%edi
4694	movzbl	-128(%ebp,%edi,1),%edi
4695	shll	$16,%edi
4696	xorl	%edi,%esi
4697	movl	%ecx,%edi
4698	shrl	$24,%edi
4699	movzbl	-128(%ebp,%edi,1),%edi
4700	shll	$24,%edi
4701	xorl	%edi,%esi
4702	movl	%esi,8(%esp)
4703	movl	%ecx,%esi
4704	andl	$255,%esi
4705	movzbl	-128(%ebp,%esi,1),%esi
4706	movzbl	%bh,%edi
4707	movzbl	-128(%ebp,%edi,1),%edi
4708	shll	$8,%edi
4709	xorl	%edi,%esi
4710	movl	%eax,%edi
4711	shrl	$16,%edi
4712	andl	$255,%edi
4713	movzbl	-128(%ebp,%edi,1),%edi
4714	shll	$16,%edi
4715	xorl	%edi,%esi
4716	movl	%edx,%edi
4717	shrl	$24,%edi
4718	movzbl	-128(%ebp,%edi,1),%edi
4719	shll	$24,%edi
4720	xorl	%edi,%esi
4721	movl	20(%esp),%edi
4722	andl	$255,%edx
4723	movzbl	-128(%ebp,%edx,1),%edx
4724	movzbl	%ch,%ecx
4725	movzbl	-128(%ebp,%ecx,1),%ecx
4726	shll	$8,%ecx
4727	xorl	%ecx,%edx
4728	movl	%esi,%ecx
4729	shrl	$16,%ebx
4730	andl	$255,%ebx
4731	movzbl	-128(%ebp,%ebx,1),%ebx
4732	shll	$16,%ebx
4733	xorl	%ebx,%edx
4734	movl	8(%esp),%ebx
4735	shrl	$24,%eax
4736	movzbl	-128(%ebp,%eax,1),%eax
4737	shll	$24,%eax
4738	xorl	%eax,%edx
4739	movl	4(%esp),%eax
4740	xorl	16(%edi),%eax
4741	xorl	20(%edi),%ebx
4742	xorl	24(%edi),%ecx
4743	xorl	28(%edi),%edx
4744	ret
4745.size	_x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact
4746.type	_sse_AES_decrypt_compact,@function
4747.align	16
4748_sse_AES_decrypt_compact:
4749	#ifdef __CET__
4750
4751.byte	243,15,30,251
4752	#endif
4753
4754	pxor	(%edi),%mm0
4755	pxor	8(%edi),%mm4
4756	movl	240(%edi),%esi
4757	leal	-2(%esi,%esi,1),%esi
4758	leal	(%edi,%esi,8),%esi
4759	movl	%esi,24(%esp)
4760	movl	$454761243,%eax
4761	movl	%eax,8(%esp)
4762	movl	%eax,12(%esp)
4763	movl	-128(%ebp),%eax
4764	movl	-96(%ebp),%ebx
4765	movl	-64(%ebp),%ecx
4766	movl	-32(%ebp),%edx
4767	movl	(%ebp),%eax
4768	movl	32(%ebp),%ebx
4769	movl	64(%ebp),%ecx
4770	movl	96(%ebp),%edx
4771.align	16
4772.L007loop:
4773	pshufw	$12,%mm0,%mm1
4774	pshufw	$9,%mm4,%mm5
4775	movd	%mm1,%eax
4776	movd	%mm5,%ebx
4777	movl	%edi,20(%esp)
4778	movzbl	%al,%esi
4779	movzbl	%ah,%edx
4780	pshufw	$6,%mm0,%mm2
4781	movzbl	-128(%ebp,%esi,1),%ecx
4782	movzbl	%bl,%edi
4783	movzbl	-128(%ebp,%edx,1),%edx
4784	shrl	$16,%eax
4785	shll	$8,%edx
4786	movzbl	-128(%ebp,%edi,1),%esi
4787	movzbl	%bh,%edi
4788	shll	$16,%esi
4789	pshufw	$3,%mm4,%mm6
4790	orl	%esi,%ecx
4791	movzbl	-128(%ebp,%edi,1),%esi
4792	movzbl	%ah,%edi
4793	shll	$24,%esi
4794	shrl	$16,%ebx
4795	orl	%esi,%edx
4796	movzbl	-128(%ebp,%edi,1),%esi
4797	movzbl	%bh,%edi
4798	shll	$24,%esi
4799	orl	%esi,%ecx
4800	movzbl	-128(%ebp,%edi,1),%esi
4801	movzbl	%al,%edi
4802	shll	$8,%esi
4803	movd	%mm2,%eax
4804	orl	%esi,%ecx
4805	movzbl	-128(%ebp,%edi,1),%esi
4806	movzbl	%bl,%edi
4807	shll	$16,%esi
4808	movd	%mm6,%ebx
4809	movd	%ecx,%mm0
4810	movzbl	-128(%ebp,%edi,1),%ecx
4811	movzbl	%al,%edi
4812	orl	%esi,%ecx
4813	movzbl	-128(%ebp,%edi,1),%esi
4814	movzbl	%bl,%edi
4815	orl	%esi,%edx
4816	movzbl	-128(%ebp,%edi,1),%esi
4817	movzbl	%ah,%edi
4818	shll	$16,%esi
4819	shrl	$16,%eax
4820	orl	%esi,%edx
4821	movzbl	-128(%ebp,%edi,1),%esi
4822	movzbl	%bh,%edi
4823	shrl	$16,%ebx
4824	shll	$8,%esi
4825	movd	%edx,%mm1
4826	movzbl	-128(%ebp,%edi,1),%edx
4827	movzbl	%bh,%edi
4828	shll	$24,%edx
4829	andl	$255,%ebx
4830	orl	%esi,%edx
4831	punpckldq	%mm1,%mm0
4832	movzbl	-128(%ebp,%edi,1),%esi
4833	movzbl	%al,%edi
4834	shll	$8,%esi
4835	movzbl	%ah,%eax
4836	movzbl	-128(%ebp,%ebx,1),%ebx
4837	orl	%esi,%ecx
4838	movzbl	-128(%ebp,%edi,1),%esi
4839	orl	%ebx,%edx
4840	shll	$16,%esi
4841	movzbl	-128(%ebp,%eax,1),%eax
4842	orl	%esi,%edx
4843	shll	$24,%eax
4844	orl	%eax,%ecx
4845	movl	20(%esp),%edi
4846	movd	%edx,%mm4
4847	movd	%ecx,%mm5
4848	punpckldq	%mm5,%mm4
4849	addl	$16,%edi
4850	cmpl	24(%esp),%edi
4851	ja	.L008out
4852	movq	%mm0,%mm3
4853	movq	%mm4,%mm7
4854	pshufw	$228,%mm0,%mm2
4855	pshufw	$228,%mm4,%mm6
4856	movq	%mm0,%mm1
4857	movq	%mm4,%mm5
4858	pshufw	$177,%mm0,%mm0
4859	pshufw	$177,%mm4,%mm4
4860	pslld	$8,%mm2
4861	pslld	$8,%mm6
4862	psrld	$8,%mm3
4863	psrld	$8,%mm7
4864	pxor	%mm2,%mm0
4865	pxor	%mm6,%mm4
4866	pxor	%mm3,%mm0
4867	pxor	%mm7,%mm4
4868	pslld	$16,%mm2
4869	pslld	$16,%mm6
4870	psrld	$16,%mm3
4871	psrld	$16,%mm7
4872	pxor	%mm2,%mm0
4873	pxor	%mm6,%mm4
4874	pxor	%mm3,%mm0
4875	pxor	%mm7,%mm4
4876	movq	8(%esp),%mm3
4877	pxor	%mm2,%mm2
4878	pxor	%mm6,%mm6
4879	pcmpgtb	%mm1,%mm2
4880	pcmpgtb	%mm5,%mm6
4881	pand	%mm3,%mm2
4882	pand	%mm3,%mm6
4883	paddb	%mm1,%mm1
4884	paddb	%mm5,%mm5
4885	pxor	%mm2,%mm1
4886	pxor	%mm6,%mm5
4887	movq	%mm1,%mm3
4888	movq	%mm5,%mm7
4889	movq	%mm1,%mm2
4890	movq	%mm5,%mm6
4891	pxor	%mm1,%mm0
4892	pxor	%mm5,%mm4
4893	pslld	$24,%mm3
4894	pslld	$24,%mm7
4895	psrld	$8,%mm2
4896	psrld	$8,%mm6
4897	pxor	%mm3,%mm0
4898	pxor	%mm7,%mm4
4899	pxor	%mm2,%mm0
4900	pxor	%mm6,%mm4
4901	movq	8(%esp),%mm2
4902	pxor	%mm3,%mm3
4903	pxor	%mm7,%mm7
4904	pcmpgtb	%mm1,%mm3
4905	pcmpgtb	%mm5,%mm7
4906	pand	%mm2,%mm3
4907	pand	%mm2,%mm7
4908	paddb	%mm1,%mm1
4909	paddb	%mm5,%mm5
4910	pxor	%mm3,%mm1
4911	pxor	%mm7,%mm5
4912	pshufw	$177,%mm1,%mm3
4913	pshufw	$177,%mm5,%mm7
4914	pxor	%mm1,%mm0
4915	pxor	%mm5,%mm4
4916	pxor	%mm3,%mm0
4917	pxor	%mm7,%mm4
4918	pxor	%mm3,%mm3
4919	pxor	%mm7,%mm7
4920	pcmpgtb	%mm1,%mm3
4921	pcmpgtb	%mm5,%mm7
4922	pand	%mm2,%mm3
4923	pand	%mm2,%mm7
4924	paddb	%mm1,%mm1
4925	paddb	%mm5,%mm5
4926	pxor	%mm3,%mm1
4927	pxor	%mm7,%mm5
4928	pxor	%mm1,%mm0
4929	pxor	%mm5,%mm4
4930	movq	%mm1,%mm3
4931	movq	%mm5,%mm7
4932	pshufw	$177,%mm1,%mm2
4933	pshufw	$177,%mm5,%mm6
4934	pxor	%mm2,%mm0
4935	pxor	%mm6,%mm4
4936	pslld	$8,%mm1
4937	pslld	$8,%mm5
4938	psrld	$8,%mm3
4939	psrld	$8,%mm7
4940	movq	(%edi),%mm2
4941	movq	8(%edi),%mm6
4942	pxor	%mm1,%mm0
4943	pxor	%mm5,%mm4
4944	pxor	%mm3,%mm0
4945	pxor	%mm7,%mm4
4946	movl	-128(%ebp),%eax
4947	pslld	$16,%mm1
4948	pslld	$16,%mm5
4949	movl	-64(%ebp),%ebx
4950	psrld	$16,%mm3
4951	psrld	$16,%mm7
4952	movl	(%ebp),%ecx
4953	pxor	%mm1,%mm0
4954	pxor	%mm5,%mm4
4955	movl	64(%ebp),%edx
4956	pxor	%mm3,%mm0
4957	pxor	%mm7,%mm4
4958	pxor	%mm2,%mm0
4959	pxor	%mm6,%mm4
4960	jmp	.L007loop
4961.align	16
4962.L008out:
4963	pxor	(%edi),%mm0
4964	pxor	8(%edi),%mm4
4965	ret
4966.size	_sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact
4967.type	_x86_AES_decrypt,@function
4968.align	16
4969_x86_AES_decrypt:
4970	#ifdef __CET__
4971
4972.byte	243,15,30,251
4973	#endif
4974
4975	movl	%edi,20(%esp)
4976	xorl	(%edi),%eax
4977	xorl	4(%edi),%ebx
4978	xorl	8(%edi),%ecx
4979	xorl	12(%edi),%edx
4980	movl	240(%edi),%esi
4981	leal	-2(%esi,%esi,1),%esi
4982	leal	(%edi,%esi,8),%esi
4983	movl	%esi,24(%esp)
4984.align	16
4985.L009loop:
4986	movl	%eax,%esi
4987	andl	$255,%esi
4988	movl	(%ebp,%esi,8),%esi
4989	movzbl	%dh,%edi
4990	xorl	3(%ebp,%edi,8),%esi
4991	movl	%ecx,%edi
4992	shrl	$16,%edi
4993	andl	$255,%edi
4994	xorl	2(%ebp,%edi,8),%esi
4995	movl	%ebx,%edi
4996	shrl	$24,%edi
4997	xorl	1(%ebp,%edi,8),%esi
4998	movl	%esi,4(%esp)
4999
5000	movl	%ebx,%esi
5001	andl	$255,%esi
5002	movl	(%ebp,%esi,8),%esi
5003	movzbl	%ah,%edi
5004	xorl	3(%ebp,%edi,8),%esi
5005	movl	%edx,%edi
5006	shrl	$16,%edi
5007	andl	$255,%edi
5008	xorl	2(%ebp,%edi,8),%esi
5009	movl	%ecx,%edi
5010	shrl	$24,%edi
5011	xorl	1(%ebp,%edi,8),%esi
5012	movl	%esi,8(%esp)
5013
5014	movl	%ecx,%esi
5015	andl	$255,%esi
5016	movl	(%ebp,%esi,8),%esi
5017	movzbl	%bh,%edi
5018	xorl	3(%ebp,%edi,8),%esi
5019	movl	%eax,%edi
5020	shrl	$16,%edi
5021	andl	$255,%edi
5022	xorl	2(%ebp,%edi,8),%esi
5023	movl	%edx,%edi
5024	shrl	$24,%edi
5025	xorl	1(%ebp,%edi,8),%esi
5026
5027	movl	20(%esp),%edi
5028	andl	$255,%edx
5029	movl	(%ebp,%edx,8),%edx
5030	movzbl	%ch,%ecx
5031	xorl	3(%ebp,%ecx,8),%edx
5032	movl	%esi,%ecx
5033	shrl	$16,%ebx
5034	andl	$255,%ebx
5035	xorl	2(%ebp,%ebx,8),%edx
5036	movl	8(%esp),%ebx
5037	shrl	$24,%eax
5038	xorl	1(%ebp,%eax,8),%edx
5039	movl	4(%esp),%eax
5040
5041	addl	$16,%edi
5042	xorl	(%edi),%eax
5043	xorl	4(%edi),%ebx
5044	xorl	8(%edi),%ecx
5045	xorl	12(%edi),%edx
5046	cmpl	24(%esp),%edi
5047	movl	%edi,20(%esp)
5048	jb	.L009loop
5049	leal	2176(%ebp),%ebp
5050	movl	-128(%ebp),%edi
5051	movl	-96(%ebp),%esi
5052	movl	-64(%ebp),%edi
5053	movl	-32(%ebp),%esi
5054	movl	(%ebp),%edi
5055	movl	32(%ebp),%esi
5056	movl	64(%ebp),%edi
5057	movl	96(%ebp),%esi
5058	leal	-128(%ebp),%ebp
5059	movl	%eax,%esi
5060	andl	$255,%esi
5061	movzbl	(%ebp,%esi,1),%esi
5062	movzbl	%dh,%edi
5063	movzbl	(%ebp,%edi,1),%edi
5064	shll	$8,%edi
5065	xorl	%edi,%esi
5066	movl	%ecx,%edi
5067	shrl	$16,%edi
5068	andl	$255,%edi
5069	movzbl	(%ebp,%edi,1),%edi
5070	shll	$16,%edi
5071	xorl	%edi,%esi
5072	movl	%ebx,%edi
5073	shrl	$24,%edi
5074	movzbl	(%ebp,%edi,1),%edi
5075	shll	$24,%edi
5076	xorl	%edi,%esi
5077	movl	%esi,4(%esp)
5078	movl	%ebx,%esi
5079	andl	$255,%esi
5080	movzbl	(%ebp,%esi,1),%esi
5081	movzbl	%ah,%edi
5082	movzbl	(%ebp,%edi,1),%edi
5083	shll	$8,%edi
5084	xorl	%edi,%esi
5085	movl	%edx,%edi
5086	shrl	$16,%edi
5087	andl	$255,%edi
5088	movzbl	(%ebp,%edi,1),%edi
5089	shll	$16,%edi
5090	xorl	%edi,%esi
5091	movl	%ecx,%edi
5092	shrl	$24,%edi
5093	movzbl	(%ebp,%edi,1),%edi
5094	shll	$24,%edi
5095	xorl	%edi,%esi
5096	movl	%esi,8(%esp)
5097	movl	%ecx,%esi
5098	andl	$255,%esi
5099	movzbl	(%ebp,%esi,1),%esi
5100	movzbl	%bh,%edi
5101	movzbl	(%ebp,%edi,1),%edi
5102	shll	$8,%edi
5103	xorl	%edi,%esi
5104	movl	%eax,%edi
5105	shrl	$16,%edi
5106	andl	$255,%edi
5107	movzbl	(%ebp,%edi,1),%edi
5108	shll	$16,%edi
5109	xorl	%edi,%esi
5110	movl	%edx,%edi
5111	shrl	$24,%edi
5112	movzbl	(%ebp,%edi,1),%edi
5113	shll	$24,%edi
5114	xorl	%edi,%esi
5115	movl	20(%esp),%edi
5116	andl	$255,%edx
5117	movzbl	(%ebp,%edx,1),%edx
5118	movzbl	%ch,%ecx
5119	movzbl	(%ebp,%ecx,1),%ecx
5120	shll	$8,%ecx
5121	xorl	%ecx,%edx
5122	movl	%esi,%ecx
5123	shrl	$16,%ebx
5124	andl	$255,%ebx
5125	movzbl	(%ebp,%ebx,1),%ebx
5126	shll	$16,%ebx
5127	xorl	%ebx,%edx
5128	movl	8(%esp),%ebx
5129	shrl	$24,%eax
5130	movzbl	(%ebp,%eax,1),%eax
5131	shll	$24,%eax
5132	xorl	%eax,%edx
5133	movl	4(%esp),%eax
5134	leal	-2048(%ebp),%ebp
5135	addl	$16,%edi
5136	xorl	(%edi),%eax
5137	xorl	4(%edi),%ebx
5138	xorl	8(%edi),%ecx
5139	xorl	12(%edi),%edx
5140	ret
5141.align	64
5142.LAES_Td:
5143.long	1353184337,1353184337
5144.long	1399144830,1399144830
5145.long	3282310938,3282310938
5146.long	2522752826,2522752826
5147.long	3412831035,3412831035
5148.long	4047871263,4047871263
5149.long	2874735276,2874735276
5150.long	2466505547,2466505547
5151.long	1442459680,1442459680
5152.long	4134368941,4134368941
5153.long	2440481928,2440481928
5154.long	625738485,625738485
5155.long	4242007375,4242007375
5156.long	3620416197,3620416197
5157.long	2151953702,2151953702
5158.long	2409849525,2409849525
5159.long	1230680542,1230680542
5160.long	1729870373,1729870373
5161.long	2551114309,2551114309
5162.long	3787521629,3787521629
5163.long	41234371,41234371
5164.long	317738113,317738113
5165.long	2744600205,2744600205
5166.long	3338261355,3338261355
5167.long	3881799427,3881799427
5168.long	2510066197,2510066197
5169.long	3950669247,3950669247
5170.long	3663286933,3663286933
5171.long	763608788,763608788
5172.long	3542185048,3542185048
5173.long	694804553,694804553
5174.long	1154009486,1154009486
5175.long	1787413109,1787413109
5176.long	2021232372,2021232372
5177.long	1799248025,1799248025
5178.long	3715217703,3715217703
5179.long	3058688446,3058688446
5180.long	397248752,397248752
5181.long	1722556617,1722556617
5182.long	3023752829,3023752829
5183.long	407560035,407560035
5184.long	2184256229,2184256229
5185.long	1613975959,1613975959
5186.long	1165972322,1165972322
5187.long	3765920945,3765920945
5188.long	2226023355,2226023355
5189.long	480281086,480281086
5190.long	2485848313,2485848313
5191.long	1483229296,1483229296
5192.long	436028815,436028815
5193.long	2272059028,2272059028
5194.long	3086515026,3086515026
5195.long	601060267,601060267
5196.long	3791801202,3791801202
5197.long	1468997603,1468997603
5198.long	715871590,715871590
5199.long	120122290,120122290
5200.long	63092015,63092015
5201.long	2591802758,2591802758
5202.long	2768779219,2768779219
5203.long	4068943920,4068943920
5204.long	2997206819,2997206819
5205.long	3127509762,3127509762
5206.long	1552029421,1552029421
5207.long	723308426,723308426
5208.long	2461301159,2461301159
5209.long	4042393587,4042393587
5210.long	2715969870,2715969870
5211.long	3455375973,3455375973
5212.long	3586000134,3586000134
5213.long	526529745,526529745
5214.long	2331944644,2331944644
5215.long	2639474228,2639474228
5216.long	2689987490,2689987490
5217.long	853641733,853641733
5218.long	1978398372,1978398372
5219.long	971801355,971801355
5220.long	2867814464,2867814464
5221.long	111112542,111112542
5222.long	1360031421,1360031421
5223.long	4186579262,4186579262
5224.long	1023860118,1023860118
5225.long	2919579357,2919579357
5226.long	1186850381,1186850381
5227.long	3045938321,3045938321
5228.long	90031217,90031217
5229.long	1876166148,1876166148
5230.long	4279586912,4279586912
5231.long	620468249,620468249
5232.long	2548678102,2548678102
5233.long	3426959497,3426959497
5234.long	2006899047,2006899047
5235.long	3175278768,3175278768
5236.long	2290845959,2290845959
5237.long	945494503,945494503
5238.long	3689859193,3689859193
5239.long	1191869601,1191869601
5240.long	3910091388,3910091388
5241.long	3374220536,3374220536
5242.long	0,0
5243.long	2206629897,2206629897
5244.long	1223502642,1223502642
5245.long	2893025566,2893025566
5246.long	1316117100,1316117100
5247.long	4227796733,4227796733
5248.long	1446544655,1446544655
5249.long	517320253,517320253
5250.long	658058550,658058550
5251.long	1691946762,1691946762
5252.long	564550760,564550760
5253.long	3511966619,3511966619
5254.long	976107044,976107044
5255.long	2976320012,2976320012
5256.long	266819475,266819475
5257.long	3533106868,3533106868
5258.long	2660342555,2660342555
5259.long	1338359936,1338359936
5260.long	2720062561,2720062561
5261.long	1766553434,1766553434
5262.long	370807324,370807324
5263.long	179999714,179999714
5264.long	3844776128,3844776128
5265.long	1138762300,1138762300
5266.long	488053522,488053522
5267.long	185403662,185403662
5268.long	2915535858,2915535858
5269.long	3114841645,3114841645
5270.long	3366526484,3366526484
5271.long	2233069911,2233069911
5272.long	1275557295,1275557295
5273.long	3151862254,3151862254
5274.long	4250959779,4250959779
5275.long	2670068215,2670068215
5276.long	3170202204,3170202204
5277.long	3309004356,3309004356
5278.long	880737115,880737115
5279.long	1982415755,1982415755
5280.long	3703972811,3703972811
5281.long	1761406390,1761406390
5282.long	1676797112,1676797112
5283.long	3403428311,3403428311
5284.long	277177154,277177154
5285.long	1076008723,1076008723
5286.long	538035844,538035844
5287.long	2099530373,2099530373
5288.long	4164795346,4164795346
5289.long	288553390,288553390
5290.long	1839278535,1839278535
5291.long	1261411869,1261411869
5292.long	4080055004,4080055004
5293.long	3964831245,3964831245
5294.long	3504587127,3504587127
5295.long	1813426987,1813426987
5296.long	2579067049,2579067049
5297.long	4199060497,4199060497
5298.long	577038663,577038663
5299.long	3297574056,3297574056
5300.long	440397984,440397984
5301.long	3626794326,3626794326
5302.long	4019204898,4019204898
5303.long	3343796615,3343796615
5304.long	3251714265,3251714265
5305.long	4272081548,4272081548
5306.long	906744984,906744984
5307.long	3481400742,3481400742
5308.long	685669029,685669029
5309.long	646887386,646887386
5310.long	2764025151,2764025151
5311.long	3835509292,3835509292
5312.long	227702864,227702864
5313.long	2613862250,2613862250
5314.long	1648787028,1648787028
5315.long	3256061430,3256061430
5316.long	3904428176,3904428176
5317.long	1593260334,1593260334
5318.long	4121936770,4121936770
5319.long	3196083615,3196083615
5320.long	2090061929,2090061929
5321.long	2838353263,2838353263
5322.long	3004310991,3004310991
5323.long	999926984,999926984
5324.long	2809993232,2809993232
5325.long	1852021992,1852021992
5326.long	2075868123,2075868123
5327.long	158869197,158869197
5328.long	4095236462,4095236462
5329.long	28809964,28809964
5330.long	2828685187,2828685187
5331.long	1701746150,1701746150
5332.long	2129067946,2129067946
5333.long	147831841,147831841
5334.long	3873969647,3873969647
5335.long	3650873274,3650873274
5336.long	3459673930,3459673930
5337.long	3557400554,3557400554
5338.long	3598495785,3598495785
5339.long	2947720241,2947720241
5340.long	824393514,824393514
5341.long	815048134,815048134
5342.long	3227951669,3227951669
5343.long	935087732,935087732
5344.long	2798289660,2798289660
5345.long	2966458592,2966458592
5346.long	366520115,366520115
5347.long	1251476721,1251476721
5348.long	4158319681,4158319681
5349.long	240176511,240176511
5350.long	804688151,804688151
5351.long	2379631990,2379631990
5352.long	1303441219,1303441219
5353.long	1414376140,1414376140
5354.long	3741619940,3741619940
5355.long	3820343710,3820343710
5356.long	461924940,461924940
5357.long	3089050817,3089050817
5358.long	2136040774,2136040774
5359.long	82468509,82468509
5360.long	1563790337,1563790337
5361.long	1937016826,1937016826
5362.long	776014843,776014843
5363.long	1511876531,1511876531
5364.long	1389550482,1389550482
5365.long	861278441,861278441
5366.long	323475053,323475053
5367.long	2355222426,2355222426
5368.long	2047648055,2047648055
5369.long	2383738969,2383738969
5370.long	2302415851,2302415851
5371.long	3995576782,3995576782
5372.long	902390199,902390199
5373.long	3991215329,3991215329
5374.long	1018251130,1018251130
5375.long	1507840668,1507840668
5376.long	1064563285,1064563285
5377.long	2043548696,2043548696
5378.long	3208103795,3208103795
5379.long	3939366739,3939366739
5380.long	1537932639,1537932639
5381.long	342834655,342834655
5382.long	2262516856,2262516856
5383.long	2180231114,2180231114
5384.long	1053059257,1053059257
5385.long	741614648,741614648
5386.long	1598071746,1598071746
5387.long	1925389590,1925389590
5388.long	203809468,203809468
5389.long	2336832552,2336832552
5390.long	1100287487,1100287487
5391.long	1895934009,1895934009
5392.long	3736275976,3736275976
5393.long	2632234200,2632234200
5394.long	2428589668,2428589668
5395.long	1636092795,1636092795
5396.long	1890988757,1890988757
5397.long	1952214088,1952214088
5398.long	1113045200,1113045200
5399.byte	82,9,106,213,48,54,165,56
5400.byte	191,64,163,158,129,243,215,251
5401.byte	124,227,57,130,155,47,255,135
5402.byte	52,142,67,68,196,222,233,203
5403.byte	84,123,148,50,166,194,35,61
5404.byte	238,76,149,11,66,250,195,78
5405.byte	8,46,161,102,40,217,36,178
5406.byte	118,91,162,73,109,139,209,37
5407.byte	114,248,246,100,134,104,152,22
5408.byte	212,164,92,204,93,101,182,146
5409.byte	108,112,72,80,253,237,185,218
5410.byte	94,21,70,87,167,141,157,132
5411.byte	144,216,171,0,140,188,211,10
5412.byte	247,228,88,5,184,179,69,6
5413.byte	208,44,30,143,202,63,15,2
5414.byte	193,175,189,3,1,19,138,107
5415.byte	58,145,17,65,79,103,220,234
5416.byte	151,242,207,206,240,180,230,115
5417.byte	150,172,116,34,231,173,53,133
5418.byte	226,249,55,232,28,117,223,110
5419.byte	71,241,26,113,29,41,197,137
5420.byte	111,183,98,14,170,24,190,27
5421.byte	252,86,62,75,198,210,121,32
5422.byte	154,219,192,254,120,205,90,244
5423.byte	31,221,168,51,136,7,199,49
5424.byte	177,18,16,89,39,128,236,95
5425.byte	96,81,127,169,25,181,74,13
5426.byte	45,229,122,159,147,201,156,239
5427.byte	160,224,59,77,174,42,245,176
5428.byte	200,235,187,60,131,83,153,97
5429.byte	23,43,4,126,186,119,214,38
5430.byte	225,105,20,99,85,33,12,125
5431.byte	82,9,106,213,48,54,165,56
5432.byte	191,64,163,158,129,243,215,251
5433.byte	124,227,57,130,155,47,255,135
5434.byte	52,142,67,68,196,222,233,203
5435.byte	84,123,148,50,166,194,35,61
5436.byte	238,76,149,11,66,250,195,78
5437.byte	8,46,161,102,40,217,36,178
5438.byte	118,91,162,73,109,139,209,37
5439.byte	114,248,246,100,134,104,152,22
5440.byte	212,164,92,204,93,101,182,146
5441.byte	108,112,72,80,253,237,185,218
5442.byte	94,21,70,87,167,141,157,132
5443.byte	144,216,171,0,140,188,211,10
5444.byte	247,228,88,5,184,179,69,6
5445.byte	208,44,30,143,202,63,15,2
5446.byte	193,175,189,3,1,19,138,107
5447.byte	58,145,17,65,79,103,220,234
5448.byte	151,242,207,206,240,180,230,115
5449.byte	150,172,116,34,231,173,53,133
5450.byte	226,249,55,232,28,117,223,110
5451.byte	71,241,26,113,29,41,197,137
5452.byte	111,183,98,14,170,24,190,27
5453.byte	252,86,62,75,198,210,121,32
5454.byte	154,219,192,254,120,205,90,244
5455.byte	31,221,168,51,136,7,199,49
5456.byte	177,18,16,89,39,128,236,95
5457.byte	96,81,127,169,25,181,74,13
5458.byte	45,229,122,159,147,201,156,239
5459.byte	160,224,59,77,174,42,245,176
5460.byte	200,235,187,60,131,83,153,97
5461.byte	23,43,4,126,186,119,214,38
5462.byte	225,105,20,99,85,33,12,125
5463.byte	82,9,106,213,48,54,165,56
5464.byte	191,64,163,158,129,243,215,251
5465.byte	124,227,57,130,155,47,255,135
5466.byte	52,142,67,68,196,222,233,203
5467.byte	84,123,148,50,166,194,35,61
5468.byte	238,76,149,11,66,250,195,78
5469.byte	8,46,161,102,40,217,36,178
5470.byte	118,91,162,73,109,139,209,37
5471.byte	114,248,246,100,134,104,152,22
5472.byte	212,164,92,204,93,101,182,146
5473.byte	108,112,72,80,253,237,185,218
5474.byte	94,21,70,87,167,141,157,132
5475.byte	144,216,171,0,140,188,211,10
5476.byte	247,228,88,5,184,179,69,6
5477.byte	208,44,30,143,202,63,15,2
5478.byte	193,175,189,3,1,19,138,107
5479.byte	58,145,17,65,79,103,220,234
5480.byte	151,242,207,206,240,180,230,115
5481.byte	150,172,116,34,231,173,53,133
5482.byte	226,249,55,232,28,117,223,110
5483.byte	71,241,26,113,29,41,197,137
5484.byte	111,183,98,14,170,24,190,27
5485.byte	252,86,62,75,198,210,121,32
5486.byte	154,219,192,254,120,205,90,244
5487.byte	31,221,168,51,136,7,199,49
5488.byte	177,18,16,89,39,128,236,95
5489.byte	96,81,127,169,25,181,74,13
5490.byte	45,229,122,159,147,201,156,239
5491.byte	160,224,59,77,174,42,245,176
5492.byte	200,235,187,60,131,83,153,97
5493.byte	23,43,4,126,186,119,214,38
5494.byte	225,105,20,99,85,33,12,125
5495.byte	82,9,106,213,48,54,165,56
5496.byte	191,64,163,158,129,243,215,251
5497.byte	124,227,57,130,155,47,255,135
5498.byte	52,142,67,68,196,222,233,203
5499.byte	84,123,148,50,166,194,35,61
5500.byte	238,76,149,11,66,250,195,78
5501.byte	8,46,161,102,40,217,36,178
5502.byte	118,91,162,73,109,139,209,37
5503.byte	114,248,246,100,134,104,152,22
5504.byte	212,164,92,204,93,101,182,146
5505.byte	108,112,72,80,253,237,185,218
5506.byte	94,21,70,87,167,141,157,132
5507.byte	144,216,171,0,140,188,211,10
5508.byte	247,228,88,5,184,179,69,6
5509.byte	208,44,30,143,202,63,15,2
5510.byte	193,175,189,3,1,19,138,107
5511.byte	58,145,17,65,79,103,220,234
5512.byte	151,242,207,206,240,180,230,115
5513.byte	150,172,116,34,231,173,53,133
5514.byte	226,249,55,232,28,117,223,110
5515.byte	71,241,26,113,29,41,197,137
5516.byte	111,183,98,14,170,24,190,27
5517.byte	252,86,62,75,198,210,121,32
5518.byte	154,219,192,254,120,205,90,244
5519.byte	31,221,168,51,136,7,199,49
5520.byte	177,18,16,89,39,128,236,95
5521.byte	96,81,127,169,25,181,74,13
5522.byte	45,229,122,159,147,201,156,239
5523.byte	160,224,59,77,174,42,245,176
5524.byte	200,235,187,60,131,83,153,97
5525.byte	23,43,4,126,186,119,214,38
5526.byte	225,105,20,99,85,33,12,125
5527.size	_x86_AES_decrypt,.-_x86_AES_decrypt
5528.globl	AES_decrypt
5529.type	AES_decrypt,@function
5530.align	16
5531AES_decrypt:
5532.L_AES_decrypt_begin:
5533	#ifdef __CET__
5534
5535.byte	243,15,30,251
5536	#endif
5537
5538	pushl	%ebp
5539	pushl	%ebx
5540	pushl	%esi
5541	pushl	%edi
5542	movl	20(%esp),%esi
5543	movl	28(%esp),%edi
5544	movl	%esp,%eax
5545	subl	$36,%esp
5546	andl	$-64,%esp
5547	leal	-127(%edi),%ebx
5548	subl	%esp,%ebx
5549	negl	%ebx
5550	andl	$960,%ebx
5551	subl	%ebx,%esp
5552	addl	$4,%esp
5553	movl	%eax,28(%esp)
5554	call	.L010pic_point
5555.L010pic_point:
5556	popl	%ebp
5557	leal	OPENSSL_ia32cap_P,%eax
5558	leal	.LAES_Td-.L010pic_point(%ebp),%ebp
5559	leal	764(%esp),%ebx
5560	subl	%ebp,%ebx
5561	andl	$768,%ebx
5562	leal	2176(%ebp,%ebx,1),%ebp
5563	btl	$25,(%eax)
5564	jnc	.L011x86
5565	movq	(%esi),%mm0
5566	movq	8(%esi),%mm4
5567	call	_sse_AES_decrypt_compact
5568	movl	28(%esp),%esp
5569	movl	24(%esp),%esi
5570	movq	%mm0,(%esi)
5571	movq	%mm4,8(%esi)
5572	emms
5573	popl	%edi
5574	popl	%esi
5575	popl	%ebx
5576	popl	%ebp
5577	ret
5578.align	16
5579.L011x86:
5580	movl	%ebp,24(%esp)
5581	movl	(%esi),%eax
5582	movl	4(%esi),%ebx
5583	movl	8(%esi),%ecx
5584	movl	12(%esi),%edx
5585	call	_x86_AES_decrypt_compact
5586	movl	28(%esp),%esp
5587	movl	24(%esp),%esi
5588	movl	%eax,(%esi)
5589	movl	%ebx,4(%esi)
5590	movl	%ecx,8(%esi)
5591	movl	%edx,12(%esi)
5592	popl	%edi
5593	popl	%esi
5594	popl	%ebx
5595	popl	%ebp
5596	ret
5597.size	AES_decrypt,.-.L_AES_decrypt_begin
5598.globl	AES_cbc_encrypt
5599.type	AES_cbc_encrypt,@function
5600.align	16
5601AES_cbc_encrypt:
5602.L_AES_cbc_encrypt_begin:
5603	#ifdef __CET__
5604
5605.byte	243,15,30,251
5606	#endif
5607
5608	pushl	%ebp
5609	pushl	%ebx
5610	pushl	%esi
5611	pushl	%edi
5612	movl	28(%esp),%ecx
5613	cmpl	$0,%ecx
5614	je	.L012drop_out
5615	call	.L013pic_point
5616.L013pic_point:
5617	popl	%ebp
5618	leal	OPENSSL_ia32cap_P,%eax
5619	cmpl	$0,40(%esp)
5620	leal	.LAES_Te-.L013pic_point(%ebp),%ebp
5621	jne	.L014picked_te
5622	leal	.LAES_Td-.LAES_Te(%ebp),%ebp
5623.L014picked_te:
5624	pushfl
5625	cld
5626	cmpl	$512,%ecx
5627	jb	.L015slow_way
5628	testl	$15,%ecx
5629	jnz	.L015slow_way
5630	btl	$28,(%eax)
5631	jc	.L015slow_way
5632	leal	-324(%esp),%esi
5633	andl	$-64,%esi
5634	movl	%ebp,%eax
5635	leal	2304(%ebp),%ebx
5636	movl	%esi,%edx
5637	andl	$4095,%eax
5638	andl	$4095,%ebx
5639	andl	$4095,%edx
5640	cmpl	%ebx,%edx
5641	jb	.L016tbl_break_out
5642	subl	%ebx,%edx
5643	subl	%edx,%esi
5644	jmp	.L017tbl_ok
5645.align	4
5646.L016tbl_break_out:
5647	subl	%eax,%edx
5648	andl	$4095,%edx
5649	addl	$384,%edx
5650	subl	%edx,%esi
5651.align	4
5652.L017tbl_ok:
5653	leal	24(%esp),%edx
5654	xchgl	%esi,%esp
5655	addl	$4,%esp
5656	movl	%ebp,24(%esp)
5657	movl	%esi,28(%esp)
5658	movl	(%edx),%eax
5659	movl	4(%edx),%ebx
5660	movl	12(%edx),%edi
5661	movl	16(%edx),%esi
5662	movl	20(%edx),%edx
5663	movl	%eax,32(%esp)
5664	movl	%ebx,36(%esp)
5665	movl	%ecx,40(%esp)
5666	movl	%edi,44(%esp)
5667	movl	%esi,48(%esp)
5668	movl	$0,316(%esp)
5669	movl	%edi,%ebx
5670	movl	$61,%ecx
5671	subl	%ebp,%ebx
5672	movl	%edi,%esi
5673	andl	$4095,%ebx
5674	leal	76(%esp),%edi
5675	cmpl	$2304,%ebx
5676	jb	.L018do_copy
5677	cmpl	$3852,%ebx
5678	jb	.L019skip_copy
5679.align	4
5680.L018do_copy:
5681	movl	%edi,44(%esp)
5682.long	2784229001
5683.L019skip_copy:
5684	movl	$16,%edi
5685.align	4
5686.L020prefetch_tbl:
5687	movl	(%ebp),%eax
5688	movl	32(%ebp),%ebx
5689	movl	64(%ebp),%ecx
5690	movl	96(%ebp),%esi
5691	leal	128(%ebp),%ebp
5692	subl	$1,%edi
5693	jnz	.L020prefetch_tbl
5694	subl	$2048,%ebp
5695	movl	32(%esp),%esi
5696	movl	48(%esp),%edi
5697	cmpl	$0,%edx
5698	je	.L021fast_decrypt
5699	movl	(%edi),%eax
5700	movl	4(%edi),%ebx
5701.align	16
5702.L022fast_enc_loop:
5703	movl	8(%edi),%ecx
5704	movl	12(%edi),%edx
5705	xorl	(%esi),%eax
5706	xorl	4(%esi),%ebx
5707	xorl	8(%esi),%ecx
5708	xorl	12(%esi),%edx
5709	movl	44(%esp),%edi
5710	call	_x86_AES_encrypt
5711	movl	32(%esp),%esi
5712	movl	36(%esp),%edi
5713	movl	%eax,(%edi)
5714	movl	%ebx,4(%edi)
5715	movl	%ecx,8(%edi)
5716	movl	%edx,12(%edi)
5717	leal	16(%esi),%esi
5718	movl	40(%esp),%ecx
5719	movl	%esi,32(%esp)
5720	leal	16(%edi),%edx
5721	movl	%edx,36(%esp)
5722	subl	$16,%ecx
5723	movl	%ecx,40(%esp)
5724	jnz	.L022fast_enc_loop
5725	movl	48(%esp),%esi
5726	movl	8(%edi),%ecx
5727	movl	12(%edi),%edx
5728	movl	%eax,(%esi)
5729	movl	%ebx,4(%esi)
5730	movl	%ecx,8(%esi)
5731	movl	%edx,12(%esi)
5732	cmpl	$0,316(%esp)
5733	movl	44(%esp),%edi
5734	je	.L023skip_ezero
5735	movl	$60,%ecx
5736	xorl	%eax,%eax
5737.align	4
5738.long	2884892297
5739.L023skip_ezero:
5740	movl	28(%esp),%esp
5741	popfl
5742.L012drop_out:
5743	popl	%edi
5744	popl	%esi
5745	popl	%ebx
5746	popl	%ebp
5747	ret
5748	pushfl
5749.align	16
5750.L021fast_decrypt:
5751	cmpl	36(%esp),%esi
5752	je	.L024fast_dec_in_place
5753	movl	%edi,52(%esp)
5754.align	4
5755.align	16
5756.L025fast_dec_loop:
5757	movl	(%esi),%eax
5758	movl	4(%esi),%ebx
5759	movl	8(%esi),%ecx
5760	movl	12(%esi),%edx
5761	movl	44(%esp),%edi
5762	call	_x86_AES_decrypt
5763	movl	52(%esp),%edi
5764	movl	40(%esp),%esi
5765	xorl	(%edi),%eax
5766	xorl	4(%edi),%ebx
5767	xorl	8(%edi),%ecx
5768	xorl	12(%edi),%edx
5769	movl	36(%esp),%edi
5770	movl	32(%esp),%esi
5771	movl	%eax,(%edi)
5772	movl	%ebx,4(%edi)
5773	movl	%ecx,8(%edi)
5774	movl	%edx,12(%edi)
5775	movl	40(%esp),%ecx
5776	movl	%esi,52(%esp)
5777	leal	16(%esi),%esi
5778	movl	%esi,32(%esp)
5779	leal	16(%edi),%edi
5780	movl	%edi,36(%esp)
5781	subl	$16,%ecx
5782	movl	%ecx,40(%esp)
5783	jnz	.L025fast_dec_loop
5784	movl	52(%esp),%edi
5785	movl	48(%esp),%esi
5786	movl	(%edi),%eax
5787	movl	4(%edi),%ebx
5788	movl	8(%edi),%ecx
5789	movl	12(%edi),%edx
5790	movl	%eax,(%esi)
5791	movl	%ebx,4(%esi)
5792	movl	%ecx,8(%esi)
5793	movl	%edx,12(%esi)
5794	jmp	.L026fast_dec_out
5795.align	16
5796.L024fast_dec_in_place:
5797.L027fast_dec_in_place_loop:
5798	movl	(%esi),%eax
5799	movl	4(%esi),%ebx
5800	movl	8(%esi),%ecx
5801	movl	12(%esi),%edx
5802	leal	60(%esp),%edi
5803	movl	%eax,(%edi)
5804	movl	%ebx,4(%edi)
5805	movl	%ecx,8(%edi)
5806	movl	%edx,12(%edi)
5807	movl	44(%esp),%edi
5808	call	_x86_AES_decrypt
5809	movl	48(%esp),%edi
5810	movl	36(%esp),%esi
5811	xorl	(%edi),%eax
5812	xorl	4(%edi),%ebx
5813	xorl	8(%edi),%ecx
5814	xorl	12(%edi),%edx
5815	movl	%eax,(%esi)
5816	movl	%ebx,4(%esi)
5817	movl	%ecx,8(%esi)
5818	movl	%edx,12(%esi)
5819	leal	16(%esi),%esi
5820	movl	%esi,36(%esp)
5821	leal	60(%esp),%esi
5822	movl	(%esi),%eax
5823	movl	4(%esi),%ebx
5824	movl	8(%esi),%ecx
5825	movl	12(%esi),%edx
5826	movl	%eax,(%edi)
5827	movl	%ebx,4(%edi)
5828	movl	%ecx,8(%edi)
5829	movl	%edx,12(%edi)
5830	movl	32(%esp),%esi
5831	movl	40(%esp),%ecx
5832	leal	16(%esi),%esi
5833	movl	%esi,32(%esp)
5834	subl	$16,%ecx
5835	movl	%ecx,40(%esp)
5836	jnz	.L027fast_dec_in_place_loop
5837.align	4
5838.L026fast_dec_out:
5839	cmpl	$0,316(%esp)
5840	movl	44(%esp),%edi
5841	je	.L028skip_dzero
5842	movl	$60,%ecx
5843	xorl	%eax,%eax
5844.align	4
5845.long	2884892297
5846.L028skip_dzero:
5847	movl	28(%esp),%esp
5848	popfl
5849	popl	%edi
5850	popl	%esi
5851	popl	%ebx
5852	popl	%ebp
5853	ret
5854	pushfl
5855.align	16
5856.L015slow_way:
5857	movl	(%eax),%eax
5858	movl	36(%esp),%edi
5859	leal	-80(%esp),%esi
5860	andl	$-64,%esi
5861	leal	-143(%edi),%ebx
5862	subl	%esi,%ebx
5863	negl	%ebx
5864	andl	$960,%ebx
5865	subl	%ebx,%esi
5866	leal	768(%esi),%ebx
5867	subl	%ebp,%ebx
5868	andl	$768,%ebx
5869	leal	2176(%ebp,%ebx,1),%ebp
5870	leal	24(%esp),%edx
5871	xchgl	%esi,%esp
5872	addl	$4,%esp
5873	movl	%ebp,24(%esp)
5874	movl	%esi,28(%esp)
5875	movl	%eax,52(%esp)
5876	movl	(%edx),%eax
5877	movl	4(%edx),%ebx
5878	movl	16(%edx),%esi
5879	movl	20(%edx),%edx
5880	movl	%eax,32(%esp)
5881	movl	%ebx,36(%esp)
5882	movl	%ecx,40(%esp)
5883	movl	%edi,44(%esp)
5884	movl	%esi,48(%esp)
5885	movl	%esi,%edi
5886	movl	%eax,%esi
5887	cmpl	$0,%edx
5888	je	.L029slow_decrypt
5889	cmpl	$16,%ecx
5890	movl	%ebx,%edx
5891	jb	.L030slow_enc_tail
5892	btl	$25,52(%esp)
5893	jnc	.L031slow_enc_x86
5894	movq	(%edi),%mm0
5895	movq	8(%edi),%mm4
5896.align	16
5897.L032slow_enc_loop_sse:
5898	pxor	(%esi),%mm0
5899	pxor	8(%esi),%mm4
5900	movl	44(%esp),%edi
5901	call	_sse_AES_encrypt_compact
5902	movl	32(%esp),%esi
5903	movl	36(%esp),%edi
5904	movl	40(%esp),%ecx
5905	movq	%mm0,(%edi)
5906	movq	%mm4,8(%edi)
5907	leal	16(%esi),%esi
5908	movl	%esi,32(%esp)
5909	leal	16(%edi),%edx
5910	movl	%edx,36(%esp)
5911	subl	$16,%ecx
5912	cmpl	$16,%ecx
5913	movl	%ecx,40(%esp)
5914	jae	.L032slow_enc_loop_sse
5915	testl	$15,%ecx
5916	jnz	.L030slow_enc_tail
5917	movl	48(%esp),%esi
5918	movq	%mm0,(%esi)
5919	movq	%mm4,8(%esi)
5920	emms
5921	movl	28(%esp),%esp
5922	popfl
5923	popl	%edi
5924	popl	%esi
5925	popl	%ebx
5926	popl	%ebp
5927	ret
5928	pushfl
5929.align	16
5930.L031slow_enc_x86:
5931	movl	(%edi),%eax
5932	movl	4(%edi),%ebx
5933.align	4
5934.L033slow_enc_loop_x86:
5935	movl	8(%edi),%ecx
5936	movl	12(%edi),%edx
5937	xorl	(%esi),%eax
5938	xorl	4(%esi),%ebx
5939	xorl	8(%esi),%ecx
5940	xorl	12(%esi),%edx
5941	movl	44(%esp),%edi
5942	call	_x86_AES_encrypt_compact
5943	movl	32(%esp),%esi
5944	movl	36(%esp),%edi
5945	movl	%eax,(%edi)
5946	movl	%ebx,4(%edi)
5947	movl	%ecx,8(%edi)
5948	movl	%edx,12(%edi)
5949	movl	40(%esp),%ecx
5950	leal	16(%esi),%esi
5951	movl	%esi,32(%esp)
5952	leal	16(%edi),%edx
5953	movl	%edx,36(%esp)
5954	subl	$16,%ecx
5955	cmpl	$16,%ecx
5956	movl	%ecx,40(%esp)
5957	jae	.L033slow_enc_loop_x86
5958	testl	$15,%ecx
5959	jnz	.L030slow_enc_tail
5960	movl	48(%esp),%esi
5961	movl	8(%edi),%ecx
5962	movl	12(%edi),%edx
5963	movl	%eax,(%esi)
5964	movl	%ebx,4(%esi)
5965	movl	%ecx,8(%esi)
5966	movl	%edx,12(%esi)
5967	movl	28(%esp),%esp
5968	popfl
5969	popl	%edi
5970	popl	%esi
5971	popl	%ebx
5972	popl	%ebp
5973	ret
5974	pushfl
5975.align	16
5976.L030slow_enc_tail:
5977	emms
5978	movl	%edx,%edi
5979	movl	$16,%ebx
5980	subl	%ecx,%ebx
5981	cmpl	%esi,%edi
5982	je	.L034enc_in_place
5983.align	4
5984.long	2767451785
5985	jmp	.L035enc_skip_in_place
5986.L034enc_in_place:
5987	leal	(%edi,%ecx,1),%edi
5988.L035enc_skip_in_place:
5989	movl	%ebx,%ecx
5990	xorl	%eax,%eax
5991.align	4
5992.long	2868115081
5993	movl	48(%esp),%edi
5994	movl	%edx,%esi
5995	movl	(%edi),%eax
5996	movl	4(%edi),%ebx
5997	movl	$16,40(%esp)
5998	jmp	.L033slow_enc_loop_x86
5999.align	16
6000.L029slow_decrypt:
6001	btl	$25,52(%esp)
6002	jnc	.L036slow_dec_loop_x86
6003.align	4
6004.L037slow_dec_loop_sse:
6005	movq	(%esi),%mm0
6006	movq	8(%esi),%mm4
6007	movl	44(%esp),%edi
6008	call	_sse_AES_decrypt_compact
6009	movl	32(%esp),%esi
6010	leal	60(%esp),%eax
6011	movl	36(%esp),%ebx
6012	movl	40(%esp),%ecx
6013	movl	48(%esp),%edi
6014	movq	(%esi),%mm1
6015	movq	8(%esi),%mm5
6016	pxor	(%edi),%mm0
6017	pxor	8(%edi),%mm4
6018	movq	%mm1,(%edi)
6019	movq	%mm5,8(%edi)
6020	subl	$16,%ecx
6021	jc	.L038slow_dec_partial_sse
6022	movq	%mm0,(%ebx)
6023	movq	%mm4,8(%ebx)
6024	leal	16(%ebx),%ebx
6025	movl	%ebx,36(%esp)
6026	leal	16(%esi),%esi
6027	movl	%esi,32(%esp)
6028	movl	%ecx,40(%esp)
6029	jnz	.L037slow_dec_loop_sse
6030	emms
6031	movl	28(%esp),%esp
6032	popfl
6033	popl	%edi
6034	popl	%esi
6035	popl	%ebx
6036	popl	%ebp
6037	ret
6038	pushfl
6039.align	16
6040.L038slow_dec_partial_sse:
6041	movq	%mm0,(%eax)
6042	movq	%mm4,8(%eax)
6043	emms
6044	addl	$16,%ecx
6045	movl	%ebx,%edi
6046	movl	%eax,%esi
6047.align	4
6048.long	2767451785
6049	movl	28(%esp),%esp
6050	popfl
6051	popl	%edi
6052	popl	%esi
6053	popl	%ebx
6054	popl	%ebp
6055	ret
6056	pushfl
6057.align	16
6058.L036slow_dec_loop_x86:
6059	movl	(%esi),%eax
6060	movl	4(%esi),%ebx
6061	movl	8(%esi),%ecx
6062	movl	12(%esi),%edx
6063	leal	60(%esp),%edi
6064	movl	%eax,(%edi)
6065	movl	%ebx,4(%edi)
6066	movl	%ecx,8(%edi)
6067	movl	%edx,12(%edi)
6068	movl	44(%esp),%edi
6069	call	_x86_AES_decrypt_compact
6070	movl	48(%esp),%edi
6071	movl	40(%esp),%esi
6072	xorl	(%edi),%eax
6073	xorl	4(%edi),%ebx
6074	xorl	8(%edi),%ecx
6075	xorl	12(%edi),%edx
6076	subl	$16,%esi
6077	jc	.L039slow_dec_partial_x86
6078	movl	%esi,40(%esp)
6079	movl	36(%esp),%esi
6080	movl	%eax,(%esi)
6081	movl	%ebx,4(%esi)
6082	movl	%ecx,8(%esi)
6083	movl	%edx,12(%esi)
6084	leal	16(%esi),%esi
6085	movl	%esi,36(%esp)
6086	leal	60(%esp),%esi
6087	movl	(%esi),%eax
6088	movl	4(%esi),%ebx
6089	movl	8(%esi),%ecx
6090	movl	12(%esi),%edx
6091	movl	%eax,(%edi)
6092	movl	%ebx,4(%edi)
6093	movl	%ecx,8(%edi)
6094	movl	%edx,12(%edi)
6095	movl	32(%esp),%esi
6096	leal	16(%esi),%esi
6097	movl	%esi,32(%esp)
6098	jnz	.L036slow_dec_loop_x86
6099	movl	28(%esp),%esp
6100	popfl
6101	popl	%edi
6102	popl	%esi
6103	popl	%ebx
6104	popl	%ebp
6105	ret
6106	pushfl
6107.align	16
6108.L039slow_dec_partial_x86:
6109	leal	60(%esp),%esi
6110	movl	%eax,(%esi)
6111	movl	%ebx,4(%esi)
6112	movl	%ecx,8(%esi)
6113	movl	%edx,12(%esi)
6114	movl	32(%esp),%esi
6115	movl	(%esi),%eax
6116	movl	4(%esi),%ebx
6117	movl	8(%esi),%ecx
6118	movl	12(%esi),%edx
6119	movl	%eax,(%edi)
6120	movl	%ebx,4(%edi)
6121	movl	%ecx,8(%edi)
6122	movl	%edx,12(%edi)
6123	movl	40(%esp),%ecx
6124	movl	36(%esp),%edi
6125	leal	60(%esp),%esi
6126.align	4
6127.long	2767451785
6128	movl	28(%esp),%esp
6129	popfl
6130	popl	%edi
6131	popl	%esi
6132	popl	%ebx
6133	popl	%ebp
6134	ret
6135.size	AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin
6136.type	_x86_AES_set_encrypt_key,@function
6137.align	16
6138_x86_AES_set_encrypt_key:
6139	#ifdef __CET__
6140
6141.byte	243,15,30,251
6142	#endif
6143
6144	pushl	%ebp
6145	pushl	%ebx
6146	pushl	%esi
6147	pushl	%edi
6148	movl	24(%esp),%esi
6149	movl	32(%esp),%edi
6150	testl	$-1,%esi
6151	jz	.L040badpointer
6152	testl	$-1,%edi
6153	jz	.L040badpointer
6154	call	.L041pic_point
6155.L041pic_point:
6156	popl	%ebp
6157	leal	.LAES_Te-.L041pic_point(%ebp),%ebp
6158	leal	2176(%ebp),%ebp
6159	movl	-128(%ebp),%eax
6160	movl	-96(%ebp),%ebx
6161	movl	-64(%ebp),%ecx
6162	movl	-32(%ebp),%edx
6163	movl	(%ebp),%eax
6164	movl	32(%ebp),%ebx
6165	movl	64(%ebp),%ecx
6166	movl	96(%ebp),%edx
6167	movl	28(%esp),%ecx
6168	cmpl	$128,%ecx
6169	je	.L04210rounds
6170	cmpl	$192,%ecx
6171	je	.L04312rounds
6172	cmpl	$256,%ecx
6173	je	.L04414rounds
6174	movl	$-2,%eax
6175	jmp	.L045exit
6176.L04210rounds:
6177	movl	(%esi),%eax
6178	movl	4(%esi),%ebx
6179	movl	8(%esi),%ecx
6180	movl	12(%esi),%edx
6181	movl	%eax,(%edi)
6182	movl	%ebx,4(%edi)
6183	movl	%ecx,8(%edi)
6184	movl	%edx,12(%edi)
6185	xorl	%ecx,%ecx
6186	jmp	.L04610shortcut
6187.align	4
6188.L04710loop:
6189	movl	(%edi),%eax
6190	movl	12(%edi),%edx
6191.L04610shortcut:
6192	movzbl	%dl,%esi
6193	movzbl	-128(%ebp,%esi,1),%ebx
6194	movzbl	%dh,%esi
6195	shll	$24,%ebx
6196	xorl	%ebx,%eax
6197	movzbl	-128(%ebp,%esi,1),%ebx
6198	shrl	$16,%edx
6199	movzbl	%dl,%esi
6200	xorl	%ebx,%eax
6201	movzbl	-128(%ebp,%esi,1),%ebx
6202	movzbl	%dh,%esi
6203	shll	$8,%ebx
6204	xorl	%ebx,%eax
6205	movzbl	-128(%ebp,%esi,1),%ebx
6206	shll	$16,%ebx
6207	xorl	%ebx,%eax
6208	xorl	896(%ebp,%ecx,4),%eax
6209	movl	%eax,16(%edi)
6210	xorl	4(%edi),%eax
6211	movl	%eax,20(%edi)
6212	xorl	8(%edi),%eax
6213	movl	%eax,24(%edi)
6214	xorl	12(%edi),%eax
6215	movl	%eax,28(%edi)
6216	incl	%ecx
6217	addl	$16,%edi
6218	cmpl	$10,%ecx
6219	jl	.L04710loop
6220	movl	$10,80(%edi)
6221	xorl	%eax,%eax
6222	jmp	.L045exit
6223.L04312rounds:
6224	movl	(%esi),%eax
6225	movl	4(%esi),%ebx
6226	movl	8(%esi),%ecx
6227	movl	12(%esi),%edx
6228	movl	%eax,(%edi)
6229	movl	%ebx,4(%edi)
6230	movl	%ecx,8(%edi)
6231	movl	%edx,12(%edi)
6232	movl	16(%esi),%ecx
6233	movl	20(%esi),%edx
6234	movl	%ecx,16(%edi)
6235	movl	%edx,20(%edi)
6236	xorl	%ecx,%ecx
6237	jmp	.L04812shortcut
6238.align	4
6239.L04912loop:
6240	movl	(%edi),%eax
6241	movl	20(%edi),%edx
6242.L04812shortcut:
6243	movzbl	%dl,%esi
6244	movzbl	-128(%ebp,%esi,1),%ebx
6245	movzbl	%dh,%esi
6246	shll	$24,%ebx
6247	xorl	%ebx,%eax
6248	movzbl	-128(%ebp,%esi,1),%ebx
6249	shrl	$16,%edx
6250	movzbl	%dl,%esi
6251	xorl	%ebx,%eax
6252	movzbl	-128(%ebp,%esi,1),%ebx
6253	movzbl	%dh,%esi
6254	shll	$8,%ebx
6255	xorl	%ebx,%eax
6256	movzbl	-128(%ebp,%esi,1),%ebx
6257	shll	$16,%ebx
6258	xorl	%ebx,%eax
6259	xorl	896(%ebp,%ecx,4),%eax
6260	movl	%eax,24(%edi)
6261	xorl	4(%edi),%eax
6262	movl	%eax,28(%edi)
6263	xorl	8(%edi),%eax
6264	movl	%eax,32(%edi)
6265	xorl	12(%edi),%eax
6266	movl	%eax,36(%edi)
6267	cmpl	$7,%ecx
6268	je	.L05012break
6269	incl	%ecx
6270	xorl	16(%edi),%eax
6271	movl	%eax,40(%edi)
6272	xorl	20(%edi),%eax
6273	movl	%eax,44(%edi)
6274	addl	$24,%edi
6275	jmp	.L04912loop
6276.L05012break:
6277	movl	$12,72(%edi)
6278	xorl	%eax,%eax
6279	jmp	.L045exit
6280.L04414rounds:
6281	movl	(%esi),%eax
6282	movl	4(%esi),%ebx
6283	movl	8(%esi),%ecx
6284	movl	12(%esi),%edx
6285	movl	%eax,(%edi)
6286	movl	%ebx,4(%edi)
6287	movl	%ecx,8(%edi)
6288	movl	%edx,12(%edi)
6289	movl	16(%esi),%eax
6290	movl	20(%esi),%ebx
6291	movl	24(%esi),%ecx
6292	movl	28(%esi),%edx
6293	movl	%eax,16(%edi)
6294	movl	%ebx,20(%edi)
6295	movl	%ecx,24(%edi)
6296	movl	%edx,28(%edi)
6297	xorl	%ecx,%ecx
6298	jmp	.L05114shortcut
6299.align	4
6300.L05214loop:
6301	movl	28(%edi),%edx
6302.L05114shortcut:
6303	movl	(%edi),%eax
6304	movzbl	%dl,%esi
6305	movzbl	-128(%ebp,%esi,1),%ebx
6306	movzbl	%dh,%esi
6307	shll	$24,%ebx
6308	xorl	%ebx,%eax
6309	movzbl	-128(%ebp,%esi,1),%ebx
6310	shrl	$16,%edx
6311	movzbl	%dl,%esi
6312	xorl	%ebx,%eax
6313	movzbl	-128(%ebp,%esi,1),%ebx
6314	movzbl	%dh,%esi
6315	shll	$8,%ebx
6316	xorl	%ebx,%eax
6317	movzbl	-128(%ebp,%esi,1),%ebx
6318	shll	$16,%ebx
6319	xorl	%ebx,%eax
6320	xorl	896(%ebp,%ecx,4),%eax
6321	movl	%eax,32(%edi)
6322	xorl	4(%edi),%eax
6323	movl	%eax,36(%edi)
6324	xorl	8(%edi),%eax
6325	movl	%eax,40(%edi)
6326	xorl	12(%edi),%eax
6327	movl	%eax,44(%edi)
6328	cmpl	$6,%ecx
6329	je	.L05314break
6330	incl	%ecx
6331	movl	%eax,%edx
6332	movl	16(%edi),%eax
6333	movzbl	%dl,%esi
6334	movzbl	-128(%ebp,%esi,1),%ebx
6335	movzbl	%dh,%esi
6336	xorl	%ebx,%eax
6337	movzbl	-128(%ebp,%esi,1),%ebx
6338	shrl	$16,%edx
6339	shll	$8,%ebx
6340	movzbl	%dl,%esi
6341	xorl	%ebx,%eax
6342	movzbl	-128(%ebp,%esi,1),%ebx
6343	movzbl	%dh,%esi
6344	shll	$16,%ebx
6345	xorl	%ebx,%eax
6346	movzbl	-128(%ebp,%esi,1),%ebx
6347	shll	$24,%ebx
6348	xorl	%ebx,%eax
6349	movl	%eax,48(%edi)
6350	xorl	20(%edi),%eax
6351	movl	%eax,52(%edi)
6352	xorl	24(%edi),%eax
6353	movl	%eax,56(%edi)
6354	xorl	28(%edi),%eax
6355	movl	%eax,60(%edi)
6356	addl	$32,%edi
6357	jmp	.L05214loop
6358.L05314break:
6359	movl	$14,48(%edi)
6360	xorl	%eax,%eax
6361	jmp	.L045exit
6362.L040badpointer:
6363	movl	$-1,%eax
6364.L045exit:
6365	popl	%edi
6366	popl	%esi
6367	popl	%ebx
6368	popl	%ebp
6369	ret
6370.size	_x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key
6371.globl	AES_set_encrypt_key
6372.type	AES_set_encrypt_key,@function
6373.align	16
6374AES_set_encrypt_key:
6375.L_AES_set_encrypt_key_begin:
6376	#ifdef __CET__
6377
6378.byte	243,15,30,251
6379	#endif
6380
6381	call	_x86_AES_set_encrypt_key
6382	ret
6383.size	AES_set_encrypt_key,.-.L_AES_set_encrypt_key_begin
6384.globl	AES_set_decrypt_key
6385.type	AES_set_decrypt_key,@function
6386.align	16
6387AES_set_decrypt_key:
6388.L_AES_set_decrypt_key_begin:
6389	#ifdef __CET__
6390
6391.byte	243,15,30,251
6392	#endif
6393
6394	call	_x86_AES_set_encrypt_key
6395	cmpl	$0,%eax
6396	je	.L054proceed
6397	ret
6398.L054proceed:
6399	pushl	%ebp
6400	pushl	%ebx
6401	pushl	%esi
6402	pushl	%edi
6403	movl	28(%esp),%esi
6404	movl	240(%esi),%ecx
6405	leal	(,%ecx,4),%ecx
6406	leal	(%esi,%ecx,4),%edi
6407.align	4
6408.L055invert:
6409	movl	(%esi),%eax
6410	movl	4(%esi),%ebx
6411	movl	(%edi),%ecx
6412	movl	4(%edi),%edx
6413	movl	%eax,(%edi)
6414	movl	%ebx,4(%edi)
6415	movl	%ecx,(%esi)
6416	movl	%edx,4(%esi)
6417	movl	8(%esi),%eax
6418	movl	12(%esi),%ebx
6419	movl	8(%edi),%ecx
6420	movl	12(%edi),%edx
6421	movl	%eax,8(%edi)
6422	movl	%ebx,12(%edi)
6423	movl	%ecx,8(%esi)
6424	movl	%edx,12(%esi)
6425	addl	$16,%esi
6426	subl	$16,%edi
6427	cmpl	%edi,%esi
6428	jne	.L055invert
6429	movl	28(%esp),%edi
6430	movl	240(%edi),%esi
6431	leal	-2(%esi,%esi,1),%esi
6432	leal	(%edi,%esi,8),%esi
6433	movl	%esi,28(%esp)
6434	movl	16(%edi),%eax
6435.align	4
6436.L056permute:
6437	addl	$16,%edi
6438	movl	$2155905152,%ebp
6439	andl	%eax,%ebp
6440	leal	(%eax,%eax,1),%ebx
6441	movl	%ebp,%esi
6442	shrl	$7,%ebp
6443	subl	%ebp,%esi
6444	andl	$4278124286,%ebx
6445	andl	$454761243,%esi
6446	xorl	%esi,%ebx
6447	movl	$2155905152,%ebp
6448	andl	%ebx,%ebp
6449	leal	(%ebx,%ebx,1),%ecx
6450	movl	%ebp,%esi
6451	shrl	$7,%ebp
6452	subl	%ebp,%esi
6453	andl	$4278124286,%ecx
6454	andl	$454761243,%esi
6455	xorl	%eax,%ebx
6456	xorl	%esi,%ecx
6457	movl	$2155905152,%ebp
6458	andl	%ecx,%ebp
6459	leal	(%ecx,%ecx,1),%edx
6460	movl	%ebp,%esi
6461	shrl	$7,%ebp
6462	xorl	%eax,%ecx
6463	subl	%ebp,%esi
6464	andl	$4278124286,%edx
6465	andl	$454761243,%esi
6466	roll	$8,%eax
6467	xorl	%esi,%edx
6468	movl	4(%edi),%ebp
6469	xorl	%ebx,%eax
6470	xorl	%edx,%ebx
6471	xorl	%ecx,%eax
6472	roll	$24,%ebx
6473	xorl	%edx,%ecx
6474	xorl	%edx,%eax
6475	roll	$16,%ecx
6476	xorl	%ebx,%eax
6477	roll	$8,%edx
6478	xorl	%ecx,%eax
6479	movl	%ebp,%ebx
6480	xorl	%edx,%eax
6481	movl	%eax,(%edi)
6482	movl	$2155905152,%ebp
6483	andl	%ebx,%ebp
6484	leal	(%ebx,%ebx,1),%ecx
6485	movl	%ebp,%esi
6486	shrl	$7,%ebp
6487	subl	%ebp,%esi
6488	andl	$4278124286,%ecx
6489	andl	$454761243,%esi
6490	xorl	%esi,%ecx
6491	movl	$2155905152,%ebp
6492	andl	%ecx,%ebp
6493	leal	(%ecx,%ecx,1),%edx
6494	movl	%ebp,%esi
6495	shrl	$7,%ebp
6496	subl	%ebp,%esi
6497	andl	$4278124286,%edx
6498	andl	$454761243,%esi
6499	xorl	%ebx,%ecx
6500	xorl	%esi,%edx
6501	movl	$2155905152,%ebp
6502	andl	%edx,%ebp
6503	leal	(%edx,%edx,1),%eax
6504	movl	%ebp,%esi
6505	shrl	$7,%ebp
6506	xorl	%ebx,%edx
6507	subl	%ebp,%esi
6508	andl	$4278124286,%eax
6509	andl	$454761243,%esi
6510	roll	$8,%ebx
6511	xorl	%esi,%eax
6512	movl	8(%edi),%ebp
6513	xorl	%ecx,%ebx
6514	xorl	%eax,%ecx
6515	xorl	%edx,%ebx
6516	roll	$24,%ecx
6517	xorl	%eax,%edx
6518	xorl	%eax,%ebx
6519	roll	$16,%edx
6520	xorl	%ecx,%ebx
6521	roll	$8,%eax
6522	xorl	%edx,%ebx
6523	movl	%ebp,%ecx
6524	xorl	%eax,%ebx
6525	movl	%ebx,4(%edi)
6526	movl	$2155905152,%ebp
6527	andl	%ecx,%ebp
6528	leal	(%ecx,%ecx,1),%edx
6529	movl	%ebp,%esi
6530	shrl	$7,%ebp
6531	subl	%ebp,%esi
6532	andl	$4278124286,%edx
6533	andl	$454761243,%esi
6534	xorl	%esi,%edx
6535	movl	$2155905152,%ebp
6536	andl	%edx,%ebp
6537	leal	(%edx,%edx,1),%eax
6538	movl	%ebp,%esi
6539	shrl	$7,%ebp
6540	subl	%ebp,%esi
6541	andl	$4278124286,%eax
6542	andl	$454761243,%esi
6543	xorl	%ecx,%edx
6544	xorl	%esi,%eax
6545	movl	$2155905152,%ebp
6546	andl	%eax,%ebp
6547	leal	(%eax,%eax,1),%ebx
6548	movl	%ebp,%esi
6549	shrl	$7,%ebp
6550	xorl	%ecx,%eax
6551	subl	%ebp,%esi
6552	andl	$4278124286,%ebx
6553	andl	$454761243,%esi
6554	roll	$8,%ecx
6555	xorl	%esi,%ebx
6556	movl	12(%edi),%ebp
6557	xorl	%edx,%ecx
6558	xorl	%ebx,%edx
6559	xorl	%eax,%ecx
6560	roll	$24,%edx
6561	xorl	%ebx,%eax
6562	xorl	%ebx,%ecx
6563	roll	$16,%eax
6564	xorl	%edx,%ecx
6565	roll	$8,%ebx
6566	xorl	%eax,%ecx
6567	movl	%ebp,%edx
6568	xorl	%ebx,%ecx
6569	movl	%ecx,8(%edi)
6570	movl	$2155905152,%ebp
6571	andl	%edx,%ebp
6572	leal	(%edx,%edx,1),%eax
6573	movl	%ebp,%esi
6574	shrl	$7,%ebp
6575	subl	%ebp,%esi
6576	andl	$4278124286,%eax
6577	andl	$454761243,%esi
6578	xorl	%esi,%eax
6579	movl	$2155905152,%ebp
6580	andl	%eax,%ebp
6581	leal	(%eax,%eax,1),%ebx
6582	movl	%ebp,%esi
6583	shrl	$7,%ebp
6584	subl	%ebp,%esi
6585	andl	$4278124286,%ebx
6586	andl	$454761243,%esi
6587	xorl	%edx,%eax
6588	xorl	%esi,%ebx
6589	movl	$2155905152,%ebp
6590	andl	%ebx,%ebp
6591	leal	(%ebx,%ebx,1),%ecx
6592	movl	%ebp,%esi
6593	shrl	$7,%ebp
6594	xorl	%edx,%ebx
6595	subl	%ebp,%esi
6596	andl	$4278124286,%ecx
6597	andl	$454761243,%esi
6598	roll	$8,%edx
6599	xorl	%esi,%ecx
6600	movl	16(%edi),%ebp
6601	xorl	%eax,%edx
6602	xorl	%ecx,%eax
6603	xorl	%ebx,%edx
6604	roll	$24,%eax
6605	xorl	%ecx,%ebx
6606	xorl	%ecx,%edx
6607	roll	$16,%ebx
6608	xorl	%eax,%edx
6609	roll	$8,%ecx
6610	xorl	%ebx,%edx
6611	movl	%ebp,%eax
6612	xorl	%ecx,%edx
6613	movl	%edx,12(%edi)
6614	cmpl	28(%esp),%edi
6615	jb	.L056permute
6616	xorl	%eax,%eax
6617	popl	%edi
6618	popl	%esi
6619	popl	%ebx
6620	popl	%ebp
6621	ret
6622.size	AES_set_decrypt_key,.-.L_AES_set_decrypt_key_begin
6623.byte	65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
6624.byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
6625.byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
6626.comm	OPENSSL_ia32cap_P,16,4
6627
6628	.section ".note.gnu.property", "a"
6629	.p2align 2
6630	.long 1f - 0f
6631	.long 4f - 1f
6632	.long 5
66330:
6634	.asciz "GNU"
66351:
6636	.p2align 2
6637	.long 0xc0000002
6638	.long 3f - 2f
66392:
6640	.long 3
66413:
6642	.p2align 2
66434:
6644#endif
6645