{ "id": "d39f916be5faf64a238cff1072527f03", "_format": "hh-sol-build-info-1", "solcVersion": "0.8.13", "solcLongVersion": "0.8.13+commit.abaa5c0e", "input": { "language": "Solidity", "sources": { "contracts/Libraries.sol": { "content": "\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nlibrary SafeMath {\n function add(uint x, uint y) internal pure returns (uint) {\n uint z = x + y;\n require(z >= x, \"uint overflow\");\n\n return z;\n }\n}\n\nlibrary Math {\n function multiply(uint a, uint b) internal pure returns (uint) {\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n\n }\n}\n\ncontract TestSafeMathAsLibrary {\n function testMultiply(uint a, uint b) public pure returns (uint) {\n return Math.multiply(a, b);\n }\n}\n\ncontract TestSafeMathMonkeyPatch {\n using SafeMath for uint;\n\n function testAdd(uint x, uint y) public pure returns (uint) {\n return x.add(y);\n }\n}" } }, "settings": { "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "": [ "ast" ], "*": [ "abi", "metadata", "devdoc", "userdoc", "storageLayout", "evm.legacyAssembly", "evm.bytecode", "evm.deployedBytecode", "evm.methodIdentifiers", "evm.gasEstimates", "evm.assembly" ] } } } }, "output": { "contracts": { "contracts/Libraries.sol": { "Math": { "abi": [], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Libraries.sol\":236:440 library Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":236:440 library Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033", "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0x2F EQ LOG1 0xE PUSH24 0xB75C9BCBBF637A206E36259CD67C85210647C42B83685D28 PUSH9 0xDD64736F6C63430008 0xD STOP CALLER ", "sourceMap": "236:204:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;236:204:0;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": {}, "generatedSources": [], "immutableReferences": {}, "linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0x2F EQ LOG1 0xE PUSH24 0xB75C9BCBBF637A206E36259CD67C85210647C42B83685D28 PUSH9 0xDD64736F6C63430008 0xD STOP CALLER ", "sourceMap": "236:204:0:-:0;;;;;;;;" }, "gasEstimates": { "creation": { "codeDepositCost": "17200", "executionCost": "103", "totalCost": "17303" }, "internal": { "multiply(uint256,uint256)": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 236, "end": 440, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 236, "end": 440, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "B" }, { "begin": 236, "end": 440, "name": "DUP3", "source": 0 }, { "begin": 236, "end": 440, "name": "DUP3", "source": 0 }, { "begin": 236, "end": 440, "name": "DUP3", "source": 0 }, { "begin": 236, "end": 440, "name": "CODECOPY", "source": 0 }, { "begin": 236, "end": 440, "name": "DUP1", "source": 0 }, { "begin": 236, "end": 440, "name": "MLOAD", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 236, "end": 440, "name": "BYTE", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "73" }, { "begin": 236, "end": 440, "name": "EQ", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 236, "end": 440, "name": "JUMPI", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "4E487B71" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "E0" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 236, "end": 440, "name": "MSTORE", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 236, "end": 440, "name": "MSTORE", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "24" }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 236, "end": 440, "name": "REVERT", "source": 0 }, { "begin": 236, "end": 440, "name": "tag", "source": 0, "value": "1" }, { "begin": 236, "end": 440, "name": "JUMPDEST", "source": 0 }, { "begin": 236, "end": 440, "name": "ADDRESS", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 236, "end": 440, "name": "MSTORE", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "73" }, { "begin": 236, "end": 440, "name": "DUP2", "source": 0 }, { "begin": 236, "end": 440, "name": "MSTORE8", "source": 0 }, { "begin": 236, "end": 440, "name": "DUP3", "source": 0 }, { "begin": 236, "end": 440, "name": "DUP2", "source": 0 }, { "begin": 236, "end": 440, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033", ".code": [ { "begin": 236, "end": 440, "name": "PUSHDEPLOYADDRESS", "source": 0 }, { "begin": 236, "end": 440, "name": "ADDRESS", "source": 0 }, { "begin": 236, "end": 440, "name": "EQ", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 236, "end": 440, "name": "MSTORE", "source": 0 }, { "begin": 236, "end": 440, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 236, "end": 440, "name": "DUP1", "source": 0 }, { "begin": 236, "end": 440, "name": "REVERT", "source": 0 } ] } } }, "methodIdentifiers": {} }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "SafeMath": { "abi": [], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Libraries.sol\":59:234 library SafeMath {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":59:234 library SafeMath {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033", "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x4C10F52BC906EF5A3859C6146CCC440EB31DF000531E0B881E236646E9B31764 PUSH20 0x6F6C634300080D00330000000000000000000000 ", "sourceMap": "59:175:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:175:0;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": {}, "generatedSources": [], "immutableReferences": {}, "linkReferences": {}, "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033", "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x4C10F52BC906EF5A3859C6146CCC440EB31DF000531E0B881E236646E9B31764 PUSH20 0x6F6C634300080D00330000000000000000000000 ", "sourceMap": "59:175:0:-:0;;;;;;;;" }, "gasEstimates": { "creation": { "codeDepositCost": "17200", "executionCost": "103", "totalCost": "17303" }, "internal": { "add(uint256,uint256)": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 59, "end": 234, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 59, "end": 234, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "B" }, { "begin": 59, "end": 234, "name": "DUP3", "source": 0 }, { "begin": 59, "end": 234, "name": "DUP3", "source": 0 }, { "begin": 59, "end": 234, "name": "DUP3", "source": 0 }, { "begin": 59, "end": 234, "name": "CODECOPY", "source": 0 }, { "begin": 59, "end": 234, "name": "DUP1", "source": 0 }, { "begin": 59, "end": 234, "name": "MLOAD", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 59, "end": 234, "name": "BYTE", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "73" }, { "begin": 59, "end": 234, "name": "EQ", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 59, "end": 234, "name": "JUMPI", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "4E487B71" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "E0" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 59, "end": 234, "name": "MSTORE", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 59, "end": 234, "name": "MSTORE", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "24" }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 59, "end": 234, "name": "REVERT", "source": 0 }, { "begin": 59, "end": 234, "name": "tag", "source": 0, "value": "1" }, { "begin": 59, "end": 234, "name": "JUMPDEST", "source": 0 }, { "begin": 59, "end": 234, "name": "ADDRESS", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 59, "end": 234, "name": "MSTORE", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "73" }, { "begin": 59, "end": 234, "name": "DUP2", "source": 0 }, { "begin": 59, "end": 234, "name": "MSTORE8", "source": 0 }, { "begin": 59, "end": 234, "name": "DUP3", "source": 0 }, { "begin": 59, "end": 234, "name": "DUP2", "source": 0 }, { "begin": 59, "end": 234, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033", ".code": [ { "begin": 59, "end": 234, "name": "PUSHDEPLOYADDRESS", "source": 0 }, { "begin": 59, "end": 234, "name": "ADDRESS", "source": 0 }, { "begin": 59, "end": 234, "name": "EQ", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 59, "end": 234, "name": "MSTORE", "source": 0 }, { "begin": 59, "end": 234, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 59, "end": 234, "name": "DUP1", "source": 0 }, { "begin": 59, "end": 234, "name": "REVERT", "source": 0 } ] } } }, "methodIdentifiers": {} }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "TestSafeMathAsLibrary": { "abi": [ { "inputs": [ { "internalType": "uint256", "name": "a", "type": "uint256" }, { "internalType": "uint256", "name": "b", "type": "uint256" } ], "name": "testMultiply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Libraries.sol\":442:589 contract TestSafeMathAsLibrary {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":442:589 contract TestSafeMathAsLibrary {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x042116f1\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Libraries.sol\":479:587 function testMultiply(uint a, uint b) public pure returns (uint) {... */\n tag_3:\n tag_4\n tag_5\n calldatasize\n 0x04\n tag_6\n jump\t// in\n tag_5:\n tag_7\n jump\t// in\n tag_4:\n mload(0x40)\n /* \"#utility.yul\":413:438 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":401:403 */\n 0x20\n /* \"#utility.yul\":386:404 */\n add\n /* \"contracts/Libraries.sol\":479:587 function testMultiply(uint a, uint b) public pure returns (uint) {... */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_7:\n /* \"contracts/Libraries.sol\":538:542 uint */\n 0x00\n /* \"contracts/Libraries.sol\":561:580 Math.multiply(a, b) */\n tag_11\n /* \"contracts/Libraries.sol\":575:576 a */\n dup4\n /* \"contracts/Libraries.sol\":578:579 b */\n dup4\n /* \"contracts/Libraries.sol\":561:574 Math.multiply */\n tag_12\n /* \"contracts/Libraries.sol\":561:580 Math.multiply(a, b) */\n jump\t// in\n tag_11:\n /* \"contracts/Libraries.sol\":554:580 return Math.multiply(a, b) */\n swap4\n /* \"contracts/Libraries.sol\":479:587 function testMultiply(uint a, uint b) public pure returns (uint) {... */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/Libraries.sol\":255:438 function multiply(uint a, uint b) internal pure returns (uint) {... */\n tag_12:\n /* \"contracts/Libraries.sol\":312:316 uint */\n 0x00\n dup1\n /* \"contracts/Libraries.sol\":340:345 a * b */\n tag_14\n /* \"contracts/Libraries.sol\":344:345 b */\n dup4\n /* \"contracts/Libraries.sol\":340:341 a */\n dup6\n /* \"contracts/Libraries.sol\":340:345 a * b */\n tag_15\n jump\t// in\n tag_14:\n /* \"contracts/Libraries.sol\":328:345 uint256 c = a * b */\n swap1\n pop\n /* \"contracts/Libraries.sol\":372:373 b */\n dup3\n /* \"contracts/Libraries.sol\":363:368 c / a */\n tag_16\n /* \"contracts/Libraries.sol\":367:368 a */\n dup6\n /* \"contracts/Libraries.sol\":328:345 uint256 c = a * b */\n dup4\n /* \"contracts/Libraries.sol\":363:368 c / a */\n tag_17\n jump\t// in\n tag_16:\n /* \"contracts/Libraries.sol\":363:373 c / a == b */\n eq\n /* \"contracts/Libraries.sol\":355:411 require(c / a == b, \"SafeMath: multiplication overflow\") */\n tag_11\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n /* \"#utility.yul\":1143:1145 */\n 0x20\n /* \"contracts/Libraries.sol\":355:411 require(c / a == b, \"SafeMath: multiplication overflow\") */\n 0x04\n dup3\n add\n /* \"#utility.yul\":1125:1146 */\n mstore\n /* \"#utility.yul\":1182:1184 */\n 0x21\n /* \"#utility.yul\":1162:1180 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":1155:1185 */\n mstore\n /* \"#utility.yul\":1221:1255 */\n 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f\n /* \"#utility.yul\":1201:1219 */\n 0x44\n dup3\n add\n /* \"#utility.yul\":1194:1256 */\n mstore\n shl(0xf8, 0x77)\n /* \"#utility.yul\":1272:1290 */\n 0x64\n dup3\n add\n /* \"#utility.yul\":1265:1296 */\n mstore\n /* \"#utility.yul\":1313:1332 */\n 0x84\n add\n /* \"contracts/Libraries.sol\":355:411 require(c / a == b, \"SafeMath: multiplication overflow\") */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":14:262 */\n tag_6:\n /* \"#utility.yul\":82:88 */\n 0x00\n /* \"#utility.yul\":90:96 */\n dup1\n /* \"#utility.yul\":143:145 */\n 0x40\n /* \"#utility.yul\":131:140 */\n dup4\n /* \"#utility.yul\":122:129 */\n dup6\n /* \"#utility.yul\":118:141 */\n sub\n /* \"#utility.yul\":114:146 */\n slt\n /* \"#utility.yul\":111:163 */\n iszero\n tag_23\n jumpi\n /* \"#utility.yul\":159:160 */\n 0x00\n /* \"#utility.yul\":156:157 */\n dup1\n /* \"#utility.yul\":149:161 */\n revert\n /* \"#utility.yul\":111:163 */\n tag_23:\n pop\n pop\n /* \"#utility.yul\":182:205 */\n dup1\n calldataload\n swap3\n /* \"#utility.yul\":252:254 */\n 0x20\n /* \"#utility.yul\":237:255 */\n swap1\n swap2\n add\n /* \"#utility.yul\":224:256 */\n calldataload\n swap2\n pop\n /* \"#utility.yul\":14:262 */\n jump\t// out\n /* \"#utility.yul\":449:714 */\n tag_15:\n /* \"#utility.yul\":489:496 */\n 0x00\n /* \"#utility.yul\":555:556 */\n dup2\n /* \"#utility.yul\":551:552 */\n 0x00\n /* \"#utility.yul\":547:553 */\n not\n /* \"#utility.yul\":543:557 */\n div\n /* \"#utility.yul\":540:541 */\n dup4\n /* \"#utility.yul\":537:558 */\n gt\n /* \"#utility.yul\":532:533 */\n dup3\n /* \"#utility.yul\":525:534 */\n iszero\n /* \"#utility.yul\":518:535 */\n iszero\n /* \"#utility.yul\":514:559 */\n and\n /* \"#utility.yul\":511:679 */\n iszero\n tag_26\n jumpi\n /* \"#utility.yul\":601:611 */\n 0x4e487b71\n /* \"#utility.yul\":596:599 */\n 0xe0\n /* \"#utility.yul\":592:612 */\n shl\n /* \"#utility.yul\":589:590 */\n 0x00\n /* \"#utility.yul\":582:613 */\n mstore\n /* \"#utility.yul\":636:640 */\n 0x11\n /* \"#utility.yul\":633:634 */\n 0x04\n /* \"#utility.yul\":626:641 */\n mstore\n /* \"#utility.yul\":664:668 */\n 0x24\n /* \"#utility.yul\":661:662 */\n 0x00\n /* \"#utility.yul\":654:669 */\n revert\n /* \"#utility.yul\":511:679 */\n tag_26:\n pop\n /* \"#utility.yul\":699:708 */\n mul\n swap1\n /* \"#utility.yul\":449:714 */\n jump\t// out\n /* \"#utility.yul\":719:936 */\n tag_17:\n /* \"#utility.yul\":759:760 */\n 0x00\n /* \"#utility.yul\":785:786 */\n dup3\n /* \"#utility.yul\":775:907 */\n tag_28\n jumpi\n /* \"#utility.yul\":829:839 */\n 0x4e487b71\n /* \"#utility.yul\":824:827 */\n 0xe0\n /* \"#utility.yul\":820:840 */\n shl\n /* \"#utility.yul\":817:818 */\n 0x00\n /* \"#utility.yul\":810:841 */\n mstore\n /* \"#utility.yul\":864:868 */\n 0x12\n /* \"#utility.yul\":861:862 */\n 0x04\n /* \"#utility.yul\":854:869 */\n mstore\n /* \"#utility.yul\":892:896 */\n 0x24\n /* \"#utility.yul\":889:890 */\n 0x00\n /* \"#utility.yul\":882:897 */\n revert\n /* \"#utility.yul\":775:907 */\n tag_28:\n pop\n /* \"#utility.yul\":921:930 */\n div\n swap1\n /* \"#utility.yul\":719:936 */\n jump\t// out\n\n auxdata: 0xa2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b50610184806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063042116f114610030575b600080fd5b61004361003e3660046100dd565b610055565b60405190815260200160405180910390f35b60006100618383610068565b9392505050565b60008061007583856100ff565b905082610082858361012c565b146100615760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b600080604083850312156100f057600080fd5b50508035926020909101359150565b600081600019048311821515161561012757634e487b7160e01b600052601160045260246000fd5b500290565b60008261014957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xDD JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x61 DUP4 DUP4 PUSH2 0x68 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75 DUP4 DUP6 PUSH2 0xFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x82 DUP6 DUP4 PUSH2 0x12C JUMP JUMPDEST EQ PUSH2 0x61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x127 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x149 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DUP8 0xB3 SWAP1 0xE3 0x4A 0xFB PUSH15 0xEC16BC38BFA340E937C1852D58F556 0xB2 SWAP8 0x26 LOG2 0xB7 MSIZE ADDMOD 0xEF 0x25 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ", "sourceMap": "442:147:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@multiply_54": { "entryPoint": 104, "id": 54, "parameterSlots": 2, "returnSlots": 1 }, "@testMultiply_71": { "entryPoint": 85, "id": 71, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_uint256t_uint256": { "entryPoint": 221, "id": null, "parameterSlots": 2, "returnSlots": 2 }, "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "checked_div_t_uint256": { "entryPoint": 300, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "checked_mul_t_uint256": { "entryPoint": 255, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:1340:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "101:161:1", "statements": [ { "body": { "nodeType": "YulBlock", "src": "147:16:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "156:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "159:1:1", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "149:6:1" }, "nodeType": "YulFunctionCall", "src": "149:12:1" }, "nodeType": "YulExpressionStatement", "src": "149:12:1" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "122:7:1" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "131:9:1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "118:3:1" }, "nodeType": "YulFunctionCall", "src": "118:23:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "143:2:1", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "114:3:1" }, "nodeType": "YulFunctionCall", "src": "114:32:1" }, "nodeType": "YulIf", "src": "111:52:1" }, { "nodeType": "YulAssignment", "src": "172:33:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "195:9:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "182:12:1" }, "nodeType": "YulFunctionCall", "src": "182:23:1" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "172:6:1" } ] }, { "nodeType": "YulAssignment", "src": "214:42:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "241:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "252:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "237:3:1" }, "nodeType": "YulFunctionCall", "src": "237:18:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "224:12:1" }, "nodeType": "YulFunctionCall", "src": "224:32:1" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "214:6:1" } ] } ] }, "name": "abi_decode_tuple_t_uint256t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "59:9:1", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "70:7:1", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "82:6:1", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "90:6:1", "type": "" } ], "src": "14:248:1" }, { "body": { "nodeType": "YulBlock", "src": "368:76:1", "statements": [ { "nodeType": "YulAssignment", "src": "378:26:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "390:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "401:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "386:3:1" }, "nodeType": "YulFunctionCall", "src": "386:18:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "378:4:1" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "420:9:1" }, { "name": "value0", "nodeType": "YulIdentifier", "src": "431:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "413:6:1" }, "nodeType": "YulFunctionCall", "src": "413:25:1" }, "nodeType": "YulExpressionStatement", "src": "413:25:1" } ] }, "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "337:9:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "348:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "359:4:1", "type": "" } ], "src": "267:177:1" }, { "body": { "nodeType": "YulBlock", "src": "501:213:1", "statements": [ { "body": { "nodeType": "YulBlock", "src": "568:111:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "589:1:1", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "596:3:1", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "601:10:1", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "592:3:1" }, "nodeType": "YulFunctionCall", "src": "592:20:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "582:6:1" }, "nodeType": "YulFunctionCall", "src": "582:31:1" }, "nodeType": "YulExpressionStatement", "src": "582:31:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "633:1:1", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "636:4:1", "type": "", "value": "0x11" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "626:6:1" }, "nodeType": "YulFunctionCall", "src": "626:15:1" }, "nodeType": "YulExpressionStatement", "src": "626:15:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "661:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "664:4:1", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "654:6:1" }, "nodeType": "YulFunctionCall", "src": "654:15:1" }, "nodeType": "YulExpressionStatement", "src": "654:15:1" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "532:1:1" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "525:6:1" }, "nodeType": "YulFunctionCall", "src": "525:9:1" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "518:6:1" }, "nodeType": "YulFunctionCall", "src": "518:17:1" }, { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", "src": "540:1:1" }, { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "551:1:1", "type": "", "value": "0" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "547:3:1" }, "nodeType": "YulFunctionCall", "src": "547:6:1" }, { "name": "x", "nodeType": "YulIdentifier", "src": "555:1:1" } ], "functionName": { "name": "div", "nodeType": "YulIdentifier", "src": "543:3:1" }, "nodeType": "YulFunctionCall", "src": "543:14:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "537:2:1" }, "nodeType": "YulFunctionCall", "src": "537:21:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "514:3:1" }, "nodeType": "YulFunctionCall", "src": "514:45:1" }, "nodeType": "YulIf", "src": "511:168:1" }, { "nodeType": "YulAssignment", "src": "688:20:1", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "703:1:1" }, { "name": "y", "nodeType": "YulIdentifier", "src": "706:1:1" } ], "functionName": { "name": "mul", "nodeType": "YulIdentifier", "src": "699:3:1" }, "nodeType": "YulFunctionCall", "src": "699:9:1" }, "variableNames": [ { "name": "product", "nodeType": "YulIdentifier", "src": "688:7:1" } ] } ] }, "name": "checked_mul_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "480:1:1", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "483:1:1", "type": "" } ], "returnVariables": [ { "name": "product", "nodeType": "YulTypedName", "src": "489:7:1", "type": "" } ], "src": "449:265:1" }, { "body": { "nodeType": "YulBlock", "src": "765:171:1", "statements": [ { "body": { "nodeType": "YulBlock", "src": "796:111:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "817:1:1", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "824:3:1", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "829:10:1", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "820:3:1" }, "nodeType": "YulFunctionCall", "src": "820:20:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "810:6:1" }, "nodeType": "YulFunctionCall", "src": "810:31:1" }, "nodeType": "YulExpressionStatement", "src": "810:31:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "861:1:1", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "864:4:1", "type": "", "value": "0x12" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "854:6:1" }, "nodeType": "YulFunctionCall", "src": "854:15:1" }, "nodeType": "YulExpressionStatement", "src": "854:15:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "889:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "892:4:1", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "882:6:1" }, "nodeType": "YulFunctionCall", "src": "882:15:1" }, "nodeType": "YulExpressionStatement", "src": "882:15:1" } ] }, "condition": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", "src": "785:1:1" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "778:6:1" }, "nodeType": "YulFunctionCall", "src": "778:9:1" }, "nodeType": "YulIf", "src": "775:132:1" }, { "nodeType": "YulAssignment", "src": "916:14:1", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "925:1:1" }, { "name": "y", "nodeType": "YulIdentifier", "src": "928:1:1" } ], "functionName": { "name": "div", "nodeType": "YulIdentifier", "src": "921:3:1" }, "nodeType": "YulFunctionCall", "src": "921:9:1" }, "variableNames": [ { "name": "r", "nodeType": "YulIdentifier", "src": "916:1:1" } ] } ] }, "name": "checked_div_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "750:1:1", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "753:1:1", "type": "" } ], "returnVariables": [ { "name": "r", "nodeType": "YulTypedName", "src": "759:1:1", "type": "" } ], "src": "719:217:1" }, { "body": { "nodeType": "YulBlock", "src": "1115:223:1", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1132:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1143:2:1", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1125:6:1" }, "nodeType": "YulFunctionCall", "src": "1125:21:1" }, "nodeType": "YulExpressionStatement", "src": "1125:21:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1166:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1177:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1162:3:1" }, "nodeType": "YulFunctionCall", "src": "1162:18:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1182:2:1", "type": "", "value": "33" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1155:6:1" }, "nodeType": "YulFunctionCall", "src": "1155:30:1" }, "nodeType": "YulExpressionStatement", "src": "1155:30:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1205:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1216:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1201:3:1" }, "nodeType": "YulFunctionCall", "src": "1201:18:1" }, { "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f", "kind": "string", "nodeType": "YulLiteral", "src": "1221:34:1", "type": "", "value": "SafeMath: multiplication overflo" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1194:6:1" }, "nodeType": "YulFunctionCall", "src": "1194:62:1" }, "nodeType": "YulExpressionStatement", "src": "1194:62:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1276:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1287:2:1", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1272:3:1" }, "nodeType": "YulFunctionCall", "src": "1272:18:1" }, { "hexValue": "77", "kind": "string", "nodeType": "YulLiteral", "src": "1292:3:1", "type": "", "value": "w" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1265:6:1" }, "nodeType": "YulFunctionCall", "src": "1265:31:1" }, "nodeType": "YulExpressionStatement", "src": "1265:31:1" }, { "nodeType": "YulAssignment", "src": "1305:27:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1317:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1328:3:1", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1313:3:1" }, "nodeType": "YulFunctionCall", "src": "1313:19:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "1305:4:1" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1092:9:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "1106:4:1", "type": "" } ], "src": "941:397:1" } ] }, "contents": "{\n { }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x)))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"SafeMath: multiplication overflo\")\n mstore(add(headStart, 96), \"w\")\n tail := add(headStart, 128)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063042116f114610030575b600080fd5b61004361003e3660046100dd565b610055565b60405190815260200160405180910390f35b60006100618383610068565b9392505050565b60008061007583856100ff565b905082610082858361012c565b146100615760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b600080604083850312156100f057600080fd5b50508035926020909101359150565b600081600019048311821515161561012757634e487b7160e01b600052601160045260246000fd5b500290565b60008261014957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xDD JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x61 DUP4 DUP4 PUSH2 0x68 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75 DUP4 DUP6 PUSH2 0xFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x82 DUP6 DUP4 PUSH2 0x12C JUMP JUMPDEST EQ PUSH2 0x61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x127 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x149 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DUP8 0xB3 SWAP1 0xE3 0x4A 0xFB PUSH15 0xEC16BC38BFA340E937C1852D58F556 0xB2 SWAP8 0x26 LOG2 0xB7 MSIZE ADDMOD 0xEF 0x25 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ", "sourceMap": "442:147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;479:108;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;479:108:0;;;;;;;;538:4;561:19;575:1;578;561:13;:19::i;:::-;554:26;479:108;-1:-1:-1;;;479:108:0:o;255:183::-;312:4;;340:5;344:1;340;:5;:::i;:::-;328:17;-1:-1:-1;372:1:0;363:5;367:1;328:17;363:5;:::i;:::-;:10;355:56;;;;-1:-1:-1;;;355:56:0;;1143:2:1;355:56:0;;;1125:21:1;1182:2;1162:18;;;1155:30;1221:34;1201:18;;;1194:62;-1:-1:-1;;;1272:18:1;;;1265:31;1313:19;;355:56:0;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:265::-;489:7;555:1;551;547:6;543:14;540:1;537:21;532:1;525:9;518:17;514:45;511:168;;;601:10;596:3;592:20;589:1;582:31;636:4;633:1;626:15;664:4;661:1;654:15;511:168;-1:-1:-1;699:9:1;;449:265::o;719:217::-;759:1;785;775:132;;829:10;824:3;820:20;817:1;810:31;864:4;861:1;854:15;892:4;889:1;882:15;775:132;-1:-1:-1;921:9:1;;719:217::o" }, "gasEstimates": { "creation": { "codeDepositCost": "77600", "executionCost": "129", "totalCost": "77729" }, "external": { "testMultiply(uint256,uint256)": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 442, "end": 589, "name": "MSTORE", "source": 0 }, { "begin": 442, "end": 589, "name": "CALLVALUE", "source": 0 }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "ISZERO", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 442, "end": 589, "name": "JUMPI", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "REVERT", "source": 0 }, { "begin": 442, "end": 589, "name": "tag", "source": 0, "value": "1" }, { "begin": 442, "end": 589, "name": "JUMPDEST", "source": 0 }, { "begin": 442, "end": 589, "name": "POP", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 442, "end": 589, "name": "CODECOPY", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 442, "end": 589, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033", ".code": [ { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 442, "end": 589, "name": "MSTORE", "source": 0 }, { "begin": 442, "end": 589, "name": "CALLVALUE", "source": 0 }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "ISZERO", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 442, "end": 589, "name": "JUMPI", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "REVERT", "source": 0 }, { "begin": 442, "end": 589, "name": "tag", "source": 0, "value": "1" }, { "begin": 442, "end": 589, "name": "JUMPDEST", "source": 0 }, { "begin": 442, "end": 589, "name": "POP", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 442, "end": 589, "name": "CALLDATASIZE", "source": 0 }, { "begin": 442, "end": 589, "name": "LT", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 442, "end": 589, "name": "JUMPI", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 442, "end": 589, "name": "CALLDATALOAD", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 442, "end": 589, "name": "SHR", "source": 0 }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "42116F1" }, { "begin": 442, "end": 589, "name": "EQ", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 442, "end": 589, "name": "JUMPI", "source": 0 }, { "begin": 442, "end": 589, "name": "tag", "source": 0, "value": "2" }, { "begin": 442, "end": 589, "name": "JUMPDEST", "source": 0 }, { "begin": 442, "end": 589, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 442, "end": 589, "name": "DUP1", "source": 0 }, { "begin": 442, "end": 589, "name": "REVERT", "source": 0 }, { "begin": 479, "end": 587, "name": "tag", "source": 0, "value": "3" }, { "begin": 479, "end": 587, "name": "JUMPDEST", "source": 0 }, { "begin": 479, "end": 587, "name": "PUSH [tag]", "source": 0, "value": "4" }, { "begin": 479, "end": 587, "name": "PUSH [tag]", "source": 0, "value": "5" }, { "begin": 479, "end": 587, "name": "CALLDATASIZE", "source": 0 }, { "begin": 479, "end": 587, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 479, "end": 587, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 479, "end": 587, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 479, "end": 587, "name": "tag", "source": 0, "value": "5" }, { "begin": 479, "end": 587, "name": "JUMPDEST", "source": 0 }, { "begin": 479, "end": 587, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 479, "end": 587, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 479, "end": 587, "name": "tag", "source": 0, "value": "4" }, { "begin": 479, "end": 587, "name": "JUMPDEST", "source": 0 }, { "begin": 479, "end": 587, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 479, "end": 587, "name": "MLOAD", "source": 0 }, { "begin": 413, "end": 438, "name": "SWAP1", "source": 1 }, { "begin": 413, "end": 438, "name": "DUP2", "source": 1 }, { "begin": 413, "end": 438, "name": "MSTORE", "source": 1 }, { "begin": 401, "end": 403, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 386, "end": 404, "name": "ADD", "source": 1 }, { "begin": 479, "end": 587, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 479, "end": 587, "name": "MLOAD", "source": 0 }, { "begin": 479, "end": 587, "name": "DUP1", "source": 0 }, { "begin": 479, "end": 587, "name": "SWAP2", "source": 0 }, { "begin": 479, "end": 587, "name": "SUB", "source": 0 }, { "begin": 479, "end": 587, "name": "SWAP1", "source": 0 }, { "begin": 479, "end": 587, "name": "RETURN", "source": 0 }, { "begin": 479, "end": 587, "name": "tag", "source": 0, "value": "7" }, { "begin": 479, "end": 587, "name": "JUMPDEST", "source": 0 }, { "begin": 538, "end": 542, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 561, "end": 580, "name": "PUSH [tag]", "source": 0, "value": "11" }, { "begin": 575, "end": 576, "name": "DUP4", "source": 0 }, { "begin": 578, "end": 579, "name": "DUP4", "source": 0 }, { "begin": 561, "end": 574, "name": "PUSH [tag]", "source": 0, "value": "12" }, { "begin": 561, "end": 580, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 561, "end": 580, "name": "tag", "source": 0, "value": "11" }, { "begin": 561, "end": 580, "name": "JUMPDEST", "source": 0 }, { "begin": 554, "end": 580, "name": "SWAP4", "source": 0 }, { "begin": 479, "end": 587, "name": "SWAP3", "source": 0 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 479, "end": 587, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 255, "end": 438, "name": "tag", "source": 0, "value": "12" }, { "begin": 255, "end": 438, "name": "JUMPDEST", "source": 0 }, { "begin": 312, "end": 316, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 312, "end": 316, "name": "DUP1", "source": 0 }, { "begin": 340, "end": 345, "name": "PUSH [tag]", "source": 0, "value": "14" }, { "begin": 344, "end": 345, "name": "DUP4", "source": 0 }, { "begin": 340, "end": 341, "name": "DUP6", "source": 0 }, { "begin": 340, "end": 345, "name": "PUSH [tag]", "source": 0, "value": "15" }, { "begin": 340, "end": 345, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 340, "end": 345, "name": "tag", "source": 0, "value": "14" }, { "begin": 340, "end": 345, "name": "JUMPDEST", "source": 0 }, { "begin": 328, "end": 345, "name": "SWAP1", "source": 0 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 372, "end": 373, "name": "DUP3", "source": 0 }, { "begin": 363, "end": 368, "name": "PUSH [tag]", "source": 0, "value": "16" }, { "begin": 367, "end": 368, "name": "DUP6", "source": 0 }, { "begin": 328, "end": 345, "name": "DUP4", "source": 0 }, { "begin": 363, "end": 368, "name": "PUSH [tag]", "source": 0, "value": "17" }, { "begin": 363, "end": 368, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 363, "end": 368, "name": "tag", "source": 0, "value": "16" }, { "begin": 363, "end": 368, "name": "JUMPDEST", "source": 0 }, { "begin": 363, "end": 373, "name": "EQ", "source": 0 }, { "begin": 355, "end": 411, "name": "PUSH [tag]", "source": 0, "value": "11" }, { "begin": 355, "end": 411, "name": "JUMPI", "source": 0 }, { "begin": 355, "end": 411, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 355, "end": 411, "name": "MLOAD", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "461BCD" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "E5" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 355, "end": 411, "name": "DUP2", "source": 0 }, { "begin": 355, "end": 411, "name": "MSTORE", "source": 0 }, { "begin": 1143, "end": 1145, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 355, "end": 411, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 355, "end": 411, "name": "DUP3", "source": 0 }, { "begin": 355, "end": 411, "name": "ADD", "source": 0 }, { "begin": 1125, "end": 1146, "name": "MSTORE", "source": 1 }, { "begin": 1182, "end": 1184, "name": "PUSH", "source": 1, "value": "21" }, { "begin": 1162, "end": 1180, "name": "PUSH", "source": 1, "value": "24" }, { "begin": 1162, "end": 1180, "name": "DUP3", "source": 1 }, { "begin": 1162, "end": 1180, "name": "ADD", "source": 1 }, { "begin": 1155, "end": 1185, "name": "MSTORE", "source": 1 }, { "begin": 1221, "end": 1255, "name": "PUSH", "source": 1, "value": "536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F" }, { "begin": 1201, "end": 1219, "name": "PUSH", "source": 1, "value": "44" }, { "begin": 1201, "end": 1219, "name": "DUP3", "source": 1 }, { "begin": 1201, "end": 1219, "name": "ADD", "source": 1 }, { "begin": 1194, "end": 1256, "name": "MSTORE", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "77" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "F8" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 1272, "end": 1290, "name": "PUSH", "source": 1, "value": "64" }, { "begin": 1272, "end": 1290, "name": "DUP3", "source": 1 }, { "begin": 1272, "end": 1290, "name": "ADD", "source": 1 }, { "begin": 1265, "end": 1296, "name": "MSTORE", "source": 1 }, { "begin": 1313, "end": 1332, "name": "PUSH", "source": 1, "value": "84" }, { "begin": 1313, "end": 1332, "name": "ADD", "source": 1 }, { "begin": 355, "end": 411, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 355, "end": 411, "name": "MLOAD", "source": 0 }, { "begin": 355, "end": 411, "name": "DUP1", "source": 0 }, { "begin": 355, "end": 411, "name": "SWAP2", "source": 0 }, { "begin": 355, "end": 411, "name": "SUB", "source": 0 }, { "begin": 355, "end": 411, "name": "SWAP1", "source": 0 }, { "begin": 355, "end": 411, "name": "REVERT", "source": 0 }, { "begin": 14, "end": 262, "name": "tag", "source": 1, "value": "6" }, { "begin": 14, "end": 262, "name": "JUMPDEST", "source": 1 }, { "begin": 82, "end": 88, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 90, "end": 96, "name": "DUP1", "source": 1 }, { "begin": 143, "end": 145, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 131, "end": 140, "name": "DUP4", "source": 1 }, { "begin": 122, "end": 129, "name": "DUP6", "source": 1 }, { "begin": 118, "end": 141, "name": "SUB", "source": 1 }, { "begin": 114, "end": 146, "name": "SLT", "source": 1 }, { "begin": 111, "end": 163, "name": "ISZERO", "source": 1 }, { "begin": 111, "end": 163, "name": "PUSH [tag]", "source": 1, "value": "23" }, { "begin": 111, "end": 163, "name": "JUMPI", "source": 1 }, { "begin": 159, "end": 160, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 156, "end": 157, "name": "DUP1", "source": 1 }, { "begin": 149, "end": 161, "name": "REVERT", "source": 1 }, { "begin": 111, "end": 163, "name": "tag", "source": 1, "value": "23" }, { "begin": 111, "end": 163, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 182, "end": 205, "name": "DUP1", "source": 1 }, { "begin": 182, "end": 205, "name": "CALLDATALOAD", "source": 1 }, { "begin": 182, "end": 205, "name": "SWAP3", "source": 1 }, { "begin": 252, "end": 254, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 237, "end": 255, "name": "SWAP1", "source": 1 }, { "begin": 237, "end": 255, "name": "SWAP2", "source": 1 }, { "begin": 237, "end": 255, "name": "ADD", "source": 1 }, { "begin": 224, "end": 256, "name": "CALLDATALOAD", "source": 1 }, { "begin": 224, "end": 256, "name": "SWAP2", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 262, "name": "JUMP", "source": 1, "value": "[out]" }, { "begin": 449, "end": 714, "name": "tag", "source": 1, "value": "15" }, { "begin": 449, "end": 714, "name": "JUMPDEST", "source": 1 }, { "begin": 489, "end": 496, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 555, "end": 556, "name": "DUP2", "source": 1 }, { "begin": 551, "end": 552, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 547, "end": 553, "name": "NOT", "source": 1 }, { "begin": 543, "end": 557, "name": "DIV", "source": 1 }, { "begin": 540, "end": 541, "name": "DUP4", "source": 1 }, { "begin": 537, "end": 558, "name": "GT", "source": 1 }, { "begin": 532, "end": 533, "name": "DUP3", "source": 1 }, { "begin": 525, "end": 534, "name": "ISZERO", "source": 1 }, { "begin": 518, "end": 535, "name": "ISZERO", "source": 1 }, { "begin": 514, "end": 559, "name": "AND", "source": 1 }, { "begin": 511, "end": 679, "name": "ISZERO", "source": 1 }, { "begin": 511, "end": 679, "name": "PUSH [tag]", "source": 1, "value": "26" }, { "begin": 511, "end": 679, "name": "JUMPI", "source": 1 }, { "begin": 601, "end": 611, "name": "PUSH", "source": 1, "value": "4E487B71" }, { "begin": 596, "end": 599, "name": "PUSH", "source": 1, "value": "E0" }, { "begin": 592, "end": 612, "name": "SHL", "source": 1 }, { "begin": 589, "end": 590, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 582, "end": 613, "name": "MSTORE", "source": 1 }, { "begin": 636, "end": 640, "name": "PUSH", "source": 1, "value": "11" }, { "begin": 633, "end": 634, "name": "PUSH", "source": 1, "value": "4" }, { "begin": 626, "end": 641, "name": "MSTORE", "source": 1 }, { "begin": 664, "end": 668, "name": "PUSH", "source": 1, "value": "24" }, { "begin": 661, "end": 662, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 654, "end": 669, "name": "REVERT", "source": 1 }, { "begin": 511, "end": 679, "name": "tag", "source": 1, "value": "26" }, { "begin": 511, "end": 679, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 699, "end": 708, "name": "MUL", "source": 1 }, { "begin": 699, "end": 708, "name": "SWAP1", "source": 1 }, { "begin": 449, "end": 714, "name": "JUMP", "source": 1, "value": "[out]" }, { "begin": 719, "end": 936, "name": "tag", "source": 1, "value": "17" }, { "begin": 719, "end": 936, "name": "JUMPDEST", "source": 1 }, { "begin": 759, "end": 760, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 785, "end": 786, "name": "DUP3", "source": 1 }, { "begin": 775, "end": 907, "name": "PUSH [tag]", "source": 1, "value": "28" }, { "begin": 775, "end": 907, "name": "JUMPI", "source": 1 }, { "begin": 829, "end": 839, "name": "PUSH", "source": 1, "value": "4E487B71" }, { "begin": 824, "end": 827, "name": "PUSH", "source": 1, "value": "E0" }, { "begin": 820, "end": 840, "name": "SHL", "source": 1 }, { "begin": 817, "end": 818, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 810, "end": 841, "name": "MSTORE", "source": 1 }, { "begin": 864, "end": 868, "name": "PUSH", "source": 1, "value": "12" }, { "begin": 861, "end": 862, "name": "PUSH", "source": 1, "value": "4" }, { "begin": 854, "end": 869, "name": "MSTORE", "source": 1 }, { "begin": 892, "end": 896, "name": "PUSH", "source": 1, "value": "24" }, { "begin": 889, "end": 890, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 882, "end": 897, "name": "REVERT", "source": 1 }, { "begin": 775, "end": 907, "name": "tag", "source": 1, "value": "28" }, { "begin": 775, "end": 907, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 921, "end": 930, "name": "DIV", "source": 1 }, { "begin": 921, "end": 930, "name": "SWAP1", "source": 1 }, { "begin": 719, "end": 936, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "testMultiply(uint256,uint256)": "042116f1" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"testMultiply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"TestSafeMathAsLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "TestSafeMathMonkeyPatch": { "abi": [ { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "uint256", "name": "y", "type": "uint256" } ], "name": "testAdd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"contracts/Libraries.sol\":591:754 contract TestSafeMathMonkeyPatch {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":591:754 contract TestSafeMathMonkeyPatch {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x7c3ffef2\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Libraries.sol\":660:752 function testAdd(uint x, uint y) public pure returns (uint) {... */\n tag_3:\n tag_4\n tag_5\n calldatasize\n 0x04\n tag_6\n jump\t// in\n tag_5:\n tag_7\n jump\t// in\n tag_4:\n mload(0x40)\n /* \"#utility.yul\":413:438 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":401:403 */\n 0x20\n /* \"#utility.yul\":386:404 */\n add\n /* \"contracts/Libraries.sol\":660:752 function testAdd(uint x, uint y) public pure returns (uint) {... */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_7:\n /* \"contracts/Libraries.sol\":714:718 uint */\n 0x00\n /* \"contracts/Libraries.sol\":737:745 x.add(y) */\n tag_11\n /* \"contracts/Libraries.sol\":737:738 x */\n dup4\n /* \"contracts/Libraries.sol\":743:744 y */\n dup4\n /* \"contracts/Libraries.sol\":737:742 x.add */\n tag_12\n /* \"contracts/Libraries.sol\":737:745 x.add(y) */\n jump\t// in\n tag_11:\n /* \"contracts/Libraries.sol\":730:745 return x.add(y) */\n swap4\n /* \"contracts/Libraries.sol\":660:752 function testAdd(uint x, uint y) public pure returns (uint) {... */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/Libraries.sol\":82:232 function add(uint x, uint y) internal pure returns (uint) {... */\n tag_12:\n /* \"contracts/Libraries.sol\":134:138 uint */\n 0x00\n dup1\n /* \"contracts/Libraries.sol\":159:164 x + y */\n tag_14\n /* \"contracts/Libraries.sol\":163:164 y */\n dup4\n /* \"contracts/Libraries.sol\":159:160 x */\n dup6\n /* \"contracts/Libraries.sol\":159:164 x + y */\n tag_15\n jump\t// in\n tag_14:\n /* \"contracts/Libraries.sol\":150:164 uint z = x + y */\n swap1\n pop\n /* \"contracts/Libraries.sol\":187:188 x */\n dup4\n /* \"contracts/Libraries.sol\":182:183 z */\n dup2\n /* \"contracts/Libraries.sol\":182:188 z >= x */\n lt\n iszero\n /* \"contracts/Libraries.sol\":174:206 require(z >= x, \"uint overflow\") */\n tag_11\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n /* \"#utility.yul\":881:883 */\n 0x20\n /* \"contracts/Libraries.sol\":174:206 require(z >= x, \"uint overflow\") */\n 0x04\n dup3\n add\n /* \"#utility.yul\":863:884 */\n mstore\n /* \"#utility.yul\":920:922 */\n 0x0d\n /* \"#utility.yul\":900:918 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":893:923 */\n mstore\n shl(0x98, 0x75696e74206f766572666c6f77)\n /* \"#utility.yul\":939:957 */\n 0x44\n dup3\n add\n /* \"#utility.yul\":932:975 */\n mstore\n /* \"#utility.yul\":992:1010 */\n 0x64\n add\n /* \"contracts/Libraries.sol\":174:206 require(z >= x, \"uint overflow\") */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":14:262 */\n tag_6:\n /* \"#utility.yul\":82:88 */\n 0x00\n /* \"#utility.yul\":90:96 */\n dup1\n /* \"#utility.yul\":143:145 */\n 0x40\n /* \"#utility.yul\":131:140 */\n dup4\n /* \"#utility.yul\":122:129 */\n dup6\n /* \"#utility.yul\":118:141 */\n sub\n /* \"#utility.yul\":114:146 */\n slt\n /* \"#utility.yul\":111:163 */\n iszero\n tag_21\n jumpi\n /* \"#utility.yul\":159:160 */\n 0x00\n /* \"#utility.yul\":156:157 */\n dup1\n /* \"#utility.yul\":149:161 */\n revert\n /* \"#utility.yul\":111:163 */\n tag_21:\n pop\n pop\n /* \"#utility.yul\":182:205 */\n dup1\n calldataload\n swap3\n /* \"#utility.yul\":252:254 */\n 0x20\n /* \"#utility.yul\":237:255 */\n swap1\n swap2\n add\n /* \"#utility.yul\":224:256 */\n calldataload\n swap2\n pop\n /* \"#utility.yul\":14:262 */\n jump\t// out\n /* \"#utility.yul\":449:674 */\n tag_15:\n /* \"#utility.yul\":489:492 */\n 0x00\n /* \"#utility.yul\":520:521 */\n dup3\n /* \"#utility.yul\":516:522 */\n not\n /* \"#utility.yul\":513:514 */\n dup3\n /* \"#utility.yul\":510:523 */\n gt\n /* \"#utility.yul\":507:643 */\n iszero\n tag_24\n jumpi\n /* \"#utility.yul\":565:575 */\n 0x4e487b71\n /* \"#utility.yul\":560:563 */\n 0xe0\n /* \"#utility.yul\":556:576 */\n shl\n /* \"#utility.yul\":553:554 */\n 0x00\n /* \"#utility.yul\":546:577 */\n mstore\n /* \"#utility.yul\":600:604 */\n 0x11\n /* \"#utility.yul\":597:598 */\n 0x04\n /* \"#utility.yul\":590:605 */\n mstore\n /* \"#utility.yul\":628:632 */\n 0x24\n /* \"#utility.yul\":625:626 */\n 0x00\n /* \"#utility.yul\":618:633 */\n revert\n /* \"#utility.yul\":507:643 */\n tag_24:\n pop\n /* \"#utility.yul\":659:668 */\n add\n swap1\n /* \"#utility.yul\":449:674 */\n jump\t// out\n\n auxdata: 0xa264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033\n}\n", "bytecode": { "functionDebugData": {}, "generatedSources": [], "linkReferences": {}, "object": "608060405234801561001057600080fd5b5061012b806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80637c3ffef214602d575b600080fd5b603c603836600460af565b604e565b60405190815260200160405180910390f35b600060588383605f565b9392505050565b600080606a838560d0565b90508381101560585760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b6000806040838503121560c157600080fd5b50508035926020909101359150565b6000821982111560f057634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C3FFEF2 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x58 DUP4 DUP4 PUSH1 0x5F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6A DUP4 DUP6 PUSH1 0xD0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH1 0x58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xF0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xA7 BLOCKHASH 0x4C PUSH7 0x46BD9AC8897F28 0xAE SWAP3 0x21 PUSH13 0x3F0C9915EC50FE048A2CFBE40F SWAP9 0xFC DUP12 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ", "sourceMap": "591:163:0:-:0;;;;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "functionDebugData": { "@add_26": { "entryPoint": 95, "id": 26, "parameterSlots": 2, "returnSlots": 1 }, "@testAdd_90": { "entryPoint": 78, "id": 90, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_uint256t_uint256": { "entryPoint": 175, "id": null, "parameterSlots": 2, "returnSlots": 2 }, "abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "checked_add_t_uint256": { "entryPoint": 208, "id": null, "parameterSlots": 2, "returnSlots": 1 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:1018:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "101:161:1", "statements": [ { "body": { "nodeType": "YulBlock", "src": "147:16:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "156:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "159:1:1", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "149:6:1" }, "nodeType": "YulFunctionCall", "src": "149:12:1" }, "nodeType": "YulExpressionStatement", "src": "149:12:1" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "122:7:1" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "131:9:1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "118:3:1" }, "nodeType": "YulFunctionCall", "src": "118:23:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "143:2:1", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "114:3:1" }, "nodeType": "YulFunctionCall", "src": "114:32:1" }, "nodeType": "YulIf", "src": "111:52:1" }, { "nodeType": "YulAssignment", "src": "172:33:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "195:9:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "182:12:1" }, "nodeType": "YulFunctionCall", "src": "182:23:1" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "172:6:1" } ] }, { "nodeType": "YulAssignment", "src": "214:42:1", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "241:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "252:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "237:3:1" }, "nodeType": "YulFunctionCall", "src": "237:18:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "224:12:1" }, "nodeType": "YulFunctionCall", "src": "224:32:1" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "214:6:1" } ] } ] }, "name": "abi_decode_tuple_t_uint256t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "59:9:1", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "70:7:1", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "82:6:1", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "90:6:1", "type": "" } ], "src": "14:248:1" }, { "body": { "nodeType": "YulBlock", "src": "368:76:1", "statements": [ { "nodeType": "YulAssignment", "src": "378:26:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "390:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "401:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "386:3:1" }, "nodeType": "YulFunctionCall", "src": "386:18:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "378:4:1" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "420:9:1" }, { "name": "value0", "nodeType": "YulIdentifier", "src": "431:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "413:6:1" }, "nodeType": "YulFunctionCall", "src": "413:25:1" }, "nodeType": "YulExpressionStatement", "src": "413:25:1" } ] }, "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "337:9:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "348:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "359:4:1", "type": "" } ], "src": "267:177:1" }, { "body": { "nodeType": "YulBlock", "src": "497:177:1", "statements": [ { "body": { "nodeType": "YulBlock", "src": "532:111:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "553:1:1", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "560:3:1", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "565:10:1", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "556:3:1" }, "nodeType": "YulFunctionCall", "src": "556:20:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "546:6:1" }, "nodeType": "YulFunctionCall", "src": "546:31:1" }, "nodeType": "YulExpressionStatement", "src": "546:31:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "597:1:1", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "600:4:1", "type": "", "value": "0x11" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "590:6:1" }, "nodeType": "YulFunctionCall", "src": "590:15:1" }, "nodeType": "YulExpressionStatement", "src": "590:15:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "625:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "628:4:1", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "618:6:1" }, "nodeType": "YulFunctionCall", "src": "618:15:1" }, "nodeType": "YulExpressionStatement", "src": "618:15:1" } ] }, "condition": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "513:1:1" }, { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", "src": "520:1:1" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "516:3:1" }, "nodeType": "YulFunctionCall", "src": "516:6:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "510:2:1" }, "nodeType": "YulFunctionCall", "src": "510:13:1" }, "nodeType": "YulIf", "src": "507:136:1" }, { "nodeType": "YulAssignment", "src": "652:16:1", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "663:1:1" }, { "name": "y", "nodeType": "YulIdentifier", "src": "666:1:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "659:3:1" }, "nodeType": "YulFunctionCall", "src": "659:9:1" }, "variableNames": [ { "name": "sum", "nodeType": "YulIdentifier", "src": "652:3:1" } ] } ] }, "name": "checked_add_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "480:1:1", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "483:1:1", "type": "" } ], "returnVariables": [ { "name": "sum", "nodeType": "YulTypedName", "src": "489:3:1", "type": "" } ], "src": "449:225:1" }, { "body": { "nodeType": "YulBlock", "src": "853:163:1", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "870:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "881:2:1", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "863:6:1" }, "nodeType": "YulFunctionCall", "src": "863:21:1" }, "nodeType": "YulExpressionStatement", "src": "863:21:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "904:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "915:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "900:3:1" }, "nodeType": "YulFunctionCall", "src": "900:18:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "920:2:1", "type": "", "value": "13" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "893:6:1" }, "nodeType": "YulFunctionCall", "src": "893:30:1" }, "nodeType": "YulExpressionStatement", "src": "893:30:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "943:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "954:2:1", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "939:3:1" }, "nodeType": "YulFunctionCall", "src": "939:18:1" }, { "hexValue": "75696e74206f766572666c6f77", "kind": "string", "nodeType": "YulLiteral", "src": "959:15:1", "type": "", "value": "uint overflow" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "932:6:1" }, "nodeType": "YulFunctionCall", "src": "932:43:1" }, "nodeType": "YulExpressionStatement", "src": "932:43:1" }, { "nodeType": "YulAssignment", "src": "984:26:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "996:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1007:2:1", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "992:3:1" }, "nodeType": "YulFunctionCall", "src": "992:18:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "984:4:1" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "830:9:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "844:4:1", "type": "" } ], "src": "679:337:1" } ] }, "contents": "{\n { }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 13)\n mstore(add(headStart, 64), \"uint overflow\")\n tail := add(headStart, 96)\n }\n}", "id": 1, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80637c3ffef214602d575b600080fd5b603c603836600460af565b604e565b60405190815260200160405180910390f35b600060588383605f565b9392505050565b600080606a838560d0565b90508381101560585760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b6000806040838503121560c157600080fd5b50508035926020909101359150565b6000821982111560f057634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033", "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C3FFEF2 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x58 DUP4 DUP4 PUSH1 0x5F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6A DUP4 DUP6 PUSH1 0xD0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH1 0x58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xF0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xA7 BLOCKHASH 0x4C PUSH7 0x46BD9AC8897F28 0xAE SWAP3 0x21 PUSH13 0x3F0C9915EC50FE048A2CFBE40F SWAP9 0xFC DUP12 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ", "sourceMap": "591:163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:92;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;660:92:0;;;;;;;;714:4;737:8;:1;743;737:5;:8::i;:::-;730:15;660:92;-1:-1:-1;;;660:92:0:o;82:150::-;134:4;;159:5;163:1;159;:5;:::i;:::-;150:14;;187:1;182;:6;;174:32;;;;-1:-1:-1;;;174:32:0;;881:2:1;174:32:0;;;863:21:1;920:2;900:18;;;893:30;-1:-1:-1;;;939:18:1;;;932:43;992:18;;174:32:0;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:225::-;489:3;520:1;516:6;513:1;510:13;507:136;;;565:10;560:3;556:20;553:1;546:31;600:4;597:1;590:15;628:4;625:1;618:15;507:136;-1:-1:-1;659:9:1;;449:225::o" }, "gasEstimates": { "creation": { "codeDepositCost": "59800", "executionCost": "111", "totalCost": "59911" }, "external": { "testAdd(uint256,uint256)": "infinite" } }, "legacyAssembly": { ".code": [ { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 591, "end": 754, "name": "MSTORE", "source": 0 }, { "begin": 591, "end": 754, "name": "CALLVALUE", "source": 0 }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "ISZERO", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 591, "end": 754, "name": "JUMPI", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "REVERT", "source": 0 }, { "begin": 591, "end": 754, "name": "tag", "source": 0, "value": "1" }, { "begin": 591, "end": 754, "name": "JUMPDEST", "source": 0 }, { "begin": 591, "end": 754, "name": "POP", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH #[$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH [$]", "source": 0, "value": "0000000000000000000000000000000000000000000000000000000000000000" }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 591, "end": 754, "name": "CODECOPY", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 591, "end": 754, "name": "RETURN", "source": 0 } ], ".data": { "0": { ".auxdata": "a264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033", ".code": [ { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "80" }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 591, "end": 754, "name": "MSTORE", "source": 0 }, { "begin": 591, "end": 754, "name": "CALLVALUE", "source": 0 }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "ISZERO", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH [tag]", "source": 0, "value": "1" }, { "begin": 591, "end": 754, "name": "JUMPI", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "REVERT", "source": 0 }, { "begin": 591, "end": 754, "name": "tag", "source": 0, "value": "1" }, { "begin": 591, "end": 754, "name": "JUMPDEST", "source": 0 }, { "begin": 591, "end": 754, "name": "POP", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 591, "end": 754, "name": "CALLDATASIZE", "source": 0 }, { "begin": 591, "end": 754, "name": "LT", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH [tag]", "source": 0, "value": "2" }, { "begin": 591, "end": 754, "name": "JUMPI", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 591, "end": 754, "name": "CALLDATALOAD", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "E0" }, { "begin": 591, "end": 754, "name": "SHR", "source": 0 }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "7C3FFEF2" }, { "begin": 591, "end": 754, "name": "EQ", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH [tag]", "source": 0, "value": "3" }, { "begin": 591, "end": 754, "name": "JUMPI", "source": 0 }, { "begin": 591, "end": 754, "name": "tag", "source": 0, "value": "2" }, { "begin": 591, "end": 754, "name": "JUMPDEST", "source": 0 }, { "begin": 591, "end": 754, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 591, "end": 754, "name": "DUP1", "source": 0 }, { "begin": 591, "end": 754, "name": "REVERT", "source": 0 }, { "begin": 660, "end": 752, "name": "tag", "source": 0, "value": "3" }, { "begin": 660, "end": 752, "name": "JUMPDEST", "source": 0 }, { "begin": 660, "end": 752, "name": "PUSH [tag]", "source": 0, "value": "4" }, { "begin": 660, "end": 752, "name": "PUSH [tag]", "source": 0, "value": "5" }, { "begin": 660, "end": 752, "name": "CALLDATASIZE", "source": 0 }, { "begin": 660, "end": 752, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 660, "end": 752, "name": "PUSH [tag]", "source": 0, "value": "6" }, { "begin": 660, "end": 752, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 660, "end": 752, "name": "tag", "source": 0, "value": "5" }, { "begin": 660, "end": 752, "name": "JUMPDEST", "source": 0 }, { "begin": 660, "end": 752, "name": "PUSH [tag]", "source": 0, "value": "7" }, { "begin": 660, "end": 752, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 660, "end": 752, "name": "tag", "source": 0, "value": "4" }, { "begin": 660, "end": 752, "name": "JUMPDEST", "source": 0 }, { "begin": 660, "end": 752, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 660, "end": 752, "name": "MLOAD", "source": 0 }, { "begin": 413, "end": 438, "name": "SWAP1", "source": 1 }, { "begin": 413, "end": 438, "name": "DUP2", "source": 1 }, { "begin": 413, "end": 438, "name": "MSTORE", "source": 1 }, { "begin": 401, "end": 403, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 386, "end": 404, "name": "ADD", "source": 1 }, { "begin": 660, "end": 752, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 660, "end": 752, "name": "MLOAD", "source": 0 }, { "begin": 660, "end": 752, "name": "DUP1", "source": 0 }, { "begin": 660, "end": 752, "name": "SWAP2", "source": 0 }, { "begin": 660, "end": 752, "name": "SUB", "source": 0 }, { "begin": 660, "end": 752, "name": "SWAP1", "source": 0 }, { "begin": 660, "end": 752, "name": "RETURN", "source": 0 }, { "begin": 660, "end": 752, "name": "tag", "source": 0, "value": "7" }, { "begin": 660, "end": 752, "name": "JUMPDEST", "source": 0 }, { "begin": 714, "end": 718, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 737, "end": 745, "name": "PUSH [tag]", "source": 0, "value": "11" }, { "begin": 737, "end": 738, "name": "DUP4", "source": 0 }, { "begin": 743, "end": 744, "name": "DUP4", "source": 0 }, { "begin": 737, "end": 742, "name": "PUSH [tag]", "source": 0, "value": "12" }, { "begin": 737, "end": 745, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 737, "end": 745, "name": "tag", "source": 0, "value": "11" }, { "begin": 737, "end": 745, "name": "JUMPDEST", "source": 0 }, { "begin": 730, "end": 745, "name": "SWAP4", "source": 0 }, { "begin": 660, "end": 752, "name": "SWAP3", "source": 0 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 660, "end": 752, "name": "JUMP", "source": 0, "value": "[out]" }, { "begin": 82, "end": 232, "name": "tag", "source": 0, "value": "12" }, { "begin": 82, "end": 232, "name": "JUMPDEST", "source": 0 }, { "begin": 134, "end": 138, "name": "PUSH", "source": 0, "value": "0" }, { "begin": 134, "end": 138, "name": "DUP1", "source": 0 }, { "begin": 159, "end": 164, "name": "PUSH [tag]", "source": 0, "value": "14" }, { "begin": 163, "end": 164, "name": "DUP4", "source": 0 }, { "begin": 159, "end": 160, "name": "DUP6", "source": 0 }, { "begin": 159, "end": 164, "name": "PUSH [tag]", "source": 0, "value": "15" }, { "begin": 159, "end": 164, "name": "JUMP", "source": 0, "value": "[in]" }, { "begin": 159, "end": 164, "name": "tag", "source": 0, "value": "14" }, { "begin": 159, "end": 164, "name": "JUMPDEST", "source": 0 }, { "begin": 150, "end": 164, "name": "SWAP1", "source": 0 }, { "begin": 150, "end": 164, "name": "POP", "source": 0 }, { "begin": 187, "end": 188, "name": "DUP4", "source": 0 }, { "begin": 182, "end": 183, "name": "DUP2", "source": 0 }, { "begin": 182, "end": 188, "name": "LT", "source": 0 }, { "begin": 182, "end": 188, "name": "ISZERO", "source": 0 }, { "begin": 174, "end": 206, "name": "PUSH [tag]", "source": 0, "value": "11" }, { "begin": 174, "end": 206, "name": "JUMPI", "source": 0 }, { "begin": 174, "end": 206, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 174, "end": 206, "name": "MLOAD", "source": 0 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "461BCD" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "E5" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 174, "end": 206, "name": "DUP2", "source": 0 }, { "begin": 174, "end": 206, "name": "MSTORE", "source": 0 }, { "begin": 881, "end": 883, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 174, "end": 206, "name": "PUSH", "source": 0, "value": "4" }, { "begin": 174, "end": 206, "name": "DUP3", "source": 0 }, { "begin": 174, "end": 206, "name": "ADD", "source": 0 }, { "begin": 863, "end": 884, "name": "MSTORE", "source": 1 }, { "begin": 920, "end": 922, "name": "PUSH", "source": 1, "value": "D" }, { "begin": 900, "end": 918, "name": "PUSH", "source": 1, "value": "24" }, { "begin": 900, "end": 918, "name": "DUP3", "source": 1 }, { "begin": 900, "end": 918, "name": "ADD", "source": 1 }, { "begin": 893, "end": 923, "name": "MSTORE", "source": 1 }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "75696E74206F766572666C6F77" }, { "begin": -1, "end": -1, "name": "PUSH", "source": -1, "value": "98" }, { "begin": -1, "end": -1, "name": "SHL", "source": -1 }, { "begin": 939, "end": 957, "name": "PUSH", "source": 1, "value": "44" }, { "begin": 939, "end": 957, "name": "DUP3", "source": 1 }, { "begin": 939, "end": 957, "name": "ADD", "source": 1 }, { "begin": 932, "end": 975, "name": "MSTORE", "source": 1 }, { "begin": 992, "end": 1010, "name": "PUSH", "source": 1, "value": "64" }, { "begin": 992, "end": 1010, "name": "ADD", "source": 1 }, { "begin": 174, "end": 206, "name": "PUSH", "source": 0, "value": "40" }, { "begin": 174, "end": 206, "name": "MLOAD", "source": 0 }, { "begin": 174, "end": 206, "name": "DUP1", "source": 0 }, { "begin": 174, "end": 206, "name": "SWAP2", "source": 0 }, { "begin": 174, "end": 206, "name": "SUB", "source": 0 }, { "begin": 174, "end": 206, "name": "SWAP1", "source": 0 }, { "begin": 174, "end": 206, "name": "REVERT", "source": 0 }, { "begin": 14, "end": 262, "name": "tag", "source": 1, "value": "6" }, { "begin": 14, "end": 262, "name": "JUMPDEST", "source": 1 }, { "begin": 82, "end": 88, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 90, "end": 96, "name": "DUP1", "source": 1 }, { "begin": 143, "end": 145, "name": "PUSH", "source": 1, "value": "40" }, { "begin": 131, "end": 140, "name": "DUP4", "source": 1 }, { "begin": 122, "end": 129, "name": "DUP6", "source": 1 }, { "begin": 118, "end": 141, "name": "SUB", "source": 1 }, { "begin": 114, "end": 146, "name": "SLT", "source": 1 }, { "begin": 111, "end": 163, "name": "ISZERO", "source": 1 }, { "begin": 111, "end": 163, "name": "PUSH [tag]", "source": 1, "value": "21" }, { "begin": 111, "end": 163, "name": "JUMPI", "source": 1 }, { "begin": 159, "end": 160, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 156, "end": 157, "name": "DUP1", "source": 1 }, { "begin": 149, "end": 161, "name": "REVERT", "source": 1 }, { "begin": 111, "end": 163, "name": "tag", "source": 1, "value": "21" }, { "begin": 111, "end": 163, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 182, "end": 205, "name": "DUP1", "source": 1 }, { "begin": 182, "end": 205, "name": "CALLDATALOAD", "source": 1 }, { "begin": 182, "end": 205, "name": "SWAP3", "source": 1 }, { "begin": 252, "end": 254, "name": "PUSH", "source": 1, "value": "20" }, { "begin": 237, "end": 255, "name": "SWAP1", "source": 1 }, { "begin": 237, "end": 255, "name": "SWAP2", "source": 1 }, { "begin": 237, "end": 255, "name": "ADD", "source": 1 }, { "begin": 224, "end": 256, "name": "CALLDATALOAD", "source": 1 }, { "begin": 224, "end": 256, "name": "SWAP2", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 14, "end": 262, "name": "JUMP", "source": 1, "value": "[out]" }, { "begin": 449, "end": 674, "name": "tag", "source": 1, "value": "15" }, { "begin": 449, "end": 674, "name": "JUMPDEST", "source": 1 }, { "begin": 489, "end": 492, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 520, "end": 521, "name": "DUP3", "source": 1 }, { "begin": 516, "end": 522, "name": "NOT", "source": 1 }, { "begin": 513, "end": 514, "name": "DUP3", "source": 1 }, { "begin": 510, "end": 523, "name": "GT", "source": 1 }, { "begin": 507, "end": 643, "name": "ISZERO", "source": 1 }, { "begin": 507, "end": 643, "name": "PUSH [tag]", "source": 1, "value": "24" }, { "begin": 507, "end": 643, "name": "JUMPI", "source": 1 }, { "begin": 565, "end": 575, "name": "PUSH", "source": 1, "value": "4E487B71" }, { "begin": 560, "end": 563, "name": "PUSH", "source": 1, "value": "E0" }, { "begin": 556, "end": 576, "name": "SHL", "source": 1 }, { "begin": 553, "end": 554, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 546, "end": 577, "name": "MSTORE", "source": 1 }, { "begin": 600, "end": 604, "name": "PUSH", "source": 1, "value": "11" }, { "begin": 597, "end": 598, "name": "PUSH", "source": 1, "value": "4" }, { "begin": 590, "end": 605, "name": "MSTORE", "source": 1 }, { "begin": 628, "end": 632, "name": "PUSH", "source": 1, "value": "24" }, { "begin": 625, "end": 626, "name": "PUSH", "source": 1, "value": "0" }, { "begin": 618, "end": 633, "name": "REVERT", "source": 1 }, { "begin": 507, "end": 643, "name": "tag", "source": 1, "value": "24" }, { "begin": 507, "end": 643, "name": "JUMPDEST", "source": 1 }, { "begin": -1, "end": -1, "name": "POP", "source": -1 }, { "begin": 659, "end": 668, "name": "ADD", "source": 1 }, { "begin": 659, "end": 668, "name": "SWAP1", "source": 1 }, { "begin": 449, "end": 674, "name": "JUMP", "source": 1, "value": "[out]" } ] } } }, "methodIdentifiers": { "testAdd(uint256,uint256)": "7c3ffef2" } }, "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"testAdd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"TestSafeMathMonkeyPatch\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27\",\"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3\"]}},\"version\":1}", "storageLayout": { "storage": [], "types": null }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } } } }, "sources": { "contracts/Libraries.sol": { "ast": { "absolutePath": "contracts/Libraries.sol", "exportedSymbols": { "Math": [ 55 ], "SafeMath": [ 27 ], "TestSafeMathAsLibrary": [ 72 ], "TestSafeMathMonkeyPatch": [ 91 ] }, "id": 92, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", "^", "0.8", ".13" ], "nodeType": "PragmaDirective", "src": "33:24:0" }, { "abstract": false, "baseContracts": [], "canonicalName": "SafeMath", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 27, "linearizedBaseContracts": [ 27 ], "name": "SafeMath", "nameLocation": "67:8:0", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 25, "nodeType": "Block", "src": "140:92:0", "statements": [ { "assignments": [ 11 ], "declarations": [ { "constant": false, "id": 11, "mutability": "mutable", "name": "z", "nameLocation": "155:1:0", "nodeType": "VariableDeclaration", "scope": 25, "src": "150:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 10, "name": "uint", "nodeType": "ElementaryTypeName", "src": "150:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 15, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 14, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 12, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "159:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 13, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5, "src": "163:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "159:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "150:14:0" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 19, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 17, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, "src": "182:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "id": 18, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "187:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "182:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "75696e74206f766572666c6f77", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "190:15:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f", "typeString": "literal_string \"uint overflow\"" }, "value": "uint overflow" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f", "typeString": "literal_string \"uint overflow\"" } ], "id": 16, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "174:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "174:32:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 22, "nodeType": "ExpressionStatement", "src": "174:32:0" }, { "expression": { "id": 23, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, "src": "224:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 9, "id": 24, "nodeType": "Return", "src": "217:8:0" } ] }, "id": 26, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nameLocation": "91:3:0", "nodeType": "FunctionDefinition", "parameters": { "id": 6, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3, "mutability": "mutable", "name": "x", "nameLocation": "100:1:0", "nodeType": "VariableDeclaration", "scope": 26, "src": "95:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2, "name": "uint", "nodeType": "ElementaryTypeName", "src": "95:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 5, "mutability": "mutable", "name": "y", "nameLocation": "108:1:0", "nodeType": "VariableDeclaration", "scope": 26, "src": "103:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4, "name": "uint", "nodeType": "ElementaryTypeName", "src": "103:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "94:16:0" }, "returnParameters": { "id": 9, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 8, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 26, "src": "134:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 7, "name": "uint", "nodeType": "ElementaryTypeName", "src": "134:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "133:6:0" }, "scope": 27, "src": "82:150:0", "stateMutability": "pure", "virtual": false, "visibility": "internal" } ], "scope": 92, "src": "59:175:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [], "canonicalName": "Math", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 55, "linearizedBaseContracts": [ 55 ], "name": "Math", "nameLocation": "244:4:0", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 53, "nodeType": "Block", "src": "318:120:0", "statements": [ { "assignments": [ 37 ], "declarations": [ { "constant": false, "id": 37, "mutability": "mutable", "name": "c", "nameLocation": "336:1:0", "nodeType": "VariableDeclaration", "scope": 53, "src": "328:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 36, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "328:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 41, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 40, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 38, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "340:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "id": 39, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31, "src": "344:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "340:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "328:17:0" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 47, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "363:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "id": 44, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29, "src": "367:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "363:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 46, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31, "src": "372:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "363:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", "id": 48, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "375:35:0", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", "typeString": "literal_string \"SafeMath: multiplication overflow\"" }, "value": "SafeMath: multiplication overflow" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", "typeString": "literal_string \"SafeMath: multiplication overflow\"" } ], "id": 42, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "355:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 49, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "355:56:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 50, "nodeType": "ExpressionStatement", "src": "355:56:0" }, { "expression": { "id": 51, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "429:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 35, "id": 52, "nodeType": "Return", "src": "422:8:0" } ] }, "id": 54, "implemented": true, "kind": "function", "modifiers": [], "name": "multiply", "nameLocation": "264:8:0", "nodeType": "FunctionDefinition", "parameters": { "id": 32, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 29, "mutability": "mutable", "name": "a", "nameLocation": "278:1:0", "nodeType": "VariableDeclaration", "scope": 54, "src": "273:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 28, "name": "uint", "nodeType": "ElementaryTypeName", "src": "273:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 31, "mutability": "mutable", "name": "b", "nameLocation": "286:1:0", "nodeType": "VariableDeclaration", "scope": 54, "src": "281:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 30, "name": "uint", "nodeType": "ElementaryTypeName", "src": "281:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "272:16:0" }, "returnParameters": { "id": 35, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 34, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 54, "src": "312:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 33, "name": "uint", "nodeType": "ElementaryTypeName", "src": "312:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "311:6:0" }, "scope": 55, "src": "255:183:0", "stateMutability": "pure", "virtual": false, "visibility": "internal" } ], "scope": 92, "src": "236:204:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [], "canonicalName": "TestSafeMathAsLibrary", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 72, "linearizedBaseContracts": [ 72 ], "name": "TestSafeMathAsLibrary", "nameLocation": "451:21:0", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 70, "nodeType": "Block", "src": "544:43:0", "statements": [ { "expression": { "arguments": [ { "id": 66, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "575:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 67, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "578:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 64, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 55, "src": "561:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Math_$55_$", "typeString": "type(library Math)" } }, "id": 65, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "multiply", "nodeType": "MemberAccess", "referencedDeclaration": 54, "src": "561:13:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 68, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "561:19:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 63, "id": 69, "nodeType": "Return", "src": "554:26:0" } ] }, "functionSelector": "042116f1", "id": 71, "implemented": true, "kind": "function", "modifiers": [], "name": "testMultiply", "nameLocation": "488:12:0", "nodeType": "FunctionDefinition", "parameters": { "id": 60, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 57, "mutability": "mutable", "name": "a", "nameLocation": "506:1:0", "nodeType": "VariableDeclaration", "scope": 71, "src": "501:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 56, "name": "uint", "nodeType": "ElementaryTypeName", "src": "501:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 59, "mutability": "mutable", "name": "b", "nameLocation": "514:1:0", "nodeType": "VariableDeclaration", "scope": 71, "src": "509:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 58, "name": "uint", "nodeType": "ElementaryTypeName", "src": "509:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "500:16:0" }, "returnParameters": { "id": 63, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 62, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 71, "src": "538:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 61, "name": "uint", "nodeType": "ElementaryTypeName", "src": "538:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "537:6:0" }, "scope": 72, "src": "479:108:0", "stateMutability": "pure", "virtual": false, "visibility": "public" } ], "scope": 92, "src": "442:147:0", "usedErrors": [] }, { "abstract": false, "baseContracts": [], "canonicalName": "TestSafeMathMonkeyPatch", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 91, "linearizedBaseContracts": [ 91 ], "name": "TestSafeMathMonkeyPatch", "nameLocation": "600:23:0", "nodeType": "ContractDefinition", "nodes": [ { "global": false, "id": 75, "libraryName": { "id": 73, "name": "SafeMath", "nodeType": "IdentifierPath", "referencedDeclaration": 27, "src": "636:8:0" }, "nodeType": "UsingForDirective", "src": "630:24:0", "typeName": { "id": 74, "name": "uint", "nodeType": "ElementaryTypeName", "src": "649:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "body": { "id": 89, "nodeType": "Block", "src": "720:32:0", "statements": [ { "expression": { "arguments": [ { "id": 86, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "743:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 84, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "737:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 85, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 26, "src": "737:5:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "737:8:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 83, "id": 88, "nodeType": "Return", "src": "730:15:0" } ] }, "functionSelector": "7c3ffef2", "id": 90, "implemented": true, "kind": "function", "modifiers": [], "name": "testAdd", "nameLocation": "669:7:0", "nodeType": "FunctionDefinition", "parameters": { "id": 80, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 77, "mutability": "mutable", "name": "x", "nameLocation": "682:1:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "677:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 76, "name": "uint", "nodeType": "ElementaryTypeName", "src": "677:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 79, "mutability": "mutable", "name": "y", "nameLocation": "690:1:0", "nodeType": "VariableDeclaration", "scope": 90, "src": "685:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 78, "name": "uint", "nodeType": "ElementaryTypeName", "src": "685:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "676:16:0" }, "returnParameters": { "id": 83, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 82, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 90, "src": "714:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 81, "name": "uint", "nodeType": "ElementaryTypeName", "src": "714:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "713:6:0" }, "scope": 91, "src": "660:92:0", "stateMutability": "pure", "virtual": false, "visibility": "public" } ], "scope": 92, "src": "591:163:0", "usedErrors": [] } ], "src": "33:721:0" }, "id": 0 } } } }