.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