BNB Chain
0xd5f7d51549b249c53303d594f19887477fa9ab89
Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.
Decompilation outputBNB Chain · 0xd5f7d515…7fa9ab895.1 KB3.2 s
This result is permanently available athttps://decompiler.exvul.com/bsc/0xd5f7d51549b249c53303d594f19887477fa9ab89
353 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; { ( ) ( ); ( , ) ( );} { ; // STORAGE[0x0] [] ; // STORAGE[0x1] ; // STORAGE[0x2] ; // STORAGE[0x3] [] ; // STORAGE[0x4] ; // STORAGE[0x4] [] ; // STORAGE[0x5] ; // STORAGE[0x5] ; // STORAGE[0x6] ; // STORAGE[0x7] ; // STORAGE[0x8] ; // STORAGE[0x9] ; // STORAGE[0xa] ( => ) ; // STORAGE[0xb] ( => ) ; // STORAGE[0xc] ( => ) ; // STORAGE[0xd] ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ( , ); () { (. == , "Ownable: caller is not the owner"); ; } () { ( != 0x0) { = (( * .) / ) + ; } } () { // Synthetic compatibility routes preserve original selectors for unresolved names. ((.. >= 4) && (. == 0xb10be8af)) { // Route to Unknown_b10be8af(address) after replacing only msg.sig. ((0xda3bf9a1)); ; } (); } ( ) { ( <= 0x64, "Percent cannot exceed 100"); = ; } ( ) { = ; } ( ) { = ; } ( , ) { (. == || . == ); = ().(()); ().(, ); } ( ) ( ) { .(([]), , ); } () { . = 0x01 + .; (![.], "account is blocklist"); ([.] != 0) { = ((( * ) / ) - ) + ; } ( != 0x0, "Nothing to claim"); = + ; = 0; ( , ) = (.).{ : }(""); // call = 0x60; (. != 0) { ; = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (, "Failed to transfer rewards"); = ( * [.]) / ; (. == ., "ReentrancyGuard: reentrant call"); } ( ) { (); } ( ) ( ) { = 0; ((( * []) / ) > ) { = (( * []) / ) - ; } .([], , + ); } ( ) ( ) { .([], , , , ); } () { (, (0)); = (0); } ( ) { (. == || . == ); ( , ) = .{ : (). }(""); // call = 0x60; (. != 0) { ; = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (, "BNB transfer failed"); } ( ) { . = 0x01 + .; (.. != 0x0); ( , ) = .(.((0x23b872dd), ., (), )); // call transferFrom (); ([.] != 0) { = ((( * ) / ) - ) + ; } = + ; = 0x01 + ; [.] = + [.]; = + 0x01; = ; ; = + 0x60; [] = (. & (0xffffffffffffffffffffffffffffffffffffffff)) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); = ; = ; = ( * [.]) / ; (. == ., "ReentrancyGuard: reentrant call"); } ( ) { = ; } ( ) () { = 0; = 0; () { (!( < )) { ; } ; (!(. < ( + ))) { = ( * (((. - ( + )) / ) + 0x01)) * ; = * (((. - ( + )) / ) + 0x01); (!(( * (((. - ( + )) / ) + 0x01)) > 0x64)) { } { = 0x64 * ; = 0x64; } = ( / 0x64) + ; } { = ; } = 0x01 + ; = ; } ( <= ) { 0; } - ; } ( , ) { [] = ; } ( ) { ( != (0), "Ownable: new owner is the zero address"); (, ); = ; } ( ) { // Decompilation incomplete: helper effect provenance is conservative. . = 0x01 + .; (![.], "account is blocklist"); (!( > [.]), "Insufficient staked amount"); = 0; = (.(., 0x0c)); = 0; = .; () { (!( < [])) { ; } ; (!(. < ( + ))) { = ( * (((. - ( + )) / ) + 0x01)) * ; = * (((. - ( + )) / ) + 0x01); (( * (((. - ( + )) / ) + 0x01)) > 0x64) { = 0x64 * ; = 0x64; } = ( / 0x64) + ; } { = ; } (!((0x01 + ) < [])) { ; } ; (!(. < ( + ))) { = ( * (((. - ( + )) / ) + 0x01)) * ; = * (((. - ( + )) / ) + 0x01); (( * (((. - ( + )) / ) + 0x01)) > 0x64) { = 0x64 * ; = 0x64; } = ( / 0x64) + ; } { = ; } = (0x01 + (0x01 + )); = ; = ; = ; ( <= ) { (0 >= , "Requested unstake amount exceeds unlocked amount"); ([.] != 0) { = ((( * ) / ) - ) + ; } = - ; [((.(., 0x0c)))] = + [((.(., 0x0c)))]; = - ; ().(., ); [((.(., 0x0c)))] = ( * ) / ; (. == ., "ReentrancyGuard: reentrant call"); } (( - ) >= , "Requested unstake amount exceeds unlocked amount"); ([.] != 0) { = ((( * ) / ) - ) + ; } = - ; [((.(., 0x0c)))] = + [((.(., 0x0c)))]; = - ; ().(., ); [((.(., 0x0c)))] = ( * ) / ; (. == ., "ReentrancyGuard: reentrant call"); } = ( - ); (!( > )) { = 0; } ( >= , "Requested unstake amount exceeds unlocked amount"); ([.] != 0) { = (((( * ) / ) - ) + ); } = - ; = + ; = - ; ().(., ); = ( * [.]) / ; (. == ., "ReentrancyGuard: reentrant call"); } ( ) { { := (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. // 0x0247497e => setMonthlyUnlockPercent(uint256) // 0x0d118899 => MONTHLY_UNLOCK_PERCENT() // 0x0d668087 => lockTime() // 0x144fa6d7 => setToken(address) // 0x2e3c9e99 => managerAddr() // 0x322f1b35 => setUnlockInterval(uint256) // 0x32fcd966 => ACC_PRECISION() // 0x3aeac4e1 => withdrawToken(address,address) // 0x4e5919ef => _orders(uint256) // 0x4e71d92d => claim() // 0x5ce10521 => UNLOCK_INTERVAL() // 0x5d3eea91 => unStake(uint256) // 0x6386c1c7 => getUserInfo(address) // 0x6f17d611 => _userInfo(address) // 0x715018a6 => renounceOwnership() // 0x72609471 => withdrawBNB(address) // 0x817b1cd2 => totalStaked() // 0x8da5cb5b => owner() // 0xa694fc3a => stake(uint256) // 0xae04d45d => setLockTime(uint256) // 0xb10be8af => Unknown_b10be8af(address) // 0xbe374423 => orderIdCounter() // 0xbf048b0d => _isBlockList(address) // 0xc2412676 => Token() // 0xcd3daf9d => rewardPerToken() // 0xe7acf131 => setBlockList(address,bool) // 0xf2fde38b => transferOwnership(address)}