RtlCalculateUserShadowStackSizes
NTSTATUS __fastcall RtlCalculateUserShadowStackSizes(INT64 a1, UINT64 *a2){
UINT64 v3;
NTSTATUS result;
UINT64 v6;
__int64 v7;
ULONGLONG *v8;
UINT64 v9;
ULONGLONG v10;
ULONGLONG pullResult;
ULONGLONG v12;
v12 = 0i64;
v3 = *(_QWORD *)(a1 + 16);
pullResult = 0i64;
result = RtlULongLongSub(v3, *(_QWORD *)(a1 + 32), &pullResult);
if( result >= 0 )
{
result = RtlULongLongSub(v6, *(_QWORD *)(v7 + 24), &v12);
if( result >= 0 )
{
v9 = pullResult;
if( pullResult < 0x1000 || (pullResult & 0xFFF) != 0 || v12 < 0x1000 || (v12 & 0xFFF) != 0 || v12 > pullResult )
{
return -1073741811;
}
else
{
v10 = (v12 / 5 + 4095) & 0xFFFFFFFFFFFFF000ui64;
*v8 = v10;
if( v9 < v10 + 0x2000 )
v9 = v10 + 0x2000;
*a2 = v9;
}
}
}
return result;
}Referenced by:
PspSetupUserShadowStack