├── .gitignore ├── .gitmodules ├── foundry.toml ├── script └── Counter.s.sol ├── .github └── workflows │ └── test.yml ├── README.md ├── src ├── CommitRevealScheme.sol └── MiMCSponge.huff └── test └── SomeContract.t.sol /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiler files 2 | cache/ 3 | out/ 4 | 5 | # Ignores development broadcast logs 6 | !/broadcast 7 | /broadcast/*/31337/ 8 | /broadcast/**/dry-run/ 9 | 10 | # Docs 11 | docs/ 12 | 13 | # Dotenv file 14 | .env 15 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/forge-std"] 2 | path = lib/forge-std 3 | url = https://github.com/foundry-rs/forge-std 4 | [submodule "lib/foundry-huff"] 5 | path = lib/foundry-huff 6 | url = https://github.com/huff-language/foundry-huff 7 | -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = "src" 3 | out = "out" 4 | libs = ["lib"] 5 | bytecode_hash = "none" 6 | cbor_metadata = false 7 | ffi = true 8 | evm_version = "shanghai" 9 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 10 | -------------------------------------------------------------------------------- /script/Counter.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.13; 3 | 4 | import {Script, console2} from "forge-std/Script.sol"; 5 | 6 | contract CounterScript is Script { 7 | function setUp() public {} 8 | 9 | function run() public { 10 | vm.broadcast(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: test 2 | 3 | on: workflow_dispatch 4 | 5 | env: 6 | FOUNDRY_PROFILE: ci 7 | 8 | jobs: 9 | check: 10 | strategy: 11 | fail-fast: true 12 | 13 | name: Foundry project 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v3 17 | with: 18 | submodules: recursive 19 | 20 | - name: Install Foundry 21 | uses: foundry-rs/foundry-toolchain@v1 22 | with: 23 | version: nightly 24 | 25 | - name: Run Forge build 26 | run: | 27 | forge --version 28 | forge build --sizes 29 | id: build 30 | 31 | - name: Run Forge tests 32 | run: | 33 | forge test -vvv 34 | id: test 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Foundry 2 | 3 | **Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** 4 | 5 | Foundry consists of: 6 | 7 | - **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). 8 | - **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. 9 | - **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. 10 | - **Chisel**: Fast, utilitarian, and verbose solidity REPL. 11 | 12 | ## Documentation 13 | 14 | https://book.getfoundry.sh/ 15 | 16 | ## Usage 17 | 18 | ### Build 19 | 20 | ```shell 21 | $ forge build 22 | ``` 23 | 24 | ### Test 25 | 26 | ```shell 27 | $ forge test 28 | ``` 29 | 30 | ### Format 31 | 32 | ```shell 33 | $ forge fmt 34 | ``` 35 | 36 | ### Gas Snapshots 37 | 38 | ```shell 39 | $ forge snapshot 40 | ``` 41 | 42 | ### Anvil 43 | 44 | ```shell 45 | $ anvil 46 | ``` 47 | 48 | ### Deploy 49 | 50 | ```shell 51 | $ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key 52 | ``` 53 | 54 | ### Cast 55 | 56 | ```shell 57 | $ cast 58 | ``` 59 | 60 | ### Help 61 | 62 | ```shell 63 | $ forge --help 64 | $ anvil --help 65 | $ cast --help 66 | ``` 67 | -------------------------------------------------------------------------------- /src/CommitRevealScheme.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.13; 3 | 4 | error TooEarly(); 5 | error Mismatch(); 6 | error ProofAlreadySubmitted(); 7 | error InvalidProof(); 8 | error TransferFailed(); 9 | 10 | contract CommitRevealScheme { 11 | uint256 constant MiMCSpongeHasherOffset = 645; // replace this with whatever `console2.logUint(solidityBytecode.length);` in the test file logs out 12 | 13 | constructor(bytes memory solidityBytecode, bytes memory huffBytecode) payable { 14 | // concat the solidity and huff runtime code together 15 | bytes memory fullRuntimeCode = bytes.concat(solidityBytecode, huffBytecode); 16 | 17 | // return the concatenated runtime code as the runtime code 18 | assembly { 19 | return(add(0x20, fullRuntimeCode), mload(fullRuntimeCode)) 20 | } 21 | } 22 | 23 | struct Hash { 24 | bytes32 first; 25 | bytes32 second; 26 | } 27 | 28 | mapping(uint256 => bool) proofSubmitted; 29 | mapping(address => Hash) commitments; 30 | mapping(address => uint256) proofWait; 31 | 32 | function register(Hash calldata _commitment) external { 33 | commitments[msg.sender] = _commitment; 34 | proofWait[msg.sender] = block.timestamp + 120; 35 | } 36 | 37 | function submitProof(bytes32 _proof, bytes32 _randomSalt) external { 38 | if (!(block.timestamp > proofWait[msg.sender])) revert TooEarly(); 39 | 40 | function() internal c; 41 | function() internal d = submitProof_inner1; 42 | assembly { 43 | // store the parameters in memory 44 | mstore(0x00, _proof) 45 | mstore(0x20, _randomSalt) 46 | 47 | // store return jumpdest in memory 48 | // Note: If your code has or uses uninitialized dynamic memory variables use the current free memory pointer instead 49 | mstore(0x60, d) 50 | 51 | // assign c with jumpdest for execution 52 | c := MiMCSpongeHasherOffset 53 | } 54 | 55 | c(); 56 | } 57 | 58 | function submitProof_inner1() internal { 59 | Hash memory _commitment; 60 | uint256 _proof; 61 | uint256 _randomSalt; 62 | 63 | assembly { 64 | _proof := calldataload(0x04) 65 | _randomSalt := calldataload(0x24) 66 | 67 | // copy _commitment from mem[0x00:0x40] to [fmp:(fmp + 0x40)] since solidity will overwrite it when calculating the mapping slot below 68 | let fmp := mload(0x40) 69 | mstore(0x40, add(fmp, 0x40)) 70 | 71 | mstore(fmp, mload(0x00)) 72 | mstore(add(fmp, 0x20), mload(0x20)) 73 | _commitment := fmp 74 | } 75 | 76 | if (commitments[msg.sender].first != _commitment.first || commitments[msg.sender].second != _commitment.second) 77 | { 78 | revert Mismatch(); 79 | } 80 | if (proofSubmitted[_proof]) revert ProofAlreadySubmitted(); 81 | 82 | proofSubmitted[_proof] = true; 83 | (bool success,) = payable(msg.sender).call{value: 1 ether}(""); 84 | if (!success) revert TransferFailed(); 85 | 86 | assembly { 87 | return(0x00, 0x00) 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /test/SomeContract.t.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.13; 3 | 4 | import {Test, console2} from "forge-std/Test.sol"; 5 | import {CommitRevealScheme} from "../src/CommitRevealScheme.sol"; 6 | import {HuffDeployer} from "lib/foundry-huff/src/HuffDeployer.sol"; 7 | 8 | interface IHasher { 9 | function MiMCSponge(uint256 in_xL, uint256 in_xR) external pure returns (bytes32 xL, bytes32 xR); 10 | } 11 | 12 | contract CommitRevealSchemeTest is Test { 13 | IHasher deployedMiMCSpongeAddress = IHasher(0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe); 14 | 15 | function setUp() public { 16 | vm.etch( 17 | address(deployedMiMCSpongeAddress), 18 | hex"606460006000377c01000000000000000000000000000000000000000000000000000000006000510463f47d33b5146200003557fe5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016004518160245181838180828009800909089082827f0fbe43c36a80e36d7c7c584d4f8f3759fb51f0d66065d8a227b688d12488c5d408839081808280098009098391089082827f9c48cd3e00a6195a253fc009e60f249456f802ff9baf6549210d201321efc1cc08839081808280098009098391089082827f27c0849dba2643077c13eb42ffb97663cdcecd669bf10f756be30bab71b86cf808839081808280098009098391089082827f2bf76744736132e5c68f7dfdd5b792681d415098554fd8280f00d11b172b80d208839081808280098009098391089082827f33133eb4a1a1ab45037c8bdf9adbb2999baf06f20a9c95180dc4ccdcbec5856808839081808280098009098391089082827f588bb66012356dbc9b059ef1d792b563d6c18624dddecc3fe4583fd3551e9b3008839081808280098009098391089082827f71bc3e244e1b92911fe7f53cf523e491fd6ff487d59337a1d92f92668c4f4c3608839081808280098009098391089082827fd1808e2b039fd010c489768f78d7499938ccc0858f3295151787cfe8b7e40be108839081808280098009098391089082827f76978af3ded437cf41b3faa40cd6bcfce94f27f4abcc3ed34be19abd2c4537d008839081808280098009098391089082827f0a9baee798a320b0ca5b1cf888386d1dc12c13b38e10225aa4e9f03069a099f508839081808280098009098391089082827fb79dbf6050a03b16c3ade8d77e11c767d2251af9cdbd6cdf9a8a0ee921b32c7908839081808280098009098391089082827fa74bbcf5067f067faec2cce4b98d130d7927456f5c5f6c00e0f5406a24eb8b1908839081808280098009098391089082827fab7ab080d4c4018bda6ecc8bd67468bc4619ba12f25b0da879a639c758c8855d08839081808280098009098391089082827fe6a5b797c2bba7e9a873b37f5c41adc47765e9be4a1f0e0650e6a24ad226876308839081808280098009098391089082827f6270ae87cf3d82cf9c0b5f428466c429d7b7cbe234cecff39969171af006016c08839081808280098009098391089082827f9951c9f6e76d636b52f7600d979ca9f3b643dfbe9551c83b31542830321b2a6608839081808280098009098391089082827f4119469e44229cc40c4ff555a2b6f6b39961088e741e3c20a3c9b47f130c555008839081808280098009098391089082827f5d795e02bbaf90ff1f384741e5f18f8b644a0080441315d0e5b3c8123452a0b008839081808280098009098391089082827f281e90a515e6409e9177b4f297f8049ce3d4c3659423c48b3fd64e83596ff10108839081808280098009098391089082827f424185c60a21e84970f7d32cacaa2725aa8a844caea7ed760d2b965af1bf3e7d08839081808280098009098391089082827fd96fcbc3960614ea887da609187a5dada2e1b829f23309a6375212cea1f25c0908839081808280098009098391089082827ffde84026d7c294300af18f7712fc3662f43387ae8cf7fdda1f9a810f4b24bcf208839081808280098009098391089082827f3a9d568575846aa6b8a890b3c237fd0447426db878e6e25333b8eb9b386195c108839081808280098009098391089082827f55a2aa32c84a4cae196dd4094b685dd11757470a3be094d98eea73f02452aa3608839081808280098009098391089082827fcbc9481380978d29ebc5b0a8d4481cd2ef654ee800907adb3d38dc2fd9265fab08839081808280098009098391089082827f24e53af71ef06bacb76d3294c11223911e9d177ff09b7009febc484add0beb7408839081808280098009098391089082827fdbd44e16108225766dac3e5fe7acbe9df519bbba97380e5e9437a90658f2139308839081808280098009098391089082827fc6f434863c79013bb2c202331e04bccea2251c1ff6f191dc2afa23e6f6d28e4e08839081808280098009098391089082827f3490eeb39a733c0e8062d87f981ae65a8fccf25c448f4455d27db3915351b06608839081808280098009098391089082827f30b89830ff7ade3558a5361a24869130ce1fcce97211602962e34859525dac4f08839081808280098009098391089082827f29bae21b579d080a75c1694da628d0ecfd83efc9c8468704f410300062f64ca908839081808280098009098391089082827fe326499de0476e719915dd1c661ef4550723d4aee9ee9af224edd208790fce4408839081808280098009098391089082827f8c45208b8baa6f473821415957088c0b7e72a465f460b09ece2d270aee2f184108839081808280098009098391089082827ffe2ad454f451348f26ce2cc7e7914aef3eb96e8f89a4619a1dc7d11f8401c35208839081808280098009098391089082827f0929db368ef2af2d29bca38845325b0b7a820a4889e44b5829bbe1ed47fd4d5208839081808280098009098391089082827f16531d424b0cbaf9abbf2d2acde698462ea4555bf32ccf1bbd26697e905066f608839081808280098009098391089082827ff5c30d247f045ff6d05cf0dd0a49c9823e7a24b0d751d3c721353b96f29d76f608839081808280098009098391089082827f6eb7a3614056c230c6f171370fdd9d1048bb00b2cdd1b2721d11bdda5023f48608839081808280098009098391089082827f0ee9c4621642a272f710908707557498d25a6fdd51866da5d9f0d205355a618908839081808280098009098391089082827f78ca1cb1c7f6c6894d1cf94f327b8763be173151b6b06f99dfc6a944bb5a72f008839081808280098009098391089082827f5d24d0b1b304d05311ce0f274b0d93746a4860ed5cdd8d4348de557ea7a5ee7a08839081808280098009098391089082827f77423dabd1a3cddc8691438fc5891e3fd49ac0f3e21aaf249791bfde1303d2f308839081808280098009098391089082827f0642e8800a48cc04c0168232c6f542396597a67cf395ad622d947e98bb68697a08839081808280098009098391089082827fc1e7d3cbbc4c35b7490647d8402e56d334336943bda91fe2d34ca9727c0e3df508839081808280098009098391089082827f8d6fb1730335204f38f85e408ac861e76f24349ab6ee0469c22e19350bb24fe108839081808280098009098391089082827f67d0faf5f0db32a1b60e13dc4914246b9edac7990fb4990b19aa86815586441a08839081808280098009098391089082827f2605b9b909ded1b04971eae979027c4e0de57f3b6a60d5ed58aba619c34749ce08839081808280098009098391089082827fd276890b2c205db85f000d1f5111ed8f177e279cae3e52862780f04e846228d008839081808280098009098391089082827f2ac5905f9450a21ef6905ed5951a91b3730e3a2e2d62b50bdeb810015d50376b08839081808280098009098391089082827f7a366839f0291ca54da674ac3f0e1e9aa8b687ba533926cb40268039e57b967a08839081808280098009098391089082827f67ab0f3466989c3dbbe209c37ec272ba83984ba6e445be6d472b63e3ca7270e308839081808280098009098391089082827f0e786007d0ce7e28a90e31d3263887d40c556dec88fcb8b56bc9e9c05ecc0c2908839081808280098009098391089082827f0b814ed99bd00eca389b0022663dbfddfbfa15e321c19abcf1eaf9556075fb6808839081808280098009098391089082827f65c0321ba26fcee4fdc35b4999b78ceb54dcaf9fec2e3bdea98e9f82925c093208839081808280098009098391089082827fab2d2a929601f9c3520e0b14aaa6ba9f1e79821a5b768919670a4ea970722bf408839081808280098009098391089082827fcdd2e0744d4af1a81918de69ec12128a5871367303ff83ed764771cbbdf6502308839081808280098009098391089082827f74527d0c0868f2ec628086b874fa66a7347d3d3b918d2e07a5f33e1067e8ac5808839081808280098009098391089082827f1c6bf6ac0314caead23e357bfcbbaa17d670672ae3a475f80934c716f10aca2508839081808280098009098391089082827f3c4007e286f8dc7efd5d0eeb0e95d7aa6589361d128a0cccb17b554c851a643208839081808280098009098391089082827fae468a86a5a7db7c763a053eb09ac1a02809ce095258c88101ee319e12b0697e08839081808280098009098391089082827f9333e3d052b7c77fcac1eb366f610f6f97852242b1317a87b80f3bbc5c8c2d1d08839081808280098009098391089082827f52ec1d675cf5353153f6b628414783ca6b7fc0fe01948ca206daad712296e39508839081808280098009098391089082827f13ceeeb301572b4991076750e11ea7e7fcbfee454d90dc1763989004a1894f9308839081808280098009098391089082827f8505737e7e94939a08d8cda10b6fbbbf879b2141ae7eabc30fcd22405135fe6408839081808280098009098391089082827f6127db7ac5200a212092b66ec2bfc63653f4dc8ac66c76008fef885258a258b508839081808280098009098391089082827f12692a7d808f44e31d628dbcfea377eb073fb918d7beb8136ea47f8cf094c88c08839081808280098009098391089082827f260e384b1268e3a347c91d6987fd280fa0a275541a7c5be34bf126af35c962e008839081808280098009098391089082827fd88c3b01966d90e713aee8d482ceaa6925311d2342e1a5aca4fcd2f44b6daddc08839081808280098009098391089082827fb87e868affd91b078a87fa75ac9332a6cf23587d94e20c3262db5e91f30bf04b08839081808280098009098391089082827fb5ba5f8acad1a950a3bbf2201055cd3ea27056c0c53f0c4c97f33cda8dbfe90908839081808280098009098391089082827f59ca814b49e00d7b3118c53a2986ded128584acd7428735e08ade6661c457f7508839081808280098009098391089082827f0fc4c0bea813a223fd510c07f7bbe337badd4bcf28649a0d378970c2a15b3aa508839081808280098009098391089082827f0053f1ea6dd60e7a6db09a00be77549ff3d4ee3737be7fb42052ae1321f667c308839081808280098009098391089082827feb937077bb10c8fe38716d4e38edc1f9e7b18c6414fef85fe7e9c5567baa4a0408839081808280098009098391089082827fbacb14c0f1508d828f7fd048d716b8044aec7f0fb48e85e717bf532db972520708839081808280098009098391089082827f4ca0abb8beb7cff572a0c1e6f58e080e1bb243d497a3e74538442a4555ad40be08839081808280098009098391089082827fda9eefd411e590d7e44592cce298af87b2c62aa3cc8bb137aa99ca8d4aa551b508839081808280098009098391089082827f153dae43cef763e7a2fc9846f09a2973b0ad9c35894c220699bcc2954501c6bd08839081808280098009098391089082827fd4ed2a09375813b4fb504c7a9ba13110bdd8549a47349db82c15a434c090e87b08839081808280098009098391089082827f0063a5c4c9c12dcf4bae72c69f3a225664469503d61d9eae5d9553bfb006095b08839081808280098009098391089082827fdc8a4d35ad28e59dd3713b45985cd3b70e37ccc2be42086f1ea078fe2dc9d82d08839081808280098009098391089082827f486ba219308f0c847b22fcb4449f8855192536c01b8057904e81c1c7814f483b08839081808280098009098391089082827f34d9604140a1ac9fdb204285b9fe1b303c281af2fc5fb362f6577282b423bcf308839081808280098009098391089082827fc1681959ec4bc3656911db2b2f56aa4db709c26f1a0a25c879286e37f437465d08839081808280098009098391089082827ffcd849f3b5f9e4368af75619fb27f2e335adbb9b44988f17c4d389fa751ad47a08839081808280098009098391089082827ff5f7fc22ad64c8e7c1e005110e13f4f1c6b1f8f8cc59000db0e3bb38f99554a508839081808280098009098391089082827fa9133b8a20fbae4633ec5f82cb47a38ae1877d12d1febb23982c7c808aa5317508839081808280098009098391089082827ff4827c5c7b61141cc31b75984bb3ed16ed579e5b72e32a1289b63ab55eaf8c1208839081808280098009098391089082827fcca361819ffefe3e50fe34c91a322c9405f4e5a168c1fc0a0a1883993e32c9f408839081808280098009098391089082827f6656088842bfc9e325a532784d3362cecfa86f9c7b208a6b499836ebe48ff15708839081808280098009098391089082827f00129c7cd00e42ed05a37dbceb80d47b65e1d750ef2148278a54723fdf42c4cc08839081808280098009098391089082827fa85b235631b786f85cd46f7768f6c71ae004ad267ae59bdf929ada149b19588808839081808280098009098391089082827f34df65a82686be09c5b237911abf237a9887c1a418f279ac79b446d7d311f5ea08839081808280098009098391089082827f815a850c3989df9ca6231e0bdd9916fc0e076f2c6c7f0f260a846d0179f9c32d08839081808280098009098391089082827f50fb0940848a67aee83d348421fadd79aefc7a2adabeec6e64904ebe1bf63e7d08839081808280098009098391089082827fbab63a16273599f8b66895461e62a19ff0d103693be771d93e3691bba89cdd8d08839081808280098009098391089082827f6931a091756e0bc709ebecfffba5038634c5b3d5d0c5876dd72aac67452db8a208839081808280098009098391089082827f55559b8bb79db8809c46ee627f1b5ce1d8e6d89bf94a9987a1407759d1ba896308839081808280098009098391089082827fa9a1a11b2979018cb155914d09f1df19b7ffec241e8b2487b6f6272a56a44a0a08839081808280098009098391089082827ff83293400e7bccea4bb86dcb0d5ca57fa2466e13a572d7d3531c6fa491cb0f1b08839081808280098009098391089082827fb7cb5742b6bc5339624d3568a33c21f31b877f8396972582028da999abf249f208839081808280098009098391089082827ff56efb400f8500b5c5bf811c65c86c7ed2e965f14f1a69bca436c0c60b79f46508839081808280098009098391089082827fd7c4427998d9c440f849dcd75b7157996eaad1b9a1d58cc2441931300e26eb2208839081808280098009098391089082827fca5ed18ad53e33fdc3ae8cf353ff3f6dd315f60060442b74f6b614b24ebd4cc308839081808280098009098391089082827f9ad3e9376c97b194a0fbf43e22a3616981d777365c765ead09a1d033fdf536b708839081808280098009098391089082827fc6daeff5769a06b26fe3b8fef30df07b1387373a7814cef364fe1d6059eaf54a08839081808280098009098391089082827fc20a78398345c6b8cf439643dab96223bf879c302648293eaf496fee5c978c6608839081808280098009098391089082827f589ca65b6cf0e90653c06dddc057dc61ba2839974569051c98b43e8618716efb08839081808280098009098391089082827f83064161f127d8c59fc73625957e21630dc6dc99e5443f6ce37ecd6bf28e69b708839081808280098009098391089082827f46d0ba662b50100b9a3af52052f68932feec1d12290b2033c4f49148893d8ba308839081808280098009098391089082827f18dd55b4a83a53f2ee578eb3e6d26f594824d44670fc3f4de80642344d15c09a08839081808280098009098391089082827f9fb5b594f48bc58b345ab90ded705920a7274b8e070eee8ce8cf90c72c3604b608839081808280098009098391089082827f1901d8f4f2c8449128e00663978f2050f2eb1cd6acb60d9d09c57c5d46ee54fe08839081808280098009098391089082827f5ec56789beab24ef7ee32f594d5fc561ec59dfeb93606dc7dcc6fe65133a7db408839081808280098009098391089082827f01c0b2cbe4fa9877a3d08eb67c510e8630da0a8beda94a6d9283e6f70d268bc508839081808280098009098391089082827f0b1d85acd9031a9107350eed946a25734e974799c5ba7cff13b15a5a623a25f008839081808280098009098391089082827f204497d1d359552905a2fe655f3d6f94926ea92d12cdaa6556ec26362f239f6408839081808280098009098391089082827fe075f7edc6631a8d7ffe33019f44fc91f286236d5a5f90f16de4791b72a2a5f008839081808280098009098391089082827f243f46e353354256ab8fe0ca4e9230dfc330bc163e602dfeaf307c1d1a7264b908839081808280098009098391089082827fd448ae5e09625fa1fcfd732fc9cd8f06e4c33b81f0a9240c83da56f41e9ecceb08839081808280098009098391089082827f2f312eef69a33d9fa753c08840275692a03432b3e6da67f9c59b9f9f4971cd5608839081808280098009098391089082827f5f333996af231bd5a293137da91801e191a6f24eb532ad1a7e6e9a2ad0efbc0008839081808280098009098391089082827fa8f771e0383a832dc8e2eaa8efabda300947acaf0684fabddf8b4abb0abd8a6208839081808280098009098391089082827f9ff0b3d7a4643596f651b70c1963cc4fa6c46018d78f05cb2c5f187e25df83a908839081808280098009098391089082827f9c373b704838325648273734dcdf962d7c156f431f70380ba4855832c4a238b808839081808280098009098391089082827fea2afa02604b8afeeb570f48a0e97a5e6bfe9613394b9a6b0026ecd6cec8c33a08839081808280098009098391089082827f68892258cd8eb43b71caa6d6837ec9959bfdfd72f25c9005ebaffc4011f8a7bf08839081808280098009098391089082827ff2824f561f6f82e3c1232836b0d268fa3b1b5489edd39a5fe1503bfc7ca91f4908839081808280098009098391089082827f164eda75fda2861f9d812f24e37ac938844fbe383c243b32b9f66ae2e76be71908839081808280098009098391089082827ff0a6fc431f5bf0dd1cca93b8b65b3f72c91f0693e2c74be9243b15abb31afcc008839081808280098009098391089082827fe68db66ba891ef0cd527f09ec6fff3ec0a269cf3d891a35ec13c902f70334b4f08839081808280098009098391089082827f3a44a5b102f7883a2b8630a3cae6e6db2e6e483bb7cfeb3492cbd91793ef598e08839081808280098009098391089082827f43939fe8ef789acb33cbf129ba8a3aa1bd61510a178022a05177c9c5a1c59bf108839081808280098009098391089082827f936fe3b66dfda1bc5a7aae241b4db442858bd720c1d579c0c869f273cd55d77408839081808280098009098391089082827f3490fcaa8ffa37f35dc67ae006e81352c7103945417b8e4b142afcaefa344b8508839081808280098009098391089082827fcae66096cff344caca53ffe0e58aafeb468bd174f00d8abc425b2099c088187408839081808280098009098391089082827fc7d05783a41bc14f3c9a45384b6d5e2547c5b6a224c8316910b208f2718a70ab08839081808280098009098391089082827f5ac6b9ba94040d5692b865b6677b60ef3201b5c2121699f70beb9f9b2528a02608839081808280098009098391089082827fa902a3d4d9ecbfb9b2c76fddf780554bf93cad97b244e805d3adb94e1816290008839081808280098009098391089082827fe9df91ffeeb086a4d26041c29dac6fca1d56a4d022fe34b38831267395b98d2708839081808280098009098391089082827f862646f851d91a8840ad9ee711f12ec13b3e8f980ff5ef5ee43ca4520d57def708839081808280098009098391089082827f30b7381c9725b9db07816baf8524943a79cea135807c84cce0833485c11e0c2e08839081808280098009098391089082827f96afc10c5cedaddbda99df79387397c9be74a5b50f3a0c04ccb68d4e0f3a989f08839081808280098009098391089082827f3543da80d10da251c548776fe907c4ef89993d62e0062ae5c0496fcb851c366108839081808280098009098391089082827fe5140fe26d8b008430fccd50a68e3e11c1163d63b6d8b7cc40bc6f3c1d0b1b0608839081808280098009098391089082827ffefdf1872e4475e8bbb0ef6fab7f561bff121314695c433bd4c29ec118060c9608839081808280098009098391089082827f6bb8c9f3d57b18e002df059db1e6a5d42ad566f153f18460774f68ac2650940008839081808280098009098391089082827f5415122d50b26f4fab5784004c56cf03f128f825ad2236f4b3d51f74737bd97308839081808280098009098391089082827f00e115c4a98efae6a3a5ecc873b0cef63ccd5b515710a3ab03ec52218f784dc908839081808280098009098391089082827fda7d525427bad87b88238657c21331245578bc76aa6240b7f972382537a202ab08839081808280098009098391089082827f83332e8b34505b83010270dc795290a2f515b8f89c163acecdf4799df04c62f808839081808280098009098391089082827fb09ecb6033d1a065f17a61066cd737d0c3c5873b51c3ab0a285e26939e62aa1808839081808280098009098391089082827f24e65c718938c2b937378e7435332174329730bde85a4185e37875824eb4985908839081808280098009098391089082827f68e41430ccd41cc5e92a9f9acd2e955c1385b9f5ed8d3f133d767429484a8eba08839081808280098009098391089082827fc038fe9d0125ab8be54545276f841274e414c596ed4c9eaa6919604603d1ffa908839081808280098009098391089082827f23248698612cd8e83234fcf5db9b6b225f4b0ba78d72ef13ea1edff5f0fb029808839081808280098009098391089082827fd2a9fa3d39c1ba91eefa666a1db71c6e0e4e3b707626b0197a4e59e7110cf0d408839081808280098009098391089082827fc28931ee7dfa02b62872e0d937ba3dc5c637118273a1f1f0c4fc880905c82efc08839081808280098009098391089082827f01cd399556445e3d7b201d6c5e56a5794e60be2cfd9a4643e7ead79bb4f60f7908839081808280098009098391089082827fac855cc58d5fbb0dff91a79683eb0e914c1b7d8d0a540d416838a89f83a8312f08839081808280098009098391089082827ff7798af7ccf36b836705849f7dd40328bf9346657255b431446ec75a6817181608839081808280098009098391089082827fe52a24c92d3f067bf551eeaf98c62ba525e84882d7adad835fad8de72986b2b108839081808280098009098391089082827fffc8682759a2bf1dd67c87a77c285467801f1c44fd78fa4eb5957a4832c9d72d08839081808280098009098391089082827f1482ac3e7e4f321627850d95a13942aea6d2923402b913046856ff7e8aaf9aff08839081808280098009098391089082827f17332b4c7aac2a07ccfe954de7ad22ccf6fcb4c5fa15c130ed22a40ae9398f4708839081808280098009098391089082827fd4be0546013f84a0d1e118b37589723b58e323983263616d1b036f8b3fdd858308839081808280098009098391089082827fa64ec737d31dddf939b184438ccdd3e1d3e667572857cd6c9c31a0d1d9b7b08508839081808280098009098391089082827f8ad12fbc74117cff4743d674539c86548c6758710a07a6abe3715e4b53526d3408839081808280098009098391089082827f15a16435a2300b27a337561401f06682ba85019aa0af61b264a1177d38b5c13c08839081808280098009098391089082827f22616f306e76352293a22ab6ee15509d9b108d4136b32fa7f9ed259793f392a108839081808280098009098391089082827f519727b25560caf00ce0d3f911bd4356f907160ab5186da10a629c7ccae1851e08839081808280098009098391089082827fcff39e77928ce9310118d50e29bc87e7f78b53ad51366359aa17f07902ae639208839081808280098009098391089082827f17dead3bfa1968c744118023dead77cdbee22c5b7c2414f5a6bdf82fd94cf3ad08839081808280098009098391089082827f2bef0f8b22a1cfb90100f4a552a9d02b772130123de8144a00c4d57497e1d7f408839081808280098009098391089082827fbf5188713fef90b31c35243f92cfa4331ab076e30e24b355c79b01f41d152a1108839081808280098009098391089082827f3baadd2fd92e3e12fb371be0578941dc0a108fbca0a7d81b88316fb94d6b4dfe08839081808280098009098391089082827fd4f955742e20a28d38611bf9fc4a478c97b673a7cd40d0113a58a1efe338d9aa08839081808280098009098391089082827f3c1c3fe9a5f7ccd54ad5a51a224b3f94775266d19c3733017e4920d7391ad64508839081808280098009098391089082827f6372df6148abeed66fda5461779a9651130c6c525df733852bcd929016768a7a08839081808280098009098391089082827f6d098e848fb853f95adb5a6364b5ab33c79fb08877f2cf3e0e160d9fcb3ebcc508839081808280098009098391089082827f48c5fc90f27431fabfe496dfba14bb0dba71141eb5472a365fd13023f4fe629608839081808280098009098391089082827fbb988dfc0c4dfe53999bd34840adcb63fdbf501ccd622ca2ddf5064ad8cdebf408839081808280098009098391089082827f25b068c942724c424ed5851c9575c22752c9bd25f91ebfa589de3d88ee7627f908839081808280098009098391089082827fed98a1931e361add218de11ff7879bd7114cda19c24ddbe15b3b0190ce01e1aa08839081808280098009098391089082827fc80b5a7d63f6c43542ad612023d3ffd6c684ce2eab837180addcb4decf51854408839081808280098009098391089082827fe2ef24bf47c5203118c6ff96657dd3c6fdff7212d5c798d826455de77b4b70cd08839081808280098009098391089082827f907da812fd5a8375587e4860f87691d0a8d61d454c507d09e5562e1a5d0fcc7608839081808280098009098391089082827fc459abbc62bc6070cacdff597e97990de56edc51cc6643afb0f6789fef1bad6308839081808280098009098391089082827f38d61f5e566855d70d36ef0f0f1fefcd7c829bdd60d95e0ef1fb5b98856280a408839081808280098009098391089082827f13218626665c420d3aa2b0fa49224a3dce8e08b8b56f8851bd9cb5e25cb3042d08839081808280098009098391089082827f6f685fb152dba21b4d02422e237e246df73d7d711ae6d7d33983bae0f873e31008839081808280098009098391089082827f5ade34719e2498dde70e4571c40474475a4af706a3cb82ac18a7fa44c22d1c4708839081808280098009098391089082827f8a0c3dc7a496adca059cb95d9b173812a00f3c4d435e0b9e8116e0c4b5f56acb08839081808280098009098391089082827f196bc98252f63169ed79073ee091a0e8ed0b5af51017da143940c00bdb86370908839081808280098009098391089082827fd979bf70695d93f8efb552a413701918afec9e12dfe213f4d0c27cfa68fad6c208839081808280098009098391089082827fb803072d02f54d237a3c6c4cc18eda6dce87a03c6819df54e4ed8aed6dc56d4608839081808280098009098391089082827f1efcda9d986cddcf431af4d59c6a7709d650885b7886cba70f0e7cd92b331cdc08839081808280098009098391089082827fd3ca5f7859b82ac50b63da06d43aa68a6b685f0a60397638bbea173b3f60419208839081808280098009098391089082827fa59d392c0667316ad37a06be2d51aabe9e79bdef0013bc109985648a14c7e41f08839081808280098009098391089082827fac2f5f0d2146791b396e2bed6cf15a20bc22cc4c8cf7dd4b3514ac00148dd0a708839081808280098009098391089082827f17a993a6af068d72bc36f0e814d29fef3f97d7a72aa963889b16a8457409861a08839081808280098009098391089082827f6f1bf99686550e0396f7f4e2df6fdaa090fbc272c8c76eb32a3c6791de5a07b508839081808280098009098391089082827f8234d705e1ecdc59cc6ed40749069d4b45e63deb49b5b7d7f527abd31c072b1b08839081808280098009098391089082827f6fe929a1fd6aacba5c4012c45dd727d2c816119567450003913d882cb97bc47e08839081808280098009098391089082827fad5371215f2aba49026b2e48739c11b4d8ffbb24dd4a6e41b9763862af96787a08839081808280098009098391089082827fd0e704566c49e1a11edc2c128b2e07f36dc0c755468268f8fe4c4859b9fa595b08839081808280098009098391089082827f263e1195090d00be1d8fb37de17ccf3b66d180645efa0d831865cfaa8797769e08839081808280098009098391089082827fe65c090eebde2cfa7f9c92cf75641c7683fb8e81f4a48f5b7a9c7eb26a85029f08839081808280098009098391089082827fa18971781c6855f6a9752912780bb9b719c14a677a4c6393d62d6e046b97a2ac08839081808280098009098391089082827ff6fc1ef1bca8bec055cc66edecc5dc99030fe78311a3f21d8cd624df4f89e62508839081808280098009098391089082827f824e4e2838501516d3296542cb47a59a1ca4326e947c9c874d88dccc8e37b99a08839081808280098009098391089082827f3cd5a9e7353a50e454c9c1381b556b543897cc89153c3e3749f2021d8237226308839081808280098009098391089082827fb4bcedbd54d0c917a315cc7ca785e3c5995abbeeb3deb3ebaf02c7a9bf6cc83f08839081808280098009098391089082827f1f7476211105b3039cef009c51155ae93526c53a74973ecfce40754b3df1052108839081808280098009098391089082827f58aefbd978440c94b4b9fbd36e00e6e36caeacf82b0da0a6161d34c541a5a6e308839081808280098009098391089082827fc22cd6d61be780a33c77677bc6ba40307b597ed981db57cb485313eec2a5a49708839081808280098009098391089082827fd9ffc4fe0dc5f835c8dcdc1e60b8f0b1637f32a809175371b94a057272b0748d08839081808280098009098391089082827ff6a5268541bc4c64ad0ade8f55dda3492604857a71c923662a214dd7e9c20c1008839081808280098009098391089082826000088390818082800980090983910860205260005260406000f3" 19 | ); 20 | } 21 | 22 | function test_CommitRevealScheme() public { 23 | address caller = makeAddr("caller"); 24 | 25 | bytes memory solidityBytecode = type(CommitRevealScheme).runtimeCode; 26 | console2.logUint(solidityBytecode.length); // use this as MiMCSpongeHasherOffset constant in CommitRevealScheme 27 | 28 | bytes memory huffBytecode = HuffDeployer.deploy("MiMCSponge").code; 29 | 30 | startHoax(caller, 5 ether); 31 | 32 | CommitRevealScheme commitRevealScheme = new CommitRevealScheme{value: 1 ether}(solidityBytecode, huffBytecode); 33 | 34 | // get the hashed values from the tornado cash deployed mimcsponge contract 35 | (bytes32 first, bytes32 second) = getDeployedContractsResult(keccak256("a"), keccak256("b")); 36 | commitRevealScheme.register(CommitRevealScheme.Hash(first, second)); 37 | 38 | uint256 before = caller.balance; 39 | 40 | skip(121); 41 | 42 | commitRevealScheme.submitProof(keccak256("a"), keccak256("b")); 43 | 44 | assertEq(caller.balance - before, 1 ether); 45 | } 46 | 47 | function getDeployedContractsResult(bytes32 a, bytes32 b) private view returns (bytes32 c, bytes32 d) { 48 | (c, d) = deployedMiMCSpongeAddress.MiMCSponge(uint256(a), uint256(b)); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/MiMCSponge.huff: -------------------------------------------------------------------------------- 1 | 2 | 3 | #define macro MAIN() = { 4 | // start of the function in the original version 5 | start: 6 | 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 7 | 8 | // replace where it 9 | 0x00 10 | mload 11 | dup2 12 | 0x20 13 | mload 14 | 15 | 16 | 17 | //////////////////////////////////////////////// unchanged //////////////////////////////////////////////// 18 | dup2 19 | dup4 20 | dup2 21 | dup1 22 | dup3 23 | dup1 24 | mulmod 25 | dup1 26 | mulmod 27 | mulmod 28 | addmod 29 | swap1 30 | dup3 31 | dup3 32 | 0x0fbe43c36a80e36d7c7c584d4f8f3759fb51f0d66065d8a227b688d12488c5d4 33 | addmod 34 | dup4 35 | swap1 36 | dup2 37 | dup1 38 | dup3 39 | dup1 40 | mulmod 41 | dup1 42 | mulmod 43 | mulmod 44 | dup4 45 | swap2 46 | addmod 47 | swap1 48 | dup3 49 | dup3 50 | 0x9c48cd3e00a6195a253fc009e60f249456f802ff9baf6549210d201321efc1cc 51 | addmod 52 | dup4 53 | swap1 54 | dup2 55 | dup1 56 | dup3 57 | dup1 58 | mulmod 59 | dup1 60 | mulmod 61 | mulmod 62 | dup4 63 | swap2 64 | addmod 65 | swap1 66 | dup3 67 | dup3 68 | 0x27c0849dba2643077c13eb42ffb97663cdcecd669bf10f756be30bab71b86cf8 69 | addmod 70 | dup4 71 | swap1 72 | dup2 73 | dup1 74 | dup3 75 | dup1 76 | mulmod 77 | dup1 78 | mulmod 79 | mulmod 80 | dup4 81 | swap2 82 | addmod 83 | swap1 84 | dup3 85 | dup3 86 | 0x2bf76744736132e5c68f7dfdd5b792681d415098554fd8280f00d11b172b80d2 87 | addmod 88 | dup4 89 | swap1 90 | dup2 91 | dup1 92 | dup3 93 | dup1 94 | mulmod 95 | dup1 96 | mulmod 97 | mulmod 98 | dup4 99 | swap2 100 | addmod 101 | swap1 102 | dup3 103 | dup3 104 | 0x33133eb4a1a1ab45037c8bdf9adbb2999baf06f20a9c95180dc4ccdcbec58568 105 | addmod 106 | dup4 107 | swap1 108 | dup2 109 | dup1 110 | dup3 111 | dup1 112 | mulmod 113 | dup1 114 | mulmod 115 | mulmod 116 | dup4 117 | swap2 118 | addmod 119 | swap1 120 | dup3 121 | dup3 122 | 0x588bb66012356dbc9b059ef1d792b563d6c18624dddecc3fe4583fd3551e9b30 123 | addmod 124 | dup4 125 | swap1 126 | dup2 127 | dup1 128 | dup3 129 | dup1 130 | mulmod 131 | dup1 132 | mulmod 133 | mulmod 134 | dup4 135 | swap2 136 | addmod 137 | swap1 138 | dup3 139 | dup3 140 | 0x71bc3e244e1b92911fe7f53cf523e491fd6ff487d59337a1d92f92668c4f4c36 141 | addmod 142 | dup4 143 | swap1 144 | dup2 145 | dup1 146 | dup3 147 | dup1 148 | mulmod 149 | dup1 150 | mulmod 151 | mulmod 152 | dup4 153 | swap2 154 | addmod 155 | swap1 156 | dup3 157 | dup3 158 | 0xd1808e2b039fd010c489768f78d7499938ccc0858f3295151787cfe8b7e40be1 159 | addmod 160 | dup4 161 | swap1 162 | dup2 163 | dup1 164 | dup3 165 | dup1 166 | mulmod 167 | dup1 168 | mulmod 169 | mulmod 170 | dup4 171 | swap2 172 | addmod 173 | swap1 174 | dup3 175 | dup3 176 | 0x76978af3ded437cf41b3faa40cd6bcfce94f27f4abcc3ed34be19abd2c4537d0 177 | addmod 178 | dup4 179 | swap1 180 | dup2 181 | dup1 182 | dup3 183 | dup1 184 | mulmod 185 | dup1 186 | mulmod 187 | mulmod 188 | dup4 189 | swap2 190 | addmod 191 | swap1 192 | dup3 193 | dup3 194 | 0x0a9baee798a320b0ca5b1cf888386d1dc12c13b38e10225aa4e9f03069a099f5 195 | addmod 196 | dup4 197 | swap1 198 | dup2 199 | dup1 200 | dup3 201 | dup1 202 | mulmod 203 | dup1 204 | mulmod 205 | mulmod 206 | dup4 207 | swap2 208 | addmod 209 | swap1 210 | dup3 211 | dup3 212 | 0xb79dbf6050a03b16c3ade8d77e11c767d2251af9cdbd6cdf9a8a0ee921b32c79 213 | addmod 214 | dup4 215 | swap1 216 | dup2 217 | dup1 218 | dup3 219 | dup1 220 | mulmod 221 | dup1 222 | mulmod 223 | mulmod 224 | dup4 225 | swap2 226 | addmod 227 | swap1 228 | dup3 229 | dup3 230 | 0xa74bbcf5067f067faec2cce4b98d130d7927456f5c5f6c00e0f5406a24eb8b19 231 | addmod 232 | dup4 233 | swap1 234 | dup2 235 | dup1 236 | dup3 237 | dup1 238 | mulmod 239 | dup1 240 | mulmod 241 | mulmod 242 | dup4 243 | swap2 244 | addmod 245 | swap1 246 | dup3 247 | dup3 248 | 0xab7ab080d4c4018bda6ecc8bd67468bc4619ba12f25b0da879a639c758c8855d 249 | addmod 250 | dup4 251 | swap1 252 | dup2 253 | dup1 254 | dup3 255 | dup1 256 | mulmod 257 | dup1 258 | mulmod 259 | mulmod 260 | dup4 261 | swap2 262 | addmod 263 | swap1 264 | dup3 265 | dup3 266 | 0xe6a5b797c2bba7e9a873b37f5c41adc47765e9be4a1f0e0650e6a24ad2268763 267 | addmod 268 | dup4 269 | swap1 270 | dup2 271 | dup1 272 | dup3 273 | dup1 274 | mulmod 275 | dup1 276 | mulmod 277 | mulmod 278 | dup4 279 | swap2 280 | addmod 281 | swap1 282 | dup3 283 | dup3 284 | 0x6270ae87cf3d82cf9c0b5f428466c429d7b7cbe234cecff39969171af006016c 285 | addmod 286 | dup4 287 | swap1 288 | dup2 289 | dup1 290 | dup3 291 | dup1 292 | mulmod 293 | dup1 294 | mulmod 295 | mulmod 296 | dup4 297 | swap2 298 | addmod 299 | swap1 300 | dup3 301 | dup3 302 | 0x9951c9f6e76d636b52f7600d979ca9f3b643dfbe9551c83b31542830321b2a66 303 | addmod 304 | dup4 305 | swap1 306 | dup2 307 | dup1 308 | dup3 309 | dup1 310 | mulmod 311 | dup1 312 | mulmod 313 | mulmod 314 | dup4 315 | swap2 316 | addmod 317 | swap1 318 | dup3 319 | dup3 320 | 0x4119469e44229cc40c4ff555a2b6f6b39961088e741e3c20a3c9b47f130c5550 321 | addmod 322 | dup4 323 | swap1 324 | dup2 325 | dup1 326 | dup3 327 | dup1 328 | mulmod 329 | dup1 330 | mulmod 331 | mulmod 332 | dup4 333 | swap2 334 | addmod 335 | swap1 336 | dup3 337 | dup3 338 | 0x5d795e02bbaf90ff1f384741e5f18f8b644a0080441315d0e5b3c8123452a0b0 339 | addmod 340 | dup4 341 | swap1 342 | dup2 343 | dup1 344 | dup3 345 | dup1 346 | mulmod 347 | dup1 348 | mulmod 349 | mulmod 350 | dup4 351 | swap2 352 | addmod 353 | swap1 354 | dup3 355 | dup3 356 | 0x281e90a515e6409e9177b4f297f8049ce3d4c3659423c48b3fd64e83596ff101 357 | addmod 358 | dup4 359 | swap1 360 | dup2 361 | dup1 362 | dup3 363 | dup1 364 | mulmod 365 | dup1 366 | mulmod 367 | mulmod 368 | dup4 369 | swap2 370 | addmod 371 | swap1 372 | dup3 373 | dup3 374 | 0x424185c60a21e84970f7d32cacaa2725aa8a844caea7ed760d2b965af1bf3e7d 375 | addmod 376 | dup4 377 | swap1 378 | dup2 379 | dup1 380 | dup3 381 | dup1 382 | mulmod 383 | dup1 384 | mulmod 385 | mulmod 386 | dup4 387 | swap2 388 | addmod 389 | swap1 390 | dup3 391 | dup3 392 | 0xd96fcbc3960614ea887da609187a5dada2e1b829f23309a6375212cea1f25c09 393 | addmod 394 | dup4 395 | swap1 396 | dup2 397 | dup1 398 | dup3 399 | dup1 400 | mulmod 401 | dup1 402 | mulmod 403 | mulmod 404 | dup4 405 | swap2 406 | addmod 407 | swap1 408 | dup3 409 | dup3 410 | 0xfde84026d7c294300af18f7712fc3662f43387ae8cf7fdda1f9a810f4b24bcf2 411 | addmod 412 | dup4 413 | swap1 414 | dup2 415 | dup1 416 | dup3 417 | dup1 418 | mulmod 419 | dup1 420 | mulmod 421 | mulmod 422 | dup4 423 | swap2 424 | addmod 425 | swap1 426 | dup3 427 | dup3 428 | 0x3a9d568575846aa6b8a890b3c237fd0447426db878e6e25333b8eb9b386195c1 429 | addmod 430 | dup4 431 | swap1 432 | dup2 433 | dup1 434 | dup3 435 | dup1 436 | mulmod 437 | dup1 438 | mulmod 439 | mulmod 440 | dup4 441 | swap2 442 | addmod 443 | swap1 444 | dup3 445 | dup3 446 | 0x55a2aa32c84a4cae196dd4094b685dd11757470a3be094d98eea73f02452aa36 447 | addmod 448 | dup4 449 | swap1 450 | dup2 451 | dup1 452 | dup3 453 | dup1 454 | mulmod 455 | dup1 456 | mulmod 457 | mulmod 458 | dup4 459 | swap2 460 | addmod 461 | swap1 462 | dup3 463 | dup3 464 | 0xcbc9481380978d29ebc5b0a8d4481cd2ef654ee800907adb3d38dc2fd9265fab 465 | addmod 466 | dup4 467 | swap1 468 | dup2 469 | dup1 470 | dup3 471 | dup1 472 | mulmod 473 | dup1 474 | mulmod 475 | mulmod 476 | dup4 477 | swap2 478 | addmod 479 | swap1 480 | dup3 481 | dup3 482 | 0x24e53af71ef06bacb76d3294c11223911e9d177ff09b7009febc484add0beb74 483 | addmod 484 | dup4 485 | swap1 486 | dup2 487 | dup1 488 | dup3 489 | dup1 490 | mulmod 491 | dup1 492 | mulmod 493 | mulmod 494 | dup4 495 | swap2 496 | addmod 497 | swap1 498 | dup3 499 | dup3 500 | 0xdbd44e16108225766dac3e5fe7acbe9df519bbba97380e5e9437a90658f21393 501 | addmod 502 | dup4 503 | swap1 504 | dup2 505 | dup1 506 | dup3 507 | dup1 508 | mulmod 509 | dup1 510 | mulmod 511 | mulmod 512 | dup4 513 | swap2 514 | addmod 515 | swap1 516 | dup3 517 | dup3 518 | 0xc6f434863c79013bb2c202331e04bccea2251c1ff6f191dc2afa23e6f6d28e4e 519 | addmod 520 | dup4 521 | swap1 522 | dup2 523 | dup1 524 | dup3 525 | dup1 526 | mulmod 527 | dup1 528 | mulmod 529 | mulmod 530 | dup4 531 | swap2 532 | addmod 533 | swap1 534 | dup3 535 | dup3 536 | 0x3490eeb39a733c0e8062d87f981ae65a8fccf25c448f4455d27db3915351b066 537 | addmod 538 | dup4 539 | swap1 540 | dup2 541 | dup1 542 | dup3 543 | dup1 544 | mulmod 545 | dup1 546 | mulmod 547 | mulmod 548 | dup4 549 | swap2 550 | addmod 551 | swap1 552 | dup3 553 | dup3 554 | 0x30b89830ff7ade3558a5361a24869130ce1fcce97211602962e34859525dac4f 555 | addmod 556 | dup4 557 | swap1 558 | dup2 559 | dup1 560 | dup3 561 | dup1 562 | mulmod 563 | dup1 564 | mulmod 565 | mulmod 566 | dup4 567 | swap2 568 | addmod 569 | swap1 570 | dup3 571 | dup3 572 | 0x29bae21b579d080a75c1694da628d0ecfd83efc9c8468704f410300062f64ca9 573 | addmod 574 | dup4 575 | swap1 576 | dup2 577 | dup1 578 | dup3 579 | dup1 580 | mulmod 581 | dup1 582 | mulmod 583 | mulmod 584 | dup4 585 | swap2 586 | addmod 587 | swap1 588 | dup3 589 | dup3 590 | 0xe326499de0476e719915dd1c661ef4550723d4aee9ee9af224edd208790fce44 591 | addmod 592 | dup4 593 | swap1 594 | dup2 595 | dup1 596 | dup3 597 | dup1 598 | mulmod 599 | dup1 600 | mulmod 601 | mulmod 602 | dup4 603 | swap2 604 | addmod 605 | swap1 606 | dup3 607 | dup3 608 | 0x8c45208b8baa6f473821415957088c0b7e72a465f460b09ece2d270aee2f1841 609 | addmod 610 | dup4 611 | swap1 612 | dup2 613 | dup1 614 | dup3 615 | dup1 616 | mulmod 617 | dup1 618 | mulmod 619 | mulmod 620 | dup4 621 | swap2 622 | addmod 623 | swap1 624 | dup3 625 | dup3 626 | 0xfe2ad454f451348f26ce2cc7e7914aef3eb96e8f89a4619a1dc7d11f8401c352 627 | addmod 628 | dup4 629 | swap1 630 | dup2 631 | dup1 632 | dup3 633 | dup1 634 | mulmod 635 | dup1 636 | mulmod 637 | mulmod 638 | dup4 639 | swap2 640 | addmod 641 | swap1 642 | dup3 643 | dup3 644 | 0x0929db368ef2af2d29bca38845325b0b7a820a4889e44b5829bbe1ed47fd4d52 645 | addmod 646 | dup4 647 | swap1 648 | dup2 649 | dup1 650 | dup3 651 | dup1 652 | mulmod 653 | dup1 654 | mulmod 655 | mulmod 656 | dup4 657 | swap2 658 | addmod 659 | swap1 660 | dup3 661 | dup3 662 | 0x16531d424b0cbaf9abbf2d2acde698462ea4555bf32ccf1bbd26697e905066f6 663 | addmod 664 | dup4 665 | swap1 666 | dup2 667 | dup1 668 | dup3 669 | dup1 670 | mulmod 671 | dup1 672 | mulmod 673 | mulmod 674 | dup4 675 | swap2 676 | addmod 677 | swap1 678 | dup3 679 | dup3 680 | 0xf5c30d247f045ff6d05cf0dd0a49c9823e7a24b0d751d3c721353b96f29d76f6 681 | addmod 682 | dup4 683 | swap1 684 | dup2 685 | dup1 686 | dup3 687 | dup1 688 | mulmod 689 | dup1 690 | mulmod 691 | mulmod 692 | dup4 693 | swap2 694 | addmod 695 | swap1 696 | dup3 697 | dup3 698 | 0x6eb7a3614056c230c6f171370fdd9d1048bb00b2cdd1b2721d11bdda5023f486 699 | addmod 700 | dup4 701 | swap1 702 | dup2 703 | dup1 704 | dup3 705 | dup1 706 | mulmod 707 | dup1 708 | mulmod 709 | mulmod 710 | dup4 711 | swap2 712 | addmod 713 | swap1 714 | dup3 715 | dup3 716 | 0x0ee9c4621642a272f710908707557498d25a6fdd51866da5d9f0d205355a6189 717 | addmod 718 | dup4 719 | swap1 720 | dup2 721 | dup1 722 | dup3 723 | dup1 724 | mulmod 725 | dup1 726 | mulmod 727 | mulmod 728 | dup4 729 | swap2 730 | addmod 731 | swap1 732 | dup3 733 | dup3 734 | 0x78ca1cb1c7f6c6894d1cf94f327b8763be173151b6b06f99dfc6a944bb5a72f0 735 | addmod 736 | dup4 737 | swap1 738 | dup2 739 | dup1 740 | dup3 741 | dup1 742 | mulmod 743 | dup1 744 | mulmod 745 | mulmod 746 | dup4 747 | swap2 748 | addmod 749 | swap1 750 | dup3 751 | dup3 752 | 0x5d24d0b1b304d05311ce0f274b0d93746a4860ed5cdd8d4348de557ea7a5ee7a 753 | addmod 754 | dup4 755 | swap1 756 | dup2 757 | dup1 758 | dup3 759 | dup1 760 | mulmod 761 | dup1 762 | mulmod 763 | mulmod 764 | dup4 765 | swap2 766 | addmod 767 | swap1 768 | dup3 769 | dup3 770 | 0x77423dabd1a3cddc8691438fc5891e3fd49ac0f3e21aaf249791bfde1303d2f3 771 | addmod 772 | dup4 773 | swap1 774 | dup2 775 | dup1 776 | dup3 777 | dup1 778 | mulmod 779 | dup1 780 | mulmod 781 | mulmod 782 | dup4 783 | swap2 784 | addmod 785 | swap1 786 | dup3 787 | dup3 788 | 0x0642e8800a48cc04c0168232c6f542396597a67cf395ad622d947e98bb68697a 789 | addmod 790 | dup4 791 | swap1 792 | dup2 793 | dup1 794 | dup3 795 | dup1 796 | mulmod 797 | dup1 798 | mulmod 799 | mulmod 800 | dup4 801 | swap2 802 | addmod 803 | swap1 804 | dup3 805 | dup3 806 | 0xc1e7d3cbbc4c35b7490647d8402e56d334336943bda91fe2d34ca9727c0e3df5 807 | addmod 808 | dup4 809 | swap1 810 | dup2 811 | dup1 812 | dup3 813 | dup1 814 | mulmod 815 | dup1 816 | mulmod 817 | mulmod 818 | dup4 819 | swap2 820 | addmod 821 | swap1 822 | dup3 823 | dup3 824 | 0x8d6fb1730335204f38f85e408ac861e76f24349ab6ee0469c22e19350bb24fe1 825 | addmod 826 | dup4 827 | swap1 828 | dup2 829 | dup1 830 | dup3 831 | dup1 832 | mulmod 833 | dup1 834 | mulmod 835 | mulmod 836 | dup4 837 | swap2 838 | addmod 839 | swap1 840 | dup3 841 | dup3 842 | 0x67d0faf5f0db32a1b60e13dc4914246b9edac7990fb4990b19aa86815586441a 843 | addmod 844 | dup4 845 | swap1 846 | dup2 847 | dup1 848 | dup3 849 | dup1 850 | mulmod 851 | dup1 852 | mulmod 853 | mulmod 854 | dup4 855 | swap2 856 | addmod 857 | swap1 858 | dup3 859 | dup3 860 | 0x2605b9b909ded1b04971eae979027c4e0de57f3b6a60d5ed58aba619c34749ce 861 | addmod 862 | dup4 863 | swap1 864 | dup2 865 | dup1 866 | dup3 867 | dup1 868 | mulmod 869 | dup1 870 | mulmod 871 | mulmod 872 | dup4 873 | swap2 874 | addmod 875 | swap1 876 | dup3 877 | dup3 878 | 0xd276890b2c205db85f000d1f5111ed8f177e279cae3e52862780f04e846228d0 879 | addmod 880 | dup4 881 | swap1 882 | dup2 883 | dup1 884 | dup3 885 | dup1 886 | mulmod 887 | dup1 888 | mulmod 889 | mulmod 890 | dup4 891 | swap2 892 | addmod 893 | swap1 894 | dup3 895 | dup3 896 | 0x2ac5905f9450a21ef6905ed5951a91b3730e3a2e2d62b50bdeb810015d50376b 897 | addmod 898 | dup4 899 | swap1 900 | dup2 901 | dup1 902 | dup3 903 | dup1 904 | mulmod 905 | dup1 906 | mulmod 907 | mulmod 908 | dup4 909 | swap2 910 | addmod 911 | swap1 912 | dup3 913 | dup3 914 | 0x7a366839f0291ca54da674ac3f0e1e9aa8b687ba533926cb40268039e57b967a 915 | addmod 916 | dup4 917 | swap1 918 | dup2 919 | dup1 920 | dup3 921 | dup1 922 | mulmod 923 | dup1 924 | mulmod 925 | mulmod 926 | dup4 927 | swap2 928 | addmod 929 | swap1 930 | dup3 931 | dup3 932 | 0x67ab0f3466989c3dbbe209c37ec272ba83984ba6e445be6d472b63e3ca7270e3 933 | addmod 934 | dup4 935 | swap1 936 | dup2 937 | dup1 938 | dup3 939 | dup1 940 | mulmod 941 | dup1 942 | mulmod 943 | mulmod 944 | dup4 945 | swap2 946 | addmod 947 | swap1 948 | dup3 949 | dup3 950 | 0x0e786007d0ce7e28a90e31d3263887d40c556dec88fcb8b56bc9e9c05ecc0c29 951 | addmod 952 | dup4 953 | swap1 954 | dup2 955 | dup1 956 | dup3 957 | dup1 958 | mulmod 959 | dup1 960 | mulmod 961 | mulmod 962 | dup4 963 | swap2 964 | addmod 965 | swap1 966 | dup3 967 | dup3 968 | 0x0b814ed99bd00eca389b0022663dbfddfbfa15e321c19abcf1eaf9556075fb68 969 | addmod 970 | dup4 971 | swap1 972 | dup2 973 | dup1 974 | dup3 975 | dup1 976 | mulmod 977 | dup1 978 | mulmod 979 | mulmod 980 | dup4 981 | swap2 982 | addmod 983 | swap1 984 | dup3 985 | dup3 986 | 0x65c0321ba26fcee4fdc35b4999b78ceb54dcaf9fec2e3bdea98e9f82925c0932 987 | addmod 988 | dup4 989 | swap1 990 | dup2 991 | dup1 992 | dup3 993 | dup1 994 | mulmod 995 | dup1 996 | mulmod 997 | mulmod 998 | dup4 999 | swap2 1000 | addmod 1001 | swap1 1002 | dup3 1003 | dup3 1004 | 0xab2d2a929601f9c3520e0b14aaa6ba9f1e79821a5b768919670a4ea970722bf4 1005 | addmod 1006 | dup4 1007 | swap1 1008 | dup2 1009 | dup1 1010 | dup3 1011 | dup1 1012 | mulmod 1013 | dup1 1014 | mulmod 1015 | mulmod 1016 | dup4 1017 | swap2 1018 | addmod 1019 | swap1 1020 | dup3 1021 | dup3 1022 | 0xcdd2e0744d4af1a81918de69ec12128a5871367303ff83ed764771cbbdf65023 1023 | addmod 1024 | dup4 1025 | swap1 1026 | dup2 1027 | dup1 1028 | dup3 1029 | dup1 1030 | mulmod 1031 | dup1 1032 | mulmod 1033 | mulmod 1034 | dup4 1035 | swap2 1036 | addmod 1037 | swap1 1038 | dup3 1039 | dup3 1040 | 0x74527d0c0868f2ec628086b874fa66a7347d3d3b918d2e07a5f33e1067e8ac58 1041 | addmod 1042 | dup4 1043 | swap1 1044 | dup2 1045 | dup1 1046 | dup3 1047 | dup1 1048 | mulmod 1049 | dup1 1050 | mulmod 1051 | mulmod 1052 | dup4 1053 | swap2 1054 | addmod 1055 | swap1 1056 | dup3 1057 | dup3 1058 | 0x1c6bf6ac0314caead23e357bfcbbaa17d670672ae3a475f80934c716f10aca25 1059 | addmod 1060 | dup4 1061 | swap1 1062 | dup2 1063 | dup1 1064 | dup3 1065 | dup1 1066 | mulmod 1067 | dup1 1068 | mulmod 1069 | mulmod 1070 | dup4 1071 | swap2 1072 | addmod 1073 | swap1 1074 | dup3 1075 | dup3 1076 | 0x3c4007e286f8dc7efd5d0eeb0e95d7aa6589361d128a0cccb17b554c851a6432 1077 | addmod 1078 | dup4 1079 | swap1 1080 | dup2 1081 | dup1 1082 | dup3 1083 | dup1 1084 | mulmod 1085 | dup1 1086 | mulmod 1087 | mulmod 1088 | dup4 1089 | swap2 1090 | addmod 1091 | swap1 1092 | dup3 1093 | dup3 1094 | 0xae468a86a5a7db7c763a053eb09ac1a02809ce095258c88101ee319e12b0697e 1095 | addmod 1096 | dup4 1097 | swap1 1098 | dup2 1099 | dup1 1100 | dup3 1101 | dup1 1102 | mulmod 1103 | dup1 1104 | mulmod 1105 | mulmod 1106 | dup4 1107 | swap2 1108 | addmod 1109 | swap1 1110 | dup3 1111 | dup3 1112 | 0x9333e3d052b7c77fcac1eb366f610f6f97852242b1317a87b80f3bbc5c8c2d1d 1113 | addmod 1114 | dup4 1115 | swap1 1116 | dup2 1117 | dup1 1118 | dup3 1119 | dup1 1120 | mulmod 1121 | dup1 1122 | mulmod 1123 | mulmod 1124 | dup4 1125 | swap2 1126 | addmod 1127 | swap1 1128 | dup3 1129 | dup3 1130 | 0x52ec1d675cf5353153f6b628414783ca6b7fc0fe01948ca206daad712296e395 1131 | addmod 1132 | dup4 1133 | swap1 1134 | dup2 1135 | dup1 1136 | dup3 1137 | dup1 1138 | mulmod 1139 | dup1 1140 | mulmod 1141 | mulmod 1142 | dup4 1143 | swap2 1144 | addmod 1145 | swap1 1146 | dup3 1147 | dup3 1148 | 0x13ceeeb301572b4991076750e11ea7e7fcbfee454d90dc1763989004a1894f93 1149 | addmod 1150 | dup4 1151 | swap1 1152 | dup2 1153 | dup1 1154 | dup3 1155 | dup1 1156 | mulmod 1157 | dup1 1158 | mulmod 1159 | mulmod 1160 | dup4 1161 | swap2 1162 | addmod 1163 | swap1 1164 | dup3 1165 | dup3 1166 | 0x8505737e7e94939a08d8cda10b6fbbbf879b2141ae7eabc30fcd22405135fe64 1167 | addmod 1168 | dup4 1169 | swap1 1170 | dup2 1171 | dup1 1172 | dup3 1173 | dup1 1174 | mulmod 1175 | dup1 1176 | mulmod 1177 | mulmod 1178 | dup4 1179 | swap2 1180 | addmod 1181 | swap1 1182 | dup3 1183 | dup3 1184 | 0x6127db7ac5200a212092b66ec2bfc63653f4dc8ac66c76008fef885258a258b5 1185 | addmod 1186 | dup4 1187 | swap1 1188 | dup2 1189 | dup1 1190 | dup3 1191 | dup1 1192 | mulmod 1193 | dup1 1194 | mulmod 1195 | mulmod 1196 | dup4 1197 | swap2 1198 | addmod 1199 | swap1 1200 | dup3 1201 | dup3 1202 | 0x12692a7d808f44e31d628dbcfea377eb073fb918d7beb8136ea47f8cf094c88c 1203 | addmod 1204 | dup4 1205 | swap1 1206 | dup2 1207 | dup1 1208 | dup3 1209 | dup1 1210 | mulmod 1211 | dup1 1212 | mulmod 1213 | mulmod 1214 | dup4 1215 | swap2 1216 | addmod 1217 | swap1 1218 | dup3 1219 | dup3 1220 | 0x260e384b1268e3a347c91d6987fd280fa0a275541a7c5be34bf126af35c962e0 1221 | addmod 1222 | dup4 1223 | swap1 1224 | dup2 1225 | dup1 1226 | dup3 1227 | dup1 1228 | mulmod 1229 | dup1 1230 | mulmod 1231 | mulmod 1232 | dup4 1233 | swap2 1234 | addmod 1235 | swap1 1236 | dup3 1237 | dup3 1238 | 0xd88c3b01966d90e713aee8d482ceaa6925311d2342e1a5aca4fcd2f44b6daddc 1239 | addmod 1240 | dup4 1241 | swap1 1242 | dup2 1243 | dup1 1244 | dup3 1245 | dup1 1246 | mulmod 1247 | dup1 1248 | mulmod 1249 | mulmod 1250 | dup4 1251 | swap2 1252 | addmod 1253 | swap1 1254 | dup3 1255 | dup3 1256 | 0xb87e868affd91b078a87fa75ac9332a6cf23587d94e20c3262db5e91f30bf04b 1257 | addmod 1258 | dup4 1259 | swap1 1260 | dup2 1261 | dup1 1262 | dup3 1263 | dup1 1264 | mulmod 1265 | dup1 1266 | mulmod 1267 | mulmod 1268 | dup4 1269 | swap2 1270 | addmod 1271 | swap1 1272 | dup3 1273 | dup3 1274 | 0xb5ba5f8acad1a950a3bbf2201055cd3ea27056c0c53f0c4c97f33cda8dbfe909 1275 | addmod 1276 | dup4 1277 | swap1 1278 | dup2 1279 | dup1 1280 | dup3 1281 | dup1 1282 | mulmod 1283 | dup1 1284 | mulmod 1285 | mulmod 1286 | dup4 1287 | swap2 1288 | addmod 1289 | swap1 1290 | dup3 1291 | dup3 1292 | 0x59ca814b49e00d7b3118c53a2986ded128584acd7428735e08ade6661c457f75 1293 | addmod 1294 | dup4 1295 | swap1 1296 | dup2 1297 | dup1 1298 | dup3 1299 | dup1 1300 | mulmod 1301 | dup1 1302 | mulmod 1303 | mulmod 1304 | dup4 1305 | swap2 1306 | addmod 1307 | swap1 1308 | dup3 1309 | dup3 1310 | 0x0fc4c0bea813a223fd510c07f7bbe337badd4bcf28649a0d378970c2a15b3aa5 1311 | addmod 1312 | dup4 1313 | swap1 1314 | dup2 1315 | dup1 1316 | dup3 1317 | dup1 1318 | mulmod 1319 | dup1 1320 | mulmod 1321 | mulmod 1322 | dup4 1323 | swap2 1324 | addmod 1325 | swap1 1326 | dup3 1327 | dup3 1328 | 0x0053f1ea6dd60e7a6db09a00be77549ff3d4ee3737be7fb42052ae1321f667c3 1329 | addmod 1330 | dup4 1331 | swap1 1332 | dup2 1333 | dup1 1334 | dup3 1335 | dup1 1336 | mulmod 1337 | dup1 1338 | mulmod 1339 | mulmod 1340 | dup4 1341 | swap2 1342 | addmod 1343 | swap1 1344 | dup3 1345 | dup3 1346 | 0xeb937077bb10c8fe38716d4e38edc1f9e7b18c6414fef85fe7e9c5567baa4a04 1347 | addmod 1348 | dup4 1349 | swap1 1350 | dup2 1351 | dup1 1352 | dup3 1353 | dup1 1354 | mulmod 1355 | dup1 1356 | mulmod 1357 | mulmod 1358 | dup4 1359 | swap2 1360 | addmod 1361 | swap1 1362 | dup3 1363 | dup3 1364 | 0xbacb14c0f1508d828f7fd048d716b8044aec7f0fb48e85e717bf532db9725207 1365 | addmod 1366 | dup4 1367 | swap1 1368 | dup2 1369 | dup1 1370 | dup3 1371 | dup1 1372 | mulmod 1373 | dup1 1374 | mulmod 1375 | mulmod 1376 | dup4 1377 | swap2 1378 | addmod 1379 | swap1 1380 | dup3 1381 | dup3 1382 | 0x4ca0abb8beb7cff572a0c1e6f58e080e1bb243d497a3e74538442a4555ad40be 1383 | addmod 1384 | dup4 1385 | swap1 1386 | dup2 1387 | dup1 1388 | dup3 1389 | dup1 1390 | mulmod 1391 | dup1 1392 | mulmod 1393 | mulmod 1394 | dup4 1395 | swap2 1396 | addmod 1397 | swap1 1398 | dup3 1399 | dup3 1400 | 0xda9eefd411e590d7e44592cce298af87b2c62aa3cc8bb137aa99ca8d4aa551b5 1401 | addmod 1402 | dup4 1403 | swap1 1404 | dup2 1405 | dup1 1406 | dup3 1407 | dup1 1408 | mulmod 1409 | dup1 1410 | mulmod 1411 | mulmod 1412 | dup4 1413 | swap2 1414 | addmod 1415 | swap1 1416 | dup3 1417 | dup3 1418 | 0x153dae43cef763e7a2fc9846f09a2973b0ad9c35894c220699bcc2954501c6bd 1419 | addmod 1420 | dup4 1421 | swap1 1422 | dup2 1423 | dup1 1424 | dup3 1425 | dup1 1426 | mulmod 1427 | dup1 1428 | mulmod 1429 | mulmod 1430 | dup4 1431 | swap2 1432 | addmod 1433 | swap1 1434 | dup3 1435 | dup3 1436 | 0xd4ed2a09375813b4fb504c7a9ba13110bdd8549a47349db82c15a434c090e87b 1437 | addmod 1438 | dup4 1439 | swap1 1440 | dup2 1441 | dup1 1442 | dup3 1443 | dup1 1444 | mulmod 1445 | dup1 1446 | mulmod 1447 | mulmod 1448 | dup4 1449 | swap2 1450 | addmod 1451 | swap1 1452 | dup3 1453 | dup3 1454 | 0x0063a5c4c9c12dcf4bae72c69f3a225664469503d61d9eae5d9553bfb006095b 1455 | addmod 1456 | dup4 1457 | swap1 1458 | dup2 1459 | dup1 1460 | dup3 1461 | dup1 1462 | mulmod 1463 | dup1 1464 | mulmod 1465 | mulmod 1466 | dup4 1467 | swap2 1468 | addmod 1469 | swap1 1470 | dup3 1471 | dup3 1472 | 0xdc8a4d35ad28e59dd3713b45985cd3b70e37ccc2be42086f1ea078fe2dc9d82d 1473 | addmod 1474 | dup4 1475 | swap1 1476 | dup2 1477 | dup1 1478 | dup3 1479 | dup1 1480 | mulmod 1481 | dup1 1482 | mulmod 1483 | mulmod 1484 | dup4 1485 | swap2 1486 | addmod 1487 | swap1 1488 | dup3 1489 | dup3 1490 | 0x486ba219308f0c847b22fcb4449f8855192536c01b8057904e81c1c7814f483b 1491 | addmod 1492 | dup4 1493 | swap1 1494 | dup2 1495 | dup1 1496 | dup3 1497 | dup1 1498 | mulmod 1499 | dup1 1500 | mulmod 1501 | mulmod 1502 | dup4 1503 | swap2 1504 | addmod 1505 | swap1 1506 | dup3 1507 | dup3 1508 | 0x34d9604140a1ac9fdb204285b9fe1b303c281af2fc5fb362f6577282b423bcf3 1509 | addmod 1510 | dup4 1511 | swap1 1512 | dup2 1513 | dup1 1514 | dup3 1515 | dup1 1516 | mulmod 1517 | dup1 1518 | mulmod 1519 | mulmod 1520 | dup4 1521 | swap2 1522 | addmod 1523 | swap1 1524 | dup3 1525 | dup3 1526 | 0xc1681959ec4bc3656911db2b2f56aa4db709c26f1a0a25c879286e37f437465d 1527 | addmod 1528 | dup4 1529 | swap1 1530 | dup2 1531 | dup1 1532 | dup3 1533 | dup1 1534 | mulmod 1535 | dup1 1536 | mulmod 1537 | mulmod 1538 | dup4 1539 | swap2 1540 | addmod 1541 | swap1 1542 | dup3 1543 | dup3 1544 | 0xfcd849f3b5f9e4368af75619fb27f2e335adbb9b44988f17c4d389fa751ad47a 1545 | addmod 1546 | dup4 1547 | swap1 1548 | dup2 1549 | dup1 1550 | dup3 1551 | dup1 1552 | mulmod 1553 | dup1 1554 | mulmod 1555 | mulmod 1556 | dup4 1557 | swap2 1558 | addmod 1559 | swap1 1560 | dup3 1561 | dup3 1562 | 0xf5f7fc22ad64c8e7c1e005110e13f4f1c6b1f8f8cc59000db0e3bb38f99554a5 1563 | addmod 1564 | dup4 1565 | swap1 1566 | dup2 1567 | dup1 1568 | dup3 1569 | dup1 1570 | mulmod 1571 | dup1 1572 | mulmod 1573 | mulmod 1574 | dup4 1575 | swap2 1576 | addmod 1577 | swap1 1578 | dup3 1579 | dup3 1580 | 0xa9133b8a20fbae4633ec5f82cb47a38ae1877d12d1febb23982c7c808aa53175 1581 | addmod 1582 | dup4 1583 | swap1 1584 | dup2 1585 | dup1 1586 | dup3 1587 | dup1 1588 | mulmod 1589 | dup1 1590 | mulmod 1591 | mulmod 1592 | dup4 1593 | swap2 1594 | addmod 1595 | swap1 1596 | dup3 1597 | dup3 1598 | 0xf4827c5c7b61141cc31b75984bb3ed16ed579e5b72e32a1289b63ab55eaf8c12 1599 | addmod 1600 | dup4 1601 | swap1 1602 | dup2 1603 | dup1 1604 | dup3 1605 | dup1 1606 | mulmod 1607 | dup1 1608 | mulmod 1609 | mulmod 1610 | dup4 1611 | swap2 1612 | addmod 1613 | swap1 1614 | dup3 1615 | dup3 1616 | 0xcca361819ffefe3e50fe34c91a322c9405f4e5a168c1fc0a0a1883993e32c9f4 1617 | addmod 1618 | dup4 1619 | swap1 1620 | dup2 1621 | dup1 1622 | dup3 1623 | dup1 1624 | mulmod 1625 | dup1 1626 | mulmod 1627 | mulmod 1628 | dup4 1629 | swap2 1630 | addmod 1631 | swap1 1632 | dup3 1633 | dup3 1634 | 0x6656088842bfc9e325a532784d3362cecfa86f9c7b208a6b499836ebe48ff157 1635 | addmod 1636 | dup4 1637 | swap1 1638 | dup2 1639 | dup1 1640 | dup3 1641 | dup1 1642 | mulmod 1643 | dup1 1644 | mulmod 1645 | mulmod 1646 | dup4 1647 | swap2 1648 | addmod 1649 | swap1 1650 | dup3 1651 | dup3 1652 | 0x00129c7cd00e42ed05a37dbceb80d47b65e1d750ef2148278a54723fdf42c4cc 1653 | addmod 1654 | dup4 1655 | swap1 1656 | dup2 1657 | dup1 1658 | dup3 1659 | dup1 1660 | mulmod 1661 | dup1 1662 | mulmod 1663 | mulmod 1664 | dup4 1665 | swap2 1666 | addmod 1667 | swap1 1668 | dup3 1669 | dup3 1670 | 0xa85b235631b786f85cd46f7768f6c71ae004ad267ae59bdf929ada149b195888 1671 | addmod 1672 | dup4 1673 | swap1 1674 | dup2 1675 | dup1 1676 | dup3 1677 | dup1 1678 | mulmod 1679 | dup1 1680 | mulmod 1681 | mulmod 1682 | dup4 1683 | swap2 1684 | addmod 1685 | swap1 1686 | dup3 1687 | dup3 1688 | 0x34df65a82686be09c5b237911abf237a9887c1a418f279ac79b446d7d311f5ea 1689 | addmod 1690 | dup4 1691 | swap1 1692 | dup2 1693 | dup1 1694 | dup3 1695 | dup1 1696 | mulmod 1697 | dup1 1698 | mulmod 1699 | mulmod 1700 | dup4 1701 | swap2 1702 | addmod 1703 | swap1 1704 | dup3 1705 | dup3 1706 | 0x815a850c3989df9ca6231e0bdd9916fc0e076f2c6c7f0f260a846d0179f9c32d 1707 | addmod 1708 | dup4 1709 | swap1 1710 | dup2 1711 | dup1 1712 | dup3 1713 | dup1 1714 | mulmod 1715 | dup1 1716 | mulmod 1717 | mulmod 1718 | dup4 1719 | swap2 1720 | addmod 1721 | swap1 1722 | dup3 1723 | dup3 1724 | 0x50fb0940848a67aee83d348421fadd79aefc7a2adabeec6e64904ebe1bf63e7d 1725 | addmod 1726 | dup4 1727 | swap1 1728 | dup2 1729 | dup1 1730 | dup3 1731 | dup1 1732 | mulmod 1733 | dup1 1734 | mulmod 1735 | mulmod 1736 | dup4 1737 | swap2 1738 | addmod 1739 | swap1 1740 | dup3 1741 | dup3 1742 | 0xbab63a16273599f8b66895461e62a19ff0d103693be771d93e3691bba89cdd8d 1743 | addmod 1744 | dup4 1745 | swap1 1746 | dup2 1747 | dup1 1748 | dup3 1749 | dup1 1750 | mulmod 1751 | dup1 1752 | mulmod 1753 | mulmod 1754 | dup4 1755 | swap2 1756 | addmod 1757 | swap1 1758 | dup3 1759 | dup3 1760 | 0x6931a091756e0bc709ebecfffba5038634c5b3d5d0c5876dd72aac67452db8a2 1761 | addmod 1762 | dup4 1763 | swap1 1764 | dup2 1765 | dup1 1766 | dup3 1767 | dup1 1768 | mulmod 1769 | dup1 1770 | mulmod 1771 | mulmod 1772 | dup4 1773 | swap2 1774 | addmod 1775 | swap1 1776 | dup3 1777 | dup3 1778 | 0x55559b8bb79db8809c46ee627f1b5ce1d8e6d89bf94a9987a1407759d1ba8963 1779 | addmod 1780 | dup4 1781 | swap1 1782 | dup2 1783 | dup1 1784 | dup3 1785 | dup1 1786 | mulmod 1787 | dup1 1788 | mulmod 1789 | mulmod 1790 | dup4 1791 | swap2 1792 | addmod 1793 | swap1 1794 | dup3 1795 | dup3 1796 | 0xa9a1a11b2979018cb155914d09f1df19b7ffec241e8b2487b6f6272a56a44a0a 1797 | addmod 1798 | dup4 1799 | swap1 1800 | dup2 1801 | dup1 1802 | dup3 1803 | dup1 1804 | mulmod 1805 | dup1 1806 | mulmod 1807 | mulmod 1808 | dup4 1809 | swap2 1810 | addmod 1811 | swap1 1812 | dup3 1813 | dup3 1814 | 0xf83293400e7bccea4bb86dcb0d5ca57fa2466e13a572d7d3531c6fa491cb0f1b 1815 | addmod 1816 | dup4 1817 | swap1 1818 | dup2 1819 | dup1 1820 | dup3 1821 | dup1 1822 | mulmod 1823 | dup1 1824 | mulmod 1825 | mulmod 1826 | dup4 1827 | swap2 1828 | addmod 1829 | swap1 1830 | dup3 1831 | dup3 1832 | 0xb7cb5742b6bc5339624d3568a33c21f31b877f8396972582028da999abf249f2 1833 | addmod 1834 | dup4 1835 | swap1 1836 | dup2 1837 | dup1 1838 | dup3 1839 | dup1 1840 | mulmod 1841 | dup1 1842 | mulmod 1843 | mulmod 1844 | dup4 1845 | swap2 1846 | addmod 1847 | swap1 1848 | dup3 1849 | dup3 1850 | 0xf56efb400f8500b5c5bf811c65c86c7ed2e965f14f1a69bca436c0c60b79f465 1851 | addmod 1852 | dup4 1853 | swap1 1854 | dup2 1855 | dup1 1856 | dup3 1857 | dup1 1858 | mulmod 1859 | dup1 1860 | mulmod 1861 | mulmod 1862 | dup4 1863 | swap2 1864 | addmod 1865 | swap1 1866 | dup3 1867 | dup3 1868 | 0xd7c4427998d9c440f849dcd75b7157996eaad1b9a1d58cc2441931300e26eb22 1869 | addmod 1870 | dup4 1871 | swap1 1872 | dup2 1873 | dup1 1874 | dup3 1875 | dup1 1876 | mulmod 1877 | dup1 1878 | mulmod 1879 | mulmod 1880 | dup4 1881 | swap2 1882 | addmod 1883 | swap1 1884 | dup3 1885 | dup3 1886 | 0xca5ed18ad53e33fdc3ae8cf353ff3f6dd315f60060442b74f6b614b24ebd4cc3 1887 | addmod 1888 | dup4 1889 | swap1 1890 | dup2 1891 | dup1 1892 | dup3 1893 | dup1 1894 | mulmod 1895 | dup1 1896 | mulmod 1897 | mulmod 1898 | dup4 1899 | swap2 1900 | addmod 1901 | swap1 1902 | dup3 1903 | dup3 1904 | 0x9ad3e9376c97b194a0fbf43e22a3616981d777365c765ead09a1d033fdf536b7 1905 | addmod 1906 | dup4 1907 | swap1 1908 | dup2 1909 | dup1 1910 | dup3 1911 | dup1 1912 | mulmod 1913 | dup1 1914 | mulmod 1915 | mulmod 1916 | dup4 1917 | swap2 1918 | addmod 1919 | swap1 1920 | dup3 1921 | dup3 1922 | 0xc6daeff5769a06b26fe3b8fef30df07b1387373a7814cef364fe1d6059eaf54a 1923 | addmod 1924 | dup4 1925 | swap1 1926 | dup2 1927 | dup1 1928 | dup3 1929 | dup1 1930 | mulmod 1931 | dup1 1932 | mulmod 1933 | mulmod 1934 | dup4 1935 | swap2 1936 | addmod 1937 | swap1 1938 | dup3 1939 | dup3 1940 | 0xc20a78398345c6b8cf439643dab96223bf879c302648293eaf496fee5c978c66 1941 | addmod 1942 | dup4 1943 | swap1 1944 | dup2 1945 | dup1 1946 | dup3 1947 | dup1 1948 | mulmod 1949 | dup1 1950 | mulmod 1951 | mulmod 1952 | dup4 1953 | swap2 1954 | addmod 1955 | swap1 1956 | dup3 1957 | dup3 1958 | 0x589ca65b6cf0e90653c06dddc057dc61ba2839974569051c98b43e8618716efb 1959 | addmod 1960 | dup4 1961 | swap1 1962 | dup2 1963 | dup1 1964 | dup3 1965 | dup1 1966 | mulmod 1967 | dup1 1968 | mulmod 1969 | mulmod 1970 | dup4 1971 | swap2 1972 | addmod 1973 | swap1 1974 | dup3 1975 | dup3 1976 | 0x83064161f127d8c59fc73625957e21630dc6dc99e5443f6ce37ecd6bf28e69b7 1977 | addmod 1978 | dup4 1979 | swap1 1980 | dup2 1981 | dup1 1982 | dup3 1983 | dup1 1984 | mulmod 1985 | dup1 1986 | mulmod 1987 | mulmod 1988 | dup4 1989 | swap2 1990 | addmod 1991 | swap1 1992 | dup3 1993 | dup3 1994 | 0x46d0ba662b50100b9a3af52052f68932feec1d12290b2033c4f49148893d8ba3 1995 | addmod 1996 | dup4 1997 | swap1 1998 | dup2 1999 | dup1 2000 | dup3 2001 | dup1 2002 | mulmod 2003 | dup1 2004 | mulmod 2005 | mulmod 2006 | dup4 2007 | swap2 2008 | addmod 2009 | swap1 2010 | dup3 2011 | dup3 2012 | 0x18dd55b4a83a53f2ee578eb3e6d26f594824d44670fc3f4de80642344d15c09a 2013 | addmod 2014 | dup4 2015 | swap1 2016 | dup2 2017 | dup1 2018 | dup3 2019 | dup1 2020 | mulmod 2021 | dup1 2022 | mulmod 2023 | mulmod 2024 | dup4 2025 | swap2 2026 | addmod 2027 | swap1 2028 | dup3 2029 | dup3 2030 | 0x9fb5b594f48bc58b345ab90ded705920a7274b8e070eee8ce8cf90c72c3604b6 2031 | addmod 2032 | dup4 2033 | swap1 2034 | dup2 2035 | dup1 2036 | dup3 2037 | dup1 2038 | mulmod 2039 | dup1 2040 | mulmod 2041 | mulmod 2042 | dup4 2043 | swap2 2044 | addmod 2045 | swap1 2046 | dup3 2047 | dup3 2048 | 0x1901d8f4f2c8449128e00663978f2050f2eb1cd6acb60d9d09c57c5d46ee54fe 2049 | addmod 2050 | dup4 2051 | swap1 2052 | dup2 2053 | dup1 2054 | dup3 2055 | dup1 2056 | mulmod 2057 | dup1 2058 | mulmod 2059 | mulmod 2060 | dup4 2061 | swap2 2062 | addmod 2063 | swap1 2064 | dup3 2065 | dup3 2066 | 0x5ec56789beab24ef7ee32f594d5fc561ec59dfeb93606dc7dcc6fe65133a7db4 2067 | addmod 2068 | dup4 2069 | swap1 2070 | dup2 2071 | dup1 2072 | dup3 2073 | dup1 2074 | mulmod 2075 | dup1 2076 | mulmod 2077 | mulmod 2078 | dup4 2079 | swap2 2080 | addmod 2081 | swap1 2082 | dup3 2083 | dup3 2084 | 0x01c0b2cbe4fa9877a3d08eb67c510e8630da0a8beda94a6d9283e6f70d268bc5 2085 | addmod 2086 | dup4 2087 | swap1 2088 | dup2 2089 | dup1 2090 | dup3 2091 | dup1 2092 | mulmod 2093 | dup1 2094 | mulmod 2095 | mulmod 2096 | dup4 2097 | swap2 2098 | addmod 2099 | swap1 2100 | dup3 2101 | dup3 2102 | 0x0b1d85acd9031a9107350eed946a25734e974799c5ba7cff13b15a5a623a25f0 2103 | addmod 2104 | dup4 2105 | swap1 2106 | dup2 2107 | dup1 2108 | dup3 2109 | dup1 2110 | mulmod 2111 | dup1 2112 | mulmod 2113 | mulmod 2114 | dup4 2115 | swap2 2116 | addmod 2117 | swap1 2118 | dup3 2119 | dup3 2120 | 0x204497d1d359552905a2fe655f3d6f94926ea92d12cdaa6556ec26362f239f64 2121 | addmod 2122 | dup4 2123 | swap1 2124 | dup2 2125 | dup1 2126 | dup3 2127 | dup1 2128 | mulmod 2129 | dup1 2130 | mulmod 2131 | mulmod 2132 | dup4 2133 | swap2 2134 | addmod 2135 | swap1 2136 | dup3 2137 | dup3 2138 | 0xe075f7edc6631a8d7ffe33019f44fc91f286236d5a5f90f16de4791b72a2a5f0 2139 | addmod 2140 | dup4 2141 | swap1 2142 | dup2 2143 | dup1 2144 | dup3 2145 | dup1 2146 | mulmod 2147 | dup1 2148 | mulmod 2149 | mulmod 2150 | dup4 2151 | swap2 2152 | addmod 2153 | swap1 2154 | dup3 2155 | dup3 2156 | 0x243f46e353354256ab8fe0ca4e9230dfc330bc163e602dfeaf307c1d1a7264b9 2157 | addmod 2158 | dup4 2159 | swap1 2160 | dup2 2161 | dup1 2162 | dup3 2163 | dup1 2164 | mulmod 2165 | dup1 2166 | mulmod 2167 | mulmod 2168 | dup4 2169 | swap2 2170 | addmod 2171 | swap1 2172 | dup3 2173 | dup3 2174 | 0xd448ae5e09625fa1fcfd732fc9cd8f06e4c33b81f0a9240c83da56f41e9ecceb 2175 | addmod 2176 | dup4 2177 | swap1 2178 | dup2 2179 | dup1 2180 | dup3 2181 | dup1 2182 | mulmod 2183 | dup1 2184 | mulmod 2185 | mulmod 2186 | dup4 2187 | swap2 2188 | addmod 2189 | swap1 2190 | dup3 2191 | dup3 2192 | 0x2f312eef69a33d9fa753c08840275692a03432b3e6da67f9c59b9f9f4971cd56 2193 | addmod 2194 | dup4 2195 | swap1 2196 | dup2 2197 | dup1 2198 | dup3 2199 | dup1 2200 | mulmod 2201 | dup1 2202 | mulmod 2203 | mulmod 2204 | dup4 2205 | swap2 2206 | addmod 2207 | swap1 2208 | dup3 2209 | dup3 2210 | 0x5f333996af231bd5a293137da91801e191a6f24eb532ad1a7e6e9a2ad0efbc00 2211 | addmod 2212 | dup4 2213 | swap1 2214 | dup2 2215 | dup1 2216 | dup3 2217 | dup1 2218 | mulmod 2219 | dup1 2220 | mulmod 2221 | mulmod 2222 | dup4 2223 | swap2 2224 | addmod 2225 | swap1 2226 | dup3 2227 | dup3 2228 | 0xa8f771e0383a832dc8e2eaa8efabda300947acaf0684fabddf8b4abb0abd8a62 2229 | addmod 2230 | dup4 2231 | swap1 2232 | dup2 2233 | dup1 2234 | dup3 2235 | dup1 2236 | mulmod 2237 | dup1 2238 | mulmod 2239 | mulmod 2240 | dup4 2241 | swap2 2242 | addmod 2243 | swap1 2244 | dup3 2245 | dup3 2246 | 0x9ff0b3d7a4643596f651b70c1963cc4fa6c46018d78f05cb2c5f187e25df83a9 2247 | addmod 2248 | dup4 2249 | swap1 2250 | dup2 2251 | dup1 2252 | dup3 2253 | dup1 2254 | mulmod 2255 | dup1 2256 | mulmod 2257 | mulmod 2258 | dup4 2259 | swap2 2260 | addmod 2261 | swap1 2262 | dup3 2263 | dup3 2264 | 0x9c373b704838325648273734dcdf962d7c156f431f70380ba4855832c4a238b8 2265 | addmod 2266 | dup4 2267 | swap1 2268 | dup2 2269 | dup1 2270 | dup3 2271 | dup1 2272 | mulmod 2273 | dup1 2274 | mulmod 2275 | mulmod 2276 | dup4 2277 | swap2 2278 | addmod 2279 | swap1 2280 | dup3 2281 | dup3 2282 | 0xea2afa02604b8afeeb570f48a0e97a5e6bfe9613394b9a6b0026ecd6cec8c33a 2283 | addmod 2284 | dup4 2285 | swap1 2286 | dup2 2287 | dup1 2288 | dup3 2289 | dup1 2290 | mulmod 2291 | dup1 2292 | mulmod 2293 | mulmod 2294 | dup4 2295 | swap2 2296 | addmod 2297 | swap1 2298 | dup3 2299 | dup3 2300 | 0x68892258cd8eb43b71caa6d6837ec9959bfdfd72f25c9005ebaffc4011f8a7bf 2301 | addmod 2302 | dup4 2303 | swap1 2304 | dup2 2305 | dup1 2306 | dup3 2307 | dup1 2308 | mulmod 2309 | dup1 2310 | mulmod 2311 | mulmod 2312 | dup4 2313 | swap2 2314 | addmod 2315 | swap1 2316 | dup3 2317 | dup3 2318 | 0xf2824f561f6f82e3c1232836b0d268fa3b1b5489edd39a5fe1503bfc7ca91f49 2319 | addmod 2320 | dup4 2321 | swap1 2322 | dup2 2323 | dup1 2324 | dup3 2325 | dup1 2326 | mulmod 2327 | dup1 2328 | mulmod 2329 | mulmod 2330 | dup4 2331 | swap2 2332 | addmod 2333 | swap1 2334 | dup3 2335 | dup3 2336 | 0x164eda75fda2861f9d812f24e37ac938844fbe383c243b32b9f66ae2e76be719 2337 | addmod 2338 | dup4 2339 | swap1 2340 | dup2 2341 | dup1 2342 | dup3 2343 | dup1 2344 | mulmod 2345 | dup1 2346 | mulmod 2347 | mulmod 2348 | dup4 2349 | swap2 2350 | addmod 2351 | swap1 2352 | dup3 2353 | dup3 2354 | 0xf0a6fc431f5bf0dd1cca93b8b65b3f72c91f0693e2c74be9243b15abb31afcc0 2355 | addmod 2356 | dup4 2357 | swap1 2358 | dup2 2359 | dup1 2360 | dup3 2361 | dup1 2362 | mulmod 2363 | dup1 2364 | mulmod 2365 | mulmod 2366 | dup4 2367 | swap2 2368 | addmod 2369 | swap1 2370 | dup3 2371 | dup3 2372 | 0xe68db66ba891ef0cd527f09ec6fff3ec0a269cf3d891a35ec13c902f70334b4f 2373 | addmod 2374 | dup4 2375 | swap1 2376 | dup2 2377 | dup1 2378 | dup3 2379 | dup1 2380 | mulmod 2381 | dup1 2382 | mulmod 2383 | mulmod 2384 | dup4 2385 | swap2 2386 | addmod 2387 | swap1 2388 | dup3 2389 | dup3 2390 | 0x3a44a5b102f7883a2b8630a3cae6e6db2e6e483bb7cfeb3492cbd91793ef598e 2391 | addmod 2392 | dup4 2393 | swap1 2394 | dup2 2395 | dup1 2396 | dup3 2397 | dup1 2398 | mulmod 2399 | dup1 2400 | mulmod 2401 | mulmod 2402 | dup4 2403 | swap2 2404 | addmod 2405 | swap1 2406 | dup3 2407 | dup3 2408 | 0x43939fe8ef789acb33cbf129ba8a3aa1bd61510a178022a05177c9c5a1c59bf1 2409 | addmod 2410 | dup4 2411 | swap1 2412 | dup2 2413 | dup1 2414 | dup3 2415 | dup1 2416 | mulmod 2417 | dup1 2418 | mulmod 2419 | mulmod 2420 | dup4 2421 | swap2 2422 | addmod 2423 | swap1 2424 | dup3 2425 | dup3 2426 | 0x936fe3b66dfda1bc5a7aae241b4db442858bd720c1d579c0c869f273cd55d774 2427 | addmod 2428 | dup4 2429 | swap1 2430 | dup2 2431 | dup1 2432 | dup3 2433 | dup1 2434 | mulmod 2435 | dup1 2436 | mulmod 2437 | mulmod 2438 | dup4 2439 | swap2 2440 | addmod 2441 | swap1 2442 | dup3 2443 | dup3 2444 | 0x3490fcaa8ffa37f35dc67ae006e81352c7103945417b8e4b142afcaefa344b85 2445 | addmod 2446 | dup4 2447 | swap1 2448 | dup2 2449 | dup1 2450 | dup3 2451 | dup1 2452 | mulmod 2453 | dup1 2454 | mulmod 2455 | mulmod 2456 | dup4 2457 | swap2 2458 | addmod 2459 | swap1 2460 | dup3 2461 | dup3 2462 | 0xcae66096cff344caca53ffe0e58aafeb468bd174f00d8abc425b2099c0881874 2463 | addmod 2464 | dup4 2465 | swap1 2466 | dup2 2467 | dup1 2468 | dup3 2469 | dup1 2470 | mulmod 2471 | dup1 2472 | mulmod 2473 | mulmod 2474 | dup4 2475 | swap2 2476 | addmod 2477 | swap1 2478 | dup3 2479 | dup3 2480 | 0xc7d05783a41bc14f3c9a45384b6d5e2547c5b6a224c8316910b208f2718a70ab 2481 | addmod 2482 | dup4 2483 | swap1 2484 | dup2 2485 | dup1 2486 | dup3 2487 | dup1 2488 | mulmod 2489 | dup1 2490 | mulmod 2491 | mulmod 2492 | dup4 2493 | swap2 2494 | addmod 2495 | swap1 2496 | dup3 2497 | dup3 2498 | 0x5ac6b9ba94040d5692b865b6677b60ef3201b5c2121699f70beb9f9b2528a026 2499 | addmod 2500 | dup4 2501 | swap1 2502 | dup2 2503 | dup1 2504 | dup3 2505 | dup1 2506 | mulmod 2507 | dup1 2508 | mulmod 2509 | mulmod 2510 | dup4 2511 | swap2 2512 | addmod 2513 | swap1 2514 | dup3 2515 | dup3 2516 | 0xa902a3d4d9ecbfb9b2c76fddf780554bf93cad97b244e805d3adb94e18162900 2517 | addmod 2518 | dup4 2519 | swap1 2520 | dup2 2521 | dup1 2522 | dup3 2523 | dup1 2524 | mulmod 2525 | dup1 2526 | mulmod 2527 | mulmod 2528 | dup4 2529 | swap2 2530 | addmod 2531 | swap1 2532 | dup3 2533 | dup3 2534 | 0xe9df91ffeeb086a4d26041c29dac6fca1d56a4d022fe34b38831267395b98d27 2535 | addmod 2536 | dup4 2537 | swap1 2538 | dup2 2539 | dup1 2540 | dup3 2541 | dup1 2542 | mulmod 2543 | dup1 2544 | mulmod 2545 | mulmod 2546 | dup4 2547 | swap2 2548 | addmod 2549 | swap1 2550 | dup3 2551 | dup3 2552 | 0x862646f851d91a8840ad9ee711f12ec13b3e8f980ff5ef5ee43ca4520d57def7 2553 | addmod 2554 | dup4 2555 | swap1 2556 | dup2 2557 | dup1 2558 | dup3 2559 | dup1 2560 | mulmod 2561 | dup1 2562 | mulmod 2563 | mulmod 2564 | dup4 2565 | swap2 2566 | addmod 2567 | swap1 2568 | dup3 2569 | dup3 2570 | 0x30b7381c9725b9db07816baf8524943a79cea135807c84cce0833485c11e0c2e 2571 | addmod 2572 | dup4 2573 | swap1 2574 | dup2 2575 | dup1 2576 | dup3 2577 | dup1 2578 | mulmod 2579 | dup1 2580 | mulmod 2581 | mulmod 2582 | dup4 2583 | swap2 2584 | addmod 2585 | swap1 2586 | dup3 2587 | dup3 2588 | 0x96afc10c5cedaddbda99df79387397c9be74a5b50f3a0c04ccb68d4e0f3a989f 2589 | addmod 2590 | dup4 2591 | swap1 2592 | dup2 2593 | dup1 2594 | dup3 2595 | dup1 2596 | mulmod 2597 | dup1 2598 | mulmod 2599 | mulmod 2600 | dup4 2601 | swap2 2602 | addmod 2603 | swap1 2604 | dup3 2605 | dup3 2606 | 0x3543da80d10da251c548776fe907c4ef89993d62e0062ae5c0496fcb851c3661 2607 | addmod 2608 | dup4 2609 | swap1 2610 | dup2 2611 | dup1 2612 | dup3 2613 | dup1 2614 | mulmod 2615 | dup1 2616 | mulmod 2617 | mulmod 2618 | dup4 2619 | swap2 2620 | addmod 2621 | swap1 2622 | dup3 2623 | dup3 2624 | 0xe5140fe26d8b008430fccd50a68e3e11c1163d63b6d8b7cc40bc6f3c1d0b1b06 2625 | addmod 2626 | dup4 2627 | swap1 2628 | dup2 2629 | dup1 2630 | dup3 2631 | dup1 2632 | mulmod 2633 | dup1 2634 | mulmod 2635 | mulmod 2636 | dup4 2637 | swap2 2638 | addmod 2639 | swap1 2640 | dup3 2641 | dup3 2642 | 0xfefdf1872e4475e8bbb0ef6fab7f561bff121314695c433bd4c29ec118060c96 2643 | addmod 2644 | dup4 2645 | swap1 2646 | dup2 2647 | dup1 2648 | dup3 2649 | dup1 2650 | mulmod 2651 | dup1 2652 | mulmod 2653 | mulmod 2654 | dup4 2655 | swap2 2656 | addmod 2657 | swap1 2658 | dup3 2659 | dup3 2660 | 0x6bb8c9f3d57b18e002df059db1e6a5d42ad566f153f18460774f68ac26509400 2661 | addmod 2662 | dup4 2663 | swap1 2664 | dup2 2665 | dup1 2666 | dup3 2667 | dup1 2668 | mulmod 2669 | dup1 2670 | mulmod 2671 | mulmod 2672 | dup4 2673 | swap2 2674 | addmod 2675 | swap1 2676 | dup3 2677 | dup3 2678 | 0x5415122d50b26f4fab5784004c56cf03f128f825ad2236f4b3d51f74737bd973 2679 | addmod 2680 | dup4 2681 | swap1 2682 | dup2 2683 | dup1 2684 | dup3 2685 | dup1 2686 | mulmod 2687 | dup1 2688 | mulmod 2689 | mulmod 2690 | dup4 2691 | swap2 2692 | addmod 2693 | swap1 2694 | dup3 2695 | dup3 2696 | 0x00e115c4a98efae6a3a5ecc873b0cef63ccd5b515710a3ab03ec52218f784dc9 2697 | addmod 2698 | dup4 2699 | swap1 2700 | dup2 2701 | dup1 2702 | dup3 2703 | dup1 2704 | mulmod 2705 | dup1 2706 | mulmod 2707 | mulmod 2708 | dup4 2709 | swap2 2710 | addmod 2711 | swap1 2712 | dup3 2713 | dup3 2714 | 0xda7d525427bad87b88238657c21331245578bc76aa6240b7f972382537a202ab 2715 | addmod 2716 | dup4 2717 | swap1 2718 | dup2 2719 | dup1 2720 | dup3 2721 | dup1 2722 | mulmod 2723 | dup1 2724 | mulmod 2725 | mulmod 2726 | dup4 2727 | swap2 2728 | addmod 2729 | swap1 2730 | dup3 2731 | dup3 2732 | 0x83332e8b34505b83010270dc795290a2f515b8f89c163acecdf4799df04c62f8 2733 | addmod 2734 | dup4 2735 | swap1 2736 | dup2 2737 | dup1 2738 | dup3 2739 | dup1 2740 | mulmod 2741 | dup1 2742 | mulmod 2743 | mulmod 2744 | dup4 2745 | swap2 2746 | addmod 2747 | swap1 2748 | dup3 2749 | dup3 2750 | 0xb09ecb6033d1a065f17a61066cd737d0c3c5873b51c3ab0a285e26939e62aa18 2751 | addmod 2752 | dup4 2753 | swap1 2754 | dup2 2755 | dup1 2756 | dup3 2757 | dup1 2758 | mulmod 2759 | dup1 2760 | mulmod 2761 | mulmod 2762 | dup4 2763 | swap2 2764 | addmod 2765 | swap1 2766 | dup3 2767 | dup3 2768 | 0x24e65c718938c2b937378e7435332174329730bde85a4185e37875824eb49859 2769 | addmod 2770 | dup4 2771 | swap1 2772 | dup2 2773 | dup1 2774 | dup3 2775 | dup1 2776 | mulmod 2777 | dup1 2778 | mulmod 2779 | mulmod 2780 | dup4 2781 | swap2 2782 | addmod 2783 | swap1 2784 | dup3 2785 | dup3 2786 | 0x68e41430ccd41cc5e92a9f9acd2e955c1385b9f5ed8d3f133d767429484a8eba 2787 | addmod 2788 | dup4 2789 | swap1 2790 | dup2 2791 | dup1 2792 | dup3 2793 | dup1 2794 | mulmod 2795 | dup1 2796 | mulmod 2797 | mulmod 2798 | dup4 2799 | swap2 2800 | addmod 2801 | swap1 2802 | dup3 2803 | dup3 2804 | 0xc038fe9d0125ab8be54545276f841274e414c596ed4c9eaa6919604603d1ffa9 2805 | addmod 2806 | dup4 2807 | swap1 2808 | dup2 2809 | dup1 2810 | dup3 2811 | dup1 2812 | mulmod 2813 | dup1 2814 | mulmod 2815 | mulmod 2816 | dup4 2817 | swap2 2818 | addmod 2819 | swap1 2820 | dup3 2821 | dup3 2822 | 0x23248698612cd8e83234fcf5db9b6b225f4b0ba78d72ef13ea1edff5f0fb0298 2823 | addmod 2824 | dup4 2825 | swap1 2826 | dup2 2827 | dup1 2828 | dup3 2829 | dup1 2830 | mulmod 2831 | dup1 2832 | mulmod 2833 | mulmod 2834 | dup4 2835 | swap2 2836 | addmod 2837 | swap1 2838 | dup3 2839 | dup3 2840 | 0xd2a9fa3d39c1ba91eefa666a1db71c6e0e4e3b707626b0197a4e59e7110cf0d4 2841 | addmod 2842 | dup4 2843 | swap1 2844 | dup2 2845 | dup1 2846 | dup3 2847 | dup1 2848 | mulmod 2849 | dup1 2850 | mulmod 2851 | mulmod 2852 | dup4 2853 | swap2 2854 | addmod 2855 | swap1 2856 | dup3 2857 | dup3 2858 | 0xc28931ee7dfa02b62872e0d937ba3dc5c637118273a1f1f0c4fc880905c82efc 2859 | addmod 2860 | dup4 2861 | swap1 2862 | dup2 2863 | dup1 2864 | dup3 2865 | dup1 2866 | mulmod 2867 | dup1 2868 | mulmod 2869 | mulmod 2870 | dup4 2871 | swap2 2872 | addmod 2873 | swap1 2874 | dup3 2875 | dup3 2876 | 0x01cd399556445e3d7b201d6c5e56a5794e60be2cfd9a4643e7ead79bb4f60f79 2877 | addmod 2878 | dup4 2879 | swap1 2880 | dup2 2881 | dup1 2882 | dup3 2883 | dup1 2884 | mulmod 2885 | dup1 2886 | mulmod 2887 | mulmod 2888 | dup4 2889 | swap2 2890 | addmod 2891 | swap1 2892 | dup3 2893 | dup3 2894 | 0xac855cc58d5fbb0dff91a79683eb0e914c1b7d8d0a540d416838a89f83a8312f 2895 | addmod 2896 | dup4 2897 | swap1 2898 | dup2 2899 | dup1 2900 | dup3 2901 | dup1 2902 | mulmod 2903 | dup1 2904 | mulmod 2905 | mulmod 2906 | dup4 2907 | swap2 2908 | addmod 2909 | swap1 2910 | dup3 2911 | dup3 2912 | 0xf7798af7ccf36b836705849f7dd40328bf9346657255b431446ec75a68171816 2913 | addmod 2914 | dup4 2915 | swap1 2916 | dup2 2917 | dup1 2918 | dup3 2919 | dup1 2920 | mulmod 2921 | dup1 2922 | mulmod 2923 | mulmod 2924 | dup4 2925 | swap2 2926 | addmod 2927 | swap1 2928 | dup3 2929 | dup3 2930 | 0xe52a24c92d3f067bf551eeaf98c62ba525e84882d7adad835fad8de72986b2b1 2931 | addmod 2932 | dup4 2933 | swap1 2934 | dup2 2935 | dup1 2936 | dup3 2937 | dup1 2938 | mulmod 2939 | dup1 2940 | mulmod 2941 | mulmod 2942 | dup4 2943 | swap2 2944 | addmod 2945 | swap1 2946 | dup3 2947 | dup3 2948 | 0xffc8682759a2bf1dd67c87a77c285467801f1c44fd78fa4eb5957a4832c9d72d 2949 | addmod 2950 | dup4 2951 | swap1 2952 | dup2 2953 | dup1 2954 | dup3 2955 | dup1 2956 | mulmod 2957 | dup1 2958 | mulmod 2959 | mulmod 2960 | dup4 2961 | swap2 2962 | addmod 2963 | swap1 2964 | dup3 2965 | dup3 2966 | 0x1482ac3e7e4f321627850d95a13942aea6d2923402b913046856ff7e8aaf9aff 2967 | addmod 2968 | dup4 2969 | swap1 2970 | dup2 2971 | dup1 2972 | dup3 2973 | dup1 2974 | mulmod 2975 | dup1 2976 | mulmod 2977 | mulmod 2978 | dup4 2979 | swap2 2980 | addmod 2981 | swap1 2982 | dup3 2983 | dup3 2984 | 0x17332b4c7aac2a07ccfe954de7ad22ccf6fcb4c5fa15c130ed22a40ae9398f47 2985 | addmod 2986 | dup4 2987 | swap1 2988 | dup2 2989 | dup1 2990 | dup3 2991 | dup1 2992 | mulmod 2993 | dup1 2994 | mulmod 2995 | mulmod 2996 | dup4 2997 | swap2 2998 | addmod 2999 | swap1 3000 | dup3 3001 | dup3 3002 | 0xd4be0546013f84a0d1e118b37589723b58e323983263616d1b036f8b3fdd8583 3003 | addmod 3004 | dup4 3005 | swap1 3006 | dup2 3007 | dup1 3008 | dup3 3009 | dup1 3010 | mulmod 3011 | dup1 3012 | mulmod 3013 | mulmod 3014 | dup4 3015 | swap2 3016 | addmod 3017 | swap1 3018 | dup3 3019 | dup3 3020 | 0xa64ec737d31dddf939b184438ccdd3e1d3e667572857cd6c9c31a0d1d9b7b085 3021 | addmod 3022 | dup4 3023 | swap1 3024 | dup2 3025 | dup1 3026 | dup3 3027 | dup1 3028 | mulmod 3029 | dup1 3030 | mulmod 3031 | mulmod 3032 | dup4 3033 | swap2 3034 | addmod 3035 | swap1 3036 | dup3 3037 | dup3 3038 | 0x8ad12fbc74117cff4743d674539c86548c6758710a07a6abe3715e4b53526d34 3039 | addmod 3040 | dup4 3041 | swap1 3042 | dup2 3043 | dup1 3044 | dup3 3045 | dup1 3046 | mulmod 3047 | dup1 3048 | mulmod 3049 | mulmod 3050 | dup4 3051 | swap2 3052 | addmod 3053 | swap1 3054 | dup3 3055 | dup3 3056 | 0x15a16435a2300b27a337561401f06682ba85019aa0af61b264a1177d38b5c13c 3057 | addmod 3058 | dup4 3059 | swap1 3060 | dup2 3061 | dup1 3062 | dup3 3063 | dup1 3064 | mulmod 3065 | dup1 3066 | mulmod 3067 | mulmod 3068 | dup4 3069 | swap2 3070 | addmod 3071 | swap1 3072 | dup3 3073 | dup3 3074 | 0x22616f306e76352293a22ab6ee15509d9b108d4136b32fa7f9ed259793f392a1 3075 | addmod 3076 | dup4 3077 | swap1 3078 | dup2 3079 | dup1 3080 | dup3 3081 | dup1 3082 | mulmod 3083 | dup1 3084 | mulmod 3085 | mulmod 3086 | dup4 3087 | swap2 3088 | addmod 3089 | swap1 3090 | dup3 3091 | dup3 3092 | 0x519727b25560caf00ce0d3f911bd4356f907160ab5186da10a629c7ccae1851e 3093 | addmod 3094 | dup4 3095 | swap1 3096 | dup2 3097 | dup1 3098 | dup3 3099 | dup1 3100 | mulmod 3101 | dup1 3102 | mulmod 3103 | mulmod 3104 | dup4 3105 | swap2 3106 | addmod 3107 | swap1 3108 | dup3 3109 | dup3 3110 | 0xcff39e77928ce9310118d50e29bc87e7f78b53ad51366359aa17f07902ae6392 3111 | addmod 3112 | dup4 3113 | swap1 3114 | dup2 3115 | dup1 3116 | dup3 3117 | dup1 3118 | mulmod 3119 | dup1 3120 | mulmod 3121 | mulmod 3122 | dup4 3123 | swap2 3124 | addmod 3125 | swap1 3126 | dup3 3127 | dup3 3128 | 0x17dead3bfa1968c744118023dead77cdbee22c5b7c2414f5a6bdf82fd94cf3ad 3129 | addmod 3130 | dup4 3131 | swap1 3132 | dup2 3133 | dup1 3134 | dup3 3135 | dup1 3136 | mulmod 3137 | dup1 3138 | mulmod 3139 | mulmod 3140 | dup4 3141 | swap2 3142 | addmod 3143 | swap1 3144 | dup3 3145 | dup3 3146 | 0x2bef0f8b22a1cfb90100f4a552a9d02b772130123de8144a00c4d57497e1d7f4 3147 | addmod 3148 | dup4 3149 | swap1 3150 | dup2 3151 | dup1 3152 | dup3 3153 | dup1 3154 | mulmod 3155 | dup1 3156 | mulmod 3157 | mulmod 3158 | dup4 3159 | swap2 3160 | addmod 3161 | swap1 3162 | dup3 3163 | dup3 3164 | 0xbf5188713fef90b31c35243f92cfa4331ab076e30e24b355c79b01f41d152a11 3165 | addmod 3166 | dup4 3167 | swap1 3168 | dup2 3169 | dup1 3170 | dup3 3171 | dup1 3172 | mulmod 3173 | dup1 3174 | mulmod 3175 | mulmod 3176 | dup4 3177 | swap2 3178 | addmod 3179 | swap1 3180 | dup3 3181 | dup3 3182 | 0x3baadd2fd92e3e12fb371be0578941dc0a108fbca0a7d81b88316fb94d6b4dfe 3183 | addmod 3184 | dup4 3185 | swap1 3186 | dup2 3187 | dup1 3188 | dup3 3189 | dup1 3190 | mulmod 3191 | dup1 3192 | mulmod 3193 | mulmod 3194 | dup4 3195 | swap2 3196 | addmod 3197 | swap1 3198 | dup3 3199 | dup3 3200 | 0xd4f955742e20a28d38611bf9fc4a478c97b673a7cd40d0113a58a1efe338d9aa 3201 | addmod 3202 | dup4 3203 | swap1 3204 | dup2 3205 | dup1 3206 | dup3 3207 | dup1 3208 | mulmod 3209 | dup1 3210 | mulmod 3211 | mulmod 3212 | dup4 3213 | swap2 3214 | addmod 3215 | swap1 3216 | dup3 3217 | dup3 3218 | 0x3c1c3fe9a5f7ccd54ad5a51a224b3f94775266d19c3733017e4920d7391ad645 3219 | addmod 3220 | dup4 3221 | swap1 3222 | dup2 3223 | dup1 3224 | dup3 3225 | dup1 3226 | mulmod 3227 | dup1 3228 | mulmod 3229 | mulmod 3230 | dup4 3231 | swap2 3232 | addmod 3233 | swap1 3234 | dup3 3235 | dup3 3236 | 0x6372df6148abeed66fda5461779a9651130c6c525df733852bcd929016768a7a 3237 | addmod 3238 | dup4 3239 | swap1 3240 | dup2 3241 | dup1 3242 | dup3 3243 | dup1 3244 | mulmod 3245 | dup1 3246 | mulmod 3247 | mulmod 3248 | dup4 3249 | swap2 3250 | addmod 3251 | swap1 3252 | dup3 3253 | dup3 3254 | 0x6d098e848fb853f95adb5a6364b5ab33c79fb08877f2cf3e0e160d9fcb3ebcc5 3255 | addmod 3256 | dup4 3257 | swap1 3258 | dup2 3259 | dup1 3260 | dup3 3261 | dup1 3262 | mulmod 3263 | dup1 3264 | mulmod 3265 | mulmod 3266 | dup4 3267 | swap2 3268 | addmod 3269 | swap1 3270 | dup3 3271 | dup3 3272 | 0x48c5fc90f27431fabfe496dfba14bb0dba71141eb5472a365fd13023f4fe6296 3273 | addmod 3274 | dup4 3275 | swap1 3276 | dup2 3277 | dup1 3278 | dup3 3279 | dup1 3280 | mulmod 3281 | dup1 3282 | mulmod 3283 | mulmod 3284 | dup4 3285 | swap2 3286 | addmod 3287 | swap1 3288 | dup3 3289 | dup3 3290 | 0xbb988dfc0c4dfe53999bd34840adcb63fdbf501ccd622ca2ddf5064ad8cdebf4 3291 | addmod 3292 | dup4 3293 | swap1 3294 | dup2 3295 | dup1 3296 | dup3 3297 | dup1 3298 | mulmod 3299 | dup1 3300 | mulmod 3301 | mulmod 3302 | dup4 3303 | swap2 3304 | addmod 3305 | swap1 3306 | dup3 3307 | dup3 3308 | 0x25b068c942724c424ed5851c9575c22752c9bd25f91ebfa589de3d88ee7627f9 3309 | addmod 3310 | dup4 3311 | swap1 3312 | dup2 3313 | dup1 3314 | dup3 3315 | dup1 3316 | mulmod 3317 | dup1 3318 | mulmod 3319 | mulmod 3320 | dup4 3321 | swap2 3322 | addmod 3323 | swap1 3324 | dup3 3325 | dup3 3326 | 0xed98a1931e361add218de11ff7879bd7114cda19c24ddbe15b3b0190ce01e1aa 3327 | addmod 3328 | dup4 3329 | swap1 3330 | dup2 3331 | dup1 3332 | dup3 3333 | dup1 3334 | mulmod 3335 | dup1 3336 | mulmod 3337 | mulmod 3338 | dup4 3339 | swap2 3340 | addmod 3341 | swap1 3342 | dup3 3343 | dup3 3344 | 0xc80b5a7d63f6c43542ad612023d3ffd6c684ce2eab837180addcb4decf518544 3345 | addmod 3346 | dup4 3347 | swap1 3348 | dup2 3349 | dup1 3350 | dup3 3351 | dup1 3352 | mulmod 3353 | dup1 3354 | mulmod 3355 | mulmod 3356 | dup4 3357 | swap2 3358 | addmod 3359 | swap1 3360 | dup3 3361 | dup3 3362 | 0xe2ef24bf47c5203118c6ff96657dd3c6fdff7212d5c798d826455de77b4b70cd 3363 | addmod 3364 | dup4 3365 | swap1 3366 | dup2 3367 | dup1 3368 | dup3 3369 | dup1 3370 | mulmod 3371 | dup1 3372 | mulmod 3373 | mulmod 3374 | dup4 3375 | swap2 3376 | addmod 3377 | swap1 3378 | dup3 3379 | dup3 3380 | 0x907da812fd5a8375587e4860f87691d0a8d61d454c507d09e5562e1a5d0fcc76 3381 | addmod 3382 | dup4 3383 | swap1 3384 | dup2 3385 | dup1 3386 | dup3 3387 | dup1 3388 | mulmod 3389 | dup1 3390 | mulmod 3391 | mulmod 3392 | dup4 3393 | swap2 3394 | addmod 3395 | swap1 3396 | dup3 3397 | dup3 3398 | 0xc459abbc62bc6070cacdff597e97990de56edc51cc6643afb0f6789fef1bad63 3399 | addmod 3400 | dup4 3401 | swap1 3402 | dup2 3403 | dup1 3404 | dup3 3405 | dup1 3406 | mulmod 3407 | dup1 3408 | mulmod 3409 | mulmod 3410 | dup4 3411 | swap2 3412 | addmod 3413 | swap1 3414 | dup3 3415 | dup3 3416 | 0x38d61f5e566855d70d36ef0f0f1fefcd7c829bdd60d95e0ef1fb5b98856280a4 3417 | addmod 3418 | dup4 3419 | swap1 3420 | dup2 3421 | dup1 3422 | dup3 3423 | dup1 3424 | mulmod 3425 | dup1 3426 | mulmod 3427 | mulmod 3428 | dup4 3429 | swap2 3430 | addmod 3431 | swap1 3432 | dup3 3433 | dup3 3434 | 0x13218626665c420d3aa2b0fa49224a3dce8e08b8b56f8851bd9cb5e25cb3042d 3435 | addmod 3436 | dup4 3437 | swap1 3438 | dup2 3439 | dup1 3440 | dup3 3441 | dup1 3442 | mulmod 3443 | dup1 3444 | mulmod 3445 | mulmod 3446 | dup4 3447 | swap2 3448 | addmod 3449 | swap1 3450 | dup3 3451 | dup3 3452 | 0x6f685fb152dba21b4d02422e237e246df73d7d711ae6d7d33983bae0f873e310 3453 | addmod 3454 | dup4 3455 | swap1 3456 | dup2 3457 | dup1 3458 | dup3 3459 | dup1 3460 | mulmod 3461 | dup1 3462 | mulmod 3463 | mulmod 3464 | dup4 3465 | swap2 3466 | addmod 3467 | swap1 3468 | dup3 3469 | dup3 3470 | 0x5ade34719e2498dde70e4571c40474475a4af706a3cb82ac18a7fa44c22d1c47 3471 | addmod 3472 | dup4 3473 | swap1 3474 | dup2 3475 | dup1 3476 | dup3 3477 | dup1 3478 | mulmod 3479 | dup1 3480 | mulmod 3481 | mulmod 3482 | dup4 3483 | swap2 3484 | addmod 3485 | swap1 3486 | dup3 3487 | dup3 3488 | 0x8a0c3dc7a496adca059cb95d9b173812a00f3c4d435e0b9e8116e0c4b5f56acb 3489 | addmod 3490 | dup4 3491 | swap1 3492 | dup2 3493 | dup1 3494 | dup3 3495 | dup1 3496 | mulmod 3497 | dup1 3498 | mulmod 3499 | mulmod 3500 | dup4 3501 | swap2 3502 | addmod 3503 | swap1 3504 | dup3 3505 | dup3 3506 | 0x196bc98252f63169ed79073ee091a0e8ed0b5af51017da143940c00bdb863709 3507 | addmod 3508 | dup4 3509 | swap1 3510 | dup2 3511 | dup1 3512 | dup3 3513 | dup1 3514 | mulmod 3515 | dup1 3516 | mulmod 3517 | mulmod 3518 | dup4 3519 | swap2 3520 | addmod 3521 | swap1 3522 | dup3 3523 | dup3 3524 | 0xd979bf70695d93f8efb552a413701918afec9e12dfe213f4d0c27cfa68fad6c2 3525 | addmod 3526 | dup4 3527 | swap1 3528 | dup2 3529 | dup1 3530 | dup3 3531 | dup1 3532 | mulmod 3533 | dup1 3534 | mulmod 3535 | mulmod 3536 | dup4 3537 | swap2 3538 | addmod 3539 | swap1 3540 | dup3 3541 | dup3 3542 | 0xb803072d02f54d237a3c6c4cc18eda6dce87a03c6819df54e4ed8aed6dc56d46 3543 | addmod 3544 | dup4 3545 | swap1 3546 | dup2 3547 | dup1 3548 | dup3 3549 | dup1 3550 | mulmod 3551 | dup1 3552 | mulmod 3553 | mulmod 3554 | dup4 3555 | swap2 3556 | addmod 3557 | swap1 3558 | dup3 3559 | dup3 3560 | 0x1efcda9d986cddcf431af4d59c6a7709d650885b7886cba70f0e7cd92b331cdc 3561 | addmod 3562 | dup4 3563 | swap1 3564 | dup2 3565 | dup1 3566 | dup3 3567 | dup1 3568 | mulmod 3569 | dup1 3570 | mulmod 3571 | mulmod 3572 | dup4 3573 | swap2 3574 | addmod 3575 | swap1 3576 | dup3 3577 | dup3 3578 | 0xd3ca5f7859b82ac50b63da06d43aa68a6b685f0a60397638bbea173b3f604192 3579 | addmod 3580 | dup4 3581 | swap1 3582 | dup2 3583 | dup1 3584 | dup3 3585 | dup1 3586 | mulmod 3587 | dup1 3588 | mulmod 3589 | mulmod 3590 | dup4 3591 | swap2 3592 | addmod 3593 | swap1 3594 | dup3 3595 | dup3 3596 | 0xa59d392c0667316ad37a06be2d51aabe9e79bdef0013bc109985648a14c7e41f 3597 | addmod 3598 | dup4 3599 | swap1 3600 | dup2 3601 | dup1 3602 | dup3 3603 | dup1 3604 | mulmod 3605 | dup1 3606 | mulmod 3607 | mulmod 3608 | dup4 3609 | swap2 3610 | addmod 3611 | swap1 3612 | dup3 3613 | dup3 3614 | 0xac2f5f0d2146791b396e2bed6cf15a20bc22cc4c8cf7dd4b3514ac00148dd0a7 3615 | addmod 3616 | dup4 3617 | swap1 3618 | dup2 3619 | dup1 3620 | dup3 3621 | dup1 3622 | mulmod 3623 | dup1 3624 | mulmod 3625 | mulmod 3626 | dup4 3627 | swap2 3628 | addmod 3629 | swap1 3630 | dup3 3631 | dup3 3632 | 0x17a993a6af068d72bc36f0e814d29fef3f97d7a72aa963889b16a8457409861a 3633 | addmod 3634 | dup4 3635 | swap1 3636 | dup2 3637 | dup1 3638 | dup3 3639 | dup1 3640 | mulmod 3641 | dup1 3642 | mulmod 3643 | mulmod 3644 | dup4 3645 | swap2 3646 | addmod 3647 | swap1 3648 | dup3 3649 | dup3 3650 | 0x6f1bf99686550e0396f7f4e2df6fdaa090fbc272c8c76eb32a3c6791de5a07b5 3651 | addmod 3652 | dup4 3653 | swap1 3654 | dup2 3655 | dup1 3656 | dup3 3657 | dup1 3658 | mulmod 3659 | dup1 3660 | mulmod 3661 | mulmod 3662 | dup4 3663 | swap2 3664 | addmod 3665 | swap1 3666 | dup3 3667 | dup3 3668 | 0x8234d705e1ecdc59cc6ed40749069d4b45e63deb49b5b7d7f527abd31c072b1b 3669 | addmod 3670 | dup4 3671 | swap1 3672 | dup2 3673 | dup1 3674 | dup3 3675 | dup1 3676 | mulmod 3677 | dup1 3678 | mulmod 3679 | mulmod 3680 | dup4 3681 | swap2 3682 | addmod 3683 | swap1 3684 | dup3 3685 | dup3 3686 | 0x6fe929a1fd6aacba5c4012c45dd727d2c816119567450003913d882cb97bc47e 3687 | addmod 3688 | dup4 3689 | swap1 3690 | dup2 3691 | dup1 3692 | dup3 3693 | dup1 3694 | mulmod 3695 | dup1 3696 | mulmod 3697 | mulmod 3698 | dup4 3699 | swap2 3700 | addmod 3701 | swap1 3702 | dup3 3703 | dup3 3704 | 0xad5371215f2aba49026b2e48739c11b4d8ffbb24dd4a6e41b9763862af96787a 3705 | addmod 3706 | dup4 3707 | swap1 3708 | dup2 3709 | dup1 3710 | dup3 3711 | dup1 3712 | mulmod 3713 | dup1 3714 | mulmod 3715 | mulmod 3716 | dup4 3717 | swap2 3718 | addmod 3719 | swap1 3720 | dup3 3721 | dup3 3722 | 0xd0e704566c49e1a11edc2c128b2e07f36dc0c755468268f8fe4c4859b9fa595b 3723 | addmod 3724 | dup4 3725 | swap1 3726 | dup2 3727 | dup1 3728 | dup3 3729 | dup1 3730 | mulmod 3731 | dup1 3732 | mulmod 3733 | mulmod 3734 | dup4 3735 | swap2 3736 | addmod 3737 | swap1 3738 | dup3 3739 | dup3 3740 | 0x263e1195090d00be1d8fb37de17ccf3b66d180645efa0d831865cfaa8797769e 3741 | addmod 3742 | dup4 3743 | swap1 3744 | dup2 3745 | dup1 3746 | dup3 3747 | dup1 3748 | mulmod 3749 | dup1 3750 | mulmod 3751 | mulmod 3752 | dup4 3753 | swap2 3754 | addmod 3755 | swap1 3756 | dup3 3757 | dup3 3758 | 0xe65c090eebde2cfa7f9c92cf75641c7683fb8e81f4a48f5b7a9c7eb26a85029f 3759 | addmod 3760 | dup4 3761 | swap1 3762 | dup2 3763 | dup1 3764 | dup3 3765 | dup1 3766 | mulmod 3767 | dup1 3768 | mulmod 3769 | mulmod 3770 | dup4 3771 | swap2 3772 | addmod 3773 | swap1 3774 | dup3 3775 | dup3 3776 | 0xa18971781c6855f6a9752912780bb9b719c14a677a4c6393d62d6e046b97a2ac 3777 | addmod 3778 | dup4 3779 | swap1 3780 | dup2 3781 | dup1 3782 | dup3 3783 | dup1 3784 | mulmod 3785 | dup1 3786 | mulmod 3787 | mulmod 3788 | dup4 3789 | swap2 3790 | addmod 3791 | swap1 3792 | dup3 3793 | dup3 3794 | 0xf6fc1ef1bca8bec055cc66edecc5dc99030fe78311a3f21d8cd624df4f89e625 3795 | addmod 3796 | dup4 3797 | swap1 3798 | dup2 3799 | dup1 3800 | dup3 3801 | dup1 3802 | mulmod 3803 | dup1 3804 | mulmod 3805 | mulmod 3806 | dup4 3807 | swap2 3808 | addmod 3809 | swap1 3810 | dup3 3811 | dup3 3812 | 0x824e4e2838501516d3296542cb47a59a1ca4326e947c9c874d88dccc8e37b99a 3813 | addmod 3814 | dup4 3815 | swap1 3816 | dup2 3817 | dup1 3818 | dup3 3819 | dup1 3820 | mulmod 3821 | dup1 3822 | mulmod 3823 | mulmod 3824 | dup4 3825 | swap2 3826 | addmod 3827 | swap1 3828 | dup3 3829 | dup3 3830 | 0x3cd5a9e7353a50e454c9c1381b556b543897cc89153c3e3749f2021d82372263 3831 | addmod 3832 | dup4 3833 | swap1 3834 | dup2 3835 | dup1 3836 | dup3 3837 | dup1 3838 | mulmod 3839 | dup1 3840 | mulmod 3841 | mulmod 3842 | dup4 3843 | swap2 3844 | addmod 3845 | swap1 3846 | dup3 3847 | dup3 3848 | 0xb4bcedbd54d0c917a315cc7ca785e3c5995abbeeb3deb3ebaf02c7a9bf6cc83f 3849 | addmod 3850 | dup4 3851 | swap1 3852 | dup2 3853 | dup1 3854 | dup3 3855 | dup1 3856 | mulmod 3857 | dup1 3858 | mulmod 3859 | mulmod 3860 | dup4 3861 | swap2 3862 | addmod 3863 | swap1 3864 | dup3 3865 | dup3 3866 | 0x1f7476211105b3039cef009c51155ae93526c53a74973ecfce40754b3df10521 3867 | addmod 3868 | dup4 3869 | swap1 3870 | dup2 3871 | dup1 3872 | dup3 3873 | dup1 3874 | mulmod 3875 | dup1 3876 | mulmod 3877 | mulmod 3878 | dup4 3879 | swap2 3880 | addmod 3881 | swap1 3882 | dup3 3883 | dup3 3884 | 0x58aefbd978440c94b4b9fbd36e00e6e36caeacf82b0da0a6161d34c541a5a6e3 3885 | addmod 3886 | dup4 3887 | swap1 3888 | dup2 3889 | dup1 3890 | dup3 3891 | dup1 3892 | mulmod 3893 | dup1 3894 | mulmod 3895 | mulmod 3896 | dup4 3897 | swap2 3898 | addmod 3899 | swap1 3900 | dup3 3901 | dup3 3902 | 0xc22cd6d61be780a33c77677bc6ba40307b597ed981db57cb485313eec2a5a497 3903 | addmod 3904 | dup4 3905 | swap1 3906 | dup2 3907 | dup1 3908 | dup3 3909 | dup1 3910 | mulmod 3911 | dup1 3912 | mulmod 3913 | mulmod 3914 | dup4 3915 | swap2 3916 | addmod 3917 | swap1 3918 | dup3 3919 | dup3 3920 | 0xd9ffc4fe0dc5f835c8dcdc1e60b8f0b1637f32a809175371b94a057272b0748d 3921 | addmod 3922 | dup4 3923 | swap1 3924 | dup2 3925 | dup1 3926 | dup3 3927 | dup1 3928 | mulmod 3929 | dup1 3930 | mulmod 3931 | mulmod 3932 | dup4 3933 | swap2 3934 | addmod 3935 | swap1 3936 | dup3 3937 | dup3 3938 | 0xf6a5268541bc4c64ad0ade8f55dda3492604857a71c923662a214dd7e9c20c10 3939 | addmod 3940 | dup4 3941 | swap1 3942 | dup2 3943 | dup1 3944 | dup3 3945 | dup1 3946 | mulmod 3947 | dup1 3948 | mulmod 3949 | mulmod 3950 | dup4 3951 | swap2 3952 | addmod 3953 | swap1 3954 | dup3 3955 | dup3 3956 | 0x00 3957 | addmod 3958 | dup4 3959 | swap1 3960 | dup2 3961 | dup1 3962 | dup3 3963 | dup1 3964 | mulmod 3965 | dup1 3966 | mulmod 3967 | mulmod 3968 | dup4 3969 | swap2 3970 | addmod 3971 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 3972 | 3973 | // store values in memory 3974 | 0x20 3975 | mstore 3976 | 0x00 3977 | mstore 3978 | 3979 | 3980 | // jump back (assumes no uninitialized memory variables in solidity contract) 3981 | 0x60 3982 | mload 3983 | jump 3984 | } 3985 | --------------------------------------------------------------------------------