def fact ()
  local n:
  n <- copy %rdi;

  %rax <- copy 1;

  condition:
  jumpif lte n, 1 -> fin, boucle;

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

  fin:
  ret;
end

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

  %rdi <- copy x;
  observe_int();

  exit;
end