'Get the assembly manifest of the procedure.
:param comments:
:param symbolized:
:return: A list of tuples (address, basic block assembly), ordered by basic block addresses
:rtype: list'

def assembly(self, comments=False, symbolized=True):

    assembly = []
    header = ' DCTB .section DCTB {section}\n DCTB .align DCTB {alignment}\n'.format(section=self.section, alignment=self.binary.section_alignment(self.section))
    if (self.addr is not None):
        procedure_name = ('%#x' % self.addr)
    else:
        procedure_name = self._name
    header += (' DCTB #Procedure    %s\n' % procedure_name)
    if self._output_function_label:
        if self.addr:
            function_label = self.binary.symbol_manager.new_label(self.addr)
        else:
            function_label = self.binary.symbol_manager.new_label(None, name=procedure_name, is_function=True)
        header += (str(function_label) + '\n')
    assembly.append((self.addr, header))
    if self.asm_code:
        s = self.asm_code
        assembly.append((self.addr, s))
    elif self.blocks:
        for b in sorted(self.blocks, key=(lambda x: x.addr)):
            s = b.assembly(comments=comments, symbolized=symbolized)
            assembly.append((b.addr, s))
    return assembly
