OLD | NEW |
| (Empty) |
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 #endif | |
OLD | NEW |