Today was fairly easy.
The only major issue I ran into was that I forgot that r11 is not callee-saved (unlike r12-r15), which meant that every 4096 characters, a call to read_char might perform a syscall, which might change the value in r11, overriding the start of the first range.
This lead to the result being 2(!) too high.
