KiAbThreadBoostIoPriority

VOID __stdcall KiAbThreadBoostIoPriority(
        _ETHREAD *Thread,
        _SINGLE_LIST_ENTRY *BoostList,
        UINT64 IoQoSBoost,
        UINT64 *BoostOutstandingIOsRequired){
  int v6; 
  __int64 v8; 
  int v9; 
  int v10[10]; 

  v6 = IoQoSBoost;
  if( (_DWORD)IoQoSBoost )
  {
    PsBoostThreadIoQoS(Thread, 0i64);
    v8 = 864i64;
  }
  else
  {
    PsBoostThreadIoEx(Thread, 0, 0, 0i64);
    v8 = 860i64;
  }
  _InterlockedOr(v10, 0);
  if( *(_DWORD *)&Thread->Tcb.gap0[v8] )
    goto LABEL_11;
  if( !BoostList )
  {
    *(_DWORD *)BoostOutstandingIOsRequired |= (v6 != 0) + 1;
LABEL_11:
    _InterlockedAdd((volatile signed __int32 *)&Thread->Tcb.gap0[v8], 1u);
    return;
  }
  if( v6 )
    PsBoostThreadIoQoS(Thread, 1ui64);
  else
    PsBoostThreadIoEx(Thread, 1u, 0, 0i64);
  KiAbThreadInsertList(Thread, BoostList, &Thread->Tcb.IoSelfBoostsEntry);
  if( v9 )
    KiAbQueueAutoBoostDpc((_KPRCB *)&BoostList[-4334]);
}

Referenced by:

KiAbSetMinimumThreadPriority