#include <stdio.h>

int parent (int i) {
  asm ("shr $1, %%eax" : "=a"(i) : "a"(i));
  return i;
}

int left (int i) {
  asm ("shl $1, %%eax" : "=a"(i) : "a"(i));
  return i;
}

int right (int i) {
  asm ("shl $1, %%eax; inc %%eax" : "=a"(i) : "a"(i));
  return i;
}



int main () {
  int i=5;
  printf ("       i  = %d\n", i);
  printf ("parent(i) = %d\n", parent(i));
  printf ("left  (i) = %d\n", left(i));
  printf ("right (i) = %d\n", right(i));
}

