Online Solidity Decompiler

« Decompile another contract

Address

0x251c3246642dbcc5473ae8700a14a11522a4302c [etherscan.io | etherchain.org]

Public Methods

No public methods detected.

Internal Methods

No internal methods detected.

Decompilation

This might be constructor bytecode - to get at the deployed contract, go back and remove the constructor prefix, usually up to the next 6060 or 6080.
contract Contract { function main() { memory[0x40:0x60] = 0x80; if (msg.data.length < 0x04) { goto label_000D; } var var0 = 0x00; if (msg.data[var0:var0 + 0x20] >> 0xe0 != 0x56973ee5) { label_000D: var0 = 0x00; var temp1 = msg.data.length; memory[var0:var0 + temp1] = msg.data[var0:var0 + temp1]; var temp2; temp2, memory[var0:var0 + var0] = address(0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da).delegatecall.gas(msg.gas)(memory[var0:var0 + msg.data.length]); var temp3 = returndata.length; memory[var0:var0 + temp3] = returndata[var0:var0 + temp3]; if (!temp2) { revert(memory[var0:var0 + returndata.length]); } else { return memory[var0:var0 + returndata.length]; } } else if (msg.value) { label_009F: var temp0 = var0; revert(memory[temp0:temp0 + temp0]); } else if (msg.data.length + ~0x03 i< var0) { goto label_009F; } else { memory[0x80:0xa0] = (0x01 << 0xa0) - 0x01 & 0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da; return memory[0x80:0xa0]; } } }

Disassembly

label_0000: // Inputs[1] { @0007 msg.data.length } 0000 60 PUSH1 0x80 0002 60 PUSH1 0x40 0004 52 MSTORE 0005 60 PUSH1 0x04 0007 36 CALLDATASIZE 0008 10 LT 0009 15 ISZERO 000A 60 PUSH1 0x49 000C 57 *JUMPI // Stack delta = +0 // Outputs[1] { @0004 memory[0x40:0x60] = 0x80 } // Block ends with conditional jump to 0x0049, if !(msg.data.length < 0x04) label_000D: // Incoming jump from 0x005C // Incoming jump from 0x000C, if not !(msg.data.length < 0x04) // Inputs[8] // { // @000F msg.data.length // @0012 msg.data[0x00:0x00 + msg.data.length] // @0015 msg.data.length // @0038 msg.gas // @0039 memory[0x00:0x00 + msg.data.length] // @0039 address(0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @003A returndata.length // @003D returndata[0x00:0x00 + returndata.length] // } 000D 5B JUMPDEST 000E 5F PUSH0 000F 36 CALLDATASIZE 0010 81 DUP2 0011 80 DUP1 0012 37 CALLDATACOPY 0013 80 DUP1 0014 80 DUP1 0015 36 CALLDATASIZE 0016 81 DUP2 0017 7F PUSH32 0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da 0038 5A GAS 0039 F4 DELEGATECALL 003A 3D RETURNDATASIZE 003B 82 DUP3 003C 80 DUP1 003D 3E RETURNDATACOPY 003E 15 ISZERO 003F 60 PUSH1 0x45 0041 57 *JUMPI // Stack delta = +1 // Outputs[4] // { // @000E stack[0] = 0x00 // @0012 memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @0039 memory[0x00:0x00] = address(0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @003D memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // } // Block ends with conditional jump to 0x0045, if !address(0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_0042: // Incoming jump from 0x0041, if not !address(0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @0042 returndata.length // @0043 stack[-1] // @0044 memory[stack[-1]:stack[-1] + returndata.length] // } 0042 3D RETURNDATASIZE 0043 90 SWAP1 0044 F3 *RETURN // Stack delta = -1 // Outputs[1] { @0044 return memory[stack[-1]:stack[-1] + returndata.length]; } // Block terminates label_0045: // Incoming jump from 0x0041, if !address(0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @0046 returndata.length // @0047 stack[-1] // @0048 memory[stack[-1]:stack[-1] + returndata.length] // } 0045 5B JUMPDEST 0046 3D RETURNDATASIZE 0047 90 SWAP1 0048 FD *REVERT // Stack delta = -1 // Outputs[1] { @0048 revert(memory[stack[-1]:stack[-1] + returndata.length]); } // Block terminates label_0049: // Incoming jump from 0x000C, if !(msg.data.length < 0x04) // Inputs[1] { @004C msg.data[0x00:0x20] } 0049 5B JUMPDEST 004A 5F PUSH0 004B 80 DUP1 004C 35 CALLDATALOAD 004D 60 PUSH1 0xe0 004F 1C SHR 0050 63 PUSH4 0x56973ee5 0055 14 EQ 0056 60 PUSH1 0x5d 0058 57 *JUMPI // Stack delta = +1 // Outputs[1] { @004A stack[0] = 0x00 } // Block ends with conditional jump to 0x005d, if 0x56973ee5 == msg.data[0x00:0x20] >> 0xe0 label_0059: // Incoming jump from 0x0058, if not 0x56973ee5 == msg.data[0x00:0x20] >> 0xe0 0059 50 POP 005A 60 PUSH1 0x0d 005C 56 *JUMP // Stack delta = -1 // Block ends with unconditional jump to 0x000d label_005D: // Incoming jump from 0x0058, if 0x56973ee5 == msg.data[0x00:0x20] >> 0xe0 // Inputs[1] { @005E msg.value } 005D 5B JUMPDEST 005E 34 CALLVALUE 005F 60 PUSH1 0x9f 0061 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x009f, if msg.value label_0062: // Incoming jump from 0x0061, if not msg.value // Inputs[2] // { // @0062 stack[-1] // @0066 msg.data.length // } 0062 80 DUP1 0063 60 PUSH1 0x03 0065 19 NOT 0066 36 CALLDATASIZE 0067 01 ADD 0068 12 SLT 0069 60 PUSH1 0x9f 006B 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x009f, if msg.data.length + ~0x03 i< stack[-1] label_006C: // Incoming jump from 0x006B, if not msg.data.length + ~0x03 i< stack[-1] // Inputs[1] { @009E memory[0x80:0xa0] } 006C 7F PUSH32 0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da 008D 60 PUSH1 0x01 008F 60 PUSH1 0x01 0091 60 PUSH1 0xa0 0093 1B SHL 0094 03 SUB 0095 16 AND 0096 60 PUSH1 0x80 0098 90 SWAP1 0099 81 DUP2 009A 52 MSTORE 009B 60 PUSH1 0x20 009D 90 SWAP1 009E F3 *RETURN // Stack delta = +0 // Outputs[2] // { // @009A memory[0x80:0xa0] = (0x01 << 0xa0) - 0x01 & 0x000000000000000000000000b676cfeeed5c7b739452a502f1eff9ab684a56da // @009E return memory[0x80:0xa0]; // } // Block terminates label_009F: // Incoming jump from 0x006B, if msg.data.length + ~0x03 i< stack[-1] // Incoming jump from 0x0061, if msg.value // Inputs[2] // { // @00A0 stack[-1] // @00A1 memory[stack[-1]:stack[-1] + stack[-1]] // } 009F 5B JUMPDEST 00A0 80 DUP1 00A1 FD *REVERT // Stack delta = -1 // Outputs[1] { @00A1 revert(memory[stack[-1]:stack[-1] + stack[-1]]); } // Block terminates 00A2 FE *ASSERT 00A3 A2 LOG2 00A4 64 PUSH5 0x6970667358 00AA 22 22 00AB 12 SLT 00AC 20 SHA3 00AD 5E 5E 00AE A0 LOG0 00AF 9B SWAP12 00B0 D3 D3 00B1 A4 LOG4 00B2 E8 E8 00B3 60 PUSH1 0xc2 00B5 4F 4F 00B6 C3 C3 00B7 B9 B9 00B8 76 PUSH23 0xd42dd00080f7d4f22863c3c0627037a80672527564736f 00D0 6C PUSH13 0x63430008140033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]