INNER CODE UNIT · C
full
aegis-aead/libaegis · src/aegis128l/aegis128l_neon_sha3.c:71
const size_t full = len - len % 32;
const unsigned split = operation == AEGIS_BULK_ABSORB ? 0xff
: operation == AEGIS_BULK_DECRYPT ? 0x77
: 0;
const int complemented = operation != AEGIS_BULK_ABSORB;
aes_block_t x[8], y[8], r[8];
size_t i, j;
if (full < 256) {
return 0;
}
for (j = 0; j < 8; j++) {
x[j] = complemented && (j == 3 || j == 7) ? vmvnq_u8(state[j]) : state[j];
y[j] = vmovq_n_u8(0);
}
CRYPTO_ALIGN_LOOP(32)
for (i = 0; i < full; i += 32) {
aes_block_t m0 = operation == AEGIS_BULK_STREAM ? vmovq_n_u8(0) : AES_BLOCK_LOAD(src + i);