'Add a call to the ROP chain
Arguments:
resolvable(str,int): Value which can be looked up via \'resolve\',
or is already an integer.
arguments(list): List of arguments which can be passed to pack().
Alternately, if a base address is set, arbitrarily nested
structures of strings or integers can be provided.'

def call(self, resolvable, arguments=(), abi=None, **kwargs):

    if self.migrated:
        log.error('Cannot    append    to    a    migrated    chain')
    if isinstance(resolvable, str):
        addr = self.resolve(resolvable)
    elif (hasattr(resolvable, 'name') and hasattr(resolvable, 'address')):
        addr = resolvable.address
        resolvable = str(resolvable.name)
    else:
        addr = resolvable
        resolvable = ''
    if addr:
        self.raw(Call(resolvable, addr, arguments, abi))
    elif (not self._srop_call(resolvable, arguments)):
        log.error(('Could    not    resolve    %r.' % resolvable))
