LIBRARY "msvcrt.dll"
EXPORTS

#include "func.def.in"

#ifdef __i386__
; List of I386 C++ mangled symbols which matches the first I386 version of msvcrt.dll (Microsoft Visual C++ 4.2)
; public: __thiscall __non_rtti_object::__non_rtti_object(class __non_rtti_object const &)
??0__non_rtti_object@@QAE@ABV0@@Z ; has WINAPI (@4)
; public: __thiscall __non_rtti_object::__non_rtti_object(char const *)
??0__non_rtti_object@@QAE@PBD@Z ; has WINAPI (@4)
; public: __thiscall bad_cast::bad_cast(char const *const &)
??0bad_cast@@QAE@ABQBD@Z ; has WINAPI (@4)
; public: __thiscall bad_cast::bad_cast(class bad_cast const &)
??0bad_cast@@QAE@ABV0@@Z ; has WINAPI (@4)
; public: __thiscall bad_typeid::bad_typeid(class bad_typeid const &)
??0bad_typeid@@QAE@ABV0@@Z ; has WINAPI (@4)
; public: __thiscall bad_typeid::bad_typeid(char const *)
??0bad_typeid@@QAE@PBD@Z ; has WINAPI (@4)
; public: __thiscall exception::exception(char const *const &)
??0exception@@QAE@ABQBD@Z ; has WINAPI (@4)
; public: __thiscall exception::exception(class exception const &)
??0exception@@QAE@ABV0@@Z ; has WINAPI (@4)
; public: __thiscall exception::exception(void)
??0exception@@QAE@XZ
; public: virtual __thiscall __non_rtti_object::~__non_rtti_object(void)
??1__non_rtti_object@@UAE@XZ
; public: virtual __thiscall bad_cast::~bad_cast(void)
??1bad_cast@@UAE@XZ
; public: virtual __thiscall bad_typeid::~bad_typeid(void)
??1bad_typeid@@UAE@XZ
; public: virtual __thiscall exception::~exception(void)
??1exception@@UAE@XZ
; public: virtual __thiscall type_info::~type_info(void)
??1type_info@@UAE@XZ
; void *__cdecl operator new(unsigned int)
??2@YAPAXI@Z
; void __cdecl operator delete(void *)
??3@YAXPAX@Z
; public: class __non_rtti_object &__thiscall __non_rtti_object::operator =(class __non_rtti_object const &)
??4__non_rtti_object@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: class bad_cast &__thiscall bad_cast::operator =(class bad_cast const &)
??4bad_cast@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: class bad_typeid &__thiscall bad_typeid::operator =(class bad_typeid const &)
??4bad_typeid@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: class exception &__thiscall exception::operator =(class exception const &)
??4exception@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: int __thiscall type_info::operator ==(class type_info const &)const
??8type_info@@QBEHABV0@@Z ; has WINAPI (@4)
; public: int __thiscall type_info::operator !=(class type_info const &)const
??9type_info@@QBEHABV0@@Z ; has WINAPI (@4)
; const __non_rtti_object::$vftable
??_7__non_rtti_object@@6B@ DATA
; const bad_cast::$vftable
??_7bad_cast@@6B@ DATA
; const bad_typeid::$vftable
??_7bad_typeid@@6B@ DATA
; const exception::$vftable
??_7exception@@6B@ DATA
; public: virtual void *__thiscall __non_rtti_object::__vecDelDtor(unsigned int)
??_E__non_rtti_object@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall bad_cast::__vecDelDtor(unsigned int)
??_Ebad_cast@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall bad_typeid::__vecDelDtor(unsigned int)
??_Ebad_typeid@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall exception::__vecDelDtor(unsigned int)
??_Eexception@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall __non_rtti_object::__delDtor(unsigned int)
??_G__non_rtti_object@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall bad_cast::__delDtor(unsigned int)
??_Gbad_cast@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall bad_typeid::__delDtor(unsigned int)
??_Gbad_typeid@@UAEPAXI@Z ; has WINAPI (@4)
; public: virtual void *__thiscall exception::__delDtor(unsigned int)
??_Gexception@@UAEPAXI@Z ; has WINAPI (@4)
; int(__cdecl *)(unsigned int)__cdecl _query_new_handler(void)
?_query_new_handler@@YAP6AHI@ZXZ
; int __cdecl _query_new_mode(void)
?_query_new_mode@@YAHXZ
; int(__cdecl *)(unsigned int)__cdecl _set_new_handler(int(__cdecl *)(unsigned int))
?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
; int __cdecl _set_new_mode(int)
?_set_new_mode@@YAHH@Z
; void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *)__cdecl _set_se_translator(void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *))
?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
; public: int __thiscall type_info::before(class type_info const &)const
?before@type_info@@QBEHABV1@@Z ; has WINAPI (@4)
; public: char const *__thiscall type_info::name(void)const
?name@type_info@@QBEPBDXZ
; public: char const *__thiscall type_info::raw_name(void)const
?raw_name@type_info@@QBEPBDXZ
; void(__cdecl *)(void)__cdecl set_new_handler(void(__cdecl *)(void))
?set_new_handler@@YAP6AXXZP6AXXZ@Z
; void(__cdecl *)(void)__cdecl set_terminate(void(__cdecl *)(void))
?set_terminate@@YAP6AXXZP6AXXZ@Z
; void(__cdecl *)(void)__cdecl set_unexpected(void(__cdecl *)(void))
?set_unexpected@@YAP6AXXZP6AXXZ@Z
; void __cdecl terminate(void)
?terminate@@YAXXZ
; void __cdecl unexpected(void)
?unexpected@@YAXXZ
; public: virtual char const *__thiscall exception::what(void)const
?what@exception@@UBEPBDXZ
#endif

#ifdef __x86_64__
; List of X64 C++ mangled symbols which matches the first X64 version of msvcrt.dll (Windows Server 2003 SP1 / Windows XP x64)
; public: __cdecl __non_rtti_object::__non_rtti_object(class __non_rtti_object const & __ptr64) __ptr64
; GCC = __ZN17__non_rtti_objectC2ERKS_
??0__non_rtti_object@@QEAA@AEBV0@@Z
; public: __cdecl __non_rtti_object::__non_rtti_object(char const * __ptr64) __ptr64
; GCC = __ZN17__non_rtti_objectC1ERKS_
??0__non_rtti_object@@QEAA@PEBD@Z
; private: __cdecl bad_cast::bad_cast(char const * __ptr64 const * __ptr64) __ptr64
??0bad_cast@@AEAA@PEBQEBD@Z
; public: __cdecl bad_cast::bad_cast(char const * __ptr64 const & __ptr64) __ptr64
??0bad_cast@@QEAA@AEBQEBD@Z
; public: __cdecl bad_cast::bad_cast(class bad_cast const & __ptr64) __ptr64
??0bad_cast@@QEAA@AEBV0@@Z
; public: __cdecl bad_cast::bad_cast(char const * __ptr64) __ptr64
??0bad_cast@@QEAA@PEBD@Z
; public: __cdecl bad_typeid::bad_typeid(class bad_typeid const & __ptr64) __ptr64
??0bad_typeid@@QEAA@AEBV0@@Z
; public: __cdecl bad_typeid::bad_typeid(char const * __ptr64) __ptr64
??0bad_typeid@@QEAA@PEBD@Z
; public: __cdecl exception::exception(char const * __ptr64 const & __ptr64) __ptr64
??0exception@@QEAA@AEBQEBD@Z
; public: __cdecl exception::exception(char const * __ptr64 const & __ptr64,int) __ptr64
??0exception@@QEAA@AEBQEBDH@Z
; public: __cdecl exception::exception(class exception const & __ptr64) __ptr64
??0exception@@QEAA@AEBV0@@Z
; public: __cdecl exception::exception(void) __ptr64
??0exception@@QEAA@XZ
; public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void) __ptr64
??1__non_rtti_object@@UEAA@XZ
; public: virtual __cdecl bad_cast::~bad_cast(void) __ptr64
??1bad_cast@@UEAA@XZ
; public: virtual __cdecl bad_typeid::~bad_typeid(void) __ptr64
??1bad_typeid@@UEAA@XZ
; public: virtual __cdecl exception::~exception(void) __ptr64
??1exception@@UEAA@XZ
; public: virtual __cdecl type_info::~type_info(void) __ptr64
??1type_info@@UEAA@XZ
; void * __ptr64 __cdecl operator new(unsigned __int64)
; GCC = __Znwy
??2@YAPEAX_K@Z
; void __cdecl operator delete(void * __ptr64)
; GCC = __ZdlPv
??3@YAXPEAX@Z
; public: class __non_rtti_object & __ptr64 __cdecl __non_rtti_object::operator=(class __non_rtti_object const & __ptr64) __ptr64
??4__non_rtti_object@@QEAAAEAV0@AEBV0@@Z
; public: class bad_cast & __ptr64 __cdecl bad_cast::operator=(class bad_cast const & __ptr64) __ptr64
??4bad_cast@@QEAAAEAV0@AEBV0@@Z
; public: class bad_typeid & __ptr64 __cdecl bad_typeid::operator=(class bad_typeid const & __ptr64) __ptr64
??4bad_typeid@@QEAAAEAV0@AEBV0@@Z
; public: class exception & __ptr64 __cdecl exception::operator=(class exception const & __ptr64) __ptr64
??4exception@@QEAAAEAV0@AEBV0@@Z
; public: int __cdecl type_info::operator==(class type_info const & __ptr64)const  __ptr64
??8type_info@@QEBAHAEBV0@@Z
; public: int __cdecl type_info::operator!=(class type_info const & __ptr64)const  __ptr64
??9type_info@@QEBAHAEBV0@@Z
; const  __non_rtti_object::`vftable'
??_7__non_rtti_object@@6B@ DATA
; const  bad_cast::`vftable'
??_7bad_cast@@6B@ DATA
; const  bad_typeid::`vftable'
??_7bad_typeid@@6B@ DATA
; const  exception::`vftable'
??_7exception@@6B@ DATA
; public: void __cdecl bad_cast::`default constructor closure'(void) __ptr64
??_Fbad_cast@@QEAAXXZ
; public: void __cdecl bad_typeid::`default constructor closure'(void) __ptr64
??_Fbad_typeid@@QEAAXXZ
; void * __ptr64 __cdecl operator new[](unsigned __int64)
; GNU = __Znay
??_U@YAPEAX_K@Z
; void __cdecl operator delete[](void * __ptr64)
; GNU = __ZdaPv
??_V@YAXPEAX@Z
; int (__cdecl*__cdecl _query_new_handler(void))(unsigned __int64)
; GNU = __Z18_query_new_handlerv
?_query_new_handler@@YAP6AH_K@ZXZ
; int __cdecl _query_new_mode(void)
; GNU = __Z15_query_new_modev
?_query_new_mode@@YAHXZ
; int (__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned __int64)))(unsigned __int64)
; GNU = __Z16_set_new_handlerPFiyE
?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z
; int __cdecl _set_new_mode(int)
; GNU = __Z13_set_new_modei
?_set_new_mode@@YAHH@Z
; void (__cdecl*__cdecl _set_se_translator(void (__cdecl*)(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)))(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
; GNU = __Z18_set_se_translatorPFvjP19_EXCEPTION_POINTERSE
?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
; public: int __cdecl type_info::before(class type_info const & __ptr64)const  __ptr64
?before@type_info@@QEBAHAEBV1@@Z
; public: char const * __ptr64 __cdecl type_info::name(void)const  __ptr64
?name@type_info@@QEBAPEBDXZ
; public: char const * __ptr64 __cdecl type_info::raw_name(void)const  __ptr64
?raw_name@type_info@@QEBAPEBDXZ
; void (__cdecl*__cdecl set_new_handler(void (__cdecl*)(void)))(void)
; GNU = __Z15set_new_handlerPFvvE
?set_new_handler@@YAP6AXXZP6AXXZ@Z
; void (__cdecl*__cdecl set_terminate(void (__cdecl*)(void)))(void)
; GNU = __Z13set_terminatePFvvE
?set_terminate@@YAP6AXXZP6AXXZ@Z
; void (__cdecl*__cdecl set_unexpected(void (__cdecl*)(void)))(void)
; GNU = __Z14set_unexpectedPFvvE
?set_unexpected@@YAP6AXXZP6AXXZ@Z
; void __cdecl terminate(void)
; GNU = __Z9terminatev
?terminate@@YAXXZ
; void __cdecl unexpected(void)
; GNU = __Z10unexpectedv
?unexpected@@YAXXZ
; public: virtual char const * __ptr64 __cdecl exception::what(void)const  __ptr64
?what@exception@@UEBAPEBDXZ
#endif

#ifdef __arm__
; List of ARM32 C++ mangled symbols which matches the first ARM32 version of msvcrt.dll (Windows RT 8.0)
; public: __cdecl __non_rtti_object::__non_rtti_object(class __non_rtti_object const &)
??0__non_rtti_object@@QAA@ABV0@@Z
; public: __cdecl __non_rtti_object::__non_rtti_object(char const *)
??0__non_rtti_object@@QAA@PBD@Z
; private: __cdecl bad_cast::bad_cast(char const *const *)
??0bad_cast@@AAA@PBQBD@Z
; public: __cdecl bad_cast::bad_cast(class bad_cast const &)
??0bad_cast@@QAA@ABV0@@Z
; public: __cdecl bad_cast::bad_cast(char const *)
??0bad_cast@@QAA@PBD@Z
; public: __cdecl bad_typeid::bad_typeid(class bad_typeid const &)
??0bad_typeid@@QAA@ABV0@@Z
; public: __cdecl bad_typeid::bad_typeid(char const *)
??0bad_typeid@@QAA@PBD@Z
; public: __cdecl exception::exception(char const *const &)
??0exception@@QAA@ABQBD@Z
; public: __cdecl exception::exception(char const *const &,int)
??0exception@@QAA@ABQBDH@Z
; public: __cdecl exception::exception(class exception const &)
??0exception@@QAA@ABV0@@Z
; public: __cdecl exception::exception(void)
??0exception@@QAA@XZ
; public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void)
??1__non_rtti_object@@UAA@XZ
; public: virtual __cdecl bad_cast::~bad_cast(void)
??1bad_cast@@UAA@XZ
; public: virtual __cdecl bad_typeid::~bad_typeid(void)
??1bad_typeid@@UAA@XZ
; public: virtual __cdecl exception::~exception(void)
??1exception@@UAA@XZ
; public: virtual __cdecl type_info::~type_info(void)
??1type_info@@UAA@XZ
; void *__cdecl operator new(unsigned int)
??2@YAPAXI@Z
; void *__cdecl operator new(unsigned int,int,char const *,int)
??2@YAPAXIHPBDH@Z
; void __cdecl operator delete(void *)
??3@YAXPAX@Z
; public: class __non_rtti_object &__cdecl __non_rtti_object::operator =(class __non_rtti_object const &)
??4__non_rtti_object@@QAAAAV0@ABV0@@Z
; public: class bad_cast &__cdecl bad_cast::operator =(class bad_cast const &)
??4bad_cast@@QAAAAV0@ABV0@@Z
; public: class bad_typeid &__cdecl bad_typeid::operator =(class bad_typeid const &)
??4bad_typeid@@QAAAAV0@ABV0@@Z
; public: class exception &__cdecl exception::operator =(class exception const &)
??4exception@@QAAAAV0@ABV0@@Z
; public: int __cdecl type_info::operator ==(class type_info const &)const
??8type_info@@QBAHABV0@@Z
; public: int __cdecl type_info::operator !=(class type_info const &)const
??9type_info@@QBAHABV0@@Z
; const __non_rtti_object::$vftable
??_7__non_rtti_object@@6B@ DATA
; const bad_cast::$vftable
??_7bad_cast@@6B@ DATA
; const bad_typeid::$vftable
??_7bad_typeid@@6B@ DATA
; const exception::$vftable
??_7exception@@6B@ DATA
; public: void __cdecl bad_cast::__dflt_ctor_closure(void)
??_Fbad_cast@@QAAXXZ
; public: void __cdecl bad_typeid::__dflt_ctor_closure(void)
??_Fbad_typeid@@QAAXXZ
; void *__cdecl operator new[](unsigned int)
??_U@YAPAXI@Z
; void *__cdecl operator new[](unsigned int,int,char const *,int)
??_U@YAPAXIHPBDH@Z
; void __cdecl operator delete[](void *)
??_V@YAXPAX@Z
; int(__cdecl *)(unsigned int)__cdecl _query_new_handler(void)
?_query_new_handler@@YAP6AHI@ZXZ
; int(__cdecl *)(unsigned int)__cdecl _set_new_handler(int(__cdecl *)(unsigned int))
?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
; int __cdecl _set_new_mode(int)
?_set_new_mode@@YAHH@Z
; void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *)__cdecl _set_se_translator(void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *))
?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
; public: int __cdecl type_info::before(class type_info const &)const
?before@type_info@@QBAHABV1@@Z
; public: char const *__cdecl type_info::name(void)const
?name@type_info@@QBAPBDXZ
; public: char const *__cdecl type_info::raw_name(void)const
?raw_name@type_info@@QBAPBDXZ
; void(__cdecl *)(void)__cdecl set_terminate(void(__cdecl *)(void))
?set_terminate@@YAP6AXXZP6AXXZ@Z
; void(__cdecl *)(void)__cdecl set_unexpected(void(__cdecl *)(void))
?set_unexpected@@YAP6AXXZP6AXXZ@Z
; void __cdecl terminate(void)
?terminate@@YAXXZ
; void __cdecl unexpected(void)
?unexpected@@YAXXZ
; public: virtual char const *__cdecl exception::what(void)const
?what@exception@@UBAPBDXZ
#endif

#ifdef __aarch64__
; List of ARM64 C++ mangled symbols which matches the first ARM64 version of msvcrt.dll (Windows 10 Fall Creators Update)
; public: __cdecl __non_rtti_object::__non_rtti_object(class __non_rtti_object const &__ptr64 )__ptr64
??0__non_rtti_object@@QEAA@AEBV0@@Z
; public: __cdecl __non_rtti_object::__non_rtti_object(char const *__ptr64)__ptr64
??0__non_rtti_object@@QEAA@PEBD@Z
; private: __thiscall bad_cast::bad_cast(char const *const *)
??0bad_cast@@AAE@PBQBD@Z
; private: __cdecl bad_cast::bad_cast(char const *__ptr64 const *__ptr64)__ptr64
??0bad_cast@@AEAA@PEBQEBD@Z
; public: __thiscall bad_cast::bad_cast(char const *const &)
??0bad_cast@@QAE@ABQBD@Z
; public: __cdecl bad_cast::bad_cast(char const *__ptr64 const &__ptr64 )__ptr64
??0bad_cast@@QEAA@AEBQEBD@Z
; public: __cdecl bad_cast::bad_cast(class bad_cast const &__ptr64 )__ptr64
??0bad_cast@@QEAA@AEBV0@@Z
; public: __cdecl bad_cast::bad_cast(char const *__ptr64)__ptr64
??0bad_cast@@QEAA@PEBD@Z
; public: __cdecl bad_typeid::bad_typeid(class bad_typeid const &__ptr64 )__ptr64
??0bad_typeid@@QEAA@AEBV0@@Z
; public: __cdecl bad_typeid::bad_typeid(char const *__ptr64)__ptr64
??0bad_typeid@@QEAA@PEBD@Z
; public: __cdecl exception::exception(char const *__ptr64 const &__ptr64 )__ptr64
??0exception@@QEAA@AEBQEBD@Z
; public: __cdecl exception::exception(char const *__ptr64 const &__ptr64 ,int)__ptr64
??0exception@@QEAA@AEBQEBDH@Z
; public: __cdecl exception::exception(class exception const &__ptr64 )__ptr64
??0exception@@QEAA@AEBV0@@Z
; public: __cdecl exception::exception(void)__ptr64
??0exception@@QEAA@XZ
; public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void)__ptr64
??1__non_rtti_object@@UEAA@XZ
; public: virtual __cdecl bad_cast::~bad_cast(void)__ptr64
??1bad_cast@@UEAA@XZ
; public: virtual __cdecl bad_typeid::~bad_typeid(void)__ptr64
??1bad_typeid@@UEAA@XZ
; public: virtual __cdecl exception::~exception(void)__ptr64
??1exception@@UEAA@XZ
; public: virtual __cdecl type_info::~type_info(void)__ptr64
??1type_info@@UEAA@XZ
; void *__ptr64 __cdecl operator new(unsigned __int64)
??2@YAPEAX_K@Z
; void *__ptr64 __cdecl operator new(unsigned __int64,int,char const *__ptr64,int)
??2@YAPEAX_KHPEBDH@Z
; void __cdecl operator delete(void *__ptr64)
??3@YAXPEAX@Z
; public: class __non_rtti_object &__ptr64 __cdecl __non_rtti_object::operator =(class __non_rtti_object const &__ptr64 )__ptr64
??4__non_rtti_object@@QEAAAEAV0@AEBV0@@Z
; public: class bad_cast &__ptr64 __cdecl bad_cast::operator =(class bad_cast const &__ptr64 )__ptr64
??4bad_cast@@QEAAAEAV0@AEBV0@@Z
; public: class bad_typeid &__ptr64 __cdecl bad_typeid::operator =(class bad_typeid const &__ptr64 )__ptr64
??4bad_typeid@@QEAAAEAV0@AEBV0@@Z
; public: class exception &__ptr64 __cdecl exception::operator =(class exception const &__ptr64 )__ptr64
??4exception@@QEAAAEAV0@AEBV0@@Z
; public: int __cdecl type_info::operator ==(class type_info const &__ptr64 )const __ptr64
??8type_info@@QEBAHAEBV0@@Z
; public: int __cdecl type_info::operator !=(class type_info const &__ptr64 )const __ptr64
??9type_info@@QEBAHAEBV0@@Z
; const __non_rtti_object::$vftable
??_7__non_rtti_object@@6B@ DATA
; const bad_cast::$vftable
??_7bad_cast@@6B@ DATA
; const bad_typeid::$vftable
??_7bad_typeid@@6B@ DATA
; const exception::$vftable
??_7exception@@6B@ DATA
; public: void __cdecl bad_cast::__dflt_ctor_closure(void)__ptr64
??_Fbad_cast@@QEAAXXZ
; public: void __cdecl bad_typeid::__dflt_ctor_closure(void)__ptr64
??_Fbad_typeid@@QEAAXXZ
; void *__ptr64 __cdecl operator new[](unsigned __int64)
??_U@YAPEAX_K@Z
; void *__ptr64 __cdecl operator new[](unsigned __int64,int,char const *__ptr64,int)
??_U@YAPEAX_KHPEBDH@Z
; void __cdecl operator delete[](void *__ptr64)
??_V@YAXPEAX@Z
; int(__cdecl *)(unsigned __int64)__cdecl _query_new_handler(void)
?_query_new_handler@@YAP6AH_K@ZXZ
; int(__cdecl *)(unsigned __int64)__cdecl _set_new_handler(int(__cdecl *)(unsigned __int64))
?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z
; int __cdecl _set_new_mode(int)
?_set_new_mode@@YAHH@Z
; void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *__ptr64)__cdecl _set_se_translator(void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *__ptr64))
?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
; public: int __cdecl type_info::before(class type_info const &__ptr64 )const __ptr64
?before@type_info@@QEBAHAEBV1@@Z
; public: char const *__ptr64 __cdecl type_info::name(void)const __ptr64
?name@type_info@@QEBAPEBDXZ
; public: char const *__ptr64 __cdecl type_info::raw_name(void)const __ptr64
?raw_name@type_info@@QEBAPEBDXZ
; void(__cdecl *)(void)__cdecl set_terminate(void(__cdecl *)(void))
?set_terminate@@YAP6AXXZP6AXXZ@Z
; void(__cdecl *)(void)__cdecl set_unexpected(void(__cdecl *)(void))
?set_unexpected@@YAP6AXXZP6AXXZ@Z
; void __cdecl terminate(void)
?terminate@@YAXXZ
; void __cdecl unexpected(void)
?unexpected@@YAXXZ
; public: virtual char const *__ptr64 __cdecl exception::what(void)const __ptr64
?what@exception@@UEBAPEBDXZ
#endif


; This is list of symbols available in the original Microsoft Visual C++ 4.2 version of msvcrt.dll
; Same set of symbols are available in Windows NT 4.0 OS system version of msvcrt.dll
F_I386($I10_OUTPUT) ; $I10_OUTPUT is available also in Windows XP x64, but was removed in Windows Vista x64
F_I386(_CIacos)
F_I386(_CIasin)
F_I386(_CIatan)
F_I386(_CIatan2)
F_I386(_CIcos)
F_I386(_CIcosh)
F_I386(_CIexp)
F_I386(_CIfmod)
F_I386(_CIlog)
F_I386(_CIlog10)
F_I386(_CIpow)
F_I386(_CIsin)
F_I386(_CIsinh)
F_I386(_CIsqrt)
F_I386(_CItan)
F_I386(_CItanh)
F_I386(_CxxThrowException@8)
F_NON_I386(_CxxThrowException)
F_I386(_EH_prolog)
_Getdays
_Getmonths
_Gettnames
_HUGE DATA
_Strftime
_XcptFilter
F_X86_ANY(__CxxFrameHandler)
F_I386(__CxxLongjmpUnwind@4)
__RTCastToVoid
__RTDynamicCast
__RTtypeid
__STRINGTOLD
__argc DATA
__argv DATA
__badioinfo DATA
__crtCompareStringA
__crtGetLocaleInfoW
__crtLCMapStringA
__dllonexit
__doserrno
__fpecode
F_I386(__msvcrt_getmainargs == __getmainargs) ; pre-XP i386 msvcrt.dll's __getmainargs is incompatible with mingw-w64's __getmainargs, real __getmainargs provided by emu
F_NON_I386(__getmainargs)
F_X86_ANY(__initenv DATA) ; arm32 and arm64 __initenv provided by emu
__isascii
__iscsym
__iscsymf
F_X86_ANY(__lc_codepage DATA)
__lc_handle DATA
__lconv_init
__mb_cur_max DATA
F_I386(__p___argc) ; x64, arm32 and arm64 __p___argc provided by emu
F_I386(__p___argv) ; x64, arm32 and arm64 __p___argv provided by emu
F_I386(__p___initenv) ; x64, arm32 and arm64 __p___initenv provided by emu
F_I386(__p___mb_cur_max) ; x64, arm32 and arm64 __p___mb_cur_max provided by emu
F_I386(__p___wargv) ; x64, arm32 and arm64 __p___wargv provided by emu
F_I386(__p___winitenv) ; x64, arm32 and arm64 __p___winitenv provided by emu
F_I386(__p__acmdln) ; x64, arm32 and arm64 __p__acmdln provided by emu
F_I386(__p__amblksiz)
F_I386(__p__commode) ; x64, arm32 and arm64 __p__commode provided by emu
F_NON_X64(__p__daylight F_NON_I386(== __daylight)) ; arm32 and arm64 __p__daylight provided by alias and x64 __p__daylight provided by emu
F_NON_X64(__p__dstbias F_NON_I386(== __dstbias)) ; arm32 and arm64 __p__dstbias provided by alias and x64 __p__dstbias provided by emu
F_I386(__p__environ) ; x64 __p__environ provided by emu
F_I386(__p__fileinfo)
F_I386(__p__fmode) ; x64, arm32 and arm64 __p__fmode provided by emu
__p__iob F_NON_I386(== __iob_func) ; x64, arm32 and arm64 __p__iob provided by alias
F_I386(__p__mbctype) ; x64, arm32 and arm64 __p__mbctype provided by emu
F_I386(__p__osver) ; x64, arm32 and arm64 __p__osver provided by emu
F_I386(__p__pctype) ; x64, arm32 and arm64 __p__pctype provided by emu
F_I386(__p__pgmptr) ; x64, arm32 and arm64 __p__pgmptr provided by emu
F_I386(__p__pwctype) ; x64, arm32 and arm64 __p__pwctype provided by emu
F_I386(__p__timezone) ; x64, arm32 and arm64 __p__timezone provided by emu
F_I386(__p__tzname) ; x64, arm32 and arm64 __p__tzname provided by emu
F_I386(__p__wcmdln) ; x64, arm32 and arm64 __p__wcmdln provided by emu
F_I386(__p__wenviron) ; x64 __p__wenviron provided by emu
F_I386(__p__winmajor) ; x64, arm32 and arm64 __p__winmajor provided by emu
F_I386(__p__winminor) ; x64, arm32 and arm64 __p__winminor provided by emu
F_I386(__p__winver) ; x64, arm32 and arm64 __p__winver provided by emu
F_I386(__p__wpgmptr) ; x64, arm32 and arm64 __p__wpgmptr provided by emu
__pioinfo DATA
__pxcptinfoptrs
__set_app_type
F_X86_ANY(__setlc_active DATA)
__setusermatherr
F_X86_ANY(__threadhandle)
F_X86_ANY(__threadid)
__toascii
__unDName
F_X86_ANY(__unguarded_readlc_active DATA)
__wargv DATA
F_I386(__msvcrt_wgetmainargs == __wgetmainargs) ; pre-XP i386 msvcrt.dll's __wgetmainargs is incompatible with mingw-w64's __wgetmainargs, real __wgetmainargs provided by emu
F_NON_I386(__wgetmainargs)
F_X86_ANY(__winitenv DATA) ; arm32 and arm64 __winitenv provided by emu
F_I386(_abnormal_termination)
_access
_acmdln DATA
F_I386(_adj_fdiv_m16i) ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
F_I386(_adj_fdiv_m32) ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
F_I386(_adj_fdiv_m32i) ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
F_I386(_adj_fdiv_m64) ; msvc symbol is without decoration but callee pop stack (like stdcall @8)
F_I386(_adj_fdiv_r)
F_I386(_adj_fdivr_m16i) ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
F_I386(_adj_fdivr_m32) ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
F_I386(_adj_fdivr_m32i) ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
F_I386(_adj_fdivr_m64) ; msvc symbol is without decoration but callee pop stack (like stdcall @8)
F_I386(_adj_fpatan)
F_I386(_adj_fprem)
F_I386(_adj_fprem1)
F_I386(_adj_fptan)
F_I386(_adjust_fdiv DATA)
_aexit_rtn DATA
_amsg_exit
_assert
_atodbl
_atoi64
_atoldbl
F_X86_ANY(_beep)
_beginthread
_beginthreadex
_c_exit
_cabs DATA
_callnewh
_cexit
_cgets
_chdir
_chdrive
_chgsign
_chmod
_chsize
_clearfp
_close
_commit
_commode DATA
_control87
_controlfp
_copysign
_cprintf
_cputs
_creat
_cscanf
_ctype DATA
_cwait
_daylight DATA
F_X86_ANY(_dstbias DATA)
_dup
_dup2
_ecvt
_endthread
_endthreadex
F_X86_ANY(_environ DATA)
_eof
_errno
F_I386(_except_handler2)
F_I386(_except_handler3)
_execl
_execle
_execlp
_execlpe
_execv
_execve
_execvp
_execvpe
_exit
_expand
_fcloseall
_fcvt
_fdopen
_fgetchar
_fgetwchar
_filbuf
F_X86_ANY(_fileinfo DATA)
_filelength
_filelengthi64
_fileno
_findclose
_findfirst
_findfirsti64
_findnext
_findnexti64
_finite
_flsbuf
_flushall
_fmode DATA
_fpclass
F_NON_X64(_fpieee_flt)
_fpreset F_LD80(DATA)
_fputchar
_fputwchar
_fsopen
_fstat
_fstati64
_ftime
F_I386(_ftol)
_fullpath
_futime
_gcvt
_get_osfhandle
F_X86_ANY(_get_sbh_threshold)
_getch
_getche
_getcwd
_getdcwd
_getdiskfree
F_I386(_getdllprocaddr) ; _getdllprocaddr is available also in Windows XP x64, but was removed in Windows Vista x64
_getdrive
F_X86_ANY(_getdrives)
_getmaxstdio
_getmbcp
F_X86_ANY(_getpid)
F_X86_ANY(_getsystime)
_getw
F_X86_ANY(_getws)
F_I386(_global_unwind2)
F_I386(_heapadd) ; _heapadd is available also in Windows XP x64, but was removed in Windows Vista x64
_heapchk
_heapmin
F_X86_ANY(_heapset)
F_I386(_heapused) ; _heapused is available also in Windows XP x64, but was removed in Windows Vista x64
_heapwalk
_hypot
_i64toa
_i64tow
_initterm
F_I386(_inp)
F_I386(_inpd)
F_I386(_inpw)
_iob DATA
_isatty
_isctype
_ismbbalnum
_ismbbalpha
_ismbbgraph
_ismbbkalnum
_ismbbkana
_ismbbkprint
_ismbbkpunct
_ismbblead
_ismbbprint
_ismbbpunct
_ismbbtrail
_ismbcalnum
_ismbcalpha
_ismbcdigit
_ismbcgraph
_ismbchira
_ismbckata
_ismbcl0
_ismbcl1
_ismbcl2
_ismbclegal
_ismbclower
_ismbcprint
_ismbcpunct
_ismbcspace
_ismbcsymbol
_ismbcupper
_ismbslead
_ismbstrail
_isnan
_itoa
_itow
_j0
_j1
_jn
_kbhit
_lfind
F_I386(_loaddll) ; _loaddll is available also in Windows XP x64, but was removed in Windows Vista x64
F_I386(_local_unwind2)
_lock
_locking
_logb
F_I386(_longjmpex)
_lrotl
_lrotr
_lsearch
_lseek
_lseeki64
_ltoa
_ltow
_makepath
_mbbtombc
_mbbtype
_mbccpy
_mbcjistojms
_mbcjmstojis
_mbclen
_mbctohira
_mbctokata
_mbctolower
_mbctombb
_mbctoupper
_mbctype DATA
_mbsbtype
_mbscat
_mbschr
_mbscmp
_mbscoll
_mbscpy
_mbscspn
_mbsdec
_mbsdup
_mbsicmp
_mbsicoll
_mbsinc
_mbslen
_mbslwr
_mbsnbcat
_mbsnbcmp
_mbsnbcnt
_mbsnbcoll
_mbsnbcpy
_mbsnbicmp
_mbsnbicoll
_mbsnbset
_mbsncat
_mbsnccnt
_mbsncmp
_mbsncoll
_mbsncpy
_mbsnextc
_mbsnicmp
_mbsnicoll
_mbsninc
_mbsnset
_mbspbrk
_mbsrchr
_mbsrev
_mbsset
_mbsspn
_mbsspnp
_mbsstr
_mbstok
_mbstrlen
_mbsupr
_memccpy
_memicmp
_mkdir
_mktemp
_msize
_nextafter
; _onexit ; disable _onexit for compatibility with DLL builds, real _onexit function provided by mingw-w64
_open
_open_osfhandle
_osver DATA
F_I386(_outp)
F_I386(_outpd)
F_I386(_outpw)
_pclose
_pctype DATA
_pgmptr DATA
_pipe
_popen
_purecall
_putch
_putenv
_putw
_putws
_pwctype DATA
_read
_rmdir
_rmtmp
_rotl
_rotr
F_I386(_safe_fdiv)
F_I386(_safe_fdivr)
F_I386(_safe_fprem)
F_I386(_safe_fprem1)
_scalb
_searchenv
F_I386(_seh_longjmp_unwind@4)
_set_error_mode
F_X86_ANY(_set_sbh_threshold)
F_X86_ANY(_seterrormode)
F_NON_ARM64(_setjmp)
F_I386(_setjmp3)
F_X86_ANY(_setmaxstdio)
_setmbcp
_setmode
F_X86_ANY(_setsystime)
F_X86_ANY(_sleep)
_snprintf
_snwprintf
_sopen
_spawnl
_spawnle
_spawnlp
_spawnlpe
_spawnv
_spawnve
_spawnvp
_spawnvpe
_splitpath
_stat
_stati64
_statusfp
_strcmpi
_strdate
_strdup
_strerror
_stricmp
_stricoll
_strlwr
_strncoll
_strnicmp
_strnicoll
_strnset
_strrev
_strset
_strtime
_strupr
_swab
_sys_errlist DATA
_sys_nerr DATA
_tell
_telli64
_tempnam
_timezone DATA
_tolower
_toupper
_tzname DATA
_tzset
_ui64toa
_ui64tow
_ultoa
_ultow
_umask
_ungetch
_unlink
F_I386(_unloaddll) ; _unloaddll is available also in Windows XP x64, but was removed in Windows Vista x64
_unlock
_utime
_vsnprintf
_vsnwprintf
_waccess
_wasctime
_wchdir
_wchmod
_wcmdln DATA
_wcreat
_wcsdup
_wcsicmp
_wcsicoll
_wcslwr
_wcsncoll
_wcsnicmp
_wcsnicoll
_wcsnset
_wcsrev
_wcsset
_wcsupr
_wctime
F_X86_ANY(_wenviron DATA)
_wexecl
_wexecle
_wexeclp
_wexeclpe
_wexecv
_wexecve
_wexecvp
_wexecvpe
_wfdopen
_wfindfirst
_wfindfirsti64
_wfindnext
_wfindnexti64
_wfopen
_wfreopen
_wfsopen
_wfullpath
_wgetcwd
_wgetdcwd
_wgetenv
_winmajor DATA
_winminor DATA
F_X86_ANY(_winver DATA)
_wmakepath
_wmkdir
_wmktemp
_wopen
_wperror
_wpgmptr DATA
_wpopen
_wputenv
_wremove
_wrename
_write
_wrmdir
_wsearchenv
_wsetlocale
_wsopen
_wspawnl
_wspawnle
_wspawnlp
_wspawnlpe
_wspawnv
_wspawnve
_wspawnvp
_wspawnvpe
_wsplitpath
_wstat
_wstati64
_wstrdate
_wstrtime
_wsystem
_wtempnam
_wtmpnam
_wtoi
_wtoi64
_wtol
_wunlink
_wutime
_y0
_y1
_yn
abort
abs
acos
asctime
asin
atan
atan2 F_X86_ANY(DATA)
_crt_atexit == atexit ; rename atexit to _crt_atexit for compatibility with UCRT, real atexit function provided by mingw-w64
atof
atoi
atol
bsearch
calloc
ceil F_X86_ANY(DATA)
clearerr
clock
cos F_X86_ANY(DATA)
cosh
ctime
difftime
div
exit
exp F_X86_ANY(DATA)
fabs DATA
fclose
feof
ferror
fflush
fgetc
fgetpos
fgets
fgetwc
fgetws
floor F_X86_ANY(DATA)
fmod F_X86_ANY(DATA)
fopen
fprintf
fputc
fputs
fputwc
fputws
fread
free
freopen
frexp F_X86_ANY(DATA)
fscanf
fseek
fsetpos
ftell
fwprintf
fwrite
fwscanf
getc
getchar
getenv
F_X86_ANY(gets)
getwc
getwchar
gmtime
is_wctype
isalnum
isalpha
iscntrl
isdigit
isgraph
isleadbyte
islower
isprint
ispunct
isspace
isupper
iswalnum
iswalpha
iswascii
iswcntrl
iswctype
iswdigit
iswgraph
iswlower
iswprint
iswpunct
iswspace
iswupper
iswxdigit
isxdigit
labs
ldexp F_X86_ANY(DATA)
ldiv
localeconv
localtime
log F_X86_ANY(DATA)
log10
longjmp
malloc
mblen
mbstowcs
mbtowc
memchr
memcmp
memcpy
memmove
memset
mktime
modf DATA
perror
pow DATA
printf
putc
putchar
puts
putwc
putwchar
qsort
raise
rand
realloc
remove
rename
rewind
scanf
setbuf
setlocale
setvbuf
signal
sin F_X86_ANY(DATA)
sinh ; if we implement sinh, we can set it DATA only.
sprintf
sqrt DATA
srand
sscanf
strcat
strchr
strcmp
strcoll
strcpy
strcspn
strerror
strftime
strlen
strncat
strncmp
strncpy
strpbrk
strrchr
strspn
strstr
strtod
strtok
strtol
strtoul
strxfrm
F_X86_ANY(_swprintf == swprintf) ; rename i386 and x64 swprintf to _swprintf (ARM already provided _swprintf) for compatibility with msvcr80+, real C95+ compatible swprintf provided by mingw-w64
swscanf
system
tan
tanh ; if we implement tanh, we can set it to DATA only.
time
tmpfile
tmpnam
tolower
toupper
towlower
towupper
ungetc
ungetwc
vfprintf
vfwprintf
vprintf
vsprintf
F_X86_ANY(_vswprintf == vswprintf) ; rename i386 and x64 vswprintf to _vswprintf (ARM already provided _vswprintf) for compatibility with msvcr80+, real C95+ compatible vswprintf provided by mingw-w64
vwprintf
wcscat
wcschr
wcscmp
wcscoll
wcscpy
wcscspn
wcsftime
wcslen
wcsncat
wcsncmp
wcsncpy
wcspbrk
wcsrchr
wcsspn
wcsstr
wcstod
_wcstok == wcstok ; provide nonstandard function "wcstok" in the DLL, under the name "_wcstok" to match UCRT, the C95+ compatible "wcstok" is provided by mingw-w64 or by wcstok_s alias
wcstol
wcstombs
wcstoul
wcsxfrm
wctomb
wprintf
wscanf

; These symbols were added in Microsoft Visual C++ 5.0 SP1 and Windows 98 First Edition OS system versions of msvcrt.dll
; They are not available in Microsoft Visual C++ 4.2, nor in 5.0 and neither in Windows NT 4.0 OS system version
F_I386(__p__mbcasemap) ; x64, arm32 and arm64 __p__mbcasemap provided by emu
_mbcasemap DATA

; These symbols were added in Microsoft Visual C++ 6.0 and Windows 98 Second Edition OS system versions of msvcrt.dll
F_X86_ANY(__lc_collate_cp DATA)
__unDNameEx
F_I386(_chkesp)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This is end of the list of symbols available in the original Microsoft Visual C++ versions of msvcrt.dll ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


; These symbols were added in Windows ME and Windows 2000 OS system versions of msvcrt.dll
#ifdef __i386__
; void *__cdecl operator new[](unsigned int)
??_U@YAPAXI@Z
; void __cdecl operator delete[](void *)
??_V@YAXPAX@Z
#endif
_ctime64
_findfirst64
_findnext64
F_NON_I386(_fstat64) ; i386 _fstat64 replaced by emu
_ftime64
_futime64
_gmtime64
_localtime64
_mktime64
F_X86_ANY(_osplatform DATA)
F_NON_I386(_stat64) ; i386 _stat64 replaced by emu
F_NON_I386(_time64) ; i386 _time64 replaced by emu
_utime64
_wctime64
_wfindfirst64
_wfindnext64
F_NON_I386(_wstat64) ; i386 _wstat64 replaced by emu
_wutime64

; These symbols were added in Windows 2000 SP4 OS system version of msvcrt.dll
F_X86_ANY(_get_heap_handle) ; _get_heap_handle is not available in Windows XP and Windows XP SP1 OS system versions of msvcrt.dll, but is in XP SP3

; These symbols were added in Windows XP OS system version of msvcrt.dll
#ifdef __i386__
; private: __thiscall bad_cast::bad_cast(char const *const *)
??0bad_cast@@AAE@PBQBD@Z ; has WINAPI (@4)
; public: __thiscall bad_cast::bad_cast(char const *)
??0bad_cast@@QAE@PBD@Z ; has WINAPI (@4)
; public: void __thiscall bad_cast::__dflt_ctor_closure(void)
??_Fbad_cast@@QAEXXZ
; public: void __thiscall bad_typeid::__dflt_ctor_closure(void)
??_Fbad_typeid@@QAEXXZ
#endif
__uncaught_exception
F_I386(__CxxCallUnwindDtor)
F_I386(__CxxDetectRethrow)
F_I386(__CxxExceptionFilter)
F_I386(__CxxQueryExceptionSize)
F_I386(__CxxRegisterExceptionObject)
F_I386(__CxxUnregisterExceptionObject)
__DestructExceptionObject
F_NON_I386(___lc_codepage_func) ; i386 ___lc_codepage_func replaced by emu
___lc_handle_func
F_NON_I386(___mb_cur_max_func) ; i386 ___mb_cur_max_func replaced by emu
F_X86_ANY(___setlc_active_func)
F_X86_ANY(___unguarded_readlc_active_add_func)
__crtCompareStringW
__crtGetStringTypeW
__crtLCMapStringW
F_NON_I386(__iob_func) ; i386 __iob_func replaced by alias
F_NON_I386(__pctype_func) ; i386 __pctype_func replaced by emu
__wcserror
F_NON_I386(_aligned_free) ; i386 _aligned_free replaced by emu
F_NON_I386(_aligned_malloc) ; i386 _aligned_malloc replaced by emu
F_NON_I386(_aligned_offset_malloc) ; i386 _aligned_offset_malloc replaced by emu
F_NON_I386(_aligned_offset_realloc) ; i386 _aligned_offset_realloc replaced by emu
F_NON_I386(_aligned_realloc) ; i386 _aligned_realloc replaced by emu
_cgetws
_cputws
_cwprintf
_cwscanf
_getwch
_getwche
_putwch
_resetstkoflw
F_NON_I386(_scprintf) ; i386 _scprintf replaced by emu
F_NON_I386(_scwprintf) ; i386 _scwprintf replaced by emu
F_I386(_set_SSE2_enable)
_snscanf
_snwscanf
F_NON_I386(_strtoi64) ; i386 _strtoi64 replaced by emu
F_NON_I386(_strtoui64) ; i386 _strtoui64 replaced by emu
_ungetwch
F_NON_I386(_vscprintf) ; i386 _vscprintf replaced by emu
F_NON_I386(_vscwprintf) ; i386 _vscwprintf replaced by emu
_wcserror
F_NON_I386(_wcstoi64) ; i386 _wcstoi64 replaced by emu
F_NON_I386(_wcstoui64) ; i386 _wcstoui64 replaced by emu
_wtof

; These symbols were added in Windows Server 2003 OS system version of msvcrt.dll
; They are not available in 32-bit Windows XP but are available in 32-bit Windows Vista
F_I386(__CxxCallUnwindVecDtor)
F_X86_ANY(__CxxFrameHandler2)
___lc_collate_cp_func
F_NON_I386(__pwctype_func) ; i386 __pwctype_func replaced by emu
F_NON_I386(_abs64) ; i386 _abs64 replaced by emu
_mkgmtime
_mkgmtime64
F_NON_I386(_rotl64) ; i386 _rotl64 replaced by emu
F_NON_I386(_rotr64) ; i386 _rotr64 replaced by emu
_wctype DATA

; These symbols were added in Windows Server 2003 SP1 and Windows XP x64 OS system version of msvcrt.dll
; This is the first X64 version of msvcrt.dll, all symbols in this section and also above this section are present in all X64 versions of msvcrt.dll
#ifdef __i386__
; public: __thiscall exception::exception(char const *const &,int)
??0exception@@QAE@ABQBDH@Z ; has WINAPI (@8)
#endif
F_NON_I386(__C_specific_handler)
__CppXcptFilter
F_NON_I386(_chgsignf)
F_NON_I386(_copysignf)
F_NON_I386(_finitef)
F_X64(_fpclassf)
F_NON_I386(_hypotf)
F_X64(_isnanf)
F64(_local_unwind)
F_NON_I386(_logbf)
F_X64(_nextafterf)
F_X64(_scalbf)
F_NON_I386(_setjmpex)
F_NON_I386(acosf F_X86_ANY(DATA)) ; i386 acosf provided by emu
F_NON_I386(asinf F_X86_ANY(DATA)) ; i386 asinf provided by emu
F_NON_I386(atan2f F_X86_ANY(DATA)) ; i386 atan2f provided by emu
F_NON_I386(atanf F_X86_ANY(DATA)) ; i386 atanf provided by emu
F_NON_I386(ceilf F_X86_ANY(DATA)) ; i386 ceilf provided by emu
F_NON_I386(cosf F_X86_ANY(DATA)) ; i386 cosf provided by emu
F_NON_I386(coshf DATA) ; i386 coshf provided by emu
F_NON_I386(expf F_X86_ANY(DATA)) ; i386 expf provided by emu
F_NON_I386(floorf F_X86_ANY(DATA)) ; i386 floorf provided by emu
F_NON_I386(fmodf F_X86_ANY(DATA)) ; i386 fmodf provided by emu
F_NON_I386(log10f F_X86_ANY(DATA)) ; i386 log10f provided by emu
F_NON_I386(logf F_X86_ANY(DATA)) ; i386 logf provided by emu
F_NON_I386(modff DATA) ; i386 modff provided by emu
F_NON_I386(powf DATA) ; i386 powf provided by emu
F_NON_I386(F_NON_ARM64(setjmp))
F_NON_I386(sinf F_X86_ANY(DATA)) ; i386 sinf provided by emu
F_NON_I386(sinhf DATA) ; i386 sinhf provided by emu
F_NON_I386(sqrtf DATA) ; i386 sqrtf provided by emu
F_NON_I386(tanf F_X86_ANY(DATA)) ; i386 tanf provided by emu

; These symbols were added in Windows Vista OS system version of msvcrt.dll
#ifdef __i386__
; void *__cdecl operator new(unsigned int,int,char const *,int)
??2@YAPAXIHPBDH@Z
; void *__cdecl operator new[](unsigned int,int,char const *,int)
??_U@YAPAXIHPBDH@Z
#endif
#ifdef __x86_64__
; private: __thiscall bad_cast::bad_cast(char const *const *)
??0bad_cast@@AAE@PBQBD@Z
; public: __thiscall bad_cast::bad_cast(char const *const &)
??0bad_cast@@QAE@ABQBD@Z
; void *__ptr64 __cdecl operator new(unsigned __int64,int,char const *__ptr64,int)
??2@YAPEAX_KHPEBDH@Z
; void *__ptr64 __cdecl operator new[](unsigned __int64,int,char const *__ptr64,int)
??_U@YAPEAX_KHPEBDH@Z
#endif
_CrtCheckMemory
_CrtDbgBreak
_CrtDbgReport
_CrtDbgReportV
_CrtDbgReportW
_CrtDbgReportWV
_CrtDoForAllClientObjects
_CrtDumpMemoryLeaks
_CrtIsMemoryBlock
_CrtIsValidHeapPointer
_CrtIsValidPointer
_CrtMemCheckpoint
_CrtMemDifference
_CrtMemDumpAllObjectsSince
_CrtMemDumpStatistics
_CrtReportBlockType
_CrtSetAllocHook
_CrtSetBreakAlloc
_CrtSetDbgBlockType
_CrtSetDbgFlag
_CrtSetDumpClient
_CrtSetReportFile
_CrtSetReportHook
_CrtSetReportHook2
_CrtSetReportMode
F_I386(__CxxCallUnwindDelDtor)
__CxxFrameHandler3
F_ARM_ANY(__daylight) ; i386 __daylight replaced by alias and x64 __daylight replaced by emu
F_ARM_ANY(__dstbias) ; i386 __dstbias replaced by alias and x64 __dstbias replaced by emu
F_I386(__libm_sse2_acos)
F_I386(__libm_sse2_acosf)
F_I386(__libm_sse2_asin)
F_I386(__libm_sse2_asinf)
F_I386(__libm_sse2_atan)
F_I386(__libm_sse2_atan2)
F_I386(__libm_sse2_atanf)
F_I386(__libm_sse2_cos)
F_I386(__libm_sse2_cosf)
F_I386(__libm_sse2_exp)
F_I386(__libm_sse2_expf)
F_I386(__libm_sse2_log)
F_I386(__libm_sse2_log10)
F_I386(__libm_sse2_log10f)
F_I386(__libm_sse2_logf)
F_I386(__libm_sse2_pow)
F_I386(__libm_sse2_powf)
F_I386(__libm_sse2_sin)
F_I386(__libm_sse2_sinf)
F_I386(__libm_sse2_tan)
F_I386(__libm_sse2_tanf)
__strncnt
__wcserror_s
__wcsncnt
F_ARM_ANY(_access_s) ; i386 and x64 _access_s replaced by emu
_aligned_free_dbg
_aligned_malloc_dbg
_aligned_offset_malloc_dbg
_aligned_offset_realloc_dbg
_aligned_realloc_dbg
_atodbl_l
_atof_l
_atoflt_l
_atoi64_l
_atoi_l
_atol_l
_atoldbl_l
_calloc_dbg
F_ARM_ANY(_cgets_s) ; i386 and x64 _cgets_s replaced by emu
F_ARM_ANY(_cgetws_s) ; i386 and x64 _cgetws_s replaced by emu
F_ARM_ANY(_chsize_s) ; i386 and x64 _chsize_s replaced by emu
_chvalidator
_chvalidator_l
F_ARM_ANY(_controlfp_s) ; i386 and x64 _controlfp_s replaced by emu
_cprintf_l
_cprintf_p
_cprintf_p_l
F_ARM_ANY(_cprintf_s) ; i386 and x64 _cprintf_s replaced by emu
F_ARM_ANY(_cprintf_s_l) ; i386 and x64 _cprintf_s_l replaced by emu
_crtAssertBusy
_crtBreakAlloc
_crtDbgFlag
_cscanf_l
_cscanf_s
_cscanf_s_l
_ctime32 F_I386(== ctime) ; i386 _ctime32 replaced by alias
F_ARM_ANY(_ctime32_s) ; i386 and x64 _ctime32_s replaced by emu
F_ARM_ANY(_ctime64_s) ; i386 and x64 _ctime64_s replaced by emu
_cwprintf_l
_cwprintf_p
_cwprintf_p_l
F_ARM_ANY(_cwprintf_s) ; i386 and x64 _cwprintf_s replaced by emu
F_ARM_ANY(_cwprintf_s_l) ; i386 and x64 _cwprintf_s_l replaced by emu
_cwscanf_l
_cwscanf_s
_cwscanf_s_l
_difftime32 F_I386(== difftime) ; i386 _difftime32 replaced by alias
_difftime64 F_X64(== difftime) ; x64 _difftime64 replaced by alias
_ecvt_s
F_I386(_except_handler4_common)
_expand_dbg
_fcvt_s
_fprintf_l
_fprintf_p
_fprintf_p_l
_fprintf_s_l
_free_dbg
_freea
F_X86_ANY(_freea_s)
_fscanf_l
_fscanf_s_l
F_ARM_ANY(_fseeki64) ; i386 and x64 _fseeki64 replaced by emu
_ftime32 F_I386(== _ftime) ; i386 _ftime32 replaced by alias
_ftime32_s
_ftime64_s
F_I386(_ftol2)
F_I386(_ftol2_sse)
F_I386(_ftol2_sse_excpt)
_fullpath_dbg
_futime32 F_I386(== _futime) ; i386 _futime32 replaced by alias
_fwprintf_l
_fwprintf_p
_fwprintf_p_l
_fwprintf_s_l
_fwscanf_l
_fwscanf_s_l
_gcvt_s
F_ARM_ANY(_get_doserrno) ; i386 and x64 _get_doserrno replaced by emu
_get_environ
F_ARM_ANY(_get_errno) ; i386 and x64 _get_errno replaced by emu
_get_fileinfo
F_ARM_ANY(_get_fmode) ; i386 and x64 _get_fmode replaced by emu
F_X86_ANY(_get_osplatform)
F_X86_ANY(_get_osver)
F_ARM_ANY(_get_output_format) ; i386 and x64 _get_output_format replaced by emu
; F_X86_ANY(_get_pgmptr) ; i386 and x64 _get_pgmptr replaced by emu, arm32 and arm64 provided by emu
_get_wenviron
F_X86_ANY(_get_winmajor)
F_X86_ANY(_get_winminor)
F_X86_ANY(_get_winver)
; F_X86_ANY(_get_wpgmptr) ; i386 and x64 _get_wpgmptr replaced by emu, arm32 and arm64 provided by emu
_gmtime32 F_I386(== gmtime) ; i386 _gmtime32 replaced by alias
F_ARM_ANY(_gmtime32_s) ; i386 and x64 _gmtime32_s replaced by emu
F_ARM_ANY(_gmtime64_s) ; i386 and x64 _gmtime64_s replaced by emu
_i64toa_s
_i64tow_s
F_ARM_ANY(_initterm_e) ; i386 and x64 _initterm_e replaced by emu
_invalid_parameter
_isalnum_l
_isalpha_l
_iscntrl_l
_isctype_l
_isdigit_l
_isgraph_l
_isleadbyte_l
_islower_l
_ismbbalnum_l
_ismbbalpha_l
_ismbbgraph_l
_ismbbkalnum_l
_ismbbkana_l
_ismbbkprint_l
_ismbbkpunct_l
_ismbblead_l
_ismbbprint_l
_ismbbpunct_l
_ismbbtrail_l
_ismbcalnum_l
_ismbcalpha_l
_ismbcdigit_l
_ismbcgraph_l
_ismbchira_l
_ismbckata_l
_ismbcl0_l
_ismbcl1_l
_ismbcl2_l
_ismbclegal_l
_ismbclower_l
_ismbcprint_l
_ismbcpunct_l
_ismbcspace_l
_ismbcsymbol_l
_ismbcupper_l
_ismbslead_l
_ismbstrail_l
_isprint_l
_isspace_l
_isupper_l
_iswalnum_l
_iswalpha_l
_iswcntrl_l
_iswctype_l
_iswdigit_l
_iswgraph_l
_iswlower_l
_iswprint_l
_iswpunct_l
_iswspace_l
_iswupper_l
_iswxdigit_l
_isxdigit_l
_itoa_s
_itow_s
_lfind_s
F_I386(_local_unwind4)
_localtime32 F_I386(== localtime) ; i386 _localtime32 replaced by alias
F_ARM_ANY(_localtime32_s) ; i386 and x64 _localtime32_s replaced by emu
F_ARM_ANY(_localtime64_s) ; i386 and x64 _localtime64_s replaced by emu
_lsearch_s
_ltoa_s
_ltow_s
_makepath_s
_malloc_dbg
_mbbtombc_l
_mbccpy_l
_mbccpy_s
_mbccpy_s_l
_mbcjistojms_l
_mbcjmstojis_l
_mbclen_l
_mbctohira_l
_mbctokata_l
_mbctolower_l
_mbctombb_l
_mbctoupper_l
_mblen_l
_mbsbtype_l
_mbscat_s
_mbscat_s_l
_mbschr_l
_mbscmp_l
_mbscoll_l
_mbscpy_s
_mbscpy_s_l
_mbscspn_l
_mbsdec_l
_mbsicmp_l
_mbsicoll_l
_mbsinc_l
_mbslen_l
_mbslwr_l
_mbslwr_s
_mbslwr_s_l
_mbsnbcat_l
_mbsnbcat_s
_mbsnbcat_s_l
_mbsnbcmp_l
_mbsnbcnt_l
_mbsnbcoll_l
_mbsnbcpy_l
_mbsnbcpy_s
_mbsnbcpy_s_l
_mbsnbicmp_l
_mbsnbicoll_l
_mbsnbset_l
_mbsnbset_s
_mbsnbset_s_l
_mbsncat_l
_mbsncat_s
_mbsncat_s_l
_mbsnccnt_l
_mbsncmp_l
_mbsncoll_l
_mbsncpy_l
_mbsncpy_s
_mbsncpy_s_l
_mbsnextc_l
_mbsnicmp_l
_mbsnicoll_l
_mbsninc_l
_mbsnlen_l
_mbsnset_l
_mbsnset_s
_mbsnset_s_l
_mbspbrk_l
_mbsrchr_l
_mbsrev_l
_mbsset_l
_mbsset_s
_mbsset_s_l
_mbsspn_l
_mbsspnp_l
_mbsstr_l
_mbstok_l
_mbstok_s
_mbstok_s_l
_mbstowcs_l
_mbstowcs_s_l
_mbstrlen_l
_mbstrnlen_l
_mbsupr_l
_mbsupr_s
_mbsupr_s_l
_mbtowc_l
_mbsnlen
_mbstrnlen
_memicmp_l
_mkgmtime32 F_I386(== _mkgmtime) ; i386 _mkgmtime32 replaced by alias
F_ARM_ANY(_mktemp_s) ; i386 and x64 _mktemp_s replaced by emu
_mktime32 F_I386(== mktime) ; i386 _mktime32 replaced by alias
F_NON_I386(_msize_dbg)
F_I386(_msize_debug)
_printf_l
_printf_p
_printf_p_l
_printf_s_l
_putenv_s
_realloc_dbg
_scanf_l
_scanf_s_l
_scprintf_l
_scprintf_p_l
_scwprintf_l
_scwprintf_p_l
_searchenv_s
F_I386(_seh_longjmp_unwind4@4)
_set_controlfp
F_ARM_ANY(_set_doserrno) ; i386 and x64 _set_doserrno replaced by emu
F_ARM_ANY(_set_errno) ; i386 and x64 _set_errno replaced by emu
_set_fileinfo
_set_fmode
F_ARM_ANY(_set_output_format) ; i386 and x64 _set_output_format replaced by emu
_snprintf_c
_snprintf_c_l
_snprintf_l
_snprintf_s
_snprintf_s_l
_snscanf_l
_snscanf_s
_snscanf_s_l
_snwprintf_l
_snwprintf_s
_snwprintf_s_l
_snwscanf_l
_snwscanf_s
_snwscanf_s_l
F_ARM_ANY(_sopen_s) ; i386 and x64 _sopen_s replaced by emu
_splitpath_s
_sprintf_l
_sprintf_p_l
_sprintf_s_l
_sscanf_l
_sscanf_s_l
_strcoll_l
F_ARM_ANY(_strdate_s) ; i386 and x64 _strdate_s replaced by emu
_strdup_dbg
_strerror_s
_stricmp_l
_stricoll_l
_strlwr_l
_strlwr_s
_strlwr_s_l
_strncoll_l
_strnicmp_l
_strnicoll_l
_strnset_s
_strset_s
F_ARM_ANY(_strtime_s) ; i386 and x64 _strtime_s replaced by emu
_strtod_l
_strtoi64_l
_strtol_l
_strtoui64_l
_strtoul_l
_strupr_l
_strupr_s
_strupr_s_l
_strxfrm_l
F_ARM_ANY(_swprintf) ; i386 and x64 _swprintf replaced by renamed swprintf symbol
_swprintf_c
_swprintf_c_l
_swprintf_p_l
_swprintf_s_l
_swscanf_l
_swscanf_s_l
_tempnam_dbg
_time32 F_I386(== time) ; i386 _time32 replaced by alias
_tolower_l
_toupper_l
_towlower_l
_towupper_l
_ui64toa_s
_ui64tow_s
_ultoa_s
_ultow_s
F_ARM_ANY(_umask_s) ; i386 and x64 _umask_s replaced by emu
_utime32 F_I386(== _utime) ; i386 _utime32 replaced by alias
_vcprintf
_vcprintf_l
_vcprintf_p
_vcprintf_p_l
F_ARM_ANY(_vcprintf_s) ; i386 and x64 _vcprintf_s replaced by emu
F_ARM_ANY(_vcprintf_s_l) ; i386 and x64 _vcprintf_s_l replaced by emu
_vcwprintf
_vcwprintf_l
_vcwprintf_p
_vcwprintf_p_l
F_ARM_ANY(_vcwprintf_s) ; i386 and x64 _vcwprintf_s replaced by emu
F_ARM_ANY(_vcwprintf_s_l) ; i386 and x64 _vcwprintf_s_l replaced by emu
_vfprintf_l
_vfprintf_p
_vfprintf_p_l
_vfprintf_s_l
_vfwprintf_l
_vfwprintf_p
_vfwprintf_p_l
_vfwprintf_s_l
_vprintf_l
_vprintf_p
_vprintf_p_l
_vprintf_s_l
_vscprintf_l
_vscprintf_p_l
_vscwprintf_l
_vscwprintf_p_l
_vsnprintf_c
_vsnprintf_c_l
_vsnprintf_l
_vsnprintf_s
_vsnprintf_s_l
_vsnwprintf_l
_vsnwprintf_s
_vsnwprintf_s_l
_vsprintf_l
_vsprintf_p
_vsprintf_p_l
_vsprintf_s_l
F_ARM_ANY(_vswprintf) ; i386 and x64 _vswprintf replaced by renamed vswprintf symbol
_vswprintf_c
_vswprintf_c_l
_vswprintf_l
_vswprintf_p_l
_vswprintf_s_l
_vwprintf_l
_vwprintf_p
_vwprintf_p_l
_vwprintf_s_l
F_ARM_ANY(_waccess_s) ; i386 and x64 _waccess_s replaced by emu
F_ARM_ANY(_wasctime_s) ; i386 and x64 _wasctime_s replaced by emu
F_ARM_ANY(_wassert) ; i386 and x64 _wassert replaced by emu
_wcscoll_l
_wcsdup_dbg
_wcserror_s
_wcsftime_l
_wcsicmp_l
_wcsicoll_l
_wcslwr_l
_wcslwr_s
_wcslwr_s_l
_wcsncoll_l
_wcsnicmp_l
_wcsnicoll_l
_wcsnset_s
_wcsset_s
_wcstoi64_l
_wcstol_l
_wcstombs_l
_wcstombs_s_l
_wcstoui64_l
_wcstoul_l
_wcsupr_l
_wcsupr_s
_wcsupr_s_l
_wcsxfrm_l
_wctime32 F_I386(== _wctime) ; i386 _wctime32 replaced by alias
F_ARM_ANY(_wctime32_s) ; i386 and x64 _wctime32_s replaced by emu
F_ARM_ANY(_wctime64_s) ; i386 and x64 _wctime64_s replaced by emu
_wctomb_l
_wctomb_s_l
_wfopen_s
_wfreopen_s
_wfullpath_dbg
_wgetenv_s
_winput_s
_wmakepath_s
F_ARM_ANY(_wmktemp_s) ; i386 and x64 _wmktemp_s replaced by emu
_woutput_s
_wprintf_l
_wprintf_p
_wprintf_p_l
_wprintf_s_l
_wputenv_s
_wscanf_l
_wscanf_s_l
_wsearchenv_s
_wsopen_s
_wsplitpath_s
F_ARM_ANY(_wstrdate_s) ; i386 and x64 _wstrdate_s replaced by emu
F_ARM_ANY(_wstrtime_s) ; i386 and x64 _wstrtime_s replaced by emu
_wtempnam_dbg
_wtmpnam_s
_wtof_l
_wtoi64_l
_wtoi_l
_wtol_l
_wutime32 F_I386(== _wutime) ; i386 _wutime32 replaced by alias
F_ARM_ANY(asctime_s) ; i386 and x64 asctime_s replaced by emu
bsearch_s
; F_ARM_ANY(btowc) ; always use replacement
clearerr_s
fopen_s
fprintf_s
freopen_s
fscanf_s
fwprintf_s
fwscanf_s
F_ARM_ANY(getenv_s) ; i386 and x64 getenv_s replaced by emu
; F_ARM_ANY(mbrlen) ; always use replacement
; F_ARM_ANY(mbrtowc) ; always use replacement
mbsdup_dbg
; F_ARM_ANY(mbsrtowcs) ; always use replacement
mbsrtowcs_s
mbstowcs_s
F_ARM_ANY(memcpy_s) ; i386 and x64 memcpy_s replaced by emu
F_ARM_ANY(memmove_s) ; i386 and x64 memmove_s replaced by emu
printf_s
qsort_s
F_ARM_ANY(rand_s) ; i386 and x64 rand_s replaced by emu
scanf_s
F_ARM_ANY(sprintf_s) ; i386 and x64 sprintf_s replaced by emu
sscanf_s
strcat_s
strcpy_s
F_ARM_ANY(strerror_s) ; i386 and x64 strerror_s replaced by emu
strncat_s
strncpy_s
F_ARM_ANY(strnlen) ; i386 and x64 strnlen replaced by emu
strtok_s
swprintf_s
swscanf_s
F_ARM_ANY(tanhf) ; i386 tanhf provided by emu and x64 tanhf replaced by emu
tmpfile_s
tmpnam_s
F_ARM_ANY(utime) ; i386 and x64 utime replaced by alias in crt-aliases.def.in
vfprintf_s
vfwprintf_s
vprintf_s
; vsnprintf replaced by emu, in msvcrt.dll it is alias to _vsnprintf, which is not C99 compatible
F_ARM_ANY(vsprintf_s) ; i386 and x64 vsprintf_s replaced by emu
vswprintf_s
vwprintf_s
; F_ARM_ANY(wcrtomb) ; always use replacement
wcrtomb_s
wcscat_s
wcscpy_s
wcsncat_s
wcsncpy_s
F_ARM_ANY(wcsnlen) ; i386 and x64 wcsnlen replaced by emu
; F_ARM_ANY(wcsrtombs) ; always use replacement
wcsrtombs_s
F_ARM_ANY(wcstok_s) ; i386 and x64 wcstok_s replaced by emu
wcstombs_s
; F_ARM_ANY(wctob) ; always use replacement
wctomb_s
wprintf_s
wscanf_s

; These symbols were added in Windows 8 OS system version of msvcrt.dll
; This is the first ARM32 version of msvcrt.dll, all symbols in this section and also above this section are present in all ARM32 versions of msvcrt.dll
F_ARM32(__jump_unwind)
F_ARM_ANY(_create_locale) ; i386 and x64 _create_locale replaced by emu
F_ARM_ANY(_free_locale) ; i386 and x64 _free_locale replaced by emu
F_ARM_ANY(_get_current_locale) ; i386 and x64 _get_current_locale replaced by emu
F_ARM_ANY(_memcpy_strict_align)
_wcstod_l
F_ARM_NATIVE(fabsf) ; i386 and x64 fabsf provided by emu

; These symbols were added in Windows 8.1 OS system version of msvcrt.dll
F_I386(_CallMemberFunction0@8)
F_ARM32(_CallMemberFunction0)
F_I386(_CallMemberFunction1@12)
F_ARM32(_CallMemberFunction1)
F_I386(_CallMemberFunction2@16)
F_ARM32(_CallMemberFunction2)
__ExceptionPtrAssign
__ExceptionPtrCompare
__ExceptionPtrCopy
__ExceptionPtrCopyException
__ExceptionPtrCreate
__ExceptionPtrCurrentException
__ExceptionPtrDestroy
__ExceptionPtrRethrow
__ExceptionPtrSwap
__ExceptionPtrToBool
_W_Getdays
_W_Getmonths
_W_Gettnames
_Wcsftime
__AdjustPointer
F_I386(_libm_sse2_acos_precise)
F_I386(_libm_sse2_asin_precise)
F_I386(_libm_sse2_atan_precise)
F_I386(_libm_sse2_cos_precise)
F_I386(_libm_sse2_exp_precise)
F_I386(_libm_sse2_log10_precise)
F_I386(_libm_sse2_log_precise)
F_I386(_libm_sse2_pow_precise)
F_I386(_libm_sse2_sin_precise)
F_I386(_libm_sse2_sqrt_precise)
F_I386(_libm_sse2_tan_precise)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This is end of the list of symbols available in the Windows OS system versions of msvcrt.dll ;
; All symbols defined below this line are not available in any version of msvcrt.dll library   ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


; This includes list of some symbol alises for compatibility with C99 and POSIX functions and symbols from other msvcr* libraries
#define FIXED_SIZE_SYMBOLS
#define NO_FIXED_SIZE_64_ALIAS
#ifdef __i386__
; i386 fstat64 alias provided by emu
#define NO_FSTAT64_ALIAS
#endif
#define NO_TIME_ALIAS
#define NO_STRCMPI_ALIAS
#define WITH_NEXTAFTER_ALIAS
#ifdef __i386__
; i386 __iob_func replaced by alias
#define WITH_IOB_FUNC_ALIAS
#define WITH_TZ_ALIASES
#endif
#define WITH_ATOLL_ALIAS
#define WITH_ATOLL_L_ALIAS
#define WITH_STRTO64_L_ALIAS
#ifndef __i386__
; i386 llabs and imaxabs alias provided by emu
#define WITH_LLABS_ALIAS
; i386 strtoll, strtoull, strtoimax, strtoumax, wcstoll, wcstoull, wcstoimax and wcstoumax aliases provided by emu
#define WITH_STRTO64_ALIAS
#endif
#if defined(__arm__) || defined(__aarch64__)
#define USE_WCSTOK_S_FOR_WCSTOK
#define WITH_FSEEKO64_ALIAS
#endif
#include "crt-aliases.def.in"
