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