HvlpMarkHvlPagesForHibernation

VOID __stdcall HvlpMarkHvlPagesForHibernation(){
  UINT64 v0; 
  VOID(__stdcall *v1)(CHAR, _BYTE *); 
  unsigned int v2; 
  unsigned int ActiveProcessorCount; 
  _KPRCB *Prcb; 
  UINT64 Tag; 
  UINT64 Tagb; 
  UINT64 Taga; 

  if( (HvlpFlags & 2) != 0 )
  {
    v0 = 0i64;
    v1 = HvlGetReferenceTimeUsingTscPage;
  }
  else
  {
    LODWORD(Tag) = 1684829768;
    PoSetHiberRange(0i64, 0x10000ui64, HvlpReferenceTscPage, 0x1000ui64, Tag);
    v1 = (VOID(__stdcall *)(CHAR, _BYTE *))HvlpHypercallCodeVa;
    v0 = 4096i64;
  }
  LODWORD(Tag) = 1668052552;
  PoSetHiberRange(0i64, 0x10000ui64, v1, v0, Tag);
  LODWORD(Tagb) = 1684829768;
  PoSetHiberRange(0i64, 0x10000ui64, &HvlpFlags, 0i64, Tagb);
  v2 = 0;
  ActiveProcessorCount = KeQueryActiveProcessorCountEx(0xFFFFu);
  if( ActiveProcessorCount )
  {
    do
    {
      Prcb = KeGetPrcb(v2);
      LODWORD(Taga) = 1684829768;
      PoSetHiberRange(0i64, 0x10000ui64, Prcb->HypercallCachedPages, 0x6000ui64, Taga);
      ++v2;
    }
    while( v2 < ActiveProcessorCount );
  }
}

Referenced by:

HvlMarkHiberPhase