IoGetDumpHiberRanges
VOID __stdcall IoGetDumpHiberRanges(PVOID HiberContext, _DUMP_STACK_CONTEXT *DumpStack){
__int64 v2;
VOID *v4;
IMAGE_NT_HEADERS *v5;
__int64 ***v6;
__int64 **j;
__int64 *v8;
__int64 *i;
VOID **v10;
__int64 v11;
UINT64 v12;
UINT64 Tag;
if( !DumpStack )
return;
v2 = *((_QWORD *)DumpStack + 34);
if( !v2 )
return;
if( *((_BYTE *)DumpStack + 280) )
{
v8 = (__int64 *)(v2 + 40);
for( i = *(__int64 **)(v2 + 40); i != v8; i = (__int64 *)*i )
{
v10 = (VOID **)(i + 9);
v11 = 2i64;
do
{
if( *v10 )
{
LODWORD(Tag) = 1718968931;
PoSetHiberRange(0i64, 0x10000ui64, *v10, *((unsigned int *)i + 16), Tag);
}
++v10;
--v11;
}
while( v11 );
}
goto LABEL_7;
}
if( (unsigned int)(*(_DWORD *)v2 - 2) > 2 || (unsigned int)(*(_DWORD *)(v2 + 4) - 48) > 0x38 )
{
v4 = *(VOID **)(v2 + 24);
if( !v4 )
goto LABEL_7;
v12 = *(unsigned int *)(v2 + 40);
LABEL_24:
LODWORD(Tag) = 1718968931;
PoSetHiberRange(0i64, 0x10000ui64, v4, v12, Tag);
goto LABEL_7;
}
v4 = *(VOID **)(v2 + 16);
if( v4 )
{
v12 = *(unsigned int *)(v2 + 24);
goto LABEL_24;
}
LABEL_7:
if( CrashdmpImageBase )
{
v5 = RtlImageNtHeader(CrashdmpImageBase);
LODWORD(Tag) = 1735215428;
PoSetHiberRange(0i64, 0x10000ui64, CrashdmpImageBase, v5->OptionalHeader.SizeOfImage, Tag);
}
v6 = (__int64 ***)((char *)DumpStack + 296);
for( j = *v6; j != (__int64 **)v6; j = (__int64 **)*j )
{
LODWORD(Tag) = 1735215428;
PoSetHiberRange(0i64, 0x10000ui64, j[3], *((unsigned int *)j + 8), Tag);
}
}Referenced by:
PopSaveHiberContext