I think it injects code at branches to observe the branch coverage.
After all you have to compile your C programs with the afl-gcc binary.
Maybe you could ptrace every single instruction executed by the program and then stop
at every jump and use the relative values of the IP to identify branches...
I don't know if that would work, but it would be much slower.