Inverting Cryptographic Hash Functions via Cube-and-Conquer