HaliLocateHiberRanges

VOID __stdcall HaliLocateHiberRanges(PVOID MemoryMap){
  unsigned int ActiveProcessorCount; 
  __int64 v3; 
  __int64 v4; 
  unsigned int i; 
  unsigned __int64 v6; 
  VOID *v7; 
  UINT64 Tag; 
  UINT64 Taga; 
  UINT64 Tagc; 
  UINT64 Tagb; 

  if( MemoryMap )
  {
    if( MasterAdapter.MapBufferSize )
    {
      LODWORD(Tag) = 1835819368;
      PoSetHiberRange(
        MemoryMap,
        0xC000ui64,
        (VOID *)((unsigned __int64)MasterAdapter.MapBufferPhysicalAddress.anonymous_0.LowPart >> 12),
        (unsigned __int64)MasterAdapter.MapBufferSize >> 12,
        Tag);
    }
    if( stru_140C4BA20.MapBufferSize )
    {
      LODWORD(Tag) = 1835819368;
      PoSetHiberRange(
        MemoryMap,
        0xC000ui64,
        (VOID *)((unsigned __int64)stru_140C4BA20.MapBufferPhysicalAddress.anonymous_0.LowPart >> 12),
        (unsigned __int64)stru_140C4BA20.MapBufferSize >> 12,
        Tag);
    }
    if( stru_140C4B940.MapBufferSize )
    {
      LODWORD(Tag) = 1835819368;
      PoSetHiberRange(
        MemoryMap,
        0xC000ui64,
        (VOID *)(stru_140C4B940.MapBufferPhysicalAddress.QuadPart >> 12),
        (unsigned __int64)stru_140C4B940.MapBufferSize >> 12,
        Tag);
    }
    if( stru_140C4BB00.MapBufferSize )
    {
      LODWORD(Tag) = 1835819368;
      PoSetHiberRange(
        MemoryMap,
        0xC000ui64,
        (VOID *)(stru_140C4BB00.MapBufferPhysicalAddress.QuadPart >> 12),
        (unsigned __int64)stru_140C4BB00.MapBufferSize >> 12,
        Tag);
    }
    HalpPciMarkHiberPhase(MemoryMap);
    HalpIommuMarkHiberPhase(MemoryMap);
    HalpExtEnvMarkHiberRegions(MemoryMap);
    HalpDmaMarkHiberAdapter();
  }
  else
  {
    HalpMmAllocCtxMarkHiberPhase(0i64);
    HalpDmaMarkHiberAdapter();
    HalpIommuMarkHiberPhase(0i64);
    HalpExtEnvMarkHiberRegions(0i64);
    ActiveProcessorCount = KeQueryActiveProcessorCountEx(0xFFFFu);
    if( ActiveProcessorCount )
    {
      v3 = 0i64;
      v4 = ActiveProcessorCount;
      do
      {
        LODWORD(Tag) = 1953259880;
        PoSetHiberRange(0i64, 0x10000ui64, *(VOID **)(v3 + *(&CmpDummyThreadEvent + 865)), 0x1000ui64, Tag);
        v3 += 8i64;
        --v4;
      }
      while( v4 );
    }
    LODWORD(Tag) = 1953259880;
    PoSetHiberRange(0i64, 0x10000ui64, HaliLocateHiberRanges, 0i64, Tag);
    for( i = 0; i < dword_140C49CA0; ++i )
    {
      v6 = qword_140C49C98 + ((unsigned __int64)i << 6);
      v7 = *(VOID **)(v6 + 48);
      if( v7 )
      {
        LODWORD(Taga) = 1164730696;
        PoSetHiberRange(0i64, 0x10000ui64, v7, *(unsigned int *)(v6 + 56), Taga);
      }
    }
    if( qword_140C50540 )
    {
      LODWORD(Taga) = 1953259880;
      PoSetHiberRange(0i64, 0x10000ui64, (VOID *)qword_140C50540, 0x3CCui64, Taga);
    }
    if( qword_140C50530 )
    {
      LODWORD(Taga) = 1953259880;
      PoSetHiberRange(0i64, 0x10000ui64, (VOID *)qword_140C50530, 0x3CCui64, Taga);
    }
    PshedMarkHiberPhase();
    LODWORD(Taga) = 1668047208;
    PoSetHiberRange(0i64, 0x10000ui64, *(VOID **)(qword_140C507B0 + 8), 0i64, Taga);
    (*(void(**)(void))(qword_140C507B0 + 32))();
    LODWORD(Tagc) = 1668047208;
    PoSetHiberRange(0i64, 0x10000ui64, off_140C007C0, 0i64, Tagc);
    off_140C00800[0]();
    if( *(&CmpDummyThreadEvent + 862) )
    {
      LODWORD(Tagb) = 1668047208;
      PoSetHiberRange(0i64, 0x10000ui64, *(&CmpDummyThreadEvent + 862), 0i64, Tagb);
    }
    if( *(&CmpDummyThreadEvent + 861) )
    {
      LODWORD(Tagb) = 1668047208;
      PoSetHiberRange(0i64, 0x10000ui64, *(&CmpDummyThreadEvent + 861), *(&CmpDummyThreadEvent + 1726), Tagb);
    }
    HalpTimerMarkHiberPhase(0i64);
    *(&stru_140CF2E80 + 7376) = byte_140C4A328;
    if( byte_140C4A328 )
      byte_140C4A328 = 0;
  }
}

Referenced by:

No references.