When FDFD = 1, any valid flash read access sets the DFDIF flag. I guess the INT_SYS_EnableIRQ() function actually sets the flag when the function is in the flash, not the pointer. Please read the DFDIF flag in EmbSys_Register view while stepping through the code.
You can put the function before this line: FTFC->FERCNFG |= 0x20; //FDFD
Also, the i variable might be optimized out by the compiler.