; 
; Exports of file IISMAP.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY IISMAP.dll
EXPORTS
; public: __cdecl CAllocString::CAllocString(void) __ptr64
??0CAllocString@@QEAA@XZ
; public: __cdecl CBlob::CBlob(void) __ptr64
??0CBlob@@QEAA@XZ
; public: __cdecl CBlobXBF::CBlobXBF(void) __ptr64
??0CBlobXBF@@QEAA@XZ
; public: __cdecl CCert11Mapping::CCert11Mapping(class CIisAcctMapper * __ptr64) __ptr64
??0CCert11Mapping@@QEAA@PEAVCIisAcctMapper@@@Z
; public: __cdecl CCertGlobalRuleInfo::CCertGlobalRuleInfo(void) __ptr64
??0CCertGlobalRuleInfo@@QEAA@XZ
; public: __cdecl CCertMapRule::CCertMapRule(void) __ptr64
??0CCertMapRule@@QEAA@XZ
; public: __cdecl CDecodedCert::CDecodedCert(struct _CERT_CONTEXT * __ptr64) __ptr64
??0CDecodedCert@@QEAA@PEAU_CERT_CONTEXT@@@Z
; public: __cdecl CIisAcctMapper::CIisAcctMapper(void) __ptr64
??0CIisAcctMapper@@QEAA@XZ
; public: __cdecl CIisCert11Mapper::CIisCert11Mapper(void) __ptr64
??0CIisCert11Mapper@@QEAA@XZ
; public: __cdecl CIisRuleMapper::CIisRuleMapper(void) __ptr64
??0CIisRuleMapper@@QEAA@XZ
; public: __cdecl CIssuerStore::CIssuerStore(void) __ptr64
??0CIssuerStore@@QEAA@XZ
; public: __cdecl CPtrDwordXBF::CPtrDwordXBF(void) __ptr64
??0CPtrDwordXBF@@QEAA@XZ
; public: __cdecl CPtrXBF::CPtrXBF(void) __ptr64
??0CPtrXBF@@QEAA@XZ
; public: __cdecl CStoreXBF::CStoreXBF(unsigned int) __ptr64
??0CStoreXBF@@QEAA@I@Z
; public: __cdecl CAllocString::~CAllocString(void) __ptr64
??1CAllocString@@QEAA@XZ
; public: __cdecl CBlob::~CBlob(void) __ptr64
??1CBlob@@QEAA@XZ
; public: __cdecl CBlobXBF::~CBlobXBF(void) __ptr64
??1CBlobXBF@@QEAA@XZ
; public: __cdecl CCert11Mapping::~CCert11Mapping(void) __ptr64
??1CCert11Mapping@@QEAA@XZ
; public: __cdecl CCertGlobalRuleInfo::~CCertGlobalRuleInfo(void) __ptr64
??1CCertGlobalRuleInfo@@QEAA@XZ
; public: __cdecl CCertMapRule::~CCertMapRule(void) __ptr64
??1CCertMapRule@@QEAA@XZ
; public: __cdecl CDecodedCert::~CDecodedCert(void) __ptr64
??1CDecodedCert@@QEAA@XZ
; public: __cdecl CIisAcctMapper::~CIisAcctMapper(void) __ptr64
??1CIisAcctMapper@@QEAA@XZ
; public: __cdecl CIisCert11Mapper::~CIisCert11Mapper(void) __ptr64
??1CIisCert11Mapper@@QEAA@XZ
; public: __cdecl CIisRuleMapper::~CIisRuleMapper(void) __ptr64
??1CIisRuleMapper@@QEAA@XZ
; public: __cdecl CIssuerStore::~CIssuerStore(void) __ptr64
??1CIssuerStore@@QEAA@XZ
; public: __cdecl CStoreXBF::~CStoreXBF(void) __ptr64
??1CStoreXBF@@QEAA@XZ
; public: __cdecl CStrPtrXBF::~CStrPtrXBF(void) __ptr64
??1CStrPtrXBF@@QEAA@XZ
; public: void __cdecl CStoreXBF::`default constructor closure'(void) __ptr64
??_FCStoreXBF@@QEAAXXZ
; public: virtual int __cdecl CIisAcctMapper::Add(class CIisMapping * __ptr64,int) __ptr64
?Add@CIisAcctMapper@@UEAAHPEAVCIisMapping@@H@Z
; public: unsigned long __cdecl CBlobXBF::AddEntry(unsigned char * __ptr64,unsigned long) __ptr64
?AddEntry@CBlobXBF@@QEAAKPEAEK@Z
; public: unsigned long __cdecl CStrPtrXBF::AddEntry(char * __ptr64) __ptr64
?AddEntry@CStrPtrXBF@@QEAAKPEAD@Z
; public: virtual unsigned long __cdecl CIisAcctMapper::AddEx(class CIisMapping * __ptr64) __ptr64
?AddEx@CIisAcctMapper@@UEAAKPEAVCIisMapping@@@Z
; public: int __cdecl CCertMapRule::AddIssuerEntry(char * __ptr64,int) __ptr64
?AddIssuerEntry@CCertMapRule@@QEAAHPEADH@Z
; public: unsigned long __cdecl CPtrDwordXBF::AddPtr(unsigned long) __ptr64
?AddPtr@CPtrDwordXBF@@QEAAKK@Z
; public: unsigned long __cdecl CPtrXBF::AddPtr(void * __ptr64) __ptr64
?AddPtr@CPtrXBF@@QEAAKPEAX@Z
; public: unsigned long __cdecl CIisRuleMapper::AddRule(class CCertMapRule * __ptr64) __ptr64
?AddRule@CIisRuleMapper@@QEAAKPEAVCCertMapRule@@@Z
; public: unsigned long __cdecl CIisRuleMapper::AddRule(void) __ptr64
?AddRule@CIisRuleMapper@@QEAAKXZ
; public: unsigned long __cdecl CCertMapRule::AddRuleElem(unsigned long,enum CERT_FIELD_ID,char * __ptr64,unsigned char * __ptr64,unsigned long,unsigned long) __ptr64
?AddRuleElem@CCertMapRule@@QEAAKKW4CERT_FIELD_ID@@PEADPEAEKK@Z
; public: int __cdecl CCertGlobalRuleInfo::AddRuleOrder(void) __ptr64
?AddRuleOrder@CCertGlobalRuleInfo@@QEAAHXZ
; public: int __cdecl CAllocString::Append(char * __ptr64) __ptr64
?Append@CAllocString@@QEAAHPEAD@Z
; public: int __cdecl CStoreXBF::Append(unsigned long) __ptr64
?Append@CStoreXBF@@QEAAHK@Z
; public: int __cdecl CStoreXBF::Append(char * __ptr64) __ptr64
?Append@CStoreXBF@@QEAAHPEAD@Z
; public: int __cdecl CStoreXBF::Append(unsigned char * __ptr64,unsigned long) __ptr64
?Append@CStoreXBF@@QEAAHPEAEK@Z
; public: int __cdecl CStoreXBF::AppendZ(char * __ptr64) __ptr64
?AppendZ@CStoreXBF@@QEAAHPEAD@Z
; int __cdecl BinaryToMatchRequest(unsigned char * __ptr64,unsigned long,char * __ptr64 * __ptr64)
?BinaryToMatchRequest@@YAHPEAEKPEAPEAD@Z
; public: void __cdecl CStoreXBF::Clear(void) __ptr64
?Clear@CStoreXBF@@QEAAXXZ
; public: virtual int __cdecl CIisMapping::Clone(class CIisMapping * __ptr64 * __ptr64) __ptr64
?Clone@CIisMapping@@UEAAHPEAPEAV1@@Z
; public: int __cdecl CIisMapping::CloneEx(class CIisMapping * __ptr64 * __ptr64,char * __ptr64 * __ptr64,char * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,unsigned int) __ptr64
?CloneEx@CIisMapping@@QEAAHPEAPEAV1@PEAPEAD1PEAK2I@Z
; public: int __cdecl CIisMapping::Copy(class CIisMapping * __ptr64) __ptr64
?Copy@CIisMapping@@QEAAHPEAV1@@Z
; public: int __cdecl CIisAcctMapper::Create(void) __ptr64
?Create@CIisAcctMapper@@QEAAHXZ
; public: virtual class CIisMapping * __ptr64 __cdecl CIisAcctMapper::CreateNewMapping(void) __ptr64
?CreateNewMapping@CIisAcctMapper@@UEAAPEAVCIisMapping@@XZ
; public: class CIisMapping * __ptr64 __cdecl CIisCert11Mapper::CreateNewMapping(unsigned char * __ptr64,unsigned long) __ptr64
?CreateNewMapping@CIisCert11Mapper@@QEAAPEAVCIisMapping@@PEAEK@Z
; public: virtual class CIisMapping * __ptr64 __cdecl CIisCert11Mapper::CreateNewMapping(void) __ptr64
?CreateNewMapping@CIisCert11Mapper@@UEAAPEAVCIisMapping@@XZ
; public: int __cdecl CStoreXBF::DecreaseUse(unsigned long) __ptr64
?DecreaseUse@CStoreXBF@@QEAAHK@Z
; public: int __cdecl CIisAcctMapper::Delete(unsigned long,int) __ptr64
?Delete@CIisAcctMapper@@QEAAHKH@Z
; public: int __cdecl CIisAcctMapper::Delete(void) __ptr64
?Delete@CIisAcctMapper@@QEAAHXZ
; public: int __cdecl CBlobXBF::DeleteEntry(unsigned long) __ptr64
?DeleteEntry@CBlobXBF@@QEAAHK@Z
; public: int __cdecl CStrPtrXBF::DeleteEntry(unsigned long) __ptr64
?DeleteEntry@CStrPtrXBF@@QEAAHK@Z
; public: int __cdecl CCertMapRule::DeleteIssuerEntry(unsigned long) __ptr64
?DeleteIssuerEntry@CCertMapRule@@QEAAHK@Z
; public: int __cdecl CPtrDwordXBF::DeletePtr(unsigned long) __ptr64
?DeletePtr@CPtrDwordXBF@@QEAAHK@Z
; public: int __cdecl CPtrXBF::DeletePtr(unsigned long) __ptr64
?DeletePtr@CPtrXBF@@QEAAHK@Z
; public: int __cdecl CIisRuleMapper::DeleteRule(unsigned long) __ptr64
?DeleteRule@CIisRuleMapper@@QEAAHK@Z
; public: int __cdecl CCertGlobalRuleInfo::DeleteRuleById(unsigned long,int) __ptr64
?DeleteRuleById@CCertGlobalRuleInfo@@QEAAHKH@Z
; public: int __cdecl CCertMapRule::DeleteRuleElem(unsigned long) __ptr64
?DeleteRuleElem@CCertMapRule@@QEAAHK@Z
; public: int __cdecl CCertMapRule::DeleteRuleElemsByField(enum CERT_FIELD_ID) __ptr64
?DeleteRuleElemsByField@CCertMapRule@@QEAAHW4CERT_FIELD_ID@@@Z
; public: virtual int __cdecl CIisMapping::Deserialize(struct _iobuf * __ptr64,void * __ptr64,void * __ptr64) __ptr64
?Deserialize@CIisMapping@@UEAAHPEAU_iobuf@@PEAX1@Z
; char * __ptr64 __cdecl EnumerateKnownSubFields(unsigned long)
?EnumerateKnownSubFields@@YAPEADK@Z
; public: int __cdecl CIisAcctMapper::FindMatch(class CIisMapping * __ptr64,class CIisMapping * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?FindMatch@CIisAcctMapper@@QEAAHPEAVCIisMapping@@PEAPEAV2@PEAK@Z
; public: int __cdecl CIisAcctMapper::FlushAlternate(int) __ptr64
?FlushAlternate@CIisAcctMapper@@QEAAHH@Z
; void __cdecl FreeMatchConversion(void * __ptr64)
?FreeMatchConversion@@YAXPEAX@Z
; public: char * __ptr64 __cdecl CAllocString::Get(void) __ptr64
?Get@CAllocString@@QEAAPEADXZ
; public: unsigned char * __ptr64 __cdecl CBlob::Get(unsigned long * __ptr64) __ptr64
?Get@CBlob@@QEAAPEAEPEAK@Z
; public: class CBlob * __ptr64 __cdecl CBlobXBF::GetBlob(unsigned long) __ptr64
?GetBlob@CBlobXBF@@QEAAPEAVCBlob@@K@Z
; public: unsigned char * __ptr64 __cdecl CStoreXBF::GetBuff(void) __ptr64
?GetBuff@CStoreXBF@@QEAAPEAEXZ
; public: int __cdecl CBlobXBF::GetEntry(unsigned long,unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?GetEntry@CBlobXBF@@QEAAHKPEAPEAEPEAK@Z
; public: char * __ptr64 __cdecl CStrPtrXBF::GetEntry(unsigned long) __ptr64
?GetEntry@CStrPtrXBF@@QEAAPEADK@Z
; public: class CCertGlobalRuleInfo * __ptr64 __cdecl CIisRuleMapper::GetGlobalRulesInfo(void) __ptr64
?GetGlobalRulesInfo@CIisRuleMapper@@QEAAPEAVCCertGlobalRuleInfo@@XZ
; public: struct _IISMDB_HEntry * __ptr64 __cdecl CIisAcctMapper::GetHierarchy(unsigned long * __ptr64) __ptr64
?GetHierarchy@CIisAcctMapper@@QEAAPEAU_IISMDB_HEntry@@PEAK@Z
; unsigned long __cdecl GetIdFlags(enum CERT_FIELD_ID)
?GetIdFlags@@YAKW4CERT_FIELD_ID@@@Z
; public: int __cdecl CDecodedCert::GetIssuer(void * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?GetIssuer@CDecodedCert@@QEAAHPEAPEAXPEAK@Z
; public: unsigned long __cdecl CCertMapRule::GetIssuerCount(void) __ptr64
?GetIssuerCount@CCertMapRule@@QEAAKXZ
; public: int __cdecl CCertMapRule::GetIssuerEntry(unsigned long,int * __ptr64,char * __ptr64 * __ptr64) __ptr64
?GetIssuerEntry@CCertMapRule@@QEAAHKPEAHPEAPEAD@Z
; public: int __cdecl CCertMapRule::GetIssuerEntryByName(char * __ptr64,int * __ptr64) __ptr64
?GetIssuerEntryByName@CCertMapRule@@QEAAHPEADPEAH@Z
; public: int __cdecl CIisAcctMapper::GetMapping(unsigned long,class CIisMapping * __ptr64 * __ptr64,int,int) __ptr64
?GetMapping@CIisAcctMapper@@QEAAHKPEAPEAVCIisMapping@@HH@Z
; public: unsigned long __cdecl CIisAcctMapper::GetMappingCount(void) __ptr64
?GetMappingCount@CIisAcctMapper@@QEAAKXZ
; public: int __cdecl CCertMapRule::GetMatchAllIssuer(void) __ptr64
?GetMatchAllIssuer@CCertMapRule@@QEAAHXZ
; public: unsigned long __cdecl CBlobXBF::GetNbEntry(void) __ptr64
?GetNbEntry@CBlobXBF@@QEAAKXZ
; public: unsigned long __cdecl CStrPtrXBF::GetNbEntry(void) __ptr64
?GetNbEntry@CStrPtrXBF@@QEAAKXZ
; public: virtual unsigned int __cdecl CIisMapping::GetNbField(char * __ptr64 * __ptr64 * __ptr64) __ptr64
?GetNbField@CIisMapping@@UEAAIPEAPEAPEAD@Z
; public: virtual unsigned int __cdecl CIisMapping::GetNbField(char * __ptr64 * __ptr64 * __ptr64,unsigned long * __ptr64 * __ptr64) __ptr64
?GetNbField@CIisMapping@@UEAAIPEAPEAPEADPEAPEAK@Z
; public: unsigned long __cdecl CIssuerStore::GetNbIssuers(void) __ptr64
?GetNbIssuers@CIssuerStore@@QEAAKXZ
; public: unsigned long __cdecl CIisAcctMapper::GetNbMapping(int) __ptr64
?GetNbMapping@CIisAcctMapper@@QEAAKH@Z
; public: unsigned long __cdecl CPtrDwordXBF::GetNbPtr(void) __ptr64
?GetNbPtr@CPtrDwordXBF@@QEAAKXZ
; public: unsigned long __cdecl CPtrXBF::GetNbPtr(void) __ptr64
?GetNbPtr@CPtrXBF@@QEAAKXZ
; public: unsigned long __cdecl CIisAcctMapper::GetOptions(void) __ptr64
?GetOptions@CIisAcctMapper@@QEAAKXZ
; public: unsigned long * __ptr64 __cdecl CPtrDwordXBF::GetPtr(unsigned long) __ptr64
?GetPtr@CPtrDwordXBF@@QEAAPEAKK@Z
; public: void * __ptr64 __cdecl CPtrXBF::GetPtr(unsigned long) __ptr64
?GetPtr@CPtrXBF@@QEAAPEAXK@Z
; public: void * __ptr64 __cdecl CPtrXBF::GetPtrAddr(unsigned long) __ptr64
?GetPtrAddr@CPtrXBF@@QEAAPEAXK@Z
; public: class CCertMapRule * __ptr64 __cdecl CIisRuleMapper::GetRule(unsigned long) __ptr64
?GetRule@CIisRuleMapper@@QEAAPEAVCCertMapRule@@K@Z
; public: char * __ptr64 __cdecl CCertMapRule::GetRuleAccount(void) __ptr64
?GetRuleAccount@CCertMapRule@@QEAAPEADXZ
; public: unsigned long __cdecl CIisRuleMapper::GetRuleCount(void) __ptr64
?GetRuleCount@CIisRuleMapper@@QEAAKXZ
; public: int __cdecl CCertMapRule::GetRuleDenyAccess(void) __ptr64
?GetRuleDenyAccess@CCertMapRule@@QEAAHXZ
; public: int __cdecl CCertMapRule::GetRuleElem(unsigned long,enum CERT_FIELD_ID * __ptr64,char * __ptr64 * __ptr64,unsigned long * __ptr64,char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?GetRuleElem@CCertMapRule@@QEAAHKPEAW4CERT_FIELD_ID@@PEAPEADPEAK12@Z
; public: unsigned long __cdecl CCertMapRule::GetRuleElemCount(void) __ptr64
?GetRuleElemCount@CCertMapRule@@QEAAKXZ
; public: int __cdecl CCertMapRule::GetRuleEnabled(void) __ptr64
?GetRuleEnabled@CCertMapRule@@QEAAHXZ
; public: char * __ptr64 __cdecl CCertMapRule::GetRuleName(void) __ptr64
?GetRuleName@CCertMapRule@@QEAAPEADXZ
; public: unsigned long * __ptr64 __cdecl CCertGlobalRuleInfo::GetRuleOrderArray(void) __ptr64
?GetRuleOrderArray@CCertGlobalRuleInfo@@QEAAPEAKXZ
; public: unsigned long __cdecl CCertGlobalRuleInfo::GetRuleOrderCount(void) __ptr64
?GetRuleOrderCount@CCertGlobalRuleInfo@@QEAAKXZ
; public: char * __ptr64 __cdecl CCertMapRule::GetRulePassword(void) __ptr64
?GetRulePassword@CCertMapRule@@QEAAPEADXZ
; public: int __cdecl CCertGlobalRuleInfo::GetRulesEnabled(void) __ptr64
?GetRulesEnabled@CCertGlobalRuleInfo@@QEAAHXZ
; public: struct _CERT_RDN_ATTR * __ptr64 * __ptr64 __cdecl CDecodedCert::GetSubField(enum CERT_FIELD_ID,char * __ptr64,unsigned long * __ptr64) __ptr64
?GetSubField@CDecodedCert@@QEAAPEAPEAU_CERT_RDN_ATTR@@W4CERT_FIELD_ID@@PEADPEAK@Z
; public: unsigned long __cdecl CStoreXBF::GetUsed(void) __ptr64
?GetUsed@CStoreXBF@@QEAAKXZ
; int __cdecl IISuudecode(char * __ptr64,unsigned char * __ptr64,unsigned long * __ptr64,int)
?IISuudecode@@YAHPEADPEAEPEAKH@Z
; int __cdecl IISuuencode(unsigned char * __ptr64,unsigned long,unsigned char * __ptr64,int)
?IISuuencode@@YAHPEAEK0H@Z
; void __cdecl ImportIISCertMappingsToIIS6(void)
?ImportIISCertMappingsToIIS6@@YAXXZ
; public: int __cdecl CBlob::InitSet(unsigned char * __ptr64,unsigned long) __ptr64
?InitSet@CBlob@@QEAAHPEAEK@Z
; public: unsigned long __cdecl CBlobXBF::InsertEntry(unsigned long,char * __ptr64,unsigned long) __ptr64
?InsertEntry@CBlobXBF@@QEAAKKPEADK@Z
; public: unsigned long __cdecl CStrPtrXBF::InsertEntry(unsigned long,char * __ptr64) __ptr64
?InsertEntry@CStrPtrXBF@@QEAAKKPEAD@Z
; public: unsigned long __cdecl CPtrDwordXBF::InsertPtr(unsigned long,unsigned long) __ptr64
?InsertPtr@CPtrDwordXBF@@QEAAKKK@Z
; public: unsigned long __cdecl CPtrXBF::InsertPtr(unsigned long,void * __ptr64) __ptr64
?InsertPtr@CPtrXBF@@QEAAKKPEAX@Z
; public: int __cdecl CCertGlobalRuleInfo::IsValid(void) __ptr64
?IsValid@CCertGlobalRuleInfo@@QEAAHXZ
; public: int __cdecl CCertMapRule::IsValid(void) __ptr64
?IsValid@CCertMapRule@@QEAAHXZ
; public: int __cdecl CIisRuleMapper::IsValid(void) __ptr64
?IsValid@CIisRuleMapper@@QEAAHXZ
; public: int __cdecl CIisAcctMapper::Load(void) __ptr64
?Load@CIisAcctMapper@@QEAAHXZ
; public: int __cdecl CStoreXBF::Load(void * __ptr64) __ptr64
?Load@CStoreXBF@@QEAAHPEAX@Z
; public: void __cdecl CIisAcctMapper::Lock(void) __ptr64
?Lock@CIisAcctMapper@@QEAAXXZ
; char * __ptr64 __cdecl MapAsn1ToSubField(char * __ptr64)
?MapAsn1ToSubField@@YAPEADPEAD@Z
; enum CERT_FIELD_ID  __cdecl MapFieldToId(char * __ptr64)
?MapFieldToId@@YA?AW4CERT_FIELD_ID@@PEAD@Z
; char * __ptr64 __cdecl MapIdToField(enum CERT_FIELD_ID)
?MapIdToField@@YAPEADW4CERT_FIELD_ID@@@Z
; char * __ptr64 __cdecl MapSubFieldToAsn1(char * __ptr64)
?MapSubFieldToAsn1@@YAPEADPEAD@Z
; public: virtual int __cdecl CIisMapping::MappingGetField(unsigned long,char * __ptr64 * __ptr64) __ptr64
?MappingGetField@CIisMapping@@UEAAHKPEAPEAD@Z
; public: virtual int __cdecl CIisMapping::MappingGetField(unsigned long,unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64,int) __ptr64
?MappingGetField@CIisMapping@@UEAAHKPEAPEAEPEAKH@Z
; public: int __cdecl CIisAcctMapper::MappingGetFieldList(struct _IISMDB_Fields * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?MappingGetFieldList@CIisAcctMapper@@QEAAHPEAPEAU_IISMDB_Fields@@PEAK@Z
; public: virtual int __cdecl CIisMapping::MappingSetField(unsigned long,char * __ptr64) __ptr64
?MappingSetField@CIisMapping@@UEAAHKPEAD@Z
; public: virtual int __cdecl CIisMapping::MappingSetField(unsigned long,unsigned char * __ptr64,unsigned long,int) __ptr64
?MappingSetField@CIisMapping@@UEAAHKPEAEKH@Z
; public: int __cdecl CCertMapRule::Match(class CDecodedCert * __ptr64,class CDecodedCert * __ptr64,char * __ptr64,char * __ptr64,int * __ptr64) __ptr64
?Match@CCertMapRule@@QEAAHPEAVCDecodedCert@@0PEAD1PEAH@Z
; public: int __cdecl CIisRuleMapper::Match(struct _CERT_CONTEXT * __ptr64,struct _CERT_CONTEXT * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64) __ptr64
?Match@CIisRuleMapper@@QEAAHPEAU_CERT_CONTEXT@@0PEAG1@Z
; int __cdecl MatchRequestToBinary(char * __ptr64,unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64)
?MatchRequestToBinary@@YAHPEADPEAPEAEPEAK@Z
; public: int __cdecl CStoreXBF::Need(unsigned long) __ptr64
?Need@CStoreXBF@@QEAAHK@Z
; public: void __cdecl CIisRuleMapper::ReadLockRules(void) __ptr64
?ReadLockRules@CIisRuleMapper@@QEAAXXZ
; public: void __cdecl CIisRuleMapper::ReadUnlockRules(void) __ptr64
?ReadUnlockRules@CIisRuleMapper@@QEAAXXZ
; int __cdecl ReportIisMapEvent(unsigned short,unsigned long,unsigned short,char const * __ptr64 * __ptr64)
?ReportIisMapEvent@@YAHGKGPEAPEBD@Z
; int __cdecl ReportIisMapEventW(unsigned short,unsigned long,unsigned short,unsigned short const * __ptr64 * __ptr64)
?ReportIisMapEventW@@YAHGKGPEAPEBG@Z
; public: void __cdecl CAllocString::Reset(void) __ptr64
?Reset@CAllocString@@QEAAXXZ
; public: void __cdecl CBlob::Reset(void) __ptr64
?Reset@CBlob@@QEAAXXZ
; public: void __cdecl CBlobXBF::Reset(void) __ptr64
?Reset@CBlobXBF@@QEAAXXZ
; public: int __cdecl CCertGlobalRuleInfo::Reset(void) __ptr64
?Reset@CCertGlobalRuleInfo@@QEAAHXZ
; public: void __cdecl CCertMapRule::Reset(void) __ptr64
?Reset@CCertMapRule@@QEAAXXZ
; public: int __cdecl CIisAcctMapper::Reset(void) __ptr64
?Reset@CIisAcctMapper@@QEAAHXZ
; public: int __cdecl CIisRuleMapper::Reset(void) __ptr64
?Reset@CIisRuleMapper@@QEAAHXZ
; public: void __cdecl CIssuerStore::Reset(void) __ptr64
?Reset@CIssuerStore@@QEAAXXZ
; public: void __cdecl CStoreXBF::Reset(void) __ptr64
?Reset@CStoreXBF@@QEAAXXZ
; public: int __cdecl CIisAcctMapper::Save(void) __ptr64
?Save@CIisAcctMapper@@QEAAHXZ
; public: int __cdecl CStoreXBF::Save(void * __ptr64) __ptr64
?Save@CStoreXBF@@QEAAHPEAX@Z
; public: int __cdecl CAllocString::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CAllocString@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CBlob::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CBlob@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CBlobXBF::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CBlobXBF@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CCertMapRule::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CCertMapRule@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CIisAcctMapper::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CIisAcctMapper@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CIisAcctMapper::Serialize(void) __ptr64
?Serialize@CIisAcctMapper@@QEAAHXZ
; public: virtual int __cdecl CIisMapping::Serialize(struct _iobuf * __ptr64,void * __ptr64,void * __ptr64) __ptr64
?Serialize@CIisMapping@@UEAAHPEAU_iobuf@@PEAX1@Z
; public: int __cdecl CIisRuleMapper::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CIisRuleMapper@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CIssuerStore::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CIssuerStore@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CPtrDwordXBF::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CPtrDwordXBF@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CPtrXBF::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CPtrXBF@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CStrPtrXBF::Serialize(class CStoreXBF * __ptr64) __ptr64
?Serialize@CStrPtrXBF@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CCertGlobalRuleInfo::SerializeGlobalRuleInfo(class CStoreXBF * __ptr64) __ptr64
?SerializeGlobalRuleInfo@CCertGlobalRuleInfo@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CAllocString::Set(char * __ptr64) __ptr64
?Set@CAllocString@@QEAAHPEAD@Z
; public: int __cdecl CBlob::Set(unsigned char * __ptr64,unsigned long) __ptr64
?Set@CBlob@@QEAAHPEAEK@Z
; public: int __cdecl CBlobXBF::SetEntry(unsigned long,unsigned char * __ptr64,unsigned long) __ptr64
?SetEntry@CBlobXBF@@QEAAHKPEAEK@Z
; public: int __cdecl CStrPtrXBF::SetEntry(unsigned long,char * __ptr64) __ptr64
?SetEntry@CStrPtrXBF@@QEAAHKPEAD@Z
; public: int __cdecl CCertMapRule::SetIssuerEntryAcceptStatus(unsigned long,int) __ptr64
?SetIssuerEntryAcceptStatus@CCertMapRule@@QEAAHKH@Z
; public: void __cdecl CCertMapRule::SetMatchAllIssuer(int) __ptr64
?SetMatchAllIssuer@CCertMapRule@@QEAAXH@Z
; public: int __cdecl CPtrDwordXBF::SetPtr(unsigned long,unsigned long) __ptr64
?SetPtr@CPtrDwordXBF@@QEAAHKK@Z
; public: int __cdecl CPtrXBF::SetPtr(unsigned long,void * __ptr64) __ptr64
?SetPtr@CPtrXBF@@QEAAHKPEAX@Z
; public: int __cdecl CCertMapRule::SetRuleAccount(char * __ptr64) __ptr64
?SetRuleAccount@CCertMapRule@@QEAAHPEAD@Z
; public: void __cdecl CCertMapRule::SetRuleDenyAccess(int) __ptr64
?SetRuleDenyAccess@CCertMapRule@@QEAAXH@Z
; public: void __cdecl CCertMapRule::SetRuleEnabled(int) __ptr64
?SetRuleEnabled@CCertMapRule@@QEAAXH@Z
; public: int __cdecl CCertMapRule::SetRuleName(char * __ptr64) __ptr64
?SetRuleName@CCertMapRule@@QEAAHPEAD@Z
; public: int __cdecl CCertMapRule::SetRulePassword(char * __ptr64) __ptr64
?SetRulePassword@CCertMapRule@@QEAAHPEAD@Z
; public: void __cdecl CCertGlobalRuleInfo::SetRulesEnabled(int) __ptr64
?SetRulesEnabled@CCertGlobalRuleInfo@@QEAAXH@Z
; public: void __cdecl CIisAcctMapper::Unlock(void) __ptr64
?Unlock@CIisAcctMapper@@QEAAXXZ
; public: int __cdecl CAllocString::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Unserialize@CAllocString@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CBlob::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Unserialize@CBlob@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CBlobXBF::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?Unserialize@CBlobXBF@@QEAAHPEAPEAEPEAKK@Z
; public: int __cdecl CCertMapRule::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Unserialize@CCertMapRule@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CCertMapRule::Unserialize(class CStoreXBF * __ptr64) __ptr64
?Unserialize@CCertMapRule@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CIisAcctMapper::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Unserialize@CIisAcctMapper@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CIisAcctMapper::Unserialize(class CStoreXBF * __ptr64) __ptr64
?Unserialize@CIisAcctMapper@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CIisAcctMapper::Unserialize(void) __ptr64
?Unserialize@CIisAcctMapper@@QEAAHXZ
; public: int __cdecl CIisRuleMapper::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Unserialize@CIisRuleMapper@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CIisRuleMapper::Unserialize(class CStoreXBF * __ptr64) __ptr64
?Unserialize@CIisRuleMapper@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CIssuerStore::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Unserialize@CIssuerStore@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CIssuerStore::Unserialize(class CStoreXBF * __ptr64) __ptr64
?Unserialize@CIssuerStore@@QEAAHPEAVCStoreXBF@@@Z
; public: int __cdecl CPtrDwordXBF::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?Unserialize@CPtrDwordXBF@@QEAAHPEAPEAEPEAKK@Z
; public: int __cdecl CPtrXBF::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?Unserialize@CPtrXBF@@QEAAHPEAPEAEPEAKK@Z
; public: int __cdecl CStrPtrXBF::Unserialize(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?Unserialize@CStrPtrXBF@@QEAAHPEAPEAEPEAKK@Z
; public: int __cdecl CCertGlobalRuleInfo::UnserializeGlobalRuleInfo(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?UnserializeGlobalRuleInfo@CCertGlobalRuleInfo@@QEAAHPEAPEAEPEAK@Z
; public: int __cdecl CIisAcctMapper::Update(unsigned long) __ptr64
?Update@CIisAcctMapper@@QEAAHK@Z
; public: int __cdecl CIisAcctMapper::Update(unsigned long,class CIisMapping * __ptr64) __ptr64
?Update@CIisAcctMapper@@QEAAHKPEAVCIisMapping@@@Z
; public: int __cdecl CIisAcctMapper::UpdateClasses(int) __ptr64
?UpdateClasses@CIisAcctMapper@@QEAAHH@Z
; public: int __cdecl CIisAcctMapper::UpdateHierarchy(void) __ptr64
?UpdateHierarchy@CIisAcctMapper@@QEAAHXZ
; public: int __cdecl CIisMapping::UpdateMask(struct _IISMDB_HEntry * __ptr64,unsigned long) __ptr64
?UpdateMask@CIisMapping@@QEAAHPEAU_IISMDB_HEntry@@K@Z
; public: void __cdecl CIisRuleMapper::WriteLockRules(void) __ptr64
?WriteLockRules@CIisRuleMapper@@QEAAXXZ
; public: void __cdecl CIisRuleMapper::WriteUnlockRules(void) __ptr64
?WriteUnlockRules@CIisRuleMapper@@QEAAXXZ
