'Dump unique ROP gadgets in memory
Args:
- start: start address (Int)
- end: end address (Int)
- keyword: to match start of gadgets (String)
Returns:
- dictionary of (address(Int), asmcode(String))'

def dumprop(self, start, end, keyword=None, depth=5):

    EXTRA_WORDS = ['BYTE    ', '    WORD', 'DWORD    ', 'FWORD    ', 'QWORD    ', 'PTR    ', 'FAR    ']
    result = {}
    mem = self.dumpmem(start, end)
    if (mem is None):
        return {}
    if keyword:
        search = keyword
    else:
        search = ''
    if (len(mem) > 20000):
        depth = 3
    found = re.finditer('\xc3', mem)
    found = list(found)
    for m in found:
        idx = (start + m.start())
        for i in range(1, 24):
            gadget = self._verify_rop_gadget((idx - i), idx, depth)
            if (gadget != []):
                k = ';    '.join([v for (a, v) in gadget])
                if k.startswith(search):
                    for w in EXTRA_WORDS:
                        k = k.replace(w, '')
                    if (k not in result):
                        result[k] = gadget[0][0]
    return result
