On the practical performance of hyperelliptic curve cryptosystems in software implementation