MmMarkHiberPhase
VOID __stdcall MmMarkHiberPhase(){
__int64 v0;
UINT64 v1;
VOID *v2;
UINT64 v3;
MMPTE *v4;
void *v5;
UINT64 v6;
__int64 v7;
__int64 v8;
MMPTE *v9;
_QWORD **v10;
_QWORD *v11;
_QWORD *i;
_QWORD **v13;
VOID *v14;
_QWORD *v15;
_QWORD *v16;
UINT64 Tag;
UINT64 Tagc;
UINT64 Taga;
UINT64 Tagd;
UINT64 Tage;
UINT64 Tagb;
INT64 v23[2];
__int128 v24;
__int128 v25;
v24 = 0i64;
v25 = 0i64;
MiMarkKernelPageTablePages();
v23[1] = 0i64;
v23[0] = (INT64)MiGatherHiberRange;
v0 = 2i64;
MiGatherHiberRange((INT64)v23, (VOID *)(*((_QWORD *)PsInitialSystemProcess + 5) >> 12), 1i64, 2i64);
MiMarkNonPagedHiberPhasePages(
MmGetPfnDb(),
(_MMPTE *)((char *)MmGetPfnDb() + 48 * HighestPhysicalPage + 47),
(_MMPTE *)0x200,
v1);
LODWORD(Tag) = 1634168141;
PoSetHiberRange(0i64, 0x14000ui64, qword_140C4EB08, 1ui64, Tag);
LODWORD(Tagc) = 1651535181;
PoSetHiberRange(0i64, 0x10000ui64, *((VOID **)KeGetCurrentThread() + 23), 0xA40ui64, Tagc);
v2 = *(VOID **)(*((_QWORD *)KeGetCurrentThread() + 23) + 1928i64);
if( v2 )
{
LODWORD(Taga) = 1651535181;
PoSetHiberRange(0i64, 0x10000ui64, v2, 0x1000ui64, Taga);
}
if( MiIsRetpolineEnabled() )
{
LODWORD(Taga) = 1651535181;
PoSetHiberRange(
0i64,
0x10000ui64,
qword_140C4C9A0,
8 * (((unsigned __int64)qword_140C4C998 >> 6) + ((qword_140C4C998 & 0x3F) != 0)),
Taga);
LODWORD(Tagd) = 1651535181;
PoSetHiberRange(0i64, 0x10000ui64, Base, (unsigned int)(dword_140C4C9C8 << 12), Tagd);
}
MiMarkNonPagedHiberPhasePages(qword_140C4DF88, (_MMPTE *)((char *)qword_140C4DF88 + qword_140C4DF90 - 1), 0i64, v3);
LODWORD(Taga) = 1685286221;
PoSetHiberRange(0i64, 0x10000ui64, &KUSER_SHARED_DATA, 0x1000ui64, Taga);
LODWORD(Tage) = 1685286221;
PoSetHiberRange(0i64, 0x10000ui64, MmUnloadedDrivers, 0x7D0ui64, Tage);
v7 = 0i64;
v8 = 50i64;
do
{
v9 = *(MMPTE **)((char *)MmUnloadedDrivers + v7 + 8);
if( v9 )
{
LODWORD(Tagb) = 1685286221;
PoSetHiberRange(0i64, 0x10000ui64, v9, *(unsigned __int16 *)((char *)MmUnloadedDrivers + v7), Tagb);
}
v7 += 40i64;
--v8;
}
while( v8 );
v10 = (_QWORD **)&xmmword_140C4E988 + 1;
do
{
v11 = *v10;
i = 0i64;
while( v11 )
{
i = v11;
v11 = (_QWORD *)*v11;
}
while( i )
{
v13 = (_QWORD **)i[1];
v14 = i;
v15 = i;
if( v13 )
{
v16 = *v13;
for( i = (_QWORD *)i[1]; v16; v16 = (_QWORD *)*v16 )
i = v16;
}
else
{
while( 1 )
{
i = (_QWORD *)(i[2] & 0xFFFFFFFFFFFFFFFCui64);
if( !i || (_QWORD *)*i == v15 )
break;
v15 = i;
}
}
LODWORD(Tagb) = 1867083085;
PoSetHiberRange(0i64, 0x10000ui64, v14, 0x440ui64, Tagb);
}
++v10;
--v0;
}
while( v0 );
MiMarkHiberNotCachedPages(v5, v4, v9, v6);
}Referenced by:
PopMarkComponentsBootPhase