SshpFreeBlockerEntry
NTSTATUS __stdcall SshpFreeBlockerEntry(PVOID P){
_QWORD *v1;
INT64 v3;
__int64 v4;
unsigned __int8 v5;
int v6;
bool v7;
unsigned __int64 v8;
void *v9;
v1 = (_QWORD *)*((_QWORD *)P + 36);
v3 = *((_QWORD *)P + 35);
v4 = v1[4];
if( v3 )
{
do
{
v5 = KeAcquireSpinLockRaiseToDpc((UINT64 *)v3);
v6 = *((_DWORD *)P + 3);
v7 = *(_DWORD *)(v3 + 12) == v6;
*(_DWORD *)(v3 + 12) -= v6;
v8 = v5;
if( v7 )
SshpSetBlockerActive(v3, 0);
KxReleaseSpinLock((UINT64 *)v3);
__writecr8(v8);
v3 = *(_QWORD *)(v3 + 280);
}
while( v3 );
v1 = (_QWORD *)*((_QWORD *)P + 36);
}
v9 = (void *)v1[11];
if( v9 )
ExFreePoolWithTag(v9, *(_DWORD *)(v4 + 24));
ExFreePoolWithTag(v1, *(_DWORD *)(v4 + 24));
return(unsigned int)ExFreePoolWithTag(P, *(_DWORD *)(v4 + 24));
}Referenced by:
SshpDereferenceBlocker