Now, we cannot directly register funcs defined by a different signature than the lua standard (int (*)(lua_State *)) so we have to correctly wrap those with proper conversions etc.