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