mldsa_gh 0.1.0

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