#![allow(non_upper_case_globals, unused_macros, unused_imports)]
use crate::low::macros::*;
#[target_feature(enable = "aes,sha3")]
pub(crate) unsafe fn aes256_gcm_dec_alt(
inout: *mut [u8; 16],
blocks: usize,
tag: &mut [u8; 16],
ivec: &mut [u8; 16],
key: &[core::arch::aarch64::uint8x16_t; 15],
htable: &[core::arch::aarch64::uint64x2_t; 12],
) {
unsafe {
core::arch::asm!(
Q!(" cbz " "x1, " Label!("L256_dec_ret", 2, After)),
Q!(" tst " "x1, #0x7f"),
Q!(" b.ne " Label!("L256_dec_ret", 2, After)),
Q!(" stp " "d8, d9, [sp, #-80] !"),
Q!(" stp " "d10, d11, [sp, #16]"),
Q!(" stp " "d12, d13, [sp, #32]"),
Q!(" stp " "d14, d15, [sp, #48]"),
Q!(" lsr " "x9, x1, #3"),
Q!(" mov " "x16, x4"),
Q!(" mov " "x11, x5"),
Q!(" mov " "x5, #0xc200000000000000"),
Q!(" stp " "x5, xzr, [sp, #64]"),
Q!(" add " "x10, sp, #0x40"),
Q!(" cmp " "x9, #0x40"),
Q!(" b.le " Label!("L256_dec_w5r_small", 3, After)),
Q!(" ld1 " "{{ v0.16b }}, [x16]"),
Q!(" mov " "x15, #0x100000000"),
Q!(" movi " "v31.16b, #0x0"),
Q!(" mov " "v31.d[1], x15"),
Q!(" add " "v28.4s, v31.4s, v31.4s"),
Q!(" add " "v10.4s, v28.4s, v31.4s"),
Q!(" add " "v11.4s, v28.4s, v28.4s"),
Q!(" add " "v12.4s, v11.4s, v31.4s"),
Q!(" add " "v13.4s, v11.4s, v28.4s"),
Q!(" add " "v14.4s, v11.4s, v10.4s"),
Q!(" mov " "x5, x9"),
Q!(" sub " "x5, x5, #0x1"),
Q!(" rev32 " "v29.16b, v0.16b"),
Q!(" add " "v8.4s, v29.4s, v31.4s"),
Q!(" add " "v9.4s, v29.4s, v28.4s"),
Q!(" add " "v15.4s, v29.4s, v10.4s"),
Q!(" add " "v16.4s, v29.4s, v11.4s"),
Q!(" add " "v17.4s, v29.4s, v12.4s"),
Q!(" add " "v18.4s, v29.4s, v13.4s"),
Q!(" add " "v30.4s, v29.4s, v14.4s"),
Q!(" rev32 " "v1.16b, v8.16b"),
Q!(" rev32 " "v2.16b, v9.16b"),
Q!(" rev32 " "v3.16b, v15.16b"),
Q!(" rev32 " "v4.16b, v16.16b"),
Q!(" rev32 " "v5.16b, v17.16b"),
Q!(" rev32 " "v6.16b, v18.16b"),
Q!(" rev32 " "v7.16b, v30.16b"),
Q!(" ldp " "q26, q27, [x11]"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" ldp " "q28, q26, [x11, #32]"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" ldp " "q27, q28, [x11, #64]"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" ldp " "q26, q27, [x11, #96]"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" ldp " "q28, q26, [x11, #128]"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" and " "x5, x5, #0xffffffffffffff80"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" ld1 " "{{ v19.16b }}, [x3]"),
Q!(" ext " "v19.16b, v19.16b, v19.16b, #8"),
Q!(" rev64 " "v19.16b, v19.16b"),
Q!(" ldp " "q27, q28, [x11, #160]"),
Q!(" add " "x4, x0, x1, lsr #3"),
Q!(" add " "x5, x5, x0"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" ldp " "q26, q27, [x11, #192]"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" ldr " "q28, [x11, #224]"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" cmp " "x0, x5"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" b.ge " Label!("L256_dec_tail", 4, After)),
Q!(" ldp " "q8, q9, [x0], #32"),
Q!(" ldp " "q10, q11, [x0], #32"),
Q!(" ldp " "q12, q13, [x0], #32"),
Q!(" ldp " "q14, q15, [x0], #32"),
Q!(" cmp " "x0, x5"),
Q!(" eor3 " "v1.16b, v9.16b, v1.16b, v28.16b"),
Q!(" eor3 " "v0.16b, v8.16b, v0.16b, v28.16b"),
Q!(" stp " "q0, q1, [x2], #32"),
Q!(" rev32 " "v0.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" eor3 " "v3.16b, v11.16b, v3.16b, v28.16b"),
Q!(" eor3 " "v5.16b, v13.16b, v5.16b, v28.16b"),
Q!(" eor3 " "v4.16b, v12.16b, v4.16b, v28.16b"),
Q!(" rev32 " "v1.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" eor3 " "v2.16b, v10.16b, v2.16b, v28.16b"),
Q!(" stp " "q2, q3, [x2], #32"),
Q!(" rev32 " "v2.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" eor3 " "v6.16b, v14.16b, v6.16b, v28.16b"),
Q!(" rev32 " "v3.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" stp " "q4, q5, [x2], #32"),
Q!(" eor3 " "v7.16b, v15.16b, v7.16b, v28.16b"),
Q!(" stp " "q6, q7, [x2], #32"),
Q!(" rev32 " "v4.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" b.ge " Label!("L256_dec_prepretail", 5, After)),
Q!(Label!("L256_dec_main_loop", 6) ":"),
Q!(" rev32 " "v5.16b, v30.16b"),
Q!(" ldp " "q26, q27, [x11]"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" rev64 " "v9.16b, v9.16b"),
Q!(" ldr " "q23, [x6, #144]"),
Q!(" ldr " "q25, [x6, #176]"),
Q!(" rev32 " "v6.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" rev64 " "v8.16b, v8.16b"),
Q!(" ext " "v19.16b, v19.16b, v19.16b, #8"),
Q!(" rev64 " "v12.16b, v12.16b"),
Q!(" rev64 " "v11.16b, v11.16b"),
Q!(" rev32 " "v7.16b, v30.16b"),
Q!(" rev64 " "v15.16b, v15.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" ldp " "q28, q26, [x11, #32]"),
Q!(" eor " "v8.16b, v8.16b, v19.16b"),
Q!(" ldr " "q20, [x6, #96]"),
Q!(" ldr " "q22, [x6, #128]"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" rev64 " "v10.16b, v10.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" trn1 " "v18.2d, v9.2d, v8.2d"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" pmull " "v19.1q, v8.1d, v25.1d"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" ldp " "q27, q28, [x11, #64]"),
Q!(" pmull2 " "v29.1q, v10.2d, v22.2d"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" pmull2 " "v16.1q, v9.2d, v23.2d"),
Q!(" pmull " "v23.1q, v9.1d, v23.1d"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" pmull2 " "v17.1q, v8.2d, v25.2d"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" trn2 " "v8.2d, v9.2d, v8.2d"),
Q!(" pmull2 " "v9.1q, v11.2d, v20.2d"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" eor " "v17.16b, v17.16b, v16.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" ldr " "q21, [x6, #112]"),
Q!(" ldr " "q24, [x6, #160]"),
Q!(" eor " "v8.16b, v8.16b, v18.16b"),
Q!(" pmull " "v22.1q, v10.1d, v22.1d"),
Q!(" ldp " "q26, q27, [x11, #96]"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" eor " "v19.16b, v19.16b, v23.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" eor3 " "v17.16b, v17.16b, v29.16b, v9.16b"),
Q!(" trn1 " "v29.2d, v11.2d, v10.2d"),
Q!(" rev64 " "v13.16b, v13.16b"),
Q!(" pmull2 " "v18.1q, v8.2d, v24.2d"),
Q!(" pmull " "v24.1q, v8.1d, v24.1d"),
Q!(" trn2 " "v10.2d, v11.2d, v10.2d"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" trn1 " "v16.2d, v13.2d, v12.2d"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" eor " "v10.16b, v10.16b, v29.16b"),
Q!(" pmull " "v20.1q, v11.1d, v20.1d"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" pmull2 " "v29.1q, v10.2d, v21.2d"),
Q!(" pmull " "v21.1q, v10.1d, v21.1d"),
Q!(" eor3 " "v19.16b, v19.16b, v22.16b, v20.16b"),
Q!(" ldr " "q23, [x6, #48]"),
Q!(" ldr " "q25, [x6, #80]"),
Q!(" rev64 " "v14.16b, v14.16b"),
Q!(" eor " "v18.16b, v18.16b, v24.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" ldp " "q28, q26, [x11, #128]"),
Q!(" ldr " "q20, [x6]"),
Q!(" ldr " "q22, [x6, #32]"),
Q!(" eor3 " "v18.16b, v18.16b, v21.16b, v29.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" ldr " "q21, [x6, #16]"),
Q!(" ldr " "q24, [x6, #64]"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" pmull2 " "v8.1q, v12.2d, v25.2d"),
Q!(" pmull " "v25.1q, v12.1d, v25.1d"),
Q!(" trn2 " "v12.2d, v13.2d, v12.2d"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" pmull2 " "v10.1q, v13.2d, v23.2d"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" pmull " "v23.1q, v13.1d, v23.1d"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" pmull2 " "v11.1q, v14.2d, v22.2d"),
Q!(" trn1 " "v13.2d, v15.2d, v14.2d"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" ldp " "q27, q28, [x11, #160]"),
Q!(" pmull " "v22.1q, v14.1d, v22.1d"),
Q!(" trn2 " "v14.2d, v15.2d, v14.2d"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" eor3 " "v17.16b, v17.16b, v8.16b, v10.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" eor " "v14.16b, v14.16b, v13.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" ldp " "q8, q9, [x0], #32"),
Q!(" eor " "v12.16b, v12.16b, v16.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" pmull2 " "v13.1q, v14.2d, v21.2d"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" pmull2 " "v16.1q, v12.2d, v24.2d"),
Q!(" pmull " "v24.1q, v12.1d, v24.1d"),
Q!(" pmull2 " "v12.1q, v15.2d, v20.2d"),
Q!(" pmull " "v20.1q, v15.1d, v20.1d"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" pmull " "v21.1q, v14.1d, v21.1d"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v25.16b, v23.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v24.16b, v16.16b"),
Q!(" eor3 " "v17.16b, v17.16b, v11.16b, v12.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v22.16b, v20.16b"),
Q!(" rev32 " "v20.16b, v30.16b"),
Q!(" ldr " "d16, [x10]"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" ldp " "q26, q27, [x11, #192]"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v21.16b, v13.16b"),
Q!(" rev32 " "v22.16b, v30.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" ldp " "q10, q11, [x0], #32"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" ext " "v21.16b, v17.16b, v17.16b, #8"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" rev32 " "v23.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" pmull " "v29.1q, v17.1d, v16.1d"),
Q!(" eor3 " "v18.16b, v18.16b, v17.16b, v19.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" ldr " "q28, [x11, #224]"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v29.16b, v21.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" ldp " "q12, q13, [x0], #32"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" ldp " "q14, q15, [x0], #32"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" rev32 " "v25.16b, v30.16b"),
Q!(" eor3 " "v2.16b, v10.16b, v2.16b, v28.16b"),
Q!(" eor3 " "v1.16b, v9.16b, v1.16b, v28.16b"),
Q!(" ext " "v21.16b, v18.16b, v18.16b, #8"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" pmull " "v17.1q, v18.1d, v16.1d"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" eor3 " "v5.16b, v13.16b, v5.16b, v28.16b"),
Q!(" eor3 " "v0.16b, v8.16b, v0.16b, v28.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" stp " "q0, q1, [x2], #32"),
Q!(" mov " "v0.16b, v20.16b"),
Q!(" eor3 " "v4.16b, v12.16b, v4.16b, v28.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v21.16b, v17.16b"),
Q!(" eor3 " "v3.16b, v11.16b, v3.16b, v28.16b"),
Q!(" stp " "q2, q3, [x2], #32"),
Q!(" mov " "v3.16b, v25.16b"),
Q!(" mov " "v2.16b, v23.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" mov " "v1.16b, v22.16b"),
Q!(" stp " "q4, q5, [x2], #32"),
Q!(" eor3 " "v7.16b, v15.16b, v7.16b, v28.16b"),
Q!(" eor3 " "v6.16b, v14.16b, v6.16b, v28.16b"),
Q!(" rev32 " "v4.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" cmp " "x0, x5"),
Q!(" stp " "q6, q7, [x2], #32"),
Q!(" b.lt " Label!("L256_dec_main_loop", 6, Before)),
Q!(Label!("L256_dec_prepretail", 5) ":"),
Q!(" ldp " "q26, q27, [x11]"),
Q!(" rev32 " "v5.16b, v30.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" rev64 " "v12.16b, v12.16b"),
Q!(" ldr " "q21, [x6, #112]"),
Q!(" ldr " "q24, [x6, #160]"),
Q!(" rev32 " "v6.16b, v30.16b"),
Q!(" rev64 " "v8.16b, v8.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" ext " "v19.16b, v19.16b, v19.16b, #8"),
Q!(" ldr " "q23, [x6, #144]"),
Q!(" ldr " "q25, [x6, #176]"),
Q!(" rev64 " "v9.16b, v9.16b"),
Q!(" rev32 " "v7.16b, v30.16b"),
Q!(" rev64 " "v10.16b, v10.16b"),
Q!(" ldr " "q20, [x6, #96]"),
Q!(" ldr " "q22, [x6, #128]"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" ldp " "q28, q26, [x11, #32]"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v8.16b, v8.16b, v19.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" pmull2 " "v16.1q, v9.2d, v23.2d"),
Q!(" trn1 " "v18.2d, v9.2d, v8.2d"),
Q!(" pmull " "v19.1q, v8.1d, v25.1d"),
Q!(" rev64 " "v11.16b, v11.16b"),
Q!(" pmull " "v23.1q, v9.1d, v23.1d"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" pmull2 " "v17.1q, v8.2d, v25.2d"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" rev64 " "v14.16b, v14.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" pmull2 " "v29.1q, v10.2d, v22.2d"),
Q!(" trn2 " "v8.2d, v9.2d, v8.2d"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" ldp " "q27, q28, [x11, #64]"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" pmull2 " "v9.1q, v11.2d, v20.2d"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" eor " "v17.16b, v17.16b, v16.16b"),
Q!(" eor " "v8.16b, v8.16b, v18.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" pmull " "v22.1q, v10.1d, v22.1d"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" eor3 " "v17.16b, v17.16b, v29.16b, v9.16b"),
Q!(" trn1 " "v29.2d, v11.2d, v10.2d"),
Q!(" trn2 " "v10.2d, v11.2d, v10.2d"),
Q!(" pmull2 " "v18.1q, v8.2d, v24.2d"),
Q!(" pmull " "v20.1q, v11.1d, v20.1d"),
Q!(" eor " "v19.16b, v19.16b, v23.16b"),
Q!(" pmull " "v24.1q, v8.1d, v24.1d"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v22.16b, v20.16b"),
Q!(" ldr " "q20, [x6]"),
Q!(" ldr " "q22, [x6, #32]"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" eor " "v18.16b, v18.16b, v24.16b"),
Q!(" eor " "v10.16b, v10.16b, v29.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" pmull2 " "v29.1q, v10.2d, v21.2d"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" pmull " "v21.1q, v10.1d, v21.1d"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" ldp " "q26, q27, [x11, #96]"),
Q!(" ldr " "q23, [x6, #48]"),
Q!(" ldr " "q25, [x6, #80]"),
Q!(" rev64 " "v15.16b, v15.16b"),
Q!(" rev64 " "v13.16b, v13.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v21.16b, v29.16b"),
Q!(" trn1 " "v16.2d, v13.2d, v12.2d"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "q21, [x6, #16]"),
Q!(" ldr " "q24, [x6, #64]"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" pmull2 " "v8.1q, v12.2d, v25.2d"),
Q!(" pmull2 " "v10.1q, v13.2d, v23.2d"),
Q!(" pmull " "v25.1q, v12.1d, v25.1d"),
Q!(" trn2 " "v12.2d, v13.2d, v12.2d"),
Q!(" pmull " "v23.1q, v13.1d, v23.1d"),
Q!(" trn1 " "v13.2d, v15.2d, v14.2d"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" pmull2 " "v11.1q, v14.2d, v22.2d"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" ldp " "q28, q26, [x11, #128]"),
Q!(" pmull " "v22.1q, v14.1d, v22.1d"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" eor3 " "v17.16b, v17.16b, v8.16b, v10.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" trn2 " "v14.2d, v15.2d, v14.2d"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" eor " "v12.16b, v12.16b, v16.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" eor " "v14.16b, v14.16b, v13.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" pmull2 " "v16.1q, v12.2d, v24.2d"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" pmull " "v24.1q, v12.1d, v24.1d"),
Q!(" pmull2 " "v12.1q, v15.2d, v20.2d"),
Q!(" pmull2 " "v13.1q, v14.2d, v21.2d"),
Q!(" pmull " "v21.1q, v14.1d, v21.1d"),
Q!(" pmull " "v20.1q, v15.1d, v20.1d"),
Q!(" ldp " "q27, q28, [x11, #160]"),
Q!(" eor3 " "v19.16b, v19.16b, v25.16b, v23.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v24.16b, v16.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" eor3 " "v17.16b, v17.16b, v11.16b, v12.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v22.16b, v20.16b"),
Q!(" ldr " "d16, [x10]"),
Q!(" eor3 " "v18.16b, v18.16b, v21.16b, v13.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v17.16b, v19.16b"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" ldp " "q26, q27, [x11, #192]"),
Q!(" ext " "v21.16b, v17.16b, v17.16b, #8"),
Q!(" aese " "v2.16b, v28.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v1.16b, v28.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v0.16b, v28.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" pmull " "v29.1q, v17.1d, v16.1d"),
Q!(" aese " "v3.16b, v28.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" aese " "v7.16b, v28.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v6.16b, v28.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" aese " "v4.16b, v28.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v5.16b, v28.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v3.16b, v26.16b"),
Q!(" aesmc " "v3.16b, v3.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v29.16b, v21.16b"),
Q!(" aese " "v3.16b, v27.16b"),
Q!(" aese " "v2.16b, v26.16b"),
Q!(" aesmc " "v2.16b, v2.16b"),
Q!(" aese " "v6.16b, v26.16b"),
Q!(" aesmc " "v6.16b, v6.16b"),
Q!(" pmull " "v17.1q, v18.1d, v16.1d"),
Q!(" aese " "v4.16b, v26.16b"),
Q!(" aesmc " "v4.16b, v4.16b"),
Q!(" aese " "v7.16b, v26.16b"),
Q!(" aesmc " "v7.16b, v7.16b"),
Q!(" aese " "v0.16b, v26.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "q28, [x11, #224]"),
Q!(" aese " "v1.16b, v26.16b"),
Q!(" aesmc " "v1.16b, v1.16b"),
Q!(" aese " "v4.16b, v27.16b"),
Q!(" ext " "v21.16b, v18.16b, v18.16b, #8"),
Q!(" aese " "v5.16b, v26.16b"),
Q!(" aesmc " "v5.16b, v5.16b"),
Q!(" aese " "v6.16b, v27.16b"),
Q!(" aese " "v2.16b, v27.16b"),
Q!(" aese " "v1.16b, v27.16b"),
Q!(" aese " "v5.16b, v27.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v21.16b, v17.16b"),
Q!(" add " "v30.4s, v30.4s, v31.4s"),
Q!(" aese " "v7.16b, v27.16b"),
Q!(" aese " "v0.16b, v27.16b"),
Q!(Label!("L256_dec_tail", 4) ":"),
Q!(" ext " "v16.16b, v19.16b, v19.16b, #8"),
Q!(" sub " "x5, x4, x0"),
Q!(" cmp " "x5, #0x70"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" ldp " "q24, q25, [x6, #160]"),
Q!(" mov " "v29.16b, v28.16b"),
Q!(" ldp " "q20, q21, [x6, #96]"),
Q!(" eor3 " "v12.16b, v9.16b, v0.16b, v29.16b"),
Q!(" ldp " "q22, q23, [x6, #128]"),
Q!(" b.gt " Label!("L256_dec_exact8_drain", 7, After)),
Q!(" mov " "v7.16b, v6.16b"),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" mov " "v6.16b, v5.16b"),
Q!(" mov " "v5.16b, v4.16b"),
Q!(" mov " "v4.16b, v3.16b"),
Q!(" movi " "v19.8b, #0x0"),
Q!(" movi " "v17.8b, #0x0"),
Q!(" movi " "v18.8b, #0x0"),
Q!(" mov " "v3.16b, v2.16b"),
Q!(" cmp " "x5, #0x60"),
Q!(" mov " "v2.16b, v1.16b"),
Q!(" b.gt " Label!("L256_dec_blocks_more_than_6", 8, After)),
Q!(" mov " "v7.16b, v6.16b"),
Q!(" mov " "v6.16b, v5.16b"),
Q!(" mov " "v5.16b, v4.16b"),
Q!(" cmp " "x5, #0x50"),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" mov " "v4.16b, v3.16b"),
Q!(" mov " "v3.16b, v1.16b"),
Q!(" b.gt " Label!("L256_dec_blocks_more_than_5", 9, After)),
Q!(" cmp " "x5, #0x40"),
Q!(" mov " "v7.16b, v6.16b"),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" mov " "v6.16b, v5.16b"),
Q!(" mov " "v5.16b, v4.16b"),
Q!(" mov " "v4.16b, v1.16b"),
Q!(" b.gt " Label!("L256_dec_blocks_more_than_4", 12, After)),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" mov " "v7.16b, v6.16b"),
Q!(" cmp " "x5, #0x30"),
Q!(" mov " "v6.16b, v5.16b"),
Q!(" mov " "v5.16b, v1.16b"),
Q!(" b.gt " Label!("L256_dec_blocks_more_than_3", 13, After)),
Q!(" ldr " "q24, [x6, #64]"),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" mov " "v7.16b, v6.16b"),
Q!(" cmp " "x5, #0x20"),
Q!(" mov " "v6.16b, v1.16b"),
Q!(" b.gt " Label!("L256_dec_blocks_more_than_2", 14, After)),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" mov " "v7.16b, v1.16b"),
Q!(" cmp " "x5, #0x10"),
Q!(" b.gt " Label!("L256_dec_blocks_more_than_1", 15, After)),
Q!(" sub " "v30.4s, v30.4s, v31.4s"),
Q!(" ldr " "q21, [x6, #16]"),
Q!(" b " Label!("L256_dec_blocks_less_than_1", 16, After)),
Q!(Label!("L256_dec_blocks_more_than_7", 17) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" ext " "v18.16b, v24.16b, v24.16b, #8"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" eor3 " "v12.16b, v9.16b, v1.16b, v29.16b"),
Q!(" pmull2 " "v17.1q, v8.2d, v25.2d"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" movi " "v16.8b, #0x0"),
Q!(" pmull " "v19.1q, v8.1d, v25.1d"),
Q!(" pmull " "v18.1q, v27.1d, v18.1d"),
Q!(Label!("L256_dec_blocks_more_than_6", 8) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" movi " "v16.8b, #0x0"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" pmull2 " "v28.1q, v8.2d, v23.2d"),
Q!(" pmull " "v26.1q, v8.1d, v23.1d"),
Q!(" eor3 " "v12.16b, v9.16b, v2.16b, v29.16b"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" pmull " "v27.1q, v27.1d, v24.1d"),
Q!(" eor " "v18.16b, v18.16b, v27.16b"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(Label!("L256_dec_blocks_more_than_5", 9) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" pmull2 " "v28.1q, v8.2d, v22.2d"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" pmull " "v26.1q, v8.1d, v22.1d"),
Q!(" ext " "v10.16b, v21.16b, v21.16b, #8"),
Q!(" pmull " "v27.1q, v27.1d, v10.1d"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(" eor3 " "v12.16b, v9.16b, v3.16b, v29.16b"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" eor " "v18.16b, v18.16b, v27.16b"),
Q!(" movi " "v16.8b, #0x0"),
Q!(Label!("L256_dec_blocks_more_than_4", 12) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" movi " "v16.8b, #0x0"),
Q!(" pmull " "v26.1q, v8.1d, v20.1d"),
Q!(" pmull2 " "v28.1q, v8.2d, v20.2d"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(" pmull " "v27.1q, v27.1d, v21.1d"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" eor " "v18.16b, v18.16b, v27.16b"),
Q!(" eor3 " "v12.16b, v9.16b, v4.16b, v29.16b"),
Q!(Label!("L256_dec_blocks_more_than_3", 13) ":"),
Q!(" ldr " "q25, [x6, #80]"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" ldr " "q24, [x6, #64]"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" eor3 " "v12.16b, v9.16b, v5.16b, v29.16b"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" ext " "v11.16b, v24.16b, v24.16b, #8"),
Q!(" pmull " "v26.1q, v8.1d, v25.1d"),
Q!(" pmull2 " "v28.1q, v8.2d, v25.2d"),
Q!(" movi " "v16.8b, #0x0"),
Q!(" pmull " "v27.1q, v27.1d, v11.1d"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(" eor " "v18.16b, v18.16b, v27.16b"),
Q!(Label!("L256_dec_blocks_more_than_2", 14) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ldr " "q23, [x6, #48]"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" pmull " "v26.1q, v8.1d, v23.1d"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" eor3 " "v12.16b, v9.16b, v6.16b, v29.16b"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" movi " "v16.8b, #0x0"),
Q!(" pmull " "v27.1q, v27.1d, v24.1d"),
Q!(" pmull2 " "v28.1q, v8.2d, v23.2d"),
Q!(" eor " "v18.16b, v18.16b, v27.16b"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(Label!("L256_dec_blocks_more_than_1", 15) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" ldr " "q22, [x6, #32]"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" ldr " "q21, [x6, #16]"),
Q!(" pmull " "v26.1q, v8.1d, v22.1d"),
Q!(" ext " "v10.16b, v21.16b, v21.16b, #8"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" eor3 " "v12.16b, v9.16b, v7.16b, v29.16b"),
Q!(" pmull2 " "v28.1q, v8.2d, v22.2d"),
Q!(" pmull " "v27.1q, v27.1d, v10.1d"),
Q!(" movi " "v16.8b, #0x0"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(" eor " "v18.16b, v18.16b, v27.16b"),
Q!(Label!("L256_dec_blocks_less_than_1", 16) ":"),
Q!(" rev32 " "v30.16b, v30.16b"),
Q!(" str " "q30, [x16]"),
Q!(" ldr " "q20, [x6]"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ext " "v16.16b, v8.16b, v8.16b, #8"),
Q!(" pmull2 " "v28.1q, v8.2d, v20.2d"),
Q!(" eor " "v16.8b, v16.8b, v8.8b"),
Q!(" pmull " "v26.1q, v8.1d, v20.1d"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(" pmull " "v16.1q, v16.1d, v21.1d"),
Q!(" eor " "v18.16b, v18.16b, v16.16b"),
Q!(" ldr " "d16, [x10]"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(Label!("L256_dec_epilogue", 18) ":"),
Q!(" pmull " "v21.1q, v17.1d, v16.1d"),
Q!(" eor " "v14.16b, v17.16b, v19.16b"),
Q!(" ext " "v17.16b, v17.16b, v17.16b, #8"),
Q!(" st1 " "{{ v12.16b }}, [x2]"),
Q!(" eor " "v18.16b, v18.16b, v14.16b"),
Q!(" eor " "v21.16b, v17.16b, v21.16b"),
Q!(" eor " "v18.16b, v18.16b, v21.16b"),
Q!(" pmull " "v17.1q, v18.1d, v16.1d"),
Q!(" ext " "v18.16b, v18.16b, v18.16b, #8"),
Q!(" eor " "v19.16b, v19.16b, v17.16b"),
Q!(" eor " "v19.16b, v19.16b, v18.16b"),
Q!(" ext " "v19.16b, v19.16b, v19.16b, #8"),
Q!(" rev64 " "v19.16b, v19.16b"),
Q!(" st1 " "{{ v19.16b }}, [x3]"),
Q!(Label!("L256_dec_frame_restore", 19) ":"),
Q!(" mov " "x0, x9"),
Q!(" ldp " "d10, d11, [sp, #16]"),
Q!(" ldp " "d12, d13, [sp, #32]"),
Q!(" ldp " "d14, d15, [sp, #48]"),
Q!(" ldp " "d8, d9, [sp], #80"),
Q!(" b " Label!("exit", 20, After)),
Q!(Label!("L256_dec_exact8_drain", 7) ":"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" ext " "v18.16b, v24.16b, v24.16b, #8"),
Q!(" eor " "v8.16b, v8.16b, v16.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" eor3 " "v12.16b, v9.16b, v1.16b, v29.16b"),
Q!(" pmull2 " "v17.1q, v8.2d, v25.2d"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" pmull " "v19.1q, v8.1d, v25.1d"),
Q!(" pmull " "v18.1q, v27.1d, v18.1d"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" pmull2 " "v13.1q, v8.2d, v23.2d"),
Q!(" pmull " "v14.1q, v8.1d, v23.1d"),
Q!(" eor3 " "v12.16b, v9.16b, v2.16b, v29.16b"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" pmull " "v15.1q, v27.1d, v24.1d"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" pmull2 " "v28.1q, v8.2d, v22.2d"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" pmull " "v26.1q, v8.1d, v22.1d"),
Q!(" ext " "v10.16b, v21.16b, v21.16b, #8"),
Q!(" pmull " "v27.1q, v27.1d, v10.1d"),
Q!(" eor3 " "v17.16b, v17.16b, v28.16b, v13.16b"),
Q!(" eor3 " "v12.16b, v9.16b, v3.16b, v29.16b"),
Q!(" eor3 " "v19.16b, v19.16b, v26.16b, v14.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v27.16b, v15.16b"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" pmull " "v14.1q, v8.1d, v20.1d"),
Q!(" pmull2 " "v13.1q, v8.2d, v20.2d"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" pmull " "v15.1q, v27.1d, v21.1d"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" eor3 " "v12.16b, v9.16b, v4.16b, v29.16b"),
Q!(" ldr " "q25, [x6, #80]"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" ldr " "q24, [x6, #64]"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" eor3 " "v12.16b, v9.16b, v5.16b, v29.16b"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" ext " "v11.16b, v24.16b, v24.16b, #8"),
Q!(" pmull " "v26.1q, v8.1d, v25.1d"),
Q!(" pmull2 " "v28.1q, v8.2d, v25.2d"),
Q!(" pmull " "v27.1q, v27.1d, v11.1d"),
Q!(" eor3 " "v19.16b, v19.16b, v26.16b, v14.16b"),
Q!(" eor3 " "v17.16b, v17.16b, v28.16b, v13.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v27.16b, v15.16b"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ldr " "q23, [x6, #48]"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" pmull " "v14.1q, v8.1d, v23.1d"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" eor3 " "v12.16b, v9.16b, v6.16b, v29.16b"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" pmull " "v15.1q, v27.1d, v24.1d"),
Q!(" pmull2 " "v13.1q, v8.2d, v23.2d"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ext " "v27.16b, v8.16b, v8.16b, #8"),
Q!(" ldr " "q22, [x6, #32]"),
Q!(" eor " "v27.8b, v27.8b, v8.8b"),
Q!(" ldr " "q9, [x0], #16"),
Q!(" st1 " "{{ v12.16b }}, [x2], #16"),
Q!(" ldr " "q21, [x6, #16]"),
Q!(" pmull " "v26.1q, v8.1d, v22.1d"),
Q!(" ext " "v10.16b, v21.16b, v21.16b, #8"),
Q!(" eor3 " "v19.16b, v19.16b, v26.16b, v14.16b"),
Q!(" eor3 " "v12.16b, v9.16b, v7.16b, v29.16b"),
Q!(" pmull2 " "v28.1q, v8.2d, v22.2d"),
Q!(" pmull " "v27.1q, v27.1d, v10.1d"),
Q!(" eor3 " "v17.16b, v17.16b, v28.16b, v13.16b"),
Q!(" eor3 " "v18.16b, v18.16b, v27.16b, v15.16b"),
Q!(" rev32 " "v30.16b, v30.16b"),
Q!(" str " "q30, [x16]"),
Q!(" ldr " "q20, [x6]"),
Q!(" rev64 " "v8.16b, v9.16b"),
Q!(" ext " "v16.16b, v8.16b, v8.16b, #8"),
Q!(" pmull2 " "v28.1q, v8.2d, v20.2d"),
Q!(" eor " "v16.8b, v16.8b, v8.8b"),
Q!(" pmull " "v26.1q, v8.1d, v20.1d"),
Q!(" eor " "v17.16b, v17.16b, v28.16b"),
Q!(" pmull " "v16.1q, v16.1d, v21.1d"),
Q!(" eor " "v18.16b, v18.16b, v16.16b"),
Q!(" ldr " "d16, [x10]"),
Q!(" eor " "v19.16b, v19.16b, v26.16b"),
Q!(" b " Label!("L256_dec_epilogue", 18, Before)),
Q!(Label!("L256_dec_w5r_small", 3) ":"),
Q!(" ld1 " "{{ v30.16b }}, [x16]"),
Q!(" ld1 " "{{ v19.16b }}, [x3]"),
Q!(" mov " "x15, #0x100000000"),
Q!(" movi " "v31.16b, #0x0"),
Q!(" ext " "v19.16b, v19.16b, v19.16b, #8"),
Q!(" rev64 " "v19.16b, v19.16b"),
Q!(" mov " "v31.d[1], x15"),
Q!(" ext " "v16.16b, v19.16b, v19.16b, #8"),
Q!(" rev32 " "v29.16b, v30.16b"),
Q!(" ldp " "q1, q2, [x11]"),
Q!(" ldp " "q3, q4, [x11, #32]"),
Q!(" ldp " "q5, q6, [x11, #64]"),
Q!(" ldp " "q7, q8, [x11, #96]"),
Q!(" ldp " "q9, q10, [x11, #128]"),
Q!(" ldp " "q11, q12, [x11, #160]"),
Q!(" ldp " "q13, q14, [x11, #192]"),
Q!(" ldr " "q15, [x11, #224]"),
Q!(" cmp " "x9, #0x20"),
Q!(" b.gt " Label!("L256_dec_w5r_h1", 21, After)),
Q!(" cmp " "x9, #0x10"),
Q!(" b.eq " Label!("L256_dec_w5r_stub_1", 22, After)),
Q!(" b " Label!("L256_dec_w5r_stub_2", 23, After)),
Q!(Label!("L256_dec_w5r_h1", 21) ":"),
Q!(" cmp " "x9, #0x30"),
Q!(" b.eq " Label!("L256_dec_w5r_stub_3", 24, After)),
Q!(" b " Label!("L256_dec_w5r_stub_4", 25, After)),
Q!(Label!("L256_dec_w5r_stub_4", 25) ":"),
Q!(" ldr " "q24, [x6, #80]"),
Q!(" ldr " "d25, [x6, #72]"),
Q!(" ext " "v21.16b, v16.16b, v16.16b, #8"),
Q!(" eor " "v21.8b, v21.8b, v16.8b"),
Q!(" pmull2 " "v17.1q, v16.2d, v24.2d"),
Q!(" pmull " "v19.1q, v16.1d, v24.1d"),
Q!(" pmull " "v18.1q, v21.1d, v25.1d"),
Q!(" b " Label!("L256_dec_w5r_g4", 26, After)),
Q!(Label!("L256_dec_w5r_stub_3", 24) ":"),
Q!(" ldr " "q24, [x6, #48]"),
Q!(" ldr " "d25, [x6, #64]"),
Q!(" ext " "v21.16b, v16.16b, v16.16b, #8"),
Q!(" eor " "v21.8b, v21.8b, v16.8b"),
Q!(" pmull2 " "v17.1q, v16.2d, v24.2d"),
Q!(" pmull " "v19.1q, v16.1d, v24.1d"),
Q!(" pmull " "v18.1q, v21.1d, v25.1d"),
Q!(" b " Label!("L256_dec_w5r_g3", 27, After)),
Q!(Label!("L256_dec_w5r_stub_2", 23) ":"),
Q!(" ldr " "q24, [x6, #32]"),
Q!(" ldr " "d25, [x6, #24]"),
Q!(" ext " "v21.16b, v16.16b, v16.16b, #8"),
Q!(" eor " "v21.8b, v21.8b, v16.8b"),
Q!(" pmull2 " "v17.1q, v16.2d, v24.2d"),
Q!(" pmull " "v19.1q, v16.1d, v24.1d"),
Q!(" pmull " "v18.1q, v21.1d, v25.1d"),
Q!(" b " Label!("L256_dec_w5r_g2", 28, After)),
Q!(Label!("L256_dec_w5r_stub_1", 22) ":"),
Q!(" ldr " "q24, [x6]"),
Q!(" ldr " "d25, [x6, #16]"),
Q!(" ext " "v21.16b, v16.16b, v16.16b, #8"),
Q!(" eor " "v21.8b, v21.8b, v16.8b"),
Q!(" pmull2 " "v17.1q, v16.2d, v24.2d"),
Q!(" pmull " "v19.1q, v16.1d, v24.1d"),
Q!(" pmull " "v18.1q, v21.1d, v25.1d"),
Q!(" b " Label!("L256_dec_w5r_g1", 29, After)),
Q!(Label!("L256_dec_w5r_g4", 26) ":"),
Q!(" ldr " "q26, [x0], #16"),
Q!(" rev32 " "v0.16b, v29.16b"),
Q!(" add " "v29.4s, v29.4s, v31.4s"),
Q!(" aese " "v0.16b, v1.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "q24, [x6, #80]"),
Q!(" ldr " "d25, [x6, #72]"),
Q!(" rev64 " "v20.16b, v26.16b"),
Q!(" ext " "v21.16b, v20.16b, v20.16b, #8"),
Q!(" aese " "v0.16b, v2.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v3.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v4.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v5.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v21.8b, v21.8b, v20.8b"),
Q!(" pmull2 " "v22.1q, v20.2d, v24.2d"),
Q!(" pmull " "v23.1q, v20.1d, v24.1d"),
Q!(" pmull " "v30.1q, v21.1d, v25.1d"),
Q!(" aese " "v0.16b, v6.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v7.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v8.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v9.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v10.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v17.16b, v17.16b, v22.16b"),
Q!(" eor " "v19.16b, v19.16b, v23.16b"),
Q!(" eor " "v18.16b, v18.16b, v30.16b"),
Q!(" aese " "v0.16b, v11.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v12.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v13.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v14.16b"),
Q!(" eor3 " "v0.16b, v26.16b, v0.16b, v15.16b"),
Q!(" str " "q0, [x2], #16"),
Q!(Label!("L256_dec_w5r_g3", 27) ":"),
Q!(" ldr " "q26, [x0], #16"),
Q!(" rev32 " "v0.16b, v29.16b"),
Q!(" add " "v29.4s, v29.4s, v31.4s"),
Q!(" aese " "v0.16b, v1.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "q24, [x6, #48]"),
Q!(" ldr " "d25, [x6, #64]"),
Q!(" rev64 " "v20.16b, v26.16b"),
Q!(" ext " "v21.16b, v20.16b, v20.16b, #8"),
Q!(" aese " "v0.16b, v2.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v3.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v4.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v5.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v21.8b, v21.8b, v20.8b"),
Q!(" pmull2 " "v22.1q, v20.2d, v24.2d"),
Q!(" pmull " "v23.1q, v20.1d, v24.1d"),
Q!(" pmull " "v30.1q, v21.1d, v25.1d"),
Q!(" aese " "v0.16b, v6.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v7.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v8.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v9.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v10.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v17.16b, v17.16b, v22.16b"),
Q!(" eor " "v19.16b, v19.16b, v23.16b"),
Q!(" eor " "v18.16b, v18.16b, v30.16b"),
Q!(" aese " "v0.16b, v11.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v12.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v13.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v14.16b"),
Q!(" eor3 " "v0.16b, v26.16b, v0.16b, v15.16b"),
Q!(" str " "q0, [x2], #16"),
Q!(Label!("L256_dec_w5r_g2", 28) ":"),
Q!(" ldr " "q26, [x0], #16"),
Q!(" rev32 " "v0.16b, v29.16b"),
Q!(" add " "v29.4s, v29.4s, v31.4s"),
Q!(" aese " "v0.16b, v1.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "q24, [x6, #32]"),
Q!(" ldr " "d25, [x6, #24]"),
Q!(" rev64 " "v20.16b, v26.16b"),
Q!(" ext " "v21.16b, v20.16b, v20.16b, #8"),
Q!(" aese " "v0.16b, v2.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v3.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v4.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v5.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v21.8b, v21.8b, v20.8b"),
Q!(" pmull2 " "v22.1q, v20.2d, v24.2d"),
Q!(" pmull " "v23.1q, v20.1d, v24.1d"),
Q!(" pmull " "v30.1q, v21.1d, v25.1d"),
Q!(" aese " "v0.16b, v6.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v7.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v8.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v9.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v10.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v17.16b, v17.16b, v22.16b"),
Q!(" eor " "v19.16b, v19.16b, v23.16b"),
Q!(" eor " "v18.16b, v18.16b, v30.16b"),
Q!(" aese " "v0.16b, v11.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v12.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v13.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v14.16b"),
Q!(" eor3 " "v0.16b, v26.16b, v0.16b, v15.16b"),
Q!(" str " "q0, [x2], #16"),
Q!(Label!("L256_dec_w5r_g1", 29) ":"),
Q!(" ldr " "q26, [x0], #16"),
Q!(" rev32 " "v0.16b, v29.16b"),
Q!(" add " "v29.4s, v29.4s, v31.4s"),
Q!(" aese " "v0.16b, v1.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "q24, [x6]"),
Q!(" ldr " "d25, [x6, #16]"),
Q!(" rev64 " "v20.16b, v26.16b"),
Q!(" ext " "v21.16b, v20.16b, v20.16b, #8"),
Q!(" aese " "v0.16b, v2.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v21.8b, v21.8b, v20.8b"),
Q!(" pmull2 " "v22.1q, v20.2d, v24.2d"),
Q!(" pmull " "v23.1q, v20.1d, v24.1d"),
Q!(" pmull " "v30.1q, v21.1d, v25.1d"),
Q!(" aese " "v0.16b, v3.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v4.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v17.16b, v17.16b, v22.16b"),
Q!(" eor " "v19.16b, v19.16b, v23.16b"),
Q!(" eor " "v18.16b, v18.16b, v30.16b"),
Q!(" aese " "v0.16b, v5.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" aese " "v0.16b, v6.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ldr " "d16, [x10]"),
Q!(" pmull " "v22.1q, v17.1d, v16.1d"),
Q!(" aese " "v0.16b, v7.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v23.16b, v17.16b, v19.16b"),
Q!(" ext " "v17.16b, v17.16b, v17.16b, #8"),
Q!(" aese " "v0.16b, v8.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v18.16b, v18.16b, v23.16b"),
Q!(" eor " "v22.16b, v17.16b, v22.16b"),
Q!(" aese " "v0.16b, v9.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v18.16b, v18.16b, v22.16b"),
Q!(" pmull " "v17.1q, v18.1d, v16.1d"),
Q!(" aese " "v0.16b, v10.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ext " "v18.16b, v18.16b, v18.16b, #8"),
Q!(" aese " "v0.16b, v11.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" eor " "v19.16b, v19.16b, v17.16b"),
Q!(" eor " "v19.16b, v19.16b, v18.16b"),
Q!(" aese " "v0.16b, v12.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" ext " "v19.16b, v19.16b, v19.16b, #8"),
Q!(" rev64 " "v19.16b, v19.16b"),
Q!(" aese " "v0.16b, v13.16b"),
Q!(" aesmc " "v0.16b, v0.16b"),
Q!(" st1 " "{{ v19.16b }}, [x3]"),
Q!(" rev32 " "v30.16b, v29.16b"),
Q!(" aese " "v0.16b, v14.16b"),
Q!(" str " "q30, [x16]"),
Q!(" eor3 " "v0.16b, v26.16b, v0.16b, v15.16b"),
Q!(" str " "q0, [x2], #16"),
Q!(Label!("L256_dec_w5r_done", 30) ":"),
Q!(" b " Label!("L256_dec_frame_restore", 19, Before)),
Q!(Label!("L256_dec_ret", 2) ":"),
Q!(" mov " "w0, #0x0"),
Q!(" b " Label!("exit", 20, After)),
Q!(Label!("exit", 20) ":"),
inout("x0") inout => _,
inout("x1") blocks * 128 => _,
inout("x2") inout => _,
inout("x3") tag.as_mut_ptr() => _,
inout("x4") ivec.as_mut_ptr() => _,
inout("x5") key.as_ptr() => _,
inout("x6") htable.as_ptr() => _,
out("v0") _,
out("v1") _,
out("v10") _,
out("v11") _,
out("v12") _,
out("v13") _,
out("v14") _,
out("v15") _,
out("v16") _,
out("v17") _,
out("v18") _,
out("v19") _,
out("v2") _,
out("v20") _,
out("v21") _,
out("v22") _,
out("v23") _,
out("v24") _,
out("v25") _,
out("v26") _,
out("v27") _,
out("v28") _,
out("v29") _,
out("v3") _,
out("v30") _,
out("v31") _,
out("v4") _,
out("v5") _,
out("v6") _,
out("v7") _,
out("v8") _,
out("v9") _,
out("x10") _,
out("x11") _,
out("x15") _,
out("x16") _,
out("x9") _,
)
};
}