MiDeletePagefile

void __fastcall MiDeletePagefile(PVOID P, int a2){
  __int64 i; 
  void *v5; 
  struct _PRIVILEGE_SET *v6; 
  UINT64 *v7; 
  __int16 v8; 
  void *v9; 
  struct _DMA_ADAPTER *v10; 
  void *v11; 
  void *v12; 
  for( i = 0i64; (unsigned int)i < *((_DWORD *)P + 18); i = (unsigned int)(i + 1) )
    MiFreeModWriterEntry(*(_MMMOD_WRITER_MDL_ENTRY **)(*((_QWORD *)P + 8) + 8 * i), 0i64);
  v5 = (void *)*((_QWORD *)P + 8);
  if( v5 )
    ExFreePoolWithTag(v5, 0);
  v6 = (struct _PRIVILEGE_SET *)*((_QWORD *)P + 14);
  if( v6 )
    CmSiFreeMemory(v6);
  v7 = (UINT64 *)*((_QWORD *)P + 27);
  if( v7 )
    MiReleasePageHash(v7, *((unsigned int *)P + 2));
  MiFreePageFileHashPfns(*((_MI_PARTITION **)P + 31));
  v8 = *((_WORD *)P + 102);
  if( (v8 & 0x100) != 0 )
  {
    MiUpdatePageFileList((__int64)P, 0);
    v8 = *((_WORD *)P + 102);
  }
  if( (v8 & 0x200) != 0 )
    PiPagePathSetState(*((FILE_OBJECT **)P + 7), 0);
  v9 = (void *)*((_QWORD *)P + 28);
  if( v9 )
    ObCloseHandle(v9, 0);
  v10 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 7);
  if( v10 )
    HalPutDmaAdapter(v10);
  v11 = (void *)*((_QWORD *)P + 13);
  if( v11 )
    ExFreePoolWithTag(v11, 0);
  v12 = (void *)*((_QWORD *)P + 24);
  if( v12 )
    ExFreePoolWithTag(v12, 0);
  if( a2 )
    ExFreePoolWithTag(P, 0);
}

Referenced by:

MiCreatePagingFile
MiDeletePagingFiles
MmStoreRegister