IoAcquireCancelSpinLock

VOID *__stdcall IoAcquireCancelSpinLock(PKIRQL Irql){
  unsigned __int8 CurrentIrql; 
  VOID *result; 
  void *ArbitraryUserPointer; 
  volatile __int64 *v5; 
  INT64 v6; 

  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  result = (VOID *)(unsigned int)KiIrqlFlags;
  ArbitraryUserPointer = KeGetPcr()->NtTib.ArbitraryUserPointer;
  v5 = (volatile __int64 *)*((_QWORD *)ArbitraryUserPointer + 15);
  v6 = (INT64)ArbitraryUserPointer + 112;
  if( _InterlockedExchange64(v5, v6) )
    KxWaitForLockOwnerShip(v6);
  *Irql = CurrentIrql;
  return result;
}

Referenced by:

FsRtlpRemoveAndCompleteRHIrp