Dump your nand after flashing it and compare it to the image that you used to write to the NAND (including any modifications such as injected KV/config/etc.).
In other words, compare what you've written to the NAND against what's supposed to be there. If you don't want to dump the whole NAND to verify that you're writing correctly, dump just a small segment by adding "1 30" to the end of your nandpro commands, like so:
nandpro lpt: -r16 small_NAND_dump.bin 1 30
the above command will use LPT as its device, and read 30 blocks starting at block 1 into a file called small_NAND_dump.bin.
If you go this route, you also need to dump the same segment of blocks from your xbr image. Once you've accounted for any differences from the stock xbr.bin (ie if you flashed KV separately, you need to inject the KV into the xbr image first), extract the same segment of blocks out of xbr.bin into a new file:
nandpro xbr.bin: -r16 small_xbr.bin 1 30
then use fc.exe as you've been doing to compare these two dumps.
If you get any differences, you're getting silent write errors, which is generally a symptom of a cable which is too long. Try to get it under 18 inches, preferably under 12. Then try reading a small chunk of your NAND to verify the cable still works, then flash.