| OLD | NEW |
| (Empty) |
| 1 .text | |
| 2 | |
| 3 | |
| 4 .globl RC4 | |
| 5 .type RC4,@function | |
| 6 .align 16 | |
| 7 RC4: orq %rsi,%rsi | |
| 8 jne .Lentry | |
| 9 .byte 0xf3,0xc3 | |
| 10 .Lentry: | |
| 11 pushq %rbx | |
| 12 pushq %r12 | |
| 13 pushq %r13 | |
| 14 .Lprologue: | |
| 15 movq %rsi,%r11 | |
| 16 movq %rdx,%r12 | |
| 17 movq %rcx,%r13 | |
| 18 xorq %r10,%r10 | |
| 19 xorq %rcx,%rcx | |
| 20 | |
| 21 leaq 8(%rdi),%rdi | |
| 22 movb -8(%rdi),%r10b | |
| 23 movb -4(%rdi),%cl | |
| 24 cmpl $-1,256(%rdi) | |
| 25 je .LRC4_CHAR | |
| 26 movl OPENSSL_ia32cap_P(%rip),%r8d | |
| 27 xorq %rbx,%rbx | |
| 28 incb %r10b | |
| 29 subq %r10,%rbx | |
| 30 subq %r12,%r13 | |
| 31 movl (%rdi,%r10,4),%eax | |
| 32 testq $-16,%r11 | |
| 33 jz .Lloop1 | |
| 34 btl $30,%r8d | |
| 35 jc .Lintel | |
| 36 andq $7,%rbx | |
| 37 leaq 1(%r10),%rsi | |
| 38 jz .Loop8 | |
| 39 subq %rbx,%r11 | |
| 40 .Loop8_warmup: | |
| 41 addb %al,%cl | |
| 42 movl (%rdi,%rcx,4),%edx | |
| 43 movl %eax,(%rdi,%rcx,4) | |
| 44 movl %edx,(%rdi,%r10,4) | |
| 45 addb %dl,%al | |
| 46 incb %r10b | |
| 47 movl (%rdi,%rax,4),%edx | |
| 48 movl (%rdi,%r10,4),%eax | |
| 49 xorb (%r12),%dl | |
| 50 movb %dl,(%r13,%r12,1) | |
| 51 leaq 1(%r12),%r12 | |
| 52 decq %rbx | |
| 53 jnz .Loop8_warmup | |
| 54 | |
| 55 leaq 1(%r10),%rsi | |
| 56 jmp .Loop8 | |
| 57 .align 16 | |
| 58 .Loop8: | |
| 59 addb %al,%cl | |
| 60 movl (%rdi,%rcx,4),%edx | |
| 61 movl %eax,(%rdi,%rcx,4) | |
| 62 movl 0(%rdi,%rsi,4),%ebx | |
| 63 rorq $8,%r8 | |
| 64 movl %edx,0(%rdi,%r10,4) | |
| 65 addb %al,%dl | |
| 66 movb (%rdi,%rdx,4),%r8b | |
| 67 addb %bl,%cl | |
| 68 movl (%rdi,%rcx,4),%edx | |
| 69 movl %ebx,(%rdi,%rcx,4) | |
| 70 movl 4(%rdi,%rsi,4),%eax | |
| 71 rorq $8,%r8 | |
| 72 movl %edx,4(%rdi,%r10,4) | |
| 73 addb %bl,%dl | |
| 74 movb (%rdi,%rdx,4),%r8b | |
| 75 addb %al,%cl | |
| 76 movl (%rdi,%rcx,4),%edx | |
| 77 movl %eax,(%rdi,%rcx,4) | |
| 78 movl 8(%rdi,%rsi,4),%ebx | |
| 79 rorq $8,%r8 | |
| 80 movl %edx,8(%rdi,%r10,4) | |
| 81 addb %al,%dl | |
| 82 movb (%rdi,%rdx,4),%r8b | |
| 83 addb %bl,%cl | |
| 84 movl (%rdi,%rcx,4),%edx | |
| 85 movl %ebx,(%rdi,%rcx,4) | |
| 86 movl 12(%rdi,%rsi,4),%eax | |
| 87 rorq $8,%r8 | |
| 88 movl %edx,12(%rdi,%r10,4) | |
| 89 addb %bl,%dl | |
| 90 movb (%rdi,%rdx,4),%r8b | |
| 91 addb %al,%cl | |
| 92 movl (%rdi,%rcx,4),%edx | |
| 93 movl %eax,(%rdi,%rcx,4) | |
| 94 movl 16(%rdi,%rsi,4),%ebx | |
| 95 rorq $8,%r8 | |
| 96 movl %edx,16(%rdi,%r10,4) | |
| 97 addb %al,%dl | |
| 98 movb (%rdi,%rdx,4),%r8b | |
| 99 addb %bl,%cl | |
| 100 movl (%rdi,%rcx,4),%edx | |
| 101 movl %ebx,(%rdi,%rcx,4) | |
| 102 movl 20(%rdi,%rsi,4),%eax | |
| 103 rorq $8,%r8 | |
| 104 movl %edx,20(%rdi,%r10,4) | |
| 105 addb %bl,%dl | |
| 106 movb (%rdi,%rdx,4),%r8b | |
| 107 addb %al,%cl | |
| 108 movl (%rdi,%rcx,4),%edx | |
| 109 movl %eax,(%rdi,%rcx,4) | |
| 110 movl 24(%rdi,%rsi,4),%ebx | |
| 111 rorq $8,%r8 | |
| 112 movl %edx,24(%rdi,%r10,4) | |
| 113 addb %al,%dl | |
| 114 movb (%rdi,%rdx,4),%r8b | |
| 115 addb $8,%sil | |
| 116 addb %bl,%cl | |
| 117 movl (%rdi,%rcx,4),%edx | |
| 118 movl %ebx,(%rdi,%rcx,4) | |
| 119 movl -4(%rdi,%rsi,4),%eax | |
| 120 rorq $8,%r8 | |
| 121 movl %edx,28(%rdi,%r10,4) | |
| 122 addb %bl,%dl | |
| 123 movb (%rdi,%rdx,4),%r8b | |
| 124 addb $8,%r10b | |
| 125 rorq $8,%r8 | |
| 126 subq $8,%r11 | |
| 127 | |
| 128 xorq (%r12),%r8 | |
| 129 movq %r8,(%r13,%r12,1) | |
| 130 leaq 8(%r12),%r12 | |
| 131 | |
| 132 testq $-8,%r11 | |
| 133 jnz .Loop8 | |
| 134 cmpq $0,%r11 | |
| 135 jne .Lloop1 | |
| 136 jmp .Lexit | |
| 137 | |
| 138 .align 16 | |
| 139 .Lintel: | |
| 140 testq $-32,%r11 | |
| 141 jz .Lloop1 | |
| 142 andq $15,%rbx | |
| 143 jz .Loop16_is_hot | |
| 144 subq %rbx,%r11 | |
| 145 .Loop16_warmup: | |
| 146 addb %al,%cl | |
| 147 movl (%rdi,%rcx,4),%edx | |
| 148 movl %eax,(%rdi,%rcx,4) | |
| 149 movl %edx,(%rdi,%r10,4) | |
| 150 addb %dl,%al | |
| 151 incb %r10b | |
| 152 movl (%rdi,%rax,4),%edx | |
| 153 movl (%rdi,%r10,4),%eax | |
| 154 xorb (%r12),%dl | |
| 155 movb %dl,(%r13,%r12,1) | |
| 156 leaq 1(%r12),%r12 | |
| 157 decq %rbx | |
| 158 jnz .Loop16_warmup | |
| 159 | |
| 160 movq %rcx,%rbx | |
| 161 xorq %rcx,%rcx | |
| 162 movb %bl,%cl | |
| 163 | |
| 164 .Loop16_is_hot: | |
| 165 leaq (%rdi,%r10,4),%rsi | |
| 166 addb %al,%cl | |
| 167 movl (%rdi,%rcx,4),%edx | |
| 168 pxor %xmm0,%xmm0 | |
| 169 movl %eax,(%rdi,%rcx,4) | |
| 170 addb %dl,%al | |
| 171 movl 4(%rsi),%ebx | |
| 172 movzbl %al,%eax | |
| 173 movl %edx,0(%rsi) | |
| 174 addb %bl,%cl | |
| 175 pinsrw $0,(%rdi,%rax,4),%xmm0 | |
| 176 jmp .Loop16_enter | |
| 177 .align 16 | |
| 178 .Loop16: | |
| 179 addb %al,%cl | |
| 180 movl (%rdi,%rcx,4),%edx | |
| 181 pxor %xmm0,%xmm2 | |
| 182 psllq $8,%xmm1 | |
| 183 pxor %xmm0,%xmm0 | |
| 184 movl %eax,(%rdi,%rcx,4) | |
| 185 addb %dl,%al | |
| 186 movl 4(%rsi),%ebx | |
| 187 movzbl %al,%eax | |
| 188 movl %edx,0(%rsi) | |
| 189 pxor %xmm1,%xmm2 | |
| 190 addb %bl,%cl | |
| 191 pinsrw $0,(%rdi,%rax,4),%xmm0 | |
| 192 movdqu %xmm2,(%r13,%r12,1) | |
| 193 leaq 16(%r12),%r12 | |
| 194 .Loop16_enter: | |
| 195 movl (%rdi,%rcx,4),%edx | |
| 196 pxor %xmm1,%xmm1 | |
| 197 movl %ebx,(%rdi,%rcx,4) | |
| 198 addb %dl,%bl | |
| 199 movl 8(%rsi),%eax | |
| 200 movzbl %bl,%ebx | |
| 201 movl %edx,4(%rsi) | |
| 202 addb %al,%cl | |
| 203 pinsrw $0,(%rdi,%rbx,4),%xmm1 | |
| 204 movl (%rdi,%rcx,4),%edx | |
| 205 movl %eax,(%rdi,%rcx,4) | |
| 206 addb %dl,%al | |
| 207 movl 12(%rsi),%ebx | |
| 208 movzbl %al,%eax | |
| 209 movl %edx,8(%rsi) | |
| 210 addb %bl,%cl | |
| 211 pinsrw $1,(%rdi,%rax,4),%xmm0 | |
| 212 movl (%rdi,%rcx,4),%edx | |
| 213 movl %ebx,(%rdi,%rcx,4) | |
| 214 addb %dl,%bl | |
| 215 movl 16(%rsi),%eax | |
| 216 movzbl %bl,%ebx | |
| 217 movl %edx,12(%rsi) | |
| 218 addb %al,%cl | |
| 219 pinsrw $1,(%rdi,%rbx,4),%xmm1 | |
| 220 movl (%rdi,%rcx,4),%edx | |
| 221 movl %eax,(%rdi,%rcx,4) | |
| 222 addb %dl,%al | |
| 223 movl 20(%rsi),%ebx | |
| 224 movzbl %al,%eax | |
| 225 movl %edx,16(%rsi) | |
| 226 addb %bl,%cl | |
| 227 pinsrw $2,(%rdi,%rax,4),%xmm0 | |
| 228 movl (%rdi,%rcx,4),%edx | |
| 229 movl %ebx,(%rdi,%rcx,4) | |
| 230 addb %dl,%bl | |
| 231 movl 24(%rsi),%eax | |
| 232 movzbl %bl,%ebx | |
| 233 movl %edx,20(%rsi) | |
| 234 addb %al,%cl | |
| 235 pinsrw $2,(%rdi,%rbx,4),%xmm1 | |
| 236 movl (%rdi,%rcx,4),%edx | |
| 237 movl %eax,(%rdi,%rcx,4) | |
| 238 addb %dl,%al | |
| 239 movl 28(%rsi),%ebx | |
| 240 movzbl %al,%eax | |
| 241 movl %edx,24(%rsi) | |
| 242 addb %bl,%cl | |
| 243 pinsrw $3,(%rdi,%rax,4),%xmm0 | |
| 244 movl (%rdi,%rcx,4),%edx | |
| 245 movl %ebx,(%rdi,%rcx,4) | |
| 246 addb %dl,%bl | |
| 247 movl 32(%rsi),%eax | |
| 248 movzbl %bl,%ebx | |
| 249 movl %edx,28(%rsi) | |
| 250 addb %al,%cl | |
| 251 pinsrw $3,(%rdi,%rbx,4),%xmm1 | |
| 252 movl (%rdi,%rcx,4),%edx | |
| 253 movl %eax,(%rdi,%rcx,4) | |
| 254 addb %dl,%al | |
| 255 movl 36(%rsi),%ebx | |
| 256 movzbl %al,%eax | |
| 257 movl %edx,32(%rsi) | |
| 258 addb %bl,%cl | |
| 259 pinsrw $4,(%rdi,%rax,4),%xmm0 | |
| 260 movl (%rdi,%rcx,4),%edx | |
| 261 movl %ebx,(%rdi,%rcx,4) | |
| 262 addb %dl,%bl | |
| 263 movl 40(%rsi),%eax | |
| 264 movzbl %bl,%ebx | |
| 265 movl %edx,36(%rsi) | |
| 266 addb %al,%cl | |
| 267 pinsrw $4,(%rdi,%rbx,4),%xmm1 | |
| 268 movl (%rdi,%rcx,4),%edx | |
| 269 movl %eax,(%rdi,%rcx,4) | |
| 270 addb %dl,%al | |
| 271 movl 44(%rsi),%ebx | |
| 272 movzbl %al,%eax | |
| 273 movl %edx,40(%rsi) | |
| 274 addb %bl,%cl | |
| 275 pinsrw $5,(%rdi,%rax,4),%xmm0 | |
| 276 movl (%rdi,%rcx,4),%edx | |
| 277 movl %ebx,(%rdi,%rcx,4) | |
| 278 addb %dl,%bl | |
| 279 movl 48(%rsi),%eax | |
| 280 movzbl %bl,%ebx | |
| 281 movl %edx,44(%rsi) | |
| 282 addb %al,%cl | |
| 283 pinsrw $5,(%rdi,%rbx,4),%xmm1 | |
| 284 movl (%rdi,%rcx,4),%edx | |
| 285 movl %eax,(%rdi,%rcx,4) | |
| 286 addb %dl,%al | |
| 287 movl 52(%rsi),%ebx | |
| 288 movzbl %al,%eax | |
| 289 movl %edx,48(%rsi) | |
| 290 addb %bl,%cl | |
| 291 pinsrw $6,(%rdi,%rax,4),%xmm0 | |
| 292 movl (%rdi,%rcx,4),%edx | |
| 293 movl %ebx,(%rdi,%rcx,4) | |
| 294 addb %dl,%bl | |
| 295 movl 56(%rsi),%eax | |
| 296 movzbl %bl,%ebx | |
| 297 movl %edx,52(%rsi) | |
| 298 addb %al,%cl | |
| 299 pinsrw $6,(%rdi,%rbx,4),%xmm1 | |
| 300 movl (%rdi,%rcx,4),%edx | |
| 301 movl %eax,(%rdi,%rcx,4) | |
| 302 addb %dl,%al | |
| 303 movl 60(%rsi),%ebx | |
| 304 movzbl %al,%eax | |
| 305 movl %edx,56(%rsi) | |
| 306 addb %bl,%cl | |
| 307 pinsrw $7,(%rdi,%rax,4),%xmm0 | |
| 308 addb $16,%r10b | |
| 309 movdqu (%r12),%xmm2 | |
| 310 movl (%rdi,%rcx,4),%edx | |
| 311 movl %ebx,(%rdi,%rcx,4) | |
| 312 addb %dl,%bl | |
| 313 movzbl %bl,%ebx | |
| 314 movl %edx,60(%rsi) | |
| 315 leaq (%rdi,%r10,4),%rsi | |
| 316 pinsrw $7,(%rdi,%rbx,4),%xmm1 | |
| 317 movl (%rsi),%eax | |
| 318 movq %rcx,%rbx | |
| 319 xorq %rcx,%rcx | |
| 320 subq $16,%r11 | |
| 321 movb %bl,%cl | |
| 322 testq $-16,%r11 | |
| 323 jnz .Loop16 | |
| 324 | |
| 325 psllq $8,%xmm1 | |
| 326 pxor %xmm0,%xmm2 | |
| 327 pxor %xmm1,%xmm2 | |
| 328 movdqu %xmm2,(%r13,%r12,1) | |
| 329 leaq 16(%r12),%r12 | |
| 330 | |
| 331 cmpq $0,%r11 | |
| 332 jne .Lloop1 | |
| 333 jmp .Lexit | |
| 334 | |
| 335 .align 16 | |
| 336 .Lloop1: | |
| 337 addb %al,%cl | |
| 338 movl (%rdi,%rcx,4),%edx | |
| 339 movl %eax,(%rdi,%rcx,4) | |
| 340 movl %edx,(%rdi,%r10,4) | |
| 341 addb %dl,%al | |
| 342 incb %r10b | |
| 343 movl (%rdi,%rax,4),%edx | |
| 344 movl (%rdi,%r10,4),%eax | |
| 345 xorb (%r12),%dl | |
| 346 movb %dl,(%r13,%r12,1) | |
| 347 leaq 1(%r12),%r12 | |
| 348 decq %r11 | |
| 349 jnz .Lloop1 | |
| 350 jmp .Lexit | |
| 351 | |
| 352 .align 16 | |
| 353 .LRC4_CHAR: | |
| 354 addb $1,%r10b | |
| 355 movzbl (%rdi,%r10,1),%eax | |
| 356 testq $-8,%r11 | |
| 357 jz .Lcloop1 | |
| 358 jmp .Lcloop8 | |
| 359 .align 16 | |
| 360 .Lcloop8: | |
| 361 movl (%r12),%r8d | |
| 362 movl 4(%r12),%r9d | |
| 363 addb %al,%cl | |
| 364 leaq 1(%r10),%rsi | |
| 365 movzbl (%rdi,%rcx,1),%edx | |
| 366 movzbl %sil,%esi | |
| 367 movzbl (%rdi,%rsi,1),%ebx | |
| 368 movb %al,(%rdi,%rcx,1) | |
| 369 cmpq %rsi,%rcx | |
| 370 movb %dl,(%rdi,%r10,1) | |
| 371 jne .Lcmov0 | |
| 372 movq %rax,%rbx | |
| 373 .Lcmov0: | |
| 374 addb %al,%dl | |
| 375 xorb (%rdi,%rdx,1),%r8b | |
| 376 rorl $8,%r8d | |
| 377 addb %bl,%cl | |
| 378 leaq 1(%rsi),%r10 | |
| 379 movzbl (%rdi,%rcx,1),%edx | |
| 380 movzbl %r10b,%r10d | |
| 381 movzbl (%rdi,%r10,1),%eax | |
| 382 movb %bl,(%rdi,%rcx,1) | |
| 383 cmpq %r10,%rcx | |
| 384 movb %dl,(%rdi,%rsi,1) | |
| 385 jne .Lcmov1 | |
| 386 movq %rbx,%rax | |
| 387 .Lcmov1: | |
| 388 addb %bl,%dl | |
| 389 xorb (%rdi,%rdx,1),%r8b | |
| 390 rorl $8,%r8d | |
| 391 addb %al,%cl | |
| 392 leaq 1(%r10),%rsi | |
| 393 movzbl (%rdi,%rcx,1),%edx | |
| 394 movzbl %sil,%esi | |
| 395 movzbl (%rdi,%rsi,1),%ebx | |
| 396 movb %al,(%rdi,%rcx,1) | |
| 397 cmpq %rsi,%rcx | |
| 398 movb %dl,(%rdi,%r10,1) | |
| 399 jne .Lcmov2 | |
| 400 movq %rax,%rbx | |
| 401 .Lcmov2: | |
| 402 addb %al,%dl | |
| 403 xorb (%rdi,%rdx,1),%r8b | |
| 404 rorl $8,%r8d | |
| 405 addb %bl,%cl | |
| 406 leaq 1(%rsi),%r10 | |
| 407 movzbl (%rdi,%rcx,1),%edx | |
| 408 movzbl %r10b,%r10d | |
| 409 movzbl (%rdi,%r10,1),%eax | |
| 410 movb %bl,(%rdi,%rcx,1) | |
| 411 cmpq %r10,%rcx | |
| 412 movb %dl,(%rdi,%rsi,1) | |
| 413 jne .Lcmov3 | |
| 414 movq %rbx,%rax | |
| 415 .Lcmov3: | |
| 416 addb %bl,%dl | |
| 417 xorb (%rdi,%rdx,1),%r8b | |
| 418 rorl $8,%r8d | |
| 419 addb %al,%cl | |
| 420 leaq 1(%r10),%rsi | |
| 421 movzbl (%rdi,%rcx,1),%edx | |
| 422 movzbl %sil,%esi | |
| 423 movzbl (%rdi,%rsi,1),%ebx | |
| 424 movb %al,(%rdi,%rcx,1) | |
| 425 cmpq %rsi,%rcx | |
| 426 movb %dl,(%rdi,%r10,1) | |
| 427 jne .Lcmov4 | |
| 428 movq %rax,%rbx | |
| 429 .Lcmov4: | |
| 430 addb %al,%dl | |
| 431 xorb (%rdi,%rdx,1),%r9b | |
| 432 rorl $8,%r9d | |
| 433 addb %bl,%cl | |
| 434 leaq 1(%rsi),%r10 | |
| 435 movzbl (%rdi,%rcx,1),%edx | |
| 436 movzbl %r10b,%r10d | |
| 437 movzbl (%rdi,%r10,1),%eax | |
| 438 movb %bl,(%rdi,%rcx,1) | |
| 439 cmpq %r10,%rcx | |
| 440 movb %dl,(%rdi,%rsi,1) | |
| 441 jne .Lcmov5 | |
| 442 movq %rbx,%rax | |
| 443 .Lcmov5: | |
| 444 addb %bl,%dl | |
| 445 xorb (%rdi,%rdx,1),%r9b | |
| 446 rorl $8,%r9d | |
| 447 addb %al,%cl | |
| 448 leaq 1(%r10),%rsi | |
| 449 movzbl (%rdi,%rcx,1),%edx | |
| 450 movzbl %sil,%esi | |
| 451 movzbl (%rdi,%rsi,1),%ebx | |
| 452 movb %al,(%rdi,%rcx,1) | |
| 453 cmpq %rsi,%rcx | |
| 454 movb %dl,(%rdi,%r10,1) | |
| 455 jne .Lcmov6 | |
| 456 movq %rax,%rbx | |
| 457 .Lcmov6: | |
| 458 addb %al,%dl | |
| 459 xorb (%rdi,%rdx,1),%r9b | |
| 460 rorl $8,%r9d | |
| 461 addb %bl,%cl | |
| 462 leaq 1(%rsi),%r10 | |
| 463 movzbl (%rdi,%rcx,1),%edx | |
| 464 movzbl %r10b,%r10d | |
| 465 movzbl (%rdi,%r10,1),%eax | |
| 466 movb %bl,(%rdi,%rcx,1) | |
| 467 cmpq %r10,%rcx | |
| 468 movb %dl,(%rdi,%rsi,1) | |
| 469 jne .Lcmov7 | |
| 470 movq %rbx,%rax | |
| 471 .Lcmov7: | |
| 472 addb %bl,%dl | |
| 473 xorb (%rdi,%rdx,1),%r9b | |
| 474 rorl $8,%r9d | |
| 475 leaq -8(%r11),%r11 | |
| 476 movl %r8d,(%r13) | |
| 477 leaq 8(%r12),%r12 | |
| 478 movl %r9d,4(%r13) | |
| 479 leaq 8(%r13),%r13 | |
| 480 | |
| 481 testq $-8,%r11 | |
| 482 jnz .Lcloop8 | |
| 483 cmpq $0,%r11 | |
| 484 jne .Lcloop1 | |
| 485 jmp .Lexit | |
| 486 .align 16 | |
| 487 .Lcloop1: | |
| 488 addb %al,%cl | |
| 489 movzbl %cl,%ecx | |
| 490 movzbl (%rdi,%rcx,1),%edx | |
| 491 movb %al,(%rdi,%rcx,1) | |
| 492 movb %dl,(%rdi,%r10,1) | |
| 493 addb %al,%dl | |
| 494 addb $1,%r10b | |
| 495 movzbl %dl,%edx | |
| 496 movzbl %r10b,%r10d | |
| 497 movzbl (%rdi,%rdx,1),%edx | |
| 498 movzbl (%rdi,%r10,1),%eax | |
| 499 xorb (%r12),%dl | |
| 500 leaq 1(%r12),%r12 | |
| 501 movb %dl,(%r13) | |
| 502 leaq 1(%r13),%r13 | |
| 503 subq $1,%r11 | |
| 504 jnz .Lcloop1 | |
| 505 jmp .Lexit | |
| 506 | |
| 507 .align 16 | |
| 508 .Lexit: | |
| 509 subb $1,%r10b | |
| 510 movl %r10d,-8(%rdi) | |
| 511 movl %ecx,-4(%rdi) | |
| 512 | |
| 513 movq (%rsp),%r13 | |
| 514 movq 8(%rsp),%r12 | |
| 515 movq 16(%rsp),%rbx | |
| 516 addq $24,%rsp | |
| 517 .Lepilogue: | |
| 518 .byte 0xf3,0xc3 | |
| 519 .size RC4,.-RC4 | |
| 520 .globl private_RC4_set_key | |
| 521 .type private_RC4_set_key,@function | |
| 522 .align 16 | |
| 523 private_RC4_set_key: | |
| 524 leaq 8(%rdi),%rdi | |
| 525 leaq (%rdx,%rsi,1),%rdx | |
| 526 negq %rsi | |
| 527 movq %rsi,%rcx | |
| 528 xorl %eax,%eax | |
| 529 xorq %r9,%r9 | |
| 530 xorq %r10,%r10 | |
| 531 xorq %r11,%r11 | |
| 532 | |
| 533 movl OPENSSL_ia32cap_P(%rip),%r8d | |
| 534 btl $20,%r8d | |
| 535 jc .Lc1stloop | |
| 536 jmp .Lw1stloop | |
| 537 | |
| 538 .align 16 | |
| 539 .Lw1stloop: | |
| 540 movl %eax,(%rdi,%rax,4) | |
| 541 addb $1,%al | |
| 542 jnc .Lw1stloop | |
| 543 | |
| 544 xorq %r9,%r9 | |
| 545 xorq %r8,%r8 | |
| 546 .align 16 | |
| 547 .Lw2ndloop: | |
| 548 movl (%rdi,%r9,4),%r10d | |
| 549 addb (%rdx,%rsi,1),%r8b | |
| 550 addb %r10b,%r8b | |
| 551 addq $1,%rsi | |
| 552 movl (%rdi,%r8,4),%r11d | |
| 553 cmovzq %rcx,%rsi | |
| 554 movl %r10d,(%rdi,%r8,4) | |
| 555 movl %r11d,(%rdi,%r9,4) | |
| 556 addb $1,%r9b | |
| 557 jnc .Lw2ndloop | |
| 558 jmp .Lexit_key | |
| 559 | |
| 560 .align 16 | |
| 561 .Lc1stloop: | |
| 562 movb %al,(%rdi,%rax,1) | |
| 563 addb $1,%al | |
| 564 jnc .Lc1stloop | |
| 565 | |
| 566 xorq %r9,%r9 | |
| 567 xorq %r8,%r8 | |
| 568 .align 16 | |
| 569 .Lc2ndloop: | |
| 570 movb (%rdi,%r9,1),%r10b | |
| 571 addb (%rdx,%rsi,1),%r8b | |
| 572 addb %r10b,%r8b | |
| 573 addq $1,%rsi | |
| 574 movb (%rdi,%r8,1),%r11b | |
| 575 jnz .Lcnowrap | |
| 576 movq %rcx,%rsi | |
| 577 .Lcnowrap: | |
| 578 movb %r10b,(%rdi,%r8,1) | |
| 579 movb %r11b,(%rdi,%r9,1) | |
| 580 addb $1,%r9b | |
| 581 jnc .Lc2ndloop | |
| 582 movl $-1,256(%rdi) | |
| 583 | |
| 584 .align 16 | |
| 585 .Lexit_key: | |
| 586 xorl %eax,%eax | |
| 587 movl %eax,-8(%rdi) | |
| 588 movl %eax,-4(%rdi) | |
| 589 .byte 0xf3,0xc3 | |
| 590 .size private_RC4_set_key,.-private_RC4_set_key | |
| 591 | |
| 592 .globl RC4_options | |
| 593 .type RC4_options,@function | |
| 594 .align 16 | |
| 595 RC4_options: | |
| 596 leaq .Lopts(%rip),%rax | |
| 597 movl OPENSSL_ia32cap_P(%rip),%edx | |
| 598 btl $20,%edx | |
| 599 jc .L8xchar | |
| 600 btl $30,%edx | |
| 601 jnc .Ldone | |
| 602 addq $25,%rax | |
| 603 .byte 0xf3,0xc3 | |
| 604 .L8xchar: | |
| 605 addq $12,%rax | |
| 606 .Ldone: | |
| 607 .byte 0xf3,0xc3 | |
| 608 .align 64 | |
| 609 .Lopts: | |
| 610 .byte 114,99,52,40,56,120,44,105,110,116,41,0 | |
| 611 .byte 114,99,52,40,56,120,44,99,104,97,114,41,0 | |
| 612 .byte 114,99,52,40,49,54,120,44,105,110,116,41,0 | |
| 613 .byte 82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,1
11,114,103,62,0 | |
| 614 .align 64 | |
| 615 .size RC4_options,.-RC4_options | |
| OLD | NEW |