def fact ()
local n:
n <- copy %rdi;
jumpif lte n, 1 -> fini, rec;
fini:
%rax <- copy 1;
ret;
rec:
%rdi <- sub n, 1;
fact();
%rax <- mul %rax, n;
end
globals (x)
%rdi <- copy 5;
x <- copy %rax;
%rdi <- copy x;
observe_int();
exit;