; 
; Exports of file NETUI0.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY NETUI0.dll
EXPORTS
; public: __thiscall ALIAS_STR::ALIAS_STR(unsigned short const *)
??0ALIAS_STR@@QAE@PBG@Z
; public: __thiscall ALLOC_STR::ALLOC_STR(unsigned short *,unsigned int,unsigned short const *)
??0ALLOC_STR@@QAE@PAGIPBG@Z
; protected: __thiscall BASE::BASE(void)
??0BASE@@IAE@XZ
; public: __thiscall BITFIELD::BITFIELD(class BITFIELD const &)
??0BITFIELD@@QAE@ABV0@@Z
; public: __thiscall BITFIELD::BITFIELD(unsigned short)
??0BITFIELD@@QAE@G@Z
; public: __thiscall BITFIELD::BITFIELD(unsigned int,enum BITVALUES)
??0BITFIELD@@QAE@IW4BITVALUES@@@Z
; public: __thiscall BITFIELD::BITFIELD(unsigned long)
??0BITFIELD@@QAE@K@Z
; public: __thiscall BITFIELD::BITFIELD(unsigned char const *,unsigned int,unsigned int)
??0BITFIELD@@QAE@PBEII@Z
; public: __thiscall BUFFER::BUFFER(unsigned int)
??0BUFFER@@QAE@I@Z
; public: __thiscall CHAR_STRING::CHAR_STRING(unsigned short const *,unsigned int)
??0CHAR_STRING@@QAE@PBGI@Z
; public: __thiscall DBGSTREAM::DBGSTREAM(class OUTPUTSINK *)
??0DBGSTREAM@@QAE@PAVOUTPUTSINK@@@Z
; public: __thiscall DEC_STR::DEC_STR(unsigned long,unsigned int)
??0DEC_STR@@QAE@KI@Z
; public: __thiscall DFSITER_TREE::DFSITER_TREE(class DFSITER_TREE const *)
??0DFSITER_TREE@@QAE@PBV0@@Z
; public: __thiscall DFSITER_TREE::DFSITER_TREE(class TREE const *,unsigned int)
??0DFSITER_TREE@@QAE@PBVTREE@@I@Z
; public: __thiscall DIR_BLOCK::DIR_BLOCK(void)
??0DIR_BLOCK@@QAE@XZ
; public: __thiscall DLIST::DLIST(void)
??0DLIST@@QAE@XZ
; public: __thiscall DL_NODE::DL_NODE(class DL_NODE *,class DL_NODE *,void *)
??0DL_NODE@@QAE@PAV0@0PAX@Z
; public: __thiscall ELAPSED_TIME_STR::ELAPSED_TIME_STR(unsigned long,unsigned short,int)
??0ELAPSED_TIME_STR@@QAE@KGH@Z
; public: __thiscall FMX::FMX(struct HWND__ *)
??0FMX@@QAE@PAUHWND__@@@Z
; protected: __thiscall FORWARDING_BASE::FORWARDING_BASE(class BASE *)
??0FORWARDING_BASE@@IAE@PAVBASE@@@Z
; protected: __thiscall FS_ENUM::FS_ENUM(unsigned short const *,unsigned short const *,enum FILE_TYPE,int,unsigned int)
??0FS_ENUM@@IAE@PBG0W4FILE_TYPE@@HI@Z
; protected: __thiscall HEAP_BASE::HEAP_BASE(int,int)
??0HEAP_BASE@@IAE@HH@Z
; public: __thiscall HEX_STR::HEX_STR(unsigned long,unsigned int)
??0HEX_STR@@QAE@KI@Z
; public: __thiscall HUATOM::HUATOM(unsigned short const *,int)
??0HUATOM@@QAE@PBGH@Z
; public: __thiscall INTL_PROFILE::INTL_PROFILE(void)
??0INTL_PROFILE@@QAE@XZ
; public: __thiscall ISTR::ISTR(class ISTR const &)
??0ISTR@@QAE@ABV0@@Z
; public: __thiscall ISTR::ISTR(class NLS_STR const &)
??0ISTR@@QAE@ABVNLS_STR@@@Z
; public: __thiscall ITER_DL::ITER_DL(class ITER_DL const &)
??0ITER_DL@@QAE@ABV0@@Z
; public: __thiscall ITER_DL::ITER_DL(class DLIST *)
??0ITER_DL@@QAE@PAVDLIST@@@Z
; public: __thiscall ITER_L::ITER_L(void)
??0ITER_L@@QAE@XZ
; public: __thiscall ITER_SL::ITER_SL(class ITER_SL const &)
??0ITER_SL@@QAE@ABV0@@Z
; public: __thiscall ITER_SL::ITER_SL(class SLIST *)
??0ITER_SL@@QAE@PAVSLIST@@@Z
; public: __thiscall ITER_SL_DIR_BLOCK::ITER_SL_DIR_BLOCK(class SLIST &)
??0ITER_SL_DIR_BLOCK@@QAE@AAVSLIST@@@Z
; public: __thiscall ITER_SL_NLS_STR::ITER_SL_NLS_STR(class SLIST &)
??0ITER_SL_NLS_STR@@QAE@AAVSLIST@@@Z
; public: __thiscall ITER_SL_NLS_STR::ITER_SL_NLS_STR(class ITER_SL_NLS_STR const &)
??0ITER_SL_NLS_STR@@QAE@ABV0@@Z
; public: __thiscall ITER_STRLIST::ITER_STRLIST(class STRLIST &)
??0ITER_STRLIST@@QAE@AAVSTRLIST@@@Z
; public: __thiscall ITER_STRLIST::ITER_STRLIST(class ITER_STRLIST const &)
??0ITER_STRLIST@@QAE@ABV0@@Z
; public: __thiscall LOGON_HOURS_SETTING::LOGON_HOURS_SETTING(class LOGON_HOURS_SETTING const &)
??0LOGON_HOURS_SETTING@@QAE@ABV0@@Z
; public: __thiscall LOGON_HOURS_SETTING::LOGON_HOURS_SETTING(unsigned char const *,unsigned int)
??0LOGON_HOURS_SETTING@@QAE@PBEI@Z
; protected: __thiscall NLS_STR::NLS_STR(unsigned short *,unsigned int,int)
??0NLS_STR@@IAE@PAGIH@Z
; public: __thiscall NLS_STR::NLS_STR(class NLS_STR const &)
??0NLS_STR@@QAE@ABV0@@Z
; public: __thiscall NLS_STR::NLS_STR(unsigned int)
??0NLS_STR@@QAE@I@Z
; public: __thiscall NLS_STR::NLS_STR(unsigned short const *)
??0NLS_STR@@QAE@PBG@Z
; public: __thiscall NLS_STR::NLS_STR(unsigned short const *,unsigned short)
??0NLS_STR@@QAE@PBGG@Z
; public: __thiscall NLS_STR::NLS_STR(void)
??0NLS_STR@@QAE@XZ
; public: __thiscall NUM_NLS_STR::NUM_NLS_STR(unsigned long)
??0NUM_NLS_STR@@QAE@K@Z
; public: __thiscall ONE_SHOT_HEAP::ONE_SHOT_HEAP(unsigned int,int)
??0ONE_SHOT_HEAP@@QAE@IH@Z
; public: __thiscall REG_KEY::REG_KEY(class REG_KEY &)
??0REG_KEY@@QAE@AAV0@@Z
; public: __thiscall REG_KEY::REG_KEY(class REG_KEY &,class NLS_STR const &,unsigned long)
??0REG_KEY@@QAE@AAV0@ABVNLS_STR@@K@Z
; public: __thiscall REG_KEY::REG_KEY(class REG_KEY &,class NLS_STR const &,class REG_KEY_CREATE_STRUCT *)
??0REG_KEY@@QAE@AAV0@ABVNLS_STR@@PAVREG_KEY_CREATE_STRUCT@@@Z
; public: __thiscall REG_KEY::REG_KEY(class NLS_STR const &,unsigned long)
??0REG_KEY@@QAE@ABVNLS_STR@@K@Z
; public: __thiscall REG_KEY::REG_KEY(struct HKEY__ *,unsigned long)
??0REG_KEY@@QAE@PAUHKEY__@@K@Z
; public: __thiscall REG_KEY::REG_KEY(struct HKEY__ *,unsigned short const *,unsigned long)
??0REG_KEY@@QAE@PAUHKEY__@@PBGK@Z
; public: __thiscall REG_KEY_CREATE_STRUCT::REG_KEY_CREATE_STRUCT(void)
??0REG_KEY_CREATE_STRUCT@@QAE@XZ
; public: __thiscall REG_KEY_INFO_STRUCT::REG_KEY_INFO_STRUCT(void)
??0REG_KEY_INFO_STRUCT@@QAE@XZ
; public: __thiscall REG_VALUE_INFO_STRUCT::REG_VALUE_INFO_STRUCT(void)
??0REG_VALUE_INFO_STRUCT@@QAE@XZ
; public: __thiscall RESOURCE_STR::RESOURCE_STR(long,struct HINSTANCE__ *)
??0RESOURCE_STR@@QAE@JPAUHINSTANCE__@@@Z
; public: __thiscall RITER_DL::RITER_DL(class RITER_DL const &)
??0RITER_DL@@QAE@ABV0@@Z
; public: __thiscall RITER_DL::RITER_DL(class DLIST *)
??0RITER_DL@@QAE@PAVDLIST@@@Z
; public: __thiscall SLIST::SLIST(void)
??0SLIST@@QAE@XZ
; public: __thiscall SLIST_OF_DIR_BLOCK::SLIST_OF_DIR_BLOCK(int)
??0SLIST_OF_DIR_BLOCK@@QAE@H@Z
; public: __thiscall SLIST_OF_NLS_STR::SLIST_OF_NLS_STR(int)
??0SLIST_OF_NLS_STR@@QAE@H@Z
; public: __thiscall SL_NODE::SL_NODE(class SL_NODE *,void *)
??0SL_NODE@@QAE@PAV0@PAX@Z
; public: __thiscall STRLIST::STRLIST(class NLS_STR const &,class NLS_STR const &,int)
??0STRLIST@@QAE@ABVNLS_STR@@0H@Z
; public: __thiscall STRLIST::STRLIST(int)
??0STRLIST@@QAE@H@Z
; public: __thiscall STRLIST::STRLIST(unsigned short const *,unsigned short const *,int)
??0STRLIST@@QAE@PBG0H@Z
; public: __thiscall TCHAR_STR::TCHAR_STR(unsigned short)
??0TCHAR_STR@@QAE@G@Z
; public: __thiscall TCHAR_STR_IMPL::TCHAR_STR_IMPL(unsigned short)
??0TCHAR_STR_IMPL@@QAE@G@Z
; public: __thiscall TREE::TREE(void *)
??0TREE@@QAE@PAX@Z
; public: __thiscall UATOM::UATOM(class NLS_STR &)
??0UATOM@@QAE@AAVNLS_STR@@@Z
; public: __thiscall UATOM_LINKAGE::UATOM_LINKAGE(void)
??0UATOM_LINKAGE@@QAE@XZ
; private: __thiscall UATOM_MANAGER::UATOM_MANAGER(void)
??0UATOM_MANAGER@@AAE@XZ
; public: __thiscall UATOM_REGION::UATOM_REGION(void)
??0UATOM_REGION@@QAE@XZ
; public: __thiscall W32_DIR_BLOCK::W32_DIR_BLOCK(void)
??0W32_DIR_BLOCK@@QAE@XZ
; public: __thiscall W32_FS_ENUM::W32_FS_ENUM(unsigned short const *,unsigned short const *,enum FILE_TYPE,int,unsigned int)
??0W32_FS_ENUM@@QAE@PBG0W4FILE_TYPE@@HI@Z
; public: __thiscall WCHAR_STRING::WCHAR_STRING(char const *,unsigned int)
??0WCHAR_STRING@@QAE@PBDI@Z
; public: __thiscall WIN_TIME::WIN_TIME(int)
??0WIN_TIME@@QAE@H@Z
; public: __thiscall WIN_TIME::WIN_TIME(unsigned long,int)
??0WIN_TIME@@QAE@KH@Z
; public: __thiscall WIN_TIME::WIN_TIME(struct _FILETIME,int)
??0WIN_TIME@@QAE@U_FILETIME@@H@Z
; public: __thiscall ALIAS_STR::~ALIAS_STR(void)
??1ALIAS_STR@@QAE@XZ
; public: __thiscall BITFIELD::~BITFIELD(void)
??1BITFIELD@@QAE@XZ
; public: __thiscall BUFFER::~BUFFER(void)
??1BUFFER@@QAE@XZ
; public: __thiscall CHAR_STRING::~CHAR_STRING(void)
??1CHAR_STRING@@QAE@XZ
; public: __thiscall DBGSTREAM::~DBGSTREAM(void)
??1DBGSTREAM@@QAE@XZ
; public: __thiscall DEC_STR::~DEC_STR(void)
??1DEC_STR@@QAE@XZ
; public: __thiscall DFSITER_TREE::~DFSITER_TREE(void)
??1DFSITER_TREE@@QAE@XZ
; public: virtual __thiscall DIR_BLOCK::~DIR_BLOCK(void)
??1DIR_BLOCK@@UAE@XZ
; public: __thiscall DLIST::~DLIST(void)
??1DLIST@@QAE@XZ
; public: __thiscall ELAPSED_TIME_STR::~ELAPSED_TIME_STR(void)
??1ELAPSED_TIME_STR@@QAE@XZ
; public: virtual __thiscall FS_ENUM::~FS_ENUM(void)
??1FS_ENUM@@UAE@XZ
; protected: __thiscall HEAP_BASE::~HEAP_BASE(void)
??1HEAP_BASE@@IAE@XZ
; public: __thiscall ITER_DL::~ITER_DL(void)
??1ITER_DL@@QAE@XZ
; public: __thiscall ITER_SL::~ITER_SL(void)
??1ITER_SL@@QAE@XZ
; public: __thiscall ITER_SL_DIR_BLOCK::~ITER_SL_DIR_BLOCK(void)
??1ITER_SL_DIR_BLOCK@@QAE@XZ
; public: __thiscall ITER_SL_NLS_STR::~ITER_SL_NLS_STR(void)
??1ITER_SL_NLS_STR@@QAE@XZ
; public: __thiscall ITER_STRLIST::~ITER_STRLIST(void)
??1ITER_STRLIST@@QAE@XZ
; public: __thiscall LOGON_HOURS_SETTING::~LOGON_HOURS_SETTING(void)
??1LOGON_HOURS_SETTING@@QAE@XZ
; public: __thiscall NLS_STR::~NLS_STR(void)
??1NLS_STR@@QAE@XZ
; public: __thiscall REG_KEY::~REG_KEY(void)
??1REG_KEY@@QAE@XZ
; public: __thiscall REG_KEY_INFO_STRUCT::~REG_KEY_INFO_STRUCT(void)
??1REG_KEY_INFO_STRUCT@@QAE@XZ
; public: __thiscall REG_VALUE_INFO_STRUCT::~REG_VALUE_INFO_STRUCT(void)
??1REG_VALUE_INFO_STRUCT@@QAE@XZ
; public: __thiscall RITER_DL::~RITER_DL(void)
??1RITER_DL@@QAE@XZ
; public: __thiscall SLIST::~SLIST(void)
??1SLIST@@QAE@XZ
; public: __thiscall SLIST_OF_DIR_BLOCK::~SLIST_OF_DIR_BLOCK(void)
??1SLIST_OF_DIR_BLOCK@@QAE@XZ
; public: __thiscall SLIST_OF_NLS_STR::~SLIST_OF_NLS_STR(void)
??1SLIST_OF_NLS_STR@@QAE@XZ
; public: __thiscall STRLIST::~STRLIST(void)
??1STRLIST@@QAE@XZ
; public: __thiscall TCHAR_STR::~TCHAR_STR(void)
??1TCHAR_STR@@QAE@XZ
; public: __thiscall TREE::~TREE(void)
??1TREE@@QAE@XZ
; public: __thiscall UATOM::~UATOM(void)
??1UATOM@@QAE@XZ
; public: __thiscall UATOM_LINKAGE::~UATOM_LINKAGE(void)
??1UATOM_LINKAGE@@QAE@XZ
; private: __thiscall UATOM_MANAGER::~UATOM_MANAGER(void)
??1UATOM_MANAGER@@AAE@XZ
; public: __thiscall UATOM_REGION::~UATOM_REGION(void)
??1UATOM_REGION@@QAE@XZ
; public: virtual __thiscall W32_DIR_BLOCK::~W32_DIR_BLOCK(void)
??1W32_DIR_BLOCK@@UAE@XZ
; public: virtual __thiscall W32_FS_ENUM::~W32_FS_ENUM(void)
??1W32_FS_ENUM@@UAE@XZ
; public: __thiscall WCHAR_STRING::~WCHAR_STRING(void)
??1WCHAR_STRING@@QAE@XZ
; public: static void * __stdcall ALLOC_BASE::operator new(unsigned int)
??2ALLOC_BASE@@SGPAXI@Z
; public: static void * __stdcall ALLOC_BASE::operator new(unsigned int,void *)
??2ALLOC_BASE@@SGPAXIPAX@Z
; public: static void __stdcall ALLOC_BASE::operator delete(void *)
??3ALLOC_BASE@@SGXPAX@Z
; public: class ALIAS_STR const & __thiscall ALIAS_STR::operator=(class NLS_STR const &)
??4ALIAS_STR@@QAEABV0@ABVNLS_STR@@@Z
; public: class ALIAS_STR const & __thiscall ALIAS_STR::operator=(unsigned short const *)
??4ALIAS_STR@@QAEABV0@PBG@Z
; public: class ALLOC_STR & __thiscall ALLOC_STR::operator=(unsigned short const *)
??4ALLOC_STR@@QAEAAV0@PBG@Z
; public: class BITFIELD & __thiscall BITFIELD::operator=(class BITFIELD const &)
??4BITFIELD@@QAEAAV0@ABV0@@Z
; public: class BITFIELD & __thiscall BITFIELD::operator=(unsigned short)
??4BITFIELD@@QAEAAV0@G@Z
; public: class BITFIELD & __thiscall BITFIELD::operator=(unsigned long)
??4BITFIELD@@QAEAAV0@K@Z
; public: class ISTR & __thiscall ISTR::operator=(class ISTR const &)
??4ISTR@@QAEAAV0@ABV0@@Z
; public: class NLS_STR & __thiscall NLS_STR::operator=(class NLS_STR const &)
??4NLS_STR@@QAEAAV0@ABV0@@Z
; public: class NLS_STR & __thiscall NLS_STR::operator=(unsigned short const *)
??4NLS_STR@@QAEAAV0@PBG@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(char)
??6DBGSTREAM@@QAEAAV0@D@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(short)
??6DBGSTREAM@@QAEAAV0@F@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(unsigned short)
??6DBGSTREAM@@QAEAAV0@G@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(int)
??6DBGSTREAM@@QAEAAV0@H@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(unsigned int)
??6DBGSTREAM@@QAEAAV0@I@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(long)
??6DBGSTREAM@@QAEAAV0@J@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(unsigned long)
??6DBGSTREAM@@QAEAAV0@K@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(char const *)
??6DBGSTREAM@@QAEAAV0@PBD@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(unsigned short const *)
??6DBGSTREAM@@QAEAAV0@PBG@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(enum DBGSTR_SPECIAL)
??6DBGSTREAM@@QAEAAV0@W4DBGSTR_SPECIAL@@@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(__int64)
??6DBGSTREAM@@QAEAAV0@_J@Z
; public: class DBGSTREAM & __thiscall DBGSTREAM::operator<<(unsigned __int64)
??6DBGSTREAM@@QAEAAV0@_K@Z
; public: int __thiscall BASE::operator!(void)const 
??7BASE@@QBEHXZ
; public: int __thiscall BITFIELD::operator==(class BITFIELD &)
??8BITFIELD@@QAEHAAV0@@Z
; public: int __thiscall BITFIELD::operator==(unsigned short)const 
??8BITFIELD@@QBEHG@Z
; public: int __thiscall BITFIELD::operator==(unsigned long)const 
??8BITFIELD@@QBEHK@Z
; public: int __thiscall ISTR::operator==(class ISTR const &)const 
??8ISTR@@QBEHABV0@@Z
; public: int __thiscall NLS_STR::operator==(class NLS_STR const &)const 
??8NLS_STR@@QBEHABV0@@Z
; public: int __thiscall NLS_STR::operator!=(class NLS_STR const &)const 
??9NLS_STR@@QBEHABV0@@Z
; public: __thiscall BITFIELD::operator unsigned short(void)
??BBITFIELD@@QAEGXZ
; public: __thiscall BITFIELD::operator unsigned long(void)
??BBITFIELD@@QAEKXZ
; public: __thiscall NLS_STR::operator unsigned short const *(void)const 
??BNLS_STR@@QBEPBGXZ
; public: __thiscall REG_KEY::operator struct HKEY__ *(void)const 
??BREG_KEY@@QBEPAUHKEY__@@XZ
; public: __thiscall TCHAR_STR::operator class ALIAS_STR const &(void)
??BTCHAR_STR@@QAEABVALIAS_STR@@XZ
; public: class ISTR & __thiscall ISTR::operator++(void)
??EISTR@@QAEAAV0@XZ
; public: int __thiscall ISTR::operator-(class ISTR const &)const 
??GISTR@@QBEHABV0@@Z
; public: int __thiscall BITFIELD::operator&(class BITFIELD const &)
??IBITFIELD@@QAEHABV0@@Z
; public: int __thiscall ISTR::operator<(class ISTR const &)const 
??MISTR@@QBEHABV0@@Z
; public: int __thiscall ISTR::operator>(class ISTR const &)const 
??OISTR@@QBEHABV0@@Z
; public: class NLS_STR * __thiscall ITER_SL_NLS_STR::operator()(void)
??RITER_SL_NLS_STR@@QAEPAVNLS_STR@@XZ
; public: void __thiscall ISTR::operator+=(int)
??YISTR@@QAEXH@Z
; public: class NLS_STR & __thiscall NLS_STR::operator+=(class NLS_STR const &)
??YNLS_STR@@QAEAAV0@ABV0@@Z
; public: void __thiscall BITFIELD::operator&=(class BITFIELD const &)
??_4BITFIELD@@QAEXABV0@@Z
; public: void __thiscall BITFIELD::operator&=(unsigned short)
??_4BITFIELD@@QAEXG@Z
; public: void __thiscall BITFIELD::operator&=(unsigned long)
??_4BITFIELD@@QAEXK@Z
; public: void __thiscall BITFIELD::operator|=(class BITFIELD const &)
??_5BITFIELD@@QAEXABV0@@Z
; public: void __thiscall BITFIELD::operator|=(unsigned short)
??_5BITFIELD@@QAEXG@Z
; public: void __thiscall BITFIELD::operator|=(unsigned long)
??_5BITFIELD@@QAEXK@Z
; void __stdcall `vector constructor iterator'(void *,unsigned int,int,void * (__thiscall*)(void *))
??_H@YGXPAXIHP6EPAX0@Z@Z
; void __stdcall `vector destructor iterator'(void *,unsigned int,int,void (__thiscall*)(void *))
??_I@YGXPAXIHP6EX0@Z@Z
; void __stdcall `vector vbase constructor iterator'(void *,unsigned int,int,void * (__thiscall*)(void *))
??_J@YGXPAXIHP6EPAX0@Z@Z
; public: long __thiscall DLIST::Add(void *)
?Add@DLIST@@QAEJPAX@Z
; public: long __thiscall SLIST::Add(void *)
?Add@SLIST@@QAEJPAX@Z
; public: long __thiscall SLIST_OF_DIR_BLOCK::Add(class DIR_BLOCK const *)
?Add@SLIST_OF_DIR_BLOCK@@QAEJPBVDIR_BLOCK@@@Z
; public: long __thiscall SLIST_OF_NLS_STR::Add(class NLS_STR const *)
?Add@SLIST_OF_NLS_STR@@QAEJPBVNLS_STR@@@Z
; private: int __thiscall NLS_STR::Alloc(unsigned int)
?Alloc@NLS_STR@@AAEHI@Z
; public: unsigned char * __thiscall ONE_SHOT_HEAP::Alloc(unsigned int)
?Alloc@ONE_SHOT_HEAP@@QAEPAEI@Z
; protected: long __thiscall BITFIELD::AllocBitfield(unsigned int)
?AllocBitfield@BITFIELD@@IAEJI@Z
; public: long __thiscall DLIST::Append(void *)
?Append@DLIST@@QAEJPAX@Z
; public: long __thiscall NLS_STR::Append(class NLS_STR const &)
?Append@NLS_STR@@QAEJABV1@@Z
; public: long __thiscall SLIST::Append(void *)
?Append@SLIST@@QAEJPAX@Z
; public: long __thiscall SLIST_OF_NLS_STR::Append(class NLS_STR const *)
?Append@SLIST_OF_NLS_STR@@QAEJPBVNLS_STR@@@Z
; public: long __thiscall NLS_STR::AppendChar(unsigned short)
?AppendChar@NLS_STR@@QAEJG@Z
; public: class TREE * __thiscall TREE::BreakOut(void)
?BreakOut@TREE@@QAEPAV1@XZ
; protected: void __thiscall DLIST::BumpIters(class DL_NODE *)
?BumpIters@DLIST@@IAEXPAVDL_NODE@@@Z
; protected: void __thiscall SLIST::BumpIters(class SL_NODE *)
?BumpIters@SLIST@@IAEXPAVSL_NODE@@@Z
; private: void __thiscall NLS_STR::CheckIstr(class ISTR const &)const 
?CheckIstr@NLS_STR@@ABEXABVISTR@@@Z
; protected: int __thiscall DLIST::CheckIter(class ITER_L *)
?CheckIter@DLIST@@IAEHPAVITER_L@@@Z
; protected: int __thiscall SLIST::CheckIter(class ITER_SL *)
?CheckIter@SLIST@@IAEHPAVITER_SL@@@Z
; long __stdcall CheckLocalComm(unsigned short const *)
?CheckLocalComm@@YGJPBG@Z
; long __stdcall CheckLocalDrive(unsigned short const *)
?CheckLocalDrive@@YGJPBG@Z
; long __stdcall CheckLocalLpt(unsigned short const *)
?CheckLocalLpt@@YGJPBG@Z
; long __stdcall CheckUnavailDevice(unsigned short const *,unsigned short *,int *)
?CheckUnavailDevice@@YGJPBGPAGPAH@Z
; public: void __thiscall SLIST_OF_DIR_BLOCK::Clear(void)
?Clear@SLIST_OF_DIR_BLOCK@@QAEXXZ
; public: void __thiscall SLIST_OF_NLS_STR::Clear(void)
?Clear@SLIST_OF_NLS_STR@@QAEXXZ
; private: long __thiscall REG_KEY::Close(void)
?Close@REG_KEY@@AAEJXZ
; private: unsigned long __thiscall FMX::Command(unsigned int,unsigned int,long)const 
?Command@FMX@@ABEKIIJ@Z
; public: int __cdecl NLS_STR::Compare(class NLS_STR const *)const 
?Compare@NLS_STR@@QBAHPBV1@@Z
; public: int __thiscall LOGON_HOURS_SETTING::ConvertFromGMT(void)
?ConvertFromGMT@LOGON_HOURS_SETTING@@QAEHXZ
; public: int __thiscall LOGON_HOURS_SETTING::ConvertToGMT(void)
?ConvertToGMT@LOGON_HOURS_SETTING@@QAEHXZ
; public: long __thiscall LOGON_HOURS_SETTING::ConvertToHoursPerWeek(void)
?ConvertToHoursPerWeek@LOGON_HOURS_SETTING@@QAEJXZ
; public: long __thiscall NLS_STR::CopyFrom(class NLS_STR const &)
?CopyFrom@NLS_STR@@QAEJABV1@@Z
; public: long __thiscall NLS_STR::CopyFrom(unsigned short const *,unsigned int)
?CopyFrom@NLS_STR@@QAEJPBGI@Z
; public: long __thiscall NLS_STR::CopyTo(unsigned short *,unsigned int)const 
?CopyTo@NLS_STR@@QBEJPAGI@Z
; private: long __thiscall REG_KEY::CreateChild(class REG_KEY *,class NLS_STR const &,class REG_KEY_CREATE_STRUCT *)const 
?CreateChild@REG_KEY@@ABEJPAV1@ABVNLS_STR@@PAVREG_KEY_CREATE_STRUCT@@@Z
; protected: virtual class DIR_BLOCK * __thiscall W32_FS_ENUM::CreateDirBlock(void)
?CreateDirBlock@W32_FS_ENUM@@MAEPAVDIR_BLOCK@@XZ
; private: void __thiscall STRLIST::CreateList(unsigned short const *,unsigned short const *)
?CreateList@STRLIST@@AAEXPBG0@Z
; private: void __thiscall NLS_STR::DelSubStr(class ISTR &,unsigned int)
?DelSubStr@NLS_STR@@AAEXAAVISTR@@I@Z
; public: void __thiscall NLS_STR::DelSubStr(class ISTR &)
?DelSubStr@NLS_STR@@QAEXAAVISTR@@@Z
; public: void __thiscall NLS_STR::DelSubStr(class ISTR &,class ISTR const &)
?DelSubStr@NLS_STR@@QAEXAAVISTR@@ABV2@@Z
; public: long __thiscall REG_KEY::Delete(void)
?Delete@REG_KEY@@QAEJXZ
; public: long __thiscall REG_KEY::DeleteValue(class NLS_STR const &)
?DeleteValue@REG_KEY@@QAEJABVNLS_STR@@@Z
; protected: void __thiscall DLIST::Deregister(class ITER_L *)
?Deregister@DLIST@@IAEXPAVITER_L@@@Z
; protected: void __thiscall SLIST::Deregister(class ITER_SL *)
?Deregister@SLIST@@IAEXPAVITER_SL@@@Z
; public: int __thiscall DIR_BLOCK::DoBreadthFirstDirs(void)const 
?DoBreadthFirstDirs@DIR_BLOCK@@QBEHXZ
; public: virtual void __thiscall OUTPUT_TO_AUX::EndOfLine(void)
?EndOfLine@OUTPUT_TO_AUX@@UAEXXZ
; private: virtual void __thiscall OUTPUT_TO_NUL::EndOfLine(void)
?EndOfLine@OUTPUT_TO_NUL@@EAEXXZ
; public: virtual void __thiscall OUTPUT_TO_STDERR::EndOfLine(void)
?EndOfLine@OUTPUT_TO_STDERR@@UAEXXZ
; public: virtual void __thiscall OUTPUT_TO_STDOUT::EndOfLine(void)
?EndOfLine@OUTPUT_TO_STDOUT@@UAEXXZ
; public: void __thiscall BUFFER::FillOut(void)
?FillOut@BUFFER@@QAEXXZ
; protected: virtual long __thiscall W32_FS_ENUM::FindFirst(class DIR_BLOCK *,class NLS_STR const &,unsigned int)
?FindFirst@W32_FS_ENUM@@MAEJPAVDIR_BLOCK@@ABVNLS_STR@@I@Z
; protected: virtual long __thiscall W32_FS_ENUM::FindNext(class DIR_BLOCK *,unsigned int)
?FindNext@W32_FS_ENUM@@MAEJPAVDIR_BLOCK@@I@Z
; protected: class SL_NODE * __thiscall SLIST::FindPrev(class SL_NODE *)
?FindPrev@SLIST@@IAEPAVSL_NODE@@PAV2@@Z
; public: long __thiscall REG_KEY::Flush(void)
?Flush@REG_KEY@@QAEJXZ
; public: class UATOM * __thiscall UATOM_LINKAGE::Fwd(void)
?Fwd@UATOM_LINKAGE@@QAEPAVUATOM@@XZ
; private: long __thiscall BUFFER::GetNewStorage(unsigned int)
?GetNewStorage@BUFFER@@AAEJI@Z
; long __stdcall GetSelItem(struct HWND__ *,unsigned int,class NLS_STR *,int *)
?GetSelItem@@YGJPAUHWND__@@IPAVNLS_STR@@PAH@Z
; long __stdcall GetSelItem(struct HWND__ *,class NLS_STR *,int,int *)
?GetSelItem@@YGJPAUHWND__@@PAVNLS_STR@@HPAH@Z
; private: static int __stdcall REG_KEY::HandlePrefix(class NLS_STR const &,struct HKEY__ * *,class NLS_STR *,class NLS_STR *)
?HandlePrefix@REG_KEY@@CGHABVNLS_STR@@PAPAUHKEY__@@PAV2@2@Z
; public: int __thiscall DIR_BLOCK::HasFindFirstBeenCalled(void)
?HasFindFirstBeenCalled@DIR_BLOCK@@QAEHXZ
; void __stdcall HeapResidueIter(unsigned int,int)
?HeapResidueIter@@YGXIH@Z
; protected: long __thiscall HEAP_BASE::I_AddItem(void *)
?I_AddItem@HEAP_BASE@@IAEJPAX@Z
; protected: void * __thiscall HEAP_BASE::I_RemoveTopItem(void)
?I_RemoveTopItem@HEAP_BASE@@IAEPAXXZ
; protected: void __thiscall NLS_STR::IncVers(void)
?IncVers@NLS_STR@@IAEXXZ
; public: static void __stdcall NUM_NLS_STR::Init(void)
?Init@NUM_NLS_STR@@SGXXZ
; public: void __thiscall UATOM_LINKAGE::Init(void)
?Init@UATOM_LINKAGE@@QAEXXZ
; public: static long __stdcall UATOM_MANAGER::Initialize(void)
?Initialize@UATOM_MANAGER@@SGJXZ
; protected: void __thiscall NLS_STR::InitializeVers(void)
?InitializeVers@NLS_STR@@IAEXXZ
; public: long __thiscall DLIST::Insert(void *,class ITER_DL &)
?Insert@DLIST@@QAEJPAXAAVITER_DL@@@Z
; public: long __thiscall DLIST::Insert(void *,class RITER_DL &)
?Insert@DLIST@@QAEJPAXAAVRITER_DL@@@Z
; public: long __thiscall SLIST::Insert(void *,class ITER_SL &)
?Insert@SLIST@@QAEJPAXAAVITER_SL@@@Z
; public: long __cdecl NLS_STR::InsertParams(unsigned int,class NLS_STR const *,...)
?InsertParams@NLS_STR@@QAAJIPBV1@ZZ
; public: long __thiscall NLS_STR::InsertParams(class NLS_STR const &,class NLS_STR const &,class NLS_STR const &)
?InsertParams@NLS_STR@@QAEJABV1@00@Z
; public: long __thiscall NLS_STR::InsertParams(class NLS_STR const * *)
?InsertParams@NLS_STR@@QAEJPAPBV1@@Z
; private: long __thiscall NLS_STR::InsertParamsAux(class NLS_STR const * *,unsigned int,int,unsigned int *)
?InsertParamsAux@NLS_STR@@AAEJPAPBV1@IHPAI@Z
; public: int __thiscall NLS_STR::InsertStr(class NLS_STR const &,class ISTR &)
?InsertStr@NLS_STR@@QAEHABV1@AAVISTR@@@Z
; public: int __thiscall INTL_PROFILE::Is24Hour(void)const 
?Is24Hour@INTL_PROFILE@@QBEHXZ
; protected: int __thiscall BITFIELD::IsAllocated(void)const 
?IsAllocated@BITFIELD@@IBEHXZ
; public: int __thiscall BITFIELD::IsBitSet(unsigned int)const 
?IsBitSet@BITFIELD@@QBEHI@Z
; public: int __thiscall INTL_PROFILE::IsDayLZero(void)const 
?IsDayLZero@INTL_PROFILE@@QBEHXZ
; public: int __thiscall DIR_BLOCK::IsDir(void)
?IsDir@DIR_BLOCK@@QAEHXZ
; public: int __thiscall FMX::IsHeterogeneousSelection(int *)
?IsHeterogeneousSelection@FMX@@QAEHPAH@Z
; public: int __thiscall INTL_PROFILE::IsHourLZero(void)const 
?IsHourLZero@INTL_PROFILE@@QBEHXZ
; public: int __thiscall LOGON_HOURS_SETTING::IsIdenticalToBits(unsigned char const *,unsigned int)const 
?IsIdenticalToBits@LOGON_HOURS_SETTING@@QBEHPBEI@Z
; public: int __thiscall ISTR::IsLastPos(void)const 
?IsLastPos@ISTR@@QBEHXZ
; public: int __thiscall SLIST_OF_NLS_STR::IsMember(class NLS_STR const &)
?IsMember@SLIST_OF_NLS_STR@@QAEHABVNLS_STR@@@Z
; public: int __thiscall INTL_PROFILE::IsMonthLZero(void)const 
?IsMonthLZero@INTL_PROFILE@@QBEHXZ
; public: int __thiscall NLS_STR::IsOwnerAlloc(void)const 
?IsOwnerAlloc@NLS_STR@@QBEHXZ
; public: int __thiscall INTL_PROFILE::IsTimePrefix(void)const 
?IsTimePrefix@INTL_PROFILE@@QBEHXZ
; public: int __thiscall INTL_PROFILE::IsYrCentury(void)const 
?IsYrCentury@INTL_PROFILE@@QBEHXZ
; public: void __thiscall TREE::JoinSiblingLeft(class TREE *)
?JoinSiblingLeft@TREE@@QAEXPAV1@@Z
; public: void __thiscall TREE::JoinSiblingRight(class TREE *)
?JoinSiblingRight@TREE@@QAEXPAV1@@Z
; public: void __thiscall TREE::JoinSubtreeLeft(class TREE *)
?JoinSubtreeLeft@TREE@@QAEXPAV1@@Z
; public: void __thiscall TREE::JoinSubtreeRight(class TREE *)
?JoinSubtreeRight@TREE@@QAEXPAV1@@Z
; private: unsigned short const * __thiscall REG_KEY::LeafKeyName(void)const 
?LeafKeyName@REG_KEY@@ABEPBGXZ
; public: void __thiscall UATOM_LINKAGE::Link(class UATOM_LINKAGE *)
?Link@UATOM_LINKAGE@@QAEXPAV1@@Z
; public: long __thiscall NLS_STR::Load(long,struct HINSTANCE__ *)
?Load@NLS_STR@@QAEJJPAUHINSTANCE__@@@Z
; public: long __thiscall NLS_STR::LoadSystem(long)
?LoadSystem@NLS_STR@@QAEJJ@Z
; public: long __thiscall LOGON_HOURS_SETTING::MakeDefault(void)
?MakeDefault@LOGON_HOURS_SETTING@@QAEJXZ
; public: long __thiscall NLS_STR::MapCopyFrom(char const *,unsigned int)
?MapCopyFrom@NLS_STR@@QAEJPBDI@Z
; public: long __thiscall NLS_STR::MapCopyFrom(unsigned short const *,unsigned int)
?MapCopyFrom@NLS_STR@@QAEJPBGI@Z
; public: long __thiscall NLS_STR::MapCopyTo(char *,unsigned int)const 
?MapCopyTo@NLS_STR@@QBEJPADI@Z
; public: long __thiscall NLS_STR::MapCopyTo(unsigned short *,unsigned int)const 
?MapCopyTo@NLS_STR@@QBEJPAGI@Z
; public: static long __stdcall ERRMAP::MapNTStatus(long,int *,long)
?MapNTStatus@ERRMAP@@SGJJPAHJ@Z
; private: long __thiscall REG_KEY::NameChild(class REG_KEY *,class NLS_STR const &)const 
?NameChild@REG_KEY@@ABEJPAV1@ABVNLS_STR@@@Z
; public: void * __thiscall DFSITER_TREE::Next(void)
?Next@DFSITER_TREE@@QAEPAXXZ
; public: int __thiscall FS_ENUM::Next(void)
?Next@FS_ENUM@@QAEHXZ
; public: void * __thiscall ITER_SL::Next(void)
?Next@ITER_SL@@QAEPAXXZ
; public: class DIR_BLOCK * __thiscall ITER_SL_DIR_BLOCK::Next(void)
?Next@ITER_SL_DIR_BLOCK@@QAEPAVDIR_BLOCK@@XZ
; public: class NLS_STR * __thiscall ITER_SL_NLS_STR::Next(void)
?Next@ITER_SL_NLS_STR@@QAEPAVNLS_STR@@XZ
; protected: int __thiscall FS_ENUM::NextBreadthFirst(void)
?NextBreadthFirst@FS_ENUM@@IAEHXZ
; protected: int __thiscall FS_ENUM::NextDepthFirst(void)
?NextDepthFirst@FS_ENUM@@IAEHXZ
; public: long __thiscall WIN_TIME::Normalize(void)
?Normalize@WIN_TIME@@QAEJXZ
; public: void __thiscall BITFIELD::Not(void)
?Not@BITFIELD@@QAEXXZ
; private: long __thiscall REG_KEY::OpenByName(class NLS_STR const &,unsigned long)
?OpenByName@REG_KEY@@AAEJABVNLS_STR@@K@Z
; private: long __thiscall REG_KEY::OpenChild(class REG_KEY *,class NLS_STR const &,unsigned long,unsigned long)
?OpenChild@REG_KEY@@AAEJPAV1@ABVNLS_STR@@KK@Z
; private: class REG_KEY * __thiscall REG_KEY::OpenParent(unsigned long)
?OpenParent@REG_KEY@@AAEPAV1@K@Z
; private: long __thiscall REG_KEY::ParentName(class NLS_STR *)const 
?ParentName@REG_KEY@@ABEJPAVNLS_STR@@@Z
; protected: void * __thiscall HEAP_BASE::PeekItem(int)const 
?PeekItem@HEAP_BASE@@IBEPAXH@Z
; public: long __thiscall LOGON_HOURS_SETTING::PermitAll(void)
?PermitAll@LOGON_HOURS_SETTING@@QAEJXZ
; protected: long __thiscall FS_ENUM::PopDir(void)
?PopDir@FS_ENUM@@IAEJXZ
; protected: long __thiscall FS_ENUM::PushDir(unsigned short const *)
?PushDir@FS_ENUM@@IAEJPBG@Z
; public: long __thiscall INTL_PROFILE::QueryAMStr(class NLS_STR *)const 
?QueryAMStr@INTL_PROFILE@@QBEJPAVNLS_STR@@@Z
; private: unsigned int __thiscall BUFFER::QueryActualSize(void)
?QueryActualSize@BUFFER@@AAEIXZ
; public: unsigned int __thiscall BITFIELD::QueryAllocSize(void)const 
?QueryAllocSize@BITFIELD@@QBEIXZ
; public: unsigned int __thiscall NLS_STR::QueryAllocSize(void)const 
?QueryAllocSize@NLS_STR@@QBEIXZ
; public: unsigned int __thiscall NLS_STR::QueryAnsiTextLength(void)const 
?QueryAnsiTextLength@NLS_STR@@QBEIXZ
; public: virtual unsigned int __thiscall W32_DIR_BLOCK::QueryAttr(void)
?QueryAttr@W32_DIR_BLOCK@@UAEIXZ
; protected: unsigned char * __thiscall BITFIELD::QueryBitPos(unsigned int,unsigned int)const 
?QueryBitPos@BITFIELD@@IBEPAEII@Z
; public: int __thiscall STRLIST::QueryBufferSize(unsigned short *)
?QueryBufferSize@STRLIST@@QAEHPAG@Z
; private: static unsigned int __stdcall LOGON_HOURS_SETTING::QueryByteCount(unsigned int)
?QueryByteCount@LOGON_HOURS_SETTING@@CGII@Z
; public: unsigned int __thiscall LOGON_HOURS_SETTING::QueryByteCount(void)const 
?QueryByteCount@LOGON_HOURS_SETTING@@QBEIXZ
; public: unsigned short __thiscall NLS_STR::QueryChar(class ISTR const &)const 
?QueryChar@NLS_STR@@QBEGABVISTR@@@Z
; public: unsigned int __thiscall BITFIELD::QueryCount(void)const 
?QueryCount@BITFIELD@@QBEIXZ
; protected: unsigned int __thiscall DFSITER_TREE::QueryCurDepth(void)const 
?QueryCurDepth@DFSITER_TREE@@IBEIXZ
; public: static class DBGSTREAM & __stdcall DBGSTREAM::QueryCurrent(void)
?QueryCurrent@DBGSTREAM@@SGAAV1@XZ
; public: unsigned int __thiscall FS_ENUM::QueryCurrentDepth(void)
?QueryCurrentDepth@FS_ENUM@@QAEIXZ
; public: class DIR_BLOCK * __thiscall FS_ENUM::QueryCurrentDirBlock(void)const 
?QueryCurrentDirBlock@FS_ENUM@@QBEPAVDIR_BLOCK@@XZ
; unsigned long __stdcall QueryCurrentTimeStamp(void)
?QueryCurrentTimeStamp@@YGKXZ
; public: static class REG_KEY * __stdcall REG_KEY::QueryCurrentUser(unsigned long)
?QueryCurrentUser@REG_KEY@@SGPAV1@K@Z
; public: char const * __thiscall CHAR_STRING::QueryData(void)const 
?QueryData@CHAR_STRING@@QBEPBDXZ
; public: unsigned short const * __thiscall WCHAR_STRING::QueryData(void)const 
?QueryData@WCHAR_STRING@@QBEPBGXZ
; public: long __thiscall INTL_PROFILE::QueryDateSeparator(class NLS_STR *)const 
?QueryDateSeparator@INTL_PROFILE@@QBEJPAVNLS_STR@@@Z
; public: int __thiscall WIN_TIME::QueryDay(void)const 
?QueryDay@WIN_TIME@@QBEHXZ
; public: int __thiscall WIN_TIME::QueryDayOfWeek(void)const 
?QueryDayOfWeek@WIN_TIME@@QBEHXZ
; public: int __thiscall INTL_PROFILE::QueryDayPos(void)const 
?QueryDayPos@INTL_PROFILE@@QBEHXZ
; public: class STRLIST * __thiscall DIR_BLOCK::QueryDirs(void)
?QueryDirs@DIR_BLOCK@@QAEPAVSTRLIST@@XZ
; public: class ITER_STRLIST * __thiscall DIR_BLOCK::QueryDirsIter(void)
?QueryDirsIter@DIR_BLOCK@@QAEPAVITER_STRLIST@@XZ
; public: long __thiscall FMX::QueryDriveInfo(struct _FMS_GETDRIVEINFOW *)
?QueryDriveInfo@FMX@@QAEJPAU_FMS_GETDRIVEINFOW@@@Z
; public: long __thiscall INTL_PROFILE::QueryDurationStr(int,int,int,int,class NLS_STR *)const 
?QueryDurationStr@INTL_PROFILE@@QBEJHHHHPAVNLS_STR@@@Z
; public: long __thiscall BASE::QueryError(void)const 
?QueryError@BASE@@QBEJXZ
; public: long __thiscall FORWARDING_BASE::QueryError(void)const 
?QueryError@FORWARDING_BASE@@QBEJXZ
; public: long __thiscall HUATOM::QueryError(void)const 
?QueryError@HUATOM@@QBEJXZ
; public: virtual unsigned short const * __thiscall W32_DIR_BLOCK::QueryFileName(void)
?QueryFileName@W32_DIR_BLOCK@@UAEPBGXZ
; public: long __thiscall WIN_TIME::QueryFileTime(struct _FILETIME *)const 
?QueryFileTime@WIN_TIME@@QBEJPAU_FILETIME@@@Z
; public: long __thiscall WIN_TIME::QueryFileTimeLocal(struct _FILETIME *)const 
?QueryFileTimeLocal@WIN_TIME@@QBEJPAU_FILETIME@@@Z
; public: class TREE * __thiscall TREE::QueryFirstSubtree(void)const 
?QueryFirstSubtree@TREE@@QBEPAV1@XZ
; public: unsigned int __thiscall FMX::QueryFocus(void)const 
?QueryFocus@FMX@@QBEIXZ
; public: int __thiscall WIN_TIME::QueryHour(void)const 
?QueryHour@WIN_TIME@@QBEHXZ
; public: int __thiscall LOGON_HOURS_SETTING::QueryHourInDay(unsigned int,unsigned int)const 
?QueryHourInDay@LOGON_HOURS_SETTING@@QBEHII@Z
; public: int __thiscall LOGON_HOURS_SETTING::QueryHourInWeek(unsigned int)const 
?QueryHourInWeek@LOGON_HOURS_SETTING@@QBEHI@Z
; public: unsigned char * __thiscall LOGON_HOURS_SETTING::QueryHoursBlock(void)const 
?QueryHoursBlock@LOGON_HOURS_SETTING@@QBEPAEXZ
; private: int __thiscall ISTR::QueryIch(void)const 
?QueryIch@ISTR@@ABEHXZ
; public: long __thiscall REG_KEY::QueryInfo(class REG_KEY_INFO_STRUCT *)
?QueryInfo@REG_KEY@@QAEJPAVREG_KEY_INFO_STRUCT@@@Z
; public: long __thiscall REG_KEY::QueryKeyName(class NLS_STR *)const 
?QueryKeyName@REG_KEY@@QBEJPAVNLS_STR@@@Z
; private: long __thiscall REG_KEY::QueryKeyValueBinary(unsigned short const *,unsigned char * *,long *,long,unsigned long *,unsigned long)
?QueryKeyValueBinary@REG_KEY@@AAEJPBGPAPAEPAJJPAKK@Z
; private: long __thiscall REG_KEY::QueryKeyValueLong(unsigned short const *,long *,unsigned long *)
?QueryKeyValueLong@REG_KEY@@AAEJPBGPAJPAK@Z
; private: long __thiscall REG_KEY::QueryKeyValueString(unsigned short const *,unsigned short * *,class NLS_STR *,unsigned long *,long,long *,unsigned long)
?QueryKeyValueString@REG_KEY@@AAEJPBGPAPAGPAVNLS_STR@@PAKJPAJK@Z
; public: class TREE * __thiscall TREE::QueryLastSubtree(void)const 
?QueryLastSubtree@TREE@@QBEPAV1@XZ
; public: class TREE * __thiscall TREE::QueryLeft(void)const 
?QueryLeft@TREE@@QBEPAV1@XZ
; public: int __thiscall UATOM_LINKAGE::QueryLinked(void)
?QueryLinked@UATOM_LINKAGE@@QAEHXZ
; public: static class REG_KEY * __stdcall REG_KEY::QueryLocalMachine(unsigned long)
?QueryLocalMachine@REG_KEY@@SGPAV1@K@Z
; public: long __thiscall INTL_PROFILE::QueryLongDateString(class WIN_TIME const &,class NLS_STR *)const 
?QueryLongDateString@INTL_PROFILE@@QBEJABVWIN_TIME@@PAVNLS_STR@@@Z
; protected: unsigned int __thiscall DFSITER_TREE::QueryMaxDepth(void)const 
?QueryMaxDepth@DFSITER_TREE@@IBEIXZ
; public: unsigned int __thiscall FS_ENUM::QueryMaxDepth(void)
?QueryMaxDepth@FS_ENUM@@QAEIXZ
; protected: unsigned int __thiscall BITFIELD::QueryMaxNonAllocBitCount(void)const 
?QueryMaxNonAllocBitCount@BITFIELD@@IBEIXZ
; public: int __thiscall WIN_TIME::QueryMinute(void)const 
?QueryMinute@WIN_TIME@@QBEHXZ
; public: int __thiscall WIN_TIME::QueryMonth(void)const 
?QueryMonth@WIN_TIME@@QBEHXZ
; public: int __thiscall INTL_PROFILE::QueryMonthPos(void)const 
?QueryMonthPos@INTL_PROFILE@@QBEHXZ
; public: long __thiscall FS_ENUM::QueryName(class NLS_STR *)const 
?QueryName@FS_ENUM@@QBEJPAVNLS_STR@@@Z
; public: long __thiscall REG_KEY::QueryName(class NLS_STR *,int)const 
?QueryName@REG_KEY@@QBEJPAVNLS_STR@@H@Z
; public: class NLS_STR const * __thiscall HUATOM::QueryNls(void)const 
?QueryNls@HUATOM@@QBEPBVNLS_STR@@XZ
; protected: class TREE const * __thiscall DFSITER_TREE::QueryNode(void)const 
?QueryNode@DFSITER_TREE@@IBEPBVTREE@@XZ
; public: unsigned int __thiscall NLS_STR::QueryNumChar(void)const 
?QueryNumChar@NLS_STR@@QBEIXZ
; public: unsigned int __thiscall DLIST::QueryNumElem(void)
?QueryNumElem@DLIST@@QAEIXZ
; public: unsigned int __thiscall SLIST::QueryNumElem(void)
?QueryNumElem@SLIST@@QAEIXZ
; public: unsigned int __thiscall TREE::QueryNumElem(void)const 
?QueryNumElem@TREE@@QBEIXZ
; public: unsigned int __thiscall BITFIELD::QueryOffset(unsigned int)const 
?QueryOffset@BITFIELD@@QBEII@Z
; public: long __thiscall INTL_PROFILE::QueryPMStr(class NLS_STR *)const 
?QueryPMStr@INTL_PROFILE@@QBEJPAVNLS_STR@@@Z
; public: class TREE * __thiscall TREE::QueryParent(void)const 
?QueryParent@TREE@@QBEPAV1@XZ
; public: unsigned short const * __thiscall NLS_STR::QueryPch(class ISTR const &)const 
?QueryPch@NLS_STR@@QBEPBGABVISTR@@@Z
; public: unsigned short const * __thiscall NLS_STR::QueryPch(void)const 
?QueryPch@NLS_STR@@QBEPBGXZ
; public: void * __thiscall ITER_SL::QueryProp(void)
?QueryProp@ITER_SL@@QAEPAXXZ
; public: void * __thiscall TREE::QueryProp(void)const 
?QueryProp@TREE@@QBEPAXXZ
; public: unsigned char * __thiscall BUFFER::QueryPtr(void)const 
?QueryPtr@BUFFER@@QBEPAEXZ
; public: class TREE * __thiscall TREE::QueryRight(void)const 
?QueryRight@TREE@@QBEPAV1@XZ
; protected: unsigned int __thiscall FS_ENUM::QuerySearchAttr(void)const 
?QuerySearchAttr@FS_ENUM@@IBEIXZ
; public: int __thiscall WIN_TIME::QuerySecond(void)const 
?QuerySecond@WIN_TIME@@QBEHXZ
; public: unsigned int __thiscall FMX::QuerySelCount(void)const 
?QuerySelCount@FMX@@QBEIXZ
; public: long __thiscall FMX::QuerySelection(int,struct _FMS_GETFILESELW *,int)
?QuerySelection@FMX@@QAEJHPAU_FMS_GETFILESELW@@H@Z
; public: long __thiscall INTL_PROFILE::QueryShortDateString(class WIN_TIME const &,class NLS_STR *)const 
?QueryShortDateString@INTL_PROFILE@@QBEJABVWIN_TIME@@PAVNLS_STR@@@Z
; public: unsigned int __thiscall BUFFER::QuerySize(void)const 
?QuerySize@BUFFER@@QBEIXZ
; protected: class TREE const * __thiscall DFSITER_TREE::QueryStartNode(void)const 
?QueryStartNode@DFSITER_TREE@@IBEPBVTREE@@XZ
; private: class NLS_STR const * __thiscall ISTR::QueryString(void)const 
?QueryString@ISTR@@ABEPBVNLS_STR@@XZ
; private: class NLS_STR * __thiscall NLS_STR::QuerySubStr(class ISTR const &,unsigned int)const 
?QuerySubStr@NLS_STR@@ABEPAV1@ABVISTR@@I@Z
; public: class NLS_STR * __thiscall NLS_STR::QuerySubStr(class ISTR const &,class ISTR const &)const 
?QuerySubStr@NLS_STR@@QBEPAV1@ABVISTR@@0@Z
; public: class NLS_STR * __thiscall NLS_STR::QuerySubStr(class ISTR const &)const 
?QuerySubStr@NLS_STR@@QBEPAV1@ABVISTR@@@Z
; public: unsigned short const * __thiscall HUATOM::QueryText(void)const 
?QueryText@HUATOM@@QBEPBGXZ
; public: unsigned int __thiscall NLS_STR::QueryTextLength(void)const 
?QueryTextLength@NLS_STR@@QBEIXZ
; public: unsigned int __thiscall NLS_STR::QueryTextSize(void)const 
?QueryTextSize@NLS_STR@@QBEIXZ
; public: long __thiscall WIN_TIME::QueryTime(unsigned long *)const 
?QueryTime@WIN_TIME@@QBEJPAK@Z
; public: long __thiscall WIN_TIME::QueryTimeLocal(unsigned long *)const 
?QueryTimeLocal@WIN_TIME@@QBEJPAK@Z
; public: long __thiscall INTL_PROFILE::QueryTimeSeparator(class NLS_STR *)const 
?QueryTimeSeparator@INTL_PROFILE@@QBEJPAVNLS_STR@@@Z
; public: long __thiscall INTL_PROFILE::QueryTimeString(class WIN_TIME const &,class NLS_STR *)const 
?QueryTimeString@INTL_PROFILE@@QBEJABVWIN_TIME@@PAVNLS_STR@@@Z
; public: unsigned int __thiscall LOGON_HOURS_SETTING::QueryUnitsPerWeek(void)const 
?QueryUnitsPerWeek@LOGON_HOURS_SETTING@@QBEIXZ
; public: long __thiscall REG_KEY::QueryValue(class REG_VALUE_INFO_STRUCT *)
?QueryValue@REG_KEY@@QAEJPAVREG_VALUE_INFO_STRUCT@@@Z
; public: long __thiscall REG_KEY::QueryValue(unsigned short const *,unsigned long *,unsigned long *)
?QueryValue@REG_KEY@@QAEJPBGPAK1@Z
; public: long __thiscall REG_KEY::QueryValue(unsigned short const *,unsigned char * *,long *,long,unsigned long *)
?QueryValue@REG_KEY@@QAEJPBGPAPAEPAJJPAK@Z
; public: long __thiscall REG_KEY::QueryValue(unsigned short const *,unsigned short * *,unsigned long,unsigned long *,int)
?QueryValue@REG_KEY@@QAEJPBGPAPAGKPAKH@Z
; public: long __thiscall REG_KEY::QueryValue(unsigned short const *,class STRLIST * *,unsigned long *)
?QueryValue@REG_KEY@@QAEJPBGPAPAVSTRLIST@@PAK@Z
; public: long __thiscall REG_KEY::QueryValue(unsigned short const *,class NLS_STR *,unsigned long,unsigned long *,int)
?QueryValue@REG_KEY@@QAEJPBGPAVNLS_STR@@KPAKH@Z
; public: int __thiscall WIN_TIME::QueryYear(void)const 
?QueryYear@WIN_TIME@@QBEHXZ
; public: int __thiscall INTL_PROFILE::QueryYearPos(void)const 
?QueryYearPos@INTL_PROFILE@@QBEHXZ
; private: int __thiscall NLS_STR::Realloc(unsigned int)
?Realloc@NLS_STR@@AAEHI@Z
; private: long __thiscall BUFFER::ReallocStorage(unsigned int)
?ReallocStorage@BUFFER@@AAEJI@Z
; public: void __thiscall FMX::Refresh(void)
?Refresh@FMX@@QAEXXZ
; public: long __thiscall INTL_PROFILE::Refresh(void)
?Refresh@INTL_PROFILE@@QAEJXZ
; protected: void __thiscall DLIST::Register(class ITER_L *)
?Register@DLIST@@IAEXPAVITER_L@@@Z
; protected: void __thiscall SLIST::Register(class ITER_SL *)
?Register@SLIST@@IAEXPAVITER_SL@@@Z
; public: void __thiscall FMX::Reload(void)
?Reload@FMX@@QAEXXZ
; public: void * __thiscall DLIST::Remove(class ITER_DL &)
?Remove@DLIST@@QAEPAXAAVITER_DL@@@Z
; public: void * __thiscall DLIST::Remove(class RITER_DL &)
?Remove@DLIST@@QAEPAXAAVRITER_DL@@@Z
; public: void * __thiscall SLIST::Remove(class ITER_SL &)
?Remove@SLIST@@QAEPAXAAVITER_SL@@@Z
; public: class DIR_BLOCK * __thiscall SLIST_OF_DIR_BLOCK::Remove(class ITER_SL_DIR_BLOCK &)
?Remove@SLIST_OF_DIR_BLOCK@@QAEPAVDIR_BLOCK@@AAVITER_SL_DIR_BLOCK@@@Z
; public: class NLS_STR * __thiscall SLIST_OF_NLS_STR::Remove(class NLS_STR &)
?Remove@SLIST_OF_NLS_STR@@QAEPAVNLS_STR@@AAV2@@Z
; public: virtual void __thiscall OUTPUT_TO_AUX::Render(unsigned short const *)
?Render@OUTPUT_TO_AUX@@UAEXPBG@Z
; public: virtual void __thiscall OUTPUT_TO_AUX::Render(unsigned short const *,unsigned int)
?Render@OUTPUT_TO_AUX@@UAEXPBGI@Z
; private: virtual void __thiscall OUTPUT_TO_NUL::Render(unsigned short const *)
?Render@OUTPUT_TO_NUL@@EAEXPBG@Z
; private: virtual void __thiscall OUTPUT_TO_NUL::Render(unsigned short const *,unsigned int)
?Render@OUTPUT_TO_NUL@@EAEXPBGI@Z
; public: virtual void __thiscall OUTPUT_TO_STDERR::Render(unsigned short const *)
?Render@OUTPUT_TO_STDERR@@UAEXPBG@Z
; public: virtual void __thiscall OUTPUT_TO_STDERR::Render(unsigned short const *,unsigned int)
?Render@OUTPUT_TO_STDERR@@UAEXPBGI@Z
; public: virtual void __thiscall OUTPUT_TO_STDOUT::Render(unsigned short const *)
?Render@OUTPUT_TO_STDOUT@@UAEXPBG@Z
; public: virtual void __thiscall OUTPUT_TO_STDOUT::Render(unsigned short const *,unsigned int)
?Render@OUTPUT_TO_STDOUT@@UAEXPBGI@Z
; private: void __thiscall NLS_STR::ReplSubStr(class NLS_STR const &,class ISTR &,unsigned int)
?ReplSubStr@NLS_STR@@AAEXABV1@AAVISTR@@I@Z
; public: void __thiscall NLS_STR::ReplSubStr(class NLS_STR const &,class ISTR &)
?ReplSubStr@NLS_STR@@QAEXABV1@AAVISTR@@@Z
; public: void __thiscall NLS_STR::ReplSubStr(class NLS_STR const &,class ISTR &,class ISTR const &)
?ReplSubStr@NLS_STR@@QAEXABV1@AAVISTR@@ABV2@@Z
; protected: void __thiscall BASE::ReportError(long)
?ReportError@BASE@@IAEXJ@Z
; protected: void __thiscall FS_ENUM::ReportLastError(long)
?ReportLastError@FS_ENUM@@IAEXJ@Z
; public: void __thiscall DFSITER_TREE::Reset(void)
?Reset@DFSITER_TREE@@QAEXXZ
; public: void __thiscall ISTR::Reset(void)
?Reset@ISTR@@QAEXXZ
; public: void __thiscall ITER_DL::Reset(void)
?Reset@ITER_DL@@QAEXXZ
; public: void __thiscall ITER_SL::Reset(void)
?Reset@ITER_SL@@QAEXXZ
; public: int __thiscall NLS_STR::Reset(void)
?Reset@NLS_STR@@QAEHXZ
; public: void __thiscall RITER_DL::Reset(void)
?Reset@RITER_DL@@QAEXXZ
; protected: void __thiscall BASE::ResetError(void)
?ResetError@BASE@@IAEXXZ
; public: long __thiscall BITFIELD::Resize(unsigned int)
?Resize@BITFIELD@@QAEJI@Z
; public: long __thiscall BUFFER::Resize(unsigned int)
?Resize@BUFFER@@QAEJI@Z
; public: long __thiscall NLS_STR::RtlOemUpcase(void)
?RtlOemUpcase@NLS_STR@@QAEJXZ
; private: long __thiscall INTL_PROFILE::ScanLongDate(class NLS_STR *)const 
?ScanLongDate@INTL_PROFILE@@ABEJPAVNLS_STR@@@Z
; public: void __thiscall DL_NODE::Set(class DL_NODE *,class DL_NODE *,void *)
?Set@DL_NODE@@QAEXPAV1@0PAX@Z
; public: long __thiscall LOGON_HOURS_SETTING::Set(class LOGON_HOURS_SETTING const &)
?Set@LOGON_HOURS_SETTING@@QAEJABV1@@Z
; public: void __thiscall SL_NODE::Set(class SL_NODE *,void *)
?Set@SL_NODE@@QAEXPAV1@PAX@Z
; public: void __thiscall BITFIELD::SetAllBits(enum BITVALUES)
?SetAllBits@BITFIELD@@QAEXW4BITVALUES@@@Z
; public: long __thiscall HEAP_BASE::SetAllocCount(int)
?SetAllocCount@HEAP_BASE@@QAEJH@Z
; public: void __thiscall BITFIELD::SetBit(unsigned int,enum BITVALUES)
?SetBit@BITFIELD@@QAEXIW4BITVALUES@@@Z
; private: void __thiscall DFSITER_TREE::SetCurDepth(unsigned int)
?SetCurDepth@DFSITER_TREE@@AAEXI@Z
; public: static void __stdcall DBGSTREAM::SetCurrent(class DBGSTREAM *)
?SetCurrent@DBGSTREAM@@SGXPAV1@@Z
; protected: void __thiscall FS_ENUM::SetCurrentDirBlock(class DIR_BLOCK *)
?SetCurrentDirBlock@FS_ENUM@@IAEXPAVDIR_BLOCK@@@Z
; public: long __thiscall WIN_TIME::SetCurrentTime(void)
?SetCurrentTime@WIN_TIME@@QAEJXZ
; public: void __thiscall DIR_BLOCK::SetDoBreadthFirstDirs(int)
?SetDoBreadthFirstDirs@DIR_BLOCK@@QAEXH@Z
; public: void __thiscall DIR_BLOCK::SetFindFirstFlag(int)
?SetFindFirstFlag@DIR_BLOCK@@QAEXH@Z
; private: void __thiscall TREE::SetFirstSubtree(class TREE *)
?SetFirstSubtree@TREE@@AAEXPAV1@@Z
; public: long __thiscall LOGON_HOURS_SETTING::SetFromBits(unsigned char const *,unsigned int)
?SetFromBits@LOGON_HOURS_SETTING@@QAEJPBEI@Z
; public: long __thiscall WIN_TIME::SetGMT(int)
?SetGMT@WIN_TIME@@QAEJH@Z
; public: long __thiscall LOGON_HOURS_SETTING::SetHourInDay(int,unsigned int,unsigned int)
?SetHourInDay@LOGON_HOURS_SETTING@@QAEJHII@Z
; public: long __thiscall LOGON_HOURS_SETTING::SetHourInWeek(int,unsigned int)
?SetHourInWeek@LOGON_HOURS_SETTING@@QAEJHI@Z
; private: void __thiscall ISTR::SetIch(int)
?SetIch@ISTR@@AAEXH@Z
; protected: void __thiscall HEAP_BASE::SetItem(int,void *)
?SetItem@HEAP_BASE@@IAEXHPAX@Z
; protected: void __thiscall DLIST::SetIters(class DL_NODE *)
?SetIters@DLIST@@IAEXPAVDL_NODE@@@Z
; protected: void __thiscall SLIST::SetIters(class SL_NODE *,class SL_NODE *)
?SetIters@SLIST@@IAEXPAVSL_NODE@@0@Z
; protected: void __thiscall SLIST::SetIters(class SL_NODE *)
?SetIters@SLIST@@IAEXPAVSL_NODE@@@Z
; private: long __thiscall REG_KEY::SetKeyValueBinary(unsigned short const *,unsigned char const *,long,unsigned long,unsigned long)
?SetKeyValueBinary@REG_KEY@@AAEJPBGPBEJKK@Z
; private: long __thiscall REG_KEY::SetKeyValueLong(unsigned short const *,long,unsigned long)
?SetKeyValueLong@REG_KEY@@AAEJPBGJK@Z
; private: long __thiscall REG_KEY::SetKeyValueString(unsigned short const *,unsigned short const *,unsigned long,long,unsigned long)
?SetKeyValueString@REG_KEY@@AAEJPBG0KJK@Z
; private: void __thiscall TREE::SetLeft(class TREE *)
?SetLeft@TREE@@AAEXPAV1@@Z
; private: void __thiscall DFSITER_TREE::SetMaxDepth(unsigned int)
?SetMaxDepth@DFSITER_TREE@@AAEXI@Z
; private: void __thiscall DFSITER_TREE::SetNode(class TREE const *)
?SetNode@DFSITER_TREE@@AAEXPBVTREE@@@Z
; private: void __thiscall TREE::SetParent(class TREE *)
?SetParent@TREE@@AAEXPAV1@@Z
; public: void __thiscall TREE::SetProp(void * const)
?SetProp@TREE@@QAEXQAX@Z
; private: void __thiscall TREE::SetRight(class TREE *)
?SetRight@TREE@@AAEXPAV1@@Z
; public: void __thiscall DBGSTREAM::SetSink(class OUTPUTSINK *)
?SetSink@DBGSTREAM@@QAEXPAVOUTPUTSINK@@@Z
; private: void __thiscall DFSITER_TREE::SetStartNode(class TREE const *)
?SetStartNode@DFSITER_TREE@@AAEXPBVTREE@@@Z
; public: long __thiscall WIN_TIME::SetTime(unsigned long)
?SetTime@WIN_TIME@@QAEJK@Z
; public: long __thiscall WIN_TIME::SetTime(struct _FILETIME)
?SetTime@WIN_TIME@@QAEJU_FILETIME@@@Z
; public: long __thiscall WIN_TIME::SetTimeLocal(unsigned long)
?SetTimeLocal@WIN_TIME@@QAEJK@Z
; public: long __thiscall WIN_TIME::SetTimeLocal(struct _FILETIME)
?SetTimeLocal@WIN_TIME@@QAEJU_FILETIME@@@Z
; public: long __thiscall REG_KEY::SetValue(class REG_VALUE_INFO_STRUCT *)
?SetValue@REG_KEY@@QAEJPAVREG_VALUE_INFO_STRUCT@@@Z
; public: long __thiscall REG_KEY::SetValue(unsigned short const *,unsigned short const *,unsigned long,unsigned long const *,int)
?SetValue@REG_KEY@@QAEJPBG0KPBKH@Z
; public: long __thiscall REG_KEY::SetValue(unsigned short const *,unsigned long,unsigned long const *)
?SetValue@REG_KEY@@QAEJPBGKPBK@Z
; public: long __thiscall REG_KEY::SetValue(unsigned short const *,unsigned char const *,long,unsigned long const *)
?SetValue@REG_KEY@@QAEJPBGPBEJPBK@Z
; public: long __thiscall REG_KEY::SetValue(unsigned short const *,class NLS_STR const *,unsigned long const *,int)
?SetValue@REG_KEY@@QAEJPBGPBVNLS_STR@@PBKH@Z
; public: long __thiscall REG_KEY::SetValue(unsigned short const *,class STRLIST const *,unsigned long const *)
?SetValue@REG_KEY@@QAEJPBGPBVSTRLIST@@PBK@Z
; protected: int __thiscall FS_ENUM::ShouldThisFileBeIncluded(unsigned int)const 
?ShouldThisFileBeIncluded@FS_ENUM@@IBEHI@Z
; public: static long __stdcall UATOM_MANAGER::Terminate(void)
?Terminate@UATOM_MANAGER@@SGJXZ
; private: class UATOM * __thiscall UATOM_MANAGER::Tokenize(unsigned short const *,int)
?Tokenize@UATOM_MANAGER@@AAEPAVUATOM@@PBGH@Z
; public: void __thiscall BUFFER::Trim(void)
?Trim@BUFFER@@QAEXXZ
; public: void __thiscall HEAP_BASE::Trim(void)
?Trim@HEAP_BASE@@QAEXXZ
; void __stdcall UIAssertCommand(char const *)
?UIAssertCommand@@YGXPBD@Z
; void __stdcall UIAssertHlp(char const *,char const *,unsigned int)
?UIAssertHlp@@YGXPBD0I@Z
; void __stdcall UIAssertHlp(char const *,unsigned int)
?UIAssertHlp@@YGXPBDI@Z
; protected: void * __thiscall DLIST::Unlink(class DL_NODE *)
?Unlink@DLIST@@IAEPAXPAVDL_NODE@@@Z
; protected: void __thiscall TREE::Unlink(void)
?Unlink@TREE@@IAEXXZ
; public: void __thiscall UATOM_LINKAGE::Unlink(void)
?Unlink@UATOM_LINKAGE@@QAEXXZ
; private: void __thiscall NLS_STR::UpdateIstr(class ISTR *)const 
?UpdateIstr@NLS_STR@@ABEXPAVISTR@@@Z
; public: int __thiscall STRLIST::WriteToBuffer(unsigned short *,int,unsigned short *)
?WriteToBuffer@STRLIST@@QAEHPAGH0@Z
; public: void __thiscall DLIST::_DebugPrint(void)const 
?_DebugPrint@DLIST@@QBEXXZ
; public: void __thiscall SLIST::_DebugPrint(void)const 
?_DebugPrint@SLIST@@QBEXXZ
; public: void __thiscall TREE::_DebugPrint(void)const 
?_DebugPrint@TREE@@QBEXXZ
; public: int __thiscall NLS_STR::_IsOwnerAlloc(void)const 
?_IsOwnerAlloc@NLS_STR@@QBEHXZ
; public: unsigned int __thiscall NLS_STR::_QueryAllocSize(void)const 
?_QueryAllocSize@NLS_STR@@QBEIXZ
; public: unsigned short const * __thiscall NLS_STR::_QueryPch(void)const 
?_QueryPch@NLS_STR@@QBEPBGXZ
; public: unsigned int __thiscall NLS_STR::_QueryTextLength(void)const 
?_QueryTextLength@NLS_STR@@QBEIXZ
; protected: void __thiscall BASE::_ReportError(long)
?_ReportError@BASE@@IAEXJ@Z
; public: int __thiscall NLS_STR::_stricmp(class NLS_STR const &)const 
?_stricmp@NLS_STR@@QBEHABV1@@Z
; public: int __thiscall NLS_STR::_stricmp(class NLS_STR const &,class ISTR const &,class ISTR const &)const 
?_stricmp@NLS_STR@@QBEHABV1@ABVISTR@@1@Z
; public: int __thiscall NLS_STR::_stricmp(class NLS_STR const &,class ISTR const &)const 
?_stricmp@NLS_STR@@QBEHABV1@ABVISTR@@@Z
; public: int __thiscall NLS_STR::_strnicmp(class NLS_STR const &,class ISTR const &,class ISTR const &,class ISTR const &)const 
?_strnicmp@NLS_STR@@QBEHABV1@ABVISTR@@11@Z
; public: int __thiscall NLS_STR::_strnicmp(class NLS_STR const &,class ISTR const &,class ISTR const &)const 
?_strnicmp@NLS_STR@@QBEHABV1@ABVISTR@@1@Z
; public: int __thiscall NLS_STR::_strnicmp(class NLS_STR const &,class ISTR const &)const 
?_strnicmp@NLS_STR@@QBEHABV1@ABVISTR@@@Z
; public: class NLS_STR & __thiscall NLS_STR::_strupr(void)
?_strupr@NLS_STR@@QAEAAV1@XZ
; public: int __thiscall NLS_STR::atoi(class ISTR const &)const 
?atoi@NLS_STR@@QBEHABVISTR@@@Z
; public: int __thiscall NLS_STR::atoi(void)const 
?atoi@NLS_STR@@QBEHXZ
; public: long __thiscall NLS_STR::atol(class ISTR const &)const 
?atol@NLS_STR@@QBEJABVISTR@@@Z
; public: long __thiscall NLS_STR::atol(void)const 
?atol@NLS_STR@@QBEJXZ
; public: unsigned long __thiscall NLS_STR::atoul(class ISTR const &)const 
?atoul@NLS_STR@@QBEKABVISTR@@@Z
; public: unsigned long __thiscall NLS_STR::atoul(void)const 
?atoul@NLS_STR@@QBEKXZ
; public: class NLS_STR & __thiscall NLS_STR::strcat(class NLS_STR const &)
?strcat@NLS_STR@@QAEAAV1@ABV1@@Z
; public: int __thiscall NLS_STR::strchr(class ISTR *,unsigned short)const 
?strchr@NLS_STR@@QBEHPAVISTR@@G@Z
; public: int __thiscall NLS_STR::strchr(class ISTR *,unsigned short,class ISTR const &)const 
?strchr@NLS_STR@@QBEHPAVISTR@@GABV2@@Z
; public: int __thiscall NLS_STR::strcmp(class NLS_STR const &)const 
?strcmp@NLS_STR@@QBEHABV1@@Z
; public: int __thiscall NLS_STR::strcmp(class NLS_STR const &,class ISTR const &,class ISTR const &)const 
?strcmp@NLS_STR@@QBEHABV1@ABVISTR@@1@Z
; public: int __thiscall NLS_STR::strcmp(class NLS_STR const &,class ISTR const &)const 
?strcmp@NLS_STR@@QBEHABV1@ABVISTR@@@Z
; unsigned short * __stdcall strcpy(unsigned short *,class NLS_STR const &)
?strcpy@@YGPAGPAGABVNLS_STR@@@Z
; public: int __thiscall NLS_STR::strcspn(class ISTR *,class NLS_STR const &)const 
?strcspn@NLS_STR@@QBEHPAVISTR@@ABV1@@Z
; public: int __thiscall NLS_STR::strcspn(class ISTR *,class NLS_STR const &,class ISTR const &)const 
?strcspn@NLS_STR@@QBEHPAVISTR@@ABV1@ABV2@@Z
; public: unsigned int __thiscall NLS_STR::strlen(void)const 
?strlen@NLS_STR@@QBEIXZ
; public: int __thiscall NLS_STR::strncmp(class NLS_STR const &,class ISTR const &,class ISTR const &,class ISTR const &)const 
?strncmp@NLS_STR@@QBEHABV1@ABVISTR@@11@Z
; public: int __thiscall NLS_STR::strncmp(class NLS_STR const &,class ISTR const &,class ISTR const &)const 
?strncmp@NLS_STR@@QBEHABV1@ABVISTR@@1@Z
; public: int __thiscall NLS_STR::strncmp(class NLS_STR const &,class ISTR const &)const 
?strncmp@NLS_STR@@QBEHABV1@ABVISTR@@@Z
; public: int __thiscall NLS_STR::strrchr(class ISTR *,unsigned short)const 
?strrchr@NLS_STR@@QBEHPAVISTR@@G@Z
; public: int __thiscall NLS_STR::strrchr(class ISTR *,unsigned short,class ISTR const &)const 
?strrchr@NLS_STR@@QBEHPAVISTR@@GABV2@@Z
; public: int __thiscall NLS_STR::strspn(class ISTR *,class NLS_STR const &)const 
?strspn@NLS_STR@@QBEHPAVISTR@@ABV1@@Z
; public: int __thiscall NLS_STR::strspn(class ISTR *,class NLS_STR const &,class ISTR const &)const 
?strspn@NLS_STR@@QBEHPAVISTR@@ABV1@ABV2@@Z
; public: int __thiscall NLS_STR::strstr(class ISTR *,class NLS_STR const &)const 
?strstr@NLS_STR@@QBEHPAVISTR@@ABV1@@Z
; public: int __thiscall NLS_STR::strstr(class ISTR *,class NLS_STR const &,class ISTR const &)const 
?strstr@NLS_STR@@QBEHPAVISTR@@ABV1@ABV2@@Z
; public: virtual void * __thiscall ITER_DL::vNext(void)
?vNext@ITER_DL@@UAEPAXXZ
; public: virtual void * __thiscall RITER_DL::vNext(void)
?vNext@RITER_DL@@UAEPAXXZ
InitCompareParam
NETUI_InitIsDBCS
NETUI_IsDBCS
NETUI_strcmp
NETUI_stricmp
NETUI_strncmp2
NETUI_strncmp
NETUI_strnicmp2
NETUI_strnicmp
QueryNocaseCompareParam
QueryStdCompareParam
QueryUserDefaultLCID
UserPreferenceQuery
UserPreferenceQueryBool
UserPreferenceSet
UserPreferenceSetBool
UserProfileEnum
UserProfileFree
UserProfileInit
UserProfileQuery
UserProfileRead
UserProfileSet
UserProfileWrite
