	# 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	.L000done
	xorl	%eax,		%eax
	.byte	0x0f,0xa2
	xorl	%eax,		%eax
	cmpl	$1970169159,	%ebx
	.byte	15,149,192
	movl	%eax,		%ebp
	cmpl	$1231384169,	%edx
	.byte	15,149,192
	orl	%eax,		%ebp
	cmpl	$1818588270,	%ecx
	.byte	15,149,192
	orl	%eax,		%ebp
	movl	$1,		%eax
	.byte	0x0f,0xa2
	cmpl	$0,		%ebp
	jne	.L001notP4
	andl	$3840,		%eax
	cmpl	$3840,		%eax
	jne	.L001notP4
	orl	$1048576,	%edx
.L001notP4:
	btl	$28,		%edx
	jnc	.L000done
	shrl	$16,		%ebx
	andl	$255,		%ebx
	cmpl	$1,		%ebx
	ja	.L000done
	andl	$4026531839,	%edx
.L000done:
	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	.L002notsc
	.byte	0x0f,0x31
.L002notsc:
	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	.L003nohalt
	.long	2421723150
	andl	$3,		%eax
	jnz	.L003nohalt
	pushfl
	popl	%eax
	btl	$9,		%eax
	jnc	.L003nohalt
	.byte	0x0f,0x31
	pushl	%edx
	pushl	%eax
	hlt
	.byte	0x0f,0x31
	subl	(%esp),		%eax
	sbbl	4(%esp),	%edx
	addl	$8,		%esp
	ret
.L003nohalt:
	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	.L004nospin
	movl	4(%esp),	%eax
	movl	8(%esp),	%ecx
	.long	2430111262
	xorl	%eax,		%eax
	movl	(%ecx),		%edx
	jmp	.L005spin
.align	16
.L005spin:
	incl	%eax
	cmpl	(%ecx),		%edx
	je	.L005spin
	.long	529567888
	ret
.L004nospin:
	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	.L006no_x87
	.long	4007259865,4007259865,4007259865,4007259865,2430851995
.L006no_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
