Online Solidity Decompiler

« Decompile another contract

Address

0x30a7d4565ed5e9ec424c9f2aee831877344300cc [etherscan.io | etherchain.org]

Public Methods

No public methods detected.

Internal Methods

func_005E() returns (r0)

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 = 0x0011; var var1 = 0x0027; var var2 = 0x0022; var2 = func_005E(); label_0022: var temp0 = msg.data.length; memory[0x00:0x00 + temp0] = msg.data[0x00:0x00 + temp0]; var temp1; temp1, memory[0x00:0x00] = address(var2).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]); var temp2 = returndata.length; memory[0x00:0x00 + temp2] = returndata[0x00:0x00 + temp2]; if (!temp1) { revert(memory[0x00:0x00 + returndata.length]); } else { return memory[0x00:0x00 + returndata.length]; } } else { var0 = 0x0011; var1 = 0x0027; var2 = 0x0022; var2 = func_005E(); goto label_0022; } } function func_005E() returns (var r0) { var var0 = 0x00; var var1 = storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01; return var1; } }

Disassembly

label_0000: // Inputs[1] { @0005 msg.data.length } 0000 60 PUSH1 0x80 0002 60 PUSH1 0x40 0004 52 MSTORE 0005 36 CALLDATASIZE 0006 61 PUSH2 0x0013 0009 57 *JUMPI // Stack delta = +0 // Outputs[1] { @0004 memory[0x40:0x60] = 0x80 } // Block ends with conditional jump to 0x0013, if msg.data.length label_000A: // Incoming jump from 0x0009, if not msg.data.length 000A 61 PUSH2 0x0011 000D 61 PUSH2 0x0017 0010 56 *JUMP // Stack delta = +1 // Outputs[1] { @000A stack[0] = 0x0011 } // Block ends with unconditional jump to 0x0017 0011 5B JUMPDEST 0012 00 *STOP label_0013: // Incoming jump from 0x0009, if msg.data.length 0013 5B JUMPDEST 0014 61 PUSH2 0x0011 0017 5B JUMPDEST 0018 61 PUSH2 0x0027 001B 61 PUSH2 0x0022 001E 61 PUSH2 0x005e 0021 56 *JUMP // Stack delta = +3 // Outputs[3] // { // @0014 stack[0] = 0x0011 // @0018 stack[1] = 0x0027 // @001B stack[2] = 0x0022 // } // Block ends with call to 0x005e, returns to 0x0022 label_0022: // Incoming return from call to 0x005E at 0x0021 // Incoming return from call to 0x005E at 0x0021 0022 5B JUMPDEST 0023 61 PUSH2 0x0096 0026 56 *JUMP // Stack delta = +0 // Block ends with unconditional jump to 0x0096 0027 5B JUMPDEST 0028 56 *JUMP 0029 5B JUMPDEST 002A 60 PUSH1 0x60 002C 61 PUSH2 0x004e 002F 83 DUP4 0030 83 DUP4 0031 60 PUSH1 0x40 0033 51 MLOAD 0034 80 DUP1 0035 60 PUSH1 0x60 0037 01 ADD 0038 60 PUSH1 0x40 003A 52 MSTORE 003B 80 DUP1 003C 60 PUSH1 0x27 003E 81 DUP2 003F 52 MSTORE 0040 60 PUSH1 0x20 0042 01 ADD 0043 61 PUSH2 0x024c 0046 60 PUSH1 0x27 0048 91 SWAP2 0049 39 CODECOPY 004A 61 PUSH2 0x00ba 004D 56 *JUMP 004E 5B JUMPDEST 004F 93 SWAP4 0050 92 SWAP3 0051 50 POP 0052 50 POP 0053 50 POP 0054 56 *JUMP 0055 5B JUMPDEST 0056 3B EXTCODESIZE 0057 15 ISZERO 0058 15 ISZERO 0059 90 SWAP1 005A 56 *JUMP 005B 5B JUMPDEST 005C 90 SWAP1 005D 56 *JUMP label_005E: // Incoming call from 0x0021, returns to 0x0022 // Incoming call from 0x0021, returns to 0x0022 // Inputs[1] { @0085 storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] } 005E 5B JUMPDEST 005F 60 PUSH1 0x00 0061 61 PUSH2 0x0091 0064 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0085 54 SLOAD 0086 60 PUSH1 0x01 0088 60 PUSH1 0x01 008A 60 PUSH1 0xa0 008C 1B SHL 008D 03 SUB 008E 16 AND 008F 90 SWAP1 0090 56 *JUMP // Stack delta = +2 // Outputs[2] // { // @005F stack[0] = 0x00 // @008F stack[1] = (0x01 << 0xa0) - 0x01 & storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // } // Block ends with unconditional jump to 0x0091 label_0091: // Incoming jump from 0x0090 // Inputs[3] // { // @0092 stack[-2] // @0092 stack[-1] // @0094 stack[-3] // } 0091 5B JUMPDEST 0092 90 SWAP1 0093 50 POP 0094 90 SWAP1 0095 56 *JUMP // Stack delta = -2 // Outputs[1] { @0094 stack[-3] = stack[-1] } // Block ends with unconditional jump to stack[-3] label_0096: // Incoming jump from 0x0026 // Inputs[9] // { // @0097 msg.data.length // @009B msg.data[0x00:0x00 + msg.data.length] // @009F msg.data.length // @00A2 stack[-1] // @00A3 msg.gas // @00A4 memory[0x00:0x00 + msg.data.length] // @00A4 address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00A5 returndata.length // @00A9 returndata[0x00:0x00 + returndata.length] // } 0096 5B JUMPDEST 0097 36 CALLDATASIZE 0098 60 PUSH1 0x00 009A 80 DUP1 009B 37 CALLDATACOPY 009C 60 PUSH1 0x00 009E 80 DUP1 009F 36 CALLDATASIZE 00A0 60 PUSH1 0x00 00A2 84 DUP5 00A3 5A GAS 00A4 F4 DELEGATECALL 00A5 3D RETURNDATASIZE 00A6 60 PUSH1 0x00 00A8 80 DUP1 00A9 3E RETURNDATACOPY 00AA 80 DUP1 00AB 80 DUP1 00AC 15 ISZERO 00AD 61 PUSH2 0x00b5 00B0 57 *JUMPI // Stack delta = +2 // Outputs[5] // { // @009B memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @00A4 memory[0x00:0x00] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00A4 stack[0] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00A9 memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // @00AA stack[1] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // } // Block ends with conditional jump to 0x00b5, if !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_00B1: // Incoming jump from 0x00B0, if not !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[2] // { // @00B1 returndata.length // @00B4 memory[0x00:0x00 + returndata.length] // } 00B1 3D RETURNDATASIZE 00B2 60 PUSH1 0x00 00B4 F3 *RETURN // Stack delta = +0 // Outputs[1] { @00B4 return memory[0x00:0x00 + returndata.length]; } // Block terminates label_00B5: // Incoming jump from 0x00B0, if !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[2] // { // @00B6 returndata.length // @00B9 memory[0x00:0x00 + returndata.length] // } 00B5 5B JUMPDEST 00B6 3D RETURNDATASIZE 00B7 60 PUSH1 0x00 00B9 FD *REVERT // Stack delta = +0 // Outputs[1] { @00B9 revert(memory[0x00:0x00 + returndata.length]); } // Block terminates 00BA 5B JUMPDEST 00BB 60 PUSH1 0x60 00BD 83 DUP4 00BE 3B EXTCODESIZE 00BF 61 PUSH2 0x011e 00C2 57 *JUMPI 00C3 60 PUSH1 0x40 00C5 51 MLOAD 00C6 62 PUSH3 0x461bcd 00CA 60 PUSH1 0xe5 00CC 1B SHL 00CD 81 DUP2 00CE 52 MSTORE 00CF 60 PUSH1 0x20 00D1 60 PUSH1 0x04 00D3 82 DUP3 00D4 01 ADD 00D5 52 MSTORE 00D6 60 PUSH1 0x26 00D8 60 PUSH1 0x24 00DA 82 DUP3 00DB 01 ADD 00DC 52 MSTORE 00DD 7F PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f 00FE 60 PUSH1 0x44 0100 82 DUP3 0101 01 ADD 0102 52 MSTORE 0103 65 PUSH6 0x1b9d1c9858dd 010A 60 PUSH1 0xd2 010C 1B SHL 010D 60 PUSH1 0x64 010F 82 DUP3 0110 01 ADD 0111 52 MSTORE 0112 60 PUSH1 0x84 0114 01 ADD 0115 5B JUMPDEST 0116 60 PUSH1 0x40 0118 51 MLOAD 0119 80 DUP1 011A 91 SWAP2 011B 03 SUB 011C 90 SWAP1 011D FD *REVERT 011E 5B JUMPDEST 011F 60 PUSH1 0x00 0121 80 DUP1 0122 85 DUP6 0123 60 PUSH1 0x01 0125 60 PUSH1 0x01 0127 60 PUSH1 0xa0 0129 1B SHL 012A 03 SUB 012B 16 AND 012C 85 DUP6 012D 60 PUSH1 0x40 012F 51 MLOAD 0130 61 PUSH2 0x0139 0133 91 SWAP2 0134 90 SWAP1 0135 61 PUSH2 0x01cc 0138 56 *JUMP 0139 5B JUMPDEST 013A 60 PUSH1 0x00 013C 60 PUSH1 0x40 013E 51 MLOAD 013F 80 DUP1 0140 83 DUP4 0141 03 SUB 0142 81 DUP2 0143 85 DUP6 0144 5A GAS 0145 F4 DELEGATECALL 0146 91 SWAP2 0147 50 POP 0148 50 POP 0149 3D RETURNDATASIZE 014A 80 DUP1 014B 60 PUSH1 0x00 014D 81 DUP2 014E 14 EQ 014F 61 PUSH2 0x0174 0152 57 *JUMPI 0153 60 PUSH1 0x40 0155 51 MLOAD 0156 91 SWAP2 0157 50 POP 0158 60 PUSH1 0x1f 015A 19 NOT 015B 60 PUSH1 0x3f 015D 3D RETURNDATASIZE 015E 01 ADD 015F 16 AND 0160 82 DUP3 0161 01 ADD 0162 60 PUSH1 0x40 0164 52 MSTORE 0165 3D RETURNDATASIZE 0166 82 DUP3 0167 52 MSTORE 0168 3D RETURNDATASIZE 0169 60 PUSH1 0x00 016B 60 PUSH1 0x20 016D 84 DUP5 016E 01 ADD 016F 3E RETURNDATACOPY 0170 61 PUSH2 0x0179 0173 56 *JUMP 0174 5B JUMPDEST 0175 60 PUSH1 0x60 0177 91 SWAP2 0178 50 POP 0179 5B JUMPDEST 017A 50 POP 017B 91 SWAP2 017C 50 POP 017D 91 SWAP2 017E 50 POP 017F 61 PUSH2 0x0189 0182 82 DUP3 0183 82 DUP3 0184 86 DUP7 0185 61 PUSH2 0x0193 0188 56 *JUMP 0189 5B JUMPDEST 018A 96 SWAP7 018B 95 SWAP6 018C 50 POP 018D 50 POP 018E 50 POP 018F 50 POP 0190 50 POP 0191 50 POP 0192 56 *JUMP 0193 5B JUMPDEST 0194 60 PUSH1 0x60 0196 83 DUP4 0197 15 ISZERO 0198 61 PUSH2 0x01a2 019B 57 *JUMPI 019C 50 POP 019D 81 DUP2 019E 61 PUSH2 0x004e 01A1 56 *JUMP 01A2 5B JUMPDEST 01A3 82 DUP3 01A4 51 MLOAD 01A5 15 ISZERO 01A6 61 PUSH2 0x01b2 01A9 57 *JUMPI 01AA 82 DUP3 01AB 51 MLOAD 01AC 80 DUP1 01AD 84 DUP5 01AE 60 PUSH1 0x20 01B0 01 ADD 01B1 FD *REVERT 01B2 5B JUMPDEST 01B3 81 DUP2 01B4 60 PUSH1 0x40 01B6 51 MLOAD 01B7 62 PUSH3 0x461bcd 01BB 60 PUSH1 0xe5 01BD 1B SHL 01BE 81 DUP2 01BF 52 MSTORE 01C0 60 PUSH1 0x04 01C2 01 ADD 01C3 61 PUSH2 0x0115 01C6 91 SWAP2 01C7 90 SWAP1 01C8 61 PUSH2 0x01e8 01CB 56 *JUMP 01CC 5B JUMPDEST 01CD 60 PUSH1 0x00 01CF 82 DUP3 01D0 51 MLOAD 01D1 61 PUSH2 0x01de 01D4 81 DUP2 01D5 84 DUP5 01D6 60 PUSH1 0x20 01D8 87 DUP8 01D9 01 ADD 01DA 61 PUSH2 0x021b 01DD 56 *JUMP 01DE 5B JUMPDEST 01DF 91 SWAP2 01E0 90 SWAP1 01E1 91 SWAP2 01E2 01 ADD 01E3 92 SWAP3 01E4 91 SWAP2 01E5 50 POP 01E6 50 POP 01E7 56 *JUMP 01E8 5B JUMPDEST 01E9 60 PUSH1 0x00 01EB 60 PUSH1 0x20 01ED 82 DUP3 01EE 52 MSTORE 01EF 82 DUP3 01F0 51 MLOAD 01F1 80 DUP1 01F2 60 PUSH1 0x20 01F4 84 DUP5 01F5 01 ADD 01F6 52 MSTORE 01F7 61 PUSH2 0x0207 01FA 81 DUP2 01FB 60 PUSH1 0x40 01FD 85 DUP6 01FE 01 ADD 01FF 60 PUSH1 0x20 0201 87 DUP8 0202 01 ADD 0203 61 PUSH2 0x021b 0206 56 *JUMP 0207 5B JUMPDEST 0208 60 PUSH1 0x1f 020A 01 ADD 020B 60 PUSH1 0x1f 020D 19 NOT 020E 16 AND 020F 91 SWAP2 0210 90 SWAP1 0211 91 SWAP2 0212 01 ADD 0213 60 PUSH1 0x40 0215 01 ADD 0216 92 SWAP3 0217 91 SWAP2 0218 50 POP 0219 50 POP 021A 56 *JUMP 021B 5B JUMPDEST 021C 60 PUSH1 0x00 021E 5B JUMPDEST 021F 83 DUP4 0220 81 DUP2 0221 10 LT 0222 15 ISZERO 0223 61 PUSH2 0x0236 0226 57 *JUMPI 0227 81 DUP2 0228 81 DUP2 0229 01 ADD 022A 51 MLOAD 022B 83 DUP4 022C 82 DUP3 022D 01 ADD 022E 52 MSTORE 022F 60 PUSH1 0x20 0231 01 ADD 0232 61 PUSH2 0x021e 0235 56 *JUMP 0236 5B JUMPDEST 0237 83 DUP4 0238 81 DUP2 0239 11 GT 023A 15 ISZERO 023B 61 PUSH2 0x0245 023E 57 *JUMPI 023F 60 PUSH1 0x00 0241 84 DUP5 0242 84 DUP5 0243 01 ADD 0244 52 MSTORE 0245 5B JUMPDEST 0246 50 POP 0247 50 POP 0248 50 POP 0249 50 POP 024A 56 *JUMP 024B FE *ASSERT 024C 41 COINBASE 024D 64 PUSH5 0x6472657373 0253 3A GASPRICE 0254 20 SHA3 0255 6C PUSH13 0x6f772d6c6576656c2064656c65 0263 67 PUSH8 0x6174652063616c6c 026C 20 SHA3 026D 66 PUSH7 0x61696c6564a264 0275 69 PUSH10 0x706673582212209b8470 0280 F0 CREATE 0281 6E PUSH15 0x8a3960c912103fc2be177edaad6958 0291 4E 4E 0292 E3 E3 0293 C7 C7 0294 D2 D2 0295 80 DUP1 0296 9E SWAP15 0297 E7 E7 0298 37 CALLDATACOPY 0299 E7 E7 029A 94 SWAP5 029B 08 ADDMOD 029C E7 E7 029D 64 PUSH5 0x736f6c6343 02A3 00 *STOP 02A4 08 ADDMOD 02A5 02 MUL 02A6 00 *STOP 02A7 33 CALLER
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]