KeMarkHiberPhase

VOID __stdcall KeMarkHiberPhase(_KPCR *Pcr){
  unsigned __int16 *FiberData; 
  char *StackBase; 
  __int64 *v3; 
  unsigned int i; 
  __int64 v5; 
  VOID *v6; 
  _QWORD **v7; 
  __int64 v8; 
  _QWORD *j; 
  unsigned int v10; 
  VOID *v11; 
  VOID *v12; 
  _QWORD *v13; 
  VOID *v14; 
  UINT64 v15; 
  _QWORD *k; 
  UINT64 Tag; 
  UINT64 Tage; 
  UINT64 Tagf; 
  UINT64 Tagg; 
  UINT64 Taga; 
  UINT64 Tagh; 
  UINT64 Tagi; 
  UINT64 Tagj; 
  UINT64 Tagb; 
  UINT64 Tagc; 
  UINT64 Tagk; 
  UINT64 Tagd; 

  FiberData = (unsigned __int16 *)Pcr->NtTib.FiberData;
  StackBase = (char *)Pcr->NtTib.StackBase;
  LODWORD(Tag) = 1668310347;
  if( *((_DWORD *)FiberData + 9) )
  {
    PoSetHiberRange(0i64, 0x10000ui64, Pcr, ((((_DWORD)KeNumberProcessors_0 << 6) + 51903) & 0xFFFFF000) + 28672, Tag);
  }
  else
  {
    PoSetHiberRange(0i64, 0x10000ui64, Pcr, 0xB080ui64, Tag);
    LODWORD(Tage) = 1668310347;
    PoSetHiberRange(0i64, 0x10000ui64, FiberData, 0xAF00ui64, Tage);
    LODWORD(Tagf) = 1668310347;
    PoSetHiberRange(0i64, 0x10000ui64, StackBase, 0x68ui64, Tagf);
    LODWORD(Tagg) = 1668310347;
    PoSetHiberRange(0i64, 0x10000ui64, &Size, 0i64, Tagg);
    v3 = (__int64 *)(StackBase + 36);
    for( i = 1; i <= 4; ++i )
    {
      v5 = *v3;
      if( i - 1 <= 3 )
      {
        if( KiKvaShadow )
        {
          LODWORD(Taga) = 1668310347;
          PoSetHiberRange(0i64, 0x10000ui64, (VOID *)(v5 - 464), 0x200ui64, Taga);
          v6 = (VOID *)(*(_QWORD *)(v5 + 8) - 24544i64);
        }
        else
        {
          v6 = (VOID *)(v5 - 24576);
        }
        LODWORD(Taga) = 1668310347;
        PoSetHiberRange(0i64, 0x10000ui64, v6, 0x6000ui64, Taga);
      }
      ++v3;
    }
  }
  LODWORD(Taga) = 1936745803;
  PoSetHiberRange(0i64, 0x10000ui64, *((VOID **)FiberData + 45), FiberData[179], Taga);
  LODWORD(Tagh) = 1936745803;
  PoSetHiberRange(0i64, 0x10000ui64, *((VOID **)FiberData + 43), FiberData[171], Tagh);
  LODWORD(Tagi) = 1953719627;
  PoSetHiberRange(
    0i64,
    0x10000ui64,
    (VOID *)(((*((_QWORD *)FiberData + 1570) + 4095i64) & 0xFFFFFFFFFFFFF000ui64) - (unsigned int)KeKernelStackSize),
    (unsigned int)KeKernelStackSize,
    Tagi);
  LODWORD(Tagj) = 1702061387;
  PoSetHiberRange(
    0i64,
    0x10000ui64,
    (VOID *)(((*((_QWORD *)FiberData + 4069) + 4095i64) & 0xFFFFFFFFFFFFF000ui64) - 24576),
    0x6000ui64,
    Tagj);
  v7 = (_QWORD **)(FiberData + 6240);
  v8 = 2i64;
  do
  {
    for( j = *v7; j; j = (_QWORD *)*j )
    {
      LODWORD(Tagb) = 1885627723;
      PoSetHiberRange(0i64, 0x10000ui64, j - 1, 0x40ui64, Tagb);
    }
    v7 += 5;
    --v8;
  }
  while( v8 );
  v10 = 1232;
  if( ((unsigned __int64)KeFeatureBits & 0x800000) != 0 )
    v10 = KeXStateLength + 807;
  LODWORD(Tagb) = 2020828491;
  PoSetHiberRange(0i64, 0x10000ui64, *((VOID **)FiberData + 4280), v10, Tagb);
  v11 = (VOID *)*((_QWORD *)FiberData + 216);
  if( v11 )
  {
    LODWORD(Tagc) = 1936942411;
    PoSetHiberRange(
      0i64,
      0x10000ui64,
      v11,
      KUSER_SHARED_DATA.XState.AllFeatureSize
    - (unsigned __int64)KUSER_SHARED_DATA.XState.Size
    + (unsigned int)KiIptSaveAreaLength
    + 64i64,
      Tagc);
  }
  v12 = (VOID *)*((_QWORD *)FiberData + 4096);
  if( v12 )
  {
    LODWORD(Tagc) = 1934189899;
    PoSetHiberRange(0i64, 0x10000ui64, v12, 0x428ui64, Tagc);
  }
  if( qword_140C2B138 )
  {
    LODWORD(Tagc) = 1920103501;
    PoSetHiberRange(0i64, 0x10000ui64, qword_140C2B138, 16 * (unsigned int)(unsigned __int8)qword_140C2B128, Tagc);
  }
  if( qword_140C2B140 )
  {
    LODWORD(Tagc) = 1920103501;
    PoSetHiberRange(0i64, 0x10000ui64, qword_140C2B140, 0x58ui64, Tagc);
  }
  v13 = (_QWORD *)*((_QWORD *)FiberData + 1);
  LODWORD(Tagc) = 1752458571;
  v14 = (VOID *)((v13[6] + 4095i64) & 0xFFFFFFFFFFFFF000ui64);
  v15 = v13[7] - (_QWORD)v14;
  PoSetHiberRange(0i64, 0x10000ui64, v13, 0x898ui64, Tagc);
  LODWORD(Tagk) = 1953719627;
  PoSetHiberRange(0i64, 0x10000ui64, v14, v15, Tagk);
  for( k = (_QWORD *)*(&KiSwapEvent + 46); k != (_QWORD *)((char *)&KiSwapEvent + 368); k = (_QWORD *)*k )
  {
    LODWORD(Tagd) = 1953719627;
    PoSetHiberRange(0i64, 0x10000ui64, k, 0x30ui64, Tagd);
  }
  LODWORD(Tagd) = 1886156869;
  PoSetHiberRange(0i64, 0x10000ui64, *(&ExBootDevicesRemovedEvent + 103), 0x1000ui64, Tagd);
}

Referenced by:

PopMarkComponentsBootPhase