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