pq_crypto 0.3.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 (328) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +56 -0
  3. data/CHANGELOG.md +62 -0
  4. data/GET_STARTED.md +366 -40
  5. data/README.md +76 -233
  6. data/SECURITY.md +107 -82
  7. data/ext/pqcrypto/extconf.rb +169 -87
  8. data/ext/pqcrypto/mldsa_api.h +1 -48
  9. data/ext/pqcrypto/mlkem_api.h +1 -18
  10. data/ext/pqcrypto/pq_externalmu.c +89 -204
  11. data/ext/pqcrypto/pqcrypto_native_api.h +129 -0
  12. data/ext/pqcrypto/pqcrypto_ruby_secure.c +484 -84
  13. data/ext/pqcrypto/pqcrypto_secure.c +203 -78
  14. data/ext/pqcrypto/pqcrypto_secure.h +53 -14
  15. data/ext/pqcrypto/pqcrypto_version.h +7 -0
  16. data/ext/pqcrypto/randombytes.h +9 -0
  17. data/ext/pqcrypto/vendor/.vendored +10 -5
  18. data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +105 -0
  19. data/ext/pqcrypto/vendor/mldsa-native/LICENSE +286 -0
  20. data/ext/pqcrypto/vendor/mldsa-native/META.yml +24 -0
  21. data/ext/pqcrypto/vendor/mldsa-native/README.md +221 -0
  22. data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +8 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +721 -0
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +975 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +724 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +723 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +166 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +321 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +385 -0
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +73 -0
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +130 -0
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +277 -0
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +244 -0
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +182 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +117 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +438 -0
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +105 -0
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +71 -0
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +62 -0
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +376 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +204 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +259 -0
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1077 -0
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +987 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +41 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +26 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +35 -0
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +37 -0
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +27 -0
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +36 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +69 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +32 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +20 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +638 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +136 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +52 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +29 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +488 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +16 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/xkcp.h +31 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +247 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +231 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +150 -0
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +753 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +129 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +145 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +177 -0
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +653 -0
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +79 -0
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +53 -0
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +55 -0
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +85 -0
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +85 -0
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +102 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +110 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +72 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +69 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +40 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +189 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +135 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +128 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +543 -0
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +62 -0
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +649 -0
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +23 -0
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +315 -0
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +124 -0
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +2311 -0
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +2383 -0
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +239 -0
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +131 -0
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +139 -0
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +155 -0
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +187 -0
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +61 -0
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +52 -0
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +155 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +155 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +102 -0
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +104 -0
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +91 -0
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +93 -0
  107. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +126 -0
  108. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +155 -0
  109. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +139 -0
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +160 -0
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +293 -0
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +224 -0
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +77 -0
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +991 -0
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +393 -0
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +946 -0
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +360 -0
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +877 -0
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +725 -0
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +139 -0
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +249 -0
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +1511 -0
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +806 -0
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +268 -0
  127. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  128. data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +104 -0
  129. data/ext/pqcrypto/vendor/mlkem-native/LICENSE +294 -0
  130. data/ext/pqcrypto/vendor/mlkem-native/META.yml +30 -0
  131. data/ext/pqcrypto/vendor/mlkem-native/README.md +223 -0
  132. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +86 -0
  133. data/ext/pqcrypto/vendor/mlkem-native/SECURITY.md +8 -0
  134. data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +23 -0
  135. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +660 -0
  136. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +538 -0
  137. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +681 -0
  138. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +709 -0
  139. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +174 -0
  140. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +274 -0
  141. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +717 -0
  142. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +688 -0
  143. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c +64 -0
  144. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +128 -0
  145. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +251 -0
  146. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +158 -0
  147. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +208 -0
  148. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +80 -0
  149. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +463 -0
  150. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.h +98 -0
  151. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +70 -0
  152. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  153. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +375 -0
  154. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +203 -0
  155. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +258 -0
  156. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1076 -0
  157. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +986 -0
  158. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +46 -0
  159. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +25 -0
  160. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +34 -0
  161. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +35 -0
  162. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +26 -0
  163. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +35 -0
  164. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +117 -0
  165. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/README.md +10 -0
  166. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +79 -0
  167. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +35 -0
  168. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +667 -0
  169. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +40 -0
  170. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +51 -0
  171. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +290 -0
  172. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +314 -0
  173. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +28 -0
  174. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +33 -0
  175. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +41 -0
  176. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S +451 -0
  177. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +51 -0
  178. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +622 -0
  179. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +156 -0
  180. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +446 -0
  181. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +326 -0
  182. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/README.md +16 -0
  183. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +122 -0
  184. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +174 -0
  185. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +177 -0
  186. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt.S +628 -0
  187. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt.S +562 -0
  188. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_asm.S +127 -0
  189. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_asm.S +150 -0
  190. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_asm.S +117 -0
  191. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_asm.S +98 -0
  192. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +261 -0
  193. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +314 -0
  194. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +368 -0
  195. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_asm.S +226 -0
  196. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +542 -0
  197. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +637 -0
  198. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +25 -0
  199. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md +11 -0
  200. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +128 -0
  201. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +45 -0
  202. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +81 -0
  203. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +145 -0
  204. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_izetas.inc +27 -0
  205. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +805 -0
  206. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas.inc +27 -0
  207. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas_basemul.inc +39 -0
  208. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/README.md +4 -0
  209. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +304 -0
  210. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +309 -0
  211. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +94 -0
  212. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +45 -0
  213. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +102 -0
  214. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +25 -0
  215. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt.S +719 -0
  216. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mulcache_compute.S +90 -0
  217. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt.S +639 -0
  218. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes.S +193 -0
  219. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes.S +181 -0
  220. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack.S +174 -0
  221. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10.S +382 -0
  222. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11.S +448 -0
  223. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4.S +163 -0
  224. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5.S +220 -0
  225. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10.S +228 -0
  226. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11.S +277 -0
  227. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4.S +180 -0
  228. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5.S +192 -0
  229. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +502 -0
  230. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +750 -0
  231. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +998 -0
  232. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce.S +218 -0
  233. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_asm.S +103 -0
  234. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +544 -0
  235. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont.S +155 -0
  236. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h +76 -0
  237. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +572 -0
  238. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +317 -0
  239. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +502 -0
  240. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +668 -0
  241. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +60 -0
  242. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +362 -0
  243. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +118 -0
  244. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/symmetric.h +70 -0
  245. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +260 -0
  246. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.c +20 -0
  247. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +464 -0
  248. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/zetas.inc +30 -0
  249. data/lib/pq_crypto/algorithm_registry.rb +200 -0
  250. data/lib/pq_crypto/hybrid_kem.rb +1 -12
  251. data/lib/pq_crypto/kem.rb +104 -13
  252. data/lib/pq_crypto/pkcs8.rb +387 -0
  253. data/lib/pq_crypto/serialization.rb +1 -14
  254. data/lib/pq_crypto/signature.rb +123 -17
  255. data/lib/pq_crypto/spki.rb +131 -0
  256. data/lib/pq_crypto/version.rb +1 -1
  257. data/lib/pq_crypto.rb +79 -20
  258. data/script/vendor_libs.rb +88 -155
  259. metadata +241 -73
  260. data/ext/pqcrypto/vendor/pqclean/common/aes.c +0 -639
  261. data/ext/pqcrypto/vendor/pqclean/common/aes.h +0 -64
  262. data/ext/pqcrypto/vendor/pqclean/common/compat.h +0 -73
  263. data/ext/pqcrypto/vendor/pqclean/common/crypto_declassify.h +0 -7
  264. data/ext/pqcrypto/vendor/pqclean/common/fips202.c +0 -928
  265. data/ext/pqcrypto/vendor/pqclean/common/fips202.h +0 -166
  266. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/feat.S +0 -168
  267. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.c +0 -684
  268. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.h +0 -60
  269. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SIMD256.c +0 -1028
  270. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SnP.h +0 -50
  271. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-unrolling.macros +0 -198
  272. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile +0 -8
  273. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile.Microsoft_nmake +0 -8
  274. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/SIMD256-config.h +0 -3
  275. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/align.h +0 -34
  276. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/brg_endian.h +0 -142
  277. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.c +0 -101
  278. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.h +0 -39
  279. data/ext/pqcrypto/vendor/pqclean/common/randombytes.c +0 -355
  280. data/ext/pqcrypto/vendor/pqclean/common/randombytes.h +0 -27
  281. data/ext/pqcrypto/vendor/pqclean/common/sha2.c +0 -769
  282. data/ext/pqcrypto/vendor/pqclean/common/sha2.h +0 -173
  283. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.c +0 -156
  284. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.h +0 -27
  285. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/LICENSE +0 -5
  286. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile +0 -19
  287. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile.Microsoft_nmake +0 -23
  288. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/api.h +0 -18
  289. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.c +0 -83
  290. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.h +0 -11
  291. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.c +0 -327
  292. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.h +0 -22
  293. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.c +0 -164
  294. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.h +0 -23
  295. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.c +0 -146
  296. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.h +0 -14
  297. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/params.h +0 -36
  298. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.c +0 -299
  299. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.h +0 -37
  300. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.c +0 -188
  301. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.h +0 -26
  302. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.c +0 -41
  303. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.h +0 -13
  304. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric-shake.c +0 -71
  305. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric.h +0 -30
  306. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.c +0 -67
  307. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.h +0 -13
  308. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/LICENSE +0 -5
  309. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile +0 -19
  310. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile.Microsoft_nmake +0 -23
  311. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/api.h +0 -50
  312. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.c +0 -98
  313. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.h +0 -10
  314. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.c +0 -261
  315. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.h +0 -31
  316. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/params.h +0 -44
  317. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.c +0 -799
  318. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h +0 -52
  319. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.c +0 -415
  320. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.h +0 -65
  321. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.c +0 -69
  322. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.h +0 -17
  323. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.c +0 -92
  324. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.h +0 -14
  325. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.c +0 -407
  326. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.h +0 -47
  327. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric-shake.c +0 -26
  328. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h +0 -34
@@ -0,0 +1,542 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /*
7
+ * WARNING: This file is auto-generated from scripts/autogen
8
+ * in the mlkem-native repository.
9
+ * Do not modify it directly.
10
+ */
11
+
12
+ #include "../../../common.h"
13
+
14
+ #if defined(MLK_ARITH_BACKEND_AARCH64) && \
15
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED)
16
+
17
+ #include "arith_native_aarch64.h"
18
+
19
+ /*
20
+ * Lookup table used by rejection sampling of the public matrix.
21
+ * See autogen for details.
22
+ */
23
+ MLK_ALIGN const uint8_t mlk_rej_uniform_table[] = {
24
+ 255, 255, 255, 255, 255, 255, 255, 255,
25
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 0 */,
26
+ 0, 1, 255, 255, 255, 255, 255, 255,
27
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 1 */,
28
+ 2, 3, 255, 255, 255, 255, 255, 255,
29
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 2 */,
30
+ 0, 1, 2, 3, 255, 255, 255, 255,
31
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 3 */,
32
+ 4, 5, 255, 255, 255, 255, 255, 255,
33
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 4 */,
34
+ 0, 1, 4, 5, 255, 255, 255, 255,
35
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 5 */,
36
+ 2, 3, 4, 5, 255, 255, 255, 255,
37
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 6 */,
38
+ 0, 1, 2, 3, 4, 5, 255, 255,
39
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 7 */,
40
+ 6, 7, 255, 255, 255, 255, 255, 255,
41
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 8 */,
42
+ 0, 1, 6, 7, 255, 255, 255, 255,
43
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 9 */,
44
+ 2, 3, 6, 7, 255, 255, 255, 255,
45
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 10 */,
46
+ 0, 1, 2, 3, 6, 7, 255, 255,
47
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 11 */,
48
+ 4, 5, 6, 7, 255, 255, 255, 255,
49
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 12 */,
50
+ 0, 1, 4, 5, 6, 7, 255, 255,
51
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 13 */,
52
+ 2, 3, 4, 5, 6, 7, 255, 255,
53
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 14 */,
54
+ 0, 1, 2, 3, 4, 5, 6, 7,
55
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 15 */,
56
+ 8, 9, 255, 255, 255, 255, 255, 255,
57
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 16 */,
58
+ 0, 1, 8, 9, 255, 255, 255, 255,
59
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 17 */,
60
+ 2, 3, 8, 9, 255, 255, 255, 255,
61
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 18 */,
62
+ 0, 1, 2, 3, 8, 9, 255, 255,
63
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 19 */,
64
+ 4, 5, 8, 9, 255, 255, 255, 255,
65
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 20 */,
66
+ 0, 1, 4, 5, 8, 9, 255, 255,
67
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 21 */,
68
+ 2, 3, 4, 5, 8, 9, 255, 255,
69
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 22 */,
70
+ 0, 1, 2, 3, 4, 5, 8, 9,
71
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 23 */,
72
+ 6, 7, 8, 9, 255, 255, 255, 255,
73
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 24 */,
74
+ 0, 1, 6, 7, 8, 9, 255, 255,
75
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 25 */,
76
+ 2, 3, 6, 7, 8, 9, 255, 255,
77
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 26 */,
78
+ 0, 1, 2, 3, 6, 7, 8, 9,
79
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 27 */,
80
+ 4, 5, 6, 7, 8, 9, 255, 255,
81
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 28 */,
82
+ 0, 1, 4, 5, 6, 7, 8, 9,
83
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 29 */,
84
+ 2, 3, 4, 5, 6, 7, 8, 9,
85
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 30 */,
86
+ 0, 1, 2, 3, 4, 5, 6, 7,
87
+ 8, 9, 255, 255, 255, 255, 255, 255 /* 31 */,
88
+ 10, 11, 255, 255, 255, 255, 255, 255,
89
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 32 */,
90
+ 0, 1, 10, 11, 255, 255, 255, 255,
91
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 33 */,
92
+ 2, 3, 10, 11, 255, 255, 255, 255,
93
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 34 */,
94
+ 0, 1, 2, 3, 10, 11, 255, 255,
95
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 35 */,
96
+ 4, 5, 10, 11, 255, 255, 255, 255,
97
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 36 */,
98
+ 0, 1, 4, 5, 10, 11, 255, 255,
99
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 37 */,
100
+ 2, 3, 4, 5, 10, 11, 255, 255,
101
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 38 */,
102
+ 0, 1, 2, 3, 4, 5, 10, 11,
103
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 39 */,
104
+ 6, 7, 10, 11, 255, 255, 255, 255,
105
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 40 */,
106
+ 0, 1, 6, 7, 10, 11, 255, 255,
107
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 41 */,
108
+ 2, 3, 6, 7, 10, 11, 255, 255,
109
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 42 */,
110
+ 0, 1, 2, 3, 6, 7, 10, 11,
111
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 43 */,
112
+ 4, 5, 6, 7, 10, 11, 255, 255,
113
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 44 */,
114
+ 0, 1, 4, 5, 6, 7, 10, 11,
115
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 45 */,
116
+ 2, 3, 4, 5, 6, 7, 10, 11,
117
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 46 */,
118
+ 0, 1, 2, 3, 4, 5, 6, 7,
119
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 47 */,
120
+ 8, 9, 10, 11, 255, 255, 255, 255,
121
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 48 */,
122
+ 0, 1, 8, 9, 10, 11, 255, 255,
123
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 49 */,
124
+ 2, 3, 8, 9, 10, 11, 255, 255,
125
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 50 */,
126
+ 0, 1, 2, 3, 8, 9, 10, 11,
127
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 51 */,
128
+ 4, 5, 8, 9, 10, 11, 255, 255,
129
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 52 */,
130
+ 0, 1, 4, 5, 8, 9, 10, 11,
131
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 53 */,
132
+ 2, 3, 4, 5, 8, 9, 10, 11,
133
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 54 */,
134
+ 0, 1, 2, 3, 4, 5, 8, 9,
135
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 55 */,
136
+ 6, 7, 8, 9, 10, 11, 255, 255,
137
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 56 */,
138
+ 0, 1, 6, 7, 8, 9, 10, 11,
139
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 57 */,
140
+ 2, 3, 6, 7, 8, 9, 10, 11,
141
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 58 */,
142
+ 0, 1, 2, 3, 6, 7, 8, 9,
143
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 59 */,
144
+ 4, 5, 6, 7, 8, 9, 10, 11,
145
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 60 */,
146
+ 0, 1, 4, 5, 6, 7, 8, 9,
147
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 61 */,
148
+ 2, 3, 4, 5, 6, 7, 8, 9,
149
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 62 */,
150
+ 0, 1, 2, 3, 4, 5, 6, 7,
151
+ 8, 9, 10, 11, 255, 255, 255, 255 /* 63 */,
152
+ 12, 13, 255, 255, 255, 255, 255, 255,
153
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 64 */,
154
+ 0, 1, 12, 13, 255, 255, 255, 255,
155
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 65 */,
156
+ 2, 3, 12, 13, 255, 255, 255, 255,
157
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 66 */,
158
+ 0, 1, 2, 3, 12, 13, 255, 255,
159
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 67 */,
160
+ 4, 5, 12, 13, 255, 255, 255, 255,
161
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 68 */,
162
+ 0, 1, 4, 5, 12, 13, 255, 255,
163
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 69 */,
164
+ 2, 3, 4, 5, 12, 13, 255, 255,
165
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 70 */,
166
+ 0, 1, 2, 3, 4, 5, 12, 13,
167
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 71 */,
168
+ 6, 7, 12, 13, 255, 255, 255, 255,
169
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 72 */,
170
+ 0, 1, 6, 7, 12, 13, 255, 255,
171
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 73 */,
172
+ 2, 3, 6, 7, 12, 13, 255, 255,
173
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 74 */,
174
+ 0, 1, 2, 3, 6, 7, 12, 13,
175
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 75 */,
176
+ 4, 5, 6, 7, 12, 13, 255, 255,
177
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 76 */,
178
+ 0, 1, 4, 5, 6, 7, 12, 13,
179
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 77 */,
180
+ 2, 3, 4, 5, 6, 7, 12, 13,
181
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 78 */,
182
+ 0, 1, 2, 3, 4, 5, 6, 7,
183
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 79 */,
184
+ 8, 9, 12, 13, 255, 255, 255, 255,
185
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 80 */,
186
+ 0, 1, 8, 9, 12, 13, 255, 255,
187
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 81 */,
188
+ 2, 3, 8, 9, 12, 13, 255, 255,
189
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 82 */,
190
+ 0, 1, 2, 3, 8, 9, 12, 13,
191
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 83 */,
192
+ 4, 5, 8, 9, 12, 13, 255, 255,
193
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 84 */,
194
+ 0, 1, 4, 5, 8, 9, 12, 13,
195
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 85 */,
196
+ 2, 3, 4, 5, 8, 9, 12, 13,
197
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 86 */,
198
+ 0, 1, 2, 3, 4, 5, 8, 9,
199
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 87 */,
200
+ 6, 7, 8, 9, 12, 13, 255, 255,
201
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 88 */,
202
+ 0, 1, 6, 7, 8, 9, 12, 13,
203
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 89 */,
204
+ 2, 3, 6, 7, 8, 9, 12, 13,
205
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 90 */,
206
+ 0, 1, 2, 3, 6, 7, 8, 9,
207
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 91 */,
208
+ 4, 5, 6, 7, 8, 9, 12, 13,
209
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 92 */,
210
+ 0, 1, 4, 5, 6, 7, 8, 9,
211
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 93 */,
212
+ 2, 3, 4, 5, 6, 7, 8, 9,
213
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 94 */,
214
+ 0, 1, 2, 3, 4, 5, 6, 7,
215
+ 8, 9, 12, 13, 255, 255, 255, 255 /* 95 */,
216
+ 10, 11, 12, 13, 255, 255, 255, 255,
217
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 96 */,
218
+ 0, 1, 10, 11, 12, 13, 255, 255,
219
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 97 */,
220
+ 2, 3, 10, 11, 12, 13, 255, 255,
221
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 98 */,
222
+ 0, 1, 2, 3, 10, 11, 12, 13,
223
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 99 */,
224
+ 4, 5, 10, 11, 12, 13, 255, 255,
225
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 100 */,
226
+ 0, 1, 4, 5, 10, 11, 12, 13,
227
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 101 */,
228
+ 2, 3, 4, 5, 10, 11, 12, 13,
229
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 102 */,
230
+ 0, 1, 2, 3, 4, 5, 10, 11,
231
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 103 */,
232
+ 6, 7, 10, 11, 12, 13, 255, 255,
233
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 104 */,
234
+ 0, 1, 6, 7, 10, 11, 12, 13,
235
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 105 */,
236
+ 2, 3, 6, 7, 10, 11, 12, 13,
237
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 106 */,
238
+ 0, 1, 2, 3, 6, 7, 10, 11,
239
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 107 */,
240
+ 4, 5, 6, 7, 10, 11, 12, 13,
241
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 108 */,
242
+ 0, 1, 4, 5, 6, 7, 10, 11,
243
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 109 */,
244
+ 2, 3, 4, 5, 6, 7, 10, 11,
245
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 110 */,
246
+ 0, 1, 2, 3, 4, 5, 6, 7,
247
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 111 */,
248
+ 8, 9, 10, 11, 12, 13, 255, 255,
249
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 112 */,
250
+ 0, 1, 8, 9, 10, 11, 12, 13,
251
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 113 */,
252
+ 2, 3, 8, 9, 10, 11, 12, 13,
253
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 114 */,
254
+ 0, 1, 2, 3, 8, 9, 10, 11,
255
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 115 */,
256
+ 4, 5, 8, 9, 10, 11, 12, 13,
257
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 116 */,
258
+ 0, 1, 4, 5, 8, 9, 10, 11,
259
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 117 */,
260
+ 2, 3, 4, 5, 8, 9, 10, 11,
261
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 118 */,
262
+ 0, 1, 2, 3, 4, 5, 8, 9,
263
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 119 */,
264
+ 6, 7, 8, 9, 10, 11, 12, 13,
265
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 120 */,
266
+ 0, 1, 6, 7, 8, 9, 10, 11,
267
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 121 */,
268
+ 2, 3, 6, 7, 8, 9, 10, 11,
269
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 122 */,
270
+ 0, 1, 2, 3, 6, 7, 8, 9,
271
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 123 */,
272
+ 4, 5, 6, 7, 8, 9, 10, 11,
273
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 124 */,
274
+ 0, 1, 4, 5, 6, 7, 8, 9,
275
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 125 */,
276
+ 2, 3, 4, 5, 6, 7, 8, 9,
277
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 126 */,
278
+ 0, 1, 2, 3, 4, 5, 6, 7,
279
+ 8, 9, 10, 11, 12, 13, 255, 255 /* 127 */,
280
+ 14, 15, 255, 255, 255, 255, 255, 255,
281
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 128 */,
282
+ 0, 1, 14, 15, 255, 255, 255, 255,
283
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 129 */,
284
+ 2, 3, 14, 15, 255, 255, 255, 255,
285
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 130 */,
286
+ 0, 1, 2, 3, 14, 15, 255, 255,
287
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 131 */,
288
+ 4, 5, 14, 15, 255, 255, 255, 255,
289
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 132 */,
290
+ 0, 1, 4, 5, 14, 15, 255, 255,
291
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 133 */,
292
+ 2, 3, 4, 5, 14, 15, 255, 255,
293
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 134 */,
294
+ 0, 1, 2, 3, 4, 5, 14, 15,
295
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 135 */,
296
+ 6, 7, 14, 15, 255, 255, 255, 255,
297
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 136 */,
298
+ 0, 1, 6, 7, 14, 15, 255, 255,
299
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 137 */,
300
+ 2, 3, 6, 7, 14, 15, 255, 255,
301
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 138 */,
302
+ 0, 1, 2, 3, 6, 7, 14, 15,
303
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 139 */,
304
+ 4, 5, 6, 7, 14, 15, 255, 255,
305
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 140 */,
306
+ 0, 1, 4, 5, 6, 7, 14, 15,
307
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 141 */,
308
+ 2, 3, 4, 5, 6, 7, 14, 15,
309
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 142 */,
310
+ 0, 1, 2, 3, 4, 5, 6, 7,
311
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 143 */,
312
+ 8, 9, 14, 15, 255, 255, 255, 255,
313
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 144 */,
314
+ 0, 1, 8, 9, 14, 15, 255, 255,
315
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 145 */,
316
+ 2, 3, 8, 9, 14, 15, 255, 255,
317
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 146 */,
318
+ 0, 1, 2, 3, 8, 9, 14, 15,
319
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 147 */,
320
+ 4, 5, 8, 9, 14, 15, 255, 255,
321
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 148 */,
322
+ 0, 1, 4, 5, 8, 9, 14, 15,
323
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 149 */,
324
+ 2, 3, 4, 5, 8, 9, 14, 15,
325
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 150 */,
326
+ 0, 1, 2, 3, 4, 5, 8, 9,
327
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 151 */,
328
+ 6, 7, 8, 9, 14, 15, 255, 255,
329
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 152 */,
330
+ 0, 1, 6, 7, 8, 9, 14, 15,
331
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 153 */,
332
+ 2, 3, 6, 7, 8, 9, 14, 15,
333
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 154 */,
334
+ 0, 1, 2, 3, 6, 7, 8, 9,
335
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 155 */,
336
+ 4, 5, 6, 7, 8, 9, 14, 15,
337
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 156 */,
338
+ 0, 1, 4, 5, 6, 7, 8, 9,
339
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 157 */,
340
+ 2, 3, 4, 5, 6, 7, 8, 9,
341
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 158 */,
342
+ 0, 1, 2, 3, 4, 5, 6, 7,
343
+ 8, 9, 14, 15, 255, 255, 255, 255 /* 159 */,
344
+ 10, 11, 14, 15, 255, 255, 255, 255,
345
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 160 */,
346
+ 0, 1, 10, 11, 14, 15, 255, 255,
347
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 161 */,
348
+ 2, 3, 10, 11, 14, 15, 255, 255,
349
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 162 */,
350
+ 0, 1, 2, 3, 10, 11, 14, 15,
351
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 163 */,
352
+ 4, 5, 10, 11, 14, 15, 255, 255,
353
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 164 */,
354
+ 0, 1, 4, 5, 10, 11, 14, 15,
355
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 165 */,
356
+ 2, 3, 4, 5, 10, 11, 14, 15,
357
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 166 */,
358
+ 0, 1, 2, 3, 4, 5, 10, 11,
359
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 167 */,
360
+ 6, 7, 10, 11, 14, 15, 255, 255,
361
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 168 */,
362
+ 0, 1, 6, 7, 10, 11, 14, 15,
363
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 169 */,
364
+ 2, 3, 6, 7, 10, 11, 14, 15,
365
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 170 */,
366
+ 0, 1, 2, 3, 6, 7, 10, 11,
367
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 171 */,
368
+ 4, 5, 6, 7, 10, 11, 14, 15,
369
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 172 */,
370
+ 0, 1, 4, 5, 6, 7, 10, 11,
371
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 173 */,
372
+ 2, 3, 4, 5, 6, 7, 10, 11,
373
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 174 */,
374
+ 0, 1, 2, 3, 4, 5, 6, 7,
375
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 175 */,
376
+ 8, 9, 10, 11, 14, 15, 255, 255,
377
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 176 */,
378
+ 0, 1, 8, 9, 10, 11, 14, 15,
379
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 177 */,
380
+ 2, 3, 8, 9, 10, 11, 14, 15,
381
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 178 */,
382
+ 0, 1, 2, 3, 8, 9, 10, 11,
383
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 179 */,
384
+ 4, 5, 8, 9, 10, 11, 14, 15,
385
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 180 */,
386
+ 0, 1, 4, 5, 8, 9, 10, 11,
387
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 181 */,
388
+ 2, 3, 4, 5, 8, 9, 10, 11,
389
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 182 */,
390
+ 0, 1, 2, 3, 4, 5, 8, 9,
391
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 183 */,
392
+ 6, 7, 8, 9, 10, 11, 14, 15,
393
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 184 */,
394
+ 0, 1, 6, 7, 8, 9, 10, 11,
395
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 185 */,
396
+ 2, 3, 6, 7, 8, 9, 10, 11,
397
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 186 */,
398
+ 0, 1, 2, 3, 6, 7, 8, 9,
399
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 187 */,
400
+ 4, 5, 6, 7, 8, 9, 10, 11,
401
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 188 */,
402
+ 0, 1, 4, 5, 6, 7, 8, 9,
403
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 189 */,
404
+ 2, 3, 4, 5, 6, 7, 8, 9,
405
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 190 */,
406
+ 0, 1, 2, 3, 4, 5, 6, 7,
407
+ 8, 9, 10, 11, 14, 15, 255, 255 /* 191 */,
408
+ 12, 13, 14, 15, 255, 255, 255, 255,
409
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 192 */,
410
+ 0, 1, 12, 13, 14, 15, 255, 255,
411
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 193 */,
412
+ 2, 3, 12, 13, 14, 15, 255, 255,
413
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 194 */,
414
+ 0, 1, 2, 3, 12, 13, 14, 15,
415
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 195 */,
416
+ 4, 5, 12, 13, 14, 15, 255, 255,
417
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 196 */,
418
+ 0, 1, 4, 5, 12, 13, 14, 15,
419
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 197 */,
420
+ 2, 3, 4, 5, 12, 13, 14, 15,
421
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 198 */,
422
+ 0, 1, 2, 3, 4, 5, 12, 13,
423
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 199 */,
424
+ 6, 7, 12, 13, 14, 15, 255, 255,
425
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 200 */,
426
+ 0, 1, 6, 7, 12, 13, 14, 15,
427
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 201 */,
428
+ 2, 3, 6, 7, 12, 13, 14, 15,
429
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 202 */,
430
+ 0, 1, 2, 3, 6, 7, 12, 13,
431
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 203 */,
432
+ 4, 5, 6, 7, 12, 13, 14, 15,
433
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 204 */,
434
+ 0, 1, 4, 5, 6, 7, 12, 13,
435
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 205 */,
436
+ 2, 3, 4, 5, 6, 7, 12, 13,
437
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 206 */,
438
+ 0, 1, 2, 3, 4, 5, 6, 7,
439
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 207 */,
440
+ 8, 9, 12, 13, 14, 15, 255, 255,
441
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 208 */,
442
+ 0, 1, 8, 9, 12, 13, 14, 15,
443
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 209 */,
444
+ 2, 3, 8, 9, 12, 13, 14, 15,
445
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 210 */,
446
+ 0, 1, 2, 3, 8, 9, 12, 13,
447
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 211 */,
448
+ 4, 5, 8, 9, 12, 13, 14, 15,
449
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 212 */,
450
+ 0, 1, 4, 5, 8, 9, 12, 13,
451
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 213 */,
452
+ 2, 3, 4, 5, 8, 9, 12, 13,
453
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 214 */,
454
+ 0, 1, 2, 3, 4, 5, 8, 9,
455
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 215 */,
456
+ 6, 7, 8, 9, 12, 13, 14, 15,
457
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 216 */,
458
+ 0, 1, 6, 7, 8, 9, 12, 13,
459
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 217 */,
460
+ 2, 3, 6, 7, 8, 9, 12, 13,
461
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 218 */,
462
+ 0, 1, 2, 3, 6, 7, 8, 9,
463
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 219 */,
464
+ 4, 5, 6, 7, 8, 9, 12, 13,
465
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 220 */,
466
+ 0, 1, 4, 5, 6, 7, 8, 9,
467
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 221 */,
468
+ 2, 3, 4, 5, 6, 7, 8, 9,
469
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 222 */,
470
+ 0, 1, 2, 3, 4, 5, 6, 7,
471
+ 8, 9, 12, 13, 14, 15, 255, 255 /* 223 */,
472
+ 10, 11, 12, 13, 14, 15, 255, 255,
473
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 224 */,
474
+ 0, 1, 10, 11, 12, 13, 14, 15,
475
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 225 */,
476
+ 2, 3, 10, 11, 12, 13, 14, 15,
477
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 226 */,
478
+ 0, 1, 2, 3, 10, 11, 12, 13,
479
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 227 */,
480
+ 4, 5, 10, 11, 12, 13, 14, 15,
481
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 228 */,
482
+ 0, 1, 4, 5, 10, 11, 12, 13,
483
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 229 */,
484
+ 2, 3, 4, 5, 10, 11, 12, 13,
485
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 230 */,
486
+ 0, 1, 2, 3, 4, 5, 10, 11,
487
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 231 */,
488
+ 6, 7, 10, 11, 12, 13, 14, 15,
489
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 232 */,
490
+ 0, 1, 6, 7, 10, 11, 12, 13,
491
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 233 */,
492
+ 2, 3, 6, 7, 10, 11, 12, 13,
493
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 234 */,
494
+ 0, 1, 2, 3, 6, 7, 10, 11,
495
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 235 */,
496
+ 4, 5, 6, 7, 10, 11, 12, 13,
497
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 236 */,
498
+ 0, 1, 4, 5, 6, 7, 10, 11,
499
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 237 */,
500
+ 2, 3, 4, 5, 6, 7, 10, 11,
501
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 238 */,
502
+ 0, 1, 2, 3, 4, 5, 6, 7,
503
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 239 */,
504
+ 8, 9, 10, 11, 12, 13, 14, 15,
505
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 240 */,
506
+ 0, 1, 8, 9, 10, 11, 12, 13,
507
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 241 */,
508
+ 2, 3, 8, 9, 10, 11, 12, 13,
509
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 242 */,
510
+ 0, 1, 2, 3, 8, 9, 10, 11,
511
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 243 */,
512
+ 4, 5, 8, 9, 10, 11, 12, 13,
513
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 244 */,
514
+ 0, 1, 4, 5, 8, 9, 10, 11,
515
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 245 */,
516
+ 2, 3, 4, 5, 8, 9, 10, 11,
517
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 246 */,
518
+ 0, 1, 2, 3, 4, 5, 8, 9,
519
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 247 */,
520
+ 6, 7, 8, 9, 10, 11, 12, 13,
521
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 248 */,
522
+ 0, 1, 6, 7, 8, 9, 10, 11,
523
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 249 */,
524
+ 2, 3, 6, 7, 8, 9, 10, 11,
525
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 250 */,
526
+ 0, 1, 2, 3, 6, 7, 8, 9,
527
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 251 */,
528
+ 4, 5, 6, 7, 8, 9, 10, 11,
529
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 252 */,
530
+ 0, 1, 4, 5, 6, 7, 8, 9,
531
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 253 */,
532
+ 2, 3, 4, 5, 6, 7, 8, 9,
533
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 254 */,
534
+ 0, 1, 2, 3, 4, 5, 6, 7,
535
+ 8, 9, 10, 11, 12, 13, 14, 15 /* 255 */,
536
+ };
537
+
538
+ #else /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */
539
+
540
+ MLK_EMPTY_CU(aarch64_rej_uniform_table)
541
+
542
+ #endif /* !(MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED) */