zkevm-rom 0.0.1-security → 6.0.1

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.

Potentially problematic release.


This version of zkevm-rom might be problematic. Click here for more details.

Files changed (232) hide show
  1. package/.eslintrc.js +33 -0
  2. package/.github/CODEOWNERS +14 -0
  3. package/.github/ISSUE_TEMPLATE/bug.yml +38 -0
  4. package/.github/ISSUE_TEMPLATE/feature.yml +26 -0
  5. package/.github/ISSUE_TEMPLATE/question.yml +26 -0
  6. package/.github/workflows/main.yaml +40 -0
  7. package/LICENSE +636 -0
  8. package/README.md +23 -5
  9. package/audits/Hexens_Polygon_zkEVM_PUBLIC_27.02.23.pdf +0 -0
  10. package/audits/Polygon-zkEVM-Public-v1.1-verichains-19-03-2024.pdf +0 -0
  11. package/audits/zkEVM-ROM-upgrade-1-Spearbit-30-May.pdf +0 -0
  12. package/audits/zkEVM-ROM-upgrade-2-Spearbit-21-August.pdf +0 -0
  13. package/audits/zkEVM-engagement-1-Spearbit-27-March.pdf +0 -0
  14. package/audits/zkEVM-engagement-2-Spearbit-27-March.pdf +0 -0
  15. package/audits/zkEVM-engagement-3-Spearbit-6-April.pdf +0 -0
  16. package/counters/README.md +45 -0
  17. package/counters/counters-executor.js +80 -0
  18. package/counters/countersConstants.zkasm +370 -0
  19. package/counters/endIncludes.zkasm +18 -0
  20. package/counters/initIncludes.zkasm +2 -0
  21. package/counters/tests/MLOAD32.zkasm +27 -0
  22. package/counters/tests/MLOADX.zkasm +30 -0
  23. package/counters/tests/MSTORE32.zkasm +32 -0
  24. package/counters/tests/MSTOREX.zkasm +36 -0
  25. package/counters/tests/SHLarith.zkasm +28 -0
  26. package/counters/tests/SHLarithBit.zkasm +28 -0
  27. package/counters/tests/SHRarith.zkasm +28 -0
  28. package/counters/tests/SHRarithBit.zkasm +28 -0
  29. package/counters/tests/abs.zkasm +29 -0
  30. package/counters/tests/addBatchHashByteByByte.zkasm +31 -0
  31. package/counters/tests/computeGasSendCall.zkasm +30 -0
  32. package/counters/tests/divArith.zkasm +27 -0
  33. package/counters/tests/expAD.zkasm +30 -0
  34. package/counters/tests/getLenBits.zkasm +30 -0
  35. package/counters/tests/getLenBytes.zkasm +32 -0
  36. package/counters/tests/isEmptyAccount.zkasm +30 -0
  37. package/counters/tests/mulARITH.zkasm +28 -0
  38. package/counters/tests/offsetUtil.zkasm +29 -0
  39. package/counters/tests/opADDMOD.zkasm +28 -0
  40. package/counters/tests/opAdd.zkasm +27 -0
  41. package/counters/tests/opBLOCKHASH.zkasm +28 -0
  42. package/counters/tests/opCALL.zkasm +41 -0
  43. package/counters/tests/opCALLCODE.zkasm +41 -0
  44. package/counters/tests/opCALLDATACOPY.zkasm +28 -0
  45. package/counters/tests/opCALLDATALOAD.zkasm +27 -0
  46. package/counters/tests/opCODECOPY.zkasm +28 -0
  47. package/counters/tests/opCREATE.zkasm +35 -0
  48. package/counters/tests/opCREATE2.zkasm +35 -0
  49. package/counters/tests/opDELEGATECALL.zkasm +35 -0
  50. package/counters/tests/opDIV.zkasm +27 -0
  51. package/counters/tests/opEXP.zkasm +29 -0
  52. package/counters/tests/opEXTCODECOPY.zkasm +29 -0
  53. package/counters/tests/opMOD.zkasm +27 -0
  54. package/counters/tests/opMUL.zkasm +27 -0
  55. package/counters/tests/opMULMOD.zkasm +28 -0
  56. package/counters/tests/opRETURN.zkasm +32 -0
  57. package/counters/tests/opRETURNDATACOPY.zkasm +29 -0
  58. package/counters/tests/opREVERT.zkasm +32 -0
  59. package/counters/tests/opSDIV.zkasm +28 -0
  60. package/counters/tests/opSHA3.zkasm +28 -0
  61. package/counters/tests/opSIGNEXTEND.zkasm +27 -0
  62. package/counters/tests/opSMOD.zkasm +28 -0
  63. package/counters/tests/opSTATICCALL.zkasm +35 -0
  64. package/counters/tests/opSUB.zkasm +27 -0
  65. package/counters/tests/saveMem.zkasm +31 -0
  66. package/docs/opcode-cost-zk-counters.md +315 -0
  67. package/docs/usage-ecrecover.md +51 -0
  68. package/index.js +43 -0
  69. package/main/block-info.zkasm +204 -0
  70. package/main/constants.zkasm +145 -0
  71. package/main/ecrecover/addFpEc.zkasm +31 -0
  72. package/main/ecrecover/checkSqrtFpEc.zkasm +1558 -0
  73. package/main/ecrecover/constEc.zkasm +13 -0
  74. package/main/ecrecover/ecrecover.zkasm +280 -0
  75. package/main/ecrecover/invFnEc.zkasm +44 -0
  76. package/main/ecrecover/invFpEc.zkasm +45 -0
  77. package/main/ecrecover/mulFnEc.zkasm +36 -0
  78. package/main/ecrecover/mulFpEc.zkasm +36 -0
  79. package/main/ecrecover/mulPointEc.zkasm +311 -0
  80. package/main/ecrecover/sqFpEc.zkasm +38 -0
  81. package/main/ecrecover/sqrtFpEc.zkasm +70 -0
  82. package/main/end.zkasm +4 -0
  83. package/main/l2-tx-hash.zkasm +159 -0
  84. package/main/load-change-l2-block-utils.zkasm +11 -0
  85. package/main/load-change-l2-block.zkasm +28 -0
  86. package/main/load-tx-rlp-utils.zkasm +72 -0
  87. package/main/load-tx-rlp.zkasm +431 -0
  88. package/main/main.zkasm +237 -0
  89. package/main/map-opcodes.zkasm +274 -0
  90. package/main/modexp/array_lib/array_add_AGTB.zkasm +123 -0
  91. package/main/modexp/array_lib/array_add_short.zkasm +85 -0
  92. package/main/modexp/array_lib/array_div.zkasm +215 -0
  93. package/main/modexp/array_lib/array_div_long.zkasm +284 -0
  94. package/main/modexp/array_lib/array_div_short.zkasm +222 -0
  95. package/main/modexp/array_lib/array_mul.zkasm +97 -0
  96. package/main/modexp/array_lib/array_mul_long.zkasm +156 -0
  97. package/main/modexp/array_lib/array_mul_short.zkasm +127 -0
  98. package/main/modexp/array_lib/array_square.zkasm +246 -0
  99. package/main/modexp/array_lib/unused/array_add.zkasm +100 -0
  100. package/main/modexp/array_lib/unused/array_is_odd.zkasm +23 -0
  101. package/main/modexp/array_lib/unused/array_is_one.zkasm +33 -0
  102. package/main/modexp/array_lib/unused/array_is_zero.zkasm +34 -0
  103. package/main/modexp/array_lib/unused/array_sub_AGTB.zkasm +111 -0
  104. package/main/modexp/array_lib/unused/array_unshift.zkasm +37 -0
  105. package/main/modexp/array_lib/utils/array_compare.zkasm +82 -0
  106. package/main/modexp/array_lib/utils/array_trim.zkasm +49 -0
  107. package/main/modexp/constants.zkasm +5 -0
  108. package/main/modexp/modexp.zkasm +296 -0
  109. package/main/modexp/modexp_utils.zkasm +230 -0
  110. package/main/opcodes/arithmetic.zkasm +357 -0
  111. package/main/opcodes/block.zkasm +163 -0
  112. package/main/opcodes/calldata-returndata-code.zkasm +619 -0
  113. package/main/opcodes/comparison.zkasm +446 -0
  114. package/main/opcodes/context-information.zkasm +169 -0
  115. package/main/opcodes/create-terminate-context.zkasm +1011 -0
  116. package/main/opcodes/crypto.zkasm +96 -0
  117. package/main/opcodes/flow-control.zkasm +126 -0
  118. package/main/opcodes/logs.zkasm +193 -0
  119. package/main/opcodes/stack-operations.zkasm +658 -0
  120. package/main/opcodes/storage-memory.zkasm +313 -0
  121. package/main/pairings/BN254/addPointBN254.zkasm +245 -0
  122. package/main/pairings/BN254/ecAdd.zkasm +312 -0
  123. package/main/pairings/BN254/ecMul.zkasm +159 -0
  124. package/main/pairings/BN254/escalarMulBN254.zkasm +155 -0
  125. package/main/pairings/BN254/lineDiffPointsBN254.zkasm +83 -0
  126. package/main/pairings/BN254/lineSamePointsBN254.zkasm +96 -0
  127. package/main/pairings/FP12BN254/CYCLOFP12BN254/compressFp12BN254.zkasm +49 -0
  128. package/main/pairings/FP12BN254/CYCLOFP12BN254/decompressFp12BN254.zkasm +236 -0
  129. package/main/pairings/FP12BN254/CYCLOFP12BN254/expByXCompCycloFp12BN254.zkasm +444 -0
  130. package/main/pairings/FP12BN254/CYCLOFP12BN254/squareCompCycloFp12BN254.zkasm +212 -0
  131. package/main/pairings/FP12BN254/CYCLOFP12BN254/squareCycloFp12BN254.zkasm +228 -0
  132. package/main/pairings/FP12BN254/CYCLOFP12BN254/xBinDecompBN254.zkasm +64 -0
  133. package/main/pairings/FP12BN254/frob2Fp12BN254.zkasm +80 -0
  134. package/main/pairings/FP12BN254/frob3Fp12BN254.zkasm +96 -0
  135. package/main/pairings/FP12BN254/frobFp12BN254.zkasm +96 -0
  136. package/main/pairings/FP12BN254/inverseFp12BN254.zkasm +289 -0
  137. package/main/pairings/FP12BN254/mulFp12BN254.zkasm +408 -0
  138. package/main/pairings/FP12BN254/sparseMulAFp12BN254.zkasm +296 -0
  139. package/main/pairings/FP12BN254/sparseMulBFp12BN254.zkasm +291 -0
  140. package/main/pairings/FP12BN254/squareFp12BN254.zkasm +376 -0
  141. package/main/pairings/FP2BN254/addFp2BN254.zkasm +19 -0
  142. package/main/pairings/FP2BN254/escalarMulFp2BN254.zkasm +20 -0
  143. package/main/pairings/FP2BN254/invFp2BN254.zkasm +66 -0
  144. package/main/pairings/FP2BN254/mulFp2BN254.zkasm +19 -0
  145. package/main/pairings/FP2BN254/squareFp2BN254.zkasm +21 -0
  146. package/main/pairings/FP2BN254/subFp2BN254.zkasm +19 -0
  147. package/main/pairings/FP4BN254/squareFp4BN254.zkasm +76 -0
  148. package/main/pairings/FP6BN254/addFp6BN254.zkasm +59 -0
  149. package/main/pairings/FP6BN254/escalarMulFp6BN254.zkasm +51 -0
  150. package/main/pairings/FP6BN254/inverseFp6BN254.zkasm +208 -0
  151. package/main/pairings/FP6BN254/mulFp6BN254.zkasm +201 -0
  152. package/main/pairings/FP6BN254/sparseMulAFp6BN254.zkasm +65 -0
  153. package/main/pairings/FP6BN254/sparseMulBFp6BN254.zkasm +134 -0
  154. package/main/pairings/FP6BN254/sparseMulCFp6BN254.zkasm +128 -0
  155. package/main/pairings/FP6BN254/squareFp6BN254.zkasm +147 -0
  156. package/main/pairings/FP6BN254/subFp6BN254.zkasm +59 -0
  157. package/main/pairings/FPBN254/addFpBN254.zkasm +29 -0
  158. package/main/pairings/FPBN254/invFpBN254.zkasm +55 -0
  159. package/main/pairings/FPBN254/mulFpBN254.zkasm +29 -0
  160. package/main/pairings/FPBN254/reduceFpBN254.zkasm +25 -0
  161. package/main/pairings/FPBN254/squareFpBN254.zkasm +31 -0
  162. package/main/pairings/FPBN254/subFpBN254.zkasm +36 -0
  163. package/main/pairings/FRBN254/reduceFrBN254.zkasm +25 -0
  164. package/main/pairings/constants.zkasm +62 -0
  165. package/main/pairings/ecPairing.zkasm +244 -0
  166. package/main/pairings/finalExpBN254.zkasm +2095 -0
  167. package/main/pairings/halfPairingBN254.zkasm +428 -0
  168. package/main/pairings/loopLengthBN254.zkasm +75 -0
  169. package/main/pairings/millerLoopBN254.zkasm +741 -0
  170. package/main/pairings/pairingBN254.zkasm +481 -0
  171. package/main/pairings/unused/addFp12BN254.zkasm +130 -0
  172. package/main/pairings/unused/expByXCycloFp12BN254.zkasm +411 -0
  173. package/main/pairings/unused/expFp12BN254.zkasm +333 -0
  174. package/main/pairings/unused/subFp12BN254.zkasm +130 -0
  175. package/main/pairings/unused/xPseudoBinDecompBN254.zkasm +68 -0
  176. package/main/pairings/utilsTests/expCycloFp12BN254.zkasm +334 -0
  177. package/main/precompiled/end.zkasm +42 -0
  178. package/main/precompiled/identity.zkasm +99 -0
  179. package/main/precompiled/pre-ecAdd.zkasm +84 -0
  180. package/main/precompiled/pre-ecMul.zkasm +82 -0
  181. package/main/precompiled/pre-ecPairing.zkasm +72 -0
  182. package/main/precompiled/pre-ecrecover.zkasm +71 -0
  183. package/main/precompiled/pre-modexp.zkasm +367 -0
  184. package/main/precompiled/pre-sha2-256.zkasm +125 -0
  185. package/main/precompiled/revert-precompiled.zkasm +25 -0
  186. package/main/precompiled/selector.zkasm +77 -0
  187. package/main/process-change-l2-block.zkasm +147 -0
  188. package/main/process-tx.zkasm +587 -0
  189. package/main/tables/2-exp.zkasm +260 -0
  190. package/main/touched.zkasm +118 -0
  191. package/main/utils.zkasm +2335 -0
  192. package/main/vars.zkasm +117 -0
  193. package/package.json +62 -3
  194. package/test/bytes-length.zkasm +39 -0
  195. package/test/ecrecover.zkasm +538 -0
  196. package/test/lt4-test.zkasm +38 -0
  197. package/test/mstorex.zkasm +191 -0
  198. package/test/opcalldatacopy.ignore.zkasm +331 -0
  199. package/test/performance/read-push.zkasm +71 -0
  200. package/test/read-push.zkasm +304 -0
  201. package/test/testArrayArith.zkasm +1099 -0
  202. package/test/testArrayUtils.zkasm +335 -0
  203. package/test/testCycloFp12ArithBN254.zkasm +548 -0
  204. package/test/testEcAdd.zkasm +252 -0
  205. package/test/testEcMul.zkasm +231 -0
  206. package/test/testEcPairing.zkasm +436 -0
  207. package/test/testFinalExpBn254.zkasm +139 -0
  208. package/test/testFp12ArithBN254.zkasm +692 -0
  209. package/test/testFp2ArithBN254.zkasm +185 -0
  210. package/test/testFp4ArithBN254.zkasm +128 -0
  211. package/test/testFp6ArithBN254.zkasm +260 -0
  212. package/test/testFpArithBN254.zkasm +159 -0
  213. package/test/testFrArithBN254.zkasm +113 -0
  214. package/test/testHalfPairingBN254.zkasm +285 -0
  215. package/test/testModExp.zkasm +586 -0
  216. package/test/testModExpReturn.zkasm +81 -0
  217. package/test/testPairingBN254.zkasm +463 -0
  218. package/test/testPointArithBN254.zkasm +270 -0
  219. package/test/testSHA256.zkasm +27 -0
  220. package/test/touched-assert.zkasm +59 -0
  221. package/test/utils-expAD.zkasm +48 -0
  222. package/test/utils-getLenBytes.zkasm +36 -0
  223. package/tools/audit-tools/registry-op-checker.js +71 -0
  224. package/tools/get-not-used-labels.js +31 -0
  225. package/tools/helpers/helpers.js +47 -0
  226. package/tools/modexp-utils/README.md +5 -0
  227. package/tools/modexp-utils/modexp-test-gen.js +168 -0
  228. package/tools/modexp-utils/modexp-test-int.sage +37 -0
  229. package/tools/parallel-testing/checker.sh +6 -0
  230. package/tools/parallel-testing/gen-parallel-tests.js +78 -0
  231. package/tools/parallel-testing/parallel-tests-sample/sample.test.js +136 -0
  232. package/tools/run-tests-zkasm.js +83 -0
@@ -0,0 +1,304 @@
1
+ VAR GLOBAL test
2
+
3
+ ;; Comments 'readPush' function
4
+ ; @info Read bytes opcode PUSHX
5
+ ; @internalParam {numBlocks} 4 bytes blocks to read
6
+ ; @internalParam {leftBytes} remaining bytes
7
+ ; @in D => bytes to read
8
+ ; @out E => value read
9
+
10
+ start:
11
+ ; init vars
12
+ 0 => HASHPOS
13
+ 1 => D
14
+ $${var rounds}
15
+
16
+ ; add bytes one by one
17
+ 0x0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20n => A :CALL(initLoop)
18
+ 0x2122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40n => A :CALL(initLoop)
19
+ 0x4142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60n => A :CALL(initLoop)
20
+
21
+ ; close hash
22
+ HASHPOS :HASHPLEN(0)
23
+ $ :HASHPDIGEST(0)
24
+ 0 :MSTORE(contractHashId)
25
+
26
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27
+ ;;;;; INIT TESTS ;;;;;
28
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
+ ; log init counters
30
+ CNT_BINARY => A
31
+ ; ${log(A, binaryCouners)} ; result: 1
32
+ STEP => A
33
+ ; ${log(A, stepCounter)} ; result: 202
34
+
35
+ ;; Start test PUSH1
36
+ ; PUSH1 reading 1 byte at position 0 in the bytecode
37
+ 0 => PC
38
+ 1 => D,E :CALL(readPush)
39
+ 0x01 => A
40
+ E :ASSERT
41
+
42
+ ; PUSH1 reading 1 byte at position 20 in the bytecode
43
+ 20 => PC
44
+ 1 => D,E :CALL(readPush)
45
+ 0x15 => A
46
+ E :ASSERT
47
+
48
+ ; PUSH1 reading 1 byte at position 31 in the bytecode
49
+ 31 => PC
50
+ 1 => D,E :CALL(readPush)
51
+ 0x20 => A
52
+ E :ASSERT
53
+
54
+ ; PUSH1 reading 1 byte at position 32 in the bytecode
55
+ 32 => PC
56
+ 1 => D,E :CALL(readPush)
57
+ 0x21 => A
58
+ E :ASSERT
59
+
60
+ ; PUSH1 reading 1 byte at position 33 in the bytecode
61
+ 33 => PC
62
+ 1 => D,E :CALL(readPush)
63
+ 0x22 => A
64
+ E :ASSERT
65
+
66
+ ;; Start test PUSH2
67
+ ; PUSH2 reading 2 byte at position 4 in the bytecode
68
+ 4 => PC
69
+ 2 => D,E :CALL(readPush)
70
+ 0x0506 => A
71
+ E :ASSERT
72
+
73
+ ; PUSH2 reading 2 byte at position 34 in the bytecode
74
+ 34 => PC
75
+ 2 => D,E :CALL(readPush)
76
+ 0x2324 => A
77
+ E :ASSERT
78
+
79
+ ;; Start test PUSH3
80
+ ; PUSH3 reading 3 byte at position 60 in the bytecode
81
+ 60 => PC
82
+ 3 => D,E :CALL(readPush)
83
+ 0x3d3e3f => A
84
+ E :ASSERT
85
+
86
+ ;; Start test PUSH4
87
+ ; PUSH4 reading 4 byte at position 72 in the bytecode
88
+ 72 => PC
89
+ 4 => D,E :CALL(readPush)
90
+ 0x494a4b4c => A
91
+ E :ASSERT
92
+
93
+ ;; Start test PUSH5
94
+ ; PUSH5 reading 5 byte at position 42 in the bytecode
95
+ 42 => PC
96
+ 5 => D,E :CALL(readPush)
97
+ 0x2B2C2D2E2Fn => A
98
+ E :ASSERT
99
+
100
+ ;; Start test PUSH6
101
+ ; PUSH6 reading 6 byte at position 42 in the bytecode
102
+ 42 => PC
103
+ 6 => D,E :CALL(readPush)
104
+ 0x2B2C2D2E2F30n => A
105
+ E :ASSERT
106
+
107
+ ;; Start test PUSH7
108
+ ; PUSH7 reading 7 byte at position 42 in the bytecode
109
+ 42 => PC
110
+ 7 => D,E :CALL(readPush)
111
+ 0x2B2C2D2E2F3031n => A
112
+ E :ASSERT
113
+
114
+ ;; Start test PUSH8
115
+ ; PUSH8 reading 8 byte at position 42 in the bytecode
116
+ 42 => PC
117
+ 8 => D,E :CALL(readPush)
118
+ 0x2B2C2D2E2F303132n => A
119
+ E :ASSERT
120
+
121
+ ;; Start test PUSH9
122
+ ; PUSH9 reading 9 byte at position 42 in the bytecode
123
+ 42 => PC
124
+ 9 => D,E :CALL(readPush)
125
+ 0x2B2C2D2E2F30313233n => A
126
+ E :ASSERT
127
+
128
+ ;; Start test PUSH10
129
+ ; PUSH10 reading 10 byte at position 42 in the bytecode
130
+ 42 => PC
131
+ 10 => D,E :CALL(readPush)
132
+ 0x2B2C2D2E2F3031323334n => A
133
+ E :ASSERT
134
+
135
+ ;; Start test PUSH11
136
+ ; PUSH11 reading 11 byte at position 42 in the bytecode
137
+ 42 => PC
138
+ 11 => D,E :CALL(readPush)
139
+ 0x2B2C2D2E2F303132333435n => A
140
+ E :ASSERT
141
+
142
+ ;; Start test PUSH12
143
+ ; PUSH12 reading 12 byte at position 42 in the bytecode
144
+ 42 => PC
145
+ 12 => D,E :CALL(readPush)
146
+ 0x2B2C2D2E2F30313233343536n => A
147
+ E :ASSERT
148
+
149
+ ;; Start test PUSH13
150
+ ; PUSH13 reading 13 byte at position 42 in the bytecode
151
+ 42 => PC
152
+ 13 => D,E :CALL(readPush)
153
+ 0x2B2C2D2E2F3031323334353637n => A
154
+ E :ASSERT
155
+
156
+ ;; Start test PUSH14
157
+ ; PUSH14 reading 14 byte at position 42 in the bytecode
158
+ 42 => PC
159
+ 14 => D,E :CALL(readPush)
160
+ 0x2B2C2D2E2F303132333435363738n => A
161
+ E :ASSERT
162
+
163
+ ;; Start test PUSH15
164
+ ; PUSH15 reading 15 byte at position 42 in the bytecode
165
+ 42 => PC
166
+ 15 => D,E :CALL(readPush)
167
+ 0x2B2C2D2E2F30313233343536373839n => A
168
+ E :ASSERT
169
+
170
+ ;; Start test PUSH16
171
+ ; PUSH16 reading 16 byte at position 42 in the bytecode
172
+ 42 => PC
173
+ 16 => D,E :CALL(readPush)
174
+ 0x2B2C2D2E2F303132333435363738393An => A
175
+ E :ASSERT
176
+
177
+ ;; Start test PUSH17
178
+ ; PUSH17 reading 17 byte at position 42 in the bytecode
179
+ 42 => PC
180
+ 17 => D,E :CALL(readPush)
181
+ 0x2B2C2D2E2F303132333435363738393A3Bn => A
182
+ E :ASSERT
183
+
184
+ ;; Start test PUSH18
185
+ ; PUSH18 reading 18 byte at position 42 in the bytecode
186
+ 42 => PC
187
+ 18 => D,E :CALL(readPush)
188
+ 0x2B2C2D2E2F303132333435363738393A3B3Cn => A
189
+ E :ASSERT
190
+
191
+ ;; Start test PUSH19
192
+ ; PUSH19 reading 19 byte at position 42 in the bytecode
193
+ 42 => PC
194
+ 19 => D,E :CALL(readPush)
195
+ 0x2B2C2D2E2F303132333435363738393A3B3C3Dn => A
196
+ E :ASSERT
197
+
198
+ ;; Start test PUSH20
199
+ ; PUSH20 reading 20 byte at position 42 in the bytecode
200
+ 42 => PC
201
+ 20 => D,E :CALL(readPush)
202
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3En => A
203
+ E :ASSERT
204
+
205
+ ;; Start test PUSH21
206
+ ; PUSH21 reading 21 byte at position 42 in the bytecode
207
+ 42 => PC
208
+ 21 => D,E :CALL(readPush)
209
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3Fn => A
210
+ E :ASSERT
211
+
212
+ ;; Start test PUSH22
213
+ ; PUSH22 reading 22 byte at position 42 in the bytecode
214
+ 42 => PC
215
+ 22 => D,E :CALL(readPush)
216
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40n => A
217
+ E :ASSERT
218
+
219
+ ;; Start test PUSH23
220
+ ; PUSH23 reading 23 byte at position 42 in the bytecode
221
+ 42 => PC
222
+ 23 => D,E :CALL(readPush)
223
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041n => A
224
+ E :ASSERT
225
+
226
+ ;; Start test PUSH24
227
+ ; PUSH24 reading 24 byte at position 42 in the bytecode
228
+ 42 => PC
229
+ 24 => D,E :CALL(readPush)
230
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142n => A
231
+ E :ASSERT
232
+
233
+ ;; Start test PUSH25
234
+ ; PUSH25 reading 25 byte at position 42 in the bytecode
235
+ 42 => PC
236
+ 25 => D,E :CALL(readPush)
237
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243n => A
238
+ E :ASSERT
239
+
240
+ ;; Start test PUSH26
241
+ ; PUSH26 reading 26 byte at position 42 in the bytecode
242
+ 42 => PC
243
+ 26 => D,E :CALL(readPush)
244
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344n => A
245
+ E :ASSERT
246
+
247
+ ;; Start test PUSH27
248
+ ; PUSH27 reading 27 byte at position 42 in the bytecode
249
+ 42 => PC
250
+ 27 => D,E :CALL(readPush)
251
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445n => A
252
+ E :ASSERT
253
+
254
+ ;; Start test PUSH28
255
+ ; PUSH28 reading 28 byte at position 42 in the bytecode
256
+ 42 => PC
257
+ 28 => D,E :CALL(readPush)
258
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444546n => A
259
+ E :ASSERT
260
+
261
+ ;; Start test PUSH29
262
+ ; PUSH29 reading 29 byte at position 42 in the bytecode
263
+ 42 => PC
264
+ 29 => D,E :CALL(readPush)
265
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454647n => A
266
+ E :ASSERT
267
+
268
+ ;; Start test PUSH30
269
+ ; PUSH30 reading 30 byte at position 42 in the bytecode
270
+ 42 => PC
271
+ 30 => D,E :CALL(readPush)
272
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748n => A
273
+ E :ASSERT
274
+
275
+ ;; Start test PUSH31
276
+ ; PUSH31 reading 31 byte at position 42 in the bytecode
277
+ 42 => PC
278
+ 31 => D,E :CALL(readPush)
279
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444546474849n => A
280
+ E :ASSERT
281
+
282
+ ;; Start test PUSH32
283
+ ; PUSH32 reading 32 byte at position 42 in the bytecode
284
+ 42 => PC
285
+ 32 => D,E :CALL(readPush)
286
+ 0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494An => A
287
+ E :ASSERT
288
+
289
+ 0 => A,B,C,D,E,CTX, SP, PC, GAS, SR, HASHPOS, RR ; Set all registers to 0
290
+ :JMP(finalizeExecution)
291
+
292
+ initLoop:
293
+ $${rounds = 32}
294
+ 0 => B ; to allow $$
295
+
296
+ loopAdd32Byte:
297
+ $${rounds = rounds - 1}
298
+ ${(A >> (rounds * 8)) & 0xFF} => E :HASHP1(0)
299
+ ${rounds} :JMPZ(endLoop, loopAdd32Byte)
300
+
301
+ endLoop:
302
+ :RETURN
303
+
304
+ INCLUDE "../main/main.zkasm"