code: def _lstm_cell(
      x,
      init_h,
      init_c,
      kernel,
      recurrent_kernel,
      bias,
      recurrent_bias,
      batch_first,
      batch_sizes=None,
  ):
      init_h = ivy.squeeze(init_h, axis=0)
      init_c = ivy.squeeze(init_c, axis=0)
      out, states = ivy.lstm_update(
          x,
          init_h,
          init_c,
          kernel,
          recurrent_kernel,
          bias=bias,
          recurrent_bias=recurrent_bias,
          time_major=not batch_first,
      )
      h, c = states
      h = ivy.expand_dims(h) if len(h.shape) == 2 else h
      c = ivy.expand_dims(c) if len(c.shape) == 2 else c
      return out, (h, c)
  
imports: from typing import Optional, Tuple, Union, Sequence
  import ivy
  from ivy.utils.backend import current_backend
  from ivy.func_wrapper import handle_array_function, handle_partial_mixed_function, inputs_to_ivy_arrays, to_native_arrays_and_back, inputs_to_native_shapes, handle_out_argument, handle_nestable, handle_array_like_without_promotion, handle_device, handle_backend_invalid
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 27 for calling a global function with example usage: _lstm_cell(x, init_h, init_c, kernel, recurrent_kernel, bias, recurrent_bias, batch_first, batch_sizes) and returns: out,  h,  c