INNER CODE UNIT · C
prev
aegis-aead/libaegis · src/aegis128l/aegis128l_neon_sha3.c:93
const size_t prev = (j + 7) % 8;
if (complemented && (prev == 3 || prev == 7)) {
r[j] = vaesmcq_u8(vaeseq_u8(x[prev], vmovq_n_u8(255)));
} else if (split & (1U << prev)) {
r[j] = vaesmcq_u8(vaeseq_u8(x[prev], y[prev]));
} else {
r[j] = vaesmcq_u8(vaeseq_u8(vmovq_n_u8(0), x[prev]));
}
}
for (j = 0; j < 8; j++) {
if (split & (1U << j)) {
x[j] = AES_BLOCK_XOR(x[j], y[j]);
}
}
if (operation != AEGIS_BULK_ABSORB) {
aes_block_t z0 = vbcaxq_u8(AES_BLOCK_XOR3(m0, x[6], x[1]), x[2], x[3]);
aes_block_t z1 = vbcaxq_u8(AES_BLOCK_XOR3(m1, x[5], x[2]), x[6], x[7]);