code: public static final int getFromSif_OPC(byte[] sif, int shift) {
          int opc = ((sif[1 + shift] & 0xC0) >> 6) | ((sif[2 + shift] & 0xff) << 2) | ((sif[3 + shift] & 0x0f) << 10);
          return opc;
      }
docs: Retrieves OPC from SIF. SIF starts from byte 1 in MSU. For MSU [SIO,DPC,OPC,SLS,Data], call would look as following: int
  opc = getFromSif_OPC(MSU,1);
  
  @param sif - byte[] - either SIF or MSU
  @param shift - shift in passed byte[]. For MSU its 1. For SIF part of MSU it will be 0;
  @return