xref: /freebsd/sys/crypto/openssl/i386/rc4-586.S (revision c0855eaa)
1bc3d5698SJohn Baldwin/* Do not modify. This file is auto-generated from rc4-586.pl. */
2bc3d5698SJohn Baldwin#ifdef PIC
3bc3d5698SJohn Baldwin.text
4bc3d5698SJohn Baldwin.globl	RC4
5bc3d5698SJohn Baldwin.type	RC4,@function
6bc3d5698SJohn Baldwin.align	16
7bc3d5698SJohn BaldwinRC4:
8bc3d5698SJohn Baldwin.L_RC4_begin:
9c0855eaaSJohn Baldwin	#ifdef __CET__
10c0855eaaSJohn Baldwin
11c0855eaaSJohn Baldwin.byte	243,15,30,251
12c0855eaaSJohn Baldwin	#endif
13c0855eaaSJohn Baldwin
14bc3d5698SJohn Baldwin	pushl	%ebp
15bc3d5698SJohn Baldwin	pushl	%ebx
16bc3d5698SJohn Baldwin	pushl	%esi
17bc3d5698SJohn Baldwin	pushl	%edi
18bc3d5698SJohn Baldwin	movl	20(%esp),%edi
19bc3d5698SJohn Baldwin	movl	24(%esp),%edx
20bc3d5698SJohn Baldwin	movl	28(%esp),%esi
21bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
22bc3d5698SJohn Baldwin	xorl	%eax,%eax
23bc3d5698SJohn Baldwin	xorl	%ebx,%ebx
24bc3d5698SJohn Baldwin	cmpl	$0,%edx
25bc3d5698SJohn Baldwin	je	.L000abort
26bc3d5698SJohn Baldwin	movb	(%edi),%al
27bc3d5698SJohn Baldwin	movb	4(%edi),%bl
28bc3d5698SJohn Baldwin	addl	$8,%edi
29bc3d5698SJohn Baldwin	leal	(%esi,%edx,1),%ecx
30bc3d5698SJohn Baldwin	subl	%esi,%ebp
31bc3d5698SJohn Baldwin	movl	%ecx,24(%esp)
32bc3d5698SJohn Baldwin	incb	%al
33bc3d5698SJohn Baldwin	cmpl	$-1,256(%edi)
34bc3d5698SJohn Baldwin	je	.L001RC4_CHAR
35bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
36bc3d5698SJohn Baldwin	andl	$-4,%edx
37bc3d5698SJohn Baldwin	jz	.L002loop1
38bc3d5698SJohn Baldwin	movl	%ebp,32(%esp)
39bc3d5698SJohn Baldwin	testl	$-8,%edx
40bc3d5698SJohn Baldwin	jz	.L003go4loop4
41bc3d5698SJohn Baldwin	call	.L004PIC_me_up
42bc3d5698SJohn Baldwin.L004PIC_me_up:
43bc3d5698SJohn Baldwin	popl	%ebp
44bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L004PIC_me_up(%ebp),%ebp
45bc3d5698SJohn Baldwin	btl	$26,(%ebp)
46bc3d5698SJohn Baldwin	jnc	.L003go4loop4
47bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
48bc3d5698SJohn Baldwin	andl	$-8,%edx
49bc3d5698SJohn Baldwin	leal	-8(%esi,%edx,1),%edx
50bc3d5698SJohn Baldwin	movl	%edx,-4(%edi)
51bc3d5698SJohn Baldwin	addb	%cl,%bl
52bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
53bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
54bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
55bc3d5698SJohn Baldwin	incl	%eax
56bc3d5698SJohn Baldwin	addl	%ecx,%edx
57bc3d5698SJohn Baldwin	movzbl	%al,%eax
58bc3d5698SJohn Baldwin	movzbl	%dl,%edx
59bc3d5698SJohn Baldwin	movq	(%esi),%mm0
60bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
61bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm2
62bc3d5698SJohn Baldwin	jmp	.L005loop_mmx_enter
63bc3d5698SJohn Baldwin.align	16
64bc3d5698SJohn Baldwin.L006loop_mmx:
65bc3d5698SJohn Baldwin	addb	%cl,%bl
66bc3d5698SJohn Baldwin	psllq	$56,%mm1
67bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
68bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
69bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
70bc3d5698SJohn Baldwin	incl	%eax
71bc3d5698SJohn Baldwin	addl	%ecx,%edx
72bc3d5698SJohn Baldwin	movzbl	%al,%eax
73bc3d5698SJohn Baldwin	movzbl	%dl,%edx
74bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
75bc3d5698SJohn Baldwin	movq	(%esi),%mm0
76bc3d5698SJohn Baldwin	movq	%mm2,-8(%ebp,%esi,1)
77bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
78bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm2
79bc3d5698SJohn Baldwin.L005loop_mmx_enter:
80bc3d5698SJohn Baldwin	addb	%cl,%bl
81bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
82bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
83bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
84bc3d5698SJohn Baldwin	incl	%eax
85bc3d5698SJohn Baldwin	addl	%ecx,%edx
86bc3d5698SJohn Baldwin	movzbl	%al,%eax
87bc3d5698SJohn Baldwin	movzbl	%dl,%edx
88bc3d5698SJohn Baldwin	pxor	%mm0,%mm2
89bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
90bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
91bc3d5698SJohn Baldwin	addb	%cl,%bl
92bc3d5698SJohn Baldwin	psllq	$8,%mm1
93bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
94bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
95bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
96bc3d5698SJohn Baldwin	incl	%eax
97bc3d5698SJohn Baldwin	addl	%ecx,%edx
98bc3d5698SJohn Baldwin	movzbl	%al,%eax
99bc3d5698SJohn Baldwin	movzbl	%dl,%edx
100bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
101bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
102bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
103bc3d5698SJohn Baldwin	addb	%cl,%bl
104bc3d5698SJohn Baldwin	psllq	$16,%mm1
105bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
106bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
107bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
108bc3d5698SJohn Baldwin	incl	%eax
109bc3d5698SJohn Baldwin	addl	%ecx,%edx
110bc3d5698SJohn Baldwin	movzbl	%al,%eax
111bc3d5698SJohn Baldwin	movzbl	%dl,%edx
112bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
113bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
114bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
115bc3d5698SJohn Baldwin	addb	%cl,%bl
116bc3d5698SJohn Baldwin	psllq	$24,%mm1
117bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
118bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
119bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
120bc3d5698SJohn Baldwin	incl	%eax
121bc3d5698SJohn Baldwin	addl	%ecx,%edx
122bc3d5698SJohn Baldwin	movzbl	%al,%eax
123bc3d5698SJohn Baldwin	movzbl	%dl,%edx
124bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
125bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
126bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
127bc3d5698SJohn Baldwin	addb	%cl,%bl
128bc3d5698SJohn Baldwin	psllq	$32,%mm1
129bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
130bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
131bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
132bc3d5698SJohn Baldwin	incl	%eax
133bc3d5698SJohn Baldwin	addl	%ecx,%edx
134bc3d5698SJohn Baldwin	movzbl	%al,%eax
135bc3d5698SJohn Baldwin	movzbl	%dl,%edx
136bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
137bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
138bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
139bc3d5698SJohn Baldwin	addb	%cl,%bl
140bc3d5698SJohn Baldwin	psllq	$40,%mm1
141bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
142bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
143bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
144bc3d5698SJohn Baldwin	incl	%eax
145bc3d5698SJohn Baldwin	addl	%ecx,%edx
146bc3d5698SJohn Baldwin	movzbl	%al,%eax
147bc3d5698SJohn Baldwin	movzbl	%dl,%edx
148bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
149bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
150bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
151bc3d5698SJohn Baldwin	addb	%cl,%bl
152bc3d5698SJohn Baldwin	psllq	$48,%mm1
153bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
154bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
155bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
156bc3d5698SJohn Baldwin	incl	%eax
157bc3d5698SJohn Baldwin	addl	%ecx,%edx
158bc3d5698SJohn Baldwin	movzbl	%al,%eax
159bc3d5698SJohn Baldwin	movzbl	%dl,%edx
160bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
161bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
162bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
163bc3d5698SJohn Baldwin	movl	%ebx,%edx
164bc3d5698SJohn Baldwin	xorl	%ebx,%ebx
165bc3d5698SJohn Baldwin	movb	%dl,%bl
166bc3d5698SJohn Baldwin	cmpl	-4(%edi),%esi
167bc3d5698SJohn Baldwin	leal	8(%esi),%esi
168bc3d5698SJohn Baldwin	jb	.L006loop_mmx
169bc3d5698SJohn Baldwin	psllq	$56,%mm1
170bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
171bc3d5698SJohn Baldwin	movq	%mm2,-8(%ebp,%esi,1)
172bc3d5698SJohn Baldwin	emms
173bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
174bc3d5698SJohn Baldwin	je	.L007done
175bc3d5698SJohn Baldwin	jmp	.L002loop1
176bc3d5698SJohn Baldwin.align	16
177bc3d5698SJohn Baldwin.L003go4loop4:
178bc3d5698SJohn Baldwin	leal	-4(%esi,%edx,1),%edx
179bc3d5698SJohn Baldwin	movl	%edx,28(%esp)
180bc3d5698SJohn Baldwin.L008loop4:
181bc3d5698SJohn Baldwin	addb	%cl,%bl
182bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
183bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
184bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
185bc3d5698SJohn Baldwin	addl	%ecx,%edx
186bc3d5698SJohn Baldwin	incb	%al
187bc3d5698SJohn Baldwin	andl	$255,%edx
188bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
189bc3d5698SJohn Baldwin	movl	(%edi,%edx,4),%ebp
190bc3d5698SJohn Baldwin	addb	%cl,%bl
191bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
192bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
193bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
194bc3d5698SJohn Baldwin	addl	%ecx,%edx
195bc3d5698SJohn Baldwin	incb	%al
196bc3d5698SJohn Baldwin	andl	$255,%edx
197bc3d5698SJohn Baldwin	rorl	$8,%ebp
198bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
199bc3d5698SJohn Baldwin	orl	(%edi,%edx,4),%ebp
200bc3d5698SJohn Baldwin	addb	%cl,%bl
201bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
202bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
203bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
204bc3d5698SJohn Baldwin	addl	%ecx,%edx
205bc3d5698SJohn Baldwin	incb	%al
206bc3d5698SJohn Baldwin	andl	$255,%edx
207bc3d5698SJohn Baldwin	rorl	$8,%ebp
208bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
209bc3d5698SJohn Baldwin	orl	(%edi,%edx,4),%ebp
210bc3d5698SJohn Baldwin	addb	%cl,%bl
211bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
212bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
213bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
214bc3d5698SJohn Baldwin	addl	%ecx,%edx
215bc3d5698SJohn Baldwin	incb	%al
216bc3d5698SJohn Baldwin	andl	$255,%edx
217bc3d5698SJohn Baldwin	rorl	$8,%ebp
218bc3d5698SJohn Baldwin	movl	32(%esp),%ecx
219bc3d5698SJohn Baldwin	orl	(%edi,%edx,4),%ebp
220bc3d5698SJohn Baldwin	rorl	$8,%ebp
221bc3d5698SJohn Baldwin	xorl	(%esi),%ebp
222bc3d5698SJohn Baldwin	cmpl	28(%esp),%esi
223bc3d5698SJohn Baldwin	movl	%ebp,(%ecx,%esi,1)
224bc3d5698SJohn Baldwin	leal	4(%esi),%esi
225bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
226bc3d5698SJohn Baldwin	jb	.L008loop4
227bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
228bc3d5698SJohn Baldwin	je	.L007done
229bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
230bc3d5698SJohn Baldwin.align	16
231bc3d5698SJohn Baldwin.L002loop1:
232bc3d5698SJohn Baldwin	addb	%cl,%bl
233bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
234bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
235bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
236bc3d5698SJohn Baldwin	addl	%ecx,%edx
237bc3d5698SJohn Baldwin	incb	%al
238bc3d5698SJohn Baldwin	andl	$255,%edx
239bc3d5698SJohn Baldwin	movl	(%edi,%edx,4),%edx
240bc3d5698SJohn Baldwin	xorb	(%esi),%dl
241bc3d5698SJohn Baldwin	leal	1(%esi),%esi
242bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
243bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
244bc3d5698SJohn Baldwin	movb	%dl,-1(%ebp,%esi,1)
245bc3d5698SJohn Baldwin	jb	.L002loop1
246bc3d5698SJohn Baldwin	jmp	.L007done
247bc3d5698SJohn Baldwin.align	16
248bc3d5698SJohn Baldwin.L001RC4_CHAR:
249bc3d5698SJohn Baldwin	movzbl	(%edi,%eax,1),%ecx
250bc3d5698SJohn Baldwin.L009cloop1:
251bc3d5698SJohn Baldwin	addb	%cl,%bl
252bc3d5698SJohn Baldwin	movzbl	(%edi,%ebx,1),%edx
253bc3d5698SJohn Baldwin	movb	%cl,(%edi,%ebx,1)
254bc3d5698SJohn Baldwin	movb	%dl,(%edi,%eax,1)
255bc3d5698SJohn Baldwin	addb	%cl,%dl
256bc3d5698SJohn Baldwin	movzbl	(%edi,%edx,1),%edx
257bc3d5698SJohn Baldwin	addb	$1,%al
258bc3d5698SJohn Baldwin	xorb	(%esi),%dl
259bc3d5698SJohn Baldwin	leal	1(%esi),%esi
260bc3d5698SJohn Baldwin	movzbl	(%edi,%eax,1),%ecx
261bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
262bc3d5698SJohn Baldwin	movb	%dl,-1(%ebp,%esi,1)
263bc3d5698SJohn Baldwin	jb	.L009cloop1
264bc3d5698SJohn Baldwin.L007done:
265bc3d5698SJohn Baldwin	decb	%al
266bc3d5698SJohn Baldwin	movl	%ebx,-4(%edi)
267bc3d5698SJohn Baldwin	movb	%al,-8(%edi)
268bc3d5698SJohn Baldwin.L000abort:
269bc3d5698SJohn Baldwin	popl	%edi
270bc3d5698SJohn Baldwin	popl	%esi
271bc3d5698SJohn Baldwin	popl	%ebx
272bc3d5698SJohn Baldwin	popl	%ebp
273bc3d5698SJohn Baldwin	ret
274bc3d5698SJohn Baldwin.size	RC4,.-.L_RC4_begin
275bc3d5698SJohn Baldwin.globl	RC4_set_key
276bc3d5698SJohn Baldwin.type	RC4_set_key,@function
277bc3d5698SJohn Baldwin.align	16
278bc3d5698SJohn BaldwinRC4_set_key:
279bc3d5698SJohn Baldwin.L_RC4_set_key_begin:
280c0855eaaSJohn Baldwin	#ifdef __CET__
281c0855eaaSJohn Baldwin
282c0855eaaSJohn Baldwin.byte	243,15,30,251
283c0855eaaSJohn Baldwin	#endif
284c0855eaaSJohn Baldwin
285bc3d5698SJohn Baldwin	pushl	%ebp
286bc3d5698SJohn Baldwin	pushl	%ebx
287bc3d5698SJohn Baldwin	pushl	%esi
288bc3d5698SJohn Baldwin	pushl	%edi
289bc3d5698SJohn Baldwin	movl	20(%esp),%edi
290bc3d5698SJohn Baldwin	movl	24(%esp),%ebp
291bc3d5698SJohn Baldwin	movl	28(%esp),%esi
292bc3d5698SJohn Baldwin	call	.L010PIC_me_up
293bc3d5698SJohn Baldwin.L010PIC_me_up:
294bc3d5698SJohn Baldwin	popl	%edx
295bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L010PIC_me_up(%edx),%edx
296bc3d5698SJohn Baldwin	leal	8(%edi),%edi
297bc3d5698SJohn Baldwin	leal	(%esi,%ebp,1),%esi
298bc3d5698SJohn Baldwin	negl	%ebp
299bc3d5698SJohn Baldwin	xorl	%eax,%eax
300bc3d5698SJohn Baldwin	movl	%ebp,-4(%edi)
301bc3d5698SJohn Baldwin	btl	$20,(%edx)
302bc3d5698SJohn Baldwin	jc	.L011c1stloop
303bc3d5698SJohn Baldwin.align	16
304bc3d5698SJohn Baldwin.L012w1stloop:
305bc3d5698SJohn Baldwin	movl	%eax,(%edi,%eax,4)
306bc3d5698SJohn Baldwin	addb	$1,%al
307bc3d5698SJohn Baldwin	jnc	.L012w1stloop
308bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
309bc3d5698SJohn Baldwin	xorl	%edx,%edx
310bc3d5698SJohn Baldwin.align	16
311bc3d5698SJohn Baldwin.L013w2ndloop:
312bc3d5698SJohn Baldwin	movl	(%edi,%ecx,4),%eax
313bc3d5698SJohn Baldwin	addb	(%esi,%ebp,1),%dl
314bc3d5698SJohn Baldwin	addb	%al,%dl
315bc3d5698SJohn Baldwin	addl	$1,%ebp
316bc3d5698SJohn Baldwin	movl	(%edi,%edx,4),%ebx
317bc3d5698SJohn Baldwin	jnz	.L014wnowrap
318bc3d5698SJohn Baldwin	movl	-4(%edi),%ebp
319bc3d5698SJohn Baldwin.L014wnowrap:
320bc3d5698SJohn Baldwin	movl	%eax,(%edi,%edx,4)
321bc3d5698SJohn Baldwin	movl	%ebx,(%edi,%ecx,4)
322bc3d5698SJohn Baldwin	addb	$1,%cl
323bc3d5698SJohn Baldwin	jnc	.L013w2ndloop
324bc3d5698SJohn Baldwin	jmp	.L015exit
325bc3d5698SJohn Baldwin.align	16
326bc3d5698SJohn Baldwin.L011c1stloop:
327bc3d5698SJohn Baldwin	movb	%al,(%edi,%eax,1)
328bc3d5698SJohn Baldwin	addb	$1,%al
329bc3d5698SJohn Baldwin	jnc	.L011c1stloop
330bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
331bc3d5698SJohn Baldwin	xorl	%edx,%edx
332bc3d5698SJohn Baldwin	xorl	%ebx,%ebx
333bc3d5698SJohn Baldwin.align	16
334bc3d5698SJohn Baldwin.L016c2ndloop:
335bc3d5698SJohn Baldwin	movb	(%edi,%ecx,1),%al
336bc3d5698SJohn Baldwin	addb	(%esi,%ebp,1),%dl
337bc3d5698SJohn Baldwin	addb	%al,%dl
338bc3d5698SJohn Baldwin	addl	$1,%ebp
339bc3d5698SJohn Baldwin	movb	(%edi,%edx,1),%bl
340bc3d5698SJohn Baldwin	jnz	.L017cnowrap
341bc3d5698SJohn Baldwin	movl	-4(%edi),%ebp
342bc3d5698SJohn Baldwin.L017cnowrap:
343bc3d5698SJohn Baldwin	movb	%al,(%edi,%edx,1)
344bc3d5698SJohn Baldwin	movb	%bl,(%edi,%ecx,1)
345bc3d5698SJohn Baldwin	addb	$1,%cl
346bc3d5698SJohn Baldwin	jnc	.L016c2ndloop
347bc3d5698SJohn Baldwin	movl	$-1,256(%edi)
348bc3d5698SJohn Baldwin.L015exit:
349bc3d5698SJohn Baldwin	xorl	%eax,%eax
350bc3d5698SJohn Baldwin	movl	%eax,-8(%edi)
351bc3d5698SJohn Baldwin	movl	%eax,-4(%edi)
352bc3d5698SJohn Baldwin	popl	%edi
353bc3d5698SJohn Baldwin	popl	%esi
354bc3d5698SJohn Baldwin	popl	%ebx
355bc3d5698SJohn Baldwin	popl	%ebp
356bc3d5698SJohn Baldwin	ret
357bc3d5698SJohn Baldwin.size	RC4_set_key,.-.L_RC4_set_key_begin
358bc3d5698SJohn Baldwin.globl	RC4_options
359bc3d5698SJohn Baldwin.type	RC4_options,@function
360bc3d5698SJohn Baldwin.align	16
361bc3d5698SJohn BaldwinRC4_options:
362bc3d5698SJohn Baldwin.L_RC4_options_begin:
363c0855eaaSJohn Baldwin	#ifdef __CET__
364c0855eaaSJohn Baldwin
365c0855eaaSJohn Baldwin.byte	243,15,30,251
366c0855eaaSJohn Baldwin	#endif
367c0855eaaSJohn Baldwin
368bc3d5698SJohn Baldwin	call	.L018pic_point
369bc3d5698SJohn Baldwin.L018pic_point:
370bc3d5698SJohn Baldwin	popl	%eax
371bc3d5698SJohn Baldwin	leal	.L019opts-.L018pic_point(%eax),%eax
372bc3d5698SJohn Baldwin	call	.L020PIC_me_up
373bc3d5698SJohn Baldwin.L020PIC_me_up:
374bc3d5698SJohn Baldwin	popl	%edx
375bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L020PIC_me_up(%edx),%edx
376bc3d5698SJohn Baldwin	movl	(%edx),%edx
377bc3d5698SJohn Baldwin	btl	$20,%edx
378bc3d5698SJohn Baldwin	jc	.L0211xchar
379bc3d5698SJohn Baldwin	btl	$26,%edx
380bc3d5698SJohn Baldwin	jnc	.L022ret
381bc3d5698SJohn Baldwin	addl	$25,%eax
382bc3d5698SJohn Baldwin	ret
383bc3d5698SJohn Baldwin.L0211xchar:
384bc3d5698SJohn Baldwin	addl	$12,%eax
385bc3d5698SJohn Baldwin.L022ret:
386bc3d5698SJohn Baldwin	ret
387bc3d5698SJohn Baldwin.align	64
388bc3d5698SJohn Baldwin.L019opts:
389bc3d5698SJohn Baldwin.byte	114,99,52,40,52,120,44,105,110,116,41,0
390bc3d5698SJohn Baldwin.byte	114,99,52,40,49,120,44,99,104,97,114,41,0
391bc3d5698SJohn Baldwin.byte	114,99,52,40,56,120,44,109,109,120,41,0
392bc3d5698SJohn Baldwin.byte	82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89
393bc3d5698SJohn Baldwin.byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
394bc3d5698SJohn Baldwin.byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
395bc3d5698SJohn Baldwin.align	64
396bc3d5698SJohn Baldwin.size	RC4_options,.-.L_RC4_options_begin
397bc3d5698SJohn Baldwin.comm	OPENSSL_ia32cap_P,16,4
398c0855eaaSJohn Baldwin
399c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
400c0855eaaSJohn Baldwin	.p2align 2
401c0855eaaSJohn Baldwin	.long 1f - 0f
402c0855eaaSJohn Baldwin	.long 4f - 1f
403c0855eaaSJohn Baldwin	.long 5
404c0855eaaSJohn Baldwin0:
405c0855eaaSJohn Baldwin	.asciz "GNU"
406c0855eaaSJohn Baldwin1:
407c0855eaaSJohn Baldwin	.p2align 2
408c0855eaaSJohn Baldwin	.long 0xc0000002
409c0855eaaSJohn Baldwin	.long 3f - 2f
410c0855eaaSJohn Baldwin2:
411c0855eaaSJohn Baldwin	.long 3
412c0855eaaSJohn Baldwin3:
413c0855eaaSJohn Baldwin	.p2align 2
414c0855eaaSJohn Baldwin4:
415bc3d5698SJohn Baldwin#else
416bc3d5698SJohn Baldwin.text
417bc3d5698SJohn Baldwin.globl	RC4
418bc3d5698SJohn Baldwin.type	RC4,@function
419bc3d5698SJohn Baldwin.align	16
420bc3d5698SJohn BaldwinRC4:
421bc3d5698SJohn Baldwin.L_RC4_begin:
422c0855eaaSJohn Baldwin	#ifdef __CET__
423c0855eaaSJohn Baldwin
424c0855eaaSJohn Baldwin.byte	243,15,30,251
425c0855eaaSJohn Baldwin	#endif
426c0855eaaSJohn Baldwin
427bc3d5698SJohn Baldwin	pushl	%ebp
428bc3d5698SJohn Baldwin	pushl	%ebx
429bc3d5698SJohn Baldwin	pushl	%esi
430bc3d5698SJohn Baldwin	pushl	%edi
431bc3d5698SJohn Baldwin	movl	20(%esp),%edi
432bc3d5698SJohn Baldwin	movl	24(%esp),%edx
433bc3d5698SJohn Baldwin	movl	28(%esp),%esi
434bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
435bc3d5698SJohn Baldwin	xorl	%eax,%eax
436bc3d5698SJohn Baldwin	xorl	%ebx,%ebx
437bc3d5698SJohn Baldwin	cmpl	$0,%edx
438bc3d5698SJohn Baldwin	je	.L000abort
439bc3d5698SJohn Baldwin	movb	(%edi),%al
440bc3d5698SJohn Baldwin	movb	4(%edi),%bl
441bc3d5698SJohn Baldwin	addl	$8,%edi
442bc3d5698SJohn Baldwin	leal	(%esi,%edx,1),%ecx
443bc3d5698SJohn Baldwin	subl	%esi,%ebp
444bc3d5698SJohn Baldwin	movl	%ecx,24(%esp)
445bc3d5698SJohn Baldwin	incb	%al
446bc3d5698SJohn Baldwin	cmpl	$-1,256(%edi)
447bc3d5698SJohn Baldwin	je	.L001RC4_CHAR
448bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
449bc3d5698SJohn Baldwin	andl	$-4,%edx
450bc3d5698SJohn Baldwin	jz	.L002loop1
451bc3d5698SJohn Baldwin	movl	%ebp,32(%esp)
452bc3d5698SJohn Baldwin	testl	$-8,%edx
453bc3d5698SJohn Baldwin	jz	.L003go4loop4
454bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%ebp
455bc3d5698SJohn Baldwin	btl	$26,(%ebp)
456bc3d5698SJohn Baldwin	jnc	.L003go4loop4
457bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
458bc3d5698SJohn Baldwin	andl	$-8,%edx
459bc3d5698SJohn Baldwin	leal	-8(%esi,%edx,1),%edx
460bc3d5698SJohn Baldwin	movl	%edx,-4(%edi)
461bc3d5698SJohn Baldwin	addb	%cl,%bl
462bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
463bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
464bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
465bc3d5698SJohn Baldwin	incl	%eax
466bc3d5698SJohn Baldwin	addl	%ecx,%edx
467bc3d5698SJohn Baldwin	movzbl	%al,%eax
468bc3d5698SJohn Baldwin	movzbl	%dl,%edx
469bc3d5698SJohn Baldwin	movq	(%esi),%mm0
470bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
471bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm2
472bc3d5698SJohn Baldwin	jmp	.L004loop_mmx_enter
473bc3d5698SJohn Baldwin.align	16
474bc3d5698SJohn Baldwin.L005loop_mmx:
475bc3d5698SJohn Baldwin	addb	%cl,%bl
476bc3d5698SJohn Baldwin	psllq	$56,%mm1
477bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
478bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
479bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
480bc3d5698SJohn Baldwin	incl	%eax
481bc3d5698SJohn Baldwin	addl	%ecx,%edx
482bc3d5698SJohn Baldwin	movzbl	%al,%eax
483bc3d5698SJohn Baldwin	movzbl	%dl,%edx
484bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
485bc3d5698SJohn Baldwin	movq	(%esi),%mm0
486bc3d5698SJohn Baldwin	movq	%mm2,-8(%ebp,%esi,1)
487bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
488bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm2
489bc3d5698SJohn Baldwin.L004loop_mmx_enter:
490bc3d5698SJohn Baldwin	addb	%cl,%bl
491bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
492bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
493bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
494bc3d5698SJohn Baldwin	incl	%eax
495bc3d5698SJohn Baldwin	addl	%ecx,%edx
496bc3d5698SJohn Baldwin	movzbl	%al,%eax
497bc3d5698SJohn Baldwin	movzbl	%dl,%edx
498bc3d5698SJohn Baldwin	pxor	%mm0,%mm2
499bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
500bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
501bc3d5698SJohn Baldwin	addb	%cl,%bl
502bc3d5698SJohn Baldwin	psllq	$8,%mm1
503bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
504bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
505bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
506bc3d5698SJohn Baldwin	incl	%eax
507bc3d5698SJohn Baldwin	addl	%ecx,%edx
508bc3d5698SJohn Baldwin	movzbl	%al,%eax
509bc3d5698SJohn Baldwin	movzbl	%dl,%edx
510bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
511bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
512bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
513bc3d5698SJohn Baldwin	addb	%cl,%bl
514bc3d5698SJohn Baldwin	psllq	$16,%mm1
515bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
516bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
517bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
518bc3d5698SJohn Baldwin	incl	%eax
519bc3d5698SJohn Baldwin	addl	%ecx,%edx
520bc3d5698SJohn Baldwin	movzbl	%al,%eax
521bc3d5698SJohn Baldwin	movzbl	%dl,%edx
522bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
523bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
524bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
525bc3d5698SJohn Baldwin	addb	%cl,%bl
526bc3d5698SJohn Baldwin	psllq	$24,%mm1
527bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
528bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
529bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
530bc3d5698SJohn Baldwin	incl	%eax
531bc3d5698SJohn Baldwin	addl	%ecx,%edx
532bc3d5698SJohn Baldwin	movzbl	%al,%eax
533bc3d5698SJohn Baldwin	movzbl	%dl,%edx
534bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
535bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
536bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
537bc3d5698SJohn Baldwin	addb	%cl,%bl
538bc3d5698SJohn Baldwin	psllq	$32,%mm1
539bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
540bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
541bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
542bc3d5698SJohn Baldwin	incl	%eax
543bc3d5698SJohn Baldwin	addl	%ecx,%edx
544bc3d5698SJohn Baldwin	movzbl	%al,%eax
545bc3d5698SJohn Baldwin	movzbl	%dl,%edx
546bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
547bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
548bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
549bc3d5698SJohn Baldwin	addb	%cl,%bl
550bc3d5698SJohn Baldwin	psllq	$40,%mm1
551bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
552bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
553bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
554bc3d5698SJohn Baldwin	incl	%eax
555bc3d5698SJohn Baldwin	addl	%ecx,%edx
556bc3d5698SJohn Baldwin	movzbl	%al,%eax
557bc3d5698SJohn Baldwin	movzbl	%dl,%edx
558bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
559bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
560bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
561bc3d5698SJohn Baldwin	addb	%cl,%bl
562bc3d5698SJohn Baldwin	psllq	$48,%mm1
563bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
564bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
565bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
566bc3d5698SJohn Baldwin	incl	%eax
567bc3d5698SJohn Baldwin	addl	%ecx,%edx
568bc3d5698SJohn Baldwin	movzbl	%al,%eax
569bc3d5698SJohn Baldwin	movzbl	%dl,%edx
570bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
571bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
572bc3d5698SJohn Baldwin	movd	(%edi,%edx,4),%mm1
573bc3d5698SJohn Baldwin	movl	%ebx,%edx
574bc3d5698SJohn Baldwin	xorl	%ebx,%ebx
575bc3d5698SJohn Baldwin	movb	%dl,%bl
576bc3d5698SJohn Baldwin	cmpl	-4(%edi),%esi
577bc3d5698SJohn Baldwin	leal	8(%esi),%esi
578bc3d5698SJohn Baldwin	jb	.L005loop_mmx
579bc3d5698SJohn Baldwin	psllq	$56,%mm1
580bc3d5698SJohn Baldwin	pxor	%mm1,%mm2
581bc3d5698SJohn Baldwin	movq	%mm2,-8(%ebp,%esi,1)
582bc3d5698SJohn Baldwin	emms
583bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
584bc3d5698SJohn Baldwin	je	.L006done
585bc3d5698SJohn Baldwin	jmp	.L002loop1
586bc3d5698SJohn Baldwin.align	16
587bc3d5698SJohn Baldwin.L003go4loop4:
588bc3d5698SJohn Baldwin	leal	-4(%esi,%edx,1),%edx
589bc3d5698SJohn Baldwin	movl	%edx,28(%esp)
590bc3d5698SJohn Baldwin.L007loop4:
591bc3d5698SJohn Baldwin	addb	%cl,%bl
592bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
593bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
594bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
595bc3d5698SJohn Baldwin	addl	%ecx,%edx
596bc3d5698SJohn Baldwin	incb	%al
597bc3d5698SJohn Baldwin	andl	$255,%edx
598bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
599bc3d5698SJohn Baldwin	movl	(%edi,%edx,4),%ebp
600bc3d5698SJohn Baldwin	addb	%cl,%bl
601bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
602bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
603bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
604bc3d5698SJohn Baldwin	addl	%ecx,%edx
605bc3d5698SJohn Baldwin	incb	%al
606bc3d5698SJohn Baldwin	andl	$255,%edx
607bc3d5698SJohn Baldwin	rorl	$8,%ebp
608bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
609bc3d5698SJohn Baldwin	orl	(%edi,%edx,4),%ebp
610bc3d5698SJohn Baldwin	addb	%cl,%bl
611bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
612bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
613bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
614bc3d5698SJohn Baldwin	addl	%ecx,%edx
615bc3d5698SJohn Baldwin	incb	%al
616bc3d5698SJohn Baldwin	andl	$255,%edx
617bc3d5698SJohn Baldwin	rorl	$8,%ebp
618bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
619bc3d5698SJohn Baldwin	orl	(%edi,%edx,4),%ebp
620bc3d5698SJohn Baldwin	addb	%cl,%bl
621bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
622bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
623bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
624bc3d5698SJohn Baldwin	addl	%ecx,%edx
625bc3d5698SJohn Baldwin	incb	%al
626bc3d5698SJohn Baldwin	andl	$255,%edx
627bc3d5698SJohn Baldwin	rorl	$8,%ebp
628bc3d5698SJohn Baldwin	movl	32(%esp),%ecx
629bc3d5698SJohn Baldwin	orl	(%edi,%edx,4),%ebp
630bc3d5698SJohn Baldwin	rorl	$8,%ebp
631bc3d5698SJohn Baldwin	xorl	(%esi),%ebp
632bc3d5698SJohn Baldwin	cmpl	28(%esp),%esi
633bc3d5698SJohn Baldwin	movl	%ebp,(%ecx,%esi,1)
634bc3d5698SJohn Baldwin	leal	4(%esi),%esi
635bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
636bc3d5698SJohn Baldwin	jb	.L007loop4
637bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
638bc3d5698SJohn Baldwin	je	.L006done
639bc3d5698SJohn Baldwin	movl	32(%esp),%ebp
640bc3d5698SJohn Baldwin.align	16
641bc3d5698SJohn Baldwin.L002loop1:
642bc3d5698SJohn Baldwin	addb	%cl,%bl
643bc3d5698SJohn Baldwin	movl	(%edi,%ebx,4),%edx
644bc3d5698SJohn Baldwin	movl	%ecx,(%edi,%ebx,4)
645bc3d5698SJohn Baldwin	movl	%edx,(%edi,%eax,4)
646bc3d5698SJohn Baldwin	addl	%ecx,%edx
647bc3d5698SJohn Baldwin	incb	%al
648bc3d5698SJohn Baldwin	andl	$255,%edx
649bc3d5698SJohn Baldwin	movl	(%edi,%edx,4),%edx
650bc3d5698SJohn Baldwin	xorb	(%esi),%dl
651bc3d5698SJohn Baldwin	leal	1(%esi),%esi
652bc3d5698SJohn Baldwin	movl	(%edi,%eax,4),%ecx
653bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
654bc3d5698SJohn Baldwin	movb	%dl,-1(%ebp,%esi,1)
655bc3d5698SJohn Baldwin	jb	.L002loop1
656bc3d5698SJohn Baldwin	jmp	.L006done
657bc3d5698SJohn Baldwin.align	16
658bc3d5698SJohn Baldwin.L001RC4_CHAR:
659bc3d5698SJohn Baldwin	movzbl	(%edi,%eax,1),%ecx
660bc3d5698SJohn Baldwin.L008cloop1:
661bc3d5698SJohn Baldwin	addb	%cl,%bl
662bc3d5698SJohn Baldwin	movzbl	(%edi,%ebx,1),%edx
663bc3d5698SJohn Baldwin	movb	%cl,(%edi,%ebx,1)
664bc3d5698SJohn Baldwin	movb	%dl,(%edi,%eax,1)
665bc3d5698SJohn Baldwin	addb	%cl,%dl
666bc3d5698SJohn Baldwin	movzbl	(%edi,%edx,1),%edx
667bc3d5698SJohn Baldwin	addb	$1,%al
668bc3d5698SJohn Baldwin	xorb	(%esi),%dl
669bc3d5698SJohn Baldwin	leal	1(%esi),%esi
670bc3d5698SJohn Baldwin	movzbl	(%edi,%eax,1),%ecx
671bc3d5698SJohn Baldwin	cmpl	24(%esp),%esi
672bc3d5698SJohn Baldwin	movb	%dl,-1(%ebp,%esi,1)
673bc3d5698SJohn Baldwin	jb	.L008cloop1
674bc3d5698SJohn Baldwin.L006done:
675bc3d5698SJohn Baldwin	decb	%al
676bc3d5698SJohn Baldwin	movl	%ebx,-4(%edi)
677bc3d5698SJohn Baldwin	movb	%al,-8(%edi)
678bc3d5698SJohn Baldwin.L000abort:
679bc3d5698SJohn Baldwin	popl	%edi
680bc3d5698SJohn Baldwin	popl	%esi
681bc3d5698SJohn Baldwin	popl	%ebx
682bc3d5698SJohn Baldwin	popl	%ebp
683bc3d5698SJohn Baldwin	ret
684bc3d5698SJohn Baldwin.size	RC4,.-.L_RC4_begin
685bc3d5698SJohn Baldwin.globl	RC4_set_key
686bc3d5698SJohn Baldwin.type	RC4_set_key,@function
687bc3d5698SJohn Baldwin.align	16
688bc3d5698SJohn BaldwinRC4_set_key:
689bc3d5698SJohn Baldwin.L_RC4_set_key_begin:
690c0855eaaSJohn Baldwin	#ifdef __CET__
691c0855eaaSJohn Baldwin
692c0855eaaSJohn Baldwin.byte	243,15,30,251
693c0855eaaSJohn Baldwin	#endif
694c0855eaaSJohn Baldwin
695bc3d5698SJohn Baldwin	pushl	%ebp
696bc3d5698SJohn Baldwin	pushl	%ebx
697bc3d5698SJohn Baldwin	pushl	%esi
698bc3d5698SJohn Baldwin	pushl	%edi
699bc3d5698SJohn Baldwin	movl	20(%esp),%edi
700bc3d5698SJohn Baldwin	movl	24(%esp),%ebp
701bc3d5698SJohn Baldwin	movl	28(%esp),%esi
702bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%edx
703bc3d5698SJohn Baldwin	leal	8(%edi),%edi
704bc3d5698SJohn Baldwin	leal	(%esi,%ebp,1),%esi
705bc3d5698SJohn Baldwin	negl	%ebp
706bc3d5698SJohn Baldwin	xorl	%eax,%eax
707bc3d5698SJohn Baldwin	movl	%ebp,-4(%edi)
708bc3d5698SJohn Baldwin	btl	$20,(%edx)
709bc3d5698SJohn Baldwin	jc	.L009c1stloop
710bc3d5698SJohn Baldwin.align	16
711bc3d5698SJohn Baldwin.L010w1stloop:
712bc3d5698SJohn Baldwin	movl	%eax,(%edi,%eax,4)
713bc3d5698SJohn Baldwin	addb	$1,%al
714bc3d5698SJohn Baldwin	jnc	.L010w1stloop
715bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
716bc3d5698SJohn Baldwin	xorl	%edx,%edx
717bc3d5698SJohn Baldwin.align	16
718bc3d5698SJohn Baldwin.L011w2ndloop:
719bc3d5698SJohn Baldwin	movl	(%edi,%ecx,4),%eax
720bc3d5698SJohn Baldwin	addb	(%esi,%ebp,1),%dl
721bc3d5698SJohn Baldwin	addb	%al,%dl
722bc3d5698SJohn Baldwin	addl	$1,%ebp
723bc3d5698SJohn Baldwin	movl	(%edi,%edx,4),%ebx
724bc3d5698SJohn Baldwin	jnz	.L012wnowrap
725bc3d5698SJohn Baldwin	movl	-4(%edi),%ebp
726bc3d5698SJohn Baldwin.L012wnowrap:
727bc3d5698SJohn Baldwin	movl	%eax,(%edi,%edx,4)
728bc3d5698SJohn Baldwin	movl	%ebx,(%edi,%ecx,4)
729bc3d5698SJohn Baldwin	addb	$1,%cl
730bc3d5698SJohn Baldwin	jnc	.L011w2ndloop
731bc3d5698SJohn Baldwin	jmp	.L013exit
732bc3d5698SJohn Baldwin.align	16
733bc3d5698SJohn Baldwin.L009c1stloop:
734bc3d5698SJohn Baldwin	movb	%al,(%edi,%eax,1)
735bc3d5698SJohn Baldwin	addb	$1,%al
736bc3d5698SJohn Baldwin	jnc	.L009c1stloop
737bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
738bc3d5698SJohn Baldwin	xorl	%edx,%edx
739bc3d5698SJohn Baldwin	xorl	%ebx,%ebx
740bc3d5698SJohn Baldwin.align	16
741bc3d5698SJohn Baldwin.L014c2ndloop:
742bc3d5698SJohn Baldwin	movb	(%edi,%ecx,1),%al
743bc3d5698SJohn Baldwin	addb	(%esi,%ebp,1),%dl
744bc3d5698SJohn Baldwin	addb	%al,%dl
745bc3d5698SJohn Baldwin	addl	$1,%ebp
746bc3d5698SJohn Baldwin	movb	(%edi,%edx,1),%bl
747bc3d5698SJohn Baldwin	jnz	.L015cnowrap
748bc3d5698SJohn Baldwin	movl	-4(%edi),%ebp
749bc3d5698SJohn Baldwin.L015cnowrap:
750bc3d5698SJohn Baldwin	movb	%al,(%edi,%edx,1)
751bc3d5698SJohn Baldwin	movb	%bl,(%edi,%ecx,1)
752bc3d5698SJohn Baldwin	addb	$1,%cl
753bc3d5698SJohn Baldwin	jnc	.L014c2ndloop
754bc3d5698SJohn Baldwin	movl	$-1,256(%edi)
755bc3d5698SJohn Baldwin.L013exit:
756bc3d5698SJohn Baldwin	xorl	%eax,%eax
757bc3d5698SJohn Baldwin	movl	%eax,-8(%edi)
758bc3d5698SJohn Baldwin	movl	%eax,-4(%edi)
759bc3d5698SJohn Baldwin	popl	%edi
760bc3d5698SJohn Baldwin	popl	%esi
761bc3d5698SJohn Baldwin	popl	%ebx
762bc3d5698SJohn Baldwin	popl	%ebp
763bc3d5698SJohn Baldwin	ret
764bc3d5698SJohn Baldwin.size	RC4_set_key,.-.L_RC4_set_key_begin
765bc3d5698SJohn Baldwin.globl	RC4_options
766bc3d5698SJohn Baldwin.type	RC4_options,@function
767bc3d5698SJohn Baldwin.align	16
768bc3d5698SJohn BaldwinRC4_options:
769bc3d5698SJohn Baldwin.L_RC4_options_begin:
770c0855eaaSJohn Baldwin	#ifdef __CET__
771c0855eaaSJohn Baldwin
772c0855eaaSJohn Baldwin.byte	243,15,30,251
773c0855eaaSJohn Baldwin	#endif
774c0855eaaSJohn Baldwin
775bc3d5698SJohn Baldwin	call	.L016pic_point
776bc3d5698SJohn Baldwin.L016pic_point:
777bc3d5698SJohn Baldwin	popl	%eax
778bc3d5698SJohn Baldwin	leal	.L017opts-.L016pic_point(%eax),%eax
779bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%edx
780bc3d5698SJohn Baldwin	movl	(%edx),%edx
781bc3d5698SJohn Baldwin	btl	$20,%edx
782bc3d5698SJohn Baldwin	jc	.L0181xchar
783bc3d5698SJohn Baldwin	btl	$26,%edx
784bc3d5698SJohn Baldwin	jnc	.L019ret
785bc3d5698SJohn Baldwin	addl	$25,%eax
786bc3d5698SJohn Baldwin	ret
787bc3d5698SJohn Baldwin.L0181xchar:
788bc3d5698SJohn Baldwin	addl	$12,%eax
789bc3d5698SJohn Baldwin.L019ret:
790bc3d5698SJohn Baldwin	ret
791bc3d5698SJohn Baldwin.align	64
792bc3d5698SJohn Baldwin.L017opts:
793bc3d5698SJohn Baldwin.byte	114,99,52,40,52,120,44,105,110,116,41,0
794bc3d5698SJohn Baldwin.byte	114,99,52,40,49,120,44,99,104,97,114,41,0
795bc3d5698SJohn Baldwin.byte	114,99,52,40,56,120,44,109,109,120,41,0
796bc3d5698SJohn Baldwin.byte	82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89
797bc3d5698SJohn Baldwin.byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
798bc3d5698SJohn Baldwin.byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
799bc3d5698SJohn Baldwin.align	64
800bc3d5698SJohn Baldwin.size	RC4_options,.-.L_RC4_options_begin
801bc3d5698SJohn Baldwin.comm	OPENSSL_ia32cap_P,16,4
802c0855eaaSJohn Baldwin
803c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
804c0855eaaSJohn Baldwin	.p2align 2
805c0855eaaSJohn Baldwin	.long 1f - 0f
806c0855eaaSJohn Baldwin	.long 4f - 1f
807c0855eaaSJohn Baldwin	.long 5
808c0855eaaSJohn Baldwin0:
809c0855eaaSJohn Baldwin	.asciz "GNU"
810c0855eaaSJohn Baldwin1:
811c0855eaaSJohn Baldwin	.p2align 2
812c0855eaaSJohn Baldwin	.long 0xc0000002
813c0855eaaSJohn Baldwin	.long 3f - 2f
814c0855eaaSJohn Baldwin2:
815c0855eaaSJohn Baldwin	.long 3
816c0855eaaSJohn Baldwin3:
817c0855eaaSJohn Baldwin	.p2align 2
818c0855eaaSJohn Baldwin4:
819bc3d5698SJohn Baldwin#endif
820