120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.text
220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	RC4
520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	RC4,@function
620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerRC4:	orq	%rsi,%rsi
820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lentry
920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
1020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lentry:
1120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pushq	%rbx
1220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pushq	%r12
1320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pushq	%r13
1420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lprologue:
1520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rsi,%r11
1620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rdx,%r12
1720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rcx,%r13
1820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r10,%r10
1920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rcx,%rcx
2020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
2120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%rdi),%rdi
2220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	-8(%rdi),%r10b
2320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	-4(%rdi),%cl
2420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$-1,256(%rdi)
2520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	je	.LRC4_CHAR
2620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	OPENSSL_ia32cap_P(%rip),%r8d
2720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rbx,%rbx
2820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	incb	%r10b
2920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	%r10,%rbx
3020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	%r12,%r13
3120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%r10,4),%eax
3220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-16,%r11
3320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Lloop1
3420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$30,%r8d
3520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jc	.Lintel
3620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andq	$7,%rbx
3720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r10),%rsi
3820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Loop8
3920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	%rbx,%r11
4020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop8_warmup:
4120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
4220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
4320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
4420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,(%rdi,%r10,4)
4520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
4620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	incb	%r10b
4720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rax,4),%edx
4820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%r10,4),%eax
4920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%r12),%dl
5020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%r13,%r12,1)
5120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r12),%r12
5220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	decq	%rbx
5320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Loop8_warmup
5420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
5520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r10),%rsi
5620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Loop8
5720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
5820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop8:
5920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
6020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
6120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
6220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	0(%rdi,%rsi,4),%ebx
6320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
6420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,0(%rdi,%r10,4)
6520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
6620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
6720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
6820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
6920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
7020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	4(%rdi,%rsi,4),%eax
7120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
7220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,4(%rdi,%r10,4)
7320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
7420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
7520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
7620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
7720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
7820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	8(%rdi,%rsi,4),%ebx
7920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
8020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,8(%rdi,%r10,4)
8120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
8220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
8320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
8420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
8520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
8620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	12(%rdi,%rsi,4),%eax
8720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
8820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,12(%rdi,%r10,4)
8920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
9020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
9120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
9220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
9320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
9420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	16(%rdi,%rsi,4),%ebx
9520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
9620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,16(%rdi,%r10,4)
9720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
9820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
9920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
10020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
10120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
10220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	20(%rdi,%rsi,4),%eax
10320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
10420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,20(%rdi,%r10,4)
10520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
10620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
10720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
10820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
10920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
11020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	24(%rdi,%rsi,4),%ebx
11120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
11220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,24(%rdi,%r10,4)
11320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
11420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
11520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$8,%sil
11620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
11720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
11820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
11920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	-4(%rdi,%rsi,4),%eax
12020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
12120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,28(%rdi,%r10,4)
12220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
12320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%rdx,4),%r8b
12420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$8,%r10b
12520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorq	$8,%r8
12620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	$8,%r11
12720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
12820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	(%r12),%r8
12920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%r8,(%r13,%r12,1)
13020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%r12),%r12
13120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
13220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-8,%r11
13320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Loop8
13420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$0,%r11
13520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lloop1
13620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lexit
13720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
13820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
13920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lintel:
14020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-32,%r11
14120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Lloop1
14220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andq	$15,%rbx
14320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Loop16_is_hot
14420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	%rbx,%r11
14520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop16_warmup:
14620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
14720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
14820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
14920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,(%rdi,%r10,4)
15020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
15120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	incb	%r10b
15220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rax,4),%edx
15320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%r10,4),%eax
15420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%r12),%dl
15520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%r13,%r12,1)
15620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r12),%r12
15720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	decq	%rbx
15820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Loop16_warmup
15920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
16020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rcx,%rbx
16120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rcx,%rcx
16220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%bl,%cl
16320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
16420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop16_is_hot:
16520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	(%rdi,%r10,4),%rsi
16620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
16720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
16820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm0,%xmm0
16920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
17020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
17120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	4(%rsi),%ebx
17220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
17320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,0(%rsi)
17420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
17520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$0,(%rdi,%rax,4),%xmm0
17620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Loop16_enter
17720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
17820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop16:
17920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
18020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
18120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm0,%xmm2
18220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	psllq	$8,%xmm1
18320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm0,%xmm0
18420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
18520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
18620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	4(%rsi),%ebx
18720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
18820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,0(%rsi)
18920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm1,%xmm2
19020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
19120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$0,(%rdi,%rax,4),%xmm0
19220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movdqu	%xmm2,(%r13,%r12,1)
19320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	16(%r12),%r12
19420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop16_enter:
19520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
19620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm1,%xmm1
19720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
19820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
19920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	8(%rsi),%eax
20020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
20120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,4(%rsi)
20220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
20320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$0,(%rdi,%rbx,4),%xmm1
20420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
20520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
20620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
20720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	12(%rsi),%ebx
20820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
20920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,8(%rsi)
21020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
21120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$1,(%rdi,%rax,4),%xmm0
21220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
21320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
21420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
21520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	16(%rsi),%eax
21620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
21720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,12(%rsi)
21820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
21920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$1,(%rdi,%rbx,4),%xmm1
22020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
22120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
22220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
22320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	20(%rsi),%ebx
22420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
22520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,16(%rsi)
22620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
22720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$2,(%rdi,%rax,4),%xmm0
22820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
22920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
23020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
23120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	24(%rsi),%eax
23220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
23320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,20(%rsi)
23420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
23520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$2,(%rdi,%rbx,4),%xmm1
23620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
23720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
23820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
23920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	28(%rsi),%ebx
24020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
24120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,24(%rsi)
24220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
24320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$3,(%rdi,%rax,4),%xmm0
24420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
24520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
24620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
24720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	32(%rsi),%eax
24820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
24920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,28(%rsi)
25020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
25120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$3,(%rdi,%rbx,4),%xmm1
25220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
25320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
25420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
25520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	36(%rsi),%ebx
25620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
25720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,32(%rsi)
25820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
25920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$4,(%rdi,%rax,4),%xmm0
26020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
26120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
26220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
26320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	40(%rsi),%eax
26420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
26520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,36(%rsi)
26620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
26720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$4,(%rdi,%rbx,4),%xmm1
26820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
26920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
27020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
27120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	44(%rsi),%ebx
27220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
27320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,40(%rsi)
27420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
27520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$5,(%rdi,%rax,4),%xmm0
27620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
27720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
27820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
27920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	48(%rsi),%eax
28020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
28120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,44(%rsi)
28220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
28320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$5,(%rdi,%rbx,4),%xmm1
28420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
28520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
28620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
28720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	52(%rsi),%ebx
28820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
28920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,48(%rsi)
29020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
29120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$6,(%rdi,%rax,4),%xmm0
29220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
29320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
29420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
29520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	56(%rsi),%eax
29620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
29720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,52(%rsi)
29820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
29920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$6,(%rdi,%rbx,4),%xmm1
30020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
30120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
30220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
30320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	60(%rsi),%ebx
30420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%al,%eax
30520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,56(%rsi)
30620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
30720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$7,(%rdi,%rax,4),%xmm0
30820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$16,%r10b
30920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movdqu	(%r12),%xmm2
31020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
31120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ebx,(%rdi,%rcx,4)
31220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%bl
31320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%bl,%ebx
31420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,60(%rsi)
31520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	(%rdi,%r10,4),%rsi
31620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pinsrw	$7,(%rdi,%rbx,4),%xmm1
31720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rsi),%eax
31820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rcx,%rbx
31920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rcx,%rcx
32020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	$16,%r11
32120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%bl,%cl
32220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-16,%r11
32320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Loop16
32420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
32520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	psllq	$8,%xmm1
32620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm0,%xmm2
32720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm1,%xmm2
32820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movdqu	%xmm2,(%r13,%r12,1)
32920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	16(%r12),%r12
33020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
33120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$0,%r11
33220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lloop1
33320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lexit
33420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
33520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
33620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lloop1:
33720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
33820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rcx,4),%edx
33920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rcx,4)
34020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,(%rdi,%r10,4)
34120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%dl,%al
34220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	incb	%r10b
34320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%rax,4),%edx
34420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%r10,4),%eax
34520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%r12),%dl
34620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%r13,%r12,1)
34720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r12),%r12
34820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	decq	%r11
34920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Lloop1
35020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lexit
35120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
35220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
35320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.LRC4_CHAR:
35420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$1,%r10b
35520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%r10,1),%eax
35620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-8,%r11
35720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Lcloop1
35820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lcloop8
35920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
36020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcloop8:
36120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%r12),%r8d
36220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	4(%r12),%r9d
36320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
36420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r10),%rsi
36520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
36620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%sil,%esi
36720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rsi,1),%ebx
36820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi,%rcx,1)
36920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%rsi,%rcx
37020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%r10,1)
37120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov0
37220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rax,%rbx
37320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov0:
37420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
37520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r8b
37620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r8d
37720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
37820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%rsi),%r10
37920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
38020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%r10b,%r10d
38120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%r10,1),%eax
38220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%bl,(%rdi,%rcx,1)
38320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%r10,%rcx
38420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%rsi,1)
38520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov1
38620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rbx,%rax
38720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov1:
38820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
38920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r8b
39020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r8d
39120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
39220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r10),%rsi
39320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
39420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%sil,%esi
39520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rsi,1),%ebx
39620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi,%rcx,1)
39720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%rsi,%rcx
39820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%r10,1)
39920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov2
40020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rax,%rbx
40120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov2:
40220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
40320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r8b
40420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r8d
40520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
40620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%rsi),%r10
40720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
40820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%r10b,%r10d
40920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%r10,1),%eax
41020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%bl,(%rdi,%rcx,1)
41120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%r10,%rcx
41220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%rsi,1)
41320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov3
41420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rbx,%rax
41520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov3:
41620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
41720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r8b
41820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r8d
41920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
42020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r10),%rsi
42120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
42220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%sil,%esi
42320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rsi,1),%ebx
42420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi,%rcx,1)
42520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%rsi,%rcx
42620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%r10,1)
42720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov4
42820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rax,%rbx
42920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov4:
43020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
43120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r9b
43220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r9d
43320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
43420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%rsi),%r10
43520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
43620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%r10b,%r10d
43720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%r10,1),%eax
43820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%bl,(%rdi,%rcx,1)
43920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%r10,%rcx
44020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%rsi,1)
44120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov5
44220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rbx,%rax
44320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov5:
44420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
44520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r9b
44620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r9d
44720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
44820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r10),%rsi
44920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
45020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%sil,%esi
45120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rsi,1),%ebx
45220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi,%rcx,1)
45320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%rsi,%rcx
45420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%r10,1)
45520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov6
45620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rax,%rbx
45720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov6:
45820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
45920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r9b
46020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r9d
46120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%cl
46220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%rsi),%r10
46320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
46420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%r10b,%r10d
46520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%r10,1),%eax
46620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%bl,(%rdi,%rcx,1)
46720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	%r10,%rcx
46820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%rsi,1)
46920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcmov7
47020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rbx,%rax
47120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcmov7:
47220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%bl,%dl
47320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%rdi,%rdx,1),%r9b
47420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rorl	$8,%r9d
47520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	-8(%r11),%r11
47620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r8d,(%r13)
47720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%r12),%r12
47820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r9d,4(%r13)
47920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%r13),%r13
48020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
48120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-8,%r11
48220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Lcloop8
48320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$0,%r11
48420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lcloop1
48520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lexit
48620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
48720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcloop1:
48820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%cl
48920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%cl,%ecx
49020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rcx,1),%edx
49120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi,%rcx,1)
49220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%rdi,%r10,1)
49320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%al,%dl
49420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$1,%r10b
49520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%dl,%edx
49620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	%r10b,%r10d
49720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%rdx,1),%edx
49820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbl	(%rdi,%r10,1),%eax
49920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorb	(%r12),%dl
50020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r12),%r12
50120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%dl,(%r13)
50220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%r13),%r13
50320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	$1,%r11
50420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Lcloop1
50520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lexit
50620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
50720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
50820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lexit:
50920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subb	$1,%r10b
51020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r10d,-8(%rdi)
51120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%ecx,-4(%rdi)
51220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
51320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	(%rsp),%r13
51420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	8(%rsp),%r12
51520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	16(%rsp),%rbx
51620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addq	$24,%rsp
51720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lepilogue:
51820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
51920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	RC4,.-RC4
52020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	private_RC4_set_key
52120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	private_RC4_set_key,@function
52220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
52320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turnerprivate_RC4_set_key:
52420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%rdi),%rdi
52520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	(%rdx,%rsi,1),%rdx
52620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	negq	%rsi
52720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rsi,%rcx
52820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorl	%eax,%eax
52920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r9,%r9
53020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r10,%r10
53120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r11,%r11
53220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
53320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	OPENSSL_ia32cap_P(%rip),%r8d
53420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$20,%r8d
53520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jc	.Lc1stloop
53620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lw1stloop
53720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
53820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
53920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lw1stloop:
54020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,(%rdi,%rax,4)
54120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$1,%al
54220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lw1stloop
54320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
54420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r9,%r9
54520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r8,%r8
54620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
54720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lw2ndloop:
54820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%r9,4),%r10d
54920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	(%rdx,%rsi,1),%r8b
55020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%r10b,%r8b
55120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addq	$1,%rsi
55220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi,%r8,4),%r11d
55320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmovzq	%rcx,%rsi
55420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r10d,(%rdi,%r8,4)
55520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r11d,(%rdi,%r9,4)
55620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$1,%r9b
55720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lw2ndloop
55820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lexit_key
55920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
56020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
56120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lc1stloop:
56220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi,%rax,1)
56320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$1,%al
56420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lc1stloop
56520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
56620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r9,%r9
56720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r8,%r8
56820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
56920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lc2ndloop:
57020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%r9,1),%r10b
57120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	(%rdx,%rsi,1),%r8b
57220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	%r10b,%r8b
57320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addq	$1,%rsi
57420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	(%rdi,%r8,1),%r11b
57520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Lcnowrap
57620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rcx,%rsi
57720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lcnowrap:
57820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%r10b,(%rdi,%r8,1)
57920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%r11b,(%rdi,%r9,1)
58020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addb	$1,%r9b
58120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lc2ndloop
58220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$-1,256(%rdi)
58320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
58420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
58520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lexit_key:
58620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorl	%eax,%eax
58720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,-8(%rdi)
58820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,-4(%rdi)
58920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
59020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	private_RC4_set_key,.-private_RC4_set_key
59120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
59220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	RC4_options
59320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	RC4_options,@function
59420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
59520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerRC4_options:
59620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	.Lopts(%rip),%rax
59720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	OPENSSL_ia32cap_P(%rip),%edx
59820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$20,%edx
59920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jc	.L8xchar
60020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$30,%edx
60120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Ldone
60220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addq	$25,%rax
60320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
60420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.L8xchar:
60520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	addq	$12,%rax
60620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Ldone:
60720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
60820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	64
60920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lopts:
61020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	114,99,52,40,56,120,44,105,110,116,41,0
61120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	114,99,52,40,56,120,44,99,104,97,114,41,0
61220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	114,99,52,40,49,54,120,44,105,110,116,41,0
61320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.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
61420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	64
61520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	RC4_options,.-RC4_options
616