KeRaiseUserException

UINT8 __stdcall KeRaiseUserException(KSPIN_LOCK_QUEUE_NUMBER Number){
  int v1; 
  _ETHREAD *CurrentThread; 
  unsigned __int8 CurrentIrql; 
  unsigned __int8 v4; 
  KTRAP_FRAME *v5; 
  v1 = Number;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  CurrentIrql = KeGetCurrentIrql();
  v4 = 1;
  if( !CurrentIrql )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(1ui64);
  }
  v5 = (KTRAP_FRAME *)*((_QWORD *)CurrentThread + 18);
  if( v5 )
  {
    if( (v5->SegCs & 1) != 0 )
    {
      *(_DWORD *)(*((_QWORD *)CurrentThread + 30) + 704i64) = v1;
      v5->SegCs = 51;
      v5->Rip = KeRaiseUserExceptionDispatcher;
      if( v5->ExceptionActive != 2 )
        KiSetupForInstrumentationReturn(v5, (UINT64)CurrentThread);
    }
  }
  if( CurrentIrql < v4 )
    __writecr8(CurrentIrql);
  return v1;
}

Referenced by:

ExHandleLogBadReference
NtClose
ObCloseHandleTableEntry
ObpCloseHandle
PspInsertThread