The Watcom compiler uses a fairly unusual calling convention, and IDA seems to be discarding some of the changes as irrelevant to its built-in pseudo-code. In my experience, that usually means I'm doing something wrong, as opposed to IDA :)
For example, in the following function fragment, the changes to
edx are ignored in the pseudo-code.
; void __usercall RunScrIncDec(GeneralObject *object@<eax>, int *bufPtr@<edx>, int value@<ebx>) RunScrIncDec proc near cmp byte ptr [edx], 0Ah jnz short loc_164288 inc ebx inc edx retn ...
Note here that bufPtr and value are both incremented, and value is indeed passed by value, not by reference.
If I change the function's return type so that it's an int by replacing the
void return type with an
int and appending the value location
@<ebx>, then IDA includes
ebx one in the pseudo-code, but still ignores
Is there any way to tell IDA to pay attention to these changes?
ebx aren't merely spoiled by the function, and that they're notable changes that should be reversed to bufPtr++ and value++ rather than not showing any pseudo-code at all?
Or is this just something that IDA isn't built to handle?