``` out[1] = 0x80 + (((c >> 8) & 0x1f) << 2) + ((c >> 6) & 0x3); ``` should be out[1] = 0x80 + (((c >> 8) & 0xf) << 2) + ((c >> 6) & 0x3);
should be
out[1] = 0x80 + (((c >> 8) & 0xf) << 2) + ((c >> 6) & 0x3);