BNB Chain
0x3cb86f4cb59ccec045bacbde54341aae09e87bfb
Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.
Decompilation outputBNB Chain · 0x3cb86f4c…09e87bfb9.0 KB3.9 s
This result is permanently available athttps://decompiler.exvul.com/bsc/0x3cb86f4cb59ccec045bacbde54341aae09e87bfb
412 lines · Click a variable or keyword to highlight its references · Click a line number to copy its link; Shift-click to copy a block link
//decompiled by exvvul decompiler tool contact@exvul.com https://x.com/exvulsec// SPDX-License-Identifier: MIT >=0.8.0; { = 74447917106227587185069542233768419360415527974423666340979253117352358844277; = 102547770735452218668329474129228402032596641604203437911260885007774093348292; = 0; ; // STORAGE[0x0] bytes 0 to 19 ; // STORAGE[0x0] bytes 20 to 20 ; // STORAGE[0x2] bytes 0 to 19 ( => ) ; ( => ) ; ( => ) ; ( => ) ; ( => ) ; ( => ) ; ; ; ; ( , , ); ( , , ); (, , ); ( , ); ( ) { ("memory-safe") { (0x00, (224, 0x4e487b71)) (0x04, ) (0x00, 0x24) } } () { ( == (.), "Ownable: caller is not the owner"); ; } ( ) () { ( == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000)); = (0xffffffff00000000000000000000000000000000000000000000000000000000 & ) == 0x7965db0b00000000000000000000000000000000000000000000000000000000; (0xffffffff00000000000000000000000000000000000000000000000000000000 & != 0x7965db0b00000000000000000000000000000000000000000000000000000000) { = (0xffffffff00000000000000000000000000000000000000000000000000000000 & ) == 0x1ffc9a700000000000000000000000000000000000000000000000000000000; } ; } ( , ) { (!(. <= 0xffffffffffffffff)) (65); ; ( + (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) > 0xffffffffffffffff || + (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < ) (65); = + ((((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (((0x04 + ) + 0x20) + <= (0x04 + (.. - 0x04))); (!, "Pausable: paused"); ( > 0x0, "Amount is zero"); (.. != 0x0); ( , ) = .(.((0x70a08231), .)); // staticcall balanceOf (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); = .(, ()); ( == ); (!( < ), "Insufficient balance"); (.. != 0x0); ( , ) = .(., ()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); = .(, ()); ( == ); (!( < ), "Transfer amount exceeds allowance"); (.. != 0x0); ( , ) = .(.((0x70a08231), .)); // staticcall balanceOf (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); = .(, ()); ( == ); = (0x24 + ) + 0x60; = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); (.. > 0x0, "Address: call to non-contract"); = 0; ; () { = ; ( >= ) { ; } ( + 0x20 >= ) { ; } = ( + 0x20) + 0x20; = + 0x20; } ( > ) { } ( , ) = ().{ : 0 }(, , ); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!( > 0)); = 0; ; () { = ; ( >= ) { ; } ( + 0x20 >= ) { ; } = ( + 0x20) + 0x20; = + 0x20; } ( > ) { } ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } ( > 0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } (.. != 0x0); ( , ) = .(.((0x70a08231), .)); // staticcall balanceOf (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); ( == ); = 0; ; () { = ; ( >= ) { ; } ( + 0x20 >= ) { ; } = ( + 0x20) + 0x20; = + 0x20; } ( > ) { } (., ( - ), ( + 0x60) - , ); } () () { (.. != 0x0); ( , ) = .(.((0x70a08231), ())); // staticcall balanceOf (); ; = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); = .(, ()); (); } ( ) () { (); } ( , ) { (, ); } ( , ) { ( == ., "AccessControl: can only renounce roles for self"); (([] / 0x01)) { [] = (0 * 0x01) | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []); (, , (.)); } } () { (, (0)); = (0); } ( , ) { (, ); } ( ) { ( != (0), "Ownable: new owner is the zero address"); (, ); = ; } ( , ) { // Decompilation incomplete: helper effect provenance is conservative. (!((([(.)] / 0x01)))) { (!(0x2 * 0x14 + 0x2 <= 0xffffffffffffffff)) (65); ; = + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x14) + 0x02)))); = (0x02 * 0x14) + 0x02; ((0x02 * 0x14) + 0x02 != 0) { = (0x20 + ) + (((0x02 * 0x14) + 0x02) * 0x01); } (!(0 < .)) (50); (!(0x01 < .)) (50); = (0x02 * 0x14) + 0x01; = (.); ; () { = ; = ; ( <= 0x1) { ; } (!(( & 0xf) < 0x10)) (50); (!( < .)) (50); ( - 0x1 <= 0x1) { ; } (!(( >> 0x04) & (0x0f) < 0x10)) (50); (!(( - 0x01) < .)) (50); = ( - 0x01) - 0x01; = ( >> 0x04) >> 0x04; = - 0x01; = >> 0x04; } ( == 0x0, "Strings: hex length insufficient"); (!(0x2 * 0x20 + 0x2 <= 0xffffffffffffffff)) (65); = + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x20) + 0x02)))); = (0x02 * 0x20) + 0x02; ((0x02 * 0x20) + 0x02 != 0) { = (0x20 + ) + (((0x02 * 0x20) + 0x02) * 0x01); } (!(0 < .)) (50); (!(0x01 < .)) (50); = (0x02 * 0x20) + 0x01; = ( >> 0); ; () { = ; = ; ( <= 0x1) { ; } (!(( & 0xf) < 0x10)) (50); (!( < .)) (50); ( - 0x1 <= 0x1) { ; } (!(( >> 0x04) & (0x0f) < 0x10)) (50); (!(( - 0x01) < .)) (50); = ( - 0x01) - 0x01; = ( >> 0x04) >> 0x04; = - 0x01; = >> 0x04; } ( == 0x0, "Strings: hex length insufficient"); = 0; () { ( >= ) { ; } = + 0x20; = 0; () { ( >= ) { ; } = + 0x20; = ((((0x20 + ) + 0x17) + + 0x11) + ); = 0; () { = ; ( >= ) { ; } ( + 0x20 >= ) { ; } = ( + 0x20) + 0x20; = + 0x20; } ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } } (!((([] / 0x01)))) { [] = (0x01 * 0x01) | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []); (, , (.)); } } ( , ) { // Decompilation incomplete: helper effect provenance is conservative. (!((([(.)] / 0x01)))) { (!(0x2 * 0x14 + 0x2 <= 0xffffffffffffffff)) (65); ; = + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x14) + 0x02)))); = (0x02 * 0x14) + 0x02; ((0x02 * 0x14) + 0x02 != 0) { = (0x20 + ) + (((0x02 * 0x14) + 0x02) * 0x01); } (!(0 < .)) (50); (!(0x01 < .)) (50); = (0x02 * 0x14) + 0x01; = (.); ; () { = ; = ; ( <= 0x1) { ; } (!(( & 0xf) < 0x10)) (50); (!( < .)) (50); ( - 0x1 <= 0x1) { ; } (!(( >> 0x04) & (0x0f) < 0x10)) (50); (!(( - 0x01) < .)) (50); = ( - 0x01) - 0x01; = ( >> 0x04) >> 0x04; = - 0x01; = >> 0x04; } ( == 0x0, "Strings: hex length insufficient"); (!(0x2 * 0x20 + 0x2 <= 0xffffffffffffffff)) (65); = + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x20) + 0x02)))); = (0x02 * 0x20) + 0x02; ((0x02 * 0x20) + 0x02 != 0) { = (0x20 + ) + (((0x02 * 0x20) + 0x02) * 0x01); } (!(0 < .)) (50); (!(0x01 < .)) (50); = (0x02 * 0x20) + 0x01; = ( >> 0); ; () { = ; = ; ( <= 0x1) { ; } (!(( & 0xf) < 0x10)) (50); (!( < .)) (50); ( - 0x1 <= 0x1) { ; } (!(( >> 0x04) & (0x0f) < 0x10)) (50); (!(( - 0x01) < .)) (50); = ( - 0x01) - 0x01; = ( >> 0x04) >> 0x04; = - 0x01; = >> 0x04; } ( == 0x0, "Strings: hex length insufficient"); = 0; () { ( >= ) { ; } = + 0x20; = 0; () { ( >= ) { ; } = + 0x20; = ((((0x20 + ) + 0x17) + + 0x11) + ); = 0; () { = ; ( >= ) { ; } ( + 0x20 >= ) { ; } = ( + 0x20) + 0x20; = + 0x20; } ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } } ((([] / 0x01))) { [] = (0 * 0x01) | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []); (, , (.)); } } // Note: This selector table is synthetic and is not part of the original Solidity source. // It records the recovered selector-to-signature mapping without executable behavior. // 0x01ffc9a7 => supportsInterface(bytes4) // 0x08134567 => lockTokens(uint256,string) // 0x0eb34740 => lockedTokens() // 0x248a9ca3 => getRoleAdmin(bytes32) // 0x2f2ff15d => grantRole(bytes32,address) // 0x36568abe => renounceRole(bytes32,address) // 0x5c975abb => paused() // 0x715018a6 => renounceOwnership() // 0x75b238fc => ADMIN_ROLE() // 0x8da5cb5b => owner() // 0x91d14854 => unresolved_91d14854(uint256,address) // 0x926d7d7f => RELAYER_ROLE() // 0xa217fddf => DEFAULT_ADMIN_ROLE() // 0xd547741f => revokeRole(bytes32,address) // 0xf2fde38b => transferOwnership(address) // 0xfc0c546a => token()}