Never mind. Human error. The 2^32 boundary was just a coincidence.
I load a list with all the global IP ranges into memory, and the last third are ipv6 addresses instead of ipv4 ones. And they are rejected, because unexpected. Which takes much longer than accepting them, for some reason.
The debugger crashes at some point (cannot read register, cannot suspend thread), WriteLn is very slow and most editors complain the csv file is too big, so it took a while to find out.
Sorry to have bothered you all with it.
Btw, just to make sure, I'm going to increase the size of all data types I use to 64-bit by default.