mldsa_gh 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +88 -0
  4. data/ext/mldsa_gh_native/extconf.rb +14 -0
  5. data/ext/mldsa_gh_native/mldsa_gh_native.c +222 -0
  6. data/ext/mldsa_gh_native/mldsa_gh_native_all.c +24 -0
  7. data/ext/mldsa_gh_native/mldsa_gh_native_all.h +26 -0
  8. data/ext/mldsa_gh_native/vendor/mldsa-native/BUILDING.md +108 -0
  9. data/ext/mldsa_gh_native/vendor/mldsa-native/LICENSE +305 -0
  10. data/ext/mldsa_gh_native/vendor/mldsa-native/README.md +247 -0
  11. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/README.md +23 -0
  12. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native.c +803 -0
  13. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native.h +956 -0
  14. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native_asm.S +830 -0
  15. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/mldsa_native_config.h +855 -0
  16. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/cbmc.h +233 -0
  17. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/common.h +301 -0
  18. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/context.h +152 -0
  19. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  20. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/ct.h +373 -0
  21. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/debug.c +75 -0
  22. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/debug.h +125 -0
  23. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202.c +270 -0
  24. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202.h +224 -0
  25. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +187 -0
  26. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +125 -0
  27. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +510 -0
  28. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +110 -0
  29. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +85 -0
  30. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  31. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +378 -0
  32. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +207 -0
  33. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +262 -0
  34. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +1080 -0
  35. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +990 -0
  36. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +47 -0
  37. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +27 -0
  38. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +36 -0
  39. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +40 -0
  40. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +32 -0
  41. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +37 -0
  42. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/api.h +129 -0
  43. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  44. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +67 -0
  45. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +37 -0
  46. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +717 -0
  47. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +42 -0
  48. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S +334 -0
  49. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S +355 -0
  50. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +53 -0
  51. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +35 -0
  52. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +34 -0
  53. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h +45 -0
  54. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +488 -0
  55. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccakf1600_constants.c +52 -0
  56. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +314 -0
  57. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +248 -0
  58. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +367 -0
  59. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_intt_aarch64_asm.S +786 -0
  60. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_ntt_aarch64_asm.S +686 -0
  61. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_pointwise_montgomery_aarch64_asm.S +106 -0
  62. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_caddq_aarch64_asm.S +69 -0
  63. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_chknorm_aarch64_asm.S +76 -0
  64. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_decompose_32_aarch64_asm.S +108 -0
  65. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_decompose_88_aarch64_asm.S +108 -0
  66. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_use_hint_32_aarch64_asm.S +125 -0
  67. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_poly_use_hint_88_aarch64_asm.S +133 -0
  68. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S +157 -0
  69. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S +173 -0
  70. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S +205 -0
  71. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyz_unpack_17_aarch64_asm.S +103 -0
  72. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_polyz_unpack_19_aarch64_asm.S +100 -0
  73. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_rej_uniform_aarch64_asm.S +222 -0
  74. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_rej_uniform_eta2_aarch64_asm.S +170 -0
  75. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/mldsa_rej_uniform_eta4_aarch64_asm.S +163 -0
  76. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +52 -0
  77. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +547 -0
  78. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +63 -0
  79. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/api.h +617 -0
  80. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/meta.h +24 -0
  81. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +323 -0
  82. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +330 -0
  83. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  84. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  85. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_intt_avx2_asm.S +2333 -0
  86. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_ntt_avx2_asm.S +2405 -0
  87. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_nttunpack_avx2_asm.S +254 -0
  88. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_acc_l4_avx2_asm.S +173 -0
  89. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_acc_l5_avx2_asm.S +189 -0
  90. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_acc_l7_avx2_asm.S +221 -0
  91. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_pointwise_avx2_asm.S +158 -0
  92. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_caddq_avx2_asm.S +199 -0
  93. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_chknorm_avx2_asm.S +176 -0
  94. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_decompose_32_avx2_asm.S +490 -0
  95. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_decompose_88_avx2_asm.S +489 -0
  96. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_use_hint_32_avx2_asm.S +123 -0
  97. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_use_hint_88_avx2_asm.S +125 -0
  98. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_polyz_unpack_17_avx2_asm.S +355 -0
  99. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_polyz_unpack_19_avx2_asm.S +355 -0
  100. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_avx2_asm.S +132 -0
  101. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_eta2_avx2_asm.S +205 -0
  102. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_eta4_avx2_asm.S +176 -0
  103. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +161 -0
  104. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/packing.c +213 -0
  105. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/packing.h +277 -0
  106. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/params.h +153 -0
  107. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly.c +1066 -0
  108. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly.h +464 -0
  109. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly_kl.c +910 -0
  110. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/poly_kl.h +367 -0
  111. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec.c +509 -0
  112. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec.h +435 -0
  113. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec_lazy.c +311 -0
  114. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/polyvec_lazy.h +652 -0
  115. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  116. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/reduce.h +144 -0
  117. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/rounding.h +265 -0
  118. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/sign.c +1720 -0
  119. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/sign.h +850 -0
  120. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  121. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/sys.h +327 -0
  122. data/ext/mldsa_gh_native/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  123. data/lib/mldsa/parameter_set.rb +82 -0
  124. data/lib/mldsa/signing_key.rb +147 -0
  125. data/lib/mldsa/verify_key.rb +72 -0
  126. data/lib/mldsa/version.rb +7 -0
  127. data/lib/mldsa_gh.rb +93 -0
  128. metadata +225 -0
@@ -0,0 +1,547 @@
1
+ /*
2
+ * Copyright (c) The mldsa-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 mldsa-native repository.
9
+ * Do not modify it directly.
10
+ */
11
+
12
+ #include "../../../common.h"
13
+
14
+ #if defined(MLD_ARITH_BACKEND_AARCH64) && \
15
+ !defined(MLD_CONFIG_NO_KEYPAIR_API) && \
16
+ !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED)
17
+
18
+ #include "arith_native_aarch64.h"
19
+
20
+ /*
21
+ * Lookup table used by 16-bit rejection sampling (rej_eta).
22
+ * Adapted from ML-KEM for ML-DSA eta rejection sampling.
23
+ * See autogen for details.
24
+ */
25
+ MLD_ALIGN MLD_INTERNAL_DATA_DEFINITION const uint8_t
26
+ mld_rej_uniform_eta_table[4096] = {
27
+ 255, 255, 255, 255, 255, 255, 255, 255,
28
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 0 */,
29
+ 0, 1, 255, 255, 255, 255, 255, 255,
30
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 1 */,
31
+ 2, 3, 255, 255, 255, 255, 255, 255,
32
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 2 */,
33
+ 0, 1, 2, 3, 255, 255, 255, 255,
34
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 3 */,
35
+ 4, 5, 255, 255, 255, 255, 255, 255,
36
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 4 */,
37
+ 0, 1, 4, 5, 255, 255, 255, 255,
38
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 5 */,
39
+ 2, 3, 4, 5, 255, 255, 255, 255,
40
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 6 */,
41
+ 0, 1, 2, 3, 4, 5, 255, 255,
42
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 7 */,
43
+ 6, 7, 255, 255, 255, 255, 255, 255,
44
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 8 */,
45
+ 0, 1, 6, 7, 255, 255, 255, 255,
46
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 9 */,
47
+ 2, 3, 6, 7, 255, 255, 255, 255,
48
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 10 */,
49
+ 0, 1, 2, 3, 6, 7, 255, 255,
50
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 11 */,
51
+ 4, 5, 6, 7, 255, 255, 255, 255,
52
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 12 */,
53
+ 0, 1, 4, 5, 6, 7, 255, 255,
54
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 13 */,
55
+ 2, 3, 4, 5, 6, 7, 255, 255,
56
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 14 */,
57
+ 0, 1, 2, 3, 4, 5, 6, 7,
58
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 15 */,
59
+ 8, 9, 255, 255, 255, 255, 255, 255,
60
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 16 */,
61
+ 0, 1, 8, 9, 255, 255, 255, 255,
62
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 17 */,
63
+ 2, 3, 8, 9, 255, 255, 255, 255,
64
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 18 */,
65
+ 0, 1, 2, 3, 8, 9, 255, 255,
66
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 19 */,
67
+ 4, 5, 8, 9, 255, 255, 255, 255,
68
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 20 */,
69
+ 0, 1, 4, 5, 8, 9, 255, 255,
70
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 21 */,
71
+ 2, 3, 4, 5, 8, 9, 255, 255,
72
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 22 */,
73
+ 0, 1, 2, 3, 4, 5, 8, 9,
74
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 23 */,
75
+ 6, 7, 8, 9, 255, 255, 255, 255,
76
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 24 */,
77
+ 0, 1, 6, 7, 8, 9, 255, 255,
78
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 25 */,
79
+ 2, 3, 6, 7, 8, 9, 255, 255,
80
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 26 */,
81
+ 0, 1, 2, 3, 6, 7, 8, 9,
82
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 27 */,
83
+ 4, 5, 6, 7, 8, 9, 255, 255,
84
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 28 */,
85
+ 0, 1, 4, 5, 6, 7, 8, 9,
86
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 29 */,
87
+ 2, 3, 4, 5, 6, 7, 8, 9,
88
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 30 */,
89
+ 0, 1, 2, 3, 4, 5, 6, 7,
90
+ 8, 9, 255, 255, 255, 255, 255, 255 /* 31 */,
91
+ 10, 11, 255, 255, 255, 255, 255, 255,
92
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 32 */,
93
+ 0, 1, 10, 11, 255, 255, 255, 255,
94
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 33 */,
95
+ 2, 3, 10, 11, 255, 255, 255, 255,
96
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 34 */,
97
+ 0, 1, 2, 3, 10, 11, 255, 255,
98
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 35 */,
99
+ 4, 5, 10, 11, 255, 255, 255, 255,
100
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 36 */,
101
+ 0, 1, 4, 5, 10, 11, 255, 255,
102
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 37 */,
103
+ 2, 3, 4, 5, 10, 11, 255, 255,
104
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 38 */,
105
+ 0, 1, 2, 3, 4, 5, 10, 11,
106
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 39 */,
107
+ 6, 7, 10, 11, 255, 255, 255, 255,
108
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 40 */,
109
+ 0, 1, 6, 7, 10, 11, 255, 255,
110
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 41 */,
111
+ 2, 3, 6, 7, 10, 11, 255, 255,
112
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 42 */,
113
+ 0, 1, 2, 3, 6, 7, 10, 11,
114
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 43 */,
115
+ 4, 5, 6, 7, 10, 11, 255, 255,
116
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 44 */,
117
+ 0, 1, 4, 5, 6, 7, 10, 11,
118
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 45 */,
119
+ 2, 3, 4, 5, 6, 7, 10, 11,
120
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 46 */,
121
+ 0, 1, 2, 3, 4, 5, 6, 7,
122
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 47 */,
123
+ 8, 9, 10, 11, 255, 255, 255, 255,
124
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 48 */,
125
+ 0, 1, 8, 9, 10, 11, 255, 255,
126
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 49 */,
127
+ 2, 3, 8, 9, 10, 11, 255, 255,
128
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 50 */,
129
+ 0, 1, 2, 3, 8, 9, 10, 11,
130
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 51 */,
131
+ 4, 5, 8, 9, 10, 11, 255, 255,
132
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 52 */,
133
+ 0, 1, 4, 5, 8, 9, 10, 11,
134
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 53 */,
135
+ 2, 3, 4, 5, 8, 9, 10, 11,
136
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 54 */,
137
+ 0, 1, 2, 3, 4, 5, 8, 9,
138
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 55 */,
139
+ 6, 7, 8, 9, 10, 11, 255, 255,
140
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 56 */,
141
+ 0, 1, 6, 7, 8, 9, 10, 11,
142
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 57 */,
143
+ 2, 3, 6, 7, 8, 9, 10, 11,
144
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 58 */,
145
+ 0, 1, 2, 3, 6, 7, 8, 9,
146
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 59 */,
147
+ 4, 5, 6, 7, 8, 9, 10, 11,
148
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 60 */,
149
+ 0, 1, 4, 5, 6, 7, 8, 9,
150
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 61 */,
151
+ 2, 3, 4, 5, 6, 7, 8, 9,
152
+ 10, 11, 255, 255, 255, 255, 255, 255 /* 62 */,
153
+ 0, 1, 2, 3, 4, 5, 6, 7,
154
+ 8, 9, 10, 11, 255, 255, 255, 255 /* 63 */,
155
+ 12, 13, 255, 255, 255, 255, 255, 255,
156
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 64 */,
157
+ 0, 1, 12, 13, 255, 255, 255, 255,
158
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 65 */,
159
+ 2, 3, 12, 13, 255, 255, 255, 255,
160
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 66 */,
161
+ 0, 1, 2, 3, 12, 13, 255, 255,
162
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 67 */,
163
+ 4, 5, 12, 13, 255, 255, 255, 255,
164
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 68 */,
165
+ 0, 1, 4, 5, 12, 13, 255, 255,
166
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 69 */,
167
+ 2, 3, 4, 5, 12, 13, 255, 255,
168
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 70 */,
169
+ 0, 1, 2, 3, 4, 5, 12, 13,
170
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 71 */,
171
+ 6, 7, 12, 13, 255, 255, 255, 255,
172
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 72 */,
173
+ 0, 1, 6, 7, 12, 13, 255, 255,
174
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 73 */,
175
+ 2, 3, 6, 7, 12, 13, 255, 255,
176
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 74 */,
177
+ 0, 1, 2, 3, 6, 7, 12, 13,
178
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 75 */,
179
+ 4, 5, 6, 7, 12, 13, 255, 255,
180
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 76 */,
181
+ 0, 1, 4, 5, 6, 7, 12, 13,
182
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 77 */,
183
+ 2, 3, 4, 5, 6, 7, 12, 13,
184
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 78 */,
185
+ 0, 1, 2, 3, 4, 5, 6, 7,
186
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 79 */,
187
+ 8, 9, 12, 13, 255, 255, 255, 255,
188
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 80 */,
189
+ 0, 1, 8, 9, 12, 13, 255, 255,
190
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 81 */,
191
+ 2, 3, 8, 9, 12, 13, 255, 255,
192
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 82 */,
193
+ 0, 1, 2, 3, 8, 9, 12, 13,
194
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 83 */,
195
+ 4, 5, 8, 9, 12, 13, 255, 255,
196
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 84 */,
197
+ 0, 1, 4, 5, 8, 9, 12, 13,
198
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 85 */,
199
+ 2, 3, 4, 5, 8, 9, 12, 13,
200
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 86 */,
201
+ 0, 1, 2, 3, 4, 5, 8, 9,
202
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 87 */,
203
+ 6, 7, 8, 9, 12, 13, 255, 255,
204
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 88 */,
205
+ 0, 1, 6, 7, 8, 9, 12, 13,
206
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 89 */,
207
+ 2, 3, 6, 7, 8, 9, 12, 13,
208
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 90 */,
209
+ 0, 1, 2, 3, 6, 7, 8, 9,
210
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 91 */,
211
+ 4, 5, 6, 7, 8, 9, 12, 13,
212
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 92 */,
213
+ 0, 1, 4, 5, 6, 7, 8, 9,
214
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 93 */,
215
+ 2, 3, 4, 5, 6, 7, 8, 9,
216
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 94 */,
217
+ 0, 1, 2, 3, 4, 5, 6, 7,
218
+ 8, 9, 12, 13, 255, 255, 255, 255 /* 95 */,
219
+ 10, 11, 12, 13, 255, 255, 255, 255,
220
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 96 */,
221
+ 0, 1, 10, 11, 12, 13, 255, 255,
222
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 97 */,
223
+ 2, 3, 10, 11, 12, 13, 255, 255,
224
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 98 */,
225
+ 0, 1, 2, 3, 10, 11, 12, 13,
226
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 99 */,
227
+ 4, 5, 10, 11, 12, 13, 255, 255,
228
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 100 */,
229
+ 0, 1, 4, 5, 10, 11, 12, 13,
230
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 101 */,
231
+ 2, 3, 4, 5, 10, 11, 12, 13,
232
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 102 */,
233
+ 0, 1, 2, 3, 4, 5, 10, 11,
234
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 103 */,
235
+ 6, 7, 10, 11, 12, 13, 255, 255,
236
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 104 */,
237
+ 0, 1, 6, 7, 10, 11, 12, 13,
238
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 105 */,
239
+ 2, 3, 6, 7, 10, 11, 12, 13,
240
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 106 */,
241
+ 0, 1, 2, 3, 6, 7, 10, 11,
242
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 107 */,
243
+ 4, 5, 6, 7, 10, 11, 12, 13,
244
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 108 */,
245
+ 0, 1, 4, 5, 6, 7, 10, 11,
246
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 109 */,
247
+ 2, 3, 4, 5, 6, 7, 10, 11,
248
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 110 */,
249
+ 0, 1, 2, 3, 4, 5, 6, 7,
250
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 111 */,
251
+ 8, 9, 10, 11, 12, 13, 255, 255,
252
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 112 */,
253
+ 0, 1, 8, 9, 10, 11, 12, 13,
254
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 113 */,
255
+ 2, 3, 8, 9, 10, 11, 12, 13,
256
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 114 */,
257
+ 0, 1, 2, 3, 8, 9, 10, 11,
258
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 115 */,
259
+ 4, 5, 8, 9, 10, 11, 12, 13,
260
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 116 */,
261
+ 0, 1, 4, 5, 8, 9, 10, 11,
262
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 117 */,
263
+ 2, 3, 4, 5, 8, 9, 10, 11,
264
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 118 */,
265
+ 0, 1, 2, 3, 4, 5, 8, 9,
266
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 119 */,
267
+ 6, 7, 8, 9, 10, 11, 12, 13,
268
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 120 */,
269
+ 0, 1, 6, 7, 8, 9, 10, 11,
270
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 121 */,
271
+ 2, 3, 6, 7, 8, 9, 10, 11,
272
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 122 */,
273
+ 0, 1, 2, 3, 6, 7, 8, 9,
274
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 123 */,
275
+ 4, 5, 6, 7, 8, 9, 10, 11,
276
+ 12, 13, 255, 255, 255, 255, 255, 255 /* 124 */,
277
+ 0, 1, 4, 5, 6, 7, 8, 9,
278
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 125 */,
279
+ 2, 3, 4, 5, 6, 7, 8, 9,
280
+ 10, 11, 12, 13, 255, 255, 255, 255 /* 126 */,
281
+ 0, 1, 2, 3, 4, 5, 6, 7,
282
+ 8, 9, 10, 11, 12, 13, 255, 255 /* 127 */,
283
+ 14, 15, 255, 255, 255, 255, 255, 255,
284
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 128 */,
285
+ 0, 1, 14, 15, 255, 255, 255, 255,
286
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 129 */,
287
+ 2, 3, 14, 15, 255, 255, 255, 255,
288
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 130 */,
289
+ 0, 1, 2, 3, 14, 15, 255, 255,
290
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 131 */,
291
+ 4, 5, 14, 15, 255, 255, 255, 255,
292
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 132 */,
293
+ 0, 1, 4, 5, 14, 15, 255, 255,
294
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 133 */,
295
+ 2, 3, 4, 5, 14, 15, 255, 255,
296
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 134 */,
297
+ 0, 1, 2, 3, 4, 5, 14, 15,
298
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 135 */,
299
+ 6, 7, 14, 15, 255, 255, 255, 255,
300
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 136 */,
301
+ 0, 1, 6, 7, 14, 15, 255, 255,
302
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 137 */,
303
+ 2, 3, 6, 7, 14, 15, 255, 255,
304
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 138 */,
305
+ 0, 1, 2, 3, 6, 7, 14, 15,
306
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 139 */,
307
+ 4, 5, 6, 7, 14, 15, 255, 255,
308
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 140 */,
309
+ 0, 1, 4, 5, 6, 7, 14, 15,
310
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 141 */,
311
+ 2, 3, 4, 5, 6, 7, 14, 15,
312
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 142 */,
313
+ 0, 1, 2, 3, 4, 5, 6, 7,
314
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 143 */,
315
+ 8, 9, 14, 15, 255, 255, 255, 255,
316
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 144 */,
317
+ 0, 1, 8, 9, 14, 15, 255, 255,
318
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 145 */,
319
+ 2, 3, 8, 9, 14, 15, 255, 255,
320
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 146 */,
321
+ 0, 1, 2, 3, 8, 9, 14, 15,
322
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 147 */,
323
+ 4, 5, 8, 9, 14, 15, 255, 255,
324
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 148 */,
325
+ 0, 1, 4, 5, 8, 9, 14, 15,
326
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 149 */,
327
+ 2, 3, 4, 5, 8, 9, 14, 15,
328
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 150 */,
329
+ 0, 1, 2, 3, 4, 5, 8, 9,
330
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 151 */,
331
+ 6, 7, 8, 9, 14, 15, 255, 255,
332
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 152 */,
333
+ 0, 1, 6, 7, 8, 9, 14, 15,
334
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 153 */,
335
+ 2, 3, 6, 7, 8, 9, 14, 15,
336
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 154 */,
337
+ 0, 1, 2, 3, 6, 7, 8, 9,
338
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 155 */,
339
+ 4, 5, 6, 7, 8, 9, 14, 15,
340
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 156 */,
341
+ 0, 1, 4, 5, 6, 7, 8, 9,
342
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 157 */,
343
+ 2, 3, 4, 5, 6, 7, 8, 9,
344
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 158 */,
345
+ 0, 1, 2, 3, 4, 5, 6, 7,
346
+ 8, 9, 14, 15, 255, 255, 255, 255 /* 159 */,
347
+ 10, 11, 14, 15, 255, 255, 255, 255,
348
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 160 */,
349
+ 0, 1, 10, 11, 14, 15, 255, 255,
350
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 161 */,
351
+ 2, 3, 10, 11, 14, 15, 255, 255,
352
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 162 */,
353
+ 0, 1, 2, 3, 10, 11, 14, 15,
354
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 163 */,
355
+ 4, 5, 10, 11, 14, 15, 255, 255,
356
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 164 */,
357
+ 0, 1, 4, 5, 10, 11, 14, 15,
358
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 165 */,
359
+ 2, 3, 4, 5, 10, 11, 14, 15,
360
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 166 */,
361
+ 0, 1, 2, 3, 4, 5, 10, 11,
362
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 167 */,
363
+ 6, 7, 10, 11, 14, 15, 255, 255,
364
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 168 */,
365
+ 0, 1, 6, 7, 10, 11, 14, 15,
366
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 169 */,
367
+ 2, 3, 6, 7, 10, 11, 14, 15,
368
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 170 */,
369
+ 0, 1, 2, 3, 6, 7, 10, 11,
370
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 171 */,
371
+ 4, 5, 6, 7, 10, 11, 14, 15,
372
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 172 */,
373
+ 0, 1, 4, 5, 6, 7, 10, 11,
374
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 173 */,
375
+ 2, 3, 4, 5, 6, 7, 10, 11,
376
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 174 */,
377
+ 0, 1, 2, 3, 4, 5, 6, 7,
378
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 175 */,
379
+ 8, 9, 10, 11, 14, 15, 255, 255,
380
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 176 */,
381
+ 0, 1, 8, 9, 10, 11, 14, 15,
382
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 177 */,
383
+ 2, 3, 8, 9, 10, 11, 14, 15,
384
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 178 */,
385
+ 0, 1, 2, 3, 8, 9, 10, 11,
386
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 179 */,
387
+ 4, 5, 8, 9, 10, 11, 14, 15,
388
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 180 */,
389
+ 0, 1, 4, 5, 8, 9, 10, 11,
390
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 181 */,
391
+ 2, 3, 4, 5, 8, 9, 10, 11,
392
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 182 */,
393
+ 0, 1, 2, 3, 4, 5, 8, 9,
394
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 183 */,
395
+ 6, 7, 8, 9, 10, 11, 14, 15,
396
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 184 */,
397
+ 0, 1, 6, 7, 8, 9, 10, 11,
398
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 185 */,
399
+ 2, 3, 6, 7, 8, 9, 10, 11,
400
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 186 */,
401
+ 0, 1, 2, 3, 6, 7, 8, 9,
402
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 187 */,
403
+ 4, 5, 6, 7, 8, 9, 10, 11,
404
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 188 */,
405
+ 0, 1, 4, 5, 6, 7, 8, 9,
406
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 189 */,
407
+ 2, 3, 4, 5, 6, 7, 8, 9,
408
+ 10, 11, 14, 15, 255, 255, 255, 255 /* 190 */,
409
+ 0, 1, 2, 3, 4, 5, 6, 7,
410
+ 8, 9, 10, 11, 14, 15, 255, 255 /* 191 */,
411
+ 12, 13, 14, 15, 255, 255, 255, 255,
412
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 192 */,
413
+ 0, 1, 12, 13, 14, 15, 255, 255,
414
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 193 */,
415
+ 2, 3, 12, 13, 14, 15, 255, 255,
416
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 194 */,
417
+ 0, 1, 2, 3, 12, 13, 14, 15,
418
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 195 */,
419
+ 4, 5, 12, 13, 14, 15, 255, 255,
420
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 196 */,
421
+ 0, 1, 4, 5, 12, 13, 14, 15,
422
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 197 */,
423
+ 2, 3, 4, 5, 12, 13, 14, 15,
424
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 198 */,
425
+ 0, 1, 2, 3, 4, 5, 12, 13,
426
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 199 */,
427
+ 6, 7, 12, 13, 14, 15, 255, 255,
428
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 200 */,
429
+ 0, 1, 6, 7, 12, 13, 14, 15,
430
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 201 */,
431
+ 2, 3, 6, 7, 12, 13, 14, 15,
432
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 202 */,
433
+ 0, 1, 2, 3, 6, 7, 12, 13,
434
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 203 */,
435
+ 4, 5, 6, 7, 12, 13, 14, 15,
436
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 204 */,
437
+ 0, 1, 4, 5, 6, 7, 12, 13,
438
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 205 */,
439
+ 2, 3, 4, 5, 6, 7, 12, 13,
440
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 206 */,
441
+ 0, 1, 2, 3, 4, 5, 6, 7,
442
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 207 */,
443
+ 8, 9, 12, 13, 14, 15, 255, 255,
444
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 208 */,
445
+ 0, 1, 8, 9, 12, 13, 14, 15,
446
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 209 */,
447
+ 2, 3, 8, 9, 12, 13, 14, 15,
448
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 210 */,
449
+ 0, 1, 2, 3, 8, 9, 12, 13,
450
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 211 */,
451
+ 4, 5, 8, 9, 12, 13, 14, 15,
452
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 212 */,
453
+ 0, 1, 4, 5, 8, 9, 12, 13,
454
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 213 */,
455
+ 2, 3, 4, 5, 8, 9, 12, 13,
456
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 214 */,
457
+ 0, 1, 2, 3, 4, 5, 8, 9,
458
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 215 */,
459
+ 6, 7, 8, 9, 12, 13, 14, 15,
460
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 216 */,
461
+ 0, 1, 6, 7, 8, 9, 12, 13,
462
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 217 */,
463
+ 2, 3, 6, 7, 8, 9, 12, 13,
464
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 218 */,
465
+ 0, 1, 2, 3, 6, 7, 8, 9,
466
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 219 */,
467
+ 4, 5, 6, 7, 8, 9, 12, 13,
468
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 220 */,
469
+ 0, 1, 4, 5, 6, 7, 8, 9,
470
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 221 */,
471
+ 2, 3, 4, 5, 6, 7, 8, 9,
472
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 222 */,
473
+ 0, 1, 2, 3, 4, 5, 6, 7,
474
+ 8, 9, 12, 13, 14, 15, 255, 255 /* 223 */,
475
+ 10, 11, 12, 13, 14, 15, 255, 255,
476
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 224 */,
477
+ 0, 1, 10, 11, 12, 13, 14, 15,
478
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 225 */,
479
+ 2, 3, 10, 11, 12, 13, 14, 15,
480
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 226 */,
481
+ 0, 1, 2, 3, 10, 11, 12, 13,
482
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 227 */,
483
+ 4, 5, 10, 11, 12, 13, 14, 15,
484
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 228 */,
485
+ 0, 1, 4, 5, 10, 11, 12, 13,
486
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 229 */,
487
+ 2, 3, 4, 5, 10, 11, 12, 13,
488
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 230 */,
489
+ 0, 1, 2, 3, 4, 5, 10, 11,
490
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 231 */,
491
+ 6, 7, 10, 11, 12, 13, 14, 15,
492
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 232 */,
493
+ 0, 1, 6, 7, 10, 11, 12, 13,
494
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 233 */,
495
+ 2, 3, 6, 7, 10, 11, 12, 13,
496
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 234 */,
497
+ 0, 1, 2, 3, 6, 7, 10, 11,
498
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 235 */,
499
+ 4, 5, 6, 7, 10, 11, 12, 13,
500
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 236 */,
501
+ 0, 1, 4, 5, 6, 7, 10, 11,
502
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 237 */,
503
+ 2, 3, 4, 5, 6, 7, 10, 11,
504
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 238 */,
505
+ 0, 1, 2, 3, 4, 5, 6, 7,
506
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 239 */,
507
+ 8, 9, 10, 11, 12, 13, 14, 15,
508
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 240 */,
509
+ 0, 1, 8, 9, 10, 11, 12, 13,
510
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 241 */,
511
+ 2, 3, 8, 9, 10, 11, 12, 13,
512
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 242 */,
513
+ 0, 1, 2, 3, 8, 9, 10, 11,
514
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 243 */,
515
+ 4, 5, 8, 9, 10, 11, 12, 13,
516
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 244 */,
517
+ 0, 1, 4, 5, 8, 9, 10, 11,
518
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 245 */,
519
+ 2, 3, 4, 5, 8, 9, 10, 11,
520
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 246 */,
521
+ 0, 1, 2, 3, 4, 5, 8, 9,
522
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 247 */,
523
+ 6, 7, 8, 9, 10, 11, 12, 13,
524
+ 14, 15, 255, 255, 255, 255, 255, 255 /* 248 */,
525
+ 0, 1, 6, 7, 8, 9, 10, 11,
526
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 249 */,
527
+ 2, 3, 6, 7, 8, 9, 10, 11,
528
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 250 */,
529
+ 0, 1, 2, 3, 6, 7, 8, 9,
530
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 251 */,
531
+ 4, 5, 6, 7, 8, 9, 10, 11,
532
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 252 */,
533
+ 0, 1, 4, 5, 6, 7, 8, 9,
534
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 253 */,
535
+ 2, 3, 4, 5, 6, 7, 8, 9,
536
+ 10, 11, 12, 13, 14, 15, 255, 255 /* 254 */,
537
+ 0, 1, 2, 3, 4, 5, 6, 7,
538
+ 8, 9, 10, 11, 12, 13, 14, 15 /* 255 */,
539
+ };
540
+
541
+ #else /* MLD_ARITH_BACKEND_AARCH64 && !MLD_CONFIG_NO_KEYPAIR_API && \
542
+ !MLD_CONFIG_MULTILEVEL_NO_SHARED */
543
+
544
+ MLD_EMPTY_CU(aarch64_rej_uniform_eta_table)
545
+
546
+ #endif /* !(MLD_ARITH_BACKEND_AARCH64 && !MLD_CONFIG_NO_KEYPAIR_API && \
547
+ !MLD_CONFIG_MULTILEVEL_NO_SHARED) */
@@ -0,0 +1,63 @@
1
+ /*
2
+ * Copyright (c) The mldsa-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 mldsa-native repository.
9
+ * Do not modify it directly.
10
+ */
11
+
12
+ #include "../../../common.h"
13
+
14
+ #if defined(MLD_ARITH_BACKEND_AARCH64) && \
15
+ !defined(MLD_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
+ MLD_ALIGN MLD_INTERNAL_DATA_DEFINITION const uint8_t
24
+ mld_rej_uniform_table[256] = {
25
+ 255, 255, 255, 255, 255, 255, 255, 255,
26
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 0 */,
27
+ 0, 1, 2, 3, 255, 255, 255, 255,
28
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 1 */,
29
+ 4, 5, 6, 7, 255, 255, 255, 255,
30
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 2 */,
31
+ 0, 1, 2, 3, 4, 5, 6, 7,
32
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 3 */,
33
+ 8, 9, 10, 11, 255, 255, 255, 255,
34
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 4 */,
35
+ 0, 1, 2, 3, 8, 9, 10, 11,
36
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 5 */,
37
+ 4, 5, 6, 7, 8, 9, 10, 11,
38
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 6 */,
39
+ 0, 1, 2, 3, 4, 5, 6, 7,
40
+ 8, 9, 10, 11, 255, 255, 255, 255 /* 7 */,
41
+ 12, 13, 14, 15, 255, 255, 255, 255,
42
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 8 */,
43
+ 0, 1, 2, 3, 12, 13, 14, 15,
44
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 9 */,
45
+ 4, 5, 6, 7, 12, 13, 14, 15,
46
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 10 */,
47
+ 0, 1, 2, 3, 4, 5, 6, 7,
48
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 11 */,
49
+ 8, 9, 10, 11, 12, 13, 14, 15,
50
+ 255, 255, 255, 255, 255, 255, 255, 255 /* 12 */,
51
+ 0, 1, 2, 3, 8, 9, 10, 11,
52
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 13 */,
53
+ 4, 5, 6, 7, 8, 9, 10, 11,
54
+ 12, 13, 14, 15, 255, 255, 255, 255 /* 14 */,
55
+ 0, 1, 2, 3, 4, 5, 6, 7,
56
+ 8, 9, 10, 11, 12, 13, 14, 15 /* 15 */,
57
+ };
58
+
59
+ #else /* MLD_ARITH_BACKEND_AARCH64 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */
60
+
61
+ MLD_EMPTY_CU(aarch64_rej_uniform_table)
62
+
63
+ #endif /* !(MLD_ARITH_BACKEND_AARCH64 && !MLD_CONFIG_MULTILEVEL_NO_SHARED) */