; 
; Exports of file MSDATL3.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY MSDATL3.dll
EXPORTS
DllMain
; protected: __thiscall CBaseObj::CBaseObj(enum EBaseObjectType,long *)
??0CBaseObj@@IAE@W4EBaseObjectType@@PAJ@Z
; protected: __thiscall CBaseObj::CBaseObj(enum EBaseObjectType,struct IUnknown *,long *)
??0CBaseObj@@IAE@W4EBaseObjectType@@PAUIUnknown@@PAJ@Z
; public: __thiscall CBaseObj::CBaseObj(class CBaseObj const &)
??0CBaseObj@@QAE@ABV0@@Z
; public: __thiscall CBaseObjBoko::CBaseObjBoko(class CBaseObjBoko const &)
??0CBaseObjBoko@@QAE@ABV0@@Z
; public: __thiscall CBaseObjBoko::CBaseObjBoko(enum EBaseObjectType,long *)
??0CBaseObjBoko@@QAE@W4EBaseObjectType@@PAJ@Z
; public: __thiscall CBaseObjZombie::CBaseObjZombie(class CBaseObjZombie const &)
??0CBaseObjZombie@@QAE@ABV0@@Z
; public: __thiscall CBaseObjZombie::CBaseObjZombie(enum EBaseObjectType,long *)
??0CBaseObjZombie@@QAE@W4EBaseObjectType@@PAJ@Z
; public: __thiscall CBitArray::CBitArray(void)
??0CBitArray@@QAE@XZ
; private: __thiscall CClassFactory::CClassFactory(void)
??0CClassFactory@@AAE@XZ
; public: __thiscall CClassFactory::CClassFactory(class CClassFactory const &)
??0CClassFactory@@QAE@ABV0@@Z
; public: __thiscall CClassFactory::CClassFactory(long *,long *)
??0CClassFactory@@QAE@PAJ0@Z
; public: __thiscall CConnectData::CConnectData(void)
??0CConnectData@@QAE@XZ
; public: __thiscall CEnum::CEnum(struct IUnknown *,unsigned long,void * *,struct _GUID,unsigned int,unsigned long,enum CENUMTYPE)
??0CEnum@@QAE@PAUIUnknown@@KPAPAXU_GUID@@IKW4CENUMTYPE@@@Z
; public: __thiscall CEnumConnectionPoints::CEnumConnectionPoints(class CEnumConnectionPoints const &)
??0CEnumConnectionPoints@@QAE@ABV0@@Z
; public: __thiscall CEnumConnectionPoints::CEnumConnectionPoints(struct IUnknown *,unsigned long,struct IConnectionPoint * *)
??0CEnumConnectionPoints@@QAE@PAUIUnknown@@KPAPAUIConnectionPoint@@@Z
; public: __thiscall CEnumConnections::CEnumConnections(class CEnumConnections const &)
??0CEnumConnections@@QAE@ABV0@@Z
; public: __thiscall CEnumConnections::CEnumConnections(struct IUnknown *,struct tagCONNECTDATA *,unsigned long)
??0CEnumConnections@@QAE@PAUIUnknown@@PAUtagCONNECTDATA@@K@Z
; public: __thiscall CExtBuffer::CExtBuffer(void)
??0CExtBuffer@@QAE@XZ
; public: __thiscall CGenericPooler::CGenericPooler(class CGenericPooler const &)
??0CGenericPooler@@QAE@ABV0@@Z
; public: __thiscall CGenericPooler::CGenericPooler(void)
??0CGenericPooler@@QAE@XZ
; public: __thiscall CHashTbl::CHashTbl(class CHashTbl const &)
??0CHashTbl@@QAE@ABV0@@Z
; public: __thiscall CHashTbl::CHashTbl(void)
??0CHashTbl@@QAE@XZ
; public: __thiscall CHashTblAggr::CHashTblAggr(class CHashTblAggr const &)
??0CHashTblAggr@@QAE@ABV0@@Z
; public: __thiscall CHashTblAggr::CHashTblAggr(void)
??0CHashTblAggr@@QAE@XZ
; public: __thiscall CHeapDispenser::CHeapDispenser(class CHeapDispenser const &)
??0CHeapDispenser@@QAE@ABV0@@Z
; public: __thiscall CHeapDispenser::CHeapDispenser(void)
??0CHeapDispenser@@QAE@XZ
; public: __thiscall CRowsetConnectionPoint::CRowsetConnectionPoint(class CRowsetConnectionPoint const &)
??0CRowsetConnectionPoint@@QAE@ABV0@@Z
; public: __thiscall CRowsetConnectionPoint::CRowsetConnectionPoint(struct IUnknown *,struct _GUID const *,unsigned long)
??0CRowsetConnectionPoint@@QAE@PAUIUnknown@@PBU_GUID@@K@Z
; public: __thiscall CRowsetConnectionPointContainer::CRowsetConnectionPointContainer(class CRowsetConnectionPointContainer const &)
??0CRowsetConnectionPointContainer@@QAE@ABV0@@Z
; public: __thiscall CRowsetConnectionPointContainer::CRowsetConnectionPointContainer(struct IUnknown *)
??0CRowsetConnectionPointContainer@@QAE@PAUIUnknown@@@Z
; public: __thiscall CSlotListLong::CSlotListLong(class CSlotListLong const &)
??0CSlotListLong@@QAE@ABV0@@Z
; public: __thiscall CSlotListLong::CSlotListLong(void)
??0CSlotListLong@@QAE@XZ
; public: __thiscall CSlotListShort::CSlotListShort(class CSlotListShort const &)
??0CSlotListShort@@QAE@ABV0@@Z
; public: __thiscall CSlotListShort::CSlotListShort(void)
??0CSlotListShort@@QAE@XZ
; public: __thiscall CUtlPropInfo::CUtlPropInfo(class CUtlPropInfo const &)
??0CUtlPropInfo@@QAE@ABV0@@Z
; public: __thiscall CUtlPropInfo::CUtlPropInfo(void)
??0CUtlPropInfo@@QAE@XZ
; public: __thiscall CUtlProps2::CUtlProps2(class CUtlProps2 const &)
??0CUtlProps2@@QAE@ABV0@@Z
; public: __thiscall CUtlProps2::CUtlProps2(unsigned long)
??0CUtlProps2@@QAE@K@Z
; public: __thiscall CUtlPropsFastLookup2::CUtlPropsFastLookup2(class CUtlPropsFastLookup2 const &)
??0CUtlPropsFastLookup2@@QAE@ABV0@@Z
; public: __thiscall CUtlPropsFastLookup2::CUtlPropsFastLookup2(unsigned long)
??0CUtlPropsFastLookup2@@QAE@K@Z
; public: __thiscall CVLHeap::CVLHeap(void)
??0CVLHeap@@QAE@XZ
; public: __thiscall CWString::CWString(class CWString const &)
??0CWString@@QAE@ABV0@@Z
; public: __thiscall CWString::CWString(unsigned short,int)
??0CWString@@QAE@GH@Z
; public: __thiscall CWString::CWString(char const *)
??0CWString@@QAE@PBD@Z
; public: __thiscall CWString::CWString(unsigned char const *)
??0CWString@@QAE@PBE@Z
; public: __thiscall CWString::CWString(unsigned short const *)
??0CWString@@QAE@PBG@Z
; public: __thiscall CWString::CWString(unsigned short const *,int)
??0CWString@@QAE@PBGH@Z
; public: __thiscall CWString::CWString(void)
??0CWString@@QAE@XZ
; public: __thiscall IBookmarkObj::IBookmarkObj(class IBookmarkObj const &)
??0IBookmarkObj@@QAE@ABV0@@Z
; public: __thiscall IBookmarkObj::IBookmarkObj(void)
??0IBookmarkObj@@QAE@XZ
; public: __thiscall IHashTbl::IHashTbl(class IHashTbl const &)
??0IHashTbl@@QAE@ABV0@@Z
; public: __thiscall IHashTbl::IHashTbl(void)
??0IHashTbl@@QAE@XZ
; public: __thiscall ISlotList::ISlotList(class ISlotList const &)
??0ISlotList@@QAE@ABV0@@Z
; public: __thiscall ISlotList::ISlotList(void)
??0ISlotList@@QAE@XZ
; public: virtual __thiscall CBaseObj::~CBaseObj(void)
??1CBaseObj@@UAE@XZ
; public: virtual __thiscall CBaseObjBoko::~CBaseObjBoko(void)
??1CBaseObjBoko@@UAE@XZ
; public: virtual __thiscall CBaseObjZombie::~CBaseObjZombie(void)
??1CBaseObjZombie@@UAE@XZ
; public: __thiscall CBitArray::~CBitArray(void)
??1CBitArray@@QAE@XZ
; public: __thiscall CClassFactory::~CClassFactory(void)
??1CClassFactory@@QAE@XZ
; public: __thiscall CConnectData::~CConnectData(void)
??1CConnectData@@QAE@XZ
; public: __thiscall CEnum::~CEnum(void)
??1CEnum@@QAE@XZ
; public: __thiscall CEnumConnectionPoints::~CEnumConnectionPoints(void)
??1CEnumConnectionPoints@@QAE@XZ
; public: __thiscall CEnumConnections::~CEnumConnections(void)
??1CEnumConnections@@QAE@XZ
; public: __thiscall CExtBuffer::~CExtBuffer(void)
??1CExtBuffer@@QAE@XZ
; public: virtual __thiscall CHashTbl::~CHashTbl(void)
??1CHashTbl@@UAE@XZ
; public: virtual __thiscall CHashTblAggr::~CHashTblAggr(void)
??1CHashTblAggr@@UAE@XZ
; public: __thiscall CRowsetConnectionPoint::~CRowsetConnectionPoint(void)
??1CRowsetConnectionPoint@@QAE@XZ
; public: __thiscall CRowsetConnectionPointContainer::~CRowsetConnectionPointContainer(void)
??1CRowsetConnectionPointContainer@@QAE@XZ
; public: virtual __thiscall CSlotListLong::~CSlotListLong(void)
??1CSlotListLong@@UAE@XZ
; public: virtual __thiscall CSlotListShort::~CSlotListShort(void)
??1CSlotListShort@@UAE@XZ
; public: virtual __thiscall CUtlPropInfo::~CUtlPropInfo(void)
??1CUtlPropInfo@@UAE@XZ
; public: virtual __thiscall CUtlProps2::~CUtlProps2(void)
??1CUtlProps2@@UAE@XZ
; public: virtual __thiscall CUtlPropsFastLookup2::~CUtlPropsFastLookup2(void)
??1CUtlPropsFastLookup2@@UAE@XZ
; public: __thiscall CVLHeap::~CVLHeap(void)
??1CVLHeap@@QAE@XZ
; public: __thiscall CWString::~CWString(void)
??1CWString@@QAE@XZ
; public: virtual __thiscall IBookmarkObj::~IBookmarkObj(void)
??1IBookmarkObj@@UAE@XZ
; public: virtual __thiscall IHashTbl::~IHashTbl(void)
??1IHashTbl@@UAE@XZ
; public: virtual __thiscall ISlotList::~ISlotList(void)
??1ISlotList@@UAE@XZ
; public: class CBaseObj & __thiscall CBaseObj::operator=(class CBaseObj const &)
??4CBaseObj@@QAEAAV0@ABV0@@Z
; public: class CBaseObjBoko & __thiscall CBaseObjBoko::operator=(class CBaseObjBoko const &)
??4CBaseObjBoko@@QAEAAV0@ABV0@@Z
; public: class CBaseObjZombie & __thiscall CBaseObjZombie::operator=(class CBaseObjZombie const &)
??4CBaseObjZombie@@QAEAAV0@ABV0@@Z
; public: class CBitArray & __thiscall CBitArray::operator=(class CBitArray const &)
??4CBitArray@@QAEAAV0@ABV0@@Z
; public: class CClassFactory & __thiscall CClassFactory::operator=(class CClassFactory const &)
??4CClassFactory@@QAEAAV0@ABV0@@Z
; public: class CConnectData & __thiscall CConnectData::operator=(class CConnectData const &)
??4CConnectData@@QAEAAV0@ABV0@@Z
; public: class CEnum & __thiscall CEnum::operator=(class CEnum const &)
??4CEnum@@QAEAAV0@ABV0@@Z
; public: class CEnumConnectionPoints & __thiscall CEnumConnectionPoints::operator=(class CEnumConnectionPoints const &)
??4CEnumConnectionPoints@@QAEAAV0@ABV0@@Z
; public: class CEnumConnections & __thiscall CEnumConnections::operator=(class CEnumConnections const &)
??4CEnumConnections@@QAEAAV0@ABV0@@Z
; public: class CExtBuffer & __thiscall CExtBuffer::operator=(class CExtBuffer const &)
??4CExtBuffer@@QAEAAV0@ABV0@@Z
; public: class CGenericPooler & __thiscall CGenericPooler::operator=(class CGenericPooler const &)
??4CGenericPooler@@QAEAAV0@ABV0@@Z
; public: class CHashTbl & __thiscall CHashTbl::operator=(class CHashTbl const &)
??4CHashTbl@@QAEAAV0@ABV0@@Z
; public: class CHashTblAggr & __thiscall CHashTblAggr::operator=(class CHashTblAggr const &)
??4CHashTblAggr@@QAEAAV0@ABV0@@Z
; public: class CHeapDispenser & __thiscall CHeapDispenser::operator=(class CHeapDispenser const &)
??4CHeapDispenser@@QAEAAV0@ABV0@@Z
; public: class CRowsetConnectionPoint & __thiscall CRowsetConnectionPoint::operator=(class CRowsetConnectionPoint const &)
??4CRowsetConnectionPoint@@QAEAAV0@ABV0@@Z
; public: class CRowsetConnectionPointContainer & __thiscall CRowsetConnectionPointContainer::operator=(class CRowsetConnectionPointContainer const &)
??4CRowsetConnectionPointContainer@@QAEAAV0@ABV0@@Z
; public: class CSlotListLong & __thiscall CSlotListLong::operator=(class CSlotListLong const &)
??4CSlotListLong@@QAEAAV0@ABV0@@Z
; public: class CSlotListShort & __thiscall CSlotListShort::operator=(class CSlotListShort const &)
??4CSlotListShort@@QAEAAV0@ABV0@@Z
; public: class CUtlPropInfo & __thiscall CUtlPropInfo::operator=(class CUtlPropInfo const &)
??4CUtlPropInfo@@QAEAAV0@ABV0@@Z
; public: class CUtlProps2 & __thiscall CUtlProps2::operator=(class CUtlProps2 const &)
??4CUtlProps2@@QAEAAV0@ABV0@@Z
; public: class CUtlPropsFastLookup2 & __thiscall CUtlPropsFastLookup2::operator=(class CUtlPropsFastLookup2 const &)
??4CUtlPropsFastLookup2@@QAEAAV0@ABV0@@Z
; public: class CVLHeap & __thiscall CVLHeap::operator=(class CVLHeap const &)
??4CVLHeap@@QAEAAV0@ABV0@@Z
; public: class CWString const & __thiscall CWString::operator=(class CWString const &)
??4CWString@@QAEABV0@ABV0@@Z
; public: class CWString const & __thiscall CWString::operator=(char)
??4CWString@@QAEABV0@D@Z
; public: class CWString const & __thiscall CWString::operator=(unsigned short)
??4CWString@@QAEABV0@G@Z
; public: class CWString const & __thiscall CWString::operator=(char const *)
??4CWString@@QAEABV0@PBD@Z
; public: class CWString const & __thiscall CWString::operator=(unsigned char const *)
??4CWString@@QAEABV0@PBE@Z
; public: class CWString const & __thiscall CWString::operator=(unsigned short const *)
??4CWString@@QAEABV0@PBG@Z
; public: class IBookmarkObj & __thiscall IBookmarkObj::operator=(class IBookmarkObj const &)
??4IBookmarkObj@@QAEAAV0@ABV0@@Z
; public: class IHashTbl & __thiscall IHashTbl::operator=(class IHashTbl const &)
??4IHashTbl@@QAEAAV0@ABV0@@Z
; public: class ISlotList & __thiscall ISlotList::operator=(class ISlotList const &)
??4ISlotList@@QAEAAV0@ABV0@@Z
; public: unsigned short __thiscall CWString::operator[](int)const 
??ACWString@@QBEGH@Z
; public: __thiscall CWString::operator unsigned short const *(void)const 
??BCWString@@QBEPBGXZ
; public: class CWString const & __thiscall CWString::operator+=(class CWString const &)
??YCWString@@QAEABV0@ABV0@@Z
; public: class CWString const & __thiscall CWString::operator+=(char)
??YCWString@@QAEABV0@D@Z
; public: class CWString const & __thiscall CWString::operator+=(unsigned short)
??YCWString@@QAEABV0@G@Z
; public: class CWString const & __thiscall CWString::operator+=(unsigned short const *)
??YCWString@@QAEABV0@PBG@Z
; const  CBaseObj::`vftable'
??_7CBaseObj@@6B@
; const  CBaseObjBoko::`vftable'
??_7CBaseObjBoko@@6B@
; const  CBaseObjZombie::`vftable'
??_7CBaseObjZombie@@6B@
; const  CClassFactory::`vftable'
??_7CClassFactory@@6B@
; const  CEnumConnectionPoints::`vftable'
??_7CEnumConnectionPoints@@6B@
; const  CEnumConnections::`vftable'
??_7CEnumConnections@@6B@
; const  CHashTbl::`vftable'
??_7CHashTbl@@6B@
; const  CHashTblAggr::`vftable'
??_7CHashTblAggr@@6B@
; const  CHeapDispenser::`vftable'
??_7CHeapDispenser@@6B@
; const  CRowsetConnectionPoint::`vftable'
??_7CRowsetConnectionPoint@@6B@
; const  CRowsetConnectionPointContainer::`vftable'
??_7CRowsetConnectionPointContainer@@6B@
; const  CSlotListLong::`vftable'
??_7CSlotListLong@@6B@
; const  CSlotListShort::`vftable'
??_7CSlotListShort@@6B@
; const  CUtlPropInfo::`vftable'
??_7CUtlPropInfo@@6B@
; const  CUtlProps2::`vftable'
??_7CUtlProps2@@6B@
; const  CUtlPropsFastLookup2::`vftable'
??_7CUtlPropsFastLookup2@@6B@
; const  IBookmarkObj::`vftable'
??_7IBookmarkObj@@6B@
; const  IHashTbl::`vftable'
??_7IHashTbl@@6B@
; const  ISlotList::`vftable'
??_7ISlotList@@6B@
; public: void __thiscall CUtlProps2::`default constructor closure'(void)
??_FCUtlProps2@@QAEXXZ
; public: void __thiscall CUtlPropsFastLookup2::`default constructor closure'(void)
??_FCUtlPropsFastLookup2@@QAEXXZ
; public: int __thiscall CHashTblAggr::AddHashTbl(class CSlotListShort *)
?AddHashTbl@CHashTblAggr@@QAEHPAVCSlotListShort@@@Z
; public: void __thiscall CUtlProps2::AddInternalFlags(unsigned long,unsigned long,unsigned long)
?AddInternalFlags@CUtlProps2@@QAEXKKK@Z
; public: virtual unsigned long __stdcall CClassFactory::AddRef(void)
?AddRef@CClassFactory@@UAGKXZ
; public: unsigned long __stdcall CEnum::AddRef(void)
?AddRef@CEnum@@QAGKXZ
; public: virtual unsigned long __stdcall CEnumConnectionPoints::AddRef(void)
?AddRef@CEnumConnectionPoints@@UAGKXZ
; public: virtual unsigned long __stdcall CEnumConnections::AddRef(void)
?AddRef@CEnumConnections@@UAGKXZ
; public: virtual unsigned long __stdcall CHeapDispenser::AddRef(void)
?AddRef@CHeapDispenser@@UAGKXZ
; public: virtual unsigned long __stdcall CRowsetConnectionPoint::AddRef(void)
?AddRef@CRowsetConnectionPoint@@UAGKXZ
; public: virtual unsigned long __stdcall CRowsetConnectionPointContainer::AddRef(void)
?AddRef@CRowsetConnectionPointContainer@@UAGKXZ
; private: void __stdcall CSlotListShort::AddSlotToList(struct tagSLOT *)
?AddSlotToList@CSlotListShort@@AAGXPAUtagSLOT@@@Z
; private: static unsigned long __stdcall CHashTbl::AdjustRange(unsigned long)
?AdjustRange@CHashTbl@@CGKK@Z
; public: virtual long __stdcall CRowsetConnectionPoint::Advise(struct IUnknown *,unsigned long *)
?Advise@CRowsetConnectionPoint@@UAGJPAUIUnknown@@PAK@Z
; protected: void __thiscall CWString::AllocBuffer(int)
?AllocBuffer@CWString@@IAEXH@Z
; protected: void __thiscall CWString::AllocCopy(class CWString &,int,int,int)const 
?AllocCopy@CWString@@IBEXAAV1@HHH@Z
; public: unsigned char * __stdcall CExtBuffer::AllocItems(unsigned long)
?AllocItems@CExtBuffer@@QAGPAEK@Z
; public: long __stdcall CBitArray::ArrayEmpty(void)
?ArrayEmpty@CBitArray@@QAGJXZ
; protected: void __thiscall CWString::AssignCopy(int,unsigned short const *)
?AssignCopy@CWString@@IAEXHPBG@Z
; private: unsigned long __thiscall CUtlPropInfo::CalcDescripBuffers(unsigned long,struct tagDBPROPINFOSET *)
?CalcDescripBuffers@CUtlPropInfo@@AAEKKPAUtagDBPROPINFOSET@@@Z
; public: static unsigned long __stdcall CHashTbl::CbHashTblSize(unsigned long)
?CbHashTblSize@CHashTbl@@SGKK@Z
; public: void __thiscall CWString::ClearError(void)
?ClearError@CWString@@QAEXXZ
; private: void __thiscall CUtlProps2::ClearMemberVars(void)
?ClearMemberVars@CUtlProps2@@AAEXXZ
; public: void __thiscall CUtlProps2::ClearPropSupported(unsigned long,unsigned long)
?ClearPropSupported@CUtlProps2@@QAEXKK@Z
; public: void __thiscall CUtlProps2::ClearPropertyInError(void)
?ClearPropertyInError@CUtlProps2@@QAEXXZ
; public: void __thiscall CUtlProps2::ClearPropsSupported(void)
?ClearPropsSupported@CUtlProps2@@QAEXXZ
; public: virtual long __stdcall CEnumConnectionPoints::Clone(struct IEnumConnectionPoints * *)
?Clone@CEnumConnectionPoints@@UAGJPAPAUIEnumConnectionPoints@@@Z
; public: virtual long __stdcall CEnumConnections::Clone(struct IEnumConnections * *)
?Clone@CEnumConnections@@UAGJPAPAUIEnumConnections@@@Z
; public: void __stdcall CExtBuffer::CompactExtBuffer(void)
?CompactExtBuffer@CExtBuffer@@QAGXXZ
; public: int __thiscall CWString::Compare(unsigned short const *)const 
?Compare@CWString@@QBEHPBG@Z
; long __cdecl CompareDBIDs(struct tagDBID const *,struct tagDBID const *)
?CompareDBIDs@@YAJPBUtagDBID@@0@Z
; public: virtual int __stdcall CHeapDispenser::CompareResource(void *,void *)
?CompareResource@CHeapDispenser@@UAGHPAX0@Z
; protected: void __thiscall CWString::ConcatCopy(int,unsigned short const *,int,unsigned short const *)
?ConcatCopy@CWString@@IAEXHPBGH0@Z
; public: void __thiscall CWString::ConcatInPlace(int,unsigned short const *)
?ConcatInPlace@CWString@@QAEXHPBG@Z
; public: virtual int __thiscall CUtlProps2::ConflictsWithCurrent(unsigned long,unsigned long,struct tagVARIANT const &)
?ConflictsWithCurrent@CUtlProps2@@UAEHKKABUtagVARIANT@@@Z
; public: long __thiscall CUtlProps2::ConvertRowsetIIDtoDBPROPSET(struct _GUID const *,struct tagDBPROPSET *)
?ConvertRowsetIIDtoDBPROPSET@CUtlProps2@@QAEJPBU_GUID@@PAUtagDBPROPSET@@@Z
; public: void __thiscall CUtlProps2::CopyAvailUPropSets(unsigned long *,struct tagUPROPSET const * *,unsigned long *)
?CopyAvailUPropSets@CUtlProps2@@QAEXPAKPAPBUtagUPROPSET@@0@Z
; long __cdecl CopyDBIDs(struct tagDBID *,struct tagDBID const *)
?CopyDBIDs@@YAJPAUtagDBID@@PBU1@@Z
; public: void __thiscall CUtlProps2::CopyPropsInError(unsigned long *)
?CopyPropsInError@CUtlProps2@@QAEXPAK@Z
; public: void __thiscall CUtlProps2::CopyPropsInError(class CUtlProps2 *)
?CopyPropsInError@CUtlProps2@@QAEXPAV1@@Z
; public: void __thiscall CUtlProps2::CopyUPropInfo(unsigned long,struct tagUPROPINFO * *)
?CopyUPropInfo@CUtlProps2@@QAEXKPAPAUtagUPROPINFO@@@Z
; public: void __thiscall CUtlProps2::CopyUPropSetsSupported(unsigned long *)
?CopyUPropSetsSupported@CUtlProps2@@QAEXPAK@Z
; public: long __thiscall CUtlProps2::CopyUPropVal(unsigned long,struct tagUPROPVAL *,class CColumnIds *)
?CopyUPropVal@CUtlProps2@@QAEJKPAUtagUPROPVAL@@PAVCColumnIds@@@Z
; public: virtual unsigned long __stdcall CSlotListLong::CountOfBusySlots(void)
?CountOfBusySlots@CSlotListLong@@UAGKXZ
; public: virtual unsigned long __stdcall CSlotListShort::CountOfBusySlots(void)
?CountOfBusySlots@CSlotListShort@@UAGKXZ
; public: virtual long __stdcall CHeapDispenser::CreateResource(void *,unsigned long,void *,void * *,int *)
?CreateResource@CHeapDispenser@@UAGJPAXK0PAPAXPAH@Z
; public: long __stdcall CExtBuffer::DWORDIntoExtBuffer(unsigned long)
?DWORDIntoExtBuffer@CExtBuffer@@QAGJK@Z
; private: void __stdcall CSlotListShort::DecoupleSlot(struct tagSLOT *)
?DecoupleSlot@CSlotListShort@@AAGXPAUtagSLOT@@@Z
; public: virtual long __stdcall CHashTbl::DeleteBmk(unsigned long)
?DeleteBmk@CHashTbl@@UAGJK@Z
; public: virtual long __stdcall CHashTblAggr::DeleteBmk(unsigned long)
?DeleteBmk@CHashTblAggr@@UAGJK@Z
; public: void __stdcall CExtBuffer::DeleteFromExtBuffer(unsigned long)
?DeleteFromExtBuffer@CExtBuffer@@QAGXK@Z
; public: void __stdcall CExtBuffer::DeleteWithCompactFromExtBuffer(unsigned long)
?DeleteWithCompactFromExtBuffer@CExtBuffer@@QAGXK@Z
; public: virtual long __stdcall CHeapDispenser::DestroyResource(void *)
?DestroyResource@CHeapDispenser@@UAGJPAX@Z
; public: long __thiscall CRowsetConnectionPointContainer::DoFcNotify(unsigned long,enum DBREASONENUM,enum DBEVENTPHASEENUM,struct IRowset *,unsigned long,unsigned long,unsigned long * const)
?DoFcNotify@CRowsetConnectionPointContainer@@QAEJKW4DBREASONENUM@@W4DBEVENTPHASEENUM@@PAUIRowset@@KKQAK@Z
; public: long __thiscall CRowsetConnectionPoint::DoNotify(enum DBREASONENUM,enum DBEVENTPHASEENUM,enum ENOTIFICATIONTYPE,struct IRowset *,union tagNOTIFYARGS *)
?DoNotify@CRowsetConnectionPoint@@QAEJW4DBREASONENUM@@W4DBEVENTPHASEENUM@@W4ENOTIFICATIONTYPE@@PAUIRowset@@PATtagNOTIFYARGS@@@Z
; public: long __thiscall CRowsetConnectionPointContainer::DoRcNotify(unsigned long,enum DBREASONENUM,enum DBEVENTPHASEENUM,struct IRowset *,unsigned long,unsigned long * const)
?DoRcNotify@CRowsetConnectionPointContainer@@QAEJKW4DBREASONENUM@@W4DBEVENTPHASEENUM@@PAUIRowset@@KQAK@Z
; public: long __thiscall CRowsetConnectionPointContainer::DoRscNotify(unsigned long,enum DBREASONENUM,enum DBEVENTPHASEENUM,struct IRowset *)
?DoRscNotify@CRowsetConnectionPointContainer@@QAEJKW4DBREASONENUM@@W4DBEVENTPHASEENUM@@PAUIRowset@@@Z
; unsigned long __cdecl DwGetPlatformId(void)
?DwGetPlatformId@@YAKXZ
; public: class CWString  __thiscall CWString::ElementAt(unsigned short * const,int)const 
?ElementAt@CWString@@QBE?AV1@QAGH@Z
; public: void __thiscall CWString::Empty(void)
?Empty@CWString@@QAEXXZ
; public: virtual long __stdcall CRowsetConnectionPointContainer::EnumConnectionPoints(struct IEnumConnectionPoints * *)
?EnumConnectionPoints@CRowsetConnectionPointContainer@@UAGJPAPAUIEnumConnectionPoints@@@Z
; public: virtual long __stdcall CRowsetConnectionPoint::EnumConnections(struct IEnumConnections * *)
?EnumConnections@CRowsetConnectionPoint@@UAGJPAPAUIEnumConnections@@@Z
; protected: long __thiscall CBaseObj::FInit(void)
?FInit@CBaseObj@@IAEJXZ
; public: long __stdcall CBitArray::FInit(unsigned long)
?FInit@CBitArray@@QAGJK@Z
; public: int __thiscall CExtBuffer::FInit(unsigned long,unsigned long)
?FInit@CExtBuffer@@QAEHKK@Z
; public: int __thiscall CExtBuffer::FInit(unsigned long,void *,unsigned long,unsigned long)
?FInit@CExtBuffer@@QAEHKPAXKK@Z
; public: int __thiscall CExtBuffer::FInit(class CExtBuffer *)
?FInit@CExtBuffer@@QAEHPAV1@@Z
; public: int __thiscall CHashTbl::FInit(unsigned short,class CSlotListShort *,class IBookmarkObj *)
?FInit@CHashTbl@@QAEHGPAVCSlotListShort@@PAVIBookmarkObj@@@Z
; public: int __thiscall CHashTblAggr::FInit(class CHashTbl *)
?FInit@CHashTblAggr@@QAEHPAVCHashTbl@@@Z
; public: virtual int __thiscall CSlotListLong::FInit(unsigned long,class ISlotList * *,class IHashTbl * *,unsigned long)
?FInit@CSlotListLong@@UAEHKPAPAVISlotList@@PAPAVIHashTbl@@K@Z
; public: virtual int __thiscall CSlotListShort::FInit(unsigned long,class ISlotList * *,class IHashTbl * *,unsigned long)
?FInit@CSlotListShort@@UAEHKPAPAVISlotList@@PAPAVIHashTbl@@K@Z
; public: long __thiscall CUtlPropInfo::FInit(void)
?FInit@CUtlPropInfo@@QAEJXZ
; public: virtual long __thiscall CUtlProps2::FInit(class CUtlProps2 *)
?FInit@CUtlProps2@@UAEJPAV1@@Z
; public: virtual long __thiscall CUtlPropsFastLookup2::FInit(class CUtlPropsFastLookup2 *)
?FInit@CUtlPropsFastLookup2@@UAEJPAV1@@Z
; public: int __thiscall CVLHeap::FInit(unsigned long)
?FInit@CVLHeap@@QAEHK@Z
; public: void __thiscall CGenericPooler::FInitializeGPStructures(void)
?FInitializeGPStructures@CGenericPooler@@QAEXXZ
; public: int __thiscall CUtlProps2::FIsDefaultValue(unsigned long,unsigned long,struct tagVARIANT *)
?FIsDefaultValue@CUtlProps2@@QAEHKKPAUtagVARIANT@@@Z
; public: virtual int __thiscall CUtlProps2::FIsValidColId(struct tagDBPROP *)
?FIsValidColId@CUtlProps2@@UAEHPAUtagDBPROP@@@Z
; public: long __thiscall CUtlProps2::FillDefaultValues(unsigned long)
?FillDefaultValues@CUtlProps2@@QAEJK@Z
; public: virtual long __stdcall CRowsetConnectionPointContainer::FindConnectionPoint(struct _GUID const &,struct IConnectionPoint * *)
?FindConnectionPoint@CRowsetConnectionPointContainer@@UAGJABU_GUID@@PAPAUIConnectionPoint@@@Z
; public: void __thiscall CConnectData::ForgetEvent(enum DBREASONENUM,enum DBEVENTPHASEENUM)
?ForgetEvent@CConnectData@@QAEXW4DBREASONENUM@@W4DBEVENTPHASEENUM@@@Z
; private: void __thiscall CRowsetConnectionPoint::ForgetEvent(enum DBREASONENUM,enum DBEVENTPHASEENUM)
?ForgetEvent@CRowsetConnectionPoint@@AAEXW4DBREASONENUM@@W4DBEVENTPHASEENUM@@@Z
; public: void __thiscall CConnectData::ForgetReason(enum DBREASONENUM)
?ForgetReason@CConnectData@@QAEXW4DBREASONENUM@@@Z
; public: int __thiscall CWString::FoundError(void)const 
?FoundError@CWString@@QBEHXZ
; public: void __thiscall CExtBuffer::Free(void)
?Free@CExtBuffer@@QAEXXZ
; void __cdecl FreeDBIDs(struct tagDBID *)
?FreeDBIDs@@YAXPAUtagDBID@@@Z
; public: void __thiscall CWString::FreeExtra(void)
?FreeExtra@CWString@@QAEXXZ
; private: void __thiscall CUtlProps2::FreeMemory(void)
?FreeMemory@CUtlProps2@@AAEXXZ
; public: int __thiscall CWString::GetAllocLength(void)const 
?GetAllocLength@CWString@@QBEHXZ
; public: enum EBaseObjectType  __thiscall CBaseObj::GetBaseObjectType(void)
?GetBaseObjectType@CBaseObj@@QAE?AW4EBaseObjectType@@XZ
; public: unsigned short * __thiscall CBaseObj::GetBaseObjectTypeName(void)
?GetBaseObjectTypeName@CBaseObj@@QAEPAGXZ
; public: void __thiscall CBaseObjZombie::GetBokoTimestamp(void)
?GetBokoTimestamp@CBaseObjZombie@@QAEXXZ
; public: unsigned short * __thiscall CWString::GetBuffer(int)
?GetBuffer@CWString@@QAEPAGH@Z
; public: unsigned short * __thiscall CWString::GetBufferSetLength(int)
?GetBufferSetLength@CWString@@QAEPAGH@Z
; public: struct tagCONNECTDATA * __thiscall CConnectData::GetCd(void)
?GetCd@CConnectData@@QAEPAUtagCONNECTDATA@@XZ
; public: virtual long __stdcall CRowsetConnectionPoint::GetConnectionInterface(struct _GUID *)
?GetConnectionInterface@CRowsetConnectionPoint@@UAGJPAU_GUID@@@Z
; public: virtual long __stdcall CRowsetConnectionPoint::GetConnectionPointContainer(struct IConnectionPointContainer * *)
?GetConnectionPointContainer@CRowsetConnectionPoint@@UAGJPAPAUIConnectionPointContainer@@@Z
; private: unsigned long __thiscall CUtlProps2::GetCountofColids(struct tagUPROP *)
?GetCountofColids@CUtlProps2@@AAEKPAUtagUPROP@@@Z
; private: unsigned long __thiscall CUtlProps2::GetCountofWritablePropsInPropSet(unsigned long)
?GetCountofWritablePropsInPropSet@CUtlProps2@@AAEKK@Z
; public: class CCriticalSection * * __thiscall CBaseObj::GetCriticalSection(void)
?GetCriticalSection@CBaseObj@@QAEPAPAVCCriticalSection@@XZ
; public: unsigned long __stdcall CExtBuffer::GetDWORDOfExtBuffer(unsigned long)
?GetDWORDOfExtBuffer@CExtBuffer@@QAGKK@Z
; public: unsigned short __thiscall CUtlProps2::GetExpectedVarType(unsigned long,unsigned long)
?GetExpectedVarType@CUtlProps2@@QAEGKK@Z
; public: struct _GUID const * __thiscall CUtlProps2::GetGuid(unsigned long)
?GetGuid@CUtlProps2@@QAEPBU_GUID@@K@Z
; public: class CHeapDispenser * __thiscall CGenericPooler::GetHeapDispenser(void)
?GetHeapDispenser@CGenericPooler@@QAEPAVCHeapDispenser@@XZ
; public: struct IGPHolder * __thiscall CGenericPooler::GetHeapHolder(void)
?GetHeapHolder@CGenericPooler@@QAEPAUIGPHolder@@XZ
; public: virtual long __thiscall CUtlProps2::GetIndexofPropIdinPropSet(unsigned long,unsigned long,unsigned long *)
?GetIndexofPropIdinPropSet@CUtlProps2@@UAEJKKPAK@Z
; protected: virtual long __thiscall CUtlPropsFastLookup2::GetIndexofPropIdinPropSet(unsigned long,unsigned long,unsigned long *)
?GetIndexofPropIdinPropSet@CUtlPropsFastLookup2@@MAEJKKPAK@Z
; public: virtual long __thiscall CUtlProps2::GetIndexofPropSet(struct _GUID const *,unsigned long *)
?GetIndexofPropSet@CUtlProps2@@UAEJPBU_GUID@@PAK@Z
; public: unsigned long __thiscall CUtlProps2::GetInternalFlags(unsigned long,unsigned long)
?GetInternalFlags@CUtlProps2@@QAEKKK@Z
; public: unsigned long __thiscall CUtlProps2::GetInternalStatus(unsigned long,unsigned long)
?GetInternalStatus@CUtlProps2@@QAEKKK@Z
; public: unsigned long __stdcall CExtBuffer::GetItemCount(void)const 
?GetItemCount@CExtBuffer@@QBGKXZ
; public: unsigned long __stdcall CExtBuffer::GetItemMax(void)const 
?GetItemMax@CExtBuffer@@QBGKXZ
; public: void __stdcall CExtBuffer::GetItemOfExtBuffer(unsigned long,void *)
?GetItemOfExtBuffer@CExtBuffer@@QAGXKPAX@Z
; public: unsigned long __stdcall CExtBuffer::GetItemSize(void)const 
?GetItemSize@CExtBuffer@@QBGKXZ
; public: void __stdcall CExtBuffer::GetLastItemHandle(unsigned long &)
?GetLastItemHandle@CExtBuffer@@QAGXAAK@Z
; public: int __thiscall CWString::GetLength(void)const 
?GetLength@CWString@@QBEHXZ
; public: unsigned short * __thiscall CExtBuffer::GetNameFromOffset(unsigned long)
?GetNameFromOffset@CExtBuffer@@QAEPAGK@Z
; public: virtual long __stdcall CSlotListLong::GetNextSlots(unsigned long,unsigned long,unsigned long *)
?GetNextSlots@CSlotListLong@@UAGJKKPAK@Z
; public: virtual long __stdcall CSlotListShort::GetNextSlots(unsigned long,unsigned long,unsigned long *)
?GetNextSlots@CSlotListShort@@UAGJKKPAK@Z
; private: void * __thiscall CEnum::GetNthElement(unsigned long)
?GetNthElement@CEnum@@AAEPAXK@Z
; private: struct IUnknown * __thiscall CEnum::GetNthUnknown(unsigned long)
?GetNthUnknown@CEnum@@AAEPAUIUnknown@@K@Z
; public: struct IUnknown * __thiscall CBaseObj::GetOuterUnknown(void)
?GetOuterUnknown@CBaseObj@@QAEPAUIUnknown@@XZ
; public: unsigned long __thiscall CUtlProps2::GetPropID(unsigned long,unsigned long)
?GetPropID@CUtlProps2@@QAEKKK@Z
; public: unsigned long __thiscall CUtlProps2::GetPropOption(unsigned long,unsigned long)
?GetPropOption@CUtlProps2@@QAEKKK@Z
; public: unsigned long __thiscall CUtlProps2::GetPropStatus(struct tagUPROPVAL *)
?GetPropStatus@CUtlProps2@@QAEKPAUtagUPROPVAL@@@Z
; public: long __thiscall CUtlProps2::GetPropValue(struct _GUID const *,unsigned long,struct tagVARIANT *)
?GetPropValue@CUtlProps2@@QAEJPBU_GUID@@KPAUtagVARIANT@@@Z
; public: long __thiscall CUtlProps2::GetProperties(unsigned long,struct tagDBPROPIDSET const * const,unsigned long *,struct tagDBPROPSET * *)
?GetProperties@CUtlProps2@@QAEJKQBUtagDBPROPIDSET@@PAKPAPAUtagDBPROPSET@@@Z
; public: long __thiscall CUtlProps2::GetProperties(unsigned long,struct tagDBPROPIDSET const * const,unsigned long *,struct tagDBPROPSET * *,struct _GUID const *)
?GetProperties@CUtlProps2@@QAEJKQBUtagDBPROPIDSET@@PAKPAPAUtagDBPROPSET@@PBU_GUID@@@Z
; public: long __thiscall CUtlProps2::GetPropertiesArgChk(unsigned long,struct tagDBPROPIDSET const * const,unsigned long *,struct tagDBPROPSET * *)
?GetPropertiesArgChk@CUtlProps2@@QAEJKQBUtagDBPROPIDSET@@PAKPAPAUtagDBPROPSET@@@Z
; public: long __thiscall CUtlPropInfo::GetPropertyInfo(unsigned long,struct tagDBPROPIDSET const * const,unsigned long *,struct tagDBPROPINFOSET * *,unsigned short * *)
?GetPropertyInfo@CUtlPropInfo@@QAEJKQBUtagDBPROPIDSET@@PAKPAPAUtagDBPROPINFOSET@@PAPAG@Z
; private: long __thiscall CUtlPropInfo::GetPropertySetIndex(struct _GUID const *)
?GetPropertySetIndex@CUtlPropInfo@@AAEJPBU_GUID@@@Z
; public: unsigned long * __thiscall CUtlProps2::GetPropsInErrorPtr(void)
?GetPropsInErrorPtr@CUtlProps2@@QAEPAKXZ
; public: void * __stdcall CExtBuffer::GetPtrOfExtBuffer(unsigned long)
?GetPtrOfExtBuffer@CExtBuffer@@QAGPAXK@Z
; public: void * __stdcall CExtBuffer::GetPtrOfExtBuffer(void)
?GetPtrOfExtBuffer@CExtBuffer@@QAGPAXXZ
; public: long __thiscall CGenericPooler::GetResource(void * *,struct IGPHolder *,struct IGPDispenser *,void * *,void *)
?GetResource@CGenericPooler@@QAEJPAPAXPAUIGPHolder@@PAUIGPDispenser@@0PAX@Z
; public: virtual struct tagRowBuff * __fastcall CSlotListLong::GetRowBuff(unsigned long)
?GetRowBuff@CSlotListLong@@UAIPAUtagRowBuff@@K@Z
; public: virtual struct tagRowBuff * __fastcall CSlotListShort::GetRowBuff(unsigned long)
?GetRowBuff@CSlotListShort@@UAIPAUtagRowBuff@@K@Z
; public: unsigned long __thiscall CUtlProps2::GetStatus(unsigned long,unsigned long)
?GetStatus@CUtlProps2@@QAEKKK@Z
; public: void __thiscall CBaseObjBoko::GetTimestamp(unsigned long *)
?GetTimestamp@CBaseObjBoko@@QAEXPAK@Z
; private: long __thiscall CUtlPropInfo::GetUPropInfoPtr(unsigned long,unsigned long,struct tagUPROPINFO * *)
?GetUPropInfoPtr@CUtlPropInfo@@AAEJKKPAPAUtagUPROPINFO@@@Z
; protected: unsigned long __thiscall CUtlPropInfo::GetUPropSetCount(void)
?GetUPropSetCount@CUtlPropInfo@@IAEKXZ
; public: unsigned long __thiscall CUtlProps2::GetUPropSetCount(void)
?GetUPropSetCount@CUtlProps2@@QAEKXZ
; protected: virtual unsigned long __thiscall CUtlProps2::GetUPropValIndex(unsigned long,unsigned long)
?GetUPropValIndex@CUtlProps2@@MAEKKK@Z
; protected: virtual unsigned long __thiscall CUtlPropsFastLookup2::GetUPropValIndex(unsigned long,unsigned long)
?GetUPropValIndex@CUtlPropsFastLookup2@@MAEKKK@Z
; public: short __thiscall CUtlProps2::GetValBool(unsigned long,unsigned long)const 
?GetValBool@CUtlProps2@@QBEFKK@Z
; public: long __thiscall CUtlProps2::GetValLong(unsigned long,unsigned long)const 
?GetValLong@CUtlProps2@@QBEJKK@Z
; public: short __thiscall CUtlProps2::GetValShort(unsigned long,unsigned long)const 
?GetValShort@CUtlProps2@@QBEFKK@Z
; public: unsigned short const * __thiscall CUtlProps2::GetValString(unsigned long,unsigned long)
?GetValString@CUtlProps2@@QAEPBGKK@Z
; public: struct tagVARIANT * __thiscall CUtlProps2::GetVariant(unsigned long,unsigned long)
?GetVariant@CUtlProps2@@QAEPAUtagVARIANT@@KK@Z
; public: virtual int __stdcall CHeapDispenser::HashKey(void *,unsigned long,int *)
?HashKey@CHeapDispenser@@UAGHPAXKPAH@Z
; public: long __thiscall CRowsetConnectionPointContainer::Init(void)
?Init@CRowsetConnectionPointContainer@@QAEJXZ
; protected: void __thiscall CWString::Init(void)
?Init@CWString@@IAEXXZ
; public: virtual long __stdcall CHashTbl::InsertFindBmk(int,unsigned long,unsigned long,unsigned char *,unsigned long *)
?InsertFindBmk@CHashTbl@@UAGJHKKPAEPAK@Z
; public: virtual long __stdcall CHashTblAggr::InsertFindBmk(int,unsigned long,unsigned long,unsigned char *,unsigned long *)
?InsertFindBmk@CHashTblAggr@@UAGJHKKPAEPAK@Z
; public: long __stdcall CExtBuffer::InsertIntoExtBuffer(void *,unsigned long &)
?InsertIntoExtBuffer@CExtBuffer@@QAGJPAXAAK@Z
; public: int __thiscall CUtlProps2::IsEmpty(unsigned long,unsigned long)
?IsEmpty@CUtlProps2@@QAEHKK@Z
; public: int __thiscall CWString::IsEmpty(void)const 
?IsEmpty@CWString@@QBEHXZ
; public: int __thiscall CUtlProps2::IsPropSet(struct _GUID const *,unsigned long)
?IsPropSet@CUtlProps2@@QAEHPBU_GUID@@K@Z
; public: int __thiscall CUtlProps2::IsRequiredFalse(unsigned long,unsigned long)
?IsRequiredFalse@CUtlProps2@@QAEHKK@Z
; public: int __thiscall CUtlProps2::IsRequiredTrue(unsigned long,unsigned long)
?IsRequiredTrue@CUtlProps2@@QAEHKK@Z
; public: int __thiscall CUtlProps2::IsSetIfCan(unsigned long,unsigned long)
?IsSetIfCan@CUtlProps2@@QAEHKK@Z
; public: long __stdcall CBitArray::IsSlotSet(unsigned long)
?IsSlotSet@CBitArray@@QAGJK@Z
; public: int __thiscall CUtlProps2::IsTrue(unsigned long,unsigned long)
?IsTrue@CUtlProps2@@QAEHKK@Z
; public: int __stdcall CVLHeap::IsVLAlloc(void *)
?IsVLAlloc@CVLHeap@@QAGHPAX@Z
; public: virtual long __stdcall CSlotListLong::IsValidSlot(unsigned long)
?IsValidSlot@CSlotListLong@@UAGJK@Z
; public: virtual long __stdcall CSlotListShort::IsValidSlot(unsigned long)
?IsValidSlot@CSlotListShort@@UAGJK@Z
; public: int __thiscall CBaseObjBoko::IsZombie(unsigned long)
?IsZombie@CBaseObjBoko@@QAEHK@Z
; public: int __thiscall CBaseObjZombie::IsZombie(void)
?IsZombie@CBaseObjZombie@@QAEHXZ
; unsigned long __cdecl LoadRCData(void *,unsigned int,unsigned short *,unsigned long)
?LoadRCData@@YAKPAXIPAGK@Z
; long __cdecl LoadResourceDLL(unsigned short *,unsigned short *,void *,void * *)
?LoadResourceDLL@@YAJPAG0PAXPAPAX@Z
; public: int __thiscall CWString::LoadStringW(void *,unsigned int)
?LoadStringW@CWString@@QAEHPAXI@Z
; public: virtual long __stdcall CClassFactory::LockServer(int)
?LockServer@CClassFactory@@UAGJH@Z
; public: void __thiscall CBaseObjBoko::MakeZombies(void)
?MakeZombies@CBaseObjBoko@@QAEXXZ
; public: class CWString  __thiscall CWString::Mid(int)const 
?Mid@CWString@@QBE?AV1@H@Z
; public: class CWString  __thiscall CWString::Mid(int,int)const 
?Mid@CWString@@QBE?AV1@HH@Z
; public: long __stdcall CEnum::Next(unsigned long,void * *,unsigned long *)
?Next@CEnum@@QAGJKPAPAXPAK@Z
; public: virtual long __stdcall CEnumConnectionPoints::Next(unsigned long,struct IConnectionPoint * *,unsigned long *)
?Next@CEnumConnectionPoints@@UAGJKPAPAUIConnectionPoint@@PAK@Z
; public: virtual long __stdcall CEnumConnections::Next(unsigned long,struct tagCONNECTDATA *,unsigned long *)
?Next@CEnumConnections@@UAGJKPAUtagCONNECTDATA@@PAK@Z
; public: virtual long __stdcall CSlotListLong::NextBusySlot(unsigned long *)
?NextBusySlot@CSlotListLong@@UAGJPAK@Z
; public: virtual long __stdcall CSlotListShort::NextBusySlot(unsigned long *)
?NextBusySlot@CSlotListShort@@UAGJPAK@Z
; public: virtual long __stdcall CSlotListLong::NoBusySlots(void)
?NoBusySlots@CSlotListLong@@UAGJXZ
; public: virtual long __stdcall CSlotListShort::NoBusySlots(void)
?NoBusySlots@CSlotListShort@@UAGJXZ
; public: unsigned long __thiscall CWString::NumElements(unsigned short * const)const 
?NumElements@CWString@@QBEKQAG@Z
; int __cdecl OLEDBGetCharTypeW(unsigned long,unsigned short,unsigned short *)
?OLEDBGetCharTypeW@@YAHKGPAG@Z
; public: short __thiscall CUtlProps2::OkToPersistSensitiveAuthInfo(void)
?OkToPersistSensitiveAuthInfo@CUtlProps2@@QAEFXZ
; int __cdecl OnUnicodeSystem(void)
?OnUnicodeSystem@@YAHXZ
; public: virtual long __stdcall CClassFactory::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CClassFactory@@UAGJABU_GUID@@PAPAX@Z
; public: long __stdcall CEnum::QueryInterface(struct _GUID const &,void * *,struct IUnknown *)
?QueryInterface@CEnum@@QAGJABU_GUID@@PAPAXPAUIUnknown@@@Z
; public: virtual long __stdcall CEnumConnectionPoints::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CEnumConnectionPoints@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CEnumConnections::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CEnumConnections@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CHeapDispenser::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CHeapDispenser@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CRowsetConnectionPoint::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CRowsetConnectionPoint@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CRowsetConnectionPointContainer::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CRowsetConnectionPointContainer@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CHeapDispenser::RateRes(void *,unsigned long,void *,int *)
?RateRes@CHeapDispenser@@UAGJPAXK0PAH@Z
; public: virtual void __stdcall CSlotListLong::RecordInternalUse(void)
?RecordInternalUse@CSlotListLong@@UAGXXZ
; public: virtual void __stdcall CSlotListShort::RecordInternalUse(void)
?RecordInternalUse@CSlotListShort@@UAGXXZ
; long __cdecl RegisterServer(void * const,void * const,unsigned long,struct tagREGENTRIES const * const)
?RegisterServer@@YAJQAX0KQBUtagREGENTRIES@@@Z
; public: virtual unsigned long __stdcall CClassFactory::Release(void)
?Release@CClassFactory@@UAGKXZ
; public: unsigned long __stdcall CEnum::Release(void)
?Release@CEnum@@QAGKXZ
; public: virtual unsigned long __stdcall CEnumConnectionPoints::Release(void)
?Release@CEnumConnectionPoints@@UAGKXZ
; public: virtual unsigned long __stdcall CEnumConnections::Release(void)
?Release@CEnumConnections@@UAGKXZ
; public: virtual unsigned long __stdcall CHeapDispenser::Release(void)
?Release@CHeapDispenser@@UAGKXZ
; public: virtual unsigned long __stdcall CRowsetConnectionPoint::Release(void)
?Release@CRowsetConnectionPoint@@UAGKXZ
; public: virtual unsigned long __stdcall CRowsetConnectionPointContainer::Release(void)
?Release@CRowsetConnectionPointContainer@@UAGKXZ
; public: void __thiscall CWString::ReleaseBuffer(int)
?ReleaseBuffer@CWString@@QAEXH@Z
; public: void __thiscall CGenericPooler::ReleaseHolders(void)
?ReleaseHolders@CGenericPooler@@QAEXXZ
; public: void __thiscall CGenericPooler::ReleaseResource(void *,struct IGPHolder *,struct IGPDispenser *,void *)
?ReleaseResource@CGenericPooler@@QAEXPAXPAUIGPHolder@@PAUIGPDispenser@@0@Z
; public: virtual unsigned long __stdcall CSlotListLong::ReleaseSlots(unsigned long,unsigned long)
?ReleaseSlots@CSlotListLong@@UAGKKK@Z
; public: virtual unsigned long __stdcall CSlotListShort::ReleaseSlots(unsigned long,unsigned long)
?ReleaseSlots@CSlotListShort@@UAGKKK@Z
; public: void __thiscall CUtlProps2::RemoveInternalFlags(unsigned long,unsigned long,unsigned long)
?RemoveInternalFlags@CUtlProps2@@QAEXKKK@Z
; public: void __thiscall CWString::ReplaceAt(int,int,unsigned short const *,int)
?ReplaceAt@CWString@@QAEXHHPBGH@Z
; public: long __stdcall CExtBuffer::ReplaceInExtBuffer(unsigned long,unsigned long,void const *,unsigned long)
?ReplaceInExtBuffer@CExtBuffer@@QAGJKKPBXK@Z
; public: int __thiscall CConnectData::Reset(void)
?Reset@CConnectData@@QAEHXZ
; public: long __stdcall CEnum::Reset(void)
?Reset@CEnum@@QAGJXZ
; public: virtual long __stdcall CEnumConnectionPoints::Reset(void)
?Reset@CEnumConnectionPoints@@UAGJXZ
; public: virtual long __stdcall CEnumConnections::Reset(void)
?Reset@CEnumConnections@@UAGJXZ
; public: void __stdcall CBitArray::ResetAllSlots(void)
?ResetAllSlots@CBitArray@@QAGXXZ
; public: virtual void __stdcall CSlotListLong::ResetBusySlotIteration(void)
?ResetBusySlotIteration@CSlotListLong@@UAGXXZ
; public: virtual void __stdcall CSlotListShort::ResetBusySlotIteration(void)
?ResetBusySlotIteration@CSlotListShort@@UAGXXZ
; public: virtual long __stdcall CHeapDispenser::ResetResource(void *)
?ResetResource@CHeapDispenser@@UAGJPAX@Z
; public: void __stdcall CBitArray::ResetSlot(unsigned long)
?ResetSlot@CBitArray@@QAGXK@Z
; public: void __stdcall CBitArray::ResetSlots(unsigned long,unsigned long)
?ResetSlots@CBitArray@@QAGXKK@Z
; public: void __thiscall CUtlProps2::RestoreInternalFlags(unsigned long,unsigned long)
?RestoreInternalFlags@CUtlProps2@@QAEXKK@Z
; public: void __thiscall CUtlProps2::RestoreInternalStatus(unsigned long,unsigned long)
?RestoreInternalStatus@CUtlProps2@@QAEXKK@Z
; private: void __thiscall CUtlProps2::RetrieveColumnIdProps(struct tagDBPROP *,struct tagUPROPVAL *,unsigned long *)
?RetrieveColumnIdProps@CUtlProps2@@AAEXPAUtagDBPROP@@PAUtagUPROPVAL@@PAK@Z
; public: virtual unsigned long __stdcall CSlotListLong::SLSlotCapacity(void)
?SLSlotCapacity@CSlotListLong@@UAGKXZ
; public: virtual unsigned long __stdcall CSlotListShort::SLSlotCapacity(void)
?SLSlotCapacity@CSlotListShort@@UAGKXZ
; protected: static void __cdecl CWString::SafeDelete(unsigned short *)
?SafeDelete@CWString@@KAXPAG@Z
; protected: static int __cdecl CWString::SafeStrlen(unsigned short const *)
?SafeStrlen@CWString@@KAHPBG@Z
; public: void __thiscall CUtlProps2::SaveInternalFlags(unsigned long,unsigned long)
?SaveInternalFlags@CUtlProps2@@QAEXKK@Z
; public: void __thiscall CUtlProps2::SaveInternalStatus(unsigned long,unsigned long)
?SaveInternalStatus@CUtlProps2@@QAEXKK@Z
; public: void __thiscall CWString::SetAt(int,unsigned short)
?SetAt@CWString@@QAEXHG@Z
; public: void __thiscall CBaseObjZombie::SetBoko(class CBaseObjBoko *)
?SetBoko@CBaseObjZombie@@QAEXPAVCBaseObjBoko@@@Z
; public: virtual long __thiscall CUtlProps2::SetCombinedPassThrough(struct tagDBPROPSET const *,unsigned long)
?SetCombinedPassThrough@CUtlProps2@@UAEJPBUtagDBPROPSET@@K@Z
; public: void __thiscall CWString::SetError(void)
?SetError@CWString@@QAEXXZ
; public: void __thiscall CUtlProps2::SetInternalStatus(unsigned long,unsigned long,unsigned long)
?SetInternalStatus@CUtlProps2@@QAEXKKK@Z
; public: void __stdcall CExtBuffer::SetItemCount(unsigned long)
?SetItemCount@CExtBuffer@@QAGXK@Z
; public: virtual long __thiscall CUtlProps2::SetPassThrough(struct tagDBPROPSET const *)
?SetPassThrough@CUtlProps2@@UAEJPBUtagDBPROPSET@@@Z
; public: long __stdcall CEnum::SetPos(unsigned long)
?SetPos@CEnum@@QAGJK@Z
; public: long __stdcall CEnumConnectionPoints::SetPos(unsigned long)
?SetPos@CEnumConnectionPoints@@QAGJK@Z
; public: long __stdcall CEnumConnections::SetPos(unsigned long)
?SetPos@CEnumConnections@@QAGJK@Z
; public: void __thiscall CUtlProps2::SetPropOption(unsigned long,unsigned long,unsigned long)
?SetPropOption@CUtlProps2@@QAEXKKK@Z
; public: void __thiscall CUtlProps2::SetPropRequired(unsigned long,unsigned long,short)
?SetPropRequired@CUtlProps2@@QAEXKKF@Z
; public: void __thiscall CUtlProps2::SetPropSupported(unsigned long,unsigned long)
?SetPropSupported@CUtlProps2@@QAEXKK@Z
; public: long __thiscall CUtlProps2::SetPropValue(struct _GUID const *,unsigned long,struct tagVARIANT *)
?SetPropValue@CUtlProps2@@QAEJPBU_GUID@@KPAUtagVARIANT@@@Z
; public: long __thiscall CUtlProps2::SetProperties(unsigned long,struct tagDBPROPSET const * const,int)
?SetProperties@CUtlProps2@@QAEJKQBUtagDBPROPSET@@H@Z
; public: static long __cdecl CUtlProps2::SetPropertiesArgChk(unsigned long,struct tagDBPROPSET const * const)
?SetPropertiesArgChk@CUtlProps2@@SAJKQBUtagDBPROPSET@@@Z
; private: long __thiscall CUtlProps2::SetProperty(unsigned long,unsigned long,struct tagDBPROP *)
?SetProperty@CUtlProps2@@AAEJKKPAUtagDBPROP@@@Z
; public: void __thiscall CUtlProps2::SetPropertyInError(unsigned long,unsigned long)
?SetPropertyInError@CUtlProps2@@QAEXKK@Z
; public: void __thiscall CUtlProps2::SetPropertyStatus(unsigned long,struct tagDBPROPSET const * const)
?SetPropertyStatus@CUtlProps2@@QAEXKQBUtagDBPROPSET@@@Z
; private: void __thiscall CRowsetConnectionPoint::SetReasons(void)
?SetReasons@CRowsetConnectionPoint@@AAEXXZ
; public: long __stdcall CBitArray::SetSlot(unsigned long)
?SetSlot@CBitArray@@QAGJK@Z
; public: long __stdcall CBitArray::SetSlots(unsigned long,unsigned long)
?SetSlots@CBitArray@@QAGJKK@Z
; public: void __thiscall CUtlProps2::SetStatus(unsigned long,unsigned long,unsigned long)
?SetStatus@CUtlProps2@@QAEXKKK@Z
; protected: void __thiscall CUtlPropInfo::SetUPropSetCount(unsigned long)
?SetUPropSetCount@CUtlPropInfo@@IAEXK@Z
; public: void __thiscall CUtlProps2::SetUPropSetCount(unsigned long)
?SetUPropSetCount@CUtlProps2@@QAEXK@Z
; public: void __thiscall CUtlProps2::SetValBool(unsigned long,unsigned long,short)
?SetValBool@CUtlProps2@@QAEXKKF@Z
; public: void __thiscall CUtlProps2::SetValEmpty(unsigned long,unsigned long)
?SetValEmpty@CUtlProps2@@QAEXKK@Z
; public: void __thiscall CUtlProps2::SetValLong(unsigned long,unsigned long,long)
?SetValLong@CUtlProps2@@QAEXKKJ@Z
; public: void __thiscall CUtlProps2::SetValShort(unsigned long,unsigned long,short)
?SetValShort@CUtlProps2@@QAEXKKF@Z
; public: long __thiscall CUtlProps2::SetValString(unsigned long,unsigned long,unsigned short const *)
?SetValString@CUtlProps2@@QAEJKKPBG@Z
; public: long __thiscall CUtlProps2::SetVariant(unsigned long,unsigned long,struct tagVARIANT *)
?SetVariant@CUtlProps2@@QAEJKKPAUtagVARIANT@@@Z
; public: long __stdcall CEnum::Skip(unsigned long)
?Skip@CEnum@@QAGJK@Z
; public: virtual long __stdcall CEnumConnectionPoints::Skip(unsigned long)
?Skip@CEnumConnectionPoints@@UAGJK@Z
; public: virtual long __stdcall CEnumConnections::Skip(unsigned long)
?Skip@CEnumConnections@@UAGJK@Z
; public: void __thiscall CExtBuffer::Transfer(class CExtBuffer *)
?Transfer@CExtBuffer@@QAEXPAV1@@Z
; long __cdecl UnRegisterServer(void * const,unsigned long,struct tagREGENTRIES const * const)
?UnRegisterServer@@YAJQAXKQBUtagREGENTRIES@@@Z
; public: virtual long __stdcall CRowsetConnectionPoint::Unadvise(unsigned long)
?Unadvise@CRowsetConnectionPoint@@UAGJK@Z
; public: void * __stdcall CVLHeap::VLAlloc(unsigned long)
?VLAlloc@CVLHeap@@QAGPAXK@Z
; public: void __stdcall CVLHeap::VLFree(void *)
?VLFree@CVLHeap@@QAGXPAX@Z
; public: void * __stdcall CVLHeap::VLGrow(void *,unsigned long)
?VLGrow@CVLHeap@@QAGPAXPAXK@Z
; public: void * __stdcall CVLHeap::VLTrueRealloc(void *,unsigned long)
?VLTrueRealloc@CVLHeap@@QAGPAXPAXK@Z
; long __cdecl W95ConvertToAnsiOrOem(unsigned short const *,char * *,unsigned long,unsigned long *,int,int)
?W95ConvertToAnsiOrOem@@YAJPBGPAPADKPAKHH@Z
; long __cdecl W95ConvertToUnicode(char const *,long,unsigned short * *,unsigned long *,int,int)
?W95ConvertToUnicode@@YAJPBDJPAPAGPAKHH@Z
; public: long __stdcall CExtBuffer::WriteIntoExtBuffer(void const *,unsigned long)
?WriteIntoExtBuffer@CExtBuffer@@QAGJPBXK@Z
; public: long __stdcall CExtBuffer::WriteWCharToExtBuffer(unsigned short,unsigned long)
?WriteWCharToExtBuffer@CExtBuffer@@QAGJGK@Z
; public: int __thiscall CBaseObjBoko::ZombieMustUnprepare(void)
?ZombieMustUnprepare@CBaseObjBoko@@QAEHXZ
; public: int __thiscall CBaseObjZombie::ZombieMustUnprepare(void)
?ZombieMustUnprepare@CBaseObjZombie@@QAEHXZ
; public: int __thiscall CBitArray::fGetCopyOf(class CBitArray *)
?fGetCopyOf@CBitArray@@QAEHPAV1@@Z
; public: int __thiscall CRowsetConnectionPoint::fInit(void)
?fInit@CRowsetConnectionPoint@@QAEHXZ
; public: int __thiscall CConnectData::fOkToFire(enum DBREASONENUM,enum DBEVENTPHASEENUM)
?fOkToFire@CConnectData@@QAEHW4DBREASONENUM@@W4DBEVENTPHASEENUM@@@Z
; public: int __thiscall CRowsetConnectionPoint::fReasonNeeded(enum DBREASONENUM,enum DBEVENTPHASEENUM)
?fReasonNeeded@CRowsetConnectionPoint@@QAEHW4DBREASONENUM@@W4DBEVENTPHASEENUM@@@Z
; public: int __thiscall CRowsetConnectionPointContainer::fReasonNeeded(unsigned long,enum DBREASONENUM,enum DBEVENTPHASEENUM)
?fReasonNeeded@CRowsetConnectionPointContainer@@QAEHKW4DBREASONENUM@@W4DBEVENTPHASEENUM@@@Z
; private: static unsigned long const * const  CUtlProps2::sm_rgPropStatusFromInternStatus
?sm_rgPropStatusFromInternStatus@CUtlProps2@@0QBKB
