KiAbCrossThreadRelease

UINT8 __stdcall KiAbCrossThreadRelease(VOID *Lock, _KLOCK_ENTRY *Entry, _ETHREAD *Thread){
  _KLOCK_ENTRY_BOOST_BITMAP v6; 
  UINT8 result; 
  UINT64 a3; 

  KiAbEntryRemoveFromTree(Entry);
  v6.AllFields = (unsigned int)Entry->BoostBitmap;
  Entry->AcquiredByte &= ~1u;
  LODWORD(a3) = v6.AllFields & 0x1FFFF;
  Entry->BoostBitmap.AllFields = v6.AllFields & 0xFFFE0000;
  KiAbThreadRemoveBoosts(&Thread->Tcb, Lock, &a3);
  Entry->LockState.$E8276A2CF8B819ED32D1B6FEB35D730A::_bf_0 = 0i64;
  result = 1 << (Entry - Thread->Tcb.LockEntries);
  _InterlockedOr8((volatile signed __int8 *)&Thread->Tcb.AbOrphanedEntrySummary, result);
  return result;
}

Referenced by:

KeAbCrossThreadDelete
KeAbCrossThreadRelease