Перебирается массив серийников. Путём нехитрых битовых операций сравниваются производные от URL и от последних двух частей в серийнике. Если совпадают, в массив
Core::$url дописывается ключ "key" со значением подошедшего ключа.
Разобрать длинную строку удобнее, разбив конструкцию:
$d = array('test-site', 'ru');
$e = array('ST-214E2210-33FE865E-EC05E9A3', 'ST-204C2010-3DEFEFBE-C30E1243', 'ST-214E4000-3D4F3356-E2BCEEBB');
do {
$b = implode('.', $d); // склеили, получили "test_site.ru"
foreach ($e as $sKey){ // перебираем ключи
$a = explode('-', $sKey) + array(0, 0, 0, 0); // разбили по дефису в массив,
// убедились, что в массиве как минимум 4 элемента (если меньше, допис. нулями)
!( // логическое отрицание того, что в скобках
Core::convert64b32( // из 64 бит в 32
Core::convert64b32(
hexdec($a[3]) // последний фрагмент ключа перевели из 16-ричного в 10-е число
)
^ // ксор, побитовое исключающее ИЛИ
abs(Core::crc32($b)) // 32-битное число, хэш из адреса сайта
)
^ // XOR см. выше
~( // побитовое отрицание
Core::convert64b32(
Core_Array::get( // тут из конфига получают значение "hostcms"
Core::$config->get('core_hostcms'),
'hostcms'
)
)
& // побитовое И
abs(Core::crc32($b))
^
Core::convert64b32(
hexdec($a[2]) // предпоследний фрагмент из ключа, как число
)
)
)
&& // только если выше в скобках получился 0, выполнится следующая строка
Core::$url['key'] = $sKey;
}
array_shift($d);
} while(count($d) > 1);
$a = explode('-', $sKey) + array(0, 0, 0, 0);