I'm reverse engineering an application which commonly adds 4.294967296e9
to a double if the number is negative. Part of the disassembly:
mov eax, label_to_memory
fild label_to_memory
test eax, eax
jge short some_label
fadd ds:some_double_value
some_label:
If I'm correct, it takes the jump if the highest bit isn't set, i.e. its a positive number. some_double_value
points to the constant 4.294967296e9
.
To understand what the piece of code is doing I need to know why it adds this specific number, the only piece of Information I found was a line of code in http://web.mit.edu/~mkgray/afs/bar/afs/net/project/attic/quipu/isode-8.0/others/ntp/ntpsubs.c which says
#ifdef VAX_COMPILER_FLT_BUG
if (b < 0.0) b += 4.294967296e9;
#endif
So, what is the significance of that number?
Additional Info: The number can not be negative, so this can actually never happen.