PspFreeStorage

VOID __fastcall PspFreeStorage(VOID *P){
  _QWORD *v2; 
  __int64 v3; 
  _QWORD *v4; 
  _QWORD *v5; 
  __int64 v6; 

  v2 = (char *)P + 8;
  v3 = 32i64;
  do
  {
    if( *v2 >= 2ui64 )
      NT_ASSERT(
        "(Storage->StorageArray[Index].Object == ((void *)0)) || (Storage->StorageArray[Index].Object == (PVOID)((ULONG_PTR)1))");
    v2 += 2;
    --v3;
  }
  while( v3 );
  v4 = (_QWORD *)*((_QWORD *)P + 64);
  if( v4 )
  {
    v5 = v4 + 1;
    v6 = 256i64;
    do
    {
      if( *v5 >= 2ui64 )
        NT_ASSERT(
          "(Storage->StorageExpansionArray[Index].Object == ((void *)0)) || (Storage->StorageExpansionArray[Index].Object"
          " == (PVOID)((ULONG_PTR)1))");
      v5 += 2;
      --v6;
    }
    while( v6 );
    ExFreePoolWithTag(v4, 0x78457350u);
  }
  ExFreePoolWithTag(P, 0x74537350u);
}

Referenced by:

PspCreateSilo
PspJobDeleteStorageArrays