	# Don't even think of reading this code 
	# It was automatically generated by x86cpuid 
	# Which is a perl program used to generate the x86 assember for 
	# any of ELF, a.out, COFF, Win32, ... 
	# eric <eay@cryptsoft.com> 

	.file	"x86cpuid.s"
.text
.globl	_OPENSSL_ia32_cpuid
.def	_OPENSSL_ia32_cpuid;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_ia32_cpuid:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi

	xorl	%edx,		%edx
	pushfl
	popl	%eax
	movl	%eax,		%ecx
	xorl	$2097152,	%eax
	pushl	%eax
	popfl
	pushfl
	popl	%eax
	xorl	%eax,		%ecx
	btl	$21,		%ecx
	jnc	.L000nocpuid
	movl	$1,		%eax
	.byte	0x0f,0xa2
.L000nocpuid:
	movl	%edx,		%eax
	movl	%ecx,		%edx
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.L__OPENSSL_ia32_cpuid_end:
.ident	"_OPENSSL_ia32_cpuid"
.text
.globl	_OPENSSL_rdtsc
.def	_OPENSSL_rdtsc;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_rdtsc:
	xorl	%eax,		%eax
	xorl	%edx,		%edx
	leal	_OPENSSL_ia32cap_P,%ecx
	btl	$4,		(%ecx)
	jnc	.L001notsc
	.byte	0x0f,0x31
.L001notsc:
	ret
.L__OPENSSL_rdtsc_end:
.ident	"_OPENSSL_rdtsc"
.text
.globl	_OPENSSL_instrument_halt
.def	_OPENSSL_instrument_halt;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_instrument_halt:
	leal	_OPENSSL_ia32cap_P,%ecx
	btl	$4,		(%ecx)
	jnc	.L002nohalt
	.long	2421723150
	andl	$3,		%eax
	jnz	.L002nohalt
	pushfl
	popl	%eax
	btl	$9,		%eax
	jnc	.L002nohalt
	.byte	0x0f,0x31
	pushl	%edx
	pushl	%eax
	hlt
	.byte	0x0f,0x31
	subl	(%esp),		%eax
	sbbl	4(%esp),	%edx
	addl	$8,		%esp
	ret
.L002nohalt:
	xorl	%eax,		%eax
	xorl	%edx,		%edx
	ret
.L__OPENSSL_instrument_halt_end:
.ident	"_OPENSSL_instrument_halt"
.text
.globl	_OPENSSL_far_spin
.def	_OPENSSL_far_spin;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_far_spin:
	pushfl
	popl	%eax
	btl	$9,		%eax
	jnc	.L003nospin
	movl	4(%esp),	%eax
	movl	8(%esp),	%ecx
	.long	2430111262
	xorl	%eax,		%eax
	movl	(%ecx),		%edx
	jmp	.L004spin
.align	16
.L004spin:
	incl	%eax
	cmpl	(%ecx),		%edx
	je	.L004spin
	.long	529567888
	ret
.L003nospin:
	xorl	%eax,		%eax
	xorl	%edx,		%edx
	ret
.L__OPENSSL_far_spin_end:
.ident	"_OPENSSL_far_spin"
.text
.globl	_OPENSSL_wipe_cpu
.def	_OPENSSL_wipe_cpu;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_wipe_cpu:
	xorl	%eax,		%eax
	xorl	%edx,		%edx
	leal	_OPENSSL_ia32cap_P,%ecx
	movl	(%ecx),		%ecx
	btl	$1,		(%ecx)
	jnc	.L005no_x87
	btl	$26,		(%ecx)
	jnc	.L006no_sse2
	pxor	%xmm0,		%xmm0
	pxor	%xmm1,		%xmm1
	pxor	%xmm2,		%xmm2
	pxor	%xmm3,		%xmm3
	pxor	%xmm4,		%xmm4
	pxor	%xmm5,		%xmm5
	pxor	%xmm6,		%xmm6
	pxor	%xmm7,		%xmm7
.L006no_sse2:
	.long	4007259865,4007259865,4007259865,4007259865,2430851995
.L005no_x87:
	leal	4(%esp),	%eax
	ret
.L__OPENSSL_wipe_cpu_end:
.ident	"_OPENSSL_wipe_cpu"
.text
.globl	_OPENSSL_atomic_add
.def	_OPENSSL_atomic_add;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_atomic_add:
	movl	4(%esp),	%edx
	movl	8(%esp),	%ecx
	pushl	%ebx
	nop
	movl	(%edx),		%eax
.L007spin:
	leal	(%eax,%ecx),	%ebx
	nop
	.long	447811568
	jne	.L007spin
	movl	%ebx,		%eax
	popl	%ebx
	ret
.L__OPENSSL_atomic_add_end:
.ident	"_OPENSSL_atomic_add"
.text
.globl	_OPENSSL_indirect_call
.def	_OPENSSL_indirect_call;	.scl	2;	.type	32;	.endef
.align	16
_OPENSSL_indirect_call:
	pushl	%ebp
	movl	%esp,		%ebp
	subl	$28,		%esp
	movl	12(%ebp),	%ecx
	movl	%ecx,		(%esp)
	movl	16(%ebp),	%edx
	movl	%edx,		4(%esp)
	movl	20(%ebp),	%eax
	movl	%eax,		8(%esp)
	movl	24(%ebp),	%eax
	movl	%eax,		12(%esp)
	movl	28(%ebp),	%eax
	movl	%eax,		16(%esp)
	movl	32(%ebp),	%eax
	movl	%eax,		20(%esp)
	movl	36(%ebp),	%eax
	movl	%eax,		24(%esp)
	call	*8(%ebp)
	movl	%ebp,		%esp
	popl	%ebp
	ret
.L__OPENSSL_indirect_call_end:
.ident	"_OPENSSL_indirect_call"
.section	.ctors
.long	_OPENSSL_cpuid_setup
