def fact ()
  %rax <- copy 1;

  condition:
  jumpif lte %rdi, 1 -> fin, boucle;

  boucle:
  %rax <- mul %rax, %rdi;
  %rdi <- sub %rdi, 1;
  jump condition;

  fin:
  ret;
end

globals (x)
  x <- copy 5;

  %rdi <- copy x;
  fact();
  x <- copy %rax;

  %rdi <- copy x;
  observe_int();
end