KeThawExecution

VOID __stdcall KeThawExecution(UINT8 Enable){
  char v2; 
  unsigned __int64 v3; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  v2 = 0;
  if( (KiFreezeFlag & 8) == 0 )
    v2 = KdPortLocked;
  ((void(__fastcall *)(_QWORD, _QWORD))off_140C00738[0])(0i64, 0i64);
  if( !PoAllProcIntrDisabled )
  {
    KUSER_SHARED_DATA.BaselineInterruptTimeQpc = KeQueryPerformanceCounter(0i64).QuadPart;
    KiInterruptTimeErrorAccumulator = 0i64;
  }
  KiSendThawExecution(1);
  v3 = (unsigned __int8)KiOldIrql;
  KiFreezeFlag = 0;
  KxReleaseSpinLock(&KiFreezeExecutionLock);
  if( v2 )
    KxReleaseSpinLock(&KdDebuggerLock);
  v4 = __readcr4();
  if( (v4 & 0x20080) != 0 )
  {
    __writecr4(v4 ^ 0x80);
    __writecr4(v4);
  }
  else
  {
    v5 = __readcr3();
    __writecr3(v5);
  }
  KiEndDebugAccumulation(KeGetCurrentPrcb());
  __writecr8(v3);
  if( Enable )
    _enable();
}

Referenced by:

ExpWaitForBootDevices
KdExitDebugger