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