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.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/SECURITY.md +7 -0
  4. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  5. data/ext/pqcrypto/vendor/.vendored +4 -4
  6. data/ext/pqcrypto/vendor/mldsa-native/README.md +23 -10
  7. data/ext/pqcrypto/vendor/mldsa-native/mldsa/README.md +23 -0
  8. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +114 -58
  9. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +498 -461
  10. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +145 -85
  11. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +456 -422
  12. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +47 -25
  13. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +26 -14
  14. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +56 -81
  15. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +17 -24
  16. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +33 -40
  17. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +67 -87
  18. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +19 -14
  19. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +13 -5
  20. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +84 -10
  21. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +10 -5
  22. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +6 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +22 -15
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +376 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +204 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +259 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +1077 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +987 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +16 -10
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +2 -1
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +1 -1
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +4 -2
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +2 -2
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +1 -1
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +60 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +48 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +18 -1
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +658 -582
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +5 -100
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +26 -25
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +334 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +355 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +8 -3
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/{xkcp.h → keccak_f1600_x4_avx2.h} +11 -8
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h +44 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +454 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccakf1600_constants.c +52 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +37 -28
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +213 -196
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +248 -64
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt_aarch64_asm.S +753 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S +129 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S +145 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S +177 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt_aarch64_asm.S +653 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery_aarch64_asm.S +84 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_aarch64_asm.S +53 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_aarch64_asm.S +55 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_aarch64_asm.S +86 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_aarch64_asm.S +86 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_aarch64_asm.S +103 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_aarch64_asm.S +111 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_aarch64_asm.S +75 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_aarch64_asm.S +72 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +23 -11
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_aarch64_asm.S +189 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_aarch64_asm.S +137 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_aarch64_asm.S +130 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +520 -516
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +34 -33
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +202 -242
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +25 -17
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +112 -28
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +1 -1
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +1 -1
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt_avx2_asm.S +2311 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt_avx2_asm.S +2383 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack_avx2_asm.S +238 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4_avx2_asm.S +139 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5_avx2_asm.S +155 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7_avx2_asm.S +187 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_avx2_asm.S +130 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2_asm.S +190 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +6 -4
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +6 -4
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +9 -8
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +10 -9
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +8 -5
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +8 -5
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +6 -4
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +6 -4
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +130 -129
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +109 -180
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +169 -150
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +56 -40
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +149 -164
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +52 -57
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +132 -167
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +57 -424
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +167 -474
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.c +308 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.h +653 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +22 -29
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +37 -43
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +511 -367
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +456 -417
  107. data/lib/pq_crypto/version.rb +1 -1
  108. data/script/vendor_libs.rb +3 -3
  109. metadata +41 -35
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +0 -376
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +0 -204
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +0 -259
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +0 -1077
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +0 -987
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +0 -488
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +0 -16
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +0 -753
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +0 -129
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +0 -145
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +0 -177
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +0 -653
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +0 -79
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +0 -53
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +0 -55
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +0 -85
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +0 -85
  127. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +0 -102
  128. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +0 -110
  129. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +0 -72
  130. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +0 -69
  131. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +0 -189
  132. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +0 -135
  133. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +0 -128
  134. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +0 -2311
  135. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +0 -2383
  136. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +0 -239
  137. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +0 -131
  138. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +0 -139
  139. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +0 -155
  140. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +0 -187
  141. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +0 -61
@@ -0,0 +1,1077 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * Copyright (c) The mldsa-native project authors
4
+ * Copyright (c) 2021-2022 Arm Limited
5
+ * Copyright (c) 2022 Matthias Kannwischer
6
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
7
+ */
8
+
9
+ // Author: Hanno Becker <hannobecker@posteo.de>
10
+ // Author: Matthias Kannwischer <matthias@kannwischer.eu>
11
+
12
+ /*yaml
13
+ Name: keccak_f1600_x4_v8a_scalar_hybrid_asm
14
+ Description: AArch64 hybrid scalar/vector implementation of Keccak-f[1600] permutation for four sequential states
15
+ Signature: void mld_keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm(uint64_t state[100], const uint64_t rc[24])
16
+ ABI:
17
+ x0:
18
+ type: buffer
19
+ size_bytes: 800
20
+ permissions: read/write
21
+ c_parameter: uint64_t state[100]
22
+ description: Four sequential Keccak states (state0[25], state1[25], state2[25], state3[25])
23
+ x1:
24
+ type: buffer
25
+ size_bytes: 192
26
+ permissions: read-only
27
+ c_parameter: const uint64_t rc[24]
28
+ description: Round constants (24 x uint64_t)
29
+ Stack:
30
+ bytes: 224
31
+ description: register preservation and temporary storage
32
+ */
33
+
34
+ #include "../../../../common.h"
35
+ #if defined(MLD_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \
36
+ !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED)
37
+
38
+ /*
39
+ * WARNING: This file is auto-derived from the mldsa-native source file
40
+ * dev/fips202/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S using scripts/simpasm. Do not modify it directly.
41
+ */
42
+
43
+ .text
44
+ .balign 4
45
+ .global MLD_ASM_NAMESPACE(keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm)
46
+ MLD_ASM_FN_SYMBOL(keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm)
47
+
48
+ .cfi_startproc
49
+ sub sp, sp, #0xe0
50
+ .cfi_adjust_cfa_offset 0xe0
51
+ stp x19, x20, [sp, #0x30]
52
+ .cfi_rel_offset x19, 0x30
53
+ .cfi_rel_offset x20, 0x38
54
+ stp x21, x22, [sp, #0x40]
55
+ .cfi_rel_offset x21, 0x40
56
+ .cfi_rel_offset x22, 0x48
57
+ stp x23, x24, [sp, #0x50]
58
+ .cfi_rel_offset x23, 0x50
59
+ .cfi_rel_offset x24, 0x58
60
+ stp x25, x26, [sp, #0x60]
61
+ .cfi_rel_offset x25, 0x60
62
+ .cfi_rel_offset x26, 0x68
63
+ stp x27, x28, [sp, #0x70]
64
+ .cfi_rel_offset x27, 0x70
65
+ .cfi_rel_offset x28, 0x78
66
+ stp x29, x30, [sp, #0x80]
67
+ .cfi_rel_offset x29, 0x80
68
+ .cfi_rel_offset x30, 0x88
69
+ stp d8, d9, [sp, #0x90]
70
+ .cfi_rel_offset d8, 0x90
71
+ .cfi_rel_offset d9, 0x98
72
+ stp d10, d11, [sp, #0xa0]
73
+ .cfi_rel_offset d10, 0xa0
74
+ .cfi_rel_offset d11, 0xa8
75
+ stp d12, d13, [sp, #0xb0]
76
+ .cfi_rel_offset d12, 0xb0
77
+ .cfi_rel_offset d13, 0xb8
78
+ stp d14, d15, [sp, #0xc0]
79
+ .cfi_rel_offset d14, 0xc0
80
+ .cfi_rel_offset d15, 0xc8
81
+ mov x29, x1
82
+ mov x30, #0x0 // =0
83
+ str x30, [sp, #0x20]
84
+ str x29, [sp, #0x8]
85
+ str x29, [sp, #0x10]
86
+ str x0, [sp]
87
+ add x4, x0, #0xc8
88
+ ldp q25, q26, [x0], #0x20
89
+ ld1 { v27.2d, v28.2d }, [x4], #32
90
+ trn1 v0.2d, v25.2d, v27.2d
91
+ trn2 v1.2d, v25.2d, v27.2d
92
+ trn1 v2.2d, v26.2d, v28.2d
93
+ trn2 v3.2d, v26.2d, v28.2d
94
+ ldp q25, q26, [x0], #0x20
95
+ ld1 { v27.2d, v28.2d }, [x4], #32
96
+ trn1 v4.2d, v25.2d, v27.2d
97
+ trn2 v5.2d, v25.2d, v27.2d
98
+ trn1 v6.2d, v26.2d, v28.2d
99
+ trn2 v7.2d, v26.2d, v28.2d
100
+ ldp q25, q26, [x0], #0x20
101
+ ld1 { v27.2d, v28.2d }, [x4], #32
102
+ trn1 v8.2d, v25.2d, v27.2d
103
+ trn2 v9.2d, v25.2d, v27.2d
104
+ trn1 v10.2d, v26.2d, v28.2d
105
+ trn2 v11.2d, v26.2d, v28.2d
106
+ ldp q25, q26, [x0], #0x20
107
+ ld1 { v27.2d, v28.2d }, [x4], #32
108
+ trn1 v12.2d, v25.2d, v27.2d
109
+ trn2 v13.2d, v25.2d, v27.2d
110
+ trn1 v14.2d, v26.2d, v28.2d
111
+ trn2 v15.2d, v26.2d, v28.2d
112
+ ldp q25, q26, [x0], #0x20
113
+ ld1 { v27.2d, v28.2d }, [x4], #32
114
+ trn1 v16.2d, v25.2d, v27.2d
115
+ trn2 v17.2d, v25.2d, v27.2d
116
+ trn1 v18.2d, v26.2d, v28.2d
117
+ trn2 v19.2d, v26.2d, v28.2d
118
+ ldp q25, q26, [x0], #0x20
119
+ ld1 { v27.2d, v28.2d }, [x4], #32
120
+ trn1 v20.2d, v25.2d, v27.2d
121
+ trn2 v21.2d, v25.2d, v27.2d
122
+ trn1 v22.2d, v26.2d, v28.2d
123
+ trn2 v23.2d, v26.2d, v28.2d
124
+ ldr d25, [x0]
125
+ ldr d27, [x4]
126
+ trn1 v24.2d, v25.2d, v27.2d
127
+ sub x0, x0, #0xc0
128
+ add x0, x0, #0x190
129
+ ldp x1, x6, [x0]
130
+ ldp x11, x16, [x0, #0x10]
131
+ ldp x21, x2, [x0, #0x20]
132
+ ldp x7, x12, [x0, #0x30]
133
+ ldp x17, x22, [x0, #0x40]
134
+ ldp x3, x8, [x0, #0x50]
135
+ ldp x13, x28, [x0, #0x60]
136
+ ldp x23, x4, [x0, #0x70]
137
+ ldp x9, x14, [x0, #0x80]
138
+ ldp x19, x24, [x0, #0x90]
139
+ ldp x5, x10, [x0, #0xa0]
140
+ ldp x15, x20, [x0, #0xb0]
141
+ ldr x25, [x0, #0xc0]
142
+ sub x0, x0, #0x190
143
+
144
+ Lkeccak_f1600_x4_v8a_scalar_hybrid_initial:
145
+ eor x30, x24, x25
146
+ eor x27, x9, x10
147
+ eor v30.16b, v0.16b, v5.16b
148
+ eor v30.16b, v30.16b, v10.16b
149
+ eor x0, x30, x21
150
+ eor v30.16b, v30.16b, v15.16b
151
+ eor x26, x27, x6
152
+ eor x27, x26, x7
153
+ eor v30.16b, v30.16b, v20.16b
154
+ eor x29, x0, x22
155
+ eor v29.16b, v1.16b, v6.16b
156
+ eor x26, x29, x23
157
+ eor v29.16b, v29.16b, v11.16b
158
+ eor x29, x4, x5
159
+ eor x30, x29, x1
160
+ eor v29.16b, v29.16b, v16.16b
161
+ eor x0, x27, x8
162
+ eor v29.16b, v29.16b, v21.16b
163
+ eor x29, x30, x2
164
+ eor v28.16b, v2.16b, v7.16b
165
+ eor x30, x19, x20
166
+ eor x30, x30, x16
167
+ eor v28.16b, v28.16b, v12.16b
168
+ eor x27, x26, x0, ror #63
169
+ eor v28.16b, v28.16b, v17.16b
170
+ eor x4, x4, x27
171
+ eor v28.16b, v28.16b, v22.16b
172
+ eor x30, x30, x17
173
+ eor x30, x30, x28
174
+ eor v27.16b, v3.16b, v8.16b
175
+ eor x29, x29, x3
176
+ eor v27.16b, v27.16b, v13.16b
177
+ eor x0, x0, x30, ror #63
178
+ eor v27.16b, v27.16b, v18.16b
179
+ eor x30, x30, x29, ror #63
180
+ eor x22, x22, x30
181
+ eor v27.16b, v27.16b, v23.16b
182
+ eor x23, x23, x30
183
+ eor v26.16b, v4.16b, v9.16b
184
+ str x23, [sp, #0xd0]
185
+ eor v26.16b, v26.16b, v14.16b
186
+ eor x23, x14, x15
187
+ eor x14, x14, x0
188
+ eor v26.16b, v26.16b, v19.16b
189
+ eor x23, x23, x11
190
+ eor v26.16b, v26.16b, v24.16b
191
+ eor x15, x15, x0
192
+ eor x1, x1, x27
193
+ add v31.2d, v28.2d, v28.2d
194
+ eor x23, x23, x12
195
+ sri v31.2d, v28.2d, #0x3f
196
+ eor x23, x23, x13
197
+ eor v25.16b, v31.16b, v30.16b
198
+ eor x11, x11, x0
199
+ eor x29, x29, x23, ror #63
200
+ add v31.2d, v26.2d, v26.2d
201
+ eor x23, x23, x26, ror #63
202
+ sri v31.2d, v26.2d, #0x3f
203
+ eor x26, x13, x0
204
+ eor v28.16b, v31.16b, v28.16b
205
+ eor x13, x28, x23
206
+ eor x28, x24, x30
207
+ add v31.2d, v29.2d, v29.2d
208
+ eor x24, x16, x23
209
+ sri v31.2d, v29.2d, #0x3f
210
+ eor x16, x21, x30
211
+ eor v26.16b, v31.16b, v26.16b
212
+ eor x21, x25, x30
213
+ eor x30, x19, x23
214
+ add v31.2d, v27.2d, v27.2d
215
+ eor x19, x20, x23
216
+ sri v31.2d, v27.2d, #0x3f
217
+ eor x20, x17, x23
218
+ eor v29.16b, v31.16b, v29.16b
219
+ eor x17, x12, x0
220
+ eor x0, x2, x27
221
+ add v31.2d, v30.2d, v30.2d
222
+ eor x2, x6, x29
223
+ sri v31.2d, v30.2d, #0x3f
224
+ eor x6, x8, x29
225
+ eor v27.16b, v31.16b, v27.16b
226
+ bic x8, x28, x13, ror #47
227
+ eor x12, x3, x27
228
+ eor v30.16b, v0.16b, v26.16b
229
+ bic x3, x13, x17, ror #19
230
+ eor v31.16b, v2.16b, v29.16b
231
+ eor x5, x5, x27
232
+ ldr x27, [sp, #0xd0]
233
+ shl v0.2d, v31.2d, #0x3e
234
+ bic x25, x17, x2, ror #5
235
+ sri v0.2d, v31.2d, #0x2
236
+ eor x9, x9, x29
237
+ eor v31.16b, v12.16b, v29.16b
238
+ eor x23, x25, x5, ror #52
239
+ eor x3, x3, x2, ror #24
240
+ shl v2.2d, v31.2d, #0x2b
241
+ eor x8, x8, x17, ror #2
242
+ sri v2.2d, v31.2d, #0x15
243
+ eor x17, x10, x29
244
+ eor v31.16b, v13.16b, v28.16b
245
+ bic x25, x12, x22, ror #47
246
+ eor x29, x7, x29
247
+ shl v12.2d, v31.2d, #0x19
248
+ bic x10, x4, x27, ror #2
249
+ sri v12.2d, v31.2d, #0x27
250
+ bic x7, x5, x28, ror #10
251
+ eor v31.16b, v19.16b, v27.16b
252
+ eor x10, x10, x20, ror #50
253
+ eor x13, x7, x13, ror #57
254
+ shl v13.2d, v31.2d, #0x8
255
+ bic x7, x2, x5, ror #47
256
+ sri v13.2d, v31.2d, #0x38
257
+ eor x2, x25, x24, ror #39
258
+ eor v31.16b, v23.16b, v28.16b
259
+ bic x25, x20, x11, ror #57
260
+ bic x5, x17, x4, ror #25
261
+ shl v19.2d, v31.2d, #0x38
262
+ eor x25, x25, x17, ror #53
263
+ sri v19.2d, v31.2d, #0x8
264
+ bic x17, x11, x17, ror #60
265
+ eor v31.16b, v15.16b, v26.16b
266
+ eor x28, x7, x28, ror #57
267
+ bic x7, x9, x12, ror #42
268
+ shl v23.2d, v31.2d, #0x29
269
+ eor x7, x7, x22, ror #25
270
+ sri v23.2d, v31.2d, #0x17
271
+ bic x22, x22, x24, ror #56
272
+ bic x24, x24, x15, ror #31
273
+ eor v31.16b, v1.16b, v25.16b
274
+ eor x22, x22, x15, ror #23
275
+ shl v15.2d, v31.2d, #0x1
276
+ bic x20, x27, x20, ror #48
277
+ sri v15.2d, v31.2d, #0x3f
278
+ bic x15, x15, x9, ror #16
279
+ eor x12, x15, x12, ror #58
280
+ eor v31.16b, v8.16b, v28.16b
281
+ eor x15, x5, x27, ror #27
282
+ shl v1.2d, v31.2d, #0x37
283
+ eor x5, x20, x11, ror #41
284
+ sri v1.2d, v31.2d, #0x9
285
+ ldr x11, [sp, #0x8]
286
+ eor x20, x17, x4, ror #21
287
+ eor v31.16b, v16.16b, v25.16b
288
+ eor x17, x24, x9, ror #47
289
+ shl v8.2d, v31.2d, #0x2d
290
+ mov x24, #0x1 // =1
291
+ sri v8.2d, v31.2d, #0x13
292
+ bic x9, x0, x16, ror #9
293
+ str x24, [sp, #0x18]
294
+ eor v31.16b, v7.16b, v29.16b
295
+ bic x24, x29, x1, ror #44
296
+ shl v16.2d, v31.2d, #0x6
297
+ bic x27, x1, x21, ror #50
298
+ sri v16.2d, v31.2d, #0x3a
299
+ bic x4, x26, x29, ror #63
300
+ eor x1, x1, x4, ror #21
301
+ eor v31.16b, v10.16b, v26.16b
302
+ ldr x11, [x11]
303
+ shl v7.2d, v31.2d, #0x3
304
+ bic x4, x21, x30, ror #57
305
+ sri v7.2d, v31.2d, #0x3d
306
+ eor x21, x24, x21, ror #30
307
+ eor x24, x9, x19, ror #44
308
+ eor v31.16b, v3.16b, v28.16b
309
+ bic x9, x14, x6, ror #5
310
+ shl v10.2d, v31.2d, #0x1c
311
+ eor x9, x9, x0, ror #43
312
+ sri v10.2d, v31.2d, #0x24
313
+ bic x0, x6, x0, ror #38
314
+ eor x1, x1, x11
315
+ eor v31.16b, v18.16b, v28.16b
316
+ eor x11, x4, x26, ror #35
317
+ shl v3.2d, v31.2d, #0x15
318
+ eor x4, x0, x16, ror #47
319
+ bic x0, x16, x19, ror #35
320
+ sri v3.2d, v31.2d, #0x2b
321
+ eor x16, x27, x30, ror #43
322
+ eor v31.16b, v17.16b, v29.16b
323
+ bic x27, x30, x26, ror #42
324
+ shl v18.2d, v31.2d, #0xf
325
+ bic x26, x19, x14, ror #41
326
+ eor x19, x0, x14, ror #12
327
+ sri v18.2d, v31.2d, #0x31
328
+ eor x14, x26, x6, ror #46
329
+ eor v31.16b, v11.16b, v25.16b
330
+ eor x6, x27, x29, ror #41
331
+ shl v17.2d, v31.2d, #0xa
332
+ eor x0, x15, x11, ror #52
333
+ eor x0, x0, x13, ror #48
334
+ sri v17.2d, v31.2d, #0x36
335
+ eor x26, x8, x9, ror #57
336
+ eor v31.16b, v9.16b, v27.16b
337
+ eor x27, x0, x14, ror #10
338
+ shl v11.2d, v31.2d, #0x14
339
+ eor x29, x16, x28, ror #63
340
+ eor x26, x26, x6, ror #51
341
+ sri v11.2d, v31.2d, #0x2c
342
+ eor x30, x23, x22, ror #50
343
+ eor v31.16b, v22.16b, v29.16b
344
+ eor x0, x26, x10, ror #31
345
+ shl v9.2d, v31.2d, #0x3d
346
+ eor x29, x29, x19, ror #37
347
+ eor x27, x27, x12, ror #5
348
+ sri v9.2d, v31.2d, #0x3
349
+ eor x30, x30, x24, ror #34
350
+ eor v31.16b, v14.16b, v27.16b
351
+ eor x0, x0, x7, ror #27
352
+ shl v22.2d, v31.2d, #0x27
353
+ eor x26, x30, x21, ror #26
354
+ eor x26, x26, x25, ror #15
355
+ sri v22.2d, v31.2d, #0x19
356
+ ror x30, x27, #0x3e
357
+ eor v31.16b, v20.16b, v26.16b
358
+ eor x30, x30, x26, ror #57
359
+ ror x26, x26, #0x3a
360
+ shl v14.2d, v31.2d, #0x12
361
+ eor x16, x30, x16
362
+ sri v14.2d, v31.2d, #0x2e
363
+ eor x28, x30, x28, ror #63
364
+ eor v31.16b, v4.16b, v27.16b
365
+ str x28, [sp, #0xd0]
366
+ eor x29, x29, x17, ror #36
367
+ shl v20.2d, v31.2d, #0x1b
368
+ eor x28, x1, x2, ror #61
369
+ sri v20.2d, v31.2d, #0x25
370
+ eor x19, x30, x19, ror #37
371
+ eor v31.16b, v24.16b, v27.16b
372
+ eor x29, x29, x20, ror #2
373
+ eor x28, x28, x4, ror #54
374
+ shl v4.2d, v31.2d, #0xe
375
+ eor x26, x26, x0, ror #55
376
+ sri v4.2d, v31.2d, #0x32
377
+ eor x28, x28, x3, ror #39
378
+ eor v31.16b, v21.16b, v25.16b
379
+ eor x28, x28, x5, ror #25
380
+ ror x0, x0, #0x38
381
+ shl v24.2d, v31.2d, #0x2
382
+ eor x0, x0, x29, ror #63
383
+ sri v24.2d, v31.2d, #0x3e
384
+ eor x27, x28, x27, ror #61
385
+ eor v31.16b, v5.16b, v26.16b
386
+ eor x13, x0, x13, ror #46
387
+ eor x28, x29, x28, ror #63
388
+ shl v21.2d, v31.2d, #0x24
389
+ eor x29, x30, x20, ror #2
390
+ sri v21.2d, v31.2d, #0x1c
391
+ eor x20, x26, x3, ror #39
392
+ eor v31.16b, v6.16b, v25.16b
393
+ eor x11, x0, x11, ror #50
394
+ eor x25, x28, x25, ror #9
395
+ shl v27.2d, v31.2d, #0x2c
396
+ eor x3, x28, x21, ror #20
397
+ sri v27.2d, v31.2d, #0x14
398
+ eor x21, x26, x1
399
+ eor x9, x27, x9, ror #49
400
+ bic v31.16b, v7.16b, v11.16b
401
+ eor x24, x28, x24, ror #28
402
+ eor v5.16b, v31.16b, v10.16b
403
+ eor x1, x30, x17, ror #36
404
+ bic v31.16b, v8.16b, v7.16b
405
+ eor x14, x0, x14, ror #8
406
+ eor x22, x28, x22, ror #44
407
+ eor v6.16b, v31.16b, v11.16b
408
+ eor x8, x27, x8, ror #56
409
+ bic v31.16b, v9.16b, v8.16b
410
+ eor x17, x27, x7, ror #19
411
+ eor v7.16b, v31.16b, v7.16b
412
+ eor x15, x0, x15, ror #62
413
+ bic x7, x20, x22, ror #47
414
+ bic v31.16b, v10.16b, v9.16b
415
+ eor x4, x26, x4, ror #54
416
+ eor v8.16b, v31.16b, v8.16b
417
+ eor x0, x0, x12, ror #3
418
+ bic v31.16b, v11.16b, v10.16b
419
+ eor x28, x28, x23, ror #58
420
+ eor x23, x26, x2, ror #61
421
+ eor v9.16b, v31.16b, v9.16b
422
+ eor x26, x26, x5, ror #25
423
+ bic v31.16b, v12.16b, v16.16b
424
+ eor x2, x7, x16, ror #39
425
+ eor v10.16b, v31.16b, v15.16b
426
+ bic x7, x9, x20, ror #42
427
+ bic x30, x15, x9, ror #16
428
+ bic v31.16b, v13.16b, v12.16b
429
+ eor x7, x7, x22, ror #25
430
+ eor v11.16b, v31.16b, v16.16b
431
+ eor x12, x30, x20, ror #58
432
+ bic v31.16b, v14.16b, v13.16b
433
+ bic x20, x22, x16, ror #56
434
+ eor x30, x27, x6, ror #43
435
+ eor v12.16b, v31.16b, v12.16b
436
+ eor x22, x20, x15, ror #23
437
+ bic v31.16b, v15.16b, v14.16b
438
+ bic x6, x19, x13, ror #42
439
+ eor v13.16b, v31.16b, v13.16b
440
+ eor x6, x6, x17, ror #41
441
+ bic x5, x13, x17, ror #63
442
+ bic v31.16b, v16.16b, v15.16b
443
+ eor x5, x21, x5, ror #21
444
+ eor v14.16b, v31.16b, v14.16b
445
+ bic x17, x17, x21, ror #44
446
+ eor x27, x27, x10, ror #23
447
+ bic v31.16b, v17.16b, v21.16b
448
+ bic x21, x21, x25, ror #50
449
+ eor v15.16b, v31.16b, v20.16b
450
+ bic x20, x27, x4, ror #25
451
+ bic v31.16b, v18.16b, v17.16b
452
+ bic x10, x16, x15, ror #31
453
+ eor x16, x21, x19, ror #43
454
+ eor v16.16b, v31.16b, v21.16b
455
+ eor x21, x17, x25, ror #30
456
+ bic v31.16b, v19.16b, v18.16b
457
+ bic x19, x25, x19, ror #57
458
+ eor v17.16b, v31.16b, v17.16b
459
+ ldr x25, [sp, #0x18]
460
+ eor x17, x10, x9, ror #47
461
+ bic v31.16b, v20.16b, v19.16b
462
+ ldr x9, [sp, #0x8]
463
+ eor v18.16b, v31.16b, v18.16b
464
+ eor x15, x20, x28, ror #27
465
+ bic v31.16b, v21.16b, v20.16b
466
+ bic x20, x4, x28, ror #2
467
+ eor x10, x20, x1, ror #50
468
+ eor v19.16b, v31.16b, v19.16b
469
+ bic x20, x11, x27, ror #60
470
+ bic v31.16b, v22.16b, v1.16b
471
+ eor x20, x20, x4, ror #21
472
+ eor v20.16b, v31.16b, v0.16b
473
+ bic x4, x28, x1, ror #48
474
+ bic x1, x1, x11, ror #57
475
+ bic v31.16b, v23.16b, v22.16b
476
+ ldr x28, [x9, x25, lsl #3]
477
+ eor v21.16b, v31.16b, v1.16b
478
+ ldr x9, [sp, #0xd0]
479
+ bic v31.16b, v24.16b, v23.16b
480
+ add x25, x25, #0x1
481
+ str x25, [sp, #0x18]
482
+ eor v22.16b, v31.16b, v22.16b
483
+ cmp x25, #0x17
484
+ bic v31.16b, v0.16b, v24.16b
485
+ eor x25, x1, x27, ror #53
486
+ bic x27, x30, x26, ror #47
487
+ eor v23.16b, v31.16b, v23.16b
488
+ eor x1, x5, x28
489
+ bic v31.16b, v1.16b, v0.16b
490
+ eor x5, x4, x11, ror #41
491
+ eor v24.16b, v31.16b, v24.16b
492
+ eor x11, x19, x13, ror #35
493
+ bic x13, x26, x24, ror #10
494
+ bic v31.16b, v2.16b, v27.16b
495
+ eor x28, x27, x24, ror #57
496
+ eor v0.16b, v31.16b, v30.16b
497
+ bic x27, x24, x9, ror #47
498
+ bic v31.16b, v3.16b, v2.16b
499
+ bic x19, x23, x3, ror #9
500
+ bic x4, x29, x14, ror #41
501
+ eor v1.16b, v31.16b, v27.16b
502
+ eor x24, x19, x29, ror #44
503
+ bic v31.16b, v4.16b, v3.16b
504
+ bic x29, x3, x29, ror #35
505
+ eor v2.16b, v31.16b, v2.16b
506
+ eor x13, x13, x9, ror #57
507
+ eor x19, x29, x14, ror #12
508
+ bic v31.16b, v30.16b, v4.16b
509
+ bic x29, x9, x0, ror #19
510
+ eor v3.16b, v31.16b, v3.16b
511
+ bic x14, x14, x8, ror #5
512
+ bic v31.16b, v27.16b, v30.16b
513
+ eor x9, x14, x23, ror #43
514
+ eor x14, x4, x8, ror #46
515
+ eor v4.16b, v31.16b, v4.16b
516
+ bic x23, x8, x23, ror #38
517
+ eor x8, x27, x0, ror #2
518
+ eor x4, x23, x3, ror #47
519
+ bic x3, x0, x30, ror #5
520
+ eor x23, x3, x26, ror #52
521
+ eor x3, x29, x30, ror #24
522
+ ldr x30, [sp, #0x10]
523
+ ld1r { v28.2d }, [x30], #8
524
+ str x30, [sp, #0x10]
525
+ eor v0.16b, v0.16b, v28.16b
526
+
527
+ Lkeccak_f1600_x4_v8a_scalar_hybrid_loop:
528
+ eor x0, x15, x11, ror #52
529
+ eor x0, x0, x13, ror #48
530
+ eor v30.16b, v0.16b, v5.16b
531
+ eor v30.16b, v30.16b, v10.16b
532
+ eor x26, x8, x9, ror #57
533
+ eor v30.16b, v30.16b, v15.16b
534
+ eor x27, x0, x14, ror #10
535
+ eor x29, x16, x28, ror #63
536
+ eor v30.16b, v30.16b, v20.16b
537
+ eor x26, x26, x6, ror #51
538
+ eor v29.16b, v1.16b, v6.16b
539
+ eor x30, x23, x22, ror #50
540
+ eor v29.16b, v29.16b, v11.16b
541
+ eor x0, x26, x10, ror #31
542
+ eor x29, x29, x19, ror #37
543
+ eor v29.16b, v29.16b, v16.16b
544
+ eor x27, x27, x12, ror #5
545
+ eor v29.16b, v29.16b, v21.16b
546
+ eor x30, x30, x24, ror #34
547
+ eor x0, x0, x7, ror #27
548
+ eor v28.16b, v2.16b, v7.16b
549
+ eor x26, x30, x21, ror #26
550
+ eor v28.16b, v28.16b, v12.16b
551
+ eor x26, x26, x25, ror #15
552
+ eor v28.16b, v28.16b, v17.16b
553
+ ror x30, x27, #0x3e
554
+ eor x30, x30, x26, ror #57
555
+ eor v28.16b, v28.16b, v22.16b
556
+ ror x26, x26, #0x3a
557
+ eor v27.16b, v3.16b, v8.16b
558
+ eor x16, x30, x16
559
+ eor v27.16b, v27.16b, v13.16b
560
+ eor x28, x30, x28, ror #63
561
+ str x28, [sp, #0xd0]
562
+ eor v27.16b, v27.16b, v18.16b
563
+ eor x29, x29, x17, ror #36
564
+ eor v27.16b, v27.16b, v23.16b
565
+ eor x28, x1, x2, ror #61
566
+ eor x19, x30, x19, ror #37
567
+ eor v26.16b, v4.16b, v9.16b
568
+ eor x29, x29, x20, ror #2
569
+ eor v26.16b, v26.16b, v14.16b
570
+ eor x28, x28, x4, ror #54
571
+ eor v26.16b, v26.16b, v19.16b
572
+ eor x26, x26, x0, ror #55
573
+ eor x28, x28, x3, ror #39
574
+ eor v26.16b, v26.16b, v24.16b
575
+ eor x28, x28, x5, ror #25
576
+ add v31.2d, v28.2d, v28.2d
577
+ ror x0, x0, #0x38
578
+ eor x0, x0, x29, ror #63
579
+ sri v31.2d, v28.2d, #0x3f
580
+ eor x27, x28, x27, ror #61
581
+ eor v25.16b, v31.16b, v30.16b
582
+ eor x13, x0, x13, ror #46
583
+ add v31.2d, v26.2d, v26.2d
584
+ eor x28, x29, x28, ror #63
585
+ eor x29, x30, x20, ror #2
586
+ sri v31.2d, v26.2d, #0x3f
587
+ eor x20, x26, x3, ror #39
588
+ eor v28.16b, v31.16b, v28.16b
589
+ eor x11, x0, x11, ror #50
590
+ add v31.2d, v29.2d, v29.2d
591
+ eor x25, x28, x25, ror #9
592
+ eor x3, x28, x21, ror #20
593
+ sri v31.2d, v29.2d, #0x3f
594
+ eor x21, x26, x1
595
+ eor v26.16b, v31.16b, v26.16b
596
+ eor x9, x27, x9, ror #49
597
+ eor x24, x28, x24, ror #28
598
+ add v31.2d, v27.2d, v27.2d
599
+ eor x1, x30, x17, ror #36
600
+ sri v31.2d, v27.2d, #0x3f
601
+ eor x14, x0, x14, ror #8
602
+ eor v29.16b, v31.16b, v29.16b
603
+ eor x22, x28, x22, ror #44
604
+ eor x8, x27, x8, ror #56
605
+ add v31.2d, v30.2d, v30.2d
606
+ eor x17, x27, x7, ror #19
607
+ sri v31.2d, v30.2d, #0x3f
608
+ eor x15, x0, x15, ror #62
609
+ bic x7, x20, x22, ror #47
610
+ eor v27.16b, v31.16b, v27.16b
611
+ eor x4, x26, x4, ror #54
612
+ eor v30.16b, v0.16b, v26.16b
613
+ eor x0, x0, x12, ror #3
614
+ eor v31.16b, v2.16b, v29.16b
615
+ eor x28, x28, x23, ror #58
616
+ eor x23, x26, x2, ror #61
617
+ shl v0.2d, v31.2d, #0x3e
618
+ eor x26, x26, x5, ror #25
619
+ sri v0.2d, v31.2d, #0x2
620
+ eor x2, x7, x16, ror #39
621
+ eor v31.16b, v12.16b, v29.16b
622
+ bic x7, x9, x20, ror #42
623
+ bic x30, x15, x9, ror #16
624
+ shl v2.2d, v31.2d, #0x2b
625
+ eor x7, x7, x22, ror #25
626
+ sri v2.2d, v31.2d, #0x15
627
+ eor x12, x30, x20, ror #58
628
+ bic x20, x22, x16, ror #56
629
+ eor v31.16b, v13.16b, v28.16b
630
+ eor x30, x27, x6, ror #43
631
+ shl v12.2d, v31.2d, #0x19
632
+ eor x22, x20, x15, ror #23
633
+ sri v12.2d, v31.2d, #0x27
634
+ bic x6, x19, x13, ror #42
635
+ eor x6, x6, x17, ror #41
636
+ eor v31.16b, v19.16b, v27.16b
637
+ bic x5, x13, x17, ror #63
638
+ shl v13.2d, v31.2d, #0x8
639
+ eor x5, x21, x5, ror #21
640
+ sri v13.2d, v31.2d, #0x38
641
+ bic x17, x17, x21, ror #44
642
+ eor x27, x27, x10, ror #23
643
+ eor v31.16b, v23.16b, v28.16b
644
+ bic x21, x21, x25, ror #50
645
+ shl v19.2d, v31.2d, #0x38
646
+ bic x20, x27, x4, ror #25
647
+ bic x10, x16, x15, ror #31
648
+ sri v19.2d, v31.2d, #0x8
649
+ eor x16, x21, x19, ror #43
650
+ eor v31.16b, v15.16b, v26.16b
651
+ eor x21, x17, x25, ror #30
652
+ shl v23.2d, v31.2d, #0x29
653
+ bic x19, x25, x19, ror #57
654
+ ldr x25, [sp, #0x18]
655
+ sri v23.2d, v31.2d, #0x17
656
+ eor x17, x10, x9, ror #47
657
+ eor v31.16b, v1.16b, v25.16b
658
+ ldr x9, [sp, #0x8]
659
+ eor x15, x20, x28, ror #27
660
+ shl v15.2d, v31.2d, #0x1
661
+ bic x20, x4, x28, ror #2
662
+ sri v15.2d, v31.2d, #0x3f
663
+ eor x10, x20, x1, ror #50
664
+ eor v31.16b, v8.16b, v28.16b
665
+ bic x20, x11, x27, ror #60
666
+ eor x20, x20, x4, ror #21
667
+ shl v1.2d, v31.2d, #0x37
668
+ bic x4, x28, x1, ror #48
669
+ sri v1.2d, v31.2d, #0x9
670
+ bic x1, x1, x11, ror #57
671
+ eor v31.16b, v16.16b, v25.16b
672
+ ldr x28, [x9, x25, lsl #3]
673
+ ldr x9, [sp, #0xd0]
674
+ shl v8.2d, v31.2d, #0x2d
675
+ add x25, x25, #0x1
676
+ sri v8.2d, v31.2d, #0x13
677
+ str x25, [sp, #0x18]
678
+ cmp x25, #0x17
679
+ eor v31.16b, v7.16b, v29.16b
680
+ eor x25, x1, x27, ror #53
681
+ shl v16.2d, v31.2d, #0x6
682
+ bic x27, x30, x26, ror #47
683
+ sri v16.2d, v31.2d, #0x3a
684
+ eor x1, x5, x28
685
+ eor x5, x4, x11, ror #41
686
+ eor v31.16b, v10.16b, v26.16b
687
+ eor x11, x19, x13, ror #35
688
+ shl v7.2d, v31.2d, #0x3
689
+ bic x13, x26, x24, ror #10
690
+ eor x28, x27, x24, ror #57
691
+ sri v7.2d, v31.2d, #0x3d
692
+ bic x27, x24, x9, ror #47
693
+ eor v31.16b, v3.16b, v28.16b
694
+ bic x19, x23, x3, ror #9
695
+ shl v10.2d, v31.2d, #0x1c
696
+ bic x4, x29, x14, ror #41
697
+ eor x24, x19, x29, ror #44
698
+ sri v10.2d, v31.2d, #0x24
699
+ bic x29, x3, x29, ror #35
700
+ eor v31.16b, v18.16b, v28.16b
701
+ eor x13, x13, x9, ror #57
702
+ shl v3.2d, v31.2d, #0x15
703
+ eor x19, x29, x14, ror #12
704
+ bic x29, x9, x0, ror #19
705
+ sri v3.2d, v31.2d, #0x2b
706
+ bic x14, x14, x8, ror #5
707
+ eor v31.16b, v17.16b, v29.16b
708
+ eor x9, x14, x23, ror #43
709
+ eor x14, x4, x8, ror #46
710
+ shl v18.2d, v31.2d, #0xf
711
+ bic x23, x8, x23, ror #38
712
+ sri v18.2d, v31.2d, #0x31
713
+ eor x8, x27, x0, ror #2
714
+ eor v31.16b, v11.16b, v25.16b
715
+ eor x4, x23, x3, ror #47
716
+ bic x3, x0, x30, ror #5
717
+ shl v17.2d, v31.2d, #0xa
718
+ eor x23, x3, x26, ror #52
719
+ sri v17.2d, v31.2d, #0x36
720
+ eor x3, x29, x30, ror #24
721
+ eor x0, x15, x11, ror #52
722
+ eor v31.16b, v9.16b, v27.16b
723
+ eor x0, x0, x13, ror #48
724
+ shl v11.2d, v31.2d, #0x14
725
+ eor x26, x8, x9, ror #57
726
+ sri v11.2d, v31.2d, #0x2c
727
+ eor x27, x0, x14, ror #10
728
+ eor x29, x16, x28, ror #63
729
+ eor v31.16b, v22.16b, v29.16b
730
+ eor x26, x26, x6, ror #51
731
+ shl v9.2d, v31.2d, #0x3d
732
+ eor x30, x23, x22, ror #50
733
+ sri v9.2d, v31.2d, #0x3
734
+ eor x0, x26, x10, ror #31
735
+ eor x29, x29, x19, ror #37
736
+ eor v31.16b, v14.16b, v27.16b
737
+ eor x27, x27, x12, ror #5
738
+ shl v22.2d, v31.2d, #0x27
739
+ eor x30, x30, x24, ror #34
740
+ eor x0, x0, x7, ror #27
741
+ sri v22.2d, v31.2d, #0x19
742
+ eor x26, x30, x21, ror #26
743
+ eor v31.16b, v20.16b, v26.16b
744
+ eor x26, x26, x25, ror #15
745
+ shl v14.2d, v31.2d, #0x12
746
+ ror x30, x27, #0x3e
747
+ eor x30, x30, x26, ror #57
748
+ sri v14.2d, v31.2d, #0x2e
749
+ ror x26, x26, #0x3a
750
+ eor v31.16b, v4.16b, v27.16b
751
+ eor x16, x30, x16
752
+ shl v20.2d, v31.2d, #0x1b
753
+ eor x28, x30, x28, ror #63
754
+ str x28, [sp, #0xd0]
755
+ sri v20.2d, v31.2d, #0x25
756
+ eor x29, x29, x17, ror #36
757
+ eor v31.16b, v24.16b, v27.16b
758
+ eor x28, x1, x2, ror #61
759
+ eor x19, x30, x19, ror #37
760
+ shl v4.2d, v31.2d, #0xe
761
+ eor x29, x29, x20, ror #2
762
+ sri v4.2d, v31.2d, #0x32
763
+ eor x28, x28, x4, ror #54
764
+ eor v31.16b, v21.16b, v25.16b
765
+ eor x26, x26, x0, ror #55
766
+ eor x28, x28, x3, ror #39
767
+ shl v24.2d, v31.2d, #0x2
768
+ eor x28, x28, x5, ror #25
769
+ sri v24.2d, v31.2d, #0x3e
770
+ ror x0, x0, #0x38
771
+ eor x0, x0, x29, ror #63
772
+ eor v31.16b, v5.16b, v26.16b
773
+ eor x27, x28, x27, ror #61
774
+ shl v21.2d, v31.2d, #0x24
775
+ eor x13, x0, x13, ror #46
776
+ sri v21.2d, v31.2d, #0x1c
777
+ eor x28, x29, x28, ror #63
778
+ eor x29, x30, x20, ror #2
779
+ eor v31.16b, v6.16b, v25.16b
780
+ eor x20, x26, x3, ror #39
781
+ shl v27.2d, v31.2d, #0x2c
782
+ eor x11, x0, x11, ror #50
783
+ sri v27.2d, v31.2d, #0x14
784
+ eor x25, x28, x25, ror #9
785
+ eor x3, x28, x21, ror #20
786
+ bic v31.16b, v7.16b, v11.16b
787
+ eor x21, x26, x1
788
+ eor v5.16b, v31.16b, v10.16b
789
+ eor x9, x27, x9, ror #49
790
+ eor x24, x28, x24, ror #28
791
+ bic v31.16b, v8.16b, v7.16b
792
+ eor x1, x30, x17, ror #36
793
+ eor v6.16b, v31.16b, v11.16b
794
+ eor x14, x0, x14, ror #8
795
+ bic v31.16b, v9.16b, v8.16b
796
+ eor x22, x28, x22, ror #44
797
+ eor x8, x27, x8, ror #56
798
+ eor v7.16b, v31.16b, v7.16b
799
+ eor x17, x27, x7, ror #19
800
+ bic v31.16b, v10.16b, v9.16b
801
+ eor x15, x0, x15, ror #62
802
+ bic x7, x20, x22, ror #47
803
+ eor v8.16b, v31.16b, v8.16b
804
+ eor x4, x26, x4, ror #54
805
+ bic v31.16b, v11.16b, v10.16b
806
+ eor x0, x0, x12, ror #3
807
+ eor v9.16b, v31.16b, v9.16b
808
+ eor x28, x28, x23, ror #58
809
+ eor x23, x26, x2, ror #61
810
+ bic v31.16b, v12.16b, v16.16b
811
+ eor x26, x26, x5, ror #25
812
+ eor v10.16b, v31.16b, v15.16b
813
+ eor x2, x7, x16, ror #39
814
+ bic v31.16b, v13.16b, v12.16b
815
+ bic x7, x9, x20, ror #42
816
+ bic x30, x15, x9, ror #16
817
+ eor v11.16b, v31.16b, v16.16b
818
+ eor x7, x7, x22, ror #25
819
+ bic v31.16b, v14.16b, v13.16b
820
+ eor x12, x30, x20, ror #58
821
+ bic x20, x22, x16, ror #56
822
+ eor v12.16b, v31.16b, v12.16b
823
+ eor x30, x27, x6, ror #43
824
+ bic v31.16b, v15.16b, v14.16b
825
+ eor x22, x20, x15, ror #23
826
+ eor v13.16b, v31.16b, v13.16b
827
+ bic x6, x19, x13, ror #42
828
+ eor x6, x6, x17, ror #41
829
+ bic v31.16b, v16.16b, v15.16b
830
+ bic x5, x13, x17, ror #63
831
+ eor v14.16b, v31.16b, v14.16b
832
+ eor x5, x21, x5, ror #21
833
+ bic v31.16b, v17.16b, v21.16b
834
+ bic x17, x17, x21, ror #44
835
+ eor x27, x27, x10, ror #23
836
+ eor v15.16b, v31.16b, v20.16b
837
+ bic x21, x21, x25, ror #50
838
+ bic v31.16b, v18.16b, v17.16b
839
+ bic x20, x27, x4, ror #25
840
+ bic x10, x16, x15, ror #31
841
+ eor v16.16b, v31.16b, v21.16b
842
+ eor x16, x21, x19, ror #43
843
+ bic v31.16b, v19.16b, v18.16b
844
+ eor x21, x17, x25, ror #30
845
+ eor v17.16b, v31.16b, v17.16b
846
+ bic x19, x25, x19, ror #57
847
+ ldr x25, [sp, #0x18]
848
+ bic v31.16b, v20.16b, v19.16b
849
+ eor x17, x10, x9, ror #47
850
+ eor v18.16b, v31.16b, v18.16b
851
+ ldr x9, [sp, #0x8]
852
+ eor x15, x20, x28, ror #27
853
+ bic v31.16b, v21.16b, v20.16b
854
+ bic x20, x4, x28, ror #2
855
+ eor v19.16b, v31.16b, v19.16b
856
+ eor x10, x20, x1, ror #50
857
+ bic v31.16b, v22.16b, v1.16b
858
+ bic x20, x11, x27, ror #60
859
+ eor x20, x20, x4, ror #21
860
+ eor v20.16b, v31.16b, v0.16b
861
+ bic x4, x28, x1, ror #48
862
+ bic v31.16b, v23.16b, v22.16b
863
+ bic x1, x1, x11, ror #57
864
+ eor v21.16b, v31.16b, v1.16b
865
+ ldr x28, [x9, x25, lsl #3]
866
+ ldr x9, [sp, #0xd0]
867
+ bic v31.16b, v24.16b, v23.16b
868
+ add x25, x25, #0x1
869
+ eor v22.16b, v31.16b, v22.16b
870
+ str x25, [sp, #0x18]
871
+ cmp x25, #0x17
872
+ bic v31.16b, v0.16b, v24.16b
873
+ eor x25, x1, x27, ror #53
874
+ eor v23.16b, v31.16b, v23.16b
875
+ bic x27, x30, x26, ror #47
876
+ bic v31.16b, v1.16b, v0.16b
877
+ eor x1, x5, x28
878
+ eor x5, x4, x11, ror #41
879
+ eor v24.16b, v31.16b, v24.16b
880
+ eor x11, x19, x13, ror #35
881
+ bic v31.16b, v2.16b, v27.16b
882
+ bic x13, x26, x24, ror #10
883
+ eor x28, x27, x24, ror #57
884
+ eor v0.16b, v31.16b, v30.16b
885
+ bic x27, x24, x9, ror #47
886
+ bic v31.16b, v3.16b, v2.16b
887
+ bic x19, x23, x3, ror #9
888
+ eor v1.16b, v31.16b, v27.16b
889
+ bic x4, x29, x14, ror #41
890
+ eor x24, x19, x29, ror #44
891
+ bic v31.16b, v4.16b, v3.16b
892
+ bic x29, x3, x29, ror #35
893
+ eor v2.16b, v31.16b, v2.16b
894
+ eor x13, x13, x9, ror #57
895
+ bic v31.16b, v30.16b, v4.16b
896
+ eor x19, x29, x14, ror #12
897
+ bic x29, x9, x0, ror #19
898
+ eor v3.16b, v31.16b, v3.16b
899
+ bic x14, x14, x8, ror #5
900
+ bic v31.16b, v27.16b, v30.16b
901
+ eor x9, x14, x23, ror #43
902
+ eor x14, x4, x8, ror #46
903
+ eor v4.16b, v31.16b, v4.16b
904
+ bic x23, x8, x23, ror #38
905
+ eor x8, x27, x0, ror #2
906
+ eor x4, x23, x3, ror #47
907
+ bic x3, x0, x30, ror #5
908
+ eor x23, x3, x26, ror #52
909
+ eor x3, x29, x30, ror #24
910
+ ldr x30, [sp, #0x10]
911
+ ld1r { v28.2d }, [x30], #8
912
+ str x30, [sp, #0x10]
913
+ eor v0.16b, v0.16b, v28.16b
914
+
915
+ Lkeccak_f1600_x4_v8a_scalar_hybrid_loop_end:
916
+ b.le Lkeccak_f1600_x4_v8a_scalar_hybrid_loop
917
+ ror x2, x2, #0x3d
918
+ ror x3, x3, #0x27
919
+ ror x4, x4, #0x36
920
+ ror x5, x5, #0x19
921
+ ror x6, x6, #0x2b
922
+ ror x7, x7, #0x13
923
+ ror x8, x8, #0x38
924
+ ror x9, x9, #0x31
925
+ ror x10, x10, #0x17
926
+ ror x11, x11, #0x32
927
+ ror x12, x12, #0x3
928
+ ror x13, x13, #0x2e
929
+ ror x14, x14, #0x8
930
+ ror x15, x15, #0x3e
931
+ ror x17, x17, #0x24
932
+ ror x28, x28, #0x3f
933
+ ror x19, x19, #0x25
934
+ ror x20, x20, #0x2
935
+ ror x21, x21, #0x14
936
+ ror x22, x22, #0x2c
937
+ ror x23, x23, #0x3a
938
+ ror x24, x24, #0x1c
939
+ ror x25, x25, #0x9
940
+ ldr x30, [sp, #0x20]
941
+ cmp x30, #0x1
942
+ b.eq Lkeccak_f1600_x4_v8a_scalar_hybrid_done
943
+ mov x30, #0x1 // =1
944
+ str x30, [sp, #0x20]
945
+ ldr x0, [sp]
946
+ add x0, x0, #0x190
947
+ stp x1, x6, [x0]
948
+ stp x11, x16, [x0, #0x10]
949
+ stp x21, x2, [x0, #0x20]
950
+ stp x7, x12, [x0, #0x30]
951
+ stp x17, x22, [x0, #0x40]
952
+ stp x3, x8, [x0, #0x50]
953
+ stp x13, x28, [x0, #0x60]
954
+ stp x23, x4, [x0, #0x70]
955
+ stp x9, x14, [x0, #0x80]
956
+ stp x19, x24, [x0, #0x90]
957
+ stp x5, x10, [x0, #0xa0]
958
+ stp x15, x20, [x0, #0xb0]
959
+ str x25, [x0, #0xc0]
960
+ sub x0, x0, #0x190
961
+ add x0, x0, #0x258
962
+ ldp x1, x6, [x0]
963
+ ldp x11, x16, [x0, #0x10]
964
+ ldp x21, x2, [x0, #0x20]
965
+ ldp x7, x12, [x0, #0x30]
966
+ ldp x17, x22, [x0, #0x40]
967
+ ldp x3, x8, [x0, #0x50]
968
+ ldp x13, x28, [x0, #0x60]
969
+ ldp x23, x4, [x0, #0x70]
970
+ ldp x9, x14, [x0, #0x80]
971
+ ldp x19, x24, [x0, #0x90]
972
+ ldp x5, x10, [x0, #0xa0]
973
+ ldp x15, x20, [x0, #0xb0]
974
+ ldr x25, [x0, #0xc0]
975
+ sub x0, x0, #0x258
976
+ b Lkeccak_f1600_x4_v8a_scalar_hybrid_initial
977
+
978
+ Lkeccak_f1600_x4_v8a_scalar_hybrid_done:
979
+ ldr x0, [sp]
980
+ add x0, x0, #0x258
981
+ stp x1, x6, [x0]
982
+ stp x11, x16, [x0, #0x10]
983
+ stp x21, x2, [x0, #0x20]
984
+ stp x7, x12, [x0, #0x30]
985
+ stp x17, x22, [x0, #0x40]
986
+ stp x3, x8, [x0, #0x50]
987
+ stp x13, x28, [x0, #0x60]
988
+ stp x23, x4, [x0, #0x70]
989
+ stp x9, x14, [x0, #0x80]
990
+ stp x19, x24, [x0, #0x90]
991
+ stp x5, x10, [x0, #0xa0]
992
+ stp x15, x20, [x0, #0xb0]
993
+ str x25, [x0, #0xc0]
994
+ sub x0, x0, #0x258
995
+ add x4, x0, #0xc8
996
+ trn1 v25.2d, v0.2d, v1.2d
997
+ trn1 v26.2d, v2.2d, v3.2d
998
+ stp q25, q26, [x0], #0x20
999
+ trn2 v27.2d, v0.2d, v1.2d
1000
+ trn2 v28.2d, v2.2d, v3.2d
1001
+ st1 { v27.2d, v28.2d }, [x4], #32
1002
+ trn1 v25.2d, v4.2d, v5.2d
1003
+ trn1 v26.2d, v6.2d, v7.2d
1004
+ stp q25, q26, [x0], #0x20
1005
+ trn2 v27.2d, v4.2d, v5.2d
1006
+ trn2 v28.2d, v6.2d, v7.2d
1007
+ st1 { v27.2d, v28.2d }, [x4], #32
1008
+ trn1 v25.2d, v8.2d, v9.2d
1009
+ trn1 v26.2d, v10.2d, v11.2d
1010
+ stp q25, q26, [x0], #0x20
1011
+ trn2 v27.2d, v8.2d, v9.2d
1012
+ trn2 v28.2d, v10.2d, v11.2d
1013
+ st1 { v27.2d, v28.2d }, [x4], #32
1014
+ trn1 v25.2d, v12.2d, v13.2d
1015
+ trn1 v26.2d, v14.2d, v15.2d
1016
+ stp q25, q26, [x0], #0x20
1017
+ trn2 v27.2d, v12.2d, v13.2d
1018
+ trn2 v28.2d, v14.2d, v15.2d
1019
+ st1 { v27.2d, v28.2d }, [x4], #32
1020
+ trn1 v25.2d, v16.2d, v17.2d
1021
+ trn1 v26.2d, v18.2d, v19.2d
1022
+ stp q25, q26, [x0], #0x20
1023
+ trn2 v27.2d, v16.2d, v17.2d
1024
+ trn2 v28.2d, v18.2d, v19.2d
1025
+ st1 { v27.2d, v28.2d }, [x4], #32
1026
+ trn1 v25.2d, v20.2d, v21.2d
1027
+ trn1 v26.2d, v22.2d, v23.2d
1028
+ stp q25, q26, [x0], #0x20
1029
+ trn2 v27.2d, v20.2d, v21.2d
1030
+ trn2 v28.2d, v22.2d, v23.2d
1031
+ st1 { v27.2d, v28.2d }, [x4], #32
1032
+ str d24, [x0]
1033
+ trn2 v25.2d, v24.2d, v24.2d
1034
+ str d25, [x4]
1035
+ ldp d8, d9, [sp, #0x90]
1036
+ .cfi_restore d8
1037
+ .cfi_restore d9
1038
+ ldp d10, d11, [sp, #0xa0]
1039
+ .cfi_restore d10
1040
+ .cfi_restore d11
1041
+ ldp d12, d13, [sp, #0xb0]
1042
+ .cfi_restore d12
1043
+ .cfi_restore d13
1044
+ ldp d14, d15, [sp, #0xc0]
1045
+ .cfi_restore d14
1046
+ .cfi_restore d15
1047
+ ldp x19, x20, [sp, #0x30]
1048
+ .cfi_restore x19
1049
+ .cfi_restore x20
1050
+ ldp x21, x22, [sp, #0x40]
1051
+ .cfi_restore x21
1052
+ .cfi_restore x22
1053
+ ldp x23, x24, [sp, #0x50]
1054
+ .cfi_restore x23
1055
+ .cfi_restore x24
1056
+ ldp x25, x26, [sp, #0x60]
1057
+ .cfi_restore x25
1058
+ .cfi_restore x26
1059
+ ldp x27, x28, [sp, #0x70]
1060
+ .cfi_restore x27
1061
+ .cfi_restore x28
1062
+ ldp x29, x30, [sp, #0x80]
1063
+ .cfi_restore x29
1064
+ .cfi_restore x30
1065
+ add sp, sp, #0xe0
1066
+ .cfi_adjust_cfa_offset -0xe0
1067
+ ret
1068
+ .cfi_endproc
1069
+
1070
+ MLD_ASM_FN_SIZE(keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm)
1071
+
1072
+ #endif /* MLD_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID && \
1073
+ !MLD_CONFIG_MULTILEVEL_NO_SHARED */
1074
+
1075
+ #if defined(__ELF__)
1076
+ .section .note.GNU-stack,"",%progbits
1077
+ #endif