KdpGetContextEx

VOID __stdcall KdpGetContextEx(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData, _CONTEXT *Context){
  unsigned int Unused; 
  unsigned int TraceFlag; 
  unsigned int Length; 
  unsigned int v8; 
  unsigned int v9; 
  int v10; 
  _QWORD v11[3]; 

  Unused = m->u.GetContext.Unused;
  TraceFlag = m->u.Continue2.ControlSet.TraceFlag;
  v11[0] = 56i64;
  v11[1] = m;
  KdpGetContext(m, AdditionalData, Context);
  m->u.ReadMemory.TransferCount = 0;
  if( !m->ReturnStatus )
  {
    Length = AdditionalData->Length;
    v8 = Length;
    if( Unused < Length )
      v8 = Unused;
    v9 = Length - v8;
    if( TraceFlag <= v9 )
      v9 = TraceFlag;
    if( v8 && v9 )
      KdpQuickMoveMemory(AdditionalData->Buffer, &AdditionalData->Buffer[v8], v9);
    m->u.GetContext.Unused = v8;
    m->u.Continue2.ControlSet.TraceFlag = AdditionalData->Length;
    m->u.ReadMemory.TransferCount = v9;
    v10 = AdditionalData->Length;
    if( v9 == v10 || v9 && v9 + v8 == v10 )
      *(&KiSwapEvent + 480) = 1;
    AdditionalData->Length = v9;
  }
  KdSendPacket(2i64, v11, AdditionalData, &KdpContext);
}

Referenced by:

KdpSendWaitContinue