SepDereferenceSidValuesBlock
VOID __fastcall SepDereferenceSidValuesBlock(
_SEP_SID_VALUES_BLOCK *SidValues,
_TOKEN *TokenForLogging,
_SEP_LOGON_SESSION_REFERENCES *LogonSessionForLogging){
signed __int64 v4;
bool v5;
bool v6;
bool v7;
signed __int64 v8;
if( SidValues )
{
v4 = _InterlockedExchangeAdd64(&SidValues->ReferenceCount, 0xFFFFFFFFFFFFFFFFui64);
v7 = __OFSUB__(v4, 1i64);
v5 = v4 == 1;
v6 = v4 - 1 < 0;
v8 = v4 - 1;
if( v6 ^ v7 | v5 )
{
if( v8 )
__fastfail(0xEu);
SepLogTokenSidManagement(5, (__int64)SidValues, 0i64, (__int64)TokenForLogging, (__int64)LogonSessionForLogging);
ExFreePoolWithTag(SidValues, 0);
}
}
}Referenced by:
SepDeleteLogonSessionSidValues
SepDeleteTokenUserAndGroups
SepSetTokenUserAndGroups