x64 REGVAR optimization causes odd compilation failure
## Summary
When compiling the sample project below for x86-64 with -O2, FPC 3.3.1 errors out with the message "Error: Asm: word value exceeds bounds 65536". The error message itself is confusing since it's not an ASM block, and it also doesn't occur when using '-O2 -OoNoRegVar', when compiling for arm64 on macOS, or when compiling with FPC 3.2.2.
Commenting out various lines of the function suppresses the error, and compiling with "-OoRegVar" without "-O2" also succeeds, so it seems to be an interaction between two parts of the optimizer.
## System Information
- **Operating system:** Linux Mint
- **Processor architecture:** x86-64
- **Compiler version:** trunk, updated through e4fc454 (Oct 9)
- **Device:** PC
## Steps to reproduce
Save the example project below as "main.pp" and using FPC 3.3.1, compile it using "fpc -O2 main.pp"
## Example Project
```
program main;
procedure Foo(i: UInt32);
var
w: Word;
begin
w := 0;
if i < $10000 then
w := word(i)
else if i < $20000 then
w := word(i - $10000)
else if i < $30000 then
w := word(i - $20000);
end;
begin
end.
```
## What is the current bug behavior?
Unexpected error message
## What is the expected (correct) behavior?
Compile the code correctly
issue