rendered paste bodyfunction decompress2($in_data, $out_len)
{
$in_len = strlen($in_data);
$in_pos = 0;
$out_data = '';
do
{
$ctrl = ord($in_data[$in_pos++]);
if ($ctrl < 32)
{
$out_data .= substr($in_data, $in_pos, $ctrl + 1);
$in_pos += $ctrl + 1;
}
else
{
$len = $ctrl >> 5;
$reference = (strlen($out_data) - (($ctrl & 0x1f) << 8) - 1);
if ($len == 7)
{
$len += ord($in_data[$in_pos++]);
}
$reference -= ord($in_data[$in_pos++]);
/**
* For some reason, $reference can be equal to the last byte of the data.
* We can't replace these lines with substr($out_data, $reference, 2) because
* at the time it would be called, $out_data[$reference + 1] may not exist
*/
if (isset($out_data[$reference + $len + 2]))
{
$out_data .= substr($out_data, $reference, $len + 2);
$reference += $len + 2;
}
else
{
$out_data .= $out_data[$reference];
$out_data .= $out_data[$reference + 1];
$reference += 2;
do
{
$out_data .= $out_data[$reference++];
}
while (--$len);
}
}
if (isset($out_data[$out_len]))
{
die("WTF");
}
}
while ($in_pos < $in_len);
return $out_data;
}