xref: /freebsd/sys/crypto/openssl/i386/e_padlock-x86.S (revision 2008043f386721d58158e37e0d7e50df8095942d)
1/* Do not modify. This file is auto-generated from e_padlock-x86.pl. */
2#ifdef PIC
3.text
4.globl	padlock_capability
5.type	padlock_capability,@function
6.align	16
7padlock_capability:
8.L_padlock_capability_begin:
9	#ifdef __CET__
10
11.byte	243,15,30,251
12	#endif
13
14	pushl	%ebx
15	pushfl
16	popl	%eax
17	movl	%eax,%ecx
18	xorl	$2097152,%eax
19	pushl	%eax
20	popfl
21	pushfl
22	popl	%eax
23	xorl	%eax,%ecx
24	xorl	%eax,%eax
25	btl	$21,%ecx
26	jnc	.L000noluck
27	.byte	0x0f,0xa2
28	xorl	%eax,%eax
29	cmpl	$0x746e6543,%ebx
30	jne	.L001zhaoxin
31	cmpl	$0x48727561,%edx
32	jne	.L000noluck
33	cmpl	$0x736c7561,%ecx
34	jne	.L000noluck
35	jmp	.L002zhaoxinEnd
36.L001zhaoxin:
37	cmpl	$0x68532020,%ebx
38	jne	.L000noluck
39	cmpl	$0x68676e61,%edx
40	jne	.L000noluck
41	cmpl	$0x20206961,%ecx
42	jne	.L000noluck
43.L002zhaoxinEnd:
44	movl	$3221225472,%eax
45	.byte	0x0f,0xa2
46	movl	%eax,%edx
47	xorl	%eax,%eax
48	cmpl	$3221225473,%edx
49	jb	.L000noluck
50	movl	$1,%eax
51	.byte	0x0f,0xa2
52	orl	$15,%eax
53	xorl	%ebx,%ebx
54	andl	$4095,%eax
55	cmpl	$1791,%eax
56	sete	%bl
57	movl	$3221225473,%eax
58	pushl	%ebx
59	.byte	0x0f,0xa2
60	popl	%ebx
61	movl	%edx,%eax
62	shll	$4,%ebx
63	andl	$4294967279,%eax
64	orl	%ebx,%eax
65.L000noluck:
66	popl	%ebx
67	ret
68.size	padlock_capability,.-.L_padlock_capability_begin
69.globl	padlock_key_bswap
70.type	padlock_key_bswap,@function
71.align	16
72padlock_key_bswap:
73.L_padlock_key_bswap_begin:
74	#ifdef __CET__
75
76.byte	243,15,30,251
77	#endif
78
79	movl	4(%esp),%edx
80	movl	240(%edx),%ecx
81	incl	%ecx
82	shll	$2,%ecx
83.L003bswap_loop:
84	movl	(%edx),%eax
85	bswap	%eax
86	movl	%eax,(%edx)
87	leal	4(%edx),%edx
88	subl	$1,%ecx
89	jnz	.L003bswap_loop
90	ret
91.size	padlock_key_bswap,.-.L_padlock_key_bswap_begin
92.globl	padlock_verify_context
93.type	padlock_verify_context,@function
94.align	16
95padlock_verify_context:
96.L_padlock_verify_context_begin:
97	#ifdef __CET__
98
99.byte	243,15,30,251
100	#endif
101
102	movl	4(%esp),%edx
103	leal	.Lpadlock_saved_context-.L004verify_pic_point,%eax
104	pushfl
105	call	_padlock_verify_ctx
106.L004verify_pic_point:
107	leal	4(%esp),%esp
108	ret
109.size	padlock_verify_context,.-.L_padlock_verify_context_begin
110.type	_padlock_verify_ctx,@function
111.align	16
112_padlock_verify_ctx:
113	#ifdef __CET__
114
115.byte	243,15,30,251
116	#endif
117
118	addl	(%esp),%eax
119	btl	$30,4(%esp)
120	jnc	.L005verified
121	cmpl	(%eax),%edx
122	je	.L005verified
123	pushfl
124	popfl
125.L005verified:
126	movl	%edx,(%eax)
127	ret
128.size	_padlock_verify_ctx,.-_padlock_verify_ctx
129.globl	padlock_reload_key
130.type	padlock_reload_key,@function
131.align	16
132padlock_reload_key:
133.L_padlock_reload_key_begin:
134	#ifdef __CET__
135
136.byte	243,15,30,251
137	#endif
138
139	pushfl
140	popfl
141	ret
142.size	padlock_reload_key,.-.L_padlock_reload_key_begin
143.globl	padlock_aes_block
144.type	padlock_aes_block,@function
145.align	16
146padlock_aes_block:
147.L_padlock_aes_block_begin:
148	#ifdef __CET__
149
150.byte	243,15,30,251
151	#endif
152
153	pushl	%edi
154	pushl	%esi
155	pushl	%ebx
156	movl	16(%esp),%edi
157	movl	20(%esp),%esi
158	movl	24(%esp),%edx
159	movl	$1,%ecx
160	leal	32(%edx),%ebx
161	leal	16(%edx),%edx
162.byte	243,15,167,200
163	popl	%ebx
164	popl	%esi
165	popl	%edi
166	ret
167.size	padlock_aes_block,.-.L_padlock_aes_block_begin
168.globl	padlock_ecb_encrypt
169.type	padlock_ecb_encrypt,@function
170.align	16
171padlock_ecb_encrypt:
172.L_padlock_ecb_encrypt_begin:
173	#ifdef __CET__
174
175.byte	243,15,30,251
176	#endif
177
178	pushl	%ebp
179	pushl	%ebx
180	pushl	%esi
181	pushl	%edi
182	movl	20(%esp),%edi
183	movl	24(%esp),%esi
184	movl	28(%esp),%edx
185	movl	32(%esp),%ecx
186	testl	$15,%edx
187	jnz	.L006ecb_abort
188	testl	$15,%ecx
189	jnz	.L006ecb_abort
190	leal	.Lpadlock_saved_context-.L007ecb_pic_point,%eax
191	pushfl
192	cld
193	call	_padlock_verify_ctx
194.L007ecb_pic_point:
195	leal	16(%edx),%edx
196	xorl	%eax,%eax
197	xorl	%ebx,%ebx
198	testl	$32,(%edx)
199	jnz	.L008ecb_aligned
200	testl	$15,%edi
201	setz	%al
202	testl	$15,%esi
203	setz	%bl
204	testl	%ebx,%eax
205	jnz	.L008ecb_aligned
206	negl	%eax
207	movl	$512,%ebx
208	notl	%eax
209	leal	-24(%esp),%ebp
210	cmpl	%ebx,%ecx
211	cmovcl	%ecx,%ebx
212	andl	%ebx,%eax
213	movl	%ecx,%ebx
214	negl	%eax
215	andl	$511,%ebx
216	leal	(%eax,%ebp,1),%esp
217	movl	$512,%eax
218	cmovzl	%eax,%ebx
219	movl	%ebp,%eax
220	andl	$-16,%ebp
221	andl	$-16,%esp
222	movl	%eax,16(%ebp)
223	cmpl	%ebx,%ecx
224	ja	.L009ecb_loop
225	movl	%esi,%eax
226	cmpl	%esp,%ebp
227	cmovel	%edi,%eax
228	addl	%ecx,%eax
229	negl	%eax
230	andl	$4095,%eax
231	cmpl	$128,%eax
232	movl	$-128,%eax
233	cmovael	%ebx,%eax
234	andl	%eax,%ebx
235	jz	.L010ecb_unaligned_tail
236	jmp	.L009ecb_loop
237.align	16
238.L009ecb_loop:
239	movl	%edi,(%ebp)
240	movl	%esi,4(%ebp)
241	movl	%ecx,8(%ebp)
242	movl	%ebx,%ecx
243	movl	%ebx,12(%ebp)
244	testl	$15,%edi
245	cmovnzl	%esp,%edi
246	testl	$15,%esi
247	jz	.L011ecb_inp_aligned
248	shrl	$2,%ecx
249.byte	243,165
250	subl	%ebx,%edi
251	movl	%ebx,%ecx
252	movl	%edi,%esi
253.L011ecb_inp_aligned:
254	leal	-16(%edx),%eax
255	leal	16(%edx),%ebx
256	shrl	$4,%ecx
257.byte	243,15,167,200
258	movl	(%ebp),%edi
259	movl	12(%ebp),%ebx
260	testl	$15,%edi
261	jz	.L012ecb_out_aligned
262	movl	%ebx,%ecx
263	leal	(%esp),%esi
264	shrl	$2,%ecx
265.byte	243,165
266	subl	%ebx,%edi
267.L012ecb_out_aligned:
268	movl	4(%ebp),%esi
269	movl	8(%ebp),%ecx
270	addl	%ebx,%edi
271	addl	%ebx,%esi
272	subl	%ebx,%ecx
273	movl	$512,%ebx
274	jz	.L013ecb_break
275	cmpl	%ebx,%ecx
276	jae	.L009ecb_loop
277.L010ecb_unaligned_tail:
278	xorl	%eax,%eax
279	cmpl	%ebp,%esp
280	cmovel	%ecx,%eax
281	subl	%eax,%esp
282	movl	%edi,%eax
283	movl	%ecx,%ebx
284	shrl	$2,%ecx
285	leal	(%esp),%edi
286.byte	243,165
287	movl	%esp,%esi
288	movl	%eax,%edi
289	movl	%ebx,%ecx
290	jmp	.L009ecb_loop
291.align	16
292.L013ecb_break:
293	cmpl	%ebp,%esp
294	je	.L014ecb_done
295	pxor	%xmm0,%xmm0
296	leal	(%esp),%eax
297.L015ecb_bzero:
298	movaps	%xmm0,(%eax)
299	leal	16(%eax),%eax
300	cmpl	%eax,%ebp
301	ja	.L015ecb_bzero
302.L014ecb_done:
303	movl	16(%ebp),%ebp
304	leal	24(%ebp),%esp
305	jmp	.L016ecb_exit
306.align	16
307.L008ecb_aligned:
308	leal	(%esi,%ecx,1),%ebp
309	negl	%ebp
310	andl	$4095,%ebp
311	xorl	%eax,%eax
312	cmpl	$128,%ebp
313	movl	$127,%ebp
314	cmovael	%eax,%ebp
315	andl	%ecx,%ebp
316	subl	%ebp,%ecx
317	jz	.L017ecb_aligned_tail
318	leal	-16(%edx),%eax
319	leal	16(%edx),%ebx
320	shrl	$4,%ecx
321.byte	243,15,167,200
322	testl	%ebp,%ebp
323	jz	.L016ecb_exit
324.L017ecb_aligned_tail:
325	movl	%ebp,%ecx
326	leal	-24(%esp),%ebp
327	movl	%ebp,%esp
328	movl	%ebp,%eax
329	subl	%ecx,%esp
330	andl	$-16,%ebp
331	andl	$-16,%esp
332	movl	%eax,16(%ebp)
333	movl	%edi,%eax
334	movl	%ecx,%ebx
335	shrl	$2,%ecx
336	leal	(%esp),%edi
337.byte	243,165
338	movl	%esp,%esi
339	movl	%eax,%edi
340	movl	%ebx,%ecx
341	jmp	.L009ecb_loop
342.L016ecb_exit:
343	movl	$1,%eax
344	leal	4(%esp),%esp
345.L006ecb_abort:
346	popl	%edi
347	popl	%esi
348	popl	%ebx
349	popl	%ebp
350	ret
351.size	padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
352.globl	padlock_cbc_encrypt
353.type	padlock_cbc_encrypt,@function
354.align	16
355padlock_cbc_encrypt:
356.L_padlock_cbc_encrypt_begin:
357	#ifdef __CET__
358
359.byte	243,15,30,251
360	#endif
361
362	pushl	%ebp
363	pushl	%ebx
364	pushl	%esi
365	pushl	%edi
366	movl	20(%esp),%edi
367	movl	24(%esp),%esi
368	movl	28(%esp),%edx
369	movl	32(%esp),%ecx
370	testl	$15,%edx
371	jnz	.L018cbc_abort
372	testl	$15,%ecx
373	jnz	.L018cbc_abort
374	leal	.Lpadlock_saved_context-.L019cbc_pic_point,%eax
375	pushfl
376	cld
377	call	_padlock_verify_ctx
378.L019cbc_pic_point:
379	leal	16(%edx),%edx
380	xorl	%eax,%eax
381	xorl	%ebx,%ebx
382	testl	$32,(%edx)
383	jnz	.L020cbc_aligned
384	testl	$15,%edi
385	setz	%al
386	testl	$15,%esi
387	setz	%bl
388	testl	%ebx,%eax
389	jnz	.L020cbc_aligned
390	negl	%eax
391	movl	$512,%ebx
392	notl	%eax
393	leal	-24(%esp),%ebp
394	cmpl	%ebx,%ecx
395	cmovcl	%ecx,%ebx
396	andl	%ebx,%eax
397	movl	%ecx,%ebx
398	negl	%eax
399	andl	$511,%ebx
400	leal	(%eax,%ebp,1),%esp
401	movl	$512,%eax
402	cmovzl	%eax,%ebx
403	movl	%ebp,%eax
404	andl	$-16,%ebp
405	andl	$-16,%esp
406	movl	%eax,16(%ebp)
407	cmpl	%ebx,%ecx
408	ja	.L021cbc_loop
409	movl	%esi,%eax
410	cmpl	%esp,%ebp
411	cmovel	%edi,%eax
412	addl	%ecx,%eax
413	negl	%eax
414	andl	$4095,%eax
415	cmpl	$64,%eax
416	movl	$-64,%eax
417	cmovael	%ebx,%eax
418	andl	%eax,%ebx
419	jz	.L022cbc_unaligned_tail
420	jmp	.L021cbc_loop
421.align	16
422.L021cbc_loop:
423	movl	%edi,(%ebp)
424	movl	%esi,4(%ebp)
425	movl	%ecx,8(%ebp)
426	movl	%ebx,%ecx
427	movl	%ebx,12(%ebp)
428	testl	$15,%edi
429	cmovnzl	%esp,%edi
430	testl	$15,%esi
431	jz	.L023cbc_inp_aligned
432	shrl	$2,%ecx
433.byte	243,165
434	subl	%ebx,%edi
435	movl	%ebx,%ecx
436	movl	%edi,%esi
437.L023cbc_inp_aligned:
438	leal	-16(%edx),%eax
439	leal	16(%edx),%ebx
440	shrl	$4,%ecx
441.byte	243,15,167,208
442	movaps	(%eax),%xmm0
443	movaps	%xmm0,-16(%edx)
444	movl	(%ebp),%edi
445	movl	12(%ebp),%ebx
446	testl	$15,%edi
447	jz	.L024cbc_out_aligned
448	movl	%ebx,%ecx
449	leal	(%esp),%esi
450	shrl	$2,%ecx
451.byte	243,165
452	subl	%ebx,%edi
453.L024cbc_out_aligned:
454	movl	4(%ebp),%esi
455	movl	8(%ebp),%ecx
456	addl	%ebx,%edi
457	addl	%ebx,%esi
458	subl	%ebx,%ecx
459	movl	$512,%ebx
460	jz	.L025cbc_break
461	cmpl	%ebx,%ecx
462	jae	.L021cbc_loop
463.L022cbc_unaligned_tail:
464	xorl	%eax,%eax
465	cmpl	%ebp,%esp
466	cmovel	%ecx,%eax
467	subl	%eax,%esp
468	movl	%edi,%eax
469	movl	%ecx,%ebx
470	shrl	$2,%ecx
471	leal	(%esp),%edi
472.byte	243,165
473	movl	%esp,%esi
474	movl	%eax,%edi
475	movl	%ebx,%ecx
476	jmp	.L021cbc_loop
477.align	16
478.L025cbc_break:
479	cmpl	%ebp,%esp
480	je	.L026cbc_done
481	pxor	%xmm0,%xmm0
482	leal	(%esp),%eax
483.L027cbc_bzero:
484	movaps	%xmm0,(%eax)
485	leal	16(%eax),%eax
486	cmpl	%eax,%ebp
487	ja	.L027cbc_bzero
488.L026cbc_done:
489	movl	16(%ebp),%ebp
490	leal	24(%ebp),%esp
491	jmp	.L028cbc_exit
492.align	16
493.L020cbc_aligned:
494	leal	(%esi,%ecx,1),%ebp
495	negl	%ebp
496	andl	$4095,%ebp
497	xorl	%eax,%eax
498	cmpl	$64,%ebp
499	movl	$63,%ebp
500	cmovael	%eax,%ebp
501	andl	%ecx,%ebp
502	subl	%ebp,%ecx
503	jz	.L029cbc_aligned_tail
504	leal	-16(%edx),%eax
505	leal	16(%edx),%ebx
506	shrl	$4,%ecx
507.byte	243,15,167,208
508	movaps	(%eax),%xmm0
509	movaps	%xmm0,-16(%edx)
510	testl	%ebp,%ebp
511	jz	.L028cbc_exit
512.L029cbc_aligned_tail:
513	movl	%ebp,%ecx
514	leal	-24(%esp),%ebp
515	movl	%ebp,%esp
516	movl	%ebp,%eax
517	subl	%ecx,%esp
518	andl	$-16,%ebp
519	andl	$-16,%esp
520	movl	%eax,16(%ebp)
521	movl	%edi,%eax
522	movl	%ecx,%ebx
523	shrl	$2,%ecx
524	leal	(%esp),%edi
525.byte	243,165
526	movl	%esp,%esi
527	movl	%eax,%edi
528	movl	%ebx,%ecx
529	jmp	.L021cbc_loop
530.L028cbc_exit:
531	movl	$1,%eax
532	leal	4(%esp),%esp
533.L018cbc_abort:
534	popl	%edi
535	popl	%esi
536	popl	%ebx
537	popl	%ebp
538	ret
539.size	padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
540.globl	padlock_cfb_encrypt
541.type	padlock_cfb_encrypt,@function
542.align	16
543padlock_cfb_encrypt:
544.L_padlock_cfb_encrypt_begin:
545	#ifdef __CET__
546
547.byte	243,15,30,251
548	#endif
549
550	pushl	%ebp
551	pushl	%ebx
552	pushl	%esi
553	pushl	%edi
554	movl	20(%esp),%edi
555	movl	24(%esp),%esi
556	movl	28(%esp),%edx
557	movl	32(%esp),%ecx
558	testl	$15,%edx
559	jnz	.L030cfb_abort
560	testl	$15,%ecx
561	jnz	.L030cfb_abort
562	leal	.Lpadlock_saved_context-.L031cfb_pic_point,%eax
563	pushfl
564	cld
565	call	_padlock_verify_ctx
566.L031cfb_pic_point:
567	leal	16(%edx),%edx
568	xorl	%eax,%eax
569	xorl	%ebx,%ebx
570	testl	$32,(%edx)
571	jnz	.L032cfb_aligned
572	testl	$15,%edi
573	setz	%al
574	testl	$15,%esi
575	setz	%bl
576	testl	%ebx,%eax
577	jnz	.L032cfb_aligned
578	negl	%eax
579	movl	$512,%ebx
580	notl	%eax
581	leal	-24(%esp),%ebp
582	cmpl	%ebx,%ecx
583	cmovcl	%ecx,%ebx
584	andl	%ebx,%eax
585	movl	%ecx,%ebx
586	negl	%eax
587	andl	$511,%ebx
588	leal	(%eax,%ebp,1),%esp
589	movl	$512,%eax
590	cmovzl	%eax,%ebx
591	movl	%ebp,%eax
592	andl	$-16,%ebp
593	andl	$-16,%esp
594	movl	%eax,16(%ebp)
595	jmp	.L033cfb_loop
596.align	16
597.L033cfb_loop:
598	movl	%edi,(%ebp)
599	movl	%esi,4(%ebp)
600	movl	%ecx,8(%ebp)
601	movl	%ebx,%ecx
602	movl	%ebx,12(%ebp)
603	testl	$15,%edi
604	cmovnzl	%esp,%edi
605	testl	$15,%esi
606	jz	.L034cfb_inp_aligned
607	shrl	$2,%ecx
608.byte	243,165
609	subl	%ebx,%edi
610	movl	%ebx,%ecx
611	movl	%edi,%esi
612.L034cfb_inp_aligned:
613	leal	-16(%edx),%eax
614	leal	16(%edx),%ebx
615	shrl	$4,%ecx
616.byte	243,15,167,224
617	movaps	(%eax),%xmm0
618	movaps	%xmm0,-16(%edx)
619	movl	(%ebp),%edi
620	movl	12(%ebp),%ebx
621	testl	$15,%edi
622	jz	.L035cfb_out_aligned
623	movl	%ebx,%ecx
624	leal	(%esp),%esi
625	shrl	$2,%ecx
626.byte	243,165
627	subl	%ebx,%edi
628.L035cfb_out_aligned:
629	movl	4(%ebp),%esi
630	movl	8(%ebp),%ecx
631	addl	%ebx,%edi
632	addl	%ebx,%esi
633	subl	%ebx,%ecx
634	movl	$512,%ebx
635	jnz	.L033cfb_loop
636	cmpl	%ebp,%esp
637	je	.L036cfb_done
638	pxor	%xmm0,%xmm0
639	leal	(%esp),%eax
640.L037cfb_bzero:
641	movaps	%xmm0,(%eax)
642	leal	16(%eax),%eax
643	cmpl	%eax,%ebp
644	ja	.L037cfb_bzero
645.L036cfb_done:
646	movl	16(%ebp),%ebp
647	leal	24(%ebp),%esp
648	jmp	.L038cfb_exit
649.align	16
650.L032cfb_aligned:
651	leal	-16(%edx),%eax
652	leal	16(%edx),%ebx
653	shrl	$4,%ecx
654.byte	243,15,167,224
655	movaps	(%eax),%xmm0
656	movaps	%xmm0,-16(%edx)
657.L038cfb_exit:
658	movl	$1,%eax
659	leal	4(%esp),%esp
660.L030cfb_abort:
661	popl	%edi
662	popl	%esi
663	popl	%ebx
664	popl	%ebp
665	ret
666.size	padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin
667.globl	padlock_ofb_encrypt
668.type	padlock_ofb_encrypt,@function
669.align	16
670padlock_ofb_encrypt:
671.L_padlock_ofb_encrypt_begin:
672	#ifdef __CET__
673
674.byte	243,15,30,251
675	#endif
676
677	pushl	%ebp
678	pushl	%ebx
679	pushl	%esi
680	pushl	%edi
681	movl	20(%esp),%edi
682	movl	24(%esp),%esi
683	movl	28(%esp),%edx
684	movl	32(%esp),%ecx
685	testl	$15,%edx
686	jnz	.L039ofb_abort
687	testl	$15,%ecx
688	jnz	.L039ofb_abort
689	leal	.Lpadlock_saved_context-.L040ofb_pic_point,%eax
690	pushfl
691	cld
692	call	_padlock_verify_ctx
693.L040ofb_pic_point:
694	leal	16(%edx),%edx
695	xorl	%eax,%eax
696	xorl	%ebx,%ebx
697	testl	$32,(%edx)
698	jnz	.L041ofb_aligned
699	testl	$15,%edi
700	setz	%al
701	testl	$15,%esi
702	setz	%bl
703	testl	%ebx,%eax
704	jnz	.L041ofb_aligned
705	negl	%eax
706	movl	$512,%ebx
707	notl	%eax
708	leal	-24(%esp),%ebp
709	cmpl	%ebx,%ecx
710	cmovcl	%ecx,%ebx
711	andl	%ebx,%eax
712	movl	%ecx,%ebx
713	negl	%eax
714	andl	$511,%ebx
715	leal	(%eax,%ebp,1),%esp
716	movl	$512,%eax
717	cmovzl	%eax,%ebx
718	movl	%ebp,%eax
719	andl	$-16,%ebp
720	andl	$-16,%esp
721	movl	%eax,16(%ebp)
722	jmp	.L042ofb_loop
723.align	16
724.L042ofb_loop:
725	movl	%edi,(%ebp)
726	movl	%esi,4(%ebp)
727	movl	%ecx,8(%ebp)
728	movl	%ebx,%ecx
729	movl	%ebx,12(%ebp)
730	testl	$15,%edi
731	cmovnzl	%esp,%edi
732	testl	$15,%esi
733	jz	.L043ofb_inp_aligned
734	shrl	$2,%ecx
735.byte	243,165
736	subl	%ebx,%edi
737	movl	%ebx,%ecx
738	movl	%edi,%esi
739.L043ofb_inp_aligned:
740	leal	-16(%edx),%eax
741	leal	16(%edx),%ebx
742	shrl	$4,%ecx
743.byte	243,15,167,232
744	movaps	(%eax),%xmm0
745	movaps	%xmm0,-16(%edx)
746	movl	(%ebp),%edi
747	movl	12(%ebp),%ebx
748	testl	$15,%edi
749	jz	.L044ofb_out_aligned
750	movl	%ebx,%ecx
751	leal	(%esp),%esi
752	shrl	$2,%ecx
753.byte	243,165
754	subl	%ebx,%edi
755.L044ofb_out_aligned:
756	movl	4(%ebp),%esi
757	movl	8(%ebp),%ecx
758	addl	%ebx,%edi
759	addl	%ebx,%esi
760	subl	%ebx,%ecx
761	movl	$512,%ebx
762	jnz	.L042ofb_loop
763	cmpl	%ebp,%esp
764	je	.L045ofb_done
765	pxor	%xmm0,%xmm0
766	leal	(%esp),%eax
767.L046ofb_bzero:
768	movaps	%xmm0,(%eax)
769	leal	16(%eax),%eax
770	cmpl	%eax,%ebp
771	ja	.L046ofb_bzero
772.L045ofb_done:
773	movl	16(%ebp),%ebp
774	leal	24(%ebp),%esp
775	jmp	.L047ofb_exit
776.align	16
777.L041ofb_aligned:
778	leal	-16(%edx),%eax
779	leal	16(%edx),%ebx
780	shrl	$4,%ecx
781.byte	243,15,167,232
782	movaps	(%eax),%xmm0
783	movaps	%xmm0,-16(%edx)
784.L047ofb_exit:
785	movl	$1,%eax
786	leal	4(%esp),%esp
787.L039ofb_abort:
788	popl	%edi
789	popl	%esi
790	popl	%ebx
791	popl	%ebp
792	ret
793.size	padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin
794.globl	padlock_ctr32_encrypt
795.type	padlock_ctr32_encrypt,@function
796.align	16
797padlock_ctr32_encrypt:
798.L_padlock_ctr32_encrypt_begin:
799	#ifdef __CET__
800
801.byte	243,15,30,251
802	#endif
803
804	pushl	%ebp
805	pushl	%ebx
806	pushl	%esi
807	pushl	%edi
808	movl	20(%esp),%edi
809	movl	24(%esp),%esi
810	movl	28(%esp),%edx
811	movl	32(%esp),%ecx
812	testl	$15,%edx
813	jnz	.L048ctr32_abort
814	testl	$15,%ecx
815	jnz	.L048ctr32_abort
816	leal	.Lpadlock_saved_context-.L049ctr32_pic_point,%eax
817	pushfl
818	cld
819	call	_padlock_verify_ctx
820.L049ctr32_pic_point:
821	leal	16(%edx),%edx
822	xorl	%eax,%eax
823	movq	-16(%edx),%mm0
824	movl	$512,%ebx
825	notl	%eax
826	leal	-24(%esp),%ebp
827	cmpl	%ebx,%ecx
828	cmovcl	%ecx,%ebx
829	andl	%ebx,%eax
830	movl	%ecx,%ebx
831	negl	%eax
832	andl	$511,%ebx
833	leal	(%eax,%ebp,1),%esp
834	movl	$512,%eax
835	cmovzl	%eax,%ebx
836	movl	%ebp,%eax
837	andl	$-16,%ebp
838	andl	$-16,%esp
839	movl	%eax,16(%ebp)
840	jmp	.L050ctr32_loop
841.align	16
842.L050ctr32_loop:
843	movl	%edi,(%ebp)
844	movl	%esi,4(%ebp)
845	movl	%ecx,8(%ebp)
846	movl	%ebx,%ecx
847	movl	%ebx,12(%ebp)
848	movl	-4(%edx),%ecx
849	xorl	%edi,%edi
850	movl	-8(%edx),%eax
851.L051ctr32_prepare:
852	movl	%ecx,12(%esp,%edi,1)
853	bswap	%ecx
854	movq	%mm0,(%esp,%edi,1)
855	incl	%ecx
856	movl	%eax,8(%esp,%edi,1)
857	bswap	%ecx
858	leal	16(%edi),%edi
859	cmpl	%ebx,%edi
860	jb	.L051ctr32_prepare
861	movl	%ecx,-4(%edx)
862	leal	(%esp),%esi
863	leal	(%esp),%edi
864	movl	%ebx,%ecx
865	leal	-16(%edx),%eax
866	leal	16(%edx),%ebx
867	shrl	$4,%ecx
868.byte	243,15,167,200
869	movl	(%ebp),%edi
870	movl	12(%ebp),%ebx
871	movl	4(%ebp),%esi
872	xorl	%ecx,%ecx
873.L052ctr32_xor:
874	movups	(%esi,%ecx,1),%xmm1
875	leal	16(%ecx),%ecx
876	pxor	-16(%esp,%ecx,1),%xmm1
877	movups	%xmm1,-16(%edi,%ecx,1)
878	cmpl	%ebx,%ecx
879	jb	.L052ctr32_xor
880	movl	8(%ebp),%ecx
881	addl	%ebx,%edi
882	addl	%ebx,%esi
883	subl	%ebx,%ecx
884	movl	$512,%ebx
885	jnz	.L050ctr32_loop
886	pxor	%xmm0,%xmm0
887	leal	(%esp),%eax
888.L053ctr32_bzero:
889	movaps	%xmm0,(%eax)
890	leal	16(%eax),%eax
891	cmpl	%eax,%ebp
892	ja	.L053ctr32_bzero
893.L054ctr32_done:
894	movl	16(%ebp),%ebp
895	leal	24(%ebp),%esp
896	movl	$1,%eax
897	leal	4(%esp),%esp
898	emms
899.L048ctr32_abort:
900	popl	%edi
901	popl	%esi
902	popl	%ebx
903	popl	%ebp
904	ret
905.size	padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin
906.globl	padlock_xstore
907.type	padlock_xstore,@function
908.align	16
909padlock_xstore:
910.L_padlock_xstore_begin:
911	#ifdef __CET__
912
913.byte	243,15,30,251
914	#endif
915
916	pushl	%edi
917	movl	8(%esp),%edi
918	movl	12(%esp),%edx
919.byte	15,167,192
920	popl	%edi
921	ret
922.size	padlock_xstore,.-.L_padlock_xstore_begin
923.type	_win32_segv_handler,@function
924.align	16
925_win32_segv_handler:
926	#ifdef __CET__
927
928.byte	243,15,30,251
929	#endif
930
931	movl	$1,%eax
932	movl	4(%esp),%edx
933	movl	12(%esp),%ecx
934	cmpl	$3221225477,(%edx)
935	jne	.L055ret
936	addl	$4,184(%ecx)
937	movl	$0,%eax
938.L055ret:
939	ret
940.size	_win32_segv_handler,.-_win32_segv_handler
941.globl	padlock_sha1_oneshot
942.type	padlock_sha1_oneshot,@function
943.align	16
944padlock_sha1_oneshot:
945.L_padlock_sha1_oneshot_begin:
946	#ifdef __CET__
947
948.byte	243,15,30,251
949	#endif
950
951	pushl	%edi
952	pushl	%esi
953	xorl	%eax,%eax
954	movl	12(%esp),%edi
955	movl	16(%esp),%esi
956	movl	20(%esp),%ecx
957	movl	%esp,%edx
958	addl	$-128,%esp
959	movups	(%edi),%xmm0
960	andl	$-16,%esp
961	movl	16(%edi),%eax
962	movaps	%xmm0,(%esp)
963	movl	%esp,%edi
964	movl	%eax,16(%esp)
965	xorl	%eax,%eax
966.byte	243,15,166,200
967	movaps	(%esp),%xmm0
968	movl	16(%esp),%eax
969	movl	%edx,%esp
970	movl	12(%esp),%edi
971	movups	%xmm0,(%edi)
972	movl	%eax,16(%edi)
973	popl	%esi
974	popl	%edi
975	ret
976.size	padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
977.globl	padlock_sha1_blocks
978.type	padlock_sha1_blocks,@function
979.align	16
980padlock_sha1_blocks:
981.L_padlock_sha1_blocks_begin:
982	#ifdef __CET__
983
984.byte	243,15,30,251
985	#endif
986
987	pushl	%edi
988	pushl	%esi
989	movl	12(%esp),%edi
990	movl	16(%esp),%esi
991	movl	%esp,%edx
992	movl	20(%esp),%ecx
993	addl	$-128,%esp
994	movups	(%edi),%xmm0
995	andl	$-16,%esp
996	movl	16(%edi),%eax
997	movaps	%xmm0,(%esp)
998	movl	%esp,%edi
999	movl	%eax,16(%esp)
1000	movl	$-1,%eax
1001.byte	243,15,166,200
1002	movaps	(%esp),%xmm0
1003	movl	16(%esp),%eax
1004	movl	%edx,%esp
1005	movl	12(%esp),%edi
1006	movups	%xmm0,(%edi)
1007	movl	%eax,16(%edi)
1008	popl	%esi
1009	popl	%edi
1010	ret
1011.size	padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
1012.globl	padlock_sha256_oneshot
1013.type	padlock_sha256_oneshot,@function
1014.align	16
1015padlock_sha256_oneshot:
1016.L_padlock_sha256_oneshot_begin:
1017	#ifdef __CET__
1018
1019.byte	243,15,30,251
1020	#endif
1021
1022	pushl	%edi
1023	pushl	%esi
1024	xorl	%eax,%eax
1025	movl	12(%esp),%edi
1026	movl	16(%esp),%esi
1027	movl	20(%esp),%ecx
1028	movl	%esp,%edx
1029	addl	$-128,%esp
1030	movups	(%edi),%xmm0
1031	andl	$-16,%esp
1032	movups	16(%edi),%xmm1
1033	movaps	%xmm0,(%esp)
1034	movl	%esp,%edi
1035	movaps	%xmm1,16(%esp)
1036	xorl	%eax,%eax
1037.byte	243,15,166,208
1038	movaps	(%esp),%xmm0
1039	movaps	16(%esp),%xmm1
1040	movl	%edx,%esp
1041	movl	12(%esp),%edi
1042	movups	%xmm0,(%edi)
1043	movups	%xmm1,16(%edi)
1044	popl	%esi
1045	popl	%edi
1046	ret
1047.size	padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
1048.globl	padlock_sha256_blocks
1049.type	padlock_sha256_blocks,@function
1050.align	16
1051padlock_sha256_blocks:
1052.L_padlock_sha256_blocks_begin:
1053	#ifdef __CET__
1054
1055.byte	243,15,30,251
1056	#endif
1057
1058	pushl	%edi
1059	pushl	%esi
1060	movl	12(%esp),%edi
1061	movl	16(%esp),%esi
1062	movl	20(%esp),%ecx
1063	movl	%esp,%edx
1064	addl	$-128,%esp
1065	movups	(%edi),%xmm0
1066	andl	$-16,%esp
1067	movups	16(%edi),%xmm1
1068	movaps	%xmm0,(%esp)
1069	movl	%esp,%edi
1070	movaps	%xmm1,16(%esp)
1071	movl	$-1,%eax
1072.byte	243,15,166,208
1073	movaps	(%esp),%xmm0
1074	movaps	16(%esp),%xmm1
1075	movl	%edx,%esp
1076	movl	12(%esp),%edi
1077	movups	%xmm0,(%edi)
1078	movups	%xmm1,16(%edi)
1079	popl	%esi
1080	popl	%edi
1081	ret
1082.size	padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
1083.globl	padlock_sha512_blocks
1084.type	padlock_sha512_blocks,@function
1085.align	16
1086padlock_sha512_blocks:
1087.L_padlock_sha512_blocks_begin:
1088	#ifdef __CET__
1089
1090.byte	243,15,30,251
1091	#endif
1092
1093	pushl	%edi
1094	pushl	%esi
1095	movl	12(%esp),%edi
1096	movl	16(%esp),%esi
1097	movl	20(%esp),%ecx
1098	movl	%esp,%edx
1099	addl	$-128,%esp
1100	movups	(%edi),%xmm0
1101	andl	$-16,%esp
1102	movups	16(%edi),%xmm1
1103	movups	32(%edi),%xmm2
1104	movups	48(%edi),%xmm3
1105	movaps	%xmm0,(%esp)
1106	movl	%esp,%edi
1107	movaps	%xmm1,16(%esp)
1108	movaps	%xmm2,32(%esp)
1109	movaps	%xmm3,48(%esp)
1110.byte	243,15,166,224
1111	movaps	(%esp),%xmm0
1112	movaps	16(%esp),%xmm1
1113	movaps	32(%esp),%xmm2
1114	movaps	48(%esp),%xmm3
1115	movl	%edx,%esp
1116	movl	12(%esp),%edi
1117	movups	%xmm0,(%edi)
1118	movups	%xmm1,16(%edi)
1119	movups	%xmm2,32(%edi)
1120	movups	%xmm3,48(%edi)
1121	popl	%esi
1122	popl	%edi
1123	ret
1124.size	padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
1125.byte	86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1126.byte	109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1127.byte	77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1128.byte	110,115,115,108,46,111,114,103,62,0
1129.align	16
1130.data
1131.align	4
1132.Lpadlock_saved_context:
1133.long	0
1134
1135	.section ".note.gnu.property", "a"
1136	.p2align 2
1137	.long 1f - 0f
1138	.long 4f - 1f
1139	.long 5
11400:
1141	.asciz "GNU"
11421:
1143	.p2align 2
1144	.long 0xc0000002
1145	.long 3f - 2f
11462:
1147	.long 3
11483:
1149	.p2align 2
11504:
1151#else
1152.text
1153.globl	padlock_capability
1154.type	padlock_capability,@function
1155.align	16
1156padlock_capability:
1157.L_padlock_capability_begin:
1158	#ifdef __CET__
1159
1160.byte	243,15,30,251
1161	#endif
1162
1163	pushl	%ebx
1164	pushfl
1165	popl	%eax
1166	movl	%eax,%ecx
1167	xorl	$2097152,%eax
1168	pushl	%eax
1169	popfl
1170	pushfl
1171	popl	%eax
1172	xorl	%eax,%ecx
1173	xorl	%eax,%eax
1174	btl	$21,%ecx
1175	jnc	.L000noluck
1176	.byte	0x0f,0xa2
1177	xorl	%eax,%eax
1178	cmpl	$0x746e6543,%ebx
1179	jne	.L001zhaoxin
1180	cmpl	$0x48727561,%edx
1181	jne	.L000noluck
1182	cmpl	$0x736c7561,%ecx
1183	jne	.L000noluck
1184	jmp	.L002zhaoxinEnd
1185.L001zhaoxin:
1186	cmpl	$0x68532020,%ebx
1187	jne	.L000noluck
1188	cmpl	$0x68676e61,%edx
1189	jne	.L000noluck
1190	cmpl	$0x20206961,%ecx
1191	jne	.L000noluck
1192.L002zhaoxinEnd:
1193	movl	$3221225472,%eax
1194	.byte	0x0f,0xa2
1195	movl	%eax,%edx
1196	xorl	%eax,%eax
1197	cmpl	$3221225473,%edx
1198	jb	.L000noluck
1199	movl	$1,%eax
1200	.byte	0x0f,0xa2
1201	orl	$15,%eax
1202	xorl	%ebx,%ebx
1203	andl	$4095,%eax
1204	cmpl	$1791,%eax
1205	sete	%bl
1206	movl	$3221225473,%eax
1207	pushl	%ebx
1208	.byte	0x0f,0xa2
1209	popl	%ebx
1210	movl	%edx,%eax
1211	shll	$4,%ebx
1212	andl	$4294967279,%eax
1213	orl	%ebx,%eax
1214.L000noluck:
1215	popl	%ebx
1216	ret
1217.size	padlock_capability,.-.L_padlock_capability_begin
1218.globl	padlock_key_bswap
1219.type	padlock_key_bswap,@function
1220.align	16
1221padlock_key_bswap:
1222.L_padlock_key_bswap_begin:
1223	#ifdef __CET__
1224
1225.byte	243,15,30,251
1226	#endif
1227
1228	movl	4(%esp),%edx
1229	movl	240(%edx),%ecx
1230	incl	%ecx
1231	shll	$2,%ecx
1232.L003bswap_loop:
1233	movl	(%edx),%eax
1234	bswap	%eax
1235	movl	%eax,(%edx)
1236	leal	4(%edx),%edx
1237	subl	$1,%ecx
1238	jnz	.L003bswap_loop
1239	ret
1240.size	padlock_key_bswap,.-.L_padlock_key_bswap_begin
1241.globl	padlock_verify_context
1242.type	padlock_verify_context,@function
1243.align	16
1244padlock_verify_context:
1245.L_padlock_verify_context_begin:
1246	#ifdef __CET__
1247
1248.byte	243,15,30,251
1249	#endif
1250
1251	movl	4(%esp),%edx
1252	leal	.Lpadlock_saved_context-.L004verify_pic_point,%eax
1253	pushfl
1254	call	_padlock_verify_ctx
1255.L004verify_pic_point:
1256	leal	4(%esp),%esp
1257	ret
1258.size	padlock_verify_context,.-.L_padlock_verify_context_begin
1259.type	_padlock_verify_ctx,@function
1260.align	16
1261_padlock_verify_ctx:
1262	#ifdef __CET__
1263
1264.byte	243,15,30,251
1265	#endif
1266
1267	addl	(%esp),%eax
1268	btl	$30,4(%esp)
1269	jnc	.L005verified
1270	cmpl	(%eax),%edx
1271	je	.L005verified
1272	pushfl
1273	popfl
1274.L005verified:
1275	movl	%edx,(%eax)
1276	ret
1277.size	_padlock_verify_ctx,.-_padlock_verify_ctx
1278.globl	padlock_reload_key
1279.type	padlock_reload_key,@function
1280.align	16
1281padlock_reload_key:
1282.L_padlock_reload_key_begin:
1283	#ifdef __CET__
1284
1285.byte	243,15,30,251
1286	#endif
1287
1288	pushfl
1289	popfl
1290	ret
1291.size	padlock_reload_key,.-.L_padlock_reload_key_begin
1292.globl	padlock_aes_block
1293.type	padlock_aes_block,@function
1294.align	16
1295padlock_aes_block:
1296.L_padlock_aes_block_begin:
1297	#ifdef __CET__
1298
1299.byte	243,15,30,251
1300	#endif
1301
1302	pushl	%edi
1303	pushl	%esi
1304	pushl	%ebx
1305	movl	16(%esp),%edi
1306	movl	20(%esp),%esi
1307	movl	24(%esp),%edx
1308	movl	$1,%ecx
1309	leal	32(%edx),%ebx
1310	leal	16(%edx),%edx
1311.byte	243,15,167,200
1312	popl	%ebx
1313	popl	%esi
1314	popl	%edi
1315	ret
1316.size	padlock_aes_block,.-.L_padlock_aes_block_begin
1317.globl	padlock_ecb_encrypt
1318.type	padlock_ecb_encrypt,@function
1319.align	16
1320padlock_ecb_encrypt:
1321.L_padlock_ecb_encrypt_begin:
1322	#ifdef __CET__
1323
1324.byte	243,15,30,251
1325	#endif
1326
1327	pushl	%ebp
1328	pushl	%ebx
1329	pushl	%esi
1330	pushl	%edi
1331	movl	20(%esp),%edi
1332	movl	24(%esp),%esi
1333	movl	28(%esp),%edx
1334	movl	32(%esp),%ecx
1335	testl	$15,%edx
1336	jnz	.L006ecb_abort
1337	testl	$15,%ecx
1338	jnz	.L006ecb_abort
1339	leal	.Lpadlock_saved_context-.L007ecb_pic_point,%eax
1340	pushfl
1341	cld
1342	call	_padlock_verify_ctx
1343.L007ecb_pic_point:
1344	leal	16(%edx),%edx
1345	xorl	%eax,%eax
1346	xorl	%ebx,%ebx
1347	testl	$32,(%edx)
1348	jnz	.L008ecb_aligned
1349	testl	$15,%edi
1350	setz	%al
1351	testl	$15,%esi
1352	setz	%bl
1353	testl	%ebx,%eax
1354	jnz	.L008ecb_aligned
1355	negl	%eax
1356	movl	$512,%ebx
1357	notl	%eax
1358	leal	-24(%esp),%ebp
1359	cmpl	%ebx,%ecx
1360	cmovcl	%ecx,%ebx
1361	andl	%ebx,%eax
1362	movl	%ecx,%ebx
1363	negl	%eax
1364	andl	$511,%ebx
1365	leal	(%eax,%ebp,1),%esp
1366	movl	$512,%eax
1367	cmovzl	%eax,%ebx
1368	movl	%ebp,%eax
1369	andl	$-16,%ebp
1370	andl	$-16,%esp
1371	movl	%eax,16(%ebp)
1372	cmpl	%ebx,%ecx
1373	ja	.L009ecb_loop
1374	movl	%esi,%eax
1375	cmpl	%esp,%ebp
1376	cmovel	%edi,%eax
1377	addl	%ecx,%eax
1378	negl	%eax
1379	andl	$4095,%eax
1380	cmpl	$128,%eax
1381	movl	$-128,%eax
1382	cmovael	%ebx,%eax
1383	andl	%eax,%ebx
1384	jz	.L010ecb_unaligned_tail
1385	jmp	.L009ecb_loop
1386.align	16
1387.L009ecb_loop:
1388	movl	%edi,(%ebp)
1389	movl	%esi,4(%ebp)
1390	movl	%ecx,8(%ebp)
1391	movl	%ebx,%ecx
1392	movl	%ebx,12(%ebp)
1393	testl	$15,%edi
1394	cmovnzl	%esp,%edi
1395	testl	$15,%esi
1396	jz	.L011ecb_inp_aligned
1397	shrl	$2,%ecx
1398.byte	243,165
1399	subl	%ebx,%edi
1400	movl	%ebx,%ecx
1401	movl	%edi,%esi
1402.L011ecb_inp_aligned:
1403	leal	-16(%edx),%eax
1404	leal	16(%edx),%ebx
1405	shrl	$4,%ecx
1406.byte	243,15,167,200
1407	movl	(%ebp),%edi
1408	movl	12(%ebp),%ebx
1409	testl	$15,%edi
1410	jz	.L012ecb_out_aligned
1411	movl	%ebx,%ecx
1412	leal	(%esp),%esi
1413	shrl	$2,%ecx
1414.byte	243,165
1415	subl	%ebx,%edi
1416.L012ecb_out_aligned:
1417	movl	4(%ebp),%esi
1418	movl	8(%ebp),%ecx
1419	addl	%ebx,%edi
1420	addl	%ebx,%esi
1421	subl	%ebx,%ecx
1422	movl	$512,%ebx
1423	jz	.L013ecb_break
1424	cmpl	%ebx,%ecx
1425	jae	.L009ecb_loop
1426.L010ecb_unaligned_tail:
1427	xorl	%eax,%eax
1428	cmpl	%ebp,%esp
1429	cmovel	%ecx,%eax
1430	subl	%eax,%esp
1431	movl	%edi,%eax
1432	movl	%ecx,%ebx
1433	shrl	$2,%ecx
1434	leal	(%esp),%edi
1435.byte	243,165
1436	movl	%esp,%esi
1437	movl	%eax,%edi
1438	movl	%ebx,%ecx
1439	jmp	.L009ecb_loop
1440.align	16
1441.L013ecb_break:
1442	cmpl	%ebp,%esp
1443	je	.L014ecb_done
1444	pxor	%xmm0,%xmm0
1445	leal	(%esp),%eax
1446.L015ecb_bzero:
1447	movaps	%xmm0,(%eax)
1448	leal	16(%eax),%eax
1449	cmpl	%eax,%ebp
1450	ja	.L015ecb_bzero
1451.L014ecb_done:
1452	movl	16(%ebp),%ebp
1453	leal	24(%ebp),%esp
1454	jmp	.L016ecb_exit
1455.align	16
1456.L008ecb_aligned:
1457	leal	(%esi,%ecx,1),%ebp
1458	negl	%ebp
1459	andl	$4095,%ebp
1460	xorl	%eax,%eax
1461	cmpl	$128,%ebp
1462	movl	$127,%ebp
1463	cmovael	%eax,%ebp
1464	andl	%ecx,%ebp
1465	subl	%ebp,%ecx
1466	jz	.L017ecb_aligned_tail
1467	leal	-16(%edx),%eax
1468	leal	16(%edx),%ebx
1469	shrl	$4,%ecx
1470.byte	243,15,167,200
1471	testl	%ebp,%ebp
1472	jz	.L016ecb_exit
1473.L017ecb_aligned_tail:
1474	movl	%ebp,%ecx
1475	leal	-24(%esp),%ebp
1476	movl	%ebp,%esp
1477	movl	%ebp,%eax
1478	subl	%ecx,%esp
1479	andl	$-16,%ebp
1480	andl	$-16,%esp
1481	movl	%eax,16(%ebp)
1482	movl	%edi,%eax
1483	movl	%ecx,%ebx
1484	shrl	$2,%ecx
1485	leal	(%esp),%edi
1486.byte	243,165
1487	movl	%esp,%esi
1488	movl	%eax,%edi
1489	movl	%ebx,%ecx
1490	jmp	.L009ecb_loop
1491.L016ecb_exit:
1492	movl	$1,%eax
1493	leal	4(%esp),%esp
1494.L006ecb_abort:
1495	popl	%edi
1496	popl	%esi
1497	popl	%ebx
1498	popl	%ebp
1499	ret
1500.size	padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
1501.globl	padlock_cbc_encrypt
1502.type	padlock_cbc_encrypt,@function
1503.align	16
1504padlock_cbc_encrypt:
1505.L_padlock_cbc_encrypt_begin:
1506	#ifdef __CET__
1507
1508.byte	243,15,30,251
1509	#endif
1510
1511	pushl	%ebp
1512	pushl	%ebx
1513	pushl	%esi
1514	pushl	%edi
1515	movl	20(%esp),%edi
1516	movl	24(%esp),%esi
1517	movl	28(%esp),%edx
1518	movl	32(%esp),%ecx
1519	testl	$15,%edx
1520	jnz	.L018cbc_abort
1521	testl	$15,%ecx
1522	jnz	.L018cbc_abort
1523	leal	.Lpadlock_saved_context-.L019cbc_pic_point,%eax
1524	pushfl
1525	cld
1526	call	_padlock_verify_ctx
1527.L019cbc_pic_point:
1528	leal	16(%edx),%edx
1529	xorl	%eax,%eax
1530	xorl	%ebx,%ebx
1531	testl	$32,(%edx)
1532	jnz	.L020cbc_aligned
1533	testl	$15,%edi
1534	setz	%al
1535	testl	$15,%esi
1536	setz	%bl
1537	testl	%ebx,%eax
1538	jnz	.L020cbc_aligned
1539	negl	%eax
1540	movl	$512,%ebx
1541	notl	%eax
1542	leal	-24(%esp),%ebp
1543	cmpl	%ebx,%ecx
1544	cmovcl	%ecx,%ebx
1545	andl	%ebx,%eax
1546	movl	%ecx,%ebx
1547	negl	%eax
1548	andl	$511,%ebx
1549	leal	(%eax,%ebp,1),%esp
1550	movl	$512,%eax
1551	cmovzl	%eax,%ebx
1552	movl	%ebp,%eax
1553	andl	$-16,%ebp
1554	andl	$-16,%esp
1555	movl	%eax,16(%ebp)
1556	cmpl	%ebx,%ecx
1557	ja	.L021cbc_loop
1558	movl	%esi,%eax
1559	cmpl	%esp,%ebp
1560	cmovel	%edi,%eax
1561	addl	%ecx,%eax
1562	negl	%eax
1563	andl	$4095,%eax
1564	cmpl	$64,%eax
1565	movl	$-64,%eax
1566	cmovael	%ebx,%eax
1567	andl	%eax,%ebx
1568	jz	.L022cbc_unaligned_tail
1569	jmp	.L021cbc_loop
1570.align	16
1571.L021cbc_loop:
1572	movl	%edi,(%ebp)
1573	movl	%esi,4(%ebp)
1574	movl	%ecx,8(%ebp)
1575	movl	%ebx,%ecx
1576	movl	%ebx,12(%ebp)
1577	testl	$15,%edi
1578	cmovnzl	%esp,%edi
1579	testl	$15,%esi
1580	jz	.L023cbc_inp_aligned
1581	shrl	$2,%ecx
1582.byte	243,165
1583	subl	%ebx,%edi
1584	movl	%ebx,%ecx
1585	movl	%edi,%esi
1586.L023cbc_inp_aligned:
1587	leal	-16(%edx),%eax
1588	leal	16(%edx),%ebx
1589	shrl	$4,%ecx
1590.byte	243,15,167,208
1591	movaps	(%eax),%xmm0
1592	movaps	%xmm0,-16(%edx)
1593	movl	(%ebp),%edi
1594	movl	12(%ebp),%ebx
1595	testl	$15,%edi
1596	jz	.L024cbc_out_aligned
1597	movl	%ebx,%ecx
1598	leal	(%esp),%esi
1599	shrl	$2,%ecx
1600.byte	243,165
1601	subl	%ebx,%edi
1602.L024cbc_out_aligned:
1603	movl	4(%ebp),%esi
1604	movl	8(%ebp),%ecx
1605	addl	%ebx,%edi
1606	addl	%ebx,%esi
1607	subl	%ebx,%ecx
1608	movl	$512,%ebx
1609	jz	.L025cbc_break
1610	cmpl	%ebx,%ecx
1611	jae	.L021cbc_loop
1612.L022cbc_unaligned_tail:
1613	xorl	%eax,%eax
1614	cmpl	%ebp,%esp
1615	cmovel	%ecx,%eax
1616	subl	%eax,%esp
1617	movl	%edi,%eax
1618	movl	%ecx,%ebx
1619	shrl	$2,%ecx
1620	leal	(%esp),%edi
1621.byte	243,165
1622	movl	%esp,%esi
1623	movl	%eax,%edi
1624	movl	%ebx,%ecx
1625	jmp	.L021cbc_loop
1626.align	16
1627.L025cbc_break:
1628	cmpl	%ebp,%esp
1629	je	.L026cbc_done
1630	pxor	%xmm0,%xmm0
1631	leal	(%esp),%eax
1632.L027cbc_bzero:
1633	movaps	%xmm0,(%eax)
1634	leal	16(%eax),%eax
1635	cmpl	%eax,%ebp
1636	ja	.L027cbc_bzero
1637.L026cbc_done:
1638	movl	16(%ebp),%ebp
1639	leal	24(%ebp),%esp
1640	jmp	.L028cbc_exit
1641.align	16
1642.L020cbc_aligned:
1643	leal	(%esi,%ecx,1),%ebp
1644	negl	%ebp
1645	andl	$4095,%ebp
1646	xorl	%eax,%eax
1647	cmpl	$64,%ebp
1648	movl	$63,%ebp
1649	cmovael	%eax,%ebp
1650	andl	%ecx,%ebp
1651	subl	%ebp,%ecx
1652	jz	.L029cbc_aligned_tail
1653	leal	-16(%edx),%eax
1654	leal	16(%edx),%ebx
1655	shrl	$4,%ecx
1656.byte	243,15,167,208
1657	movaps	(%eax),%xmm0
1658	movaps	%xmm0,-16(%edx)
1659	testl	%ebp,%ebp
1660	jz	.L028cbc_exit
1661.L029cbc_aligned_tail:
1662	movl	%ebp,%ecx
1663	leal	-24(%esp),%ebp
1664	movl	%ebp,%esp
1665	movl	%ebp,%eax
1666	subl	%ecx,%esp
1667	andl	$-16,%ebp
1668	andl	$-16,%esp
1669	movl	%eax,16(%ebp)
1670	movl	%edi,%eax
1671	movl	%ecx,%ebx
1672	shrl	$2,%ecx
1673	leal	(%esp),%edi
1674.byte	243,165
1675	movl	%esp,%esi
1676	movl	%eax,%edi
1677	movl	%ebx,%ecx
1678	jmp	.L021cbc_loop
1679.L028cbc_exit:
1680	movl	$1,%eax
1681	leal	4(%esp),%esp
1682.L018cbc_abort:
1683	popl	%edi
1684	popl	%esi
1685	popl	%ebx
1686	popl	%ebp
1687	ret
1688.size	padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
1689.globl	padlock_cfb_encrypt
1690.type	padlock_cfb_encrypt,@function
1691.align	16
1692padlock_cfb_encrypt:
1693.L_padlock_cfb_encrypt_begin:
1694	#ifdef __CET__
1695
1696.byte	243,15,30,251
1697	#endif
1698
1699	pushl	%ebp
1700	pushl	%ebx
1701	pushl	%esi
1702	pushl	%edi
1703	movl	20(%esp),%edi
1704	movl	24(%esp),%esi
1705	movl	28(%esp),%edx
1706	movl	32(%esp),%ecx
1707	testl	$15,%edx
1708	jnz	.L030cfb_abort
1709	testl	$15,%ecx
1710	jnz	.L030cfb_abort
1711	leal	.Lpadlock_saved_context-.L031cfb_pic_point,%eax
1712	pushfl
1713	cld
1714	call	_padlock_verify_ctx
1715.L031cfb_pic_point:
1716	leal	16(%edx),%edx
1717	xorl	%eax,%eax
1718	xorl	%ebx,%ebx
1719	testl	$32,(%edx)
1720	jnz	.L032cfb_aligned
1721	testl	$15,%edi
1722	setz	%al
1723	testl	$15,%esi
1724	setz	%bl
1725	testl	%ebx,%eax
1726	jnz	.L032cfb_aligned
1727	negl	%eax
1728	movl	$512,%ebx
1729	notl	%eax
1730	leal	-24(%esp),%ebp
1731	cmpl	%ebx,%ecx
1732	cmovcl	%ecx,%ebx
1733	andl	%ebx,%eax
1734	movl	%ecx,%ebx
1735	negl	%eax
1736	andl	$511,%ebx
1737	leal	(%eax,%ebp,1),%esp
1738	movl	$512,%eax
1739	cmovzl	%eax,%ebx
1740	movl	%ebp,%eax
1741	andl	$-16,%ebp
1742	andl	$-16,%esp
1743	movl	%eax,16(%ebp)
1744	jmp	.L033cfb_loop
1745.align	16
1746.L033cfb_loop:
1747	movl	%edi,(%ebp)
1748	movl	%esi,4(%ebp)
1749	movl	%ecx,8(%ebp)
1750	movl	%ebx,%ecx
1751	movl	%ebx,12(%ebp)
1752	testl	$15,%edi
1753	cmovnzl	%esp,%edi
1754	testl	$15,%esi
1755	jz	.L034cfb_inp_aligned
1756	shrl	$2,%ecx
1757.byte	243,165
1758	subl	%ebx,%edi
1759	movl	%ebx,%ecx
1760	movl	%edi,%esi
1761.L034cfb_inp_aligned:
1762	leal	-16(%edx),%eax
1763	leal	16(%edx),%ebx
1764	shrl	$4,%ecx
1765.byte	243,15,167,224
1766	movaps	(%eax),%xmm0
1767	movaps	%xmm0,-16(%edx)
1768	movl	(%ebp),%edi
1769	movl	12(%ebp),%ebx
1770	testl	$15,%edi
1771	jz	.L035cfb_out_aligned
1772	movl	%ebx,%ecx
1773	leal	(%esp),%esi
1774	shrl	$2,%ecx
1775.byte	243,165
1776	subl	%ebx,%edi
1777.L035cfb_out_aligned:
1778	movl	4(%ebp),%esi
1779	movl	8(%ebp),%ecx
1780	addl	%ebx,%edi
1781	addl	%ebx,%esi
1782	subl	%ebx,%ecx
1783	movl	$512,%ebx
1784	jnz	.L033cfb_loop
1785	cmpl	%ebp,%esp
1786	je	.L036cfb_done
1787	pxor	%xmm0,%xmm0
1788	leal	(%esp),%eax
1789.L037cfb_bzero:
1790	movaps	%xmm0,(%eax)
1791	leal	16(%eax),%eax
1792	cmpl	%eax,%ebp
1793	ja	.L037cfb_bzero
1794.L036cfb_done:
1795	movl	16(%ebp),%ebp
1796	leal	24(%ebp),%esp
1797	jmp	.L038cfb_exit
1798.align	16
1799.L032cfb_aligned:
1800	leal	-16(%edx),%eax
1801	leal	16(%edx),%ebx
1802	shrl	$4,%ecx
1803.byte	243,15,167,224
1804	movaps	(%eax),%xmm0
1805	movaps	%xmm0,-16(%edx)
1806.L038cfb_exit:
1807	movl	$1,%eax
1808	leal	4(%esp),%esp
1809.L030cfb_abort:
1810	popl	%edi
1811	popl	%esi
1812	popl	%ebx
1813	popl	%ebp
1814	ret
1815.size	padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin
1816.globl	padlock_ofb_encrypt
1817.type	padlock_ofb_encrypt,@function
1818.align	16
1819padlock_ofb_encrypt:
1820.L_padlock_ofb_encrypt_begin:
1821	#ifdef __CET__
1822
1823.byte	243,15,30,251
1824	#endif
1825
1826	pushl	%ebp
1827	pushl	%ebx
1828	pushl	%esi
1829	pushl	%edi
1830	movl	20(%esp),%edi
1831	movl	24(%esp),%esi
1832	movl	28(%esp),%edx
1833	movl	32(%esp),%ecx
1834	testl	$15,%edx
1835	jnz	.L039ofb_abort
1836	testl	$15,%ecx
1837	jnz	.L039ofb_abort
1838	leal	.Lpadlock_saved_context-.L040ofb_pic_point,%eax
1839	pushfl
1840	cld
1841	call	_padlock_verify_ctx
1842.L040ofb_pic_point:
1843	leal	16(%edx),%edx
1844	xorl	%eax,%eax
1845	xorl	%ebx,%ebx
1846	testl	$32,(%edx)
1847	jnz	.L041ofb_aligned
1848	testl	$15,%edi
1849	setz	%al
1850	testl	$15,%esi
1851	setz	%bl
1852	testl	%ebx,%eax
1853	jnz	.L041ofb_aligned
1854	negl	%eax
1855	movl	$512,%ebx
1856	notl	%eax
1857	leal	-24(%esp),%ebp
1858	cmpl	%ebx,%ecx
1859	cmovcl	%ecx,%ebx
1860	andl	%ebx,%eax
1861	movl	%ecx,%ebx
1862	negl	%eax
1863	andl	$511,%ebx
1864	leal	(%eax,%ebp,1),%esp
1865	movl	$512,%eax
1866	cmovzl	%eax,%ebx
1867	movl	%ebp,%eax
1868	andl	$-16,%ebp
1869	andl	$-16,%esp
1870	movl	%eax,16(%ebp)
1871	jmp	.L042ofb_loop
1872.align	16
1873.L042ofb_loop:
1874	movl	%edi,(%ebp)
1875	movl	%esi,4(%ebp)
1876	movl	%ecx,8(%ebp)
1877	movl	%ebx,%ecx
1878	movl	%ebx,12(%ebp)
1879	testl	$15,%edi
1880	cmovnzl	%esp,%edi
1881	testl	$15,%esi
1882	jz	.L043ofb_inp_aligned
1883	shrl	$2,%ecx
1884.byte	243,165
1885	subl	%ebx,%edi
1886	movl	%ebx,%ecx
1887	movl	%edi,%esi
1888.L043ofb_inp_aligned:
1889	leal	-16(%edx),%eax
1890	leal	16(%edx),%ebx
1891	shrl	$4,%ecx
1892.byte	243,15,167,232
1893	movaps	(%eax),%xmm0
1894	movaps	%xmm0,-16(%edx)
1895	movl	(%ebp),%edi
1896	movl	12(%ebp),%ebx
1897	testl	$15,%edi
1898	jz	.L044ofb_out_aligned
1899	movl	%ebx,%ecx
1900	leal	(%esp),%esi
1901	shrl	$2,%ecx
1902.byte	243,165
1903	subl	%ebx,%edi
1904.L044ofb_out_aligned:
1905	movl	4(%ebp),%esi
1906	movl	8(%ebp),%ecx
1907	addl	%ebx,%edi
1908	addl	%ebx,%esi
1909	subl	%ebx,%ecx
1910	movl	$512,%ebx
1911	jnz	.L042ofb_loop
1912	cmpl	%ebp,%esp
1913	je	.L045ofb_done
1914	pxor	%xmm0,%xmm0
1915	leal	(%esp),%eax
1916.L046ofb_bzero:
1917	movaps	%xmm0,(%eax)
1918	leal	16(%eax),%eax
1919	cmpl	%eax,%ebp
1920	ja	.L046ofb_bzero
1921.L045ofb_done:
1922	movl	16(%ebp),%ebp
1923	leal	24(%ebp),%esp
1924	jmp	.L047ofb_exit
1925.align	16
1926.L041ofb_aligned:
1927	leal	-16(%edx),%eax
1928	leal	16(%edx),%ebx
1929	shrl	$4,%ecx
1930.byte	243,15,167,232
1931	movaps	(%eax),%xmm0
1932	movaps	%xmm0,-16(%edx)
1933.L047ofb_exit:
1934	movl	$1,%eax
1935	leal	4(%esp),%esp
1936.L039ofb_abort:
1937	popl	%edi
1938	popl	%esi
1939	popl	%ebx
1940	popl	%ebp
1941	ret
1942.size	padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin
1943.globl	padlock_ctr32_encrypt
1944.type	padlock_ctr32_encrypt,@function
1945.align	16
1946padlock_ctr32_encrypt:
1947.L_padlock_ctr32_encrypt_begin:
1948	#ifdef __CET__
1949
1950.byte	243,15,30,251
1951	#endif
1952
1953	pushl	%ebp
1954	pushl	%ebx
1955	pushl	%esi
1956	pushl	%edi
1957	movl	20(%esp),%edi
1958	movl	24(%esp),%esi
1959	movl	28(%esp),%edx
1960	movl	32(%esp),%ecx
1961	testl	$15,%edx
1962	jnz	.L048ctr32_abort
1963	testl	$15,%ecx
1964	jnz	.L048ctr32_abort
1965	leal	.Lpadlock_saved_context-.L049ctr32_pic_point,%eax
1966	pushfl
1967	cld
1968	call	_padlock_verify_ctx
1969.L049ctr32_pic_point:
1970	leal	16(%edx),%edx
1971	xorl	%eax,%eax
1972	movq	-16(%edx),%mm0
1973	movl	$512,%ebx
1974	notl	%eax
1975	leal	-24(%esp),%ebp
1976	cmpl	%ebx,%ecx
1977	cmovcl	%ecx,%ebx
1978	andl	%ebx,%eax
1979	movl	%ecx,%ebx
1980	negl	%eax
1981	andl	$511,%ebx
1982	leal	(%eax,%ebp,1),%esp
1983	movl	$512,%eax
1984	cmovzl	%eax,%ebx
1985	movl	%ebp,%eax
1986	andl	$-16,%ebp
1987	andl	$-16,%esp
1988	movl	%eax,16(%ebp)
1989	jmp	.L050ctr32_loop
1990.align	16
1991.L050ctr32_loop:
1992	movl	%edi,(%ebp)
1993	movl	%esi,4(%ebp)
1994	movl	%ecx,8(%ebp)
1995	movl	%ebx,%ecx
1996	movl	%ebx,12(%ebp)
1997	movl	-4(%edx),%ecx
1998	xorl	%edi,%edi
1999	movl	-8(%edx),%eax
2000.L051ctr32_prepare:
2001	movl	%ecx,12(%esp,%edi,1)
2002	bswap	%ecx
2003	movq	%mm0,(%esp,%edi,1)
2004	incl	%ecx
2005	movl	%eax,8(%esp,%edi,1)
2006	bswap	%ecx
2007	leal	16(%edi),%edi
2008	cmpl	%ebx,%edi
2009	jb	.L051ctr32_prepare
2010	movl	%ecx,-4(%edx)
2011	leal	(%esp),%esi
2012	leal	(%esp),%edi
2013	movl	%ebx,%ecx
2014	leal	-16(%edx),%eax
2015	leal	16(%edx),%ebx
2016	shrl	$4,%ecx
2017.byte	243,15,167,200
2018	movl	(%ebp),%edi
2019	movl	12(%ebp),%ebx
2020	movl	4(%ebp),%esi
2021	xorl	%ecx,%ecx
2022.L052ctr32_xor:
2023	movups	(%esi,%ecx,1),%xmm1
2024	leal	16(%ecx),%ecx
2025	pxor	-16(%esp,%ecx,1),%xmm1
2026	movups	%xmm1,-16(%edi,%ecx,1)
2027	cmpl	%ebx,%ecx
2028	jb	.L052ctr32_xor
2029	movl	8(%ebp),%ecx
2030	addl	%ebx,%edi
2031	addl	%ebx,%esi
2032	subl	%ebx,%ecx
2033	movl	$512,%ebx
2034	jnz	.L050ctr32_loop
2035	pxor	%xmm0,%xmm0
2036	leal	(%esp),%eax
2037.L053ctr32_bzero:
2038	movaps	%xmm0,(%eax)
2039	leal	16(%eax),%eax
2040	cmpl	%eax,%ebp
2041	ja	.L053ctr32_bzero
2042.L054ctr32_done:
2043	movl	16(%ebp),%ebp
2044	leal	24(%ebp),%esp
2045	movl	$1,%eax
2046	leal	4(%esp),%esp
2047	emms
2048.L048ctr32_abort:
2049	popl	%edi
2050	popl	%esi
2051	popl	%ebx
2052	popl	%ebp
2053	ret
2054.size	padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin
2055.globl	padlock_xstore
2056.type	padlock_xstore,@function
2057.align	16
2058padlock_xstore:
2059.L_padlock_xstore_begin:
2060	#ifdef __CET__
2061
2062.byte	243,15,30,251
2063	#endif
2064
2065	pushl	%edi
2066	movl	8(%esp),%edi
2067	movl	12(%esp),%edx
2068.byte	15,167,192
2069	popl	%edi
2070	ret
2071.size	padlock_xstore,.-.L_padlock_xstore_begin
2072.type	_win32_segv_handler,@function
2073.align	16
2074_win32_segv_handler:
2075	#ifdef __CET__
2076
2077.byte	243,15,30,251
2078	#endif
2079
2080	movl	$1,%eax
2081	movl	4(%esp),%edx
2082	movl	12(%esp),%ecx
2083	cmpl	$3221225477,(%edx)
2084	jne	.L055ret
2085	addl	$4,184(%ecx)
2086	movl	$0,%eax
2087.L055ret:
2088	ret
2089.size	_win32_segv_handler,.-_win32_segv_handler
2090.globl	padlock_sha1_oneshot
2091.type	padlock_sha1_oneshot,@function
2092.align	16
2093padlock_sha1_oneshot:
2094.L_padlock_sha1_oneshot_begin:
2095	#ifdef __CET__
2096
2097.byte	243,15,30,251
2098	#endif
2099
2100	pushl	%edi
2101	pushl	%esi
2102	xorl	%eax,%eax
2103	movl	12(%esp),%edi
2104	movl	16(%esp),%esi
2105	movl	20(%esp),%ecx
2106	movl	%esp,%edx
2107	addl	$-128,%esp
2108	movups	(%edi),%xmm0
2109	andl	$-16,%esp
2110	movl	16(%edi),%eax
2111	movaps	%xmm0,(%esp)
2112	movl	%esp,%edi
2113	movl	%eax,16(%esp)
2114	xorl	%eax,%eax
2115.byte	243,15,166,200
2116	movaps	(%esp),%xmm0
2117	movl	16(%esp),%eax
2118	movl	%edx,%esp
2119	movl	12(%esp),%edi
2120	movups	%xmm0,(%edi)
2121	movl	%eax,16(%edi)
2122	popl	%esi
2123	popl	%edi
2124	ret
2125.size	padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
2126.globl	padlock_sha1_blocks
2127.type	padlock_sha1_blocks,@function
2128.align	16
2129padlock_sha1_blocks:
2130.L_padlock_sha1_blocks_begin:
2131	#ifdef __CET__
2132
2133.byte	243,15,30,251
2134	#endif
2135
2136	pushl	%edi
2137	pushl	%esi
2138	movl	12(%esp),%edi
2139	movl	16(%esp),%esi
2140	movl	%esp,%edx
2141	movl	20(%esp),%ecx
2142	addl	$-128,%esp
2143	movups	(%edi),%xmm0
2144	andl	$-16,%esp
2145	movl	16(%edi),%eax
2146	movaps	%xmm0,(%esp)
2147	movl	%esp,%edi
2148	movl	%eax,16(%esp)
2149	movl	$-1,%eax
2150.byte	243,15,166,200
2151	movaps	(%esp),%xmm0
2152	movl	16(%esp),%eax
2153	movl	%edx,%esp
2154	movl	12(%esp),%edi
2155	movups	%xmm0,(%edi)
2156	movl	%eax,16(%edi)
2157	popl	%esi
2158	popl	%edi
2159	ret
2160.size	padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
2161.globl	padlock_sha256_oneshot
2162.type	padlock_sha256_oneshot,@function
2163.align	16
2164padlock_sha256_oneshot:
2165.L_padlock_sha256_oneshot_begin:
2166	#ifdef __CET__
2167
2168.byte	243,15,30,251
2169	#endif
2170
2171	pushl	%edi
2172	pushl	%esi
2173	xorl	%eax,%eax
2174	movl	12(%esp),%edi
2175	movl	16(%esp),%esi
2176	movl	20(%esp),%ecx
2177	movl	%esp,%edx
2178	addl	$-128,%esp
2179	movups	(%edi),%xmm0
2180	andl	$-16,%esp
2181	movups	16(%edi),%xmm1
2182	movaps	%xmm0,(%esp)
2183	movl	%esp,%edi
2184	movaps	%xmm1,16(%esp)
2185	xorl	%eax,%eax
2186.byte	243,15,166,208
2187	movaps	(%esp),%xmm0
2188	movaps	16(%esp),%xmm1
2189	movl	%edx,%esp
2190	movl	12(%esp),%edi
2191	movups	%xmm0,(%edi)
2192	movups	%xmm1,16(%edi)
2193	popl	%esi
2194	popl	%edi
2195	ret
2196.size	padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
2197.globl	padlock_sha256_blocks
2198.type	padlock_sha256_blocks,@function
2199.align	16
2200padlock_sha256_blocks:
2201.L_padlock_sha256_blocks_begin:
2202	#ifdef __CET__
2203
2204.byte	243,15,30,251
2205	#endif
2206
2207	pushl	%edi
2208	pushl	%esi
2209	movl	12(%esp),%edi
2210	movl	16(%esp),%esi
2211	movl	20(%esp),%ecx
2212	movl	%esp,%edx
2213	addl	$-128,%esp
2214	movups	(%edi),%xmm0
2215	andl	$-16,%esp
2216	movups	16(%edi),%xmm1
2217	movaps	%xmm0,(%esp)
2218	movl	%esp,%edi
2219	movaps	%xmm1,16(%esp)
2220	movl	$-1,%eax
2221.byte	243,15,166,208
2222	movaps	(%esp),%xmm0
2223	movaps	16(%esp),%xmm1
2224	movl	%edx,%esp
2225	movl	12(%esp),%edi
2226	movups	%xmm0,(%edi)
2227	movups	%xmm1,16(%edi)
2228	popl	%esi
2229	popl	%edi
2230	ret
2231.size	padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
2232.globl	padlock_sha512_blocks
2233.type	padlock_sha512_blocks,@function
2234.align	16
2235padlock_sha512_blocks:
2236.L_padlock_sha512_blocks_begin:
2237	#ifdef __CET__
2238
2239.byte	243,15,30,251
2240	#endif
2241
2242	pushl	%edi
2243	pushl	%esi
2244	movl	12(%esp),%edi
2245	movl	16(%esp),%esi
2246	movl	20(%esp),%ecx
2247	movl	%esp,%edx
2248	addl	$-128,%esp
2249	movups	(%edi),%xmm0
2250	andl	$-16,%esp
2251	movups	16(%edi),%xmm1
2252	movups	32(%edi),%xmm2
2253	movups	48(%edi),%xmm3
2254	movaps	%xmm0,(%esp)
2255	movl	%esp,%edi
2256	movaps	%xmm1,16(%esp)
2257	movaps	%xmm2,32(%esp)
2258	movaps	%xmm3,48(%esp)
2259.byte	243,15,166,224
2260	movaps	(%esp),%xmm0
2261	movaps	16(%esp),%xmm1
2262	movaps	32(%esp),%xmm2
2263	movaps	48(%esp),%xmm3
2264	movl	%edx,%esp
2265	movl	12(%esp),%edi
2266	movups	%xmm0,(%edi)
2267	movups	%xmm1,16(%edi)
2268	movups	%xmm2,32(%edi)
2269	movups	%xmm3,48(%edi)
2270	popl	%esi
2271	popl	%edi
2272	ret
2273.size	padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
2274.byte	86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
2275.byte	109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
2276.byte	77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
2277.byte	110,115,115,108,46,111,114,103,62,0
2278.align	16
2279.data
2280.align	4
2281.Lpadlock_saved_context:
2282.long	0
2283
2284	.section ".note.gnu.property", "a"
2285	.p2align 2
2286	.long 1f - 0f
2287	.long 4f - 1f
2288	.long 5
22890:
2290	.asciz "GNU"
22911:
2292	.p2align 2
2293	.long 0xc0000002
2294	.long 3f - 2f
22952:
2296	.long 3
22973:
2298	.p2align 2
22994:
2300#endif
2301