Rating:

Each output value in the hash function (before hex & stringifying) corresponds to the sum of the number of trailing bits we guessed correctly for each key value k1 and k2.

Use the first attempt to narrow down the lower 4 bits of both keys, and user the second attempt for the other half. Since I didn't want to bother figuring out the exact values by hand, I precomputed all the possible values for the first attempt for a `[]byte{0, 1, ...15}` input. For the second attempt, use the matching values from the precomputed table.

Original writeup (https://www.nevi.dev/2022/03/14/writeup-utctf-2022/#failed-hash-function-cryptography).