public static function parseLabels(&$data, $orig = null)
{
$str = '';
while (mb_orig_strlen($data) > 0) {
$l = ord($data[0]);
if ($l >= 192) {
$pos = Binary::bytes2int(chr($l - 192) . mb_orig_substr($data, 1, 1));
$data = mb_orig_substr($data, 2);
$ref = mb_orig_substr($orig, $pos);
return $str . Binary::parseLabels($ref, $orig);
}
$p = mb_orig_substr($data, 1, $l);
$str .= $p . ($l !== 0 ? '.' : '');
$data = mb_orig_substr($data, $l + 1);
if ($l === 0) {
break;
}
}
return $str;
}