code: def register_func(tables, aten_ops, schema_str):
      if not isinstance(aten_ops, list):
          aten_ops = [aten_ops]
      if not isinstance(tables, list):
          tables = [tables]
  
      def wrapper(func):
          for aten_op in aten_ops:
  
              def get_inner(aten_op):
                  def inner(*args, **kwargs):
                      check_schema(schema_str, func, *args, **kwargs)
                      return func(aten_op, *args, **kwargs)
  
                  return inner
  
              for table in tables:
                  table[aten_op] = get_inner(aten_op)
          return func
  
      return wrapper
  
imports: import functools
  import math
  import operator
  import torch
  from torch.nested._internal.sdpa import jagged_scaled_dot_product_attention
  from .nested_tensor import NestedTensor
  from typing import *
  from torch.fx.operator_schemas import normalize_function
label_desc: Use image node_id 8 for calling a global function with example usage: register_func(tables, aten_ops, schema_str) and returns: wrapper, func, inner, func