Dump of assembler code for function example: 0x00000000004006e4 : push %rbp /* stack * 0x00000000004006e5 : mov %rsp,%rbp *operations*/ 0x00000000004006e8 : mov %edi,0xfffffffffffffffc(%rbp) //move arg1 to the stack (rbp -4) 0x00000000004006eb : mov %esi,0xfffffffffffffff8(%rbp) //move arg2 to the stack (rbp -8) 0x00000000004006ee : mov 0xfffffffffffffffc(%rbp),%eax // eax = arg1 0x00000000004006f1 : add %eax,%eax // eax += eax (arg1 *2) (this is a) 0x00000000004006f3 : mov %eax,0xfffffffffffffff4(%rbp) // rbp-12 = eax 0x00000000004006f6 : movl $0x3b6d,0xfffffffffffffff0(%rbp) // rbp-16 = 0x3b6d = 15213 (this is b) 0x00000000004006fd : mov 0xfffffffffffffff0(%rbp),%eax // eax = (rbp-16) = 15213 0x0000000000400700 : add 0xfffffffffffffff8(%rbp),%eax // eax += (rbp -8) => eax = arg2 +15213 (this is c) 0x0000000000400703 : mov %eax,0xffffffffffffffec(%rbp) // (rbp-20) = eax = arg2 + 15213 0x0000000000400706 : mov 0xfffffffffffffff4(%rbp),%edx // edx = rbp -12 = arg1*2 (this is a) 0x0000000000400709 : lea 0xfffffffffffffff0(%rbp),%rax //rax = &(rpb-16) = 15213 (this is b) 0x000000000040070d : add %edx,(%rax) //rax += *edx (b = b+a) 0x000000000040070f : mov 0xffffffffffffffec(%rbp),%edx //edx = rbp-20 (this is c) 0x0000000000400712 : lea 0xfffffffffffffff0(%rbp),%rax // rax = rbp-16 (this is b again) 0x0000000000400716 : add %edx,(%rax) //rax += edx (b = b+c) AND STORE 0x0000000000400718 : mov 0xfffffffffffffffc(%rbp),%eax // eax = arg1 0x000000000040071b : imul 0xfffffffffffffff8(%rbp),%eax //eax = eax * arg2 ( eax = arg1 *arg2) 0x000000000040071f : mov %eax,0xfffffffffffffff4(%rbp) // rbp-12 = eax (this is a=arg1*arg2) 0x0000000000400722 : mov 0xfffffffffffffff0(%rbp),%eax //eax = rbp-16 (this is b) 0x0000000000400725 : sar $0x2,%eax // eax = eax >> 2 (b >>2) 0x0000000000400728 : add 0xfffffffffffffff4(%rbp),%eax //eax +=a (b>>2 +a) 0x000000000040072b : leaveq /* final return * 0x000000000040072c : retq * operations */ End of assembler dump. Dump of assembler code for function example: 0x04005f0 : lea 0x76da(%rsi,%rdi,2),%eax //eax = 30426 + arg2 + 2*arg1 0x04005f7 : imul %esi,%edi //edi = arg1 * arg2 (this is a) 0x04005fa : sar $0x2,%eax // eax = eax >> 2 (b>>2) 0x04005fd : add %edi,%eax // eax += edi (b >>2 + a) 0x04005ff : retq //return End of assembler dump.