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; ret; end globals (x) %rdi <- copy 5; fact(); x <- copy %rax; %rdi <- copy x; observe_int(); exit; end