PspSetupUserFiberShadowStack
__int64 __fastcall PspSetupUserFiberShadowStack(UINT64 a1, UINT64 a2, unsigned int a3, _QWORD *a4){
int v4;
INT64 v5;
void *v6;
INT64 v8;
UINT64 v9;
INT64 v10[3];
v10[0] = 0i64;
v9 = 0i64;
v4 = PspReserveAndCommitUserShadowStack(a1, a2, a3, (INT64 *)&v9, v10);
if( v4 >= 0 )
{
v5 = v10[0] - 8;
__wrussq((void *)(v10[0] - 8), PspUserFiberStart);
v6 = (void *)(v10[0] - 16);
*a4 = v10[0] - 16;
__wrussq(v6, v5 & 0xFFFFFFFFFFFFFFFCui64 | 1);
v9 = 0i64;
}
if( v9 )
{
v10[0] = 0i64;
LODWORD(v8) = 0x40000000;
MmFreeVirtualMemory(-1i64, &v9, v10, 0x8000i64, 0, v8);
*a4 = 0i64;
}
return(unsigned int)v4;
}Referenced by:
NtSetInformationProcess