KiRestoreDebugRegisterState
INT64 __fastcall KiRestoreDebugRegisterState(){
unsigned __int64 *v0;
unsigned __int64 v1;
unsigned __int64 v2;
unsigned __int64 v3;
INT64 result;
int v5;
unsigned __int64 v6;
unsigned int v7;
__writedr(7u, 0i64);
v1 = v0[12];
__writedr(0, v0[11]);
__writedr(1u, v1);
v2 = v0[14];
__writedr(2u, v0[13]);
__writedr(3u, v2);
v3 = v0[16];
result = 0i64;
__writedr(6u, 0i64);
__writedr(7u, v3);
if( (__readgsbyte(0x8722u) & 2) != 0 && (v3 & 0x300) != 0 && (KiCpuTracingFlags & 2) == 0 )
{
if( (v3 & 0x200) != 0 )
LODWORD(result) = 2;
if( (v3 & 0x100) != 0 )
LODWORD(result) = result | 1;
v5 = result;
v6 = __readmsr(0x1D9u);
v7 = HIDWORD(v6);
result = v5 | (unsigned int)v6 & 0xFFFFFFFC;
__writemsr(0x1D9u, __PAIR64__(v7, result));
}
return result;
}Referenced by:
KiApcInterrupt
KiBoundFault
KiCallUserMode
KiControlProtectionFault
KiDpcInterrupt
KiExceptionDispatch
KiFastFailDispatch
KiInvalidOpcodeFault
KiIpiInterrupt
KiMcheckAbort
KiNmiInterruptStart
KiPageFault
KiRestoreSetContextState
KiSpuriousDispatchNoEOI
KiSwInterrupt
KiSystemCall64
KiUmsFastReturnToUser
KiVirtualizationException
KxIsrLinkage
KxMcheckAlternateReturn
KxStartUserThread
NtCallEnclave
NtContinueEx
NtRaiseException