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