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