; 
; Exports of file iisui.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY iisui.dll
EXPORTS
InitCommonDll
; public: __cdecl CAccessEntry::CAccessEntry(class CAccessEntry & __ptr64) __ptr64
??0CAccessEntry@@QEAA@AEAV0@@Z
; public: __cdecl CAccessEntry::CAccessEntry(unsigned long,void * __ptr64,unsigned short const * __ptr64,int) __ptr64
??0CAccessEntry@@QEAA@KPEAXPEBGH@Z
; public: __cdecl CAccessEntry::CAccessEntry(void * __ptr64,int) __ptr64
??0CAccessEntry@@QEAA@PEAXH@Z
; public: __cdecl CAccessEntry::CAccessEntry(void * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
??0CAccessEntry@@QEAA@PEAXPEBG1@Z
; public: __cdecl CBlob::CBlob(class CBlob const & __ptr64) __ptr64
??0CBlob@@QEAA@AEBV0@@Z
; public: __cdecl CBlob::CBlob(unsigned long,unsigned char * __ptr64,int) __ptr64
??0CBlob@@QEAA@KPEAEH@Z
; public: __cdecl CBlob::CBlob(void) __ptr64
??0CBlob@@QEAA@XZ
; public: __cdecl CComAuthInfo::CComAuthInfo(class CComAuthInfo & __ptr64) __ptr64
??0CComAuthInfo@@QEAA@AEAV0@@Z
; public: __cdecl CComAuthInfo::CComAuthInfo(class CComAuthInfo * __ptr64) __ptr64
??0CComAuthInfo@@QEAA@PEAV0@@Z
; public: __cdecl CComAuthInfo::CComAuthInfo(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
??0CComAuthInfo@@QEAA@PEBG00@Z
; public: __cdecl CConfirmDlg::CConfirmDlg(class CWnd * __ptr64) __ptr64
??0CConfirmDlg@@QEAA@PEAVCWnd@@@Z
; public: __cdecl CDirBrowseDlg::CDirBrowseDlg(class CDirBrowseDlg const & __ptr64) __ptr64
??0CDirBrowseDlg@@QEAA@AEBV0@@Z
; public: __cdecl CDirBrowseDlg::CDirBrowseDlg(class CWnd * __ptr64,unsigned short const * __ptr64) __ptr64
??0CDirBrowseDlg@@QEAA@PEAVCWnd@@PEBG@Z
; public: __cdecl CDownButton::CDownButton(void) __ptr64
??0CDownButton@@QEAA@XZ
; public: __cdecl CEmphasizedDialog::CEmphasizedDialog(unsigned int,class CWnd * __ptr64) __ptr64
??0CEmphasizedDialog@@QEAA@IPEAVCWnd@@@Z
; public: __cdecl CEmphasizedDialog::CEmphasizedDialog(unsigned short const * __ptr64,class CWnd * __ptr64) __ptr64
??0CEmphasizedDialog@@QEAA@PEBGPEAVCWnd@@@Z
; public: __cdecl CEmphasizedDialog::CEmphasizedDialog(void) __ptr64
??0CEmphasizedDialog@@QEAA@XZ
; public: __cdecl CError::CError(long) __ptr64
??0CError@@QEAA@J@Z
; public: __cdecl CError::CError(unsigned long) __ptr64
??0CError@@QEAA@K@Z
; public: __cdecl CError::CError(void) __ptr64
??0CError@@QEAA@XZ
; public: __cdecl CGetComputer::CGetComputer(class CGetComputer const & __ptr64) __ptr64
??0CGetComputer@@QEAA@AEBV0@@Z
; public: __cdecl CGetComputer::CGetComputer(void) __ptr64
??0CGetComputer@@QEAA@XZ
; public: __cdecl CGetUsers::CGetUsers(unsigned short const * __ptr64,int) __ptr64
??0CGetUsers@@QEAA@PEBGH@Z
; public: __cdecl CHeaderListBox::CHeaderListBox(unsigned long,unsigned short const * __ptr64) __ptr64
??0CHeaderListBox@@QEAA@KPEBG@Z
; public: __cdecl CIISAppPool::CIISAppPool(class CIISAppPool & __ptr64) __ptr64
??0CIISAppPool@@QEAA@AEAV0@@Z
; public: __cdecl CIISAppPool::CIISAppPool(class CComAuthInfo * __ptr64,unsigned short const * __ptr64) __ptr64
??0CIISAppPool@@QEAA@PEAVCComAuthInfo@@PEBG@Z
; public: __cdecl CIISApplication::CIISApplication(class CIISApplication & __ptr64) __ptr64
??0CIISApplication@@QEAA@AEAV0@@Z
; public: __cdecl CIISApplication::CIISApplication(class CComAuthInfo * __ptr64,unsigned short const * __ptr64) __ptr64
??0CIISApplication@@QEAA@PEAVCComAuthInfo@@PEBG@Z
; public: __cdecl CIISInterface::CIISInterface(class CIISInterface & __ptr64) __ptr64
??0CIISInterface@@QEAA@AEAV0@@Z
; public: __cdecl CIISInterface::CIISInterface(class CComAuthInfo * __ptr64,long) __ptr64
??0CIISInterface@@QEAA@PEAVCComAuthInfo@@J@Z
; public: __cdecl CIISSvcControl::CIISSvcControl(class CIISSvcControl & __ptr64) __ptr64
??0CIISSvcControl@@QEAA@AEAV0@@Z
; public: __cdecl CIISSvcControl::CIISSvcControl(class CIISSvcControl * __ptr64) __ptr64
??0CIISSvcControl@@QEAA@PEAV0@@Z
; public: __cdecl CIISSvcControl::CIISSvcControl(class CComAuthInfo * __ptr64) __ptr64
??0CIISSvcControl@@QEAA@PEAVCComAuthInfo@@@Z
; public: __cdecl CIISWizardBookEnd::CIISWizardBookEnd(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int) __ptr64
??0CIISWizardBookEnd@@QEAA@IIIII@Z
; public: __cdecl CIISWizardBookEnd::CIISWizardBookEnd(long * __ptr64,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int) __ptr64
??0CIISWizardBookEnd@@QEAA@PEAJIIIIIII@Z
; public: __cdecl CIISWizardPage::CIISWizardPage(unsigned int,unsigned int,int,unsigned int,unsigned int) __ptr64
??0CIISWizardPage@@QEAA@IIHII@Z
; public: __cdecl CIISWizardSheet::CIISWizardSheet(unsigned int,unsigned int,unsigned long,unsigned long) __ptr64
??0CIISWizardSheet@@QEAA@IIKK@Z
; public: __cdecl CILong::CILong(long) __ptr64
??0CILong@@QEAA@J@Z
; public: __cdecl CILong::CILong(unsigned short const * __ptr64) __ptr64
??0CILong@@QEAA@PEBG@Z
; public: __cdecl CILong::CILong(void) __ptr64
??0CILong@@QEAA@XZ
; protected: __cdecl CINumber::CINumber(void) __ptr64
??0CINumber@@IEAA@XZ
; public: __cdecl CIPAccessDescriptor::CIPAccessDescriptor(class CIPAccessDescriptor const & __ptr64) __ptr64
??0CIPAccessDescriptor@@QEAA@AEBV0@@Z
; public: __cdecl CIPAccessDescriptor::CIPAccessDescriptor(int) __ptr64
??0CIPAccessDescriptor@@QEAA@H@Z
; public: __cdecl CIPAccessDescriptor::CIPAccessDescriptor(int,unsigned long,unsigned long,int) __ptr64
??0CIPAccessDescriptor@@QEAA@HKKH@Z
; public: __cdecl CIPAccessDescriptor::CIPAccessDescriptor(int,unsigned short const * __ptr64) __ptr64
??0CIPAccessDescriptor@@QEAA@HPEBG@Z
; public: __cdecl CIPAddress::CIPAddress(class CIPAddress const & __ptr64) __ptr64
??0CIPAddress@@QEAA@AEBV0@@Z
; public: __cdecl CIPAddress::CIPAddress(class CString const & __ptr64) __ptr64
??0CIPAddress@@QEAA@AEBVCString@@@Z
; public: __cdecl CIPAddress::CIPAddress(unsigned char,unsigned char,unsigned char,unsigned char) __ptr64
??0CIPAddress@@QEAA@EEEE@Z
; public: __cdecl CIPAddress::CIPAddress(unsigned long,int) __ptr64
??0CIPAddress@@QEAA@KH@Z
; public: __cdecl CIPAddress::CIPAddress(unsigned char * __ptr64,int) __ptr64
??0CIPAddress@@QEAA@PEAEH@Z
; public: __cdecl CIPAddress::CIPAddress(unsigned short const * __ptr64,int) __ptr64
??0CIPAddress@@QEAA@PEBGH@Z
; public: __cdecl CIPAddress::CIPAddress(void) __ptr64
??0CIPAddress@@QEAA@XZ
; public: __cdecl CInheritanceDlg::CInheritanceDlg(int,unsigned long,unsigned long,unsigned long,unsigned long,unsigned short const * __ptr64,int,class CComAuthInfo * __ptr64,unsigned short const * __ptr64,class CWnd * __ptr64) __ptr64
??0CInheritanceDlg@@QEAA@HKKKKPEBGHPEAVCComAuthInfo@@0PEAVCWnd@@@Z
; public: __cdecl CInheritanceDlg::CInheritanceDlg(unsigned long,int,class CComAuthInfo * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,class CWnd * __ptr64) __ptr64
??0CInheritanceDlg@@QEAA@KHPEAVCComAuthInfo@@PEBG1PEAVCWnd@@@Z
; public: __cdecl CInheritanceDlg::CInheritanceDlg(unsigned long,int,class CComAuthInfo * __ptr64,unsigned short const * __ptr64,class CStringList & __ptr64,unsigned short const * __ptr64,class CWnd * __ptr64) __ptr64
??0CInheritanceDlg@@QEAA@KHPEAVCComAuthInfo@@PEBGAEAVCStringList@@1PEAVCWnd@@@Z
; public: __cdecl CMappedBitmapButton::CMappedBitmapButton(void) __ptr64
??0CMappedBitmapButton@@QEAA@XZ
; public: __cdecl CMetaBack::CMetaBack(class CMetaBack & __ptr64) __ptr64
??0CMetaBack@@QEAA@AEAV0@@Z
; public: __cdecl CMetaBack::CMetaBack(class CComAuthInfo * __ptr64) __ptr64
??0CMetaBack@@QEAA@PEAVCComAuthInfo@@@Z
; public: __cdecl CMetaEnumerator::CMetaEnumerator(class CMetaEnumerator & __ptr64) __ptr64
??0CMetaEnumerator@@QEAA@AEAV0@@Z
; public: __cdecl CMetaEnumerator::CMetaEnumerator(int,class CMetaKey * __ptr64) __ptr64
??0CMetaEnumerator@@QEAA@HPEAVCMetaKey@@@Z
; public: __cdecl CMetaEnumerator::CMetaEnumerator(class CComAuthInfo * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
??0CMetaEnumerator@@QEAA@PEAVCComAuthInfo@@PEBGK@Z
; public: __cdecl CMetaEnumerator::CMetaEnumerator(class CMetaInterface * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
??0CMetaEnumerator@@QEAA@PEAVCMetaInterface@@PEBGK@Z
; protected: __cdecl CMetaInterface::CMetaInterface(class CMetaInterface * __ptr64) __ptr64
??0CMetaInterface@@IEAA@PEAV0@@Z
; protected: __cdecl CMetaInterface::CMetaInterface(class CComAuthInfo * __ptr64) __ptr64
??0CMetaInterface@@IEAA@PEAVCComAuthInfo@@@Z
; public: __cdecl CMetaInterface::CMetaInterface(class CMetaInterface & __ptr64) __ptr64
??0CMetaInterface@@QEAA@AEAV0@@Z
; public: __cdecl CMetaKey::CMetaKey(class CMetaKey & __ptr64) __ptr64
??0CMetaKey@@QEAA@AEAV0@@Z
; public: __cdecl CMetaKey::CMetaKey(int,class CMetaKey * __ptr64) __ptr64
??0CMetaKey@@QEAA@HPEAV0@@Z
; public: __cdecl CMetaKey::CMetaKey(class CComAuthInfo * __ptr64) __ptr64
??0CMetaKey@@QEAA@PEAVCComAuthInfo@@@Z
; public: __cdecl CMetaKey::CMetaKey(class CComAuthInfo * __ptr64,unsigned short const * __ptr64,unsigned long,unsigned long) __ptr64
??0CMetaKey@@QEAA@PEAVCComAuthInfo@@PEBGKK@Z
; public: __cdecl CMetaKey::CMetaKey(class CMetaInterface * __ptr64) __ptr64
??0CMetaKey@@QEAA@PEAVCMetaInterface@@@Z
; public: __cdecl CMetaKey::CMetaKey(class CMetaInterface * __ptr64,unsigned short const * __ptr64,unsigned long,unsigned long) __ptr64
??0CMetaKey@@QEAA@PEAVCMetaInterface@@PEBGKK@Z
; public: __cdecl CMetabasePath::CMetabasePath(class CMetabasePath const & __ptr64) __ptr64
??0CMetabasePath@@QEAA@AEBV0@@Z
; public: __cdecl CMetabasePath::CMetabasePath(int,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
??0CMetabasePath@@QEAA@HPEBG000@Z
; public: __cdecl CMetabasePath::CMetabasePath(unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
??0CMetabasePath@@QEAA@PEBGK00@Z
; protected: __cdecl CODLBox::CODLBox(void) __ptr64
??0CODLBox@@IEAA@XZ
; public: __cdecl CObListIter::CObListIter(class CObListPlus const & __ptr64) __ptr64
??0CObListIter@@QEAA@AEBVCObListPlus@@@Z
; public: __cdecl CObListPlus::CObListPlus(int) __ptr64
??0CObListPlus@@QEAA@H@Z
; protected: __cdecl CObjHelper::CObjHelper(void) __ptr64
??0CObjHelper@@IEAA@XZ
; public: __cdecl CObjHelper::CObjHelper(class CObjHelper const & __ptr64) __ptr64
??0CObjHelper@@QEAA@AEBV0@@Z
; public: __cdecl CObjectPlus::CObjectPlus(void) __ptr64
??0CObjectPlus@@QEAA@XZ
; public: __cdecl CRMCComboBox::CRMCComboBox(void) __ptr64
??0CRMCComboBox@@QEAA@XZ
; public: __cdecl CRMCListBox::CRMCListBox(void) __ptr64
??0CRMCListBox@@QEAA@XZ
; public: __cdecl CRMCListBoxDrawStruct::CRMCListBoxDrawStruct(class CDC * __ptr64,struct tagRECT * __ptr64,int,unsigned __int64,int,class CRMCListBoxResources const * __ptr64) __ptr64
??0CRMCListBoxDrawStruct@@QEAA@PEAVCDC@@PEAUtagRECT@@H_KHPEBVCRMCListBoxResources@@@Z
; public: __cdecl CRMCListBoxHeader::CRMCListBoxHeader(unsigned long) __ptr64
??0CRMCListBoxHeader@@QEAA@K@Z
; public: __cdecl CRMCListBoxResources::CRMCListBoxResources(int,int,unsigned long) __ptr64
??0CRMCListBoxResources@@QEAA@HHK@Z
; public: __cdecl CStrPassword::CStrPassword(class CStrPassword & __ptr64) __ptr64
??0CStrPassword@@QEAA@AEAV0@@Z
; public: __cdecl CStrPassword::CStrPassword(unsigned short * __ptr64) __ptr64
??0CStrPassword@@QEAA@PEAG@Z
; public: __cdecl CStrPassword::CStrPassword(unsigned short const * __ptr64) __ptr64
??0CStrPassword@@QEAA@PEBG@Z
; public: __cdecl CStrPassword::CStrPassword(void) __ptr64
??0CStrPassword@@QEAA@XZ
; public: __cdecl CStringListEx::CStringListEx(int) __ptr64
??0CStringListEx@@QEAA@H@Z
; public: __cdecl CUpButton::CUpButton(void) __ptr64
??0CUpButton@@QEAA@XZ
; protected: __cdecl CWamInterface::CWamInterface(class CWamInterface * __ptr64) __ptr64
??0CWamInterface@@IEAA@PEAV0@@Z
; protected: __cdecl CWamInterface::CWamInterface(class CComAuthInfo * __ptr64) __ptr64
??0CWamInterface@@IEAA@PEAVCComAuthInfo@@@Z
; public: __cdecl CWamInterface::CWamInterface(class CWamInterface & __ptr64) __ptr64
??0CWamInterface@@QEAA@AEAV0@@Z
; public: virtual __cdecl CAccessEntry::~CAccessEntry(void) __ptr64
??1CAccessEntry@@UEAA@XZ
; public: __cdecl CBlob::~CBlob(void) __ptr64
??1CBlob@@QEAA@XZ
; public: __cdecl CComAuthInfo::~CComAuthInfo(void) __ptr64
??1CComAuthInfo@@QEAA@XZ
; public: virtual __cdecl CConfirmDlg::~CConfirmDlg(void) __ptr64
??1CConfirmDlg@@UEAA@XZ
; public: __cdecl CDirBrowseDlg::~CDirBrowseDlg(void) __ptr64
??1CDirBrowseDlg@@QEAA@XZ
; public: virtual __cdecl CDownButton::~CDownButton(void) __ptr64
??1CDownButton@@UEAA@XZ
; public: virtual __cdecl CEmphasizedDialog::~CEmphasizedDialog(void) __ptr64
??1CEmphasizedDialog@@UEAA@XZ
; public: __cdecl CError::~CError(void) __ptr64
??1CError@@QEAA@XZ
; public: __cdecl CGetComputer::~CGetComputer(void) __ptr64
??1CGetComputer@@QEAA@XZ
; public: virtual __cdecl CGetUsers::~CGetUsers(void) __ptr64
??1CGetUsers@@UEAA@XZ
; public: virtual __cdecl CHeaderListBox::~CHeaderListBox(void) __ptr64
??1CHeaderListBox@@UEAA@XZ
; public: virtual __cdecl CIISAppPool::~CIISAppPool(void) __ptr64
??1CIISAppPool@@UEAA@XZ
; public: virtual __cdecl CIISApplication::~CIISApplication(void) __ptr64
??1CIISApplication@@UEAA@XZ
; public: __cdecl CIISInterface::~CIISInterface(void) __ptr64
??1CIISInterface@@QEAA@XZ
; public: virtual __cdecl CIISSvcControl::~CIISSvcControl(void) __ptr64
??1CIISSvcControl@@UEAA@XZ
; public: virtual __cdecl CIISWizardBookEnd::~CIISWizardBookEnd(void) __ptr64
??1CIISWizardBookEnd@@UEAA@XZ
; public: virtual __cdecl CIISWizardPage::~CIISWizardPage(void) __ptr64
??1CIISWizardPage@@UEAA@XZ
; public: virtual __cdecl CIISWizardSheet::~CIISWizardSheet(void) __ptr64
??1CIISWizardSheet@@UEAA@XZ
; public: __cdecl CILong::~CILong(void) __ptr64
??1CILong@@QEAA@XZ
; protected: __cdecl CINumber::~CINumber(void) __ptr64
??1CINumber@@IEAA@XZ
; public: virtual __cdecl CIPAccessDescriptor::~CIPAccessDescriptor(void) __ptr64
??1CIPAccessDescriptor@@UEAA@XZ
; public: virtual __cdecl CIPAddress::~CIPAddress(void) __ptr64
??1CIPAddress@@UEAA@XZ
; public: virtual __cdecl CInheritanceDlg::~CInheritanceDlg(void) __ptr64
??1CInheritanceDlg@@UEAA@XZ
; public: virtual __cdecl CMappedBitmapButton::~CMappedBitmapButton(void) __ptr64
??1CMappedBitmapButton@@UEAA@XZ
; public: virtual __cdecl CMetaBack::~CMetaBack(void) __ptr64
??1CMetaBack@@UEAA@XZ
; public: virtual __cdecl CMetaEnumerator::~CMetaEnumerator(void) __ptr64
??1CMetaEnumerator@@UEAA@XZ
; public: virtual __cdecl CMetaInterface::~CMetaInterface(void) __ptr64
??1CMetaInterface@@UEAA@XZ
; public: virtual __cdecl CMetaKey::~CMetaKey(void) __ptr64
??1CMetaKey@@UEAA@XZ
; public: __cdecl CMetabasePath::~CMetabasePath(void) __ptr64
??1CMetabasePath@@QEAA@XZ
; protected: __cdecl CODLBox::~CODLBox(void) __ptr64
??1CODLBox@@IEAA@XZ
; public: virtual __cdecl CObListIter::~CObListIter(void) __ptr64
??1CObListIter@@UEAA@XZ
; public: virtual __cdecl CObListPlus::~CObListPlus(void) __ptr64
??1CObListPlus@@UEAA@XZ
; public: virtual __cdecl CObjectPlus::~CObjectPlus(void) __ptr64
??1CObjectPlus@@UEAA@XZ
; public: virtual __cdecl CRMCComboBox::~CRMCComboBox(void) __ptr64
??1CRMCComboBox@@UEAA@XZ
; public: virtual __cdecl CRMCListBox::~CRMCListBox(void) __ptr64
??1CRMCListBox@@UEAA@XZ
; public: virtual __cdecl CRMCListBoxHeader::~CRMCListBoxHeader(void) __ptr64
??1CRMCListBoxHeader@@UEAA@XZ
; public: __cdecl CRMCListBoxResources::~CRMCListBoxResources(void) __ptr64
??1CRMCListBoxResources@@QEAA@XZ
; public: __cdecl CStrPassword::~CStrPassword(void) __ptr64
??1CStrPassword@@QEAA@XZ
; public: virtual __cdecl CStringListEx::~CStringListEx(void) __ptr64
??1CStringListEx@@UEAA@XZ
; public: virtual __cdecl CUpButton::~CUpButton(void) __ptr64
??1CUpButton@@UEAA@XZ
; public: virtual __cdecl CWamInterface::~CWamInterface(void) __ptr64
??1CWamInterface@@UEAA@XZ
; public: class CBlob & __ptr64 __cdecl CBlob::operator=(class CBlob const & __ptr64) __ptr64
??4CBlob@@QEAAAEAV0@AEBV0@@Z
; public: class CComAuthInfo & __ptr64 __cdecl CComAuthInfo::operator=(class CComAuthInfo & __ptr64) __ptr64
??4CComAuthInfo@@QEAAAEAV0@AEAV0@@Z
; public: class CComAuthInfo & __ptr64 __cdecl CComAuthInfo::operator=(class CComAuthInfo * __ptr64) __ptr64
??4CComAuthInfo@@QEAAAEAV0@PEAV0@@Z
; public: class CComAuthInfo & __ptr64 __cdecl CComAuthInfo::operator=(unsigned short const * __ptr64) __ptr64
??4CComAuthInfo@@QEAAAEAV0@PEBG@Z
; public: class CDirBrowseDlg & __ptr64 __cdecl CDirBrowseDlg::operator=(class CDirBrowseDlg const & __ptr64) __ptr64
??4CDirBrowseDlg@@QEAAAEAV0@AEBV0@@Z
; public: class CError const & __ptr64 __cdecl CError::operator=(class CError const & __ptr64) __ptr64
??4CError@@QEAAAEBV0@AEBV0@@Z
; public: class CError const & __ptr64 __cdecl CError::operator=(long) __ptr64
??4CError@@QEAAAEBV0@J@Z
; public: class CGetComputer & __ptr64 __cdecl CGetComputer::operator=(class CGetComputer const & __ptr64) __ptr64
??4CGetComputer@@QEAAAEAV0@AEBV0@@Z
; public: class CIISAppPool & __ptr64 __cdecl CIISAppPool::operator=(class CIISAppPool & __ptr64) __ptr64
??4CIISAppPool@@QEAAAEAV0@AEAV0@@Z
; public: class CIISApplication & __ptr64 __cdecl CIISApplication::operator=(class CIISApplication & __ptr64) __ptr64
??4CIISApplication@@QEAAAEAV0@AEAV0@@Z
; public: class CIISInterface & __ptr64 __cdecl CIISInterface::operator=(class CIISInterface & __ptr64) __ptr64
??4CIISInterface@@QEAAAEAV0@AEAV0@@Z
; public: class CIISSvcControl & __ptr64 __cdecl CIISSvcControl::operator=(class CIISSvcControl & __ptr64) __ptr64
??4CIISSvcControl@@QEAAAEAV0@AEAV0@@Z
; public: class CILong & __ptr64 __cdecl CILong::operator=(class CILong const & __ptr64) __ptr64
??4CILong@@QEAAAEAV0@AEBV0@@Z
; public: class CILong & __ptr64 __cdecl CILong::operator=(long) __ptr64
??4CILong@@QEAAAEAV0@J@Z
; public: class CILong & __ptr64 __cdecl CILong::operator=(unsigned short const * __ptr64) __ptr64
??4CILong@@QEAAAEAV0@PEBG@Z
; public: class CINumber & __ptr64 __cdecl CINumber::operator=(class CINumber const & __ptr64) __ptr64
??4CINumber@@QEAAAEAV0@AEBV0@@Z
; public: class CIPAddress const & __ptr64 __cdecl CIPAddress::operator=(class CIPAddress const & __ptr64) __ptr64
??4CIPAddress@@QEAAAEBV0@AEBV0@@Z
; public: class CIPAddress const & __ptr64 __cdecl CIPAddress::operator=(class CString const & __ptr64) __ptr64
??4CIPAddress@@QEAAAEBV0@AEBVCString@@@Z
; public: class CIPAddress const & __ptr64 __cdecl CIPAddress::operator=(unsigned long) __ptr64
??4CIPAddress@@QEAAAEBV0@K@Z
; public: class CIPAddress const & __ptr64 __cdecl CIPAddress::operator=(unsigned short const * __ptr64) __ptr64
??4CIPAddress@@QEAAAEBV0@PEBG@Z
; public: class CMetaBack & __ptr64 __cdecl CMetaBack::operator=(class CMetaBack & __ptr64) __ptr64
??4CMetaBack@@QEAAAEAV0@AEAV0@@Z
; public: class CMetaEnumerator & __ptr64 __cdecl CMetaEnumerator::operator=(class CMetaEnumerator & __ptr64) __ptr64
??4CMetaEnumerator@@QEAAAEAV0@AEAV0@@Z
; public: class CMetaInterface & __ptr64 __cdecl CMetaInterface::operator=(class CMetaInterface & __ptr64) __ptr64
??4CMetaInterface@@QEAAAEAV0@AEAV0@@Z
; public: class CMetaKey & __ptr64 __cdecl CMetaKey::operator=(class CMetaKey & __ptr64) __ptr64
??4CMetaKey@@QEAAAEAV0@AEAV0@@Z
; public: class CMetabasePath & __ptr64 __cdecl CMetabasePath::operator=(class CMetabasePath const & __ptr64) __ptr64
??4CMetabasePath@@QEAAAEAV0@AEBV0@@Z
; public: class CObjHelper & __ptr64 __cdecl CObjHelper::operator=(class CObjHelper const & __ptr64) __ptr64
??4CObjHelper@@QEAAAEAV0@AEBV0@@Z
; public: class CRMCListBoxDrawStruct & __ptr64 __cdecl CRMCListBoxDrawStruct::operator=(class CRMCListBoxDrawStruct const & __ptr64) __ptr64
??4CRMCListBoxDrawStruct@@QEAAAEAV0@AEBV0@@Z
; public: class CStrPassword const & __ptr64 __cdecl CStrPassword::operator=(class CStrPassword & __ptr64) __ptr64
??4CStrPassword@@QEAAAEBV0@AEAV0@@Z
; public: class CStrPassword const & __ptr64 __cdecl CStrPassword::operator=(unsigned short const * __ptr64) __ptr64
??4CStrPassword@@QEAAAEBV0@PEBG@Z
; public: class CStringListEx & __ptr64 __cdecl CStringListEx::operator=(class CStringListEx const & __ptr64) __ptr64
??4CStringListEx@@QEAAAEAV0@AEBV0@@Z
; public: class CStringListEx & __ptr64 __cdecl CStringListEx::operator=(class CStringList const & __ptr64) __ptr64
??4CStringListEx@@QEAAAEAV0@AEBVCStringList@@@Z
; public: class CWamInterface & __ptr64 __cdecl CWamInterface::operator=(class CWamInterface & __ptr64) __ptr64
??4CWamInterface@@QEAAAEAV0@AEAV0@@Z
; public: int __cdecl CAccessEntry::operator==(class CAccessEntry const & __ptr64)const  __ptr64
??8CAccessEntry@@QEBAHAEBV0@@Z
; public: int __cdecl CAccessEntry::operator==(void * __ptr64 const)const  __ptr64
??8CAccessEntry@@QEBAHQEAX@Z
; public: int __cdecl CBlob::operator==(class CBlob const & __ptr64)const  __ptr64
??8CBlob@@QEBAHAEBV0@@Z
; public: int const  __cdecl CError::operator==(class CError & __ptr64) __ptr64
??8CError@@QEAA?BHAEAV0@@Z
; public: int const  __cdecl CError::operator==(long) __ptr64
??8CError@@QEAA?BHJ@Z
; public: int __cdecl CILong::operator==(long) __ptr64
??8CILong@@QEAAHJ@Z
; public: int __cdecl CIPAccessDescriptor::operator==(class CIPAccessDescriptor const & __ptr64)const  __ptr64
??8CIPAccessDescriptor@@QEBAHAEBV0@@Z
; public: int __cdecl CIPAddress::operator==(class CIPAddress const & __ptr64)const  __ptr64
??8CIPAddress@@QEBAHAEBV0@@Z
; public: int __cdecl CIPAddress::operator==(unsigned long)const  __ptr64
??8CIPAddress@@QEBAHK@Z
; public: bool __cdecl CStrPassword::operator==(class CStrPassword & __ptr64) __ptr64
??8CStrPassword@@QEAA_NAEAV0@@Z
; public: int __cdecl CStringListEx::operator==(class CStringList const & __ptr64) __ptr64
??8CStringListEx@@QEAAHAEBVCStringList@@@Z
; public: int __cdecl CBlob::operator!=(class CBlob const & __ptr64)const  __ptr64
??9CBlob@@QEBAHAEBV0@@Z
; public: int const  __cdecl CError::operator!=(class CError & __ptr64) __ptr64
??9CError@@QEAA?BHAEAV0@@Z
; public: int const  __cdecl CError::operator!=(long) __ptr64
??9CError@@QEAA?BHJ@Z
; public: int __cdecl CILong::operator!=(class CILong & __ptr64) __ptr64
??9CILong@@QEAAHAEAV0@@Z
; public: int __cdecl CIPAddress::operator!=(class CIPAddress const & __ptr64)const  __ptr64
??9CIPAddress@@QEBAHAEBV0@@Z
; public: int __cdecl CIPAddress::operator!=(unsigned long)const  __ptr64
??9CIPAddress@@QEBAHK@Z
; public: bool __cdecl CStrPassword::operator!=(class CStrPassword & __ptr64) __ptr64
??9CStrPassword@@QEAA_NAEAV0@@Z
; public: int __cdecl CStringListEx::operator!=(class CStringList const & __ptr64) __ptr64
??9CStringListEx@@QEAAHAEBVCStringList@@@Z
; public: __cdecl CComAuthInfo::operator unsigned short * __ptr64(void) __ptr64
??BCComAuthInfo@@QEAAPEAGXZ
; public: __cdecl CComAuthInfo::operator class CComAuthInfo * __ptr64(void) __ptr64
??BCComAuthInfo@@QEAAPEAV0@XZ
; public: __cdecl CError::operator unsigned short * __ptr64(void) __ptr64
??BCError@@QEAAPEAGXZ
; public: __cdecl CError::operator unsigned short const * __ptr64(void) __ptr64
??BCError@@QEAAPEBGXZ
; public: __cdecl CError::operator int const (void)const  __ptr64
??BCError@@QEBA?BHXZ
; public: __cdecl CError::operator long const (void)const  __ptr64
??BCError@@QEBA?BJXZ
; public: __cdecl CError::operator unsigned long const (void)const  __ptr64
??BCError@@QEBA?BKXZ
; public: __cdecl CIISInterface::operator int(void)const  __ptr64
??BCIISInterface@@QEBAHXZ
; public: __cdecl CIISInterface::operator long(void)const  __ptr64
??BCIISInterface@@QEBAJXZ
; public: __cdecl CILong::operator long const (void)const  __ptr64
??BCILong@@QEBA?BJXZ
; public: __cdecl CILong::operator unsigned short const * __ptr64(void)const  __ptr64
??BCILong@@QEBAPEBGXZ
; public: __cdecl CIPAddress::operator class CString(void)const  __ptr64
??BCIPAddress@@QEBA?AVCString@@XZ
; public: __cdecl CIPAddress::operator unsigned long const (void)const  __ptr64
??BCIPAddress@@QEBA?BKXZ
; public: __cdecl CIPAddress::operator unsigned short const * __ptr64(void)const  __ptr64
??BCIPAddress@@QEBAPEBGXZ
; public: __cdecl CMetaKey::operator int(void)const  __ptr64
??BCMetaKey@@QEBAHXZ
; public: __cdecl CMetaKey::operator unsigned long(void)const  __ptr64
??BCMetaKey@@QEBAKXZ
; public: __cdecl CMetaKey::operator unsigned short const * __ptr64(void)const  __ptr64
??BCMetaKey@@QEBAPEBGXZ
; public: __cdecl CMetabasePath::operator unsigned short const * __ptr64(void)const  __ptr64
??BCMetabasePath@@QEBAPEBGXZ
; public: __cdecl CObjHelper::operator int(void) __ptr64
??BCObjHelper@@QEAAHXZ
; public: __cdecl CStrPassword::operator class CString(void) __ptr64
??BCStrPassword@@QEAA?AVCString@@XZ
; public: class CILong & __ptr64 __cdecl CILong::operator*=(class CILong const & __ptr64) __ptr64
??XCILong@@QEAAAEAV0@AEBV0@@Z
; public: class CILong & __ptr64 __cdecl CILong::operator*=(long) __ptr64
??XCILong@@QEAAAEAV0@J@Z
; public: class CILong & __ptr64 __cdecl CILong::operator*=(unsigned short const * __ptr64 const) __ptr64
??XCILong@@QEAAAEAV0@QEBG@Z
; public: class CILong & __ptr64 __cdecl CILong::operator+=(class CILong const & __ptr64) __ptr64
??YCILong@@QEAAAEAV0@AEBV0@@Z
; public: class CILong & __ptr64 __cdecl CILong::operator+=(long) __ptr64
??YCILong@@QEAAAEAV0@J@Z
; public: class CILong & __ptr64 __cdecl CILong::operator+=(unsigned short const * __ptr64 const) __ptr64
??YCILong@@QEAAAEAV0@QEBG@Z
; public: class CILong & __ptr64 __cdecl CILong::operator-=(class CILong const & __ptr64) __ptr64
??ZCILong@@QEAAAEAV0@AEBV0@@Z
; public: class CILong & __ptr64 __cdecl CILong::operator-=(long) __ptr64
??ZCILong@@QEAAAEAV0@J@Z
; public: class CILong & __ptr64 __cdecl CILong::operator-=(unsigned short const * __ptr64 const) __ptr64
??ZCILong@@QEAAAEAV0@QEBG@Z
; public: class CILong & __ptr64 __cdecl CILong::operator/=(class CILong const & __ptr64) __ptr64
??_0CILong@@QEAAAEAV0@AEBV0@@Z
; public: class CILong & __ptr64 __cdecl CILong::operator/=(long) __ptr64
??_0CILong@@QEAAAEAV0@J@Z
; public: class CILong & __ptr64 __cdecl CILong::operator/=(unsigned short const * __ptr64 const) __ptr64
??_0CILong@@QEAAAEAV0@QEBG@Z
; const  CAccessEntry::`vftable'{for `CObjHelper'}
??_7CAccessEntry@@6BCObjHelper@@@
; const  CAccessEntry::`vftable'{for `CObject'}
??_7CAccessEntry@@6BCObject@@@
; const  CConfirmDlg::`vftable'
??_7CConfirmDlg@@6B@
; const  CDirBrowseDlg::`vftable'
??_7CDirBrowseDlg@@6B@
; const  CDownButton::`vftable'
??_7CDownButton@@6B@
; const  CEmphasizedDialog::`vftable'
??_7CEmphasizedDialog@@6B@
; const  CGetUsers::`vftable'
??_7CGetUsers@@6B@
; const  CHeaderListBox::`vftable'{for `CListBox'}
??_7CHeaderListBox@@6BCListBox@@@
; const  CHeaderListBox::`vftable'{for `CODLBox'}
??_7CHeaderListBox@@6BCODLBox@@@
; const  CIISAppPool::`vftable'{for `CMetaKey'}
??_7CIISAppPool@@6BCMetaKey@@@
; const  CIISAppPool::`vftable'{for `CWamInterface'}
??_7CIISAppPool@@6BCWamInterface@@@
; const  CIISApplication::`vftable'{for `CMetaKey'}
??_7CIISApplication@@6BCMetaKey@@@
; const  CIISApplication::`vftable'{for `CWamInterface'}
??_7CIISApplication@@6BCWamInterface@@@
; const  CIISInterface::`vftable'
??_7CIISInterface@@6B@
; const  CIISSvcControl::`vftable'
??_7CIISSvcControl@@6B@
; const  CIISWizardBookEnd::`vftable'
??_7CIISWizardBookEnd@@6B@
; const  CIISWizardPage::`vftable'
??_7CIISWizardPage@@6B@
; const  CIISWizardSheet::`vftable'
??_7CIISWizardSheet@@6B@
; const  CIPAccessDescriptor::`vftable'{for `CObjHelper'}
??_7CIPAccessDescriptor@@6BCObjHelper@@@
; const  CIPAccessDescriptor::`vftable'{for `CObject'}
??_7CIPAccessDescriptor@@6BCObject@@@
; const  CIPAddress::`vftable'{for `CObjHelper'}
??_7CIPAddress@@6BCObjHelper@@@
; const  CIPAddress::`vftable'{for `CObject'}
??_7CIPAddress@@6BCObject@@@
; const  CInheritanceDlg::`vftable'
??_7CInheritanceDlg@@6B@
; const  CMappedBitmapButton::`vftable'
??_7CMappedBitmapButton@@6B@
; const  CMetaBack::`vftable'{for `CMetaInterface'}
??_7CMetaBack@@6BCMetaInterface@@@
; const  CMetaBack::`vftable'{for `CWamInterface'}
??_7CMetaBack@@6BCWamInterface@@@
; const  CMetaEnumerator::`vftable'
??_7CMetaEnumerator@@6B@
; const  CMetaInterface::`vftable'
??_7CMetaInterface@@6B@
; const  CMetaKey::`vftable'
??_7CMetaKey@@6B@
; const  CODLBox::`vftable'
??_7CODLBox@@6B@
; const  CObListIter::`vftable'{for `CObjHelper'}
??_7CObListIter@@6BCObjHelper@@@
; const  CObListIter::`vftable'{for `CObject'}
??_7CObListIter@@6BCObject@@@
; const  CObListPlus::`vftable'{for `CObList'}
??_7CObListPlus@@6BCObList@@@
; const  CObListPlus::`vftable'{for `CObjHelper'}
??_7CObListPlus@@6BCObjHelper@@@
; const  CObjHelper::`vftable'
??_7CObjHelper@@6B@
; const  CObjectPlus::`vftable'{for `CObjHelper'}
??_7CObjectPlus@@6BCObjHelper@@@
; const  CObjectPlus::`vftable'{for `CObject'}
??_7CObjectPlus@@6BCObject@@@
; const  CRMCComboBox::`vftable'{for `CComboBox'}
??_7CRMCComboBox@@6BCComboBox@@@
; const  CRMCComboBox::`vftable'{for `CODLBox'}
??_7CRMCComboBox@@6BCODLBox@@@
; const  CRMCListBox::`vftable'{for `CListBox'}
??_7CRMCListBox@@6BCListBox@@@
; const  CRMCListBox::`vftable'{for `CODLBox'}
??_7CRMCListBox@@6BCODLBox@@@
; const  CRMCListBoxHeader::`vftable'
??_7CRMCListBoxHeader@@6B@
; const  CStringListEx::`vftable'
??_7CStringListEx@@6B@
; const  CUpButton::`vftable'
??_7CUpButton@@6B@
; const  CWamInterface::`vftable'
??_7CWamInterface@@6B@
; public: void __cdecl CComAuthInfo::`default constructor closure'(void) __ptr64
??_FCComAuthInfo@@QEAAXXZ
; public: void __cdecl CConfirmDlg::`default constructor closure'(void) __ptr64
??_FCConfirmDlg@@QEAAXXZ
; public: void __cdecl CDirBrowseDlg::`default constructor closure'(void) __ptr64
??_FCDirBrowseDlg@@QEAAXXZ
; public: void __cdecl CHeaderListBox::`default constructor closure'(void) __ptr64
??_FCHeaderListBox@@QEAAXXZ
; public: void __cdecl CIISWizardBookEnd::`default constructor closure'(void) __ptr64
??_FCIISWizardBookEnd@@QEAAXXZ
; public: void __cdecl CIISWizardPage::`default constructor closure'(void) __ptr64
??_FCIISWizardPage@@QEAAXXZ
; public: void __cdecl CIISWizardSheet::`default constructor closure'(void) __ptr64
??_FCIISWizardSheet@@QEAAXXZ
; public: void __cdecl CIPAccessDescriptor::`default constructor closure'(void) __ptr64
??_FCIPAccessDescriptor@@QEAAXXZ
; public: void __cdecl CMetabasePath::`default constructor closure'(void) __ptr64
??_FCMetabasePath@@QEAAXXZ
; public: void __cdecl CObListPlus::`default constructor closure'(void) __ptr64
??_FCObListPlus@@QEAAXXZ
; public: void __cdecl CRMCListBoxHeader::`default constructor closure'(void) __ptr64
??_FCRMCListBoxHeader@@QEAAXXZ
; public: void __cdecl CStringListEx::`default constructor closure'(void) __ptr64
??_FCStringListEx@@QEAAXXZ
; void __cdecl ActivateControl(class CWnd & __ptr64,int)
?ActivateControl@@YAXAEAVCWnd@@H@Z
; protected: long __cdecl CMetaInterface::AddKey(unsigned long,unsigned short const * __ptr64) __ptr64
?AddKey@CMetaInterface@@IEAAJKPEBG@Z
; public: long __cdecl CMetaKey::AddKey(unsigned short const * __ptr64) __ptr64
?AddKey@CMetaKey@@QEAAJPEBG@Z
; public: unsigned int __cdecl CError::AddOverride(long,unsigned int) __ptr64
?AddOverride@CError@@QEAAIJI@Z
; public: void __cdecl CAccessEntry::AddPermissions(unsigned long) __ptr64
?AddPermissions@CAccessEntry@@QEAAXK@Z
; public: int __cdecl CODLBox::AddTab(unsigned int) __ptr64
?AddTab@CODLBox@@QEAAHI@Z
; public: int __cdecl CODLBox::AddTabFromHeaders(class CWnd & __ptr64,class CWnd & __ptr64) __ptr64
?AddTabFromHeaders@CODLBox@@QEAAHAEAVCWnd@@0@Z
; public: int __cdecl CODLBox::AddTabFromHeaders(unsigned int,unsigned int) __ptr64
?AddTabFromHeaders@CODLBox@@QEAAHII@Z
; char * __ptr64 __cdecl AllocAnsiString(unsigned short const * __ptr64)
?AllocAnsiString@@YAPEADPEBG@Z
; unsigned short * __ptr64 __cdecl AllocString(unsigned short const * __ptr64,int)
?AllocString@@YAPEAGPEBGH@Z
; protected: static int __cdecl CINumber::Allocate(void)
?Allocate@CINumber@@KAHXZ
; protected: static int __cdecl CError::AllocateStatics(void)
?AllocateStatics@CError@@KAHXZ
; protected: long __cdecl CWamInterface::AppCreate(unsigned short const * __ptr64,unsigned long) __ptr64
?AppCreate@CWamInterface@@IEAAJPEBGK@Z
; protected: long __cdecl CWamInterface::AppDelete(unsigned short const * __ptr64,int) __ptr64
?AppDelete@CWamInterface@@IEAAJPEBGH@Z
; protected: long __cdecl CWamInterface::AppDeleteRecoverable(unsigned short const * __ptr64,int) __ptr64
?AppDeleteRecoverable@CWamInterface@@IEAAJPEBGH@Z
; protected: long __cdecl CWamInterface::AppGetStatus(unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?AppGetStatus@CWamInterface@@IEAAJPEBGPEAK@Z
; protected: long __cdecl CWamInterface::AppRecover(unsigned short const * __ptr64,int) __ptr64
?AppRecover@CWamInterface@@IEAAJPEBGH@Z
; protected: long __cdecl CWamInterface::AppUnLoad(unsigned short const * __ptr64,int) __ptr64
?AppUnLoad@CWamInterface@@IEAAJPEBGH@Z
; protected: void __cdecl CMetabasePath::AppendPath(unsigned long) __ptr64
?AppendPath@CMetabasePath@@IEAAXK@Z
; protected: void __cdecl CMetabasePath::AppendPath(unsigned short const * __ptr64) __ptr64
?AppendPath@CMetabasePath@@IEAAXPEBG@Z
; class CString  __cdecl AppendToDevicePath(class CString,unsigned short const * __ptr64)
?AppendToDevicePath@@YA?AVCString@@V1@PEBG@Z
; void __cdecl ApplyFontToControls(class CWnd * __ptr64,class CFont * __ptr64,unsigned int,unsigned int)
?ApplyFontToControls@@YAXPEAVCWnd@@PEAVCFont@@II@Z
; public: long __cdecl CComAuthInfo::ApplyProxyBlanket(struct IUnknown * __ptr64) __ptr64
?ApplyProxyBlanket@CComAuthInfo@@QEAAJPEAUIUnknown@@@Z
; public: long __cdecl CComAuthInfo::ApplyProxyBlanket(struct IUnknown * __ptr64,unsigned long) __ptr64
?ApplyProxyBlanket@CComAuthInfo@@QEAAJPEAUIUnknown@@K@Z
; protected: virtual long __cdecl CIISSvcControl::ApplyProxyBlanket(void) __ptr64
?ApplyProxyBlanket@CIISSvcControl@@MEAAJXZ
; protected: virtual long __cdecl CMetaBack::ApplyProxyBlanket(void) __ptr64
?ApplyProxyBlanket@CMetaBack@@MEAAJXZ
; protected: virtual long __cdecl CMetaInterface::ApplyProxyBlanket(void) __ptr64
?ApplyProxyBlanket@CMetaInterface@@MEAAJXZ
; protected: virtual long __cdecl CWamInterface::ApplyProxyBlanket(void) __ptr64
?ApplyProxyBlanket@CWamInterface@@MEAAJXZ
; protected: static int __cdecl CError::AreStaticsAllocated(void)
?AreStaticsAllocated@CError@@KAHXZ
; public: void __cdecl CODLBox::AttachResources(class CRMCListBoxResources const * __ptr64) __ptr64
?AttachResources@CODLBox@@QEAAXPEBVCRMCListBoxResources@@@Z
; protected: void __cdecl CODLBox::AttachWindow(class CWnd * __ptr64) __ptr64
?AttachWindow@CODLBox@@IEAAXPEAVCWnd@@@Z
; public: long __cdecl CMetaBack::Backup(unsigned short const * __ptr64) __ptr64
?Backup@CMetaBack@@QEAAJPEBG@Z
; protected: long __cdecl CMetaInterface::Backup(unsigned short const * __ptr64,unsigned long,unsigned long) __ptr64
?Backup@CMetaInterface@@IEAAJPEBGKK@Z
; public: long __cdecl CMetaBack::BackupWithPassword(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?BackupWithPassword@CMetaBack@@QEAAJPEBG0@Z
; protected: long __cdecl CMetaInterface::BackupWithPassword(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned short const * __ptr64) __ptr64
?BackupWithPassword@CMetaInterface@@IEAAJPEBGKK0@Z
; public: int __cdecl CRMCListBoxResources::BitmapHeight(void)const  __ptr64
?BitmapHeight@CRMCListBoxResources@@QEBAHXZ
; public: int __cdecl CRMCListBoxResources::BitmapWidth(void)const  __ptr64
?BitmapWidth@CRMCListBoxResources@@QEBAHXZ
; int __cdecl BuildAclBlob(class CObListPlus & __ptr64,class CBlob & __ptr64)
?BuildAclBlob@@YAHAEAVCObListPlus@@AEAVCBlob@@@Z
; unsigned long __cdecl BuildAclOblistFromBlob(class CBlob & __ptr64,class CObListPlus & __ptr64)
?BuildAclOblistFromBlob@@YAKAEAVCBlob@@AEAVCObListPlus@@@Z
; public: static double __cdecl CINumber::BuildFloat(long,long)
?BuildFloat@CINumber@@SANJJ@Z
; void __cdecl BuildIplBlob(class CObListPlus & __ptr64,int,class CBlob & __ptr64)
?BuildIplBlob@@YAXAEAVCObListPlus@@HAEAVCBlob@@@Z
; unsigned long __cdecl BuildIplOblistFromBlob(class CBlob & __ptr64,class CObListPlus & __ptr64,int & __ptr64)
?BuildIplOblistFromBlob@@YAKAEAVCBlob@@AEAVCObListPlus@@AEAH@Z
; protected: void __cdecl CMetabasePath::BuildMetaPath(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?BuildMetaPath@CMetabasePath@@IEAAXPEBG000@Z
; protected: void __cdecl CMetabasePath::BuildMetaPath(unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?BuildMetaPath@CMetabasePath@@IEAAXPEBGK00@Z
; int __cdecl CStringFindNoCase(class CString const & __ptr64,unsigned short const * __ptr64)
?CStringFindNoCase@@YAHAEBVCString@@PEBG@Z
; protected: void __cdecl CODLBox::CalculateTextHeight(class CFont * __ptr64) __ptr64
?CalculateTextHeight@CODLBox@@IEAAXPEAVCFont@@@Z
; public: int __cdecl CODLBox::ChangeFont(class CFont * __ptr64) __ptr64
?ChangeFont@CODLBox@@QEAAHPEAVCFont@@@Z
; public: virtual long __cdecl CIISInterface::ChangeProxyBlanket(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?ChangeProxyBlanket@CIISInterface@@UEAAJPEBG0@Z
; public: long __cdecl CMetaKey::CheckDescendants(unsigned long,class CComAuthInfo * __ptr64,unsigned short const * __ptr64) __ptr64
?CheckDescendants@CMetaKey@@QEAAJKPEAVCComAuthInfo@@PEBG@Z
; protected: class CString & __ptr64 __cdecl CInheritanceDlg::CleanDescendantPath(class CString & __ptr64) __ptr64
?CleanDescendantPath@CInheritanceDlg@@IEAAAEAVCString@@AEAV2@@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::CleanMetaPath(class CString & __ptr64)
?CleanMetaPath@CMetabasePath@@SAPEBGAEAVCString@@@Z
; public: void __cdecl CBlob::CleanUp(void) __ptr64
?CleanUp@CBlob@@QEAAXXZ
; private: void __cdecl CStrPassword::ClearPasswordBuffers(void) __ptr64
?ClearPasswordBuffers@CStrPassword@@AEAAXXZ
; public: long __cdecl CMetaKey::Close(void) __ptr64
?Close@CMetaKey@@QEAAJXZ
; protected: long __cdecl CMetaInterface::CloseKey(unsigned long) __ptr64
?CloseKey@CMetaInterface@@IEAAJK@Z
; public: unsigned long __cdecl CRMCListBoxResources::ColorHighlight(void)const  __ptr64
?ColorHighlight@CRMCListBoxResources@@QEBAKXZ
; public: unsigned long __cdecl CRMCListBoxResources::ColorHighlightText(void)const  __ptr64
?ColorHighlightText@CRMCListBoxResources@@QEBAKXZ
; public: unsigned long __cdecl CRMCListBoxResources::ColorWindow(void)const  __ptr64
?ColorWindow@CRMCListBoxResources@@QEBAKXZ
; public: unsigned long __cdecl CRMCListBoxResources::ColorWindowText(void)const  __ptr64
?ColorWindowText@CRMCListBoxResources@@QEBAKXZ
; protected: int __cdecl CODLBox::ColumnText(class CRMCListBoxDrawStruct & __ptr64,int,int,unsigned short const * __ptr64) __ptr64
?ColumnText@CODLBox@@IEAAHAEAVCRMCListBoxDrawStruct@@HHPEBG@Z
; protected: static int __cdecl CODLBox::ColumnText(class CDC * __ptr64,int,int,int,int,unsigned short const * __ptr64)
?ColumnText@CODLBox@@KAHPEAVCDC@@HHHHPEBG@Z
; protected: void __cdecl CIISApplication::CommonConstruct(void) __ptr64
?CommonConstruct@CIISApplication@@IEAAXXZ
; public: virtual int __cdecl CObjectPlus::Compare(class CObjectPlus const * __ptr64)const  __ptr64
?Compare@CObjectPlus@@UEBAHPEBV1@@Z
; public: int __cdecl CStrPassword::Compare(class CStrPassword & __ptr64)const  __ptr64
?Compare@CStrPassword@@QEBAHAEAV1@@Z
; public: int __cdecl CStrPassword::Compare(class CString & __ptr64)const  __ptr64
?Compare@CStrPassword@@QEBAHAEAVCString@@@Z
; public: int __cdecl CStrPassword::Compare(unsigned short const * __ptr64)const  __ptr64
?Compare@CStrPassword@@QEBAHPEBG@Z
; public: int __cdecl CIPAddress::CompareItem(class CIPAddress const & __ptr64)const  __ptr64
?CompareItem@CIPAddress@@QEBAHAEBV1@@Z
; protected: void __cdecl CODLBox::ComputeMargins(class CRMCListBoxDrawStruct & __ptr64,int,int & __ptr64,int & __ptr64) __ptr64
?ComputeMargins@CODLBox@@IEAAXAEAVCRMCListBoxDrawStruct@@HAEAH1@Z
; protected: class CError const & __ptr64 __cdecl CError::Construct(class CError const & __ptr64) __ptr64
?Construct@CError@@IEAAAEBV1@AEBV1@@Z
; protected: class CError const & __ptr64 __cdecl CError::Construct(long) __ptr64
?Construct@CError@@IEAAAEBV1@J@Z
; unsigned long __cdecl ConvertDoubleNullListToStringList(unsigned short const * __ptr64,class CStringList & __ptr64,int)
?ConvertDoubleNullListToStringList@@YAKPEBGAEAVCStringList@@H@Z
; public: static unsigned short const * __ptr64 __cdecl CINumber::ConvertFloatToString(double,int,class CString & __ptr64)
?ConvertFloatToString@CINumber@@SAPEBGNHAEAVCString@@@Z
; public: static unsigned short const * __ptr64 __cdecl CINumber::ConvertLongToString(long,class CString & __ptr64)
?ConvertLongToString@CINumber@@SAPEBGJAEAVCString@@@Z
; int __cdecl ConvertSepLineToStringList(unsigned short const * __ptr64,class CStringList & __ptr64,unsigned short const * __ptr64)
?ConvertSepLineToStringList@@YAHPEBGAEAVCStringList@@0@Z
; unsigned long __cdecl ConvertStringListToDoubleNullList(class CStringList & __ptr64,unsigned long & __ptr64,unsigned short * __ptr64 & __ptr64)
?ConvertStringListToDoubleNullList@@YAKAEAVCStringList@@AEAKAEAPEAG@Z
; unsigned short const * __ptr64 __cdecl ConvertStringListToSepLine(class CStringList & __ptr64,class CString & __ptr64,unsigned short const * __ptr64)
?ConvertStringListToSepLine@@YAPEBGAEAVCStringList@@AEAVCString@@PEBG@Z
; public: static int __cdecl CINumber::ConvertStringToFloat(unsigned short const * __ptr64,double & __ptr64)
?ConvertStringToFloat@CINumber@@SAHPEBGAEAN@Z
; public: static int __cdecl CINumber::ConvertStringToLong(unsigned short const * __ptr64,long & __ptr64)
?ConvertStringToLong@CINumber@@SAHPEBGAEAJ@Z
; public: long __cdecl CMetaKey::ConvertToParentPath(int) __ptr64
?ConvertToParentPath@CMetaKey@@QEAAJH@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::ConvertToParentPath(class CString & __ptr64)
?ConvertToParentPath@CMetabasePath@@SAPEBGAEAVCString@@@Z
; protected: long __cdecl CMetaInterface::CopyData(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
?CopyData@CMetaInterface@@IEAAJKPEBGK0KKKH@Z
; protected: long __cdecl CMetaInterface::CopyKey(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,int,int) __ptr64
?CopyKey@CMetaInterface@@IEAAJKPEBGK0HH@Z
; public: void __cdecl CStrPassword::CopyTo(class CStrPassword & __ptr64) __ptr64
?CopyTo@CStrPassword@@QEAAXAEAV1@@Z
; public: void __cdecl CStrPassword::CopyTo(class CString & __ptr64) __ptr64
?CopyTo@CStrPassword@@QEAAXAEAVCString@@@Z
; public: long __cdecl CIISAppPool::Create(unsigned short const * __ptr64) __ptr64
?Create@CIISAppPool@@QEAAJPEBG@Z
; public: long __cdecl CIISApplication::Create(unsigned short const * __ptr64,unsigned long) __ptr64
?Create@CIISApplication@@QEAAJPEBGK@Z
; protected: long __cdecl CIISInterface::Create(int,struct _GUID const * __ptr64 const,struct _GUID const * __ptr64 const,int * __ptr64,struct IUnknown * __ptr64 * __ptr64) __ptr64
?Create@CIISInterface@@IEAAJHQEBU_GUID@@0PEAHPEAPEAUIUnknown@@@Z
; protected: long __cdecl CIISSvcControl::Create(void) __ptr64
?Create@CIISSvcControl@@IEAAJXZ
; protected: long __cdecl CMetaInterface::Create(void) __ptr64
?Create@CMetaInterface@@IEAAJXZ
; public: int __cdecl CRMCListBoxHeader::Create(unsigned long,struct tagRECT const & __ptr64,class CWnd * __ptr64,class CHeaderListBox * __ptr64,unsigned int) __ptr64
?Create@CRMCListBoxHeader@@QEAAHKAEBUtagRECT@@PEAVCWnd@@PEAVCHeaderListBox@@I@Z
; protected: long __cdecl CWamInterface::Create(void) __ptr64
?Create@CWamInterface@@IEAAJXZ
; protected: long __cdecl CWamInterface::CreateApplication(unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,int) __ptr64
?CreateApplication@CWamInterface@@IEAAJPEBGK0H@Z
; protected: long __cdecl CWamInterface::CreateApplicationPool(unsigned short const * __ptr64) __ptr64
?CreateApplicationPool@CWamInterface@@IEAAJPEBG@Z
; public: static class CObject * __ptr64 __cdecl CEmphasizedDialog::CreateObject(void)
?CreateObject@CEmphasizedDialog@@SAPEAVCObject@@XZ
; public: static class CObject * __ptr64 __cdecl CIISWizardBookEnd::CreateObject(void)
?CreateObject@CIISWizardBookEnd@@SAPEAVCObject@@XZ
; public: static class CObject * __ptr64 __cdecl CIISWizardPage::CreateObject(void)
?CreateObject@CIISWizardPage@@SAPEAVCObject@@XZ
; public: static class CObject * __ptr64 __cdecl CIISWizardSheet::CreateObject(void)
?CreateObject@CIISWizardSheet@@SAPEAVCObject@@XZ
; public: long __cdecl CMetaKey::CreatePathFromFailedOpen(void) __ptr64
?CreatePathFromFailedOpen@CMetaKey@@QEAAJXZ
; public: long __cdecl CIISApplication::CreatePooled(unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,int) __ptr64
?CreatePooled@CIISApplication@@QEAAJPEBGK0H@Z
; public: struct _COSERVERINFO * __ptr64 __cdecl CComAuthInfo::CreateServerInfoStruct(unsigned long)const  __ptr64
?CreateServerInfoStruct@CComAuthInfo@@QEBAPEAU_COSERVERINFO@@K@Z
; public: struct _COSERVERINFO * __ptr64 __cdecl CComAuthInfo::CreateServerInfoStruct(void)const  __ptr64
?CreateServerInfoStruct@CComAuthInfo@@QEBAPEAU_COSERVERINFO@@XZ
; public: long __cdecl CMetaInterface::CreateSite(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?CreateSite@CMetaInterface@@QEAAJPEBG000PEAK1@Z
; int __cdecl CreateSpecialDialogFont(class CWnd * __ptr64,class CFont * __ptr64,long,long,long,int,int)
?CreateSpecialDialogFont@@YAHPEAVCWnd@@PEAVCFont@@JJJHH@Z
; int __cdecl CvtGMTStringToInternal(unsigned short const * __ptr64,__int64 * __ptr64)
?CvtGMTStringToInternal@@YAHPEBGPEA_J@Z
; void __cdecl CvtInternalToGMTString(__int64,class CString & __ptr64)
?CvtInternalToGMTString@@YAX_JAEAVCString@@@Z
; int __cdecl CvtStringToLong(unsigned short const * __ptr64,unsigned long * __ptr64)
?CvtStringToLong@@YAHPEBGPEAK@Z
; protected: static long __cdecl CError::CvtToInternalFormat(long)
?CvtToInternalFormat@CError@@KAJJ@Z
; void __cdecl DDV_FilePath(class CDataExchange * __ptr64,class CString & __ptr64,int)
?DDV_FilePath@@YAXPEAVCDataExchange@@AEAVCString@@H@Z
; void __cdecl DDV_FolderPath(class CDataExchange * __ptr64,class CString & __ptr64,int)
?DDV_FolderPath@@YAXPEAVCDataExchange@@AEAVCString@@H@Z
; void __cdecl DDV_MaxCharsBalloon(class CDataExchange * __ptr64,class CString const & __ptr64,int)
?DDV_MaxCharsBalloon@@YAXPEAVCDataExchange@@AEBVCString@@H@Z
; void __cdecl DDV_MaxCharsBalloon_SecuredString(class CDataExchange * __ptr64,class CStrPassword const & __ptr64,int)
?DDV_MaxCharsBalloon_SecuredString@@YAXPEAVCDataExchange@@AEBVCStrPassword@@H@Z
; void __cdecl DDV_MaxChars_SecuredString(class CDataExchange * __ptr64,class CStrPassword const & __ptr64,int)
?DDV_MaxChars_SecuredString@@YAXPEAVCDataExchange@@AEBVCStrPassword@@H@Z
; void __cdecl DDV_MinChars(class CDataExchange * __ptr64,class CString const & __ptr64,int)
?DDV_MinChars@@YAXPEAVCDataExchange@@AEBVCString@@H@Z
; void __cdecl DDV_MinChars_SecuredString(class CDataExchange * __ptr64,class CStrPassword const & __ptr64,int)
?DDV_MinChars_SecuredString@@YAXPEAVCDataExchange@@AEBVCStrPassword@@H@Z
; void __cdecl DDV_MinMaxBalloon(class CDataExchange * __ptr64,int,unsigned long,unsigned long)
?DDV_MinMaxBalloon@@YAXPEAVCDataExchange@@HKK@Z
; void __cdecl DDV_MinMaxChars(class CDataExchange * __ptr64,class CString const & __ptr64,int,int)
?DDV_MinMaxChars@@YAXPEAVCDataExchange@@AEBVCString@@HH@Z
; void __cdecl DDV_MinMaxChars_SecuredString(class CDataExchange * __ptr64,class CStrPassword const & __ptr64,int,int)
?DDV_MinMaxChars_SecuredString@@YAXPEAVCDataExchange@@AEBVCStrPassword@@HH@Z
; void __cdecl DDV_MinMaxSpin(class CDataExchange * __ptr64,struct HWND__ * __ptr64,int,int)
?DDV_MinMaxSpin@@YAXPEAVCDataExchange@@PEAUHWND__@@HH@Z
; void __cdecl DDV_ShowBalloonAndFail(class CDataExchange * __ptr64,unsigned int)
?DDV_ShowBalloonAndFail@@YAXPEAVCDataExchange@@I@Z
; void __cdecl DDV_ShowBalloonAndFail(class CDataExchange * __ptr64,class CString)
?DDV_ShowBalloonAndFail@@YAXPEAVCDataExchange@@VCString@@@Z
; void __cdecl DDV_UNCFolderPath(class CDataExchange * __ptr64,class CString & __ptr64,int)
?DDV_UNCFolderPath@@YAXPEAVCDataExchange@@AEAVCString@@H@Z
; void __cdecl DDV_Url(class CDataExchange * __ptr64,class CString & __ptr64)
?DDV_Url@@YAXPEAVCDataExchange@@AEAVCString@@@Z
; void __cdecl DDX_Password(class CDataExchange * __ptr64,int,class CString & __ptr64,unsigned short const * __ptr64)
?DDX_Password@@YAXPEAVCDataExchange@@HAEAVCString@@PEBG@Z
; void __cdecl DDX_Password_SecuredString(class CDataExchange * __ptr64,int,class CStrPassword & __ptr64,unsigned short const * __ptr64)
?DDX_Password_SecuredString@@YAXPEAVCDataExchange@@HAEAVCStrPassword@@PEBG@Z
; void __cdecl DDX_Spin(class CDataExchange * __ptr64,int,int & __ptr64)
?DDX_Spin@@YAXPEAVCDataExchange@@HAEAH@Z
; void __cdecl DDX_Text(class CDataExchange * __ptr64,int,class CILong & __ptr64)
?DDX_Text@@YAXPEAVCDataExchange@@HAEAVCILong@@@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,unsigned char & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEAE@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,short & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEAF@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,int & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEAH@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,unsigned int & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEAI@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,long & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEAJ@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,unsigned long & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEAK@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,__int64 & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEA_J@Z
; void __cdecl DDX_TextBalloon(class CDataExchange * __ptr64,int,unsigned __int64 & __ptr64)
?DDX_TextBalloon@@YAXPEAVCDataExchange@@HAEA_K@Z
; void __cdecl DDX_Text_SecuredString(class CDataExchange * __ptr64,int,class CStrPassword & __ptr64)
?DDX_Text_SecuredString@@YAXPEAVCDataExchange@@HAEAVCStrPassword@@@Z
; public: static unsigned char * __ptr64 __cdecl CIPAddress::DWORDtoLPBYTE(unsigned long,unsigned char * __ptr64)
?DWORDtoLPBYTE@CIPAddress@@SAPEAEKPEAE@Z
; protected: static void __cdecl CINumber::DeAllocate(void)
?DeAllocate@CINumber@@KAXXZ
; protected: static void __cdecl CError::DeAllocateStatics(void)
?DeAllocateStatics@CError@@KAXXZ
; unsigned long __cdecl DeflateEnvironmentVariablePath(unsigned short const * __ptr64,class CString & __ptr64)
?DeflateEnvironmentVariablePath@@YAKPEBGAEAVCString@@@Z
; public: long __cdecl CIISAppPool::Delete(unsigned short const * __ptr64) __ptr64
?Delete@CIISAppPool@@QEAAJPEBG@Z
; public: long __cdecl CIISApplication::Delete(int) __ptr64
?Delete@CIISApplication@@QEAAJH@Z
; public: long __cdecl CMetaBack::Delete(unsigned short const * __ptr64,unsigned long) __ptr64
?Delete@CMetaBack@@QEAAJPEBGK@Z
; protected: long __cdecl CMetaInterface::DeleteAllData(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned long) __ptr64
?DeleteAllData@CMetaInterface@@IEAAJKPEBGKK@Z
; protected: long __cdecl CWamInterface::DeleteApplication(unsigned short const * __ptr64,int) __ptr64
?DeleteApplication@CWamInterface@@IEAAJPEBGH@Z
; protected: long __cdecl CWamInterface::DeleteApplicationPool(unsigned short const * __ptr64) __ptr64
?DeleteApplicationPool@CWamInterface@@IEAAJPEBG@Z
; protected: long __cdecl CMetaInterface::DeleteBackup(unsigned short const * __ptr64,unsigned long) __ptr64
?DeleteBackup@CMetaInterface@@IEAAJPEBGK@Z
; protected: long __cdecl CMetaInterface::DeleteChildKeys(unsigned long,unsigned short const * __ptr64) __ptr64
?DeleteChildKeys@CMetaInterface@@IEAAJKPEBG@Z
; protected: long __cdecl CMetaInterface::DeleteData(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned long) __ptr64
?DeleteData@CMetaInterface@@IEAAJKPEBGKK@Z
; protected: int __cdecl CHeaderListBox::DeleteHeaderItem(int) __ptr64
?DeleteHeaderItem@CHeaderListBox@@IEAAHH@Z
; public: int __cdecl CRMCListBoxHeader::DeleteItem(int) __ptr64
?DeleteItem@CRMCListBoxHeader@@QEAAHH@Z
; protected: long __cdecl CMetaInterface::DeleteKey(unsigned long,unsigned short const * __ptr64) __ptr64
?DeleteKey@CMetaInterface@@IEAAJKPEBG@Z
; public: long __cdecl CMetaKey::DeleteKey(unsigned short const * __ptr64) __ptr64
?DeleteKey@CMetaKey@@QEAAJPEBG@Z
; public: long __cdecl CIISApplication::DeleteRecoverable(int) __ptr64
?DeleteRecoverable@CIISApplication@@QEAAJH@Z
; public: long __cdecl CMetaKey::DeleteValue(unsigned long,unsigned short const * __ptr64) __ptr64
?DeleteValue@CMetaKey@@QEAAJKPEBG@Z
; public: void __cdecl CStrPassword::DestroyClearTextPassword(unsigned short * __ptr64)const  __ptr64
?DestroyClearTextPassword@CStrPassword@@QEBAXPEAG@Z
; protected: void __cdecl CHeaderListBox::DistributeColumns(void) __ptr64
?DistributeColumns@CHeaderListBox@@IEAAXXZ
; protected: virtual void __cdecl CConfirmDlg::DoDataExchange(class CDataExchange * __ptr64) __ptr64
?DoDataExchange@CConfirmDlg@@MEAAXPEAVCDataExchange@@@Z
; protected: virtual void __cdecl CInheritanceDlg::DoDataExchange(class CDataExchange * __ptr64) __ptr64
?DoDataExchange@CInheritanceDlg@@MEAAXPEAVCDataExchange@@@Z
; public: virtual int __cdecl CDirBrowseDlg::DoModal(void) __ptr64
?DoModal@CDirBrowseDlg@@UEAAHXZ
; public: virtual __int64 __cdecl CInheritanceDlg::DoModal(void) __ptr64
?DoModal@CInheritanceDlg@@UEAA_JXZ
; public: long __cdecl CMetaKey::DoesPathExist(unsigned short const * __ptr64) __ptr64
?DoesPathExist@CMetaKey@@QEAAJPEBG@Z
; public: int __cdecl CRMCListBoxHeader::DoesRespondToColumnWidthChanges(void)const  __ptr64
?DoesRespondToColumnWidthChanges@CRMCListBoxHeader@@QEBAHXZ
; int __cdecl DoesUNCShareExist(class CString & __ptr64)
?DoesUNCShareExist@@YAHAEAVCString@@@Z
; protected: int __cdecl CODLBox::DrawBitmap(class CRMCListBoxDrawStruct & __ptr64,int,int) __ptr64
?DrawBitmap@CODLBox@@IEAAHAEAVCRMCListBoxDrawStruct@@HH@Z
; protected: virtual void __cdecl CRMCComboBox::DrawItem(struct tagDRAWITEMSTRUCT * __ptr64) __ptr64
?DrawItem@CRMCComboBox@@MEAAXPEAUtagDRAWITEMSTRUCT@@@Z
; protected: virtual void __cdecl CRMCListBox::DrawItem(struct tagDRAWITEMSTRUCT * __ptr64) __ptr64
?DrawItem@CRMCListBox@@MEAAXPEAUtagDRAWITEMSTRUCT@@@Z
; protected: virtual void __cdecl CRMCComboBox::DrawItemEx(class CRMCListBoxDrawStruct & __ptr64) __ptr64
?DrawItemEx@CRMCComboBox@@MEAAXAEAVCRMCListBoxDrawStruct@@@Z
; protected: virtual void __cdecl CRMCListBox::DrawItemEx(class CRMCListBoxDrawStruct & __ptr64) __ptr64
?DrawItemEx@CRMCListBox@@MEAAXAEAVCRMCListBoxDrawStruct@@@Z
; public: int __cdecl CIPAccessDescriptor::DuplicateInList(class CObListPlus & __ptr64) __ptr64
?DuplicateInList@CIPAccessDescriptor@@QEAAHAEAVCObListPlus@@@Z
; void __cdecl EditHideBalloon(void)
?EditHideBalloon@@YAXXZ
; void __cdecl EditShowBalloon(struct HWND__ * __ptr64,unsigned int)
?EditShowBalloon@@YAXPEAUHWND__@@I@Z
; void __cdecl EditShowBalloon(struct HWND__ * __ptr64,class CString)
?EditShowBalloon@@YAXPEAUHWND__@@VCString@@@Z
; public: void __cdecl CStrPassword::Empty(void) __ptr64
?Empty@CStrPassword@@QEAAXXZ
; public: void __cdecl CIISWizardSheet::EnableButton(int,int) __ptr64
?EnableButton@CIISWizardSheet@@QEAAXHH@Z
; protected: void __cdecl CIISWizardPage::EnableSheetButton(int,int) __ptr64
?EnableSheetButton@CIISWizardPage@@IEAAXHH@Z
; public: int __cdecl CHeaderListBox::EnableWindow(int) __ptr64
?EnableWindow@CHeaderListBox@@QEAAHH@Z
; protected: long __cdecl CMetaInterface::EnumBackups(unsigned short * __ptr64,unsigned long * __ptr64,struct _FILETIME * __ptr64,unsigned long) __ptr64
?EnumBackups@CMetaInterface@@IEAAJPEAGPEAKPEAU_FILETIME@@K@Z
; protected: long __cdecl CMetaInterface::EnumData(unsigned long,unsigned short const * __ptr64,struct _METADATA_RECORD * __ptr64,unsigned long,unsigned long * __ptr64) __ptr64
?EnumData@CMetaInterface@@IEAAJKPEBGPEAU_METADATA_RECORD@@KPEAK@Z
; protected: long __cdecl CMetaInterface::EnumHistory(unsigned short * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,struct _FILETIME * __ptr64,unsigned long) __ptr64
?EnumHistory@CMetaInterface@@IEAAJPEAGPEAK1PEAU_FILETIME@@K@Z
; protected: long __cdecl CMetaInterface::EnumKeys(unsigned long,unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long) __ptr64
?EnumKeys@CMetaInterface@@IEAAJKPEBGPEAGK@Z
; public: long __cdecl CIISAppPool::EnumerateApplications(class CStringListEx & __ptr64) __ptr64
?EnumerateApplications@CIISAppPool@@QEAAJAEAVCStringListEx@@@Z
; protected: long __cdecl CWamInterface::EnumerateApplicationsInPool(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
?EnumerateApplicationsInPool@CWamInterface@@IEAAJPEBGPEAPEAG@Z
; protected: int __cdecl CError::ExpandEscapeCode(unsigned short * __ptr64,unsigned long,unsigned short * __ptr64 & __ptr64,class CString & __ptr64,long & __ptr64)const  __ptr64
?ExpandEscapeCode@CError@@IEBAHPEAGKAEAPEAGAEAVCString@@AEAJ@Z
; public: int __cdecl CError::Failed(void)const  __ptr64
?Failed@CError@@QEBAHXZ
; public: static int __cdecl CError::Failed(long)
?Failed@CError@@SAHJ@Z
; int __cdecl FetchIpAddressFromCombo(class CComboBox & __ptr64,class CObListPlus & __ptr64,class CIPAddress & __ptr64)
?FetchIpAddressFromCombo@@YAHAEAVCComboBox@@AEAVCObListPlus@@AEAVCIPAddress@@@Z
; public: int __cdecl CObListPlus::FindElement(class CObject * __ptr64)const  __ptr64
?FindElement@CObListPlus@@QEBAHPEAVCObject@@@Z
; protected: static unsigned short const * __ptr64 __cdecl CError::FindFacility(unsigned long)
?FindFacility@CError@@KAPEBGK@Z
; void __cdecl FitPathToControl(class CWnd & __ptr64,unsigned short const * __ptr64,int)
?FitPathToControl@@YAXAEAVCWnd@@PEBGH@Z
; public: void __cdecl CAccessEntry::FlagForDeletion(int) __ptr64
?FlagForDeletion@CAccessEntry@@QEAAXH@Z
; public: void __cdecl CComAuthInfo::FreeServerInfoStruct(struct _COSERVERINFO * __ptr64)const  __ptr64
?FreeServerInfoStruct@CComAuthInfo@@QEBAXPEAU_COSERVERINFO@@@Z
; protected: int __cdecl CInheritanceDlg::FriendlyInstance(class CString & __ptr64,class CString & __ptr64) __ptr64
?FriendlyInstance@CInheritanceDlg@@IEAAHAEAVCString@@0@Z
; unsigned short const * __ptr64 __cdecl GUIDToCString(struct _GUID const & __ptr64,class CString & __ptr64)
?GUIDToCString@@YAPEBGAEBU_GUID@@AEAVCString@@@Z
; unsigned short const * __ptr64 __cdecl GenerateRegistryKey(class CString & __ptr64,unsigned short const * __ptr64)
?GenerateRegistryKey@@YAPEBGAEAVCString@@PEBG@Z
; public: long __cdecl CMetaInterface::GetAdminInterface2(struct IMSAdminBase2W * __ptr64 * __ptr64) __ptr64
?GetAdminInterface2@CMetaInterface@@QEAAJPEAPEAUIMSAdminBase2W@@@Z
; public: long __cdecl CMetaInterface::GetAdminInterface3(struct IMSAdminBase3W * __ptr64 * __ptr64) __ptr64
?GetAdminInterface3@CMetaInterface@@QEAAJPEAPEAUIMSAdminBase3W@@@Z
; protected: long __cdecl CMetaInterface::GetAllData(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long * __ptr64,unsigned long * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long * __ptr64) __ptr64
?GetAllData@CMetaInterface@@IEAAJKPEBGKKKPEAK1KPEAE1@Z
; protected: long __cdecl CMetaKey::GetAllData(unsigned long,unsigned long,unsigned long,unsigned long * __ptr64,unsigned long * __ptr64,unsigned char * __ptr64 * __ptr64,unsigned short const * __ptr64) __ptr64
?GetAllData@CMetaKey@@IEAAJKKKPEAK0PEAPEAEPEBG@Z
; public: long __cdecl CWamInterface::GetAppAdminInterface(struct IIISApplicationAdmin * __ptr64 * __ptr64) __ptr64
?GetAppAdminInterface@CWamInterface@@QEAAJPEAPEAUIIISApplicationAdmin@@@Z
; protected: struct HBRUSH__ * __ptr64 __cdecl CIISWizardPage::GetBackgroundBrush(void)const  __ptr64
?GetBackgroundBrush@CIISWizardPage@@IEBAPEAUHBRUSH__@@XZ
; public: struct HBRUSH__ * __ptr64 __cdecl CIISWizardSheet::GetBackgroundBrush(void)const  __ptr64
?GetBackgroundBrush@CIISWizardSheet@@QEBAPEAUHBRUSH__@@XZ
; public: unsigned long __cdecl CMetaKey::GetBase(void)const  __ptr64
?GetBase@CMetaKey@@QEBAKXZ
; protected: class CFont * __ptr64 __cdecl CIISWizardPage::GetBigFont(void) __ptr64
?GetBigFont@CIISWizardPage@@IEAAPEAVCFont@@XZ
; public: class CFont * __ptr64 __cdecl CIISWizardSheet::GetBigFont(void) __ptr64
?GetBigFont@CIISWizardSheet@@QEAAPEAVCFont@@XZ
; protected: class CDC * __ptr64 __cdecl CIISWizardPage::GetBitmapMemDC(void) __ptr64
?GetBitmapMemDC@CIISWizardPage@@IEAAPEAVCDC@@XZ
; public: class CDC * __ptr64 __cdecl CIISWizardSheet::GetBitmapMemDC(int) __ptr64
?GetBitmapMemDC@CIISWizardSheet@@QEAAPEAVCDC@@H@Z
; protected: class CFont * __ptr64 __cdecl CIISWizardPage::GetBoldFont(void) __ptr64
?GetBoldFont@CIISWizardPage@@IEAAPEAVCFont@@XZ
; public: class CFont * __ptr64 __cdecl CIISWizardSheet::GetBoldFont(void) __ptr64
?GetBoldFont@CIISWizardSheet@@QEAAPEAVCFont@@XZ
; public: int __cdecl CStrPassword::GetByteLength(void)const  __ptr64
?GetByteLength@CStrPassword@@QEBAHXZ
; protected: long __cdecl CMetaInterface::GetChildPaths(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned short * __ptr64,unsigned long * __ptr64) __ptr64
?GetChildPaths@CMetaInterface@@IEAAJKPEBGKPEAGPEAK@Z
; public: long __cdecl CMetaKey::GetChildPaths(class CStringListEx & __ptr64,unsigned short const * __ptr64) __ptr64
?GetChildPaths@CMetaKey@@QEAAJAEAVCStringListEx@@PEBG@Z
; public: unsigned short * __ptr64 __cdecl CStrPassword::GetClearTextPassword(void) __ptr64
?GetClearTextPassword@CStrPassword@@QEAAPEAGXZ
; public: int __cdecl CRMCListBoxHeader::GetColumnWidth(int)const  __ptr64
?GetColumnWidth@CRMCListBoxHeader@@QEBAHH@Z
; public: int __cdecl CGetComputer::GetComputer(struct HWND__ * __ptr64) __ptr64
?GetComputer@CGetComputer@@QEAAHPEAUHWND__@@@Z
; public: int __cdecl CRMCListBox::GetCurSel(void)const  __ptr64
?GetCurSel@CRMCListBox@@QEBAHXZ
; public: unsigned char * __ptr64 __cdecl CBlob::GetData(void) __ptr64
?GetData@CBlob@@QEAAPEAEXZ
; protected: long __cdecl CMetaInterface::GetData(unsigned long,unsigned short const * __ptr64,struct _METADATA_RECORD * __ptr64,unsigned long * __ptr64) __ptr64
?GetData@CMetaInterface@@IEAAJKPEBGPEAU_METADATA_RECORD@@PEAK@Z
; protected: long __cdecl CInheritanceDlg::GetDataPaths(void) __ptr64
?GetDataPaths@CInheritanceDlg@@IEAAJXZ
; protected: long __cdecl CMetaInterface::GetDataPaths(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned short * __ptr64,unsigned long * __ptr64) __ptr64
?GetDataPaths@CMetaInterface@@IEAAJKPEBGKKKPEAGPEAK@Z
; public: long __cdecl CMetaKey::GetDataPaths(class CStringListEx & __ptr64,unsigned long,unsigned long,unsigned short const * __ptr64) __ptr64
?GetDataPaths@CMetaKey@@QEAAJAEAVCStringListEx@@KKPEBG@Z
; void __cdecl GetDlgCtlRect(struct HWND__ * __ptr64,struct HWND__ * __ptr64,struct tagRECT * __ptr64)
?GetDlgCtlRect@@YAXPEAUHWND__@@0PEAUtagRECT@@@Z
; public: unsigned short const * __ptr64 __cdecl CDirBrowseDlg::GetFullPath(class CString & __ptr64,int)const  __ptr64
?GetFullPath@CDirBrowseDlg@@QEBAPEBGAEAVCString@@H@Z
; void __cdecl GetFullPathLocalOrRemote(unsigned short const * __ptr64,unsigned short const * __ptr64,class CString & __ptr64)
?GetFullPathLocalOrRemote@@YAXPEBG0AEAVCString@@@Z
; public: unsigned long __cdecl CMetaKey::GetHandle(void)const  __ptr64
?GetHandle@CMetaKey@@QEBAKXZ
; protected: class CRMCListBoxHeader * __ptr64 __cdecl CHeaderListBox::GetHeader(void) __ptr64
?GetHeader@CHeaderListBox@@IEAAPEAVCRMCListBoxHeader@@XZ
; protected: int __cdecl CHeaderListBox::GetHeaderItem(int,struct _HD_ITEMW * __ptr64)const  __ptr64
?GetHeaderItem@CHeaderListBox@@IEBAHHPEAU_HD_ITEMW@@@Z
; protected: int __cdecl CHeaderListBox::GetHeaderItemCount(void)const  __ptr64
?GetHeaderItemCount@CHeaderListBox@@IEBAHXZ
; int __cdecl GetIUsrAccount(unsigned short const * __ptr64,class CWnd * __ptr64,class CString & __ptr64)
?GetIUsrAccount@@YAHPEBGPEAVCWnd@@AEAVCString@@@Z
; int __cdecl GetIUsrAccount(unsigned short const * __ptr64,class CWnd * __ptr64,unsigned short * __ptr64,int)
?GetIUsrAccount@@YAHPEBGPEAVCWnd@@PEAGH@Z
; public: static unsigned long __cdecl CMetabasePath::GetInstanceNumber(unsigned short const * __ptr64)
?GetInstanceNumber@CMetabasePath@@SAKPEBG@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::GetInstancePath(unsigned short const * __ptr64,class CString & __ptr64,class CString * __ptr64)
?GetInstancePath@CMetabasePath@@SAPEBGPEBGAEAVCString@@PEAV2@@Z
; public: struct IMSAdminBaseW * __ptr64 __cdecl CMetaInterface::GetInterface(void) __ptr64
?GetInterface@CMetaInterface@@QEAAPEAUIMSAdminBaseW@@XZ
; public: int __cdecl CRMCListBoxHeader::GetItem(int,struct _HD_ITEMW * __ptr64)const  __ptr64
?GetItem@CRMCListBoxHeader@@QEBAHHPEAU_HD_ITEMW@@@Z
; public: int __cdecl CRMCListBoxHeader::GetItemCount(void)const  __ptr64
?GetItemCount@CRMCListBoxHeader@@QEBAHXZ
; protected: long __cdecl CMetaInterface::GetLastChangeTime(unsigned long,unsigned short const * __ptr64,struct _FILETIME * __ptr64,int) __ptr64
?GetLastChangeTime@CMetaInterface@@IEAAJKPEBGPEAU_FILETIME@@H@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::GetLastNodeName(unsigned short const * __ptr64,class CString & __ptr64)
?GetLastNodeName@CMetabasePath@@SAPEBGPEBGAEAVCString@@@Z
; public: void __cdecl CError::GetLastWinError(void) __ptr64
?GetLastWinError@CError@@QEAAXXZ
; public: int __cdecl CStrPassword::GetLength(void)const  __ptr64
?GetLength@CStrPassword@@QEBAHXZ
; public: static int __cdecl CMetaKey::GetMDFieldDef(unsigned long,unsigned long & __ptr64,unsigned long & __ptr64,unsigned long & __ptr64,unsigned long & __ptr64)
?GetMDFieldDef@CMetaKey@@SAHKAEAK000@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::GetMachinePath(unsigned short const * __ptr64,class CString & __ptr64,class CString * __ptr64)
?GetMachinePath@CMetabasePath@@SAPEBGPEBGAEAVCString@@PEAV2@@Z
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CConfirmDlg::GetMessageMap(void)const  __ptr64
?GetMessageMap@CConfirmDlg@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CEmphasizedDialog::GetMessageMap(void)const  __ptr64
?GetMessageMap@CEmphasizedDialog@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CHeaderListBox::GetMessageMap(void)const  __ptr64
?GetMessageMap@CHeaderListBox@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CIISWizardBookEnd::GetMessageMap(void)const  __ptr64
?GetMessageMap@CIISWizardBookEnd@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CIISWizardPage::GetMessageMap(void)const  __ptr64
?GetMessageMap@CIISWizardPage@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CIISWizardSheet::GetMessageMap(void)const  __ptr64
?GetMessageMap@CIISWizardSheet@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CInheritanceDlg::GetMessageMap(void)const  __ptr64
?GetMessageMap@CInheritanceDlg@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CRMCComboBox::GetMessageMap(void)const  __ptr64
?GetMessageMap@CRMCComboBox@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CRMCListBox::GetMessageMap(void)const  __ptr64
?GetMessageMap@CRMCListBox@@MEBAPEBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __ptr64 __cdecl CRMCListBoxHeader::GetMessageMap(void)const  __ptr64
?GetMessageMap@CRMCListBoxHeader@@MEBAPEBUAFX_MSGMAP@@XZ
; public: static struct CMetaKey::tagMDFIELDDEF const * __ptr64 __cdecl CMetaKey::GetMetaProp(unsigned long)
?GetMetaProp@CMetaKey@@SAPEBUtagMDFIELDDEF@1@K@Z
; public: void * __ptr64 __cdecl CRMCListBox::GetNextSelectedItem(int * __ptr64) __ptr64
?GetNextSelectedItem@CRMCListBox@@QEAAPEAXPEAH@Z
; public: class CString & __ptr64 __cdecl CConfirmDlg::GetPassword(void) __ptr64
?GetPassword@CConfirmDlg@@QEAAAEAVCString@@XZ
; public: long __cdecl CIISAppPool::GetProcessMode(unsigned long * __ptr64) __ptr64
?GetProcessMode@CIISAppPool@@QEAAJPEAK@Z
; protected: long __cdecl CWamInterface::GetProcessMode(unsigned long * __ptr64) __ptr64
?GetProcessMode@CWamInterface@@IEAAJPEAK@Z
; public: static int __cdecl CMetaKey::GetPropertyDescription(unsigned long,class CString & __ptr64)
?GetPropertyDescription@CMetaKey@@SAHKAEAVCString@@@Z
; protected: long __cdecl CMetaKey::GetPropertyValue(unsigned long,unsigned long & __ptr64,void * __ptr64 & __ptr64,unsigned long * __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?GetPropertyValue@CMetaKey@@IEAAJKAEAKAEAPEAXPEAKPEAHPEBG2@Z
; protected: static int __cdecl CODLBox::GetRequiredWidth(class CDC * __ptr64,class CRect const & __ptr64,unsigned short const * __ptr64,int)
?GetRequiredWidth@CODLBox@@KAHPEAVCDC@@AEBVCRect@@PEBGH@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::GetRootPath(unsigned short const * __ptr64,class CString & __ptr64,class CString * __ptr64)
?GetRootPath@CMetabasePath@@SAPEBGPEBGAEAVCString@@PEAV2@@Z
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CEmphasizedDialog::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CEmphasizedDialog@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CHeaderListBox::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CHeaderListBox@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CIISWizardBookEnd::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CIISWizardBookEnd@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CIISWizardPage::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CIISWizardPage@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CIISWizardSheet::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CIISWizardSheet@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CRMCComboBox::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CRMCComboBox@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CRMCListBox::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CRMCListBox@@UEBAPEAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __ptr64 __cdecl CRMCListBoxHeader::GetRuntimeClass(void)const  __ptr64
?GetRuntimeClass@CRMCListBoxHeader@@UEBAPEAUCRuntimeClass@@XZ
; public: int __cdecl CRMCListBox::GetSel(int)const  __ptr64
?GetSel@CRMCListBox@@QEBAHH@Z
; public: int __cdecl CRMCListBox::GetSelCount(void)const  __ptr64
?GetSelCount@CRMCListBox@@QEBAHXZ
; public: void * __ptr64 __cdecl CRMCListBox::GetSelectedListItem(int * __ptr64) __ptr64
?GetSelectedListItem@CRMCListBox@@QEAAPEAXPEAH@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::GetServiceInfoPath(unsigned short const * __ptr64,class CString & __ptr64,unsigned short const * __ptr64)
?GetServiceInfoPath@CMetabasePath@@SAPEBGPEBGAEAVCString@@0@Z
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::GetServicePath(unsigned short const * __ptr64,class CString & __ptr64,class CString * __ptr64)
?GetServicePath@CMetabasePath@@SAPEBGPEBGAEAVCString@@PEAV2@@Z
; protected: class CIISWizardSheet * __ptr64 __cdecl CIISWizardPage::GetSheet(void)const  __ptr64
?GetSheet@CIISWizardPage@@IEBAPEAVCIISWizardSheet@@XZ
; public: void * __ptr64 __cdecl CAccessEntry::GetSid(void) __ptr64
?GetSid@CAccessEntry@@QEAAPEAXXZ
; public: unsigned long __cdecl CBlob::GetSize(void)const  __ptr64
?GetSize@CBlob@@QEBAKXZ
; protected: class CFont * __ptr64 __cdecl CIISWizardPage::GetSpecialFont(void) __ptr64
?GetSpecialFont@CIISWizardPage@@IEAAPEAVCFont@@XZ
; public: class CFont * __ptr64 __cdecl CIISWizardSheet::GetSpecialFont(int) __ptr64
?GetSpecialFont@CIISWizardSheet@@QEAAPEAVCFont@@H@Z
; int __cdecl GetSpecialPathRealPath(int,class CString const & __ptr64,class CString & __ptr64)
?GetSpecialPathRealPath@@YAHHAEBVCString@@AEAV1@@Z
; protected: void __cdecl CRMCListBoxResources::GetSysColors(void) __ptr64
?GetSysColors@CRMCListBoxResources@@IEAAXXZ
; public: long __cdecl CMetaInterface::GetSystemChangeNumber(unsigned long * __ptr64) __ptr64
?GetSystemChangeNumber@CMetaInterface@@QEAAJPEAK@Z
; public: unsigned int __cdecl CODLBox::GetTab(int)const  __ptr64
?GetTab@CODLBox@@QEBAIH@Z
; public: int __cdecl CGetUsers::GetUsers(struct HWND__ * __ptr64,int) __ptr64
?GetUsers@CGetUsers@@QEAAHPEAUHWND__@@H@Z
; int __cdecl GetVolumeInformationSystemFlags(unsigned short const * __ptr64,unsigned long * __ptr64)
?GetVolumeInformationSystemFlags@@YAHPEBGPEAK@Z
; protected: class CBrush * __ptr64 __cdecl CIISWizardPage::GetWindowBrush(void) __ptr64
?GetWindowBrush@CIISWizardPage@@IEAAPEAVCBrush@@XZ
; public: class CBrush * __ptr64 __cdecl CIISWizardSheet::GetWindowBrush(void) __ptr64
?GetWindowBrush@CIISWizardSheet@@QEAAPEAVCBrush@@XZ
; public: void __cdecl CIPAccessDescriptor::GrantAccess(int) __ptr64
?GrantAccess@CIPAccessDescriptor@@QEAAXH@Z
; public: long __cdecl CError::HResult(void)const  __ptr64
?HResult@CError@@QEBAJXZ
; public: static long __cdecl CError::HResult(long)
?HResult@CError@@SAJJ@Z
; public: int __cdecl CIPAccessDescriptor::HasAccess(void)const  __ptr64
?HasAccess@CIPAccessDescriptor@@QEBAHXZ
; public: int __cdecl CAccessEntry::HasAppropriateAccess(unsigned long)const  __ptr64
?HasAppropriateAccess@CAccessEntry@@QEBAHK@Z
; protected: int __cdecl CIISSvcControl::HasInterface(void)const  __ptr64
?HasInterface@CIISSvcControl@@IEBAHXZ
; protected: int __cdecl CMetaInterface::HasInterface(void)const  __ptr64
?HasInterface@CMetaInterface@@IEBAHXZ
; protected: int __cdecl CWamInterface::HasInterface(void)const  __ptr64
?HasInterface@CWamInterface@@IEBAHXZ
; protected: int __cdecl CError::HasOverride(unsigned int * __ptr64)const  __ptr64
?HasOverride@CError@@IEBAHPEAI@Z
; public: int __cdecl CAccessEntry::HasSomeAccess(void)const  __ptr64
?HasSomeAccess@CAccessEntry@@QEBAHXZ
; public: class CObject * __ptr64 __cdecl CObListPlus::Index(int) __ptr64
?Index@CObListPlus@@QEAAPEAVCObject@@H@Z
; public: virtual int __cdecl CHeaderListBox::Initialize(void) __ptr64
?Initialize@CHeaderListBox@@UEAAHXZ
; public: static int __cdecl CINumber::Initialize(int)
?Initialize@CINumber@@SAHH@Z
; protected: void __cdecl CInheritanceDlg::Initialize(void) __ptr64
?Initialize@CInheritanceDlg@@IEAAXXZ
; protected: virtual int __cdecl CODLBox::Initialize(void) __ptr64
?Initialize@CODLBox@@MEAAHXZ
; public: virtual int __cdecl CRMCComboBox::Initialize(void) __ptr64
?Initialize@CRMCComboBox@@UEAAHXZ
; public: virtual int __cdecl CRMCListBox::Initialize(void) __ptr64
?Initialize@CRMCListBox@@UEAAHXZ
; protected: int __cdecl CHeaderListBox::InsertColumn(int,int,unsigned int,struct HINSTANCE__ * __ptr64) __ptr64
?InsertColumn@CHeaderListBox@@IEAAHHHIPEAUHINSTANCE__@@@Z
; protected: int __cdecl CHeaderListBox::InsertHeaderItem(int,struct _HD_ITEMW * __ptr64) __ptr64
?InsertHeaderItem@CHeaderListBox@@IEAAHHPEAU_HD_ITEMW@@@Z
; public: int __cdecl CRMCListBoxHeader::InsertItem(int,struct _HD_ITEMW * __ptr64) __ptr64
?InsertItem@CRMCListBoxHeader@@QEAAHHPEAU_HD_ITEMW@@@Z
; public: void __cdecl CODLBox::InsertTab(int,unsigned int) __ptr64
?InsertTab@CODLBox@@QEAAXHI@Z
; public: void __cdecl CRMCListBox::InvalidateSelection(int) __ptr64
?InvalidateSelection@CRMCListBox@@QEAAXH@Z
; long __cdecl IsAllNumHostHeader(unsigned short const * __ptr64)
?IsAllNumHostHeader@@YAJPEBG@Z
; protected: static int __cdecl CINumber::IsAllocated(void)
?IsAllocated@CINumber@@KAHXZ
; public: int __cdecl CIPAddress::IsBadValue(void)const  __ptr64
?IsBadValue@CIPAddress@@QEBAHXZ
; int __cdecl IsBiDiLocalizedSystem(void)
?IsBiDiLocalizedSystem@@YAHXZ
; public: int __cdecl CAccessEntry::IsDeletable(void)const  __ptr64
?IsDeletable@CAccessEntry@@QEBAHXZ
; public: int __cdecl CAccessEntry::IsDeleted(void)const  __ptr64
?IsDeleted@CAccessEntry@@QEBAHXZ
; int __cdecl IsDevicePath(class CString const & __ptr64)
?IsDevicePath@@YAHAEBVCString@@@Z
; public: int __cdecl CAccessEntry::IsDirty(void)const  __ptr64
?IsDirty@CAccessEntry@@QEBAHXZ
; public: int __cdecl CObjHelper::IsDirty(void)const  __ptr64
?IsDirty@CObjHelper@@QEBAHXZ
; public: int __cdecl CIPAccessDescriptor::IsDomainName(void)const  __ptr64
?IsDomainName@CIPAccessDescriptor@@QEBAHXZ
; public: int __cdecl CBlob::IsEmpty(void)const  __ptr64
?IsEmpty@CBlob@@QEBAHXZ
; public: int __cdecl CInheritanceDlg::IsEmpty(void)const  __ptr64
?IsEmpty@CInheritanceDlg@@QEBAHXZ
; public: int __cdecl CStrPassword::IsEmpty(void)const  __ptr64
?IsEmpty@CStrPassword@@QEBAHXZ
; public: int __cdecl CIISApplication::IsEnabledApplication(void)const  __ptr64
?IsEnabledApplication@CIISApplication@@QEBAHXZ
; int __cdecl IsFullyQualifiedPath(class CString const & __ptr64)
?IsFullyQualifiedPath@@YAHAEBVCString@@@Z
; protected: int __cdecl CIISWizardPage::IsHeaderPage(void)const  __ptr64
?IsHeaderPage@CIISWizardPage@@IEBAHXZ
; public: int __cdecl CMetaKey::IsHomeDirectoryPath(void)const  __ptr64
?IsHomeDirectoryPath@CMetaKey@@QEBAHXZ
; public: int __cdecl CMetabasePath::IsHomeDirectoryPath(void)const  __ptr64
?IsHomeDirectoryPath@CMetabasePath@@QEBAHXZ
; public: static int __cdecl CMetabasePath::IsHomeDirectoryPath(unsigned short const * __ptr64)
?IsHomeDirectoryPath@CMetabasePath@@SAHPEBG@Z
; public: static int __cdecl CINumber::IsInitialized(void)
?IsInitialized@CINumber@@SAHXZ
; public: int __cdecl CIISApplication::IsInproc(void)const  __ptr64
?IsInproc@CIISApplication@@QEBAHXZ
; public: int __cdecl CComAuthInfo::IsLocal(void)const  __ptr64
?IsLocal@CComAuthInfo@@QEBAHXZ
; public: int __cdecl CIISInterface::IsLocal(void)const  __ptr64
?IsLocal@CIISInterface@@QEBAHXZ
; int __cdecl IsLocalComputer(unsigned short const * __ptr64)
?IsLocalComputer@@YAHPEBG@Z
; public: static int __cdecl CMetabasePath::IsMasterInstance(unsigned short const * __ptr64)
?IsMasterInstance@CMetabasePath@@SAHPEBG@Z
; protected: int __cdecl CRMCListBox::IsMultiSelect(void)const  __ptr64
?IsMultiSelect@CRMCListBox@@IEBAHXZ
; public: int __cdecl CIPAccessDescriptor::IsMultiple(void)const  __ptr64
?IsMultiple@CIPAccessDescriptor@@QEBAHXZ
; int __cdecl IsNetworkPath(class CString const & __ptr64,class CString * __ptr64,class CString * __ptr64)
?IsNetworkPath@@YAHAEBVCString@@PEAV1@1@Z
; public: int __cdecl CMetaKey::IsOpen(void)const  __ptr64
?IsOpen@CMetaKey@@QEBAHXZ
; public: int __cdecl CIISApplication::IsOutOfProc(void)const  __ptr64
?IsOutOfProc@CIISApplication@@QEBAHXZ
; public: int __cdecl CIISApplication::IsPooledProc(void)const  __ptr64
?IsPooledProc@CIISApplication@@QEBAHXZ
; public: static int __cdecl CMetaKey::IsPropertyInheritable(unsigned long)
?IsPropertyInheritable@CMetaKey@@SAHK@Z
; int __cdecl IsRestrictedFilename(class CString const & __ptr64)
?IsRestrictedFilename@@YAHAEBVCString@@@Z
; public: int __cdecl CAccessEntry::IsSIDResolved(void)const  __ptr64
?IsSIDResolved@CAccessEntry@@QEBAHXZ
; int __cdecl IsServerLocal(unsigned short const * __ptr64)
?IsServerLocal@@YAHPEBG@Z
; public: int __cdecl CIPAccessDescriptor::IsSingle(void)const  __ptr64
?IsSingle@CIPAccessDescriptor@@QEBAHXZ
; int __cdecl IsSpecialPath(class CString const & __ptr64,int,int)
?IsSpecialPath@@YAHAEBVCString@@HH@Z
; int __cdecl IsUNCName(class CString const & __ptr64)
?IsUNCName@@YAHAEBVCString@@@Z
; int __cdecl IsURLName(class CString const & __ptr64)
?IsURLName@@YAHAEBVCString@@@Z
; public: virtual int __cdecl CObjHelper::IsValid(void)const  __ptr64
?IsValid@CObjHelper@@UEBAHXZ
; long __cdecl IsValidHostHeader(unsigned short const * __ptr64)
?IsValidHostHeader@@YAJPEBG@Z
; public: int __cdecl CAccessEntry::IsVisible(void)const  __ptr64
?IsVisible@CAccessEntry@@QEBAHXZ
; protected: int __cdecl CIISWizardBookEnd::IsWelcomePage(void)const  __ptr64
?IsWelcomePage@CIISWizardBookEnd@@IEBAHXZ
; protected: int __cdecl CIISWizardPage::IsWizard97(void)const  __ptr64
?IsWizard97@CIISWizardPage@@IEBAHXZ
; public: int __cdecl CIISWizardSheet::IsWizard97(void)const  __ptr64
?IsWizard97@CIISWizardSheet@@QEBAHXZ
; public: int __cdecl CIPAddress::IsZeroValue(void)const  __ptr64
?IsZeroValue@CIPAddress@@QEBAHXZ
; public: long __cdecl CIISSvcControl::Kill(void) __ptr64
?Kill@CIISSvcControl@@QEAAJXZ
; long __cdecl LimitInputDomainName(struct HWND__ * __ptr64)
?LimitInputDomainName@@YAJPEAUHWND__@@@Z
; long __cdecl LimitInputPath(struct HWND__ * __ptr64,int)
?LimitInputPath@@YAJPEAUHWND__@@H@Z
; protected: int __cdecl CMappedBitmapButton::LoadMappedBitmaps(unsigned int,unsigned int,unsigned int,unsigned int) __ptr64
?LoadMappedBitmaps@CMappedBitmapButton@@IEAAHIIII@Z
; public: static unsigned short * __ptr64 __cdecl CIPAddress::LongToString(unsigned long,unsigned short * __ptr64,int)
?LongToString@CIPAddress@@SAPEAGKPEAGH@Z
; public: static unsigned short const * __ptr64 __cdecl CIPAddress::LongToString(unsigned long,class ATL::CComBSTR & __ptr64)
?LongToString@CIPAddress@@SAPEBGKAEAVCComBSTR@ATL@@@Z
; public: static unsigned short const * __ptr64 __cdecl CIPAddress::LongToString(unsigned long,class CString & __ptr64)
?LongToString@CIPAddress@@SAPEBGKAEAVCString@@@Z
; int __cdecl LooksLikeIPAddress(unsigned short const * __ptr64)
?LooksLikeIPAddress@@YAHPEBG@Z
; public: static int __cdecl CAccessEntry::LookupAccountSidW(class CString & __ptr64,int & __ptr64,void * __ptr64,unsigned short const * __ptr64)
?LookupAccountSidW@CAccessEntry@@SAHAEAVCString@@AEAHPEAXPEBG@Z
; unsigned short const * __ptr64 __cdecl MakeUNCPath(class CString & __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64)
?MakeUNCPath@@YAPEBGAEAVCString@@PEBG1@Z
; public: static int __cdecl CMetaKey::MapMDIDToTableIndex(unsigned long)
?MapMDIDToTableIndex@CMetaKey@@SAHK@Z
; public: void __cdecl CAccessEntry::MarkEntryAsChanged(void) __ptr64
?MarkEntryAsChanged@CAccessEntry@@QEAAXXZ
; public: void __cdecl CAccessEntry::MarkEntryAsClean(void) __ptr64
?MarkEntryAsClean@CAccessEntry@@QEAAXXZ
; public: void __cdecl CAccessEntry::MarkEntryAsNew(void) __ptr64
?MarkEntryAsNew@CAccessEntry@@QEAAXXZ
; protected: virtual void __cdecl CRMCComboBox::MeasureItem(struct tagMEASUREITEMSTRUCT * __ptr64) __ptr64
?MeasureItem@CRMCComboBox@@MEAAXPEAUtagMEASUREITEMSTRUCT@@@Z
; protected: virtual void __cdecl CRMCListBox::MeasureItem(struct tagMEASUREITEMSTRUCT * __ptr64) __ptr64
?MeasureItem@CRMCListBox@@MEAAXPEAUtagMEASUREITEMSTRUCT@@@Z
; public: int __cdecl CError::MessageBoxFormat(struct HWND__ * __ptr64,unsigned int,unsigned int,unsigned int,...)const  __ptr64
?MessageBoxFormat@CError@@QEBAHPEAUHWND__@@IIIZZ
; public: int __cdecl CError::MessageBoxOnFailure(struct HWND__ * __ptr64,unsigned int,unsigned int)const  __ptr64
?MessageBoxOnFailure@CError@@QEBAHPEAUHWND__@@II@Z
; public: int __cdecl CError::MessageBoxW(struct HWND__ * __ptr64,unsigned int,unsigned int)const  __ptr64
?MessageBoxW@CError@@QEBAHPEAUHWND__@@II@Z
; unsigned long __cdecl MyGetHostName(unsigned long,class CString & __ptr64)
?MyGetHostName@@YAKKAEAVCString@@@Z
; long __cdecl MyValidatePath(unsigned short const * __ptr64,int,int,unsigned long,unsigned long)
?MyValidatePath@@YAJPEBGHHKK@Z
; public: long __cdecl CMetaBack::Next(unsigned long * __ptr64,unsigned short * __ptr64,struct _FILETIME * __ptr64) __ptr64
?Next@CMetaBack@@QEAAJPEAKPEAGPEAU_FILETIME@@@Z
; public: long __cdecl CMetaEnumerator::Next(unsigned long & __ptr64,class CString & __ptr64,unsigned short const * __ptr64) __ptr64
?Next@CMetaEnumerator@@QEAAJAEAKAEAVCString@@PEBG@Z
; public: long __cdecl CMetaEnumerator::Next(class CString & __ptr64,unsigned short const * __ptr64) __ptr64
?Next@CMetaEnumerator@@QEAAJAEAVCString@@PEBG@Z
; public: class CObject * __ptr64 __cdecl CObListIter::Next(void) __ptr64
?Next@CObListIter@@QEAAPEAVCObject@@XZ
; public: long __cdecl CMetaBack::NextHistory(unsigned long * __ptr64,unsigned long * __ptr64,unsigned short * __ptr64,struct _FILETIME * __ptr64) __ptr64
?NextHistory@CMetaBack@@QEAAJPEAK0PEAGPEAU_FILETIME@@@Z
; public: int __cdecl CODLBox::NumTabs(void)const  __ptr64
?NumTabs@CODLBox@@QEBAHXZ
; protected: void __cdecl CInheritanceDlg::OnButtonSelectAll(void) __ptr64
?OnButtonSelectAll@CInheritanceDlg@@IEAAXXZ
; protected: int __cdecl CHeaderListBox::OnCreate(struct tagCREATESTRUCTW * __ptr64) __ptr64
?OnCreate@CHeaderListBox@@IEAAHPEAUtagCREATESTRUCTW@@@Z
; protected: int __cdecl CRMCComboBox::OnCreate(struct tagCREATESTRUCTW * __ptr64) __ptr64
?OnCreate@CRMCComboBox@@IEAAHPEAUtagCREATESTRUCTW@@@Z
; protected: int __cdecl CRMCListBox::OnCreate(struct tagCREATESTRUCTW * __ptr64) __ptr64
?OnCreate@CRMCListBox@@IEAAHPEAUtagCREATESTRUCTW@@@Z
; protected: struct HBRUSH__ * __ptr64 __cdecl CIISWizardPage::OnCtlColor(class CDC * __ptr64,class CWnd * __ptr64,unsigned int) __ptr64
?OnCtlColor@CIISWizardPage@@IEAAPEAUHBRUSH__@@PEAVCDC@@PEAVCWnd@@I@Z
; protected: void __cdecl CEmphasizedDialog::OnDestroy(void) __ptr64
?OnDestroy@CEmphasizedDialog@@IEAAXXZ
; protected: void __cdecl CHeaderListBox::OnDestroy(void) __ptr64
?OnDestroy@CHeaderListBox@@IEAAXXZ
; protected: void __cdecl CIISWizardSheet::OnDestroy(void) __ptr64
?OnDestroy@CIISWizardSheet@@IEAAXXZ
; protected: void __cdecl CRMCListBoxHeader::OnDestroy(void) __ptr64
?OnDestroy@CRMCListBoxHeader@@IEAAXXZ
; protected: int __cdecl CIISWizardPage::OnEraseBkgnd(class CDC * __ptr64) __ptr64
?OnEraseBkgnd@CIISWizardPage@@IEAAHPEAVCDC@@@Z
; protected: void __cdecl CRMCListBoxHeader::OnHeaderEndTrack(unsigned int,struct tagNMHDR * __ptr64,__int64 * __ptr64) __ptr64
?OnHeaderEndTrack@CRMCListBoxHeader@@IEAAXIPEAUtagNMHDR@@PEA_J@Z
; protected: void __cdecl CRMCListBoxHeader::OnHeaderItemChanged(unsigned int,struct tagNMHDR * __ptr64,__int64 * __ptr64) __ptr64
?OnHeaderItemChanged@CRMCListBoxHeader@@IEAAXIPEAUtagNMHDR@@PEA_J@Z
; protected: void __cdecl CRMCListBoxHeader::OnHeaderItemClick(unsigned int,struct tagNMHDR * __ptr64,__int64 * __ptr64) __ptr64
?OnHeaderItemClick@CRMCListBoxHeader@@IEAAXIPEAUtagNMHDR@@PEA_J@Z
; protected: void __cdecl CInheritanceDlg::OnHelp(void) __ptr64
?OnHelp@CInheritanceDlg@@IEAAXXZ
; protected: virtual int __cdecl CEmphasizedDialog::OnInitDialog(void) __ptr64
?OnInitDialog@CEmphasizedDialog@@MEAAHXZ
; protected: virtual int __cdecl CIISWizardBookEnd::OnInitDialog(void) __ptr64
?OnInitDialog@CIISWizardBookEnd@@MEAAHXZ
; protected: virtual int __cdecl CIISWizardPage::OnInitDialog(void) __ptr64
?OnInitDialog@CIISWizardPage@@MEAAHXZ
; protected: virtual int __cdecl CIISWizardSheet::OnInitDialog(void) __ptr64
?OnInitDialog@CIISWizardSheet@@MEAAHXZ
; protected: virtual int __cdecl CInheritanceDlg::OnInitDialog(void) __ptr64
?OnInitDialog@CInheritanceDlg@@MEAAHXZ
; protected: virtual void __cdecl CInheritanceDlg::OnOK(void) __ptr64
?OnOK@CInheritanceDlg@@MEAAXXZ
; public: virtual int __cdecl CIISWizardBookEnd::OnSetActive(void) __ptr64
?OnSetActive@CIISWizardBookEnd@@UEAAHXZ
; protected: void __cdecl CRMCListBoxHeader::OnSetFocus(class CWnd * __ptr64) __ptr64
?OnSetFocus@CRMCListBoxHeader@@IEAAXPEAVCWnd@@@Z
; public: long __cdecl CMetaKey::Open(unsigned long,unsigned short const * __ptr64,unsigned long) __ptr64
?Open@CMetaKey@@QEAAJKPEBGK@Z
; protected: long __cdecl CMetaInterface::OpenKey(unsigned long,unsigned short const * __ptr64,unsigned long,unsigned long * __ptr64) __ptr64
?OpenKey@CMetaInterface@@IEAAJKPEBGKPEAK@Z
; public: int __cdecl CIPAccessDescriptor::OrderByAddress(class CObjectPlus const * __ptr64)const  __ptr64
?OrderByAddress@CIPAccessDescriptor@@QEBAHPEBVCObjectPlus@@@Z
; int __cdecl PCToUnixText(unsigned short * __ptr64 & __ptr64,class CString)
?PCToUnixText@@YAHAEAPEAGVCString@@@Z
; int __cdecl PathIsValid(unsigned short const * __ptr64,int)
?PathIsValid@@YAHPEBGH@Z
; unsigned long __cdecl PopulateComboWithKnownIpAddresses(unsigned short const * __ptr64,class CComboBox & __ptr64,class CIPAddress & __ptr64,class CObListPlus & __ptr64,int & __ptr64)
?PopulateComboWithKnownIpAddresses@@YAKPEBGAEAVCComboBox@@AEAVCIPAddress@@AEAVCObListPlus@@AEAH@Z
; protected: void __cdecl CRMCListBoxResources::PrepareBitmaps(void) __ptr64
?PrepareBitmaps@CRMCListBoxResources@@IEAAXXZ
; protected: void __cdecl CGetComputer::ProcessSelectedObjects(struct IDataObject * __ptr64) __ptr64
?ProcessSelectedObjects@CGetComputer@@IEAAXPEAUIDataObject@@@Z
; protected: void __cdecl CGetUsers::ProcessSelectedObjects(struct IDataObject * __ptr64) __ptr64
?ProcessSelectedObjects@CGetUsers@@IEAAXPEAUIDataObject@@@Z
; public: unsigned long __cdecl CAccessEntry::QueryAccessMask(void)const  __ptr64
?QueryAccessMask@CAccessEntry@@QEBAKXZ
; public: unsigned long __cdecl CObjHelper::QueryAge(void)const  __ptr64
?QueryAge@CObjHelper@@QEBAKXZ
; public: long __cdecl CObjHelper::QueryApiErr(void)const  __ptr64
?QueryApiErr@CObjHelper@@QEBAJXZ
; public: unsigned long __cdecl CIISApplication::QueryAppState(void)const  __ptr64
?QueryAppState@CIISApplication@@QEBAKXZ
; public: class CComAuthInfo * __ptr64 __cdecl CIISInterface::QueryAuthInfo(void) __ptr64
?QueryAuthInfo@CIISInterface@@QEAAPEAVCComAuthInfo@@XZ
; protected: long __cdecl CIISWizardPage::QueryBitmapHeight(void)const  __ptr64
?QueryBitmapHeight@CIISWizardPage@@IEBAJXZ
; public: long __cdecl CIISWizardSheet::QueryBitmapHeight(int)const  __ptr64
?QueryBitmapHeight@CIISWizardSheet@@QEBAJH@Z
; protected: long __cdecl CIISWizardPage::QueryBitmapWidth(void)const  __ptr64
?QueryBitmapWidth@CIISWizardPage@@IEBAJXZ
; public: long __cdecl CIISWizardSheet::QueryBitmapWidth(int)const  __ptr64
?QueryBitmapWidth@CIISWizardSheet@@QEBAJH@Z
; public: int __cdecl CHeaderListBox::QueryColumnWidth(int)const  __ptr64
?QueryColumnWidth@CHeaderListBox@@QEBAHH@Z
; public: unsigned long __cdecl CObjHelper::QueryCreationTime(void)const  __ptr64
?QueryCreationTime@CObjHelper@@QEBAKXZ
; public: static unsigned short const * __ptr64 __cdecl CINumber::QueryCurrency(void)
?QueryCurrency@CINumber@@SAPEBGXZ
; public: static unsigned short const * __ptr64 __cdecl CINumber::QueryDecimalPoint(void)
?QueryDecimalPoint@CINumber@@SAPEBGXZ
; public: unsigned short const * __ptr64 __cdecl CIPAccessDescriptor::QueryDomainName(void)const  __ptr64
?QueryDomainName@CIPAccessDescriptor@@QEBAPEBGXZ
; public: long __cdecl CObjHelper::QueryError(void)const  __ptr64
?QueryError@CObjHelper@@QEBAJXZ
; public: unsigned long __cdecl CMetaKey::QueryFlags(void)const  __ptr64
?QueryFlags@CMetaKey@@QEBAKXZ
; public: unsigned long __cdecl CIPAddress::QueryHostOrderIPAddress(void)const  __ptr64
?QueryHostOrderIPAddress@CIPAddress@@QEBAKXZ
; public: class CIPAddress  __cdecl CIPAccessDescriptor::QueryIPAddress(void)const  __ptr64
?QueryIPAddress@CIPAccessDescriptor@@QEBA?AVCIPAddress@@XZ
; public: unsigned long __cdecl CIPAccessDescriptor::QueryIPAddress(int)const  __ptr64
?QueryIPAddress@CIPAccessDescriptor@@QEBAKH@Z
; public: unsigned long __cdecl CIPAddress::QueryIPAddress(int)const  __ptr64
?QueryIPAddress@CIPAddress@@QEBAKH@Z
; public: unsigned short const * __ptr64 __cdecl CIPAddress::QueryIPAddress(class ATL::CComBSTR & __ptr64)const  __ptr64
?QueryIPAddress@CIPAddress@@QEBAPEBGAEAVCComBSTR@ATL@@@Z
; public: unsigned short const * __ptr64 __cdecl CIPAddress::QueryIPAddress(class CString & __ptr64)const  __ptr64
?QueryIPAddress@CIPAddress@@QEBAPEBGAEAVCString@@@Z
; public: unsigned short const * __ptr64 __cdecl CMetaKey::QueryMetaPath(void)const  __ptr64
?QueryMetaPath@CMetaKey@@QEBAPEBGXZ
; public: unsigned short const * __ptr64 __cdecl CMetabasePath::QueryMetaPath(void)const  __ptr64
?QueryMetaPath@CMetabasePath@@QEBAPEBGXZ
; public: unsigned long __cdecl CIPAddress::QueryNetworkOrderIPAddress(void)const  __ptr64
?QueryNetworkOrderIPAddress@CIPAddress@@QEBAKXZ
; public: int __cdecl CHeaderListBox::QueryNumColumns(void)const  __ptr64
?QueryNumColumns@CHeaderListBox@@QEBAHXZ
; public: int __cdecl CRMCListBoxHeader::QueryNumColumns(void)const  __ptr64
?QueryNumColumns@CRMCListBoxHeader@@QEBAHXZ
; public: unsigned short * __ptr64 __cdecl CComAuthInfo::QueryPassword(void)const  __ptr64
?QueryPassword@CComAuthInfo@@QEBAPEAGXZ
; public: int __cdecl CAccessEntry::QueryPictureID(void)const  __ptr64
?QueryPictureID@CAccessEntry@@QEBAHXZ
; public: unsigned long __cdecl CIISAppPool::QueryPoolState(void)const  __ptr64
?QueryPoolState@CIISAppPool@@QEBAKXZ
; public: struct __POSITION * __ptr64 __cdecl CObListIter::QueryPosition(void)const  __ptr64
?QueryPosition@CObListIter@@QEBAPEAU__POSITION@@XZ
; public: virtual long __cdecl CIISAppPool::QueryResult(void)const  __ptr64
?QueryResult@CIISAppPool@@UEBAJXZ
; public: virtual long __cdecl CIISApplication::QueryResult(void)const  __ptr64
?QueryResult@CIISApplication@@UEBAJXZ
; public: virtual long __cdecl CIISInterface::QueryResult(void)const  __ptr64
?QueryResult@CIISInterface@@UEBAJXZ
; public: virtual long __cdecl CMetaBack::QueryResult(void)const  __ptr64
?QueryResult@CMetaBack@@UEBAJXZ
; public: virtual long __cdecl CMetaKey::QueryResult(void)const  __ptr64
?QueryResult@CMetaKey@@UEBAJXZ
; public: unsigned short * __ptr64 __cdecl CComAuthInfo::QueryServerName(void)const  __ptr64
?QueryServerName@CComAuthInfo@@QEBAPEAGXZ
; public: unsigned short const * __ptr64 __cdecl CIISInterface::QueryServerName(void)const  __ptr64
?QueryServerName@CIISInterface@@QEBAPEBGXZ
; public: class CIPAddress  __cdecl CIPAccessDescriptor::QuerySubnetMask(void)const  __ptr64
?QuerySubnetMask@CIPAccessDescriptor@@QEBA?AVCIPAddress@@XZ
; public: unsigned long __cdecl CIPAccessDescriptor::QuerySubnetMask(int)const  __ptr64
?QuerySubnetMask@CIPAccessDescriptor@@QEBAKH@Z
; public: static unsigned short const * __ptr64 __cdecl CINumber::QueryThousandSeparator(void)
?QueryThousandSeparator@CINumber@@SAPEBGXZ
; public: unsigned short const * __ptr64 __cdecl CAccessEntry::QueryUserName(void)const  __ptr64
?QueryUserName@CAccessEntry@@QEBAPEBGXZ
; public: unsigned short * __ptr64 __cdecl CComAuthInfo::QueryUserName(void)const  __ptr64
?QueryUserName@CComAuthInfo@@QEBAPEAGXZ
; public: long __cdecl CMetaKey::QueryValue(unsigned long,int & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAHPEAHPEBGPEAK@Z
; public: long __cdecl CMetaKey::QueryValue(unsigned long,unsigned long & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAKPEAHPEBGPEAK@Z
; public: long __cdecl CMetaKey::QueryValue(unsigned long,class CBlob & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAVCBlob@@PEAHPEBGPEAK@Z
; public: long __cdecl CMetaKey::QueryValue(unsigned long,class ATL::CComBSTR & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAVCComBSTR@ATL@@PEAHPEBGPEAK@Z
; public: long __cdecl CMetaKey::QueryValue(unsigned long,class CStrPassword & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAVCStrPassword@@PEAHPEBGPEAK@Z
; public: long __cdecl CMetaKey::QueryValue(unsigned long,class CString & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAVCString@@PEAHPEBGPEAK@Z
; public: long __cdecl CMetaKey::QueryValue(unsigned long,class CStringListEx & __ptr64,int * __ptr64,unsigned short const * __ptr64,unsigned long * __ptr64) __ptr64
?QueryValue@CMetaKey@@QEAAJKAEAVCStringListEx@@PEAHPEBGPEAK@Z
; public: unsigned short const * __ptr64 __cdecl CIISAppPool::QueryWamPath(void)const  __ptr64
?QueryWamPath@CIISAppPool@@QEBAPEBGXZ
; public: unsigned short const * __ptr64 __cdecl CIISApplication::QueryWamPath(void)const  __ptr64
?QueryWamPath@CIISApplication@@QEBAPEBGXZ
; protected: unsigned long __cdecl CIISWizardPage::QueryWindowColor(void)const  __ptr64
?QueryWindowColor@CIISWizardPage@@IEBAKXZ
; public: unsigned long __cdecl CIISWizardSheet::QueryWindowColor(void)const  __ptr64
?QueryWindowColor@CIISWizardSheet@@QEBAKXZ
; protected: unsigned long __cdecl CIISWizardPage::QueryWindowTextColor(void)const  __ptr64
?QueryWindowTextColor@CIISWizardPage@@IEBAKXZ
; public: unsigned long __cdecl CIISWizardSheet::QueryWindowTextColor(void)const  __ptr64
?QueryWindowTextColor@CIISWizardSheet@@QEBAKXZ
; public: long __cdecl CMetaKey::ReOpen(unsigned long) __ptr64
?ReOpen@CMetaKey@@QEAAJK@Z
; public: long __cdecl CMetaKey::ReOpen(void) __ptr64
?ReOpen@CMetaKey@@QEAAJXZ
; public: long __cdecl CIISSvcControl::Reboot(unsigned long,int) __ptr64
?Reboot@CIISSvcControl@@QEAAJKH@Z
; public: long __cdecl CIISApplication::Recover(int) __ptr64
?Recover@CIISApplication@@QEAAJH@Z
; public: long __cdecl CIISAppPool::Recycle(unsigned short const * __ptr64) __ptr64
?Recycle@CIISAppPool@@QEAAJPEBG@Z
; protected: long __cdecl CWamInterface::RecycleApplicationPool(unsigned short const * __ptr64) __ptr64
?RecycleApplicationPool@CWamInterface@@IEAAJPEBG@Z
; public: long __cdecl CIISApplication::RefreshAppState(void) __ptr64
?RefreshAppState@CIISApplication@@QEAAJXZ
; public: long __cdecl CIISAppPool::RefreshState(void) __ptr64
?RefreshState@CIISAppPool@@QEAAJXZ
; public: long __cdecl CMetaInterface::Regenerate(void) __ptr64
?Regenerate@CMetaInterface@@QEAAJXZ
; public: static void __cdecl CError::RegisterFacility(unsigned long,char const * __ptr64)
?RegisterFacility@CError@@SAXKPEBD@Z
; public: int __cdecl CObListPlus::Remove(class CObject * __ptr64) __ptr64
?Remove@CObListPlus@@QEAAHPEAVCObject@@@Z
; public: void __cdecl CObListPlus::RemoveAll(void) __ptr64
?RemoveAll@CObListPlus@@QEAAXXZ
; public: void __cdecl CError::RemoveAllOverrides(void) __ptr64
?RemoveAllOverrides@CError@@QEAAXXZ
; public: void __cdecl CODLBox::RemoveAllTabs(void) __ptr64
?RemoveAllTabs@CODLBox@@QEAAXXZ
; public: void __cdecl CObListPlus::RemoveAt(struct __POSITION * __ptr64 & __ptr64) __ptr64
?RemoveAt@CObListPlus@@QEAAXAEAPEAU__POSITION@@@Z
; public: void __cdecl CComAuthInfo::RemoveImpersonation(void) __ptr64
?RemoveImpersonation@CComAuthInfo@@QEAAXXZ
; public: int __cdecl CObListPlus::RemoveIndex(int) __ptr64
?RemoveIndex@CObListPlus@@QEAAHH@Z
; public: void __cdecl CError::RemoveOverride(long) __ptr64
?RemoveOverride@CError@@QEAAXJ@Z
; public: void __cdecl CAccessEntry::RemovePermissions(unsigned long) __ptr64
?RemovePermissions@CAccessEntry@@QEAAXK@Z
; public: void __cdecl CODLBox::RemoveTab(int,int) __ptr64
?RemoveTab@CODLBox@@QEAAXHH@Z
; protected: long __cdecl CMetaInterface::RenameKey(unsigned long,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?RenameKey@CMetaInterface@@IEAAJKPEBG0@Z
; public: long __cdecl CMetaKey::RenameKey(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?RenameKey@CMetaKey@@QEAAJPEBG0@Z
; unsigned long __cdecl ReplaceStringInString(class CString & __ptr64,class CString & __ptr64,class CString & __ptr64,int)
?ReplaceStringInString@@YAKAEAVCString@@00H@Z
; public: void __cdecl CObjHelper::ReportError(long) __ptr64
?ReportError@CObjHelper@@QEAAXJ@Z
; public: void __cdecl CError::Reset(void) __ptr64
?Reset@CError@@QEAAXXZ
; public: void __cdecl CMetaBack::Reset(void) __ptr64
?Reset@CMetaBack@@QEAAXXZ
; public: void __cdecl CMetaEnumerator::Reset(void) __ptr64
?Reset@CMetaEnumerator@@QEAAXXZ
; public: void __cdecl CObListIter::Reset(void) __ptr64
?Reset@CObListIter@@QEAAXXZ
; public: void __cdecl CObjHelper::ResetErrors(void) __ptr64
?ResetErrors@CObjHelper@@QEAAXXZ
; public: int __cdecl CAccessEntry::ResolveSID(void) __ptr64
?ResolveSID@CAccessEntry@@QEAAHXZ
; public: void __cdecl CRMCListBoxHeader::RespondToColumnWidthChanges(int) __ptr64
?RespondToColumnWidthChanges@CRMCListBoxHeader@@QEAAXH@Z
; public: long __cdecl CMetaBack::Restore(unsigned short const * __ptr64,unsigned long) __ptr64
?Restore@CMetaBack@@QEAAJPEBGK@Z
; protected: long __cdecl CMetaInterface::Restore(unsigned short const * __ptr64,unsigned long,unsigned long) __ptr64
?Restore@CMetaInterface@@IEAAJPEBGKK@Z
; protected: long __cdecl CMetaInterface::RestoreHistory(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long) __ptr64
?RestoreHistory@CMetaInterface@@IEAAJPEBGKKK@Z
; public: long __cdecl CMetaBack::RestoreHistoryBackup(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long) __ptr64
?RestoreHistoryBackup@CMetaBack@@QEAAJPEBGKKK@Z
; public: long __cdecl CMetaBack::RestoreWithPassword(unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64) __ptr64
?RestoreWithPassword@CMetaBack@@QEAAJPEBGK0@Z
; protected: long __cdecl CMetaInterface::RestoreWithPassword(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned short const * __ptr64) __ptr64
?RestoreWithPassword@CMetaInterface@@IEAAJPEBGKK0@Z
; public: long __cdecl CMetaInterface::SaveData(void) __ptr64
?SaveData@CMetaInterface@@QEAAJXZ
; public: int __cdecl CRMCListBox::SelectItem(void * __ptr64) __ptr64
?SelectItem@CRMCListBox@@QEAAHPEAX@Z
; public: int __cdecl CObListPlus::SetAll(int) __ptr64
?SetAll@CObListPlus@@QEAAHH@Z
; public: long __cdecl CObjHelper::SetApiErr(long) __ptr64
?SetApiErr@CObjHelper@@QEAAJJ@Z
; public: int __cdecl CHeaderListBox::SetColumnWidth(int,int) __ptr64
?SetColumnWidth@CHeaderListBox@@QEAAHHH@Z
; public: void __cdecl CRMCListBoxHeader::SetColumnWidth(int,int) __ptr64
?SetColumnWidth@CRMCListBoxHeader@@QEAAXHH@Z
; protected: void __cdecl CComAuthInfo::SetComputerNameW(unsigned short const * __ptr64) __ptr64
?SetComputerNameW@CComAuthInfo@@IEAAXPEBG@Z
; public: int __cdecl CRMCListBox::SetCurSel(int) __ptr64
?SetCurSel@CRMCListBox@@QEAAHH@Z
; protected: long __cdecl CMetaInterface::SetData(unsigned long,unsigned short const * __ptr64,struct _METADATA_RECORD * __ptr64) __ptr64
?SetData@CMetaInterface@@IEAAJKPEBGPEAU_METADATA_RECORD@@@Z
; public: void __cdecl CObjHelper::SetDirty(int) __ptr64
?SetDirty@CObjHelper@@QEAAXH@Z
; protected: int __cdecl CHeaderListBox::SetHeaderItem(int,struct _HD_ITEMW * __ptr64) __ptr64
?SetHeaderItem@CHeaderListBox@@IEAAHHPEAU_HD_ITEMW@@@Z
; public: void __cdecl CComAuthInfo::SetImpersonation(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?SetImpersonation@CComAuthInfo@@QEAAXPEBG0@Z
; public: int __cdecl CRMCListBoxHeader::SetItem(int,struct _HD_ITEMW * __ptr64) __ptr64
?SetItem@CRMCListBoxHeader@@QEAAHHPEAU_HD_ITEMW@@@Z
; protected: long __cdecl CMetaInterface::SetLastChangeTime(unsigned long,unsigned short const * __ptr64,struct _FILETIME * __ptr64,int) __ptr64
?SetLastChangeTime@CMetaInterface@@IEAAJKPEBGPEAU_FILETIME@@H@Z
; public: void __cdecl CError::SetLastWinError(void)const  __ptr64
?SetLastWinError@CError@@QEBAXXZ
; public: int __cdecl CObListPlus::SetOwnership(int) __ptr64
?SetOwnership@CObListPlus@@QEAAHH@Z
; public: void __cdecl CObListIter::SetPosition(struct __POSITION * __ptr64) __ptr64
?SetPosition@CObListIter@@QEAAXPEAU__POSITION@@@Z
; protected: long __cdecl CMetaKey::SetPropertyValue(unsigned long,unsigned long,void * __ptr64,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetPropertyValue@CMetaKey@@IEAAJKKPEAXPEAHPEBG@Z
; public: void __cdecl CConfirmDlg::SetReference(class CString & __ptr64) __ptr64
?SetReference@CConfirmDlg@@QEAAXAEAVCString@@@Z
; public: void __cdecl CODLBox::SetTab(int,unsigned int) __ptr64
?SetTab@CODLBox@@QEAAXHI@Z
; protected: void __cdecl CRMCListBoxHeader::SetTabsFromHeader(void) __ptr64
?SetTabsFromHeader@CRMCListBoxHeader@@IEAAXXZ
; public: void __cdecl CBlob::SetValue(unsigned long,unsigned char * __ptr64,int) __ptr64
?SetValue@CBlob@@QEAAXKPEAEH@Z
; public: long __cdecl CMetaKey::SetValue(unsigned long,class CBlob & __ptr64,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetValue@CMetaKey@@QEAAJKAEAVCBlob@@PEAHPEBG@Z
; public: long __cdecl CMetaKey::SetValue(unsigned long,class CStrPassword & __ptr64,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetValue@CMetaKey@@QEAAJKAEAVCStrPassword@@PEAHPEBG@Z
; public: long __cdecl CMetaKey::SetValue(unsigned long,class CString & __ptr64,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetValue@CMetaKey@@QEAAJKAEAVCString@@PEAHPEBG@Z
; public: long __cdecl CMetaKey::SetValue(unsigned long,class CStringListEx & __ptr64,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetValue@CMetaKey@@QEAAJKAEAVCStringListEx@@PEAHPEBG@Z
; public: long __cdecl CMetaKey::SetValue(unsigned long,int,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetValue@CMetaKey@@QEAAJKHPEAHPEBG@Z
; public: long __cdecl CMetaKey::SetValue(unsigned long,unsigned long,int * __ptr64,unsigned short const * __ptr64) __ptr64
?SetValue@CMetaKey@@QEAAJKKPEAHPEBG@Z
; public: void __cdecl CIPAccessDescriptor::SetValues(int,unsigned long,unsigned long,int) __ptr64
?SetValues@CIPAccessDescriptor@@QEAAXHKKH@Z
; public: void __cdecl CIPAccessDescriptor::SetValues(int,unsigned short const * __ptr64) __ptr64
?SetValues@CIPAccessDescriptor@@QEAAXHPEBG@Z
; protected: int __cdecl CHeaderListBox::SetWidthsFromReg(void) __ptr64
?SetWidthsFromReg@CHeaderListBox@@IEAAHXZ
; protected: void __cdecl CIISWizardPage::SetWizardButtons(unsigned long) __ptr64
?SetWizardButtons@CIISWizardPage@@IEAAXK@Z
; public: void __cdecl CIPAddress::SetZeroValue(void) __ptr64
?SetZeroValue@CIPAddress@@QEAAXXZ
; public: int __cdecl CHeaderListBox::ShowWindow(int) __ptr64
?ShowWindow@CHeaderListBox@@QEAAHH@Z
; public: unsigned long __cdecl CObListPlus::Sort(int (__cdecl CObjectPlus::*)(class CObjectPlus const * __ptr64)const  __ptr64) __ptr64
?Sort@CObListPlus@@QEAAKP8CObjectPlus@@EBAHPEBV2@@Z@Z
; protected: static int __cdecl CObListPlus::SortHelper(void const * __ptr64,void const * __ptr64)
?SortHelper@CObListPlus@@KAHPEBX0@Z
; public: static void __cdecl CMetabasePath::SplitMetaPathAtInstance(unsigned short const * __ptr64,class CString & __ptr64,class CString & __ptr64)
?SplitMetaPathAtInstance@CMetabasePath@@SAXPEBGAEAVCString@@1@Z
; public: static int __cdecl CComAuthInfo::SplitUserNameAndDomain(class CString & __ptr64,class CString & __ptr64)
?SplitUserNameAndDomain@CComAuthInfo@@SAHAEAVCString@@0@Z
; public: long __cdecl CIISSvcControl::Start(unsigned long) __ptr64
?Start@CIISSvcControl@@QEAAJK@Z
; public: long __cdecl CIISSvcControl::Status(unsigned long,unsigned char * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?Status@CIISSvcControl@@QEAAJKPEAEPEAK1@Z
; public: long __cdecl CIISSvcControl::Stop(unsigned long,int) __ptr64
?Stop@CIISSvcControl@@QEAAJKH@Z
; public: void __cdecl CComAuthInfo::StorePassword(unsigned short const * __ptr64) __ptr64
?StorePassword@CComAuthInfo@@QEAAXPEBG@Z
; public: static unsigned long __cdecl CIPAddress::StringToLong(class ATL::CComBSTR const & __ptr64)
?StringToLong@CIPAddress@@SAKAEBVCComBSTR@ATL@@@Z
; public: static unsigned long __cdecl CIPAddress::StringToLong(class CString const & __ptr64)
?StringToLong@CIPAddress@@SAKAEBVCString@@@Z
; public: static unsigned long __cdecl CIPAddress::StringToLong(unsigned short const * __ptr64,int)
?StringToLong@CIPAddress@@SAKPEBGH@Z
; public: int __cdecl CError::Succeeded(void)const  __ptr64
?Succeeded@CError@@QEBAHXZ
; public: static int __cdecl CError::Succeeded(long)
?Succeeded@CError@@SAHJ@Z
; public: virtual int __cdecl CIISAppPool::Succeeded(void)const  __ptr64
?Succeeded@CIISAppPool@@UEBAHXZ
; public: virtual int __cdecl CIISApplication::Succeeded(void)const  __ptr64
?Succeeded@CIISApplication@@UEBAHXZ
; public: virtual int __cdecl CIISInterface::Succeeded(void)const  __ptr64
?Succeeded@CIISInterface@@UEBAHXZ
; public: virtual int __cdecl CMetaBack::Succeeded(void)const  __ptr64
?Succeeded@CMetaBack@@UEBAHXZ
; public: virtual int __cdecl CMetaKey::Succeeded(void)const  __ptr64
?Succeeded@CMetaKey@@UEBAHXZ
; public: int __cdecl CWamInterface::SupportsPooledProc(void)const  __ptr64
?SupportsPooledProc@CWamInterface@@QEBAHXZ
; int __cdecl SupportsSecurityACLs(unsigned short const * __ptr64)
?SupportsSecurityACLs@@YAHPEBG@Z
; public: void __cdecl CRMCListBoxResources::SysColorChanged(void) __ptr64
?SysColorChanged@CRMCListBoxResources@@QEAAXXZ
; public: long __cdecl CError::TextFromHRESULT(class CString & __ptr64)const  __ptr64
?TextFromHRESULT@CError@@QEBAJAEAVCString@@@Z
; public: long __cdecl CError::TextFromHRESULT(unsigned short * __ptr64,unsigned long)const  __ptr64
?TextFromHRESULT@CError@@QEBAJPEAGK@Z
; public: unsigned short const * __ptr64 __cdecl CError::TextFromHRESULTExpand(class CString & __ptr64)const  __ptr64
?TextFromHRESULTExpand@CError@@QEBAPEBGAEAVCString@@@Z
; public: unsigned short const * __ptr64 __cdecl CError::TextFromHRESULTExpand(unsigned short * __ptr64,unsigned long,long * __ptr64)const  __ptr64
?TextFromHRESULTExpand@CError@@QEBAPEBGPEAGKPEAJ@Z
; public: int __cdecl CODLBox::TextHeight(void)const  __ptr64
?TextHeight@CODLBox@@QEBAHXZ
; public: static unsigned short const * __ptr64 __cdecl CMetabasePath::TruncatePath(int,unsigned short const * __ptr64,class CString & __ptr64,class CString * __ptr64)
?TruncatePath@CMetabasePath@@SAPEBGHPEBGAEAVCString@@PEAV2@@Z
; int __cdecl UnixToPCText(class CString & __ptr64,unsigned short const * __ptr64)
?UnixToPCText@@YAHAEAVCString@@PEBG@Z
; public: long __cdecl CIISApplication::Unload(int) __ptr64
?Unload@CIISApplication@@QEAAJH@Z
; protected: void __cdecl CRMCListBoxResources::UnprepareBitmaps(void) __ptr64
?UnprepareBitmaps@CRMCListBoxResources@@IEAAXXZ
; public: static void __cdecl CError::UnregisterFacility(unsigned long)
?UnregisterFacility@CError@@SAXK@Z
; protected: int __cdecl CRMCListBoxHeader::UseButtons(void)const  __ptr64
?UseButtons@CRMCListBoxHeader@@IEBAHXZ
; protected: int __cdecl CRMCListBoxHeader::UseStretch(void)const  __ptr64
?UseStretch@CRMCListBoxHeader@@IEBAHXZ
; public: static int __cdecl CINumber::UseSystemDefault(void)
?UseSystemDefault@CINumber@@SAHXZ
; public: static int __cdecl CINumber::UseUserDefault(void)
?UseUserDefault@CINumber@@SAHXZ
; public: int __cdecl CComAuthInfo::UsesImpersonation(void)const  __ptr64
?UsesImpersonation@CComAuthInfo@@QEBAHXZ
; public: int __cdecl CIISWizardPage::ValidateString(class CEdit & __ptr64,class CString & __ptr64,int,int) __ptr64
?ValidateString@CIISWizardPage@@QEAAHAEAVCEdit@@AEAVCString@@HH@Z
; int __cdecl VerifyState(void)
?VerifyState@@YAHXZ
; public: static unsigned long __cdecl CComAuthInfo::VerifyUserPassword(unsigned short const * __ptr64,unsigned short const * __ptr64)
?VerifyUserPassword@CComAuthInfo@@SAKPEBG0@Z
; public: unsigned long __cdecl CError::Win32Error(void)const  __ptr64
?Win32Error@CError@@QEBAKXZ
; public: static unsigned long __cdecl CError::Win32Error(long)
?Win32Error@CError@@SAKJ@Z
; protected: virtual void __cdecl CIISWizardSheet::WinHelpW(unsigned long,unsigned int) __ptr64
?WinHelpW@CIISWizardSheet@@MEAAXKI@Z
; public: long __cdecl CIISApplication::WriteFriendlyName(unsigned short const * __ptr64) __ptr64
?WriteFriendlyName@CIISApplication@@QEAAJPEBG@Z
; public: long __cdecl CIISApplication::WritePoolId(unsigned short const * __ptr64) __ptr64
?WritePoolId@CIISApplication@@QEAAJPEBG@Z
; protected: static struct CRuntimeClass * __ptr64 __cdecl CEmphasizedDialog::_GetBaseClass(void)
?_GetBaseClass@CEmphasizedDialog@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CHeaderListBox::_GetBaseClass(void)
?_GetBaseClass@CHeaderListBox@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CIISWizardBookEnd::_GetBaseClass(void)
?_GetBaseClass@CIISWizardBookEnd@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CIISWizardPage::_GetBaseClass(void)
?_GetBaseClass@CIISWizardPage@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CIISWizardSheet::_GetBaseClass(void)
?_GetBaseClass@CIISWizardSheet@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CRMCComboBox::_GetBaseClass(void)
?_GetBaseClass@CRMCComboBox@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CRMCListBox::_GetBaseClass(void)
?_GetBaseClass@CRMCListBox@@KAPEAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __ptr64 __cdecl CRMCListBoxHeader::_GetBaseClass(void)
?_GetBaseClass@CRMCListBoxHeader@@KAPEAUCRuntimeClass@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CConfirmDlg::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CConfirmDlg@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CEmphasizedDialog::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CEmphasizedDialog@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CHeaderListBox::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CHeaderListBox@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CIISWizardBookEnd::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CIISWizardBookEnd@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CIISWizardPage::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CIISWizardPage@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CIISWizardSheet::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CIISWizardSheet@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CInheritanceDlg::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CInheritanceDlg@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CRMCComboBox::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CRMCComboBox@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CRMCListBox::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CRMCListBox@@KAPEBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __ptr64 __cdecl CRMCListBoxHeader::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CRMCListBoxHeader@@KAPEBUAFX_MSGMAP@@XZ
; protected: void __cdecl CODLBox::__DrawItem(struct tagDRAWITEMSTRUCT * __ptr64) __ptr64
?__DrawItem@CODLBox@@IEAAXPEAUtagDRAWITEMSTRUCT@@@Z
; public: virtual int __cdecl CRMCComboBox::__GetCount(void)const  __ptr64
?__GetCount@CRMCComboBox@@UEBAHXZ
; public: virtual int __cdecl CRMCListBox::__GetCount(void)const  __ptr64
?__GetCount@CRMCListBox@@UEBAHXZ
; protected: void __cdecl CODLBox::__MeasureItem(struct tagMEASUREITEMSTRUCT * __ptr64) __ptr64
?__MeasureItem@CODLBox@@IEAAXPEAUtagMEASUREITEMSTRUCT@@@Z
; public: virtual int __cdecl CRMCComboBox::__SetItemHeight(int,unsigned int) __ptr64
?__SetItemHeight@CRMCComboBox@@UEAAHHI@Z
; public: virtual int __cdecl CRMCListBox::__SetItemHeight(int,unsigned int) __ptr64
?__SetItemHeight@CRMCListBox@@UEAAHHI@Z
; protected: static unsigned short const  CMetabasePath::_chSep
?_chSep@CMetabasePath@@1GB
; protected: static unsigned short const * __ptr64 const  __ptr64 CMetabasePath::_cszMachine
?_cszMachine@CMetabasePath@@1QEBGEB
; protected: static unsigned short const * __ptr64 const  __ptr64 CMetabasePath::_cszRoot
?_cszRoot@CMetabasePath@@1QEBGEB
; protected: static unsigned short const * __ptr64 const  __ptr64 CMetabasePath::_cszSep
?_cszSep@CMetabasePath@@1QEBGEB
; private: static int  CINumber::_fAllocated
?_fAllocated@CINumber@@0HA DATA
; private: static int  CINumber::_fCurrencyPrefix
?_fCurrencyPrefix@CINumber@@0HA DATA
; private: static int  CINumber::_fInitialized
?_fInitialized@CINumber@@0HA DATA
; private: static struct AFX_MSGMAP_ENTRY const * const  CConfirmDlg::_messageEntries
?_messageEntries@CConfirmDlg@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CEmphasizedDialog::_messageEntries
?_messageEntries@CEmphasizedDialog@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CHeaderListBox::_messageEntries
?_messageEntries@CHeaderListBox@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CIISWizardBookEnd::_messageEntries
?_messageEntries@CIISWizardBookEnd@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CIISWizardPage::_messageEntries
?_messageEntries@CIISWizardPage@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CIISWizardSheet::_messageEntries
?_messageEntries@CIISWizardSheet@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CInheritanceDlg::_messageEntries
?_messageEntries@CInheritanceDlg@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CRMCComboBox::_messageEntries
?_messageEntries@CRMCComboBox@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CRMCListBox::_messageEntries
?_messageEntries@CRMCListBox@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CRMCListBoxHeader::_messageEntries
?_messageEntries@CRMCListBoxHeader@@0QBUAFX_MSGMAP_ENTRY@@B
; protected: static class CString * __ptr64  __ptr64 CINumber::_pstr
?_pstr@CINumber@@1PEAVCString@@EA DATA
; public: static class CString * __ptr64  __ptr64 CINumber::_pstrBadNumber
?_pstrBadNumber@CINumber@@2PEAVCString@@EA DATA
; private: static class CString * __ptr64  __ptr64 CINumber::_pstrCurrency
?_pstrCurrency@CINumber@@0PEAVCString@@EA DATA
; private: static class CString * __ptr64  __ptr64 CINumber::_pstrDecimalPoint
?_pstrDecimalPoint@CINumber@@0PEAVCString@@EA DATA
; private: static class CString * __ptr64  __ptr64 CINumber::_pstrThousandSeparator
?_pstrThousandSeparator@CINumber@@0PEAVCString@@EA DATA
; public: static struct CRuntimeClass const  CEmphasizedDialog::classCEmphasizedDialog
?classCEmphasizedDialog@CEmphasizedDialog@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CHeaderListBox::classCHeaderListBox
?classCHeaderListBox@CHeaderListBox@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CIISWizardBookEnd::classCIISWizardBookEnd
?classCIISWizardBookEnd@CIISWizardBookEnd@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CIISWizardPage::classCIISWizardPage
?classCIISWizardPage@CIISWizardPage@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CIISWizardSheet::classCIISWizardSheet
?classCIISWizardSheet@CIISWizardSheet@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CRMCComboBox::classCRMCComboBox
?classCRMCComboBox@CRMCComboBox@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CRMCListBox::classCRMCListBox
?classCRMCListBox@CRMCListBox@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CRMCListBoxHeader::classCRMCListBoxHeader
?classCRMCListBoxHeader@CRMCListBoxHeader@@2UCRuntimeClass@@B
; public: class CDC const & __ptr64 __cdecl CRMCListBoxResources::dcBitMap(void)const  __ptr64
?dcBitMap@CRMCListBoxResources@@QEBAAEBVCDC@@XZ
; unsigned short const * __ptr64 const  __ptr64 g_lpszDummyPassword
?g_lpszDummyPassword@@3PEBGEB DATA
; protected: static struct AFX_MSGMAP const  CConfirmDlg::messageMap
?messageMap@CConfirmDlg@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CEmphasizedDialog::messageMap
?messageMap@CEmphasizedDialog@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CHeaderListBox::messageMap
?messageMap@CHeaderListBox@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CIISWizardBookEnd::messageMap
?messageMap@CIISWizardBookEnd@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CIISWizardPage::messageMap
?messageMap@CIISWizardPage@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CIISWizardSheet::messageMap
?messageMap@CIISWizardSheet@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CInheritanceDlg::messageMap
?messageMap@CInheritanceDlg@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CRMCComboBox::messageMap
?messageMap@CRMCComboBox@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CRMCListBox::messageMap
?messageMap@CRMCListBox@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CRMCListBoxHeader::messageMap
?messageMap@CRMCListBoxHeader@@1UAFX_MSGMAP@@B
; protected: static int const  CMetaKey::s_MetaTableSize
?s_MetaTableSize@CMetaKey@@1HB
; protected: static unsigned long  CError::s_cdwFacilities
?s_cdwFacilities@CError@@1KA DATA
; protected: static long  CError::s_cdwMaxLMErr
?s_cdwMaxLMErr@CError@@1JA DATA
; protected: static long  CError::s_cdwMaxWSErr
?s_cdwMaxWSErr@CError@@1JA DATA
; protected: static long  CError::s_cdwMinLMErr
?s_cdwMinLMErr@CError@@1JA DATA
; protected: static long  CError::s_cdwMinWSErr
?s_cdwMinWSErr@CError@@1JA DATA
; protected: static unsigned short const  CError::s_chEscNumber
?s_chEscNumber@CError@@1GB
; protected: static unsigned short const  CError::s_chEscText
?s_chEscText@CError@@1GB
; protected: static unsigned short const  CError::s_chEscape
?s_chEscape@CError@@1GB
; protected: static int const  CIISWizardSheet::s_cnBoldDeltaFont
?s_cnBoldDeltaFont@CIISWizardSheet@@1HB
; protected: static int const  CIISWizardSheet::s_cnBoldDeltaHeight
?s_cnBoldDeltaHeight@CIISWizardSheet@@1HB
; protected: static int const  CIISWizardSheet::s_cnBoldDeltaWidth
?s_cnBoldDeltaWidth@CIISWizardSheet@@1HB
; protected: static int const  CIISWizardPage::s_cnHeaderOffset
?s_cnHeaderOffset@CIISWizardPage@@1HB
; protected: static unsigned short const * __ptr64 *  CError::s_cszFacility
?s_cszFacility@CError@@1PAPEBGA DATA
; protected: static unsigned short const * __ptr64 const  __ptr64 CError::s_cszLMDLL
?s_cszLMDLL@CError@@1PEBGEB DATA
; protected: static unsigned short const * __ptr64 const  __ptr64 CError::s_cszWSDLL
?s_cszWSDLL@CError@@1PEBGEB DATA
; protected: static int  CError::s_fAllocated
?s_fAllocated@CError@@1HA DATA
; protected: static class CMap<unsigned long,unsigned long & __ptr64,class CString,class CString & __ptr64> * __ptr64  __ptr64 CError::s_pmapFacilities
?s_pmapFacilities@CError@@1PEAV?$CMap@KAEAKVCString@@AEAV1@@@EA DATA
; protected: static class CString * __ptr64  __ptr64 CError::s_pstrDefError
?s_pstrDefError@CError@@1PEAVCString@@EA DATA
; protected: static class CString * __ptr64  __ptr64 CError::s_pstrDefSuccs
?s_pstrDefSuccs@CError@@1PEAVCString@@EA DATA
; protected: static struct CMetaKey::tagMDFIELDDEF const * const  CMetaKey::s_rgMetaTable
?s_rgMetaTable@CMetaKey@@1QBUtagMDFIELDDEF@1@B
; protected: static unsigned short const * __ptr64 const  __ptr64 CMetaBack::s_szMasterAppRoot
?s_szMasterAppRoot@CMetaBack@@1QEBGEB
DllRegisterServer
DllUnregisterServer
