Predefined Structs & Unions | |
struct _MEMORY_BASIC_INFORMATION { void * BaseAddress; // Offset: 0, Size: 4. void * AllocationBase; // Offset: 4, Size: 4. unsigned int AllocationProtect; // Offset: 8, Size: 4. unsigned int RegionSize; // Offset: 12, Size: 4. unsigned int State; // Offset: 16, Size: 4. unsigned int Protect; // Offset: 20, Size: 4. unsigned int Type; // Offset: 24, Size: 4. }; // Size: 28. struct tagMODULEENTRY32 { unsigned int dwSize; // Offset: 0, Size: 4. unsigned int th32ModuleID; // Offset: 4, Size: 4. unsigned int th32ProcessID; // Offset: 8, Size: 4. unsigned int GlblcntUsage; // Offset: 12, Size: 4. unsigned int ProccntUsage; // Offset: 16, Size: 4. unsigned char * modBaseAddr; // Offset: 20, Size: 4. unsigned int modBaseSize; // Offset: 24, Size: 4. void * hModule; // Offset: 28, Size: 4. char szModule[256]; // Offset: 32, Size: 256. char szExePath[260]; // Offset: 288, Size: 260. }; // Size: 548. struct tagHEAPLIST32 { unsigned int dwSize; // Offset: 0, Size: 4. unsigned int th32ProcessID; // Offset: 4, Size: 4. unsigned int th32HeapID; // Offset: 8, Size: 4. unsigned int dwFlags; // Offset: 12, Size: 4. }; // Size: 16. struct tagTHREADENTRY32 { unsigned int dwSize; // Offset: 0, Size: 4. unsigned int cntUsage; // Offset: 4, Size: 4. unsigned int th32ThreadID; // Offset: 8, Size: 4. unsigned int th32OwnerProcessID; // Offset: 12, Size: 4. int tpBasePri; // Offset: 16, Size: 4. int tpDeltaPri; // Offset: 20, Size: 4. unsigned int dwFlags; // Offset: 24, Size: 4. }; // Size: 28. struct tagPROCESSENTRY32 { unsigned int dwSize; // Offset: 0, Size: 4. unsigned int cntUsage; // Offset: 4, Size: 4. unsigned int th32ProcessID; // Offset: 8, Size: 4. unsigned int th32DefaultHeapID; // Offset: 12, Size: 4. unsigned int th32ModuleID; // Offset: 16, Size: 4. unsigned int cntThreads; // Offset: 20, Size: 4. unsigned int th32ParentProcessID; // Offset: 24, Size: 4. int pcPriClassBase; // Offset: 28, Size: 4. unsigned int dwFlags; // Offset: 32, Size: 4. char szExeFile[260]; // Offset: 36, Size: 260. }; // Size: 296. struct tagHEAPENTRY32 { unsigned int dwSize; // Offset: 0, Size: 4. void * hHandle; // Offset: 4, Size: 4. unsigned int dwAddress; // Offset: 8, Size: 4. unsigned int dwBlockSize; // Offset: 12, Size: 4. unsigned int dwFlags; // Offset: 16, Size: 4. unsigned int dwLockCount; // Offset: 20, Size: 4. unsigned int dwResvd; // Offset: 24, Size: 4. unsigned int th32ProcessID; // Offset: 28, Size: 4. unsigned int th32HeapID; // Offset: 32, Size: 4. }; // Size: 36. struct _FLOATING_SAVE_AREA { unsigned int ControlWord; // Offset: 0, Size: 4. unsigned int StatusWord; // Offset: 4, Size: 4. unsigned int TagWord; // Offset: 8, Size: 4. unsigned int ErrorOffset; // Offset: 12, Size: 4. unsigned int ErrorSelector; // Offset: 16, Size: 4. unsigned int DataOffset; // Offset: 20, Size: 4. unsigned int DataSelector; // Offset: 24, Size: 4. unsigned char RegisterArea[80]; // Offset: 28, Size: 80. unsigned int Cr0NpxState; // Offset: 108, Size: 4. }; // Size: 112. struct _CONTEXT { unsigned int ContextFlags; // Offset: 0, Size: 4. unsigned int Dr0; // Offset: 4, Size: 4. unsigned int Dr1; // Offset: 8, Size: 4. unsigned int Dr2; // Offset: 12, Size: 4. unsigned int Dr3; // Offset: 16, Size: 4. unsigned int Dr6; // Offset: 20, Size: 4. unsigned int Dr7; // Offset: 24, Size: 4. _FLOATING_SAVE_AREA FloatSave; // Offset: 28, Size: 112. unsigned int SegGs; // Offset: 140, Size: 4. unsigned int SegFs; // Offset: 144, Size: 4. unsigned int SegEs; // Offset: 148, Size: 4. unsigned int SegDs; // Offset: 152, Size: 4. unsigned int Edi; // Offset: 156, Size: 4. unsigned int Esi; // Offset: 160, Size: 4. unsigned int Ebx; // Offset: 164, Size: 4. unsigned int Edx; // Offset: 168, Size: 4. unsigned int Ecx; // Offset: 172, Size: 4. unsigned int Eax; // Offset: 176, Size: 4. unsigned int Ebp; // Offset: 180, Size: 4. unsigned int Eip; // Offset: 184, Size: 4. unsigned int SegCs; // Offset: 188, Size: 4. unsigned int EFlags; // Offset: 192, Size: 4. unsigned int Esp; // Offset: 196, Size: 4. unsigned int SegSs; // Offset: 200, Size: 4. unsigned char ExtendedRegisters[512]; // Offset: 204, Size: 512. }; // Size: 716. struct _RECT { int left; // Offset: 0, Size: 4. int top; // Offset: 4, Size: 4. int right; // Offset: 8, Size: 4. int bottom; // Offset: 12, Size: 4. }; // Size: 16. struct tagPOINT { int x; // Offset: 0, Size: 4. int y; // Offset: 4, Size: 4. }; // Size: 8. struct tagCREATESTRUCT { void * lpCreateParams; // Offset: 0, Size: 4. void * hInstance; // Offset: 4, Size: 4. void * hMenu; // Offset: 8, Size: 4. void * hwndParent; // Offset: 12, Size: 4. int cy; // Offset: 16, Size: 4. int cx; // Offset: 20, Size: 4. int y; // Offset: 24, Size: 4. int x; // Offset: 28, Size: 4. int style; // Offset: 32, Size: 4. const char * lpszName; // Offset: 36, Size: 4. const char * lpszClass; // Offset: 40, Size: 4. unsigned int dwExStyle; // Offset: 44, Size: 4. }; // Size: 48. struct tagPAINTSTRUCT { void * hdc; // Offset: 0, Size: 4. int fErase; // Offset: 4, Size: 4. _RECT rcPaint; // Offset: 8, Size: 16. int fRestore; // Offset: 24, Size: 4. int fIncUpdate; // Offset: 28, Size: 4. unsigned char rgbReserved[32]; // Offset: 32, Size: 32. }; // Size: 64. struct tagMENUINFO { unsigned int cbSize; // Offset: 0, Size: 4. unsigned int fMask; // Offset: 4, Size: 4. unsigned int dwStyle; // Offset: 8, Size: 4. unsigned int cyMax; // Offset: 12, Size: 4. void * hbrBack; // Offset: 16, Size: 4. unsigned int dwContextHelpID; // Offset: 20, Size: 4. unsigned int dwMenuData; // Offset: 24, Size: 4. }; // Size: 28. struct tagNMHDR { void * hwndFrom; // Offset: 0, Size: 4. unsigned int idFrom; // Offset: 4, Size: 4. unsigned int code; // Offset: 8, Size: 4. }; // Size: 12. struct _UDACCEL { unsigned int nSec; // Offset: 0, Size: 4. unsigned int nInc; // Offset: 4, Size: 4. }; // Size: 8. struct _NM_UPDOWN { tagNMHDR hdr; // Offset: 0, Size: 12. int iPos; // Offset: 12, Size: 4. int iDelta; // Offset: 16, Size: 4. }; // Size: 20. struct tagMOUSEINPUT { int dx; // Offset: 0, Size: 4. int dy; // Offset: 4, Size: 4. unsigned int mouseData; // Offset: 8, Size: 4. unsigned int dwFlags; // Offset: 12, Size: 4. unsigned int time; // Offset: 16, Size: 4. unsigned int dwExtraInfo; // Offset: 20, Size: 4. }; // Size: 24. struct tagKEYBDINPUT { unsigned short wVk; // Offset: 0, Size: 2. unsigned short wScan; // Offset: 2, Size: 2. unsigned int dwFlags; // Offset: 4, Size: 4. unsigned int time; // Offset: 8, Size: 4. unsigned int dwExtraInfo; // Offset: 12, Size: 4. }; // Size: 16. struct tagHARDWAREINPUT { unsigned int uMsg; // Offset: 0, Size: 4. unsigned short wParamL; // Offset: 4, Size: 2. unsigned short wParamH; // Offset: 6, Size: 2. }; // Size: 8. union INPUTTYPE { tagMOUSEINPUT mi; // Offset: 0, Size: 24. tagKEYBDINPUT ki; // Offset: 0, Size: 16. tagHARDWAREINPUT hi; // Offset: 0, Size: 8. }; // Size: 24. struct tagINPUT { unsigned int type; // Offset: 0, Size: 4. INPUTTYPE iType; // Offset: 4, Size: 24. }; // Size: 28. struct _FILETIME { unsigned int dwLowDateTime; // Offset: 0, Size: 4. unsigned int dwHighDateTime; // Offset: 4, Size: 4. }; // Size: 8. struct _WIN32_FIND_DATA { unsigned int dwFileAttributes; // Offset: 0, Size: 4. _FILETIME ftCreationTime; // Offset: 4, Size: 8. _FILETIME ftLastAccessTime; // Offset: 12, Size: 8. _FILETIME ftLastWriteTime; // Offset: 20, Size: 8. unsigned int nFileSizeHigh; // Offset: 28, Size: 4. unsigned int nFileSizeLow; // Offset: 32, Size: 4. unsigned int dwReserved0; // Offset: 36, Size: 4. unsigned int dwReserved1; // Offset: 40, Size: 4. char cFileName[260]; // Offset: 44, Size: 260. char cAlternateFileName[14]; // Offset: 304, Size: 14. }; // Size: 318. union MHS_ALLTYPES { signed char Char; // Offset: 0, Size: 1. unsigned char Byte; // Offset: 0, Size: 1. signed short Short; // Offset: 0, Size: 2. unsigned short UShort; // Offset: 0, Size: 2. signed int Int; // Offset: 0, Size: 4. unsigned int UInt; // Offset: 0, Size: 4. signed __int64 Int64; // Offset: 0, Size: 8. unsigned __int64 UInt64; // Offset: 0, Size: 8. float Float; // Offset: 0, Size: 4. double Double; // Offset: 0, Size: 8. }; // Size: 8. struct DATATYPEPARMS { unsigned int dwDataType; // Offset: 0, Size: 4. unsigned int dwSubType; // Offset: 4, Size: 4. int bEnableSame; // Offset: 8, Size: 4. MHS_ALLTYPES atValue; // Offset: 12, Size: 8. MHS_ALLTYPES atTo; // Offset: 20, Size: 8. }; // Size: 28. struct POINTERPARMS { unsigned int dwSubType; // Offset: 0, Size: 4. int bEnableSame; // Offset: 4, Size: 4. int bStatic; // Offset: 8, Size: 4. void * lpvSaveOffset; // Offset: 12, Size: 4. MHS_ALLTYPES atValue; // Offset: 16, Size: 8. MHS_ALLTYPES atTo; // Offset: 24, Size: 8. }; // Size: 32. struct STRINGPARMS { const char * pcValue; // Offset: 0, Size: 4. unsigned int dwLength; // Offset: 4, Size: 4. int bUnicode; // Offset: 8, Size: 4. int bOffsets; // Offset: 12, Size: 4. unsigned char bOffFrom; // Offset: 16, Size: 1. unsigned char bOffTo; // Offset: 17, Size: 1. }; // Size: 18. struct SCRIPTPARMS { int iDataSize; // Offset: 0, Size: 4. int iAlign; // Offset: 4, Size: 4. const char * pcCallback; // Offset: 8, Size: 4. const char * pcDecoder; // Offset: 12, Size: 4. const char * pcSetup; // Offset: 16, Size: 4. }; // Size: 20. union TP { DATATYPEPARMS dtParms; // Offset: 0, Size: 28. POINTERPARMS pParms; // Offset: 0, Size: 32. STRINGPARMS sParms; // Offset: 0, Size: 18. SCRIPTPARMS scParms; // Offset: 0, Size: 20. }; // Size: 32. struct MHS_API_SEARCH_PARMS { unsigned int dwType; // Offset: 0, Size: 4. void * lpvStart; // Offset: 4, Size: 4. void * lpvEnd; // Offset: 8, Size: 4. int bAligned; // Offset: 12, Size: 4. TP TypeParms; // Offset: 16, Size: 32. }; // Size: 48. struct MHS_API_SUB_SEARCH_PARMS { unsigned int dwSearchType; // Offset: 0, Size: 4. MHS_ALLTYPES atValue; // Offset: 4, Size: 8. MHS_ALLTYPES atTo; // Offset: 12, Size: 8. const char * pcCallback; // Offset: 20, Size: 4. }; // Size: 24. union PINFO_UNION { unsigned int dwUserData; // Offset: 0, Size: 4. char * pcStringPointer; // Offset: 0, Size: 4. void * lpvMiscData; // Offset: 0, Size: 4. }; // Size: 4. struct tagPROC_INFO_MHS { void * hProcess; // Offset: 0, Size: 4. void * hThread; // Offset: 4, Size: 4. unsigned int dwProcessId; // Offset: 8, Size: 4. unsigned int dwThreadId; // Offset: 12, Size: 4. void * lpvReseved; // Offset: 16, Size: 4. PINFO_UNION u; // Offset: 20, Size: 4. void * lpvReadWriteAddress; // Offset: 24, Size: 4. _CONTEXT * pcContext; // Offset: 28, Size: 4. int bSetContext; // Offset: 32, Size: 4. }; // Size: 36. struct WSAData { unsigned short wVersion; // Offset: 0, Size: 2. unsigned short wHighVersion; // Offset: 2, Size: 2. char szDescription[257]; // Offset: 4, Size: 257. char szSystemStatus[129]; // Offset: 261, Size: 129. unsigned short iMaxSockets; // Offset: 390, Size: 2. unsigned short iMaxUdpDg; // Offset: 392, Size: 2. char * lpVendorInfo; // Offset: 394, Size: 4. }; // Size: 398. struct z_stream_s { unsigned char * next_in; // Offset: 0, Size: 4. unsigned int avail_in; // Offset: 4, Size: 4. unsigned int total_in; // Offset: 8, Size: 4. unsigned char * next_out; // Offset: 12, Size: 4. unsigned int avail_out; // Offset: 16, Size: 4. unsigned int total_out; // Offset: 20, Size: 4. char * msg; // Offset: 24, Size: 4. void * state; // Offset: 28, Size: 4. void * zalloc; // Offset: 32, Size: 4. void * zfree; // Offset: 36, Size: 4. void * opaque; // Offset: 40, Size: 4. int data_type; // Offset: 44, Size: 4. unsigned int adler; // Offset: 48, Size: 4. unsigned int reserved; // Offset: 52, Size: 4. }; // Size: 56. union EVAL_UNION { unsigned __int64 ui64Int64; // Offset: 0, Size: 8. __int64 i64Int64; // Offset: 0, Size: 8. double dDouble; // Offset: 0, Size: 8. }; // Size: 8. struct EVAL_RET_TYPE { int iType; // Offset: 0, Size: 4. EVAL_UNION u; // Offset: 4, Size: 8. }; // Size: 12. struct SCRIPT_ADD_BP { char * pcName; // Offset: 0, Size: 4. int bHardware; // Offset: 4, Size: 4. int iType; // Offset: 8, Size: 4. int bSet; // Offset: 12, Size: 4. unsigned __int64 aAddress; // Offset: 16, Size: 8. unsigned int dwRange; // Offset: 24, Size: 4. int iProlog; // Offset: 28, Size: 4. int iCallback; // Offset: 32, Size: 4. int iEpilog; // Offset: 36, Size: 4. unsigned int dwNewParms[3]; // Offset: 40, Size: 12. int bUseCondition; // Offset: 52, Size: 4. char * pcCondition; // Offset: 56, Size: 4. }; // Size: 60. struct MODULEWITHADDRESS { unsigned __int64 aBaseAddress; // Offset: 0, Size: 8. char szModule[260]; // Offset: 8, Size: 260. char szExePath[260]; // Offset: 268, Size: 260. }; // Size: 528. struct HOOK_INFO { unsigned __int64 aAddress; // Offset: 0, Size: 8. unsigned int dwSize; // Offset: 8, Size: 4. int htType; // Offset: 12, Size: 4. char szApiName[32]; // Offset: 16, Size: 32. unsigned int dwApiOffset; // Offset: 48, Size: 4. char szHookedModule[260]; // Offset: 52, Size: 260. unsigned __int64 aJmpAddress; // Offset: 312, Size: 8. char szHookerModule[260]; // Offset: 320, Size: 260. unsigned __int64 aHookerAddress; // Offset: 580, Size: 8. unsigned char * pbHookBytes; // Offset: 588, Size: 4. unsigned char * pbRealBytes; // Offset: 592, Size: 4. }; // Size: 596. union REMOTE_CALL_RETURN { unsigned char bByte; // Offset: 0, Size: 1. char cChar; // Offset: 0, Size: 1. unsigned short wWord; // Offset: 0, Size: 2. short sShort; // Offset: 0, Size: 2. unsigned int dwDWord; // Offset: 0, Size: 4. int lLong; // Offset: 0, Size: 4. unsigned __int64 ui64Int64; // Offset: 0, Size: 8. __int64 i64Int64; // Offset: 0, Size: 8. float fFloat; // Offset: 0, Size: 4. double dDouble; // Offset: 0, Size: 8. }; // Size: 8. struct LOCKPARMSINT { __int64 i64LockLow; // Offset: 0, Size: 8. __int64 i64LockHigh; // Offset: 8, Size: 8. }; // Size: 16. struct LOCKPARMSDOUBLE { double dLockLow; // Offset: 0, Size: 8. double dLockHigh; // Offset: 8, Size: 8. }; // Size: 16. union LOCKPARMS { LOCKPARMSINT irLock; // Offset: 0, Size: 16. LOCKPARMSDOUBLE drLock; // Offset: 0, Size: 16. __int64 i64Limit; // Offset: 0, Size: 8. double dLimit; // Offset: 0, Size: 8. }; // Size: 16. struct ADDADDRESS { unsigned __int64 aAddress; // Offset: 0, Size: 8. int iType; // Offset: 8, Size: 4. int iLockType; // Offset: 12, Size: 4. LOCKPARMS uLockParms; // Offset: 16, Size: 16. unsigned int dwLockValueSize; // Offset: 32, Size: 4. unsigned char * pbLockedValue; // Offset: 36, Size: 4. char * pcDescr; // Offset: 40, Size: 4. int iLockMethod; // Offset: 44, Size: 4. char * pcAutoAssemble; // Offset: 48, Size: 4. char * pcScript; // Offset: 52, Size: 4. int iAddressType; // Offset: 56, Size: 4. int bUseScriptForBaseAddress; // Offset: 60, Size: 4. int bUseScriptForFinalAddress; // Offset: 64, Size: 4. char * pcComplexAddress; // Offset: 68, Size: 4. int iHotKeyKey; // Offset: 72, Size: 4. }; // Size: 76. struct WINDOWPOS { void * hwnd; // Offset: 0, Size: 4. void * hwndInsertAfter; // Offset: 4, Size: 4. int x; // Offset: 8, Size: 4. int y; // Offset: 12, Size: 4. int cx; // Offset: 16, Size: 4. int cy; // Offset: 20, Size: 4. unsigned int flags; // Offset: 24, Size: 4. }; // Size: 28. struct s_S_un0 { unsigned char s_b1; // Offset: 0, Size: 1. unsigned char s_b2; // Offset: 1, Size: 1. unsigned char s_b3; // Offset: 2, Size: 1. unsigned char s_b4; // Offset: 3, Size: 1. }; // Size: 4. struct s_S_un1 { unsigned short s_w1; // Offset: 0, Size: 2. unsigned short s_w2; // Offset: 2, Size: 2. }; // Size: 4. union u_S_un { s_S_un0 S_un_b; // Offset: 0, Size: 4. s_S_un1 S_un_w; // Offset: 0, Size: 4. unsigned int S_addr; // Offset: 0, Size: 4. }; // Size: 4. struct in_addr { u_S_un S_un; // Offset: 0, Size: 4. }; // Size: 4. struct sockaddr_in { short sin_family; // Offset: 0, Size: 2. unsigned short sin_port; // Offset: 2, Size: 2. in_addr sin_addr; // Offset: 4, Size: 4. char sin_zero[8]; // Offset: 8, Size: 8. }; // Size: 16. struct hostent { char * h_name; // Offset: 0, Size: 4. char ** h_aliases; // Offset: 4, Size: 4. short h_addrtype; // Offset: 8, Size: 2. short h_length; // Offset: 10, Size: 2. char ** h_addr_list; // Offset: 12, Size: 4. }; // Size: 16. struct servent { char * s_name; // Offset: 0, Size: 4. char ** s_aliases; // Offset: 4, Size: 4. short s_port; // Offset: 8, Size: 2. char * s_proto; // Offset: 10, Size: 4. }; // Size: 14. struct protoent { char * p_name; // Offset: 0, Size: 4. char ** p_aliases; // Offset: 4, Size: 4. short p_proto; // Offset: 8, Size: 2. }; // Size: 10. struct timeval { int tv_sec; // Offset: 0, Size: 4. int tv_usec; // Offset: 4, Size: 4. }; // Size: 8. struct fd_set { unsigned int fd_count; // Offset: 0, Size: 4. unsigned int fd_array[64]; // Offset: 4, Size: 256. }; // Size: 260. struct linger { unsigned short l_onoff; // Offset: 0, Size: 2. unsigned short l_linger; // Offset: 2, Size: 2. }; // Size: 4. struct DIS_CMD { unsigned int dwMask; // Offset: 0, Size: 4. unsigned int dwCode; // Offset: 4, Size: 4. unsigned char ucLength; // Offset: 8, Size: 1. unsigned char ucBits; // Offset: 9, Size: 1. unsigned char ucArg1; // Offset: 10, Size: 1. unsigned char ucArg2; // Offset: 11, Size: 1. unsigned char ucArg3; // Offset: 12, Size: 1. unsigned char ucType; // Offset: 13, Size: 1. unsigned char ucDiffDecOpSize; // Offset: 14, Size: 1. unsigned char ucDepOdAddSize; // Offset: 15, Size: 1. char * ptcName; // Offset: 16, Size: 4. void * lpvReserved; // Offset: 20, Size: 4. }; // Size: 24. struct CODESTRING { unsigned int dwReserved; // Offset: 0, Size: 4. unsigned int dwLength; // Offset: 4, Size: 4. char * pcText; // Offset: 8, Size: 4. }; // Size: 12. struct DIS_OP_DATA { int iDataType; // Offset: 0, Size: 4. unsigned short wMemBegin; // Offset: 4, Size: 2. unsigned short wMemEnd; // Offset: 6, Size: 2. int bIsMemory; // Offset: 8, Size: 4. int bIsRegister; // Offset: 12, Size: 4. unsigned char bSize; // Offset: 16, Size: 1. unsigned char bRegisterCount; // Offset: 17, Size: 1. }; // Size: 18. struct DIS_DISASM { unsigned int aEIP; // Offset: 0, Size: 4. CODESTRING strDump; // Offset: 4, Size: 12. CODESTRING strResult; // Offset: 16, Size: 12. CODESTRING strComment; // Offset: 28, Size: 12. int iCmdType; // Offset: 40, Size: 4. int iMemType; // Offset: 44, Size: 4. int iPrefixes; // Offset: 48, Size: 4. int iIndexed; // Offset: 52, Size: 4. unsigned int dwJmpConst; // Offset: 56, Size: 4. unsigned int dwTable; // Offset: 60, Size: 4. unsigned int dwAddrConst; // Offset: 64, Size: 4. unsigned int dwImmConst; // Offset: 68, Size: 4. int iArg1; // Offset: 72, Size: 4. int iArg2; // Offset: 76, Size: 4. int iArg3; // Offset: 80, Size: 4. int iZeroConst; // Offset: 84, Size: 4. int iFixUpOffset; // Offset: 88, Size: 4. int iFixUpSize; // Offset: 92, Size: 4. int iError; // Offset: 96, Size: 4. int iWarnings; // Offset: 100, Size: 4. DIS_CMD * lpcCmdData; // Offset: 104, Size: 4. DIS_OP_DATA dodData[3]; // Offset: 108, Size: 54. }; // Size: 162. |
Copyright © 2006 Shawn (L. Spiro) Wilcoxen |