; 
; Exports of file mmutilse.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY mmutilse.dll
EXPORTS
; public: __cdecl IHammer::CDirectDrawSurface::CDirectDrawSurface(struct HPALETTE__ * __ptr64,unsigned long,struct tagSIZE const * __ptr64,long * __ptr64) __ptr64
??0CDirectDrawSurface@IHammer@@QEAA@PEAUHPALETTE__@@KPEBUtagSIZE@@PEAJ@Z
; public: __cdecl CHalftone::CHalftone(struct HPALETTE__ * __ptr64) __ptr64
??0CHalftone@@QEAA@PEAUHPALETTE__@@@Z
; public: __cdecl CHalftonePalette::CHalftonePalette(struct HPALETTE__ * __ptr64) __ptr64
??0CHalftonePalette@@QEAA@PEAUHPALETTE__@@@Z
; public: __cdecl CHalftonePalette::CHalftonePalette(void) __ptr64
??0CHalftonePalette@@QEAA@XZ
; public: __cdecl CMemManager::CMemManager(void) __ptr64
??0CMemManager@@QEAA@XZ
; public: __cdecl CMemUser::CMemUser(void) __ptr64
??0CMemUser@@QEAA@XZ
; public: __cdecl CTStr::CTStr(class CTStr & __ptr64) __ptr64
??0CTStr@@QEAA@AEAV0@@Z
; public: __cdecl CTStr::CTStr(int) __ptr64
??0CTStr@@QEAA@H@Z
; public: __cdecl CTStr::CTStr(char * __ptr64) __ptr64
??0CTStr@@QEAA@PEAD@Z
; public: __cdecl CTStr::CTStr(unsigned short * __ptr64) __ptr64
??0CTStr@@QEAA@PEAG@Z
; public: __cdecl CURLArchive::CURLArchive(struct IUnknown * __ptr64) __ptr64
??0CURLArchive@@QEAA@PEAUIUnknown@@@Z
; public: __cdecl OTrig::OTrig(void) __ptr64
??0OTrig@@QEAA@XZ
; public: virtual __cdecl CMemManager::~CMemManager(void) __ptr64
??1CMemManager@@UEAA@XZ
; public: virtual __cdecl CMemUser::~CMemUser(void) __ptr64
??1CMemUser@@UEAA@XZ
; public: __cdecl CTStr::~CTStr(void) __ptr64
??1CTStr@@QEAA@XZ
; public: virtual __cdecl CURLArchive::~CURLArchive(void) __ptr64
??1CURLArchive@@UEAA@XZ
; public: void __cdecl CTStr::`default constructor closure'(void) __ptr64
??_FCTStr@@QEAAXXZ
; public: void __cdecl CURLArchive::`default constructor closure'(void) __ptr64
??_FCURLArchive@@QEAAXXZ
; public: void * __ptr64 __cdecl CMemManager::AllocBuffer(unsigned long,unsigned short) __ptr64
?AllocBuffer@CMemManager@@QEAAPEAXKG@Z
; public: struct MEMBLOCK_tag * __ptr64 __cdecl CMemUser::AllocBuffer(unsigned long,unsigned short) __ptr64
?AllocBuffer@CMemUser@@QEAAPEAUMEMBLOCK_tag@@KG@Z
; public: int __cdecl CTStr::AllocBuffer(int,int) __ptr64
?AllocBuffer@CTStr@@QEAAHHH@Z
; public: static void * __ptr64 __cdecl CMemManager::AllocBufferGlb(unsigned long,unsigned short)
?AllocBufferGlb@CMemManager@@SAPEAXKG@Z
; public: static int __cdecl CStringWrapper::Atoi(char const * __ptr64)
?Atoi@CStringWrapper@@SAHPEBD@Z
; public: static long __cdecl CStringWrapper::Atol(char const * __ptr64)
?Atol@CStringWrapper@@SAJPEBD@Z
; long __cdecl BitCountFromDDPIXELFORMAT(struct _DDPIXELFORMAT const & __ptr64)
?BitCountFromDDPIXELFORMAT@@YAJAEBU_DDPIXELFORMAT@@@Z
; public: virtual long __cdecl CURLArchive::Close(void) __ptr64
?Close@CURLArchive@@UEAAJXZ
; public: virtual int __cdecl CNonCollapsingDrg::CopyFrom(class CDrg * __ptr64) __ptr64
?CopyFrom@CNonCollapsingDrg@@UEAAHPEAVCDrg@@@Z
; public: virtual long __cdecl CURLArchive::CopyLocal(char * __ptr64,int) __ptr64
?CopyLocal@CURLArchive@@UEAAJPEADH@Z
; public: virtual long __cdecl CURLArchive::CopyLocal(unsigned short * __ptr64,int) __ptr64
?CopyLocal@CURLArchive@@UEAAJPEAGH@Z
; public: float __cdecl OTrig::Cos(long) __ptr64
?Cos@OTrig@@QEAAMJ@Z
; public: float __cdecl OTrig::Cos(float) __ptr64
?Cos@OTrig@@QEAAMM@Z
; public: static float __cdecl CMathWrapper::CosDeg(long)
?CosDeg@CMathWrapper@@SAMJ@Z
; public: static float __cdecl CMathWrapper::CosDeg(float)
?CosDeg@CMathWrapper@@SAMM@Z
; public: static float __cdecl CMathWrapper::CosDegWrap(long)
?CosDegWrap@CMathWrapper@@SAMJ@Z
; public: static float __cdecl CMathWrapper::CosDegWrap(float)
?CosDegWrap@CMathWrapper@@SAMM@Z
; public: static double __cdecl CMathWrapper::CosRad(double)
?CosRad@CMathWrapper@@SANN@Z
; public: float __cdecl OTrig::CosWrap(long) __ptr64
?CosWrap@OTrig@@QEAAMJ@Z
; public: float __cdecl OTrig::CosWrap(float) __ptr64
?CosWrap@OTrig@@QEAAMM@Z
; public: virtual long __cdecl CURLArchive::Create(char const * __ptr64) __ptr64
?Create@CURLArchive@@UEAAJPEBD@Z
; public: virtual long __cdecl CURLArchive::Create(unsigned short const * __ptr64) __ptr64
?Create@CURLArchive@@UEAAJPEBG@Z
; int __cdecl CreateIDispatchCollection(struct IUnknown * __ptr64 * __ptr64)
?CreateIDispatchCollection@@YAHPEAPEAUIUnknown@@@Z
; public: void __cdecl CMemManager::DumpAllocations(char * __ptr64) __ptr64
?DumpAllocations@CMemManager@@QEAAXPEAD@Z
; public: static void __cdecl CMemManager::DumpAllocationsGlb(char * __ptr64)
?DumpAllocationsGlb@CMemManager@@SAXPEAD@Z
; private: void __cdecl CMemManager::DumpHeapHeader(struct HEAPHEADER_tag * __ptr64,struct _iobuf * __ptr64) __ptr64
?DumpHeapHeader@CMemManager@@AEAAXPEAUHEAPHEADER_tag@@PEAU_iobuf@@@Z
; private: void __cdecl CMemManager::DumpMemBlock(struct MEMBLOCK_tag * __ptr64,struct _iobuf * __ptr64) __ptr64
?DumpMemBlock@CMemManager@@AEAAXPEAUMEMBLOCK_tag@@PEAU_iobuf@@@Z
; private: void __cdecl CMemManager::DumpMemUserInfo(struct MEMUSERINFO_tag * __ptr64,struct _iobuf * __ptr64) __ptr64
?DumpMemUserInfo@CMemManager@@AEAAXPEAUMEMUSERINFO_tag@@PEAU_iobuf@@@Z
; void __cdecl ExternalDumpAllocations(char * __ptr64)
?ExternalDumpAllocations@@YAXPEAD@Z
; public: void __cdecl CMemManager::FreeBuffer(void * __ptr64) __ptr64
?FreeBuffer@CMemManager@@QEAAXPEAX@Z
; public: void __cdecl CMemUser::FreeBuffer(struct MEMBLOCK_tag * __ptr64) __ptr64
?FreeBuffer@CMemUser@@QEAAXPEAUMEMBLOCK_tag@@@Z
; public: void __cdecl CTStr::FreeBuffer(void) __ptr64
?FreeBuffer@CTStr@@QEAAXXZ
; public: static void __cdecl CMemManager::FreeBufferGlb(void * __ptr64)
?FreeBufferGlb@CMemManager@@SAXPEAX@Z
; public: void __cdecl CMemManager::FreeBufferMemBlock(struct MEMBLOCK_tag * __ptr64) __ptr64
?FreeBufferMemBlock@CMemManager@@QEAAXPEAUMEMBLOCK_tag@@@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Gcvt(double,int,char * __ptr64)
?Gcvt@CStringWrapper@@SAPEADNHPEAD@Z
; public: virtual void * __ptr64 __cdecl CNonCollapsingDrg::GetAt(long) __ptr64
?GetAt@CNonCollapsingDrg@@UEAAPEAXJ@Z
; public: virtual long __cdecl CURLArchive::GetFileSize(long & __ptr64) __ptr64
?GetFileSize@CURLArchive@@UEAAJAEAJ@Z
; public: virtual void * __ptr64 __cdecl CNonCollapsingDrg::GetFirst(void) __ptr64
?GetFirst@CNonCollapsingDrg@@UEAAPEAXXZ
; public: virtual void * __ptr64 __cdecl CNonCollapsingDrg::GetNext(void) __ptr64
?GetNext@CNonCollapsingDrg@@UEAAPEAXXZ
; unsigned long __cdecl GetSigBitsFrom16BPP(struct HDC__ * __ptr64)
?GetSigBitsFrom16BPP@@YAKPEAUHDC__@@@Z
; public: virtual struct IStream * __ptr64 __cdecl CURLArchive::GetStreamInterface(void)const  __ptr64
?GetStreamInterface@CURLArchive@@UEBAPEAUIStream@@XZ
; public: virtual int __cdecl CDrg::Insert(void * __ptr64,long) __ptr64
?Insert@CDrg@@UEAAHPEAXJ@Z
; int __cdecl IsMMXCpu(void)
?IsMMXCpu@@YAHXZ
; public: static int __cdecl CStringWrapper::Iswspace(unsigned short)
?Iswspace@CStringWrapper@@SAHG@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Itoa(int,char * __ptr64,int)
?Itoa@CStringWrapper@@SAPEADHPEADH@Z
; public: int __cdecl CTStr::Len(void) __ptr64
?Len@CTStr@@QEAAHXZ
; public: static int __cdecl CStringWrapper::LoadStringW(struct HINSTANCE__ * __ptr64,unsigned int,unsigned short * __ptr64,int)
?LoadStringW@CStringWrapper@@SAHPEAUHINSTANCE__@@IPEAGH@Z
; public: void * __ptr64 __cdecl CMemUser::LockBuffer(struct MEMBLOCK_tag * __ptr64) __ptr64
?LockBuffer@CMemUser@@QEAAPEAXPEAUMEMBLOCK_tag@@@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Ltoa(long,char * __ptr64,int)
?Ltoa@CStringWrapper@@SAPEADJPEADH@Z
; public: static unsigned __int64 __cdecl CStringWrapper::Mbstowcs(unsigned short * __ptr64,char const * __ptr64,unsigned __int64)
?Mbstowcs@CStringWrapper@@SA_KPEAGPEBD_K@Z
; public: static int __cdecl CStringWrapper::Memcmp(void const * __ptr64,void const * __ptr64,unsigned __int64)
?Memcmp@CStringWrapper@@SAHPEBX0_K@Z
; public: static void * __ptr64 __cdecl CStringWrapper::Memcpy(void * __ptr64,void const * __ptr64,unsigned __int64)
?Memcpy@CStringWrapper@@SAPEAXPEAXPEBX_K@Z
; public: static void * __ptr64 __cdecl CStringWrapper::Memset(void * __ptr64,int,unsigned __int64)
?Memset@CStringWrapper@@SAPEAXPEAXH_K@Z
; public: virtual int __cdecl CMemUser::NotifyMemUser(struct MEMNOTIFY_tag * __ptr64) __ptr64
?NotifyMemUser@CMemUser@@UEAAHPEAUMEMNOTIFY_tag@@@Z
; unsigned long __cdecl OverheadOfSavePtrDrg(void)
?OverheadOfSavePtrDrg@@YAKXZ
; public: static float __cdecl CMathWrapper::Pow(double,double)
?Pow@CMathWrapper@@SAMNN@Z
; public: void * __ptr64 __cdecl CMemManager::ReAllocBuffer(void * __ptr64,unsigned long,unsigned short) __ptr64
?ReAllocBuffer@CMemManager@@QEAAPEAXPEAXKG@Z
; public: static void * __ptr64 __cdecl CMemManager::ReAllocBufferGlb(void * __ptr64,unsigned long,unsigned short)
?ReAllocBufferGlb@CMemManager@@SAPEAXPEAXKG@Z
; public: virtual unsigned long __cdecl CURLArchive::Read(unsigned char * __ptr64,unsigned long) __ptr64
?Read@CURLArchive@@UEAAKPEAEK@Z
; long __cdecl ReadBstrFromPropBag(struct IPropertyBag * __ptr64,struct IErrorLog * __ptr64,char * __ptr64,unsigned short * __ptr64 * __ptr64)
?ReadBstrFromPropBag@@YAJPEAUIPropertyBag@@PEAUIErrorLog@@PEADPEAPEAG@Z
; public: virtual unsigned long __cdecl CURLArchive::ReadLine(char * __ptr64,unsigned long) __ptr64
?ReadLine@CURLArchive@@UEAAKPEADK@Z
; public: virtual unsigned long __cdecl CURLArchive::ReadLine(unsigned short * __ptr64,unsigned long) __ptr64
?ReadLine@CURLArchive@@UEAAKPEAGK@Z
; long __cdecl ReadLongFromPropBag(struct IPropertyBag * __ptr64,struct IErrorLog * __ptr64,char * __ptr64,long * __ptr64)
?ReadLongFromPropBag@@YAJPEAUIPropertyBag@@PEAUIErrorLog@@PEADPEAJ@Z
; public: int __cdecl CMemManager::RegisterMemUser(class CMemUser * __ptr64) __ptr64
?RegisterMemUser@CMemManager@@QEAAHPEAVCMemUser@@@Z
; public: static int __cdecl CMemManager::RegisterMemUserGlb(class CMemUser * __ptr64)
?RegisterMemUserGlb@CMemManager@@SAHPEAVCMemUser@@@Z
; public: virtual int __cdecl CDrg::Remove(void * __ptr64,long) __ptr64
?Remove@CDrg@@UEAAHPEAXJ@Z
; public: virtual int __cdecl CNonCollapsingDrg::Remove(void * __ptr64,long) __ptr64
?Remove@CNonCollapsingDrg@@UEAAHPEAXJ@Z
; public: void __cdecl CTStr::ResetLength(void) __ptr64
?ResetLength@CTStr@@QEAAXXZ
; void __cdecl RetailEcho(char * __ptr64,...)
?RetailEcho@@YAXPEADZZ
; public: virtual long __cdecl CURLArchive::Seek(long,enum CURLArchive::origin) __ptr64
?Seek@CURLArchive@@UEAAJJW4origin@1@@Z
; public: virtual void __cdecl CNonCollapsingDrg::SetArray(unsigned char * __ptr64,long,unsigned int) __ptr64
?SetArray@CNonCollapsingDrg@@UEAAXPEAEJI@Z
; public: virtual int __cdecl CNonCollapsingDrg::SetAt(void * __ptr64,long) __ptr64
?SetAt@CNonCollapsingDrg@@UEAAHPEAXJ@Z
; public: virtual void __cdecl CDrg::SetNonDefaultSizes(unsigned int,unsigned int) __ptr64
?SetNonDefaultSizes@CDrg@@UEAAXII@Z
; public: int __cdecl CTStr::SetString(char * __ptr64) __ptr64
?SetString@CTStr@@QEAAHPEAD@Z
; public: int __cdecl CTStr::SetString(unsigned short * __ptr64) __ptr64
?SetString@CTStr@@QEAAHPEAG@Z
; public: int __cdecl CTStr::SetStringPointer(char * __ptr64,int) __ptr64
?SetStringPointer@CTStr@@QEAAHPEADH@Z
; public: float __cdecl OTrig::Sin(long) __ptr64
?Sin@OTrig@@QEAAMJ@Z
; public: float __cdecl OTrig::Sin(float) __ptr64
?Sin@OTrig@@QEAAMM@Z
; public: static float __cdecl CMathWrapper::SinDeg(long)
?SinDeg@CMathWrapper@@SAMJ@Z
; public: static float __cdecl CMathWrapper::SinDeg(float)
?SinDeg@CMathWrapper@@SAMM@Z
; public: static float __cdecl CMathWrapper::SinDegWrap(long)
?SinDegWrap@CMathWrapper@@SAMJ@Z
; public: static float __cdecl CMathWrapper::SinDegWrap(float)
?SinDegWrap@CMathWrapper@@SAMM@Z
; public: static double __cdecl CMathWrapper::SinRad(double)
?SinRad@CMathWrapper@@SANN@Z
; public: float __cdecl OTrig::SinWrap(long) __ptr64
?SinWrap@OTrig@@QEAAMJ@Z
; public: float __cdecl OTrig::SinWrap(float) __ptr64
?SinWrap@OTrig@@QEAAMM@Z
; public: unsigned long __cdecl CMemManager::SizeBuffer(void * __ptr64) __ptr64
?SizeBuffer@CMemManager@@QEAAKPEAX@Z
; public: static unsigned long __cdecl CMemManager::SizeBufferGlb(void * __ptr64)
?SizeBufferGlb@CMemManager@@SAKPEAX@Z
; public: static int __cdecl CStringWrapper::Sprintf(char * __ptr64,char const * __ptr64,...)
?Sprintf@CStringWrapper@@SAHPEADPEBDZZ
; public: static float __cdecl CMathWrapper::Sqrt(float)
?Sqrt@CMathWrapper@@SAMM@Z
; public: static int __cdecl CStringWrapper::Sscanf1(char const * __ptr64,char const * __ptr64,void * __ptr64)
?Sscanf1@CStringWrapper@@SAHPEBD0PEAX@Z
; public: static int __cdecl CStringWrapper::Sscanf2(char const * __ptr64,char const * __ptr64,void * __ptr64,void * __ptr64)
?Sscanf2@CStringWrapper@@SAHPEBD0PEAX1@Z
; public: static int __cdecl CStringWrapper::Sscanf3(char const * __ptr64,char const * __ptr64,void * __ptr64,void * __ptr64,void * __ptr64)
?Sscanf3@CStringWrapper@@SAHPEBD0PEAX11@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strcat(char * __ptr64,char const * __ptr64)
?Strcat@CStringWrapper@@SAPEADPEADPEBD@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strchr(char const * __ptr64,char)
?Strchr@CStringWrapper@@SAPEADPEBDD@Z
; public: static int __cdecl CStringWrapper::Strcmp(char const * __ptr64,char const * __ptr64)
?Strcmp@CStringWrapper@@SAHPEBD0@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strcpy(char * __ptr64,char const * __ptr64)
?Strcpy@CStringWrapper@@SAPEADPEADPEBD@Z
; public: static int __cdecl CStringWrapper::Stricmp(char const * __ptr64,char const * __ptr64)
?Stricmp@CStringWrapper@@SAHPEBD0@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strinc(char const * __ptr64)
?Strinc@CStringWrapper@@SAPEADPEBD@Z
; public: static int __cdecl CStringWrapper::Strlen(char const * __ptr64)
?Strlen@CStringWrapper@@SAHPEBD@Z
; public: static int __cdecl CStringWrapper::Strncmp(char const * __ptr64,char const * __ptr64,unsigned __int64)
?Strncmp@CStringWrapper@@SAHPEBD0_K@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strncpy(char * __ptr64,char const * __ptr64,unsigned __int64)
?Strncpy@CStringWrapper@@SAPEADPEADPEBD_K@Z
; public: static int __cdecl CStringWrapper::Strnicmp(char const * __ptr64,char const * __ptr64,unsigned __int64)
?Strnicmp@CStringWrapper@@SAHPEBD0_K@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strrchr(char const * __ptr64,char)
?Strrchr@CStringWrapper@@SAPEADPEBDD@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strstr(char const * __ptr64,char const * __ptr64)
?Strstr@CStringWrapper@@SAPEADPEBD0@Z
; public: static char * __ptr64 __cdecl CStringWrapper::Strtok(char * __ptr64,char const * __ptr64)
?Strtok@CStringWrapper@@SAPEADPEADPEBD@Z
; public: unsigned short * __ptr64 __cdecl CTStr::SysAllocString(void) __ptr64
?SysAllocString@CTStr@@QEAAPEAGXZ
; public: void __cdecl CMemUser::UnLockBuffer(struct MEMBLOCK_tag * __ptr64) __ptr64
?UnLockBuffer@CMemUser@@QEAAXPEAUMEMBLOCK_tag@@@Z
; public: int __cdecl CMemManager::UnRegisterMemUser(class CMemUser * __ptr64) __ptr64
?UnRegisterMemUser@CMemManager@@QEAAHPEAVCMemUser@@@Z
; public: static int __cdecl CMemManager::UnRegisterMemUserGlb(class CMemUser * __ptr64)
?UnRegisterMemUserGlb@CMemManager@@SAHPEAVCMemUser@@@Z
; public: static int __cdecl CStringWrapper::WStrCmpin(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned __int64)
?WStrCmpin@CStringWrapper@@SAHPEBG0_K@Z
; public: static unsigned short * __ptr64 __cdecl CStringWrapper::WStrcat(unsigned short * __ptr64,unsigned short const * __ptr64)
?WStrcat@CStringWrapper@@SAPEAGPEAGPEBG@Z
; public: static unsigned short * __ptr64 __cdecl CStringWrapper::WStrcpy(unsigned short * __ptr64,unsigned short const * __ptr64)
?WStrcpy@CStringWrapper@@SAPEAGPEAGPEBG@Z
; public: static int __cdecl CStringWrapper::WStrlen(unsigned short const * __ptr64)
?WStrlen@CStringWrapper@@SAHPEBG@Z
; public: static unsigned short * __ptr64 __cdecl CStringWrapper::WStrncpy(unsigned short * __ptr64,unsigned short const * __ptr64,unsigned __int64)
?WStrncpy@CStringWrapper@@SAPEAGPEAGPEBG_K@Z
; public: static unsigned __int64 __cdecl CStringWrapper::Wcstombs(char * __ptr64,unsigned short const * __ptr64,unsigned __int64)
?Wcstombs@CStringWrapper@@SA_KPEADPEBG_K@Z
; public: virtual unsigned long __cdecl CURLArchive::Write(unsigned char * __ptr64,unsigned long) __ptr64
?Write@CURLArchive@@UEAAKPEAEK@Z
; long __cdecl WriteBstrToPropBag(struct IPropertyBag * __ptr64,char * __ptr64,unsigned short * __ptr64)
?WriteBstrToPropBag@@YAJPEAUIPropertyBag@@PEADPEAG@Z
; long __cdecl WriteLongToPropBag(struct IPropertyBag * __ptr64,char * __ptr64,long)
?WriteLongToPropBag@@YAJPEAUIPropertyBag@@PEADJ@Z
; public: char * __ptr64 __cdecl CTStr::psz(void) __ptr64
?psz@CTStr@@QEAAPEADXZ
; public: char * __ptr64 __cdecl CTStr::pszA(void) __ptr64
?pszA@CTStr@@QEAAPEADXZ
; public: unsigned short * __ptr64 __cdecl CTStr::pszW(void) __ptr64
?pszW@CTStr@@QEAAPEAGXZ
_wcsicmp
_wtoi
fmod
memcmp
memset
setlocale
strcpy
strlen
swprintf
