KiAbThreadBoostIoPriority

VOID __fastcall KiAbThreadBoostIoPriority(
        _ETHREAD *Thread,
        _SINGLE_LIST_ENTRY *BoostList,
        UINT64 IoQoSBoost,
        UINT64 *BoostOutstandingIOsRequired){
  int v6; 
  __int64 v8; 
  int v9[10]; 
  v6 = IoQoSBoost;
  if( (_DWORD)IoQoSBoost )
  {
    PsBoostThreadIoQoS((__int64)Thread, 0);
    v8 = 864i64;
  }
  else
  {
    PsBoostThreadIoEx((__int64)Thread, 0, 0, 0i64);
    v8 = 860i64;
  }
  _InterlockedOr(v9, 0);
  if( *(_DWORD *)((char *)Thread + v8) )
    goto LABEL_11;
  if( !BoostList )
  {
    *(_DWORD *)BoostOutstandingIOsRequired |= (v6 != 0) + 1;
LABEL_11:
    _InterlockedAdd((volatile signed __int32 *)((char *)Thread + v8), 1u);
    return;
  }
  if( v6 )
    PsBoostThreadIoQoS((__int64)Thread, 1);
  else
    PsBoostThreadIoEx((__int64)Thread, 1, 0, 0i64);
  if( (unsigned int)KiAbThreadInsertList((_KTHREAD *)Thread, BoostList, (_SINGLE_LIST_ENTRY *)Thread + 102) )
    KiAbQueueAutoBoostDpc((_KPRCB *)&BoostList[-4334]);
}

Referenced by:

KiAbSetMinimumThreadPriority