120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.hidden	OPENSSL_cpuid_setup
320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.section	.init
420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	call	OPENSSL_cpuid_setup
520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.hidden	OPENSSL_ia32cap_P
720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.comm	OPENSSL_ia32cap_P,8,4
820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.text
1020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
1120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	OPENSSL_atomic_add
1220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	OPENSSL_atomic_add,@function
1320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
1420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerOPENSSL_atomic_add:
1520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	(%rdi),%eax
1620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lspin:	leaq	(%rsi,%rax,1),%r8
1720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	0xf0
1820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpxchgl	%r8d,(%rdi)
1920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lspin
2020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r8d,%eax
2120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	0x48,0x98
2220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
2320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	OPENSSL_atomic_add,.-OPENSSL_atomic_add
2420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
2520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	OPENSSL_rdtsc
2620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	OPENSSL_rdtsc,@function
2720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
2820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerOPENSSL_rdtsc:
2920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	rdtsc
3020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	shlq	$32,%rdx
3120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orq	%rdx,%rax
3220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
3320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	OPENSSL_rdtsc,.-OPENSSL_rdtsc
3420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
3520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	OPENSSL_ia32_cpuid
3620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	OPENSSL_ia32_cpuid,@function
3720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
3820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerOPENSSL_ia32_cpuid:
3920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rbx,%r8
4020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
4120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorl	%eax,%eax
4220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
4320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,%r11d
4420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
4520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorl	%eax,%eax
4620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$1970169159,%ebx
4720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	setne	%al
4820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,%r9d
4920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$1231384169,%edx
5020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	setne	%al
5120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	%eax,%r9d
5220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$1818588270,%ecx
5320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	setne	%al
5420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	%eax,%r9d
5520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Lintel
5620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
5720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$1752462657,%ebx
5820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	setne	%al
5920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,%r10d
6020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$1769238117,%edx
6120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	setne	%al
6220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	%eax,%r10d
6320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$1145913699,%ecx
6420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	setne	%al
6520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	%eax,%r10d
6620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Lintel
6720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
6820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
6920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$2147483648,%eax
7020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
7120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$2147483649,%eax
7220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jb	.Lintel
7320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,%r10d
7420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$2147483649,%eax
7520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
7620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	%ecx,%r9d
7720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$2049,%r9d
7820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
7920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$2147483656,%r10d
8020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jb	.Lintel
8120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
8220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$2147483656,%eax
8320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
8420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movzbq	%cl,%r10
8520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	incq	%r10
8620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
8720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$1,%eax
8820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
8920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$28,%edx
9020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lgeneric
9120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	shrl	$16,%ebx
9220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpb	%r10b,%bl
9320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	ja	.Lgeneric
9420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$4026531839,%edx
9520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lgeneric
9620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
9720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lintel:
9820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$4,%r11d
9920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$-1,%r10d
10020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jb	.Lnocacheinfo
10120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
10220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$4,%eax
10320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$0,%ecx
10420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
10520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%eax,%r10d
10620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	shrl	$14,%r10d
10720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$4095,%r10d
10820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
10920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lnocacheinfo:
11020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$1,%eax
11120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cpuid
11220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$3220176895,%edx
11320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$0,%r9d
11420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lnotintel
11520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	$1073741824,%edx
11620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andb	$15,%ah
11720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpb	$15,%ah
11820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Lnotintel
11920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	$1048576,%edx
12020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lnotintel:
12120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$28,%edx
12220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lgeneric
12320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$4026531839,%edx
12420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$0,%r10d
12520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	je	.Lgeneric
12620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
12720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	$268435456,%edx
12820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	shrl	$16,%ebx
12920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpb	$1,%bl
13020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	ja	.Lgeneric
13120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$4026531839,%edx
13220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lgeneric:
13320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$2048,%r9d
13420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$4294965247,%ecx
13520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orl	%ecx,%r9d
13620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
13720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%edx,%r10d
13820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	btl	$27,%r9d
13920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnc	.Lclear_avx
14020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorl	%ecx,%ecx
14120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	0x0f,0x01,0xd0
14220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	$6,%eax
14320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpl	$6,%eax
14420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	je	.Ldone
14520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lclear_avx:
14620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$4026525695,%eax
14720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	andl	%eax,%r9d
14820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Ldone:
14920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	shlq	$32,%r9
15020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	%r10d,%eax
15120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%r8,%rbx
15220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	orq	%r9,%rax
15320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
15420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
15520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner
15620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	OPENSSL_cleanse
15720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	OPENSSL_cleanse,@function
15820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
15920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerOPENSSL_cleanse:
16020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rax,%rax
16120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$15,%rsi
16220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jae	.Lot
16320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$0,%rsi
16420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	je	.Lret
16520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Little:
16620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi)
16720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	subq	$1,%rsi
16820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%rdi),%rdi
16920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Little
17020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lret:
17120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
17220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
17320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lot:
17420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$7,%rdi
17520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jz	.Laligned
17620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movb	%al,(%rdi)
17720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	-1(%rsi),%rsi
17820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	1(%rdi),%rdi
17920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jmp	.Lot
18020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Laligned:
18120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movq	%rax,(%rdi)
18220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	-8(%rsi),%rsi
18320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	testq	$-8,%rsi
18420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%rdi),%rdi
18520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jnz	.Laligned
18620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$0,%rsi
18720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jne	.Little
18820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
18920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	OPENSSL_cleanse,.-OPENSSL_cleanse
19020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	OPENSSL_wipe_cpu
19120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	OPENSSL_wipe_cpu,@function
19220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
19320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerOPENSSL_wipe_cpu:
19420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm0,%xmm0
19520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm1,%xmm1
19620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm2,%xmm2
19720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm3,%xmm3
19820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm4,%xmm4
19920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm5,%xmm5
20020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm6,%xmm6
20120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm7,%xmm7
20220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm8,%xmm8
20320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm9,%xmm9
20420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm10,%xmm10
20520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm11,%xmm11
20620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm12,%xmm12
20720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm13,%xmm13
20820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm14,%xmm14
20920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	pxor	%xmm15,%xmm15
21020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rcx,%rcx
21120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rdx,%rdx
21220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rsi,%rsi
21320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%rdi,%rdi
21420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r8,%r8
21520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r9,%r9
21620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r10,%r10
21720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	xorq	%r11,%r11
21820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	leaq	8(%rsp),%rax
21920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
22020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
22120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.globl	OPENSSL_ia32_rdrand
22220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.type	OPENSSL_ia32_rdrand,@function
22320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.align	16
22420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' TurnerOPENSSL_ia32_rdrand:
22520777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	movl	$8,%ecx
22620777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Loop_rdrand:
22720777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.byte	72,15,199,240
22820777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	jc	.Lbreak_rdrand
22920777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	loop	.Loop_rdrand
23020777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.Lbreak_rdrand:
23120777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmpq	$0,%rax
23220777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	cmoveq	%rcx,%rax
23320777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner	.byte	0xf3,0xc3
23420777798f5184ef65e59bb5eb91ac9e839d7afebDavid 'Digit' Turner.size	OPENSSL_ia32_rdrand,.-OPENSSL_ia32_rdrand
235