Home | History | Annotate | Download | only in asm
      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,111,114,103,62,0
    614 .align	64
    615 .size	RC4_options,.-RC4_options
    616