Pass "input" as function call argument

Pass "input" as function call argument

How come I can't pass input as argument to function calls?

A valid scenario is this, in On Edit-Validate, the input is the form before it's persisted to database.

Let's say I have form called Company, input is of form Company.
I have a custom function that uses fields inside Company to send emails. 

void mySendMail(Company c) {...}

I want to be able to call the function in the following two ways:
1)
mySendMail(input);

2)
x = Company[ID== 2341252];
mySendMail(x);

Now, because i can't pass input as an argument, i can't write this reusable function. Any suggestion?