In C sehe ich das wenig Möglichkeiten zur Optimierung. Mit inline ASM könnte man ggf. noch etwas machen, vor allem beim (temp>>4). Die Funktion könnte man mit dem eher selten genutzten ASM Befehl swap deutlich schneller hinbekommen. Es würde mich wundern wenn der Compiler das erkennt. Ob noch mehr inline ASM sinnvoll ist, könnte man ggf. am ASM Code erkennen den der Compiler produziert. Es ist schon möglich das da noch einige Optimierungen möglich sind, sowohl in C als auch in ASM. Ein Punkt könnte die Form des Array-Zugriffs sein. Da könnte es schneller gehen, wenn man nur ein 1 Dim Array nutzt, und dafür beim schreiben in den Puffer etwas umrechnet - das muss nicht länger dauern, denn der Compiler muss an sich auf umrechnen.

Der Code für die Ausgabe ist aber auch noch nicht so lang, da könnte ggf. sogar die ganze Schleife noch als inline ASM machen.