Bitcoin Core Fuzz Coverage Report for wallet_tx_can_be_bumped

Coverage Report

Created: 2025-11-19 11:20

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/Users/brunogarcia/projects/bitcoin-core-dev/src/crypto/siphash.cpp
Line
Count
Source
1
// Copyright (c) 2016-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <crypto/siphash.h>
6
7
#include <uint256.h>
8
9
#include <bit>
10
#include <cassert>
11
#include <span>
12
13
5.73M
#define SIPROUND do { \
14
5.73M
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
5.73M
    v0 = std::rotl(v0, 32); \
16
5.73M
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
5.73M
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
5.73M
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
5.73M
    v2 = std::rotl(v2, 32); \
20
5.73M
} while (0)
21
22
CSipHasher::CSipHasher(uint64_t k0, uint64_t k1)
23
118k
{
24
118k
    v[0] = 0x736f6d6570736575ULL ^ k0;
25
118k
    v[1] = 0x646f72616e646f6dULL ^ k1;
26
118k
    v[2] = 0x6c7967656e657261ULL ^ k0;
27
118k
    v[3] = 0x7465646279746573ULL ^ k1;
28
118k
    count = 0;
29
118k
    tmp = 0;
30
118k
}
31
32
CSipHasher& CSipHasher::Write(uint64_t data)
33
0
{
34
0
    uint64_t v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];
35
36
0
    assert(count % 8 == 0);
37
38
0
    v3 ^= data;
39
0
    SIPROUND;
Line
Count
Source
13
0
#define SIPROUND do { \
14
0
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
0
    v0 = std::rotl(v0, 32); \
16
0
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
0
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
0
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
0
    v2 = std::rotl(v2, 32); \
20
0
} while (0)
40
0
    SIPROUND;
Line
Count
Source
13
0
#define SIPROUND do { \
14
0
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
0
    v0 = std::rotl(v0, 32); \
16
0
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
0
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
0
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
0
    v2 = std::rotl(v2, 32); \
20
0
} while (0)
41
0
    v0 ^= data;
42
43
0
    v[0] = v0;
44
0
    v[1] = v1;
45
0
    v[2] = v2;
46
0
    v[3] = v3;
47
48
0
    count += 8;
49
0
    return *this;
50
0
}
51
52
CSipHasher& CSipHasher::Write(std::span<const unsigned char> data)
53
118k
{
54
118k
    uint64_t v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];
55
118k
    uint64_t t = tmp;
56
118k
    uint8_t c = count;
57
58
3.05M
    while (data.size() > 0) {
59
2.93M
        t |= uint64_t{data.front()} << (8 * (c % 8));
60
2.93M
        c++;
61
2.93M
        if ((c & 7) == 0) {
62
313k
            v3 ^= t;
63
313k
            SIPROUND;
Line
Count
Source
13
313k
#define SIPROUND do { \
14
313k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
313k
    v0 = std::rotl(v0, 32); \
16
313k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
313k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
313k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
313k
    v2 = std::rotl(v2, 32); \
20
313k
} while (0)
64
313k
            SIPROUND;
Line
Count
Source
13
313k
#define SIPROUND do { \
14
313k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
313k
    v0 = std::rotl(v0, 32); \
16
313k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
313k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
313k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
313k
    v2 = std::rotl(v2, 32); \
20
313k
} while (0)
65
313k
            v0 ^= t;
66
313k
            t = 0;
67
313k
        }
68
2.93M
        data = data.subspan(1);
69
2.93M
    }
70
71
118k
    v[0] = v0;
72
118k
    v[1] = v1;
73
118k
    v[2] = v2;
74
118k
    v[3] = v3;
75
118k
    count = c;
76
118k
    tmp = t;
77
78
118k
    return *this;
79
118k
}
80
81
uint64_t CSipHasher::Finalize() const
82
118k
{
83
118k
    uint64_t v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];
84
85
118k
    uint64_t t = tmp | (((uint64_t)count) << 56);
86
87
118k
    v3 ^= t;
88
118k
    SIPROUND;
Line
Count
Source
13
118k
#define SIPROUND do { \
14
118k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
118k
    v0 = std::rotl(v0, 32); \
16
118k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
118k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
118k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
118k
    v2 = std::rotl(v2, 32); \
20
118k
} while (0)
89
118k
    SIPROUND;
Line
Count
Source
13
118k
#define SIPROUND do { \
14
118k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
118k
    v0 = std::rotl(v0, 32); \
16
118k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
118k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
118k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
118k
    v2 = std::rotl(v2, 32); \
20
118k
} while (0)
90
118k
    v0 ^= t;
91
118k
    v2 ^= 0xFF;
92
118k
    SIPROUND;
Line
Count
Source
13
118k
#define SIPROUND do { \
14
118k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
118k
    v0 = std::rotl(v0, 32); \
16
118k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
118k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
118k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
118k
    v2 = std::rotl(v2, 32); \
20
118k
} while (0)
93
118k
    SIPROUND;
Line
Count
Source
13
118k
#define SIPROUND do { \
14
118k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
118k
    v0 = std::rotl(v0, 32); \
16
118k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
118k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
118k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
118k
    v2 = std::rotl(v2, 32); \
20
118k
} while (0)
94
118k
    SIPROUND;
Line
Count
Source
13
118k
#define SIPROUND do { \
14
118k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
118k
    v0 = std::rotl(v0, 32); \
16
118k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
118k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
118k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
118k
    v2 = std::rotl(v2, 32); \
20
118k
} while (0)
95
118k
    SIPROUND;
Line
Count
Source
13
118k
#define SIPROUND do { \
14
118k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
118k
    v0 = std::rotl(v0, 32); \
16
118k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
118k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
118k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
118k
    v2 = std::rotl(v2, 32); \
20
118k
} while (0)
96
118k
    return v0 ^ v1 ^ v2 ^ v3;
97
118k
}
98
99
uint64_t SipHashUint256(uint64_t k0, uint64_t k1, const uint256& val)
100
213k
{
101
    /* Specialized implementation for efficiency */
102
213k
    uint64_t d = val.GetUint64(0);
103
104
213k
    uint64_t v0 = 0x736f6d6570736575ULL ^ k0;
105
213k
    uint64_t v1 = 0x646f72616e646f6dULL ^ k1;
106
213k
    uint64_t v2 = 0x6c7967656e657261ULL ^ k0;
107
213k
    uint64_t v3 = 0x7465646279746573ULL ^ k1 ^ d;
108
109
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
110
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
111
213k
    v0 ^= d;
112
213k
    d = val.GetUint64(1);
113
213k
    v3 ^= d;
114
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
115
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
116
213k
    v0 ^= d;
117
213k
    d = val.GetUint64(2);
118
213k
    v3 ^= d;
119
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
120
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
121
213k
    v0 ^= d;
122
213k
    d = val.GetUint64(3);
123
213k
    v3 ^= d;
124
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
125
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
126
213k
    v0 ^= d;
127
213k
    v3 ^= (uint64_t{4}) << 59;
128
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
129
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
130
213k
    v0 ^= (uint64_t{4}) << 59;
131
213k
    v2 ^= 0xFF;
132
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
133
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
134
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
135
213k
    SIPROUND;
Line
Count
Source
13
213k
#define SIPROUND do { \
14
213k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
213k
    v0 = std::rotl(v0, 32); \
16
213k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
213k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
213k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
213k
    v2 = std::rotl(v2, 32); \
20
213k
} while (0)
136
213k
    return v0 ^ v1 ^ v2 ^ v3;
137
213k
}
138
139
uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256& val, uint32_t extra)
140
100k
{
141
    /* Specialized implementation for efficiency */
142
100k
    uint64_t d = val.GetUint64(0);
143
144
100k
    uint64_t v0 = 0x736f6d6570736575ULL ^ k0;
145
100k
    uint64_t v1 = 0x646f72616e646f6dULL ^ k1;
146
100k
    uint64_t v2 = 0x6c7967656e657261ULL ^ k0;
147
100k
    uint64_t v3 = 0x7465646279746573ULL ^ k1 ^ d;
148
149
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
150
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
151
100k
    v0 ^= d;
152
100k
    d = val.GetUint64(1);
153
100k
    v3 ^= d;
154
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
155
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
156
100k
    v0 ^= d;
157
100k
    d = val.GetUint64(2);
158
100k
    v3 ^= d;
159
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
160
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
161
100k
    v0 ^= d;
162
100k
    d = val.GetUint64(3);
163
100k
    v3 ^= d;
164
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
165
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
166
100k
    v0 ^= d;
167
100k
    d = ((uint64_t{36}) << 56) | extra;
168
100k
    v3 ^= d;
169
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
170
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
171
100k
    v0 ^= d;
172
100k
    v2 ^= 0xFF;
173
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
174
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
175
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
176
100k
    SIPROUND;
Line
Count
Source
13
100k
#define SIPROUND do { \
14
100k
    v0 += v1; v1 = std::rotl(v1, 13); v1 ^= v0; \
15
100k
    v0 = std::rotl(v0, 32); \
16
100k
    v2 += v3; v3 = std::rotl(v3, 16); v3 ^= v2; \
17
100k
    v0 += v3; v3 = std::rotl(v3, 21); v3 ^= v0; \
18
100k
    v2 += v1; v1 = std::rotl(v1, 17); v1 ^= v2; \
19
100k
    v2 = std::rotl(v2, 32); \
20
100k
} while (0)
177
100k
    return v0 ^ v1 ^ v2 ^ v3;
178
100k
}