\myheading{Now CBMC}

\renewcommand{\CURPATH}{CRC/CBMC}

Here I reimplement KLEE examples you already saw above.
All timings are when KLEE 3.0 running on AMD Ryzen 5 3600.

I'm not using \verb|klee_assume()| calls here, only standard \verb|assert()|'s.

\lstinputlisting[style=customc]{\CURPATH/CBMC_crc64_find.c}

\begin{lstlisting}[caption=Command to run]
% cbmc --trace --function main --z3 CBMC_crc64_find.c
\end{lstlisting}

\lstinputlisting{\CURPATH/CBMC_crc64_find.txt}

This result coincides with KLEE's result.

Now a string for CRC64(...)==0:

\lstinputlisting[style=customc]{\CURPATH/CBMC_crc64_find_2.c_part}

\lstinputlisting{\CURPATH/CBMC_crc64_find_2.txt}

Now a 16-byte string where each character is a nibble?
Or, in other word, 16-nibble hexadecimal string?
Or, in other words, 8-byte hexadecimal string?

\lstinputlisting[style=customc]{\CURPATH/CBMC_crc64_find_3.c_part}

\lstinputlisting{\CURPATH/CBMC_crc64_find_3.txt}

Yes, \verb|CRC64("8493a5648600c495")==0|, and this is very predictable:
we just need to find a 64-bit input for CRC64 so that it's output would be zero.
No magic here.

Again, CBMC can't find a string consisting only of \emph{0..9} characters, like KLEE.

\myhrule{}

Thanks to Martin Nyx Brain\footnote{\url{https://github.com/diffblue/cbmc/issues/5099}}, for help.
