KiTpWriteBreakpoint
NTSTATUS __stdcall KiTpWriteBreakpoint(INT64 a1, CHAR a2){
bool v4;
NTSTATUS result;
CHAR *v6;
CHAR v7;
_EPROCESS *v8;
CHAR *v9;
int v10;
if( *(_BYTE *)(a1 + 50) || !VslVsmEnabled )
goto LABEL_12;
v4 = a2 && !*(_BYTE *)(a1 + 49);
result = MmWriteSystemImageTracepoint(*(_QWORD *)(a1 + 8), v4, a2);
if( !*(_BYTE *)(a1 + 49) && result >= 0 )
*(_BYTE *)(a1 + 49) = 1;
if( result == -1073741637 || result == -1073741667 )
{
LABEL_12:
v6 = *(CHAR **)(a1 + 8);
v7 = *(_BYTE *)(a1 + 50);
v8 = *(_EPROCESS **)(a1 + 16);
if( a2 )
{
v10 = 204;
v9 = (CHAR *)&v10;
}
else
{
v9 = (CHAR *)(a1 + 51);
}
return KiTpWriteMemory(v8, v7, v6, v9);
}
return result;
}Referenced by:
KeSetTracepoint
KiTpHandleTrap