- if (OOB(c,*s)) goto ilseq2; s++;
- c <<= 6; if (!(c&(1U<<31))) break;
- if (*s++-0x80u >= 0x40) goto ilseq2;
- c <<= 6; if (!(c&(1U<<31))) break;
- if (*s++-0x80u >= 0x40) goto ilseq2;
- } while (0);
- wn++; c = 0;
- }
-
- while (wn) {
- if (*s-SA >= SB-SA) {
- if (wn >= 7) {
- while (((uintptr_t)s&3) && *s-1u<0x7f) {
- *ws++ = *s++;
- wn--;
- }
- while (wn>=4 && !(( *(uint32_t*)s | *(uint32_t*)s-0x01010101) & 0x80808080)) {
- *ws++ = *s++;
- *ws++ = *s++;
- *ws++ = *s++;
- *ws++ = *s++;
- wn -= 4;
- }
+ if (OOB(c,*s)) { s--; break; }
+ s++;
+ if (c&(1U<<25)) {
+ if (*s-0x80u >= 0x40) { s-=2; break; }
+ s++;
+ if (c&(1U<<19)) {
+ if (*s-0x80u >= 0x40) { s-=3; break; }
+ s++;