'Scan the entire program image for function prologues, and start code scanning at those positions
:return: A list of possible function addresses'

def _func_addrs_from_prologues(self):

    regexes = list()
    for ins_regex in self.project.arch.function_prologs:
        r = re.compile(ins_regex)
        regexes.append(r)
    strides = self._binary.memory.stride_repr
    unassured_functions = []
    for (start_, _, bytes_) in strides:
        for regex in regexes:
            for mo in regex.finditer(bytes_):
                position = (mo.start() + start_)
                if ((position % self.project.arch.instruction_alignment) == 0):
                    if self._addr_in_exec_memory_regions(position):
                        unassured_functions.append(AT.from_rva(position, self._binary).to_mva())
    return unassured_functions
