MiInitializeSessionGlobals

NTSTATUS __stdcall MiInitializeSessionGlobals(){
  _ETHREAD *CurrentThread; 
  _EPROCESS *Process; 
  char v3; 
  _KSPIN_LOCK *v4; 
  _KSPIN_LOCK *v5; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  Process = CurrentThread->Tcb.Process;
  if( (CurrentThread->Tcb.ApcState.Process->Flags & 0x10000) != 0 )
    return -1073741791;
  if( MmIsSessionLeaderProcess(CurrentThread->Tcb.Process) )
    return 0;
  if( qword_140C4DB00 )
  {
    if( PsIsCurrentThreadInServerSilo() )
    {
      --CurrentThread->Tcb.SpecialApcDisable;
      ExAcquirePushLockExclusiveEx(&Lock, 0i64);
      if( !PsGetCurrentServerSiloGlobals(v4)->MiSessionLeaderProcess )
      {
        PsGetCurrentServerSiloGlobals(v5)->MiSessionLeaderProcess = Process;
        ObfReferenceObject(Process);
      }
      if( (_InterlockedExchangeAdd64(&Lock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
        ExfTryToWakePushLock(&Lock);
      KeAbPostRelease(&Lock);
      KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
    }
    if( MmIsSessionLeaderProcess(Process) )
      return 0;
  }
  else
  {
    --CurrentThread->Tcb.SpecialApcDisable;
    ExAcquirePushLockExclusiveEx(&Lock, 0i64);
    if( !qword_140C4DB00 )
    {
      qword_140C4DB00 = (__int64)Process;
      qword_140C4CAD0 = (VOID *)(qword_140C4DB20 + 20480);
      BitmapStart = (VOID *)(qword_140C4DB20 + 28672);
      qword_140C4DB10 = qword_140C4DB20 + 576;
      PsGetServerSiloGlobals(0i64)->MiSessionLeaderProcess = Process;
      v3 = _InterlockedExchangeAdd64(&Lock._bf_0, 0xFFFFFFFFFFFFFFFFui64);
      if( (v3 & 2) != 0 && (v3 & 4) == 0 )
        ExfTryToWakePushLock(&Lock);
      KeAbPostRelease(&Lock);
      KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
      ObfReferenceObject(Process);
      return 0;
    }
    if( (_InterlockedExchangeAdd64(&Lock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock(&Lock);
    KeAbPostRelease(&Lock);
    KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
    if( (_EPROCESS *)qword_140C4DB00 == Process )
      return 0;
  }
  return -1073741796;
}

Referenced by:

MiSessionCreate