#if defined(__BORLANDC__)
	/* These definitions provided by Dr. Todd Brennan, 04Oct2002 */
	#define SECUREBEGIN     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x00;}
	#define SECUREEND       _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_A   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x01;}
	#define SECUREEND_A     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_B   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x02;}
	#define SECUREEND_B     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_C   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x03;}
	#define SECUREEND_C     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_D   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x04;}
	#define SECUREEND_D     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_E   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x05;}
	#define SECUREEND_E     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_F   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x06;}
	#define SECUREEND_F     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_G   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x07;}
	#define SECUREEND_G     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_H   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x08;}
	#define SECUREEND_H     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_I   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x09;}
	#define SECUREEND_I     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_J   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x0A;}
	#define SECUREEND_J     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define SECUREBEGIN_K   _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0x0B;}
	#define SECUREEND_K     _asm {db 0xEB; db 0x03; db 0xD6; db 0xD6; db 0xFF;}
	#define NANOBEGIN       _asm {db 0xEB; db 0x03; db 0xD6; db 0xD7; db 0x01;}
	#define NANOEND         _asm {db 0xEB; db 0x03; db 0xD6; db 0xD7; db 0x00;}

	/* The former definitions for Borland C++ Builder, if anyone needs them. */
	/*
	#define SECUREBEGIN   __emit__ (0xEB,0x03,0xD6,0xD6,0x00);
	#define SECUREEND     __emit__ (0xEB,0x03,0xD6,0xD6,0xFF);
	#define SECUREBEGIN_A __emit__ (0xEB,0x03,0xD6,0xD6,0x01);
	#define SECUREEND_A   __emit__ (0xEB,0x03,0xD6,0xD6,0xFF);
	#define SECUREBEGIN_B __emit__ (0xEB,0x03,0xD6,0xD6,0x02);
	#define SECUREEND_B   __emit__ (0xEB,0x03,0xD6,0xD6,0xFF);
	#define SECUREBEGIN_C __emit__ (0xEB,0x03,0xD6,0xD6,0x03);
	#define SECUREEND_C   __emit__ (0xEB,0x03,0xD6,0xD6,0xFF);
	#define NANOBEGIN     __emit__ (0xEB,0x03,0xD6,0xD7,0x01);
	#define NANOEND       __emit__ (0xEB,0x03,0xD6,0xD7,0x00);
	*/
#elif defined(__LCC__)
	/* Provided by Rubem Pechansky, 26Feb2003 */
	#define SECUREBEGIN   _asm(".byte 0xEB,0x03,0xD6,0xD6,0x00");
	#define SECUREEND     _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_A _asm(".byte 0xEB,0x03,0xD6,0xD6,0x01");
	#define SECUREEND_A   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_B _asm(".byte 0xEB,0x03,0xD6,0xD6,0x02");
	#define SECUREEND_B   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_C _asm(".byte 0xEB,0x03,0xD6,0xD6,0x03");
	#define SECUREEND_C   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_D _asm(".byte 0xEB,0x03,0xD6,0xD6,0x04");
	#define SECUREEND_D   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_E _asm(".byte 0xEB,0x03,0xD6,0xD6,0x05");
	#define SECUREEND_E   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_F _asm(".byte 0xEB,0x03,0xD6,0xD6,0x06");
	#define SECUREEND_F   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_G _asm(".byte 0xEB,0x03,0xD6,0xD6,0x07");
	#define SECUREEND_G   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_H _asm(".byte 0xEB,0x03,0xD6,0xD6,0x08");
	#define SECUREEND_H   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_I _asm(".byte 0xEB,0x03,0xD6,0xD6,0x09");
	#define SECUREEND_I   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_J _asm(".byte 0xEB,0x03,0xD6,0xD6,0x0A");
	#define SECUREEND_J   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define SECUREBEGIN_K _asm(".byte 0xEB,0x03,0xD6,0xD6,0x0B");
	#define SECUREEND_K   _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
	#define NANOBEGIN     _asm(".byte 0xEB,0x03,0xD6,0xD7,0x01");
	#define NANOEND       _asm(".byte 0xEB,0x03,0xD6,0xD7,0x00");
#endif

#ifdef _WIN64
	#define ARMACCESS_API __declspec(dllimport) __stdcall
	extern "C" void ARMACCESS_API SECUREBEGIN(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_A(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_B(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_C(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_D(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_E(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_F(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_G(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_H(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_I(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_J(void);
	extern "C" void ARMACCESS_API SECUREBEGIN_K(void);
	extern "C" void ARMACCESS_API SECUREEND(void);
	extern "C" void ARMACCESS_API SECUREEND_A(void);
	extern "C" void ARMACCESS_API SECUREEND_B(void);
	extern "C" void ARMACCESS_API SECUREEND_C(void);
	extern "C" void ARMACCESS_API SECUREEND_D(void);
	extern "C" void ARMACCESS_API SECUREEND_E(void);
	extern "C" void ARMACCESS_API SECUREEND_F(void);
	extern "C" void ARMACCESS_API SECUREEND_G(void);
	extern "C" void ARMACCESS_API SECUREEND_H(void);
	extern "C" void ARMACCESS_API SECUREEND_I(void);
	extern "C" void ARMACCESS_API SECUREEND_J(void);
	extern "C" void ARMACCESS_API SECUREEND_K(void);
	extern "C" void ARMACCESS_API NANOBEGIN(void);
	extern "C" void ARMACCESS_API NANOEND(void);
	
	#define SECUREBEGIN SECUREBEGIN()
	#define SECUREEND SECUREEND()
	#define SECUREBEGIN_A SECUREBEGIN_A()
	#define SECUREEND_A SECUREEND_A()
	#define SECUREBEGIN_B SECUREBEGIN_B()
	#define SECUREEND_B SECUREEND_B()
	#define SECUREBEGIN_C SECUREBEGIN_C()
	#define SECUREEND_C SECUREEND_C()
	#define SECUREBEGIN_D SECUREBEGIN_D()
	#define SECUREEND_D SECUREEND_D()
	#define SECUREBEGIN_E SECUREBEGIN_E()
	#define SECUREEND_E SECUREEND_E()
	#define SECUREBEGIN_F SECUREBEGIN_F()
	#define SECUREEND_F SECUREEND_F()
	#define SECUREBEGIN_G SECUREBEGIN_G()
	#define SECUREEND_G SECUREEND_G()
	#define SECUREBEGIN_H SECUREBEGIN_H()
	#define SECUREEND_H SECUREEND_H()
	#define SECUREBEGIN_I SECUREBEGIN_I()
	#define SECUREEND_I SECUREEND_I()
	#define SECUREBEGIN_J SECUREBEGIN_J()
	#define SECUREEND_J SECUREEND_J()
	#define SECUREBEGIN_K SECUREBEGIN_K()
	#define SECUREEND_K SECUREEND_K()
	#define NANOBEGIN NANOBEGIN()
	#define NANOEND NANOEND()

#else
	#define SECUREBEGIN   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x00
	#define SECUREEND     __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_A __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x01
	#define SECUREEND_A   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_B __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x02
	#define SECUREEND_B   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_C __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x03
	#define SECUREEND_C   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_D __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x04
	#define SECUREEND_D   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_E __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x05
	#define SECUREEND_E   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_F __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x06
	#define SECUREEND_F   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_G __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x07
	#define SECUREEND_G   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_H __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x08
	#define SECUREEND_H   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_I __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x09
	#define SECUREEND_I   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_J __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x0A
	#define SECUREEND_J   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define SECUREBEGIN_K __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0x0B
	#define SECUREEND_K   __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD6 __asm _emit 0xFF
	#define NANOBEGIN     __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD7 __asm _emit 0x01
	#define NANOEND       __asm _emit 0xEB __asm _emit 0x03 __asm _emit 0xD6 __asm _emit 0xD7 __asm _emit 0x00
#endif