KiRestoreDebugRegisterState

NTSTATUS __stdcall KiRestoreDebugRegisterState(){
  unsigned __int64 *v0; 
  unsigned __int64 v1; 
  unsigned __int64 v2; 
  unsigned __int64 v3; 
  unsigned __int64 v4; 
  int v5; 

  __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];
  LODWORD(v4) = 0;
  __writedr(6u, 0i64);
  __writedr(7u, v3);
  if( (__readgsbyte(0x8722u) & 2) != 0 && (v3 & 0x300) != 0 && (KiCpuTracingFlags & 2) == 0 )
  {
    if( (v3 & 0x200) != 0 )
      LODWORD(v4) = 2;
    if( (v3 & 0x100) != 0 )
      LODWORD(v4) = v4 | 1;
    v5 = v4;
    v4 = __readmsr(0x1D9u);
    LODWORD(v4) = v5 | v4 & 0xFFFFFFFC;
    __writemsr(0x1D9u, v4);
  }
  return v4;
}

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