HvlDeleteProcessor

void __fastcall HvlDeleteProcessor(__int64 a1, SIZE_T a2, MEMORY_CACHING_TYPE a3){
  void *v4; 
  VOID *v5; 
  void *v6; 
  __int64 v7; 
  v7 = 0i64;
  v4 = *(void **)(a1 + 33672);
  if( v4 )
  {
    if( (struct _KPRCB *)a1 == KeGetCurrentPrcb() )
    {
      HvlpGetRegister64(589843, &v7);
      HvlpSetRegister64(589843, v7 & 0xFFFFFFFFFFFFFFFEui64);
      v4 = *(void **)(a1 + 33672);
    }
    if( (HvlpFlags & 2) != 0 )
      MmUnmapIoSpace(v4, 1ui64);
    else
      HvlpFreeOverlayPages(v4);
    *(_QWORD *)(a1 + 33672) = 0i64;
  }
  v5 = *(VOID **)(a1 + 33976);
  if( v5 )
    HvlpFreeOverlayPages(v5);
  v6 = *(void **)(a1 + 33664);
  if( v6 )
    MmFreeIndependentPages(v6, 0x5000ui64);
}

Referenced by:

KeStartAllProcessors
KiStartDynamicProcessor