; 
; Exports of file SlbIop.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY SlbIop.dll
EXPORTS
; public: __cdecl scu::ExcTemplate<2,unsigned long>::ExcTemplate<2,unsigned long>(class ExcTemplate<2,unsigned long>::ExcTemplate<2,unsigned long> const & __ptr64) __ptr64
??0?$ExcTemplate@$01K@scu@@QEAA@AEBV01@@Z
; public: __cdecl scu::ExcTemplate<2,unsigned long>::ExcTemplate<2,unsigned long>(unsigned long) __ptr64
??0?$ExcTemplate@$01K@scu@@QEAA@K@Z
; public: __cdecl scu::SecureArray<char>::SecureArray<char>(class SecureArray<char>::SecureArray<char> const & __ptr64) __ptr64
??0?$SecureArray@D@scu@@QEAA@AEBV01@@Z
; public: __cdecl scu::SecureArray<char>::SecureArray<char>(char * __ptr64,unsigned __int64) __ptr64
??0?$SecureArray@D@scu@@QEAA@PEAD_K@Z
; public: __cdecl scu::SecureArray<char>::SecureArray<char>(char const * __ptr64,unsigned __int64) __ptr64
??0?$SecureArray@D@scu@@QEAA@PEBD_K@Z
; public: __cdecl scu::SecureArray<char>::SecureArray<char>(void) __ptr64
??0?$SecureArray@D@scu@@QEAA@XZ
; public: __cdecl scu::SecureArray<char>::SecureArray<char>(unsigned __int64) __ptr64
??0?$SecureArray@D@scu@@QEAA@_K@Z
; public: __cdecl scu::SecureArray<char>::SecureArray<char>(unsigned __int64,char const & __ptr64) __ptr64
??0?$SecureArray@D@scu@@QEAA@_KAEBD@Z
; public: __cdecl scu::SecureArray<unsigned char>::SecureArray<unsigned char>(class SecureArray<unsigned char>::SecureArray<unsigned char> const & __ptr64) __ptr64
??0?$SecureArray@E@scu@@QEAA@AEBV01@@Z
; public: __cdecl scu::SecureArray<unsigned char>::SecureArray<unsigned char>(unsigned char * __ptr64,unsigned __int64) __ptr64
??0?$SecureArray@E@scu@@QEAA@PEAE_K@Z
; public: __cdecl scu::SecureArray<unsigned char>::SecureArray<unsigned char>(unsigned char const * __ptr64,unsigned __int64) __ptr64
??0?$SecureArray@E@scu@@QEAA@PEBE_K@Z
; public: __cdecl scu::SecureArray<unsigned char>::SecureArray<unsigned char>(void) __ptr64
??0?$SecureArray@E@scu@@QEAA@XZ
; public: __cdecl scu::SecureArray<unsigned char>::SecureArray<unsigned char>(unsigned __int64) __ptr64
??0?$SecureArray@E@scu@@QEAA@_K@Z
; public: __cdecl scu::SecureArray<unsigned char>::SecureArray<unsigned char>(unsigned __int64,unsigned char const & __ptr64) __ptr64
??0?$SecureArray@E@scu@@QEAA@_KAEBE@Z
; public: __cdecl std::auto_ptr<class iop::CSharedMarker>::auto_ptr<class iop::CSharedMarker>(class auto_ptr<class iop::CSharedMarker>::auto_ptr<class iop::CSharedMarker> const & __ptr64) __ptr64
??0?$auto_ptr@VCSharedMarker@iop@@@std@@QEAA@AEBV01@@Z
; public: __cdecl std::auto_ptr<class iop::CSharedMarker>::auto_ptr<class iop::CSharedMarker>(class iop::CSharedMarker * __ptr64) __ptr64
??0?$auto_ptr@VCSharedMarker@iop@@@std@@QEAA@PEAVCSharedMarker@iop@@@Z
; public: __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::auto_ptr<class iop::RMHangProcDeathSynchObjects>(class auto_ptr<class iop::RMHangProcDeathSynchObjects>::auto_ptr<class iop::RMHangProcDeathSynchObjects> const & __ptr64) __ptr64
??0?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEAA@AEBV01@@Z
; public: __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::auto_ptr<class iop::RMHangProcDeathSynchObjects>(class iop::RMHangProcDeathSynchObjects * __ptr64) __ptr64
??0?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEAA@PEAVRMHangProcDeathSynchObjects@iop@@@Z
; public: __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >(class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > const & __ptr64) __ptr64
??0?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA@AEBV01@@Z
; public: __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >(class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::allocator<class iop::FilePathComponent> const & __ptr64) __ptr64
??0?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA@AEBV?$allocator@VFilePathComponent@iop@@@1@@Z
; public: __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >(class iop::FilePathComponent const * __ptr64,class iop::FilePathComponent const * __ptr64,class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::allocator<class iop::FilePathComponent> const & __ptr64) __ptr64
??0?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA@PEBVFilePathComponent@iop@@0AEBV?$allocator@VFilePathComponent@iop@@@1@@Z
; public: __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >(class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator,class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator,class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::allocator<class iop::FilePathComponent> const & __ptr64) __ptr64
??0?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA@Vconst_iterator@01@0AEBV?$allocator@VFilePathComponent@iop@@@1@@Z
; public: __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >(unsigned __int64,class iop::FilePathComponent const & __ptr64,class list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::allocator<class iop::FilePathComponent> const & __ptr64) __ptr64
??0?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA@_KAEBVFilePathComponent@iop@@AEBV?$allocator@VFilePathComponent@iop@@@1@@Z
; public: __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >(class vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> > const & __ptr64) __ptr64
??0?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA@AEBV01@@Z
; public: __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >(class vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::allocator<struct iop::EventInfo * __ptr64> const & __ptr64) __ptr64
??0?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA@AEBV?$allocator@PEAUEventInfo@iop@@@1@@Z
; public: __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >(struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64,class vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::allocator<struct iop::EventInfo * __ptr64> const & __ptr64) __ptr64
??0?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA@PEBQEAUEventInfo@iop@@0AEBV?$allocator@PEAUEventInfo@iop@@@1@@Z
; public: __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >(unsigned __int64,struct iop::EventInfo * __ptr64 const & __ptr64,class vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::allocator<struct iop::EventInfo * __ptr64> const & __ptr64) __ptr64
??0?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA@_KAEBQEAUEventInfo@iop@@AEBV?$allocator@PEAUEventInfo@iop@@@1@@Z
; public: __cdecl iop::CAccessCard::CAccessCard(unsigned __int64,char const * __ptr64,unsigned __int64,unsigned long) __ptr64
??0CAccessCard@iop@@QEAA@_KPEBD0K@Z
; public: __cdecl iop::CCryptoCard::CCryptoCard(unsigned __int64,char const * __ptr64,unsigned __int64,unsigned long) __ptr64
??0CCryptoCard@iop@@QEAA@_KPEBD0K@Z
; public: __cdecl iop::CIOP::CIOP(void) __ptr64
??0CIOP@iop@@QEAA@XZ
; public: __cdecl iop::CIOPCriticalSection::CIOPCriticalSection(class CIOPCriticalSection::CIOPLock * __ptr64) __ptr64
??0CIOPCriticalSection@iop@@QEAA@PEAVCIOPLock@1@@Z
; public: __cdecl iop::CIOPLock::CIOPLock(char const * __ptr64) __ptr64
??0CIOPLock@iop@@QEAA@PEBD@Z
; public: __cdecl iop::CIOPMutex::CIOPMutex(class CIOPMutex::CIOPLock * __ptr64) __ptr64
??0CIOPMutex@iop@@QEAA@PEAVCIOPLock@1@@Z
; public: __cdecl iop::CLockWrap::CLockWrap(class CLockWrap::CIOPLock * __ptr64) __ptr64
??0CLockWrap@iop@@QEAA@PEAVCIOPLock@1@@Z
; public: __cdecl iop::CMarker::CMarker(class CMarker::CMarker const & __ptr64) __ptr64
??0CMarker@iop@@QEAA@AEBV01@@Z
; public: __cdecl iop::CMarker::CMarker(enum CMarker::CMarker::MarkerType const & __ptr64) __ptr64
??0CMarker@iop@@QEAA@AEBW4MarkerType@01@@Z
; public: __cdecl iop::CMarker::CMarker(enum CMarker::CMarker::MarkerType,struct _GUID const & __ptr64,__int64 const & __ptr64) __ptr64
??0CMarker@iop@@QEAA@W4MarkerType@01@AEBU_GUID@@AEB_J@Z
; public: __cdecl iop::CPrivateKeyBlob::CPrivateKeyBlob(class CPrivateKeyBlob::CPrivateKeyBlob const & __ptr64) __ptr64
??0CPrivateKeyBlob@iop@@QEAA@AEBV01@@Z
; public: __cdecl iop::CPrivateKeyBlob::CPrivateKeyBlob(void) __ptr64
??0CPrivateKeyBlob@iop@@QEAA@XZ
; public: __cdecl iop::CPublicKeyBlob::CPublicKeyBlob(class CPublicKeyBlob::CPublicKeyBlob const & __ptr64) __ptr64
??0CPublicKeyBlob@iop@@QEAA@AEBV01@@Z
; public: __cdecl iop::CPublicKeyBlob::CPublicKeyBlob(void) __ptr64
??0CPublicKeyBlob@iop@@QEAA@XZ
; public: __cdecl iop::CSCardLock::CSCardLock(class CSCardLock::CIOPLock * __ptr64) __ptr64
??0CSCardLock@iop@@QEAA@PEAVCIOPLock@1@@Z
; public: __cdecl iop::CSmartCard::CSmartCard(unsigned __int64,char const * __ptr64,unsigned __int64,unsigned long) __ptr64
??0CSmartCard@iop@@QEAA@_KPEBD0K@Z
; public: __cdecl iop::CSmartCard::Exception::Exception(class CSmartCard::Exception::Exception const & __ptr64) __ptr64
??0Exception@CSmartCard@iop@@QEAA@AEBV012@@Z
; public: __cdecl iop::CSmartCard::Exception::Exception(enum CSmartCard::Exception::CauseCode,unsigned char,unsigned char,unsigned short) __ptr64
??0Exception@CSmartCard@iop@@QEAA@W4CauseCode@12@EEG@Z
; protected: __cdecl scu::Exception::Exception(enum Exception::Exception::FacilityCode) __ptr64
??0Exception@scu@@IEAA@W4FacilityCode@01@@Z
; public: __cdecl scu::Exception::Exception(class Exception::Exception const & __ptr64) __ptr64
??0Exception@scu@@QEAA@AEBV01@@Z
; public: __cdecl iop::FilePath::FilePath(class FilePath::FilePath const & __ptr64) __ptr64
??0FilePath@iop@@QEAA@AEBV01@@Z
; public: __cdecl iop::FilePath::FilePath(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >) __ptr64
??0FilePath@iop@@QEAA@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
; public: __cdecl iop::FilePath::FilePath(void) __ptr64
??0FilePath@iop@@QEAA@XZ
; public: __cdecl iop::FilePathComponent::FilePathComponent(class FilePathComponent::FilePathComponent const & __ptr64) __ptr64
??0FilePathComponent@iop@@QEAA@AEBV01@@Z
; public: __cdecl iop::FilePathComponent::FilePathComponent(unsigned short) __ptr64
??0FilePathComponent@iop@@QEAA@G@Z
; public: __cdecl iop::FilePathComponent::FilePathComponent(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >) __ptr64
??0FilePathComponent@iop@@QEAA@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
; public: __cdecl scu::OsException::OsException(class OsException::OsException const & __ptr64) __ptr64
??0OsException@scu@@QEAA@AEBV01@@Z
; public: __cdecl scu::OsException::OsException(long) __ptr64
??0OsException@scu@@QEAA@J@Z
; public: __cdecl scu::OsException::OsException(unsigned long) __ptr64
??0OsException@scu@@QEAA@K@Z
; public: virtual __cdecl scu::ExcTemplate<2,unsigned long>::~ExcTemplate<2,unsigned long>(void) __ptr64
??1?$ExcTemplate@$01K@scu@@UEAA@XZ
; public: __cdecl scu::SecureArray<char>::~SecureArray<char>(void) __ptr64
??1?$SecureArray@D@scu@@QEAA@XZ
; public: __cdecl scu::SecureArray<unsigned char>::~SecureArray<unsigned char>(void) __ptr64
??1?$SecureArray@E@scu@@QEAA@XZ
; public: __cdecl std::auto_ptr<class iop::CSharedMarker>::~auto_ptr<class iop::CSharedMarker>(void) __ptr64
??1?$auto_ptr@VCSharedMarker@iop@@@std@@QEAA@XZ
; public: __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::~auto_ptr<class iop::RMHangProcDeathSynchObjects>(void) __ptr64
??1?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEAA@XZ
; public: __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::~list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >(void) __ptr64
??1?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA@XZ
; public: __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::~vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >(void) __ptr64
??1?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA@XZ
; public: virtual __cdecl iop::CAccessCard::~CAccessCard(void) __ptr64
??1CAccessCard@iop@@UEAA@XZ
; public: virtual __cdecl iop::CCryptoCard::~CCryptoCard(void) __ptr64
??1CCryptoCard@iop@@UEAA@XZ
; public: __cdecl iop::CIOP::~CIOP(void) __ptr64
??1CIOP@iop@@QEAA@XZ
; public: __cdecl iop::CIOPCriticalSection::~CIOPCriticalSection(void) __ptr64
??1CIOPCriticalSection@iop@@QEAA@XZ
; public: virtual __cdecl iop::CIOPLock::~CIOPLock(void) __ptr64
??1CIOPLock@iop@@UEAA@XZ
; public: __cdecl iop::CIOPMutex::~CIOPMutex(void) __ptr64
??1CIOPMutex@iop@@QEAA@XZ
; public: __cdecl iop::CLockWrap::~CLockWrap(void) __ptr64
??1CLockWrap@iop@@QEAA@XZ
; public: virtual __cdecl iop::CMarker::~CMarker(void) __ptr64
??1CMarker@iop@@UEAA@XZ
; public: virtual __cdecl iop::CPrivateKeyBlob::~CPrivateKeyBlob(void) __ptr64
??1CPrivateKeyBlob@iop@@UEAA@XZ
; public: virtual __cdecl iop::CPublicKeyBlob::~CPublicKeyBlob(void) __ptr64
??1CPublicKeyBlob@iop@@UEAA@XZ
; public: __cdecl iop::CSCardLock::~CSCardLock(void) __ptr64
??1CSCardLock@iop@@QEAA@XZ
; public: virtual __cdecl iop::CSmartCard::~CSmartCard(void) __ptr64
??1CSmartCard@iop@@UEAA@XZ
; public: virtual __cdecl iop::CSmartCard::Exception::~Exception(void) __ptr64
??1Exception@CSmartCard@iop@@UEAA@XZ
; public: virtual __cdecl scu::Exception::~Exception(void) __ptr64
??1Exception@scu@@UEAA@XZ
; public: virtual __cdecl iop::FilePath::~FilePath(void) __ptr64
??1FilePath@iop@@UEAA@XZ
; public: virtual __cdecl iop::FilePathComponent::~FilePathComponent(void) __ptr64
??1FilePathComponent@iop@@UEAA@XZ
; public: virtual __cdecl scu::OsException::~OsException(void) __ptr64
??1OsException@scu@@UEAA@XZ
; public: class scu::ExcTemplate<2,unsigned long> & __ptr64 __cdecl scu::ExcTemplate<2,unsigned long>::operator=(class scu::ExcTemplate<2,unsigned long> const & __ptr64) __ptr64
??4?$ExcTemplate@$01K@scu@@QEAAAEAV01@AEBV01@@Z
; public: class scu::SecureArray<char> & __ptr64 __cdecl scu::SecureArray<char>::operator=(char const & __ptr64) __ptr64
??4?$SecureArray@D@scu@@QEAAAEAV01@AEBD@Z
; public: class scu::SecureArray<char> & __ptr64 __cdecl scu::SecureArray<char>::operator=(class scu::SecureArray<char> const & __ptr64) __ptr64
??4?$SecureArray@D@scu@@QEAAAEAV01@AEBV01@@Z
; public: class scu::SecureArray<unsigned char> & __ptr64 __cdecl scu::SecureArray<unsigned char>::operator=(unsigned char const & __ptr64) __ptr64
??4?$SecureArray@E@scu@@QEAAAEAV01@AEBE@Z
; public: class scu::SecureArray<unsigned char> & __ptr64 __cdecl scu::SecureArray<unsigned char>::operator=(class scu::SecureArray<unsigned char> const & __ptr64) __ptr64
??4?$SecureArray@E@scu@@QEAAAEAV01@AEBV01@@Z
; public: class std::auto_ptr<class iop::CSharedMarker> & __ptr64 __cdecl std::auto_ptr<class iop::CSharedMarker>::operator=(class std::auto_ptr<class iop::CSharedMarker> const & __ptr64) __ptr64
??4?$auto_ptr@VCSharedMarker@iop@@@std@@QEAAAEAV01@AEBV01@@Z
; public: class std::auto_ptr<class iop::RMHangProcDeathSynchObjects> & __ptr64 __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::operator=(class std::auto_ptr<class iop::RMHangProcDeathSynchObjects> const & __ptr64) __ptr64
??4?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEAAAEAV01@AEBV01@@Z
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::operator=(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > const & __ptr64) __ptr64
??4?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAAEAV01@AEBV01@@Z
; public: class std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> > & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::operator=(class std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> > const & __ptr64) __ptr64
??4?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CIOP & __ptr64 __cdecl iop::CIOP::operator=(class iop::CIOP const & __ptr64) __ptr64
??4CIOP@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CIOPCriticalSection & __ptr64 __cdecl iop::CIOPCriticalSection::operator=(class iop::CIOPCriticalSection const & __ptr64) __ptr64
??4CIOPCriticalSection@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CIOPMutex & __ptr64 __cdecl iop::CIOPMutex::operator=(class iop::CIOPMutex const & __ptr64) __ptr64
??4CIOPMutex@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CLockWrap & __ptr64 __cdecl iop::CLockWrap::operator=(class iop::CLockWrap const & __ptr64) __ptr64
??4CLockWrap@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CMarker & __ptr64 __cdecl iop::CMarker::operator=(class iop::CMarker const & __ptr64) __ptr64
??4CMarker@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CPrivateKeyBlob & __ptr64 __cdecl iop::CPrivateKeyBlob::operator=(class iop::CPrivateKeyBlob const & __ptr64) __ptr64
??4CPrivateKeyBlob@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CPublicKeyBlob & __ptr64 __cdecl iop::CPublicKeyBlob::operator=(class iop::CPublicKeyBlob const & __ptr64) __ptr64
??4CPublicKeyBlob@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CSCardLock & __ptr64 __cdecl iop::CSCardLock::operator=(class iop::CSCardLock const & __ptr64) __ptr64
??4CSCardLock@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::CSmartCard::Exception & __ptr64 __cdecl iop::CSmartCard::Exception::operator=(class iop::CSmartCard::Exception const & __ptr64) __ptr64
??4Exception@CSmartCard@iop@@QEAAAEAV012@AEBV012@@Z
; public: class scu::Exception & __ptr64 __cdecl scu::Exception::operator=(class scu::Exception const & __ptr64) __ptr64
??4Exception@scu@@QEAAAEAV01@AEBV01@@Z
; public: class iop::FilePath & __ptr64 __cdecl iop::FilePath::operator=(class iop::FilePath const & __ptr64) __ptr64
??4FilePath@iop@@QEAAAEAV01@AEBV01@@Z
; public: class iop::FilePathComponent & __ptr64 __cdecl iop::FilePathComponent::operator=(class iop::FilePathComponent const & __ptr64) __ptr64
??4FilePathComponent@iop@@QEAAAEAV01@AEBV01@@Z
; public: class scu::OsException & __ptr64 __cdecl scu::OsException::operator=(class scu::OsException const & __ptr64) __ptr64
??4OsException@scu@@QEAAAEAV01@AEBV01@@Z
; bool __cdecl iop::operator==(class iop::CMarker const & __ptr64,class iop::CMarker const & __ptr64)
??8iop@@YA_NAEBVCMarker@0@0@Z
; bool __cdecl iop::operator!=(class iop::CMarker const & __ptr64,class iop::CMarker const & __ptr64)
??9iop@@YA_NAEBVCMarker@0@0@Z
; public: char & __ptr64 __cdecl scu::SecureArray<char>::operator[](unsigned __int64) __ptr64
??A?$SecureArray@D@scu@@QEAAAEAD_K@Z
; public: char const & __ptr64 __cdecl scu::SecureArray<char>::operator[](unsigned __int64)const  __ptr64
??A?$SecureArray@D@scu@@QEBAAEBD_K@Z
; public: unsigned char & __ptr64 __cdecl scu::SecureArray<unsigned char>::operator[](unsigned __int64) __ptr64
??A?$SecureArray@E@scu@@QEAAAEAE_K@Z
; public: unsigned char const & __ptr64 __cdecl scu::SecureArray<unsigned char>::operator[](unsigned __int64)const  __ptr64
??A?$SecureArray@E@scu@@QEBAAEBE_K@Z
; public: struct iop::EventInfo * __ptr64 & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::operator[](unsigned __int64) __ptr64
??A?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAAEAPEAUEventInfo@iop@@_K@Z
; public: struct iop::EventInfo * __ptr64 const & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::operator[](unsigned __int64)const  __ptr64
??A?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBAAEBQEAUEventInfo@iop@@_K@Z
; public: class iop::FilePathComponent & __ptr64 __cdecl iop::FilePath::operator[](unsigned int) __ptr64
??AFilePath@iop@@QEAAAEAVFilePathComponent@1@I@Z
; public: class iop::CSharedMarker * __ptr64 __cdecl std::auto_ptr<class iop::CSharedMarker>::operator->(void)const  __ptr64
??C?$auto_ptr@VCSharedMarker@iop@@@std@@QEBAPEAVCSharedMarker@iop@@XZ
; public: class iop::RMHangProcDeathSynchObjects * __ptr64 __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::operator->(void)const  __ptr64
??C?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEBAPEAVRMHangProcDeathSynchObjects@iop@@XZ
; public: char & __ptr64 __cdecl scu::SecureArray<char>::operator*(void) __ptr64
??D?$SecureArray@D@scu@@QEAAAEADXZ
; public: char const & __ptr64 __cdecl scu::SecureArray<char>::operator*(void)const  __ptr64
??D?$SecureArray@D@scu@@QEBAAEBDXZ
; public: unsigned char & __ptr64 __cdecl scu::SecureArray<unsigned char>::operator*(void) __ptr64
??D?$SecureArray@E@scu@@QEAAAEAEXZ
; public: unsigned char const & __ptr64 __cdecl scu::SecureArray<unsigned char>::operator*(void)const  __ptr64
??D?$SecureArray@E@scu@@QEBAAEBEXZ
; public: class iop::CSharedMarker & __ptr64 __cdecl std::auto_ptr<class iop::CSharedMarker>::operator*(void)const  __ptr64
??D?$auto_ptr@VCSharedMarker@iop@@@std@@QEBAAEAVCSharedMarker@iop@@XZ
; public: class iop::RMHangProcDeathSynchObjects & __ptr64 __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::operator*(void)const  __ptr64
??D?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEBAAEAVRMHangProcDeathSynchObjects@iop@@XZ
; public: class iop::FilePath const & __ptr64 __cdecl iop::FilePath::operator+=(class iop::FilePathComponent) __ptr64
??YFilePath@iop@@QEAAAEBV01@VFilePathComponent@1@@Z
; const  scu::ExcTemplate<2,unsigned long>::`vftable'
??_7?$ExcTemplate@$01K@scu@@6B@
; const  iop::CAccessCard::`vftable'
??_7CAccessCard@iop@@6B@
; const  iop::CCryptoCard::`vftable'
??_7CCryptoCard@iop@@6B@
; const  iop::CIOPLock::`vftable'
??_7CIOPLock@iop@@6B@
; const  iop::CMarker::`vftable'
??_7CMarker@iop@@6B@
; const  iop::CPrivateKeyBlob::`vftable'
??_7CPrivateKeyBlob@iop@@6B@
; const  iop::CPublicKeyBlob::`vftable'
??_7CPublicKeyBlob@iop@@6B@
; const  iop::CSmartCard::`vftable'
??_7CSmartCard@iop@@6B@
; const  iop::CSmartCard::Exception::`vftable'
??_7Exception@CSmartCard@iop@@6B@
; const  scu::Exception::`vftable'
??_7Exception@scu@@6B@
; const  iop::FilePath::`vftable'
??_7FilePath@iop@@6B@
; const  iop::FilePathComponent::`vftable'
??_7FilePathComponent@iop@@6B@
; const  scu::OsException::`vftable'
??_7OsException@scu@@6B@
; public: void __cdecl std::auto_ptr<class iop::CSharedMarker>::`default constructor closure'(void) __ptr64
??_F?$auto_ptr@VCSharedMarker@iop@@@std@@QEAAXXZ
; public: void __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::`default constructor closure'(void) __ptr64
??_F?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEAAXXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::`default constructor closure'(void) __ptr64
??_F?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::`default constructor closure'(void) __ptr64
??_F?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXXZ
; protected: void __cdecl iop::CCryptoCard::AccessToCryptoACL(bool * __ptr64,struct iop::CryptoACL * __ptr64) __ptr64
?AccessToCryptoACL@CCryptoCard@iop@@IEAAXPEA_NPEAUCryptoACL@2@@Z
; public: virtual void __cdecl iop::CAccessCard::BlockApplet(void) __ptr64
?BlockApplet@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::BlockApplet(void) __ptr64
?BlockApplet@CSmartCard@iop@@UEAAXXZ
; public: unsigned long __cdecl scu::ExcTemplate<2,unsigned long>::Cause(void)const  __ptr64
?Cause@?$ExcTemplate@$01K@scu@@QEBAKXZ
; public: enum iop::CSmartCard::CauseCode  __cdecl iop::CSmartCard::Exception::Cause(void)const  __ptr64
?Cause@Exception@CSmartCard@iop@@QEBA?AW4CauseCode@23@XZ
; public: virtual void __cdecl iop::CAccessCard::ChangeACL(unsigned char const * __ptr64) __ptr64
?ChangeACL@CAccessCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::ChangeACL(unsigned char const * __ptr64) __ptr64
?ChangeACL@CCryptoCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::ChangeACL(unsigned char const * __ptr64) __ptr64
?ChangeACL@CSmartCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CAccessCard::ChangeCHV(unsigned char,unsigned char const * __ptr64,unsigned char const * __ptr64) __ptr64
?ChangeCHV@CAccessCard@iop@@UEAAXEPEBE0@Z
; public: virtual void __cdecl iop::CAccessCard::ChangeCHV(unsigned char,unsigned char const * __ptr64) __ptr64
?ChangeCHV@CAccessCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::ChangeCHV(unsigned char,unsigned char const * __ptr64,unsigned char const * __ptr64) __ptr64
?ChangeCHV@CCryptoCard@iop@@UEAAXEPEBE0@Z
; public: virtual void __cdecl iop::CCryptoCard::ChangeCHV(unsigned char,unsigned char const * __ptr64) __ptr64
?ChangeCHV@CCryptoCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::ChangeCHV(unsigned char,unsigned char const * __ptr64,unsigned char const * __ptr64) __ptr64
?ChangeCHV@CSmartCard@iop@@UEAAXEPEBE0@Z
; public: virtual void __cdecl iop::CSmartCard::ChangeCHV(unsigned char,unsigned char const * __ptr64) __ptr64
?ChangeCHV@CSmartCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CAccessCard::ChangeTransportKey(unsigned char const * __ptr64) __ptr64
?ChangeTransportKey@CAccessCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::ChangeTransportKey(unsigned char const * __ptr64) __ptr64
?ChangeTransportKey@CCryptoCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::ChangeTransportKey(unsigned char const * __ptr64) __ptr64
?ChangeTransportKey@CSmartCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CAccessCard::ChangeUnblockKey(unsigned char,unsigned char const * __ptr64) __ptr64
?ChangeUnblockKey@CAccessCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::ChangeUnblockKey(unsigned char,unsigned char const * __ptr64) __ptr64
?ChangeUnblockKey@CCryptoCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::ChangeUnblockKey(unsigned char,unsigned char const * __ptr64) __ptr64
?ChangeUnblockKey@CSmartCard@iop@@UEAAXEPEBE@Z
; public: class iop::FilePathComponent  __cdecl iop::FilePath::ChopTail(void) __ptr64
?ChopTail@FilePath@iop@@QEAA?AVFilePathComponent@2@XZ
; public: unsigned char __cdecl iop::CSmartCard::Exception::Class(void)const  __ptr64
?Class@Exception@CSmartCard@iop@@QEBAEXZ
; public: void __cdecl iop::FilePath::Clear(void) __ptr64
?Clear@FilePath@iop@@QEAAXXZ
; void __cdecl iop::Clear(class iop::CPrivateKeyBlob & __ptr64)
?Clear@iop@@YAXAEAVCPrivateKeyBlob@1@@Z
; void __cdecl iop::Clear(class iop::CPublicKeyBlob & __ptr64)
?Clear@iop@@YAXAEAVCPublicKeyBlob@1@@Z
; private: void __cdecl scu::SecureArray<char>::ClearDataStore(void) __ptr64
?ClearDataStore@?$SecureArray@D@scu@@AEAAXXZ
; private: void __cdecl scu::SecureArray<unsigned char>::ClearDataStore(void) __ptr64
?ClearDataStore@?$SecureArray@E@scu@@AEAAXXZ
; public: virtual class scu::Exception * __ptr64 __cdecl scu::ExcTemplate<2,unsigned long>::Clone(void)const  __ptr64
?Clone@?$ExcTemplate@$01K@scu@@UEBAPEAVException@2@XZ
; public: virtual class scu::Exception * __ptr64 __cdecl iop::CSmartCard::Exception::Clone(void)const  __ptr64
?Clone@Exception@CSmartCard@iop@@UEBAPEAV1scu@@XZ
; public: virtual class scu::Exception * __ptr64 __cdecl scu::OsException::Clone(void)const  __ptr64
?Clone@OsException@scu@@UEBAPEAVException@2@XZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >  __cdecl iop::FilePath::Components(void) __ptr64
?Components@FilePath@iop@@QEAA?AV?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@XZ
; public: class iop::CSmartCard * __ptr64 __cdecl iop::CIOP::Connect(char const * __ptr64,bool) __ptr64
?Connect@CIOP@iop@@QEAAPEAVCSmartCard@2@PEBD_N@Z
; private: class iop::CSmartCard * __ptr64 __cdecl iop::CIOP::CreateCard(unsigned char const * __ptr64,unsigned long,unsigned __int64,char const * __ptr64,unsigned long) __ptr64
?CreateCard@CIOP@iop@@AEAAPEAVCSmartCard@2@PEBEK_KPEBDK@Z
; public: virtual void __cdecl iop::CAccessCard::CreateFileA(struct iop::FILE_HEADER const * __ptr64) __ptr64
?CreateFileA@CAccessCard@iop@@UEAAXPEBUFILE_HEADER@2@@Z
; public: virtual void __cdecl iop::CCryptoCard::CreateFileA(struct iop::FILE_HEADER const * __ptr64) __ptr64
?CreateFileA@CCryptoCard@iop@@UEAAXPEBUFILE_HEADER@2@@Z
; public: virtual void __cdecl iop::CSmartCard::CreateFileA(struct iop::FILE_HEADER const * __ptr64) __ptr64
?CreateFileA@CSmartCard@iop@@UEAAXPEBUFILE_HEADER@2@@Z
; public: struct _RTL_CRITICAL_SECTION * __ptr64 __cdecl iop::CIOPLock::CriticalSection(void) __ptr64
?CriticalSection@CIOPLock@iop@@QEAAPEAU_RTL_CRITICAL_SECTION@@XZ
; protected: void __cdecl iop::CCryptoCard::CryptoToAccessACL(unsigned char * __ptr64,unsigned char,unsigned char,unsigned char) __ptr64
?CryptoToAccessACL@CCryptoCard@iop@@IEAAXPEAEEEE@Z
; public: void __cdecl iop::CIOPLock::DecrementRefCount(void) __ptr64
?DecrementRefCount@CIOPLock@iop@@QEAAXXZ
; protected: virtual void __cdecl iop::CAccessCard::DefaultDispatchError(unsigned char,unsigned char,unsigned short)const  __ptr64
?DefaultDispatchError@CAccessCard@iop@@MEBAXEEG@Z
; protected: virtual void __cdecl iop::CCryptoCard::DefaultDispatchError(unsigned char,unsigned char,unsigned short)const  __ptr64
?DefaultDispatchError@CCryptoCard@iop@@MEBAXEEG@Z
; protected: virtual void __cdecl iop::CSmartCard::DefaultDispatchError(unsigned char,unsigned char,unsigned short)const  __ptr64
?DefaultDispatchError@CSmartCard@iop@@MEBAXEEG@Z
; public: virtual void __cdecl iop::CAccessCard::DeleteApplet(void) __ptr64
?DeleteApplet@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::DeleteApplet(void) __ptr64
?DeleteApplet@CSmartCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CAccessCard::DeleteFileA(unsigned short) __ptr64
?DeleteFileA@CAccessCard@iop@@UEAAXG@Z
; public: virtual void __cdecl iop::CCryptoCard::DeleteFileA(unsigned short) __ptr64
?DeleteFileA@CCryptoCard@iop@@UEAAXG@Z
; public: virtual void __cdecl iop::CSmartCard::DeleteFileA(unsigned short) __ptr64
?DeleteFileA@CSmartCard@iop@@UEAAXG@Z
; public: virtual char const * __ptr64 __cdecl scu::ExcTemplate<2,unsigned long>::Description(void)const  __ptr64
?Description@?$ExcTemplate@$01K@scu@@UEBAPEBDXZ
; public: virtual char const * __ptr64 __cdecl iop::CSmartCard::Exception::Description(void)const  __ptr64
?Description@Exception@CSmartCard@iop@@UEBAPEBDXZ
; public: virtual char const * __ptr64 __cdecl scu::Exception::Description(void)const  __ptr64
?Description@Exception@scu@@UEBAPEBDXZ
; public: virtual char const * __ptr64 __cdecl scu::OsException::Description(void)const  __ptr64
?Description@OsException@scu@@UEBAPEBDXZ
; public: virtual void __cdecl iop::CAccessCard::Directory(unsigned char,struct iop::FILE_HEADER * __ptr64) __ptr64
?Directory@CAccessCard@iop@@UEAAXEPEAUFILE_HEADER@2@@Z
; public: virtual void __cdecl iop::CCryptoCard::Directory(unsigned char,struct iop::FILE_HEADER * __ptr64) __ptr64
?Directory@CCryptoCard@iop@@UEAAXEPEAUFILE_HEADER@2@@Z
; public: virtual void __cdecl iop::CSmartCard::Directory(unsigned char,struct iop::FILE_HEADER * __ptr64) __ptr64
?Directory@CSmartCard@iop@@UEAAXEPEAUFILE_HEADER@2@@Z
; public: void __cdecl iop::CSmartCard::Dirty(bool) __ptr64
?Dirty@CSmartCard@iop@@QEAAX_N@Z
; public: bool __cdecl iop::CSmartCard::Dirty(void)const  __ptr64
?Dirty@CSmartCard@iop@@QEBA_NXZ
; protected: virtual void __cdecl iop::CAccessCard::DispatchError(unsigned char,unsigned char,unsigned short)const  __ptr64
?DispatchError@CAccessCard@iop@@MEBAXEEG@Z
; protected: virtual void __cdecl iop::CCryptoCard::DispatchError(unsigned char,unsigned char,unsigned short)const  __ptr64
?DispatchError@CCryptoCard@iop@@MEBAXEEG@Z
; protected: virtual void __cdecl iop::CSmartCard::DispatchError(unsigned char,unsigned char,unsigned short)const  __ptr64
?DispatchError@CSmartCard@iop@@MEBAXEEG@Z
; protected: virtual void __cdecl iop::CAccessCard::DoReadBlock(unsigned short,unsigned char * __ptr64,unsigned char) __ptr64
?DoReadBlock@CAccessCard@iop@@MEAAXGPEAEE@Z
; protected: virtual void __cdecl iop::CCryptoCard::DoReadBlock(unsigned short,unsigned char * __ptr64,unsigned char) __ptr64
?DoReadBlock@CCryptoCard@iop@@MEAAXGPEAEE@Z
; protected: virtual void __cdecl iop::CAccessCard::DoWriteBlock(unsigned short,unsigned char const * __ptr64,unsigned char) __ptr64
?DoWriteBlock@CAccessCard@iop@@MEAAXGPEBEE@Z
; protected: virtual void __cdecl iop::CCryptoCard::DoWriteBlock(unsigned short,unsigned char const * __ptr64,unsigned char) __ptr64
?DoWriteBlock@CCryptoCard@iop@@MEAAXGPEBEE@Z
; public: virtual unsigned long __cdecl scu::ExcTemplate<2,unsigned long>::Error(void)const  __ptr64
?Error@?$ExcTemplate@$01K@scu@@UEBAKXZ
; public: virtual unsigned long __cdecl iop::CSmartCard::Exception::Error(void)const  __ptr64
?Error@Exception@CSmartCard@iop@@UEBAKXZ
; public: virtual void __cdecl iop::CAccessCard::ExecuteInstall(unsigned char const * __ptr64,unsigned char) __ptr64
?ExecuteInstall@CAccessCard@iop@@UEAAXPEBEE@Z
; public: virtual void __cdecl iop::CSmartCard::ExecuteInstall(unsigned char const * __ptr64,unsigned char) __ptr64
?ExecuteInstall@CSmartCard@iop@@UEAAXPEBEE@Z
; public: virtual void __cdecl iop::CAccessCard::ExecuteMain(void) __ptr64
?ExecuteMain@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::ExecuteMain(void) __ptr64
?ExecuteMain@CSmartCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CAccessCard::ExternalAuth(enum iop::KeyType,unsigned char,unsigned char,unsigned char const * __ptr64) __ptr64
?ExternalAuth@CAccessCard@iop@@UEAAXW4KeyType@2@EEPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::ExternalAuth(enum iop::KeyType,unsigned char,unsigned char,unsigned char const * __ptr64) __ptr64
?ExternalAuth@CCryptoCard@iop@@UEAAXW4KeyType@2@EEPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::ExternalAuth(enum iop::KeyType,unsigned char,unsigned char,unsigned char const * __ptr64) __ptr64
?ExternalAuth@CSmartCard@iop@@UEAAXW4KeyType@2@EEPEBE@Z
; public: enum scu::Exception::FacilityCode  __cdecl scu::Exception::Facility(void)const  __ptr64
?Facility@Exception@scu@@QEBA?AW4FacilityCode@12@XZ
; public: void __cdecl iop::CSmartCard::FireEvents(int,unsigned long,unsigned char * __ptr64) __ptr64
?FireEvents@CSmartCard@iop@@QEAAXHKPEAE@Z
; protected: unsigned char __cdecl iop::CSmartCard::FormatPath(char * __ptr64,char const * __ptr64) __ptr64
?FormatPath@CSmartCard@iop@@IEAAEPEADPEBD@Z
; public: virtual class iop::CPublicKeyBlob  __cdecl iop::CCryptoCard::GenerateKeyPair(unsigned char const * __ptr64,unsigned short,unsigned char,enum iop::KeyType) __ptr64
?GenerateKeyPair@CCryptoCard@iop@@UEAA?AVCPublicKeyBlob@2@PEBEGEW4KeyType@2@@Z
; public: virtual class iop::CPublicKeyBlob  __cdecl iop::CSmartCard::GenerateKeyPair(unsigned char const * __ptr64,unsigned short,unsigned char,enum iop::KeyType) __ptr64
?GenerateKeyPair@CSmartCard@iop@@UEAA?AVCPublicKeyBlob@2@PEBEGEW4KeyType@2@@Z
; public: virtual void __cdecl iop::CCryptoCard::GetACL(unsigned char * __ptr64) __ptr64
?GetACL@CCryptoCard@iop@@UEAAXPEAE@Z
; public: virtual void __cdecl iop::CSmartCard::GetACL(unsigned char * __ptr64) __ptr64
?GetACL@CSmartCard@iop@@UEAAXPEAE@Z
; public: virtual void __cdecl iop::CAccessCard::GetChallenge(unsigned long,unsigned char * __ptr64) __ptr64
?GetChallenge@CAccessCard@iop@@UEAAXKPEAE@Z
; public: virtual void __cdecl iop::CCryptoCard::GetChallenge(unsigned long,unsigned char * __ptr64) __ptr64
?GetChallenge@CCryptoCard@iop@@UEAAXKPEAE@Z
; public: virtual void __cdecl iop::CSmartCard::GetChallenge(unsigned long,unsigned char * __ptr64) __ptr64
?GetChallenge@CSmartCard@iop@@UEAAXKPEAE@Z
; public: void __cdecl iop::CSmartCard::GetCurrentDir(char * __ptr64) __ptr64
?GetCurrentDir@CSmartCard@iop@@QEAAXPEAD@Z
; public: void __cdecl iop::CSmartCard::GetCurrentFile(char * __ptr64) __ptr64
?GetCurrentFile@CSmartCard@iop@@QEAAXPEAD@Z
; public: virtual void __cdecl iop::CSmartCard::GetResponse(unsigned char,unsigned char,unsigned char * __ptr64) __ptr64
?GetResponse@CSmartCard@iop@@UEAAXEEPEAE@Z
; public: virtual void __cdecl iop::CAccessCard::GetSerial(unsigned char * __ptr64,unsigned __int64 & __ptr64) __ptr64
?GetSerial@CAccessCard@iop@@UEAAXPEAEAEA_K@Z
; public: virtual void __cdecl iop::CCryptoCard::GetSerial(unsigned char * __ptr64,unsigned __int64 & __ptr64) __ptr64
?GetSerial@CCryptoCard@iop@@UEAAXPEAEAEA_K@Z
; public: virtual void __cdecl iop::CSmartCard::GetSerial(unsigned char * __ptr64,unsigned __int64 & __ptr64) __ptr64
?GetSerial@CSmartCard@iop@@UEAAXPEAEAEA_K@Z
; public: unsigned short __cdecl iop::FilePathComponent::GetShortID(void) __ptr64
?GetShortID@FilePathComponent@iop@@QEAAGXZ
; public: void __cdecl iop::CSmartCard::GetState(unsigned long & __ptr64,unsigned long & __ptr64) __ptr64
?GetState@CSmartCard@iop@@QEAAXAEAK0@Z
; public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >  __cdecl iop::FilePathComponent::GetStringID(void) __ptr64
?GetStringID@FilePathComponent@iop@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
; public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >  __cdecl iop::FilePath::GetStringPath(void) __ptr64
?GetStringPath@FilePath@iop@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ
; public: class iop::FilePath  __cdecl iop::FilePath::GreatestCommonPrefix(class iop::FilePath & __ptr64) __ptr64
?GreatestCommonPrefix@FilePath@iop@@QEAA?AV12@AEAV12@@Z
; public: bool __cdecl iop::CSmartCard::HasProperty(unsigned short) __ptr64
?HasProperty@CSmartCard@iop@@QEAA_NG@Z
; public: class iop::FilePathComponent  __cdecl iop::FilePath::Head(void) __ptr64
?Head@FilePath@iop@@QEAA?AVFilePathComponent@2@XZ
; public: void __cdecl iop::CIOPLock::IncrementRefCount(void) __ptr64
?IncrementRefCount@CIOPLock@iop@@QEAAXXZ
; public: void __cdecl iop::CIOPLock::Init(class iop::CSmartCard * __ptr64) __ptr64
?Init@CIOPLock@iop@@QEAAXPEAVCSmartCard@2@@Z
; public: static void __cdecl iop::CIOP::InitIOPSecurityAttrs(class CSecurityAttributes * __ptr64)
?InitIOPSecurityAttrs@CIOP@iop@@SAXPEAVCSecurityAttributes@@@Z
; public: unsigned char __cdecl iop::CSmartCard::Exception::Ins(void)const  __ptr64
?Ins@Exception@CSmartCard@iop@@QEBAEXZ
; public: virtual void __cdecl iop::CAccessCard::InternalAuth(enum iop::KeyType,unsigned char,unsigned char,unsigned char const * __ptr64,unsigned char * __ptr64) __ptr64
?InternalAuth@CAccessCard@iop@@UEAAXW4KeyType@2@EEPEBEPEAE@Z
; public: virtual void __cdecl iop::CCryptoCard::InternalAuth(enum iop::KeyType,unsigned char,unsigned char,unsigned char const * __ptr64,unsigned char * __ptr64) __ptr64
?InternalAuth@CCryptoCard@iop@@UEAAXW4KeyType@2@EEPEBEPEAE@Z
; public: virtual void __cdecl iop::CSmartCard::InternalAuth(enum iop::KeyType,unsigned char,unsigned char,unsigned char const * __ptr64,unsigned char * __ptr64) __ptr64
?InternalAuth@CSmartCard@iop@@UEAAXW4KeyType@2@EEPEBEPEAE@Z
; public: bool __cdecl iop::FilePath::IsEmpty(void) __ptr64
?IsEmpty@FilePath@iop@@QEAA_NXZ
; public: static void __cdecl iop::CIOP::ListKnownCards(char * __ptr64,int & __ptr64)
?ListKnownCards@CIOP@iop@@SAXPEADAEAH@Z
; public: void __cdecl iop::CIOP::ListReaders(char * __ptr64,int & __ptr64) __ptr64
?ListReaders@CIOP@iop@@QEAAXPEADAEAH@Z
; public: class iop::CIOPLock * __ptr64 __cdecl iop::CSmartCard::Lock(void) __ptr64
?Lock@CSmartCard@iop@@QEAAPEAVCIOPLock@2@XZ
; public: virtual void __cdecl iop::CAccessCard::LogoutAll(void) __ptr64
?LogoutAll@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CCryptoCard::LogoutAll(void) __ptr64
?LogoutAll@CCryptoCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::LogoutAll(void) __ptr64
?LogoutAll@CSmartCard@iop@@UEAAXXZ
; public: void * __ptr64 __cdecl iop::CIOPLock::MutexHandle(void) __ptr64
?MutexHandle@CIOPLock@iop@@QEAAPEAXXZ
; public: unsigned char __cdecl iop::FilePath::NumComponents(void) __ptr64
?NumComponents@FilePath@iop@@QEAAEXZ
; private: void __cdecl iop::CSmartCard::ProcessReturnStatus(unsigned char,unsigned char,unsigned short) __ptr64
?ProcessReturnStatus@CSmartCard@iop@@AEAAXEEG@Z
; public: virtual void __cdecl scu::ExcTemplate<2,unsigned long>::Raise(void)const  __ptr64
?Raise@?$ExcTemplate@$01K@scu@@UEBAXXZ
; public: virtual void __cdecl iop::CSmartCard::Exception::Raise(void)const  __ptr64
?Raise@Exception@CSmartCard@iop@@UEBAXXZ
; public: virtual void __cdecl scu::OsException::Raise(void)const  __ptr64
?Raise@OsException@scu@@UEBAXXZ
; public: void __cdecl iop::CSmartCard::ReConnect(void) __ptr64
?ReConnect@CSmartCard@iop@@QEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::ReadBinary(unsigned short,unsigned short,unsigned char * __ptr64) __ptr64
?ReadBinary@CSmartCard@iop@@UEAAXGGPEAE@Z
; public: virtual void __cdecl iop::CAccessCard::ReadPublicKey(class iop::CPublicKeyBlob * __ptr64,unsigned char) __ptr64
?ReadPublicKey@CAccessCard@iop@@UEAAXPEAVCPublicKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CCryptoCard::ReadPublicKey(class iop::CPublicKeyBlob * __ptr64,unsigned char) __ptr64
?ReadPublicKey@CCryptoCard@iop@@UEAAXPEAVCPublicKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CSmartCard::ReadPublicKey(class iop::CPublicKeyBlob * __ptr64,unsigned char) __ptr64
?ReadPublicKey@CSmartCard@iop@@UEAAXPEAVCPublicKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CAccessCard::ReadRecord(unsigned char,unsigned char,unsigned char,unsigned char * __ptr64) __ptr64
?ReadRecord@CAccessCard@iop@@UEAAXEEEPEAE@Z
; public: virtual void __cdecl iop::CSmartCard::ReadRecord(unsigned char,unsigned char,unsigned char,unsigned char * __ptr64) __ptr64
?ReadRecord@CSmartCard@iop@@UEAAXEEEPEAE@Z
; public: long __cdecl iop::CIOPLock::RefCount(void) __ptr64
?RefCount@CIOPLock@iop@@QEAAJXZ
; public: static void __cdecl iop::CIOP::RegisterCard(char const * __ptr64,unsigned char const * __ptr64,unsigned char,unsigned char const * __ptr64,unsigned char,unsigned char const * __ptr64,enum iop::cardType)
?RegisterCard@CIOP@iop@@SAXPEBDPEBEE1E1W4cardType@2@@Z
; public: static void __cdecl iop::CIOP::RegisterDefaultCards(void)
?RegisterDefaultCards@CIOP@iop@@SAXXZ
; public: unsigned long __cdecl iop::CSmartCard::RegisterEvent(void (__cdecl*)(void * __ptr64,int,unsigned long,unsigned char * __ptr64),void * __ptr64) __ptr64
?RegisterEvent@CSmartCard@iop@@QEAAKP6AXPEAXHKPEAE@Z0@Z
; protected: void __cdecl iop::CSmartCard::RequireSelect(void) __ptr64
?RequireSelect@CSmartCard@iop@@IEAAXXZ
; public: void __cdecl iop::CSmartCard::ResetCard(void) __ptr64
?ResetCard@CSmartCard@iop@@QEAAXXZ
; public: virtual void __cdecl iop::CAccessCard::ResetInstance(void) __ptr64
?ResetInstance@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::ResetInstance(void) __ptr64
?ResetInstance@CSmartCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CAccessCard::ResetProgram(void) __ptr64
?ResetProgram@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::ResetProgram(void) __ptr64
?ResetProgram@CSmartCard@iop@@UEAAXXZ
; public: void __cdecl iop::CSmartCard::ResetSelect(void) __ptr64
?ResetSelect@CSmartCard@iop@@QEAAXXZ
; protected: void __cdecl iop::CSmartCard::ResponseLengthAvailable(unsigned char) __ptr64
?ResponseLengthAvailable@CSmartCard@iop@@IEAAXE@Z
; protected: unsigned char __cdecl iop::CSmartCard::ResponseLengthAvailable(void)const  __ptr64
?ResponseLengthAvailable@CSmartCard@iop@@IEBAEXZ
; public: static class iop::FilePath  __cdecl iop::FilePath::Root(void)
?Root@FilePath@iop@@SA?AV12@XZ
; protected: virtual void __cdecl iop::CAccessCard::Select(unsigned short) __ptr64
?Select@CAccessCard@iop@@MEAAXG@Z
; public: virtual void __cdecl iop::CAccessCard::Select(char const * __ptr64,struct iop::FILE_HEADER * __ptr64,bool) __ptr64
?Select@CAccessCard@iop@@UEAAXPEBDPEAUFILE_HEADER@2@_N@Z
; protected: virtual void __cdecl iop::CCryptoCard::Select(unsigned short) __ptr64
?Select@CCryptoCard@iop@@MEAAXG@Z
; public: virtual void __cdecl iop::CCryptoCard::Select(char const * __ptr64,struct iop::FILE_HEADER * __ptr64,bool) __ptr64
?Select@CCryptoCard@iop@@UEAAXPEBDPEAUFILE_HEADER@2@_N@Z
; public: virtual void __cdecl iop::CSmartCard::Select(char const * __ptr64,struct iop::FILE_HEADER * __ptr64,bool) __ptr64
?Select@CSmartCard@iop@@UEAAXPEBDPEAUFILE_HEADER@2@_N@Z
; public: virtual void __cdecl iop::CAccessCard::SelectCardlet(unsigned char const * __ptr64,unsigned char) __ptr64
?SelectCardlet@CAccessCard@iop@@UEAAXPEBEE@Z
; public: virtual void __cdecl iop::CSmartCard::SelectCardlet(unsigned char const * __ptr64,unsigned char) __ptr64
?SelectCardlet@CSmartCard@iop@@UEAAXPEBEE@Z
; public: virtual void __cdecl iop::CAccessCard::SelectLoader(void) __ptr64
?SelectLoader@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::SelectLoader(void) __ptr64
?SelectLoader@CSmartCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CAccessCard::SelectParent(void) __ptr64
?SelectParent@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CCryptoCard::SelectParent(void) __ptr64
?SelectParent@CCryptoCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::SelectParent(void) __ptr64
?SelectParent@CSmartCard@iop@@UEAAXXZ
; public: void __cdecl iop::CSmartCard::SendCardAPDU(unsigned char,unsigned char,unsigned char,unsigned char,unsigned char,unsigned char const * __ptr64,unsigned char,unsigned char * __ptr64) __ptr64
?SendCardAPDU@CSmartCard@iop@@QEAAXEEEEEPEBEEPEAE@Z
; public: virtual void __cdecl iop::CAccessCard::SetCurrentAsLoader(void) __ptr64
?SetCurrentAsLoader@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::SetCurrentAsLoader(void) __ptr64
?SetCurrentAsLoader@CSmartCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CAccessCard::SetDefaultAsLoader(void) __ptr64
?SetDefaultAsLoader@CAccessCard@iop@@UEAAXXZ
; public: virtual void __cdecl iop::CSmartCard::SetDefaultAsLoader(void) __ptr64
?SetDefaultAsLoader@CSmartCard@iop@@UEAAXXZ
; private: void __cdecl scu::SecureArray<char>::SetupFromBuffer(char const * __ptr64,unsigned __int64) __ptr64
?SetupFromBuffer@?$SecureArray@D@scu@@AEAAXPEBD_K@Z
; private: void __cdecl scu::SecureArray<unsigned char>::SetupFromBuffer(unsigned char const * __ptr64,unsigned __int64) __ptr64
?SetupFromBuffer@?$SecureArray@E@scu@@AEAAXPEBE_K@Z
; public: class iop::CSmartCard * __ptr64 __cdecl iop::CIOPLock::SmartCard(void) __ptr64
?SmartCard@CIOPLock@iop@@QEAAPEAVCSmartCard@2@XZ
; public: unsigned short __cdecl iop::CSmartCard::Exception::Status(void)const  __ptr64
?Status@Exception@CSmartCard@iop@@QEBAGXZ
; protected: virtual bool __cdecl iop::CAccessCard::SupportLogout(void) __ptr64
?SupportLogout@CAccessCard@iop@@MEAA_NXZ
; protected: virtual bool __cdecl iop::CCryptoCard::SupportLogout(void) __ptr64
?SupportLogout@CCryptoCard@iop@@MEAA_NXZ
; public: class iop::FilePathComponent  __cdecl iop::FilePath::Tail(void) __ptr64
?Tail@FilePath@iop@@QEAA?AVFilePathComponent@2@XZ
; public: virtual void __cdecl iop::CAccessCard::UnblockCHV(unsigned char,unsigned char const * __ptr64,unsigned char const * __ptr64) __ptr64
?UnblockCHV@CAccessCard@iop@@UEAAXEPEBE0@Z
; public: virtual void __cdecl iop::CCryptoCard::UnblockCHV(unsigned char,unsigned char const * __ptr64,unsigned char const * __ptr64) __ptr64
?UnblockCHV@CCryptoCard@iop@@UEAAXEPEBE0@Z
; public: virtual void __cdecl iop::CSmartCard::UnblockCHV(unsigned char,unsigned char const * __ptr64,unsigned char const * __ptr64) __ptr64
?UnblockCHV@CSmartCard@iop@@UEAAXEPEBE0@Z
; public: bool __cdecl iop::CSmartCard::UnregisterEvent(unsigned long) __ptr64
?UnregisterEvent@CSmartCard@iop@@QEAA_NK@Z
; public: virtual void __cdecl iop::CAccessCard::UpdateRecord(unsigned char,unsigned char,unsigned char,unsigned char * __ptr64) __ptr64
?UpdateRecord@CAccessCard@iop@@UEAAXEEEPEAE@Z
; public: virtual void __cdecl iop::CSmartCard::UpdateRecord(unsigned char,unsigned char,unsigned char,unsigned char * __ptr64) __ptr64
?UpdateRecord@CSmartCard@iop@@UEAAXEEEPEAE@Z
; private: bool __cdecl iop::CAccessCard::ValidClassByte(unsigned char) __ptr64
?ValidClassByte@CAccessCard@iop@@AEAA_NE@Z
; public: virtual void __cdecl iop::CAccessCard::ValidateProgram(unsigned char const * __ptr64,unsigned char) __ptr64
?ValidateProgram@CAccessCard@iop@@UEAAXPEBEE@Z
; public: virtual void __cdecl iop::CSmartCard::ValidateProgram(unsigned char const * __ptr64,unsigned char) __ptr64
?ValidateProgram@CSmartCard@iop@@UEAAXPEBEE@Z
; public: virtual void __cdecl iop::CAccessCard::VerifyCHV(unsigned char,unsigned char const * __ptr64) __ptr64
?VerifyCHV@CAccessCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::VerifyCHV(unsigned char,unsigned char const * __ptr64) __ptr64
?VerifyCHV@CCryptoCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::VerifyCHV(unsigned char,unsigned char const * __ptr64) __ptr64
?VerifyCHV@CSmartCard@iop@@UEAAXEPEBE@Z
; public: virtual void __cdecl iop::CAccessCard::VerifyKey(unsigned char,unsigned char,unsigned char const * __ptr64) __ptr64
?VerifyKey@CAccessCard@iop@@UEAAXEEPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::VerifyKey(unsigned char,unsigned char,unsigned char const * __ptr64) __ptr64
?VerifyKey@CCryptoCard@iop@@UEAAXEEPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::VerifyKey(unsigned char,unsigned char,unsigned char const * __ptr64) __ptr64
?VerifyKey@CSmartCard@iop@@UEAAXEEPEBE@Z
; public: virtual void __cdecl iop::CAccessCard::VerifyTransportKey(unsigned char const * __ptr64) __ptr64
?VerifyTransportKey@CAccessCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CCryptoCard::VerifyTransportKey(unsigned char const * __ptr64) __ptr64
?VerifyTransportKey@CCryptoCard@iop@@UEAAXPEBE@Z
; public: virtual void __cdecl iop::CSmartCard::VerifyTransportKey(unsigned char const * __ptr64) __ptr64
?VerifyTransportKey@CSmartCard@iop@@UEAAXPEBE@Z
; public: static bool __cdecl iop::CIOP::WaitForSCManager(void)
?WaitForSCManager@CIOP@iop@@SA_NXZ
; public: virtual void __cdecl iop::CSmartCard::WriteBinary(unsigned short,unsigned short,unsigned char const * __ptr64) __ptr64
?WriteBinary@CSmartCard@iop@@UEAAXGGPEBE@Z
; private: void __cdecl iop::CSmartCard::WriteBlock(unsigned short,unsigned char const * __ptr64,unsigned char) __ptr64
?WriteBlock@CSmartCard@iop@@AEAAXGPEBEE@Z
; public: virtual void __cdecl iop::CAccessCard::WritePrivateKey(class iop::CPrivateKeyBlob,unsigned char) __ptr64
?WritePrivateKey@CAccessCard@iop@@UEAAXVCPrivateKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CCryptoCard::WritePrivateKey(class iop::CPrivateKeyBlob,unsigned char) __ptr64
?WritePrivateKey@CCryptoCard@iop@@UEAAXVCPrivateKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CSmartCard::WritePrivateKey(class iop::CPrivateKeyBlob,unsigned char) __ptr64
?WritePrivateKey@CSmartCard@iop@@UEAAXVCPrivateKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CAccessCard::WritePublicKey(class iop::CPublicKeyBlob,unsigned char) __ptr64
?WritePublicKey@CAccessCard@iop@@UEAAXVCPublicKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CCryptoCard::WritePublicKey(class iop::CPublicKeyBlob,unsigned char) __ptr64
?WritePublicKey@CCryptoCard@iop@@UEAAXVCPublicKeyBlob@2@E@Z
; public: virtual void __cdecl iop::CSmartCard::WritePublicKey(class iop::CPublicKeyBlob,unsigned char) __ptr64
?WritePublicKey@CSmartCard@iop@@UEAAXVCPublicKeyBlob@2@E@Z
; protected: struct std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Node * __ptr64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Buynode(struct std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Node * __ptr64,struct std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Node * __ptr64) __ptr64
?_Buynode@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@IEAAPEAU_Node@12@PEAU312@0@Z
; protected: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::_Destroy(struct iop::EventInfo * __ptr64 * __ptr64,struct iop::EventInfo * __ptr64 * __ptr64) __ptr64
?_Destroy@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@IEAAXPEAPEAUEventInfo@iop@@0@Z
; public: bool __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::_Eq(class std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> > const & __ptr64)const  __ptr64
?_Eq@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA_NAEBV12@@Z
; protected: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Freenode(struct std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Node * __ptr64) __ptr64
?_Freenode@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@IEAAXPEAU_Node@12@@Z
; public: bool __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::_Lt(class std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> > const & __ptr64)const  __ptr64
?_Lt@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA_NAEBV12@@Z
; protected: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Splice(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator) __ptr64
?_Splice@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@IEAAXViterator@12@AEAV12@00@Z
; protected: struct iop::EventInfo * __ptr64 * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::_Ucopy(struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64 * __ptr64) __ptr64
?_Ucopy@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@IEAAPEAPEAUEventInfo@iop@@PEBQEAU34@0PEAPEAU34@@Z
; protected: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::_Ufill(struct iop::EventInfo * __ptr64 * __ptr64,unsigned __int64,struct iop::EventInfo * __ptr64 const & __ptr64) __ptr64
?_Ufill@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@IEAAXPEAPEAUEventInfo@iop@@_KAEBQEAU34@@Z
; protected: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::_Xran(void)const  __ptr64
?_Xran@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@IEBAXXZ
; protected: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::_Xran(void)const  __ptr64
?_Xran@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@IEBAXXZ
; public: class scu::SecureArray<char> & __ptr64 __cdecl scu::SecureArray<char>::append(char const * __ptr64,unsigned __int64) __ptr64
?append@?$SecureArray@D@scu@@QEAAAEAV12@PEBD_K@Z
; public: class scu::SecureArray<char> & __ptr64 __cdecl scu::SecureArray<char>::append(unsigned __int64,char const & __ptr64) __ptr64
?append@?$SecureArray@D@scu@@QEAAAEAV12@_KAEBD@Z
; public: class scu::SecureArray<unsigned char> & __ptr64 __cdecl scu::SecureArray<unsigned char>::append(unsigned char const * __ptr64,unsigned __int64) __ptr64
?append@?$SecureArray@E@scu@@QEAAAEAV12@PEBE_K@Z
; public: class scu::SecureArray<unsigned char> & __ptr64 __cdecl scu::SecureArray<unsigned char>::append(unsigned __int64,unsigned char const & __ptr64) __ptr64
?append@?$SecureArray@E@scu@@QEAAAEAV12@_KAEBE@Z
; public: class scu::SecureArray<char> & __ptr64 __cdecl scu::SecureArray<char>::append_string(unsigned __int64,char const & __ptr64) __ptr64
?append_string@?$SecureArray@D@scu@@QEAAAEAV12@_KAEBD@Z
; public: class scu::SecureArray<unsigned char> & __ptr64 __cdecl scu::SecureArray<unsigned char>::append_string(unsigned __int64,unsigned char const & __ptr64) __ptr64
?append_string@?$SecureArray@E@scu@@QEAAAEAV12@_KAEBE@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::assign(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator) __ptr64
?assign@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXVconst_iterator@12@0@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::assign(unsigned __int64,class iop::FilePathComponent const & __ptr64) __ptr64
?assign@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAX_KAEBVFilePathComponent@iop@@@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::assign(struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64) __ptr64
?assign@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXPEBQEAUEventInfo@iop@@0@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::assign(unsigned __int64,struct iop::EventInfo * __ptr64 const & __ptr64) __ptr64
?assign@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAX_KAEBQEAUEventInfo@iop@@@Z
; public: struct iop::EventInfo * __ptr64 & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::at(unsigned __int64) __ptr64
?at@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAAEAPEAUEventInfo@iop@@_K@Z
; public: struct iop::EventInfo * __ptr64 const & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::at(unsigned __int64)const  __ptr64
?at@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBAAEBQEAUEventInfo@iop@@_K@Z
; public: class iop::FilePathComponent & __ptr64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::back(void) __ptr64
?back@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAAEAVFilePathComponent@iop@@XZ
; public: class iop::FilePathComponent const & __ptr64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::back(void)const  __ptr64
?back@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBAAEBVFilePathComponent@iop@@XZ
; public: struct iop::EventInfo * __ptr64 & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::back(void) __ptr64
?back@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAAEAPEAUEventInfo@iop@@XZ
; public: struct iop::EventInfo * __ptr64 const & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::back(void)const  __ptr64
?back@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBAAEBQEAUEventInfo@iop@@XZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::begin(void) __ptr64
?begin@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AViterator@12@XZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::begin(void)const  __ptr64
?begin@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA?AVconst_iterator@12@XZ
; public: struct iop::EventInfo * __ptr64 * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::begin(void) __ptr64
?begin@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAPEAPEAUEventInfo@iop@@XZ
; public: struct iop::EventInfo * __ptr64 const * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::begin(void)const  __ptr64
?begin@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBAPEBQEAUEventInfo@iop@@XZ
; public: unsigned __int64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::capacity(void)const  __ptr64
?capacity@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA_KXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::clear(void) __ptr64
?clear@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::clear(void) __ptr64
?clear@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXXZ
; public: char * __ptr64 __cdecl scu::SecureArray<char>::data(void) __ptr64
?data@?$SecureArray@D@scu@@QEAAPEADXZ
; public: char const * __ptr64 __cdecl scu::SecureArray<char>::data(void)const  __ptr64
?data@?$SecureArray@D@scu@@QEBAPEBDXZ
; public: unsigned char * __ptr64 __cdecl scu::SecureArray<unsigned char>::data(void) __ptr64
?data@?$SecureArray@E@scu@@QEAAPEAEXZ
; public: unsigned char const * __ptr64 __cdecl scu::SecureArray<unsigned char>::data(void)const  __ptr64
?data@?$SecureArray@E@scu@@QEBAPEBEXZ
; public: bool __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::empty(void)const  __ptr64
?empty@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA_NXZ
; public: bool __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::empty(void)const  __ptr64
?empty@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA_NXZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::end(void) __ptr64
?end@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AViterator@12@XZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::end(void)const  __ptr64
?end@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA?AVconst_iterator@12@XZ
; public: struct iop::EventInfo * __ptr64 * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::end(void) __ptr64
?end@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAPEAPEAUEventInfo@iop@@XZ
; public: struct iop::EventInfo * __ptr64 const * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::end(void)const  __ptr64
?end@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBAPEBQEAUEventInfo@iop@@XZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::erase(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator) __ptr64
?erase@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AViterator@12@V312@0@Z
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::erase(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator) __ptr64
?erase@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AViterator@12@V312@@Z
; public: struct iop::EventInfo * __ptr64 * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::erase(struct iop::EventInfo * __ptr64 * __ptr64,struct iop::EventInfo * __ptr64 * __ptr64) __ptr64
?erase@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAPEAPEAUEventInfo@iop@@PEAPEAU34@0@Z
; public: struct iop::EventInfo * __ptr64 * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::erase(struct iop::EventInfo * __ptr64 * __ptr64) __ptr64
?erase@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAPEAPEAUEventInfo@iop@@PEAPEAU34@@Z
; public: class iop::FilePathComponent & __ptr64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::front(void) __ptr64
?front@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAAEAVFilePathComponent@iop@@XZ
; public: class iop::FilePathComponent const & __ptr64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::front(void)const  __ptr64
?front@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBAAEBVFilePathComponent@iop@@XZ
; public: struct iop::EventInfo * __ptr64 & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::front(void) __ptr64
?front@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAAEAPEAUEventInfo@iop@@XZ
; public: struct iop::EventInfo * __ptr64 const & __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::front(void)const  __ptr64
?front@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBAAEBQEAUEventInfo@iop@@XZ
; public: class iop::CSharedMarker * __ptr64 __cdecl std::auto_ptr<class iop::CSharedMarker>::get(void)const  __ptr64
?get@?$auto_ptr@VCSharedMarker@iop@@@std@@QEBAPEAVCSharedMarker@iop@@XZ
; public: class iop::RMHangProcDeathSynchObjects * __ptr64 __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::get(void)const  __ptr64
?get@?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEBAPEAVRMHangProcDeathSynchObjects@iop@@XZ
; public: void __cdecl iop::CSmartCard::getATR(unsigned char * __ptr64,unsigned char & __ptr64) __ptr64
?getATR@CSmartCard@iop@@QEAAXPEAEAEAE@Z
; public: unsigned __int64 __cdecl iop::CSmartCard::getCardHandle(void) __ptr64
?getCardHandle@CSmartCard@iop@@QEAA_KXZ
; public: char const * __ptr64 __cdecl iop::CSmartCard::getCardName(void)const  __ptr64
?getCardName@CSmartCard@iop@@QEBAPEBDXZ
; public: class std::allocator<class iop::FilePathComponent>  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::get_allocator(void)const  __ptr64
?get_allocator@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA?AV?$allocator@VFilePathComponent@iop@@@2@XZ
; public: class std::allocator<struct iop::EventInfo * __ptr64>  __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::get_allocator(void)const  __ptr64
?get_allocator@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA?AV?$allocator@PEAUEventInfo@iop@@@2@XZ
; public: class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::insert(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class iop::FilePathComponent const & __ptr64) __ptr64
?insert@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AViterator@12@V312@AEBVFilePathComponent@iop@@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::insert(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class iop::FilePathComponent const * __ptr64,class iop::FilePathComponent const * __ptr64) __ptr64
?insert@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXViterator@12@PEBVFilePathComponent@iop@@1@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::insert(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator) __ptr64
?insert@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXViterator@12@Vconst_iterator@12@1@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::insert(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,unsigned __int64,class iop::FilePathComponent const & __ptr64) __ptr64
?insert@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXViterator@12@_KAEBVFilePathComponent@iop@@@Z
; public: struct iop::EventInfo * __ptr64 * __ptr64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::insert(struct iop::EventInfo * __ptr64 * __ptr64,struct iop::EventInfo * __ptr64 const & __ptr64) __ptr64
?insert@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAPEAPEAUEventInfo@iop@@PEAPEAU34@AEBQEAU34@@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::insert(struct iop::EventInfo * __ptr64 * __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64) __ptr64
?insert@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXPEAPEAUEventInfo@iop@@PEBQEAU34@1@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::insert(struct iop::EventInfo * __ptr64 * __ptr64,unsigned __int64,struct iop::EventInfo * __ptr64 const & __ptr64) __ptr64
?insert@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXPEAPEAUEventInfo@iop@@_KAEBQEAU34@@Z
; public: unsigned __int64 __cdecl scu::SecureArray<char>::length(void)const  __ptr64
?length@?$SecureArray@D@scu@@QEBA_KXZ
; public: unsigned __int64 __cdecl scu::SecureArray<unsigned char>::length(void)const  __ptr64
?length@?$SecureArray@E@scu@@QEBA_KXZ
; public: unsigned __int64 __cdecl scu::SecureArray<char>::length_string(void)const  __ptr64
?length_string@?$SecureArray@D@scu@@QEBA_KXZ
; public: unsigned __int64 __cdecl scu::SecureArray<unsigned char>::length_string(void)const  __ptr64
?length_string@?$SecureArray@E@scu@@QEBA_KXZ
; public: unsigned __int64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::max_size(void)const  __ptr64
?max_size@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA_KXZ
; public: unsigned __int64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::max_size(void)const  __ptr64
?max_size@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA_KXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::merge(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64) __ptr64
?merge@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXAEAV12@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::merge(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64,struct std::greater<class iop::FilePathComponent>) __ptr64
?merge@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXAEAV12@U?$greater@VFilePathComponent@iop@@@2@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::pop_back(void) __ptr64
?pop_back@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::pop_back(void) __ptr64
?pop_back@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::pop_front(void) __ptr64
?pop_front@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::push_back(class iop::FilePathComponent const & __ptr64) __ptr64
?push_back@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXAEBVFilePathComponent@iop@@@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::push_back(struct iop::EventInfo * __ptr64 const & __ptr64) __ptr64
?push_back@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXAEBQEAUEventInfo@iop@@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::push_front(class iop::FilePathComponent const & __ptr64) __ptr64
?push_front@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXAEBVFilePathComponent@iop@@@Z
; public: class std::reverse_bidirectional_iterator<class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class iop::FilePathComponent,class iop::FilePathComponent & __ptr64,class iop::FilePathComponent * __ptr64,__int64>  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::rbegin(void) __ptr64
?rbegin@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AV?$reverse_bidirectional_iterator@Viterator@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@VFilePathComponent@iop@@AEAV45@PEAV45@_J@2@XZ
; public: class std::reverse_bidirectional_iterator<class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator,class iop::FilePathComponent,class iop::FilePathComponent const & __ptr64,class iop::FilePathComponent const * __ptr64,__int64>  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::rbegin(void)const  __ptr64
?rbegin@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA?AV?$reverse_bidirectional_iterator@Vconst_iterator@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@VFilePathComponent@iop@@AEBV45@PEBV45@_J@2@XZ
; public: class std::reverse_iterator<struct iop::EventInfo * __ptr64 * __ptr64,struct iop::EventInfo * __ptr64,struct iop::EventInfo * __ptr64 & __ptr64,struct iop::EventInfo * __ptr64 * __ptr64,__int64>  __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::rbegin(void) __ptr64
?rbegin@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA?AV?$reverse_iterator@PEAPEAUEventInfo@iop@@PEAU12@AEAPEAU12@PEAPEAU12@_J@2@XZ
; public: class std::reverse_iterator<struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64,struct iop::EventInfo * __ptr64 const & __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64,__int64>  __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::rbegin(void)const  __ptr64
?rbegin@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA?AV?$reverse_iterator@PEBQEAUEventInfo@iop@@PEAU12@AEBQEAU12@PEBQEAU12@_J@2@XZ
; public: class iop::CSharedMarker * __ptr64 __cdecl std::auto_ptr<class iop::CSharedMarker>::release(void)const  __ptr64
?release@?$auto_ptr@VCSharedMarker@iop@@@std@@QEBAPEAVCSharedMarker@iop@@XZ
; public: class iop::RMHangProcDeathSynchObjects * __ptr64 __cdecl std::auto_ptr<class iop::RMHangProcDeathSynchObjects>::release(void)const  __ptr64
?release@?$auto_ptr@VRMHangProcDeathSynchObjects@iop@@@std@@QEBAPEAVRMHangProcDeathSynchObjects@iop@@XZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::remove(class iop::FilePathComponent const & __ptr64) __ptr64
?remove@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXAEBVFilePathComponent@iop@@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::remove_if(class std::binder2nd<struct std::not_equal_to<class iop::FilePathComponent> >) __ptr64
?remove_if@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXV?$binder2nd@U?$not_equal_to@VFilePathComponent@iop@@@std@@@2@@Z
; public: class std::reverse_bidirectional_iterator<class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class iop::FilePathComponent,class iop::FilePathComponent & __ptr64,class iop::FilePathComponent * __ptr64,__int64>  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::rend(void) __ptr64
?rend@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAA?AV?$reverse_bidirectional_iterator@Viterator@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@VFilePathComponent@iop@@AEAV45@PEAV45@_J@2@XZ
; public: class std::reverse_bidirectional_iterator<class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::const_iterator,class iop::FilePathComponent,class iop::FilePathComponent const & __ptr64,class iop::FilePathComponent const * __ptr64,__int64>  __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::rend(void)const  __ptr64
?rend@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA?AV?$reverse_bidirectional_iterator@Vconst_iterator@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@VFilePathComponent@iop@@AEBV45@PEBV45@_J@2@XZ
; public: class std::reverse_iterator<struct iop::EventInfo * __ptr64 * __ptr64,struct iop::EventInfo * __ptr64,struct iop::EventInfo * __ptr64 & __ptr64,struct iop::EventInfo * __ptr64 * __ptr64,__int64>  __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::rend(void) __ptr64
?rend@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAA?AV?$reverse_iterator@PEAPEAUEventInfo@iop@@PEAU12@AEAPEAU12@PEAPEAU12@_J@2@XZ
; public: class std::reverse_iterator<struct iop::EventInfo * __ptr64 const * __ptr64,struct iop::EventInfo * __ptr64,struct iop::EventInfo * __ptr64 const & __ptr64,struct iop::EventInfo * __ptr64 const * __ptr64,__int64>  __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::rend(void)const  __ptr64
?rend@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA?AV?$reverse_iterator@PEBQEAUEventInfo@iop@@PEAU12@AEBQEAU12@PEBQEAU12@_J@2@XZ
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::reserve(unsigned __int64) __ptr64
?reserve@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAX_K@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::resize(unsigned __int64,class iop::FilePathComponent) __ptr64
?resize@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAX_KVFilePathComponent@iop@@@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::resize(unsigned __int64,struct iop::EventInfo * __ptr64 const & __ptr64) __ptr64
?resize@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAX_KAEBQEAUEventInfo@iop@@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::reverse(void) __ptr64
?reverse@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl iop::CSmartCard::setCardName(char const * __ptr64) __ptr64
?setCardName@CSmartCard@iop@@QEAAXPEBD@Z
; public: unsigned __int64 __cdecl scu::SecureArray<char>::size(void)const  __ptr64
?size@?$SecureArray@D@scu@@QEBA_KXZ
; public: unsigned __int64 __cdecl scu::SecureArray<unsigned char>::size(void)const  __ptr64
?size@?$SecureArray@E@scu@@QEBA_KXZ
; public: unsigned __int64 __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::size(void)const  __ptr64
?size@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEBA_KXZ
; public: unsigned __int64 __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::size(void)const  __ptr64
?size@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEBA_KXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::sort(struct std::greater<class iop::FilePathComponent>) __ptr64
?sort@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXU?$greater@VFilePathComponent@iop@@@2@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::sort(void) __ptr64
?sort@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::splice(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator) __ptr64
?splice@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXViterator@12@AEAV12@00@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::splice(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator) __ptr64
?splice@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXViterator@12@AEAV12@0@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::splice(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::iterator,class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64) __ptr64
?splice@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXViterator@12@AEAV12@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::swap(class std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> > & __ptr64) __ptr64
?swap@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXAEAV12@@Z
; public: void __cdecl std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> >::swap(class std::vector<struct iop::EventInfo * __ptr64,class std::allocator<struct iop::EventInfo * __ptr64> > & __ptr64) __ptr64
?swap@?$vector@PEAUEventInfo@iop@@V?$allocator@PEAUEventInfo@iop@@@std@@@std@@QEAAXAEAV12@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::unique(struct std::not_equal_to<class iop::FilePathComponent>) __ptr64
?unique@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXU?$not_equal_to@VFilePathComponent@iop@@@2@@Z
; public: void __cdecl std::list<class iop::FilePathComponent,class std::allocator<class iop::FilePathComponent> >::unique(void) __ptr64
?unique@?$list@VFilePathComponent@iop@@V?$allocator@VFilePathComponent@iop@@@std@@@std@@QEAAXXZ
DllGetVersion
DllRegisterServer
DllUnregisterServer
