Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / boringssl / linux-x86 / crypto / rc4 / rc4-586.S
1 #if defined(__i386__)
2 .file   "rc4-586.S"
3 .text
4 .globl  asm_RC4
5 .hidden asm_RC4
6 .type   asm_RC4,@function
7 .align  16
8 asm_RC4:
9 .L_asm_RC4_begin:
10         pushl   %ebp
11         pushl   %ebx
12         pushl   %esi
13         pushl   %edi
14         movl    20(%esp),%edi
15         movl    24(%esp),%edx
16         movl    28(%esp),%esi
17         movl    32(%esp),%ebp
18         xorl    %eax,%eax
19         xorl    %ebx,%ebx
20         cmpl    $0,%edx
21         je      .L000abort
22         movb    (%edi),%al
23         movb    4(%edi),%bl
24         addl    $8,%edi
25         leal    (%esi,%edx,1),%ecx
26         subl    %esi,%ebp
27         movl    %ecx,24(%esp)
28         incb    %al
29         cmpl    $-1,256(%edi)
30         je      .L001RC4_CHAR
31         movl    (%edi,%eax,4),%ecx
32         andl    $-4,%edx
33         jz      .L002loop1
34         movl    %ebp,32(%esp)
35         testl   $-8,%edx
36         jz      .L003go4loop4
37         call    .L004PIC_me_up
38 .L004PIC_me_up:
39         popl    %ebp
40         leal    OPENSSL_ia32cap_P-.L004PIC_me_up(%ebp),%ebp
41         btl     $26,(%ebp)
42         jnc     .L003go4loop4
43         movl    32(%esp),%ebp
44         andl    $-8,%edx
45         leal    -8(%esi,%edx,1),%edx
46         movl    %edx,-4(%edi)
47         addb    %cl,%bl
48         movl    (%edi,%ebx,4),%edx
49         movl    %ecx,(%edi,%ebx,4)
50         movl    %edx,(%edi,%eax,4)
51         incl    %eax
52         addl    %ecx,%edx
53         movzbl  %al,%eax
54         movzbl  %dl,%edx
55         movq    (%esi),%mm0
56         movl    (%edi,%eax,4),%ecx
57         movd    (%edi,%edx,4),%mm2
58         jmp     .L005loop_mmx_enter
59 .align  16
60 .L006loop_mmx:
61         addb    %cl,%bl
62         psllq   $56,%mm1
63         movl    (%edi,%ebx,4),%edx
64         movl    %ecx,(%edi,%ebx,4)
65         movl    %edx,(%edi,%eax,4)
66         incl    %eax
67         addl    %ecx,%edx
68         movzbl  %al,%eax
69         movzbl  %dl,%edx
70         pxor    %mm1,%mm2
71         movq    (%esi),%mm0
72         movq    %mm2,-8(%ebp,%esi,1)
73         movl    (%edi,%eax,4),%ecx
74         movd    (%edi,%edx,4),%mm2
75 .L005loop_mmx_enter:
76         addb    %cl,%bl
77         movl    (%edi,%ebx,4),%edx
78         movl    %ecx,(%edi,%ebx,4)
79         movl    %edx,(%edi,%eax,4)
80         incl    %eax
81         addl    %ecx,%edx
82         movzbl  %al,%eax
83         movzbl  %dl,%edx
84         pxor    %mm0,%mm2
85         movl    (%edi,%eax,4),%ecx
86         movd    (%edi,%edx,4),%mm1
87         addb    %cl,%bl
88         psllq   $8,%mm1
89         movl    (%edi,%ebx,4),%edx
90         movl    %ecx,(%edi,%ebx,4)
91         movl    %edx,(%edi,%eax,4)
92         incl    %eax
93         addl    %ecx,%edx
94         movzbl  %al,%eax
95         movzbl  %dl,%edx
96         pxor    %mm1,%mm2
97         movl    (%edi,%eax,4),%ecx
98         movd    (%edi,%edx,4),%mm1
99         addb    %cl,%bl
100         psllq   $16,%mm1
101         movl    (%edi,%ebx,4),%edx
102         movl    %ecx,(%edi,%ebx,4)
103         movl    %edx,(%edi,%eax,4)
104         incl    %eax
105         addl    %ecx,%edx
106         movzbl  %al,%eax
107         movzbl  %dl,%edx
108         pxor    %mm1,%mm2
109         movl    (%edi,%eax,4),%ecx
110         movd    (%edi,%edx,4),%mm1
111         addb    %cl,%bl
112         psllq   $24,%mm1
113         movl    (%edi,%ebx,4),%edx
114         movl    %ecx,(%edi,%ebx,4)
115         movl    %edx,(%edi,%eax,4)
116         incl    %eax
117         addl    %ecx,%edx
118         movzbl  %al,%eax
119         movzbl  %dl,%edx
120         pxor    %mm1,%mm2
121         movl    (%edi,%eax,4),%ecx
122         movd    (%edi,%edx,4),%mm1
123         addb    %cl,%bl
124         psllq   $32,%mm1
125         movl    (%edi,%ebx,4),%edx
126         movl    %ecx,(%edi,%ebx,4)
127         movl    %edx,(%edi,%eax,4)
128         incl    %eax
129         addl    %ecx,%edx
130         movzbl  %al,%eax
131         movzbl  %dl,%edx
132         pxor    %mm1,%mm2
133         movl    (%edi,%eax,4),%ecx
134         movd    (%edi,%edx,4),%mm1
135         addb    %cl,%bl
136         psllq   $40,%mm1
137         movl    (%edi,%ebx,4),%edx
138         movl    %ecx,(%edi,%ebx,4)
139         movl    %edx,(%edi,%eax,4)
140         incl    %eax
141         addl    %ecx,%edx
142         movzbl  %al,%eax
143         movzbl  %dl,%edx
144         pxor    %mm1,%mm2
145         movl    (%edi,%eax,4),%ecx
146         movd    (%edi,%edx,4),%mm1
147         addb    %cl,%bl
148         psllq   $48,%mm1
149         movl    (%edi,%ebx,4),%edx
150         movl    %ecx,(%edi,%ebx,4)
151         movl    %edx,(%edi,%eax,4)
152         incl    %eax
153         addl    %ecx,%edx
154         movzbl  %al,%eax
155         movzbl  %dl,%edx
156         pxor    %mm1,%mm2
157         movl    (%edi,%eax,4),%ecx
158         movd    (%edi,%edx,4),%mm1
159         movl    %ebx,%edx
160         xorl    %ebx,%ebx
161         movb    %dl,%bl
162         cmpl    -4(%edi),%esi
163         leal    8(%esi),%esi
164         jb      .L006loop_mmx
165         psllq   $56,%mm1
166         pxor    %mm1,%mm2
167         movq    %mm2,-8(%ebp,%esi,1)
168         emms
169         cmpl    24(%esp),%esi
170         je      .L007done
171         jmp     .L002loop1
172 .align  16
173 .L003go4loop4:
174         leal    -4(%esi,%edx,1),%edx
175         movl    %edx,28(%esp)
176 .L008loop4:
177         addb    %cl,%bl
178         movl    (%edi,%ebx,4),%edx
179         movl    %ecx,(%edi,%ebx,4)
180         movl    %edx,(%edi,%eax,4)
181         addl    %ecx,%edx
182         incb    %al
183         andl    $255,%edx
184         movl    (%edi,%eax,4),%ecx
185         movl    (%edi,%edx,4),%ebp
186         addb    %cl,%bl
187         movl    (%edi,%ebx,4),%edx
188         movl    %ecx,(%edi,%ebx,4)
189         movl    %edx,(%edi,%eax,4)
190         addl    %ecx,%edx
191         incb    %al
192         andl    $255,%edx
193         rorl    $8,%ebp
194         movl    (%edi,%eax,4),%ecx
195         orl     (%edi,%edx,4),%ebp
196         addb    %cl,%bl
197         movl    (%edi,%ebx,4),%edx
198         movl    %ecx,(%edi,%ebx,4)
199         movl    %edx,(%edi,%eax,4)
200         addl    %ecx,%edx
201         incb    %al
202         andl    $255,%edx
203         rorl    $8,%ebp
204         movl    (%edi,%eax,4),%ecx
205         orl     (%edi,%edx,4),%ebp
206         addb    %cl,%bl
207         movl    (%edi,%ebx,4),%edx
208         movl    %ecx,(%edi,%ebx,4)
209         movl    %edx,(%edi,%eax,4)
210         addl    %ecx,%edx
211         incb    %al
212         andl    $255,%edx
213         rorl    $8,%ebp
214         movl    32(%esp),%ecx
215         orl     (%edi,%edx,4),%ebp
216         rorl    $8,%ebp
217         xorl    (%esi),%ebp
218         cmpl    28(%esp),%esi
219         movl    %ebp,(%ecx,%esi,1)
220         leal    4(%esi),%esi
221         movl    (%edi,%eax,4),%ecx
222         jb      .L008loop4
223         cmpl    24(%esp),%esi
224         je      .L007done
225         movl    32(%esp),%ebp
226 .align  16
227 .L002loop1:
228         addb    %cl,%bl
229         movl    (%edi,%ebx,4),%edx
230         movl    %ecx,(%edi,%ebx,4)
231         movl    %edx,(%edi,%eax,4)
232         addl    %ecx,%edx
233         incb    %al
234         andl    $255,%edx
235         movl    (%edi,%edx,4),%edx
236         xorb    (%esi),%dl
237         leal    1(%esi),%esi
238         movl    (%edi,%eax,4),%ecx
239         cmpl    24(%esp),%esi
240         movb    %dl,-1(%ebp,%esi,1)
241         jb      .L002loop1
242         jmp     .L007done
243 .align  16
244 .L001RC4_CHAR:
245         movzbl  (%edi,%eax,1),%ecx
246 .L009cloop1:
247         addb    %cl,%bl
248         movzbl  (%edi,%ebx,1),%edx
249         movb    %cl,(%edi,%ebx,1)
250         movb    %dl,(%edi,%eax,1)
251         addb    %cl,%dl
252         movzbl  (%edi,%edx,1),%edx
253         addb    $1,%al
254         xorb    (%esi),%dl
255         leal    1(%esi),%esi
256         movzbl  (%edi,%eax,1),%ecx
257         cmpl    24(%esp),%esi
258         movb    %dl,-1(%ebp,%esi,1)
259         jb      .L009cloop1
260 .L007done:
261         decb    %al
262         movl    %ebx,-4(%edi)
263         movb    %al,-8(%edi)
264 .L000abort:
265         popl    %edi
266         popl    %esi
267         popl    %ebx
268         popl    %ebp
269         ret
270 .size   asm_RC4,.-.L_asm_RC4_begin
271 .globl  asm_RC4_set_key
272 .hidden asm_RC4_set_key
273 .type   asm_RC4_set_key,@function
274 .align  16
275 asm_RC4_set_key:
276 .L_asm_RC4_set_key_begin:
277         pushl   %ebp
278         pushl   %ebx
279         pushl   %esi
280         pushl   %edi
281         movl    20(%esp),%edi
282         movl    24(%esp),%ebp
283         movl    28(%esp),%esi
284         call    .L010PIC_me_up
285 .L010PIC_me_up:
286         popl    %edx
287         leal    OPENSSL_ia32cap_P-.L010PIC_me_up(%edx),%edx
288         leal    8(%edi),%edi
289         leal    (%esi,%ebp,1),%esi
290         negl    %ebp
291         xorl    %eax,%eax
292         movl    %ebp,-4(%edi)
293         btl     $20,(%edx)
294         jc      .L011c1stloop
295 .align  16
296 .L012w1stloop:
297         movl    %eax,(%edi,%eax,4)
298         addb    $1,%al
299         jnc     .L012w1stloop
300         xorl    %ecx,%ecx
301         xorl    %edx,%edx
302 .align  16
303 .L013w2ndloop:
304         movl    (%edi,%ecx,4),%eax
305         addb    (%esi,%ebp,1),%dl
306         addb    %al,%dl
307         addl    $1,%ebp
308         movl    (%edi,%edx,4),%ebx
309         jnz     .L014wnowrap
310         movl    -4(%edi),%ebp
311 .L014wnowrap:
312         movl    %eax,(%edi,%edx,4)
313         movl    %ebx,(%edi,%ecx,4)
314         addb    $1,%cl
315         jnc     .L013w2ndloop
316         jmp     .L015exit
317 .align  16
318 .L011c1stloop:
319         movb    %al,(%edi,%eax,1)
320         addb    $1,%al
321         jnc     .L011c1stloop
322         xorl    %ecx,%ecx
323         xorl    %edx,%edx
324         xorl    %ebx,%ebx
325 .align  16
326 .L016c2ndloop:
327         movb    (%edi,%ecx,1),%al
328         addb    (%esi,%ebp,1),%dl
329         addb    %al,%dl
330         addl    $1,%ebp
331         movb    (%edi,%edx,1),%bl
332         jnz     .L017cnowrap
333         movl    -4(%edi),%ebp
334 .L017cnowrap:
335         movb    %al,(%edi,%edx,1)
336         movb    %bl,(%edi,%ecx,1)
337         addb    $1,%cl
338         jnc     .L016c2ndloop
339         movl    $-1,256(%edi)
340 .L015exit:
341         xorl    %eax,%eax
342         movl    %eax,-8(%edi)
343         movl    %eax,-4(%edi)
344         popl    %edi
345         popl    %esi
346         popl    %ebx
347         popl    %ebp
348         ret
349 .size   asm_RC4_set_key,.-.L_asm_RC4_set_key_begin
350 .globl  RC4_options
351 .hidden RC4_options
352 .type   RC4_options,@function
353 .align  16
354 RC4_options:
355 .L_RC4_options_begin:
356         call    .L018pic_point
357 .L018pic_point:
358         popl    %eax
359         leal    .L019opts-.L018pic_point(%eax),%eax
360         call    .L020PIC_me_up
361 .L020PIC_me_up:
362         popl    %edx
363         leal    OPENSSL_ia32cap_P-.L020PIC_me_up(%edx),%edx
364         movl    (%edx),%edx
365         btl     $20,%edx
366         jc      .L0211xchar
367         btl     $26,%edx
368         jnc     .L022ret
369         addl    $25,%eax
370         ret
371 .L0211xchar:
372         addl    $12,%eax
373 .L022ret:
374         ret
375 .align  64
376 .L019opts:
377 .byte   114,99,52,40,52,120,44,105,110,116,41,0
378 .byte   114,99,52,40,49,120,44,99,104,97,114,41,0
379 .byte   114,99,52,40,56,120,44,109,109,120,41,0
380 .byte   82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89
381 .byte   80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
382 .byte   111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
383 .align  64
384 .size   RC4_options,.-.L_RC4_options_begin
385 #endif