RtlpWriteExtendedContext

NTSTATUS __stdcall RtlpWriteExtendedContext(
        _CONTEXT_EX *Destination,
        _CONTEXT_EX *DestinationLayout,
        UINT64 ContextFlags,
        _CONTEXT_EX *Source){
  unsigned int v4; 
  NTSTATUS result; 
  __int64 ContextAlign[3]; 
  UINT64 v9; 
  _CONTEXT_EX *Sourcea; 

  v4 = (unsigned int)Source;
  LODWORD(v9) = 0;
  LODWORD(ContextAlign[0]) = 0;
  result = RtlpValidateContextFlags((unsigned int)Source, &v9);
  if( result >= 0 )
  {
    RtlpGetLegacyContextLength(v4, 0i64, (UINT64 *)ContextAlign);
    if( (v9 & 1) != 0 )
      ProbeForWrite(
        (UINT64)DestinationLayout + *(int *)(ContextFlags + 8),
        *(unsigned int *)(ContextFlags + 12),
        LODWORD(ContextAlign[0]));
    if( (v9 & 2) != 0 )
      ProbeForWrite(
        (UINT64)DestinationLayout + *(int *)(ContextFlags + 16),
        *(unsigned int *)(ContextFlags + 20),
        64i64);
    return RtlpCopyExtendedContext(1, DestinationLayout, (_CONTEXT_EX *)ContextFlags, v4, Sourcea, 0i64);
  }
  return result;
}

Referenced by:

PspGetContextThreadInternal
PspWow64GetContextThread