PspDeleteUserStack
VOID __fastcall PspDeleteUserStack(_EPROCESS *a1, INT64 a2, _QWORD *a3, CHAR *a4){
CHAR v6;
void *v7;
ULONG_PTR v8;
ULONG_PTR v9;
INT64 v10;
ULONG_PTR RegionSize;
PVOID BaseAddress;
_KAPC_STATE ApcState;
memset(&ApcState, 0, sizeof(ApcState));
KiStackAttachProcess((_KPROCESS *)a1, 0i64, &ApcState);
v6 = *a4;
if( (*a4 & 2) != 0 )
{
v7 = (void *)a3[4];
RegionSize = 0i64;
BaseAddress = v7;
ZwFreeVirtualMemory((PVOID)0xFFFFFFFFFFFFFFFFi64, &BaseAddress, &RegionSize, 0x8000ui64);
v6 = *a4;
}
if( (v6 & 4) != 0 )
{
v8 = a3[7];
BaseAddress = 0i64;
RegionSize = v8;
ZwFreeVirtualMemory((PVOID)0xFFFFFFFFFFFFFFFFi64, (PVOID *)&RegionSize, (UINT64 *)&BaseAddress, 0x8000ui64);
v6 = *a4;
}
if( (v6 & 8) != 0 )
{
v9 = a3[8];
BaseAddress = 0i64;
LODWORD(v10) = 0x40000000;
RegionSize = v9;
MmFreeVirtualMemory(-1i64, &RegionSize, (INT64 *)&BaseAddress, 0x8000i64, 0, v10);
}
KiUnstackDetachProcess(&ApcState, 0i64);
}Referenced by:
PspAllocateThread
PspInsertThread