Für die Berechnung von I ist scheint mir eine Funktion mit VAR-Parameter dem Orginal am ähnlichsten.
Delphi-Quellcode:
function CalcI(var i: Integer; k: Integer): Integer; inline;
begin
i := i xor k;
result := i;
end;
while k > CalcI(i, k) do
begin
k := k shr 1;
end;