After the function call, instead of a pop, the code just modifies the stack pointer, since the value that was pushed is not needed.

In the function, the argument A that was pushed is retrieved off of the stack. To access the stack indirectly, the X register is used, so it also needs to be preserved on the stack. It also looks like the function reserves one extra slot on the stack for a local variable.

At a glance everything looks OK. The generated code code probably be tighter.