Online Solidity Decompiler

« Decompile another contract

Address

0x1d41cf24df81e3134319bc11c308c5589a486166 [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] & (0x01 << 0xa0) - 0x01).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_004E: 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] & (0x01 << 0xa0) - 0x01).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_004E; } 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 0x52 0009 57 *JUMPI // Stack delta = +0 // Outputs[1] { @0004 memory[0x40:0x60] = 0x80 } // Block ends with conditional jump to 0x0052, if !msg.data.length label_000A: // Incoming jump from 0x0009, if not !msg.data.length // Inputs[9] // { // @0033 storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // @003A msg.data.length // @003D msg.data[0x00:0x00 + msg.data.length] // @003F msg.data.length // @0041 msg.gas // @0042 memory[0x00:0x00 + msg.data.length] // @0042 address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @0043 returndata.length // @0046 returndata[0x00:0x00 + returndata.length] // } 000A 60 PUSH1 0x01 000C 60 PUSH1 0x01 000E 60 PUSH1 0xa0 0010 1B SHL 0011 03 SUB 0012 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0033 54 SLOAD 0034 16 AND 0035 60 PUSH1 0x00 0037 80 DUP1 0038 80 DUP1 0039 92 SWAP3 003A 36 CALLDATASIZE 003B 82 DUP3 003C 80 DUP1 003D 37 CALLDATACOPY 003E 81 DUP2 003F 36 CALLDATASIZE 0040 91 SWAP2 0041 5A GAS 0042 F4 DELEGATECALL 0043 3D RETURNDATASIZE 0044 82 DUP3 0045 80 DUP1 0046 3E RETURNDATACOPY 0047 15 ISZERO 0048 60 PUSH1 0x4e 004A 57 *JUMPI // Stack delta = +1 // Outputs[4] // { // @0039 stack[0] = 0x00 // @003D memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @0042 memory[0x00:0x00] = address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @0046 memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // } // Block ends with conditional jump to 0x004e, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_004B: // Incoming jump from 0x004A, if not !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @004B returndata.length // @004C stack[-1] // @004D memory[stack[-1]:stack[-1] + returndata.length] // } 004B 3D RETURNDATASIZE 004C 90 SWAP1 004D F3 *RETURN // Stack delta = -1 // Outputs[1] { @004D return memory[stack[-1]:stack[-1] + returndata.length]; } // Block terminates label_004E: // Incoming jump from 0x0093, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Incoming jump from 0x004A, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @004F returndata.length // @0050 stack[-1] // @0051 memory[stack[-1]:stack[-1] + returndata.length] // } 004E 5B JUMPDEST 004F 3D RETURNDATASIZE 0050 90 SWAP1 0051 FD *REVERT // Stack delta = -1 // Outputs[1] { @0051 revert(memory[stack[-1]:stack[-1] + returndata.length]); } // Block terminates label_0052: // Incoming jump from 0x0009, if !msg.data.length // Inputs[9] // { // @007C storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // @0083 msg.data.length // @0086 msg.data[0x00:0x00 + msg.data.length] // @0088 msg.data.length // @008A msg.gas // @008B address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @008B memory[0x00:0x00 + msg.data.length] // @008C returndata.length // @008F returndata[0x00:0x00 + returndata.length] // } 0052 5B JUMPDEST 0053 60 PUSH1 0x01 0055 60 PUSH1 0x01 0057 60 PUSH1 0xa0 0059 1B SHL 005A 03 SUB 005B 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 007C 54 SLOAD 007D 16 AND 007E 60 PUSH1 0x00 0080 80 DUP1 0081 80 DUP1 0082 92 SWAP3 0083 36 CALLDATASIZE 0084 82 DUP3 0085 80 DUP1 0086 37 CALLDATACOPY 0087 81 DUP2 0088 36 CALLDATASIZE 0089 91 SWAP2 008A 5A GAS 008B F4 DELEGATECALL 008C 3D RETURNDATASIZE 008D 82 DUP3 008E 80 DUP1 008F 3E RETURNDATACOPY 0090 15 ISZERO 0091 60 PUSH1 0x4e 0093 57 *JUMPI // Stack delta = +1 // Outputs[4] // { // @0082 stack[0] = 0x00 // @0086 memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @008B memory[0x00:0x00] = address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @008F memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // } // Block ends with conditional jump to 0x004e, if !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_0094: // Incoming jump from 0x0093, if not !address(storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[3] // { // @0094 returndata.length // @0095 stack[-1] // @0096 memory[stack[-1]:stack[-1] + returndata.length] // } 0094 3D RETURNDATASIZE 0095 90 SWAP1 0096 F3 *RETURN // Stack delta = -1 // Outputs[1] { @0096 return memory[stack[-1]:stack[-1] + returndata.length]; } // Block terminates 0097 FE *ASSERT 0098 A2 LOG2 0099 64 PUSH5 0x6970667358 009F 22 22 00A0 12 SLT 00A1 20 SHA3 00A2 44 DIFFICULTY 00A3 C4 C4 00A4 2E 2E 00A5 8D DUP14 00A6 2E 2E 00A7 F2 CALLCODE 00A8 73 PUSH20 0x10c5476d9969df2b5f7c671b3a0dc4ae9fd5ffc7 00BD 00 *STOP 00BE 87 DUP8 00BF 78 PUSH25 0x223764736f6c63430008110033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]