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