RtlpCopyLegacyContext

VOID __fastcall RtlpCopyLegacyContext(CHAR Operation, _CONTEXT *Destination, UINT64 ContextFlags, _CONTEXT *Source){
  if( (ContextFlags & 0x10000) != 0 )
  {
    RtlpCopyLegacyContextX86(Operation, (_X86_NT5_CONTEXT *)Destination, ContextFlags, (_X86_NT5_CONTEXT *)Source);
  }
  else if( (ContextFlags & 0x100000) != 0 )
  {
    RtlpCopyLegacyContextAmd64(Operation, (_AMD64_CONTEXT *)Destination, ContextFlags, (_AMD64_CONTEXT *)Source);
  }
  else if( (ContextFlags & 0x200000) != 0 )
  {
    RtlpCopyLegacyContextArm(Operation, (__int64)Destination, ContextFlags, (__int64)Source);
  }
  else if( (ContextFlags & 0x400000) != 0 )
  {
    RtlpCopyLegacyContextArm64(Operation, (__int64)Destination, ContextFlags, (__int64)Source);
  }
}

Referenced by:

KeCopyContextFromUmsContext
KeCopyContextToUmsContext
KeUpdatePrimaryThreadContext
RtlCopyContext