uhmm forse possibile, però a me sembra più voler dire "il valore attualmente puntato da data" (e quindi 0x00 ci frega), se il compilatore fa qualcosa è davvero "sporco", imho
però
while (*data) {
byte extract = *data++;
a me SEMBRA errato, come sarabbe tradotto?
byte extract = *(data++);
non legge il primo byte e va in overflow di 1
byte extract = (*data)++;
prende il valore puntato e gli somma 1 (e in teoria va in loop infinito)