Nah, the register isn't actually the problem. A register is able to hold values up to 0xFFFFFFFF. However, since the var you're storing the result in is only a halfword (up to 0xFFFF), the highest Fibonacci number it can hold is the 24th: 46368, because the next one would be 75025, or 0x12511...