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