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