; 
; Exports of file mmutilse.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY mmutilse.dll
EXPORTS
; public: __thiscall IHammer::CDirectDrawSurface::CDirectDrawSurface(struct HPALETTE__ *,unsigned long,struct tagSIZE const *,long *)
??0CDirectDrawSurface@IHammer@@QAE@PAUHPALETTE__@@KPBUtagSIZE@@PAJ@Z
; public: __thiscall CHalftone::CHalftone(struct HPALETTE__ *)
??0CHalftone@@QAE@PAUHPALETTE__@@@Z
; public: __thiscall CHalftonePalette::CHalftonePalette(struct HPALETTE__ *)
??0CHalftonePalette@@QAE@PAUHPALETTE__@@@Z
; public: __thiscall CHalftonePalette::CHalftonePalette(void)
??0CHalftonePalette@@QAE@XZ
; public: __thiscall CMemManager::CMemManager(void)
??0CMemManager@@QAE@XZ
; public: __thiscall CMemUser::CMemUser(void)
??0CMemUser@@QAE@XZ
; public: __thiscall CTStr::CTStr(class CTStr &)
??0CTStr@@QAE@AAV0@@Z
; public: __thiscall CTStr::CTStr(int)
??0CTStr@@QAE@H@Z
; public: __thiscall CTStr::CTStr(char *)
??0CTStr@@QAE@PAD@Z
; public: __thiscall CTStr::CTStr(unsigned short *)
??0CTStr@@QAE@PAG@Z
; public: __thiscall CURLArchive::CURLArchive(struct IUnknown *)
??0CURLArchive@@QAE@PAUIUnknown@@@Z
; public: __thiscall OTrig::OTrig(void)
??0OTrig@@QAE@XZ
; public: virtual __thiscall CMemManager::~CMemManager(void)
??1CMemManager@@UAE@XZ
; public: virtual __thiscall CMemUser::~CMemUser(void)
??1CMemUser@@UAE@XZ
; public: __thiscall CTStr::~CTStr(void)
??1CTStr@@QAE@XZ
; public: virtual __thiscall CURLArchive::~CURLArchive(void)
??1CURLArchive@@UAE@XZ
; public: void __thiscall CTStr::`default constructor closure'(void)
??_FCTStr@@QAEXXZ
; public: void __thiscall CURLArchive::`default constructor closure'(void)
??_FCURLArchive@@QAEXXZ
; public: void * __thiscall CMemManager::AllocBuffer(unsigned long,unsigned short)
?AllocBuffer@CMemManager@@QAEPAXKG@Z
; public: struct MEMBLOCK_tag * __thiscall CMemUser::AllocBuffer(unsigned long,unsigned short)
?AllocBuffer@CMemUser@@QAEPAUMEMBLOCK_tag@@KG@Z
; public: int __thiscall CTStr::AllocBuffer(int,int)
?AllocBuffer@CTStr@@QAEHHH@Z
; public: static void * __cdecl CMemManager::AllocBufferGlb(unsigned long,unsigned short)
?AllocBufferGlb@CMemManager@@SAPAXKG@Z
; public: static int __cdecl CStringWrapper::Atoi(char const *)
?Atoi@CStringWrapper@@SAHPBD@Z
; public: static long __cdecl CStringWrapper::Atol(char const *)
?Atol@CStringWrapper@@SAJPBD@Z
; long __cdecl BitCountFromDDPIXELFORMAT(struct _DDPIXELFORMAT const &)
?BitCountFromDDPIXELFORMAT@@YAJABU_DDPIXELFORMAT@@@Z
; public: virtual long __thiscall CURLArchive::Close(void)
?Close@CURLArchive@@UAEJXZ
; public: virtual int __stdcall CNonCollapsingDrg::CopyFrom(class CDrg *)
?CopyFrom@CNonCollapsingDrg@@UAGHPAVCDrg@@@Z
; public: virtual long __thiscall CURLArchive::CopyLocal(char *,int)
?CopyLocal@CURLArchive@@UAEJPADH@Z
; public: virtual long __thiscall CURLArchive::CopyLocal(unsigned short *,int)
?CopyLocal@CURLArchive@@UAEJPAGH@Z
; public: float __fastcall OTrig::Cos(long)
?Cos@OTrig@@QAIMJ@Z
; public: float __fastcall OTrig::Cos(float)
?Cos@OTrig@@QAIMM@Z
; public: static float __fastcall CMathWrapper::CosDeg(long)
?CosDeg@CMathWrapper@@SIMJ@Z
; public: static float __fastcall CMathWrapper::CosDeg(float)
?CosDeg@CMathWrapper@@SIMM@Z
; public: static float __fastcall CMathWrapper::CosDegWrap(long)
?CosDegWrap@CMathWrapper@@SIMJ@Z
; public: static float __fastcall CMathWrapper::CosDegWrap(float)
?CosDegWrap@CMathWrapper@@SIMM@Z
; public: static double __fastcall CMathWrapper::CosRad(double)
?CosRad@CMathWrapper@@SINN@Z
; public: float __fastcall OTrig::CosWrap(long)
?CosWrap@OTrig@@QAIMJ@Z
; public: float __fastcall OTrig::CosWrap(float)
?CosWrap@OTrig@@QAIMM@Z
; public: virtual long __thiscall CURLArchive::Create(char const *)
?Create@CURLArchive@@UAEJPBD@Z
; public: virtual long __thiscall CURLArchive::Create(unsigned short const *)
?Create@CURLArchive@@UAEJPBG@Z
; int __stdcall CreateIDispatchCollection(struct IUnknown * *)
?CreateIDispatchCollection@@YGHPAPAUIUnknown@@@Z
; public: void __thiscall CMemManager::DumpAllocations(char *)
?DumpAllocations@CMemManager@@QAEXPAD@Z
; public: static void __cdecl CMemManager::DumpAllocationsGlb(char *)
?DumpAllocationsGlb@CMemManager@@SAXPAD@Z
; private: void __thiscall CMemManager::DumpHeapHeader(struct HEAPHEADER_tag *,struct _iobuf *)
?DumpHeapHeader@CMemManager@@AAEXPAUHEAPHEADER_tag@@PAU_iobuf@@@Z
; private: void __thiscall CMemManager::DumpMemBlock(struct MEMBLOCK_tag *,struct _iobuf *)
?DumpMemBlock@CMemManager@@AAEXPAUMEMBLOCK_tag@@PAU_iobuf@@@Z
; private: void __thiscall CMemManager::DumpMemUserInfo(struct MEMUSERINFO_tag *,struct _iobuf *)
?DumpMemUserInfo@CMemManager@@AAEXPAUMEMUSERINFO_tag@@PAU_iobuf@@@Z
; void __stdcall ExternalDumpAllocations(char *)
?ExternalDumpAllocations@@YGXPAD@Z
; public: void __thiscall CMemManager::FreeBuffer(void *)
?FreeBuffer@CMemManager@@QAEXPAX@Z
; public: void __thiscall CMemUser::FreeBuffer(struct MEMBLOCK_tag *)
?FreeBuffer@CMemUser@@QAEXPAUMEMBLOCK_tag@@@Z
; public: void __thiscall CTStr::FreeBuffer(void)
?FreeBuffer@CTStr@@QAEXXZ
; public: static void __cdecl CMemManager::FreeBufferGlb(void *)
?FreeBufferGlb@CMemManager@@SAXPAX@Z
; public: void __thiscall CMemManager::FreeBufferMemBlock(struct MEMBLOCK_tag *)
?FreeBufferMemBlock@CMemManager@@QAEXPAUMEMBLOCK_tag@@@Z
; public: static char * __cdecl CStringWrapper::Gcvt(double,int,char *)
?Gcvt@CStringWrapper@@SAPADNHPAD@Z
; public: virtual void * __stdcall CNonCollapsingDrg::GetAt(long)
?GetAt@CNonCollapsingDrg@@UAGPAXJ@Z
; public: virtual long __thiscall CURLArchive::GetFileSize(long &)
?GetFileSize@CURLArchive@@UAEJAAJ@Z
; public: virtual void * __stdcall CNonCollapsingDrg::GetFirst(void)
?GetFirst@CNonCollapsingDrg@@UAGPAXXZ
; public: virtual void * __stdcall CNonCollapsingDrg::GetNext(void)
?GetNext@CNonCollapsingDrg@@UAGPAXXZ
; unsigned long __cdecl GetSigBitsFrom16BPP(struct HDC__ *)
?GetSigBitsFrom16BPP@@YAKPAUHDC__@@@Z
; public: virtual struct IStream * __thiscall CURLArchive::GetStreamInterface(void)const 
?GetStreamInterface@CURLArchive@@UBEPAUIStream@@XZ
; public: virtual int __stdcall CDrg::Insert(void *,long)
?Insert@CDrg@@UAGHPAXJ@Z
; int __cdecl IsMMXCpu(void)
?IsMMXCpu@@YAHXZ
; public: static int __cdecl CStringWrapper::Iswspace(unsigned short)
?Iswspace@CStringWrapper@@SAHG@Z
; public: static char * __cdecl CStringWrapper::Itoa(int,char *,int)
?Itoa@CStringWrapper@@SAPADHPADH@Z
; public: int __thiscall CTStr::Len(void)
?Len@CTStr@@QAEHXZ
; public: static int __cdecl CStringWrapper::LoadStringW(struct HINSTANCE__ *,unsigned int,unsigned short *,int)
?LoadStringW@CStringWrapper@@SAHPAUHINSTANCE__@@IPAGH@Z
; public: void * __thiscall CMemUser::LockBuffer(struct MEMBLOCK_tag *)
?LockBuffer@CMemUser@@QAEPAXPAUMEMBLOCK_tag@@@Z
; public: static char * __cdecl CStringWrapper::Ltoa(long,char *,int)
?Ltoa@CStringWrapper@@SAPADJPADH@Z
; public: static unsigned int __cdecl CStringWrapper::Mbstowcs(unsigned short *,char const *,unsigned int)
?Mbstowcs@CStringWrapper@@SAIPAGPBDI@Z
; public: static int __cdecl CStringWrapper::Memcmp(void const *,void const *,unsigned int)
?Memcmp@CStringWrapper@@SAHPBX0I@Z
; public: static void * __cdecl CStringWrapper::Memcpy(void *,void const *,unsigned int)
?Memcpy@CStringWrapper@@SAPAXPAXPBXI@Z
; public: static void * __cdecl CStringWrapper::Memset(void *,int,unsigned int)
?Memset@CStringWrapper@@SAPAXPAXHI@Z
; public: virtual int __thiscall CMemUser::NotifyMemUser(struct MEMNOTIFY_tag *)
?NotifyMemUser@CMemUser@@UAEHPAUMEMNOTIFY_tag@@@Z
; unsigned long __cdecl OverheadOfSavePtrDrg(void)
?OverheadOfSavePtrDrg@@YAKXZ
; public: static float __cdecl CMathWrapper::Pow(double,double)
?Pow@CMathWrapper@@SAMNN@Z
; public: void * __thiscall CMemManager::ReAllocBuffer(void *,unsigned long,unsigned short)
?ReAllocBuffer@CMemManager@@QAEPAXPAXKG@Z
; public: static void * __cdecl CMemManager::ReAllocBufferGlb(void *,unsigned long,unsigned short)
?ReAllocBufferGlb@CMemManager@@SAPAXPAXKG@Z
; public: virtual unsigned long __thiscall CURLArchive::Read(unsigned char *,unsigned long)
?Read@CURLArchive@@UAEKPAEK@Z
; long __cdecl ReadBstrFromPropBag(struct IPropertyBag *,struct IErrorLog *,char *,unsigned short * *)
?ReadBstrFromPropBag@@YAJPAUIPropertyBag@@PAUIErrorLog@@PADPAPAG@Z
; public: virtual unsigned long __thiscall CURLArchive::ReadLine(char *,unsigned long)
?ReadLine@CURLArchive@@UAEKPADK@Z
; public: virtual unsigned long __thiscall CURLArchive::ReadLine(unsigned short *,unsigned long)
?ReadLine@CURLArchive@@UAEKPAGK@Z
; long __cdecl ReadLongFromPropBag(struct IPropertyBag *,struct IErrorLog *,char *,long *)
?ReadLongFromPropBag@@YAJPAUIPropertyBag@@PAUIErrorLog@@PADPAJ@Z
; public: int __thiscall CMemManager::RegisterMemUser(class CMemUser *)
?RegisterMemUser@CMemManager@@QAEHPAVCMemUser@@@Z
; public: static int __cdecl CMemManager::RegisterMemUserGlb(class CMemUser *)
?RegisterMemUserGlb@CMemManager@@SAHPAVCMemUser@@@Z
; public: virtual int __stdcall CDrg::Remove(void *,long)
?Remove@CDrg@@UAGHPAXJ@Z
; public: virtual int __stdcall CNonCollapsingDrg::Remove(void *,long)
?Remove@CNonCollapsingDrg@@UAGHPAXJ@Z
; public: void __thiscall CTStr::ResetLength(void)
?ResetLength@CTStr@@QAEXXZ
; void __cdecl RetailEcho(char *,...)
?RetailEcho@@YAXPADZZ
; public: virtual long __thiscall CURLArchive::Seek(long,enum CURLArchive::origin)
?Seek@CURLArchive@@UAEJJW4origin@1@@Z
; public: virtual void __stdcall CNonCollapsingDrg::SetArray(unsigned char *,long,unsigned int)
?SetArray@CNonCollapsingDrg@@UAGXPAEJI@Z
; public: virtual int __stdcall CNonCollapsingDrg::SetAt(void *,long)
?SetAt@CNonCollapsingDrg@@UAGHPAXJ@Z
; public: virtual void __stdcall CDrg::SetNonDefaultSizes(unsigned int,unsigned int)
?SetNonDefaultSizes@CDrg@@UAGXII@Z
; public: int __thiscall CTStr::SetString(char *)
?SetString@CTStr@@QAEHPAD@Z
; public: int __thiscall CTStr::SetString(unsigned short *)
?SetString@CTStr@@QAEHPAG@Z
; public: int __thiscall CTStr::SetStringPointer(char *,int)
?SetStringPointer@CTStr@@QAEHPADH@Z
; public: float __fastcall OTrig::Sin(long)
?Sin@OTrig@@QAIMJ@Z
; public: float __fastcall OTrig::Sin(float)
?Sin@OTrig@@QAIMM@Z
; public: static float __fastcall CMathWrapper::SinDeg(long)
?SinDeg@CMathWrapper@@SIMJ@Z
; public: static float __fastcall CMathWrapper::SinDeg(float)
?SinDeg@CMathWrapper@@SIMM@Z
; public: static float __fastcall CMathWrapper::SinDegWrap(long)
?SinDegWrap@CMathWrapper@@SIMJ@Z
; public: static float __fastcall CMathWrapper::SinDegWrap(float)
?SinDegWrap@CMathWrapper@@SIMM@Z
; public: static double __fastcall CMathWrapper::SinRad(double)
?SinRad@CMathWrapper@@SINN@Z
; public: float __fastcall OTrig::SinWrap(long)
?SinWrap@OTrig@@QAIMJ@Z
; public: float __fastcall OTrig::SinWrap(float)
?SinWrap@OTrig@@QAIMM@Z
; public: unsigned long __thiscall CMemManager::SizeBuffer(void *)
?SizeBuffer@CMemManager@@QAEKPAX@Z
; public: static unsigned long __cdecl CMemManager::SizeBufferGlb(void *)
?SizeBufferGlb@CMemManager@@SAKPAX@Z
; public: static int __cdecl CStringWrapper::Sprintf(char *,char const *,...)
?Sprintf@CStringWrapper@@SAHPADPBDZZ
; public: static float __fastcall CMathWrapper::Sqrt(float)
?Sqrt@CMathWrapper@@SIMM@Z
; public: static int __cdecl CStringWrapper::Sscanf1(char const *,char const *,void *)
?Sscanf1@CStringWrapper@@SAHPBD0PAX@Z
; public: static int __cdecl CStringWrapper::Sscanf2(char const *,char const *,void *,void *)
?Sscanf2@CStringWrapper@@SAHPBD0PAX1@Z
; public: static int __cdecl CStringWrapper::Sscanf3(char const *,char const *,void *,void *,void *)
?Sscanf3@CStringWrapper@@SAHPBD0PAX11@Z
; public: static char * __cdecl CStringWrapper::Strcat(char *,char const *)
?Strcat@CStringWrapper@@SAPADPADPBD@Z
; public: static char * __cdecl CStringWrapper::Strchr(char const *,char)
?Strchr@CStringWrapper@@SAPADPBDD@Z
; public: static int __cdecl CStringWrapper::Strcmp(char const *,char const *)
?Strcmp@CStringWrapper@@SAHPBD0@Z
; public: static char * __cdecl CStringWrapper::Strcpy(char *,char const *)
?Strcpy@CStringWrapper@@SAPADPADPBD@Z
; public: static int __cdecl CStringWrapper::Stricmp(char const *,char const *)
?Stricmp@CStringWrapper@@SAHPBD0@Z
; public: static char * __cdecl CStringWrapper::Strinc(char const *)
?Strinc@CStringWrapper@@SAPADPBD@Z
; public: static int __cdecl CStringWrapper::Strlen(char const *)
?Strlen@CStringWrapper@@SAHPBD@Z
; public: static int __cdecl CStringWrapper::Strncmp(char const *,char const *,unsigned int)
?Strncmp@CStringWrapper@@SAHPBD0I@Z
; public: static char * __cdecl CStringWrapper::Strncpy(char *,char const *,unsigned int)
?Strncpy@CStringWrapper@@SAPADPADPBDI@Z
; public: static int __cdecl CStringWrapper::Strnicmp(char const *,char const *,unsigned int)
?Strnicmp@CStringWrapper@@SAHPBD0I@Z
; public: static char * __cdecl CStringWrapper::Strrchr(char const *,char)
?Strrchr@CStringWrapper@@SAPADPBDD@Z
; public: static char * __cdecl CStringWrapper::Strstr(char const *,char const *)
?Strstr@CStringWrapper@@SAPADPBD0@Z
; public: static char * __cdecl CStringWrapper::Strtok(char *,char const *)
?Strtok@CStringWrapper@@SAPADPADPBD@Z
; public: unsigned short * __thiscall CTStr::SysAllocString(void)
?SysAllocString@CTStr@@QAEPAGXZ
; public: void __thiscall CMemUser::UnLockBuffer(struct MEMBLOCK_tag *)
?UnLockBuffer@CMemUser@@QAEXPAUMEMBLOCK_tag@@@Z
; public: int __thiscall CMemManager::UnRegisterMemUser(class CMemUser *)
?UnRegisterMemUser@CMemManager@@QAEHPAVCMemUser@@@Z
; public: static int __cdecl CMemManager::UnRegisterMemUserGlb(class CMemUser *)
?UnRegisterMemUserGlb@CMemManager@@SAHPAVCMemUser@@@Z
; public: static int __cdecl CStringWrapper::WStrCmpin(unsigned short const *,unsigned short const *,unsigned int)
?WStrCmpin@CStringWrapper@@SAHPBG0I@Z
; public: static unsigned short * __cdecl CStringWrapper::WStrcat(unsigned short *,unsigned short const *)
?WStrcat@CStringWrapper@@SAPAGPAGPBG@Z
; public: static unsigned short * __cdecl CStringWrapper::WStrcpy(unsigned short *,unsigned short const *)
?WStrcpy@CStringWrapper@@SAPAGPAGPBG@Z
; public: static int __cdecl CStringWrapper::WStrlen(unsigned short const *)
?WStrlen@CStringWrapper@@SAHPBG@Z
; public: static unsigned short * __cdecl CStringWrapper::WStrncpy(unsigned short *,unsigned short const *,unsigned int)
?WStrncpy@CStringWrapper@@SAPAGPAGPBGI@Z
; public: static unsigned int __cdecl CStringWrapper::Wcstombs(char *,unsigned short const *,unsigned int)
?Wcstombs@CStringWrapper@@SAIPADPBGI@Z
; public: virtual unsigned long __thiscall CURLArchive::Write(unsigned char *,unsigned long)
?Write@CURLArchive@@UAEKPAEK@Z
; long __cdecl WriteBstrToPropBag(struct IPropertyBag *,char *,unsigned short *)
?WriteBstrToPropBag@@YAJPAUIPropertyBag@@PADPAG@Z
; long __cdecl WriteLongToPropBag(struct IPropertyBag *,char *,long)
?WriteLongToPropBag@@YAJPAUIPropertyBag@@PADJ@Z
; public: char * __thiscall CTStr::psz(void)
?psz@CTStr@@QAEPADXZ
; public: char * __thiscall CTStr::pszA(void)
?pszA@CTStr@@QAEPADXZ
; public: unsigned short * __thiscall CTStr::pszW(void)
?pszW@CTStr@@QAEPAGXZ
_CIfmod
_chkstk
_wcsicmp
_wtoi
memcmp
memset
rand
setlocale
srand
strcpy
strlen
swprintf
wcslen
wcsncpy
