Online Solidity Decompiler

« Decompile another contract

Address

0x000000005736775feb0c8568e7dee77222a26880 [etherscan.io | etherchain.org]

Public Methods

Method names cached from 4byte.directory.
0x00000001 account_info_rotate_tine(uint256)
0x00000002 razor_balance(bool)
0x00000003 rz_16jun22_88961909()

Internal Methods

func_0277(arg0)
func_02EF(arg0, arg1, arg2) returns (r0)
func_044B(arg0)
func_0506(arg0, arg1, arg2) returns (r0)

Decompilation

contract Contract { function main() { var var0 = 0x00; var var1 = msg.data[var0:var0 + 0x20] >> 0xe0; var var2 = msg.data[var0:var0 + 0x20]; if (var1 == 0x12) { var1 = 0x0203; var2 = msg.sender; func_044B(var2); var1 = var0; var2 = 0xa4; var var3 = var1; var var4 = var3; var var6 = msg.data[0x44:0x64]; var var5 = msg.data[0x64:0x84]; var var7 = msg.data[0x24:0x44]; var var8 = var4; var var9 = var8; var var10 = 0x44; var var11 = var9; var var12 = var11; var var13 = 0x0225; var var14 = var5; var var15 = var7; var var16 = msg.data[0x04:0x24]; var13 = func_02EF(var14, var15, var16); var temp0 = var5; var temp1 = var13; var5 = temp1; var temp2 = var7 < temp0; var13 = var7; var7 = temp2; var14 = 0x0234; var15 = var6; var16 = var7; var var17 = var5; var14 = func_0506(var15, var16, var17); var temp3 = var6; var6 = var14; var temp4 = var12; memory[temp4:temp4 + 0x20] = 0xa9059cbb << 0xe0; memory[0x04:0x24] = var5; memory[0x24:0x44] = temp3; memory[var9:var9 + var8] = address(var13).call.gas(msg.gas).value(temp4)(memory[var11:var11 + var10]); if (var7 == 0x01) { label_00EF: var temp5 = var4; memory[temp5:temp5 + 0x20] = 0x022c0d9f << 0xe0; memory[0x04:0x24] = temp5; memory[0x24:0x44] = var6; memory[0x44:0x64] = address(this); memory[0x64:0x84] = 0x80; memory[0x84:0xa4] = temp5; var temp6; temp6, memory[var1:var1 + var0] = address(var5).call.gas(msg.gas).value(temp5)(memory[var3:var3 + var2]); if (temp6) { stop(); } label_00E5: var0 = 0x00ed; memory[0x00:0x20] = 0x461bcd << 0xe5; memory[0x20:0x40] = 0x01 << 0xe5; memory[0x40:0x60] = 0x023131 << 0xd0; revert(memory[0x00:0x46]); } else { var temp7 = var4; memory[temp7:temp7 + 0x20] = 0x022c0d9f << 0xe0; memory[0x04:0x24] = var6; memory[0x24:0x44] = temp7; memory[0x44:0x64] = address(this); memory[0x64:0x84] = 0x80; memory[0x84:0xa4] = temp7; var temp8; temp8, memory[var1:var1 + var0] = address(var5).call.gas(msg.gas).value(temp7)(memory[var3:var3 + var2]); if (!temp8) { goto label_00E5; } else { stop(); } } } else if (var1 == 0xe1c7392a) { stop(); } else if (var1 == 0x83197ef0) { var0 = 0x01f0; var1 = msg.sender == 0x94ddd5e97de3a659a1b10e2845857edb01883619; func_0277(var1); selfdestruct(msg.sender); } else { var3 = var0; var temp9 = var1; var1 = var3; if (temp9 == 0xc89e4361) { var temp10 = var2; var2 = var3; var3 = temp10; var4 = 0x01a3; var5 = msg.sender == 0x94ddd5e97de3a659a1b10e2845857edb01883619; func_0277(var5); var temp11 = var2; var temp12 = msg.data.length + ~0x17; memory[temp11:temp11 + temp12] = msg.data[0x18:0x18 + temp12]; var temp13; temp13, memory[temp11:temp11 + var1] = address((var3 >> 0x40) & (0x01 << 0xa0) - 0x01).delegatecall.gas(msg.gas)(memory[temp11:temp11 + temp12]); var temp14 = returndata.length; var temp15 = var0; memory[temp15:temp15 + temp14] = returndata[temp15:temp15 + temp14]; if (!temp13) { revert(memory[var0:var0 + returndata.length]); } else { return memory[var0:var0 + returndata.length]; } } else if (msg.value) { return memory[var1:var1 + var0]; } else { var3 = var1; var4 = var3; var temp16 = var2; var2 = 0xa4; var5 = temp16; var6 = 0x0047; var7 = msg.sender; func_044B(var7); if (var5 >> 0xf0 != block.number & 0xffff) { var6 = 0x017b; memory[0x00:0x20] = 0x461bcd << 0xe5; memory[0x20:0x40] = 0x01 << 0xe5; memory[0x40:0x60] = 0x4627 << 0xd3; revert(memory[0x00:0x46]); } else { var6 = var4; var temp17 = var5; var7 = var6; var8 = temp17; var9 = var7; var10 = var9; var temp18 = (0x01 << 0xa0) - 0x01; var11 = (var8 >> 0xa0) & 0xffffffffffffffffff; var12 = temp18 & var8; var5 = temp18 & msg.data[0x14:0x34]; var13 = msg.data[0x28:0x48] & temp18; var14 = !var13; if (var14 == 0x01) { var temp19 = var6; var6 = var12; var7 = 0x01; var13 = var9; var10 = var13; var12 = var10; var14 = temp19; var temp20 = var11; var11 = 0x44; var15 = temp20; if ((var8 >> 0xed) & 0x07 == 0x00) { var14 = 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2; var7 = var6; var6 = var14; var10 = var15; label_0092: var temp21 = var9; var temp22 = var6; var6 = var7; memory[temp21:temp21 + 0x20] = 0xa9059cbb << 0xe0; memory[0x04:0x24] = var5; memory[0x24:0x44] = var10; memory[temp21:temp21 + temp21] = address(temp22).call.gas(msg.gas).value(temp21)(memory[temp21:temp21 + 0x44]); if ((var8 >> 0xec) & 0x01 == 0x01) { goto label_00EF; } var temp23 = var4; memory[temp23:temp23 + 0x20] = 0x022c0d9f << 0xe0; memory[0x04:0x24] = var6; memory[0x24:0x44] = temp23; memory[0x44:0x64] = address(this); memory[0x64:0x84] = 0x80; memory[0x84:0xa4] = temp23; var temp24; temp24, memory[var1:var1 + var0] = address(var5).call.gas(msg.gas).value(temp23)(memory[var3:var3 + var2]); if (!temp24) { goto label_00E5; } else { stop(); } } else { var16 = 0x014c; memory[0x00:0x20] = 0x461bcd << 0xe5; memory[0x20:0x40] = 0x01 << 0xe5; memory[0x40:0x60] = 0x011999 << 0xd1; revert(memory[0x00:0x46]); } } else if (!var14) { var6 = var13; var7 = var11; var10 = var12; var11 = 0x44; var12 = var9; var13 = var12; goto label_0092; } else { goto label_0092; } } } } } function func_0277(var arg0) { if (!arg0) { revert(memory[0x00:0x00]); } else { return; } } function func_02EF(var arg0, var arg1, var arg2) returns (var r0) { var temp0 = r0; r0 = arg2; var temp1 = arg0; arg2 = temp1; arg0 = temp0; if ((arg1 < arg2) == 0x01) { memory[0x00:0x20] = arg1 << 0x60; memory[0x14:0x34] = arg2 << 0x60; var temp2 = r0; r0 = 0x00; arg1 = keccak256(memory[r0:r0 + 0x28]); arg2 = temp2; if (arg2 == 0x01) { label_03E2: var temp3 = r0; memory[temp3:temp3 + 0x20] = ~((0x01 << 0xf8) - 0x01); memory[0x01:0x21] = 0x302bb91e38d9638984317de928b85ddf3a793cab << 0x62; memory[0x15:0x35] = arg1; memory[0x35:0x55] = 0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303; r0 = arg0; arg1 = temp3; arg0 = 0x55; label_037E: return keccak256(memory[arg1:arg1 + arg0]) & (0x01 << 0xa0) - 0x01; } else { label_0319: if (arg2 == 0x02) { var temp4 = r0; memory[temp4:temp4 + 0x20] = ~((0x01 << 0xf8) - 0x01); memory[0x01:0x21] = 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f << 0x60; memory[0x15:0x35] = arg1; memory[0x35:0x55] = 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f; r0 = arg0; arg1 = temp4; arg0 = 0x55; goto label_037E; } else if (arg2 == 0x03) { var temp5 = r0; memory[temp5:temp5 + 0x20] = ~((0x01 << 0xf8) - 0x01); memory[0x01:0x21] = 0x04564d04c645b22c9df74043b80b78d8f02740df << 0x62; memory[0x15:0x35] = arg1; memory[0x35:0x55] = 0x65d1a3b1e46c6e4f1be1ad5f99ef14dc488ae0549dc97db9b30afe2241ce1c7a; r0 = arg0; arg1 = temp5; arg0 = 0x55; goto label_037E; } else { var temp6 = r0; revert(memory[temp6:temp6 + temp6]); } } } else { memory[0x00:0x20] = arg2 << 0x60; memory[0x14:0x34] = arg1 << 0x60; var temp7 = r0; r0 = 0x00; arg2 = temp7; arg1 = keccak256(memory[r0:r0 + 0x28]); if (arg2 == 0x01) { goto label_03E2; } else { goto label_0319; } } } function func_044B(var arg0) { var temp0 = arg0; if ((temp0 == 0x94ddd5e97de3a659a1b10e2845857edb01883619) | (temp0 == 0x24dbfaf6528d7bc3f2847a2972856e191d9f1364) | (temp0 == 0xf2d1cd2af1f7f0f076864c0eb3aec70a496e3432) | (temp0 == 0x778194cfbbc6d9cb9e2f6e3751fb2a57e8a44186) | (temp0 == 0x7b34d49fabeeb86d785db00cbe5b730b2afbf2ea) | (temp0 == 0xe5e54c60ef117265eef85f1ac666d8e640fe92b6)) { return; } memory[0x00:0x20] = 0x461bcd << 0xe5; memory[0x20:0x40] = 0x01 << 0xe5; memory[0x40:0x60] = 0x2313 << 0xd4; revert(memory[0x00:0x46]); } function func_0506(var arg0, var arg1, var arg2) returns (var r0) { var temp0 = arg2; arg2 = arg0; var var0 = arg1; arg0 = 0x00; arg1 = 0x00; memory[arg1:arg1 + 0x20] = 0x0240bc6b << 0xe2; var temp1; temp1, memory[arg1:arg1 + 0x60] = address(temp0).staticcall.gas(msg.gas)(memory[arg1:arg1 + 0x04]); if (!temp1) { var temp2 = arg1; memory[temp2:temp2 + 0x20] = 0x461bcd << 0xe5; memory[0x20:0x40] = 0x01 << 0xe5; memory[0x40:0x60] = 0x011899 << 0xd1; revert(memory[temp2:temp2 + 0x46]); } else if (var0 == 0x01) { arg1 = memory[arg1:arg1 + 0x20]; var0 = arg2; arg2 = memory[0x20:0x40]; var temp3 = arg1; arg1 = 0x03e5; var temp4 = arg0; arg0 = temp3 * 0x03e8 + var0 * arg1; var var1 = temp4; if (!arg0 == 0x01) { label_0552: var temp5 = r0; r0 = var1; arg0 = temp5; arg1 = 0x0560; memory[0x00:0x20] = 0x461bcd << 0xe5; memory[0x20:0x40] = 0x01 << 0xe5; memory[0x40:0x60] = 0x023131 << 0xd0; revert(memory[0x00:0x46]); } else { label_054C: return (var0 * arg2 * arg1) / arg0; } } else { var temp6 = arg2; var0 = temp6; arg2 = memory[arg1:arg1 + 0x20]; arg1 = 0x03e5; var1 = arg0; arg0 = memory[0x20:0x40] * 0x03e8 + var0 * arg1; if (!arg0 == 0x01) { goto label_0552; } else { goto label_054C; } } } }

Disassembly

label_0000: // Inputs[1] { @0003 msg.data[0x00:0x20] } 0000 60 PUSH1 0x00 0002 80 DUP1 0003 35 CALLDATALOAD 0004 80 DUP1 0005 60 PUSH1 0xe0 0007 1C SHR 0008 90 SWAP1 0009 81 DUP2 000A 60 PUSH1 0x12 000C 14 EQ 000D 61 PUSH2 0x01f8 0010 57 *JUMPI // Stack delta = +3 // Outputs[3] // { // @0000 stack[0] = 0x00 // @0008 stack[1] = msg.data[0x00:0x20] >> 0xe0 // @0008 stack[2] = msg.data[0x00:0x20] // } // Block ends with conditional jump to 0x01f8, if 0x12 == msg.data[0x00:0x20] >> 0xe0 label_0011: // Incoming jump from 0x0010, if not 0x12 == msg.data[0x00:0x20] >> 0xe0 // Inputs[1] { @0011 stack[-2] } 0011 81 DUP2 0012 63 PUSH4 0xe1c7392a 0017 14 EQ 0018 61 PUSH2 0x01f3 001B 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x01f3, if 0xe1c7392a == stack[-2] label_001C: // Incoming jump from 0x001B, if not 0xe1c7392a == stack[-2] // Inputs[1] { @001C stack[-2] } 001C 81 DUP2 001D 63 PUSH4 0x83197ef0 0022 14 EQ 0023 61 PUSH2 0x01ce 0026 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x01ce, if 0x83197ef0 == stack[-2] label_0027: // Incoming jump from 0x0026, if not 0x83197ef0 == stack[-2] // Inputs[2] // { // @0027 stack[-3] // @0029 stack[-2] // } 0027 82 DUP3 0028 80 DUP1 0029 92 SWAP3 002A 63 PUSH4 0xc89e4361 002F 14 EQ 0030 61 PUSH2 0x0183 0033 57 *JUMPI // Stack delta = +1 // Outputs[2] // { // @0027 stack[0] = stack[-3] // @0029 stack[-2] = stack[-3] // } // Block ends with conditional jump to 0x0183, if 0xc89e4361 == stack[-2] label_0034: // Incoming jump from 0x0033, if not 0xc89e4361 == stack[-2] // Inputs[1] { @0035 msg.value } 0034 50 POP 0035 34 CALLVALUE 0036 61 PUSH2 0x0180 0039 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x0180, if msg.value label_003A: // Incoming jump from 0x0039, if not msg.value // Inputs[3] // { // @003A stack[-2] // @003E stack[-1] // @0042 msg.sender // } 003A 81 DUP2 003B 80 DUP1 003C 60 PUSH1 0xa4 003E 92 SWAP3 003F 61 PUSH2 0x0047 0042 33 CALLER 0043 61 PUSH2 0x044b 0046 56 *JUMP // Stack delta = +5 // Outputs[6] // { // @003A stack[0] = stack[-2] // @003B stack[1] = stack[-2] // @003E stack[2] = stack[-1] // @003E stack[-1] = 0xa4 // @003F stack[3] = 0x0047 // @0042 stack[4] = msg.sender // } // Block ends with call to 0x044b, returns to 0x0047 label_0047: // Incoming return from call to 0x044B at 0x0046 // Inputs[2] // { // @0048 block.number // @004D stack[-1] // } 0047 5B JUMPDEST 0048 43 NUMBER 0049 61 PUSH2 0xffff 004C 16 AND 004D 81 DUP2 004E 60 PUSH1 0xf0 0050 1C SHR 0051 14 EQ 0052 15 ISZERO 0053 61 PUSH2 0x0173 0056 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x0173, if !(stack[-1] >> 0xf0 == 0xffff & block.number) label_0057: // Incoming jump from 0x0056, if not !(stack[-1] >> 0xf0 == 0xffff & block.number) // Inputs[4] // { // @0058 stack[-2] // @005A stack[-1] // @007B msg.data[0x14:0x34] // @0081 msg.data[0x28:0x48] // } 0057 5B JUMPDEST 0058 81 DUP2 0059 82 DUP3 005A 91 SWAP2 005B 83 DUP4 005C 90 SWAP1 005D 84 DUP5 005E 81 DUP2 005F 60 PUSH1 0xa0 0061 1C SHR 0062 68 PUSH9 0xffffffffffffffffff 006C 16 AND 006D 94 SWAP5 006E 60 PUSH1 0x01 0070 80 DUP1 0071 60 PUSH1 0xa0 0073 1B SHL 0074 03 SUB 0075 95 SWAP6 0076 83 DUP4 0077 87 DUP8 0078 16 AND 0079 60 PUSH1 0x14 007B 35 CALLDATALOAD 007C 88 DUP9 007D 16 AND 007E 97 SWAP8 007F 60 PUSH1 0x28 0081 35 CALLDATALOAD 0082 16 AND 0083 80 DUP1 0084 15 ISZERO 0085 80 DUP1 0086 60 PUSH1 0x01 0088 14 EQ 0089 61 PUSH2 0x0126 008C 57 *JUMPI // Stack delta = +9 // Outputs[10] // { // @0058 stack[0] = stack[-2] // @005C stack[2] = stack[-1] // @005C stack[1] = stack[-2] // @005D stack[3] = stack[-2] // @006D stack[4] = stack[-2] // @0075 stack[5] = 0xffffffffffffffffff & (stack[-1] >> 0xa0) // @0078 stack[6] = (0x01 << 0xa0) - 0x01 & stack[-1] // @007E stack[-1] = (0x01 << 0xa0) - 0x01 & msg.data[0x14:0x34] // @0082 stack[7] = msg.data[0x28:0x48] & (0x01 << 0xa0) - 0x01 // @0084 stack[8] = !(msg.data[0x28:0x48] & (0x01 << 0xa0) - 0x01) // } // Block ends with conditional jump to 0x0126, if 0x01 == !(msg.data[0x28:0x48] & (0x01 << 0xa0) - 0x01) label_008D: // Incoming jump from 0x008C, if not 0x01 == !(msg.data[0x28:0x48] & (0x01 << 0xa0) - 0x01) // Inputs[1] { @008D stack[-1] } 008D 15 ISZERO 008E 61 PUSH2 0x0116 0091 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x0116, if !stack[-1] label_0092: // Incoming jump from 0x0156 // Incoming jump from 0x0091, if not !stack[-1] // Incoming jump from 0x0125 // Inputs[9] // { // @0098 stack[-5] // @009C stack[-7] // @009D stack[-8] // @009F stack[-4] // @00AA stack[-9] // @00B1 msg.gas // @00B2 memory[stack[-5]:stack[-5] + 0x44] // @00B2 address(stack[-8]).call.gas(msg.gas).value(stack[-5])(memory[stack[-5]:stack[-5] + 0x44]) // @00B6 stack[-6] // } 0092 5B JUMPDEST 0093 50 POP 0094 50 POP 0095 50 POP 0096 60 PUSH1 0x44 0098 82 DUP3 0099 80 DUP1 009A 60 PUSH1 0x01 009C 96 SWAP7 009D 97 SWAP8 009E 81 DUP2 009F 94 SWAP5 00A0 63 PUSH4 0xa9059cbb 00A5 60 PUSH1 0xe0 00A7 1B SHL 00A8 83 DUP4 00A9 52 MSTORE 00AA 8A DUP11 00AB 60 PUSH1 0x04 00AD 52 MSTORE 00AE 60 PUSH1 0x24 00B0 52 MSTORE 00B1 5A GAS 00B2 F1 CALL 00B3 50 POP 00B4 60 PUSH1 0xec 00B6 1C SHR 00B7 16 AND 00B8 60 PUSH1 0x01 00BA 14 EQ 00BB 61 PUSH2 0x00ef 00BE 57 *JUMPI // Stack delta = -7 // Outputs[5] // { // @009D stack[-8] = stack[-7] // @00A9 memory[stack[-5]:stack[-5] + 0x20] = 0xa9059cbb << 0xe0 // @00AD memory[0x04:0x24] = stack[-9] // @00B0 memory[0x24:0x44] = stack[-4] // @00B2 memory[stack[-5]:stack[-5] + stack[-5]] = address(stack[-8]).call.gas(msg.gas).value(stack[-5])(memory[stack[-5]:stack[-5] + 0x44]) // } // Block ends with conditional jump to 0x00ef, if 0x01 == (stack[-6] >> 0xec) & 0x01 label_00BF: // Incoming jump from 0x00BE, if not 0x01 == (stack[-6] >> 0xec) & 0x01 // Inputs[11] // { // @00C7 stack[-3] // @00CB stack[-1] // @00D0 address(this) // @00DD msg.gas // @00DE stack[-2] // @00DE stack[-4] // @00DE address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // @00DE memory[stack[-4]:stack[-4] + stack[-5]] // @00DE stack[-5] // @00DE stack[-6] // @00DE stack[-7] // } 00BF 63 PUSH4 0x022c0d9f 00C4 60 PUSH1 0xe0 00C6 1B SHL 00C7 83 DUP4 00C8 52 MSTORE 00C9 60 PUSH1 0x04 00CB 52 MSTORE 00CC 81 DUP2 00CD 60 PUSH1 0x24 00CF 52 MSTORE 00D0 30 ADDRESS 00D1 60 PUSH1 0x44 00D3 52 MSTORE 00D4 60 PUSH1 0x80 00D6 60 PUSH1 0x64 00D8 52 MSTORE 00D9 81 DUP2 00DA 60 PUSH1 0x84 00DC 52 MSTORE 00DD 5A GAS 00DE F1 CALL 00DF 15 ISZERO 00E0 61 PUSH2 0x00e5 00E3 57 *JUMPI // Stack delta = -7 // Outputs[7] // { // @00C8 memory[stack[-3]:stack[-3] + 0x20] = 0x022c0d9f << 0xe0 // @00CB memory[0x04:0x24] = stack[-1] // @00CF memory[0x24:0x44] = stack[-3] // @00D3 memory[0x44:0x64] = address(this) // @00D8 memory[0x64:0x84] = 0x80 // @00DC memory[0x84:0xa4] = stack[-3] // @00DE memory[stack[-6]:stack[-6] + stack[-7]] = address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // } // Block ends with conditional jump to 0x00e5, if !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) label_00E4: // Incoming jump from 0x00E3, if not !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) 00E4 00 *STOP // Stack delta = +0 // Outputs[1] { @00E4 stop(); } // Block terminates label_00E5: // Incoming jump from 0x0275, if !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // Incoming jump from 0x0114, if !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // Incoming jump from 0x00E3, if !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) 00E5 5B JUMPDEST 00E6 61 PUSH2 0x00ed 00E9 61 PUSH2 0x0284 00EC 56 *JUMP // Stack delta = +1 // Outputs[1] { @00E6 stack[0] = 0x00ed } // Block ends with unconditional jump to 0x0284 00ED 5B JUMPDEST 00EE 00 *STOP label_00EF: // Incoming jump from 0x0250, if 0x01 == stack[-8] // Incoming jump from 0x00BE, if 0x01 == (stack[-6] >> 0xec) & 0x01 // Inputs[11] // { // @00F8 stack[-3] // @0100 stack[-1] // @0101 address(this) // @010E msg.gas // @010F memory[stack[-4]:stack[-4] + stack[-5]] // @010F stack[-6] // @010F stack[-2] // @010F stack[-5] // @010F stack[-4] // @010F address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // @010F stack[-7] // } 00EF 5B JUMPDEST 00F0 63 PUSH4 0x022c0d9f 00F5 60 PUSH1 0xe0 00F7 1B SHL 00F8 83 DUP4 00F9 52 MSTORE 00FA 82 DUP3 00FB 60 PUSH1 0x04 00FD 52 MSTORE 00FE 60 PUSH1 0x24 0100 52 MSTORE 0101 30 ADDRESS 0102 60 PUSH1 0x44 0104 52 MSTORE 0105 60 PUSH1 0x80 0107 60 PUSH1 0x64 0109 52 MSTORE 010A 81 DUP2 010B 60 PUSH1 0x84 010D 52 MSTORE 010E 5A GAS 010F F1 CALL 0110 15 ISZERO 0111 61 PUSH2 0x00e5 0114 57 *JUMPI // Stack delta = -7 // Outputs[7] // { // @00F9 memory[stack[-3]:stack[-3] + 0x20] = 0x022c0d9f << 0xe0 // @00FD memory[0x04:0x24] = stack[-3] // @0100 memory[0x24:0x44] = stack[-1] // @0104 memory[0x44:0x64] = address(this) // @0109 memory[0x64:0x84] = 0x80 // @010D memory[0x84:0xa4] = stack[-3] // @010F memory[stack[-6]:stack[-6] + stack[-7]] = address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // } // Block ends with conditional jump to 0x00e5, if !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) label_0115: // Incoming jump from 0x0114, if not !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) 0115 00 *STOP // Stack delta = +0 // Outputs[1] { @0115 stop(); } // Block terminates label_0116: // Incoming jump from 0x0091, if !stack[-1] // Inputs[7] // { // @0117 stack[-8] // @0117 stack[-1] // @0119 stack[-2] // @0119 stack[-3] // @011A stack[-7] // @011C stack[-4] // @0120 stack[-5] // } 0116 5B JUMPDEST 0117 96 SWAP7 0118 50 POP 0119 90 SWAP1 011A 94 SWAP5 011B 50 POP 011C 90 SWAP1 011D 50 POP 011E 60 PUSH1 0x44 0120 82 DUP3 0121 80 DUP1 0122 61 PUSH2 0x0092 0125 56 *JUMP // Stack delta = +0 // Outputs[6] // { // @0117 stack[-8] = stack[-1] // @011A stack[-7] = stack[-3] // @011C stack[-4] = stack[-2] // @011E stack[-3] = 0x44 // @0120 stack[-2] = stack[-5] // @0121 stack[-1] = stack[-5] // } // Block ends with unconditional jump to 0x0092 label_0126: // Incoming jump from 0x008C, if 0x01 == !(msg.data[0x28:0x48] & (0x01 << 0xa0) - 0x01) // Inputs[7] // { // @0129 stack[-9] // @0129 stack[-3] // @012C stack[-8] // @012E stack[-6] // @0130 stack[-5] // @0136 stack[-4] // @0139 stack[-7] // } 0126 5B JUMPDEST 0127 50 POP 0128 50 POP 0129 95 SWAP6 012A 60 PUSH1 0x01 012C 95 SWAP6 012D 50 POP 012E 83 DUP4 012F 80 DUP1 0130 93 SWAP4 0131 50 POP 0132 80 DUP1 0133 91 SWAP2 0134 60 PUSH1 0x44 0136 93 SWAP4 0137 60 PUSH1 0x07 0139 88 DUP9 013A 60 PUSH1 0xed 013C 1C SHR 013D 16 AND 013E 60 PUSH1 0x00 0140 14 EQ 0141 61 PUSH2 0x0157 0144 57 *JUMPI // Stack delta = +1 // Outputs[8] // { // @0129 stack[-9] = stack[-3] // @012C stack[-8] = 0x01 // @012E stack[-2] = stack[-6] // @0130 stack[-5] = stack[-6] // @0133 stack[-1] = stack[-9] // @0133 stack[-3] = stack[-6] // @0136 stack[-4] = 0x44 // @0136 stack[0] = stack[-4] // } // Block ends with conditional jump to 0x0157, if 0x00 == (stack[-7] >> 0xed) & 0x07 label_0145: // Incoming jump from 0x0144, if not 0x00 == (stack[-7] >> 0xed) & 0x07 0145 61 PUSH2 0x014c 0148 61 PUSH2 0x02cb 014B 56 *JUMP // Stack delta = +1 // Outputs[1] { @0145 stack[0] = 0x014c } // Block ends with unconditional jump to 0x02cb label_014C: // Incoming jump from 0x0172 // Inputs[5] // { // @014D stack[-10] // @014D stack[-1] // @014E stack[-9] // @0150 stack[-2] // @0151 stack[-6] // } 014C 5B JUMPDEST 014D 98 SWAP9 014E 97 SWAP8 014F 50 POP 0150 97 SWAP8 0151 93 SWAP4 0152 50 POP 0153 61 PUSH2 0x0092 0156 56 *JUMP // Stack delta = -2 // Outputs[3] // { // @014E stack[-9] = stack[-10] // @0150 stack[-10] = stack[-2] // @0151 stack[-6] = stack[-1] // } // Block ends with unconditional jump to 0x0092 label_0157: // Incoming jump from 0x0144, if 0x00 == (stack[-7] >> 0xed) & 0x07 // Inputs[1] { @016D stack[-2] } 0157 5B JUMPDEST 0158 73 PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 016D 91 SWAP2 016E 50 POP 016F 61 PUSH2 0x014c 0172 56 *JUMP // Stack delta = +0 // Outputs[1] { @016D stack[-2] = 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 } // Block ends with unconditional jump to 0x014c label_0173: // Incoming jump from 0x0056, if !(stack[-1] >> 0xf0 == 0xffff & block.number) 0173 5B JUMPDEST 0174 61 PUSH2 0x017b 0177 61 PUSH2 0x02a8 017A 56 *JUMP // Stack delta = +1 // Outputs[1] { @0174 stack[0] = 0x017b } // Block ends with unconditional jump to 0x02a8 017B 5B JUMPDEST 017C 61 PUSH2 0x0057 017F 56 *JUMP label_0180: // Incoming jump from 0x0039, if msg.value // Inputs[3] // { // @0182 stack[-2] // @0182 stack[-3] // @0182 memory[stack[-2]:stack[-2] + stack[-3]] // } 0180 5B JUMPDEST 0181 50 POP 0182 F3 *RETURN // Stack delta = -3 // Outputs[1] { @0182 return memory[stack[-2]:stack[-2] + stack[-3]]; } // Block terminates label_0183: // Incoming jump from 0x0033, if 0xc89e4361 == stack[-2] // Inputs[3] // { // @0184 stack[-2] // @0184 stack[-1] // @0188 msg.sender // } 0183 5B JUMPDEST 0184 90 SWAP1 0185 61 PUSH2 0x01a3 0188 33 CALLER 0189 73 PUSH20 0x94ddd5e97de3a659a1b10e2845857edb01883619 019E 14 EQ 019F 61 PUSH2 0x0277 01A2 56 *JUMP // Stack delta = +2 // Outputs[4] // { // @0184 stack[-2] = stack[-1] // @0184 stack[-1] = stack[-2] // @0185 stack[0] = 0x01a3 // @019E stack[1] = 0x94ddd5e97de3a659a1b10e2845857edb01883619 == msg.sender // } // Block ends with call to 0x0277, returns to 0x01A3 label_01A3: // Incoming return from call to 0x0277 at 0x01A2 // Inputs[11] // { // @01A4 stack[-2] // @01A8 msg.data.length // @01AA stack[-1] // @01AF msg.data[0x18:0x18 + msg.data.length + ~0x17] // @01BC msg.gas // @01BD stack[-3] // @01BD memory[stack[-2]:stack[-2] + msg.data.length + ~0x17] // @01BD address((0x01 << 0xa0) - 0x01 & (stack[-1] >> 0x40)).delegatecall.gas(msg.gas)(memory[stack[-2]:stack[-2] + msg.data.length + ~0x17]) // @01BE returndata.length // @01BF stack[-4] // @01C1 returndata[stack[-4]:stack[-4] + returndata.length] // } 01A3 5B JUMPDEST 01A4 81 DUP2 01A5 60 PUSH1 0x17 01A7 19 NOT 01A8 36 CALLDATASIZE 01A9 01 ADD 01AA 91 SWAP2 01AB 82 DUP3 01AC 60 PUSH1 0x18 01AE 83 DUP4 01AF 37 CALLDATACOPY 01B0 60 PUSH1 0x40 01B2 1C SHR 01B3 60 PUSH1 0x01 01B5 60 PUSH1 0x01 01B7 60 PUSH1 0xa0 01B9 1B SHL 01BA 03 SUB 01BB 16 AND 01BC 5A GAS 01BD F4 DELEGATECALL 01BE 3D RETURNDATASIZE 01BF 82 DUP3 01C0 80 DUP1 01C1 3E RETURNDATACOPY 01C2 15 ISZERO 01C3 61 PUSH2 0x01ca 01C6 57 *JUMPI // Stack delta = -3 // Outputs[3] // { // @01AF memory[stack[-2]:stack[-2] + msg.data.length + ~0x17] = msg.data[0x18:0x18 + msg.data.length + ~0x17] // @01BD memory[stack[-2]:stack[-2] + stack[-3]] = address((0x01 << 0xa0) - 0x01 & (stack[-1] >> 0x40)).delegatecall.gas(msg.gas)(memory[stack[-2]:stack[-2] + msg.data.length + ~0x17]) // @01C1 memory[stack[-4]:stack[-4] + returndata.length] = returndata[stack[-4]:stack[-4] + returndata.length] // } // Block ends with conditional jump to 0x01ca, if !address((0x01 << 0xa0) - 0x01 & (stack[-1] >> 0x40)).delegatecall.gas(msg.gas)(memory[stack[-2]:stack[-2] + msg.data.length + ~0x17]) label_01C7: // Incoming jump from 0x01C6, if not !address((0x01 << 0xa0) - 0x01 & (stack[-1] >> 0x40)).delegatecall.gas(msg.gas)(memory[stack[-2]:stack[-2] + msg.data.length + ~0x17]) // Inputs[3] // { // @01C7 returndata.length // @01C8 stack[-1] // @01C9 memory[stack[-1]:stack[-1] + returndata.length] // } 01C7 3D RETURNDATASIZE 01C8 90 SWAP1 01C9 F3 *RETURN // Stack delta = -1 // Outputs[1] { @01C9 return memory[stack[-1]:stack[-1] + returndata.length]; } // Block terminates label_01CA: // Incoming jump from 0x01C6, if !address((0x01 << 0xa0) - 0x01 & (stack[-1] >> 0x40)).delegatecall.gas(msg.gas)(memory[stack[-2]:stack[-2] + msg.data.length + ~0x17]) // Inputs[3] // { // @01CB returndata.length // @01CC stack[-1] // @01CD memory[stack[-1]:stack[-1] + returndata.length] // } 01CA 5B JUMPDEST 01CB 3D RETURNDATASIZE 01CC 90 SWAP1 01CD FD *REVERT // Stack delta = -1 // Outputs[1] { @01CD revert(memory[stack[-1]:stack[-1] + returndata.length]); } // Block terminates label_01CE: // Incoming jump from 0x0026, if 0x83197ef0 == stack[-2] // Inputs[1] { @01D5 msg.sender } 01CE 5B JUMPDEST 01CF 50 POP 01D0 50 POP 01D1 50 POP 01D2 61 PUSH2 0x01f0 01D5 33 CALLER 01D6 73 PUSH20 0x94ddd5e97de3a659a1b10e2845857edb01883619 01EB 14 EQ 01EC 61 PUSH2 0x0277 01EF 56 *JUMP // Stack delta = -1 // Outputs[2] // { // @01D2 stack[-3] = 0x01f0 // @01EB stack[-2] = 0x94ddd5e97de3a659a1b10e2845857edb01883619 == msg.sender // } // Block ends with call to 0x0277, returns to 0x01F0 label_01F0: // Incoming return from call to 0x0277 at 0x01EF // Inputs[1] { @01F1 msg.sender } 01F0 5B JUMPDEST 01F1 33 CALLER 01F2 FF *SELFDESTRUCT // Stack delta = +0 // Outputs[1] { @01F2 selfdestruct(msg.sender); } // Block terminates label_01F3: // Incoming jump from 0x001B, if 0xe1c7392a == stack[-2] 01F3 5B JUMPDEST 01F4 50 POP 01F5 50 POP 01F6 50 POP 01F7 00 *STOP // Stack delta = -3 // Outputs[1] { @01F7 stop(); } // Block terminates label_01F8: // Incoming jump from 0x0010, if 0x12 == msg.data[0x00:0x20] >> 0xe0 // Inputs[1] { @01FE msg.sender } 01F8 5B JUMPDEST 01F9 50 POP 01FA 50 POP 01FB 61 PUSH2 0x0203 01FE 33 CALLER 01FF 61 PUSH2 0x044b 0202 56 *JUMP // Stack delta = +0 // Outputs[2] // { // @01FB stack[-2] = 0x0203 // @01FE stack[-1] = msg.sender // } // Block ends with call to 0x044b, returns to 0x0203 label_0203: // Incoming return from call to 0x044B at 0x0202 // Inputs[5] // { // @0204 stack[-1] // @020B msg.data[0x24:0x44] // @020E msg.data[0x44:0x64] // @0211 msg.data[0x64:0x84] // @0220 msg.data[0x04:0x24] // } 0203 5B JUMPDEST 0204 80 DUP1 0205 60 PUSH1 0xa4 0207 81 DUP2 0208 80 DUP1 0209 60 PUSH1 0x24 020B 35 CALLDATALOAD 020C 60 PUSH1 0x44 020E 35 CALLDATALOAD 020F 60 PUSH1 0x64 0211 35 CALLDATALOAD 0212 91 SWAP2 0213 83 DUP4 0214 80 DUP1 0215 60 PUSH1 0x44 0217 81 DUP2 0218 80 DUP1 0219 61 PUSH2 0x0225 021C 88 DUP9 021D 87 DUP8 021E 60 PUSH1 0x04 0220 35 CALLDATALOAD 0221 61 PUSH2 0x02ef 0224 56 *JUMP // Stack delta = +16 // Outputs[16] // { // @0204 stack[0] = stack[-1] // @0205 stack[1] = 0xa4 // @0207 stack[2] = stack[-1] // @0208 stack[3] = stack[-1] // @020E stack[5] = msg.data[0x44:0x64] // @0212 stack[4] = msg.data[0x64:0x84] // @0212 stack[6] = msg.data[0x24:0x44] // @0213 stack[7] = stack[-1] // @0214 stack[8] = stack[-1] // @0215 stack[9] = 0x44 // @0217 stack[10] = stack[-1] // @0218 stack[11] = stack[-1] // @0219 stack[12] = 0x0225 // @021C stack[13] = msg.data[0x64:0x84] // @021D stack[14] = msg.data[0x24:0x44] // @0220 stack[15] = msg.data[0x04:0x24] // } // Block ends with call to 0x02ef, returns to 0x0225 label_0225: // Incoming return from call to 0x02EF at 0x0224 // Inputs[4] // { // @0226 stack[-9] // @0226 stack[-1] // @0227 stack[-7] // @022D stack[-8] // } 0225 5B JUMPDEST 0226 97 SWAP8 0227 86 DUP7 0228 10 LT 0229 95 SWAP6 022A 61 PUSH2 0x0234 022D 88 DUP9 022E 88 DUP9 022F 8B DUP12 0230 61 PUSH2 0x0506 0233 56 *JUMP // Stack delta = +4 // Outputs[7] // { // @0226 stack[-9] = stack[-1] // @0229 stack[-7] = stack[-7] < stack[-9] // @0229 stack[-1] = stack[-7] // @022A stack[0] = 0x0234 // @022D stack[1] = stack[-8] // @022E stack[2] = stack[-7] < stack[-9] // @022F stack[3] = stack[-1] // } // Block ends with call to 0x0506, returns to 0x0234 label_0234: // Incoming return from call to 0x0506 at 0x0233 // Inputs[13] // { // @0235 stack[-1] // @0235 stack[-9] // @023E stack[-3] // @0240 stack[-10] // @0247 msg.gas // @0248 memory[stack[-4]:stack[-4] + stack[-5]] // @0248 address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // @0248 stack[-2] // @0248 stack[-7] // @0248 stack[-6] // @0248 stack[-5] // @0248 stack[-4] // @024C stack[-8] // } 0234 5B JUMPDEST 0235 97 SWAP8 0236 63 PUSH4 0xa9059cbb 023B 60 PUSH1 0xe0 023D 1B SHL 023E 83 DUP4 023F 52 MSTORE 0240 89 DUP10 0241 60 PUSH1 0x04 0243 52 MSTORE 0244 60 PUSH1 0x24 0246 52 MSTORE 0247 5A GAS 0248 F1 CALL 0249 50 POP 024A 60 PUSH1 0x01 024C 14 EQ 024D 61 PUSH2 0x00ef 0250 57 *JUMPI // Stack delta = -8 // Outputs[5] // { // @0235 stack[-9] = stack[-1] // @023F memory[stack[-3]:stack[-3] + 0x20] = 0xa9059cbb << 0xe0 // @0243 memory[0x04:0x24] = stack[-10] // @0246 memory[0x24:0x44] = stack[-9] // @0248 memory[stack[-6]:stack[-6] + stack[-7]] = address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // } // Block ends with conditional jump to 0x00ef, if 0x01 == stack[-8] label_0251: // Incoming jump from 0x0250, if not 0x01 == stack[-8] // Inputs[11] // { // @0259 stack[-3] // @025D stack[-1] // @0262 address(this) // @026F msg.gas // @0270 stack[-6] // @0270 stack[-5] // @0270 stack[-2] // @0270 stack[-4] // @0270 memory[stack[-4]:stack[-4] + stack[-5]] // @0270 stack[-7] // @0270 address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // } 0251 63 PUSH4 0x022c0d9f 0256 60 PUSH1 0xe0 0258 1B SHL 0259 83 DUP4 025A 52 MSTORE 025B 60 PUSH1 0x04 025D 52 MSTORE 025E 81 DUP2 025F 60 PUSH1 0x24 0261 52 MSTORE 0262 30 ADDRESS 0263 60 PUSH1 0x44 0265 52 MSTORE 0266 60 PUSH1 0x80 0268 60 PUSH1 0x64 026A 52 MSTORE 026B 81 DUP2 026C 60 PUSH1 0x84 026E 52 MSTORE 026F 5A GAS 0270 F1 CALL 0271 15 ISZERO 0272 61 PUSH2 0x00e5 0275 57 *JUMPI // Stack delta = -7 // Outputs[7] // { // @025A memory[stack[-3]:stack[-3] + 0x20] = 0x022c0d9f << 0xe0 // @025D memory[0x04:0x24] = stack[-1] // @0261 memory[0x24:0x44] = stack[-3] // @0265 memory[0x44:0x64] = address(this) // @026A memory[0x64:0x84] = 0x80 // @026E memory[0x84:0xa4] = stack[-3] // @0270 memory[stack[-6]:stack[-6] + stack[-7]] = address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) // } // Block ends with conditional jump to 0x00e5, if !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) label_0276: // Incoming jump from 0x0275, if not !address(stack[-2]).call.gas(msg.gas).value(stack[-3])(memory[stack[-4]:stack[-4] + stack[-5]]) 0276 00 *STOP // Stack delta = +0 // Outputs[1] { @0276 stop(); } // Block terminates label_0277: // Incoming call from 0x01EF, returns to 0x01F0 // Incoming call from 0x01A2, returns to 0x01A3 // Inputs[1] { @0278 stack[-1] } 0277 5B JUMPDEST 0278 15 ISZERO 0279 61 PUSH2 0x027e 027C 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x027e, if !stack[-1] label_027D: // Incoming jump from 0x027C, if not !stack[-1] // Inputs[1] { @027D stack[-1] } 027D 56 *JUMP // Stack delta = -1 // Block ends with unconditional jump to stack[-1] label_027E: // Incoming jump from 0x027C, if !stack[-1] // Inputs[1] { @0283 memory[0x00:0x00] } 027E 5B JUMPDEST 027F 50 POP 0280 60 PUSH1 0x00 0282 80 DUP1 0283 FD *REVERT // Stack delta = -1 // Outputs[1] { @0283 revert(memory[0x00:0x00]); } // Block terminates label_0284: // Incoming jump from 0x00EC // Incoming jump from 0x055F // Inputs[1] { @02A7 memory[0x00:0x46] } 0284 5B JUMPDEST 0285 50 POP 0286 62 PUSH3 0x461bcd 028A 60 PUSH1 0xe5 028C 1B SHL 028D 60 PUSH1 0x00 028F 90 SWAP1 0290 81 DUP2 0291 52 MSTORE 0292 60 PUSH1 0x01 0294 60 PUSH1 0xe5 0296 1B SHL 0297 60 PUSH1 0x20 0299 52 MSTORE 029A 62 PUSH3 0x023131 029E 60 PUSH1 0xd0 02A0 1B SHL 02A1 60 PUSH1 0x40 02A3 52 MSTORE 02A4 60 PUSH1 0x46 02A6 90 SWAP1 02A7 FD *REVERT // Stack delta = -1 // Outputs[4] // { // @0291 memory[0x00:0x20] = 0x461bcd << 0xe5 // @0299 memory[0x20:0x40] = 0x01 << 0xe5 // @02A3 memory[0x40:0x60] = 0x023131 << 0xd0 // @02A7 revert(memory[0x00:0x46]); // } // Block terminates label_02A8: // Incoming jump from 0x017A // Inputs[1] { @02CA memory[0x00:0x46] } 02A8 5B JUMPDEST 02A9 50 POP 02AA 62 PUSH3 0x461bcd 02AE 60 PUSH1 0xe5 02B0 1B SHL 02B1 60 PUSH1 0x00 02B3 90 SWAP1 02B4 81 DUP2 02B5 52 MSTORE 02B6 60 PUSH1 0x01 02B8 60 PUSH1 0xe5 02BA 1B SHL 02BB 60 PUSH1 0x20 02BD 52 MSTORE 02BE 61 PUSH2 0x4627 02C1 60 PUSH1 0xd3 02C3 1B SHL 02C4 60 PUSH1 0x40 02C6 52 MSTORE 02C7 60 PUSH1 0x46 02C9 90 SWAP1 02CA FD *REVERT // Stack delta = -1 // Outputs[4] // { // @02B5 memory[0x00:0x20] = 0x461bcd << 0xe5 // @02BD memory[0x20:0x40] = 0x01 << 0xe5 // @02C6 memory[0x40:0x60] = 0x4627 << 0xd3 // @02CA revert(memory[0x00:0x46]); // } // Block terminates label_02CB: // Incoming jump from 0x014B // Inputs[1] { @02EE memory[0x00:0x46] } 02CB 5B JUMPDEST 02CC 50 POP 02CD 62 PUSH3 0x461bcd 02D1 60 PUSH1 0xe5 02D3 1B SHL 02D4 60 PUSH1 0x00 02D6 90 SWAP1 02D7 81 DUP2 02D8 52 MSTORE 02D9 60 PUSH1 0x01 02DB 60 PUSH1 0xe5 02DD 1B SHL 02DE 60 PUSH1 0x20 02E0 52 MSTORE 02E1 62 PUSH3 0x011999 02E5 60 PUSH1 0xd1 02E7 1B SHL 02E8 60 PUSH1 0x40 02EA 52 MSTORE 02EB 60 PUSH1 0x46 02ED 90 SWAP1 02EE FD *REVERT // Stack delta = -1 // Outputs[4] // { // @02D8 memory[0x00:0x20] = 0x461bcd << 0xe5 // @02E0 memory[0x20:0x40] = 0x01 << 0xe5 // @02EA memory[0x40:0x60] = 0x011999 << 0xd1 // @02EE revert(memory[0x00:0x46]); // } // Block terminates label_02EF: // Incoming call from 0x0224, returns to 0x0225 // Inputs[4] // { // @02F0 stack[-4] // @02F0 stack[-1] // @02F1 stack[-3] // @02F3 stack[-2] // } 02EF 5B JUMPDEST 02F0 92 SWAP3 02F1 91 SWAP2 02F2 80 DUP1 02F3 82 DUP3 02F4 10 LT 02F5 60 PUSH1 0x01 02F7 14 EQ 02F8 61 PUSH2 0x0439 02FB 57 *JUMPI // Stack delta = +0 // Outputs[3] // { // @02F0 stack[-4] = stack[-1] // @02F1 stack[-1] = stack[-3] // @02F1 stack[-3] = stack[-4] // } // Block ends with conditional jump to 0x0439, if 0x01 == (stack[-2] < stack[-3]) label_02FC: // Incoming jump from 0x02FB, if not 0x01 == (stack[-2] < stack[-3]) // Inputs[4] // { // @02FE stack[-1] // @0304 stack[-2] // @030B stack[-4] // @030F memory[0x00:0x28] // } 02FC 60 PUSH1 0x60 02FE 1B SHL 02FF 60 PUSH1 0x00 0301 52 MSTORE 0302 60 PUSH1 0x60 0304 1B SHL 0305 60 PUSH1 0x14 0307 52 MSTORE 0308 5B JUMPDEST 0309 60 PUSH1 0x00 030B 91 SWAP2 030C 60 PUSH1 0x28 030E 83 DUP4 030F 20 SHA3 0310 90 SWAP1 0311 80 DUP1 0312 60 PUSH1 0x01 0314 14 EQ 0315 61 PUSH2 0x03e2 0318 57 *JUMPI // Stack delta = +0 // Outputs[5] // { // @0301 memory[0x00:0x20] = stack[-1] << 0x60 // @0307 memory[0x14:0x34] = stack[-2] << 0x60 // @030B stack[-4] = 0x00 // @0310 stack[-2] = keccak256(memory[0x00:0x28]) // @0310 stack[-1] = stack[-4] // } // Block ends with conditional jump to 0x03e2, if 0x01 == stack[-4] label_0319: // Incoming jump from 0x0318, if not 0x01 == stack[-2] // Incoming jump from 0x0318, if not 0x01 == stack[-4] // Inputs[1] { @0319 stack[-1] } 0319 80 DUP1 031A 60 PUSH1 0x02 031C 14 EQ 031D 61 PUSH2 0x038b 0320 57 *JUMPI // Stack delta = +0 // Block ends with conditional jump to 0x038b, if 0x02 == stack[-1] label_0321: // Incoming jump from 0x0320, if not 0x02 == stack[-1] // Inputs[1] { @0323 stack[-1] } 0321 60 PUSH1 0x03 0323 14 EQ 0324 61 PUSH2 0x032c 0327 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x032c, if 0x03 == stack[-1] label_0328: // Incoming jump from 0x0327, if not 0x03 == stack[-1] // Inputs[2] // { // @032A stack[-3] // @032B memory[stack[-3]:stack[-3] + stack[-3]] // } 0328 50 POP 0329 50 POP 032A 80 DUP1 032B FD *REVERT // Stack delta = -3 // Outputs[1] { @032B revert(memory[stack[-3]:stack[-3] + stack[-3]]); } // Block terminates label_032C: // Incoming jump from 0x0327, if 0x03 == stack[-1] // Inputs[3] // { // @0336 stack[-3] // @0355 stack[-1] // @037A stack[-2] // } 032C 5B JUMPDEST 032D 60 PUSH1 0x01 032F 60 PUSH1 0x01 0331 60 PUSH1 0xf8 0333 1B SHL 0334 03 SUB 0335 19 NOT 0336 83 DUP4 0337 52 MSTORE 0338 73 PUSH20 0x04564d04c645b22c9df74043b80b78d8f02740df 034D 60 PUSH1 0x62 034F 1B SHL 0350 60 PUSH1 0x01 0352 52 MSTORE 0353 60 PUSH1 0x15 0355 52 MSTORE 0356 7F PUSH32 0x65d1a3b1e46c6e4f1be1ad5f99ef14dc488ae0549dc97db9b30afe2241ce1c7a 0377 60 PUSH1 0x35 0379 52 MSTORE 037A 90 SWAP1 037B 60 PUSH1 0x55 037D 90 SWAP1 // Stack delta = +0 // Outputs[7] // { // @0337 memory[stack[-3]:stack[-3] + 0x20] = ~((0x01 << 0xf8) - 0x01) // @0352 memory[0x01:0x21] = 0x04564d04c645b22c9df74043b80b78d8f02740df << 0x62 // @0355 memory[0x15:0x35] = stack[-1] // @0379 memory[0x35:0x55] = 0x65d1a3b1e46c6e4f1be1ad5f99ef14dc488ae0549dc97db9b30afe2241ce1c7a // @037A stack[-3] = stack[-2] // @037D stack[-1] = stack[-3] // @037D stack[-2] = 0x55 // } // Block continues label_037E: // Incoming jump from 0x03E1 // Incoming jump from 0x037D // Incoming jump from 0x0438 // Inputs[4] // { // @037F stack[-1] // @037F memory[stack[-1]:stack[-1] + stack[-2]] // @037F stack[-2] // @0389 stack[-3] // } 037E 5B JUMPDEST 037F 20 SHA3 0380 60 PUSH1 0x01 0382 60 PUSH1 0x01 0384 60 PUSH1 0xa0 0386 1B SHL 0387 03 SUB 0388 16 AND 0389 90 SWAP1 038A 56 *JUMP // Stack delta = -2 // Outputs[1] { @0389 stack[-3] = (0x01 << 0xa0) - 0x01 & keccak256(memory[stack[-1]:stack[-1] + stack[-2]]) } // Block ends with unconditional jump to stack[-3] label_038B: // Incoming jump from 0x0320, if 0x02 == stack[-1] // Inputs[3] // { // @0396 stack[-4] // @03B5 stack[-2] // @03DA stack[-3] // } 038B 5B JUMPDEST 038C 50 POP 038D 60 PUSH1 0x01 038F 60 PUSH1 0x01 0391 60 PUSH1 0xf8 0393 1B SHL 0394 03 SUB 0395 19 NOT 0396 83 DUP4 0397 52 MSTORE 0398 73 PUSH20 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f 03AD 60 PUSH1 0x60 03AF 1B SHL 03B0 60 PUSH1 0x01 03B2 52 MSTORE 03B3 60 PUSH1 0x15 03B5 52 MSTORE 03B6 7F PUSH32 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f 03D7 60 PUSH1 0x35 03D9 52 MSTORE 03DA 90 SWAP1 03DB 60 PUSH1 0x55 03DD 90 SWAP1 03DE 61 PUSH2 0x037e 03E1 56 *JUMP // Stack delta = -1 // Outputs[7] // { // @0397 memory[stack[-4]:stack[-4] + 0x20] = ~((0x01 << 0xf8) - 0x01) // @03B2 memory[0x01:0x21] = 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f << 0x60 // @03B5 memory[0x15:0x35] = stack[-2] // @03D9 memory[0x35:0x55] = 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f // @03DA stack[-4] = stack[-3] // @03DD stack[-2] = stack[-4] // @03DD stack[-3] = 0x55 // } // Block ends with unconditional jump to 0x037e label_03E2: // Incoming jump from 0x0318, if 0x01 == stack[-2] // Incoming jump from 0x0318, if 0x01 == stack[-4] // Inputs[3] // { // @03ED stack[-4] // @040C stack[-2] // @0431 stack[-3] // } 03E2 5B JUMPDEST 03E3 50 POP 03E4 60 PUSH1 0x01 03E6 60 PUSH1 0x01 03E8 60 PUSH1 0xf8 03EA 1B SHL 03EB 03 SUB 03EC 19 NOT 03ED 83 DUP4 03EE 52 MSTORE 03EF 73 PUSH20 0x302bb91e38d9638984317de928b85ddf3a793cab 0404 60 PUSH1 0x62 0406 1B SHL 0407 60 PUSH1 0x01 0409 52 MSTORE 040A 60 PUSH1 0x15 040C 52 MSTORE 040D 7F PUSH32 0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303 042E 60 PUSH1 0x35 0430 52 MSTORE 0431 90 SWAP1 0432 60 PUSH1 0x55 0434 90 SWAP1 0435 61 PUSH2 0x037e 0438 56 *JUMP // Stack delta = -1 // Outputs[7] // { // @03EE memory[stack[-4]:stack[-4] + 0x20] = ~((0x01 << 0xf8) - 0x01) // @0409 memory[0x01:0x21] = 0x302bb91e38d9638984317de928b85ddf3a793cab << 0x62 // @040C memory[0x15:0x35] = stack[-2] // @0430 memory[0x35:0x55] = 0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303 // @0431 stack[-4] = stack[-3] // @0434 stack[-2] = stack[-4] // @0434 stack[-3] = 0x55 // } // Block ends with unconditional jump to 0x037e label_0439: // Incoming jump from 0x02FB, if 0x01 == (stack[-2] < stack[-3]) // Inputs[2] // { // @043A stack[-1] // @043A stack[-2] // } 0439 5B JUMPDEST 043A 90 SWAP1 043B 60 PUSH1 0x60 043D 1B SHL 043E 60 PUSH1 0x00 0440 52 MSTORE 0441 60 PUSH1 0x60 0443 1B SHL 0444 60 PUSH1 0x14 0446 52 MSTORE 0447 61 PUSH2 0x0308 044A 56 *JUMP // Stack delta = -2 // Outputs[2] // { // @0440 memory[0x00:0x20] = stack[-2] << 0x60 // @0446 memory[0x14:0x34] = stack[-1] << 0x60 // } // Block ends with unconditional jump to 0x0308 label_044B: // Incoming call from 0x0202, returns to 0x0203 // Incoming call from 0x0046, returns to 0x0047 // Inputs[1] { @0461 stack[-1] } 044B 5B JUMPDEST 044C 73 PUSH20 0xe5e54c60ef117265eef85f1ac666d8e640fe92b6 0461 81 DUP2 0462 14 EQ 0463 73 PUSH20 0x7b34d49fabeeb86d785db00cbe5b730b2afbf2ea 0478 82 DUP3 0479 14 EQ 047A 17 OR 047B 90 SWAP1 047C 73 PUSH20 0x778194cfbbc6d9cb9e2f6e3751fb2a57e8a44186 0491 81 DUP2 0492 14 EQ 0493 73 PUSH20 0xf2d1cd2af1f7f0f076864c0eb3aec70a496e3432 04A8 82 DUP3 04A9 14 EQ 04AA 17 OR 04AB 90 SWAP1 04AC 73 PUSH20 0x94ddd5e97de3a659a1b10e2845857edb01883619 04C1 73 PUSH20 0x24dbfaf6528d7bc3f2847a2972856e191d9f1364 04D6 82 DUP3 04D7 14 EQ 04D8 91 SWAP2 04D9 14 EQ 04DA 17 OR 04DB 17 OR 04DC 17 OR 04DD 15 ISZERO 04DE 61 PUSH2 0x04e3 04E1 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x04e3, if !((stack[-1] == 0x94ddd5e97de3a659a1b10e2845857edb01883619) | (stack[-1] == 0x24dbfaf6528d7bc3f2847a2972856e191d9f1364) | (stack[-1] == 0xf2d1cd2af1f7f0f076864c0eb3aec70a496e3432) | (stack[-1] == 0x778194cfbbc6d9cb9e2f6e3751fb2a57e8a44186) | (stack[-1] == 0x7b34d49fabeeb86d785db00cbe5b730b2afbf2ea) | (stack[-1] == 0xe5e54c60ef117265eef85f1ac666d8e640fe92b6)) label_04E2: // Incoming jump from 0x04E1, if not !((stack[-1] == 0x94ddd5e97de3a659a1b10e2845857edb01883619) | (stack[-1] == 0x24dbfaf6528d7bc3f2847a2972856e191d9f1364) | (stack[-1] == 0xf2d1cd2af1f7f0f076864c0eb3aec70a496e3432) | (stack[-1] == 0x778194cfbbc6d9cb9e2f6e3751fb2a57e8a44186) | (stack[-1] == 0x7b34d49fabeeb86d785db00cbe5b730b2afbf2ea) | (stack[-1] == 0xe5e54c60ef117265eef85f1ac666d8e640fe92b6)) // Inputs[1] { @04E2 stack[-1] } 04E2 56 *JUMP // Stack delta = -1 // Block ends with unconditional jump to stack[-1] label_04E3: // Incoming jump from 0x04E1, if !((stack[-1] == 0x94ddd5e97de3a659a1b10e2845857edb01883619) | (stack[-1] == 0x24dbfaf6528d7bc3f2847a2972856e191d9f1364) | (stack[-1] == 0xf2d1cd2af1f7f0f076864c0eb3aec70a496e3432) | (stack[-1] == 0x778194cfbbc6d9cb9e2f6e3751fb2a57e8a44186) | (stack[-1] == 0x7b34d49fabeeb86d785db00cbe5b730b2afbf2ea) | (stack[-1] == 0xe5e54c60ef117265eef85f1ac666d8e640fe92b6)) // Inputs[1] { @0505 memory[0x00:0x46] } 04E3 5B JUMPDEST 04E4 50 POP 04E5 62 PUSH3 0x461bcd 04E9 60 PUSH1 0xe5 04EB 1B SHL 04EC 60 PUSH1 0x00 04EE 90 SWAP1 04EF 81 DUP2 04F0 52 MSTORE 04F1 60 PUSH1 0x01 04F3 60 PUSH1 0xe5 04F5 1B SHL 04F6 60 PUSH1 0x20 04F8 52 MSTORE 04F9 61 PUSH2 0x2313 04FC 60 PUSH1 0xd4 04FE 1B SHL 04FF 60 PUSH1 0x40 0501 52 MSTORE 0502 60 PUSH1 0x46 0504 90 SWAP1 0505 FD *REVERT // Stack delta = -1 // Outputs[4] // { // @04F0 memory[0x00:0x20] = 0x461bcd << 0xe5 // @04F8 memory[0x20:0x40] = 0x01 << 0xe5 // @0501 memory[0x40:0x60] = 0x2313 << 0xd4 // @0505 revert(memory[0x00:0x46]); // } // Block terminates label_0506: // Incoming call from 0x0233, returns to 0x0234 // Inputs[6] // { // @0507 stack[-3] // @0507 stack[-1] // @050A stack[-2] // @0520 msg.gas // @0521 memory[0x00:0x04] // @0521 address(stack[-1]).staticcall.gas(msg.gas)(memory[0x00:0x04]) // } 0506 5B JUMPDEST 0507 91 SWAP2 0508 60 PUSH1 0x04 050A 91 SWAP2 050B 60 PUSH1 0x60 050D 60 PUSH1 0x00 050F 94 SWAP5 0510 60 PUSH1 0x00 0512 94 SWAP5 0513 85 DUP6 0514 80 DUP1 0515 92 SWAP3 0516 63 PUSH4 0x0240bc6b 051B 60 PUSH1 0xe2 051D 1B SHL 051E 82 DUP3 051F 52 MSTORE 0520 5A GAS 0521 FA STATICCALL 0522 15 ISZERO 0523 61 PUSH2 0x056e 0526 57 *JUMPI // Stack delta = +1 // Outputs[6] // { // @0507 stack[-1] = stack[-3] // @050A stack[0] = stack[-2] // @050F stack[-3] = 0x00 // @0512 stack[-2] = 0x00 // @051F memory[0x00:0x20] = 0x0240bc6b << 0xe2 // @0521 memory[0x00:0x60] = address(stack[-1]).staticcall.gas(msg.gas)(memory[0x00:0x04]) // } // Block ends with conditional jump to 0x056e, if !address(stack[-1]).staticcall.gas(msg.gas)(memory[0x00:0x04]) label_0527: // Incoming jump from 0x0526, if not !address(stack[-1]).staticcall.gas(msg.gas)(memory[0x00:0x04]) // Inputs[1] { @0529 stack[-1] } 0527 60 PUSH1 0x01 0529 14 EQ 052A 61 PUSH2 0x0562 052D 57 *JUMPI // Stack delta = -1 // Block ends with conditional jump to 0x0562, if 0x01 == stack[-1] label_052E: // Incoming jump from 0x052D, if not 0x01 == stack[-1] // Inputs[5] // { // @0530 memory[0x20:0x40] // @0531 stack[-2] // @0532 memory[stack[-2]:stack[-2] + 0x20] // @0533 stack[-1] // @0542 stack[-3] // } 052E 60 PUSH1 0x20 0530 51 MLOAD 0531 91 SWAP2 0532 51 MLOAD 0533 90 SWAP1 0534 5B JUMPDEST 0535 61 PUSH2 0x03e5 0538 92 SWAP3 0539 61 PUSH2 0x03e8 053C 84 DUP5 053D 83 DUP4 053E 02 MUL 053F 91 SWAP2 0540 02 MUL 0541 01 ADD 0542 93 SWAP4 0543 84 DUP5 0544 15 ISZERO 0545 60 PUSH1 0x01 0547 14 EQ 0548 61 PUSH2 0x0552 054B 57 *JUMPI // Stack delta = +2 // Outputs[5] // { // @0533 stack[0] = stack[-1] // @0533 stack[-1] = memory[stack[-2]:stack[-2] + 0x20] // @0538 stack[-2] = 0x03e5 // @0542 stack[1] = stack[-3] // @0542 stack[-3] = memory[0x20:0x40] * 0x03e8 + stack[-1] * 0x03e5 // } // Block ends with conditional jump to 0x0552, if 0x01 == !(memory[0x20:0x40] * 0x03e8 + stack[-1] * 0x03e5) label_054C: // Incoming jump from 0x054B, if not 0x01 == !(memory[0x20:0x40] * 0x03e8 + stack[-1] * 0x03e5) // Incoming jump from 0x054B, if not 0x01 == !(stack[-3] * 0x03e8 + stack[-1] * 0x03e5) // Inputs[5] // { // @054D stack[-2] // @054D stack[-3] // @054E stack[-4] // @054F stack[-5] // @0550 stack[-6] // } 054C 50 POP 054D 02 MUL 054E 02 MUL 054F 04 DIV 0550 90 SWAP1 0551 56 *JUMP // Stack delta = -5 // Outputs[1] { @0550 stack[-6] = (stack[-2] * stack[-3] * stack[-4]) / stack[-5] } // Block ends with unconditional jump to stack[-6] label_0552: // Incoming jump from 0x054B, if 0x01 == !(memory[0x20:0x40] * 0x03e8 + stack[-1] * 0x03e5) // Incoming jump from 0x054B, if 0x01 == !(stack[-3] * 0x03e8 + stack[-1] * 0x03e5) // Inputs[3] // { // @0553 stack[-6] // @0553 stack[-1] // @0554 stack[-5] // } 0552 5B JUMPDEST 0553 94 SWAP5 0554 93 SWAP4 0555 50 POP 0556 50 POP 0557 50 POP 0558 50 POP 0559 61 PUSH2 0x0560 055C 61 PUSH2 0x0284 055F 56 *JUMP // Stack delta = -3 // Outputs[3] // { // @0553 stack[-6] = stack[-1] // @0554 stack[-5] = stack[-6] // @0559 stack[-4] = 0x0560 // } // Block ends with unconditional jump to 0x0284 0560 5B JUMPDEST 0561 56 *JUMP label_0562: // Incoming jump from 0x052D, if 0x01 == stack[-1] // Inputs[4] // { // @0563 stack[-1] // @0563 stack[-2] // @0564 memory[stack[-2]:stack[-2] + 0x20] // @0568 memory[0x20:0x40] // } 0562 5B JUMPDEST 0563 90 SWAP1 0564 51 MLOAD 0565 90 SWAP1 0566 60 PUSH1 0x20 0568 51 MLOAD 0569 90 SWAP1 056A 61 PUSH2 0x0534 056D 56 *JUMP // Stack delta = +1 // Outputs[3] // { // @0565 stack[-2] = memory[stack[-2]:stack[-2] + 0x20] // @0569 stack[-1] = memory[0x20:0x40] // @0569 stack[0] = stack[-1] // } // Block ends with unconditional jump to 0x0534 label_056E: // Incoming jump from 0x0526, if !address(stack[-1]).staticcall.gas(msg.gas)(memory[0x00:0x04]) // Inputs[4] // { // @0578 stack[-3] // @058E stack[-5] // @0590 stack[-4] // @0592 memory[stack[-3]:stack[-3] + 0x46] // } 056E 5B JUMPDEST 056F 50 POP 0570 50 POP 0571 62 PUSH3 0x461bcd 0575 60 PUSH1 0xe5 0577 1B SHL 0578 81 DUP2 0579 52 MSTORE 057A 60 PUSH1 0x01 057C 60 PUSH1 0xe5 057E 1B SHL 057F 60 PUSH1 0x20 0581 52 MSTORE 0582 62 PUSH3 0x011899 0586 60 PUSH1 0xd1 0588 1B SHL 0589 60 PUSH1 0x40 058B 52 MSTORE 058C 60 PUSH1 0x46 058E 92 SWAP3 058F 50 POP 0590 90 SWAP1 0591 50 POP 0592 FD *REVERT // Stack delta = -5 // Outputs[4] // { // @0579 memory[stack[-3]:stack[-3] + 0x20] = 0x461bcd << 0xe5 // @0581 memory[0x20:0x40] = 0x01 << 0xe5 // @058B memory[0x40:0x60] = 0x011899 << 0xd1 // @0592 revert(memory[stack[-3]:stack[-3] + 0x46]); // } // Block terminates
Found this site useful?
Donations are greatly appreciated!
ETH: 0xB3F04f0c276fa1177c1779f6E1E156B2738ea392
Contact/hire: [email protected]