Reverse Engineering Stack Exchange is a question and answer site for researchers and developers who explore the principles of a system through analysis of its structure, function, and operation. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Could you explain to me the information provided after the @ symbol in Hex-Rays decompilation ? For examples @1 and @5 in the following output:

struct WSAData wsadata; // [sp+0h] [bp-1A0h]@1
int v6; // [sp+198h] [bp-8h]@5
int v7; // [sp+19Ch] [bp-4h]@5

Hexrays Decompilation: Variable Declarations

share|improve this question
Like I said in the linked question, it seems to indicate the number of the basic block where this variable is first referenced. (To see basic blocks, switch to disassembly graph mode.) – DCoder Apr 22 '14 at 7:52

The numbers denote the basic block number in the microcode where the variable was first used. Microcode basic blocks do not necessarily match the basics block in the disassembly, because during optimization steps the microcode basic blocks may be split, merged, added, or removed.

You can see some samples of microcode in Ilfak's whitepaper on the decompiler or in some of the old blog posts: 1 2 (block number is the first number on the line).

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.