Online Solidity Decompiler

« Decompile another contract

Address

0x0707be63eed188e77e630c88986ebe33a12bfa9f [etherscan.io | etherchain.org]

Public Methods

No public methods detected.

Internal Methods

func_0074() 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_0074(); 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_0074(); goto label_0022; } } function func_0074() returns (var r0) { var var0 = 0x00; var var1 = storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & 0xffffffffffffffffffffffffffffffffffffffff; 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 0x0074 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 0x0074, returns to 0x0022 label_0022: // Incoming return from call to 0x0074 at 0x0021 // Incoming return from call to 0x0074 at 0x0021 0022 5B JUMPDEST 0023 61 PUSH2 0x00b9 0026 56 *JUMP // Stack delta = +0 // Block ends with unconditional jump to 0x00b9 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 0x02fb 0046 60 PUSH1 0x27 0048 91 SWAP2 0049 39 CODECOPY 004A 61 PUSH2 0x00dd 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 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 006B 16 AND 006C 3B EXTCODESIZE 006D 15 ISZERO 006E 15 ISZERO 006F 90 SWAP1 0070 56 *JUMP 0071 5B JUMPDEST 0072 90 SWAP1 0073 56 *JUMP label_0074: // Incoming call from 0x0021, returns to 0x0022 // Incoming call from 0x0021, returns to 0x0022 // Inputs[1] { @009B storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] } 0074 5B JUMPDEST 0075 60 PUSH1 0x00 0077 61 PUSH2 0x00b4 007A 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 009B 54 SLOAD 009C 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00B1 16 AND 00B2 90 SWAP1 00B3 56 *JUMP // Stack delta = +2 // Outputs[2] // { // @0075 stack[0] = 0x00 // @00B2 stack[1] = 0xffffffffffffffffffffffffffffffffffffffff & storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // } // Block ends with unconditional jump to 0x00b4 label_00B4: // Incoming jump from 0x00B3 // Inputs[3] // { // @00B5 stack[-2] // @00B5 stack[-1] // @00B7 stack[-3] // } 00B4 5B JUMPDEST 00B5 90 SWAP1 00B6 50 POP 00B7 90 SWAP1 00B8 56 *JUMP // Stack delta = -2 // Outputs[1] { @00B7 stack[-3] = stack[-1] } // Block ends with unconditional jump to stack[-3] label_00B9: // Incoming jump from 0x0026 // Inputs[9] // { // @00BA msg.data.length // @00BE msg.data[0x00:0x00 + msg.data.length] // @00C2 msg.data.length // @00C5 stack[-1] // @00C6 msg.gas // @00C7 address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00C7 memory[0x00:0x00 + msg.data.length] // @00C8 returndata.length // @00CC returndata[0x00:0x00 + returndata.length] // } 00B9 5B JUMPDEST 00BA 36 CALLDATASIZE 00BB 60 PUSH1 0x00 00BD 80 DUP1 00BE 37 CALLDATACOPY 00BF 60 PUSH1 0x00 00C1 80 DUP1 00C2 36 CALLDATASIZE 00C3 60 PUSH1 0x00 00C5 84 DUP5 00C6 5A GAS 00C7 F4 DELEGATECALL 00C8 3D RETURNDATASIZE 00C9 60 PUSH1 0x00 00CB 80 DUP1 00CC 3E RETURNDATACOPY 00CD 80 DUP1 00CE 80 DUP1 00CF 15 ISZERO 00D0 61 PUSH2 0x00d8 00D3 57 *JUMPI // Stack delta = +2 // Outputs[5] // { // @00BE memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @00C7 memory[0x00:0x00] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00C7 stack[0] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00CC memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // @00CD stack[1] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // } // Block ends with conditional jump to 0x00d8, if !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_00D4: // Incoming jump from 0x00D3, if not !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[2] // { // @00D4 returndata.length // @00D7 memory[0x00:0x00 + returndata.length] // } 00D4 3D RETURNDATASIZE 00D5 60 PUSH1 0x00 00D7 F3 *RETURN // Stack delta = +0 // Outputs[1] { @00D7 return memory[0x00:0x00 + returndata.length]; } // Block terminates label_00D8: // Incoming jump from 0x00D3, if !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[2] // { // @00D9 returndata.length // @00DC memory[0x00:0x00 + returndata.length] // } 00D8 5B JUMPDEST 00D9 3D RETURNDATASIZE 00DA 60 PUSH1 0x00 00DC FD *REVERT // Stack delta = +0 // Outputs[1] { @00DC revert(memory[0x00:0x00 + returndata.length]); } // Block terminates 00DD 5B JUMPDEST 00DE 60 PUSH1 0x60 00E0 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00F5 84 DUP5 00F6 16 AND 00F7 3B EXTCODESIZE 00F8 61 PUSH2 0x0188 00FB 57 *JUMPI 00FC 60 PUSH1 0x40 00FE 51 MLOAD 00FF 7F PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0120 81 DUP2 0121 52 MSTORE 0122 60 PUSH1 0x20 0124 60 PUSH1 0x04 0126 82 DUP3 0127 01 ADD 0128 52 MSTORE 0129 60 PUSH1 0x26 012B 60 PUSH1 0x24 012D 82 DUP3 012E 01 ADD 012F 52 MSTORE 0130 7F PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f 0151 60 PUSH1 0x44 0153 82 DUP3 0154 01 ADD 0155 52 MSTORE 0156 7F PUSH32 0x6e74726163740000000000000000000000000000000000000000000000000000 0177 60 PUSH1 0x64 0179 82 DUP3 017A 01 ADD 017B 52 MSTORE 017C 60 PUSH1 0x84 017E 01 ADD 017F 5B JUMPDEST 0180 60 PUSH1 0x40 0182 51 MLOAD 0183 80 DUP1 0184 91 SWAP2 0185 03 SUB 0186 90 SWAP1 0187 FD *REVERT 0188 5B JUMPDEST 0189 60 PUSH1 0x00 018B 80 DUP1 018C 85 DUP6 018D 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff 01A2 16 AND 01A3 85 DUP6 01A4 60 PUSH1 0x40 01A6 51 MLOAD 01A7 61 PUSH2 0x01b0 01AA 91 SWAP2 01AB 90 SWAP1 01AC 61 PUSH2 0x028d 01AF 56 *JUMP 01B0 5B JUMPDEST 01B1 60 PUSH1 0x00 01B3 60 PUSH1 0x40 01B5 51 MLOAD 01B6 80 DUP1 01B7 83 DUP4 01B8 03 SUB 01B9 81 DUP2 01BA 85 DUP6 01BB 5A GAS 01BC F4 DELEGATECALL 01BD 91 SWAP2 01BE 50 POP 01BF 50 POP 01C0 3D RETURNDATASIZE 01C1 80 DUP1 01C2 60 PUSH1 0x00 01C4 81 DUP2 01C5 14 EQ 01C6 61 PUSH2 0x01eb 01C9 57 *JUMPI 01CA 60 PUSH1 0x40 01CC 51 MLOAD 01CD 91 SWAP2 01CE 50 POP 01CF 60 PUSH1 0x1f 01D1 19 NOT 01D2 60 PUSH1 0x3f 01D4 3D RETURNDATASIZE 01D5 01 ADD 01D6 16 AND 01D7 82 DUP3 01D8 01 ADD 01D9 60 PUSH1 0x40 01DB 52 MSTORE 01DC 3D RETURNDATASIZE 01DD 82 DUP3 01DE 52 MSTORE 01DF 3D RETURNDATASIZE 01E0 60 PUSH1 0x00 01E2 60 PUSH1 0x20 01E4 84 DUP5 01E5 01 ADD 01E6 3E RETURNDATACOPY 01E7 61 PUSH2 0x01f0 01EA 56 *JUMP 01EB 5B JUMPDEST 01EC 60 PUSH1 0x60 01EE 91 SWAP2 01EF 50 POP 01F0 5B JUMPDEST 01F1 50 POP 01F2 91 SWAP2 01F3 50 POP 01F4 91 SWAP2 01F5 50 POP 01F6 61 PUSH2 0x0200 01F9 82 DUP3 01FA 82 DUP3 01FB 86 DUP7 01FC 61 PUSH2 0x020a 01FF 56 *JUMP 0200 5B JUMPDEST 0201 96 SWAP7 0202 95 SWAP6 0203 50 POP 0204 50 POP 0205 50 POP 0206 50 POP 0207 50 POP 0208 50 POP 0209 56 *JUMP 020A 5B JUMPDEST 020B 60 PUSH1 0x60 020D 83 DUP4 020E 15 ISZERO 020F 61 PUSH2 0x0219 0212 57 *JUMPI 0213 50 POP 0214 81 DUP2 0215 61 PUSH2 0x004e 0218 56 *JUMP 0219 5B JUMPDEST 021A 82 DUP3 021B 51 MLOAD 021C 15 ISZERO 021D 61 PUSH2 0x0229 0220 57 *JUMPI 0221 82 DUP3 0222 51 MLOAD 0223 80 DUP1 0224 84 DUP5 0225 60 PUSH1 0x20 0227 01 ADD 0228 FD *REVERT 0229 5B JUMPDEST 022A 81 DUP2 022B 60 PUSH1 0x40 022D 51 MLOAD 022E 7F PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 024F 81 DUP2 0250 52 MSTORE 0251 60 PUSH1 0x04 0253 01 ADD 0254 61 PUSH2 0x017f 0257 91 SWAP2 0258 90 SWAP1 0259 61 PUSH2 0x02a9 025C 56 *JUMP 025D 5B JUMPDEST 025E 60 PUSH1 0x00 0260 5B JUMPDEST 0261 83 DUP4 0262 81 DUP2 0263 10 LT 0264 15 ISZERO 0265 61 PUSH2 0x0278 0268 57 *JUMPI 0269 81 DUP2 026A 81 DUP2 026B 01 ADD 026C 51 MLOAD 026D 83 DUP4 026E 82 DUP3 026F 01 ADD 0270 52 MSTORE 0271 60 PUSH1 0x20 0273 01 ADD 0274 61 PUSH2 0x0260 0277 56 *JUMP 0278 5B JUMPDEST 0279 83 DUP4 027A 81 DUP2 027B 11 GT 027C 15 ISZERO 027D 61 PUSH2 0x0287 0280 57 *JUMPI 0281 60 PUSH1 0x00 0283 84 DUP5 0284 84 DUP5 0285 01 ADD 0286 52 MSTORE 0287 5B JUMPDEST 0288 50 POP 0289 50 POP 028A 50 POP 028B 50 POP 028C 56 *JUMP 028D 5B JUMPDEST 028E 60 PUSH1 0x00 0290 82 DUP3 0291 51 MLOAD 0292 61 PUSH2 0x029f 0295 81 DUP2 0296 84 DUP5 0297 60 PUSH1 0x20 0299 87 DUP8 029A 01 ADD 029B 61 PUSH2 0x025d 029E 56 *JUMP 029F 5B JUMPDEST 02A0 91 SWAP2 02A1 90 SWAP1 02A2 91 SWAP2 02A3 01 ADD 02A4 92 SWAP3 02A5 91 SWAP2 02A6 50 POP 02A7 50 POP 02A8 56 *JUMP 02A9 5B JUMPDEST 02AA 60 PUSH1 0x20 02AC 81 DUP2 02AD 52 MSTORE 02AE 60 PUSH1 0x00 02B0 82 DUP3 02B1 51 MLOAD 02B2 80 DUP1 02B3 60 PUSH1 0x20 02B5 84 DUP5 02B6 01 ADD 02B7 52 MSTORE 02B8 61 PUSH2 0x02c8 02BB 81 DUP2 02BC 60 PUSH1 0x40 02BE 85 DUP6 02BF 01 ADD 02C0 60 PUSH1 0x20 02C2 87 DUP8 02C3 01 ADD 02C4 61 PUSH2 0x025d 02C7 56 *JUMP 02C8 5B JUMPDEST 02C9 60 PUSH1 0x1f 02CB 01 ADD 02CC 7F PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 02ED 16 AND 02EE 91 SWAP2 02EF 90 SWAP1 02F0 91 SWAP2 02F1 01 ADD 02F2 60 PUSH1 0x40 02F4 01 ADD 02F5 92 SWAP3 02F6 91 SWAP2 02F7 50 POP 02F8 50 POP 02F9 56 *JUMP 02FA FE *ASSERT 02FB 41 COINBASE 02FC 64 PUSH5 0x6472657373 0302 3A GASPRICE 0303 20 SHA3 0304 6C PUSH13 0x6f772d6c6576656c2064656c65 0312 67 PUSH8 0x6174652063616c6c 031B 20 SHA3 031C 66 PUSH7 0x61696c6564a264 0324 69 PUSH10 0x70667358221220491ab9 032F 67 PUSH8 0x5594191f3f568c41 0338 50 POP 0339 62 PUSH3 0xa5981b 033D D4 D4 033E 8B DUP12 033F FC FC 0340 A0 LOG0 0341 2A 2A 0342 E9 E9 0343 07 SMOD 0344 58 PC 0345 29 29 0346 07 SMOD 0347 F4 DELEGATECALL 0348 FA STATICCALL 0349 76 PUSH23 0x6a1864736f6c634300080a0033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]