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
__msvcrt_assert DATA == _assert ; mingw-w64 provides _assert() function as wrapper around renamed __msvcrt_assert symbol
_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 replaced by emu, CRT _onexit does not work for DLL builds
_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_NATIVE(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_NATIVE(DATA)
clearerr
clock
cos F_X86_NATIVE(DATA)
cosh
ctime
difftime
div
exit
exp F_X86_NATIVE(DATA)
fabs DATA
fclose
feof
ferror
fflush
fgetc
fgetpos
fgets
fgetwc
fgetws
floor F_X86_NATIVE(DATA)
fmod F_X86_NATIVE(DATA)
fopen
fprintf
fputc
fputs
fputwc
fputws
fread
free
freopen
frexp F_X86_NATIVE(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 ; replaced by emu, CRT version mishandles TAB character
ispunct
isspace
isupper
iswalnum
iswalpha
iswascii
iswcntrl
__msvcrt_iswctype DATA == iswctype; mingw-w64 provides real iswctype as a wrapper around renamed __msvcrt_iswctype
iswdigit
iswgraph
iswlower
; iswprint ; replaced by emu, CRT version mishandles TAB character
iswpunct
iswspace
iswupper
iswxdigit
isxdigit
labs
ldexp F_X86_NATIVE(DATA)
ldiv
localeconv
localtime
log F_X86_NATIVE(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_NATIVE(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 replaced by emu, CRT version may not use writable temporary directory
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
F_NON_I386(_ctime64) ; i386 _ctime64 replaced by emu
F_NON_I386(_findfirst64) ; i386 _findfirst64 replaced by emu
F_NON_I386(_findnext64) ; i386 _findnext64 replaced by emu
F_NON_I386(_fstat64) ; i386 _fstat64 replaced by emu
F_NON_I386(_ftime64) ; i386 _ftime64 replaced by emu
F_NON_I386(_futime64) ; i386 _futime64 replaced by emu
F_NON_I386(_gmtime64) ; i386 _gmtime64 replaced by emu
F_NON_I386(_localtime64) ; i386 _localtime64 replaced by emu
F_NON_I386(_mktime64) ; i386 _mktime64 replaced by emu
F_X86_ANY(_osplatform DATA)
F_NON_I386(_stat64) ; i386 _stat64 replaced by emu
F_NON_I386(_time64) ; i386 _time64 replaced by emu
F_NON_I386(_utime64) ; i386 _utime64 replaced by emu
F_NON_I386(_wctime64) ; i386 _wctime64 replaced by emu
F_NON_I386(_wfindfirst64) ; i386 _wfindfirst64 replaced by emu
F_NON_I386(_wfindnext64) ; i386 _wfindnext64 replaced by emu
F_NON_I386(_wstat64) ; i386 _wstat64 replaced by emu
F_NON_I386(_wutime64) ; i386 _wutime64 replaced by emu

; 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 SP2 and 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
F_NON_I386(___lc_handle_func) ; i386 ___lc_handle_func replaced by emu
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
F_NON_I386(_mkgmtime) ; i386 _mkgmtime replaced by emu
F_NON_I386(_mkgmtime64) ; i386 _mkgmtime64 replaced by emu
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_NATIVE(DATA)) ; i386 acosf provided by emu
F_NON_I386(asinf F_X86_NATIVE(DATA)) ; i386 asinf provided by emu
F_NON_I386(atan2f F_X86_NATIVE(DATA)) ; i386 atan2f provided by emu
F_NON_I386(atanf F_X86_NATIVE(DATA)) ; i386 atanf provided by emu
F_NON_I386(ceilf F_X86_NATIVE(DATA)) ; i386 ceilf provided by emu
F_NON_I386(cosf F_X86_NATIVE(DATA)) ; i386 cosf provided by emu
F_NON_I386(coshf DATA) ; i386 coshf provided by emu
F_NON_I386(expf F_X86_NATIVE(DATA)) ; i386 expf provided by emu
F_NON_I386(floorf F_X86_NATIVE(DATA)) ; i386 floorf provided by emu
F_NON_I386(fmodf F_X86_NATIVE(DATA)) ; i386 fmodf provided by emu
F_NON_I386(log10f F_X86_NATIVE(DATA)) ; i386 log10f provided by emu
F_NON_I386(logf F_X86_NATIVE(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_NATIVE(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_NATIVE(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
F_NON_I386(_difftime64 F_X64(== difftime)) ; i386 _difftime64 replaced by emu and 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 replaced by emu, msvcrt.dll's _invalid_parameter is not compatible with msvcr80+/UCRT
_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
F_ARM_ANY(_mkgmtime32) ; i386 and x64 _mkgmtime32 replaced by emu
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
F_ARM_ANY(_set_fmode) ; i386 and x64 _set_fmode replaced by emu
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
; btowc replaced by emu for consistency with wctob
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
; mbrlen replaced by emu, CRT version does not conform to C95
; mbrtowc replaced by emu, CRT version does not conform to C95
mbsdup_dbg
; mbsrtowcs replaced by emu, CRT version does not conform to C95
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
; wcrtomb replaced by emu, CRT version does not report invalid conversion state
wcrtomb_s
wcscat_s
wcscpy_s
wcsncat_s
wcsncpy_s
F_ARM_ANY(wcsnlen) ; i386 and x64 wcsnlen replaced by emu
; wcsrtombs replaced by emu, CRT version does not report invalid conversion state
wcsrtombs_s
__msvcrt_wcstok_s == wcstok_s ; wcstok_s replaced by emu, it does not call exception handler for invalid arguments
wcstombs_s
; wctob replaced by emu, CRT version may sign-extend its return value
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)

; These symbols were added in Windows 11 21H2 OS system version of msvcrt.dll
#ifdef __i386__
; protected: virtual void __thiscall bad_cast::_Doraise(void)const
?_Doraise@bad_cast@@MBEXXZ
; protected: virtual void __thiscall bad_typeid::_Doraise(void)const
?_Doraise@bad_typeid@@MBEXXZ
; void __cdecl _inconsistency(void)
?_inconsistency@@YAXXZ
; int __cdecl _is_exception_typeof(class type_info const &,struct _EXCEPTION_POINTERS *)
?_is_exception_typeof@@YAHABVtype_info@@PAU_EXCEPTION_POINTERS@@@Z
; public: char const *__thiscall type_info::name(struct __type_info_node *)const
?name@type_info@@QBEPBDPAU__type_info_node@@@Z ; has WINAPI (@4)
#endif
#ifdef __x86_64__
; protected: virtual void __cdecl bad_cast::_Doraise(void)const __ptr64
?_Doraise@bad_cast@@MEBAXXZ
; protected: virtual void __cdecl bad_typeid::_Doraise(void)const __ptr64
?_Doraise@bad_typeid@@MEBAXXZ
; void __cdecl _inconsistency(void)
?_inconsistency@@YAXXZ
; int __cdecl _is_exception_typeof(class type_info const &__ptr64 ,struct _EXCEPTION_POINTERS *__ptr64)
?_is_exception_typeof@@YAHAEBVtype_info@@PEAU_EXCEPTION_POINTERS@@@Z
; public: char const *__ptr64 __cdecl type_info::name(struct __type_info_node *__ptr64)const __ptr64
?name@type_info@@QEBAPEBDPEAU__type_info_node@@@Z
#endif
F_X86_ANY(__BuildCatchObject)
F_X86_ANY(__BuildCatchObjectHelper)
F_X64(__CxxFrameHandler4)
F_X86_ANY(__TypeMatch)
F_I386(_freefls@4 == __freefls@4) ; rename i386 __freefls@4 to _freefls@4 for ABI compatibility with msvcr80+
F_X64(_freefls)
F_X86_ANY(_get_terminate)
F_X86_ANY(_get_unexpected)
F_X64(_ungetc_nolock) ; also available on all arm64 systems but only for i386-chpe32 binaries

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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
#define NO_TIME_ALIAS
#define NO_TMPFILE_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__) || defined(__arm64ec__)
; This uses functions that are available since Vista. ARM/AArch64/ARM64EC
; can assume that those fucntions always are available; on x86 we provide
; fallbacks in the import library.
#define WITH_FSEEKO64_ALIAS
#endif
#include "crt-aliases.def.in"
