KdpSetContext

VOID __stdcall KdpSetContext(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData, _CONTEXT *Context){
  __int64 Processor; 
  char *Buffer; 
  __int128 v6; 
  UINT64 ContextFlags; 

  v6 = 0i64;
  LODWORD(ContextFlags) = 0;
  Processor = m->Processor;
  *((_QWORD *)&v6 + 1) = m;
  LOWORD(v6) = 56;
  if( (unsigned __int16)Processor < 0x500u && *(&KiProcessorBlock + Processor) && *(&KiSwapEvent + 480) )
  {
    m->ReturnStatus = 0;
    if( (_WORD)Processor != (unsigned __int16)KeGetPcr()->Prcb.Number )
      Context = (*(&KiProcessorBlock + Processor))->Context;
    Buffer = AdditionalData->Buffer;
    KdpSanitizeContextFlags((_CONTEXT *)Buffer, AdditionalData->Length, &ContextFlags);
    KdpCopyContext(Context, (unsigned int)ContextFlags, (_CONTEXT *)Buffer);
  }
  else
  {
    m->ReturnStatus = -1073741823;
  }
  KdSendPacket(2i64, &v6, 0i64, &KdpContext);
}

Referenced by:

KdpSendWaitContinue