I have a function with the following header sub_45BD46@eax(char a1@bl, int a2@esi, int a3), my question is: I am right that sub_45BD46@eax means the result value is in eax?
Yes. If you have Hex Rays decompiler you can mouse over the decompiled version and will show RET is EAX.
Generally in most x86 calling conventions return values are in eax.
However need to be aware without debugging symbols available the automatically generated parameters and return value in IDA Pro in the sub name are not always correct.
Further details are available here
You are correct. The
__userpurge syntax is documented on Hex-Rays website.