

def _compute_memory_address(self, mem_operand):
    'Return operand memory access translation.\n        '
    size = addr._arch_info.architecture_size
    addr = None
    if mem_operand.base:
        addr = ReilRegisterOperand(mem_operand.base, size)
    if (mem_operand.index and (mem_operand.scale != 0)):
        index = ReilRegisterOperand(mem_operand.index, size)
        scale = ReilImmediateOperand(mem_operand.scale, size)
        scaled_index = self.temporal(size)
        self.add(self._builder.gen_mul(index, scale, scaled_index))
        if addr:
            tmp = self.temporal(size)
            self.add(self._builder.gen_add(addr, scaled_index, tmp))
            addr = tmp
        else:
            addr = scaled_index
    if (mem_operand.displacement != 0):
        disp = ReilImmediateOperand(mem_operand.displacement, size)
        if addr:
            tmp = self.temporal(size)
            self.add(self._builder.gen_add(addr, disp, tmp))
            addr = tmp
        else:
            addr = disp
    elif (not addr):
        disp = ReilImmediateOperand(mem_operand.displacement, size)
        addr = disp
    return addr

dataset/ETHPy150Open programa-stic/barf-project/barf/barf/arch/x86/x86translator.py X86TranslationBuilder._compute_memory_address/VarMisuse@16/35 `self`->`addr`