Skip to content

Commit

Permalink
Merge pull request #208 from Cxbx-Reloaded/upgrade-symbol-groups
Browse files Browse the repository at this point in the history
Upgrade OOVPA symbol group files
  • Loading branch information
ergo720 authored Sep 25, 2024
2 parents 9a1421b + 2ee3ab5 commit 10b4a5a
Show file tree
Hide file tree
Showing 73 changed files with 3,640 additions and 1,833 deletions.
8 changes: 8 additions & 0 deletions include/libCallTypes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// SPDX-License-Identifier: ODbL-1.0

CALL_(unknown) // Unknown, intended to be used for "not a function" types and for "function" documentation when reverse-engineering efforts could not narrow it down to either the stack or one of the registers.
CALL_(none)
CALL_(cdecl)
CALL_(stdcall)
CALL_(thiscall)
CALL_(fastcall)
25 changes: 25 additions & 0 deletions include/libParamTypes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: ODbL-1.0

PARAM_TYPE_32(unk) // Unknown, intended to be used for "not a function" types and for "function" documentation when reverse-engineering efforts could not narrow it down to either the stack or one of the registers.
PARAM_TYPE__0(void) // 0 bits
PARAM_TYPE_64(psh2) // 64 bits (two pushes)
PARAM_TYPE_32(psh) // 32 bits (one push)
PARAM_TYPE_32(eax) // 32 bits
PARAM_TYPE_16_(ax) // 16 bits
PARAM_TYPE__8_(ah) // 8 bits
PARAM_TYPE__8_(al) // 8 bits
PARAM_TYPE_32(ebx) // 32 bits
PARAM_TYPE_16_(bx) // 16 bits
PARAM_TYPE__8_(bh) // 8 bits
PARAM_TYPE__8_(bl) // 8 bits
PARAM_TYPE_32(ecx) // 32 bits
PARAM_TYPE_16_(cx) // 16 bits
PARAM_TYPE__8_(ch) // 8 bits
PARAM_TYPE__8_(cl) // 8 bits
PARAM_TYPE_32(edx) // 32 bits
PARAM_TYPE_16_(dx) // 16 bits
PARAM_TYPE__8_(dh) // 8 bits
PARAM_TYPE__8_(dl) // 8 bits
PARAM_TYPE_32(ebp) // 32 bits
PARAM_TYPE_32(edi) // 32 bits
PARAM_TYPE_32(esi) // 32 bits
63 changes: 60 additions & 3 deletions include/libXbSymbolDatabase.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,39 @@ static const char* xbe_type_str[XB_XBE_TYPE_MAX] = {
"CHIHIRO"
};

typedef enum _XbSDBSymbolType {
symbol_internal = 0, // Only for internal usage.
symbol_variable,
symbol_function
} XbSDBSymbolType;

typedef enum _XbSDBCallType {
#define CALL_(type) call_##type,
#include <libCallTypes.h>
#undef CALL_
call_max
} XbSDBCallType;

typedef enum _XbSDBParamType {
#define PARAM_TYPE__0(type) param_##type,
#define PARAM_TYPE_64(type) param_##type,
#define PARAM_TYPE_32(type) param_##type,
#define PARAM_TYPE_16_(type) param__##type,
#define PARAM_TYPE__8_(type) param__##type,
#include <libParamTypes.h>
#undef PARAM_TYPE__0
#undef PARAM_TYPE_64
#undef PARAM_TYPE_32
#undef PARAM_TYPE_16_
#undef PARAM_TYPE__8_
param_max
} XbSDBParamType;

typedef struct _XbSDBSymbolParam {
XbSDBParamType type;
const char* const name;
} XbSDBSymbolParam;

#ifndef xbaddr
typedef uint32_t xbaddr;
#endif
Expand Down Expand Up @@ -197,15 +230,18 @@ void XbSymbolDatabase_SetOutputMessage(xb_output_message_t message_func);

/// <summary>
/// To register any detected symbol name with address and build version back to third-party program.
/// NOTE: Be aware of library name will be varity since some libraries are detecting in other sections as well.
/// NOTE: Be aware that the library name will vary since some libraries are detected in other sections as well.
/// </summary>
/// <param name="library_str">Name of the library in string.</param>
/// <param name="library_flag">Name of the library in flag.</param>
/// <param name="xref_index">Output unique xreference of symbol name.</param>
/// <param name="symbol_str">Name of the library in symbol string.</param>
/// <param name="address">Return xbox's virtual address.</param>
/// <param name="build_verison">Found with specific build verison.</param>
typedef void (*xb_symbol_register_t)(const char* library_str, uint32_t library_flag, uint32_t xref_index, const char* symbol_str, xbaddr address, uint32_t build_verison);
/// <param name="build_version">Found with specific build version.</param>
/// <param name="symbol_type">Type of symbol. If symbol type is a function, then the following arguments starting with a param_ prefix will be set.</param>
/// <param name="param_count">Total count of parameters.</param>
/// <param name="param_list">List of parameters.</param>
typedef void (*xb_symbol_register_t)(const char* library_str, uint32_t library_flag, uint32_t xref_index, const char* symbol_str, xbaddr address, uint32_t build_version, uint32_t symbol_type, uint32_t call_type, uint32_t param_count, const XbSDBSymbolParam* param_list);

/// <summary>
/// DEPRECATED: To scan symbols in memory of raw xbe or host's virtual xbox environment.
Expand All @@ -223,6 +259,27 @@ bool XbSymbolScan(const void* xb_header_addr, xb_symbol_register_t register_func
/// <returns>Return "UNKNOWN" string if does not exist in the database. Otherwise will return library name string.</returns>
const char* XbSymbolDatabase_LibraryToString(uint32_t library_flag);

/// <summary>
/// To convert parameter type into string format.
/// </summary>
/// <param name="param_type">Input provided param_type from symbol register callback.</param>
/// <returns>Return "unk" string if does not exist in the database. Otherwise it will return the string representation of the parameter type.</returns>
const char* XbSymbolDatabase_ParamToString(uint32_t param_type);

/// <summary>
/// To convert calling convention type into string format.
/// </summary>
/// <param name="call_type">Input provided call_type from symbol register callback.</param>
/// <returns>Return "unknown" string if does not exist in the database. Otherwise it will return the string representation of the calling convention type.</returns>
const char* XbSymbolDatabase_CallingConventionToString(uint32_t call_type);

/// <summary>
/// To convert a symbol reference index into string format.
/// </summary>
/// <param name="xref_index">Input provided xref_index from symbol register callback.</param>
/// <returns>Returns a demangled symbol name string.</returns>
const char* XbSymbolDatabase_SymbolReferenceToString(uint32_t xref_index);

/// <summary>
/// To convert library name string into flag format.
/// </summary>
Expand Down
18 changes: 9 additions & 9 deletions include/xref/d3d8.def
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,15 @@ XREF_SYMBOL(D3DTSS_TEXCOORDINDEX)


// Offsets :
XREF_SYMBOL(OFFSET_D3DDevice__m_PixelShader) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_Textures) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_Palettes) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_RenderTarget) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_DepthStencil) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_VerticalBlankEvent) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_SwapCallback) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_VBlankCallback) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_D3DDevice__m_VertexShader) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_PixelShader_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_Textures_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_Palettes_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_RenderTarget_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_DepthStencil_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_VerticalBlankEvent_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_SwapCallback_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_VBlankCallback_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(D3DDevice__m_VertexShader_OFFSET) // initially set to XREF_ADDR_DERIVE

// Functions
// include D3D8 prefix
Expand Down
3 changes: 3 additions & 0 deletions include/xref/list_xref.h
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,9 @@ typedef enum _XRefDatabase {
// Also, if XREF_COUNT > sizeof(uint16), enlarge struct OOVPA.XRefSaveIndex (and Value somehow)
} XRefDatabase;

#define XREF_API_TO_PUBLIC_INDEX(xref_api_index) xref_api_index - XREF_KT_COUNT - 1
#define XREF_PUBLIC_TO_API_INDEX(xref_public_index) xref_public_index + XREF_KT_COUNT + 1

#define XREF_ADDR_UNDETERMINED -1
#define XREF_ADDR_NOT_FOUND ((void*)0)
#define XREF_ADDR_DERIVE 1
85 changes: 42 additions & 43 deletions include/xref/xapilib.def
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
// ******************************************************************

// Variables
XREF_SYMBOL(XAPI__tls_array) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(XAPI__tls_index) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(_tls_array) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(_tls_index) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(g_DeviceType_Gamepad) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(g_DeviceType_IRDongle) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(g_DeviceType_Keyboard) // initially set to XREF_ADDR_DERIVE
Expand All @@ -35,51 +35,50 @@ XREF_SYMBOL(g_XapiAltLett_MU) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(g_XapiMountedMUs) // initially set to XREF_ADDR_DERIVE

// Offsets
XREF_SYMBOL(OFFSET_XapiCurrentFiber) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_XapiLastErrorCode) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(OFFSET_XapiThreadFiberData) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(XapiCurrentFiber_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(XapiLastErrorCode_OFFSET) // initially set to XREF_ADDR_DERIVE
XREF_SYMBOL(XapiThreadFiberData_OFFSET) // initially set to XREF_ADDR_DERIVE

// Functions
// include XAPI prefix
XREF_SYMBOL(IUsbInit_GetMaxDeviceTypeCount)
XREF_SYMBOL(MU_Init)
XREF_SYMBOL(XAPI__cinit)
XREF_SYMBOL(XAPI__rtinit)
XREF_SYMBOL(XAPI_ConvertThreadToFiber)
XREF_SYMBOL(XAPI_CreateEventA)
XREF_SYMBOL(XAPI_CreateFiber)
XREF_SYMBOL(XAPI_CreateMutexA)
XREF_SYMBOL(XAPI_CreateThread)
XREF_SYMBOL(XAPI_DeleteFiber)
XREF_SYMBOL(XAPI_ExitThread)
XREF_SYMBOL(XAPI_GetExitCodeThread)
XREF_SYMBOL(XAPI_GetLastError)
XREF_SYMBOL(XAPI_GetOverlappedResult)
XREF_SYMBOL(XAPI_GetThreadPriority)
XREF_SYMBOL(XAPI_GetTimeZoneInformation)
XREF_SYMBOL(XAPI_GetTypeInformation_4)
XREF_SYMBOL(XAPI_GetTypeInformation_8)
XREF_SYMBOL(XAPI_mainCRTStartup)
XREF_SYMBOL(XAPI_mainXapiStartup)
XREF_SYMBOL(XAPI_MoveFileA)
XREF_SYMBOL(XAPI_OpenEventA)
XREF_SYMBOL(XAPI_OutputDebugStringA)
XREF_SYMBOL(XAPI_OutputDebugStringW)
XREF_SYMBOL(XAPI_PulseEvent)
XREF_SYMBOL(XAPI_QueueUserAPC)
XREF_SYMBOL(XAPI_QueryPerformanceCounter)
XREF_SYMBOL(XAPI_RaiseException)
XREF_SYMBOL(XAPI_ResetEvent)
XREF_SYMBOL(XAPI_SetEvent)
XREF_SYMBOL(XAPI_SetLastError)
XREF_SYMBOL(XAPI_SetThreadPriority)
XREF_SYMBOL(XAPI_SetThreadPriorityBoost)
XREF_SYMBOL(XAPI_SignalObjectAndWait)
XREF_SYMBOL(XAPI_SwitchToFiber)
XREF_SYMBOL(XAPI_SwitchToThread)
XREF_SYMBOL(XAPI_timeKillEvent)
XREF_SYMBOL(XAPI_timeSetEvent)
XREF_SYMBOL(XAPI_UnhandledExceptionFilter)
XREF_SYMBOL(_cinit)
XREF_SYMBOL(_rtinit)
XREF_SYMBOL(ConvertThreadToFiber)
XREF_SYMBOL(CreateEventA)
XREF_SYMBOL(CreateFiber)
XREF_SYMBOL(CreateMutexA)
XREF_SYMBOL(CreateThread)
XREF_SYMBOL(DeleteFiber)
XREF_SYMBOL(ExitThread)
XREF_SYMBOL(GetExitCodeThread)
XREF_SYMBOL(GetLastError)
XREF_SYMBOL(GetOverlappedResult)
XREF_SYMBOL(GetThreadPriority)
XREF_SYMBOL(GetTimeZoneInformation)
XREF_SYMBOL(GetTypeInformation_4)
XREF_SYMBOL(GetTypeInformation_8)
XREF_SYMBOL(mainCRTStartup)
XREF_SYMBOL(mainXapiStartup)
XREF_SYMBOL(MoveFileA)
XREF_SYMBOL(OpenEventA)
XREF_SYMBOL(OutputDebugStringA)
XREF_SYMBOL(OutputDebugStringW)
XREF_SYMBOL(PulseEvent)
XREF_SYMBOL(QueueUserAPC)
XREF_SYMBOL(QueryPerformanceCounter)
XREF_SYMBOL(RaiseException)
XREF_SYMBOL(ResetEvent)
XREF_SYMBOL(SetEvent)
XREF_SYMBOL(SetLastError)
XREF_SYMBOL(SetThreadPriority)
XREF_SYMBOL(SetThreadPriorityBoost)
XREF_SYMBOL(SignalObjectAndWait)
XREF_SYMBOL(SwitchToFiber)
XREF_SYMBOL(SwitchToThread)
XREF_SYMBOL(timeKillEvent)
XREF_SYMBOL(timeSetEvent)
XREF_SYMBOL(UnhandledExceptionFilter)
// Xapi prefix
XREF_SYMBOL(XapiBootToDash)
XREF_SYMBOL(XapiCallThreadNotifyRoutines)
Expand Down
3 changes: 3 additions & 0 deletions projects/libXbSymbolDatabase/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ find_package(Threads)

file(GLOB INCLUDES
"${XBSDB_ROOT_DIR}/include/Xbe.h"
"${XBSDB_ROOT_DIR}/include/libCallTypes.h"
"${XBSDB_ROOT_DIR}/include/libParamTypes.h"
"${XBSDB_ROOT_DIR}/include/libXbSymbolDatabase.h"

# Include xrefs for ABI feature support.
Expand Down Expand Up @@ -36,6 +38,7 @@ file(GLOB HEADERS
"${XBSDB_ROOT_DIR}/src/lib/manual_custom.h"
"${XBSDB_ROOT_DIR}/src/lib/manual_d3d8__ltcg.h"
"${XBSDB_ROOT_DIR}/src/lib/manual_dsound.h"
"${XBSDB_ROOT_DIR}/src/lib/manual_jvs.h"
"${XBSDB_ROOT_DIR}/src/lib/manual_xapilib.h"
"${XBSDB_ROOT_DIR}/src/OOVPADatabase/OOVPA.h"
)
Expand Down
2 changes: 1 addition & 1 deletion src/OOVPADatabase/.clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Cpp11BracedListStyle: 'false'
IndentCaseLabels: 'true'
IndentWidth: '4'
MacroBlockBegin: ^OOVPA_XREF$|^OOVPA_NO_XREF$|^OOVPA_XREF_DETECT$|^OOVPA_NO_XREF_DETECT$|^OOVPA_XREF_EXTEND$|^OOVPA_SIG_HEADER_XREF$|^OOVPA_SIG_HEADER_NO_XREF$|^OOVPA_SIG_HEADER_XREF_DETECT$|^OOVPA_SIG_HEADER_NO_XREF_DETECT$|^OOVPA_SIG_HEADER_XREF_EXTEND$
MacroBlockEnd: ^OOVPA_END$|^OOVPA_SIG_MATCH$
MacroBlockEnd: ^OOVPA_END$|^OOVPA_SIG_MATCH$|^OOVPA_SIG_MATCH_DUMMY$
MaxEmptyLinesToKeep: '2'
PointerAlignment: Left
SortIncludes: 'false'
Expand Down
56 changes: 52 additions & 4 deletions src/OOVPADatabase/D3D8/3911.inl
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ OOVPA_SIG_MATCH(
XREF_ENTRY(0x01, XREF_D3D_g_pDevice),

// add eax, OFFSET_D3DDevice__m_VerticalBlankEvent
XREF_ENTRY(0x18, XREF_OFFSET_D3DDevice__m_VerticalBlankEvent), // <-- Deriving this XRef is the purpose of this OOVPA
XREF_ENTRY(0x18, XREF_D3DDevice__m_VerticalBlankEvent_OFFSET), // <-- Deriving this XRef is the purpose of this OOVPA

// mov eax,[D3D_g_pDevice]
OV_MATCH(0x00, 0xA1),
Expand Down Expand Up @@ -110,6 +110,54 @@ OOVPA_SIG_MATCH(
//
);

// ******************************************************************
// * D3D_g_pDevice
// ******************************************************************
// dummy signature
OOVPA_SIG_HEADER_NO_XREF(D3D_g_pDevice,
0)
OOVPA_SIG_MATCH_DUMMY();

// ******************************************************************
// * D3DDevice__m_PixelShader OFFSET
// ******************************************************************
// dummy signature
OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_PixelShader_OFFSET,
0)
OOVPA_SIG_MATCH_DUMMY();

// ******************************************************************
// * D3DDevice__m_VerticalBlankEvent OFFSET
// ******************************************************************
// dummy signature
OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_VerticalBlankEvent_OFFSET,
0)
OOVPA_SIG_MATCH_DUMMY();

// ******************************************************************
// * D3DDevice__m_SwapCallback OFFSET
// ******************************************************************
// dummy signature
OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_SwapCallback_OFFSET,
0)
OOVPA_SIG_MATCH_DUMMY();

// ******************************************************************
// * D3DDevice__m_VBlankCallback OFFSET
// ******************************************************************
// dummy signature
OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_VBlankCallback_OFFSET,
0)
OOVPA_SIG_MATCH_DUMMY();

// ******************************************************************
// * D3DDevice__m_VertexShader OFFSET
// ******************************************************************
// dummy signature
OOVPA_SIG_HEADER_NO_XREF(D3DDevice__m_VertexShader_OFFSET,
0)
OOVPA_SIG_MATCH_DUMMY();

// ******************************************************************
// * Direct3D_CreateDevice
// ******************************************************************
Expand Down Expand Up @@ -1557,7 +1605,7 @@ OOVPA_SIG_MATCH(
XREF_ENTRY(0x01, XREF_D3D_g_pDevice),

// D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, OFFSET_D3DDevice__m_VerticalBlankEvent
XREF_ENTRY(0x18, XREF_OFFSET_D3DDevice__m_VerticalBlankEvent),
XREF_ENTRY(0x18, XREF_D3DDevice__m_VerticalBlankEvent_OFFSET),

// D3DDevice_BlockUntilVerticalBlank+0x00 : mov eax,[D3D_g_pDevice]
OV_MATCH(0x00, 0xA1),
Expand Down Expand Up @@ -1596,7 +1644,7 @@ OOVPA_SIG_MATCH(
XREF_ENTRY(0x06, XREF_D3D_g_pDevice),

// D3DDevice_SetVerticalBlankCallback+0x0A : mov [ecx+OFFSET_D3DDevice__m_VBlankCallback],eax
XREF_ENTRY(0x0C, XREF_OFFSET_D3DDevice__m_VBlankCallback),
XREF_ENTRY(0x0C, XREF_D3DDevice__m_VBlankCallback_OFFSET),

// D3DDevice_SetVerticalBlankCallback+0x00 : mov eax,[esp+0x04]
OV_MATCH(0x00, 0x8B, 0x44, 0x24, 0x04),
Expand Down Expand Up @@ -1753,7 +1801,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader,
XRefOne)
OOVPA_SIG_MATCH(

XREF_ENTRY(0x12, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived
XREF_ENTRY(0x12, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived

// D3DDevice_SetVertexShader+0x00 : push ebx
{ 0x00, 0x53 },
Expand Down
2 changes: 1 addition & 1 deletion src/OOVPADatabase/D3D8/4034.inl
Original file line number Diff line number Diff line change
Expand Up @@ -1027,7 +1027,7 @@ OOVPA_SIG_HEADER_XREF(D3DDevice_SetVertexShader,
XRefOne)
OOVPA_SIG_MATCH(

XREF_ENTRY(0x13, XREF_OFFSET_D3DDevice__m_VertexShader), // Derived
XREF_ENTRY(0x13, XREF_D3DDevice__m_VertexShader_OFFSET), // Derived

// D3DDevice_SetVertexShader+0x06 : test bl, 1
{ 0x06, 0xF6 },
Expand Down
2 changes: 1 addition & 1 deletion src/OOVPADatabase/D3D8/4039.inl
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ OOVPA_SIG_MATCH(
XREF_ENTRY(0x06, XREF_D3D_g_pDevice),

// D3DDevice_SetSwapCallback+0x0A : mov [ecx+OFFSET_D3DDevice__m_SwapCallback],eax
XREF_ENTRY(0x0C, XREF_OFFSET_D3DDevice__m_SwapCallback),
XREF_ENTRY(0x0C, XREF_D3DDevice__m_SwapCallback_OFFSET),

// D3DDevice_SetSwapCallback+0x00 : mov eax,[esp+0x04]
OV_MATCH(0x00, 0x8B, 0x44, 0x24, 0x04),
Expand Down
Loading

0 comments on commit 10b4a5a

Please sign in to comment.