Eine wie auch immer geartete Assemblerlösung (mit einer Ausnahme) ist immer langsamer als eine simple LUT. Welche Ausnahme? Eine Assemblerimplementierung einer LUT.
Zu Deinem Problem der variablen Länge: Ich gehe davon aus, daß sich die Bitfolge immer glatt in Nibbles aufteilen läßt, dann brauchst Du eine kleine Tabelle mit 16 Einträgen, gegen Die Du die Nibbles laufen läßt, und vertauscht dann deren Reihenfolge. Das sollte zwei bis drei Kernkriterien der Softwareentwicklung erfüllen: Einfach, Lesbar, Wartbar.
Wenn Du immer glatt in Bytes aufteilen kannst, dann machst Du eine größere Tabelle (256 Einträge) und mußt weniger Folgenteile vertauschen.
Diskussion dazu zB hier:
https://stackoverflow.com/questions/...byte-in-delphi insbesondere in der akzeptierten Lösung von seiner Delphihaftigkeit David Heffernan.
Sherlock