1 /* BraIA64.c -- Converter for IA-64 code
\r
2 2017-01-26 : Igor Pavlov : Public domain */
\r
9 SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)
\r
18 unsigned m = ((UInt32)0x334B0000 >> (data[i] & 0x1E)) & 3;
\r
24 Byte *p = data + (i + (size_t)m * 5 - 8);
\r
25 if (((p[3] >> m) & 15) == 5
\r
26 && (((p[-1] | ((UInt32)p[0] << 8)) >> m) & 0x70) == 0)
\r
28 unsigned raw = GetUi32(p);
\r
29 unsigned v = raw >> m;
\r
30 v = (v & 0xFFFFF) | ((v & (1 << 23)) >> 3);
\r
34 v += ip + (UInt32)i;
\r
36 v -= ip + (UInt32)i;
\r
42 raw &= ~((UInt32)0x8FFFFF << m);
\r