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
; TODO: Fill this list with all symbols from the first ARM64 version of msvcrt.dll
#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
#ifdef DEF_I386
_CIacos
_CIasin
_CIatan
_CIatan2
_CIcos
_CIcosh
_CIexp
_CIfmod
_CIlog
_CIlog10
_CIpow
_CIsin
_CIsinh
_CIsqrt
_CItan
_CItanh
#endif
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)
__isascii
__iscsym
__iscsymf
F_X86_ANY(__lc_codepage DATA)
__lc_handle DATA
__lconv_init
__mb_cur_max DATA
#ifdef DEF_I386
__p___argc
__p___argv
__p___initenv
__p___mb_cur_max
__p___wargv
__p___winitenv
__p__acmdln
__p__amblksiz
__p__commode
__p__daylight
__p__dstbias
__p__environ
__p__fileinfo
__p__fmode
__p__iob
__p__mbctype
__p__osver
__p__pctype
__p__pgmptr
__p__pwctype
__p__timezone
__p__tzname
__p__wcmdln
__p__wenviron
__p__winmajor
__p__winminor
__p__winver
__p__wpgmptr
#endif
__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)
F_I386(_abnormal_termination)
_access
_acmdln DATA
#ifdef DEF_I386
_adj_fdiv_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
_adj_fdiv_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
_adj_fdiv_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
_adj_fdiv_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8)
_adj_fdiv_r
_adj_fdivr_m16i ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
_adj_fdivr_m32 ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
_adj_fdivr_m32i ; msvc symbol is without decoration but callee pop stack (like stdcall @4)
_adj_fdivr_m64 ; msvc symbol is without decoration but callee pop stack (like stdcall @8)
_adj_fpatan
_adj_fprem
_adj_fprem1
_adj_fptan
_adjust_fdiv DATA
#endif
_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_I386(_fpieee_flt)
F_ARM_ANY(_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
#ifdef DEF_I386
_safe_fdiv
_safe_fdivr
_safe_fprem
_safe_fprem1
#endif
_scalb
_searchenv
F_I386(_seh_longjmp_unwind@4)
_set_error_mode
F_X86_ANY(_set_sbh_threshold)
F_X86_ANY(_seterrormode)
_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)
atexit DATA
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 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)
_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
_wcstoi64
_wcstoui64
_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)
F_X64(_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(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
#ifdef DEF_I386
__libm_sse2_acos
__libm_sse2_acosf
__libm_sse2_asin
__libm_sse2_asinf
__libm_sse2_atan
__libm_sse2_atan2
__libm_sse2_atanf
__libm_sse2_cos
__libm_sse2_cosf
__libm_sse2_exp
__libm_sse2_expf
__libm_sse2_log
__libm_sse2_log10
__libm_sse2_log10f
__libm_sse2_logf
__libm_sse2_pow
__libm_sse2_powf
__libm_sse2_sin
__libm_sse2_sinf
__libm_sse2_tan
__libm_sse2_tanf
#endif
__strncnt
__wcserror_s
__wcsncnt
; _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
; _cgets_s replaced by emu
; _cgetws_s replaced by emu
; _chsize_s replaced by emu
_chvalidator
_chvalidator_l
; _controlfp_s replaced by emu
_cprintf_l
_cprintf_p
_cprintf_p_l
; _cprintf_s replaced by emu
; _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
; _ctime32_s replaced by emu
; _ctime64_s replaced by emu
_cwprintf_l
_cwprintf_p
_cwprintf_p_l
; _cwprintf_s replaced by emu
; _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)
; _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
; _gmtime32_s replaced by emu
; _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
; _localtime32_s replaced by emu
; _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
; _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
; _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
; _sopen_s replaced by emu
_splitpath_s
_sprintf_l
_sprintf_p_l
_sprintf_s_l
_sscanf_l
_sscanf_s_l
_strcoll_l
; _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
; _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
; _umask_s replaced by emu
_utime32 F_I386(== _utime) ; i386 _utime32 replaced by alias
_vcprintf
_vcprintf_l
_vcprintf_p
_vcprintf_p_l
; _vcprintf_s replaced by emu
; _vcprintf_s_l replaced by emu
_vcwprintf
_vcwprintf_l
_vcwprintf_p
_vcwprintf_p_l
; _vcwprintf_s replaced by emu
; _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
; _waccess_s replaced by emu
; _wasctime_s replaced by emu
F_NON_I386(_wassert) ; i386 _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
; _wctime32_s replaced by emu
; _wctime64_s replaced by emu
_wctomb_l
_wctomb_s_l
_wfopen_s
_wfreopen_s
_wfullpath_dbg
_wgetenv_s
_winput_s
_wmakepath_s
; _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
; _wstrdate_s replaced by emu
; _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
; 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
; memcpy_s replaced by emu
; memmove_s replaced by emu
printf_s
qsort_s
; rand_s replaced by emu
scanf_s
; sprintf_s replaced by emu
sscanf_s
strcat_s
strcpy_s
; strerror_s replaced by emu
strncat_s
strncpy_s
; 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
; 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_ARM_ANY(__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
_wcstod_l

; 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
#ifdef DEF_I386
_libm_sse2_acos_precise
_libm_sse2_asin_precise
_libm_sse2_atan_precise
_libm_sse2_cos_precise
_libm_sse2_exp_precise
_libm_sse2_log10_precise
_libm_sse2_log_precise
_libm_sse2_pow_precise
_libm_sse2_sin_precise
_libm_sse2_sqrt_precise
_libm_sse2_tan_precise
#endif

; These symbols were added in Windows 10 OS system version of msvcrt.dll
; TODO: fill them

; This is list of some symbols not available on X86 but are available in some ARM version of msvcrt.dll
; TODO: move them to appropriate OS system version section (version in which they were introduced)
F_ARM_ANY(_memcpy_strict_align)
F_ARM_ANY(fabsf) ; i386 and x64 fabsf provided by emu

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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
#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 and strtoumax alias 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
