while (read+STDIN,$_,2048){
  $a=29;
  $c=142;
  if((@a=unpack "C*",$_)[20]&48) {
    $h=5;
    $_=unpack b24,join"",
      @b=map { pack B8,unpack b8,chr($_^$a[--$h+84])}@ARGV;
    s/...$/1$&/;
    $d = unpack V,pack b25,$_;
    $b=73;
    $e=256|(ord$b[4])<<9|ord$b[3];
    for (@a[128..$#a]) {
      $d=$d>>8^($f=($t=255)&($d>>12^$d>>4^$d^$d/8))<<17;
      $e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9;
      $_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
      [$_]^(($h>>=8)+=$f+(~$g&$t));
    }
  }
  print pack "C*",@a
}
Next