<!DOCTYPE html>
< html >
< head >
< title > Call Graph< / title >
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" integrity = "sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=" crossorigin = "anonymous" / >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js" integrity = "sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=" crossorigin = "anonymous" > < / script >
< style type = "text/css" >
#mynetwork {
background-color: #232625;
}
body {
background-color: #232625;
color: #ffffff;
font-size: 10px;
}
< / style >
< script >
var options = {"autoResize": true, "edges": {"font": {"align": "horizontal", "background": "none", "color": "#FFFFFF", "face": "arial", "multi": false, "strokeColor": "#ffffff", "strokeWidth": 0, "vadjust": 0}}, "height": "100%", "layout": {"hierarchical": {"blockShifting": true, "direction": "LR", "edgeMinimization": true, "enabled": true, "levelSeparation": 450, "nodeSpacing": 200, "parentCentralization": false, "sortMethod": "directed", "treeSpacing": 100}, "improvedLayout": true}, "manipulation": false, "nodes": {"borderWidth": 1, "borderWidthSelected": 2, "chosen": true, "color": "#000000", "font": {"align": "left", "color": "#FFFFFF"}, "shape": "box"}, "physics": {"enabled": false}, "width": "100%"};
var nodes = [{"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI", "id": "31", "isExpanded": false, "label": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)", "size": 150, "truncLabel": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "32", "isExpanded": false, "label": "77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x27e235e3\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI", "id": "33", "isExpanded": false, "label": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)", "size": 150, "truncLabel": "13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x01000000(...)\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "id": "34", "isExpanded": false, "label": "82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI", "size": 150, "truncLabel": "82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI", "id": "35", "isExpanded": false, "label": "65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI", "size": 150, "truncLabel": "65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n101 PUSH20 0xffffffff(...)\n122 AND\n123 SWAP1\n124 PUSH1 0x20\n126 ADD\n127 SWAP1\n128 SWAP2\n129 SWAP1\n130 POP\n131 POP\n132 PUSH2 0x00f8\n135 JUMP", "id": "36", "isExpanded": false, "label": "93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n101 PUSH20 0xffffffff(...)\n(click to expand +)", "size": 150, "truncLabel": "93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n101 PUSH20 0xffffffff(...)\n(click to expand +)"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "id": "37", "isExpanded": false, "label": "88 PUSH1 0x00\n90 DUP1\n91 REVERT", "size": 150, "truncLabel": "88 PUSH1 0x00\n90 DUP1\n91 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI", "id": "38", "isExpanded": false, "label": "159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI", "size": 150, "truncLabel": "159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "id": "39", "isExpanded": false, "label": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT", "size": 150, "truncLabel": "76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT"}, {"color": {"background": "#2f7e5b", "border": "#26996f", "highlight": {"background": "#28a16f", "border": "#26996f"}}, "fullLabel": "170 PUSH2 0x00de\n173 PUSH1 0x04\n175 DUP1\n176
var edges = [{"arrows": "to", "from": "31", "label": "Not(ULE(4, calldatasize_Unknown))", "smooth": {"type": "cubicBezier"}, "to": "32"}, {"arrows": "to", "from": "31", "label": "ULE(4, calldatasize_Unknown)", "smooth": {"type": "cubicBezier"}, "to": "33"}, {"arrows": "to", "from": "33", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x27e235e3", "smooth": {"type": "cubicBezier"}, "to": "34"}, {"arrows": "to", "from": "33", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0x27e235e3)", "smooth": {"type": "cubicBezier"}, "to": "35"}, {"arrows": "to", "from": "34", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "36"}, {"arrows": "to", "from": "34", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "37"}, {"arrows": "to", "from": "35", "label": "Extract(0xff, 0xe0, calldata_Unknown_0) == 0x412664ae", "smooth": {"type": "cubicBezier"}, "to": "38"}, {"arrows": "to", "from": "35", "label": "Not(Extract(0xff, 0xe0, calldata_Unknown_0) == 0x412664ae)", "smooth": {"type": "cubicBezier"}, "to": "39"}, {"arrows": "to", "from": "38", "label": "callvalue == 0", "smooth": {"type": "cubicBezier"}, "to": "40"}, {"arrows": "to", "from": "38", "label": "Not(callvalue == 0)", "smooth": {"type": "cubicBezier"}, "to": "41"}, {"arrows": "to", "from": "36", "label": "", "smooth": {"type": "cubicBezier"}, "to": "42"}, {"arrows": "to", "from": "40", "label": "", "smooth": {"type": "cubicBezier"}, "to": "43"}, {"arrows": "to", "from": "42", "label": "", "smooth": {"type": "cubicBezier"}, "to": "44"}, {"arrows": "to", "from": "43", "label": "ULE(calldata_Unknown_32 + 4, storage_keccac_10x50d672faf1bc6a29698f4ed480beffffffffffff_\u00260xffffffffffffffffffffffffffffffffffffffff_\u0026caller)", "smooth": {"type": "cubicBezier"}, "to": "45"}, {"arrows": "to", "from": "43", "label": "Not(ULE(calldata_Unknown_32 + 4, storage_keccac_10x50d672faf1bc6a29698f4ed480beffffffffffff_\u00260xffffffffffffffffffffffffffffffffffffffff_\u0026caller))", "smooth": {"type": "cubicBezier"}, "to": "46"}, {"arrows": "to", "from": "46", "label": "", "smooth": {"type": "cubicBezier"}, "to": "47"}, {"arrows": "to", "from": "47", "label": "", "smooth": {"type": "cubicBezier"}, "to": "48"}, {"arrows": "to", "from": "45", "label": "", "smooth": {"type": "cubicBezier"}, "to": "49"}];
< / script >
< / head >
< body >
< p > Mythril / Ethereum LASER Symbolic VM< / p >
< p > < div id = "mynetwork" > < / div > < br / > < / p >
< script type = "text/javascript" >
var container = document.getElementById('mynetwork');
var nodesSet = new vis.DataSet(nodes);
var edgesSet = new vis.DataSet(edges);
var data = {'nodes': nodesSet, 'edges': edgesSet}
var gph = new vis.Network(container, data, options);
gph.on("click", function (params) {
// parse node id
var nodeID = params['nodes']['0'];
if (nodeID) {
var clickedNode = nodesSet.get(nodeID);
if(clickedNode.isExpanded) {
clickedNode.label = clickedNode.truncLabel;
}
else {
clickedNode.label = clickedNode.fullLabel;
}
clickedNode.isExpanded = !clickedNode.isExpanded;
nodesSet.update(clickedNode);
}
});
< / script >
< / body >
< / html >