The llo
macro returns the lower 16 bits of it's argument. I guess that is needs it to avoid overflow when using a negative number (or the compiler is lazy).
It looks like the code computes the location of some object in R15. It's hard to tell with only part of the code... Also, if R4 isn't use more in the function, this code could be optimized a lot.
The line add #llo(-14), r1
allocates space on the stack.
It would be interesting to see what other compilers do with code like this (gcc for the MSP430 isn't really state of the art).