PspDisablePrimaryTokenExchange

VOID __stdcall PspDisablePrimaryTokenExchange(_ETHREAD *CurrentThread){
  _EPROCESS *Process; 
  _ADAPTER_OBJECT *v2; 
  _BOOL8 v3; 
  _BOOL4 v4; 
  signed __int32 v5[10]; 

  Process = CurrentThread->Tcb.ApcState.Process;
  if( (Process->Flags2 & 0x8000) == 0 )
  {
    _interlockedbittestandset((volatile signed __int32 *)&Process->1120, 0xFu);
    PspLockUnlockProcessExclusive(Process, CurrentThread);
  }
  if( (Process->Flags3 & 0x400000) == 0 )
  {
    v2 = (_ADAPTER_OBJECT *)PsReferencePrimaryToken(Process);
    v3 = SeTokenIsAdmin(v2) != 0;
    HalPutDmaAdapter(v2);
    if( (*(_BYTE *)&Process->Pcb.SecureState & 1) != 0 )
      LODWORD(v3) = 1;
    v4 = 0;
    if( (Process->Flags3 & 0x800000) == 0 )
      v4 = v3;
    if( v4 )
    {
      Process->SecurityDomain = 0i64;
      Process->ParentSecurityDomain = 0i64;
    }
    if( !KeKvaShadowingActive() || (Process->Flags3 & 0x4000) != 0 )
    {
      _interlockedbittestandset((volatile signed __int32 *)&Process->2172, 0xEu);
    }
    else
    {
      if( v4 )
      {
        Process->Pcb.AddressPolicy = 1;
        _InterlockedOr(v5, 0);
      }
      KeSynchronizeAddressPolicy((INT64)Process);
      if( !_interlockedbittestandset((volatile signed __int32 *)&Process->2172, 0xEu)
        && Process->Pcb.AddressPolicy == 1
        && Process != PsInitialSystemProcess )
      {
        MiDeleteProcessShadow();
      }
    }
    if( !_interlockedbittestandset((volatile signed __int32 *)&Process->2172, 0x16u) )
      PspOneDirectionSecurityDomainCombine(Process);
  }
  _InterlockedOr(v5, 0);
}

Referenced by:

PspSystemThreadStartup
PspUserThreadStartup