Per subroutine and main program (where applicable):
; Description:
; Assumptions: List any assumptions that you make. For example, if you
; assume that a particular input data item is always valid,
; state that.
; Parameters: Description of each parameter, and how it is passed, and
; if it is a register, then is it modified in the subroutine
; Return Value: Description
; Stack Diagram: When we pass parameters via the stack or construct a
; "stack frame" or "activation record" then diagram this
; Register Usage: Specify the role of each register that you are using