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