KdPollBreakIn

UINT8 __stdcall KdPollBreakIn(){
  __int64 v0; 
  UINT8 v2; 
  __int64 v3; 
  unsigned int *v4; 
  unsigned __int64 *v5; 
  unsigned __int64 v6; 
  _DWORD *v7; 
  __int64 v8; 
  unsigned __int64 v9; 
  __int16 v10; 

  if( KdPitchDebugger && !KdEventLoggingEnabled )
    return 0;
  v2 = 0;
  if( (_BYTE)KdDebuggerEnabled || KdEventLoggingEnabled )
  {
    _disable();
    LODWORD(v0) = KeGetPcr()->Prcb.Number;
    v3 = (unsigned int)v0;
    v4 = (unsigned int *)KdLogBuffer[v0];
    if( v4 )
    {
      v5 = (unsigned __int64 *)&v4[4 * *v4 + 4];
      v6 = __rdtsc();
      *v5 = ((unsigned __int64)HIDWORD(v6) << 32) | (unsigned int)v6;
      v5[1] = 4 * ((unsigned __int8)KdDebuggerNotPresent & 1u);
    }
    if( KdpContext.KdpControlCPending )
    {
      v2 = 1;
      KdpContext.KdpControlCPending = 0;
    }
    else if( KxTryToAcquireSpinLock((INT32 *)&KdDebuggerLock) )
    {
      v2 = (unsigned int)KdReceivePacket(8i64, 0i64, 0i64, 0i64, 0i64) == 0;
      KxReleaseSpinLock(&KdDebuggerLock);
    }
    v2 &= (unsigned __int8)KdDebuggerEnabled;
    KdpControlCPressed |= v2;
    v7 = (_DWORD *)KdLogBuffer[v3];
    if( v7 )
    {
      v8 = (unsigned int)*v7;
      v9 = __rdtsc();
      *(_QWORD *)&v7[4 * v8 + 6] = v7[4 * v8 + 6] & 4 | (2 * ((unsigned __int8)KdDebuggerNotPresent & 1u)) | ((((unsigned __int64)HIDWORD(v9) << 32) | (unsigned int)v9) - *(_QWORD *)&v7[4 * v8 + 4]) & 0xFFFFFFFFFFFFFFF0ui64;
      if( (_DWORD)v8 == 254 )
        *v7 = 0;
      else
        *v7 = v8 + 1;
    }
    if( (v10 & 0x200) != 0 )
      _enable();
  }
  return v2;
}

Referenced by:

KdCheckForDebugBreak
KdInitSystem