• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.text
2.globl	padlock_capability
3.type	padlock_capability,@function
4.align	16
5padlock_capability:
6.L_padlock_capability_begin:
7	%ifdef __CET__
8
9.byte	243,15,30,251
10	%endif
11
12	pushl	%ebx
13	pushfl
14	popl	%eax
15	movl	%eax,%ecx
16	xorl	$2097152,%eax
17	pushl	%eax
18	popfl
19	pushfl
20	popl	%eax
21	xorl	%eax,%ecx
22	xorl	%eax,%eax
23	btl	$21,%ecx
24	jnc	.L000noluck
25	.byte	0x0f,0xa2
26	xorl	%eax,%eax
27	cmpl	$0x746e6543,%ebx
28	jne	.L001zhaoxin
29	cmpl	$0x48727561,%edx
30	jne	.L000noluck
31	cmpl	$0x736c7561,%ecx
32	jne	.L000noluck
33	jmp	.L002zhaoxinEnd
34.L001zhaoxin:
35	cmpl	$0x68532020,%ebx
36	jne	.L000noluck
37	cmpl	$0x68676e61,%edx
38	jne	.L000noluck
39	cmpl	$0x20206961,%ecx
40	jne	.L000noluck
41.L002zhaoxinEnd:
42	movl	$3221225472,%eax
43	.byte	0x0f,0xa2
44	movl	%eax,%edx
45	xorl	%eax,%eax
46	cmpl	$3221225473,%edx
47	jb	.L000noluck
48	movl	$1,%eax
49	.byte	0x0f,0xa2
50	orl	$15,%eax
51	xorl	%ebx,%ebx
52	andl	$4095,%eax
53	cmpl	$1791,%eax
54	sete	%bl
55	movl	$3221225473,%eax
56	pushl	%ebx
57	.byte	0x0f,0xa2
58	popl	%ebx
59	movl	%edx,%eax
60	shll	$4,%ebx
61	andl	$4294967279,%eax
62	orl	%ebx,%eax
63.L000noluck:
64	popl	%ebx
65	ret
66.size	padlock_capability,.-.L_padlock_capability_begin
67.globl	padlock_key_bswap
68.type	padlock_key_bswap,@function
69.align	16
70padlock_key_bswap:
71.L_padlock_key_bswap_begin:
72	%ifdef __CET__
73
74.byte	243,15,30,251
75	%endif
76
77	movl	4(%esp),%edx
78	movl	240(%edx),%ecx
79	incl	%ecx
80	shll	$2,%ecx
81.L003bswap_loop:
82	movl	(%edx),%eax
83	bswap	%eax
84	movl	%eax,(%edx)
85	leal	4(%edx),%edx
86	subl	$1,%ecx
87	jnz	.L003bswap_loop
88	ret
89.size	padlock_key_bswap,.-.L_padlock_key_bswap_begin
90.globl	padlock_verify_context
91.type	padlock_verify_context,@function
92.align	16
93padlock_verify_context:
94.L_padlock_verify_context_begin:
95	%ifdef __CET__
96
97.byte	243,15,30,251
98	%endif
99
100	movl	4(%esp),%edx
101	leal	.Lpadlock_saved_context-.L004verify_pic_point,%eax
102	pushfl
103	call	_padlock_verify_ctx
104.L004verify_pic_point:
105	leal	4(%esp),%esp
106	ret
107.size	padlock_verify_context,.-.L_padlock_verify_context_begin
108.type	_padlock_verify_ctx,@function
109.align	16
110_padlock_verify_ctx:
111	%ifdef __CET__
112
113.byte	243,15,30,251
114	%endif
115
116	addl	(%esp),%eax
117	btl	$30,4(%esp)
118	jnc	.L005verified
119	cmpl	(%eax),%edx
120	je	.L005verified
121	pushfl
122	popfl
123.L005verified:
124	movl	%edx,(%eax)
125	ret
126.size	_padlock_verify_ctx,.-_padlock_verify_ctx
127.globl	padlock_reload_key
128.type	padlock_reload_key,@function
129.align	16
130padlock_reload_key:
131.L_padlock_reload_key_begin:
132	%ifdef __CET__
133
134.byte	243,15,30,251
135	%endif
136
137	pushfl
138	popfl
139	ret
140.size	padlock_reload_key,.-.L_padlock_reload_key_begin
141.globl	padlock_aes_block
142.type	padlock_aes_block,@function
143.align	16
144padlock_aes_block:
145.L_padlock_aes_block_begin:
146	%ifdef __CET__
147
148.byte	243,15,30,251
149	%endif
150
151	pushl	%edi
152	pushl	%esi
153	pushl	%ebx
154	movl	16(%esp),%edi
155	movl	20(%esp),%esi
156	movl	24(%esp),%edx
157	movl	$1,%ecx
158	leal	32(%edx),%ebx
159	leal	16(%edx),%edx
160.byte	243,15,167,200
161	popl	%ebx
162	popl	%esi
163	popl	%edi
164	ret
165.size	padlock_aes_block,.-.L_padlock_aes_block_begin
166.globl	padlock_ecb_encrypt
167.type	padlock_ecb_encrypt,@function
168.align	16
169padlock_ecb_encrypt:
170.L_padlock_ecb_encrypt_begin:
171	%ifdef __CET__
172
173.byte	243,15,30,251
174	%endif
175
176	pushl	%ebp
177	pushl	%ebx
178	pushl	%esi
179	pushl	%edi
180	movl	20(%esp),%edi
181	movl	24(%esp),%esi
182	movl	28(%esp),%edx
183	movl	32(%esp),%ecx
184	testl	$15,%edx
185	jnz	.L006ecb_abort
186	testl	$15,%ecx
187	jnz	.L006ecb_abort
188	leal	.Lpadlock_saved_context-.L007ecb_pic_point,%eax
189	pushfl
190	cld
191	call	_padlock_verify_ctx
192.L007ecb_pic_point:
193	leal	16(%edx),%edx
194	xorl	%eax,%eax
195	xorl	%ebx,%ebx
196	testl	$32,(%edx)
197	jnz	.L008ecb_aligned
198	testl	$15,%edi
199	setz	%al
200	testl	$15,%esi
201	setz	%bl
202	testl	%ebx,%eax
203	jnz	.L008ecb_aligned
204	negl	%eax
205	movl	$512,%ebx
206	notl	%eax
207	leal	-24(%esp),%ebp
208	cmpl	%ebx,%ecx
209	cmovcl	%ecx,%ebx
210	andl	%ebx,%eax
211	movl	%ecx,%ebx
212	negl	%eax
213	andl	$511,%ebx
214	leal	(%eax,%ebp,1),%esp
215	movl	$512,%eax
216	cmovzl	%eax,%ebx
217	movl	%ebp,%eax
218	andl	$-16,%ebp
219	andl	$-16,%esp
220	movl	%eax,16(%ebp)
221	cmpl	%ebx,%ecx
222	ja	.L009ecb_loop
223	movl	%esi,%eax
224	cmpl	%esp,%ebp
225	cmovel	%edi,%eax
226	addl	%ecx,%eax
227	negl	%eax
228	andl	$4095,%eax
229	cmpl	$128,%eax
230	movl	$-128,%eax
231	cmovael	%ebx,%eax
232	andl	%eax,%ebx
233	jz	.L010ecb_unaligned_tail
234	jmp	.L009ecb_loop
235.align	16
236.L009ecb_loop:
237	movl	%edi,(%ebp)
238	movl	%esi,4(%ebp)
239	movl	%ecx,8(%ebp)
240	movl	%ebx,%ecx
241	movl	%ebx,12(%ebp)
242	testl	$15,%edi
243	cmovnzl	%esp,%edi
244	testl	$15,%esi
245	jz	.L011ecb_inp_aligned
246	shrl	$2,%ecx
247.byte	243,165
248	subl	%ebx,%edi
249	movl	%ebx,%ecx
250	movl	%edi,%esi
251.L011ecb_inp_aligned:
252	leal	-16(%edx),%eax
253	leal	16(%edx),%ebx
254	shrl	$4,%ecx
255.byte	243,15,167,200
256	movl	(%ebp),%edi
257	movl	12(%ebp),%ebx
258	testl	$15,%edi
259	jz	.L012ecb_out_aligned
260	movl	%ebx,%ecx
261	leal	(%esp),%esi
262	shrl	$2,%ecx
263.byte	243,165
264	subl	%ebx,%edi
265.L012ecb_out_aligned:
266	movl	4(%ebp),%esi
267	movl	8(%ebp),%ecx
268	addl	%ebx,%edi
269	addl	%ebx,%esi
270	subl	%ebx,%ecx
271	movl	$512,%ebx
272	jz	.L013ecb_break
273	cmpl	%ebx,%ecx
274	jae	.L009ecb_loop
275.L010ecb_unaligned_tail:
276	xorl	%eax,%eax
277	cmpl	%ebp,%esp
278	cmovel	%ecx,%eax
279	subl	%eax,%esp
280	movl	%edi,%eax
281	movl	%ecx,%ebx
282	shrl	$2,%ecx
283	leal	(%esp),%edi
284.byte	243,165
285	movl	%esp,%esi
286	movl	%eax,%edi
287	movl	%ebx,%ecx
288	jmp	.L009ecb_loop
289.align	16
290.L013ecb_break:
291	cmpl	%ebp,%esp
292	je	.L014ecb_done
293	pxor	%xmm0,%xmm0
294	leal	(%esp),%eax
295.L015ecb_bzero:
296	movaps	%xmm0,(%eax)
297	leal	16(%eax),%eax
298	cmpl	%eax,%ebp
299	ja	.L015ecb_bzero
300.L014ecb_done:
301	movl	16(%ebp),%ebp
302	leal	24(%ebp),%esp
303	jmp	.L016ecb_exit
304.align	16
305.L008ecb_aligned:
306	leal	(%esi,%ecx,1),%ebp
307	negl	%ebp
308	andl	$4095,%ebp
309	xorl	%eax,%eax
310	cmpl	$128,%ebp
311	movl	$127,%ebp
312	cmovael	%eax,%ebp
313	andl	%ecx,%ebp
314	subl	%ebp,%ecx
315	jz	.L017ecb_aligned_tail
316	leal	-16(%edx),%eax
317	leal	16(%edx),%ebx
318	shrl	$4,%ecx
319.byte	243,15,167,200
320	testl	%ebp,%ebp
321	jz	.L016ecb_exit
322.L017ecb_aligned_tail:
323	movl	%ebp,%ecx
324	leal	-24(%esp),%ebp
325	movl	%ebp,%esp
326	movl	%ebp,%eax
327	subl	%ecx,%esp
328	andl	$-16,%ebp
329	andl	$-16,%esp
330	movl	%eax,16(%ebp)
331	movl	%edi,%eax
332	movl	%ecx,%ebx
333	shrl	$2,%ecx
334	leal	(%esp),%edi
335.byte	243,165
336	movl	%esp,%esi
337	movl	%eax,%edi
338	movl	%ebx,%ecx
339	jmp	.L009ecb_loop
340.L016ecb_exit:
341	movl	$1,%eax
342	leal	4(%esp),%esp
343.L006ecb_abort:
344	popl	%edi
345	popl	%esi
346	popl	%ebx
347	popl	%ebp
348	ret
349.size	padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
350.globl	padlock_cbc_encrypt
351.type	padlock_cbc_encrypt,@function
352.align	16
353padlock_cbc_encrypt:
354.L_padlock_cbc_encrypt_begin:
355	%ifdef __CET__
356
357.byte	243,15,30,251
358	%endif
359
360	pushl	%ebp
361	pushl	%ebx
362	pushl	%esi
363	pushl	%edi
364	movl	20(%esp),%edi
365	movl	24(%esp),%esi
366	movl	28(%esp),%edx
367	movl	32(%esp),%ecx
368	testl	$15,%edx
369	jnz	.L018cbc_abort
370	testl	$15,%ecx
371	jnz	.L018cbc_abort
372	leal	.Lpadlock_saved_context-.L019cbc_pic_point,%eax
373	pushfl
374	cld
375	call	_padlock_verify_ctx
376.L019cbc_pic_point:
377	leal	16(%edx),%edx
378	xorl	%eax,%eax
379	xorl	%ebx,%ebx
380	testl	$32,(%edx)
381	jnz	.L020cbc_aligned
382	testl	$15,%edi
383	setz	%al
384	testl	$15,%esi
385	setz	%bl
386	testl	%ebx,%eax
387	jnz	.L020cbc_aligned
388	negl	%eax
389	movl	$512,%ebx
390	notl	%eax
391	leal	-24(%esp),%ebp
392	cmpl	%ebx,%ecx
393	cmovcl	%ecx,%ebx
394	andl	%ebx,%eax
395	movl	%ecx,%ebx
396	negl	%eax
397	andl	$511,%ebx
398	leal	(%eax,%ebp,1),%esp
399	movl	$512,%eax
400	cmovzl	%eax,%ebx
401	movl	%ebp,%eax
402	andl	$-16,%ebp
403	andl	$-16,%esp
404	movl	%eax,16(%ebp)
405	cmpl	%ebx,%ecx
406	ja	.L021cbc_loop
407	movl	%esi,%eax
408	cmpl	%esp,%ebp
409	cmovel	%edi,%eax
410	addl	%ecx,%eax
411	negl	%eax
412	andl	$4095,%eax
413	cmpl	$64,%eax
414	movl	$-64,%eax
415	cmovael	%ebx,%eax
416	andl	%eax,%ebx
417	jz	.L022cbc_unaligned_tail
418	jmp	.L021cbc_loop
419.align	16
420.L021cbc_loop:
421	movl	%edi,(%ebp)
422	movl	%esi,4(%ebp)
423	movl	%ecx,8(%ebp)
424	movl	%ebx,%ecx
425	movl	%ebx,12(%ebp)
426	testl	$15,%edi
427	cmovnzl	%esp,%edi
428	testl	$15,%esi
429	jz	.L023cbc_inp_aligned
430	shrl	$2,%ecx
431.byte	243,165
432	subl	%ebx,%edi
433	movl	%ebx,%ecx
434	movl	%edi,%esi
435.L023cbc_inp_aligned:
436	leal	-16(%edx),%eax
437	leal	16(%edx),%ebx
438	shrl	$4,%ecx
439.byte	243,15,167,208
440	movaps	(%eax),%xmm0
441	movaps	%xmm0,-16(%edx)
442	movl	(%ebp),%edi
443	movl	12(%ebp),%ebx
444	testl	$15,%edi
445	jz	.L024cbc_out_aligned
446	movl	%ebx,%ecx
447	leal	(%esp),%esi
448	shrl	$2,%ecx
449.byte	243,165
450	subl	%ebx,%edi
451.L024cbc_out_aligned:
452	movl	4(%ebp),%esi
453	movl	8(%ebp),%ecx
454	addl	%ebx,%edi
455	addl	%ebx,%esi
456	subl	%ebx,%ecx
457	movl	$512,%ebx
458	jz	.L025cbc_break
459	cmpl	%ebx,%ecx
460	jae	.L021cbc_loop
461.L022cbc_unaligned_tail:
462	xorl	%eax,%eax
463	cmpl	%ebp,%esp
464	cmovel	%ecx,%eax
465	subl	%eax,%esp
466	movl	%edi,%eax
467	movl	%ecx,%ebx
468	shrl	$2,%ecx
469	leal	(%esp),%edi
470.byte	243,165
471	movl	%esp,%esi
472	movl	%eax,%edi
473	movl	%ebx,%ecx
474	jmp	.L021cbc_loop
475.align	16
476.L025cbc_break:
477	cmpl	%ebp,%esp
478	je	.L026cbc_done
479	pxor	%xmm0,%xmm0
480	leal	(%esp),%eax
481.L027cbc_bzero:
482	movaps	%xmm0,(%eax)
483	leal	16(%eax),%eax
484	cmpl	%eax,%ebp
485	ja	.L027cbc_bzero
486.L026cbc_done:
487	movl	16(%ebp),%ebp
488	leal	24(%ebp),%esp
489	jmp	.L028cbc_exit
490.align	16
491.L020cbc_aligned:
492	leal	(%esi,%ecx,1),%ebp
493	negl	%ebp
494	andl	$4095,%ebp
495	xorl	%eax,%eax
496	cmpl	$64,%ebp
497	movl	$63,%ebp
498	cmovael	%eax,%ebp
499	andl	%ecx,%ebp
500	subl	%ebp,%ecx
501	jz	.L029cbc_aligned_tail
502	leal	-16(%edx),%eax
503	leal	16(%edx),%ebx
504	shrl	$4,%ecx
505.byte	243,15,167,208
506	movaps	(%eax),%xmm0
507	movaps	%xmm0,-16(%edx)
508	testl	%ebp,%ebp
509	jz	.L028cbc_exit
510.L029cbc_aligned_tail:
511	movl	%ebp,%ecx
512	leal	-24(%esp),%ebp
513	movl	%ebp,%esp
514	movl	%ebp,%eax
515	subl	%ecx,%esp
516	andl	$-16,%ebp
517	andl	$-16,%esp
518	movl	%eax,16(%ebp)
519	movl	%edi,%eax
520	movl	%ecx,%ebx
521	shrl	$2,%ecx
522	leal	(%esp),%edi
523.byte	243,165
524	movl	%esp,%esi
525	movl	%eax,%edi
526	movl	%ebx,%ecx
527	jmp	.L021cbc_loop
528.L028cbc_exit:
529	movl	$1,%eax
530	leal	4(%esp),%esp
531.L018cbc_abort:
532	popl	%edi
533	popl	%esi
534	popl	%ebx
535	popl	%ebp
536	ret
537.size	padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
538.globl	padlock_cfb_encrypt
539.type	padlock_cfb_encrypt,@function
540.align	16
541padlock_cfb_encrypt:
542.L_padlock_cfb_encrypt_begin:
543	%ifdef __CET__
544
545.byte	243,15,30,251
546	%endif
547
548	pushl	%ebp
549	pushl	%ebx
550	pushl	%esi
551	pushl	%edi
552	movl	20(%esp),%edi
553	movl	24(%esp),%esi
554	movl	28(%esp),%edx
555	movl	32(%esp),%ecx
556	testl	$15,%edx
557	jnz	.L030cfb_abort
558	testl	$15,%ecx
559	jnz	.L030cfb_abort
560	leal	.Lpadlock_saved_context-.L031cfb_pic_point,%eax
561	pushfl
562	cld
563	call	_padlock_verify_ctx
564.L031cfb_pic_point:
565	leal	16(%edx),%edx
566	xorl	%eax,%eax
567	xorl	%ebx,%ebx
568	testl	$32,(%edx)
569	jnz	.L032cfb_aligned
570	testl	$15,%edi
571	setz	%al
572	testl	$15,%esi
573	setz	%bl
574	testl	%ebx,%eax
575	jnz	.L032cfb_aligned
576	negl	%eax
577	movl	$512,%ebx
578	notl	%eax
579	leal	-24(%esp),%ebp
580	cmpl	%ebx,%ecx
581	cmovcl	%ecx,%ebx
582	andl	%ebx,%eax
583	movl	%ecx,%ebx
584	negl	%eax
585	andl	$511,%ebx
586	leal	(%eax,%ebp,1),%esp
587	movl	$512,%eax
588	cmovzl	%eax,%ebx
589	movl	%ebp,%eax
590	andl	$-16,%ebp
591	andl	$-16,%esp
592	movl	%eax,16(%ebp)
593	jmp	.L033cfb_loop
594.align	16
595.L033cfb_loop:
596	movl	%edi,(%ebp)
597	movl	%esi,4(%ebp)
598	movl	%ecx,8(%ebp)
599	movl	%ebx,%ecx
600	movl	%ebx,12(%ebp)
601	testl	$15,%edi
602	cmovnzl	%esp,%edi
603	testl	$15,%esi
604	jz	.L034cfb_inp_aligned
605	shrl	$2,%ecx
606.byte	243,165
607	subl	%ebx,%edi
608	movl	%ebx,%ecx
609	movl	%edi,%esi
610.L034cfb_inp_aligned:
611	leal	-16(%edx),%eax
612	leal	16(%edx),%ebx
613	shrl	$4,%ecx
614.byte	243,15,167,224
615	movaps	(%eax),%xmm0
616	movaps	%xmm0,-16(%edx)
617	movl	(%ebp),%edi
618	movl	12(%ebp),%ebx
619	testl	$15,%edi
620	jz	.L035cfb_out_aligned
621	movl	%ebx,%ecx
622	leal	(%esp),%esi
623	shrl	$2,%ecx
624.byte	243,165
625	subl	%ebx,%edi
626.L035cfb_out_aligned:
627	movl	4(%ebp),%esi
628	movl	8(%ebp),%ecx
629	addl	%ebx,%edi
630	addl	%ebx,%esi
631	subl	%ebx,%ecx
632	movl	$512,%ebx
633	jnz	.L033cfb_loop
634	cmpl	%ebp,%esp
635	je	.L036cfb_done
636	pxor	%xmm0,%xmm0
637	leal	(%esp),%eax
638.L037cfb_bzero:
639	movaps	%xmm0,(%eax)
640	leal	16(%eax),%eax
641	cmpl	%eax,%ebp
642	ja	.L037cfb_bzero
643.L036cfb_done:
644	movl	16(%ebp),%ebp
645	leal	24(%ebp),%esp
646	jmp	.L038cfb_exit
647.align	16
648.L032cfb_aligned:
649	leal	-16(%edx),%eax
650	leal	16(%edx),%ebx
651	shrl	$4,%ecx
652.byte	243,15,167,224
653	movaps	(%eax),%xmm0
654	movaps	%xmm0,-16(%edx)
655.L038cfb_exit:
656	movl	$1,%eax
657	leal	4(%esp),%esp
658.L030cfb_abort:
659	popl	%edi
660	popl	%esi
661	popl	%ebx
662	popl	%ebp
663	ret
664.size	padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin
665.globl	padlock_ofb_encrypt
666.type	padlock_ofb_encrypt,@function
667.align	16
668padlock_ofb_encrypt:
669.L_padlock_ofb_encrypt_begin:
670	%ifdef __CET__
671
672.byte	243,15,30,251
673	%endif
674
675	pushl	%ebp
676	pushl	%ebx
677	pushl	%esi
678	pushl	%edi
679	movl	20(%esp),%edi
680	movl	24(%esp),%esi
681	movl	28(%esp),%edx
682	movl	32(%esp),%ecx
683	testl	$15,%edx
684	jnz	.L039ofb_abort
685	testl	$15,%ecx
686	jnz	.L039ofb_abort
687	leal	.Lpadlock_saved_context-.L040ofb_pic_point,%eax
688	pushfl
689	cld
690	call	_padlock_verify_ctx
691.L040ofb_pic_point:
692	leal	16(%edx),%edx
693	xorl	%eax,%eax
694	xorl	%ebx,%ebx
695	testl	$32,(%edx)
696	jnz	.L041ofb_aligned
697	testl	$15,%edi
698	setz	%al
699	testl	$15,%esi
700	setz	%bl
701	testl	%ebx,%eax
702	jnz	.L041ofb_aligned
703	negl	%eax
704	movl	$512,%ebx
705	notl	%eax
706	leal	-24(%esp),%ebp
707	cmpl	%ebx,%ecx
708	cmovcl	%ecx,%ebx
709	andl	%ebx,%eax
710	movl	%ecx,%ebx
711	negl	%eax
712	andl	$511,%ebx
713	leal	(%eax,%ebp,1),%esp
714	movl	$512,%eax
715	cmovzl	%eax,%ebx
716	movl	%ebp,%eax
717	andl	$-16,%ebp
718	andl	$-16,%esp
719	movl	%eax,16(%ebp)
720	jmp	.L042ofb_loop
721.align	16
722.L042ofb_loop:
723	movl	%edi,(%ebp)
724	movl	%esi,4(%ebp)
725	movl	%ecx,8(%ebp)
726	movl	%ebx,%ecx
727	movl	%ebx,12(%ebp)
728	testl	$15,%edi
729	cmovnzl	%esp,%edi
730	testl	$15,%esi
731	jz	.L043ofb_inp_aligned
732	shrl	$2,%ecx
733.byte	243,165
734	subl	%ebx,%edi
735	movl	%ebx,%ecx
736	movl	%edi,%esi
737.L043ofb_inp_aligned:
738	leal	-16(%edx),%eax
739	leal	16(%edx),%ebx
740	shrl	$4,%ecx
741.byte	243,15,167,232
742	movaps	(%eax),%xmm0
743	movaps	%xmm0,-16(%edx)
744	movl	(%ebp),%edi
745	movl	12(%ebp),%ebx
746	testl	$15,%edi
747	jz	.L044ofb_out_aligned
748	movl	%ebx,%ecx
749	leal	(%esp),%esi
750	shrl	$2,%ecx
751.byte	243,165
752	subl	%ebx,%edi
753.L044ofb_out_aligned:
754	movl	4(%ebp),%esi
755	movl	8(%ebp),%ecx
756	addl	%ebx,%edi
757	addl	%ebx,%esi
758	subl	%ebx,%ecx
759	movl	$512,%ebx
760	jnz	.L042ofb_loop
761	cmpl	%ebp,%esp
762	je	.L045ofb_done
763	pxor	%xmm0,%xmm0
764	leal	(%esp),%eax
765.L046ofb_bzero:
766	movaps	%xmm0,(%eax)
767	leal	16(%eax),%eax
768	cmpl	%eax,%ebp
769	ja	.L046ofb_bzero
770.L045ofb_done:
771	movl	16(%ebp),%ebp
772	leal	24(%ebp),%esp
773	jmp	.L047ofb_exit
774.align	16
775.L041ofb_aligned:
776	leal	-16(%edx),%eax
777	leal	16(%edx),%ebx
778	shrl	$4,%ecx
779.byte	243,15,167,232
780	movaps	(%eax),%xmm0
781	movaps	%xmm0,-16(%edx)
782.L047ofb_exit:
783	movl	$1,%eax
784	leal	4(%esp),%esp
785.L039ofb_abort:
786	popl	%edi
787	popl	%esi
788	popl	%ebx
789	popl	%ebp
790	ret
791.size	padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin
792.globl	padlock_ctr32_encrypt
793.type	padlock_ctr32_encrypt,@function
794.align	16
795padlock_ctr32_encrypt:
796.L_padlock_ctr32_encrypt_begin:
797	%ifdef __CET__
798
799.byte	243,15,30,251
800	%endif
801
802	pushl	%ebp
803	pushl	%ebx
804	pushl	%esi
805	pushl	%edi
806	movl	20(%esp),%edi
807	movl	24(%esp),%esi
808	movl	28(%esp),%edx
809	movl	32(%esp),%ecx
810	testl	$15,%edx
811	jnz	.L048ctr32_abort
812	testl	$15,%ecx
813	jnz	.L048ctr32_abort
814	leal	.Lpadlock_saved_context-.L049ctr32_pic_point,%eax
815	pushfl
816	cld
817	call	_padlock_verify_ctx
818.L049ctr32_pic_point:
819	leal	16(%edx),%edx
820	xorl	%eax,%eax
821	movq	-16(%edx),%mm0
822	movl	$512,%ebx
823	notl	%eax
824	leal	-24(%esp),%ebp
825	cmpl	%ebx,%ecx
826	cmovcl	%ecx,%ebx
827	andl	%ebx,%eax
828	movl	%ecx,%ebx
829	negl	%eax
830	andl	$511,%ebx
831	leal	(%eax,%ebp,1),%esp
832	movl	$512,%eax
833	cmovzl	%eax,%ebx
834	movl	%ebp,%eax
835	andl	$-16,%ebp
836	andl	$-16,%esp
837	movl	%eax,16(%ebp)
838	jmp	.L050ctr32_loop
839.align	16
840.L050ctr32_loop:
841	movl	%edi,(%ebp)
842	movl	%esi,4(%ebp)
843	movl	%ecx,8(%ebp)
844	movl	%ebx,%ecx
845	movl	%ebx,12(%ebp)
846	movl	-4(%edx),%ecx
847	xorl	%edi,%edi
848	movl	-8(%edx),%eax
849.L051ctr32_prepare:
850	movl	%ecx,12(%esp,%edi,1)
851	bswap	%ecx
852	movq	%mm0,(%esp,%edi,1)
853	incl	%ecx
854	movl	%eax,8(%esp,%edi,1)
855	bswap	%ecx
856	leal	16(%edi),%edi
857	cmpl	%ebx,%edi
858	jb	.L051ctr32_prepare
859	movl	%ecx,-4(%edx)
860	leal	(%esp),%esi
861	leal	(%esp),%edi
862	movl	%ebx,%ecx
863	leal	-16(%edx),%eax
864	leal	16(%edx),%ebx
865	shrl	$4,%ecx
866.byte	243,15,167,200
867	movl	(%ebp),%edi
868	movl	12(%ebp),%ebx
869	movl	4(%ebp),%esi
870	xorl	%ecx,%ecx
871.L052ctr32_xor:
872	movups	(%esi,%ecx,1),%xmm1
873	leal	16(%ecx),%ecx
874	pxor	-16(%esp,%ecx,1),%xmm1
875	movups	%xmm1,-16(%edi,%ecx,1)
876	cmpl	%ebx,%ecx
877	jb	.L052ctr32_xor
878	movl	8(%ebp),%ecx
879	addl	%ebx,%edi
880	addl	%ebx,%esi
881	subl	%ebx,%ecx
882	movl	$512,%ebx
883	jnz	.L050ctr32_loop
884	pxor	%xmm0,%xmm0
885	leal	(%esp),%eax
886.L053ctr32_bzero:
887	movaps	%xmm0,(%eax)
888	leal	16(%eax),%eax
889	cmpl	%eax,%ebp
890	ja	.L053ctr32_bzero
891.L054ctr32_done:
892	movl	16(%ebp),%ebp
893	leal	24(%ebp),%esp
894	movl	$1,%eax
895	leal	4(%esp),%esp
896	emms
897.L048ctr32_abort:
898	popl	%edi
899	popl	%esi
900	popl	%ebx
901	popl	%ebp
902	ret
903.size	padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin
904.globl	padlock_xstore
905.type	padlock_xstore,@function
906.align	16
907padlock_xstore:
908.L_padlock_xstore_begin:
909	%ifdef __CET__
910
911.byte	243,15,30,251
912	%endif
913
914	pushl	%edi
915	movl	8(%esp),%edi
916	movl	12(%esp),%edx
917.byte	15,167,192
918	popl	%edi
919	ret
920.size	padlock_xstore,.-.L_padlock_xstore_begin
921.type	_win32_segv_handler,@function
922.align	16
923_win32_segv_handler:
924	%ifdef __CET__
925
926.byte	243,15,30,251
927	%endif
928
929	movl	$1,%eax
930	movl	4(%esp),%edx
931	movl	12(%esp),%ecx
932	cmpl	$3221225477,(%edx)
933	jne	.L055ret
934	addl	$4,184(%ecx)
935	movl	$0,%eax
936.L055ret:
937	ret
938.size	_win32_segv_handler,.-_win32_segv_handler
939.globl	padlock_sha1_oneshot
940.type	padlock_sha1_oneshot,@function
941.align	16
942padlock_sha1_oneshot:
943.L_padlock_sha1_oneshot_begin:
944	%ifdef __CET__
945
946.byte	243,15,30,251
947	%endif
948
949	pushl	%edi
950	pushl	%esi
951	xorl	%eax,%eax
952	movl	12(%esp),%edi
953	movl	16(%esp),%esi
954	movl	20(%esp),%ecx
955	movl	%esp,%edx
956	addl	$-128,%esp
957	movups	(%edi),%xmm0
958	andl	$-16,%esp
959	movl	16(%edi),%eax
960	movaps	%xmm0,(%esp)
961	movl	%esp,%edi
962	movl	%eax,16(%esp)
963	xorl	%eax,%eax
964.byte	243,15,166,200
965	movaps	(%esp),%xmm0
966	movl	16(%esp),%eax
967	movl	%edx,%esp
968	movl	12(%esp),%edi
969	movups	%xmm0,(%edi)
970	movl	%eax,16(%edi)
971	popl	%esi
972	popl	%edi
973	ret
974.size	padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
975.globl	padlock_sha1_blocks
976.type	padlock_sha1_blocks,@function
977.align	16
978padlock_sha1_blocks:
979.L_padlock_sha1_blocks_begin:
980	%ifdef __CET__
981
982.byte	243,15,30,251
983	%endif
984
985	pushl	%edi
986	pushl	%esi
987	movl	12(%esp),%edi
988	movl	16(%esp),%esi
989	movl	%esp,%edx
990	movl	20(%esp),%ecx
991	addl	$-128,%esp
992	movups	(%edi),%xmm0
993	andl	$-16,%esp
994	movl	16(%edi),%eax
995	movaps	%xmm0,(%esp)
996	movl	%esp,%edi
997	movl	%eax,16(%esp)
998	movl	$-1,%eax
999.byte	243,15,166,200
1000	movaps	(%esp),%xmm0
1001	movl	16(%esp),%eax
1002	movl	%edx,%esp
1003	movl	12(%esp),%edi
1004	movups	%xmm0,(%edi)
1005	movl	%eax,16(%edi)
1006	popl	%esi
1007	popl	%edi
1008	ret
1009.size	padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
1010.globl	padlock_sha256_oneshot
1011.type	padlock_sha256_oneshot,@function
1012.align	16
1013padlock_sha256_oneshot:
1014.L_padlock_sha256_oneshot_begin:
1015	%ifdef __CET__
1016
1017.byte	243,15,30,251
1018	%endif
1019
1020	pushl	%edi
1021	pushl	%esi
1022	xorl	%eax,%eax
1023	movl	12(%esp),%edi
1024	movl	16(%esp),%esi
1025	movl	20(%esp),%ecx
1026	movl	%esp,%edx
1027	addl	$-128,%esp
1028	movups	(%edi),%xmm0
1029	andl	$-16,%esp
1030	movups	16(%edi),%xmm1
1031	movaps	%xmm0,(%esp)
1032	movl	%esp,%edi
1033	movaps	%xmm1,16(%esp)
1034	xorl	%eax,%eax
1035.byte	243,15,166,208
1036	movaps	(%esp),%xmm0
1037	movaps	16(%esp),%xmm1
1038	movl	%edx,%esp
1039	movl	12(%esp),%edi
1040	movups	%xmm0,(%edi)
1041	movups	%xmm1,16(%edi)
1042	popl	%esi
1043	popl	%edi
1044	ret
1045.size	padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
1046.globl	padlock_sha256_blocks
1047.type	padlock_sha256_blocks,@function
1048.align	16
1049padlock_sha256_blocks:
1050.L_padlock_sha256_blocks_begin:
1051	%ifdef __CET__
1052
1053.byte	243,15,30,251
1054	%endif
1055
1056	pushl	%edi
1057	pushl	%esi
1058	movl	12(%esp),%edi
1059	movl	16(%esp),%esi
1060	movl	20(%esp),%ecx
1061	movl	%esp,%edx
1062	addl	$-128,%esp
1063	movups	(%edi),%xmm0
1064	andl	$-16,%esp
1065	movups	16(%edi),%xmm1
1066	movaps	%xmm0,(%esp)
1067	movl	%esp,%edi
1068	movaps	%xmm1,16(%esp)
1069	movl	$-1,%eax
1070.byte	243,15,166,208
1071	movaps	(%esp),%xmm0
1072	movaps	16(%esp),%xmm1
1073	movl	%edx,%esp
1074	movl	12(%esp),%edi
1075	movups	%xmm0,(%edi)
1076	movups	%xmm1,16(%edi)
1077	popl	%esi
1078	popl	%edi
1079	ret
1080.size	padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
1081.globl	padlock_sha512_blocks
1082.type	padlock_sha512_blocks,@function
1083.align	16
1084padlock_sha512_blocks:
1085.L_padlock_sha512_blocks_begin:
1086	%ifdef __CET__
1087
1088.byte	243,15,30,251
1089	%endif
1090
1091	pushl	%edi
1092	pushl	%esi
1093	movl	12(%esp),%edi
1094	movl	16(%esp),%esi
1095	movl	20(%esp),%ecx
1096	movl	%esp,%edx
1097	addl	$-128,%esp
1098	movups	(%edi),%xmm0
1099	andl	$-16,%esp
1100	movups	16(%edi),%xmm1
1101	movups	32(%edi),%xmm2
1102	movups	48(%edi),%xmm3
1103	movaps	%xmm0,(%esp)
1104	movl	%esp,%edi
1105	movaps	%xmm1,16(%esp)
1106	movaps	%xmm2,32(%esp)
1107	movaps	%xmm3,48(%esp)
1108.byte	243,15,166,224
1109	movaps	(%esp),%xmm0
1110	movaps	16(%esp),%xmm1
1111	movaps	32(%esp),%xmm2
1112	movaps	48(%esp),%xmm3
1113	movl	%edx,%esp
1114	movl	12(%esp),%edi
1115	movups	%xmm0,(%edi)
1116	movups	%xmm1,16(%edi)
1117	movups	%xmm2,32(%edi)
1118	movups	%xmm3,48(%edi)
1119	popl	%esi
1120	popl	%edi
1121	ret
1122.size	padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
1123.byte	86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1124.byte	109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1125.byte	77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1126.byte	110,115,115,108,46,111,114,103,62,0
1127.align	16
1128.data
1129.align	4
1130.Lpadlock_saved_context:
1131.long	0
1132
1133	.section ".note.gnu.property", "a"
1134	.p2align 2
1135	.long 1f - 0f
1136	.long 4f - 1f
1137	.long 5
11380:
1139	.asciz "GNU"
11401:
1141	.p2align 2
1142	.long 0xc0000002
1143	.long 3f - 2f
11442:
1145	.long 3
11463:
1147	.p2align 2
11484:
1149