KiAbThreadInsertList

VOID __fastcall KiAbThreadInsertList(_ETHREAD *Thread, _SINGLE_LIST_ENTRY *ListHead, _SINGLE_LIST_ENTRY *ListEntry){
  int v3; 
  UINT64 SpinCount; 

  v3 = 0;
  LODWORD(SpinCount) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)&Thread->Tcb.ThreadLock, 0i64) )
  {
    do
      KeYieldProcessorEx(&SpinCount);
    while( Thread->Tcb.ThreadLock );
  }
  if( ListEntry->Next == (_SINGLE_LIST_ENTRY *)1 )
  {
    v3 = 1;
    ListEntry->Next = ListHead->Next;
    ListHead->Next = ListEntry;
  }
  KiReleaseThreadLockSafe((INT64)Thread);
  if( v3 )
    _InterlockedAdd16(&Thread->Tcb.KeReferenceCount, 1u);
}

Referenced by:

ExpAcquireResourceExclusiveLite
ExpAcquireResourceSharedLite
ExpApplyPriorityBoost
KeAbProcessBaseIoPriorityChangeInternal
KeAbProcessEffectiveIoPriorityChange
KiAbSetMinimumThreadPriority
KiAbThreadBoostIoPriority
PsBoostThreadIoEx