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