Your block 0 programming is incorrect. This is also the configuration block, so setting this incorrectly means the chip could brick due to misconfiguration.
Hex data is represented in pairs, so 40 at the end of the block 0 value is a single byte representing 16 bits. There is no way setting that byte value to 50 affected the 28th bit.
To try to recover at this point you’ll have to use some undocumented test mode commands.