KdpSanitizeContextFlags
VOID __fastcall KdpSanitizeContextFlags(_CONTEXT *Context, UINT64 ContextLength, UINT64 *ContextFlags){
unsigned int v3;
struct _KPRCB *CurrentPrcb;
int v6;
int v7;
int P1Home;
int v9;
int P2Home;
int v11;
int P3Home;
int v13;
v3 = Context->ContextFlags;
CurrentPrcb = KeGetCurrentPrcb();
v6 = v3 & 0x10001F;
v7 = ContextLength;
*(_DWORD *)ContextFlags = v3 & 0x10001F;
if( (v3 & *((_DWORD *)CurrentPrcb + 8562) & 0x100040) == 1048640 )
{
P1Home = Context[1].P1Home;
if( P1Home >= -24 )
{
v9 = P1Home + HIDWORD(Context[1].P1Home);
if( v9 <= v7 - 48 && P1Home <= v9 )
{
P2Home = Context[1].P2Home;
if( P1Home <= P2Home )
{
v11 = P2Home + HIDWORD(Context[1].P2Home);
if( v11 <= v9 && P2Home <= v11 )
{
P3Home = Context[1].P3Home;
if( P1Home <= P3Home )
{
v13 = P3Home + HIDWORD(Context[1].P3Home);
if( v13 <= v9 && P3Home <= v13 )
*(_DWORD *)ContextFlags = v6 | 0x100040;
}
}
}
}
}
}
}Referenced by:
KdpSetContext
KdpSetContextEx