pointer require indirect addressing mode.Array and record need index addressing modes.
When bar is done executing, it stores its return value in a register which foo knows to check for the return value. So register addressing mode is required.
Hence the answer is A,B,C,D