end-of-defun is an interactive compiled Lisp function in `lisp.el'.

It is bound to <C-M-end>, C-M-e, ESC <C-end>.

(end-of-defun &optional ARG)

Move forward to next end of defun.
With argument, do it that many times.
Negative argument -N means move back to Nth preceding end of defun.

An end of a defun occurs right after the close-parenthesis that
matches the open-parenthesis that starts a defun; see function

If variable `end-of-defun-function' is non-nil, its value
is called as a function to find the defun's end.