'Test if there is any (suspicious) pointer decryption in the code.
:return: True if there is any pointer decryption, False otherwise.
:rtype: bool'

def _has_integer_used_as_pointers(self):

    candidates = [i for i in self.cfg.memory_data.itervalues() if ((i.sort in ('unknown', 'integer')) and (i.size == (self.project.arch.bits / 8)) and (i.irsb_addr is not None))]
    if (not candidates):
        return False
    for candidate in candidates:
        sec = self.cfg._addr_belongs_to_section(candidate.address)
        if (sec.name in ('.bss', '.got.plt')):
            continue
        base_graph = networkx.DiGraph()
        candidate_node = self.cfg.get_any_node(candidate.irsb_addr)
        if (candidate_node is None):
            continue
        base_graph.add_node(candidate_node)
        tmp_kb = KnowledgeBase(self.project, self.project.loader.main_object)
        cfg = self.project.analyses.CFGAccurate(kb=tmp_kb, starts=(candidate.irsb_addr,), keep_state=True, base_graph=base_graph)
        candidate_irsb = cfg.get_any_irsb(candidate.irsb_addr)
        ddg = self.project.analyses.DDG(kb=tmp_kb, cfg=cfg)
        mem_var_node = None
        for node in ddg.simplified_data_graph.nodes_iter():
            if (isinstance(node.variable, SimMemoryVariable) and (node.location.ins_addr == candidate.insn_addr)):
                mem_var_node = node
                break
        else:
            continue
        subgraph = ddg.data_sub_graph(mem_var_node, simplified=False, killing_edges=False, excluding_types={'mem_addr'})
        next_tmp = None
        if isinstance(candidate_irsb.irsb.next, pyvex.IRExpr.RdTmp):
            next_tmp = candidate_irsb.irsb.next.tmp
        if (next_tmp is not None):
            next_tmp_node = next((node for node in subgraph.nodes_iter() if (isinstance(node.variable, SimTemporaryVariable) and (node.variable.tmp_id == next_tmp))), None)
            if (next_tmp_node is not None):
                return True
    return False
