SeCaptureAtomTableCallout

NTSTATUS __stdcall SeCaptureAtomTableCallout(){
  _QWORD *v0; 
  _QWORD *v1; 
  _EJOB *volatile Job; 
  UINT8 v4; 
  int v5; 
  int v6; 
  signed __int64 Parameters; 

  Parameters = 0i64;
  v4 = 0;
  v0 = PsReferenceEffectiveToken(
         (_ETHREAD *)KeGetCurrentThread(),
         (_TOKEN_TYPE *)&v6,
         &v4,
         (_SECURITY_IMPERSONATION_LEVEL *)&v5,
         0i64);
  v1 = v0;
  if( (v0[25] & 0x4000) != 0 && !*(_QWORD *)(v0[135] + 48i64) )
  {
    Job = KeGetCurrentThread()->ApcState.Process->Job;
    if( !Job || (*((_DWORD *)Job + 112) & 0x20) == 0 )
    {
      PsInvokeWin32Callout(Win32GlobalAtomTableCallout, &Parameters, PsWin32SessionAttachNone, 0i64);
      if( Parameters && !_InterlockedCompareExchange64((volatile signed __int64 *)(v1[135] + 48i64), Parameters, 0i64) )
        _InterlockedIncrement((volatile signed __int32 *)(Parameters + 4));
    }
  }
  return ObfDereferenceObjectWithTag(v1, 0x746C6644ui64);
}

Referenced by:

PsConvertToGuiThread