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