code: static private void decodeCharacter(byte chunk, int characterIndex, byte[] bytes, int index) {
          int byteIndex = index + (characterIndex * 5) / 8;
          int offset = characterIndex % 8;
          switch (offset) {
              case 0:
                  bytes[byteIndex] |= chunk << 3;
                  break;
              case 1:
                  bytes[byteIndex] |= chunk >>> 2;
                  bytes[byteIndex + 1] |= chunk << 6;
                  break;
              case 2:
                  bytes[byteIndex] |= chunk << 1;
                  break;
              case 3:
                  bytes[byteIndex] |= chunk >>> 4;
                  bytes[byteIndex + 1] |= chunk << 4;
                  break;
              case 4:
                  bytes[byteIndex] |= chunk >>> 1;
                  bytes[byteIndex + 1] |= chunk << 7;
                  break;
              case 5:
                  bytes[byteIndex] |= chunk << 2;
                  break;
              case 6:
                  bytes[byteIndex] |= chunk >>> 3;
                  bytes[byteIndex + 1] |= chunk << 5;
                  break;
              case 7:
                  bytes[byteIndex] |= chunk;
                  break;
          }
      }
docs: mask:   F8  07  C0 3E  01 F0  0F 80  7C 03  E0  1F   F8  07