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