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