IopGetMaxValidMemorySizeDown

UINT64 __stdcall IopGetMaxValidMemorySizeDown(VOID *Base){
  unsigned int v1; 
  unsigned __int64 v2; 
  int v4; 
  unsigned int v5; 

  v1 = 0;
  v2 = ((unsigned __int64)Base - 1) & 0xFFFFFFFFFFFFF000ui64;
  if( !v2 )
    return 0i64;
  v4 = 0;
  v5 = 256;
  do
  {
    if( !MmIsAddressValidEx(v2) )
      break;
    v1 += v4;
    if( !v2 )
      break;
    v2 -= 4096i64;
    v4 = 4096;
  }
  while( v1 < 0x100 );
  if( v1 < 0x100 )
    return v1;
  return v5;
}

Referenced by:

IopAddRunTimeTriageDataBlocks
IopMarkPagesForRunTimeTriageDataBlocks