PspHardDereferenceSiloWorker
VOID __stdcall PspHardDereferenceSiloWorker(_EJOB *Job){
signed __int64 v2;
bool v3;
signed __int64 v4;
if( !Job )
__int2c();
if( (*((_DWORD *)Job + 330) & 0x40000000) == 0 )
__int2c();
v2 = _InterlockedExchangeAdd64((volatile signed __int64 *)Job + 190, 0xFFFFFFFFFFFFFFFFui64);
v3 = v2 <= 1;
v4 = v2 - 1;
if( v3 )
{
if( v4 )
__fastfail(0xEu);
ObfReferenceObjectWithTag(Job, 0x746C6644ui64);
*((_QWORD *)Job + 191) = 0i64;
*((_QWORD *)Job + 193) = PspCompleteHardDereferenceSiloDeferred;
*((_QWORD *)Job + 194) = Job;
ExQueueWorkItem((PWORK_QUEUE_ITEM)((char *)Job + 1528), DelayedWorkQueue);
}
}Referenced by:
PsReleaseSiloHardReference
PspBeginSiloTeardown
PspEvaluateAndNotifyEmptyJob