code: def inner_arguments(
      func: FunctionSchema, is_reverse: bool
  ) -> List[Binding]:
      args = func.arguments.flat_all
      assert args[0].type == BaseType(BaseTy.Tensor)
      non_self_args = args[1:]
      # The forward lambda calls the at::_ops API, while the reverse lambda calls the view inverse API.
      # Both of these follow the dispatcher API.
      non_self_bindings = [
          dispatcher.argument(a) for a in non_self_args
      ]
      if not is_reverse:
          # the forward lambda swaps out the original tensor argument with the lambd arg "base"
          return [base_binding] + non_self_bindings
      else:
          # the reverse lambda does the same, but with an additional "mutated_view" arg
          # additionally, we have a calling convention: for view ops that return multiple tensor outputs
          # their corresponding view_inverse function takes in an additional index argument.
          index_binding = inner_call_index(func)
          if index_binding is not None:
              return [
                  base_binding,
                  mutated_view_binding,
                  inverse_return_mode_binding,
                  index_binding,
              ] + non_self_bindings
          else:
              return [
                  base_binding,
                  mutated_view_binding,
                  inverse_return_mode_binding,
              ] + non_self_bindings
  
file_path: pytorch/torchgen/api/functionalization.py
imports: from typing import List, Optional
  from torchgen.api import dispatcher
  from torchgen.api.types import BaseCppType, BaseCType, Binding, boolT, ConstRefCType, CType, longT, NamedCType, tensorT
  from torchgen.model import Argument, BaseTy, BaseType, FunctionSchema, NativeFunction, NativeFunctionsViewGroup
label_desc: Use image node_id 7 for calling a global function with example usage: inner_arguments(func, is_reverse) and returns: unknown, unknown, unknown