code: def write_uop(uop: Uop, out: CWriter, stack: Stack) -> None:
      try:
          out.start_line()
          if uop.properties.oparg:
              out.emit("oparg = CURRENT_OPARG();\n")
          for var in reversed(uop.stack.inputs):
              out.emit(stack.pop(var))
          if not uop.properties.stores_sp:
              for i, var in enumerate(uop.stack.outputs):
                  out.emit(stack.push(var))
          for cache in uop.caches:
              if cache.name != "unused":
                  if cache.size == 4:
                      type = cast = "PyObject *"
                  else:
                      type = f"uint{cache.size*16}_t "
                      cast = f"uint{cache.size*16}_t"
                  out.emit(
                      f"{type}{cache.name} = ({cast})CURRENT_OPERAND();\n"
                  )
          emit_tokens(
              out, uop, stack, None, TIER2_REPLACEMENT_FUNCTIONS
          )
          if uop.properties.stores_sp:
              for i, var in enumerate(uop.stack.outputs):
                  out.emit(stack.push(var))
      except SizeMismatch as ex:
          raise analysis_error(ex.args[0], uop.body[0])
  
file_path: cpython/Tools/cases_generator/tier2_generator.py
imports: import argparse
  import os.path
  import sys
  from analyzer import Analysis, Instruction, Uop, Part, analyze_files, Skip, StackItem, analysis_error
  from generators_common import DEFAULT_INPUT, ROOT, write_header, emit_tokens, emit_to, REPLACEMENT_FUNCTIONS
  from cwriter import CWriter
  from typing import TextIO, Iterator
  from lexer import Token
  from stack import StackOffset, Stack, SizeMismatch
label_desc: Use image node_id 4 for calling a global function with example usage: write_uop(uop, out, stack) without return types