Online Solidity Decompiler

« Decompile another contract

Address

0x28d6228c6251300915b2f899616cbfae568045f8 [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) { var var0 = 0x00; var temp0 = msg.data.length; memory[var0:var0 + temp0] = msg.data[var0:var0 + temp0]; var temp1; temp1, memory[var0:var0 + var0] = address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[var0:var0 + msg.data.length]); var temp2 = returndata.length; memory[var0:var0 + temp2] = returndata[var0:var0 + temp2]; if (temp1) { return memory[var0:var0 + returndata.length]; } label_005B: revert(memory[var0:var0 + returndata.length]); } else { var0 = 0x00; var temp3 = msg.data.length; memory[var0:var0 + temp3] = msg.data[var0:var0 + temp3]; var temp4; temp4, memory[var0:var0 + var0] = address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[var0:var0 + msg.data.length]); var temp5 = returndata.length; memory[var0:var0 + temp5] = returndata[var0:var0 + temp5]; if (!temp4) { goto label_005B; } else { return memory[var0:var0 + returndata.length]; } } } }

Disassembly

label_0000: // Inputs[1] { @0005 msg.data.length } 0000 60 PUSH1 0x80 0002 60 PUSH1 0x40 0004 52 MSTORE 0005 36 CALLDATASIZE 0006 15 ISZERO 0007 60 PUSH1 0x5f 0009 57 *JUMPI // Stack delta = +0 // Outputs[1] { @0004 memory[0x40:0x60] = 0x80 } // Block ends with conditional jump to 0x005f, if !msg.data.length label_000A: // Incoming jump from 0x0009, if not !msg.data.length // Inputs[9] // { // @0040 storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // @0047 msg.data.length // @004A msg.data[0x00:0x00 + msg.data.length] // @004C msg.data.length // @004E msg.gas // @004F memory[0x00:0x00 + msg.data.length] // @004F address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @0050 returndata.length // @0053 returndata[0x00:0x00 + returndata.length] // } 000A 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 001F 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0040 54 SLOAD 0041 16 AND 0042 60 PUSH1 0x00 0044 80 DUP1 0045 80 DUP1 0046 92 SWAP3 0047 36 CALLDATASIZE 0048 82 DUP3 0049 80 DUP1 004A 37 CALLDATACOPY 004B 81 DUP2 004C 36 CALLDATASIZE 004D 91 SWAP2 004E 5A GAS 004F F4 DELEGATECALL 0050 3D RETURNDATASIZE 0051 82 DUP3 0052 80 DUP1 0053 3E RETURNDATACOPY 0054 15 ISZERO 0055 60 PUSH1 0x5b 0057 57 *JUMPI // Stack delta = +1 // Outputs[4] // { // @0046 stack[0] = 0x00 // @004A memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @004F memory[0x00:0x00] = address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @0053 memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // } // Block ends with conditional jump to 0x005b, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_0058: // Incoming jump from 0x0057, if not !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @0058 returndata.length // @0059 stack[-1] // @005A memory[stack[-1]:stack[-1] + returndata.length] // } 0058 3D RETURNDATASIZE 0059 90 SWAP1 005A F3 *RETURN // Stack delta = -1 // Outputs[1] { @005A return memory[stack[-1]:stack[-1] + returndata.length]; } // Block terminates label_005B: // Incoming jump from 0x0057, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Incoming jump from 0x00AD, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @005C returndata.length // @005D stack[-1] // @005E memory[stack[-1]:stack[-1] + returndata.length] // } 005B 5B JUMPDEST 005C 3D RETURNDATASIZE 005D 90 SWAP1 005E FD *REVERT // Stack delta = -1 // Outputs[1] { @005E revert(memory[stack[-1]:stack[-1] + returndata.length]); } // Block terminates label_005F: // Incoming jump from 0x0009, if !msg.data.length // Inputs[9] // { // @0096 storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // @009D msg.data.length // @00A0 msg.data[0x00:0x00 + msg.data.length] // @00A2 msg.data.length // @00A4 msg.gas // @00A5 memory[0x00:0x00 + msg.data.length] // @00A5 address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00A6 returndata.length // @00A9 returndata[0x00:0x00 + returndata.length] // } 005F 5B JUMPDEST 0060 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0075 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0096 54 SLOAD 0097 16 AND 0098 60 PUSH1 0x00 009A 80 DUP1 009B 80 DUP1 009C 92 SWAP3 009D 36 CALLDATASIZE 009E 82 DUP3 009F 80 DUP1 00A0 37 CALLDATACOPY 00A1 81 DUP2 00A2 36 CALLDATASIZE 00A3 91 SWAP2 00A4 5A GAS 00A5 F4 DELEGATECALL 00A6 3D RETURNDATASIZE 00A7 82 DUP3 00A8 80 DUP1 00A9 3E RETURNDATACOPY 00AA 15 ISZERO 00AB 60 PUSH1 0x5b 00AD 57 *JUMPI // Stack delta = +1 // Outputs[4] // { // @009C stack[0] = 0x00 // @00A0 memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @00A5 memory[0x00:0x00] = address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00A9 memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // } // Block ends with conditional jump to 0x005b, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_00AE: // Incoming jump from 0x00AD, if not !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @00AE returndata.length // @00AF stack[-1] // @00B0 memory[stack[-1]:stack[-1] + returndata.length] // } 00AE 3D RETURNDATASIZE 00AF 90 SWAP1 00B0 F3 *RETURN // Stack delta = -1 // Outputs[1] { @00B0 return memory[stack[-1]:stack[-1] + returndata.length]; } // Block terminates 00B1 FE *ASSERT 00B2 A2 LOG2 00B3 64 PUSH5 0x6970667358 00B9 22 22 00BA 12 SLT 00BB 20 SHA3 00BC E4 E4 00BD 52 MSTORE 00BE A1 LOG1 00BF AF AF 00C0 EA EA 00C1 01 ADD 00C2 B3 B3 00C3 2D 2D 00C4 CA CA 00C5 BF BF 00C6 7F PUSH32 0x2bf8b639d756d9cc028d4e25e3aef032f4be5a789064736f6c63430008110033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]