Online Solidity Decompiler

« Decompile another contract

Address

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

Disassembly

label_0000: // Inputs[2] // { // @001C storage[0x00] // @0041 msg.data[0x00:0x20] // } 0000 60 PUSH1 0x80 0002 60 PUSH1 0x40 0004 52 MSTORE 0005 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 001A 60 PUSH1 0x00 001C 54 SLOAD 001D 16 AND 001E 7F PUSH32 0xa619486e00000000000000000000000000000000000000000000000000000000 003F 60 PUSH1 0x00 0041 35 CALLDATALOAD 0042 14 EQ 0043 15 ISZERO 0044 60 PUSH1 0x50 0046 57 *JUMPI // Stack delta = +1 // Outputs[2] // { // @0004 memory[0x40:0x60] = 0x80 // @001D stack[0] = storage[0x00] & 0xffffffffffffffffffffffffffffffffffffffff // } // Block ends with conditional jump to 0x0050, if !(msg.data[0x00:0x20] == 0xa619486e00000000000000000000000000000000000000000000000000000000) label_0047: // Incoming jump from 0x0046, if not !(msg.data[0x00:0x20] == 0xa619486e00000000000000000000000000000000000000000000000000000000) // Inputs[2] // { // @0047 stack[-1] // @004F memory[0x00:0x20] // } 0047 80 DUP1 0048 60 PUSH1 0x00 004A 52 MSTORE 004B 60 PUSH1 0x20 004D 60 PUSH1 0x00 004F F3 *RETURN // Stack delta = +0 // Outputs[2] // { // @004A memory[0x00:0x20] = stack[-1] // @004F return memory[0x00:0x20]; // } // Block terminates label_0050: // Incoming jump from 0x0046, if !(msg.data[0x00:0x20] == 0xa619486e00000000000000000000000000000000000000000000000000000000) // Inputs[9] // { // @0051 msg.data.length // @0055 msg.data[0x00:0x00 + msg.data.length] // @0059 msg.data.length // @005C stack[-1] // @005D msg.gas // @005E memory[0x00:0x00 + msg.data.length] // @005E address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @005F returndata.length // @0063 returndata[0x00:0x00 + returndata.length] // } 0050 5B JUMPDEST 0051 36 CALLDATASIZE 0052 60 PUSH1 0x00 0054 80 DUP1 0055 37 CALLDATACOPY 0056 60 PUSH1 0x00 0058 80 DUP1 0059 36 CALLDATASIZE 005A 60 PUSH1 0x00 005C 84 DUP5 005D 5A GAS 005E F4 DELEGATECALL 005F 3D RETURNDATASIZE 0060 60 PUSH1 0x00 0062 80 DUP1 0063 3E RETURNDATACOPY 0064 60 PUSH1 0x00 0066 81 DUP2 0067 14 EQ 0068 15 ISZERO 0069 60 PUSH1 0x70 006B 57 *JUMPI // Stack delta = +1 // Outputs[4] // { // @0055 memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @005E memory[0x00:0x00] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @005E stack[0] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @0063 memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // } // Block ends with conditional jump to 0x0070, if !(address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) == 0x00) label_006C: // Incoming jump from 0x006B, if not !(address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) == 0x00) // Inputs[2] // { // @006C returndata.length // @006F memory[0x00:0x00 + returndata.length] // } 006C 3D RETURNDATASIZE 006D 60 PUSH1 0x00 006F FD *REVERT // Stack delta = +0 // Outputs[1] { @006F revert(memory[0x00:0x00 + returndata.length]); } // Block terminates label_0070: // Incoming jump from 0x006B, if !(address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) == 0x00) // Inputs[2] // { // @0071 returndata.length // @0074 memory[0x00:0x00 + returndata.length] // } 0070 5B JUMPDEST 0071 3D RETURNDATASIZE 0072 60 PUSH1 0x00 0074 F3 *RETURN // Stack delta = +0 // Outputs[1] { @0074 return memory[0x00:0x00 + returndata.length]; } // Block terminates 0075 FE *ASSERT 0076 A2 LOG2 0077 64 PUSH5 0x6970667358 007D 22 22 007E 12 SLT 007F 20 SHA3 0080 D1 D1 0081 42 TIMESTAMP 0082 92 SWAP3 0083 97 SWAP8 0084 34 CALLVALUE 0085 96 SWAP7 0086 53 MSTORE8 0087 A4 LOG4 0088 91 SWAP2 0089 80 DUP1 008A 76 PUSH23 0xd650332de1a1068c5f3e07c5c82360c277770b95526473 00A2 6F PUSH16 0x6c63430007060033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]