ExpWin32DeleteProcedure

VOID __stdcall ExpWin32DeleteProcedure(VOID *Object){
  unsigned __int64 v1; 
  _OBJECT_TYPE *v2; 
  _WIN32_CALLOUTS_OPERATION v3; 
  UINT64 SessionId; 
  VOID *Parameters; 

  LODWORD(SessionId) = *(_DWORD *)Object;
  v1 = (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8);
  Parameters = Object;
  v2 = (_OBJECT_TYPE *)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ v1];
  if( v2 == ExActivationObjectType )
  {
    v3 = Win32WerStartCallout|Win32DesktopOpenCallout;
    goto LABEL_6;
  }
  if( v2 == ExCoreMessagingObjectType )
  {
    v3 = Win32CoreMessagingObjectDeleteCallout;
    goto LABEL_6;
  }
  if( v2 == ExRawInputManagerObjectType )
  {
    v3 = Win32RawInputManagerObjectDeleteCallout;
    goto LABEL_6;
  }
  if( v2 == ExCompositionObjectType )
  {
    v3 = Win32CompositionObjectDeleteCallout;
LABEL_6:
    PsInvokeWin32Callout(v3, &Parameters, PsWin32SessionAttachSingle, &SessionId);
    return;
  }
  if( v2 == (_OBJECT_TYPE *)ExDesktopObjectType )
  {
    v3 = Win32DesktopDeleteCallout;
    goto LABEL_6;
  }
  if( v2 == ExWindowStationObjectType )
  {
    v3 = Win32WindowStationDeleteCallout;
    goto LABEL_6;
  }
}

Referenced by:

No references.