HalpPowerInitDiscard

NTSTATUS __stdcall HalpPowerInitDiscard(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  _LIST_ENTRY *p_MemoryDescriptorListHead; 
  _LIST_ENTRY *i; 
  unsigned __int64 Flink_low; 
  __int64 v5; 
  UINT32 Blink; 
  UINT32 Flink; 

  *(&CmpDummyThreadEvent + 1468) = 256;
  off_140C005A8[0] = (__int64(__fastcall *)())HaliLocateHiberRanges;
  *(&CmpDummyThreadEvent + 1464) = 256;
  off_140C005D8 = (void(__fastcall __noreturn *)())HaliHaltSystem;
  off_140C00838[0] = (__int64(__fastcall *)())HalpPowerEarlyRestore;
  off_140C008A8 = (__int64(__fastcall *)(int, int, int, int, UINT16, _TRANSLATOR_INTERFACE *, UINT64 *))HalpPowerSetRebootHandler;
  *(&CmpDummyThreadEvent + 735) = (char *)&CmpDummyThreadEvent + 5824;
  *(&CmpDummyThreadEvent + 733) = (char *)&CmpDummyThreadEvent + 5888;
  RtlSetAllBits((PRTL_BITMAP)&CmpDummyThreadEvent + 367);
  p_MemoryDescriptorListHead = &LoaderBlock->MemoryDescriptorListHead;
  for( i = p_MemoryDescriptorListHead->Flink; i != p_MemoryDescriptorListHead; i = i->Flink )
  {
    Flink_low = SLODWORD(i[1].Flink);
    if( (unsigned int)Flink_low <= 0x23 )
    {
      v5 = 0xBC0400048i64;
      if( _bittest64(&v5, Flink_low) )
        continue;
    }
    if( i[1].Blink < (_LIST_ENTRY *)0x100 )
    {
      Blink = (UINT32)i[1].Blink;
      Flink = 256 - Blink;
      if( (_LIST_ENTRY *)(256 - Blink) > i[2].Flink )
        Flink = (UINT32)i[2].Flink;
      RtlClearBits((PRTL_BITMAP)&CmpDummyThreadEvent + 367, Blink, Flink);
    }
  }
  HalpPowerInitNvsRegionData();
  return 0;
}

Referenced by:

HalpPowerInitSystem