Add constraints to solver in suicide module

pull/23/head
Bernhard Mueller 7 years ago
parent 668d4ad39c
commit 05d0758347
  1. 303
      graph.html
  2. 4
      mythril/analysis/modules/unchecked_suicide.py
  3. 6
      mythril/analysis/security.py

@ -0,0 +1,303 @@
<html>
<head>
<style type="text/css">
#mynetwork {
background-color: #232625;
}
body {
background-color: #232625;
color: #ffffff;
}
</style>
<link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
<script>
var options = {
autoResize: true,
height: '100%',
width: '100%',
manipulation: false,
height: '90%',
layout: {
randomSeed: undefined,
improvedLayout:true,
hierarchical: {
enabled:true,
levelSeparation: 450,
nodeSpacing: 200,
treeSpacing: 100,
blockShifting: true,
edgeMinimization: true,
parentCentralization: false,
direction: 'LR', // UD, DU, LR, RL
sortMethod: 'directed' // hubsize, directed
}
},
nodes:{
borderWidth: 1,
borderWidthSelected: 2,
chosen: true,
shape: 'box',
font: {
align: 'left',
color: '#FFFFFF',
},
},
edges:{
font: {
color: '#ffffff',
size: 12, // px
face: 'arial',
background: 'none',
strokeWidth: 0, // px
strokeColor: '#ffffff',
align: 'horizontal',
multi: false,
vadjust: 0,
}
},
physics:{
enabled: false,
}
}
var nodes = [
{id: '0', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '0 CALLDATASIZE\n1 PUSH1 0x00\n3 DUP1\n4 CALLDATACOPY\n5 PUSH1 0x20\n7 PUSH1 0x00\n9 CALLDATASIZE\n10 PUSH1 0x00\n12 PUSH20 0x5b9e8728(...)\n33 PUSH2 0x02c6\n36 GAS\n37 SUB\n38 DELEGATECALL\n'},
{id: '1', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 CALLDATASIZE\n6 ISZERO\n7 PUSH2 0x007d\n10 JUMPI\n'},
{id: '2', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '125 JUMPDEST\n126 JUMPDEST\n127 PUSH1 0x00\n129 CALLVALUE\n130 GT\n131 ISZERO\n132 PUSH2 0x00f1\n135 JUMPI\n'},
{id: '3', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '241 JUMPDEST\n242 JUMPDEST\n243 STOP\n'},
{id: '4', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '136 PUSH32 0x6e89d517(...)\n169 CALLER\n170 CALLVALUE\n171 PUSH1 0x00\n173 CALLDATASIZE\n174 PUSH1 0x40\n176 MLOAD\n177 PUSH1 0x01\n179 PUSH1 0xa0\n181 PUSH1 0x02\n183 EXP\n184 SUB\n185 DUP6\n186 AND\n187 DUP2\n188 MSTORE\n189 PUSH1 0x20\n191 DUP2\n192 ADD\n193 DUP5\n194 SWAP1\n195 MSTORE\n196 PUSH1 0x60\n198 PUSH1 0x40\n200 DUP3\n201 ADD\n202 DUP2\n203 DUP2\n204 MSTORE\n205 SWAP1\n206 DUP3\n207 ADD\n208 DUP4\n209 SWAP1\n210 MSTORE\n211 PUSH1 0x80\n213 DUP3\n214 ADD\n215 DUP5\n216 DUP5\n217 DUP1\n218 DUP3\n219 DUP5\n220 CALLDATACOPY\n221 DUP3\n222 ADD\n223 SWAP2\n224 POP\n225 POP\n226 SWAP6\n227 POP\n228 POP\n229 POP\n230 POP\n231 POP\n232 POP\n233 PUSH1 0x40\n235 MLOAD\n236 DUP1\n237 SWAP2\n238 SUB\n239 SWAP1\n240 LOG1\n241 JUMPDEST\n242 JUMPDEST\n243 STOP\n'},
{id: '5', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '11 PUSH4 0xffffffff\n16 PUSH1 0xe0\n18 PUSH1 0x02\n20 EXP\n21 PUSH1 0x00\n23 CALLDATALOAD\n24 DIV\n25 AND\n26 PUSH4 0x0dcd7a6c\n31 DUP2\n32 EQ\n33 PUSH2 0x00f4\n36 JUMPI\n'},
{id: '6', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '244 JUMPDEST\n245 CALLVALUE\n246 ISZERO\n247 PUSH2 0x00ff\n250 JUMPI\n'},
{id: '7', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '255 JUMPDEST\n256 PUSH2 0x00f1\n259 PUSH1 0x04\n261 DUP1\n262 CALLDATALOAD\n263 PUSH1 0x01\n265 PUSH1 0xa0\n267 PUSH1 0x02\n269 EXP\n270 SUB\n271 SWAP1\n272 DUP2\n273 AND\n274 SWAP2\n275 PUSH1 0x24\n277 DUP1\n278 CALLDATALOAD\n279 SWAP3\n280 PUSH1 0x44\n282 CALLDATALOAD\n283 AND\n284 SWAP2\n285 PUSH1 0x64\n287 CALLDATALOAD\n288 SWAP2\n289 PUSH1 0x84\n291 CALLDATALOAD\n292 SWAP2\n293 SWAP1\n294 PUSH1 0xc4\n296 SWAP1\n297 PUSH1 0xa4\n299 CALLDATALOAD\n300 SWAP1\n301 DUP2\n302 ADD\n303 SWAP1\n304 DUP4\n305 ADD\n306 CALLDATALOAD\n307 DUP1\n308 PUSH1 0x20\n310 PUSH1 0x1f\n312 DUP3\n313 ADD\n314 DUP2\n315 SWAP1\n316 DIV\n317 DUP2\n318 MUL\n319 ADD\n320 PUSH1 0x40\n322 MLOAD\n323 SWAP1\n324 DUP2\n325 ADD\n326 PUSH1 0x40\n328 MSTORE\n329 DUP2\n330 DUP2\n331 MSTORE\n332 SWAP3\n333 SWAP2\n334 SWAP1\n335 PUSH1 0x20\n337 DUP5\n338 ADD\n339 DUP4\n340 DUP4\n341 DUP1\n342 DUP3\n343 DUP5\n344 CALLDATACOPY\n345 POP\n346 SWAP5\n347 SWAP7\n348 POP\n349 PUSH2 0x0338\n352 SWAP6\n353 POP\n354 POP\n355 POP\n356 POP\n357 POP\n358 POP\n359 JUMP\n'},
{id: '8', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '824 JUMPDEST\n825 PUSH1 0x00\n827 DUP1\n828 PUSH1 0x00\n830 PUSH2 0x0346\n833 CALLER\n834 PUSH2 0x07ce\n837 JUMP\n'},
{id: '9', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1998 JUMPDEST\n1999 PUSH1 0x00\n2001 DUP1\n2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '10', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2102 JUMPDEST\n2103 PUSH1 0x00\n2105 SWAP2\n2106 POP\n2107 JUMPDEST\n2108 POP\n2109 SWAP2\n2110 SWAP1\n2111 POP\n2112 JUMP\n'},
{id: '11', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '838 JUMPDEST\n839 ISZERO\n840 ISZERO\n841 PUSH2 0x0351\n844 JUMPI\n'},
{id: '12', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '845 PUSH1 0x00\n847 DUP1\n848 REVERT\n'},
{id: '13', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '14', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2037 JUMPDEST\n2038 SWAP1\n2039 PUSH1 0x00\n2041 MSTORE\n2042 PUSH1 0x20\n2044 PUSH1 0x00\n2046 SHA3\n2047 SWAP1\n2048 ADD\n2049 PUSH1 0x00\n2051 JUMPDEST\n2052 SWAP1\n2053 SLOAD\n2054 SWAP1\n2055 PUSH2 0x0100\n2058 EXP\n2059 SWAP1\n2060 DIV\n2061 PUSH1 0x01\n2063 PUSH1 0xa0\n2065 PUSH1 0x02\n2067 EXP\n2068 SUB\n2069 AND\n2070 PUSH1 0x01\n2072 PUSH1 0xa0\n2074 PUSH1 0x02\n2076 EXP\n2077 SUB\n2078 AND\n2079 EQ\n2080 ISZERO\n2081 PUSH2 0x082d\n2084 JUMPI\n'},
{id: '15', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2093 JUMPDEST\n2094 JUMPDEST\n2095 PUSH1 0x01\n2097 ADD\n2098 PUSH2 0x07d2\n2101 JUMP\n'},
{id: '16', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '17', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '18', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '19', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2085 PUSH1 0x01\n2087 SWAP2\n2088 POP\n2089 PUSH2 0x083b\n2092 JUMP\n'},
{id: '20', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2107 JUMPDEST\n2108 POP\n2109 SWAP2\n2110 SWAP1\n2111 POP\n2112 JUMP\n'},
{id: '21', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '838 JUMPDEST\n839 ISZERO\n840 ISZERO\n841 PUSH2 0x0351\n844 JUMPI\n'},
{id: '22', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '849 JUMPDEST\n850 DUP9\n851 DUP9\n852 DUP9\n853 DUP9\n854 DUP9\n855 PUSH1 0x40\n857 MLOAD\n858 PUSH32 0x45524332(...)\n891 DUP2\n892 MSTORE\n893 PUSH13 0x01000000(...)\n907 PUSH1 0x01\n909 PUSH1 0xa0\n911 PUSH1 0x02\n913 EXP\n914 SUB\n915 SWAP7\n916 DUP8\n917 AND\n918 DUP2\n919 MUL\n920 PUSH1 0x05\n922 DUP4\n923 ADD\n924 MSTORE\n925 PUSH1 0x19\n927 DUP3\n928 ADD\n929 SWAP6\n930 SWAP1\n931 SWAP6\n932 MSTORE\n933 SWAP3\n934 SWAP1\n935 SWAP5\n936 AND\n937 SWAP1\n938 SWAP3\n939 MUL\n940 PUSH1 0x39\n942 DUP3\n943 ADD\n944 MSTORE\n945 PUSH1 0x4d\n947 DUP2\n948 ADD\n949 SWAP2\n950 SWAP1\n951 SWAP2\n952 MSTORE\n953 PUSH1 0x6d\n955 DUP2\n956 ADD\n957 SWAP2\n958 SWAP1\n959 SWAP2\n960 MSTORE\n961 PUSH1 0x8d\n963 ADD\n964 PUSH1 0x40\n966 MLOAD\n967 DUP1\n968 SWAP2\n969 SUB\n970 SWAP1\n971 SHA3\n972 SWAP3\n973 POP\n974 PUSH2 0x03da\n977 DUP10\n978 DUP5\n979 DUP7\n980 DUP10\n981 DUP10\n982 PUSH2 0x0939\n985 JUMP\n'},
{id: '23', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2361 JUMPDEST\n2362 PUSH1 0x00\n2364 DUP1\n2365 PUSH2 0x0946\n2368 DUP7\n2369 DUP7\n2370 PUSH2 0x09c2\n2373 JUMP\n'},
{id: '24', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2498 JUMPDEST\n2499 PUSH1 0x00\n2501 DUP1\n2502 PUSH1 0x00\n2504 DUP1\n2505 DUP5\n2506 MLOAD\n2507 PUSH1 0x41\n2509 EQ\n2510 PUSH2 0x09d6\n2513 JUMPI\n'},
{id: '25', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2518 JUMPDEST\n2519 PUSH1 0x20\n2521 DUP6\n2522 ADD\n2523 MLOAD\n2524 SWAP3\n2525 POP\n2526 PUSH1 0x40\n2528 DUP6\n2529 ADD\n2530 MLOAD\n2531 SWAP2\n2532 POP\n2533 PUSH1 0xff\n2535 PUSH1 0x41\n2537 DUP7\n2538 ADD\n2539 MLOAD\n2540 AND\n2541 SWAP1\n2542 POP\n2543 PUSH1 0x1b\n2545 DUP2\n2546 PUSH1 0xff\n2548 AND\n2549 LT\n2550 ISZERO\n2551 PUSH2 0x09fe\n2554 JUMPI\n'},
{id: '26', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2555 PUSH1 0x1b\n2557 ADD\n2558 JUMPDEST\n2559 PUSH1 0x01\n2561 DUP7\n2562 DUP3\n2563 DUP6\n2564 DUP6\n2565 PUSH1 0x40\n2567 MLOAD\n2568 PUSH1 0x00\n2570 DUP2\n2571 MSTORE\n2572 PUSH1 0x20\n2574 ADD\n2575 PUSH1 0x40\n2577 MSTORE\n2578 PUSH1 0x00\n2580 PUSH1 0x40\n2582 MLOAD\n2583 PUSH1 0x20\n2585 ADD\n2586 MSTORE\n2587 PUSH1 0x40\n2589 MLOAD\n2590 SWAP4\n2591 DUP5\n2592 MSTORE\n2593 PUSH1 0xff\n2595 SWAP1\n2596 SWAP3\n2597 AND\n2598 PUSH1 0x20\n2600 DUP1\n2601 DUP6\n2602 ADD\n2603 SWAP2\n2604 SWAP1\n2605 SWAP2\n2606 MSTORE\n2607 PUSH1 0x40\n2609 DUP1\n2610 DUP6\n2611 ADD\n2612 SWAP3\n2613 SWAP1\n2614 SWAP3\n2615 MSTORE\n2616 PUSH1 0x60\n2618 DUP5\n2619 ADD\n2620 SWAP3\n2621 SWAP1\n2622 SWAP3\n2623 MSTORE\n2624 PUSH1 0x80\n2626 SWAP1\n2627 SWAP3\n2628 ADD\n2629 SWAP2\n2630 MLOAD\n2631 PUSH1 0x20\n2633 DUP2\n2634 SUB\n2635 SWAP1\n2636 DUP1\n2637 DUP5\n2638 SUB\n2639 SWAP1\n2640 PUSH1 0x00\n2642 DUP7\n2643 PUSH2 0x646e\n2646 GAS\n2647 SUB\n2648 CALL\n2649 ISZERO\n2650 ISZERO\n2651 PUSH2 0x0a63\n2654 JUMPI\n'},
{id: '27', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2659 JUMPDEST\n2660 POP\n2661 POP\n2662 PUSH1 0x20\n2664 PUSH1 0x40\n2666 MLOAD\n2667 SUB\n2668 MLOAD\n2669 SWAP4\n2670 POP\n2671 JUMPDEST\n2672 POP\n2673 POP\n2674 POP\n2675 SWAP3\n2676 SWAP2\n2677 POP\n2678 POP\n2679 JUMP\n'},
{id: '28', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2655 PUSH1 0x00\n2657 DUP1\n2658 REVERT\n'},
{id: '29', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2514 PUSH1 0x00\n2516 DUP1\n2517 REVERT\n'},
{id: '30', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '845 PUSH1 0x00\n847 DUP1\n848 REVERT\n'},
{id: '31', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '32', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '251 PUSH1 0x00\n253 DUP1\n254 REVERT\n'},
{id: '33', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '37 DUP1\n38 PUSH4 0x2079fb9a\n43 EQ\n44 PUSH2 0x016a\n47 JUMPI\n'},
{id: '34', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '362 _function_0x2079fb9a\n363 CALLVALUE\n364 ISZERO\n365 PUSH2 0x0175\n368 JUMPI\n'},
{id: '35', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '373 JUMPDEST\n374 PUSH2 0x0180\n377 PUSH1 0x04\n379 CALLDATALOAD\n380 PUSH2 0x04d6\n383 JUMP\n'},
{id: '36', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1238 JUMPDEST\n1239 PUSH1 0x00\n1241 DUP1\n1242 SLOAD\n1243 DUP3\n1244 SWAP1\n1245 DUP2\n1246 LT\n1247 PUSH2 0x04e4\n1250 JUMPI\n'},
{id: '37', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1252 JUMPDEST\n1253 SWAP1\n1254 PUSH1 0x00\n1256 MSTORE\n1257 PUSH1 0x20\n1259 PUSH1 0x00\n1261 SHA3\n1262 SWAP1\n1263 ADD\n1264 PUSH1 0x00\n1266 JUMPDEST\n1267 SWAP2\n1268 POP\n1269 SLOAD\n1270 SWAP1\n1271 PUSH2 0x0100\n1274 EXP\n1275 SWAP1\n1276 DIV\n1277 PUSH1 0x01\n1279 PUSH1 0xa0\n1281 PUSH1 0x02\n1283 EXP\n1284 SUB\n1285 AND\n1286 DUP2\n1287 JUMP\n'},
{id: '38', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '384 JUMPDEST\n385 PUSH1 0x40\n387 MLOAD\n388 PUSH1 0x01\n390 PUSH1 0xa0\n392 PUSH1 0x02\n394 EXP\n395 SUB\n396 SWAP1\n397 SWAP2\n398 AND\n399 DUP2\n400 MSTORE\n401 PUSH1 0x20\n403 ADD\n404 PUSH1 0x40\n406 MLOAD\n407 DUP1\n408 SWAP2\n409 SUB\n410 SWAP1\n411 RETURN\n'},
{id: '39', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1251 INVALID\n'},
{id: '40', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '369 PUSH1 0x00\n371 DUP1\n372 REVERT\n'},
{id: '41', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '48 DUP1\n49 PUSH4 0x2da03409\n54 EQ\n55 PUSH2 0x019c\n58 JUMPI\n'},
{id: '42', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '412 _function_0x2da03409\n413 CALLVALUE\n414 ISZERO\n415 PUSH2 0x01a7\n418 JUMPI\n'},
{id: '43', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '423 JUMPDEST\n424 PUSH2 0x00f1\n427 PUSH1 0x01\n429 PUSH1 0xa0\n431 PUSH1 0x02\n433 EXP\n434 SUB\n435 PUSH1 0x04\n437 CALLDATALOAD\n438 DUP2\n439 AND\n440 SWAP1\n441 PUSH1 0x24\n443 CALLDATALOAD\n444 AND\n445 PUSH2 0x0508\n448 JUMP\n'},
{id: '44', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1288 JUMPDEST\n1289 PUSH1 0x00\n1291 PUSH2 0x0513\n1294 CALLER\n1295 PUSH2 0x07ce\n1298 JUMP\n'},
{id: '45', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1998 JUMPDEST\n1999 PUSH1 0x00\n2001 DUP1\n2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '46', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '47', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '48', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '419 PUSH1 0x00\n421 DUP1\n422 REVERT\n'},
{id: '49', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '59 DUP1\n60 PUSH4 0x39125215\n65 EQ\n66 PUSH2 0x01c3\n69 JUMPI\n'},
{id: '50', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '451 sendMultiSig(address,uint256, bytes data, uint256 expireTime, uint256 sequenceId, bytes signature)\n452 CALLVALUE\n453 ISZERO\n454 PUSH2 0x01ce\n457 JUMPI\n'},
{id: '51', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '462 JUMPDEST\n463 PUSH2 0x00f1\n466 PUSH1 0x04\n468 DUP1\n469 CALLDATALOAD\n470 PUSH1 0x01\n472 PUSH1 0xa0\n474 PUSH1 0x02\n476 EXP\n477 SUB\n478 AND\n479 SWAP1\n480 PUSH1 0x24\n482 DUP1\n483 CALLDATALOAD\n484 SWAP2\n485 SWAP1\n486 PUSH1 0x64\n488 SWAP1\n489 PUSH1 0x44\n491 CALLDATALOAD\n492 SWAP1\n493 DUP2\n494 ADD\n495 SWAP1\n496 DUP4\n497 ADD\n498 CALLDATALOAD\n499 DUP1\n500 PUSH1 0x20\n502 PUSH1 0x1f\n504 DUP3\n505 ADD\n506 DUP2\n507 SWAP1\n508 DIV\n509 DUP2\n510 MUL\n511 ADD\n512 PUSH1 0x40\n514 MLOAD\n515 SWAP1\n516 DUP2\n517 ADD\n518 PUSH1 0x40\n520 MSTORE\n521 DUP2\n522 DUP2\n523 MSTORE\n524 SWAP3\n525 SWAP2\n526 SWAP1\n527 PUSH1 0x20\n529 DUP5\n530 ADD\n531 DUP4\n532 DUP4\n533 DUP1\n534 DUP3\n535 DUP5\n536 CALLDATACOPY\n537 POP\n538 SWAP5\n539 SWAP7\n540 DUP7\n541 CALLDATALOAD\n542 SWAP7\n543 PUSH1 0x20\n545 DUP1\n546 DUP3\n547 ADD\n548 CALLDATALOAD\n549 SWAP8\n550 POP\n551 SWAP2\n552 SWAP6\n553 POP\n554 PUSH1 0x60\n556 DUP2\n557 ADD\n558 SWAP5\n559 POP\n560 PUSH1 0x40\n562 SWAP1\n563 DUP2\n564 ADD\n565 CALLDATALOAD\n566 DUP7\n567 ADD\n568 DUP1\n569 DUP4\n570 ADD\n571 SWAP5\n572 POP\n573 CALLDATALOAD\n574 SWAP3\n575 POP\n576 DUP3\n577 SWAP2\n578 PUSH1 0x1f\n580 DUP4\n581 ADD\n582 DUP2\n583 SWAP1\n584 DIV\n585 DUP2\n586 MUL\n587 ADD\n588 SWAP1\n589 MLOAD\n590 SWAP1\n591 DUP2\n592 ADD\n593 PUSH1 0x40\n595 MSTORE\n596 DUP2\n597 DUP2\n598 MSTORE\n599 SWAP3\n600 SWAP2\n601 SWAP1\n602 PUSH1 0x20\n604 DUP5\n605 ADD\n606 DUP4\n607 DUP4\n608 DUP1\n609 DUP3\n610 DUP5\n611 CALLDATACOPY\n612 POP\n613 SWAP5\n614 SWAP7\n615 POP\n616 PUSH2 0x0589\n619 SWAP6\n620 POP\n621 POP\n622 POP\n623 POP\n624 POP\n625 POP\n626 JUMP\n'},
{id: '52', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1417 JUMPDEST\n1418 PUSH1 0x00\n1420 DUP1\n1421 PUSH2 0x0595\n1424 CALLER\n1425 PUSH2 0x07ce\n1428 JUMP\n'},
{id: '53', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1998 JUMPDEST\n1999 PUSH1 0x00\n2001 DUP1\n2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '54', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '55', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '56', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '458 PUSH1 0x00\n460 DUP1\n461 REVERT\n'},
{id: '57', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '70 DUP1\n71 PUSH4 0x7df73e27\n76 EQ\n77 PUSH2 0x0275\n80 JUMPI\n'},
{id: '58', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '629 isSigner(address signer)\n630 CALLVALUE\n631 ISZERO\n632 PUSH2 0x0280\n635 JUMPI\n'},
{id: '59', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '640 JUMPDEST\n641 PUSH2 0x0294\n644 PUSH1 0x01\n646 PUSH1 0xa0\n648 PUSH1 0x02\n650 EXP\n651 SUB\n652 PUSH1 0x04\n654 CALLDATALOAD\n655 AND\n656 PUSH2 0x07ce\n659 JUMP\n'},
{id: '60', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1998 JUMPDEST\n1999 PUSH1 0x00\n2001 DUP1\n2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '61', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '62', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '63', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '636 PUSH1 0x00\n638 DUP1\n639 REVERT\n'},
{id: '64', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '81 DUP1\n82 PUSH4 0xa0b7967b\n87 EQ\n88 PUSH2 0x02a8\n91 JUMPI\n'},
{id: '65', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '680 getNextSequenceId()\n681 CALLVALUE\n682 ISZERO\n683 PUSH2 0x02b3\n686 JUMPI\n'},
{id: '66', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '691 JUMPDEST\n692 PUSH2 0x02bb\n695 PUSH2 0x0841\n698 JUMP\n'},
{id: '67', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2113 JUMPDEST\n2114 PUSH1 0x00\n2116 DUP1\n2117 DUP1\n2118 JUMPDEST\n2119 PUSH1 0x0a\n2121 DUP2\n2122 LT\n2123 ISZERO\n2124 PUSH2 0x0888\n2127 JUMPI\n'},
{id: '68', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2128 DUP2\n2129 PUSH1 0x02\n2131 DUP3\n2132 PUSH1 0x0a\n2134 DUP2\n2135 LT\n2136 PUSH2 0x085d\n2139 JUMPI\n'},
{id: '69', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2141 JUMPDEST\n2142 ADD\n2143 PUSH1 0x00\n2145 JUMPDEST\n2146 POP\n2147 SLOAD\n2148 GT\n2149 ISZERO\n2150 PUSH2 0x087f\n2153 JUMPI\n'},
{id: '70', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2175 JUMPDEST\n2176 JUMPDEST\n2177 PUSH1 0x01\n2179 ADD\n2180 PUSH2 0x0846\n2183 JUMP\n'},
{id: '71', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2118 JUMPDEST\n2119 PUSH1 0x0a\n2121 DUP2\n2122 LT\n2123 ISZERO\n2124 PUSH2 0x0888\n2127 JUMPI\n'},
{id: '72', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2128 DUP2\n2129 PUSH1 0x02\n2131 DUP3\n2132 PUSH1 0x0a\n2134 DUP2\n2135 LT\n2136 PUSH2 0x085d\n2139 JUMPI\n'},
{id: '73', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2140 INVALID\n'},
{id: '74', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2154 PUSH1 0x02\n2156 DUP2\n2157 PUSH1 0x0a\n2159 DUP2\n2160 LT\n2161 PUSH2 0x0876\n2164 JUMPI\n'},
{id: '75', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2166 JUMPDEST\n2167 ADD\n2168 PUSH1 0x00\n2170 JUMPDEST\n2171 POP\n2172 SLOAD\n2173 SWAP2\n2174 POP\n2175 JUMPDEST\n2176 JUMPDEST\n2177 PUSH1 0x01\n2179 ADD\n2180 PUSH2 0x0846\n2183 JUMP\n'},
{id: '76', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2118 JUMPDEST\n2119 PUSH1 0x0a\n2121 DUP2\n2122 LT\n2123 ISZERO\n2124 PUSH2 0x0888\n2127 JUMPI\n'},
{id: '77', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2128 DUP2\n2129 PUSH1 0x02\n2131 DUP3\n2132 PUSH1 0x0a\n2134 DUP2\n2135 LT\n2136 PUSH2 0x085d\n2139 JUMPI\n'},
{id: '78', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2140 INVALID\n'},
{id: '79', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2165 INVALID\n'},
{id: '80', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2140 INVALID\n'},
{id: '81', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '687 PUSH1 0x00\n689 DUP1\n690 REVERT\n'},
{id: '82', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '92 DUP1\n93 PUSH4 0xa68a76cc\n98 EQ\n99 PUSH2 0x02cd\n102 JUMPI\n'},
{id: '83', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '717 createForwarder()\n718 CALLVALUE\n719 ISZERO\n720 PUSH2 0x02d8\n723 JUMPI\n'},
{id: '84', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '728 JUMPDEST\n729 PUSH2 0x0180\n732 PUSH2 0x0894\n735 JUMP\n'},
{id: '85', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2196 JUMPDEST\n2197 PUSH1 0x00\n2199 PUSH2 0x089f\n2202 CALLER\n2203 PUSH2 0x07ce\n2206 JUMP\n'},
{id: '86', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1998 JUMPDEST\n1999 PUSH1 0x00\n2001 DUP1\n2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '87', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '88', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '89', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '724 PUSH1 0x00\n726 DUP1\n727 REVERT\n'},
{id: '90', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '103 DUP1\n104 PUSH4 0xabe3219c\n109 EQ\n110 PUSH2 0x02fc\n113 JUMPI\n'},
{id: '91', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '764 _function_0xabe3219c\n765 CALLVALUE\n766 ISZERO\n767 PUSH2 0x0307\n770 JUMPI\n'},
{id: '92', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '775 JUMPDEST\n776 PUSH2 0x0294\n779 PUSH2 0x08cf\n782 JUMP\n'},
{id: '93', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2255 JUMPDEST\n2256 PUSH1 0x01\n2258 SLOAD\n2259 PUSH1 0xff\n2261 AND\n2262 DUP2\n2263 JUMP\n'},
{id: '94', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '660 JUMPDEST\n661 PUSH1 0x40\n663 MLOAD\n664 SWAP1\n665 ISZERO\n666 ISZERO\n667 DUP2\n668 MSTORE\n669 PUSH1 0x20\n671 ADD\n672 PUSH1 0x40\n674 MLOAD\n675 DUP1\n676 SWAP2\n677 SUB\n678 SWAP1\n679 RETURN\n'},
{id: '95', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '771 PUSH1 0x00\n773 DUP1\n774 REVERT\n'},
{id: '96', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '114 DUP1\n115 PUSH4 0xfc0f392d\n120 EQ\n121 PUSH2 0x0323\n124 JUMPI\n'},
{id: '97', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '803 activateSafeMode()\n804 CALLVALUE\n805 ISZERO\n806 PUSH2 0x032e\n809 JUMPI\n'},
{id: '98', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '814 JUMPDEST\n815 PUSH2 0x00f1\n818 PUSH2 0x08d8\n821 JUMP\n'},
{id: '99', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2264 JUMPDEST\n2265 PUSH2 0x08e1\n2268 CALLER\n2269 PUSH2 0x07ce\n2272 JUMP\n'},
{id: '100', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '1998 JUMPDEST\n1999 PUSH1 0x00\n2001 DUP1\n2002 JUMPDEST\n2003 PUSH1 0x00\n2005 SLOAD\n2006 DUP2\n2007 LT\n2008 ISZERO\n2009 PUSH2 0x0836\n2012 JUMPI\n'},
{id: '101', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2013 DUP3\n2014 PUSH1 0x01\n2016 PUSH1 0xa0\n2018 PUSH1 0x02\n2020 EXP\n2021 SUB\n2022 AND\n2023 PUSH1 0x00\n2025 DUP3\n2026 DUP2\n2027 SLOAD\n2028 DUP2\n2029 LT\n2030 ISZERO\n2031 ISZERO\n2032 PUSH2 0x07f5\n2035 JUMPI\n'},
{id: '102', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '2036 INVALID\n'},
{id: '103', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '810 PUSH1 0x00\n812 DUP1\n813 REVERT\n'},
{id: '104', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '125 JUMPDEST\n126 JUMPDEST\n127 PUSH1 0x00\n129 CALLVALUE\n130 GT\n131 ISZERO\n132 PUSH2 0x00f1\n135 JUMPI\n'},
{id: '105', color: {border: '#9e42b3', background: '#842899', highlight: {border: '#9e42b3', background: '#933da6'}}, size: 150, 'label': '136 PUSH32 0x6e89d517(...)\n169 CALLER\n170 CALLVALUE\n171 PUSH1 0x00\n173 CALLDATASIZE\n174 PUSH1 0x40\n176 MLOAD\n177 PUSH1 0x01\n179 PUSH1 0xa0\n181 PUSH1 0x02\n183 EXP\n184 SUB\n185 DUP6\n186 AND\n187 DUP2\n188 MSTORE\n189 PUSH1 0x20\n191 DUP2\n192 ADD\n193 DUP5\n194 SWAP1\n195 MSTORE\n196 PUSH1 0x60\n198 PUSH1 0x40\n200 DUP3\n201 ADD\n202 DUP2\n203 DUP2\n204 MSTORE\n205 SWAP1\n206 DUP3\n207 ADD\n208 DUP4\n209 SWAP1\n210 MSTORE\n211 PUSH1 0x80\n213 DUP3\n214 ADD\n215 DUP5\n216 DUP5\n217 DUP1\n218 DUP3\n219 DUP5\n220 CALLDATACOPY\n221 DUP3\n222 ADD\n223 SWAP2\n224 POP\n225 POP\n226 SWAP6\n227 POP\n228 POP\n229 POP\n230 POP\n231 POP\n232 POP\n233 PUSH1 0x40\n235 MLOAD\n236 DUP1\n237 SWAP2\n238 SUB\n239 SWAP1\n240 LOG1\n241 JUMPDEST\n242 JUMPDEST\n243 STOP\n'},
{id: '106', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '39 ISZERO\n40 ISZERO\n41 PUSH1 0x2d\n43 JUMPI\n'},
{id: '107', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '45 JUMPDEST\n46 PUSH1 0x20\n48 PUSH1 0x00\n50 RETURN\n'},
{id: '108', color: {border: '#26996f', background: '#2f7e5b', highlight: {border: '#26996f', background: '#28a16f'}}, size: 150, 'label': '44 INVALID\n'}
];
var edges = [
{from: '2', to: '3', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '2', to: '4', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '1', to: '2', 'arrows': 'to', 'label': 'calldatasize_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '11', to: '12', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '10', to: '11', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '9', to: '10', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '17', to: '18', 'arrows': 'to', 'label': 'Extract(0xff, 1, storage_0) == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '16', to: '17', 'arrows': 'to', 'label': 'Not(Extract(0xff, 1, storage_0) == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '15', to: '16', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '14', to: '15', 'arrows': 'to', 'label': 'Not(Extract(0xa7, 8, storage_e9d9a5d1) == Extract(0x9f, 0, caller))', 'smooth': {'type': 'cubicBezier'}},
{from: '26', to: '27', 'arrows': 'to', 'label': 'Not(retval_20x289 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '26', to: '28', 'arrows': 'to', 'label': 'retval_20x289 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '25', to: '26', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '24', to: '25', 'arrows': 'to', 'label': 'calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_4 + calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_164 ==65', 'smooth': {'type': 'cubicBezier'}},
{from: '24', to: '29', 'arrows': 'to', 'label': 'Not(calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_4 + calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_164 == 65)', 'smooth': {'type': 'cubicBezier'}},
{from: '23', to: '24', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '22', to: '23', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '21', to: '22', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '21', to: '30', 'arrows': 'to', 'label': 'False', 'smooth': {'type': 'cubicBezier'}},
{from: '20', to: '21', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '19', to: '20', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '14', to: '19', 'arrows': 'to', 'label': 'Extract(0xa7, 8, storage_e9d9a5d1) == Extract(0x9f, 0, caller)', 'smooth': {'type': 'cubicBezier'}},
{from: '13', to: '14', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '13', to: '31', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '9', to: '13', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '8', to: '9', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '7', to: '8', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '6', to: '7', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '6', to: '32', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '5', to: '6', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0xdcd7a6c', 'smooth': {'type': 'cubicBezier'}},
{from: '37', to: '38', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '36', to: '37', 'arrows': 'to', 'label': 'Not(ULE(storage_0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_4))', 'smooth': {'type': 'cubicBezier'}},
{from: '36', to: '39', 'arrows': 'to', 'label': 'ULE(storage_0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_4)', 'smooth': {'type': 'cubicBezier'}},
{from: '35', to: '36', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '34', to: '35', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '34', to: '40', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '33', to: '34', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0x2079fb9a', 'smooth': {'type': 'cubicBezier'}},
{from: '46', to: '47', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '45', to: '46', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '44', to: '45', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '43', to: '44', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '42', to: '43', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '42', to: '48', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '41', to: '42', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0x2da03409', 'smooth': {'type': 'cubicBezier'}},
{from: '54', to: '55', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '53', to: '54', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '52', to: '53', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '51', to: '52', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '50', to: '51', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '50', to: '56', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '49', to: '50', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0x39125215', 'smooth': {'type': 'cubicBezier'}},
{from: '61', to: '62', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '60', to: '61', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '59', to: '60', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '58', to: '59', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '58', to: '63', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '57', to: '58', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0x7df73e27', 'smooth': {'type': 'cubicBezier'}},
{from: '72', to: '73', 'arrows': 'to', 'label': 'False', 'smooth': {'type': 'cubicBezier'}},
{from: '71', to: '72', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '70', to: '71', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '69', to: '70', 'arrows': 'to', 'label': 'storage_50xb08f3d == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '77', to: '78', 'arrows': 'to', 'label': 'False', 'smooth': {'type': 'cubicBezier'}},
{from: '76', to: '77', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '75', to: '76', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '74', to: '75', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '74', to: '79', 'arrows': 'to', 'label': 'False', 'smooth': {'type': 'cubicBezier'}},
{from: '69', to: '74', 'arrows': 'to', 'label': 'Not(storage_50xb08f3d == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '68', to: '69', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '68', to: '80', 'arrows': 'to', 'label': 'False', 'smooth': {'type': 'cubicBezier'}},
{from: '67', to: '68', 'arrows': 'to', 'label': 'True', 'smooth': {'type': 'cubicBezier'}},
{from: '66', to: '67', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '65', to: '66', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '65', to: '81', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '64', to: '65', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0xa0b7967b', 'smooth': {'type': 'cubicBezier'}},
{from: '87', to: '88', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '86', to: '87', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '85', to: '86', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '84', to: '85', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '83', to: '84', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '83', to: '89', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '82', to: '83', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0xa68a76cc', 'smooth': {'type': 'cubicBezier'}},
{from: '93', to: '94', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '92', to: '93', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '91', to: '92', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '91', to: '95', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '90', to: '91', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0xabe3219c', 'smooth': {'type': 'cubicBezier'}},
{from: '101', to: '102', 'arrows': 'to', 'label': 'storage_0 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '100', to: '101', 'arrows': 'to', 'label': 'Not(storage_0 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '99', to: '100', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '98', to: '99', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '97', to: '98', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '97', to: '103', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '96', to: '97', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) ==0xfc0f392d', 'smooth': {'type': 'cubicBezier'}},
{from: '104', to: '105', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '96', to: '104', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0xfc0f392d)', 'smooth': {'type': 'cubicBezier'}},
{from: '90', to: '96', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0xabe3219c)', 'smooth': {'type': 'cubicBezier'}},
{from: '82', to: '90', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0xa68a76cc)', 'smooth': {'type': 'cubicBezier'}},
{from: '64', to: '82', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0xa0b7967b)', 'smooth': {'type': 'cubicBezier'}},
{from: '57', to: '64', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0x7df73e27)', 'smooth': {'type': 'cubicBezier'}},
{from: '49', to: '57', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0x39125215)', 'smooth': {'type': 'cubicBezier'}},
{from: '41', to: '49', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0x2da03409)', 'smooth': {'type': 'cubicBezier'}},
{from: '33', to: '41', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0x2079fb9a)', 'smooth': {'type': 'cubicBezier'}},
{from: '5', to: '33', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253_0) == 0xdcd7a6c)', 'smooth': {'type': 'cubicBezier'}},
{from: '1', to: '5', 'arrows': 'to', 'label': 'Not(calldatasize_0x5b9e0x2218e0x13cbbeb0x2b4d22daaab74f6cbf2c0x1253 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '0', to: '1', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '106', to: '107', 'arrows': 'to', 'label': 'Not(retval_39 == 0)', 'smooth': {'type': 'cubicBezier'}},
{from: '106', to: '108', 'arrows': 'to', 'label': 'retval_39 == 0', 'smooth': {'type': 'cubicBezier'}},
{from: '38', to: '106', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '94', to: '106', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},
{from: '107', to: '106', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}}
];
</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 data = {'nodes': nodes, 'edges': edges}
var gph = new vis.Network(container, data, options);
</script>
</body>
</html>

@ -35,6 +35,10 @@ def execute(statespace):
if not constraint_on_caller:
s = Solver()
for constraint in node.constraints:
s.add(constraint)
if (s.check() == sat):
issue = Issue("Unchecked SUICIDE", "VULNERABILITY")
issue.description = "The function " + node.function_name + " calls the SUICIDE instruction. It appears as if the function does not verify the caller address.\n"

@ -9,6 +9,6 @@ def fire_lasers(statespace):
issues += delegatecall_forward.execute(statespace)
issues += unchecked_suicide.execute(statespace)
report = Report(issues)
print(report.as_text())
if (len(issues)):
report = Report(issues)
print(report.as_text())

Loading…
Cancel
Save