KiTpWriteBreakpoint
INT64 __fastcall KiTpWriteBreakpoint(INT64 a1, CHAR a2){
bool v4;
INT64 result;
char *v6;
char v7;
ULONG_PTR v8;
char *v9;
int v10;
if( *(_BYTE *)(a1 + 50) || !VslVsmEnabled )
goto LABEL_12;
v4 = a2 && !*(_BYTE *)(a1 + 49);
result = MmWriteSystemImageTracepoint(*(VOID **)(a1 + 8), v4, a2);
if( !*(_BYTE *)(a1 + 49) && (int)result >= 0 )
*(_BYTE *)(a1 + 49) = 1;
if( (_DWORD)result == -1073741637 || (_DWORD)result == -1073741667 )
{
LABEL_12:
v6 = *(char **)(a1 + 8);
v7 = *(_BYTE *)(a1 + 50);
v8 = *(_QWORD *)(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