; 
; Exports of file esscli.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY esscli.dll
EXPORTS
; public: __cdecl CClassInfoArray::CClassInfoArray(void) __ptr64
??0CClassInfoArray@@QEAA@XZ
; public: __cdecl CClassInformation::CClassInformation(struct CClassInformation const & __ptr64) __ptr64
??0CClassInformation@@QEAA@AEBU0@@Z
; public: __cdecl CClassInformation::CClassInformation(void) __ptr64
??0CClassInformation@@QEAA@XZ
; public: __cdecl CContextMetaData::CContextMetaData(class CMetaData * __ptr64,struct IWbemContext * __ptr64) __ptr64
??0CContextMetaData@@QEAA@PEAVCMetaData@@PEAUIWbemContext@@@Z
; public: __cdecl CEvalNode::CEvalNode(class CEvalNode const & __ptr64) __ptr64
??0CEvalNode@@QEAA@AEBV0@@Z
; public: __cdecl CEvalNode::CEvalNode(void) __ptr64
??0CEvalNode@@QEAA@XZ
; public: __cdecl CEvalTree::CEvalTree(class CEvalTree const & __ptr64) __ptr64
??0CEvalTree@@QEAA@AEBV0@@Z
; public: __cdecl CEvalTree::CEvalTree(void) __ptr64
??0CEvalTree@@QEAA@XZ
; public: __cdecl CMetaData::CMetaData(class CMetaData const & __ptr64) __ptr64
??0CMetaData@@QEAA@AEBV0@@Z
; public: __cdecl CMetaData::CMetaData(void) __ptr64
??0CMetaData@@QEAA@XZ
; public: __cdecl CObjectInfo::CObjectInfo(void) __ptr64
??0CObjectInfo@@QEAA@XZ
; public: __cdecl CPropertyProjectionFilter::CPropertyProjectionFilter(class CPropertyProjectionFilter const & __ptr64) __ptr64
??0CPropertyProjectionFilter@@QEAA@AEBV0@@Z
; public: __cdecl CPropertyProjectionFilter::CPropertyProjectionFilter(void) __ptr64
??0CPropertyProjectionFilter@@QEAA@XZ
; public: __cdecl CReuseMemoryManager::CReuseMemoryManager(unsigned __int64,unsigned __int64) __ptr64
??0CReuseMemoryManager@@QEAA@_K0@Z
; public: __cdecl CSortedArray::CSortedArray(class CSortedArray & __ptr64) __ptr64
??0CSortedArray@@QEAA@AEAV0@@Z
; public: __cdecl CSortedArray::CSortedArray(int,int) __ptr64
??0CSortedArray@@QEAA@HH@Z
; public: __cdecl CSortedArray::CSortedArray(unsigned int,unsigned __int64 * __ptr64) __ptr64
??0CSortedArray@@QEAA@IPEA_K@Z
; public: __cdecl CStandardMetaData::CStandardMetaData(class CStandardMetaData const & __ptr64) __ptr64
??0CStandardMetaData@@QEAA@AEBV0@@Z
; public: __cdecl CStandardMetaData::CStandardMetaData(struct IWbemServices * __ptr64) __ptr64
??0CStandardMetaData@@QEAA@PEAUIWbemServices@@@Z
; public: __cdecl CTempMemoryManager::CTempMemoryManager(void) __ptr64
??0CTempMemoryManager@@QEAA@XZ
; public: __cdecl CTimeKeeper::CTimeKeeper(void) __ptr64
??0CTimeKeeper@@QEAA@XZ
; public: __cdecl CClassInfoArray::~CClassInfoArray(void) __ptr64
??1CClassInfoArray@@QEAA@XZ
; public: __cdecl CClassInformation::~CClassInformation(void) __ptr64
??1CClassInformation@@QEAA@XZ
; public: __cdecl CContextMetaData::~CContextMetaData(void) __ptr64
??1CContextMetaData@@QEAA@XZ
; public: virtual __cdecl CEvalNode::~CEvalNode(void) __ptr64
??1CEvalNode@@UEAA@XZ
; public: __cdecl CEvalTree::~CEvalTree(void) __ptr64
??1CEvalTree@@QEAA@XZ
; public: virtual __cdecl CMetaData::~CMetaData(void) __ptr64
??1CMetaData@@UEAA@XZ
; public: __cdecl CObjectInfo::~CObjectInfo(void) __ptr64
??1CObjectInfo@@QEAA@XZ
; public: __cdecl CPropertyProjectionFilter::~CPropertyProjectionFilter(void) __ptr64
??1CPropertyProjectionFilter@@QEAA@XZ
; public: __cdecl CReuseMemoryManager::~CReuseMemoryManager(void) __ptr64
??1CReuseMemoryManager@@QEAA@XZ
; public: __cdecl CSortedArray::~CSortedArray(void) __ptr64
??1CSortedArray@@QEAA@XZ
; public: virtual __cdecl CStandardMetaData::~CStandardMetaData(void) __ptr64
??1CStandardMetaData@@UEAA@XZ
; public: __cdecl CTempMemoryManager::~CTempMemoryManager(void) __ptr64
??1CTempMemoryManager@@QEAA@XZ
; public: __cdecl CTimeKeeper::~CTimeKeeper(void) __ptr64
??1CTimeKeeper@@QEAA@XZ
; public: bool __cdecl CClassInfoArray::operator=(class CClassInfoArray & __ptr64) __ptr64
??4CClassInfoArray@@QEAA_NAEAV0@@Z
; public: struct CClassInformation & __ptr64 __cdecl CClassInformation::operator=(struct CClassInformation const & __ptr64) __ptr64
??4CClassInformation@@QEAAAEAU0@AEBU0@@Z
; public: class CContextMetaData & __ptr64 __cdecl CContextMetaData::operator=(class CContextMetaData const & __ptr64) __ptr64
??4CContextMetaData@@QEAAAEAV0@AEBV0@@Z
; public: void __cdecl CEvalTree::operator=(class CEvalTree const & __ptr64) __ptr64
??4CEvalTree@@QEAAXAEBV0@@Z
; public: class CMetaData & __ptr64 __cdecl CMetaData::operator=(class CMetaData const & __ptr64) __ptr64
??4CMetaData@@QEAAAEAV0@AEBV0@@Z
; public: class CObjectInfo & __ptr64 __cdecl CObjectInfo::operator=(class CObjectInfo const & __ptr64) __ptr64
??4CObjectInfo@@QEAAAEAV0@AEBV0@@Z
; public: class CPropertyProjectionFilter & __ptr64 __cdecl CPropertyProjectionFilter::operator=(class CPropertyProjectionFilter const & __ptr64) __ptr64
??4CPropertyProjectionFilter@@QEAAAEAV0@AEBV0@@Z
; public: class CQueryAnalyser & __ptr64 __cdecl CQueryAnalyser::operator=(class CQueryAnalyser const & __ptr64) __ptr64
??4CQueryAnalyser@@QEAAAEAV0@AEBV0@@Z
; public: class CReuseMemoryManager & __ptr64 __cdecl CReuseMemoryManager::operator=(class CReuseMemoryManager const & __ptr64) __ptr64
??4CReuseMemoryManager@@QEAAAEAV0@AEBV0@@Z
; public: void __cdecl CSortedArray::operator=(class CSortedArray const & __ptr64) __ptr64
??4CSortedArray@@QEAAXAEBV0@@Z
; public: class CStandardMetaData & __ptr64 __cdecl CStandardMetaData::operator=(class CStandardMetaData const & __ptr64) __ptr64
??4CStandardMetaData@@QEAAAEAV0@AEBV0@@Z
; public: class CTempMemoryManager & __ptr64 __cdecl CTempMemoryManager::operator=(class CTempMemoryManager const & __ptr64) __ptr64
??4CTempMemoryManager@@QEAAAEAV0@AEBV0@@Z
; public: class CTimeKeeper & __ptr64 __cdecl CTimeKeeper::operator=(class CTimeKeeper const & __ptr64) __ptr64
??4CTimeKeeper@@QEAAAEAV0@AEBV0@@Z
; const  CEvalNode::`vftable'
??_7CEvalNode@@6B@
; const  CMetaData::`vftable'
??_7CMetaData@@6B@
; const  CPropertyProjectionFilter::`vftable'
??_7CPropertyProjectionFilter@@6B@
; const  CStandardMetaData::`vftable'
??_7CStandardMetaData@@6B@
; public: void __cdecl CSortedArray::`default constructor closure'(void) __ptr64
??_FCSortedArray@@QEAAXXZ
; public: int __cdecl CSortedArray::Add(unsigned __int64) __ptr64
?Add@CSortedArray@@QEAAH_K@Z
; public: bool __cdecl CClassInfoArray::AddClass(struct CClassInformation * __ptr64) __ptr64
?AddClass@CClassInfoArray@@QEAA_NPEAUCClassInformation@@@Z
; public: int __cdecl CSortedArray::AddDataFrom(class CSortedArray const & __ptr64) __ptr64
?AddDataFrom@CSortedArray@@QEAAHAEBV1@@Z
; public: int __cdecl CSortedArray::AddDataFrom(unsigned __int64 const * __ptr64,unsigned int) __ptr64
?AddDataFrom@CSortedArray@@QEAAHPEB_KI@Z
; public: bool __cdecl CPropertyProjectionFilter::AddProperty(class CPropertyName const & __ptr64) __ptr64
?AddProperty@CPropertyProjectionFilter@@QEAA_NAEBVCPropertyName@@@Z
; public: virtual unsigned long __cdecl CMetaData::AddRef(void) __ptr64
?AddRef@CMetaData@@UEAAKXZ
; public: void * __ptr64 __cdecl CReuseMemoryManager::Allocate(void) __ptr64
?Allocate@CReuseMemoryManager@@QEAAPEAXXZ
; public: void * __ptr64 __cdecl CTempMemoryManager::Allocate(unsigned __int64) __ptr64
?Allocate@CTempMemoryManager@@QEAAPEAX_K@Z
; protected: static long __cdecl CQueryAnalyser::AndDefiniteClassArrays(class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64)
?AndDefiniteClassArrays@CQueryAnalyser@@KAJPEAVCClassInfoArray@@00@Z
; protected: static long __cdecl CQueryAnalyser::AndPossibleClassArrays(class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64)
?AndPossibleClassArrays@CQueryAnalyser@@KAJPEAVCClassInfoArray@@00@Z
; protected: static long __cdecl CQueryAnalyser::AndQueryExpressions(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64)
?AndQueryExpressions@CQueryAnalyser@@KAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@00@Z
; protected: static void __cdecl CQueryAnalyser::AppendQueryExpression(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64)
?AppendQueryExpression@CQueryAnalyser@@KAXPEAUQL_LEVEL_1_RPN_EXPRESSION@@0@Z
; public: long __cdecl CEvalTree::ApplyPredicate(class CLeafPredicate * __ptr64) __ptr64
?ApplyPredicate@CEvalTree@@QEAAJPEAVCLeafPredicate@@@Z
; public: static long __cdecl CEvalTree::BuildFromToken(class CContextMetaData * __ptr64,class CImplicationList & __ptr64,struct QL_LEVEL_1_TOKEN & __ptr64,class CEvalNode * __ptr64 * __ptr64)
?BuildFromToken@CEvalTree@@SAJPEAVCContextMetaData@@AEAVCImplicationList@@AEAUQL_LEVEL_1_TOKEN@@PEAPEAVCEvalNode@@@Z
; public: static long __cdecl CEvalTree::BuildTwoPropFromToken(class CContextMetaData * __ptr64,class CImplicationList & __ptr64,struct QL_LEVEL_1_TOKEN & __ptr64,class CEvalNode * __ptr64 * __ptr64)
?BuildTwoPropFromToken@CEvalTree@@SAJPEAVCContextMetaData@@AEAVCImplicationList@@AEAUQL_LEVEL_1_TOKEN@@PEAPEAVCEvalNode@@@Z
; public: static long __cdecl CQueryAnalyser::CanPointToClass(struct IWbemClassObject * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,class CContextMetaData * __ptr64)
?CanPointToClass@CQueryAnalyser@@SAJPEAUIWbemClassObject@@PEBG1PEAVCContextMetaData@@@Z
; public: void __cdecl CClassInfoArray::Clear(void) __ptr64
?Clear@CClassInfoArray@@QEAAXXZ
; public: bool __cdecl CEvalTree::Clear(void) __ptr64
?Clear@CEvalTree@@QEAA_NXZ
; public: void __cdecl CObjectInfo::Clear(void) __ptr64
?Clear@CObjectInfo@@QEAAXXZ
; public: void __cdecl CReuseMemoryManager::Clear(void) __ptr64
?Clear@CReuseMemoryManager@@QEAAXXZ
; public: void __cdecl CStandardMetaData::Clear(void) __ptr64
?Clear@CStandardMetaData@@QEAAXXZ
; public: void __cdecl CTempMemoryManager::Clear(void) __ptr64
?Clear@CTempMemoryManager@@QEAAXXZ
; public: static class CEvalNode * __ptr64 __cdecl CEvalNode::CloneNode(class CEvalNode const * __ptr64)
?CloneNode@CEvalNode@@SAPEAV1@PEBV1@@Z
; public: static long __cdecl CEvalTree::Combine(class CEvalNode * __ptr64,class CEvalNode * __ptr64,int,class CContextMetaData * __ptr64,class CImplicationList & __ptr64,bool,bool,class CEvalNode * __ptr64 * __ptr64)
?Combine@CEvalTree@@SAJPEAVCEvalNode@@0HPEAVCContextMetaData@@AEAVCImplicationList@@_N3PEAPEAV2@@Z
; protected: static long __cdecl CEvalTree::CombineLeafWithBranch(class CValueNode * __ptr64,class CBranchingNode * __ptr64,int,class CContextMetaData * __ptr64,class CImplicationList & __ptr64,bool,bool,class CEvalNode * __ptr64 * __ptr64)
?CombineLeafWithBranch@CEvalTree@@KAJPEAVCValueNode@@PEAVCBranchingNode@@HPEAVCContextMetaData@@AEAVCImplicationList@@_N4PEAPEAVCEvalNode@@@Z
; public: long __cdecl CEvalTree::CombineWith(class CEvalTree & __ptr64,class CContextMetaData * __ptr64,int,long) __ptr64
?CombineWith@CEvalTree@@QEAAJAEAV1@PEAVCContextMetaData@@HJ@Z
; public: static int __cdecl CEvalTree::Compare(class CEvalNode * __ptr64,class CEvalNode * __ptr64)
?Compare@CEvalTree@@SAHPEAVCEvalNode@@0@Z
; public: int __cdecl CSortedArray::Compare(class CSortedArray & __ptr64) __ptr64
?Compare@CSortedArray@@QEAAHAEAV1@@Z
; public: static int __cdecl CQueryAnalyser::CompareRequestedToProvided(class CClassInfoArray & __ptr64,class CClassInfoArray & __ptr64)
?CompareRequestedToProvided@CQueryAnalyser@@SAHAEAVCClassInfoArray@@0@Z
; public: int __cdecl CSortedArray::CopyDataFrom(class CSortedArray const & __ptr64) __ptr64
?CopyDataFrom@CSortedArray@@QEAAHAEBV1@@Z
; public: int __cdecl CSortedArray::CopyDataFrom(unsigned __int64 const * __ptr64,unsigned int) __ptr64
?CopyDataFrom@CSortedArray@@QEAAHPEB_KI@Z
; public: unsigned int __cdecl CSortedArray::CopyTo(unsigned __int64 * __ptr64,unsigned int) __ptr64
?CopyTo@CSortedArray@@QEAAIPEA_KI@Z
; public: static long __cdecl CEvalTree::CreateFromConjunction(class CContextMetaData * __ptr64,class CImplicationList & __ptr64,class CConjunction * __ptr64,class CEvalNode * __ptr64 * __ptr64)
?CreateFromConjunction@CEvalTree@@SAJPEAVCContextMetaData@@AEAVCImplicationList@@PEAVCConjunction@@PEAPEAVCEvalNode@@@Z
; public: long __cdecl CEvalTree::CreateFromDNF(class CContextMetaData * __ptr64,class CImplicationList & __ptr64,class CDNFExpression * __ptr64,class CEvalNode * __ptr64 * __ptr64) __ptr64
?CreateFromDNF@CEvalTree@@QEAAJPEAVCContextMetaData@@AEAVCImplicationList@@PEAVCDNFExpression@@PEAPEAVCEvalNode@@@Z
; public: long __cdecl CEvalTree::CreateFromQuery(class CContextMetaData * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,long,long) __ptr64
?CreateFromQuery@CEvalTree@@QEAAJPEAVCContextMetaData@@PEAUQL_LEVEL_1_RPN_EXPRESSION@@JJ@Z
; public: long __cdecl CEvalTree::CreateFromQuery(class CContextMetaData * __ptr64,unsigned short const * __ptr64,int,struct QL_LEVEL_1_TOKEN * __ptr64,long,long) __ptr64
?CreateFromQuery@CEvalTree@@QEAAJPEAVCContextMetaData@@PEBGHPEAUQL_LEVEL_1_TOKEN@@JJ@Z
; public: long __cdecl CEvalTree::CreateFromQuery(class CContextMetaData * __ptr64,unsigned short const * __ptr64,long,long) __ptr64
?CreateFromQuery@CEvalTree@@QEAAJPEAVCContextMetaData@@PEBGJJ@Z
; public: long __cdecl CEvalTree::CreateProjection(class CEvalTree & __ptr64,class CContextMetaData * __ptr64,class CProjectionFilter * __ptr64,enum EProjectionType,bool) __ptr64
?CreateProjection@CEvalTree@@QEAAJAEAV1@PEAVCContextMetaData@@PEAVCProjectionFilter@@W4EProjectionType@@_N@Z
; public: bool __cdecl CTimeKeeper::DecorateObject(struct _IWmiObject * __ptr64) __ptr64
?DecorateObject@CTimeKeeper@@QEAA_NPEAU_IWmiObject@@@Z
; public: void __cdecl CSortedArray::Empty(void) __ptr64
?Empty@CSortedArray@@QEAAXXZ
; public: long __cdecl CEvalTree::Evaluate(struct IWbemObjectAccess * __ptr64,class CSortedArray & __ptr64) __ptr64
?Evaluate@CEvalTree@@QEAAJPEAUIWbemObjectAccess@@AEAVCSortedArray@@@Z
; public: static long __cdecl CEvalTree::Evaluate(class CObjectInfo & __ptr64,class CEvalNode * __ptr64,class CSortedArray & __ptr64)
?Evaluate@CEvalTree@@SAJAEAVCObjectInfo@@PEAVCEvalNode@@AEAVCSortedArray@@@Z
; public: unsigned int __cdecl CSortedArray::Find(unsigned __int64) __ptr64
?Find@CSortedArray@@QEAAI_K@Z
; public: void __cdecl CReuseMemoryManager::Free(void * __ptr64) __ptr64
?Free@CReuseMemoryManager@@QEAAXPEAX@Z
; public: void __cdecl CTempMemoryManager::Free(void * __ptr64,unsigned __int64) __ptr64
?Free@CTempMemoryManager@@QEAAXPEAX_K@Z
; long __cdecl GetAccessMask(void * __ptr64,struct _ACL * __ptr64,unsigned long * __ptr64)
?GetAccessMask@@YAJPEAXPEAU_ACL@@PEAK@Z
; public: unsigned __int64 * __ptr64 __cdecl CSortedArray::GetArrayPtr(void) __ptr64
?GetArrayPtr@CSortedArray@@QEAAPEA_KXZ
; public: unsigned __int64 __cdecl CSortedArray::GetAt(int) __ptr64
?GetAt@CSortedArray@@QEAA_KH@Z
; public: struct CClassInformation * __ptr64 __cdecl CClassInfoArray::GetClass(int) __ptr64
?GetClass@CClassInfoArray@@QEAAPEAUCClassInformation@@H@Z
; public: long __cdecl CContextMetaData::GetClass(unsigned short const * __ptr64,struct _IWmiObject * __ptr64 * __ptr64) __ptr64
?GetClass@CContextMetaData@@QEAAJPEBGPEAPEAU_IWmiObject@@@Z
; public: virtual long __cdecl CMetaData::GetClass(unsigned short const * __ptr64,struct IWbemContext * __ptr64,struct IWbemClassObject * __ptr64 * __ptr64) __ptr64
?GetClass@CMetaData@@UEAAJPEBGPEAUIWbemContext@@PEAPEAUIWbemClassObject@@@Z
; public: virtual long __cdecl CStandardMetaData::GetClass(unsigned short const * __ptr64,struct IWbemContext * __ptr64,struct _IWmiObject * __ptr64 * __ptr64) __ptr64
?GetClass@CStandardMetaData@@UEAAJPEBGPEAUIWbemContext@@PEAPEAU_IWmiObject@@@Z
; public: static long __cdecl CQueryAnalyser::GetDefiniteInstanceClasses(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,class CClassInfoArray * __ptr64 & __ptr64)
?GetDefiniteInstanceClasses@CQueryAnalyser@@SAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@AEAPEAVCClassInfoArray@@@Z
; protected: static long __cdecl CQueryAnalyser::GetInstanceClasses(struct QL_LEVEL_1_TOKEN & __ptr64,class CClassInfoArray & __ptr64)
?GetInstanceClasses@CQueryAnalyser@@KAJAEAUQL_LEVEL_1_TOKEN@@AEAVCClassInfoArray@@@Z
; public: long __cdecl CObjectInfo::GetLength(void) __ptr64
?GetLength@CObjectInfo@@QEAAJXZ
; public: static long __cdecl CQueryAnalyser::GetLimitingQueryForInstanceClass(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct CClassInformation & __ptr64,unsigned short * __ptr64 & __ptr64)
?GetLimitingQueryForInstanceClass@CQueryAnalyser@@SAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@AEAUCClassInformation@@AEAPEAG@Z
; public: static long __cdecl CQueryAnalyser::GetNecessaryQueryForClass(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct IWbemClassObject * __ptr64,class CWStringArray & __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64 & __ptr64)
?GetNecessaryQueryForClass@CQueryAnalyser@@SAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@PEAUIWbemClassObject@@AEAVCWStringArray@@AEAPEAU2@@Z
; public: static long __cdecl CQueryAnalyser::GetNecessaryQueryForProperty(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,class CPropertyName & __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64 & __ptr64)
?GetNecessaryQueryForProperty@CQueryAnalyser@@SAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@AEAVCPropertyName@@AEAPEAU2@@Z
; public: int __cdecl CClassInfoArray::GetNumClasses(void) __ptr64
?GetNumClasses@CClassInfoArray@@QEAAHXZ
; public: struct _IWmiObject * __ptr64 __cdecl CObjectInfo::GetObjectAt(long) __ptr64
?GetObjectAt@CObjectInfo@@QEAAPEAU_IWmiObject@@J@Z
; public: static long __cdecl CQueryAnalyser::GetPossibleInstanceClasses(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,class CClassInfoArray * __ptr64 & __ptr64)
?GetPossibleInstanceClasses@CQueryAnalyser@@SAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@AEAPEAVCClassInfoArray@@@Z
; protected: static long __cdecl CQueryAnalyser::GetPropertiesThatMustDiffer(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct CClassInformation & __ptr64,class CWStringArray & __ptr64)
?GetPropertiesThatMustDiffer@CQueryAnalyser@@KAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@AEAUCClassInformation@@AEAVCWStringArray@@@Z
; public: static int __cdecl CEvalNode::GetType(class CEvalNode * __ptr64)
?GetType@CEvalNode@@SAHPEAV1@@Z
; protected: static long __cdecl CEvalTree::InnerCombine(class CEvalNode * __ptr64,class CEvalNode * __ptr64,int,class CContextMetaData * __ptr64,class CImplicationList & __ptr64,bool,bool,class CEvalNode * __ptr64 * __ptr64)
?InnerCombine@CEvalTree@@KAJPEAVCEvalNode@@0HPEAVCContextMetaData@@AEAVCImplicationList@@_N3PEAPEAV2@@Z
; public: void __cdecl CSortedArray::Insert(unsigned __int64) __ptr64
?Insert@CSortedArray@@QEAAX_K@Z
; public: static bool __cdecl CEvalNode::IsAllFalse(class CEvalNode * __ptr64)
?IsAllFalse@CEvalNode@@SA_NPEAV1@@Z
; public: virtual bool __cdecl CEvalNode::IsAllFalse(void) __ptr64
?IsAllFalse@CEvalNode@@UEAA_NXZ
; public: bool __cdecl CEvalTree::IsFalse(void) __ptr64
?IsFalse@CEvalTree@@QEAA_NXZ
; public: virtual bool __cdecl CPropertyProjectionFilter::IsInSet(class CEvalNode * __ptr64) __ptr64
?IsInSet@CPropertyProjectionFilter@@UEAA_NPEAVCEvalNode@@@Z
; public: static bool __cdecl CEvalNode::IsInvalid(class CEvalNode * __ptr64)
?IsInvalid@CEvalNode@@SA_NPEAV1@@Z
; public: virtual bool __cdecl CEvalNode::IsInvalid(void) __ptr64
?IsInvalid@CEvalNode@@UEAA_NXZ
; public: int __cdecl CClassInfoArray::IsLimited(void) __ptr64
?IsLimited@CClassInfoArray@@QEAAHXZ
; public: static long __cdecl CEvalTree::IsMergeAdvisable(class CEvalNode * __ptr64,class CEvalNode * __ptr64,class CImplicationList & __ptr64)
?IsMergeAdvisable@CEvalTree@@SAJPEAVCEvalNode@@0AEAVCImplicationList@@@Z
; public: static bool __cdecl CEvalNode::IsNoop(class CEvalNode * __ptr64,int)
?IsNoop@CEvalNode@@SA_NPEAV1@H@Z
; public: virtual bool __cdecl CEvalNode::IsNoop(int) __ptr64
?IsNoop@CEvalNode@@UEAA_NH@Z
; protected: static int __cdecl CQueryAnalyser::IsPropertyInClass(class CPropertyName & __ptr64,struct IWbemClassObject * __ptr64,class CWStringArray & __ptr64)
?IsPropertyInClass@CQueryAnalyser@@KAHAEAVCPropertyName@@PEAUIWbemClassObject@@AEAVCWStringArray@@@Z
; protected: static int __cdecl CQueryAnalyser::IsTokenAboutClass(struct QL_LEVEL_1_TOKEN & __ptr64,struct IWbemClassObject * __ptr64,class CWStringArray & __ptr64)
?IsTokenAboutClass@CQueryAnalyser@@KAHAEAUQL_LEVEL_1_TOKEN@@PEAUIWbemClassObject@@AEAVCWStringArray@@@Z
; protected: static int __cdecl CQueryAnalyser::IsTokenAboutProperty(struct QL_LEVEL_1_TOKEN & __ptr64,class CPropertyName & __ptr64)
?IsTokenAboutProperty@CQueryAnalyser@@KAHAEAUQL_LEVEL_1_TOKEN@@AEAVCPropertyName@@@Z
; long __cdecl IsUserAdministrator(void * __ptr64)
?IsUserAdministrator@@YAJPEAX@Z
; long __cdecl IsUserInGroup(void * __ptr64,void * __ptr64)
?IsUserInGroup@@YAJPEAX0@Z
; public: bool __cdecl CEvalTree::IsValid(void) __ptr64
?IsValid@CEvalTree@@QEAA_NXZ
; protected: static long __cdecl CQueryAnalyser::NegateDefiniteClassArray(class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64)
?NegateDefiniteClassArray@CQueryAnalyser@@KAJPEAVCClassInfoArray@@0@Z
; protected: static long __cdecl CQueryAnalyser::NegatePossibleClassArray(class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64)
?NegatePossibleClassArray@CQueryAnalyser@@KAJPEAVCClassInfoArray@@0@Z
; protected: static long __cdecl CQueryAnalyser::NegateQueryExpression(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64)
?NegateQueryExpression@CQueryAnalyser@@KAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@0@Z
; public: virtual long __cdecl CEvalNode::Optimize(class CContextMetaData * __ptr64,class CEvalNode * __ptr64 * __ptr64) __ptr64
?Optimize@CEvalNode@@UEAAJPEAVCContextMetaData@@PEAPEAV1@@Z
; public: long __cdecl CEvalTree::Optimize(class CContextMetaData * __ptr64) __ptr64
?Optimize@CEvalTree@@QEAAJPEAVCContextMetaData@@@Z
; protected: static long __cdecl CQueryAnalyser::OrDefiniteClassArrays(class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64)
?OrDefiniteClassArrays@CQueryAnalyser@@KAJPEAVCClassInfoArray@@00@Z
; protected: static long __cdecl CQueryAnalyser::OrPossibleClassArrays(class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64,class CClassInfoArray * __ptr64)
?OrPossibleClassArrays@CQueryAnalyser@@KAJPEAVCClassInfoArray@@00@Z
; protected: static long __cdecl CQueryAnalyser::OrQueryExpressions(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64)
?OrQueryExpressions@CQueryAnalyser@@KAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@00@Z
; public: static void __cdecl CEvalNode::PrintOffset(struct _iobuf * __ptr64,int)
?PrintOffset@CEvalNode@@SAXPEAU_iobuf@@H@Z
; public: static long __cdecl CEvalTree::Project(class CContextMetaData * __ptr64,class CImplicationList & __ptr64,class CEvalNode * __ptr64,class CProjectionFilter * __ptr64,enum EProjectionType,bool,class CEvalNode * __ptr64 * __ptr64)
?Project@CEvalTree@@SAJPEAVCContextMetaData@@AEAVCImplicationList@@PEAVCEvalNode@@PEAVCProjectionFilter@@W4EProjectionType@@_NPEAPEAV4@@Z
; public: virtual long __cdecl CMetaData::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CMetaData@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: void __cdecl CEvalTree::Rebase(unsigned __int64) __ptr64
?Rebase@CEvalTree@@QEAAX_K@Z
; public: void __cdecl CSortedArray::Rebase(unsigned __int64) __ptr64
?Rebase@CSortedArray@@QEAAX_K@Z
; public: virtual unsigned long __cdecl CMetaData::Release(void) __ptr64
?Release@CMetaData@@UEAAKXZ
; public: bool __cdecl CSortedArray::Remove(unsigned __int64) __ptr64
?Remove@CSortedArray@@QEAA_N_K@Z
; public: void __cdecl CClassInfoArray::RemoveClass(int) __ptr64
?RemoveClass@CClassInfoArray@@QEAAXH@Z
; public: long __cdecl CEvalTree::RemoveIndex(int) __ptr64
?RemoveIndex@CEvalTree@@QEAAJH@Z
; protected: unsigned __int64 __cdecl CTempMemoryManager::RoundUp(unsigned __int64) __ptr64
?RoundUp@CTempMemoryManager@@IEAA_K_K@Z
; public: bool __cdecl CEvalTree::SetBool(int) __ptr64
?SetBool@CEvalTree@@QEAA_NH@Z
; public: bool __cdecl CObjectInfo::SetLength(long) __ptr64
?SetLength@CObjectInfo@@QEAA_NJ@Z
; public: void __cdecl CClassInfoArray::SetLimited(int) __ptr64
?SetLimited@CClassInfoArray@@QEAAXH@Z
; public: void __cdecl CObjectInfo::SetObjectAt(long,struct _IWmiObject * __ptr64) __ptr64
?SetObjectAt@CObjectInfo@@QEAAXJPEAU_IWmiObject@@@Z
; public: bool __cdecl CClassInfoArray::SetOne(unsigned short const * __ptr64,int) __ptr64
?SetOne@CClassInfoArray@@QEAA_NPEBGH@Z
; public: void __cdecl CSortedArray::SetSize(int) __ptr64
?SetSize@CSortedArray@@QEAAXH@Z
; public: static long __cdecl CQueryAnalyser::SimplifyQueryForChild(struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64,unsigned short const * __ptr64,struct IWbemClassObject * __ptr64,class CContextMetaData * __ptr64,struct QL_LEVEL_1_RPN_EXPRESSION * __ptr64 & __ptr64)
?SimplifyQueryForChild@CQueryAnalyser@@SAJPEAUQL_LEVEL_1_RPN_EXPRESSION@@PEBGPEAUIWbemClassObject@@PEAVCContextMetaData@@AEAPEAU2@@Z
; protected: static int __cdecl CQueryAnalyser::SimplifyTokenForChild(struct QL_LEVEL_1_TOKEN & __ptr64,unsigned short const * __ptr64,struct IWbemClassObject * __ptr64,class CContextMetaData * __ptr64)
?SimplifyTokenForChild@CQueryAnalyser@@KAHAEAUQL_LEVEL_1_TOKEN@@PEBGPEAUIWbemClassObject@@PEAVCContextMetaData@@@Z
; public: int __cdecl CSortedArray::Size(void)const  __ptr64
?Size@CSortedArray@@QEBAHXZ
; public: unsigned __int64 * __ptr64 __cdecl CSortedArray::UnbindPtr(void) __ptr64
?UnbindPtr@CSortedArray@@QEAAPEA_KXZ
; public: long __cdecl CEvalTree::UtilizeGuarantee(class CEvalTree & __ptr64,class CContextMetaData * __ptr64) __ptr64
?UtilizeGuarantee@CEvalTree@@QEAAJAEAV1@PEAVCContextMetaData@@@Z
; protected: static int __cdecl CQueryAnalyser::ValidateSQLDateTime(unsigned short const * __ptr64)
?ValidateSQLDateTime@CQueryAnalyser@@KAHPEBG@Z
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
