ExTimedWaitForUnblockPushLock

NTSTATUS __stdcall ExTimedWaitForUnblockPushLock(
        _EX_PUSH_LOCK *PushLock,
        _EX_PUSH_LOCK_WAIT_BLOCK *WaitBlock,
        _LARGE_INTEGER *Timeout){
  volatile signed __int32 *v3; 
  __int64 v4; 
  int v8; 
  NTSTATUS v9; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 

  *(_WORD *)WaitBlock = 0;
  WaitBlock[1] = 0;
  v3 = WaitBlock + 13;
  v4 = (unsigned int)ExpSpinCycleCount;
  *((_QWORD *)WaitBlock + 2) = WaitBlock + 2;
  *((_QWORD *)WaitBlock + 1) = WaitBlock + 2;
  *((_BYTE *)WaitBlock + 2) = 6;
  if( KUSER_SHARED_DATA.UnparkedProcessorCount <= 1u )
  {
LABEL_8:
    if( !_interlockedbittestandreset(v3, 1u) )
      return 0;
    v9 = KeWaitForSingleObject((UINT64)WaitBlock, 28, 0, 0, (INT64)Timeout);
    if( v9 )
      ExpUnblockPushLock(PushLock, WaitBlock, 1u);
    return v9;
  }
  else
  {
    if( WaitBlock != (_EX_PUSH_LOCK_WAIT_BLOCK *)-52i64 && KUSER_SHARED_DATA.ProcessorFeatures[35] )
    {
      v11 = __rdtsc();
      v12 = v11 + v4;
      while( 1 )
      {
        __asm { monitorx rax, rcx, rdx }
        if( (*v3 & 2) == 0 )
          break;
        v13 = v11;
        v14 = __rdtsc();
        v11 = v14;
        if( v14 <= v13 || v14 >= v12 )
          goto LABEL_8;
        __asm { mwaitx  rax, rcx, rbx }
      }
    }
    else
    {
      v8 = 0;
      while( (*v3 & 2) != 0 )
      {
        if( v8 == (unsigned int)v4 / KUSER_SHARED_DATA.CyclesPerYield )
          goto LABEL_8;
        _mm_pause();
        ++v8;
      }
    }
    return 0;
  }
}

Referenced by:

ExBlockOnAddressPushLock
ExWaitForUnblockPushLock
ExpUnblockPushLock