KeBoostPriorityThread

char __fastcall KeBoostPriorityThread(__int64 a1, int a2){
  __int64 *v2; 
  unsigned __int8 CurrentIrql; 
  struct _KPRCB *CurrentPrcb; 
  __int64 v7; 
  int v8; 
  int v9; 
  unsigned int v10; 
  UINT64 updated; 
  UINT64 v12; 
  ULONG_PTR v13; 
  __int64 v14; 
  __int64 v15; 
  _SINGLE_LIST_ENTRY ReadyList; 
  UINT64 SpinCount; 
  UINT64 v19; 
  int v20; 
  v2 = KiInitialProcess;
  if( *(__int64 **)(a1 + 544) != KiInitialProcess )
  {
    ReadyList.Next = 0i64;
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    CurrentPrcb = KeGetCurrentPrcb();
    LODWORD(SpinCount) = 0;
    v7 = *((_QWORD *)CurrentPrcb + 1);
    while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 64), 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *(_QWORD *)(a1 + 64) );
    }
    v8 = *(char *)(a1 + 195);
    v20 = v8;
    if( v8 < 16 && !*(_BYTE *)(a1 + 564) )
    {
      v9 = a2 + *(char *)(a1 + 563);
      if( v9 > v8 )
      {
        v10 = a2 + *(char *)(a1 + 563);
        if( v9 >= 16 )
          v10 = 15;
        if( a1 != v7 || *((_BYTE *)CurrentPrcb + 32) )
        {
          updated = *(_QWORD *)(a1 + 72);
        }
        else
        {
          _disable();
          updated = KiUpdateTotalCyclesCurrentThread((__int64)CurrentPrcb, a1, 0i64);
          _enable();
        }
        v12 = updated + KiCyclesPerClockQuantum * (unsigned int)*(unsigned __int8 *)(a1 + 651);
        if( (*(_DWORD *)(a1 + 120) & 0x20) != 0 )
          _interlockedbittestandreset((volatile signed __int32 *)(a1 + 120), 5u);
        *(_QWORD *)(a1 + 32) = v12;
        KiSetPriorityThread((_KTHREAD *)a1, &ReadyList, v10);
      }
    }
    KiReleaseThreadLockSafe(a1);
    LOBYTE(v2) = (unsigned __int8)KiReadyDeferredReadyList(CurrentPrcb, &ReadyList);
    if( CurrentIrql < 2u )
    {
      v13 = *((_QWORD *)CurrentPrcb + 1);
      if( *((_QWORD *)CurrentPrcb + 2) )
      {
        KiAbProcessContextSwitch(*((_KTHREAD **)CurrentPrcb + 1), 0i64);
        LODWORD(v19) = 0;
        while( _interlockedbittestandset64((volatile signed __int32 *)CurrentPrcb + 12, 0i64) )
        {
          do
            KeYieldProcessorEx(&v19);
          while( *((_QWORD *)CurrentPrcb + 6) );
        }
        v14 = *((_QWORD *)CurrentPrcb + 2);
        *((_QWORD *)CurrentPrcb + 2) = 0i64;
        _disable();
        KiEndThreadCycleAccumulation(CurrentPrcb, (_KTHREAD *)v13, 0i64);
        _enable();
        *((_QWORD *)CurrentPrcb + 1) = v14;
        if( *(_BYTE *)(v14 + 388) == 1 )
        {
          v15 = (unsigned int)(*(_DWORD *)(v14 + 132) - *(_DWORD *)(v14 + 436));
          *(_DWORD *)(v14 + 132) = v15 + KUSER_SHARED_DATA.TickCount.LowPart;
        }
        *(_BYTE *)(v14 + 388) = 2;
        *(_BYTE *)(v13 + 643) = 32;
        *(_BYTE *)(v13 + 390) = CurrentIrql;
        KiQueueReadyThread((__int64)CurrentPrcb, v13, v15);
        if( !KiSwapContext((PKTHREAD)v13, (PKTHREAD)v14) )
          goto LABEL_17;
      }
      else if( (*(_DWORD *)(v13 + 116) & 0x40) == 0 )
      {
LABEL_17:
        LOBYTE(v2) = CurrentIrql;
        __writecr8(CurrentIrql);
        return(char)v2;
      }
      __writecr8(1ui64);
      *(_DWORD *)(v13 + 116) &= ~0x40u;
      KiDeliverApc(0, 0i64, 0i64);
      goto LABEL_17;
    }
    if( *((_QWORD *)CurrentPrcb + 2) )
    {
      LOBYTE(v2) = *((_BYTE *)CurrentPrcb + 12586);
      if( !(_BYTE)v2 )
        LOBYTE(v2) = KiRequestSoftwareInterrupt(CurrentPrcb, 2);
    }
  }
  return(char)v2;
}

Referenced by:

ExpCreateWorkerThread
NtSetInformationProcess