; 
; 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
