KiAcquireReleaseThreadLock

VOID __stdcall KiAcquireReleaseThreadLock(_ETHREAD *Thread){
  unsigned __int8 CurrentIrql; 
  int v3[14]; 
  UINT64 SpinCount; 
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  _InterlockedOr(v3, 0);
  if( *((_QWORD *)Thread + 8) )
  {
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)Thread + 16, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *((_QWORD *)Thread + 8) );
    }
    KiReleaseThreadLockSafe((INT64)Thread);
  }
  __writecr8(CurrentIrql);
}

Referenced by:

KeRundownApcQueues