ExReleaseAutoExpandPushLockExclusive
VOID __stdcall ExReleaseAutoExpandPushLockExclusive(ULONG_PTR Lock, ULONG_PTR Flags){
char v2;
_DWORD *v3;
int v4;
int v5;
v2 = Flags;
v3 = *(_DWORD **)&Lock;
if( (Flags & 0xFFFFFFFC) != 0 )
KeBugCheckEx(0x152u, (PVOID)Flags, *(PVOID *)&Lock, 0i64, 0i64);
v4 = *(_DWORD *)(*(_QWORD *)&Lock + 8i64);
if( (v4 & 1) != 0 )
{
ExpReleaseFannedOutPushLockExclusive((VOID *)(v4 & 0xFFFFFFF8));
}
else
{
v5 = *(_DWORD *)(*(_QWORD *)&Lock + 12i64);
if( (v5 & 0xF0000u) < 0xF0000 )
v3[3] = v5 + 0x10000;
}
ExReleasePushLockEx((ULONG_PTR)v3, 2u);
if( (v2 & 2) == 0 )
KeAbPostRelease(v3);
}Referenced by:
MiDeletePagablePteRange
MiFreePhysicalPageChain
MiFreePhysicalPages
MiUnlockAwePagesExclusive
MiUnlockAweVadsExclusive
MiUnlockLoaderEntry