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