以前こんなコードから少しパラメータの違うだけのを出題したけど解けなった

function  MyCipherStr(const s:String;decode:Boolean):string;
var i,n,m,siz,r:Integer;
const k='ひみつ';
begin
RandSeed:=(ord(k[3])*$10000+ord(k[1])*$100+ord(k[2]));
Result:='';
siz:=Length(s);
r:=random($FFFF);
if decode then siz:=siz div 2;
for i:=1 to siz do begin
if decode then n:= StrToInt('$'+copy(s,i*2-1,2))
      else n:= ord(s[i]);
 m:= ( n xor ord(k[1+(i mod Length(k))]) xor random(256)) xor (r and $FF);
if decode then r:=(r*331 + m) else r:=(r*331 +n) ;
if decode then Result:=Result+Char(m)
      else Result:=Result+IntToHex(m,2);
end;
end;