certo che c'entra con il tuo problema.
Come hai giustamente trovato in internet nel caso di restituzione di float il valore viene messo (se già non ci sta in seguito a calcoli precedenti) nel registro ST0 (vedi anche lui in OllyDbg), è facile fare una verifica, invece di tornare float nel main (che in teoria dovrebbe tornare int) crea una nuova funzione, chessò, "funz1" che prende un float e torna un float e fagli fare un'operazione stupida, chessò raddoppia il parametro che gli passi.
Poi nel main chiama la funzione passandogli 10.0 e somma al risultato un 20.0 (tanto per fare un esempio) e quindi carica sto programma in ollydbg e metti un breakpoint sul return di funz1 e runnalo.
Vedrai che appena sei al breakpoint in ST0 ci sarà 20 (ovvero il 10 che gli passi moltiplicato per 2) se poi steppi per tornare al main e guardi cosa fa step by step vedrai che userà delle istruzioni tipo FADD per aggiungere a ST0 il 20 che hai nel main, a dimostrazione che ST0 contiene proprio il valore tornato dalla funzione funz1