Quindi, quella funzione "sporca" lo stack in maniera tale che anche la memoria dove è memorizzata la variabile i viene modificata tra una chiamata e l'altra.

Non ho ancora controllato il codice della bitfile_read ma è lì dentro il problema ...