#!/usr/bin/env python3
# 
# Cross Platform and Multi Architecture Advanced Binary Emulation Framework
#

STDCALL = 1
CDECL = 2

DWORD = 1
UINT = 1
INT = 1
BOOL = 1
SIZE_T = 1
BYTE = 1
ULONGLONG = 2
HANDLE = 3
POINTER = 3
STRING = 4
WSTRING = 5
GUID = 6

# OS Threading Constants
THREAD_EVENT_INIT_VAL = 0
THREAD_EVENT_EXIT_EVENT = 1
THREAD_EVENT_UNEXECPT_EVENT = 2
THREAD_EVENT_EXECVE_EVENT = 3
THREAD_EVENT_CREATE_THREAD = 4
THREAD_EVENT_BLOCKING_EVENT = 5
THREAD_EVENT_EXIT_GROUP_EVENT = 6

THREAD_STATUS_RUNNING = 0
THREAD_STATUS_BLOCKING = 1
THREAD_STATUS_TERMINATED = 2
THREAD_STATUS_STOPPED = 4
THREAD_STATUS_TIMEOUT = 3
THREAD_STATUS_SUSPEND = 5

reptypedict = {
            "BSTR": "POINTER",
            "DLGPROC": "POINTER",
            "DWORDLONG": "ULONGLONG",
            "DWORD_PTR": "POINTER",
            "GROUP": "INT",
            "HBITMAP": "HANDLE",
            "HDC": "POINTER",
            "HEAP_INFORMATION_CLASS": "UINT",
            "HGLOBAL": "POINTER",
            "HIMAGELIST": "HANDLE",
            "HHOOK": "POINTER",
            "HINSTANCE": "HANDLE",
            "HINTERNET": "POINTER",
            "HKEY": "HANDLE",
            "HLOCAL": "POINTER",
            "HMODULE": "HANDLE",
            "HOOKPROC": "POINTER",
            "HRSRC": "POINTER",
            "HWND": "HANDLE",
            "INSTALLSTATE": "POINTER",
            "INTERNET_PORT": "DWORD",
            "INT_PTR": "POINTER",
            "LARGE_INTEGER": "POINTER",
            "LCID": "POINTER",
            "LONG": "ULONGLONG",
            "LPARAM": "POINTER",
            "LPBOOL": "POINTER",
            "LPBYTE": "POINTER",
            "LPCCH": "POINTER",
            "LPCONTEXT": "POINTER",
            "LPCPINFO": "POINTER",
            "LPCRITICAL_SECTION": "POINTER",
            "LPCSTR": "STRING",
            "LPCVOID": "POINTER",
            "LPCWCH": "POINTER",
            "LPCWSTR": "WSTRING",
            "LPDWORD": "POINTER",
            "LPFILETIME": "POINTER",
            "LPINTERNET_BUFFERSA": "POINT",
            "LPMESSAGEFILTER": "POINTER",
            "LPMODULEINFO": "POINTER",
            "LPNLSVERSIONINFO": "POINTER",
            "LPOSVERSIONINFOA": "STRING",
            "LPOSVERSIONINFOEXW": "POINTER",
            "LPOSVERSIONINFOW": "WSTRING",
            "LPOVERLAPPED": "POINTER",
            "LPPOINT": "POINTER",
            "LPPROCESSENTRY32W": "POINTER",
            "LPSECURITY_ATTRIBUTES": "POINTER",
            "LPSTARTUPINFOA": "POINTER",
            "LPSTARTUPINFOW": "POINTER",
            "LPSTR": "POINTER",
            "LPSTREAM": "POINTER",
            "LPSYSTEMTIME": "POINTER",
            "LPSYSTEM_INFO": "POINTER",
            "LPTHREAD_START_ROUTINE": "POINTER",
            "LPTOP_LEVEL_EXCEPTION_FILTER": "DWORD",
            "LPUNKNOWN": "POINTER",
            "LPVOID": "POINTER",
            "LPWCH": "POINTER",
            "LPWIN32_FIND_DATAA": "POINTER",
            "LPWORD": "POINTER",
            "LPWSADATA": "STRING",
            "LPWSAPROTOCOL_INFOA": "POINTER",
            "LPWSTR": "POINTER",
            "MSIHANDLE": "POINTER",
            "OBJECT_INFORMATION_CLASS": "INT",
            "OLECHAR": "WSTRING",
            "PBOOL": "POINTER",
            "PCACTCTXW": "POINTER",
            "PCNZCH": "STRING",
            "PDWORD": "POINTER",
            "PFLS_CALLBACK_FUNCTION": "POINTER",
            "PHKEY": "POINTER",
            "PMEMORY_BASIC_INFORMATION": "POINTER",
            "PROCESSINFOCLASS": "INT",
            "PSECURITY_DESCRIPTOR": "POINTER",
            "PSID": "HANDLE",
            "PSID_IDENTIFIER_AUTHORITY": "POINTER",
            "PSLIST_HEADER": "POINTER",
            "PSRWLOCK": "POINTER",
            "PULONG": "POINTER",
            "PVECTORED_EXCEPTION_HANDLER": "HANDLE",
            "PVOID": "POINTER",
            "REFCLSID": "POINTER",
            "REFIID": "POINTER",
            "REGSAM": "POINTER",
            "SC_HANDLE": "HANDLE",
            "SHELLEXECUTEINFOA": "POINTER",
            "SHELLEXECUTEINFOW": "POINTER",
            "SHFILEINFOW": "POINTER",
            "SOCKET": "INT",
            "SOLE_AUTHENTICATION_SERVICE": "POINTER",
            "TOKEN_INFORMATION_CLASS": "DWORD",
            "UINT_PTR": "POINTER",
            "ULONG": "UINT",
            "ULONG_PTR": "POINTER",
            "WORD": "DWORD",
            "WPARAM": "UINT",
            "_EXCEPTION_POINTERS": "POINTER",
            "int": "INT",
            "size_t": "UINT",
            "sockaddr": "POINTER",
            "unsigned int": "UINT",
            "void": "POINTER"
}
