HalpCheckLowMemoryPreSleep

VOID __stdcall HalpCheckLowMemoryPreSleep(INT64 a1){
  UINT64 v1; 
  UINT64 v2; 
  __int64 v3; 
  unsigned __int64 v4; 
  unsigned __int64 i; 
  INT64 v6; 
  _DOUBLE v7; 
  PVOID v8; 
  UINT64 LowLimit; 
  UINT64 HighLimit; 

  if( (a1 & 0x20000) != 0 )
  {
    HighLimit = 0i64;
    LowLimit = 0i64;
    RtlClearAllBits((PRTL_BITMAP)&CmpDummyThreadEvent + 366);
    IoGetStackLimits(&LowLimit, &HighLimit);
    v1 = LowLimit & 0xFFFFFFFFFFFFF000ui64;
    v2 = (HighLimit + 4095) & 0xFFFFFFFFFFFFF000ui64;
    while( v1 < v2 )
    {
      LODWORD(v3) = MmGetPhysicalAddress(v1);
      v4 = v3 >> 12;
      if( v4 < 0x100 )
        _bittestandset(*(&CmpDummyThreadEvent + 733), v4);
      v1 += 4096i64;
    }
    memset((char *)&CmpDummyThreadEvent + 5472, 0i64, 0x100u);
    for( i = 0i64; i < 0x100; ++i )
    {
      if( !_bittest(*(&CmpDummyThreadEvent + 735), i) && !_bittest(*(&CmpDummyThreadEvent + 733), i) )
      {
        v6 = HalpMapPhysicalMemory64((_LARGE_INTEGER)(i << 12), MmCached, 0, 4);
        if( v6 )
        {
          *((_BYTE *)&CmpDummyThreadEvent + i + 5472) = HalpSimpleCheck(v6, v7);
          HalpUnmapVirtualAddress(v8, 1i64, 0);
        }
      }
    }
  }
}

Referenced by:

HaliAcpiSleep