--[[--
num_args takes in 5.1 byte code and extracts the number of arguments
from its function header.
Source: http://ace.ajax.org/build/kitchen-sink.html
--]]--


function num_args(func)
    function int(t)
        return t:byte(1)+t:byte(2)*0x100+t:byte(3)*0x10000+t:byte(4)*0x1000000
    end

	local dump = string.dump(func)
	local offset, cursor = int(dump:sub(13)), offset + 26
	--Get the params and var flag (whether there's a ... in the param)
	return dump:sub(cursor):byte(), dump:sub(cursor+1):byte()
end

-- Usage:
-- num_args(function(a,b,c,d, ...) end) -- return 4, 7