even faster websockets unmask added by iterrogo on Wed Oct 1 17:12:33 2014

// maskkey is a 4 element u8vector converted to blob/shared
// wsv is a u8vector converted to blob/shared containing the masked payload

    const unsigned char* maskkey2 = wsmaskkey;
    const unsigned int kd = *(unsigned int*)maskkey2;
    const unsigned char* __restrict kb = maskkey2;


    for (int i = wslen >> 2; i != 0; --i)
    {
        *((unsigned int*)wsv) ^= kd;
        wsv += 4;
    }

    for (int i = wslen & 3; i != 0; --i)
    {
        *(wsv++) ^= kb[3 - i];
    }