HalpBlkPoBusyWait

INT64 __fastcall HalpBlkPoBusyWait(UINT64 P2, UINT64 P3, UINT64 P4){
  ULONG_PTR v3; 
  ULONG_PTR v5; 
  __int64 v6; 
  INT64 result; 
  v3 = (unsigned int)P3;
  v5 = (unsigned int)P2;
  v6 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  while( 1 )
  {
    result = (unsigned int)_InterlockedCompareExchange((volatile signed __int32 *)(P4 + 8), 0, 0);
    if( !(_DWORD)result )
      break;
    HalpBlkWdFatalExceptionCheck((PVOID)(unsigned int)v3);
    if( (unsigned __int64)(*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v6) >= 0x989680 )
      KeBugCheckEx(0x1DAu, 6ui64, v5, v3, P4);
  }
  return result;
}

Referenced by:

HalpBlkPoReadPerfIoPort
HalpBlkPoReadPerfMsr
HalpBlkPoRegisterIdleState
HalpBlkPoWritePerfIoPort
HalpBlkPoWritePerfMsr