3

I've searched over the net, and everywhere it says: FILD converts the two's complement of an integer to 80 bit extended precision float, and puts it on top of the floats stack. So, I've had a program do that, but the result I get is unexpected.

Example: I have the number 0xFF20A810 in memory (let's say in 0x40000000) fild [0x40000000] fstp [0x40010000]

The result I get is 0x41EFE41502000000. How is the number converted? I'm in the middle of a crackme which uses this, and I just can't find a solution.

Thank you

mskfisher
  • 3,291
  • 4
  • 35
  • 48
user1291797
  • 31
  • 1
  • 2

1 Answers1

3

0x41EFE41502000000 is 4280330256.0 in double precision. 0xFF20A810 is 4280330256 as an unsigned integer.

So you accidentally loaded it, I think, as qword, and got lucky (the other bytes were zero).

harold
  • 61,398
  • 6
  • 86
  • 164