// This file is generated from a similarly-named Perl script in the BoringSSL
// source tree. Do not edit by hand.

#if defined(__i386__)
#if defined(BORINGSSL_PREFIX)
#include <boringssl_prefix_symbols_asm.h>
#endif
.text
.globl	abi_test_trampoline
.hidden	abi_test_trampoline
.type	abi_test_trampoline,@function
.align	16
abi_test_trampoline:
.L_abi_test_trampoline_begin:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	movl	24(%esp),%ecx
	movl	(%ecx),%esi
	movl	4(%ecx),%edi
	movl	8(%ecx),%ebx
	movl	12(%ecx),%ebp
	subl	$44,%esp
	movl	72(%esp),%eax
	xorl	%ecx,%ecx
.L000loop:
	cmpl	76(%esp),%ecx
	jae	.L001loop_done
	movl	(%eax,%ecx,4),%edx
	movl	%edx,(%esp,%ecx,4)
	addl	$1,%ecx
	jmp	.L000loop
.L001loop_done:
	call	*64(%esp)
	addl	$44,%esp
	movl	24(%esp),%ecx
	movl	%esi,(%ecx)
	movl	%edi,4(%ecx)
	movl	%ebx,8(%ecx)
	movl	%ebp,12(%ecx)
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.size	abi_test_trampoline,.-.L_abi_test_trampoline_begin
.globl	abi_test_get_and_clear_direction_flag
.hidden	abi_test_get_and_clear_direction_flag
.type	abi_test_get_and_clear_direction_flag,@function
.align	16
abi_test_get_and_clear_direction_flag:
.L_abi_test_get_and_clear_direction_flag_begin:
	pushfl
	popl	%eax
	andl	$1024,%eax
	shrl	$10,%eax
	cld
	ret
.size	abi_test_get_and_clear_direction_flag,.-.L_abi_test_get_and_clear_direction_flag_begin
.globl	abi_test_set_direction_flag
.hidden	abi_test_set_direction_flag
.type	abi_test_set_direction_flag,@function
.align	16
abi_test_set_direction_flag:
.L_abi_test_set_direction_flag_begin:
	std
	ret
.size	abi_test_set_direction_flag,.-.L_abi_test_set_direction_flag_begin
.globl	abi_test_clobber_eax
.hidden	abi_test_clobber_eax
.type	abi_test_clobber_eax,@function
.align	16
abi_test_clobber_eax:
.L_abi_test_clobber_eax_begin:
	xorl	%eax,%eax
	ret
.size	abi_test_clobber_eax,.-.L_abi_test_clobber_eax_begin
.globl	abi_test_clobber_ebx
.hidden	abi_test_clobber_ebx
.type	abi_test_clobber_ebx,@function
.align	16
abi_test_clobber_ebx:
.L_abi_test_clobber_ebx_begin:
	xorl	%ebx,%ebx
	ret
.size	abi_test_clobber_ebx,.-.L_abi_test_clobber_ebx_begin
.globl	abi_test_clobber_ecx
.hidden	abi_test_clobber_ecx
.type	abi_test_clobber_ecx,@function
.align	16
abi_test_clobber_ecx:
.L_abi_test_clobber_ecx_begin:
	xorl	%ecx,%ecx
	ret
.size	abi_test_clobber_ecx,.-.L_abi_test_clobber_ecx_begin
.globl	abi_test_clobber_edx
.hidden	abi_test_clobber_edx
.type	abi_test_clobber_edx,@function
.align	16
abi_test_clobber_edx:
.L_abi_test_clobber_edx_begin:
	xorl	%edx,%edx
	ret
.size	abi_test_clobber_edx,.-.L_abi_test_clobber_edx_begin
.globl	abi_test_clobber_edi
.hidden	abi_test_clobber_edi
.type	abi_test_clobber_edi,@function
.align	16
abi_test_clobber_edi:
.L_abi_test_clobber_edi_begin:
	xorl	%edi,%edi
	ret
.size	abi_test_clobber_edi,.-.L_abi_test_clobber_edi_begin
.globl	abi_test_clobber_esi
.hidden	abi_test_clobber_esi
.type	abi_test_clobber_esi,@function
.align	16
abi_test_clobber_esi:
.L_abi_test_clobber_esi_begin:
	xorl	%esi,%esi
	ret
.size	abi_test_clobber_esi,.-.L_abi_test_clobber_esi_begin
.globl	abi_test_clobber_ebp
.hidden	abi_test_clobber_ebp
.type	abi_test_clobber_ebp,@function
.align	16
abi_test_clobber_ebp:
.L_abi_test_clobber_ebp_begin:
	xorl	%ebp,%ebp
	ret
.size	abi_test_clobber_ebp,.-.L_abi_test_clobber_ebp_begin
.globl	abi_test_clobber_xmm0
.hidden	abi_test_clobber_xmm0
.type	abi_test_clobber_xmm0,@function
.align	16
abi_test_clobber_xmm0:
.L_abi_test_clobber_xmm0_begin:
	pxor	%xmm0,%xmm0
	ret
.size	abi_test_clobber_xmm0,.-.L_abi_test_clobber_xmm0_begin
.globl	abi_test_clobber_xmm1
.hidden	abi_test_clobber_xmm1
.type	abi_test_clobber_xmm1,@function
.align	16
abi_test_clobber_xmm1:
.L_abi_test_clobber_xmm1_begin:
	pxor	%xmm1,%xmm1
	ret
.size	abi_test_clobber_xmm1,.-.L_abi_test_clobber_xmm1_begin
.globl	abi_test_clobber_xmm2
.hidden	abi_test_clobber_xmm2
.type	abi_test_clobber_xmm2,@function
.align	16
abi_test_clobber_xmm2:
.L_abi_test_clobber_xmm2_begin:
	pxor	%xmm2,%xmm2
	ret
.size	abi_test_clobber_xmm2,.-.L_abi_test_clobber_xmm2_begin
.globl	abi_test_clobber_xmm3
.hidden	abi_test_clobber_xmm3
.type	abi_test_clobber_xmm3,@function
.align	16
abi_test_clobber_xmm3:
.L_abi_test_clobber_xmm3_begin:
	pxor	%xmm3,%xmm3
	ret
.size	abi_test_clobber_xmm3,.-.L_abi_test_clobber_xmm3_begin
.globl	abi_test_clobber_xmm4
.hidden	abi_test_clobber_xmm4
.type	abi_test_clobber_xmm4,@function
.align	16
abi_test_clobber_xmm4:
.L_abi_test_clobber_xmm4_begin:
	pxor	%xmm4,%xmm4
	ret
.size	abi_test_clobber_xmm4,.-.L_abi_test_clobber_xmm4_begin
.globl	abi_test_clobber_xmm5
.hidden	abi_test_clobber_xmm5
.type	abi_test_clobber_xmm5,@function
.align	16
abi_test_clobber_xmm5:
.L_abi_test_clobber_xmm5_begin:
	pxor	%xmm5,%xmm5
	ret
.size	abi_test_clobber_xmm5,.-.L_abi_test_clobber_xmm5_begin
.globl	abi_test_clobber_xmm6
.hidden	abi_test_clobber_xmm6
.type	abi_test_clobber_xmm6,@function
.align	16
abi_test_clobber_xmm6:
.L_abi_test_clobber_xmm6_begin:
	pxor	%xmm6,%xmm6
	ret
.size	abi_test_clobber_xmm6,.-.L_abi_test_clobber_xmm6_begin
.globl	abi_test_clobber_xmm7
.hidden	abi_test_clobber_xmm7
.type	abi_test_clobber_xmm7,@function
.align	16
abi_test_clobber_xmm7:
.L_abi_test_clobber_xmm7_begin:
	pxor	%xmm7,%xmm7
	ret
.size	abi_test_clobber_xmm7,.-.L_abi_test_clobber_xmm7_begin
#endif
.section	.note.GNU-stack,"",@progbits
