8#define Test86MSByte(b) ((((b) + 1) & 0xFE) == 0)
20 UInt32 mask = *state & 7;
31 const Byte *limit = data + size;
32 for ( ; p < limit; p++) {
33 if ((*p & 0xFE) == 0xE8) {
39 SizeT d = (SizeT)(p - data - pos);
40 pos = (SizeT)(p - data);
42 *state = (d > 2 ? 0 : mask >> (unsigned)d);
50 if ((mask != 0) && ((mask > 4) || (mask == 3) || Test86MSByte (p[(
size_t)(mask >> 1) + 1]))) {
51 mask = (mask >> 1) | 4;
58 if (Test86MSByte (p[4])) {
59 UInt32 v = ((UInt32)p[4] << 24) | ((UInt32)p[3] << 16) | ((UInt32)p[2] << 8) | ((UInt32)p[1]);
60 UInt32 cur = ip + (UInt32)pos;
69 unsigned sh = (mask & 6) << 2;
70 if (Test86MSByte ((Byte)(v >> sh))) {
71 v ^= (((UInt32)0x100 << sh) - 1);
83 p[2] = (Byte)(v >> 8);
84 p[3] = (Byte)(v >> 16);
85 p[4] = (Byte)(0 - ((v >> 24) & 1));
87 mask = (mask >> 1) | 4;