Online Solidity Decompiler

« Decompile another contract

Address

0xbf92a355c73de74969a75258e02a15a2764d4970 [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 0x025e 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 0x01 00C8 60 PUSH1 0x01 00CA 60 PUSH1 0xa0 00CC 1B SHL 00CD 03 SUB 00CE 84 DUP5 00CF 16 AND 00D0 3B EXTCODESIZE 00D1 61 PUSH2 0x0130 00D4 57 *JUMPI 00D5 60 PUSH1 0x40 00D7 51 MLOAD 00D8 62 PUSH3 0x461bcd 00DC 60 PUSH1 0xe5 00DE 1B SHL 00DF 81 DUP2 00E0 52 MSTORE 00E1 60 PUSH1 0x20 00E3 60 PUSH1 0x04 00E5 82 DUP3 00E6 01 ADD 00E7 52 MSTORE 00E8 60 PUSH1 0x26 00EA 60 PUSH1 0x24 00EC 82 DUP3 00ED 01 ADD 00EE 52 MSTORE 00EF 7F PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f 0110 60 PUSH1 0x44 0112 82 DUP3 0113 01 ADD 0114 52 MSTORE 0115 65 PUSH6 0x1b9d1c9858dd 011C 60 PUSH1 0xd2 011E 1B SHL 011F 60 PUSH1 0x64 0121 82 DUP3 0122 01 ADD 0123 52 MSTORE 0124 60 PUSH1 0x84 0126 01 ADD 0127 5B JUMPDEST 0128 60 PUSH1 0x40 012A 51 MLOAD 012B 80 DUP1 012C 91 SWAP2 012D 03 SUB 012E 90 SWAP1 012F FD *REVERT 0130 5B JUMPDEST 0131 60 PUSH1 0x00 0133 80 DUP1 0134 85 DUP6 0135 60 PUSH1 0x01 0137 60 PUSH1 0x01 0139 60 PUSH1 0xa0 013B 1B SHL 013C 03 SUB 013D 16 AND 013E 85 DUP6 013F 60 PUSH1 0x40 0141 51 MLOAD 0142 61 PUSH2 0x014b 0145 91 SWAP2 0146 90 SWAP1 0147 61 PUSH2 0x020e 014A 56 *JUMP 014B 5B JUMPDEST 014C 60 PUSH1 0x00 014E 60 PUSH1 0x40 0150 51 MLOAD 0151 80 DUP1 0152 83 DUP4 0153 03 SUB 0154 81 DUP2 0155 85 DUP6 0156 5A GAS 0157 F4 DELEGATECALL 0158 91 SWAP2 0159 50 POP 015A 50 POP 015B 3D RETURNDATASIZE 015C 80 DUP1 015D 60 PUSH1 0x00 015F 81 DUP2 0160 14 EQ 0161 61 PUSH2 0x0186 0164 57 *JUMPI 0165 60 PUSH1 0x40 0167 51 MLOAD 0168 91 SWAP2 0169 50 POP 016A 60 PUSH1 0x1f 016C 19 NOT 016D 60 PUSH1 0x3f 016F 3D RETURNDATASIZE 0170 01 ADD 0171 16 AND 0172 82 DUP3 0173 01 ADD 0174 60 PUSH1 0x40 0176 52 MSTORE 0177 3D RETURNDATASIZE 0178 82 DUP3 0179 52 MSTORE 017A 3D RETURNDATASIZE 017B 60 PUSH1 0x00 017D 60 PUSH1 0x20 017F 84 DUP5 0180 01 ADD 0181 3E RETURNDATACOPY 0182 61 PUSH2 0x018b 0185 56 *JUMP 0186 5B JUMPDEST 0187 60 PUSH1 0x60 0189 91 SWAP2 018A 50 POP 018B 5B JUMPDEST 018C 50 POP 018D 91 SWAP2 018E 50 POP 018F 91 SWAP2 0190 50 POP 0191 61 PUSH2 0x019b 0194 82 DUP3 0195 82 DUP3 0196 86 DUP7 0197 61 PUSH2 0x01a5 019A 56 *JUMP 019B 5B JUMPDEST 019C 96 SWAP7 019D 95 SWAP6 019E 50 POP 019F 50 POP 01A0 50 POP 01A1 50 POP 01A2 50 POP 01A3 50 POP 01A4 56 *JUMP 01A5 5B JUMPDEST 01A6 60 PUSH1 0x60 01A8 83 DUP4 01A9 15 ISZERO 01AA 61 PUSH2 0x01b4 01AD 57 *JUMPI 01AE 50 POP 01AF 81 DUP2 01B0 61 PUSH2 0x004e 01B3 56 *JUMP 01B4 5B JUMPDEST 01B5 82 DUP3 01B6 51 MLOAD 01B7 15 ISZERO 01B8 61 PUSH2 0x01c4 01BB 57 *JUMPI 01BC 82 DUP3 01BD 51 MLOAD 01BE 80 DUP1 01BF 84 DUP5 01C0 60 PUSH1 0x20 01C2 01 ADD 01C3 FD *REVERT 01C4 5B JUMPDEST 01C5 81 DUP2 01C6 60 PUSH1 0x40 01C8 51 MLOAD 01C9 62 PUSH3 0x461bcd 01CD 60 PUSH1 0xe5 01CF 1B SHL 01D0 81 DUP2 01D1 52 MSTORE 01D2 60 PUSH1 0x04 01D4 01 ADD 01D5 61 PUSH2 0x0127 01D8 91 SWAP2 01D9 90 SWAP1 01DA 61 PUSH2 0x022a 01DD 56 *JUMP 01DE 5B JUMPDEST 01DF 60 PUSH1 0x00 01E1 5B JUMPDEST 01E2 83 DUP4 01E3 81 DUP2 01E4 10 LT 01E5 15 ISZERO 01E6 61 PUSH2 0x01f9 01E9 57 *JUMPI 01EA 81 DUP2 01EB 81 DUP2 01EC 01 ADD 01ED 51 MLOAD 01EE 83 DUP4 01EF 82 DUP3 01F0 01 ADD 01F1 52 MSTORE 01F2 60 PUSH1 0x20 01F4 01 ADD 01F5 61 PUSH2 0x01e1 01F8 56 *JUMP 01F9 5B JUMPDEST 01FA 83 DUP4 01FB 81 DUP2 01FC 11 GT 01FD 15 ISZERO 01FE 61 PUSH2 0x0208 0201 57 *JUMPI 0202 60 PUSH1 0x00 0204 84 DUP5 0205 84 DUP5 0206 01 ADD 0207 52 MSTORE 0208 5B JUMPDEST 0209 50 POP 020A 50 POP 020B 50 POP 020C 50 POP 020D 56 *JUMP 020E 5B JUMPDEST 020F 60 PUSH1 0x00 0211 82 DUP3 0212 51 MLOAD 0213 61 PUSH2 0x0220 0216 81 DUP2 0217 84 DUP5 0218 60 PUSH1 0x20 021A 87 DUP8 021B 01 ADD 021C 61 PUSH2 0x01de 021F 56 *JUMP 0220 5B JUMPDEST 0221 91 SWAP2 0222 90 SWAP1 0223 91 SWAP2 0224 01 ADD 0225 92 SWAP3 0226 91 SWAP2 0227 50 POP 0228 50 POP 0229 56 *JUMP 022A 5B JUMPDEST 022B 60 PUSH1 0x20 022D 81 DUP2 022E 52 MSTORE 022F 60 PUSH1 0x00 0231 82 DUP3 0232 51 MLOAD 0233 80 DUP1 0234 60 PUSH1 0x20 0236 84 DUP5 0237 01 ADD 0238 52 MSTORE 0239 61 PUSH2 0x0249 023C 81 DUP2 023D 60 PUSH1 0x40 023F 85 DUP6 0240 01 ADD 0241 60 PUSH1 0x20 0243 87 DUP8 0244 01 ADD 0245 61 PUSH2 0x01de 0248 56 *JUMP 0249 5B JUMPDEST 024A 60 PUSH1 0x1f 024C 01 ADD 024D 60 PUSH1 0x1f 024F 19 NOT 0250 16 AND 0251 91 SWAP2 0252 90 SWAP1 0253 91 SWAP2 0254 01 ADD 0255 60 PUSH1 0x40 0257 01 ADD 0258 92 SWAP3 0259 91 SWAP2 025A 50 POP 025B 50 POP 025C 56 *JUMP 025D FE *ASSERT 025E 41 COINBASE 025F 64 PUSH5 0x6472657373 0265 3A GASPRICE 0266 20 SHA3 0267 6C PUSH13 0x6f772d6c6576656c2064656c65 0275 67 PUSH8 0x6174652063616c6c 027E 20 SHA3 027F 66 PUSH7 0x61696c6564a264 0287 69 PUSH10 0x70667358221220d134c7 0292 8C DUP13 0293 C3 C3 0294 E0 E0 0295 C0 C0 0296 BD BD 0297 02 MUL 0298 75 PUSH22 0x4ff27110423c9dbbb3d8e1f278192ba03225181f6d0b 02AF 64 PUSH5 0x736f6c6343 02B5 00 *STOP 02B6 08 ADDMOD 02B7 0B SIGNEXTEND 02B8 00 *STOP 02B9 33 CALLER
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]