Es posible que esa segunda línea sea el contenido de alguno de los ficheros.
He de decir que no sé cómo funciona la siguiente instrucción por lo que doy por hecho que su funcionamiento es correcto:
hd_read(start_of_root, FAT32_FILES_PER_DIRECTORY * sizeof(struct DirectoryEntry), (uint8_t*)&drce[0]);
Tampoco sé si la salida que obtienes es a partir de los <printf()> y <kputs()> que se ven en la función o la obtienes mostrando después el contenido de <files_names_in_dir>.
Además la variable <aaa> la has declarado globalmente por lo que puede que estés modificando su valor en otro punto del programa o estés llamando más de una vez a esa función.
Y si de paso puedo conocer la estructura de directorios y ficheros con los que estás trabajando, es decir, su nombre. Y que compruebes que esa segunda salida no sea el contenido de alguno de los ficheros.
Lo siento pero es que hay demasiadas cosas que me estoy teniendo que imaginar...