PspIumFreePartitionPages
VOID __stdcall PspIumFreePartitionPages(INT64 a1, INT64 a2, UINT64 *a3){
__int64 v3;
__int64 v6;
unsigned __int64 v7;
__int64 v8;
unsigned int v9;
v3 = *(_QWORD *)(a1 + 160);
LODWORD(v6) = a2;
v7 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)(a1 + 88));
v8 = *(unsigned int *)(a1 + 156);
v9 = *(_DWORD *)(a1 + 152) - v8 - *(_DWORD *)(a1 + 4);
if( v9 > (unsigned int)v6 )
v9 = v6;
if( v9 )
{
v6 = (unsigned int)v6 - v9;
memmove((VOID *)(v3 + 8 * (v8 + 6)), &a3[v6], 8 * v9);
*(_DWORD *)(a1 + 156) += v9;
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(a1 + 88));
__writecr8(v7);
if( (_DWORD)v6 )
MmFreeNonChargedSecurePages(*(UINT64 ***)(a1 + 8), (unsigned int)v6, a3);
}Referenced by:
PspIumFreePhysicalPages