locals: 0 x (input) 1 x! (output - factorial of x) the bytecode version: .align 2 jvmbytecode: .byte 0x10, 0xde # bipush .byte 0x10, 0xad # bipush .byte 0x10, 0xbe # bipush .byte 0x10, 0xef # bipush .byte 0x15, 0x00 # iload .byte 0x36, 0x02 # istore .byte 0x17, 0x00, 0x01 # sipush .byte 0x36, 0x01 # istore .byte 0x15, 0x02 # iload .byte 0x9e, 0x00, 0x17 # ifle .byte 0x15, 0x02 # iload .byte 0x59 # dup .byte 0x15, 0x01 # iload .byte 0x68 # imul .byte 0x36, 0x01 # istore .byte 0x10, 0x01 # bipush .byte 0x64 # isub .byte 0x36, 0x02 # istore .byte 0xa7, 0xff, 0xee # goto .byte 0x10, 0x01 # bipush .byte 0x36, 0x01 # istore .byte 0x57 # pop .byte 0x57 # pop .byte 0x57 # pop .byte 0x57 # pop .byte 0x15, 0x01 # iload .byte 0xac # ireturn .byte 0x00 # .align 2 jvmlocal : .word 5, -1 .space 1016 --------------------------- Original source code: bipush 222 bipush 173 bipush 190 bipush 239 iload 0 istore 2 sipush 1 istore 1 loop: iload 2 ifle end iload 2 dup iload 1 imul istore 1 bipush 1 isub istore 2 goto loop ret1: # this is not used bipush 1 istore 1 end: # pop off deadbeef and return the result pop pop pop pop iload 1 ireturn