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