Online Solidity Decompiler

« Decompile another contract

Address

0x122c8d08b982419531b19cce198b63a8d9068eb4 [etherscan.io | etherchain.org]

Public Methods

No public methods detected.

Internal Methods

func_0067() 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_0067(); 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_0067(); goto label_0022; } } function func_0067() 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 0x0067 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 0x0067, returns to 0x0022 label_0022: // Incoming return from call to 0x0067 at 0x0021 // Incoming return from call to 0x0067 at 0x0021 0022 5B JUMPDEST 0023 61 PUSH2 0x009f 0026 56 *JUMP // Stack delta = +0 // Block ends with unconditional jump to 0x009f 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 0x0268 0046 60 PUSH1 0x27 0048 91 SWAP2 0049 39 CODECOPY 004A 61 PUSH2 0x00c3 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 60 PUSH1 0x01 0058 60 PUSH1 0x01 005A 60 PUSH1 0xa0 005C 1B SHL 005D 03 SUB 005E 16 AND 005F 3B EXTCODESIZE 0060 15 ISZERO 0061 15 ISZERO 0062 90 SWAP1 0063 56 *JUMP 0064 5B JUMPDEST 0065 90 SWAP1 0066 56 *JUMP label_0067: // Incoming call from 0x0021, returns to 0x0022 // Incoming call from 0x0021, returns to 0x0022 // Inputs[1] { @008E storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] } 0067 5B JUMPDEST 0068 60 PUSH1 0x00 006A 61 PUSH2 0x009a 006D 7F PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 008E 54 SLOAD 008F 60 PUSH1 0x01 0091 60 PUSH1 0x01 0093 60 PUSH1 0xa0 0095 1B SHL 0096 03 SUB 0097 16 AND 0098 90 SWAP1 0099 56 *JUMP // Stack delta = +2 // Outputs[2] // { // @0068 stack[0] = 0x00 // @0098 stack[1] = (0x01 << 0xa0) - 0x01 & storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] // } // Block ends with unconditional jump to 0x009a label_009A: // Incoming jump from 0x0099 // Inputs[3] // { // @009B stack[-2] // @009B stack[-1] // @009D stack[-3] // } 009A 5B JUMPDEST 009B 90 SWAP1 009C 50 POP 009D 90 SWAP1 009E 56 *JUMP // Stack delta = -2 // Outputs[1] { @009D stack[-3] = stack[-1] } // Block ends with unconditional jump to stack[-3] label_009F: // Incoming jump from 0x0026 // Inputs[9] // { // @00A0 msg.data.length // @00A4 msg.data[0x00:0x00 + msg.data.length] // @00A8 msg.data.length // @00AB stack[-1] // @00AC msg.gas // @00AD memory[0x00:0x00 + msg.data.length] // @00AD address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00AE returndata.length // @00B2 returndata[0x00:0x00 + returndata.length] // } 009F 5B JUMPDEST 00A0 36 CALLDATASIZE 00A1 60 PUSH1 0x00 00A3 80 DUP1 00A4 37 CALLDATACOPY 00A5 60 PUSH1 0x00 00A7 80 DUP1 00A8 36 CALLDATASIZE 00A9 60 PUSH1 0x00 00AB 84 DUP5 00AC 5A GAS 00AD F4 DELEGATECALL 00AE 3D RETURNDATASIZE 00AF 60 PUSH1 0x00 00B1 80 DUP1 00B2 3E RETURNDATACOPY 00B3 80 DUP1 00B4 80 DUP1 00B5 15 ISZERO 00B6 61 PUSH2 0x00be 00B9 57 *JUMPI // Stack delta = +2 // Outputs[5] // { // @00A4 memory[0x00:0x00 + msg.data.length] = msg.data[0x00:0x00 + msg.data.length] // @00AD memory[0x00:0x00] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00AD stack[0] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // @00B2 memory[0x00:0x00 + returndata.length] = returndata[0x00:0x00 + returndata.length] // @00B3 stack[1] = address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // } // Block ends with conditional jump to 0x00be, if !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) label_00BA: // Incoming jump from 0x00B9, if not !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[2] // { // @00BA returndata.length // @00BD memory[0x00:0x00 + returndata.length] // } 00BA 3D RETURNDATASIZE 00BB 60 PUSH1 0x00 00BD F3 *RETURN // Stack delta = +0 // Outputs[1] { @00BD return memory[0x00:0x00 + returndata.length]; } // Block terminates label_00BE: // Incoming jump from 0x00B9, if !address(stack[-1]).delegatecall.gas(msg.gas)(memory[0x00:0x00 + msg.data.length]) // Inputs[2] // { // @00BF returndata.length // @00C2 memory[0x00:0x00 + returndata.length] // } 00BE 5B JUMPDEST 00BF 3D RETURNDATASIZE 00C0 60 PUSH1 0x00 00C2 FD *REVERT // Stack delta = +0 // Outputs[1] { @00C2 revert(memory[0x00:0x00 + returndata.length]); } // Block terminates 00C3 5B JUMPDEST 00C4 60 PUSH1 0x60 00C6 60 PUSH1 0x00 00C8 80 DUP1 00C9 85 DUP6 00CA 60 PUSH1 0x01 00CC 60 PUSH1 0x01 00CE 60 PUSH1 0xa0 00D0 1B SHL 00D1 03 SUB 00D2 16 AND 00D3 85 DUP6 00D4 60 PUSH1 0x40 00D6 51 MLOAD 00D7 61 PUSH2 0x00e0 00DA 91 SWAP2 00DB 90 SWAP1 00DC 61 PUSH2 0x0218 00DF 56 *JUMP 00E0 5B JUMPDEST 00E1 60 PUSH1 0x00 00E3 60 PUSH1 0x40 00E5 51 MLOAD 00E6 80 DUP1 00E7 83 DUP4 00E8 03 SUB 00E9 81 DUP2 00EA 85 DUP6 00EB 5A GAS 00EC F4 DELEGATECALL 00ED 91 SWAP2 00EE 50 POP 00EF 50 POP 00F0 3D RETURNDATASIZE 00F1 80 DUP1 00F2 60 PUSH1 0x00 00F4 81 DUP2 00F5 14 EQ 00F6 61 PUSH2 0x011b 00F9 57 *JUMPI 00FA 60 PUSH1 0x40 00FC 51 MLOAD 00FD 91 SWAP2 00FE 50 POP 00FF 60 PUSH1 0x1f 0101 19 NOT 0102 60 PUSH1 0x3f 0104 3D RETURNDATASIZE 0105 01 ADD 0106 16 AND 0107 82 DUP3 0108 01 ADD 0109 60 PUSH1 0x40 010B 52 MSTORE 010C 3D RETURNDATASIZE 010D 82 DUP3 010E 52 MSTORE 010F 3D RETURNDATASIZE 0110 60 PUSH1 0x00 0112 60 PUSH1 0x20 0114 84 DUP5 0115 01 ADD 0116 3E RETURNDATACOPY 0117 61 PUSH2 0x0120 011A 56 *JUMP 011B 5B JUMPDEST 011C 60 PUSH1 0x60 011E 91 SWAP2 011F 50 POP 0120 5B JUMPDEST 0121 50 POP 0122 91 SWAP2 0123 50 POP 0124 91 SWAP2 0125 50 POP 0126 61 PUSH2 0x0131 0129 86 DUP7 012A 83 DUP4 012B 83 DUP4 012C 87 DUP8 012D 61 PUSH2 0x013b 0130 56 *JUMP 0131 5B JUMPDEST 0132 96 SWAP7 0133 95 SWAP6 0134 50 POP 0135 50 POP 0136 50 POP 0137 50 POP 0138 50 POP 0139 50 POP 013A 56 *JUMP 013B 5B JUMPDEST 013C 60 PUSH1 0x60 013E 83 DUP4 013F 15 ISZERO 0140 61 PUSH2 0x01ac 0143 57 *JUMPI 0144 82 DUP3 0145 51 MLOAD 0146 61 PUSH2 0x01a5 0149 57 *JUMPI 014A 60 PUSH1 0x01 014C 60 PUSH1 0x01 014E 60 PUSH1 0xa0 0150 1B SHL 0151 03 SUB 0152 85 DUP6 0153 16 AND 0154 3B EXTCODESIZE 0155 61 PUSH2 0x01a5 0158 57 *JUMPI 0159 60 PUSH1 0x40 015B 51 MLOAD 015C 62 PUSH3 0x461bcd 0160 60 PUSH1 0xe5 0162 1B SHL 0163 81 DUP2 0164 52 MSTORE 0165 60 PUSH1 0x20 0167 60 PUSH1 0x04 0169 82 DUP3 016A 01 ADD 016B 52 MSTORE 016C 60 PUSH1 0x1d 016E 60 PUSH1 0x24 0170 82 DUP3 0171 01 ADD 0172 52 MSTORE 0173 7F PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 0194 60 PUSH1 0x44 0196 82 DUP3 0197 01 ADD 0198 52 MSTORE 0199 60 PUSH1 0x64 019B 01 ADD 019C 5B JUMPDEST 019D 60 PUSH1 0x40 019F 51 MLOAD 01A0 80 DUP1 01A1 91 SWAP2 01A2 03 SUB 01A3 90 SWAP1 01A4 FD *REVERT 01A5 5B JUMPDEST 01A6 50 POP 01A7 81 DUP2 01A8 61 PUSH2 0x01b6 01AB 56 *JUMP 01AC 5B JUMPDEST 01AD 61 PUSH2 0x01b6 01B0 83 DUP4 01B1 83 DUP4 01B2 61 PUSH2 0x01be 01B5 56 *JUMP 01B6 5B JUMPDEST 01B7 94 SWAP5 01B8 93 SWAP4 01B9 50 POP 01BA 50 POP 01BB 50 POP 01BC 50 POP 01BD 56 *JUMP 01BE 5B JUMPDEST 01BF 81 DUP2 01C0 51 MLOAD 01C1 15 ISZERO 01C2 61 PUSH2 0x01ce 01C5 57 *JUMPI 01C6 81 DUP2 01C7 51 MLOAD 01C8 80 DUP1 01C9 83 DUP4 01CA 60 PUSH1 0x20 01CC 01 ADD 01CD FD *REVERT 01CE 5B JUMPDEST 01CF 80 DUP1 01D0 60 PUSH1 0x40 01D2 51 MLOAD 01D3 62 PUSH3 0x461bcd 01D7 60 PUSH1 0xe5 01D9 1B SHL 01DA 81 DUP2 01DB 52 MSTORE 01DC 60 PUSH1 0x04 01DE 01 ADD 01DF 61 PUSH2 0x019c 01E2 91 SWAP2 01E3 90 SWAP1 01E4 61 PUSH2 0x0234 01E7 56 *JUMP 01E8 5B JUMPDEST 01E9 60 PUSH1 0x00 01EB 5B JUMPDEST 01EC 83 DUP4 01ED 81 DUP2 01EE 10 LT 01EF 15 ISZERO 01F0 61 PUSH2 0x0203 01F3 57 *JUMPI 01F4 81 DUP2 01F5 81 DUP2 01F6 01 ADD 01F7 51 MLOAD 01F8 83 DUP4 01F9 82 DUP3 01FA 01 ADD 01FB 52 MSTORE 01FC 60 PUSH1 0x20 01FE 01 ADD 01FF 61 PUSH2 0x01eb 0202 56 *JUMP 0203 5B JUMPDEST 0204 83 DUP4 0205 81 DUP2 0206 11 GT 0207 15 ISZERO 0208 61 PUSH2 0x0212 020B 57 *JUMPI 020C 60 PUSH1 0x00 020E 84 DUP5 020F 84 DUP5 0210 01 ADD 0211 52 MSTORE 0212 5B JUMPDEST 0213 50 POP 0214 50 POP 0215 50 POP 0216 50 POP 0217 56 *JUMP 0218 5B JUMPDEST 0219 60 PUSH1 0x00 021B 82 DUP3 021C 51 MLOAD 021D 61 PUSH2 0x022a 0220 81 DUP2 0221 84 DUP5 0222 60 PUSH1 0x20 0224 87 DUP8 0225 01 ADD 0226 61 PUSH2 0x01e8 0229 56 *JUMP 022A 5B JUMPDEST 022B 91 SWAP2 022C 90 SWAP1 022D 91 SWAP2 022E 01 ADD 022F 92 SWAP3 0230 91 SWAP2 0231 50 POP 0232 50 POP 0233 56 *JUMP 0234 5B JUMPDEST 0235 60 PUSH1 0x20 0237 81 DUP2 0238 52 MSTORE 0239 60 PUSH1 0x00 023B 82 DUP3 023C 51 MLOAD 023D 80 DUP1 023E 60 PUSH1 0x20 0240 84 DUP5 0241 01 ADD 0242 52 MSTORE 0243 61 PUSH2 0x0253 0246 81 DUP2 0247 60 PUSH1 0x40 0249 85 DUP6 024A 01 ADD 024B 60 PUSH1 0x20 024D 87 DUP8 024E 01 ADD 024F 61 PUSH2 0x01e8 0252 56 *JUMP 0253 5B JUMPDEST 0254 60 PUSH1 0x1f 0256 01 ADD 0257 60 PUSH1 0x1f 0259 19 NOT 025A 16 AND 025B 91 SWAP2 025C 90 SWAP1 025D 91 SWAP2 025E 01 ADD 025F 60 PUSH1 0x40 0261 01 ADD 0262 92 SWAP3 0263 91 SWAP2 0264 50 POP 0265 50 POP 0266 56 *JUMP 0267 FE *ASSERT 0268 41 COINBASE 0269 64 PUSH5 0x6472657373 026F 3A GASPRICE 0270 20 SHA3 0271 6C PUSH13 0x6f772d6c6576656c2064656c65 027F 67 PUSH8 0x6174652063616c6c 0288 20 SHA3 0289 66 PUSH7 0x61696c6564a264 0291 69 PUSH10 0x70667358221220ff8e6f 029C 2D 2D 029D 76 PUSH23 0x1d58b3bd984933269e01a7ff1f70a460b808056daa4cff 02B5 1E 1E 02B6 E8 E8 02B7 AB AB 02B8 69 PUSH10 0x64736f6c634300080900 02C3 33 CALLER
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]