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