Functions would have opcodes for the calling them (pushing interpreter state to a callstack, & replacing it), & returning from them (popping callstack).
Or the CALL opcode could jump to some assembly code a reference to which has been popped off the value stack. This would be useful for exposing the code we've written so far to Lua programs, manipulating the interpreter itself, or compiling the Lua code to run faster without the dynamic typechecks!
As for variadic functoins & methods...
5/5.5