Solved it! It seems that an xor'd register at the start of a loop was treated as a 1. As a result, the open syscall saw a null terminator as the first character of the path and exited.
xor
open