Your immediate problem seems to spring from lisButton hanging unless a particular switch is pressed. It thus cannot 'see' the other switch while the subroutine is hung up in a loop waiting for a different switch.
There are a few ways to approach this problem. One would be to write a subroutine that looks for either switch and returns a code that indicates which switch it saw. You can then test that code and act differently for the different switches. This is sort of the equivalent of kicking the can down the road- it solves the problem today, but if you need to do something else that isn't a switch the problem will arise again.
Another way is to think in terms of events. The switch being pressed is an event, the switch being released is an event. Events can be detected in an interrupt (typically a periodic timer interrupt) and false events like switch bounce and noise can be rejected. Verified real events can be put in a queue of sorts (minimum one event, but you could have a larger number in a FIFO) and the main program loops waiting for events and then responds to each event. This allows you to easily (and reliably) do things like create an event when a switch is held for more than 2 seconds, or the user does a double click.
The reason to have a queue rather than just a single location is that it allows your main program more time to deal with events that occur in fast succession, such as two key presses that are almost simultaneous. If you don't have a queue you might miss one of them.
I do agree with Olin's comments with regard to programming structure and style.
Unlike, say, Python, assembly code has little inherent structure so you have to be vigilant and impose visible structure and pepper it with useful comments so you don't get a heap of write-only spaghetti code. Using subroutines, as you did, is a start. Things like explaining the overall code structure and all I/O assignments in an exhaustive comment header at the top of the program are de rigeur. I recently revisited a fairly complex (mathematically and logically complex) assembly program I wrote more than 16 years ago- the chip is obsolescent so it has to be ported, and it turns out to a different architecture. The comments are very handy in such a situation.