function decode_string($instr)
{
    global $offsets;
    //echo "<P>DECODE <BR>";
    $orig = "";
    for ($i = 0; $i < strlen($instr); $i += 2) {
        //echo "<P>";
        $ch1 = substr($instr, $i, 1);
        $ch2 = substr($instr, $i + 1, 1);
        $val = hextoint($ch1) * 16 + hextoint($ch2);
        //echo "decoding \"" . $ch1 . $ch2 . "\" = $val <br>\n";
        $j = $i / 2 % count($offsets);
        //echo "Using offsets $j = " . $offsets[$j] . "<br>";
        $newval = $val - $offsets[$j] + 256;
        $newval %= 256;
        //echo " neval \"$newval\" <br>\n";
        $dec_ch = chr($newval);
        //echo " which is \"$dec_ch\" <br>\n";
        $orig .= $dec_ch;
    }
    return $orig;
}
function decode_string($instr)
{
    global $offsets;
    $cntOffsets = count($offsets);
    $orig = '';
    for ($i = 0, $cnt = strlen($instr); $i < $cnt; $i += 2) {
        $orig .= chr((hextoint(substr($instr, $i, 1)) * 16 + hextoint(substr($instr, $i + 1, 1)) - $offsets[$i / 2 % $cntOffsets] + 256) % 256);
    }
    return $orig;
}