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