support big files
make sure no arithmetic overflow on block sizes