contract Contract {
function main() {
memory[0x40:0x60] = 0x80;
var var0 = msg.value;
if (var0) { revert(memory[0x00:0x00]); }
if (msg.data.length < 0x04) { revert(memory[0x00:0x00]); }
var0 = msg.data[0x00:0x20] >> 0xe0;
if (var0 == 0x0900f010) {
// Dispatch table entry for
upgrade(address)
var var1 = 0x0093;
var var2 = 0x04;
var var3 = msg.data.length - var2;
if (var3 < 0x20) { revert(memory[0x00:0x00]); }
upgrade(var2, var3);
stop();
} else if (var0 == 0x445df0ac) {
// Dispatch table entry for
last_completed_migration()
var1 = 0x009d;
var2 =
last_completed_migration();
var temp0 = memory[0x40:0x60];
memory[temp0:temp0 + 0x20] = var2;
var temp1 = memory[0x40:0x60];
return memory[temp1:temp1 + (temp0 + 0x20) - temp1];
} else if (var0 == 0x8da5cb5b) {
// Dispatch table entry for
owner()
var1 = 0x00bb;
var2 =
owner();
var temp2 = memory[0x40:0x60];
memory[temp2:temp2 + 0x20] = var2 & 0xffffffffffffffffffffffffffffffffffffffff;
var temp3 = memory[0x40:0x60];
return memory[temp3:temp3 + (temp2 + 0x20) - temp3];
} else if (var0 == 0xfdacd576) {
// Dispatch table entry for
setCompleted(uint256)
var1 = 0x0129;
var2 = 0x04;
var3 = msg.data.length - var2;
if (var3 < 0x20) { revert(memory[0x00:0x00]); }
setCompleted(var2, var3);
stop();
} else { revert(memory[0x00:0x00]); }
}
function upgrade(var arg0, var arg1) {
arg0 = msg.data[arg0:arg0 + 0x20] & 0xffffffffffffffffffffffffffffffffffffffff;
if (msg.sender != storage[0x00] & 0xffffffffffffffffffffffffffffffffffffffff) {
label_01F4:
return;
} else {
arg1 = arg0;
var var0 = arg1 & 0xffffffffffffffffffffffffffffffffffffffff;
var var1 = 0xfdacd576;
var temp0 = memory[0x40:0x60];
memory[temp0:temp0 + 0x20] = (var1 & 0xffffffff) << 0xe0;
var temp1 = temp0 + 0x04;
memory[temp1:temp1 + 0x20] = storage[0x01];
var var2 = temp1 + 0x20;
var var3 = 0x00;
var var4 = memory[0x40:0x60];
var var5 = var2 - var4;
var var6 = var4;
var var7 = 0x00;
var var8 = var0;
var var9 = !address(var8).code.length;
if (var9) { revert(memory[0x00:0x00]); }
var temp2;
temp2, memory[var4:var4 + var3] = address(var8).call.gas(msg.gas).value(var7)(memory[var6:var6 + var5]);
var3 = !temp2;
if (!var3) { goto label_01F4; }
var temp3 = returndata.length;
memory[0x00:0x00 + temp3] = returndata[0x00:0x00 + temp3];
revert(memory[0x00:0x00 + returndata.length]);
}
}
function setCompleted(var arg0, var arg1) {
arg0 = msg.data[arg0:arg0 + 0x20];
if (msg.sender != storage[0x00] & 0xffffffffffffffffffffffffffffffffffffffff) { return; }
storage[0x01] = arg0;
}
function last_completed_migration() returns (var r0) { return storage[0x01]; }
function owner() returns (var r0) { return storage[0x00] & 0xffffffffffffffffffffffffffffffffffffffff; }
}
label_0000:
0000 60 PUSH1 0x80
0002 60 PUSH1 0x40
0004 52 MSTORE
0005 34 CALLVALUE
0006 80 DUP1
0007 15 ISZERO
0008 61 PUSH2 0x0010
000B 57 *JUMPI
label_000C:
000C 60 PUSH1 0x00
000E 80 DUP1
000F FD *REVERT
label_0010:
0010 5B JUMPDEST
0011 50 POP
0012 60 PUSH1 0x04
0014 36 CALLDATASIZE
0015 10 LT
0016 61 PUSH2 0x004c
0019 57 *JUMPI
label_001A:
001A 60 PUSH1 0x00
001C 35 CALLDATALOAD
001D 60 PUSH1 0xe0
001F 1C SHR
0020 80 DUP1
0021 63 PUSH4 0x0900f010
0026 14 EQ
0027 61 PUSH2 0x0051
002A 57 *JUMPI
label_002B:
002B 80 DUP1
002C 63 PUSH4 0x445df0ac
0031 14 EQ
0032 61 PUSH2 0x0095
0035 57 *JUMPI
label_0036:
0036 80 DUP1
0037 63 PUSH4 0x8da5cb5b
003C 14 EQ
003D 61 PUSH2 0x00b3
0040 57 *JUMPI
label_0041:
0041 80 DUP1
0042 63 PUSH4 0xfdacd576
0047 14 EQ
0048 61 PUSH2 0x00fd
004B 57 *JUMPI
label_004C:
004C 5B JUMPDEST
004D 60 PUSH1 0x00
004F 80 DUP1
0050 FD *REVERT
label_0051:
0051 5B JUMPDEST
0052 61 PUSH2 0x0093
0055 60 PUSH1 0x04
0057 80 DUP1
0058 36 CALLDATASIZE
0059 03 SUB
005A 60 PUSH1 0x20
005C 81 DUP2
005D 10 LT
005E 15 ISZERO
005F 61 PUSH2 0x0067
0062 57 *JUMPI
label_0063:
0063 60 PUSH1 0x00
0065 80 DUP1
0066 FD *REVERT
label_0067:
0067 5B JUMPDEST
0068 81 DUP2
0069 01 ADD
006A 90 SWAP1
006B 80 DUP1
006C 80 DUP1
006D 35 CALLDATALOAD
006E 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0083 16 AND
0084 90 SWAP1
0085 60 PUSH1 0x20
0087 01 ADD
0088 90 SWAP1
0089 92 SWAP3
008A 91 SWAP2
008B 90 SWAP1
008C 50 POP
008D 50 POP
008E 50 POP
008F 61 PUSH2 0x012b
0092 56 *JUMP
label_0093:
0093 5B JUMPDEST
0094 00 *STOP
label_0095:
0095 5B JUMPDEST
0096 61 PUSH2 0x009d
0099 61 PUSH2 0x01f7
009C 56 *JUMP
label_009D:
009D 5B JUMPDEST
009E 60 PUSH1 0x40
00A0 51 MLOAD
00A1 80 DUP1
00A2 82 DUP3
00A3 81 DUP2
00A4 52 MSTORE
00A5 60 PUSH1 0x20
00A7 01 ADD
00A8 91 SWAP2
00A9 50 POP
00AA 50 POP
00AB 60 PUSH1 0x40
00AD 51 MLOAD
00AE 80 DUP1
00AF 91 SWAP2
00B0 03 SUB
00B1 90 SWAP1
00B2 F3 *RETURN
label_00B3:
00B3 5B JUMPDEST
00B4 61 PUSH2 0x00bb
00B7 61 PUSH2 0x01fd
00BA 56 *JUMP
label_00BB:
00BB 5B JUMPDEST
00BC 60 PUSH1 0x40
00BE 51 MLOAD
00BF 80 DUP1
00C0 82 DUP3
00C1 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00D6 16 AND
00D7 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00EC 16 AND
00ED 81 DUP2
00EE 52 MSTORE
00EF 60 PUSH1 0x20
00F1 01 ADD
00F2 91 SWAP2
00F3 50 POP
00F4 50 POP
00F5 60 PUSH1 0x40
00F7 51 MLOAD
00F8 80 DUP1
00F9 91 SWAP2
00FA 03 SUB
00FB 90 SWAP1
00FC F3 *RETURN
label_00FD:
00FD 5B JUMPDEST
00FE 61 PUSH2 0x0129
0101 60 PUSH1 0x04
0103 80 DUP1
0104 36 CALLDATASIZE
0105 03 SUB
0106 60 PUSH1 0x20
0108 81 DUP2
0109 10 LT
010A 15 ISZERO
010B 61 PUSH2 0x0113
010E 57 *JUMPI
label_010F:
010F 60 PUSH1 0x00
0111 80 DUP1
0112 FD *REVERT
label_0113:
0113 5B JUMPDEST
0114 81 DUP2
0115 01 ADD
0116 90 SWAP1
0117 80 DUP1
0118 80 DUP1
0119 35 CALLDATALOAD
011A 90 SWAP1
011B 60 PUSH1 0x20
011D 01 ADD
011E 90 SWAP1
011F 92 SWAP3
0120 91 SWAP2
0121 90 SWAP1
0122 50 POP
0123 50 POP
0124 50 POP
0125 61 PUSH2 0x0222
0128 56 *JUMP
label_0129:
0129 5B JUMPDEST
012A 00 *STOP
label_012B:
012B 5B JUMPDEST
012C 60 PUSH1 0x00
012E 80 DUP1
012F 90 SWAP1
0130 54 SLOAD
0131 90 SWAP1
0132 61 PUSH2 0x0100
0135 0A EXP
0136 90 SWAP1
0137 04 DIV
0138 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
014D 16 AND
014E 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0163 16 AND
0164 33 CALLER
0165 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
017A 16 AND
017B 14 EQ
017C 15 ISZERO
017D 61 PUSH2 0x01f4
0180 57 *JUMPI
label_0181:
0181 60 PUSH1 0x00
0183 81 DUP2
0184 90 SWAP1
0185 50 POP
0186 80 DUP1
0187 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
019C 16 AND
019D 63 PUSH4 0xfdacd576
01A2 60 PUSH1 0x01
01A4 54 SLOAD
01A5 60 PUSH1 0x40
01A7 51 MLOAD
01A8 82 DUP3
01A9 63 PUSH4 0xffffffff
01AE 16 AND
01AF 60 PUSH1 0xe0
01B1 1B SHL
01B2 81 DUP2
01B3 52 MSTORE
01B4 60 PUSH1 0x04
01B6 01 ADD
01B7 80 DUP1
01B8 82 DUP3
01B9 81 DUP2
01BA 52 MSTORE
01BB 60 PUSH1 0x20
01BD 01 ADD
01BE 91 SWAP2
01BF 50 POP
01C0 50 POP
01C1 60 PUSH1 0x00
01C3 60 PUSH1 0x40
01C5 51 MLOAD
01C6 80 DUP1
01C7 83 DUP4
01C8 03 SUB
01C9 81 DUP2
01CA 60 PUSH1 0x00
01CC 87 DUP8
01CD 80 DUP1
01CE 3B EXTCODESIZE
01CF 15 ISZERO
01D0 80 DUP1
01D1 15 ISZERO
01D2 61 PUSH2 0x01da
01D5 57 *JUMPI
label_01D6:
01D6 60 PUSH1 0x00
01D8 80 DUP1
01D9 FD *REVERT
label_01DA:
01DA 5B JUMPDEST
01DB 50 POP
01DC 5A GAS
01DD F1 CALL
01DE 15 ISZERO
01DF 80 DUP1
01E0 15 ISZERO
01E1 61 PUSH2 0x01ee
01E4 57 *JUMPI
label_01E5:
01E5 3D RETURNDATASIZE
01E6 60 PUSH1 0x00
01E8 80 DUP1
01E9 3E RETURNDATACOPY
01EA 3D RETURNDATASIZE
01EB 60 PUSH1 0x00
01ED FD *REVERT
label_01EE:
01EE 5B JUMPDEST
01EF 50 POP
01F0 50 POP
01F1 50 POP
01F2 50 POP
01F3 50 POP
label_01F4:
01F4 5B JUMPDEST
01F5 50 POP
01F6 56 *JUMP
label_01F7:
01F7 5B JUMPDEST
01F8 60 PUSH1 0x01
01FA 54 SLOAD
01FB 81 DUP2
01FC 56 *JUMP
label_01FD:
01FD 5B JUMPDEST
01FE 60 PUSH1 0x00
0200 80 DUP1
0201 90 SWAP1
0202 54 SLOAD
0203 90 SWAP1
0204 61 PUSH2 0x0100
0207 0A EXP
0208 90 SWAP1
0209 04 DIV
020A 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
021F 16 AND
0220 81 DUP2
0221 56 *JUMP
label_0222:
0222 5B JUMPDEST
0223 60 PUSH1 0x00
0225 80 DUP1
0226 90 SWAP1
0227 54 SLOAD
0228 90 SWAP1
0229 61 PUSH2 0x0100
022C 0A EXP
022D 90 SWAP1
022E 04 DIV
022F 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0244 16 AND
0245 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
025A 16 AND
025B 33 CALLER
025C 73 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0271 16 AND
0272 14 EQ
0273 15 ISZERO
0274 61 PUSH2 0x027f
0277 57 *JUMPI
label_0278:
0278 80 DUP1
0279 60 PUSH1 0x01
027B 81 DUP2
027C 90 SWAP1
027D 55 SSTORE
027E 50 POP
027F 5B JUMPDEST
0280 50 POP
0281 56 *JUMP
0282 FE *ASSERT
0283 A2 LOG2
0284 65 PUSH6 0x627a7a723158
028B 20 SHA3
028C 1E 1E
028D D3 D3
028E 04 DIV
028F E7 E7
0290 80 DUP1
0291 AF AF
0292 8D DUP14
0293 A8 A8
0294 36 CALLDATASIZE
0295 52 MSTORE
0296 7C PUSH29 0xc1a47eaac328e5d040d802eda26b309b67d939dd5764736f6c63430005
02B4 11 GT
02B5 00 *STOP
02B6 32 ORIGIN