KeSetPriorityBoost

VOID __stdcall KeSetPriorityBoost(_ETHREAD *TargetThread, INT64 BoostPriority){
  int v2; 
  char v4; 
  unsigned __int8 CurrentIrql; 
  struct _KPRCB *CurrentPrcb; 
  unsigned __int64 v7; 
  struct _KPRCB *v8; 
  int v9; 
  unsigned __int64 v10; 
  __int64 v11; 
  UINT64 SpinCount; 
  _SINGLE_LIST_ENTRY ReadyList; 
  v2 = BoostPriority;
  if( *((__int64 **)TargetThread + 68) != KiInitialProcess )
  {
    v4 = 0;
    ReadyList.Next = 0i64;
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    CurrentPrcb = KeGetCurrentPrcb();
    if( *((char *)TargetThread + 195) <= 0 || *((char *)TargetThread + 195) >= (int)BoostPriority )
      goto LABEL_17;
    v7 = *((_QWORD *)TargetThread + 9);
    v8 = KeGetCurrentPrcb();
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)TargetThread + 16, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *((_QWORD *)TargetThread + 8) );
      v11 = *((_QWORD *)v8 + 4247);
      if( v11 && *((_BYTE *)v8 + 32) <= 1u )
        ++*(_DWORD *)(v11 + 24);
    }
    v9 = *((char *)TargetThread + 195);
    if( *((char *)TargetThread + 195) > 0 && v9 < v2 )
    {
      v4 = 1;
      *((_BYTE *)TargetThread + 564) += 16 * (v2 - v9);
      KiSetPriorityThread((_KTHREAD *)TargetThread, &ReadyList, (unsigned int)(char)v2);
      v10 = *((_QWORD *)TargetThread + 4);
      if( v7 > v10 || v10 - v7 < (unsigned int)KiLockQuantumTarget )
        *((_QWORD *)TargetThread + 4) = v7 + (unsigned int)KiLockQuantumTarget;
    }
    *((_QWORD *)TargetThread + 8) = 0i64;
    if( v4 )
      KiProcessDeferredReadyList((__int64)CurrentPrcb, &ReadyList, CurrentIrql);
    else
LABEL_17:
      __writecr8(CurrentIrql);
  }
}

Referenced by:

ExpApplyPriorityBoost
FsRtlpDoBoost
KeGenericProcessorCallback