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