pq_crypto 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/SECURITY.md +7 -0
- data/ext/pqcrypto/pqcrypto_version.h +1 -1
- data/ext/pqcrypto/vendor/.vendored +4 -4
- data/ext/pqcrypto/vendor/mldsa-native/README.md +23 -10
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/README.md +23 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +114 -58
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +498 -461
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +145 -85
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +456 -422
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +47 -25
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +26 -14
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +56 -81
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +17 -24
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +33 -40
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +67 -87
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +19 -14
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +13 -5
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +84 -10
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +10 -5
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +6 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +22 -15
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +376 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +204 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +259 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +1077 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +987 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +16 -10
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +2 -1
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +1 -1
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +4 -2
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +2 -2
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +1 -1
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +60 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +48 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +18 -1
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +658 -582
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +5 -100
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +26 -25
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +334 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +355 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +8 -3
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/{xkcp.h → keccak_f1600_x4_avx2.h} +11 -8
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h +44 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +454 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccakf1600_constants.c +52 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +37 -28
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +213 -196
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +248 -64
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt_aarch64_asm.S +753 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S +129 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S +145 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S +177 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt_aarch64_asm.S +653 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery_aarch64_asm.S +84 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_aarch64_asm.S +53 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_aarch64_asm.S +55 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_aarch64_asm.S +86 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_aarch64_asm.S +86 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_aarch64_asm.S +103 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_aarch64_asm.S +111 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_aarch64_asm.S +75 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_aarch64_asm.S +72 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +23 -11
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_aarch64_asm.S +189 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_aarch64_asm.S +137 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_aarch64_asm.S +130 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +520 -516
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +34 -33
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +202 -242
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +25 -17
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +112 -28
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +1 -1
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +1 -1
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt_avx2_asm.S +2311 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt_avx2_asm.S +2383 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack_avx2_asm.S +238 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4_avx2_asm.S +139 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5_avx2_asm.S +155 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7_avx2_asm.S +187 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_avx2_asm.S +130 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2_asm.S +190 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +6 -4
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +6 -4
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +9 -8
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +10 -9
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +8 -5
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +8 -5
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +6 -4
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +6 -4
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +130 -129
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +109 -180
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +169 -150
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +56 -40
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +149 -164
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +52 -57
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +132 -167
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +57 -424
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +167 -474
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.c +308 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.h +653 -0
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +22 -29
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +37 -43
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +511 -367
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +456 -417
- data/lib/pq_crypto/version.rb +1 -1
- data/script/vendor_libs.rb +3 -3
- metadata +41 -35
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +0 -376
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +0 -204
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +0 -259
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +0 -1077
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +0 -987
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +0 -488
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +0 -16
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +0 -753
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +0 -129
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +0 -145
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +0 -177
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +0 -653
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +0 -79
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +0 -53
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +0 -55
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +0 -85
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +0 -85
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +0 -102
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +0 -110
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +0 -72
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +0 -69
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +0 -189
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +0 -135
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +0 -128
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +0 -2311
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +0 -2383
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +0 -239
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +0 -131
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +0 -139
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +0 -155
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +0 -187
- data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +0 -61
data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
/*yaml
|
|
9
9
|
Name: keccak_f1600_x4_mve_asm
|
|
10
|
-
Description: Armv8.1-M MVE implementation of
|
|
10
|
+
Description: Armv8.1-M MVE implementation of batched (x4) Keccak-f[1600] permutation using bit-interleaved state
|
|
11
11
|
Signature: void mld_keccak_f1600_x4_mve_asm(void *state, void *tmpstate, const uint32_t *rc)
|
|
12
12
|
ABI:
|
|
13
13
|
r0:
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
size_bytes: 800
|
|
16
16
|
permissions: read/write
|
|
17
17
|
c_parameter: void *state
|
|
18
|
-
description:
|
|
18
|
+
description: Bit-interleaved state for 4 Keccak instances (even halves followed by odd halves)
|
|
19
19
|
r1:
|
|
20
20
|
type: buffer
|
|
21
21
|
size_bytes: 800
|
|
@@ -29,10 +29,40 @@
|
|
|
29
29
|
c_parameter: const uint32_t *rc
|
|
30
30
|
description: Keccak round constants in bit-interleaved form (24 pairs of 32-bit words)
|
|
31
31
|
Stack:
|
|
32
|
-
bytes:
|
|
33
|
-
description: register preservation (
|
|
32
|
+
bytes: 228
|
|
33
|
+
description: register preservation (36) + SIMD registers (64) + temporary storage (128)
|
|
34
34
|
*/
|
|
35
35
|
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// Bit-interleaving background
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Each 64-bit Keccak lane is stored as two 32-bit words:
|
|
40
|
+
// even half -- bits 0, 2, 4, ..., 62 of the lane
|
|
41
|
+
// odd half -- bits 1, 3, 5, ..., 63 of the lane
|
|
42
|
+
// This representation allows 64-bit lane rotations (used in the Keccak
|
|
43
|
+
// round function) to be implemented as pairs of 32-bit rotations.
|
|
44
|
+
//
|
|
45
|
+
// Batched (x4) processing:
|
|
46
|
+
// Four Keccak instances are processed as a batch. Their states are
|
|
47
|
+
// stored interleaved in a single 800-byte buffer: first the even
|
|
48
|
+
// halves of all 25 lanes (400 bytes), then the odd halves (400 bytes).
|
|
49
|
+
// Within each 16-byte row, the four u32 words correspond to
|
|
50
|
+
// instances 0..3 of the same lane, enabling SIMD-parallel operations
|
|
51
|
+
// across all four instances.
|
|
52
|
+
//
|
|
53
|
+
// State memory layout (25 lanes x 4 instances x 2 halves):
|
|
54
|
+
// S[i][l]_even/odd = even/odd half of lane l, instance i (u32)
|
|
55
|
+
// Each row is 16 bytes (one Q-register).
|
|
56
|
+
// Offset Contents
|
|
57
|
+
// 0 S[0][ 0]_even, S[1][ 0]_even, S[2][ 0]_even, S[3][ 0]_even
|
|
58
|
+
// 16 S[0][ 1]_even, S[1][ 1]_even, S[2][ 1]_even, S[3][ 1]_even
|
|
59
|
+
// ...
|
|
60
|
+
// 384 S[0][24]_even, S[1][24]_even, S[2][24]_even, S[3][24]_even
|
|
61
|
+
// 400 S[0][ 0]_odd, S[1][ 0]_odd, S[2][ 0]_odd, S[3][ 0]_odd
|
|
62
|
+
// 416 S[0][ 1]_odd, S[1][ 1]_odd, S[2][ 1]_odd, S[3][ 1]_odd
|
|
63
|
+
// ...
|
|
64
|
+
// 784 S[0][24]_odd, S[1][24]_odd, S[2][24]_odd, S[3][24]_odd
|
|
65
|
+
|
|
36
66
|
#include "../../../../common.h"
|
|
37
67
|
#if defined(MLD_FIPS202_ARMV81M_NEED_X4) && \
|
|
38
68
|
!defined(MLD_CONFIG_MULTILEVEL_NO_SHARED)
|
|
@@ -50,589 +80,635 @@
|
|
|
50
80
|
.global MLD_ASM_NAMESPACE(keccak_f1600_x4_mve_asm)
|
|
51
81
|
MLD_ASM_FN_SYMBOL(keccak_f1600_x4_mve_asm)
|
|
52
82
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
83
|
+
.cfi_startproc
|
|
84
|
+
push.w {r4, r5, r6, r7, r8, r9, r10, r11, lr}
|
|
85
|
+
.cfi_adjust_cfa_offset 0x24
|
|
86
|
+
.cfi_rel_offset r4, 0x0
|
|
87
|
+
.cfi_rel_offset r5, 0x4
|
|
88
|
+
.cfi_rel_offset r6, 0x8
|
|
89
|
+
.cfi_rel_offset r7, 0xc
|
|
90
|
+
.cfi_rel_offset r8, 0x10
|
|
91
|
+
.cfi_rel_offset r9, 0x14
|
|
92
|
+
.cfi_rel_offset r10, 0x18
|
|
93
|
+
.cfi_rel_offset r11, 0x1c
|
|
94
|
+
.cfi_rel_offset lr, 0x20
|
|
95
|
+
vpush {d8, d9, d10, d11, d12, d13, d14, d15}
|
|
96
|
+
.cfi_adjust_cfa_offset 0x40
|
|
97
|
+
.cfi_rel_offset d8, 0x0
|
|
98
|
+
.cfi_rel_offset d9, 0x8
|
|
99
|
+
.cfi_rel_offset d10, 0x10
|
|
100
|
+
.cfi_rel_offset d11, 0x18
|
|
101
|
+
.cfi_rel_offset d12, 0x20
|
|
102
|
+
.cfi_rel_offset d13, 0x28
|
|
103
|
+
.cfi_rel_offset d14, 0x30
|
|
104
|
+
.cfi_rel_offset d15, 0x38
|
|
105
|
+
sub sp, #0x80
|
|
106
|
+
.cfi_adjust_cfa_offset 0x80
|
|
107
|
+
mov r6, r2
|
|
108
|
+
mov.w lr, #0x18
|
|
109
|
+
mov r2, r0
|
|
110
|
+
mov r4, r1
|
|
111
|
+
add.w r3, r2, #0x190
|
|
112
|
+
vldrw.u32 q0, [r3]
|
|
113
|
+
vldrw.u32 q1, [r2]
|
|
114
|
+
vldrw.u32 q2, [r2, #32]
|
|
115
|
+
wls lr, lr, Lkeccak_f1600_x4_mve_asm_roundend @ imm = #0x8c0
|
|
65
116
|
|
|
66
|
-
|
|
67
|
-
vldrw.u32
|
|
68
|
-
veor
|
|
69
|
-
vldrw.u32
|
|
70
|
-
veor
|
|
71
|
-
add.w
|
|
72
|
-
vldrw.u32
|
|
73
|
-
veor
|
|
74
|
-
vldrw.u32
|
|
75
|
-
veor
|
|
76
|
-
vldrw.u32
|
|
77
|
-
veor
|
|
78
|
-
vldrw.u32
|
|
79
|
-
veor
|
|
80
|
-
vldrw.u32
|
|
81
|
-
veor
|
|
82
|
-
vldrw.u32
|
|
83
|
-
veor
|
|
84
|
-
vldrw.u32
|
|
85
|
-
veor
|
|
86
|
-
vldrw.u32
|
|
87
|
-
veor
|
|
88
|
-
vldrw.u32
|
|
89
|
-
veor
|
|
90
|
-
vldrw.u32
|
|
91
|
-
veor
|
|
92
|
-
vldrw.u32
|
|
93
|
-
veor
|
|
94
|
-
vldrw.u32
|
|
95
|
-
veor
|
|
96
|
-
vstrw.32
|
|
97
|
-
vshr.u32
|
|
98
|
-
add.w
|
|
99
|
-
vsli.32
|
|
100
|
-
vldrw.u32
|
|
101
|
-
veor
|
|
102
|
-
vldrw.u32
|
|
103
|
-
veor
|
|
104
|
-
vldrw.u32
|
|
105
|
-
veor
|
|
106
|
-
vldrw.u32
|
|
107
|
-
veor
|
|
108
|
-
vstrw.32
|
|
109
|
-
vshr.u32
|
|
110
|
-
vsli.32
|
|
111
|
-
vldrw.u32
|
|
112
|
-
veor
|
|
113
|
-
veor
|
|
114
|
-
vldrw.u32
|
|
115
|
-
veor
|
|
116
|
-
vstrw.32
|
|
117
|
-
vshr.u32
|
|
118
|
-
vsli.32
|
|
119
|
-
vldrw.u32
|
|
120
|
-
veor
|
|
121
|
-
vstrw.32
|
|
122
|
-
vshr.u32
|
|
123
|
-
vsli.32
|
|
124
|
-
vldrw.u32
|
|
125
|
-
veor
|
|
126
|
-
vldrw.u32
|
|
127
|
-
veor
|
|
128
|
-
vstrw.32
|
|
129
|
-
vshr.u32
|
|
130
|
-
vsli.32
|
|
131
|
-
vldrw.u32
|
|
132
|
-
veor
|
|
133
|
-
vstrw.32
|
|
134
|
-
vshr.u32
|
|
135
|
-
vsli.32
|
|
136
|
-
vldrw.u32
|
|
137
|
-
veor
|
|
138
|
-
vstrw.32
|
|
139
|
-
vshr.u32
|
|
140
|
-
vsli.32
|
|
141
|
-
vldrw.u32
|
|
142
|
-
veor
|
|
143
|
-
vstrw.32
|
|
144
|
-
vshr.u32
|
|
145
|
-
vsli.32
|
|
146
|
-
vldrw.u32
|
|
147
|
-
veor
|
|
148
|
-
vstrw.32
|
|
149
|
-
vshr.u32
|
|
150
|
-
vldrw.u32
|
|
151
|
-
vsli.32
|
|
152
|
-
vldrw.u32
|
|
153
|
-
vshr.u32
|
|
154
|
-
vstrw.32
|
|
155
|
-
vsli.32
|
|
156
|
-
veor
|
|
157
|
-
vldrw.u32
|
|
158
|
-
veor
|
|
159
|
-
vldrw.u32
|
|
160
|
-
veor
|
|
161
|
-
vldrw.u32
|
|
162
|
-
veor
|
|
163
|
-
vstrw.32
|
|
164
|
-
vshr.u32
|
|
165
|
-
vsli.32
|
|
166
|
-
vldrw.u32
|
|
167
|
-
veor
|
|
168
|
-
vldrw.u32
|
|
169
|
-
veor
|
|
170
|
-
vldrw.u32
|
|
171
|
-
veor
|
|
172
|
-
vldrw.u32
|
|
173
|
-
veor
|
|
174
|
-
vldrw.u32
|
|
175
|
-
veor
|
|
176
|
-
vldrw.u32
|
|
177
|
-
veor
|
|
178
|
-
vldrw.u32
|
|
179
|
-
veor
|
|
180
|
-
vshr.u32
|
|
181
|
-
vsli.32
|
|
182
|
-
vldrw.u32
|
|
183
|
-
veor
|
|
184
|
-
vstrw.32
|
|
185
|
-
vshr.u32
|
|
186
|
-
vsli.32
|
|
187
|
-
vldrw.u32
|
|
188
|
-
veor
|
|
189
|
-
vstrw.32
|
|
190
|
-
vshr.u32
|
|
191
|
-
vsli.32
|
|
192
|
-
veor
|
|
193
|
-
vstrw.32
|
|
194
|
-
vshr.u32
|
|
195
|
-
vsli.32
|
|
196
|
-
vldrw.u32
|
|
197
|
-
veor
|
|
198
|
-
vstrw.32
|
|
199
|
-
vshr.u32
|
|
200
|
-
vsli.32
|
|
201
|
-
vldrw.u32
|
|
202
|
-
veor
|
|
203
|
-
vldrw.u32
|
|
204
|
-
veor
|
|
205
|
-
vshr.u32
|
|
206
|
-
vstrw.32
|
|
207
|
-
vsli.32
|
|
208
|
-
vshr.u32
|
|
209
|
-
vldrw.u32
|
|
210
|
-
vsli.32
|
|
211
|
-
vstrw.32
|
|
212
|
-
veor
|
|
213
|
-
vstrw.32
|
|
214
|
-
vshr.u32
|
|
215
|
-
vsli.32
|
|
216
|
-
vldrw.u32
|
|
217
|
-
veor
|
|
218
|
-
vldrw.u32
|
|
219
|
-
veor
|
|
220
|
-
vstrw.32
|
|
221
|
-
vshr.u32
|
|
222
|
-
vsli.32
|
|
223
|
-
vldrw.u32
|
|
224
|
-
vshr.u32
|
|
225
|
-
vldrw.u32
|
|
226
|
-
vsli.32
|
|
227
|
-
vldrw.u32
|
|
228
|
-
veor
|
|
229
|
-
vldrw.u32
|
|
230
|
-
veor
|
|
231
|
-
vldrw.u32
|
|
232
|
-
veor
|
|
233
|
-
vstrw.32
|
|
234
|
-
veor
|
|
235
|
-
vstrw.32
|
|
236
|
-
vshr.u32
|
|
237
|
-
vsli.32
|
|
238
|
-
vldrw.u32
|
|
239
|
-
veor
|
|
240
|
-
vldrw.u32
|
|
241
|
-
veor
|
|
242
|
-
vldrw.u32
|
|
243
|
-
veor
|
|
244
|
-
vldrw.u32
|
|
245
|
-
veor
|
|
246
|
-
vldrw.u32
|
|
247
|
-
veor
|
|
248
|
-
vldrw.u32
|
|
249
|
-
veor
|
|
250
|
-
vldrw.u32
|
|
251
|
-
veor
|
|
252
|
-
veor
|
|
253
|
-
vshr.u32
|
|
254
|
-
vsli.32
|
|
255
|
-
vldrw.u32
|
|
256
|
-
veor
|
|
257
|
-
vstrw.32
|
|
258
|
-
vshr.u32
|
|
259
|
-
vsli.32
|
|
260
|
-
vldrw.u32
|
|
261
|
-
veor
|
|
262
|
-
vstrw.32
|
|
263
|
-
vshr.u32
|
|
264
|
-
vsli.32
|
|
265
|
-
vldrw.u32
|
|
266
|
-
veor
|
|
267
|
-
vstrw.32
|
|
268
|
-
vshr.u32
|
|
269
|
-
vsli.32
|
|
270
|
-
vldrw.u32
|
|
271
|
-
veor
|
|
272
|
-
vstrw.32
|
|
273
|
-
vshr.u32
|
|
274
|
-
vsli.32
|
|
275
|
-
vldrw.u32
|
|
276
|
-
veor
|
|
277
|
-
vstrw.32
|
|
278
|
-
vshr.u32
|
|
279
|
-
vsli.32
|
|
280
|
-
vldrw.u32
|
|
281
|
-
veor
|
|
282
|
-
vstrw.32
|
|
283
|
-
vshr.u32
|
|
284
|
-
vsli.32
|
|
285
|
-
vldrw.u32
|
|
286
|
-
veor
|
|
287
|
-
vstrw.32
|
|
288
|
-
vshr.u32
|
|
289
|
-
vsli.32
|
|
290
|
-
vldrw.u32
|
|
291
|
-
veor
|
|
292
|
-
vldrw.u32
|
|
293
|
-
vshr.u32
|
|
294
|
-
vstrw.32
|
|
295
|
-
vsli.32
|
|
296
|
-
vshr.u32
|
|
297
|
-
vldrw.u32
|
|
298
|
-
vsli.32
|
|
299
|
-
vldrw.u32
|
|
300
|
-
veor
|
|
301
|
-
vldrw.u32
|
|
302
|
-
veor
|
|
303
|
-
vldrw.u32
|
|
304
|
-
veor
|
|
305
|
-
vldrw.u32
|
|
306
|
-
veor
|
|
307
|
-
vldrw.u32
|
|
308
|
-
veor
|
|
309
|
-
veor
|
|
310
|
-
vldrw.u32
|
|
311
|
-
veor
|
|
312
|
-
vldrw.u32
|
|
313
|
-
veor
|
|
314
|
-
vldrw.u32
|
|
315
|
-
veor
|
|
316
|
-
vstrw.32
|
|
317
|
-
vshr.u32
|
|
318
|
-
vstrw.32
|
|
319
|
-
vsli.32
|
|
320
|
-
veor
|
|
321
|
-
vldrw.u32
|
|
322
|
-
veor
|
|
323
|
-
vldrw.u32
|
|
324
|
-
veor
|
|
325
|
-
vldrw.u32
|
|
326
|
-
vshr.u32
|
|
327
|
-
vsli.32
|
|
328
|
-
veor
|
|
329
|
-
vstrw.32
|
|
330
|
-
vshr.u32
|
|
331
|
-
vsli.32
|
|
332
|
-
vldrw.u32
|
|
333
|
-
veor
|
|
334
|
-
vstrw.32
|
|
335
|
-
vshr.u32
|
|
336
|
-
vsli.32
|
|
337
|
-
vldrw.u32
|
|
338
|
-
veor
|
|
339
|
-
vstrw.32
|
|
340
|
-
veor
|
|
341
|
-
vshr.u32
|
|
342
|
-
vldrw.u32
|
|
343
|
-
vsli.32
|
|
344
|
-
veor
|
|
345
|
-
vstrw.32
|
|
346
|
-
vshr.u32
|
|
347
|
-
vsli.32
|
|
348
|
-
vldrw.u32
|
|
349
|
-
vshr.u32
|
|
350
|
-
vstrw.32
|
|
351
|
-
vsli.32
|
|
352
|
-
veor
|
|
353
|
-
vldrw.u32
|
|
354
|
-
veor
|
|
355
|
-
vldrw.u32
|
|
356
|
-
veor
|
|
357
|
-
vldrw.u32
|
|
358
|
-
veor
|
|
359
|
-
vstrw.32
|
|
360
|
-
vshr.u32
|
|
361
|
-
vsli.32
|
|
362
|
-
vldrw.u32
|
|
363
|
-
vshr.u32
|
|
364
|
-
vstrw.32
|
|
365
|
-
vsli.32
|
|
366
|
-
vshr.u32
|
|
367
|
-
vstrw.32
|
|
368
|
-
vsli.32
|
|
369
|
-
vshr.u32
|
|
370
|
-
vstrw.32
|
|
371
|
-
vsli.32
|
|
372
|
-
vshr.u32
|
|
373
|
-
vstrw.32
|
|
374
|
-
vsli.32
|
|
375
|
-
veor
|
|
376
|
-
vldrw.u32
|
|
377
|
-
veor
|
|
378
|
-
vldrw.u32
|
|
379
|
-
vshr.u32
|
|
380
|
-
vldrw.u32
|
|
381
|
-
vsli.32
|
|
382
|
-
vldrw.u32
|
|
383
|
-
veor
|
|
384
|
-
vstrw.32
|
|
385
|
-
veor
|
|
386
|
-
veor
|
|
387
|
-
vldrw.u32
|
|
388
|
-
vshr.u32
|
|
389
|
-
vldrw.u32
|
|
390
|
-
vsli.32
|
|
391
|
-
vshr.u32
|
|
392
|
-
vstrw.32
|
|
393
|
-
vsli.32
|
|
394
|
-
vshr.u32
|
|
395
|
-
vstrw.32
|
|
396
|
-
vsli.32
|
|
397
|
-
veor
|
|
398
|
-
vldrw.u32
|
|
399
|
-
veor
|
|
400
|
-
veor
|
|
401
|
-
vstrw.32
|
|
402
|
-
vshr.u32
|
|
403
|
-
vsli.32
|
|
404
|
-
vldrw.u32
|
|
405
|
-
veor
|
|
406
|
-
vldrw.u32
|
|
407
|
-
veor
|
|
408
|
-
vldrw.u32
|
|
409
|
-
veor
|
|
410
|
-
vstrw.32
|
|
411
|
-
vshr.u32
|
|
412
|
-
vsli.32
|
|
413
|
-
vldrw.u32
|
|
414
|
-
vshr.u32
|
|
415
|
-
vstrw.32
|
|
416
|
-
vsli.32
|
|
417
|
-
vshr.u32
|
|
418
|
-
vsli.32
|
|
419
|
-
vldrw.u32
|
|
420
|
-
vshr.u32
|
|
421
|
-
vsli.32
|
|
422
|
-
vldrw.u32
|
|
423
|
-
vbic
|
|
424
|
-
vstrw.32
|
|
425
|
-
vbic
|
|
426
|
-
veor
|
|
427
|
-
vstrw.32
|
|
428
|
-
vbic
|
|
429
|
-
veor
|
|
430
|
-
vldrw.u32
|
|
431
|
-
vbic
|
|
432
|
-
vstrw.32
|
|
433
|
-
veor
|
|
434
|
-
vstrw.32
|
|
435
|
-
veor
|
|
436
|
-
vstrw.32
|
|
437
|
-
vbic
|
|
438
|
-
vshr.u32
|
|
439
|
-
vldrw.u32
|
|
440
|
-
vsli.32
|
|
441
|
-
vldrw.u32
|
|
442
|
-
veor
|
|
443
|
-
vldrw.u32
|
|
444
|
-
vbic
|
|
445
|
-
vldrw.u32
|
|
446
|
-
veor
|
|
447
|
-
vstrw.32
|
|
448
|
-
vbic
|
|
449
|
-
vstrw.32
|
|
450
|
-
veor
|
|
451
|
-
vstrw.32
|
|
452
|
-
vbic
|
|
453
|
-
vbic
|
|
454
|
-
vldrw.u32
|
|
455
|
-
veor
|
|
456
|
-
vbic
|
|
457
|
-
vldrw.u32
|
|
458
|
-
veor
|
|
459
|
-
vldrw.u32
|
|
460
|
-
veor
|
|
461
|
-
vstrw.32
|
|
462
|
-
vbic
|
|
463
|
-
vstrw.32
|
|
464
|
-
veor
|
|
465
|
-
vstrw.32
|
|
466
|
-
vbic
|
|
467
|
-
vstrw.32
|
|
468
|
-
vbic
|
|
469
|
-
vldrw.u32
|
|
470
|
-
veor
|
|
471
|
-
vldrw.u32
|
|
472
|
-
vbic
|
|
473
|
-
vldrw.u32
|
|
474
|
-
veor
|
|
475
|
-
vstrw.32
|
|
476
|
-
vbic
|
|
477
|
-
vstrw.32
|
|
478
|
-
veor
|
|
479
|
-
vldrw.u32
|
|
480
|
-
veor
|
|
481
|
-
vldrw.u32
|
|
482
|
-
vbic
|
|
483
|
-
vldrw.u32
|
|
484
|
-
veor
|
|
485
|
-
vstrw.32
|
|
486
|
-
vbic
|
|
487
|
-
vstrw.32
|
|
488
|
-
veor
|
|
489
|
-
vstrw.32
|
|
490
|
-
vbic
|
|
491
|
-
vstrw.32
|
|
492
|
-
veor
|
|
493
|
-
vstrw.32
|
|
494
|
-
vbic
|
|
495
|
-
vldrw.u32
|
|
496
|
-
vbic
|
|
497
|
-
vldrw.u32
|
|
498
|
-
veor
|
|
499
|
-
vldrw.u32
|
|
500
|
-
veor
|
|
501
|
-
vldrw.u32
|
|
502
|
-
vbic
|
|
503
|
-
vstrw.32
|
|
504
|
-
veor
|
|
505
|
-
vstrw.32
|
|
506
|
-
vbic
|
|
507
|
-
vstrw.32
|
|
508
|
-
vbic
|
|
509
|
-
veor
|
|
510
|
-
vldrw.u32
|
|
511
|
-
veor
|
|
512
|
-
vldrw.u32
|
|
513
|
-
vbic
|
|
514
|
-
vstrw.32
|
|
515
|
-
vbic
|
|
516
|
-
vstrw.32
|
|
517
|
-
veor
|
|
518
|
-
vstrw.32
|
|
519
|
-
veor
|
|
520
|
-
vstrw.32
|
|
521
|
-
vldrw.u32
|
|
522
|
-
vbic
|
|
523
|
-
vldrw.u32
|
|
524
|
-
veor
|
|
525
|
-
vldrw.u32
|
|
526
|
-
vbic
|
|
527
|
-
vldrw.u32
|
|
528
|
-
vbic
|
|
529
|
-
vldrw.u32
|
|
530
|
-
veor
|
|
531
|
-
vstrw.32
|
|
532
|
-
vbic
|
|
533
|
-
vstrw.32
|
|
534
|
-
veor
|
|
535
|
-
vldrw.u32
|
|
536
|
-
vbic
|
|
537
|
-
vldrw.u32
|
|
538
|
-
veor
|
|
539
|
-
vldrw.u32
|
|
540
|
-
veor
|
|
541
|
-
vstrw.32
|
|
542
|
-
vbic
|
|
543
|
-
vstrw.32
|
|
544
|
-
veor
|
|
545
|
-
vstrw.32
|
|
546
|
-
vbic
|
|
547
|
-
vstrw.32
|
|
548
|
-
veor
|
|
549
|
-
vstrw.32
|
|
550
|
-
vbic
|
|
551
|
-
vldrw.u32
|
|
552
|
-
vbic
|
|
553
|
-
vldrw.u32
|
|
554
|
-
veor
|
|
555
|
-
vldrw.u32
|
|
556
|
-
vbic
|
|
557
|
-
vstrw.32
|
|
558
|
-
veor
|
|
559
|
-
vstrw.32
|
|
560
|
-
veor
|
|
561
|
-
vstrw.32
|
|
562
|
-
vbic
|
|
563
|
-
vldrw.u32
|
|
564
|
-
vbic
|
|
565
|
-
vldrw.u32
|
|
566
|
-
vbic
|
|
567
|
-
vldrw.u32
|
|
568
|
-
veor
|
|
569
|
-
vldrw.u32
|
|
570
|
-
veor
|
|
571
|
-
vstrw.32
|
|
572
|
-
veor
|
|
573
|
-
vstrw.32
|
|
574
|
-
vbic
|
|
575
|
-
vstrw.32
|
|
576
|
-
veor
|
|
577
|
-
vstrw.32
|
|
578
|
-
vbic
|
|
579
|
-
veor
|
|
580
|
-
vldrw.u32
|
|
581
|
-
vbic
|
|
582
|
-
vldrw.u32
|
|
583
|
-
vbic
|
|
584
|
-
vldrw.u32
|
|
585
|
-
veor
|
|
586
|
-
vldrw.u32
|
|
587
|
-
veor
|
|
588
|
-
vstrw.32
|
|
589
|
-
vbic
|
|
590
|
-
vstrw.32
|
|
591
|
-
veor
|
|
592
|
-
vstrw.32
|
|
593
|
-
vbic
|
|
594
|
-
veor
|
|
595
|
-
vldrw.u32
|
|
596
|
-
vbic
|
|
597
|
-
vldrw.u32
|
|
598
|
-
vbic
|
|
599
|
-
vldrw.u32
|
|
600
|
-
veor
|
|
601
|
-
vstrw.32
|
|
602
|
-
veor
|
|
603
|
-
vbic
|
|
604
|
-
vldrw.u32
|
|
605
|
-
veor
|
|
606
|
-
ldrd
|
|
607
|
-
vbic
|
|
608
|
-
vstrw.32
|
|
609
|
-
vdup.32
|
|
610
|
-
veor
|
|
611
|
-
vldrw.u32
|
|
612
|
-
veor
|
|
613
|
-
add.w
|
|
614
|
-
vbic
|
|
615
|
-
vstrw.32
|
|
616
|
-
vbic
|
|
617
|
-
vstrw.32
|
|
618
|
-
veor
|
|
619
|
-
vstrw.32
|
|
620
|
-
veor
|
|
621
|
-
vstrw.32
|
|
622
|
-
vdup.32
|
|
623
|
-
vstrw.32
|
|
624
|
-
veor
|
|
625
|
-
vstrw.32
|
|
117
|
+
Lkeccak_f1600_x4_mve_asm_roundstart:
|
|
118
|
+
vldrw.u32 q6, [r2, #112]
|
|
119
|
+
veor q7, q6, q2
|
|
120
|
+
vldrw.u32 q2, [r2, #80]
|
|
121
|
+
veor q1, q2, q1
|
|
122
|
+
add.w r5, r2, #0x190
|
|
123
|
+
vldrw.u32 q5, [r5, #80]
|
|
124
|
+
veor q4, q5, q0
|
|
125
|
+
vldrw.u32 q0, [r2, #192]
|
|
126
|
+
veor q3, q7, q0
|
|
127
|
+
vldrw.u32 q0, [r2, #160]
|
|
128
|
+
veor q1, q1, q0
|
|
129
|
+
vldrw.u32 q0, [r5, #160]
|
|
130
|
+
veor q0, q4, q0
|
|
131
|
+
vldrw.u32 q6, [r2, #272]
|
|
132
|
+
veor q2, q3, q6
|
|
133
|
+
vldrw.u32 q7, [r2, #240]
|
|
134
|
+
veor q5, q1, q7
|
|
135
|
+
vldrw.u32 q4, [r5, #240]
|
|
136
|
+
veor q4, q0, q4
|
|
137
|
+
vldrw.u32 q6, [r2, #352]
|
|
138
|
+
veor q3, q2, q6
|
|
139
|
+
vldrw.u32 q0, [r2, #320]
|
|
140
|
+
veor q2, q5, q0
|
|
141
|
+
vldrw.u32 q1, [r5, #320]
|
|
142
|
+
veor q5, q4, q1
|
|
143
|
+
vldrw.u32 q4, [r5, #32]
|
|
144
|
+
veor q0, q3, q5
|
|
145
|
+
vldrw.u32 q1, [r5, #16]
|
|
146
|
+
veor q6, q1, q0
|
|
147
|
+
vstrw.32 q5, [sp]
|
|
148
|
+
vshr.u32 q7, q6, #0x1f
|
|
149
|
+
add.w r10, r4, #0x190
|
|
150
|
+
vsli.32 q7, q6, #0x1
|
|
151
|
+
vldrw.u32 q6, [r5, #112]
|
|
152
|
+
veor q6, q4, q6
|
|
153
|
+
vldrw.u32 q4, [r5, #192]
|
|
154
|
+
veor q4, q6, q4
|
|
155
|
+
vldrw.u32 q6, [r5, #272]
|
|
156
|
+
veor q4, q4, q6
|
|
157
|
+
vldrw.u32 q6, [r5, #352]
|
|
158
|
+
veor q5, q4, q6
|
|
159
|
+
vstrw.32 q7, [r4, #160]
|
|
160
|
+
vshr.u32 q4, q5, #0x1f
|
|
161
|
+
vsli.32 q4, q5, #0x1
|
|
162
|
+
vldrw.u32 q6, [r2, #16]
|
|
163
|
+
veor q7, q4, q2
|
|
164
|
+
veor q1, q6, q7
|
|
165
|
+
vldrw.u32 q6, [r5, #96]
|
|
166
|
+
veor q6, q6, q0
|
|
167
|
+
vstrw.32 q1, [r10, #160]
|
|
168
|
+
vshr.u32 q1, q6, #0xa
|
|
169
|
+
vsli.32 q1, q6, #0x16
|
|
170
|
+
vldrw.u32 q6, [r2, #96]
|
|
171
|
+
veor q4, q6, q7
|
|
172
|
+
vstrw.32 q1, [r10, #16]
|
|
173
|
+
vshr.u32 q6, q4, #0xa
|
|
174
|
+
vsli.32 q6, q4, #0x16
|
|
175
|
+
vldrw.u32 q1, [r5, #336]
|
|
176
|
+
veor q4, q1, q0
|
|
177
|
+
vldrw.u32 q1, [r2, #176]
|
|
178
|
+
veor q1, q1, q7
|
|
179
|
+
vstrw.32 q6, [r4, #16]
|
|
180
|
+
vshr.u32 q6, q1, #0x1b
|
|
181
|
+
vsli.32 q6, q1, #0x5
|
|
182
|
+
vldrw.u32 q1, [r2, #256]
|
|
183
|
+
veor q1, q1, q7
|
|
184
|
+
vstrw.32 q6, [r4, #272]
|
|
185
|
+
vshr.u32 q6, q1, #0xa
|
|
186
|
+
vsli.32 q6, q1, #0x16
|
|
187
|
+
vldrw.u32 q1, [r2, #336]
|
|
188
|
+
veor q1, q1, q7
|
|
189
|
+
vstrw.32 q6, [r10, #128]
|
|
190
|
+
vshr.u32 q6, q1, #0x1f
|
|
191
|
+
vsli.32 q6, q1, #0x1
|
|
192
|
+
vldrw.u32 q7, [r5, #176]
|
|
193
|
+
veor q7, q7, q0
|
|
194
|
+
vstrw.32 q6, [r4, #384]
|
|
195
|
+
vshr.u32 q1, q7, #0x1b
|
|
196
|
+
vsli.32 q1, q7, #0x5
|
|
197
|
+
vldrw.u32 q6, [r5, #256]
|
|
198
|
+
veor q0, q6, q0
|
|
199
|
+
vstrw.32 q1, [r10, #272]
|
|
200
|
+
vshr.u32 q1, q4, #0x1f
|
|
201
|
+
vldrw.u32 q7, [r5, #64]
|
|
202
|
+
vsli.32 q1, q4, #0x1
|
|
203
|
+
vldrw.u32 q4, [r5, #144]
|
|
204
|
+
vshr.u32 q6, q0, #0x9
|
|
205
|
+
vstrw.32 q1, [r10, #384]
|
|
206
|
+
vsli.32 q6, q0, #0x17
|
|
207
|
+
veor q7, q7, q4
|
|
208
|
+
vldrw.u32 q1, [r5, #224]
|
|
209
|
+
veor q4, q7, q1
|
|
210
|
+
vldrw.u32 q7, [r5, #304]
|
|
211
|
+
veor q1, q4, q7
|
|
212
|
+
vldrw.u32 q0, [r5, #384]
|
|
213
|
+
veor q7, q1, q0
|
|
214
|
+
vstrw.32 q6, [r4, #128]
|
|
215
|
+
vshr.u32 q1, q7, #0x1f
|
|
216
|
+
vsli.32 q1, q7, #0x1
|
|
217
|
+
vldrw.u32 q6, [r2, #144]
|
|
218
|
+
veor q0, q1, q3
|
|
219
|
+
vldrw.u32 q3, [r2, #64]
|
|
220
|
+
veor q1, q3, q6
|
|
221
|
+
vldrw.u32 q6, [r2, #224]
|
|
222
|
+
veor q1, q1, q6
|
|
223
|
+
vldrw.u32 q3, [r2, #304]
|
|
224
|
+
veor q6, q1, q3
|
|
225
|
+
vldrw.u32 q4, [r2, #384]
|
|
226
|
+
veor q3, q6, q4
|
|
227
|
+
vldrw.u32 q4, [r2, #48]
|
|
228
|
+
veor q5, q3, q5
|
|
229
|
+
vldrw.u32 q1, [r5, #48]
|
|
230
|
+
veor q1, q1, q5
|
|
231
|
+
vshr.u32 q6, q1, #0x12
|
|
232
|
+
vsli.32 q6, q1, #0xe
|
|
233
|
+
vldrw.u32 q1, [r2, #128]
|
|
234
|
+
veor q1, q1, q0
|
|
235
|
+
vstrw.32 q6, [r10, #80]
|
|
236
|
+
vshr.u32 q6, q1, #0x5
|
|
237
|
+
vsli.32 q6, q1, #0x1b
|
|
238
|
+
vldrw.u32 q1, [r5, #128]
|
|
239
|
+
veor q1, q1, q5
|
|
240
|
+
vstrw.32 q6, [r10, #336]
|
|
241
|
+
vshr.u32 q6, q1, #0x4
|
|
242
|
+
vsli.32 q6, q1, #0x1c
|
|
243
|
+
veor q1, q4, q0
|
|
244
|
+
vstrw.32 q6, [r4, #336]
|
|
245
|
+
vshr.u32 q4, q1, #0x12
|
|
246
|
+
vsli.32 q4, q1, #0xe
|
|
247
|
+
vldrw.u32 q6, [r2, #208]
|
|
248
|
+
veor q6, q6, q0
|
|
249
|
+
vstrw.32 q4, [r4, #80]
|
|
250
|
+
vshr.u32 q1, q6, #0x14
|
|
251
|
+
vsli.32 q1, q6, #0xc
|
|
252
|
+
vldrw.u32 q4, [r2, #288]
|
|
253
|
+
veor q4, q4, q0
|
|
254
|
+
vldrw.u32 q6, [r2, #368]
|
|
255
|
+
veor q0, q6, q0
|
|
256
|
+
vshr.u32 q6, q0, #0x4
|
|
257
|
+
vstrw.32 q1, [r10, #192]
|
|
258
|
+
vsli.32 q6, q0, #0x1c
|
|
259
|
+
vshr.u32 q0, q4, #0x16
|
|
260
|
+
vldrw.u32 q1, [r5, #368]
|
|
261
|
+
vsli.32 q0, q4, #0xa
|
|
262
|
+
vstrw.32 q6, [r4, #304]
|
|
263
|
+
veor q4, q1, q5
|
|
264
|
+
vstrw.32 q0, [r10, #48]
|
|
265
|
+
vshr.u32 q1, q4, #0x4
|
|
266
|
+
vsli.32 q1, q4, #0x1c
|
|
267
|
+
vldrw.u32 q6, [r5, #208]
|
|
268
|
+
veor q6, q6, q5
|
|
269
|
+
vldrw.u32 q0, [r5, #288]
|
|
270
|
+
veor q5, q0, q5
|
|
271
|
+
vstrw.32 q1, [r10, #304]
|
|
272
|
+
vshr.u32 q0, q6, #0x13
|
|
273
|
+
vsli.32 q0, q6, #0xd
|
|
274
|
+
vldrw.u32 q1, [r5, #96]
|
|
275
|
+
vshr.u32 q6, q5, #0x15
|
|
276
|
+
vldrw.u32 q4, [r5, #16]
|
|
277
|
+
vsli.32 q6, q5, #0xb
|
|
278
|
+
vldrw.u32 q5, [r5, #176]
|
|
279
|
+
veor q1, q4, q1
|
|
280
|
+
vldrw.u32 q4, [r5, #256]
|
|
281
|
+
veor q5, q1, q5
|
|
282
|
+
vldrw.u32 q1, [r5, #336]
|
|
283
|
+
veor q5, q5, q4
|
|
284
|
+
vstrw.32 q0, [r4, #192]
|
|
285
|
+
veor q0, q5, q1
|
|
286
|
+
vstrw.32 q6, [r4, #48]
|
|
287
|
+
vshr.u32 q5, q0, #0x1f
|
|
288
|
+
vsli.32 q5, q0, #0x1
|
|
289
|
+
vldrw.u32 q4, [r2, #16]
|
|
290
|
+
veor q3, q5, q3
|
|
291
|
+
vldrw.u32 q6, [r2, #96]
|
|
292
|
+
veor q4, q4, q6
|
|
293
|
+
vldrw.u32 q1, [r2, #176]
|
|
294
|
+
veor q5, q4, q1
|
|
295
|
+
vldrw.u32 q6, [r2, #256]
|
|
296
|
+
veor q6, q5, q6
|
|
297
|
+
vldrw.u32 q4, [r2, #336]
|
|
298
|
+
veor q5, q6, q4
|
|
299
|
+
vldrw.u32 q1, [r5]
|
|
300
|
+
veor q7, q5, q7
|
|
301
|
+
vldrw.u32 q4, [r2]
|
|
302
|
+
veor q1, q1, q7
|
|
303
|
+
veor q4, q4, q3
|
|
304
|
+
vshr.u32 q6, q1, #0x20
|
|
305
|
+
vsli.32 q6, q1, #0x0
|
|
306
|
+
vldrw.u32 q1, [r2, #80]
|
|
307
|
+
veor q1, q1, q3
|
|
308
|
+
vstrw.32 q6, [r10]
|
|
309
|
+
vshr.u32 q6, q4, #0x20
|
|
310
|
+
vsli.32 q6, q4, #0x0
|
|
311
|
+
vldrw.u32 q4, [r5, #80]
|
|
312
|
+
veor q4, q4, q7
|
|
313
|
+
vstrw.32 q6, [r4]
|
|
314
|
+
vshr.u32 q6, q1, #0xe
|
|
315
|
+
vsli.32 q6, q1, #0x12
|
|
316
|
+
vldrw.u32 q1, [r2, #160]
|
|
317
|
+
veor q1, q1, q3
|
|
318
|
+
vstrw.32 q6, [r4, #256]
|
|
319
|
+
vshr.u32 q6, q4, #0xe
|
|
320
|
+
vsli.32 q6, q4, #0x12
|
|
321
|
+
vldrw.u32 q4, [r2, #240]
|
|
322
|
+
veor q4, q4, q3
|
|
323
|
+
vstrw.32 q6, [r10, #256]
|
|
324
|
+
vshr.u32 q6, q1, #0x1f
|
|
325
|
+
vsli.32 q6, q1, #0x1
|
|
326
|
+
vldrw.u32 q1, [r2, #320]
|
|
327
|
+
veor q1, q1, q3
|
|
328
|
+
vstrw.32 q6, [r10, #112]
|
|
329
|
+
vshr.u32 q6, q4, #0xc
|
|
330
|
+
vsli.32 q6, q4, #0x14
|
|
331
|
+
vldrw.u32 q3, [r5, #240]
|
|
332
|
+
veor q3, q3, q7
|
|
333
|
+
vstrw.32 q6, [r10, #368]
|
|
334
|
+
vshr.u32 q4, q3, #0xb
|
|
335
|
+
vsli.32 q4, q3, #0x15
|
|
336
|
+
vldrw.u32 q3, [r5, #160]
|
|
337
|
+
veor q6, q3, q7
|
|
338
|
+
vstrw.32 q4, [r4, #368]
|
|
339
|
+
vshr.u32 q3, q6, #0x1e
|
|
340
|
+
vsli.32 q3, q6, #0x2
|
|
341
|
+
vldrw.u32 q6, [r5, #320]
|
|
342
|
+
veor q7, q6, q7
|
|
343
|
+
vldrw.u32 q4, [r2, #368]
|
|
344
|
+
vshr.u32 q6, q1, #0x17
|
|
345
|
+
vstrw.32 q3, [r4, #112]
|
|
346
|
+
vsli.32 q6, q1, #0x9
|
|
347
|
+
vshr.u32 q1, q7, #0x17
|
|
348
|
+
vldrw.u32 q3, [r2, #48]
|
|
349
|
+
vsli.32 q1, q7, #0x9
|
|
350
|
+
vldrw.u32 q7, [r2, #128]
|
|
351
|
+
veor q3, q3, q7
|
|
352
|
+
vldrw.u32 q7, [r2, #208]
|
|
353
|
+
veor q7, q3, q7
|
|
354
|
+
vldrw.u32 q3, [r2, #288]
|
|
355
|
+
veor q3, q7, q3
|
|
356
|
+
vldrw.u32 q7, [r5, #128]
|
|
357
|
+
veor q3, q3, q4
|
|
358
|
+
vldrw.u32 q4, [r5, #48]
|
|
359
|
+
veor q0, q3, q0
|
|
360
|
+
veor q4, q4, q7
|
|
361
|
+
vldrw.u32 q7, [r5, #208]
|
|
362
|
+
veor q4, q4, q7
|
|
363
|
+
vldrw.u32 q7, [r5, #288]
|
|
364
|
+
veor q4, q4, q7
|
|
365
|
+
vldrw.u32 q7, [r5, #368]
|
|
366
|
+
veor q7, q4, q7
|
|
367
|
+
vstrw.32 q6, [r4, #224]
|
|
368
|
+
vshr.u32 q4, q7, #0x1f
|
|
369
|
+
vstrw.32 q1, [r10, #224]
|
|
370
|
+
vsli.32 q4, q7, #0x1
|
|
371
|
+
veor q5, q4, q5
|
|
372
|
+
vldrw.u32 q6, [r2, #192]
|
|
373
|
+
veor q1, q6, q5
|
|
374
|
+
vldrw.u32 q4, [r5, #112]
|
|
375
|
+
veor q7, q2, q7
|
|
376
|
+
vldrw.u32 q6, [r5, #32]
|
|
377
|
+
vshr.u32 q2, q1, #0xb
|
|
378
|
+
vsli.32 q2, q1, #0x15
|
|
379
|
+
veor q1, q6, q0
|
|
380
|
+
vstrw.32 q2, [r10, #32]
|
|
381
|
+
vshr.u32 q6, q1, #0x1
|
|
382
|
+
vsli.32 q6, q1, #0x1f
|
|
383
|
+
vldrw.u32 q2, [r2, #112]
|
|
384
|
+
veor q2, q2, q5
|
|
385
|
+
vstrw.32 q6, [r10, #320]
|
|
386
|
+
vshr.u32 q1, q2, #0x1d
|
|
387
|
+
vsli.32 q1, q2, #0x3
|
|
388
|
+
vldrw.u32 q6, [r2, #32]
|
|
389
|
+
veor q4, q4, q0
|
|
390
|
+
vstrw.32 q1, [r4, #176]
|
|
391
|
+
veor q2, q6, q5
|
|
392
|
+
vshr.u32 q6, q2, #0x1
|
|
393
|
+
vldrw.u32 q1, [r5, #352]
|
|
394
|
+
vsli.32 q6, q2, #0x1f
|
|
395
|
+
veor q1, q1, q0
|
|
396
|
+
vstrw.32 q6, [r4, #320]
|
|
397
|
+
vshr.u32 q6, q1, #0x1
|
|
398
|
+
vsli.32 q6, q1, #0x1f
|
|
399
|
+
vldrw.u32 q2, [r5, #192]
|
|
400
|
+
vshr.u32 q1, q4, #0x1d
|
|
401
|
+
vstrw.32 q6, [r4, #144]
|
|
402
|
+
vsli.32 q1, q4, #0x3
|
|
403
|
+
veor q2, q2, q0
|
|
404
|
+
vldrw.u32 q6, [r5, #272]
|
|
405
|
+
veor q0, q6, q0
|
|
406
|
+
vldrw.u32 q4, [r2, #352]
|
|
407
|
+
veor q6, q4, q5
|
|
408
|
+
vldrw.u32 q4, [r2, #272]
|
|
409
|
+
veor q4, q4, q5
|
|
410
|
+
vstrw.32 q1, [r10, #176]
|
|
411
|
+
vshr.u32 q1, q2, #0xa
|
|
412
|
+
vsli.32 q1, q2, #0x16
|
|
413
|
+
vldrw.u32 q5, [sp]
|
|
414
|
+
vshr.u32 q2, q0, #0x18
|
|
415
|
+
vstrw.32 q1, [r4, #32]
|
|
416
|
+
vsli.32 q2, q0, #0x8
|
|
417
|
+
vshr.u32 q1, q6, #0x2
|
|
418
|
+
vstrw.32 q2, [r4, #288]
|
|
419
|
+
vsli.32 q1, q6, #0x1e
|
|
420
|
+
vshr.u32 q6, q4, #0x19
|
|
421
|
+
vstrw.32 q1, [r10, #144]
|
|
422
|
+
vsli.32 q6, q4, #0x7
|
|
423
|
+
vshr.u32 q0, q5, #0x1f
|
|
424
|
+
vstrw.32 q6, [r10, #288]
|
|
425
|
+
vsli.32 q0, q5, #0x1
|
|
426
|
+
veor q5, q0, q3
|
|
427
|
+
vldrw.u32 q6, [r2, #64]
|
|
428
|
+
veor q3, q6, q5
|
|
429
|
+
vldrw.u32 q1, [r5, #64]
|
|
430
|
+
vshr.u32 q4, q3, #0x13
|
|
431
|
+
vldrw.u32 q2, [r2, #384]
|
|
432
|
+
vsli.32 q4, q3, #0xd
|
|
433
|
+
vldrw.u32 q0, [r5, #224]
|
|
434
|
+
veor q6, q1, q7
|
|
435
|
+
vstrw.32 q4, [r10, #240]
|
|
436
|
+
veor q2, q2, q5
|
|
437
|
+
veor q3, q0, q7
|
|
438
|
+
vldrw.u32 q0, [r2, #224]
|
|
439
|
+
vshr.u32 q4, q6, #0x12
|
|
440
|
+
vldrw.u32 q1, [r5, #384]
|
|
441
|
+
vsli.32 q4, q6, #0xe
|
|
442
|
+
vshr.u32 q6, q2, #0x19
|
|
443
|
+
vstrw.32 q4, [r4, #240]
|
|
444
|
+
vsli.32 q6, q2, #0x7
|
|
445
|
+
vshr.u32 q2, q3, #0xc
|
|
446
|
+
vstrw.32 q6, [r4, #64]
|
|
447
|
+
vsli.32 q2, q3, #0x14
|
|
448
|
+
veor q0, q0, q5
|
|
449
|
+
vldrw.u32 q6, [r2, #144]
|
|
450
|
+
veor q4, q1, q7
|
|
451
|
+
veor q6, q6, q5
|
|
452
|
+
vstrw.32 q2, [r4, #352]
|
|
453
|
+
vshr.u32 q2, q4, #0x19
|
|
454
|
+
vsli.32 q2, q4, #0x7
|
|
455
|
+
vldrw.u32 q1, [r2, #304]
|
|
456
|
+
veor q5, q1, q5
|
|
457
|
+
vldrw.u32 q1, [r5, #144]
|
|
458
|
+
veor q4, q1, q7
|
|
459
|
+
vldrw.u32 q3, [r5, #304]
|
|
460
|
+
veor q1, q3, q7
|
|
461
|
+
vstrw.32 q2, [r10, #64]
|
|
462
|
+
vshr.u32 q3, q0, #0xd
|
|
463
|
+
vsli.32 q3, q0, #0x13
|
|
464
|
+
vldrw.u32 q7, [r4, #80]
|
|
465
|
+
vshr.u32 q0, q6, #0x16
|
|
466
|
+
vstrw.32 q3, [r10, #352]
|
|
467
|
+
vsli.32 q0, q6, #0xa
|
|
468
|
+
vshr.u32 q2, q5, #0x1c
|
|
469
|
+
vsli.32 q2, q5, #0x4
|
|
470
|
+
vldrw.u32 q5, [r4, #112]
|
|
471
|
+
vshr.u32 q3, q1, #0x1c
|
|
472
|
+
vsli.32 q3, q1, #0x4
|
|
473
|
+
vldrw.u32 q1, [r4, #128]
|
|
474
|
+
vbic q6, q5, q0
|
|
475
|
+
vstrw.32 q3, [r10, #208]
|
|
476
|
+
vbic q3, q1, q5
|
|
477
|
+
veor q3, q0, q3
|
|
478
|
+
vstrw.32 q3, [r2, #96]
|
|
479
|
+
vbic q3, q0, q7
|
|
480
|
+
veor q0, q7, q6
|
|
481
|
+
vldrw.u32 q6, [r4, #144]
|
|
482
|
+
vbic q7, q7, q6
|
|
483
|
+
vstrw.32 q0, [r2, #80]
|
|
484
|
+
veor q3, q6, q3
|
|
485
|
+
vstrw.32 q3, [r2, #144]
|
|
486
|
+
veor q0, q1, q7
|
|
487
|
+
vstrw.32 q0, [r2, #128]
|
|
488
|
+
vbic q1, q6, q1
|
|
489
|
+
vshr.u32 q6, q4, #0x16
|
|
490
|
+
vldrw.u32 q3, [r10, #112]
|
|
491
|
+
vsli.32 q6, q4, #0xa
|
|
492
|
+
vldrw.u32 q4, [r10, #80]
|
|
493
|
+
veor q1, q5, q1
|
|
494
|
+
vldrw.u32 q0, [r10, #144]
|
|
495
|
+
vbic q7, q4, q0
|
|
496
|
+
vldrw.u32 q5, [r10, #128]
|
|
497
|
+
veor q7, q5, q7
|
|
498
|
+
vstrw.32 q1, [r2, #112]
|
|
499
|
+
vbic q1, q0, q5
|
|
500
|
+
vstrw.32 q7, [r5, #128]
|
|
501
|
+
veor q7, q3, q1
|
|
502
|
+
vstrw.32 q7, [r5, #112]
|
|
503
|
+
vbic q7, q5, q3
|
|
504
|
+
vbic q1, q3, q6
|
|
505
|
+
vldrw.u32 q3, [r4, #176]
|
|
506
|
+
veor q5, q4, q1
|
|
507
|
+
vbic q4, q6, q4
|
|
508
|
+
vldrw.u32 q1, [r4, #160]
|
|
509
|
+
veor q0, q0, q4
|
|
510
|
+
vldrw.u32 q4, [r4, #224]
|
|
511
|
+
veor q7, q6, q7
|
|
512
|
+
vstrw.32 q0, [r5, #144]
|
|
513
|
+
vbic q0, q1, q4
|
|
514
|
+
vstrw.32 q7, [r5, #96]
|
|
515
|
+
veor q0, q2, q0
|
|
516
|
+
vstrw.32 q0, [r2, #208]
|
|
517
|
+
vbic q6, q3, q1
|
|
518
|
+
vstrw.32 q5, [r5, #80]
|
|
519
|
+
vbic q7, q4, q2
|
|
520
|
+
vldrw.u32 q0, [r10, #160]
|
|
521
|
+
veor q6, q4, q6
|
|
522
|
+
vldrw.u32 q5, [r4, #192]
|
|
523
|
+
vbic q4, q2, q5
|
|
524
|
+
vldrw.u32 q2, [r10, #224]
|
|
525
|
+
veor q4, q3, q4
|
|
526
|
+
vstrw.32 q4, [r2, #176]
|
|
527
|
+
vbic q4, q5, q3
|
|
528
|
+
vstrw.32 q6, [r2, #224]
|
|
529
|
+
veor q4, q1, q4
|
|
530
|
+
vldrw.u32 q1, [r10, #208]
|
|
531
|
+
veor q3, q5, q7
|
|
532
|
+
vldrw.u32 q5, [r10, #192]
|
|
533
|
+
vbic q6, q1, q5
|
|
534
|
+
vldrw.u32 q7, [r10, #176]
|
|
535
|
+
veor q6, q7, q6
|
|
536
|
+
vstrw.32 q3, [r2, #192]
|
|
537
|
+
vbic q3, q0, q2
|
|
538
|
+
vstrw.32 q6, [r5, #176]
|
|
539
|
+
veor q3, q1, q3
|
|
540
|
+
vstrw.32 q3, [r5, #208]
|
|
541
|
+
vbic q3, q5, q7
|
|
542
|
+
vstrw.32 q4, [r2, #160]
|
|
543
|
+
veor q3, q0, q3
|
|
544
|
+
vstrw.32 q3, [r5, #160]
|
|
545
|
+
vbic q6, q2, q1
|
|
546
|
+
vldrw.u32 q1, [r4, #288]
|
|
547
|
+
vbic q7, q7, q0
|
|
548
|
+
vldrw.u32 q3, [r4, #272]
|
|
549
|
+
veor q0, q5, q6
|
|
550
|
+
vldrw.u32 q4, [r4, #304]
|
|
551
|
+
veor q6, q2, q7
|
|
552
|
+
vldrw.u32 q7, [r4, #256]
|
|
553
|
+
vbic q5, q4, q1
|
|
554
|
+
vstrw.32 q0, [r5, #192]
|
|
555
|
+
veor q5, q3, q5
|
|
556
|
+
vstrw.32 q6, [r5, #224]
|
|
557
|
+
vbic q0, q3, q7
|
|
558
|
+
vstrw.32 q5, [r2, #272]
|
|
559
|
+
vbic q6, q1, q3
|
|
560
|
+
veor q5, q7, q6
|
|
561
|
+
vldrw.u32 q3, [r4, #240]
|
|
562
|
+
veor q6, q3, q0
|
|
563
|
+
vldrw.u32 q2, [r10, #288]
|
|
564
|
+
vbic q0, q3, q4
|
|
565
|
+
vstrw.32 q6, [r2, #240]
|
|
566
|
+
vbic q7, q7, q3
|
|
567
|
+
vstrw.32 q5, [r2, #256]
|
|
568
|
+
veor q7, q4, q7
|
|
569
|
+
vstrw.32 q7, [r2, #304]
|
|
570
|
+
veor q7, q1, q0
|
|
571
|
+
vstrw.32 q7, [r2, #288]
|
|
572
|
+
vldrw.u32 q5, [r10, #304]
|
|
573
|
+
vbic q7, q5, q2
|
|
574
|
+
vldrw.u32 q3, [r10, #272]
|
|
575
|
+
veor q1, q3, q7
|
|
576
|
+
vldrw.u32 q7, [r4, #336]
|
|
577
|
+
vbic q4, q2, q3
|
|
578
|
+
vldrw.u32 q6, [r10, #256]
|
|
579
|
+
vbic q3, q3, q6
|
|
580
|
+
vldrw.u32 q0, [r10, #240]
|
|
581
|
+
veor q3, q0, q3
|
|
582
|
+
vstrw.32 q1, [r5, #272]
|
|
583
|
+
vbic q1, q0, q5
|
|
584
|
+
vstrw.32 q3, [r5, #240]
|
|
585
|
+
veor q1, q2, q1
|
|
586
|
+
vldrw.u32 q3, [r4, #384]
|
|
587
|
+
vbic q2, q6, q0
|
|
588
|
+
vldrw.u32 q0, [r4, #320]
|
|
589
|
+
veor q2, q5, q2
|
|
590
|
+
vldrw.u32 q5, [r4, #352]
|
|
591
|
+
veor q4, q6, q4
|
|
592
|
+
vstrw.32 q2, [r5, #304]
|
|
593
|
+
vbic q2, q7, q0
|
|
594
|
+
vstrw.32 q1, [r5, #288]
|
|
595
|
+
veor q1, q3, q2
|
|
596
|
+
vstrw.32 q1, [r2, #384]
|
|
597
|
+
vbic q2, q5, q7
|
|
598
|
+
vstrw.32 q4, [r5, #256]
|
|
599
|
+
veor q4, q0, q2
|
|
600
|
+
vstrw.32 q4, [r2, #320]
|
|
601
|
+
vbic q2, q0, q3
|
|
602
|
+
vldrw.u32 q4, [r4, #368]
|
|
603
|
+
vbic q3, q3, q4
|
|
604
|
+
vldrw.u32 q0, [r10, #320]
|
|
605
|
+
veor q1, q5, q3
|
|
606
|
+
vldrw.u32 q6, [r10, #336]
|
|
607
|
+
vbic q5, q4, q5
|
|
608
|
+
vstrw.32 q1, [r2, #352]
|
|
609
|
+
veor q5, q7, q5
|
|
610
|
+
vstrw.32 q5, [r2, #336]
|
|
611
|
+
veor q3, q4, q2
|
|
612
|
+
vstrw.32 q3, [r2, #368]
|
|
613
|
+
vbic q7, q6, q0
|
|
614
|
+
vldrw.u32 q5, [r10, #352]
|
|
615
|
+
vbic q3, q5, q6
|
|
616
|
+
vldrw.u32 q1, [r10, #368]
|
|
617
|
+
vbic q4, q1, q5
|
|
618
|
+
vldrw.u32 q2, [r4, #16]
|
|
619
|
+
veor q6, q6, q4
|
|
620
|
+
vldrw.u32 q4, [r10, #384]
|
|
621
|
+
veor q3, q0, q3
|
|
622
|
+
vstrw.32 q3, [r5, #320]
|
|
623
|
+
veor q3, q4, q7
|
|
624
|
+
vstrw.32 q3, [r5, #384]
|
|
625
|
+
vbic q0, q0, q4
|
|
626
|
+
vstrw.32 q6, [r5, #336]
|
|
627
|
+
veor q3, q1, q0
|
|
628
|
+
vstrw.32 q3, [r5, #368]
|
|
629
|
+
vbic q7, q4, q1
|
|
630
|
+
veor q5, q5, q7
|
|
631
|
+
vldrw.u32 q6, [r4, #32]
|
|
632
|
+
vbic q3, q6, q2
|
|
633
|
+
vldrw.u32 q4, [r4, #48]
|
|
634
|
+
vbic q0, q4, q6
|
|
635
|
+
vldrw.u32 q1, [r4]
|
|
636
|
+
veor q0, q2, q0
|
|
637
|
+
vldrw.u32 q7, [r4, #64]
|
|
638
|
+
veor q3, q1, q3
|
|
639
|
+
vstrw.32 q5, [r5, #352]
|
|
640
|
+
vbic q5, q1, q7
|
|
641
|
+
vstrw.32 q0, [r2, #16]
|
|
642
|
+
veor q0, q4, q5
|
|
643
|
+
vstrw.32 q0, [r2, #48]
|
|
644
|
+
vbic q5, q2, q1
|
|
645
|
+
veor q2, q7, q5
|
|
646
|
+
vldrw.u32 q0, [r10, #16]
|
|
647
|
+
vbic q5, q7, q4
|
|
648
|
+
vldrw.u32 q4, [r10]
|
|
649
|
+
vbic q1, q0, q4
|
|
650
|
+
vldrw.u32 q7, [r10, #64]
|
|
651
|
+
veor q1, q7, q1
|
|
652
|
+
vstrw.32 q2, [r2, #64]
|
|
653
|
+
veor q2, q6, q5
|
|
654
|
+
vbic q6, q4, q7
|
|
655
|
+
vldrw.u32 q5, [r10, #48]
|
|
656
|
+
veor q6, q5, q6
|
|
657
|
+
ldrd r7, r8, [r6]
|
|
658
|
+
vbic q7, q7, q5
|
|
659
|
+
vstrw.32 q1, [r5, #64]
|
|
660
|
+
vdup.32 q1, r7
|
|
661
|
+
veor q1, q3, q1
|
|
662
|
+
vldrw.u32 q3, [r10, #32]
|
|
663
|
+
veor q7, q3, q7
|
|
664
|
+
add.w r6, r6, #0x8
|
|
665
|
+
vbic q5, q5, q3
|
|
666
|
+
vstrw.32 q6, [r5, #48]
|
|
667
|
+
vbic q6, q3, q0
|
|
668
|
+
vstrw.32 q1, [r2]
|
|
669
|
+
veor q5, q0, q5
|
|
670
|
+
vstrw.32 q7, [r5, #32]
|
|
671
|
+
veor q4, q4, q6
|
|
672
|
+
vstrw.32 q5, [r5, #16]
|
|
673
|
+
vdup.32 q6, r8
|
|
674
|
+
vstrw.32 q2, [r2, #32]
|
|
675
|
+
veor q0, q4, q6
|
|
676
|
+
vstrw.32 q0, [r5]
|
|
626
677
|
|
|
627
|
-
|
|
628
|
-
le
|
|
678
|
+
Lkeccak_f1600_x4_mve_asm_roundend_pre:
|
|
679
|
+
le lr, Lkeccak_f1600_x4_mve_asm_roundstart @ imm = #-0x8c0
|
|
629
680
|
|
|
630
|
-
|
|
631
|
-
add
|
|
632
|
-
|
|
633
|
-
|
|
681
|
+
Lkeccak_f1600_x4_mve_asm_roundend:
|
|
682
|
+
add sp, #0x80
|
|
683
|
+
.cfi_adjust_cfa_offset -0x80
|
|
684
|
+
vpop {d8, d9, d10, d11, d12, d13, d14, d15}
|
|
685
|
+
.cfi_restore d8
|
|
686
|
+
.cfi_restore d9
|
|
687
|
+
.cfi_restore d10
|
|
688
|
+
.cfi_restore d11
|
|
689
|
+
.cfi_restore d12
|
|
690
|
+
.cfi_restore d13
|
|
691
|
+
.cfi_restore d14
|
|
692
|
+
.cfi_restore d15
|
|
693
|
+
.cfi_adjust_cfa_offset -0x40
|
|
694
|
+
pop.w {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
|
695
|
+
.cfi_restore r4
|
|
696
|
+
.cfi_restore r5
|
|
697
|
+
.cfi_restore r6
|
|
698
|
+
.cfi_restore r7
|
|
699
|
+
.cfi_restore r8
|
|
700
|
+
.cfi_restore r9
|
|
701
|
+
.cfi_restore r10
|
|
702
|
+
.cfi_restore r11
|
|
703
|
+
.cfi_restore lr
|
|
704
|
+
.cfi_adjust_cfa_offset -0x24
|
|
705
|
+
.cfi_endproc
|
|
634
706
|
nop
|
|
635
707
|
|
|
636
708
|
MLD_ASM_FN_SIZE(keccak_f1600_x4_mve_asm)
|
|
637
709
|
|
|
638
710
|
#endif /* MLD_FIPS202_ARMV81M_NEED_X4 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */
|
|
711
|
+
|
|
712
|
+
#if defined(__ELF__)
|
|
713
|
+
.section .note.GNU-stack,"",%progbits
|
|
714
|
+
#endif
|