#define MAX__S 10000 #include "cmm.c" main() { INIT__S(); R__0 = 1; scanf("%d",&R__1); if(R__1 <= 0) goto done; PUSH__S(R__1); /* compute factorial */ factorial(); compute: R__1 = POP__S(); R__1 = R__1 - 2; if(R__1 <= 0) goto done; PUSH__S(R__1); R__0 = R__0 * R__1; goto compute; done: printf("%d",R__0); printf("\n"); } factorial() { R__2 = 1; loop: R__3 = POP__S(); if(R__3 == 0) goto ends; R__2 = R__2 * R__3; R__3 = R__3 - 1; PUSH__S(R__3); goto loop; ends: PUSH__S(R__2); }