バイト配列を TBits に展開したいのですが、良いアルゴリズムはないでしょうか。

Procedure Bit(Bytes : Byte; Index : Integer;var bits:tbits);
var
i,o:Byte;
begin
for i := 0 to 7 do
begin
o := ((Bytes shr (7 - i)) shl 7);
bits[i + Index] := Boolean(o);
end;
end;

Procedure Main;
var i:integer;
begin
for i := 0 to (high(Bytedata) -1) do
bit(Bytedata[i],i * 8,bits);
end;

何度かの改良の後、こんな感じで回してるのですが、Athlon 1.4GHzのマシンでも、
600 KB のバイト配列を展開するのに、 100 ms ほどかかってしまいます。
もっとマシな方法を使ってる方いましたら、ご教授ください。