Online Solidity Decompiler

« Decompile another contract

Address

0x790b2cf29ed4f310bf7641f013c65d4560d28371 [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 address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00A4 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 0x01fc 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 0x0218 01CB 56 *JUMP 01CC 5B JUMPDEST 01CD 60 PUSH1 0x00 01CF 5B JUMPDEST 01D0 83 DUP4 01D1 81 DUP2 01D2 10 LT 01D3 15 ISZERO 01D4 61 PUSH2 0x01e7 01D7 57 *JUMPI 01D8 81 DUP2 01D9 81 DUP2 01DA 01 ADD 01DB 51 MLOAD 01DC 83 DUP4 01DD 82 DUP3 01DE 01 ADD 01DF 52 MSTORE 01E0 60 PUSH1 0x20 01E2 01 ADD 01E3 61 PUSH2 0x01cf 01E6 56 *JUMP 01E7 5B JUMPDEST 01E8 83 DUP4 01E9 81 DUP2 01EA 11 GT 01EB 15 ISZERO 01EC 61 PUSH2 0x01f6 01EF 57 *JUMPI 01F0 60 PUSH1 0x00 01F2 84 DUP5 01F3 84 DUP5 01F4 01 ADD 01F5 52 MSTORE 01F6 5B JUMPDEST 01F7 50 POP 01F8 50 POP 01F9 50 POP 01FA 50 POP 01FB 56 *JUMP 01FC 5B JUMPDEST 01FD 60 PUSH1 0x00 01FF 82 DUP3 0200 51 MLOAD 0201 61 PUSH2 0x020e 0204 81 DUP2 0205 84 DUP5 0206 60 PUSH1 0x20 0208 87 DUP8 0209 01 ADD 020A 61 PUSH2 0x01cc 020D 56 *JUMP 020E 5B JUMPDEST 020F 91 SWAP2 0210 90 SWAP1 0211 91 SWAP2 0212 01 ADD 0213 92 SWAP3 0214 91 SWAP2 0215 50 POP 0216 50 POP 0217 56 *JUMP 0218 5B JUMPDEST 0219 60 PUSH1 0x20 021B 81 DUP2 021C 52 MSTORE 021D 60 PUSH1 0x00 021F 82 DUP3 0220 51 MLOAD 0221 80 DUP1 0222 60 PUSH1 0x20 0224 84 DUP5 0225 01 ADD 0226 52 MSTORE 0227 61 PUSH2 0x0237 022A 81 DUP2 022B 60 PUSH1 0x40 022D 85 DUP6 022E 01 ADD 022F 60 PUSH1 0x20 0231 87 DUP8 0232 01 ADD 0233 61 PUSH2 0x01cc 0236 56 *JUMP 0237 5B JUMPDEST 0238 60 PUSH1 0x1f 023A 01 ADD 023B 60 PUSH1 0x1f 023D 19 NOT 023E 16 AND 023F 91 SWAP2 0240 90 SWAP1 0241 91 SWAP2 0242 01 ADD 0243 60 PUSH1 0x40 0245 01 ADD 0246 92 SWAP3 0247 91 SWAP2 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 0x7066735822122041f64d 0280 2F 2F 0281 F9 F9 0282 08 ADDMOD 0283 C9 C9 0284 98 SWAP9 0285 39 CODECOPY 0286 23 23 0287 01 ADD 0288 7E PUSH31 0xd36c949dd92697a1f359295e2ea2f809da86127664736f6c63430008090033
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]