If you get truly 13B from end of 4kB chunk, the starting address will be not aligned => classic memcmp will be called.
If starting pointer is aligned and you know the whole 4kB chunk is readable, you may safely read 4bytes even if the last 3 are beyond the original buffer, you can't cross 4kB chunk boundary in any case.
Those gibberish data are masked out before comparison.
You should probably check the original routine and my suggestion firstly to get idea what's the problem with that last double word read from memory.
Yes. I believe you are correct.
(This is post-2008.1 stuff anyway, but it is nice to get ready