So app start address is offset by 64K. Assuming that is plenty of room for bootloader but we should check. Also, have we checked that the first 64K of Flash memory is discreet sector-wise? We do not want bootloader and app sharing a sector.
I feel like this unit should not be calling a driver level function directly. There should be a layer in ROPump.c between the driver and high level units like DDInterface.