def arguments(self, xdata: InstrXData) -> List[XXpr]:
     if xdata.has_indirect_call_target_exprs():
         return xdata.xprs[2:]
     elif xdata.has_call_target():
         return xdata.xprs
     else:
         return []
    def annotation(self, xdata: InstrXData) -> str:
        """data format: a:xx... + c

        direct call / resolved indirect call: xprs[0..] arguments
                                              calltarget

        unresolved indirect call: xprs[0] target expression
                                  xprs[1] target expression (simplified)
                                  xprs[2...] arguments
        """

        if xdata.has_indirect_call_target_exprs():
            tgtx = xdata.xprs[1]
            callargs = xdata.xprs[2:]
            return str(tgtx) + "(" + ",".join([str(x) for x in callargs]) + ")"

        elif xdata.has_call_target():
            ctgt = xdata.call_target(self.ixd)
            callargs = xdata.xprs
            return str(ctgt) + "(" + ",".join([str(x) for x in callargs]) + ")"

        else:
            return "call to " + str(self.tgtoperand)
 def is_unresolved_call(self, xdata: InstrXData) -> bool:
     return xdata.has_indirect_call_target_exprs()