RtlpCopyContext

NTSTATUS __stdcall RtlpCopyContext(_CONTEXT *Destination, _CONTEXT *Source){
  NTSTATUS result; 
  $C9F1C9CA47C010A40CE81AEC307C9F12 *v3; 

  if( Source == Destination )
  {
    result = Source->ContextFlags & 0x10004F;
    Destination->ContextFlags = result;
  }
  else
  {
    Destination->ContextFlags = 0;
    Destination->ContextFlags = Source->ContextFlags & 0x10000F;
    Destination->_Rip = Source->_Rip;
    Destination->_Rbx = Source->_Rbx;
    Destination->_Rsp = Source->_Rsp;
    Destination->_Rbp = Source->_Rbp;
    Destination->_Rsi = Source->_Rsi;
    Destination->_Rdi = Source->_Rdi;
    Destination->_R12 = Source->_R12;
    Destination->_R13 = Source->_R13;
    Destination->_R14 = Source->_R14;
    Destination->_R15 = Source->_R15;
    Destination->_Xmm6 = Source->_Xmm6;
    Destination->_Xmm7 = Source->_Xmm7;
    Destination->_Xmm8 = Source->_Xmm8;
    Destination->_Xmm9 = Source->_Xmm9;
    Destination->_Xmm10 = Source->_Xmm10;
    Destination->_Xmm11 = Source->_Xmm11;
    Destination->_Xmm12 = Source->_Xmm12;
    Destination->_Xmm13 = Source->_Xmm13;
    Destination->_Xmm14 = Source->_Xmm14;
    Destination->_Xmm15 = Source->_Xmm15;
    Destination->SegCs = Source->SegCs;
    Destination->SegSs = Source->SegSs;
    Destination->_MxCsr = Source->_MxCsr;
    Destination->EFlags = Source->EFlags;
    result = (_DWORD)Source + 256;
    v3 = &Destination->256;
    *(_OWORD *)&v3->FltSave.ControlWord = *(_OWORD *)&Source->FltSave.ControlWord;
    v3->Header[1] = Source->Header[1];
    v3->Legacy[0] = Source->Legacy[0];
    v3->Legacy[1] = Source->Legacy[1];
    v3->Legacy[2] = Source->Legacy[2];
    v3->Legacy[3] = Source->Legacy[3];
    v3->Legacy[4] = Source->Legacy[4];
    v3->Legacy[5] = Source->Legacy[5];
    v3->Legacy[6] = Source->Legacy[6];
    v3->Legacy[7] = Source->Legacy[7];
  }
  return result;
}

Referenced by:

RtlDispatchException
RtlUnwindEx