I took a gander and it's fully able to shoot up and down, but it never actually runs a check to see if you're above/below it.
aha, right here:
:down_check_end
mov eax, PlayerXpos
cmp npc.x, eax
jl :player_is_left
mov npc.direction, 0
jmp :dir_air_end
:player_is_left
mov npc.direction, 2...