contract Contract {
    function main() {
        memory[0x40:0x60] = 0x80;
    
        if (msg.data.length >= 0x04) {
            var0 = msg.data[0x00:0x20] >> 0xe0;
        
            if (var0 != 0x5c60da1b) { goto label_002B; }
        
            var1 = msg.value;
        
            if (var1) { revert(memory[0x00:0x00]); }
        
            var1 = 0x43;
            var1 = 
func_0097();
            var temp3 = memory[0x40:0x60];
            memory[temp3:temp3 + 0x20] = var1 & (0x01 << 0xa0) - 0x01;
            var temp4 = memory[0x40:0x60];
            return memory[temp4:temp4 + (temp3 + 0x20) - temp4];
        } else if (msg.data.length) {
        label_002B:
            var var0 = 0x29;
        
        label_005F:
            var var1 = 0x95;
            var var2 = storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01;
            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 = 0x29;
            goto label_005F;
        }
    }
    
    function func_0097() returns (var r0) {
        var var0 = 0x00;
        var var1 = storage[0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc] & (0x01 << 0xa0) - 0x01;
        return var1;
    }
}
label_0000:
	0000    60  PUSH1 0x80
	0002    60  PUSH1 0x40
	0004    52  MSTORE
	0005    60  PUSH1 0x04
	0007    36  CALLDATASIZE
	0008    10  LT
	0009    60  PUSH1 0x1f
	000B    57  *JUMPI
label_000C:
	000C    60  PUSH1 0x00
	000E    35  CALLDATALOAD
	000F    60  PUSH1 0xe0
	0011    1C  SHR
	0012    80  DUP1
	0013    63  PUSH4 0x5c60da1b
	0018    14  EQ
	0019    60  PUSH1 0x31
	001B    57  *JUMPI
label_001C:
	001C    60  PUSH1 0x2b
	001E    56  *JUMP
label_001F:
	001F    5B  JUMPDEST
	0020    36  CALLDATASIZE
	0021    60  PUSH1 0x2b
	0023    57  *JUMPI
label_0024:
	0024    60  PUSH1 0x29
	0026    60  PUSH1 0x5f
	0028    56  *JUMP
	0029    5B    JUMPDEST
	002A    00    *STOP
label_002B:
	002B    5B  JUMPDEST
	002C    60  PUSH1 0x29
	002E    60  PUSH1 0x5f
	0030    56  *JUMP
label_0031:
	0031    5B  JUMPDEST
	0032    34  CALLVALUE
	0033    80  DUP1
	0034    15  ISZERO
	0035    60  PUSH1 0x3c
	0037    57  *JUMPI
label_0038:
	0038    60  PUSH1 0x00
	003A    80  DUP1
	003B    FD  *REVERT
label_003C:
	003C    5B  JUMPDEST
	003D    50  POP
	003E    60  PUSH1 0x43
	0040    60  PUSH1 0x97
	0042    56  *JUMP
label_0043:
	0043    5B  JUMPDEST
	0044    60  PUSH1 0x40
	0046    51  MLOAD
	0047    60  PUSH1 0x01
	0049    60  PUSH1 0x01
	004B    60  PUSH1 0xa0
	004D    1B  SHL
	004E    03  SUB
	004F    90  SWAP1
	0050    91  SWAP2
	0051    16  AND
	0052    81  DUP2
	0053    52  MSTORE
	0054    60  PUSH1 0x20
	0056    01  ADD
	0057    60  PUSH1 0x40
	0059    51  MLOAD
	005A    80  DUP1
	005B    91  SWAP2
	005C    03  SUB
	005D    90  SWAP1
	005E    F3  *RETURN
label_005F:
	005F    5B  JUMPDEST
	0060    60  PUSH1 0x95
	0062    60  PUSH1 0x91
	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
label_0091:
	0091    5B  JUMPDEST
	0092    60  PUSH1 0xd1
	0094    56  *JUMP
	0095    5B    JUMPDEST
	0096    56    *JUMP
label_0097:
	0097    5B  JUMPDEST
	0098    60  PUSH1 0x00
	009A    60  PUSH1 0xc9
	009C    7F  PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
	00BD    54  SLOAD
	00BE    60  PUSH1 0x01
	00C0    60  PUSH1 0x01
	00C2    60  PUSH1 0xa0
	00C4    1B  SHL
	00C5    03  SUB
	00C6    16  AND
	00C7    90  SWAP1
	00C8    56  *JUMP
label_00C9:
	00C9    5B  JUMPDEST
	00CA    90  SWAP1
	00CB    50  POP
	00CC    90  SWAP1
	00CD    56  *JUMP
	00CE    5B    JUMPDEST
	00CF    90    SWAP1
	00D0    56    *JUMP
label_00D1:
	00D1    5B  JUMPDEST
	00D2    36  CALLDATASIZE
	00D3    60  PUSH1 0x00
	00D5    80  DUP1
	00D6    37  CALLDATACOPY
	00D7    60  PUSH1 0x00
	00D9    80  DUP1
	00DA    36  CALLDATASIZE
	00DB    60  PUSH1 0x00
	00DD    84  DUP5
	00DE    5A  GAS
	00DF    F4  DELEGATECALL
	00E0    3D  RETURNDATASIZE
	00E1    60  PUSH1 0x00
	00E3    80  DUP1
	00E4    3E  RETURNDATACOPY
	00E5    80  DUP1
	00E6    80  DUP1
	00E7    15  ISZERO
	00E8    60  PUSH1 0xef
	00EA    57  *JUMPI
label_00EB:
	00EB    3D  RETURNDATASIZE
	00EC    60  PUSH1 0x00
	00EE    F3  *RETURN
label_00EF:
	00EF    5B  JUMPDEST
	00F0    3D  RETURNDATASIZE
	00F1    60  PUSH1 0x00
	00F3    FD  *REVERT
	00F4    FE    *ASSERT
	00F5    A2    LOG2
	00F6    64    PUSH5 0x6970667358
	00FC    22    22
	00FD    12    SLT
	00FE    20    SHA3
	00FF    3A    GASPRICE
	0100    5C    5C
	0101    A5    A5
	0102    EC    EC
	0103    81    DUP2
	0104    D2    D2
	0105    EC    EC
	0106    D6    D6
	0107    C9    C9
	0108    1B    SHL
	0109    D4    D4
	010A    C0    C0
	010B    77    PUSH24 0x8e3f39c7e76f83e9c20dcce13f0a1131a830ab64736f6c63
	0124    43    NUMBER
	0125    00    *STOP
	0126    08    ADDMOD
	0127    11    GT
	0128    00    *STOP
	0129    33    CALLER