function Mult(a, b: Word): LongInt;
var
i, size: Byte;
_result: Integer;
begin
_result := 0;
size := sizeof(a) * 8;
for i := 0 to pred(size) do begin
if Word(Word(b shl (pred(size) - i)) shr pred(size)) = 1 then
inc(_result, a);
a := a shl 1;
end;
Mult := _result;
end;
if Word(Word(b shl (pred(size) - i)) shr pred(size)) = 1 then. Но скорее всего от сложения _result-а тоже придется избавиться...
{ очень просто заменяется на }
if b and (word(1) shl i) = (word(1) shl i) then