VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.3/crypto/genasm-macosx/rc4-586.S@ 101211

Last change on this file since 101211 was 97372, checked in by vboxsync, 2 years ago

libs: Switch to openssl-3.0.7, bugref:10317

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette