Online Solidity Decompiler

« Decompile another contract

Address

0xc6de75f9ded9c4a0f7a3c5222597d17fc09651d2 [etherscan.io | etherchain.org]

Public Methods

Method names cached from 4byte.directory.
0x715018a6 renounceOwnership()
0x8da5cb5b owner()
0xf2fde38b transferOwnership(address)
0xfdacd576 setCompleted(uint256)

Internal Methods

transferOwnership(arg0, arg1)
setCompleted(arg0, arg1)
last_completed_migration(arg0) returns (r0)
renounceOwnership()
owner() returns (r0)
func_032A() returns (r0)

Decompilation

contract Contract { function main() { memory[0x40:0x60] = 0x80; var var0 = msg.value; if (var0) { revert(memory[0x00:0x00]); } if (msg.data.length < 0x04) { revert(memory[0x00:0x00]); } var0 = msg.data[0x00:0x20] >> 0xe0; if (var0 == 0x445df0ac) { // Dispatch table entry for last_completed_migration() var var1 = 0x0064; var var2 = last_completed_migration(); var temp0 = memory[0x40:0x60]; memory[temp0:temp0 + 0x20] = var2; var temp1 = memory[0x40:0x60]; return memory[temp1:temp1 + temp0 - temp1 + 0x20]; } else if (var0 == 0x715018a6) { // Dispatch table entry for renounceOwnership() var1 = 0x007e; renounceOwnership(); stop(); } else if (var0 == 0x8da5cb5b) { // Dispatch table entry for owner() var1 = 0x0088; var1 = owner(); var temp2 = memory[0x40:0x60]; memory[temp2:temp2 + 0x20] = var1 & (0x01 << 0xa0) - 0x01; var temp3 = memory[0x40:0x60]; return memory[temp3:temp3 + temp2 - temp3 + 0x20]; } else if (var0 == 0xf2fde38b) { // Dispatch table entry for transferOwnership(address) var1 = 0x007e; var2 = 0x04; var var3 = msg.data.length - var2; if (var3 < 0x20) { revert(memory[0x00:0x00]); } transferOwnership(var2, var3); stop(); } else if (var0 == 0xfdacd576) { // Dispatch table entry for setCompleted(uint256) var1 = 0x007e; var2 = 0x04; var3 = msg.data.length - var2; if (var3 < 0x20) { revert(memory[0x00:0x00]); } setCompleted(var2, var3); stop(); } else { revert(memory[0x00:0x00]); } } function transferOwnership(var arg0, var arg1) { arg0 = msg.data[arg0:arg0 + 0x20] & (0x01 << 0xa0) - 0x01; arg1 = 0x01b8; arg1 = func_032A(); var temp0 = (0x01 << 0xa0) - 0x01; if (arg1 & temp0 != temp0 & storage[0x33]) { var temp8 = memory[0x40:0x60]; memory[temp8:temp8 + 0x20] = 0x461bcd << 0xe5; memory[temp8 + 0x04:temp8 + 0x04 + 0x20] = 0x20; memory[temp8 + 0x24:temp8 + 0x24 + 0x20] = 0x20; memory[temp8 + 0x44:temp8 + 0x44 + 0x20] = 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572; var temp9 = memory[0x40:0x60]; revert(memory[temp9:temp9 + temp8 - temp9 + 0x64]); } else if (arg0 & (0x01 << 0xa0) - 0x01) { var temp1 = (0x01 << 0xa0) - 0x01; var temp2 = arg0; log(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00], [0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0, storage[0x33] & (0x01 << 0xa0) - 0x01, stack[-1] & (0x01 << 0xa0) - 0x01]); storage[0x33] = (temp2 & (0x01 << 0xa0) - 0x01) | (storage[0x33] & ~((0x01 << 0xa0) - 0x01)); return; } else { var temp3 = memory[0x40:0x60]; memory[temp3:temp3 + 0x20] = 0x461bcd << 0xe5; var temp4 = temp3 + 0x04; var temp5 = temp4 + 0x20; memory[temp4:temp4 + 0x20] = temp5 - temp4; memory[temp5:temp5 + 0x20] = 0x26; var temp6 = temp5 + 0x20; memory[temp6:temp6 + 0x26] = code[0x032f:0x0355]; var temp7 = memory[0x40:0x60]; revert(memory[temp7:temp7 + (temp6 + 0x40) - temp7]); } } function setCompleted(var arg0, var arg1) { arg0 = msg.data[arg0:arg0 + 0x20]; arg1 = 0x02c3; arg1 = func_032A(); var temp0 = (0x01 << 0xa0) - 0x01; if (arg1 & temp0 == temp0 & storage[0x33]) { storage[0x65] = arg0; return; } else { var temp1 = memory[0x40:0x60]; memory[temp1:temp1 + 0x20] = 0x461bcd << 0xe5; memory[temp1 + 0x04:temp1 + 0x04 + 0x20] = 0x20; memory[temp1 + 0x24:temp1 + 0x24 + 0x20] = 0x20; memory[temp1 + 0x44:temp1 + 0x44 + 0x20] = 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572; var temp2 = memory[0x40:0x60]; revert(memory[temp2:temp2 + temp1 - temp2 + 0x64]); } } function last_completed_migration() returns (var r0) { return storage[0x65]; } function renounceOwnership() { var var0 = 0x00f5; var0 = func_032A(); var temp0 = (0x01 << 0xa0) - 0x01; if (var0 & temp0 == temp0 & storage[0x33]) { log(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00], [0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0, storage[0x33] & (0x01 << 0xa0) - 0x01, 0x00]); storage[0x33] = storage[0x33] & ~((0x01 << 0xa0) - 0x01); return; } else { var temp1 = memory[0x40:0x60]; memory[temp1:temp1 + 0x20] = 0x461bcd << 0xe5; memory[temp1 + 0x04:temp1 + 0x04 + 0x20] = 0x20; memory[temp1 + 0x24:temp1 + 0x24 + 0x20] = 0x20; memory[temp1 + 0x44:temp1 + 0x44 + 0x20] = 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572; var temp2 = memory[0x40:0x60]; revert(memory[temp2:temp2 + temp1 - temp2 + 0x64]); } } function owner() returns (var r0) { return storage[0x33] & (0x01 << 0xa0) - 0x01; } function func_032A() returns (var r0) { return msg.sender; } }

Disassembly

label_0000: // Inputs[1] { @0005 msg.value } 0000 60 PUSH1 0x80 0002 60 PUSH1 0x40 0004 52 MSTORE 0005 34 CALLVALUE 0006 80 DUP1 0007 15 ISZERO 0008 61 PUSH2 0x0010 000B 57 *JUMPI // Stack delta = +1 // Outputs[2] // { // @0004 memory[0x40:0x60] = 0x80 // @0005 stack[0] = msg.value // } // Block ends with conditional jump to 0x0010, if !msg.value label_000C: // Incoming jump from 0x000B, if not !msg.value // Inputs[1] { @000F memory[0x00:0x00] } 000C 60 PUSH1 0x00 000E 80 DUP1 000F FD *REVERT // Stack delta = +0 // Outputs[1] { @000F revert(memory[0x00:0x00]); } // Block terminates label_0010: // Incoming jump from 0x000B, if !msg.value // Inputs[1] { @0014 msg.data.length } 0010 5B JUMPDEST 0011 50 POP 0012 60 PUSH1 0x04 0014 36 CALLDATASIZE 0015 10 LT 0016 61 PUSH2 0x0057 0019 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x0057, if msg.data.length < 0x04 label_001A: // Incoming jump from 0x0019, if not msg.data.length < 0x04 // Inputs[1] { @001C msg.data[0x00:0x20] } 001A 60 PUSH1 0x00 001C 35 CALLDATALOAD 001D 60 PUSH1 0xe0 001F 1C SHR 0020 80 DUP1 0021 63 PUSH4 0x445df0ac 0026 14 EQ 0027 61 PUSH2 0x005c 002A 57 *JUMPI // Stack delta = +1 // Outputs[1] { @001F stack[0] = msg.data[0x00:0x20] >> 0xe0 } // Block ends with conditional jump to 0x005c, if 0x445df0ac == msg.data[0x00:0x20] >> 0xe0 label_002B: // Incoming jump from 0x002A, if not 0x445df0ac == msg.data[0x00:0x20] >> 0xe0 // Inputs[1] { @002B stack[-1] } 002B 80 DUP1 002C 63 PUSH4 0x715018a6 0031 14 EQ 0032 61 PUSH2 0x0076 0035 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x0076, if 0x715018a6 == stack[-1] label_0036: // Incoming jump from 0x0035, if not 0x715018a6 == stack[-1] // Inputs[1] { @0036 stack[-1] } 0036 80 DUP1 0037 63 PUSH4 0x8da5cb5b 003C 14 EQ 003D 61 PUSH2 0x0080 0040 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x0080, if 0x8da5cb5b == stack[-1] label_0041: // Incoming jump from 0x0040, if not 0x8da5cb5b == stack[-1] // Inputs[1] { @0041 stack[-1] } 0041 80 DUP1 0042 63 PUSH4 0xf2fde38b 0047 14 EQ 0048 61 PUSH2 0x00a4 004B 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00a4, if 0xf2fde38b == stack[-1] label_004C: // Incoming jump from 0x004B, if not 0xf2fde38b == stack[-1] // Inputs[1] { @004C stack[-1] } 004C 80 DUP1 004D 63 PUSH4 0xfdacd576 0052 14 EQ 0053 61 PUSH2 0x00ca 0056 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x00ca, if 0xfdacd576 == stack[-1] label_0057: // Incoming jump from 0x0019, if msg.data.length < 0x04 // Incoming jump from 0x0056, if not 0xfdacd576 == stack[-1] // Inputs[1] { @005B memory[0x00:0x00] } 0057 5B JUMPDEST 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 0x002A, if 0x445df0ac == msg.data[0x00:0x20] >> 0xe0 005C 5B JUMPDEST 005D 61 PUSH2 0x0064 0060 61 PUSH2 0x00e7 0063 56 *JUMP // Stack delta = +1 // Outputs[1] { @005D stack[0] = 0x0064 } // Block ends with call to 0x00e7, returns to 0x0064 label_0064: // Incoming return from call to 0x00E7 at 0x0063 // Inputs[4] // { // @0068 memory[0x40:0x60] // @0069 stack[-1] // @006C memory[0x40:0x60] // @0075 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20 + (memory[0x40:0x60] - memory[0x40:0x60])] // } 0064 5B JUMPDEST 0065 60 PUSH1 0x40 0067 80 DUP1 0068 51 MLOAD 0069 91 SWAP2 006A 82 DUP3 006B 52 MSTORE 006C 51 MLOAD 006D 90 SWAP1 006E 81 DUP2 006F 90 SWAP1 0070 03 SUB 0071 60 PUSH1 0x20 0073 01 ADD 0074 90 SWAP1 0075 F3 *RETURN // Stack delta = -1 // Outputs[2] // { // @006B memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = stack[-1] // @0075 return memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20 + (memory[0x40:0x60] - memory[0x40:0x60])]; // } // Block terminates label_0076: // Incoming jump from 0x0035, if 0x715018a6 == stack[-1] 0076 5B JUMPDEST 0077 61 PUSH2 0x007e 007A 61 PUSH2 0x00ed 007D 56 *JUMP // Stack delta = +1 // Outputs[1] { @0077 stack[0] = 0x007e } // Block ends with call to 0x00ed, returns to 0x007E label_007E: // Incoming return from call to 0x00ED at 0x007D // Incoming return from call to 0x00E0 at 0x00DB // Incoming return from call to 0x00BA at 0x00B5 007E 5B JUMPDEST 007F 00 *STOP // Stack delta = +0 // Outputs[1] { @007F stop(); } // Block terminates label_0080: // Incoming jump from 0x0040, if 0x8da5cb5b == stack[-1] 0080 5B JUMPDEST 0081 61 PUSH2 0x0088 0084 61 PUSH2 0x01a1 0087 56 *JUMP // Stack delta = +1 // Outputs[1] { @0081 stack[0] = 0x0088 } // Block ends with call to 0x01a1, returns to 0x0088 label_0088: // Incoming return from call to 0x01A1 at 0x0087 // Inputs[4] // { // @008C memory[0x40:0x60] // @0096 stack[-1] // @009A memory[0x40:0x60] // @00A3 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20 + (memory[0x40:0x60] - memory[0x40:0x60])] // } 0088 5B JUMPDEST 0089 60 PUSH1 0x40 008B 80 DUP1 008C 51 MLOAD 008D 60 PUSH1 0x01 008F 60 PUSH1 0x01 0091 60 PUSH1 0xa0 0093 1B SHL 0094 03 SUB 0095 90 SWAP1 0096 92 SWAP3 0097 16 AND 0098 82 DUP3 0099 52 MSTORE 009A 51 MLOAD 009B 90 SWAP1 009C 81 DUP2 009D 90 SWAP1 009E 03 SUB 009F 60 PUSH1 0x20 00A1 01 ADD 00A2 90 SWAP1 00A3 F3 *RETURN // Stack delta = -1 // Outputs[2] // { // @0099 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = stack[-1] & (0x01 << 0xa0) - 0x01 // @00A3 return memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20 + (memory[0x40:0x60] - memory[0x40:0x60])]; // } // Block terminates label_00A4: // Incoming jump from 0x004B, if 0xf2fde38b == stack[-1] // Inputs[1] { @00AB msg.data.length } 00A4 5B JUMPDEST 00A5 61 PUSH2 0x007e 00A8 60 PUSH1 0x04 00AA 80 DUP1 00AB 36 CALLDATASIZE 00AC 03 SUB 00AD 60 PUSH1 0x20 00AF 81 DUP2 00B0 10 LT 00B1 15 ISZERO 00B2 61 PUSH2 0x00ba 00B5 57 *JUMPI // Stack delta = +3 // Outputs[3] // { // @00A5 stack[0] = 0x007e // @00A8 stack[1] = 0x04 // @00AC stack[2] = msg.data.length - 0x04 // } // Block ends with conditional call to 0x00ba, returns to 0x007E, if !(msg.data.length - 0x04 < 0x20) label_00B6: // Incoming jump from 0x00B5, if not !(msg.data.length - 0x04 < 0x20) // Inputs[1] { @00B9 memory[0x00:0x00] } 00B6 60 PUSH1 0x00 00B8 80 DUP1 00B9 FD *REVERT // Stack delta = +0 // Outputs[1] { @00B9 revert(memory[0x00:0x00]); } // Block terminates label_00BA: // Incoming call from 0x00B5, returns to 0x007E, if !(msg.data.length - 0x04 < 0x20) // Inputs[2] // { // @00BC stack[-2] // @00BC msg.data[stack[-2]:stack[-2] + 0x20] // } 00BA 5B JUMPDEST 00BB 50 POP 00BC 35 CALLDATALOAD 00BD 60 PUSH1 0x01 00BF 60 PUSH1 0x01 00C1 60 PUSH1 0xa0 00C3 1B SHL 00C4 03 SUB 00C5 16 AND 00C6 61 PUSH2 0x01b0 00C9 56 *JUMP // Stack delta = -1 // Outputs[1] { @00C5 stack[-2] = (0x01 << 0xa0) - 0x01 & msg.data[stack[-2]:stack[-2] + 0x20] } // Block ends with unconditional jump to 0x01b0 label_00CA: // Incoming jump from 0x0056, if 0xfdacd576 == stack[-1] // Inputs[1] { @00D1 msg.data.length } 00CA 5B JUMPDEST 00CB 61 PUSH2 0x007e 00CE 60 PUSH1 0x04 00D0 80 DUP1 00D1 36 CALLDATASIZE 00D2 03 SUB 00D3 60 PUSH1 0x20 00D5 81 DUP2 00D6 10 LT 00D7 15 ISZERO 00D8 61 PUSH2 0x00e0 00DB 57 *JUMPI // Stack delta = +3 // Outputs[3] // { // @00CB stack[0] = 0x007e // @00CE stack[1] = 0x04 // @00D2 stack[2] = msg.data.length - 0x04 // } // Block ends with conditional call to 0x00e0, returns to 0x007E, if !(msg.data.length - 0x04 < 0x20) label_00DC: // Incoming jump from 0x00DB, if not !(msg.data.length - 0x04 < 0x20) // Inputs[1] { @00DF memory[0x00:0x00] } 00DC 60 PUSH1 0x00 00DE 80 DUP1 00DF FD *REVERT // Stack delta = +0 // Outputs[1] { @00DF revert(memory[0x00:0x00]); } // Block terminates label_00E0: // Incoming call from 0x00DB, returns to 0x007E, if !(msg.data.length - 0x04 < 0x20) // Inputs[2] // { // @00E2 msg.data[stack[-2]:stack[-2] + 0x20] // @00E2 stack[-2] // } 00E0 5B JUMPDEST 00E1 50 POP 00E2 35 CALLDATALOAD 00E3 61 PUSH2 0x02bb 00E6 56 *JUMP // Stack delta = -1 // Outputs[1] { @00E2 stack[-2] = msg.data[stack[-2]:stack[-2] + 0x20] } // Block ends with unconditional jump to 0x02bb label_00E7: // Incoming call from 0x0063, returns to 0x0064 // Inputs[2] // { // @00EA storage[0x65] // @00EB stack[-1] // } 00E7 5B JUMPDEST 00E8 60 PUSH1 0x65 00EA 54 SLOAD 00EB 81 DUP2 00EC 56 *JUMP // Stack delta = +1 // Outputs[1] { @00EA stack[0] = storage[0x65] } // Block ends with unconditional jump to stack[-1] label_00ED: // Incoming call from 0x007D, returns to 0x007E 00ED 5B JUMPDEST 00EE 61 PUSH2 0x00f5 00F1 61 PUSH2 0x032a 00F4 56 *JUMP // Stack delta = +1 // Outputs[1] { @00EE stack[0] = 0x00f5 } // Block ends with call to 0x032a, returns to 0x00F5 label_00F5: // Incoming return from call to 0x032A at 0x00F4 // Inputs[2] // { // @00F8 storage[0x33] // @0104 stack[-1] // } 00F5 5B JUMPDEST 00F6 60 PUSH1 0x33 00F8 54 SLOAD 00F9 60 PUSH1 0x01 00FB 60 PUSH1 0x01 00FD 60 PUSH1 0xa0 00FF 1B SHL 0100 03 SUB 0101 90 SWAP1 0102 81 DUP2 0103 16 AND 0104 91 SWAP2 0105 16 AND 0106 14 EQ 0107 61 PUSH2 0x0157 010A 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x0157, if stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] label_010B: // Incoming jump from 0x010A, if not stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] // Inputs[3] // { // @010E memory[0x40:0x60] // @014D memory[0x40:0x60] // @0156 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x64 + (memory[0x40:0x60] - memory[0x40:0x60])] // } 010B 60 PUSH1 0x40 010D 80 DUP1 010E 51 MLOAD 010F 62 PUSH3 0x461bcd 0113 60 PUSH1 0xe5 0115 1B SHL 0116 81 DUP2 0117 52 MSTORE 0118 60 PUSH1 0x20 011A 60 PUSH1 0x04 011C 82 DUP3 011D 01 ADD 011E 81 DUP2 011F 90 SWAP1 0120 52 MSTORE 0121 60 PUSH1 0x24 0123 82 DUP3 0124 01 ADD 0125 52 MSTORE 0126 7F PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0147 60 PUSH1 0x44 0149 82 DUP3 014A 01 ADD 014B 52 MSTORE 014C 90 SWAP1 014D 51 MLOAD 014E 90 SWAP1 014F 81 DUP2 0150 90 SWAP1 0151 03 SUB 0152 60 PUSH1 0x64 0154 01 ADD 0155 90 SWAP1 0156 FD *REVERT // Stack delta = +0 // Outputs[5] // { // @0117 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = 0x461bcd << 0xe5 // @0120 memory[memory[0x40:0x60] + 0x04:memory[0x40:0x60] + 0x04 + 0x20] = 0x20 // @0125 memory[memory[0x40:0x60] + 0x24:memory[0x40:0x60] + 0x24 + 0x20] = 0x20 // @014B memory[memory[0x40:0x60] + 0x44:memory[0x40:0x60] + 0x44 + 0x20] = 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 // @0156 revert(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x64 + (memory[0x40:0x60] - memory[0x40:0x60])]); // } // Block terminates label_0157: // Incoming jump from 0x010A, if stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] // Inputs[5] // { // @015A storage[0x33] // @015D memory[0x40:0x60] // @018F memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00] // @0193 storage[0x33] // @01A0 stack[-1] // } 0157 5B JUMPDEST 0158 60 PUSH1 0x33 015A 54 SLOAD 015B 60 PUSH1 0x40 015D 51 MLOAD 015E 60 PUSH1 0x00 0160 91 SWAP2 0161 60 PUSH1 0x01 0163 60 PUSH1 0x01 0165 60 PUSH1 0xa0 0167 1B SHL 0168 03 SUB 0169 16 AND 016A 90 SWAP1 016B 7F PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 018C 90 SWAP1 018D 83 DUP4 018E 90 SWAP1 018F A3 LOG3 0190 60 PUSH1 0x33 0192 80 DUP1 0193 54 SLOAD 0194 60 PUSH1 0x01 0196 60 PUSH1 0x01 0198 60 PUSH1 0xa0 019A 1B SHL 019B 03 SUB 019C 19 NOT 019D 16 AND 019E 90 SWAP1 019F 55 SSTORE 01A0 56 *JUMP // Stack delta = -1 // Outputs[2] // { // @018F log(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00], [0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0, storage[0x33] & (0x01 << 0xa0) - 0x01, 0x00]); // @019F storage[0x33] = ~((0x01 << 0xa0) - 0x01) & storage[0x33] // } // Block ends with unconditional jump to stack[-1] label_01A1: // Incoming call from 0x0087, returns to 0x0088 // Inputs[2] // { // @01A4 storage[0x33] // @01AE stack[-1] // } 01A1 5B JUMPDEST 01A2 60 PUSH1 0x33 01A4 54 SLOAD 01A5 60 PUSH1 0x01 01A7 60 PUSH1 0x01 01A9 60 PUSH1 0xa0 01AB 1B SHL 01AC 03 SUB 01AD 16 AND 01AE 90 SWAP1 01AF 56 *JUMP // Stack delta = +0 // Outputs[1] { @01AE stack[-1] = (0x01 << 0xa0) - 0x01 & storage[0x33] } // Block ends with unconditional jump to stack[-1] label_01B0: // Incoming jump from 0x00C9 01B0 5B JUMPDEST 01B1 61 PUSH2 0x01b8 01B4 61 PUSH2 0x032a 01B7 56 *JUMP // Stack delta = +1 // Outputs[1] { @01B1 stack[0] = 0x01b8 } // Block ends with call to 0x032a, returns to 0x01B8 label_01B8: // Incoming return from call to 0x032A at 0x01B7 // Inputs[2] // { // @01BB storage[0x33] // @01C7 stack[-1] // } 01B8 5B JUMPDEST 01B9 60 PUSH1 0x33 01BB 54 SLOAD 01BC 60 PUSH1 0x01 01BE 60 PUSH1 0x01 01C0 60 PUSH1 0xa0 01C2 1B SHL 01C3 03 SUB 01C4 90 SWAP1 01C5 81 DUP2 01C6 16 AND 01C7 91 SWAP2 01C8 16 AND 01C9 14 EQ 01CA 61 PUSH2 0x021a 01CD 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x021a, if stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] label_01CE: // Incoming jump from 0x01CD, if not stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] // Inputs[3] // { // @01D1 memory[0x40:0x60] // @0210 memory[0x40:0x60] // @0219 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x64 + (memory[0x40:0x60] - memory[0x40:0x60])] // } 01CE 60 PUSH1 0x40 01D0 80 DUP1 01D1 51 MLOAD 01D2 62 PUSH3 0x461bcd 01D6 60 PUSH1 0xe5 01D8 1B SHL 01D9 81 DUP2 01DA 52 MSTORE 01DB 60 PUSH1 0x20 01DD 60 PUSH1 0x04 01DF 82 DUP3 01E0 01 ADD 01E1 81 DUP2 01E2 90 SWAP1 01E3 52 MSTORE 01E4 60 PUSH1 0x24 01E6 82 DUP3 01E7 01 ADD 01E8 52 MSTORE 01E9 7F PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 020A 60 PUSH1 0x44 020C 82 DUP3 020D 01 ADD 020E 52 MSTORE 020F 90 SWAP1 0210 51 MLOAD 0211 90 SWAP1 0212 81 DUP2 0213 90 SWAP1 0214 03 SUB 0215 60 PUSH1 0x64 0217 01 ADD 0218 90 SWAP1 0219 FD *REVERT // Stack delta = +0 // Outputs[5] // { // @01DA memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = 0x461bcd << 0xe5 // @01E3 memory[memory[0x40:0x60] + 0x04:memory[0x40:0x60] + 0x04 + 0x20] = 0x20 // @01E8 memory[memory[0x40:0x60] + 0x24:memory[0x40:0x60] + 0x24 + 0x20] = 0x20 // @020E memory[memory[0x40:0x60] + 0x44:memory[0x40:0x60] + 0x44 + 0x20] = 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 // @0219 revert(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x64 + (memory[0x40:0x60] - memory[0x40:0x60])]); // } // Block terminates label_021A: // Incoming jump from 0x01CD, if stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] // Inputs[1] { @0223 stack[-1] } 021A 5B JUMPDEST 021B 60 PUSH1 0x01 021D 60 PUSH1 0x01 021F 60 PUSH1 0xa0 0221 1B SHL 0222 03 SUB 0223 81 DUP2 0224 16 AND 0225 61 PUSH2 0x025f 0228 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x025f, if stack[-1] & (0x01 << 0xa0) - 0x01 label_0229: // Incoming jump from 0x0228, if not stack[-1] & (0x01 << 0xa0) - 0x01 // Inputs[3] // { // @022B memory[0x40:0x60] // @0259 memory[0x40:0x60] // @025E memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x40 + 0x20 + 0x20 + 0x04 + memory[0x40:0x60]) - memory[0x40:0x60]] // } 0229 60 PUSH1 0x40 022B 51 MLOAD 022C 62 PUSH3 0x461bcd 0230 60 PUSH1 0xe5 0232 1B SHL 0233 81 DUP2 0234 52 MSTORE 0235 60 PUSH1 0x04 0237 01 ADD 0238 80 DUP1 0239 80 DUP1 023A 60 PUSH1 0x20 023C 01 ADD 023D 82 DUP3 023E 81 DUP2 023F 03 SUB 0240 82 DUP3 0241 52 MSTORE 0242 60 PUSH1 0x26 0244 81 DUP2 0245 52 MSTORE 0246 60 PUSH1 0x20 0248 01 ADD 0249 80 DUP1 024A 61 PUSH2 0x032f 024D 60 PUSH1 0x26 024F 91 SWAP2 0250 39 CODECOPY 0251 60 PUSH1 0x40 0253 01 ADD 0254 91 SWAP2 0255 50 POP 0256 50 POP 0257 60 PUSH1 0x40 0259 51 MLOAD 025A 80 DUP1 025B 91 SWAP2 025C 03 SUB 025D 90 SWAP1 025E FD *REVERT // Stack delta = +0 // Outputs[5] // { // @0234 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = 0x461bcd << 0xe5 // @0241 memory[0x04 + memory[0x40:0x60]:0x04 + memory[0x40:0x60] + 0x20] = (0x20 + 0x04 + memory[0x40:0x60]) - (0x04 + memory[0x40:0x60]) // @0245 memory[0x20 + 0x04 + memory[0x40:0x60]:0x20 + 0x04 + memory[0x40:0x60] + 0x20] = 0x26 // @0250 memory[0x20 + 0x20 + 0x04 + memory[0x40:0x60]:0x20 + 0x20 + 0x04 + memory[0x40:0x60] + 0x26] = code[0x032f:0x0355] // @025E revert(memory[memory[0x40:0x60]:memory[0x40:0x60] + (0x40 + 0x20 + 0x20 + 0x04 + memory[0x40:0x60]) - memory[0x40:0x60]]); // } // Block terminates label_025F: // Incoming jump from 0x0228, if stack[-1] & (0x01 << 0xa0) - 0x01 // Inputs[6] // { // @0262 storage[0x33] // @0265 memory[0x40:0x60] // @026F stack[-1] // @0299 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00] // @029D storage[0x33] // @02BA stack[-2] // } 025F 5B JUMPDEST 0260 60 PUSH1 0x33 0262 54 SLOAD 0263 60 PUSH1 0x40 0265 51 MLOAD 0266 60 PUSH1 0x01 0268 60 PUSH1 0x01 026A 60 PUSH1 0xa0 026C 1B SHL 026D 03 SUB 026E 80 DUP1 026F 84 DUP5 0270 16 AND 0271 92 SWAP3 0272 16 AND 0273 90 SWAP1 0274 7F PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 0295 90 SWAP1 0296 60 PUSH1 0x00 0298 90 SWAP1 0299 A3 LOG3 029A 60 PUSH1 0x33 029C 80 DUP1 029D 54 SLOAD 029E 60 PUSH1 0x01 02A0 60 PUSH1 0x01 02A2 60 PUSH1 0xa0 02A4 1B SHL 02A5 03 SUB 02A6 19 NOT 02A7 16 AND 02A8 60 PUSH1 0x01 02AA 60 PUSH1 0x01 02AC 60 PUSH1 0xa0 02AE 1B SHL 02AF 03 SUB 02B0 92 SWAP3 02B1 90 SWAP1 02B2 92 SWAP3 02B3 16 AND 02B4 91 SWAP2 02B5 90 SWAP1 02B6 91 SWAP2 02B7 17 OR 02B8 90 SWAP1 02B9 55 SSTORE 02BA 56 *JUMP // Stack delta = -2 // Outputs[2] // { // @0299 log(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x00], [0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0, storage[0x33] & (0x01 << 0xa0) - 0x01, stack[-1] & (0x01 << 0xa0) - 0x01]); // @02B9 storage[0x33] = ((0x01 << 0xa0) - 0x01 & stack[-1]) | (~((0x01 << 0xa0) - 0x01) & storage[0x33]) // } // Block ends with unconditional jump to stack[-2] label_02BB: // Incoming jump from 0x00E6 02BB 5B JUMPDEST 02BC 61 PUSH2 0x02c3 02BF 61 PUSH2 0x032a 02C2 56 *JUMP // Stack delta = +1 // Outputs[1] { @02BC stack[0] = 0x02c3 } // Block ends with call to 0x032a, returns to 0x02C3 label_02C3: // Incoming return from call to 0x032A at 0x02C2 // Inputs[2] // { // @02C6 storage[0x33] // @02D2 stack[-1] // } 02C3 5B JUMPDEST 02C4 60 PUSH1 0x33 02C6 54 SLOAD 02C7 60 PUSH1 0x01 02C9 60 PUSH1 0x01 02CB 60 PUSH1 0xa0 02CD 1B SHL 02CE 03 SUB 02CF 90 SWAP1 02D0 81 DUP2 02D1 16 AND 02D2 91 SWAP2 02D3 16 AND 02D4 14 EQ 02D5 61 PUSH2 0x0325 02D8 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x0325, if stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] label_02D9: // Incoming jump from 0x02D8, if not stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] // Inputs[3] // { // @02DC memory[0x40:0x60] // @031B memory[0x40:0x60] // @0324 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x64 + (memory[0x40:0x60] - memory[0x40:0x60])] // } 02D9 60 PUSH1 0x40 02DB 80 DUP1 02DC 51 MLOAD 02DD 62 PUSH3 0x461bcd 02E1 60 PUSH1 0xe5 02E3 1B SHL 02E4 81 DUP2 02E5 52 MSTORE 02E6 60 PUSH1 0x20 02E8 60 PUSH1 0x04 02EA 82 DUP3 02EB 01 ADD 02EC 81 DUP2 02ED 90 SWAP1 02EE 52 MSTORE 02EF 60 PUSH1 0x24 02F1 82 DUP3 02F2 01 ADD 02F3 52 MSTORE 02F4 7F PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0315 60 PUSH1 0x44 0317 82 DUP3 0318 01 ADD 0319 52 MSTORE 031A 90 SWAP1 031B 51 MLOAD 031C 90 SWAP1 031D 81 DUP2 031E 90 SWAP1 031F 03 SUB 0320 60 PUSH1 0x64 0322 01 ADD 0323 90 SWAP1 0324 FD *REVERT // Stack delta = +0 // Outputs[5] // { // @02E5 memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x20] = 0x461bcd << 0xe5 // @02EE memory[memory[0x40:0x60] + 0x04:memory[0x40:0x60] + 0x04 + 0x20] = 0x20 // @02F3 memory[memory[0x40:0x60] + 0x24:memory[0x40:0x60] + 0x24 + 0x20] = 0x20 // @0319 memory[memory[0x40:0x60] + 0x44:memory[0x40:0x60] + 0x44 + 0x20] = 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 // @0324 revert(memory[memory[0x40:0x60]:memory[0x40:0x60] + 0x64 + (memory[0x40:0x60] - memory[0x40:0x60])]); // } // Block terminates label_0325: // Incoming jump from 0x02D8, if stack[-1] & (0x01 << 0xa0) - 0x01 == (0x01 << 0xa0) - 0x01 & storage[0x33] // Inputs[2] // { // @0328 stack[-1] // @0329 stack[-2] // } 0325 5B JUMPDEST 0326 60 PUSH1 0x65 0328 55 SSTORE 0329 56 *JUMP // Stack delta = -2 // Outputs[1] { @0328 storage[0x65] = stack[-1] } // Block ends with unconditional jump to stack[-2] label_032A: // Incoming call from 0x00F4, returns to 0x00F5 // Incoming call from 0x01B7, returns to 0x01B8 // Incoming call from 0x02C2, returns to 0x02C3 // Inputs[2] // { // @032B msg.sender // @032C stack[-1] // } 032A 5B JUMPDEST 032B 33 CALLER 032C 90 SWAP1 032D 56 *JUMP // Stack delta = +0 // Outputs[1] { @032C stack[-1] = msg.sender } // Block ends with unconditional jump to stack[-1] 032E FE *ASSERT 032F 4F 4F 0330 77 PUSH24 0x6e61626c653a206e6577206f776e65722069732074686520 0349 7A PUSH27 0x65726f2061646472657373a26469706673582212206b9a05a8275f 0365 E0 E0 0366 BD BD 0367 D2 D2 0368 17 OR 0369 31 BALANCE 036A EF EF 036B EA EA 036C 53 MSTORE8 036D E2 E2 036E 39 CODECOPY 036F B7 B7 0370 4D 4D 0371 42 TIMESTAMP 0372 1B SHL 0373 4E 4E 0374 A6 A6 0375 7D PUSH30 0x16a2df99b905235c1264736f6c634300060c0033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]