KdpReadPhysicalMemoryLong

VOID __stdcall KdpReadPhysicalMemoryLong(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData){
  _KD_CONTEXT *v2; 
  unsigned int TransferCount; 
  unsigned __int64 TargetBaseAddress; 
  unsigned int ActualBytesRead; 
  unsigned int v8; 
  __int64 v9; 
  _KD_CONTEXT KdContext; 

  TransferCount = m->u.ReadMemory.TransferCount;
  TargetBaseAddress = m->u.ReadMemory.TargetBaseAddress;
  ActualBytesRead = m->u.ReadMemory.ActualBytesRead;
  for( KdContext = KdpContext; TransferCount; TransferCount -= v9 )
  {
    m->u.ReadMemory.TargetBaseAddress = TargetBaseAddress;
    m->u.ReadMemory.TransferCount = TransferCount;
    m->u.ReadMemory.ActualBytesRead = ActualBytesRead;
    AdditionalData->Length = 0;
    m->ReturnStatus = 0;
    KdContext.Flags = 13;
    KdpReadPhysicalMemory(m, AdditionalData, v2, &KdContext);
    v8 = 4 * m->u.ReadMemory.ActualBytesRead;
    if( (m->u.ReadMemory.ActualBytesRead & 0xC0000000) != 0x40000000 )
      v8 = m->u.ReadMemory.ActualBytesRead;
    if( m->ReturnStatus < 0 || !v8 )
      break;
    v9 = TransferCount;
    if( v8 <= TransferCount )
      v9 = v8;
    TargetBaseAddress += v9;
  }
}

Referenced by:

KdpSendWaitContinue