# Functions¶

Functions are another basic object in Sark. Each one provides access to a single function in IDA.

>>> my_func = sark.Function()  # The same arguments as sark.Line
>>> print my_func

>>> my_func.name = "my_func"
>>> print my_func

>>> for line in my_func.lines:
...     print line.disasm
push    ebp
mov     ebp, esp
sub     esp, 0DCh
push    ebx
push    esi
.
.
.


Like the sark.Line objects, they encapsulate relevant API into a single object. Some useful members are:

Member Usage
ea alias for startEA (for comparability with sark.Line)
name function name
flags function flags
lines all the lines in the function (a generator)
xrefs_* xrefs to and from the function [1]

All similarly named members between sark.Line and sark.Function work similarly as well to avoid confusion.

## Getting Functions¶

There are 2 ways to get functions:

1. Using the sark.Function class, which accepts the same arguments as sark.Line;
2. Using sark.functions to iterate over functions. It is the same as sark.lines, but does not accept a reverse argument.

Footnotes

 [1] Xrefs from a function include only references with a target outside the function. So recursion will be ignored.