{ "contracts": { "a.sol": { "A": { "evm": { "bytecode": { "generatedSources": [], "object": "" }, "deployedBytecode": { "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:1445:1", "statements": [ { "nodeType": "YulBlock", "src": "6:3:1", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "46:95:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "63:1:1", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "70:3:1", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "75:10:1", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "66:3:1" }, "nodeType": "YulFunctionCall", "src": "66:20:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "56:6:1" }, "nodeType": "YulFunctionCall", "src": "56:31:1" }, "nodeType": "YulExpressionStatement", "src": "56:31:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "103:1:1", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "106:4:1", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "96:6:1" }, "nodeType": "YulFunctionCall", "src": "96:15:1" }, "nodeType": "YulExpressionStatement", "src": "96:15:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "127:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "130:4:1", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "120:6:1" }, "nodeType": "YulFunctionCall", "src": "120:15:1" }, "nodeType": "YulExpressionStatement", "src": "120:15:1" } ] }, "name": "panic_error_0x41", "nodeType": "YulFunctionDefinition", "src": "14:127:1" }, { "body": { "nodeType": "YulBlock", "src": "241:1020:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "251:12:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "261:2:1", "type": "", "value": "32" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "255:2:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "308:16: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" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "283:7:1" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "292:9:1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "279:3:1" }, "nodeType": "YulFunctionCall", "src": "279:23:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "304:2:1" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "275:3:1" }, "nodeType": "YulFunctionCall", "src": "275:32:1" }, "nodeType": "YulIf", "src": "272:52:1" }, { "nodeType": "YulVariableDeclaration", "src": "333:37:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "360:9:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "347:12:1" }, "nodeType": "YulFunctionCall", "src": "347:23:1" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", "src": "337:6:1", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "379:28:1", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "389:18:1", "type": "", "value": "0xffffffffffffffff" }, "variables": [ { "name": "_2", "nodeType": "YulTypedName", "src": "383:2:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "434:16:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "443:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "446:1:1", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "436:6:1" }, "nodeType": "YulFunctionCall", "src": "436:12:1" }, "nodeType": "YulExpressionStatement", "src": "436:12:1" } ] }, "condition": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "422:6:1" }, { "name": "_2", "nodeType": "YulIdentifier", "src": "430:2:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "419:2:1" }, "nodeType": "YulFunctionCall", "src": "419:14:1" }, "nodeType": "YulIf", "src": "416:34:1" }, { "nodeType": "YulVariableDeclaration", "src": "459:32:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "473:9:1" }, { "name": "offset", "nodeType": "YulIdentifier", "src": "484:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "469:3:1" }, "nodeType": "YulFunctionCall", "src": "469:22:1" }, "variables": [ { "name": "_3", "nodeType": "YulTypedName", "src": "463:2:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "539:16:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "548:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "551:1:1", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "541:6:1" }, "nodeType": "YulFunctionCall", "src": "541:12:1" }, "nodeType": "YulExpressionStatement", "src": "541:12:1" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "_3", "nodeType": "YulIdentifier", "src": "518:2:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "522:4:1", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "514:3:1" }, "nodeType": "YulFunctionCall", "src": "514:13:1" }, { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "529:7:1" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "510:3:1" }, "nodeType": "YulFunctionCall", "src": "510:27:1" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "503:6:1" }, "nodeType": "YulFunctionCall", "src": "503:35:1" }, "nodeType": "YulIf", "src": "500:55:1" }, { "nodeType": "YulVariableDeclaration", "src": "564:26:1", "value": { "arguments": [ { "name": "_3", "nodeType": "YulIdentifier", "src": "587:2:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "574:12:1" }, "nodeType": "YulFunctionCall", "src": "574:16:1" }, "variables": [ { "name": "_4", "nodeType": "YulTypedName", "src": "568:2:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "613:22:1", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", "src": "615:16:1" }, "nodeType": "YulFunctionCall", "src": "615:18:1" }, "nodeType": "YulExpressionStatement", "src": "615:18:1" } ] }, "condition": { "arguments": [ { "name": "_4", "nodeType": "YulIdentifier", "src": "605:2:1" }, { "name": "_2", "nodeType": "YulIdentifier", "src": "609:2:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "602:2:1" }, "nodeType": "YulFunctionCall", "src": "602:10:1" }, "nodeType": "YulIf", "src": "599:36:1" }, { "nodeType": "YulVariableDeclaration", "src": "644:20:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "658:1:1", "type": "", "value": "5" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "661:2:1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "654:3:1" }, "nodeType": "YulFunctionCall", "src": "654:10:1" }, "variables": [ { "name": "_5", "nodeType": "YulTypedName", "src": "648:2:1", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "673:23:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "693:2:1", "type": "", "value": "64" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "687:5:1" }, "nodeType": "YulFunctionCall", "src": "687:9:1" }, "variables": [ { "name": "memPtr", "nodeType": "YulTypedName", "src": "677:6:1", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "705:56:1", "value": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "727:6:1" }, { "arguments": [ { "arguments": [ { "name": "_5", "nodeType": "YulIdentifier", "src": "743:2:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "747:2:1", "type": "", "value": "63" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "739:3:1" }, "nodeType": "YulFunctionCall", "src": "739:11:1" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "756:2:1", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "752:3:1" }, "nodeType": "YulFunctionCall", "src": "752:7:1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "735:3:1" }, "nodeType": "YulFunctionCall", "src": "735:25:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "723:3:1" }, "nodeType": "YulFunctionCall", "src": "723:38:1" }, "variables": [ { "name": "newFreePtr", "nodeType": "YulTypedName", "src": "709:10:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "820:22:1", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", "src": "822:16:1" }, "nodeType": "YulFunctionCall", "src": "822:18:1" }, "nodeType": "YulExpressionStatement", "src": "822:18:1" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "779:10:1" }, { "name": "_2", "nodeType": "YulIdentifier", "src": "791:2:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "776:2:1" }, "nodeType": "YulFunctionCall", "src": "776:18:1" }, { "arguments": [ { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "799:10:1" }, { "name": "memPtr", "nodeType": "YulIdentifier", "src": "811:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "796:2:1" }, "nodeType": "YulFunctionCall", "src": "796:22:1" } ], "functionName": { "name": "or", "nodeType": "YulIdentifier", "src": "773:2:1" }, "nodeType": "YulFunctionCall", "src": "773:46:1" }, "nodeType": "YulIf", "src": "770:72:1" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "858:2:1", "type": "", "value": "64" }, { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "862:10:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "851:6:1" }, "nodeType": "YulFunctionCall", "src": "851:22:1" }, "nodeType": "YulExpressionStatement", "src": "851:22:1" }, { "nodeType": "YulVariableDeclaration", "src": "882:17:1", "value": { "name": "memPtr", "nodeType": "YulIdentifier", "src": "893:6:1" }, "variables": [ { "name": "dst", "nodeType": "YulTypedName", "src": "886:3:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "915:6:1" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "923:2:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "908:6:1" }, "nodeType": "YulFunctionCall", "src": "908:18:1" }, "nodeType": "YulExpressionStatement", "src": "908:18:1" }, { "nodeType": "YulAssignment", "src": "935:22:1", "value": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "946:6:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "954:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "942:3:1" }, "nodeType": "YulFunctionCall", "src": "942:15:1" }, "variableNames": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "935:3:1" } ] }, { "nodeType": "YulVariableDeclaration", "src": "966:34:1", "value": { "arguments": [ { "arguments": [ { "name": "_3", "nodeType": "YulIdentifier", "src": "988:2:1" }, { "name": "_5", "nodeType": "YulIdentifier", "src": "992:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "984:3:1" }, "nodeType": "YulFunctionCall", "src": "984:11:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "997:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "980:3:1" }, "nodeType": "YulFunctionCall", "src": "980:20:1" }, "variables": [ { "name": "srcEnd", "nodeType": "YulTypedName", "src": "970:6:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "1032:16:1", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1041:1:1", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1044:1:1", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1034:6:1" }, "nodeType": "YulFunctionCall", "src": "1034:12:1" }, "nodeType": "YulExpressionStatement", "src": "1034:12:1" } ] }, "condition": { "arguments": [ { "name": "srcEnd", "nodeType": "YulIdentifier", "src": "1015:6:1" }, { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "1023:7:1" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "1012:2:1" }, "nodeType": "YulFunctionCall", "src": "1012:19:1" }, "nodeType": "YulIf", "src": "1009:39:1" }, { "nodeType": "YulVariableDeclaration", "src": "1057:22:1", "value": { "arguments": [ { "name": "_3", "nodeType": "YulIdentifier", "src": "1072:2:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "1076:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1068:3:1" }, "nodeType": "YulFunctionCall", "src": "1068:11:1" }, "variables": [ { "name": "src", "nodeType": "YulTypedName", "src": "1061:3:1", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "1144:86:1", "statements": [ { "expression": { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "1165:3:1" }, { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "1183:3:1" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "1170:12:1" }, "nodeType": "YulFunctionCall", "src": "1170:17:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1158:6:1" }, "nodeType": "YulFunctionCall", "src": "1158:30:1" }, "nodeType": "YulExpressionStatement", "src": "1158:30:1" }, { "nodeType": "YulAssignment", "src": "1201:19:1", "value": { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "1212:3:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "1217:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1208:3:1" }, "nodeType": "YulFunctionCall", "src": "1208:12:1" }, "variableNames": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "1201:3:1" } ] } ] }, "condition": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "1099:3:1" }, { "name": "srcEnd", "nodeType": "YulIdentifier", "src": "1104:6:1" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "1096:2:1" }, "nodeType": "YulFunctionCall", "src": "1096:15:1" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "1112:23:1", "statements": [ { "nodeType": "YulAssignment", "src": "1114:19:1", "value": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "1125:3:1" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "1130:2:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1121:3:1" }, "nodeType": "YulFunctionCall", "src": "1121:12:1" }, "variableNames": [ { "name": "src", "nodeType": "YulIdentifier", "src": "1114:3:1" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "1092:3:1", "statements": [] }, "src": "1088:142:1" }, { "nodeType": "YulAssignment", "src": "1239:16:1", "value": { "name": "memPtr", "nodeType": "YulIdentifier", "src": "1249:6:1" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "1239:6:1" } ] } ] }, "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "207:9:1", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "218:7:1", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "230:6:1", "type": "" } ], "src": "146:1115:1" }, { "body": { "nodeType": "YulBlock", "src": "1367:76:1", "statements": [ { "nodeType": "YulAssignment", "src": "1377:26:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1389:9:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1400:2:1", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1385:3:1" }, "nodeType": "YulFunctionCall", "src": "1385:18:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "1377:4:1" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1419:9:1" }, { "name": "value0", "nodeType": "YulIdentifier", "src": "1430:6:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1412:6:1" }, "nodeType": "YulFunctionCall", "src": "1412:25:1" }, "nodeType": "YulExpressionStatement", "src": "1412:25:1" } ] }, "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1336:9:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "1347:6:1", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "1358:4:1", "type": "" } ], "src": "1266:177:1" } ] }, "contents": "{ { } function panic_error_0x41() { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 0x24) } function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0 { let _1 := 32 if slt(sub(dataEnd, headStart), _1) { revert(0, 0) } let offset := calldataload(headStart) let _2 := 0xffffffffffffffff if gt(offset, _2) { revert(0, 0) } let _3 := add(headStart, offset) if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) } let _4 := calldataload(_3) if gt(_4, _2) { panic_error_0x41() } let _5 := shl(5, _4) let memPtr := mload(64) let newFreePtr := add(memPtr, and(add(_5, 63), not(31))) if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) let dst := memPtr mstore(memPtr, _4) dst := add(memPtr, _1) let srcEnd := add(add(_3, _5), _1) if gt(srcEnd, dataEnd) { revert(0, 0) } let src := add(_3, _1) for { } lt(src, srcEnd) { src := add(src, _1) } { mstore(dst, calldataload(src)) dst := add(dst, _1) } value0 := memPtr } function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail { tail := add(headStart, 32) mstore(headStart, value0) } }", "id": 1, "language": "Yul", "name": "#utility.yul" } ] } } } } }, "sources": { "a.sol": { "id": 0 } } }