ExSaFree

VOID __stdcall ExSaFree(VOID *Handle){
  unsigned int v1; 
  _EXP_SA_HANDLE v2; 
  __int64 v3; 
  __int64 v4; 
  unsigned int v5; 
  _ETHREAD *CurrentThread; 
  __int64 v7; 
  __int64 v8; 

  v2 = (int)Handle;
  v3 = v1;
  v4 = ((unsigned int)Handle >> 13) & 0x3FFFF;
  _BitScanReverse(&v5, v4);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v7 = *(_QWORD *)(*(_QWORD *)(*(&WheapDeferredInternalLogsEventLock + 51) + 8i64 * (v5 - 2))
                 + 8 * (v4 ^ (unsigned int)(1 << v5))
                 + 8);
  v8 = *(_QWORD *)(v7 + 16);
  --CurrentThread->Tcb.SpecialApcDisable;
  ExpSaAllocatorFree(v8, (_EX_SA_PAGE_GROUP_DESCRIPTOR *)v7, v2, (unsigned __int64)(v3 + 7) >> 3);
  KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
}

Referenced by:

ExCleanupAutoExpandPushLock