I'm working on a binary that has a lot of FPU operations, and even though IDA (Hex rays) decompiles properly most of them, there's cases like this:

Blue indexes

Which "decompile" to:

Not so complete

Is there any way I can fix that?

I tried undefining the function (U) and then defining it again (C -> P), but sadly it doesn't work.

P.S. If I open the executable in another instance of IDA (without my IDB), it decompiles just fine:

Proper decompilation

  • 1
    Please, when you post screenshots, make sure they refer to the same code, and contain all relevant information. Your assembler listing doesn't seem to contain any float operations, while the first decompiled listing definitely has them, and the second listing has them as well (implicitly). But the two decompiled listings call different functions, so they seem to be from different parts of the object. And since the operands are missing from the assembly, we can't even match the assembly to either of the other two. So how should anybody figure out what's wrong from what you've given us? Dec 24, 2014 at 21:53
  • The blue zeroes? Aren't they similar to the next number (obviously, stack pointer depth); something like FPU stack pointer depth? Check somewhere where they are not 0. (Does IDA come with a manual?)
    – Jongware
    Dec 24, 2014 at 23:34
  • @GuntramBlohm sorry if it seemed like no, but it's the actual decompiler output. I cannot tell you why, but it's what the decompiler shows me when I press TAB. Jongware: yeah, I supposed it's the FPU stack, but it only appears now and then. I cannot make it always appear, and it only shows up when the decompilation has a lot of __asm and doesn't have to do with the actual disassembled code.
    – rev
    Dec 25, 2014 at 0:37
  • hex-rays.com/products/decompiler/manual/fpu.shtml explains it
    – Igor Skochinsky
    Jul 25, 2017 at 8:28


Browse other questions tagged or ask your own question.