BNB Chain
0x122c78522df6ed04a467cebe1d759971e8ed036c
Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.
Decompilation outputBNB Chain · 0x122c7852…e8ed036c7.9 KB31.4 s
This result is permanently available athttps://decompiler.exvul.com/bsc/0x122c78522df6ed04a467cebe1d759971e8ed036c
1,010 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; { ( ) ( );} { = 86400; = 10; = (0x2ab198e0078a8a233b8e7685356cb76482b9e681); ; // STORAGE[0x0] ; // STORAGE[0x1] ( => ) ; // STORAGE[0x2] ( => ) ; // STORAGE[0x3] ; // STORAGE[0x4] ; // STORAGE[0x5] [] ; // STORAGE[0x6] ; // STORAGE[0x6] ( => ) ; // STORAGE[0x7] ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; (); (); (); ( , , ); (); (); (); (); (); (); ( , ); (); (); (); ( , ); ( ) { ("memory-safe") { (0x00, (224, 0x4e487b71)) (0x04, ) (0x00, 0x24) } } () { // Synthetic compatibility routes preserve original selectors for unresolved names. ((.. >= 4) && (. == 0x0b1884a5)) { // Route to Unknown_0b1884a5(address) after replacing only msg.sig. ((0xe251ca66)); ; } ((.. >= 4) && (. == 0x495a0e05)) { // Route to Unknown_495a0e05(uint256,address) after replacing only msg.sig. ((0x1293f018)); ; } ((.. >= 4) && (. == 0xd4e99a36)) { // Route to Unknown_d4e99a36(address) after replacing only msg.sig. ((0xbedaf0de)); ; } ((.. >= 4) && (. == 0xf66d4b58)) { // Route to Unknown_f66d4b58(uint256,uint256,uint256,uint256,uint256) after replacing only msg.sig. ((0x0e68ca64)); ; } (); } ( ) () { (); ; } ( ) ( ) { (0x0 != ) { (!(( - 0x01) < )) (50); } { .(0, 0); } } () () { (!(( / 0x010000000000000000000000000000000000000000)), "Pausable: paused"); ( != 0x2, "ReentrancyGuard: reentrant call"); = 0x02; (0x0 != ) { (!(( - 0x01) < )) (50); = ((. - ) / 0x015180) - ; ; (0x0 != ) { (!(( - 0x01) < )) (50); ; = 0xe0 + ; = ( * (((. - ) / 0x015180) - )) + ; (( * (((. - ) / 0x015180) - )) + + > ) { = - ; } = ; } { = 0; = 0; } ( != 0x0) { = ; () { = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } = - ((0x05 * ) / 0x64); } = ; () { = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } = - ((0x05 * ) / 0x64); } = + ; = + ; = 0; = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); (., ); } } (0x0 != , ()); = 0x01; // duplicate declaration of value1 omitted } { (0 != 0x0, ()); = 0x01; 0; } } ( , ) () { (!(( / 0x010000000000000000000000000000000000000000)), "Pausable: paused"); ( != 0x2, "ReentrancyGuard: reentrant call"); = 0x02; ( == 0x0, ()); ( >= ([] / 0x0a)) { (); } (!( == 0x0 && != ), ()); = 0x01 + ; [] = 0x05 + []; (![.]) { [.] = ; = + 0x01; [] = . | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); } (0x0 != ) { (!(( - 0x01) < )) (50); ; (0x0 != ) { (!(( - 0x01) < )) (50); = 0xe0 + ; } = 0; ( != 0) { (!(( - 0x01) < )) (50); (!( < ), ()); = 0x01; } (((0xffffffffffffffffffffffffffffffffffffffff & [.]) == 0x0) && (( != (0)) && ( == 0x0))) { [.] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & [.]); } = 0; = .; () { = + 0x01; = ; = ; = ; = ; = ; = ; = ; = 0x0160 + ; ( >= 0xb) { ; } = !(); ( != (0)) { = == []; } () { = 0x84 + ; = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(, , ); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0x20; = ; = 0; () { ( >= ) { ; } = ; = 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"); } } { (0x0 == ) { (0x2ab198e0078a8a233b8e7685356cb76482b9e681.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { ((0x20 + ) + - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); (., , ); = 0x01; ; } ; } (0x0 != ) { (!(( - 0x01) < )) (50); = 0xe0 + ; ( != ) { (( - 0x01) > ) { (17); ; } (!(( - 0x01) < )) (50); (!( < 0xb)) (50); ( >= ) { ; } (!(() == (() * / ) | (!()))) { (17); ; } ( > ((() * / 0x64) + )) { (17); ; } = (() * / 0x64) + ; } { } } { } = 0x01 + ; = []; } = 0x84 + ; = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(, , ); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0x20; = ; = 0; () { ( >= ) { ; } = ; = 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"); } } { (0x0 == ) { (0x2ab198e0078a8a233b8e7685356cb76482b9e681.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { ((0x20 + ) + - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); (., , ); = 0x01; ; } } { = 0; ( != 0) { (!(( - 0x01) < )) (50); (!( < ), ()); = 0x01; } (((0xffffffffffffffffffffffffffffffffffffffff & [.]) == 0x0) && (( != (0)) && ( == 0x0))) { [.] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & [.]); } = 0; = .; () { = + 0x01; = ; = ; = ; = ; = ; = ; = ; = 0x0160 + ; ( >= 0xb) { ; } = !(); ( != (0)) { = == []; } () { = 0x84 + ; = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(, , ); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0x20; = ; = 0; () { ( >= ) { ; } = ; = 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"); } } { (0x0 == ) { (0x2ab198e0078a8a233b8e7685356cb76482b9e681.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { ((0x20 + ) + - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); (., , ); = 0x01; ; } ; } (0x0 != ) { (!(( - 0x01) < )) (50); = 0xe0 + ; ( != ) { (( - 0x01) > ) { (17); ; } (!(( - 0x01) < )) (50); (!( < 0xb)) (50); ( >= ) { ; } (!(() == (() * / ) | (!()))) { (17); ; } ( > ((() * / 0x64) + )) { (17); ; } = (() * / 0x64) + ; } { } } { } = 0x01 + ; = []; } = 0x84 + ; = 0x40 + ; (!((). < 0), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = (0x2ab198e0078a8a233b8e7685356cb76482b9e681).{ : 0 }(, , ); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (0x2ab198e0078a8a233b8e7685356cb76482b9e681.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { ((0x20 + ) + - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); (., , ); = 0x01; ; } } } ( ) { (. == , "Ownable: caller is not the owner"); = ().(()); (0 - , ()); (!((). < ), "Address: insufficient balance for call"); = 0; () { = ; (!( < )) { ; } (!((0x20 + ) < )) { ; } = 0x20 + (0x20 + ); = 0x20 + ; } ( , ) = ().{ : }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { (!( < )) { ; } (!((0x20 + ) < )) { ("SafeERC20: low-level call failed"); ; } = 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"); } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } = (0 == ) ? 1 : 0; (0 != ) { ( - >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } } () () { !(!(( / 0x010000000000000000000000000000000000000000))); } ( ) ( ) { = + 0x20; = 0; () { (!( < )) { ; } = 0xe0 + ; = 0x20 + ; = 0x01 + ; } = 0; = + 0x80; = 0x20 + ; () { (!( < )) { ; } = 0x01 + ; = + 0xe0; = 0x20 + ; } .(0x20, (.), 0x40, ); } () { (. == , "Ownable: caller is not the owner"); (, (0)); = (0); } () () { ; } ( , ) { (. == , "Ownable: caller is not the owner"); = ; = ; } ( , ) { (. == , "Ownable: caller is not the owner"); (0x0 != , ()); = ().(()); (!( < ), ()); ; = 0x64 + ; (!((). < ), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = ().{ : }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { (!( < )) { ; } = 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"); } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } = (0 == ) ? 1 : 0; (0 != ) { ( - >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } } } ( ) { (. == , "Ownable: caller is not the owner"); (!) { (( / 0x010000000000000000000000000000000000000000) != 0x0, "Pausable: not paused"); = (0xffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff) & ; (.); } { (!(( / 0x010000000000000000000000000000000000000000)), "Pausable: paused"); = 0x010000000000000000000000000000000000000000 | (0xffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff & ); (.); } } ( ) ( ) { = + 0xa0; .(., , , , ); } ( ) () { (0x0 == ) { ; } (!(( - 0x01) < )) (50); ( == ) { ; } ; } () { (. == , "Ownable: caller is not the owner"); (0x0 != ()., ()); (!((). < ().), "Address: insufficient balance"); ( , ) = .{ : (). }(""); // call = 0x60; (. != 0) { ; = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (, "Address: unable to send value, recipient may have reverted"); } ( ) { (. == , "Ownable: caller is not the owner"); (0x0 != , ()); (!((). < ), ()); (!((). < ), "Address: insufficient balance"); ( , ) = .{ : }(""); // call = 0x60; (. != 0) { ; = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (, "Address: unable to send value, recipient may have reverted"); } ( ) { (. == , "Ownable: caller is not the owner"); ( != (0), "Ownable: new owner is the zero address"); (, ); = ; } ( , , , , ) { (. == , "Ownable: caller is not the owner"); ( == 0x0, ()); [] = ; = ; = ; = ; } ( ) { // Decompilation incomplete: helper effect provenance is conservative. (. == , "Ownable: caller is not the owner"); (0x0 != , ()); (!(( - 0x01) < )) (50); = ; = (); (0x0 != , ()); } ( ) () { // Decompilation incomplete: helper effect provenance is conservative. ; (0x0 != ) { (!(( - 0x01) < )) (50); = (((. - ) / 0x015180) - ); ; (0x0 != ) { (!(( - 0x01) < )) (50); ; = 0xe0 + ; = ( * (((. - ) / 0x015180) - ) + ); ( * (((. - ) / 0x015180) - ) + + > ) { = ( - ); } = ; } { = 0; = 0; } ( != 0x0) { = ; () { = 0x40 + ; (!((). < ), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = ().{ : }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } = ( - (((0x05 * ) / 0x64))); } = ; () { = 0x40 + ; (!((). < ), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = ().{ : }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); } = ( - (((0x05 * ) / 0x64))); } = ( + ); = ( + ); = 0; = 0x40 + ; (!((). < ), "Address: insufficient balance for call"); = 0; () { ( >= ) { ; } = 0x20 + ; ( , ) = ().{ : }(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (!) { (!); = 0; () { ( >= ) { ; } = 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"); } } { (0x0 == ) { (.. != 0x0, "Address: call to non-contract"); } } = (0 == ) ? 1 : 0; (0 != ) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ( != 0x0)); = ; } ( != 0x0, "SafeERC20: ERC20 operation did not succeed"); (, ); } } ; } { 0; } } ( ) { { := (0x40) (, 0, ()) (, (((), 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff), (224, (, 0xffffffff)))) := ((), (), , (), 0, 0) := () (, 0, ) 0 { (, ) } { (, ) } } } // 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. // 0x099837b7 => userRegistrations(address) // 0x0b1884a5 => Unknown_0b1884a5(address) // 0x31d7a262 => pendingRewards(address) // 0x365b98b2 => users(uint256) // 0x372500ab => claimRewards() // 0x495a0e05 => Unknown_495a0e05(uint256,address) // 0x58e6d53c => DAY_SECONDS() // 0x5a65a203 => withdrawERC20All(address) // 0x5c975abb => paused() // 0x6386c1c7 => getUserInfo(address) // 0x715018a6 => renounceOwnership() // 0x88ece43f => miningAddress() // 0x8da5cb5b => owner() // 0x90107afe => setAddresses(address,address) // 0x918f8674 => DENOMINATOR() // 0xa1db9782 => withdrawERC20(address,uint256) // 0xb5cb15f7 => getUserCount() // 0xbedb86fb => setPause(bool) // 0xbfbf0969 => getVIPInfo(uint256) // 0xc64bb4ff => AIT() // 0xd4e99a36 => Unknown_d4e99a36(address) // 0xe1cf5189 => withdrawETHAll() // 0xf14210a6 => withdrawETH(uint256) // 0xf2fde38b => transferOwnership(address) // 0xf66d4b58 => Unknown_f66d4b58(uint256,uint256,uint256,uint256,uint256) // 0xfcf07c6b => foundationAddress()}