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