MiDeleteNonPagedPoolTail

INT64 __fastcall MiDeleteNonPagedPoolTail(INT64 a1){
  __int64 v1; 
  char *v3; 
  UINT64 SpinCount; 
  v1 = *(_QWORD *)(a1 + 168);
  MiFlushTbList(v1);
  if( *(_DWORD *)(v1 + 208) )
  {
    v3 = (char *)MmGetPfnDb() + 48 * *(_QWORD *)(v1 + 216);
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)v3 + 6, 0x3Fui64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *((__int64 *)v3 + 3) < 0 );
    }
    MiReduceShareCount((UINT64)v3, *(unsigned int *)(v1 + 208));
    _InterlockedAnd64((volatile signed __int64 *)v3 + 3, 0x7FFFFFFFFFFFFFFFui64);
    *(_DWORD *)(v1 + 208) = 0;
  }
  return 0i64;
}

Referenced by:

MiClearNonPagedPtes