github.com/annchain/OG@v0.0.9/vm/vm_test/contracts/o/asserts.evm (about) 1 /* "../vm_test/contracts/asserts.sol":26:442 contract asserts {... */ 2 mstore(0x40, 0x60) 3 jumpi(tag_1, iszero(callvalue)) 4 0x0 5 dup1 6 revert 7 tag_1: 8 dataSize(sub_0) 9 dup1 10 dataOffset(sub_0) 11 0x0 12 codecopy 13 0x0 14 return 15 stop 16 17 sub_0: assembly { 18 /* "../vm_test/contracts/asserts.sol":26:442 contract asserts {... */ 19 mstore(0x40, 0x60) 20 jumpi(tag_1, lt(calldatasize, 0x4)) 21 calldataload(0x0) 22 0x100000000000000000000000000000000000000000000000000000000 23 swap1 24 div 25 0xffffffff 26 and 27 dup1 28 0xd43aaf2 29 eq 30 tag_2 31 jumpi 32 dup1 33 0x2911e7b2 34 eq 35 tag_3 36 jumpi 37 dup1 38 0xc768d990 39 eq 40 tag_4 41 jumpi 42 tag_1: 43 0x0 44 dup1 45 revert 46 /* "../vm_test/contracts/asserts.sol":157:294 function req() payable public {... */ 47 tag_2: 48 tag_5 49 jump(tag_6) 50 tag_5: 51 stop 52 /* "../vm_test/contracts/asserts.sol":299:440 function asrt() payable public {... */ 53 tag_3: 54 tag_7 55 jump(tag_8) 56 tag_7: 57 stop 58 /* "../vm_test/contracts/asserts.sol":50:94 mapping (address => address) public calledby */ 59 tag_4: 60 jumpi(tag_9, iszero(callvalue)) 61 0x0 62 dup1 63 revert 64 tag_9: 65 tag_10 66 0x4 67 dup1 68 dup1 69 calldataload 70 0xffffffffffffffffffffffffffffffffffffffff 71 and 72 swap1 73 0x20 74 add 75 swap1 76 swap2 77 swap1 78 pop 79 pop 80 jump(tag_11) 81 tag_10: 82 mload(0x40) 83 dup1 84 dup3 85 0xffffffffffffffffffffffffffffffffffffffff 86 and 87 0xffffffffffffffffffffffffffffffffffffffff 88 and 89 dup2 90 mstore 91 0x20 92 add 93 swap2 94 pop 95 pop 96 mload(0x40) 97 dup1 98 swap2 99 sub 100 swap1 101 return 102 /* "../vm_test/contracts/asserts.sol":157:294 function req() payable public {... */ 103 tag_6: 104 /* "../vm_test/contracts/asserts.sol":220:230 msg.sender */ 105 caller 106 /* "../vm_test/contracts/asserts.sol":197:205 calledby */ 107 0x0 108 /* "../vm_test/contracts/asserts.sol":197:217 calledby[msg.sender] */ 109 dup1 110 /* "../vm_test/contracts/asserts.sol":206:216 msg.sender */ 111 caller 112 /* "../vm_test/contracts/asserts.sol":197:217 calledby[msg.sender] */ 113 0xffffffffffffffffffffffffffffffffffffffff 114 and 115 0xffffffffffffffffffffffffffffffffffffffff 116 and 117 dup2 118 mstore 119 0x20 120 add 121 swap1 122 dup2 123 mstore 124 0x20 125 add 126 0x0 127 keccak256 128 0x0 129 /* "../vm_test/contracts/asserts.sol":197:230 calledby[msg.sender] = msg.sender */ 130 0x100 131 exp 132 dup2 133 sload 134 dup2 135 0xffffffffffffffffffffffffffffffffffffffff 136 mul 137 not 138 and 139 swap1 140 dup4 141 0xffffffffffffffffffffffffffffffffffffffff 142 and 143 mul 144 or 145 swap1 146 sstore 147 pop 148 /* "../vm_test/contracts/asserts.sol":285:286 0 */ 149 0x0 150 /* "../vm_test/contracts/asserts.sol":280:281 2 */ 151 0x2 152 /* "../vm_test/contracts/asserts.sol":268:277 msg.value */ 153 callvalue 154 /* "../vm_test/contracts/asserts.sol":268:281 msg.value % 2 */ 155 dup2 156 iszero 157 iszero 158 tag_13 159 jumpi 160 invalid 161 tag_13: 162 mod 163 /* "../vm_test/contracts/asserts.sol":268:286 msg.value % 2 == 0 */ 164 eq 165 /* "../vm_test/contracts/asserts.sol":260:287 require(msg.value % 2 == 0) */ 166 iszero 167 iszero 168 tag_14 169 jumpi 170 0x0 171 dup1 172 revert 173 tag_14: 174 /* "../vm_test/contracts/asserts.sol":157:294 function req() payable public {... */ 175 jump // out 176 /* "../vm_test/contracts/asserts.sol":299:440 function asrt() payable public {... */ 177 tag_8: 178 /* "../vm_test/contracts/asserts.sol":363:373 msg.sender */ 179 caller 180 /* "../vm_test/contracts/asserts.sol":340:348 calledby */ 181 0x0 182 /* "../vm_test/contracts/asserts.sol":340:360 calledby[msg.sender] */ 183 dup1 184 /* "../vm_test/contracts/asserts.sol":349:359 msg.sender */ 185 caller 186 /* "../vm_test/contracts/asserts.sol":340:360 calledby[msg.sender] */ 187 0xffffffffffffffffffffffffffffffffffffffff 188 and 189 0xffffffffffffffffffffffffffffffffffffffff 190 and 191 dup2 192 mstore 193 0x20 194 add 195 swap1 196 dup2 197 mstore 198 0x20 199 add 200 0x0 201 keccak256 202 0x0 203 /* "../vm_test/contracts/asserts.sol":340:373 calledby[msg.sender] = msg.sender */ 204 0x100 205 exp 206 dup2 207 sload 208 dup2 209 0xffffffffffffffffffffffffffffffffffffffff 210 mul 211 not 212 and 213 swap1 214 dup4 215 0xffffffffffffffffffffffffffffffffffffffff 216 and 217 mul 218 or 219 swap1 220 sstore 221 pop 222 /* "../vm_test/contracts/asserts.sol":431:432 0 */ 223 0x0 224 /* "../vm_test/contracts/asserts.sol":426:427 2 */ 225 0x2 226 /* "../vm_test/contracts/asserts.sol":414:423 msg.value */ 227 callvalue 228 /* "../vm_test/contracts/asserts.sol":414:427 msg.value % 2 */ 229 dup2 230 iszero 231 iszero 232 tag_16 233 jumpi 234 invalid 235 tag_16: 236 mod 237 /* "../vm_test/contracts/asserts.sol":414:432 msg.value % 2 == 0 */ 238 eq 239 /* "../vm_test/contracts/asserts.sol":407:433 assert(msg.value % 2 == 0) */ 240 iszero 241 iszero 242 tag_17 243 jumpi 244 invalid 245 tag_17: 246 /* "../vm_test/contracts/asserts.sol":299:440 function asrt() payable public {... */ 247 jump // out 248 /* "../vm_test/contracts/asserts.sol":50:94 mapping (address => address) public calledby */ 249 tag_11: 250 mstore(0x20, 0x0) 251 dup1 252 0x0 253 mstore 254 keccak256(0x0, 0x40) 255 0x0 256 swap2 257 pop 258 sload 259 swap1 260 0x100 261 exp 262 swap1 263 div 264 0xffffffffffffffffffffffffffffffffffffffff 265 and 266 dup2 267 jump // out 268 269 auxdata: 0xa165627a7a72305820eff31fa670209a59022241e0e62e9fa19d341b8896c33b9461bd29ac62725e390029 270 }