#include <inline/stub.h>
#ifndef BASE_EXT_DECL
#define BASE_EXT_DECL extern struct MathBase * MathBase;
#endif
#ifndef BASE_PAR_DECL
#define BASE_PAR_DECL
#endif
#ifndef BASE_NAME
#define BASE_NAME MathBase
#endif
__inline static LONG const SPFix(BASE_PAR_DECL FLOAT parm)
{
	BASE_EXT_DECL
	register LONG res __asm("d0");
	register void *a6 __asm ("a6");
	register const FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = parm;
	__asm volatile ("
	jsr a6@(-0x1e)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPFlt(BASE_PAR_DECL long integer)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register long d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = integer;
	__asm volatile ("
	jsr a6@(-0x24)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static LONG const SPCmp(BASE_PAR_DECL FLOAT leftParm, FLOAT rightParm)
{
	BASE_EXT_DECL
	register LONG res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d1 __asm("d1");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d1 = leftParm;
	d0 = rightParm;
	__asm volatile ("
	jsr a6@(-0x2a)"
	: "=r" (res)
	: "r" (a6), "r" (d1), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static LONG const SPTst(BASE_PAR_DECL FLOAT parm)
{
	BASE_EXT_DECL
	register LONG res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d1 __asm("d1");

	a6 = BASE_NAME;
	d1 = parm;
	__asm volatile ("
	jsr a6@(-0x30)"
	: "=r" (res)
	: "r" (a6), "r" (d1)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPAbs(BASE_PAR_DECL FLOAT parm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = parm;
	__asm volatile ("
	jsr a6@(-0x36)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPNeg(BASE_PAR_DECL FLOAT parm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = parm;
	__asm volatile ("
	jsr a6@(-0x3c)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPAdd(BASE_PAR_DECL FLOAT leftParm, FLOAT rightParm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d1 __asm("d1");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d1 = leftParm;
	d0 = rightParm;
	__asm volatile ("
	jsr a6@(-0x42)"
	: "=r" (res)
	: "r" (a6), "r" (d1), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPSub(BASE_PAR_DECL FLOAT leftParm, FLOAT rightParm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d1 __asm("d0");	/* ATTENTION: the fd file has */
	register FLOAT d0 __asm("d1");	/* the parameters inversed!!! */

	a6 = BASE_NAME;
	d1 = leftParm;
	d0 = rightParm;
	__asm volatile ("
	jsr a6@(-0x48)"
	: "=r" (res)
	: "r" (a6), "r" (d1), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPMul(BASE_PAR_DECL FLOAT leftParm, FLOAT rightParm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d1 __asm("d1");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d1 = leftParm;
	d0 = rightParm;
	__asm volatile ("
	jsr a6@(-0x4e)"
	: "=r" (res)
	: "r" (a6), "r" (d1), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPDiv(BASE_PAR_DECL FLOAT leftParm, FLOAT rightParm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d1 __asm("d0");  /* ATTENTION: the fd files have */
	register FLOAT d0 __asm("d1");	/* these parameters reversed !! */

	a6 = BASE_NAME;
	d1 = leftParm;
	d0 = rightParm;
	__asm volatile ("
	jsr a6@(-0x54)"
	: "=r" (res)
	: "r" (a6), "r" (d1), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPFloor(BASE_PAR_DECL FLOAT parm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = parm;
	__asm volatile ("
	jsr a6@(-0x5a)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static FLOAT const SPCeil(BASE_PAR_DECL FLOAT parm)
{
	BASE_EXT_DECL
	register FLOAT res __asm("d0");
	register void *a6 __asm ("a6");
	register FLOAT d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = parm;
	__asm volatile ("
	jsr a6@(-0x60)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return res;
}
#undef BASE_EXT_DECL
#undef BASE_PAR_DECL
#undef BASE_NAME
