'Unoptimises IRSB and _add_data_reference\'s for individual statements or
for parts of statements (e.g. Store)
:param pyvex.IRSB irsb: Block to scan for data references
:param int irsb_addr: Address of block
:return: None'

def _collect_data_references(self, irsb, irsb_addr):

    if (self.project.arch.name in ('X86', 'AMD64')):
        empty_insn = False
        all_statements = len(irsb.statements)
        for (i, stmt) in enumerate(irsb.statements[:(-1)]):
            if (isinstance(stmt, pyvex.IRStmt.IMark) and (isinstance(irsb.statements[(i + 1)], pyvex.IRStmt.IMark) or (((i + 2) < all_statements) and isinstance(irsb.statements[(i + 2)], pyvex.IRStmt.IMark)))):
                empty_insn = True
                break
        if empty_insn:
            irsb = self.project.factory.block(addr=irsb_addr, size=irsb.size, opt_level=0).vex
    self._collect_data_references_core(irsb, irsb_addr)
