'`is_fp` should be a list of booleans specifying whether each corresponding argument is floating-point -
True for fp and False for int. For a shorthand to assume that all the parameters are int, pass the number of
parameters as an int.
If you\'ve customized this CC, you may omit this parameter entirely. If it is provided, it is used for
sanity-checking.
`sizes` is an optional list of argument sizes, in bytes. Be careful about using this if you\'ve made explicit
the arg locations, since it might decide to combine two locations into one if an arg is too big.
`stack_base` is an optional pointer to the top of the stack at the function start. If it is not
specified, use the current stack pointer.
Returns a list of bitvector expressions representing the arguments of a function.'

def get_args(self, state, is_fp=None, sizes=None, stack_base=None):

    if ((sizes is None) and (self.func_ty is not None)):
        sizes = [arg.size for arg in self.func_ty.args]
    if (is_fp is None):
        if (self.args is None):
            if (self.func_ty is None):
                raise ValueError('You    must    either    customize    this    CC    or    pass    a    value    to    is_fp!')
            else:
                arg_locs = self.arg_locs()
        else:
            arg_locs = self.args
    elif (type(is_fp) is int):
        if ((self.args is not None) and (len(self.args) != is_fp)):
            raise ValueError(('Bad    number    of    args    requested:    got    %d,    expected    %d' % (is_fp, len(self.args))))
        arg_locs = self.arg_locs(([False] * is_fp), sizes)
    else:
        arg_locs = self.arg_locs(is_fp, sizes)
    return [loc.get_value(state, stack_base=stack_base) for loc in arg_locs]
