LIBRARY "msvcrt.dll"
EXPORTS

#include "func.def.in"

#ifdef DEF_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 DEF_X64
; 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 DEF_ARM32
; 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 DEF_ARM64
; 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
__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_I386(__p__daylight)
F_I386(__p__dstbias)
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)
F_I386(__p__tzname)
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
__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 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
_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
swprintf
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
vswprintf
vwprintf
wcscat
wcschr
wcscmp
wcscoll
wcscpy
wcscspn
wcsftime
wcslen
wcsncat
wcsncmp
wcsncpy
wcspbrk
wcsrchr
wcsspn
wcsstr
wcstod
wcstok
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 DEF_I386
; void *__cdecl operator new[](unsigned int)
??_U@YAPAXI@Z
; void __cdecl operator delete[](void *)
??_V@YAXPAX@Z
#endif
_ctime64
_findfirst64
_findnext64
_fstat64
_ftime64
_futime64
_gmtime64
_localtime64
_mktime64
F_X86_ANY(_osplatform DATA)
_stat64
_time64
_utime64
_wctime64
_wfindfirst64
_wfindnext64
_wstat64
_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 DEF_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
_aligned_free
_aligned_malloc
_aligned_offset_malloc
_aligned_offset_realloc
_aligned_realloc
_cgetws
_cputws
_cwprintf
_cwscanf
_getwch
_getwche
_putwch
_resetstkoflw
F_NON_I386(_scprintf) ; i386 _scprintf replaced by emu
_scwprintf
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
_vscwprintf
_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 DEF_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 DEF_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 DEF_X64
; 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
__daylight
__dstbias
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
_get_doserrno
_get_environ
F_ARM_ANY(_get_errno) ; i386 and x64 _get_errno replaced by emu
_get_fileinfo
_get_fmode
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)
_get_wenviron
F_X86_ANY(_get_winmajor)
F_X86_ANY(_get_winminor)
F_X86_ANY(_get_winver)
F_X86_ANY(_get_wpgmptr)
_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
_initterm_e
_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
_set_doserrno
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
_swprintf F_X86_ANY(== swprintf) ; i386 and x64 _swprintf replaced by alias
_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
_vswprintf F_X86_ANY(== vswprintf) ; i386 and x64 _vswprintf replaced by alias
_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) ; i386 and x64 btowc replaced by emu
clearerr_s
fopen_s
fprintf_s
freopen_s
fscanf_s
fwprintf_s
fwscanf_s
getenv_s
F_ARM_ANY(mbrlen) ; i386 and x64 mbrlen replaced by emu
F_ARM_ANY(mbrtowc) ; i386 and x64 mbrtowc replaced by emu
mbsdup_dbg
F_ARM_ANY(mbsrtowcs) ; i386 and x64 mbsrtowcs replaced by emu
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) ; i386 and x64 wcrtomb replaced by emu
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) ; i386 and x64 wcsrtombs replaced by emu
wcsrtombs_s
wcstok_s
wcstombs_s
F_ARM_ANY(wctob) ; i386 and x64 wctob replaced by emu
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_ANY(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 PRE_C95_SWPRINTF
#define FIXED_SIZE_SYMBOLS
#define NO_FIXED_SIZE_64_ALIAS
#define NO_TIME_ALIAS
#define NO_STRCMPI_ALIAS
#define WITH_NEXTAFTER_ALIAS
#ifdef DEF_I386
; i386 __iob_func replaced by alias
#define WITH_IOB_FUNC_ALIAS
#endif
#define WITH_ATOLL_ALIAS
#define WITH_ATOLL_L_ALIAS
#define WITH_STRTO64_L_ALIAS
#ifndef DEF_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
#include "crt-aliases.def.in"

; This is list of additional symbol aliases not available in any CRT library
; FIXME: check if these really are needed
F32(_ftime_s == _ftime32_s)
F64(_ftime_s == _ftime64_s)
snwprintf == _snwprintf
vsnwprintf == _vsnwprintf
