You could break out  (result / 100) into a function __EstimateReadTime(int size);  as it's both here and in sceIoReadAsync.

That should probably be dependent on the type of device being read from too somehow, memstick and flash0 should be faster than UMD. And maybe should add a constant-ish seektime on UMD...