FsRtlpDoBoost

VOID __stdcall FsRtlpDoBoost(
        _ETHREAD *OwnerThread,
        _ETHREAD *WaitingThread,
        UINT8 *WaiterPriority,
        UINT64 *Flags,
        PVOID Context){
  bool v5; 
  unsigned int v9; 
  unsigned int v10; 
  unsigned int v11; 
  unsigned __int8 v12; 
  v5 = 0;
  if( (*((_DWORD *)OwnerThread + 324) & 0xE00u) < 0x400 )
    v5 = (*(_BYTE *)Flags & 0x20) == 0;
  v9 = *((unsigned __int8 *)WaitingThread + 195);
  v10 = *WaiterPriority;
  v11 = 15;
  if( (unsigned __int8)v9 < 0xFu )
    v11 = v9;
  if( v10 <= v11 )
  {
    LOBYTE(v10) = 15;
    if( (unsigned __int8)v9 < 0xFu )
      LOBYTE(v10) = v9;
  }
  *WaiterPriority = v10;
  v12 = *((_BYTE *)OwnerThread + 195);
  if( v5 || (unsigned __int8)v10 > v12 )
  {
    if( (unsigned __int8)v10 > v12 )
      KeSetPriorityBoost((_KTHREAD *)OwnerThread, (unsigned __int8)v10);
    if( v5 )
    {
      PsBoostThreadIoEx((__int64)OwnerThread, 0, 1, Context);
      *(_DWORD *)Flags |= 0x20u;
      IoBoostThreadIoPriority((KSPIN_LOCK *)OwnerThread, (*((_DWORD *)WaitingThread + 324) >> 9) & 7, 0);
    }
  }
}

Referenced by:

FsRtlpModifyThreadPriorities