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