Coverage Report

Created: 2025-11-24 06:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/lzma-fuzz/sdk/C/BraIA64.c
Line
Count
Source
1
/* BraIA64.c -- Converter for IA-64 code
2
2017-01-26 : Igor Pavlov : Public domain */
3
4
#include "Precomp.h"
5
6
#include "CpuArch.h"
7
#include "Bra.h"
8
9
SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)
10
7.44k
{
11
7.44k
  SizeT i;
12
7.44k
  if (size < 16)
13
1.94k
    return 0;
14
5.50k
  size -= 16;
15
5.50k
  i = 0;
16
5.50k
  do
17
9.59M
  {
18
9.59M
    unsigned m = ((UInt32)0x334B0000 >> (data[i] & 0x1E)) & 3;
19
9.59M
    if (m)
20
1.97M
    {
21
1.97M
      m++;
22
1.97M
      do
23
3.61M
      {
24
3.61M
        Byte *p = data + (i + (size_t)m * 5 - 8);
25
3.61M
        if (((p[3] >> m) & 15) == 5
26
570k
            && (((p[-1] | ((UInt32)p[0] << 8)) >> m) & 0x70) == 0)
27
48.2k
        {
28
48.2k
          unsigned raw = GetUi32(p);
29
48.2k
          unsigned v = raw >> m;
30
48.2k
          v = (v & 0xFFFFF) | ((v & (1 << 23)) >> 3);
31
          
32
48.2k
          v <<= 4;
33
48.2k
          if (encoding)
34
23.4k
            v += ip + (UInt32)i;
35
24.8k
          else
36
24.8k
            v -= ip + (UInt32)i;
37
48.2k
          v >>= 4;
38
          
39
48.2k
          v &= 0x1FFFFF;
40
48.2k
          v += 0x700000;
41
48.2k
          v &= 0x8FFFFF;
42
48.2k
          raw &= ~((UInt32)0x8FFFFF << m);
43
48.2k
          raw |= (v << m);
44
48.2k
          SetUi32(p, raw);
45
48.2k
        }
46
3.61M
      }
47
3.61M
      while (++m <= 4);
48
1.97M
    }
49
9.59M
    i += 16;
50
9.59M
  }
51
9.59M
  while (i <= size);
52
5.50k
  return i;
53
7.44k
}