PspFreeStorage

INT64 __fastcall PspFreeStorage(INT64 a1){
  _QWORD *v2; 
  __int64 v3; 
  _QWORD *v4; 
  _QWORD *v5; 
  __int64 v6; 
  INT64 result; 
  v2 = (_QWORD *)(a1 + 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 **)(a1 + 512);
  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((PVOID)a1, 0x74537350u);
  return result;
}

Referenced by:

PspCreateSilo
PspJobDeleteStorageArrays