KiTpWriteMemory

__int64 __fastcall KiTpWriteMemory(ULONG_PTR a1, char a2, char *a3, char *a4){
  int v8; 
  UINT8 v9; 
  UINT64 Flags; 
  UINT64 Flagsa; 
  UINT64 Flagsb; 
  _KAPC_STATE ApcState; 
  memset(&ApcState, 0, sizeof(ApcState));
  if( a1 )
    KiStackAttachProcess((_KPROCESS *)a1, 0i64, &ApcState);
  if( a2 == 1 )
  {
    v8 = KiTpWriteUmMemory(a1, a3, a4, 1ui64);
  }
  else if( (KiDynamicTraceEnabled & 4) != 0 )
  {
    LODWORD(Flags) = 1;
    v8 = MmDbgCopyMemory((UINT64)a3, a4, 1ui64, 1ui64, Flags);
    if( v8 < 0 )
    {
      LODWORD(Flagsa) = 5;
      v9 = KdEnterDebugger(0i64, 0i64);
      v8 = MmDbgCopyMemory((UINT64)a3, a4, 1ui64, 1ui64, Flagsa);
      if( v8 < 0 )
      {
        LODWORD(Flagsb) = 69;
        v8 = MmDbgCopyMemory((UINT64)a3, a4, 1ui64, 1ui64, Flagsb);
      }
      KdExitDebugger(v9);
    }
  }
  else
  {
    v8 = -1073741790;
  }
  if( a1 )
    KiUnstackDetachProcess(&ApcState, 0i64);
  return(unsigned int)v8;
}

Referenced by:

KiTpWriteBreakpoint