Online Solidity Decompiler

« Decompile another contract

Address

0x111744db33a93c26b9450b93a730d364023a813b [etherscan.io | etherchain.org]

Public Methods

Method names cached from 4byte.directory.
0x4e71e0c8 claimOwnership()
0x8da5cb5b owner()
0xbeabacc8 transfer(address,address,uint256)
0xe30c3978 pendingOwner()
0xf2fde38b transferOwnership(address)

Internal Methods

claimOwnership()
owner(arg0) returns (r0)
transfer(arg0, arg1, arg2) returns (r0)
pendingOwner(arg0) returns (r0)
transferOwnership(arg0)

Decompilation

contract Contract { function main() { memory[0x40:0x60] = 0x60; if (!msg.data.length) { label_0051: if (!msg.value) { revert(memory[0x00:0x00]); } else { revert(memory[0x00:0x00]); } } else { var var0 = msg.data[0x00:0x20] / 0x02 ** 0xe0 & 0xffffffff; if (var0 == 0x4e71e0c8) { // Dispatch table entry for claimOwnership() if (msg.value) { revert(memory[0x00:0x00]); } var var1 = 0x0074; claimOwnership(); stop(); } else if (var0 == 0x8da5cb5b) { // Dispatch table entry for owner() if (msg.value) { revert(memory[0x00:0x00]); } var1 = 0x0089; var var2 = owner(); label_0089: var temp0 = memory[0x40:0x60]; memory[temp0:temp0 + 0x20] = var2 & 0x02 ** 0xa0 - 0x01; var temp1 = memory[0x40:0x60]; return memory[temp1:temp1 + (temp0 + 0x20) - temp1]; } else if (var0 == 0xbeabacc8) { // Dispatch table entry for transfer(address,address,uint256) if (msg.value) { revert(memory[0x00:0x00]); } var1 = 0x00cd; var temp2 = 0x02 ** 0xa0 - 0x01; var2 = temp2 & msg.data[0x04:0x24]; var var3 = msg.data[0x24:0x44] & temp2; var var4 = msg.data[0x44:0x64]; var1 = transfer(var2, var3, var4); var temp3 = memory[0x40:0x60]; memory[temp3:temp3 + 0x20] = !!var1; var temp4 = memory[0x40:0x60]; return memory[temp4:temp4 + (temp3 + 0x20) - temp4]; } else if (var0 == 0xe30c3978) { // Dispatch table entry for pendingOwner() if (msg.value) { revert(memory[0x00:0x00]); } var1 = 0x0089; var2 = pendingOwner(); goto label_0089; } else if (var0 == 0xf2fde38b) { // Dispatch table entry for transferOwnership(address) if (msg.value) { revert(memory[0x00:0x00]); } var1 = 0x0074; var2 = msg.data[0x04:0x24] & 0x02 ** 0xa0 - 0x01; transferOwnership(var2); stop(); } else { goto label_0051; } } } function claimOwnership() { var temp0 = 0x02 ** 0xa0 - 0x01; if (storage[0x01] & temp0 != temp0 & msg.sender) { return; } var temp1 = storage[0x01]; var temp2 = ~0xffffffffffffffffffffffffffffffffffffffff; storage[0x00] = (temp1 & 0x02 ** 0xa0 - 0x01) | (temp2 & storage[0x00]); storage[0x01] = temp2 & temp1; } function owner() returns (var r0) { return storage[0x00] & 0x02 ** 0xa0 - 0x01; } function transfer(var arg0, var arg1, var arg2) returns (var r0) { var var0 = 0x00; var temp0 = 0x02 ** 0xa0 - 0x01; if (storage[var0] & temp0 != temp0 & msg.sender) { revert(memory[0x00:0x00]); } var temp1 = memory[0x40:0x60]; memory[temp1:temp1 + 0x20] = 0x7472616e7366657228616464726573732c75696e743235362900000000000000; var temp2 = memory[0x40:0x60]; var temp3 = memory[0x40:0x60]; memory[temp3:temp3 + 0x20] = (keccak256(memory[temp2:temp2 + (temp1 + 0x19) - temp2]) / 0x02 ** 0xe0 & 0xffffffff) * 0x02 ** 0xe0; memory[temp3 + 0x04:temp3 + 0x04 + 0x20] = arg1 & 0x02 ** 0xa0 - 0x01; memory[temp3 + 0x24:temp3 + 0x24 + 0x20] = arg2; var temp4 = memory[0x40:0x60]; var temp5; temp5, memory[temp4:temp4 + 0x00] = address(arg0 & 0x02 ** 0xa0 - 0x01).call.gas(msg.gas - 0x646e)(memory[temp4:temp4 + (temp3 + 0x44) - temp4]); return r0; } function pendingOwner() returns (var r0) { return storage[0x01] & 0x02 ** 0xa0 - 0x01; } function transferOwnership(var arg0) { var temp0 = 0x02 ** 0xa0 - 0x01; if (storage[0x00] & temp0 != temp0 & msg.sender) { revert(memory[0x00:0x00]); } storage[0x01] = (arg0 & 0x02 ** 0xa0 - 0x01) | (storage[0x01] & ~0xffffffffffffffffffffffffffffffffffffffff); } }

Disassembly

label_0000: // Inputs[1] { @0005 msg.data.length } 0000 60 PUSH1 0x60 0002 60 PUSH1 0x40 0004 52 MSTORE 0005 36 CALLDATASIZE 0006 15 ISZERO 0007 61 PUSH2 0x0051 000A 57 *JUMPI // Stack delta = +0 // Outputs[1] { @0004 memory[0x40:0x60] = 0x60 } // Block ends with conditional jump to 0x0051, if !msg.data.length label_000B: // Incoming jump from 0x000A, if not !msg.data.length // Inputs[1] { @0017 msg.data[0x00:0x20] } 000B 63 PUSH4 0xffffffff 0010 60 PUSH1 0xe0 0012 60 PUSH1 0x02 0014 0A EXP 0015 60 PUSH1 0x00 0017 35 CALLDATALOAD 0018 04 DIV 0019 16 AND 001A 63 PUSH4 0x4e71e0c8 001F 81 DUP2 0020 14 EQ 0021 61 PUSH2 0x0061 0024 57 *JUMPI // Stack delta = +1 // Outputs[1] { @0019 stack[0] = msg.data[0x00:0x20] / 0x02 ** 0xe0 & 0xffffffff } // Block ends with conditional jump to 0x0061, if msg.data[0x00:0x20] / 0x02 ** 0xe0 & 0xffffffff == 0x4e71e0c8 label_0025: // Incoming jump from 0x0024, if not msg.data[0x00:0x20] / 0x02 ** 0xe0 & 0xffffffff == 0x4e71e0c8 // Inputs[1] { @0025 stack[-1] } 0025 80 DUP1 0026 63 PUSH4 0x8da5cb5b 002B 14 EQ 002C 61 PUSH2 0x0076 002F 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x0076, if 0x8da5cb5b == stack[-1] label_0030: // Incoming jump from 0x002F, if not 0x8da5cb5b == stack[-1] // Inputs[1] { @0030 stack[-1] } 0030 80 DUP1 0031 63 PUSH4 0xbeabacc8 0036 14 EQ 0037 61 PUSH2 0x00a5 003A 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00a5, if 0xbeabacc8 == stack[-1] label_003B: // Incoming jump from 0x003A, if not 0xbeabacc8 == stack[-1] // Inputs[1] { @003B stack[-1] } 003B 80 DUP1 003C 63 PUSH4 0xe30c3978 0041 14 EQ 0042 61 PUSH2 0x00e1 0045 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00e1, if 0xe30c3978 == stack[-1] label_0046: // Incoming jump from 0x0045, if not 0xe30c3978 == stack[-1] // Inputs[1] { @0046 stack[-1] } 0046 80 DUP1 0047 63 PUSH4 0xf2fde38b 004C 14 EQ 004D 61 PUSH2 0x00f4 0050 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00f4, if 0xf2fde38b == stack[-1] label_0051: // Incoming jump from 0x0050, if not 0xf2fde38b == stack[-1] // Incoming jump from 0x000A, if !msg.data.length // Inputs[1] { @0052 msg.value } 0051 5B JUMPDEST 0052 34 CALLVALUE 0053 15 ISZERO 0054 61 PUSH2 0x005c 0057 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x005c, if !msg.value label_0058: // Incoming jump from 0x0057, if not !msg.value // Inputs[1] { @005B memory[0x00:0x00] } 0058 60 PUSH1 0x00 005A 80 DUP1 005B FD *REVERT // Stack delta = +0 // Outputs[1] { @005B revert(memory[0x00:0x00]); } // Block terminates label_005C: // Incoming jump from 0x0057, if !msg.value // Inputs[1] { @0060 memory[0x00:0x00] } 005C 5B JUMPDEST 005D 60 PUSH1 0x00 005F 80 DUP1 0060 FD *REVERT // Stack delta = +0 // Outputs[1] { @0060 revert(memory[0x00:0x00]); } // Block terminates label_0061: // Incoming jump from 0x0024, if msg.data[0x00:0x20] / 0x02 ** 0xe0 & 0xffffffff == 0x4e71e0c8 // Inputs[1] { @0062 msg.value } 0061 5B JUMPDEST 0062 34 CALLVALUE 0063 15 ISZERO 0064 61 PUSH2 0x006c 0067 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x006c, if !msg.value label_0068: // Incoming jump from 0x0067, if not !msg.value // Inputs[1] { @006B memory[0x00:0x00] } 0068 60 PUSH1 0x00 006A 80 DUP1 006B FD *REVERT // Stack delta = +0 // Outputs[1] { @006B revert(memory[0x00:0x00]); } // Block terminates label_006C: // Incoming jump from 0x0067, if !msg.value 006C 5B JUMPDEST 006D 61 PUSH2 0x0074 0070 61 PUSH2 0x0113 0073 56 *JUMP // Stack delta = +1 // Outputs[1] { @006D stack[0] = 0x0074 } // Block ends with call to 0x0113, returns to 0x0074 label_0074: // Incoming return from call to 0x0113 at 0x0073 // Incoming return from call to 0x0224 at 0x0112 0074 5B JUMPDEST 0075 00 *STOP // Stack delta = +0 // Outputs[1] { @0075 stop(); } // Block terminates label_0076: // Incoming jump from 0x002F, if 0x8da5cb5b == stack[-1] // Inputs[1] { @0077 msg.value } 0076 5B JUMPDEST 0077 34 CALLVALUE 0078 15 ISZERO 0079 61 PUSH2 0x0081 007C 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x0081, if !msg.value label_007D: // Incoming jump from 0x007C, if not !msg.value // Inputs[1] { @0080 memory[0x00:0x00] } 007D 60 PUSH1 0x00 007F 80 DUP1 0080 FD *REVERT // Stack delta = +0 // Outputs[1] { @0080 revert(memory[0x00:0x00]); } // Block terminates label_0081: // Incoming jump from 0x007C, if !msg.value 0081 5B JUMPDEST 0082 61 PUSH2 0x0089 0085 61 PUSH2 0x015f 0088 56 *JUMP // Stack delta = +1 // Outputs[1] { @0082 stack[0] = 0x0089 } // Block ends with call to 0x015f, returns to 0x0089 label_0089: // Incoming return from call to 0x0215 at 0x00F3 // Incoming return from call to 0x015F at 0x0088 // Inputs[4] // { // @008C memory[0x40:0x60] // @0096 stack[-1] // @009F memory[0x40:0x60] // @00A4 memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x20 + memory[0x40:0x60]) - memory[0x40:0x60]] // } 0089 5B JUMPDEST 008A 60 PUSH1 0x40 008C 51 MLOAD 008D 60 PUSH1 0x01 008F 60 PUSH1 0xa0 0091 60 PUSH1 0x02 0093 0A EXP 0094 03 SUB 0095 90 SWAP1 0096 91 SWAP2 0097 16 AND 0098 81 DUP2 0099 52 MSTORE 009A 60 PUSH1 0x20 009C 01 ADD 009D 60 PUSH1 0x40 009F 51 MLOAD 00A0 80 DUP1 00A1 91 SWAP2 00A2 03 SUB 00A3 90 SWAP1 00A4 F3 *RETURN // Stack delta = -1 // Outputs[2] // { // @0099 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = stack[-1] & 0x02 ** 0xa0 - 0x01 // @00A4 return memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x20 + memory[0x40:0x60]) - memory[0x40:0x60]]; // } // Block terminates label_00A5: // Incoming jump from 0x003A, if 0xbeabacc8 == stack[-1] // Inputs[1] { @00A6 msg.value } 00A5 5B JUMPDEST 00A6 34 CALLVALUE 00A7 15 ISZERO 00A8 61 PUSH2 0x00b0 00AB 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00b0, if !msg.value label_00AC: // Incoming jump from 0x00AB, if not !msg.value // Inputs[1] { @00AF memory[0x00:0x00] } 00AC 60 PUSH1 0x00 00AE 80 DUP1 00AF FD *REVERT // Stack delta = +0 // Outputs[1] { @00AF revert(memory[0x00:0x00]); } // Block terminates label_00B0: // Incoming jump from 0x00AB, if !msg.value // Inputs[3] // { // @00BE msg.data[0x04:0x24] // @00C4 msg.data[0x24:0x44] // @00C8 msg.data[0x44:0x64] // } 00B0 5B JUMPDEST 00B1 61 PUSH2 0x00cd 00B4 60 PUSH1 0x01 00B6 60 PUSH1 0xa0 00B8 60 PUSH1 0x02 00BA 0A EXP 00BB 03 SUB 00BC 60 PUSH1 0x04 00BE 35 CALLDATALOAD 00BF 81 DUP2 00C0 16 AND 00C1 90 SWAP1 00C2 60 PUSH1 0x24 00C4 35 CALLDATALOAD 00C5 16 AND 00C6 60 PUSH1 0x44 00C8 35 CALLDATALOAD 00C9 61 PUSH2 0x016e 00CC 56 *JUMP // Stack delta = +4 // Outputs[4] // { // @00B1 stack[0] = 0x00cd // @00C1 stack[1] = 0x02 ** 0xa0 - 0x01 & msg.data[0x04:0x24] // @00C5 stack[2] = msg.data[0x24:0x44] & 0x02 ** 0xa0 - 0x01 // @00C8 stack[3] = msg.data[0x44:0x64] // } // Block ends with call to 0x016e, returns to 0x00CD label_00CD: // Incoming return from call to 0x016E at 0x00CC // Inputs[4] // { // @00D0 memory[0x40:0x60] // @00D1 stack[-1] // @00DB memory[0x40:0x60] // @00E0 memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x20 + memory[0x40:0x60]) - memory[0x40:0x60]] // } 00CD 5B JUMPDEST 00CE 60 PUSH1 0x40 00D0 51 MLOAD 00D1 90 SWAP1 00D2 15 ISZERO 00D3 15 ISZERO 00D4 81 DUP2 00D5 52 MSTORE 00D6 60 PUSH1 0x20 00D8 01 ADD 00D9 60 PUSH1 0x40 00DB 51 MLOAD 00DC 80 DUP1 00DD 91 SWAP2 00DE 03 SUB 00DF 90 SWAP1 00E0 F3 *RETURN // Stack delta = -1 // Outputs[2] // { // @00D5 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = !!stack[-1] // @00E0 return memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x20 + memory[0x40:0x60]) - memory[0x40:0x60]]; // } // Block terminates label_00E1: // Incoming jump from 0x0045, if 0xe30c3978 == stack[-1] // Inputs[1] { @00E2 msg.value } 00E1 5B JUMPDEST 00E2 34 CALLVALUE 00E3 15 ISZERO 00E4 61 PUSH2 0x00ec 00E7 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00ec, if !msg.value label_00E8: // Incoming jump from 0x00E7, if not !msg.value // Inputs[1] { @00EB memory[0x00:0x00] } 00E8 60 PUSH1 0x00 00EA 80 DUP1 00EB FD *REVERT // Stack delta = +0 // Outputs[1] { @00EB revert(memory[0x00:0x00]); } // Block terminates label_00EC: // Incoming jump from 0x00E7, if !msg.value 00EC 5B JUMPDEST 00ED 61 PUSH2 0x0089 00F0 61 PUSH2 0x0215 00F3 56 *JUMP // Stack delta = +1 // Outputs[1] { @00ED stack[0] = 0x0089 } // Block ends with call to 0x0215, returns to 0x0089 label_00F4: // Incoming jump from 0x0050, if 0xf2fde38b == stack[-1] // Inputs[1] { @00F5 msg.value } 00F4 5B JUMPDEST 00F5 34 CALLVALUE 00F6 15 ISZERO 00F7 61 PUSH2 0x00ff 00FA 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00ff, if !msg.value label_00FB: // Incoming jump from 0x00FA, if not !msg.value // Inputs[1] { @00FE memory[0x00:0x00] } 00FB 60 PUSH1 0x00 00FD 80 DUP1 00FE FD *REVERT // Stack delta = +0 // Outputs[1] { @00FE revert(memory[0x00:0x00]); } // Block terminates label_00FF: // Incoming jump from 0x00FA, if !msg.value // Inputs[1] { @010D msg.data[0x04:0x24] } 00FF 5B JUMPDEST 0100 61 PUSH2 0x0074 0103 60 PUSH1 0x01 0105 60 PUSH1 0xa0 0107 60 PUSH1 0x02 0109 0A EXP 010A 03 SUB 010B 60 PUSH1 0x04 010D 35 CALLDATALOAD 010E 16 AND 010F 61 PUSH2 0x0224 0112 56 *JUMP // Stack delta = +2 // Outputs[2] // { // @0100 stack[0] = 0x0074 // @010E stack[1] = msg.data[0x04:0x24] & 0x02 ** 0xa0 - 0x01 // } // Block ends with call to 0x0224, returns to 0x0074 label_0113: // Incoming call from 0x0073, returns to 0x0074 // Inputs[2] // { // @0116 storage[0x01] // @0117 msg.sender // } 0113 5B JUMPDEST 0114 60 PUSH1 0x01 0116 54 SLOAD 0117 33 CALLER 0118 60 PUSH1 0x01 011A 60 PUSH1 0xa0 011C 60 PUSH1 0x02 011E 0A EXP 011F 03 SUB 0120 90 SWAP1 0121 81 DUP2 0122 16 AND 0123 91 SWAP2 0124 16 AND 0125 14 EQ 0126 15 ISZERO 0127 61 PUSH2 0x015d 012A 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x015d, if !(storage[0x01] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender) label_012B: // Incoming jump from 0x012A, if not !(storage[0x01] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender) // Inputs[3] // { // @012E storage[0x01] // @0132 storage[0x00] // @015E stack[-1] // } 012B 60 PUSH1 0x01 012D 80 DUP1 012E 54 SLOAD 012F 60 PUSH1 0x00 0131 80 DUP1 0132 54 SLOAD 0133 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0148 19 NOT 0149 90 SWAP1 014A 81 DUP2 014B 16 AND 014C 60 PUSH1 0x01 014E 60 PUSH1 0xa0 0150 60 PUSH1 0x02 0152 0A EXP 0153 03 SUB 0154 84 DUP5 0155 16 AND 0156 17 OR 0157 90 SWAP1 0158 91 SWAP2 0159 55 SSTORE 015A 16 AND 015B 90 SWAP1 015C 55 SSTORE 015D 5B JUMPDEST 015E 56 *JUMP // Stack delta = -1 // Outputs[2] // { // @0159 storage[0x00] = (storage[0x01] & 0x02 ** 0xa0 - 0x01) | (~0xffffffffffffffffffffffffffffffffffffffff & storage[0x00]) // @015C storage[0x01] = ~0xffffffffffffffffffffffffffffffffffffffff & storage[0x01] // } // Block ends with unconditional jump to stack[-1] label_015F: // Incoming call from 0x0088, returns to 0x0089 // Inputs[2] // { // @0162 storage[0x00] // @016C stack[-1] // } 015F 5B JUMPDEST 0160 60 PUSH1 0x00 0162 54 SLOAD 0163 60 PUSH1 0x01 0165 60 PUSH1 0xa0 0167 60 PUSH1 0x02 0169 0A EXP 016A 03 SUB 016B 16 AND 016C 81 DUP2 016D 56 *JUMP // Stack delta = +1 // Outputs[1] { @016B stack[0] = 0x02 ** 0xa0 - 0x01 & storage[0x00] } // Block ends with unconditional jump to stack[-1] label_016E: // Incoming call from 0x00CC, returns to 0x00CD // Inputs[2] // { // @0172 storage[0x00] // @0173 msg.sender // } 016E 5B JUMPDEST 016F 60 PUSH1 0x00 0171 80 DUP1 0172 54 SLOAD 0173 33 CALLER 0174 60 PUSH1 0x01 0176 60 PUSH1 0xa0 0178 60 PUSH1 0x02 017A 0A EXP 017B 03 SUB 017C 90 SWAP1 017D 81 DUP2 017E 16 AND 017F 91 SWAP2 0180 16 AND 0181 14 EQ 0182 61 PUSH2 0x018a 0185 57 *JUMPI // Stack delta = +1 // Outputs[1] { @016F stack[0] = 0x00 } // Block ends with conditional jump to 0x018a, if storage[0x00] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender label_0186: // Incoming jump from 0x0185, if not storage[0x00] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender // Inputs[1] { @0189 memory[0x00:0x00] } 0186 60 PUSH1 0x00 0188 80 DUP1 0189 FD *REVERT // Stack delta = +0 // Outputs[1] { @0189 revert(memory[0x00:0x00]); } // Block terminates label_018A: // Incoming jump from 0x0185, if storage[0x00] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender // Inputs[12] // { // @018B stack[-4] // @0197 memory[0x40:0x60] // @01C0 memory[0x40:0x60] // @01C5 memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x19 + memory[0x40:0x60]) - memory[0x40:0x60]] // @01CD stack[-3] // @01CE stack[-2] // @01D1 memory[0x40:0x60] // @01FD memory[0x40:0x60] // @0208 msg.gas // @020A memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x44 + memory[0x40:0x60]) - memory[0x40:0x60]] // @020A address(0x02 ** 0xa0 - 0x01 & stack[-4]).call.gas(msg.gas - 0x646e)(memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x44 + memory[0x40:0x60]) - memory[0x40:0x60]]) // @020B stack[-5] // } 018A 5B JUMPDEST 018B 83 DUP4 018C 60 PUSH1 0x01 018E 60 PUSH1 0xa0 0190 60 PUSH1 0x02 0192 0A EXP 0193 03 SUB 0194 16 AND 0195 60 PUSH1 0x40 0197 51 MLOAD 0198 7F PUSH32 0x7472616e7366657228616464726573732c75696e743235362900000000000000 01B9 81 DUP2 01BA 52 MSTORE 01BB 60 PUSH1 0x19 01BD 01 ADD 01BE 60 PUSH1 0x40 01C0 51 MLOAD 01C1 80 DUP1 01C2 91 SWAP2 01C3 03 SUB 01C4 90 SWAP1 01C5 20 SHA3 01C6 60 PUSH1 0xe0 01C8 60 PUSH1 0x02 01CA 0A EXP 01CB 90 SWAP1 01CC 04 DIV 01CD 84 DUP5 01CE 84 DUP5 01CF 60 PUSH1 0x40 01D1 51 MLOAD 01D2 60 PUSH1 0xe0 01D4 60 PUSH1 0x02 01D6 0A EXP 01D7 63 PUSH4 0xffffffff 01DC 85 DUP6 01DD 16 AND 01DE 02 MUL 01DF 81 DUP2 01E0 52 MSTORE 01E1 60 PUSH1 0x01 01E3 60 PUSH1 0xa0 01E5 60 PUSH1 0x02 01E7 0A EXP 01E8 03 SUB 01E9 90 SWAP1 01EA 92 SWAP3 01EB 16 AND 01EC 60 PUSH1 0x04 01EE 83 DUP4 01EF 01 ADD 01F0 52 MSTORE 01F1 60 PUSH1 0x24 01F3 82 DUP3 01F4 01 ADD 01F5 52 MSTORE 01F6 60 PUSH1 0x44 01F8 01 ADD 01F9 60 PUSH1 0x00 01FB 60 PUSH1 0x40 01FD 51 MLOAD 01FE 80 DUP1 01FF 83 DUP4 0200 03 SUB 0201 81 DUP2 0202 60 PUSH1 0x00 0204 87 DUP8 0205 61 PUSH2 0x646e 0208 5A GAS 0209 03 SUB 020A F1 CALL 020B 97 SWAP8 020C 96 SWAP7 020D 50 POP 020E 50 POP 020F 50 POP 0210 50 POP 0211 50 POP 0212 50 POP 0213 50 POP 0214 56 *JUMP // Stack delta = -4 // Outputs[6] // { // @01BA memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = 0x7472616e7366657228616464726573732c75696e743235362900000000000000 // @01E0 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = (keccak256(memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x19 + memory[0x40:0x60]) - memory[0x40:0x60]]) / 0x02 ** 0xe0 & 0xffffffff) * 0x02 ** 0xe0 // @01F0 memory[memory[0x40:0x60] + 0x04:memory[0x40:0x60] + 0x04 + 0x20] = stack[-3] & 0x02 ** 0xa0 - 0x01 // @01F5 memory[memory[0x40:0x60] + 0x24:memory[0x40:0x60] + 0x24 + 0x20] = stack[-2] // @020A memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00] = address(0x02 ** 0xa0 - 0x01 & stack[-4]).call.gas(msg.gas - 0x646e)(memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x44 + memory[0x40:0x60]) - memory[0x40:0x60]]) // @020B stack[-5] = address(0x02 ** 0xa0 - 0x01 & stack[-4]).call.gas(msg.gas - 0x646e)(memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x44 + memory[0x40:0x60]) - memory[0x40:0x60]]) // } // Block ends with unconditional jump to stack[-5] label_0215: // Incoming call from 0x00F3, returns to 0x0089 // Inputs[2] // { // @0218 storage[0x01] // @0222 stack[-1] // } 0215 5B JUMPDEST 0216 60 PUSH1 0x01 0218 54 SLOAD 0219 60 PUSH1 0x01 021B 60 PUSH1 0xa0 021D 60 PUSH1 0x02 021F 0A EXP 0220 03 SUB 0221 16 AND 0222 81 DUP2 0223 56 *JUMP // Stack delta = +1 // Outputs[1] { @0221 stack[0] = 0x02 ** 0xa0 - 0x01 & storage[0x01] } // Block ends with unconditional jump to stack[-1] label_0224: // Incoming call from 0x0112, returns to 0x0074 // Inputs[2] // { // @0227 storage[0x00] // @0228 msg.sender // } 0224 5B JUMPDEST 0225 60 PUSH1 0x00 0227 54 SLOAD 0228 33 CALLER 0229 60 PUSH1 0x01 022B 60 PUSH1 0xa0 022D 60 PUSH1 0x02 022F 0A EXP 0230 03 SUB 0231 90 SWAP1 0232 81 DUP2 0233 16 AND 0234 91 SWAP2 0235 16 AND 0236 14 EQ 0237 61 PUSH2 0x023f 023A 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x023f, if storage[0x00] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender label_023B: // Incoming jump from 0x023A, if not storage[0x00] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender // Inputs[1] { @023E memory[0x00:0x00] } 023B 60 PUSH1 0x00 023D 80 DUP1 023E FD *REVERT // Stack delta = +0 // Outputs[1] { @023E revert(memory[0x00:0x00]); } // Block terminates label_023F: // Incoming jump from 0x023A, if storage[0x00] & 0x02 ** 0xa0 - 0x01 == 0x02 ** 0xa0 - 0x01 & msg.sender // Inputs[3] // { // @0243 storage[0x01] // @0263 stack[-1] // @026D stack[-2] // } 023F 5B JUMPDEST 0240 60 PUSH1 0x01 0242 80 DUP1 0243 54 SLOAD 0244 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0259 19 NOT 025A 16 AND 025B 60 PUSH1 0x01 025D 60 PUSH1 0xa0 025F 60 PUSH1 0x02 0261 0A EXP 0262 03 SUB 0263 92 SWAP3 0264 90 SWAP1 0265 92 SWAP3 0266 16 AND 0267 91 SWAP2 0268 90 SWAP1 0269 91 SWAP2 026A 17 OR 026B 90 SWAP1 026C 55 SSTORE 026D 56 *JUMP // Stack delta = -2 // Outputs[1] { @026C storage[0x01] = (0x02 ** 0xa0 - 0x01 & stack[-1]) | (~0xffffffffffffffffffffffffffffffffffffffff & storage[0x01]) } // Block ends with unconditional jump to stack[-2] 026E 00 *STOP 026F A1 LOG1 0270 65 PUSH6 0x627a7a723058 0277 20 SHA3 0278 26 26 0279 81 DUP2 027A 93 SWAP4 027B A9 A9 027C D1 D1 027D 07 SMOD 027E E2 E2 027F F6 F6 0280 DC DC 0281 10 LT 0282 E0 E0 0283 CC CC 0284 44 DIFFICULTY 0285 AB AB 0286 CF CF 0287 EB EB 0288 DD DD 0289 57 *JUMPI 028A C2 C2 028B 14 EQ 028C 8D DUP14 028D 6D PUSH14 0x8d259ccc5f944b7a80810029
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]