The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
	.file	"floor.c"
gcc2_compiled.:
/* Caution, order of operands is reversed from usual Intel syntax */
.text
	.align 2
.globl _ceil
_ceil:
	pushl %ebp
	movl %esp,%ebp
	pushl 12(%ebp)
	pushl 8(%ebp)
	call _floor
	fcoml 8(%ebp)
	fnstsw %ax
	andb $69,%ah
	cmpb $1,%ah
	jne L252
	fld1
	faddp %st,%st(1)
L252:
	fldz
	fucom %st(1)
	fnstsw %ax
	andb $68,%ah
	xorb $64,%ah
	jne L255
	fcompl 8(%ebp)
	fnstsw %ax
	andb $69,%ah
	jne L253
	fstp %st(0)
	fldl _NEGZERO
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L255:
	fstp %st(0)
L253:
	movl %ebp,%esp
	popl %ebp
	ret

	.align 2
.globl _floor
_floor:
	pushl %ebp
	movl %esp,%ebp
	subl $4,%esp
	fstcw -4(%ebp)
	fwait
	movw -4(%ebp),%ax
	andw $0xf3ff,%ax
	orw $0x400,%ax
	movw %ax,-2(%ebp)
	fldcw -2(%ebp)
	fldl 8(%ebp)
	frndint
	fldcw -4(%ebp)
	leave
	ret


	.align 2
.globl _frexp
_frexp:
	pushl %ebp
	movl %esp,%ebp
	subl $8,%esp
	pushl %ebx
	fldl 8(%ebp)
	movl 16(%ebp),%ebx
	fldz
	fucomp %st(1)
	fnstsw %ax
	andb $68,%ah
	xorb $64,%ah
	jne L19
	movl $0,(%ebx)
	jmp L27
	.align 4,0x90
L19:
	fstpl -8(%ebp)
	leal -2(%ebp),%ecx
	movw -2(%ebp),%ax
	sarw $4,%ax
	movl %eax,%edx
	andl $2047,%edx
	jne L21
	.align 2,0x90
L23:
	fldl -8(%ebp)
	fadd %st(0),%st
	fstpl -8(%ebp)
	decl %edx
	movw (%ecx),%ax
	sarw $4,%ax
	andl $2047,%eax
	je L23
	addl %eax,%edx
L21:
	addl $-1022,%edx
	movl %edx,(%ebx)
	andw $32783,(%ecx)
	orw $16352,(%ecx)
	fldl -8(%ebp)
L27:
	movl -12(%ebp),%ebx
	movl %ebp,%esp
	popl %ebp
	ret
	.align 2
LC1:
	.long 0x0,0x3fe00000
	.align 2
.globl _ldexp
_ldexp:
	pushl %ebp
	movl %esp,%ebp
	subl $8,%esp
	fldl 8(%ebp)
	movl 16(%ebp),%edx
	fldz
	fucomp %st(1)
	fnstsw %ax
	andb $68,%ah
	xorb $64,%ah
	jne L29
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L53:
	fstp %st(1)
	fstp %st(1)
	fstp %st(1)
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L29:
	fstl -8(%ebp)
	leal -2(%ebp),%ecx
	fld1
	testw $32752,-2(%ebp)
	jne L51
	fldl LC1
	.align 2,0x90
L32:
	testl %edx,%edx
	jle L33
	fxch %st(1)
	fadd %st(0),%st
	fxch %st(1)
	decl %edx
L33:
	testl %edx,%edx
	jge L34
	cmpl $-53,%edx
	jl L52
	fmul %st,%st(1)
	incl %edx
L34:
	fld %st(2)
	fmul %st(2),%st
	fstl -8(%ebp)
	testl %edx,%edx
	je L53
	fstp %st(0)
	testw $32752,(%ecx)
	je L32
	fstp %st(0)
L51:
	fstp %st(0)
	fstp %st(0)
	movw (%ecx),%ax
	andw $32752,%ax
	sarw $4,%ax
	cwtl
	addl %edx,%eax
	cmpl $2046,%eax
	jle L38
	fldl _MAXNUM
	fadd %st(0),%st
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L38:
	testl %eax,%eax
	jg L39
	cmpl $-53,%eax
	jge L40
	jmp L49
	.align 4,0x90
L52:
	fstp %st(0)
	fstp %st(0)
	fstp %st(0)
L49:
	fldz
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L40:
	andw $32783,(%ecx)
	orb $16,(%ecx)
	leal -1(%eax),%eax
	pushl %eax
	pushl $1073741824
	pushl $0
	call ldexp
	fmull (%ecx)
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L39:
	andw $32783,(%ecx)
	andb $7,%ah
	salw $4,%ax
	orw %ax,(%ecx)
	fldl -8(%ebp)
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4
.globl _signbit
_signbit:
	pushl %ebp
	movl %esp,%ebp
	movl 12(%ebp),%eax
	shrl $31,%eax
	movl %ebp,%esp
	popl %ebp
	ret

	.align 4
.globl _isnan
_isnan:
	pushl %ebp
	movl %esp,%ebp
	pushl %ebx
	movl 8(%ebp),%ecx
	movl 12(%ebp),%ebx
	movl %ebx,%edx
	andl $2146435072,%edx
	cmpl $2146435072,%edx
	jne L62
	testl $1048575,%ebx
	jne L63
	testl %ecx,%ecx
	je L62
L63:
	movl $1,%eax
	jmp L67
	.align 4,0x90
L62:
	xorl %eax,%eax
L67:
	movl -4(%ebp),%ebx
	movl %ebp,%esp
	popl %ebp
	ret

	.align 4
.globl _isfinite
_isfinite:
	pushl %ebp
	movl %esp,%ebp
	movl 12(%ebp),%eax
	andl $2146435072,%eax
	cmpl $2146435072,%eax
	jne L70
	xorl %eax,%eax
	movl %ebp,%esp
	popl %ebp
	ret
	.align 4,0x90
L70:
	movl $1,%eax
	movl %ebp,%esp
	popl %ebp
	ret

	.align	4
	.globl	_fmod
_fmod:
	fldl	4(%esp)
	ftst
	fnstsw	%ax
	sahf
	jz	L82
	fldl	12(%esp)
	ftst
	fnstsw	%ax
	sahf
	jz	L81
	fxch	%st(1)
L80:
	fprem
	fnstsw	%ax
	sahf
	jpe	L80
L81:
	fstp	%st(1)
L82:
	ret