code: def _compile_x(self):
      # 2D: int x_0 = i / (d_1) % d_0 + p_0;
      #     int x_1 = i % d_1 + p_1;
      def aux(x, ds, p):
          head = ds[0]
          tail = ds[1:]
          if tail:
              return "int {} = i / ({}) % {} + {};".format(
                  x, conv_nd_kernel.mulexp(tail), head, p
              )
          else:
              return "int {} = i % {} + {};".format(x, head, p)
  
      xs = conv_nd_kernel.vars("x", self.ndim)
      xs_decls = conv_nd_kernel.map_(
          aux, xs, conv_nd_kernel.succ_sublists(self.ds), self.ps
      )
      return xs_decls, xs
  
imports: from six import moves
  from chainer.backends import cuda
  from chainer.utils import conv_nd_kernel
label_desc: Use image node_id 12 for calling the PoolingNDKernelBackward obj's underlying member method code with example usage: obj._compile_x() and returns: xs_decls,  xs, str, str