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