sleeping_kangaroo12 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -67
  3. data/ext/Rakefile +12 -37
  4. data/ext/binding/sleeping_kangaroo12.c +1 -16
  5. data/ext/{xkcp → k12}/Makefile +0 -0
  6. data/ext/k12/Makefile.build +118 -0
  7. data/ext/k12/README.markdown +86 -0
  8. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-ARMv8Asha3.S +623 -0
  9. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-SnP.h +65 -0
  10. data/ext/k12/lib/ARMv8Asha3/KeccakP-1600-opt64.c +227 -0
  11. data/ext/{xkcp/lib/low/KeccakP-1600/compact → k12/lib/Inplace32BI}/KeccakP-1600-SnP.h +4 -9
  12. data/ext/{xkcp/lib/low/KeccakP-1600/plain-32bits-inplace → k12/lib/Inplace32BI}/KeccakP-1600-inplace32BI.c +65 -160
  13. data/ext/k12/lib/KangarooTwelve.c +332 -0
  14. data/ext/{xkcp/lib/high/KangarooTwelve → k12/lib}/KangarooTwelve.h +53 -16
  15. data/ext/{xkcp/lib/low/KeccakP-1600/AVX2 → k12/lib/Optimized64}/KeccakP-1600-AVX2.s +122 -558
  16. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512-plainC.c +241 -0
  17. data/ext/k12/lib/Optimized64/KeccakP-1600-AVX512.s +551 -0
  18. data/ext/k12/lib/Optimized64/KeccakP-1600-SnP.h +74 -0
  19. data/ext/{xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros → k12/lib/Optimized64/KeccakP-1600-opt64.c} +447 -169
  20. data/ext/k12/lib/Optimized64/KeccakP-1600-runtimeDispatch.c +406 -0
  21. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX2.c +419 -0
  22. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-AVX512.c +458 -0
  23. data/ext/k12/lib/Optimized64/KeccakP-1600-timesN-SSSE3.c +438 -0
  24. data/ext/{xkcp/lib/low/KeccakP-1600/plain-64bits → k12/lib/Plain64}/KeccakP-1600-SnP.h +14 -20
  25. data/ext/{xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h → k12/lib/Plain64/KeccakP-1600-plain64.c} +9 -8
  26. data/ext/{xkcp/lib/common → k12/lib}/align.h +3 -2
  27. data/ext/{xkcp/lib/common → k12/lib}/brg_endian.h +0 -0
  28. data/ext/{xkcp → k12}/support/Build/ExpandProducts.xsl +0 -0
  29. data/ext/{xkcp → k12}/support/Build/ToGlobalMakefile.xsl +0 -0
  30. data/ext/{xkcp → k12}/support/Build/ToOneTarget.xsl +0 -0
  31. data/ext/{xkcp → k12}/support/Build/ToTargetConfigFile.xsl +0 -0
  32. data/ext/{xkcp → k12}/support/Build/ToTargetMakefile.xsl +10 -16
  33. data/ext/{xkcp → k12}/support/Build/ToVCXProj.xsl +0 -0
  34. data/lib/sleeping_kangaroo12/version.rb +1 -1
  35. metadata +33 -276
  36. data/ext/config/xkcp.build +0 -17
  37. data/ext/xkcp/LICENSE +0 -1
  38. data/ext/xkcp/Makefile.build +0 -200
  39. data/ext/xkcp/README.markdown +0 -296
  40. data/ext/xkcp/lib/HighLevel.build +0 -143
  41. data/ext/xkcp/lib/LowLevel.build +0 -757
  42. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +0 -301
  43. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +0 -81
  44. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +0 -125
  45. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +0 -48
  46. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +0 -79
  47. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +0 -81
  48. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +0 -73
  49. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +0 -195
  50. data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +0 -111
  51. data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +0 -76
  52. data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +0 -314
  53. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +0 -61
  54. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +0 -67
  55. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +0 -128
  56. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +0 -93
  57. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +0 -599
  58. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +0 -573
  59. data/ext/xkcp/lib/high/Ketje/Ketjev2.c +0 -87
  60. data/ext/xkcp/lib/high/Ketje/Ketjev2.h +0 -88
  61. data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +0 -274
  62. data/ext/xkcp/lib/high/Keyak/Keyakv2.c +0 -132
  63. data/ext/xkcp/lib/high/Keyak/Keyakv2.h +0 -217
  64. data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +0 -81
  65. data/ext/xkcp/lib/high/Keyak/Motorist.inc +0 -953
  66. data/ext/xkcp/lib/high/Kravatte/Kravatte.c +0 -533
  67. data/ext/xkcp/lib/high/Kravatte/Kravatte.h +0 -115
  68. data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +0 -557
  69. data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +0 -247
  70. data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +0 -66
  71. data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +0 -336
  72. data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +0 -26
  73. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +0 -55
  74. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +0 -35
  75. data/ext/xkcp/lib/high/Xoofff/Xoofff.c +0 -634
  76. data/ext/xkcp/lib/high/Xoofff/Xoofff.h +0 -147
  77. data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +0 -483
  78. data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +0 -241
  79. data/ext/xkcp/lib/high/common/Phases.h +0 -25
  80. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +0 -41
  81. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +0 -1666
  82. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +0 -1655
  83. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +0 -1268
  84. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +0 -1264
  85. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +0 -1178
  86. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +0 -1175
  87. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +0 -1338
  88. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +0 -1336
  89. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +0 -1343
  90. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +0 -1339
  91. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +0 -42
  92. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +0 -823
  93. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +0 -831
  94. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +0 -31
  95. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +0 -540
  96. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +0 -42
  97. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +0 -733
  98. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +0 -1121
  99. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +0 -52
  100. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +0 -623
  101. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +0 -47
  102. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +0 -6
  103. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +0 -6
  104. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +0 -6
  105. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +0 -1031
  106. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +0 -53
  107. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +0 -44
  108. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +0 -476
  109. data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +0 -6
  110. data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +0 -6
  111. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +0 -305
  112. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +0 -420
  113. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +0 -43
  114. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +0 -565
  115. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +0 -7
  116. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +0 -7
  117. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +0 -8
  118. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +0 -6
  119. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +0 -6
  120. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +0 -44
  121. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +0 -23
  122. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +0 -625
  123. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +0 -44
  124. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +0 -440
  125. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +0 -42
  126. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +0 -1196
  127. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +0 -1124
  128. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +0 -1196
  129. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +0 -1392
  130. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +0 -1394
  131. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +0 -42
  132. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +0 -7
  133. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +0 -7
  134. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +0 -7
  135. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +0 -850
  136. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +0 -51
  137. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +0 -957
  138. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +0 -49
  139. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +0 -8
  140. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +0 -8
  141. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +0 -9
  142. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +0 -9
  143. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +0 -45
  144. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +0 -37
  145. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +0 -1321
  146. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +0 -55
  147. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +0 -7
  148. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +0 -7
  149. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +0 -7
  150. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +0 -7
  151. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +0 -7
  152. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +0 -7
  153. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +0 -881
  154. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +0 -51
  155. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +0 -45
  156. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +0 -37
  157. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +0 -45
  158. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +0 -38
  159. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +0 -1615
  160. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +0 -57
  161. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +0 -7
  162. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +0 -7
  163. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +0 -7
  164. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +0 -45
  165. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +0 -37
  166. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +0 -45
  167. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +0 -38
  168. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +0 -45
  169. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +0 -38
  170. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +0 -41
  171. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +0 -442
  172. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +0 -446
  173. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +0 -419
  174. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +0 -427
  175. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +0 -41
  176. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +0 -647
  177. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +0 -39
  178. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +0 -190
  179. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +0 -43
  180. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +0 -412
  181. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +0 -23
  182. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +0 -41
  183. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +0 -454
  184. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +0 -458
  185. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +0 -455
  186. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +0 -458
  187. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +0 -41
  188. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +0 -728
  189. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +0 -43
  190. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +0 -414
  191. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +0 -23
  192. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +0 -42
  193. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +0 -527
  194. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +0 -533
  195. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +0 -528
  196. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +0 -534
  197. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +0 -521
  198. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +0 -527
  199. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +0 -517
  200. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +0 -523
  201. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +0 -550
  202. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +0 -556
  203. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +0 -32
  204. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +0 -432
  205. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +0 -42
  206. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +0 -929
  207. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +0 -40
  208. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +0 -244
  209. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +0 -46
  210. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +0 -184
  211. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +0 -454
  212. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +0 -459
  213. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +0 -83
  214. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +0 -88
  215. data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +0 -7
  216. data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +0 -7
  217. data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +0 -7
  218. data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +0 -7
  219. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +0 -44
  220. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +0 -437
  221. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +0 -23
  222. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +0 -57
  223. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +0 -475
  224. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +0 -480
  225. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +0 -590
  226. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +0 -590
  227. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +0 -126
  228. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +0 -68
  229. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +0 -174
  230. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +0 -80
  231. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +0 -68
  232. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +0 -142
  233. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +0 -55
  234. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +0 -1086
  235. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +0 -1092
  236. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +0 -721
  237. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +0 -726
  238. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +0 -723
  239. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +0 -729
  240. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +0 -1164
  241. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +0 -1165
  242. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +0 -562
  243. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +0 -563
  244. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +0 -563
  245. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +0 -565
  246. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +0 -55
  247. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +0 -476
  248. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +0 -485
  249. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +0 -362
  250. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +0 -367
  251. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +0 -43
  252. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +0 -1341
  253. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +0 -581
  254. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +0 -58
  255. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +0 -332
  256. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +0 -329
  257. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +0 -53
  258. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +0 -355
  259. data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +0 -79
  260. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +0 -56
  261. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +0 -399
  262. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +0 -127
  263. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +0 -43
  264. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +0 -253
  265. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +0 -1044
  266. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +0 -49
  267. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +0 -45
  268. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +0 -37
  269. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +0 -1587
  270. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +0 -48
  271. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +0 -1202
  272. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +0 -48
  273. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +0 -484
  274. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +0 -44
  275. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +0 -45
  276. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +0 -37
  277. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +0 -939
  278. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +0 -49
  279. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +0 -1216
  280. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +0 -48
  281. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +0 -45
  282. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +0 -37
  283. data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +0 -290
  284. data/ext/xkcp/lib/low/common/SnP-Relaned.h +0 -141
  285. data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +0 -133
  286. data/ext/xkcp/support/Kernel-PMU/Makefile +0 -8
  287. data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +0 -129
  288. data/ext/xkcp/support/Kernel-PMU/load-module +0 -1
  289. data/ext/xkcp/util/KeccakSum/KeccakSum.c +0 -394
  290. data/ext/xkcp/util/KeccakSum/base64.c +0 -86
  291. data/ext/xkcp/util/KeccakSum/base64.h +0 -12
@@ -1,1121 +0,0 @@
1
- ;
2
- ; The eXtended Keccak Code Package (XKCP)
3
- ; https://github.com/XKCP/XKCP
4
- ;
5
- ; The Keccak-p permutations, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche.
6
- ;
7
- ; Implementation by Ronny Van Keer, hereby denoted as "the implementer".
8
- ;
9
- ; For more information, feedback or questions, please refer to the Keccak Team website:
10
- ; https://keccak.team/
11
- ;
12
- ; To the extent possible under law, the implementer has waived all copyright
13
- ; and related or neighboring rights to the source code in this file.
14
- ; http://creativecommons.org/publicdomain/zero/1.0/
15
- ;
16
- ; ---
17
- ;
18
- ; This file implements Keccak-p[1600] in a SnP-compatible way.
19
- ; Please refer to SnP-documentation.h for more details.
20
- ;
21
- ; This implementation comes with KeccakP-1600-SnP.h in the same folder.
22
- ; Please refer to LowLevel.build for the exact list of other files it must be combined with.
23
- ;
24
-
25
- ; INFO: Tested on ATmega1280 simulator
26
-
27
- ; Registers used in all routines
28
- #define zero 1
29
- #define rpState 24
30
- #define rX 26
31
- #define rY 28
32
- #define rZ 30
33
- #define sp 0x3D
34
-
35
- ;----------------------------------------------------------------------------
36
- ;
37
- ; void KeccakP1600_StaticInitialize( void )
38
- ;
39
- .global KeccakP1600_StaticInitialize
40
-
41
- ;----------------------------------------------------------------------------
42
- ;
43
- ; void KeccakP1600_Initialize(void *state)
44
- ;
45
- ; argument state is passed in r24:r25
46
- ;
47
- .global KeccakP1600_Initialize
48
- KeccakP1600_Initialize:
49
- movw rZ, r24
50
- ldi r23, 5*5 ; clear state (8 bytes/1 lane per iteration)
51
- KeccakP1600_Initialize_Loop:
52
- st z+, zero
53
- st z+, zero
54
- st z+, zero
55
- st z+, zero
56
- st z+, zero
57
- st z+, zero
58
- st z+, zero
59
- st z+, zero
60
- dec r23
61
- brne KeccakP1600_Initialize_Loop
62
- KeccakP1600_StaticInitialize:
63
- ret
64
-
65
- ;----------------------------------------------------------------------------
66
- ;
67
- ; void KeccakP1600_AddByte(void *state, unsigned char data, unsigned int offset)
68
- ;
69
- ; argument state is passed in r24:r25
70
- ; argument data is passed in r22:r23, only LSB (r22) is used
71
- ; argument offset is passed in r20:r21, only LSB (r20) is used
72
- ;
73
- .global KeccakP1600_AddByte
74
- KeccakP1600_AddByte:
75
- movw rZ, r24
76
- add rZ, r20
77
- adc rZ+1, zero
78
- ld r0, Z
79
- eor r0, r22
80
- st Z, r0
81
- ret
82
-
83
- ;----------------------------------------------------------------------------
84
- ;
85
- ; void KeccakP1600_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
86
- ;
87
- ; argument state is passed in r24:r25
88
- ; argument data is passed in r22:r23
89
- ; argument offset is passed in r20:r21, only LSB (r20) is used
90
- ; argument length is passed in r18:r19, only LSB (r18) is used
91
- ;
92
- .global KeccakP1600_AddBytes
93
- KeccakP1600_AddBytes:
94
- movw rZ, r24
95
- add rZ, r20
96
- adc rZ+1, zero
97
- movw rX, r22
98
- subi r18, 8
99
- brcs KeccakP1600_AddBytes_Byte
100
- ;do 8 bytes per iteration
101
- KeccakP1600_AddBytes_Loop8:
102
- ld r21, X+
103
- ld r0, Z
104
- eor r0, r21
105
- st Z+, r0
106
- ld r21, X+
107
- ld r0, Z
108
- eor r0, r21
109
- st Z+, r0
110
- ld r21, X+
111
- ld r0, Z
112
- eor r0, r21
113
- st Z+, r0
114
- ld r21, X+
115
- ld r0, Z
116
- eor r0, r21
117
- st Z+, r0
118
- ld r21, X+
119
- ld r0, Z
120
- eor r0, r21
121
- st Z+, r0
122
- ld r21, X+
123
- ld r0, Z
124
- eor r0, r21
125
- st Z+, r0
126
- ld r21, X+
127
- ld r0, Z
128
- eor r0, r21
129
- st Z+, r0
130
- ld r21, X+
131
- ld r0, Z
132
- eor r0, r21
133
- st Z+, r0
134
- subi r18, 8
135
- brcc KeccakP1600_AddBytes_Loop8
136
- KeccakP1600_AddBytes_Byte:
137
- ldi r19, 8
138
- add r18, r19
139
- breq KeccakP1600_AddBytes_End
140
- KeccakP1600_AddBytes_Loop1:
141
- ld r21, X+
142
- ld r0, Z
143
- eor r0, r21
144
- st Z+, r0
145
- dec r18
146
- brne KeccakP1600_AddBytes_Loop1
147
- KeccakP1600_AddBytes_End:
148
- ret
149
-
150
-
151
- ;----------------------------------------------------------------------------
152
- ;
153
- ; void KeccakP1600_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
154
- ;
155
- ; argument state is passed in r24:r25
156
- ; argument data is passed in r22:r23
157
- ; argument offset is passed in r20:r21, only LSB (r20) is used
158
- ; argument length is passed in r18:r19, only LSB (r18) is used
159
- ;
160
- .global KeccakP1600_OverwriteBytes
161
- KeccakP1600_OverwriteBytes:
162
- movw rZ, r24
163
- add rZ, r20
164
- adc rZ+1, zero
165
- movw rX, r22
166
- subi r18, 8
167
- brcs KeccakP1600_OverwriteBytes_Byte
168
- ;do 8 bytes per iteration
169
- KeccakP1600_OverwriteBytes_Loop8:
170
- ld r0, X+
171
- st Z+, r0
172
- ld r0, X+
173
- st Z+, r0
174
- ld r0, X+
175
- st Z+, r0
176
- ld r0, X+
177
- st Z+, r0
178
- ld r0, X+
179
- st Z+, r0
180
- ld r0, X+
181
- st Z+, r0
182
- ld r0, X+
183
- st Z+, r0
184
- ld r0, X+
185
- st Z+, r0
186
- subi r18, 8
187
- brcc KeccakP1600_OverwriteBytes_Loop8
188
- KeccakP1600_OverwriteBytes_Byte:
189
- ldi r19, 8
190
- add r18, r19
191
- breq KeccakP1600_OverwriteBytes_End
192
- KeccakP1600_OverwriteBytes_Loop1:
193
- ld r0, X+
194
- st Z+, r0
195
- dec r18
196
- brne KeccakP1600_OverwriteBytes_Loop1
197
- KeccakP1600_OverwriteBytes_End:
198
- ret
199
-
200
- ;----------------------------------------------------------------------------
201
- ;
202
- ; void KeccakP1600_OverwriteWithZeroes(void *state, unsigned int byteCount)
203
- ;
204
- ; argument state is passed in r24:r25
205
- ; argument byteCount is passed in r22:r23, only LSB (r22) is used
206
- ;
207
- .global KeccakP1600_OverwriteWithZeroes
208
- KeccakP1600_OverwriteWithZeroes:
209
- movw rZ, r24 ; rZ = state
210
- mov r23, r22
211
- lsr r23
212
- lsr r23
213
- lsr r23
214
- breq KeccakP1600_OverwriteWithZeroes_Bytes
215
- KeccakP1600_OverwriteWithZeroes_LoopLanes:
216
- st Z+, r1
217
- st Z+, r1
218
- st Z+, r1
219
- st Z+, r1
220
- st Z+, r1
221
- st Z+, r1
222
- st Z+, r1
223
- st Z+, r1
224
- dec r23
225
- brne KeccakP1600_OverwriteWithZeroes_LoopLanes
226
- KeccakP1600_OverwriteWithZeroes_Bytes:
227
- andi r22, 7
228
- breq KeccakP1600_OverwriteWithZeroes_End
229
- KeccakP1600_OverwriteWithZeroes_LoopBytes:
230
- st Z+, r1
231
- dec r22
232
- brne KeccakP1600_OverwriteWithZeroes_LoopBytes
233
- KeccakP1600_OverwriteWithZeroes_End:
234
- ret
235
-
236
- ;----------------------------------------------------------------------------
237
- ;
238
- ; void KeccakP1600_ExtractBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length)
239
- ;
240
- ; argument state is passed in r24:r25
241
- ; argument data is passed in r22:r23
242
- ; argument offset is passed in r20:r21, only LSB (r20) is used
243
- ; argument length is passed in r18:r19, only LSB (r18) is used
244
- ;
245
- .global KeccakP1600_ExtractBytes
246
- KeccakP1600_ExtractBytes:
247
- movw rZ, r24
248
- add rZ, r20
249
- adc rZ+1, zero
250
- movw rX, r22
251
- subi r18, 8
252
- brcs KeccakP1600_ExtractBytes_Byte
253
- ;do 8 bytes per iteration
254
- KeccakP1600_ExtractBytes_Loop8:
255
- ld r0, Z+
256
- st X+, r0
257
- ld r0, Z+
258
- st X+, r0
259
- ld r0, Z+
260
- st X+, r0
261
- ld r0, Z+
262
- st X+, r0
263
- ld r0, Z+
264
- st X+, r0
265
- ld r0, Z+
266
- st X+, r0
267
- ld r0, Z+
268
- st X+, r0
269
- ld r0, Z+
270
- st X+, r0
271
- subi r18, 8
272
- brcc KeccakP1600_ExtractBytes_Loop8
273
- KeccakP1600_ExtractBytes_Byte:
274
- ldi r19, 8
275
- add r18, r19
276
- breq KeccakP1600_ExtractBytes_End
277
- KeccakP1600_ExtractBytes_Loop1:
278
- ld r0, Z+
279
- st X+, r0
280
- dec r18
281
- brne KeccakP1600_ExtractBytes_Loop1
282
- KeccakP1600_ExtractBytes_End:
283
- ret
284
-
285
- ;----------------------------------------------------------------------------
286
- ;
287
- ; void KeccakP1600_ExtractAndAddBytes(void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length)
288
- ;
289
- ; argument state is passed in r24:r25
290
- ; argument input is passed in r22:r23
291
- ; argument output is passed in r20:r21
292
- ; argument offset is passed in r18:r19, only LSB (r18) is used
293
- ; argument length is passed in r16:r17, only LSB (r16) is used
294
- ;
295
- .global KeccakP1600_ExtractAndAddBytes
296
- KeccakP1600_ExtractAndAddBytes:
297
- tst r16
298
- breq KeccakP1600_ExtractAndAddBytes_End
299
- push r16
300
- push r28
301
- push r29
302
- movw rZ, r24
303
- add rZ, r18
304
- adc rZ+1, zero
305
- movw rX, r22
306
- movw rY, r20
307
- subi r16, 8
308
- brcs KeccakP1600_ExtractAndAddBytes_Byte
309
- KeccakP1600_ExtractAndAddBytes_LoopLane:
310
- ld r21, Z+
311
- ld r0, X+
312
- eor r0, r21
313
- st Y+, r0
314
- ld r21, Z+
315
- ld r0, X+
316
- eor r0, r21
317
- st Y+, r0
318
- ld r21, Z+
319
- ld r0, X+
320
- eor r0, r21
321
- st Y+, r0
322
- ld r21, Z+
323
- ld r0, X+
324
- eor r0, r21
325
- st Y+, r0
326
- ld r21, Z+
327
- ld r0, X+
328
- eor r0, r21
329
- st Y+, r0
330
- ld r21, Z+
331
- ld r0, X+
332
- eor r0, r21
333
- st Y+, r0
334
- ld r21, Z+
335
- ld r0, X+
336
- eor r0, r21
337
- st Y+, r0
338
- ld r21, Z+
339
- ld r0, X+
340
- eor r0, r21
341
- st Y+, r0
342
- subi r16, 8
343
- brcc KeccakP1600_ExtractAndAddBytes_LoopLane
344
- KeccakP1600_ExtractAndAddBytes_Byte:
345
- ldi r19, 8
346
- add r16, r19
347
- breq KeccakP1600_ExtractAndAddBytes_Done
348
- KeccakP1600_ExtractAndAddBytes_Loop1:
349
- ld r21, Z+
350
- ld r0, X+
351
- eor r0, r21
352
- st Y+, r0
353
- dec r16
354
- brne KeccakP1600_ExtractAndAddBytes_Loop1
355
- KeccakP1600_ExtractAndAddBytes_Done:
356
- pop r29
357
- pop r28
358
- pop r16
359
- KeccakP1600_ExtractAndAddBytes_End:
360
- ret
361
-
362
-
363
- #define ROT_BIT(a) ((a) & 7)
364
- #define ROT_BYTE(a) ((((a)/8 + !!(((a)%8) > 4)) & 7) * 9)
365
-
366
- KeccakP1600_RhoPiConstants:
367
- .BYTE ROT_BIT( 1), ROT_BYTE( 3), 10 * 8
368
- .BYTE ROT_BIT( 3), ROT_BYTE( 6), 7 * 8
369
- .BYTE ROT_BIT( 6), ROT_BYTE(10), 11 * 8
370
- .BYTE ROT_BIT(10), ROT_BYTE(15), 17 * 8
371
- .BYTE ROT_BIT(15), ROT_BYTE(21), 18 * 8
372
- .BYTE ROT_BIT(21), ROT_BYTE(28), 3 * 8
373
- .BYTE ROT_BIT(28), ROT_BYTE(36), 5 * 8
374
- .BYTE ROT_BIT(36), ROT_BYTE(45), 16 * 8
375
- .BYTE ROT_BIT(45), ROT_BYTE(55), 8 * 8
376
- .BYTE ROT_BIT(55), ROT_BYTE( 2), 21 * 8
377
- .BYTE ROT_BIT( 2), ROT_BYTE(14), 24 * 8
378
- .BYTE ROT_BIT(14), ROT_BYTE(27), 4 * 8
379
- .BYTE ROT_BIT(27), ROT_BYTE(41), 15 * 8
380
- .BYTE ROT_BIT(41), ROT_BYTE(56), 23 * 8
381
- .BYTE ROT_BIT(56), ROT_BYTE( 8), 19 * 8
382
- .BYTE ROT_BIT( 8), ROT_BYTE(25), 13 * 8
383
- .BYTE ROT_BIT(25), ROT_BYTE(43), 12 * 8
384
- .BYTE ROT_BIT(43), ROT_BYTE(62), 2 * 8
385
- .BYTE ROT_BIT(62), ROT_BYTE(18), 20 * 8
386
- .BYTE ROT_BIT(18), ROT_BYTE(39), 14 * 8
387
- .BYTE ROT_BIT(39), ROT_BYTE(61), 22 * 8
388
- .BYTE ROT_BIT(61), ROT_BYTE(20), 9 * 8
389
- .BYTE ROT_BIT(20), ROT_BYTE(44), 6 * 8
390
- .BYTE ROT_BIT(44), ROT_BYTE( 1), 1 * 8
391
-
392
- KeccakP1600_RoundConstants_24:
393
- .BYTE 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
394
- .BYTE 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
395
- .BYTE 0x8a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
396
- .BYTE 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80
397
- .BYTE 0x8b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
398
- .BYTE 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
399
- .BYTE 0x81, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80
400
- .BYTE 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
401
- .BYTE 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
402
- .BYTE 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
403
- .BYTE 0x09, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
404
- .BYTE 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
405
- KeccakP1600_RoundConstants_12:
406
- .BYTE 0x8b, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
407
- .BYTE 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
408
- .BYTE 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
409
- .BYTE 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
410
- .BYTE 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
411
- .BYTE 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
412
- .BYTE 0x0a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
413
- .BYTE 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80
414
- .BYTE 0x81, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80
415
- .BYTE 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
416
- .BYTE 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
417
- .BYTE 0x08, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80
418
- KeccakP1600_RoundConstants_0:
419
- .BYTE 0xFF, 0 ; terminator
420
-
421
- .text
422
-
423
- #define pRound 22 // 2 regs (22-23)
424
-
425
- ;----------------------------------------------------------------------------
426
- ;
427
- ; void KeccakP1600_Permute_Nrounds( void *state, unsigned int nrounds )
428
- ;
429
- ; argument state is passed in r24:r25
430
- ; argument nrounds is passed in r22:r23 (only LSB (r22) is used)
431
- ;
432
- .global KeccakP1600_Permute_Nrounds
433
- KeccakP1600_Permute_Nrounds:
434
- mov r26, r22
435
- ldi pRound, lo8(KeccakP1600_RoundConstants_0)
436
- ldi pRound+1, hi8(KeccakP1600_RoundConstants_0)
437
- lsl r26
438
- lsl r26
439
- lsl r26
440
- sub pRound, r26
441
- sbc pRound+1, zero
442
- rjmp KeccakP1600_Permute
443
-
444
- ;----------------------------------------------------------------------------
445
- ;
446
- ; void KeccakP1600_Permute_24rounds( void *state )
447
- ;
448
- .global KeccakP1600_Permute_24rounds
449
- KeccakP1600_Permute_24rounds:
450
- ldi pRound, lo8(KeccakP1600_RoundConstants_24)
451
- ldi pRound+1, hi8(KeccakP1600_RoundConstants_24)
452
- rjmp KeccakP1600_Permute
453
-
454
- ;----------------------------------------------------------------------------
455
- ;
456
- ; void KeccakP1600_Permute_12rounds( void *state )
457
- ;
458
- .global KeccakP1600_Permute_12rounds
459
- KeccakP1600_Permute_12rounds:
460
- ldi pRound, lo8(KeccakP1600_RoundConstants_12)
461
- ldi pRound+1, hi8(KeccakP1600_RoundConstants_12)
462
- KeccakP1600_Permute:
463
- push r2
464
- push r3
465
- push r4
466
- push r5
467
- push r6
468
- push r7
469
- push r8
470
- push r9
471
- push r10
472
- push r11
473
- push r12
474
- push r13
475
- push r14
476
- push r15
477
- push r16
478
- push r17
479
- push r28
480
- push r29
481
-
482
- ; Allocate C variables (5*8)
483
- in rZ, sp
484
- in rZ+1, sp+1
485
- sbiw rZ, 40
486
- in r0, 0x3F
487
- cli
488
- out sp+1, rZ+1
489
- out sp, rZ ; Z points to 5 C lanes
490
- out 0x3F, r0
491
-
492
- ; Variables used in multiple operations
493
- #define rTemp 2 // 8 regs (2-9)
494
- #define rTempBis 10 // 8 regs (10-17)
495
- #define rTempTer 18 // 4 regs (18-21)
496
-
497
- ; Initial Prepare Theta
498
- #define TCIPx rTempTer
499
-
500
- ldi TCIPx, 5
501
- movw rY, rpState
502
- KeccakInitialPrepTheta_Loop:
503
- ld rTemp+0, Y+ ; state[x]
504
- ld rTemp+1, Y+
505
- ld rTemp+2, Y+
506
- ld rTemp+3, Y+
507
- ld rTemp+4, Y+
508
- ld rTemp+5, Y+
509
- ld rTemp+6, Y+
510
- ld rTemp+7, Y+
511
-
512
- adiw rY, 32
513
- ld r0, Y+ ; state[5+x]
514
- eor rTemp+0, r0
515
- ld r0, Y+
516
- eor rTemp+1, r0
517
- ld r0, Y+
518
- eor rTemp+2, r0
519
- ld r0, Y+
520
- eor rTemp+3, r0
521
- ld r0, Y+
522
- eor rTemp+4, r0
523
- ld r0, Y+
524
- eor rTemp+5, r0
525
- ld r0, Y+
526
- eor rTemp+6, r0
527
- ld r0, Y+
528
- eor rTemp+7, r0
529
-
530
- adiw rY, 32
531
- ld r0, Y+ ; state[10+x]
532
- eor rTemp+0, r0
533
- ld r0, Y+
534
- eor rTemp+1, r0
535
- ld r0, Y+
536
- eor rTemp+2, r0
537
- ld r0, Y+
538
- eor rTemp+3, r0
539
- ld r0, Y+
540
- eor rTemp+4, r0
541
- ld r0, Y+
542
- eor rTemp+5, r0
543
- ld r0, Y+
544
- eor rTemp+6, r0
545
- ld r0, Y+
546
- eor rTemp+7, r0
547
-
548
- adiw rY, 32
549
- ld r0, Y+ ; state[15+x]
550
- eor rTemp+0, r0
551
- ld r0, Y+
552
- eor rTemp+1, r0
553
- ld r0, Y+
554
- eor rTemp+2, r0
555
- ld r0, Y+
556
- eor rTemp+3, r0
557
- ld r0, Y+
558
- eor rTemp+4, r0
559
- ld r0, Y+
560
- eor rTemp+5, r0
561
- ld r0, Y+
562
- eor rTemp+6, r0
563
- ld r0, Y+
564
- eor rTemp+7, r0
565
-
566
- adiw rY, 32
567
- ld r0, Y+ ; state[20+x]
568
- eor rTemp+0, r0
569
- ld r0, Y+
570
- eor rTemp+1, r0
571
- ld r0, Y+
572
- eor rTemp+2, r0
573
- ld r0, Y+
574
- eor rTemp+3, r0
575
- ld r0, Y+
576
- eor rTemp+4, r0
577
- ld r0, Y+
578
- eor rTemp+5, r0
579
- ld r0, Y+
580
- eor rTemp+6, r0
581
- ld r0, Y+
582
- eor rTemp+7, r0
583
-
584
- st Z+, rTemp+0
585
- st Z+, rTemp+1
586
- st Z+, rTemp+2
587
- st Z+, rTemp+3
588
- st Z+, rTemp+4
589
- st Z+, rTemp+5
590
- st Z+, rTemp+6
591
- st Z+, rTemp+7
592
-
593
- subi rY, 160
594
- sbc rY+1, zero
595
-
596
- subi TCIPx, 1
597
- breq KeccakInitialPrepTheta_Done
598
- rjmp KeccakInitialPrepTheta_Loop
599
- KeccakInitialPrepTheta_Done:
600
- #undef TCIPx
601
-
602
- Keccak_RoundLoop:
603
-
604
- ; Theta
605
- #define TCplus rX
606
- #define TCminus rZ
607
- #define TCcoordX rTempTer
608
- #define TCcoordY rTempTer+1
609
-
610
- in TCminus, sp
611
- in TCminus+1, sp+1
612
- movw TCplus, TCminus
613
- adiw TCminus, 4*8
614
- adiw TCplus, 1*8
615
- movw rY, rpState
616
-
617
- ldi TCcoordX, 0x16
618
- KeccakTheta_Loop1:
619
- ld rTemp+0, X+
620
- ld rTemp+1, X+
621
- ld rTemp+2, X+
622
- ld rTemp+3, X+
623
- ld rTemp+4, X+
624
- ld rTemp+5, X+
625
- ld rTemp+6, X+
626
- ld rTemp+7, X+
627
-
628
- lsl rTemp+0
629
- rol rTemp+1
630
- rol rTemp+2
631
- rol rTemp+3
632
- rol rTemp+4
633
- rol rTemp+5
634
- rol rTemp+6
635
- rol rTemp+7
636
- adc rTemp+0, zero
637
-
638
- ld r0, Z+
639
- eor rTemp+0, r0
640
- ld r0, Z+
641
- eor rTemp+1, r0
642
- ld r0, Z+
643
- eor rTemp+2, r0
644
- ld r0, Z+
645
- eor rTemp+3, r0
646
- ld r0, Z+
647
- eor rTemp+4, r0
648
- ld r0, Z+
649
- eor rTemp+5, r0
650
- ld r0, Z+
651
- eor rTemp+6, r0
652
- ld r0, Z+
653
- eor rTemp+7, r0
654
-
655
- ldi TCcoordY, 5
656
- KeccakTheta_Loop2:
657
- ld r0, Y
658
- eor r0, rTemp+0
659
- st Y+, r0
660
- ld r0, Y
661
- eor r0, rTemp+1
662
- st Y+, r0
663
- ld r0, Y
664
- eor r0, rTemp+2
665
- st Y+, r0
666
- ld r0, Y
667
- eor r0, rTemp+3
668
- st Y+, r0
669
- ld r0, Y
670
- eor r0, rTemp+4
671
- st Y+, r0
672
- ld r0, Y
673
- eor r0, rTemp+5
674
- st Y+, r0
675
- ld r0, Y
676
- eor r0, rTemp+6
677
- st Y+, r0
678
- ld r0, Y
679
- eor r0, rTemp+7
680
- st Y+, r0
681
- adiw rY, 32
682
-
683
- dec TCcoordY
684
- brne KeccakTheta_Loop2
685
-
686
- subi rY, 200-8
687
- sbc rY+1, zero
688
-
689
- lsr TCcoordX
690
- brcc 1f
691
- breq KeccakTheta_End
692
- rjmp KeccakTheta_Loop1
693
- 1:
694
- cpi TCcoordX, 0x0B
695
- brne 2f
696
- sbiw TCminus, 40
697
- rjmp KeccakTheta_Loop1
698
- 2:
699
- sbiw TCplus, 40
700
- rjmp KeccakTheta_Loop1
701
-
702
- KeccakTheta_End:
703
- #undef TCplus
704
- #undef TCminus
705
- #undef TCcoordX
706
- #undef TCcoordY
707
-
708
- ; Rho Pi
709
- #define RPpConst rTempTer // 2 regs
710
- #define RPindex rTempTer+2
711
- #define RPpBitRot rX
712
- #define RPpByteRot pRound
713
-
714
- sbiw rY, 32
715
-
716
- ld rTemp+0, Y+
717
- ld rTemp+1, Y+
718
- ld rTemp+2, Y+
719
- ld rTemp+3, Y+
720
- ld rTemp+4, Y+
721
- ld rTemp+5, Y+
722
- ld rTemp+6, Y+
723
- ld rTemp+7, Y+
724
-
725
- push pRound
726
- push pRound+1
727
- ldi RPpConst, lo8(KeccakP1600_RhoPiConstants)
728
- ldi RPpConst+1, hi8(KeccakP1600_RhoPiConstants)
729
- ldi RPpBitRot, pm_lo8(bit_rot_jmp_table)
730
- ldi RPpBitRot+1, pm_hi8(bit_rot_jmp_table)
731
- ldi RPpByteRot, pm_lo8(rotate64_0byte_left)
732
- ldi RPpByteRot+1, pm_hi8(rotate64_0byte_left)
733
-
734
- KeccakRhoPi_Loop:
735
- ; get rotation codes and state index
736
- movw rZ, RPpConst
737
- lpm r0, Z+ ; bits
738
- lpm rTempBis, Z+ ; bytes
739
- lpm RPindex, Z+
740
- movw RPpConst, rZ
741
-
742
- ; do bit rotation
743
- movw rZ, RPpBitRot
744
- add rZ, r0
745
- adc rZ+1, zero
746
- ijmp
747
-
748
- KeccakRhoPi_RhoBitRotateDone:
749
- movw rY, rpState
750
- add rY, RPindex
751
- adc rY+1, zero
752
-
753
- movw rZ, RPpByteRot
754
- add rZ, rTempBis
755
- adc rZ+1, zero
756
- ijmp
757
-
758
- KeccakRhoPi_PiStore:
759
- sbiw rY, 8
760
- st Y+, rTemp+0
761
- st Y+, rTemp+1
762
- st Y+, rTemp+2
763
- st Y+, rTemp+3
764
- st Y+, rTemp+4
765
- st Y+, rTemp+5
766
- st Y+, rTemp+6
767
- st Y+, rTemp+7
768
-
769
- movw rTemp+0, rTempBis+0
770
- movw rTemp+2, rTempBis+2
771
- movw rTemp+4, rTempBis+4
772
- movw rTemp+6, rTempBis+6
773
- KeccakRhoPi_RhoDone:
774
- subi RPindex, 8
775
- brne KeccakRhoPi_Loop
776
- pop pRound+1
777
- pop pRound
778
-
779
- #undef RPpConst
780
- #undef RPindex
781
- #undef RPpBitrot
782
- #undef RPpByteRot
783
-
784
-
785
- ; Chi Iota prepare Theta
786
- #define CIPTa0 rTemp
787
- #define CIPTa1 rTemp+1
788
- #define CIPTa2 rTemp+2
789
- #define CIPTa3 rTemp+3
790
- #define CIPTa4 rTemp+4
791
- #define CIPTc0 rTempBis
792
- #define CIPTc1 rTempBis+1
793
- #define CIPTc2 rTempBis+2
794
- #define CIPTc3 rTempBis+3
795
- #define CIPTc4 rTempBis+4
796
- #define CIPTz rTempBis+6
797
- #define CIPTy rTempBis+7
798
-
799
- in rX, sp ; 5 * C
800
- in rX+1, sp+1
801
- movw rY, rpState
802
- movw rZ, pRound
803
-
804
- ldi CIPTz, 8
805
- KeccakChiIotaPrepareTheta_zLoop:
806
- mov CIPTc0, zero
807
- mov CIPTc1, zero
808
- movw CIPTc2, CIPTc0
809
- mov CIPTc4, zero
810
-
811
- ldi CIPTy, 5
812
- KeccakChiIotaPrepareTheta_yLoop:
813
- ld CIPTa0, Y
814
- ldd CIPTa1, Y+8
815
- ldd CIPTa2, Y+16
816
- ldd CIPTa3, Y+24
817
- ldd CIPTa4, Y+32
818
-
819
- ;*p = t = a0 ^ ((~a1) & a2); c0 ^= t;
820
- mov r0, CIPTa1
821
- com r0
822
- and r0, CIPTa2
823
- eor r0, CIPTa0
824
- eor CIPTc0, r0
825
- st Y, r0
826
-
827
- ;*(p+8) = t = a1 ^ ((~a2) & a3); c1 ^= t;
828
- mov r0, CIPTa2
829
- com r0
830
- and r0, CIPTa3
831
- eor r0, CIPTa1
832
- eor CIPTc1, r0
833
- std Y+8, r0
834
-
835
- ;*(p+16) = a2 ^= ((~a3) & a4); c2 ^= a2;
836
- mov r0, CIPTa3
837
- com r0
838
- and r0, CIPTa4
839
- eor r0, CIPTa2
840
- eor CIPTc2, r0
841
- std Y+16, r0
842
-
843
- ;*(p+24) = a3 ^= ((~a4) & a0); c3 ^= a3;
844
- mov r0, CIPTa4
845
- com r0
846
- and r0, CIPTa0
847
- eor r0, CIPTa3
848
- eor CIPTc3, r0
849
- std Y+24, r0
850
-
851
- ;*(p+32) = a4 ^= ((~a0) & a1); c4 ^= a4;
852
- com CIPTa0
853
- and CIPTa0, CIPTa1
854
- eor CIPTa0, CIPTa4
855
- eor CIPTc4, CIPTa0
856
- std Y+32, CIPTa0
857
-
858
- adiw rY, 40
859
- dec CIPTy
860
- brne KeccakChiIotaPrepareTheta_yLoop
861
-
862
- subi rY, 200
863
- sbc rY+1, zero
864
-
865
- lpm r0, Z+ ;Round Constant
866
- ld CIPTa0, Y
867
- eor CIPTa0, r0
868
- st Y+, CIPTa0
869
-
870
- movw pRound, rZ
871
- movw rZ, rX
872
- eor CIPTc0, r0
873
- st Z+, CIPTc0
874
- std Z+7, CIPTc1
875
- std Z+15, CIPTc2
876
- std Z+23, CIPTc3
877
- std Z+31, CIPTc4
878
- movw rX, rZ
879
- movw rZ, pRound
880
-
881
- dec CIPTz
882
- brne KeccakChiIotaPrepareTheta_zLoop
883
-
884
- #undef CIPTa0
885
- #undef CIPTa1
886
- #undef CIPTa2
887
- #undef CIPTa3
888
- #undef CIPTa4
889
- #undef CIPTc0
890
- #undef CIPTc1
891
- #undef CIPTc2
892
- #undef CIPTc3
893
- #undef CIPTc4
894
- #undef CIPTz
895
- #undef CIPTy
896
-
897
- ;Check for terminator
898
- lpm r0, Z
899
- inc r0
900
- breq Keccak_Done
901
- rjmp Keccak_RoundLoop
902
- Keccak_Done:
903
-
904
- ; Free C(on stack) and registers
905
- in rX, sp ; free 5 C lanes
906
- in rX+1, sp+1
907
- adiw rX, 40
908
- in r0, 0x3F
909
- cli
910
- out sp+1, rX+1
911
- out sp, rX
912
- out 0x3F, r0
913
-
914
- pop r29
915
- pop r28
916
- pop r17
917
- pop r16
918
- pop r15
919
- pop r14
920
- pop r13
921
- pop r12
922
- pop r11
923
- pop r10
924
- pop r9
925
- pop r8
926
- pop r7
927
- pop r6
928
- pop r5
929
- pop r4
930
- pop r3
931
- pop r2
932
- ret
933
-
934
- bit_rot_jmp_table:
935
- rjmp KeccakRhoPi_RhoBitRotateDone
936
- rjmp rotate64_1bit_left
937
- rjmp rotate64_2bit_left
938
- rjmp rotate64_3bit_left
939
- rjmp rotate64_4bit_left
940
- rjmp rotate64_3bit_right
941
- rjmp rotate64_2bit_right
942
- rjmp rotate64_1bit_right
943
-
944
- rotate64_4bit_left:
945
- lsl rTemp
946
- rol rTemp+1
947
- rol rTemp+2
948
- rol rTemp+3
949
- rol rTemp+4
950
- rol rTemp+5
951
- rol rTemp+6
952
- rol rTemp+7
953
- adc rTemp, r1
954
- rotate64_3bit_left:
955
- lsl rTemp
956
- rol rTemp+1
957
- rol rTemp+2
958
- rol rTemp+3
959
- rol rTemp+4
960
- rol rTemp+5
961
- rol rTemp+6
962
- rol rTemp+7
963
- adc rTemp, r1
964
- rotate64_2bit_left:
965
- lsl rTemp
966
- rol rTemp+1
967
- rol rTemp+2
968
- rol rTemp+3
969
- rol rTemp+4
970
- rol rTemp+5
971
- rol rTemp+6
972
- rol rTemp+7
973
- adc rTemp, r1
974
- rotate64_1bit_left:
975
- lsl rTemp
976
- rol rTemp+1
977
- rol rTemp+2
978
- rol rTemp+3
979
- rol rTemp+4
980
- rol rTemp+5
981
- rol rTemp+6
982
- rol rTemp+7
983
- adc rTemp, r1
984
- rjmp KeccakRhoPi_RhoBitRotateDone
985
-
986
- rotate64_3bit_right:
987
- bst rTemp, 0
988
- ror rTemp+7
989
- ror rTemp+6
990
- ror rTemp+5
991
- ror rTemp+4
992
- ror rTemp+3
993
- ror rTemp+2
994
- ror rTemp+1
995
- ror rTemp
996
- bld rTemp+7, 7
997
- rotate64_2bit_right:
998
- bst rTemp, 0
999
- ror rTemp+7
1000
- ror rTemp+6
1001
- ror rTemp+5
1002
- ror rTemp+4
1003
- ror rTemp+3
1004
- ror rTemp+2
1005
- ror rTemp+1
1006
- ror rTemp
1007
- bld rTemp+7, 7
1008
- rotate64_1bit_right:
1009
- bst rTemp, 0
1010
- ror rTemp+7
1011
- ror rTemp+6
1012
- ror rTemp+5
1013
- ror rTemp+4
1014
- ror rTemp+3
1015
- ror rTemp+2
1016
- ror rTemp+1
1017
- ror rTemp
1018
- bld rTemp+7, 7
1019
- rjmp KeccakRhoPi_RhoBitRotateDone
1020
-
1021
- ; Each byte rotate routine must be 9 instructions long.
1022
-
1023
- rotate64_0byte_left:
1024
- ld rTempBis+0, Y+
1025
- ld rTempBis+1, Y+
1026
- ld rTempBis+2, Y+
1027
- ld rTempBis+3, Y+
1028
- ld rTempBis+4, Y+
1029
- ld rTempBis+5, Y+
1030
- ld rTempBis+6, Y+
1031
- ld rTempBis+7, Y+
1032
- rjmp KeccakRhoPi_PiStore
1033
-
1034
- rotate64_1byte_left:
1035
- ld rTempBis+1, Y+
1036
- ld rTempBis+2, Y+
1037
- ld rTempBis+3, Y+
1038
- ld rTempBis+4, Y+
1039
- ld rTempBis+5, Y+
1040
- ld rTempBis+6, Y+
1041
- ld rTempBis+7, Y+
1042
- ld rTempBis+0, Y+
1043
- rjmp KeccakRhoPi_PiStore
1044
-
1045
- rotate64_2byte_left:
1046
- ld rTempBis+2, Y+
1047
- ld rTempBis+3, Y+
1048
- ld rTempBis+4, Y+
1049
- ld rTempBis+5, Y+
1050
- ld rTempBis+6, Y+
1051
- ld rTempBis+7, Y+
1052
- ld rTempBis+0, Y+
1053
- ld rTempBis+1, Y+
1054
- rjmp KeccakRhoPi_PiStore
1055
-
1056
- rotate64_3byte_left:
1057
- ld rTempBis+3, Y+
1058
- ld rTempBis+4, Y+
1059
- ld rTempBis+5, Y+
1060
- ld rTempBis+6, Y+
1061
- ld rTempBis+7, Y+
1062
- ld rTempBis+0, Y+
1063
- ld rTempBis+1, Y+
1064
- ld rTempBis+2, Y+
1065
- rjmp KeccakRhoPi_PiStore
1066
-
1067
- rotate64_4byte_left:
1068
- ld rTempBis+4, Y+
1069
- ld rTempBis+5, Y+
1070
- ld rTempBis+6, Y+
1071
- ld rTempBis+7, Y+
1072
- ld rTempBis+0, Y+
1073
- ld rTempBis+1, Y+
1074
- ld rTempBis+2, Y+
1075
- ld rTempBis+3, Y+
1076
- rjmp KeccakRhoPi_PiStore
1077
-
1078
- rotate64_5byte_left:
1079
- ld rTempBis+5, Y+
1080
- ld rTempBis+6, Y+
1081
- ld rTempBis+7, Y+
1082
- ld rTempBis+0, Y+
1083
- ld rTempBis+1, Y+
1084
- ld rTempBis+2, Y+
1085
- ld rTempBis+3, Y+
1086
- ld rTempBis+4, Y+
1087
- rjmp KeccakRhoPi_PiStore
1088
-
1089
- rotate64_6byte_left:
1090
- ld rTempBis+6, Y+
1091
- ld rTempBis+7, Y+
1092
- ld rTempBis+0, Y+
1093
- ld rTempBis+1, Y+
1094
- ld rTempBis+2, Y+
1095
- ld rTempBis+3, Y+
1096
- ld rTempBis+4, Y+
1097
- ld rTempBis+5, Y+
1098
- rjmp KeccakRhoPi_PiStore
1099
-
1100
- rotate64_7byte_left:
1101
- ld rTempBis+7, Y+
1102
- ld rTempBis+0, Y+
1103
- ld rTempBis+1, Y+
1104
- ld rTempBis+2, Y+
1105
- ld rTempBis+3, Y+
1106
- ld rTempBis+4, Y+
1107
- ld rTempBis+5, Y+
1108
- ld rTempBis+6, Y+
1109
- rjmp KeccakRhoPi_PiStore
1110
-
1111
- #undef rTemp
1112
- #undef rTempBis
1113
- #undef rTempTer
1114
- #undef pRound
1115
-
1116
- #undef rpState
1117
- #undef zero
1118
- #undef rX
1119
- #undef rY
1120
- #undef rZ
1121
- #undef sp