code: def _process_binary(context, node, binary_op, add_relu=False):
      # Node has 4 inputs:
      # 1. LHS
      # 2. RHS
      # 3. output scale
      # 4. output zero-point
  
      assert len(node.inputs) == 4
      assert len(node.outputs) == 1
  
      lhs, lhs_dtype = context.quant_context.get_dequantized_var(
          node.inputs[0]
      )
      rhs, rhs_dtype = context.quant_context.get_dequantized_var(
          node.inputs[1]
      )
      assert lhs_dtype == rhs_dtype
  
      res = binary_op(x=lhs, y=rhs)
      if add_relu:
          res = mb.relu(x=res)
      context.add(res)
  
      out_scale = context[node.inputs[2]]
      out_zero_point = context[node.inputs[3]].val
      context.quant_context.get_quantized_per_tensor(
          res.name, lhs_dtype, out_scale, out_zero_point, node.name
      )
  
imports: import numpy
  import torch
  from coremltools import _logger
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import Var, types
  from .ops import NUM_TO_TORCH_DTYPE, _create_linear_layer, _get_inputs, promote_input_dtypes
  from .torch_op_registry import register_torch_op
label_desc: Use image node_id 9 for calling a global function with example usage: _process_binary(context, node, binary_op, add_relu) without return types