OLD | NEW |
| (Empty) |
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 .section __IMPORT,__pointers,non_lazy_symbol_pointers | |
347 L_OPENSSL_ia32cap_P$non_lazy_ptr: | |
348 .indirect_symbol _OPENSSL_ia32cap_P | |
349 .long 0 | |
350 #endif | |
OLD | NEW |