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