BNB Chain
0x6afe99e0105af17b0aa24a9fd88169c22682eaa8
Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.
Decompilation outputBNB Chain · 0x6afe99e0…2682eaa820.5 KB87.4 s
This result is permanently available athttps://decompiler.exvul.com/bsc/0x6afe99e0105af17b0aa24a9fd88169c22682eaa8
2,729 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 [email protected] https://x.com/exvulsec// SPDX-License-Identifier: MITpragma solidity >=0.8.0;interface IDesolexERC20 { function balanceOf(address account) external view returns (uint256 balance); function transfer(address recipient, uint256 amount) external returns (bool success); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool success); function decimals() external view returns (uint8 value);}contract DesolexContract { uint256 public constant MAX_INT = 115792089237316195423570985008687907853269984665640564039457584007913129639935; uint256 public constant DEFAULT_ADMIN_ROLE = 0; uint256 stor_0; // STORAGE[0x0] uint256[] array_1; // STORAGE[0x1] uint256[] array_2; // STORAGE[0x2] bytes32[] array_4; // STORAGE[0x4] uint256[] array_6; // STORAGE[0x6] mapping(bytes32 => uint256) public getRoleMemberCount; // STORAGE[0x65] bool public paused; // STORAGE[0x97] bytes 0 to 0 bool stor_c9_0_0; // STORAGE[0xc9] bytes 0 to 0 address[] public stakerAddresses; // STORAGE[0xfb] uint256[] public stakerAmounts; // STORAGE[0xfc] address stor_fd; // STORAGE[0xfd] address public rewardsAddress; // STORAGE[0xfe] uint256 public maxStakingAmount; // STORAGE[0xff] uint256 public currentTotalStake; // STORAGE[0x100] uint256 public unstakingPeriod; // STORAGE[0x101] uint256 public apy; // STORAGE[0x102] uint256 stor_103; // STORAGE[0x103] uint256 public rewardsDistributed; // STORAGE[0x104] uint256 public rewardsWithdrawn; // STORAGE[0x105] uint256 public totalRewardsDistributed; // STORAGE[0x106] mapping(address => uint256) mapping_107; // STORAGE[0x107] mapping(address => uint256) mapping_108; // STORAGE[0x108] uint256[] public feeDurations; // STORAGE[0x109] uint256[] public feeBurnPcts; // STORAGE[0x10a] uint256[] public feeRewardPcts; // STORAGE[0x10b] address public feeRewardAddress; // STORAGE[0x10c] uint256 rewardsDistributedLastDate2; // STORAGE[0x10d] mapping(address => bool) mapping_expr_bg; mapping(address => uint256) mapping_expr_bj; mapping(address => uint256) mapping_expr_bk; mapping(address => uint256) mapping_expr_bp; mapping(bytes32 => bytes32) mapping_expr_dr; // DESOLEX_RAW_STORAGE: mapping key 0: address [VerifiedAbi] vs bytes32 [VerifiedAbi] (ambiguous) mapping(address => bool) mapping_expr_es; mapping(address => bool) mapping_expr_eu; mapping(address => bool) mapping_expr_k; bytes32 stor_expr_a; uint256 stor_expr_ad; bytes32 stor_expr_ae; bytes32 stor_expr_af; bytes32 stor_expr_ag; bool stor_expr_ah; uint256 stor_expr_ai; bytes32 stor_expr_aj; uint256 stor_expr_al; uint256 stor_expr_am; uint256 stor_expr_an; uint256 stor_expr_ao; uint256 stor_expr_ap; uint256 stor_expr_at; bytes32 stor_expr_au; bytes32 stor_expr_av; bytes32 stor_expr_ax; bool stor_expr_b; bytes32 stor_expr_ba; uint256 stor_expr_bb; bytes32 stor_expr_bc; bytes32 stor_expr_bd; bytes32 stor_expr_be; uint256 stor_expr_bh; address stor_expr_bi; uint256 stor_expr_bl; uint256 stor_expr_bm; bytes32 stor_expr_bn; uint256 stor_expr_bo; bytes32 stor_expr_bq; bytes32 stor_expr_bu; bytes32 stor_expr_bv; bytes32 stor_expr_bw; bytes32 stor_expr_bx; bytes32 stor_expr_by; bytes32 stor_expr_bz; uint256 stor_expr_c; bytes32 stor_expr_cc; bool stor_expr_cd; uint256 stor_expr_ce; uint256 stor_expr_cf; uint256 stor_expr_cj; uint256 stor_expr_ck; bytes32 stor_expr_cl; bytes32 stor_expr_cm; bytes32 stor_expr_cr; uint256 stor_expr_cx; uint256 stor_expr_cy; bytes32 stor_expr_cz; uint256 stor_expr_d; bytes32 stor_expr_da; uint256 stor_expr_dp; address stor_expr_dq; uint256 stor_expr_dw; uint256 stor_expr_dx; uint256 stor_expr_ec; uint256 stor_expr_ed; uint256 stor_expr_ee; bytes32 stor_expr_eh; uint256 stor_expr_en; uint256 stor_expr_eo; uint256 stor_expr_ev; bytes32 stor_expr_ew; bytes32 stor_expr_ex; uint256 stor_expr_ey; uint256 stor_expr_ez; bytes32 stor_expr_fb; bytes32 stor_expr_fc; bytes32 stor_expr_fd; bytes32 stor_expr_fe; bytes32 stor_expr_ff; bytes32 stor_expr_fg; uint256 stor_expr_fk; bytes32 stor_expr_fl; uint256 stor_expr_fm; uint256 stor_expr_fo; bytes32 stor_expr_m; event RoleRevoked(bytes32 indexed, address indexed, address indexed); event Paused(address); event RewardsDistributed(uint256); event RewardsWithdrawn(address indexed, uint256); event Unstaked(address indexed, uint256, uint256); event Staked(address indexed, uint256); event RoleGranted(bytes32 indexed, address indexed, address indexed); event Withdrawn(address indexed, uint256, uint256); event Unpaused(address); event RewardsStaked(address indexed, uint256); fallback() external { // Synthetic compatibility routes preserve original selectors for unresolved names. if ((msg.data.length >= 4) && (msg.sig == 0x9010d07c)) { // Route to Unknown_9010d07c(uint256,uint256) after replacing only msg.sig. __desolexSelectorShim(uint32(0xb656a175)); return; } revert(); } function infoWalletFees(address arg0) public view returns (bytes memory) { internal_694(arg0); return abi.encodePacked(value15, value14); } function setMaxStakingAmount(uint256 newMaxStakingAmount) public payable { var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role to set max staking amount"); maxStakingAmount = newMaxStakingAmount; } function getRoleAdmin(bytes32 role) public view returns (uint256) { return stor_expr_m; } function setAPY(uint256 newApy) public payable { var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role to set APY"); apy = newApy; } function setTokenAddress(address newAddress) public payable { require((0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 != newAddress.codehash && newAddress.codehash), "[Validation] The address does not contain a contract"); require(paused, "Pausable: not paused"); var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role to set token address"); require(newAddress != address(0), "[Validation] Invalid swap token address"); stor_fd = newAddress; } function getStakersRewards(uint256 arg0, uint256 arg1) public view returns (bytes memory) { if (!(stakerAddresses.length > 0x0 && arg0 < stakerAddresses.length)) { uint256 value0 = 0; uint256 value1 = 0x80; uint256 var_a; uint256 value2 = (var_a + 0x60) + 0x20; while (true) { if (!(value0 < var_d)) { break; } value0 = 0x01 + value0; value1 = 0x20 + value1; value2 = 0x20 + value2; } uint256 value3 = 0; uint256 value4 = 0x80; uint256 value5 = ((var_a + 0x60) + 0x20) + 0x20; while (true) { if (!(value3 < var_d)) { break; } value3 = 0x01 + value3; value4 = 0x20 + value4; value5 = 0x20 + value5; } value3 = 0; value4 = 0x80; value5 = (((var_a + 0x60) + 0x20) + 0x20) + 0x20; while (true) { if (!(value3 < var_d)) { break; } value3 = 0x01 + value3; value4 = 0x20 + value4; value5 = 0x20 + value5; } return abi.encodePacked(0x60, value2 - var_a, value5 - var_a, var_d, var_d, var_d); } else { var_a = 0x40 + var_a; if (arg0 > stakerAddresses.length) { uint256 value6 = 0; while (true) { if (value6 >= var_a.length) { break; } value6 = 0x20 + value6; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value6 > var_a.length) { } } uint256 value7 = arg1; if ((stakerAddresses.length - arg0) < arg1) { var_a = 0x40 + var_a; if (arg0 > stakerAddresses.length) { uint256 value6 = 0; while (true) { if (value6 >= var_a.length) { break; } value6 = 0x20 + value6; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value6 > var_a.length) { } } value7 = stakerAddresses.length - arg0; } require(value7 <= 0xffffffffffffffff); var_a = var_a + (0x20 + (0x20 * value7)); uint256 value8 = value7; if (value7 != 0x0) { value8 = (value7 * 0x20) + (0x20 + var_a); } require(value7 <= 0xffffffffffffffff); var_a = var_a + (0x20 + (0x20 * value7)); uint256 value9 = value7; if (value7 != 0x0) { value9 = (value7 * 0x20) + (0x20 + var_a); } require(value7 <= 0xffffffffffffffff); var_a = var_a + (0x20 + (0x20 * value7)); uint256 value10 = value7; if (value7 != 0x0) { var_t = msg.data[4:4]; value10 = (value7 * 0x20) + (0x20 + var_a); } uint256 value11 = 0; while (true) { if (value11 >= value7) { break; } require(value11 + arg0 >= arg0, "SafeMath: addition overflow"); if ((value11 + arg0) >= stakerAddresses.length) { break; } if (value11 >= var_a.length) { break; } if ((value11 + arg0) >= stakerAmounts.length) { break; } if (value11 >= var_a.length) { break; } if (value11 >= var_a.length) { break; } var_a = var_a + 0xe0; uint256 value14 = var_ad - var_ac; if (var_ae != 0x0) { var_a = 0x40 + var_a; if (!(var_ac <= var_ad)) { uint256 value6 = 0; uint256 value12; while (true) { value12 = value6; if (value6 >= var_a.length) { break; } if (0x20 + value6 >= var_a.length) { break; } value6 = 0x20 + (0x20 + value6); value12 = 0x20 + value6; } if (!(value12 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } else { var_a = 0x40 + var_a; if (!(var_ac <= stor_103)) { uint256 value6 = 0; uint256 value13; while (true) { value13 = value6; if (value6 >= var_a.length) { break; } if (0x20 + value6 >= var_a.length) { break; } value6 = 0x20 + (0x20 + value6); value13 = 0x20 + value6; } if (!(value13 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } value14 = stor_103 - var_ac; } uint256 value15 = value14 * var_t; if (var_t != 0x0) { require(value14 * var_t / var_t == value14, "SafeMath: multiplication overflow"); } else { value15 = 0; } var_a = 0x40 + var_a; if (value11 >= var_a.length) { break; } value11 = 0x01 + value11; } uint256 value0 = 0; uint256 value1 = 0x80; uint256 value2 = (var_a + 0x60) + 0x20; while (true) { if (!(value0 < var_d)) { break; } value0 = 0x01 + value0; value1 = 0x20 + value1; value2 = 0x20 + value2; } uint256 value3 = 0; uint256 value4 = 0x80; uint256 value5 = ((var_a + 0x60) + 0x20) + 0x20; while (true) { if (!(value3 < var_d)) { break; } value3 = 0x01 + value3; value4 = 0x20 + value4; value5 = 0x20 + value5; } value3 = 0; value4 = 0x80; value5 = (((var_a + 0x60) + 0x20) + 0x20) + 0x20; while (true) { if (!(value3 < var_d)) { break; } value3 = 0x01 + value3; value4 = 0x20 + value4; value5 = 0x20 + value5; } return abi.encodePacked(0x60, value2 - var_a, value5 - var_a, var_a.length, var_a.length, var_a.length); } } function unstake(uint256 arg0) public payable { require(stor_c9_0_0, "ReentrancyGuard: reentrant call"); stor_c9_0_0 = false; require(!paused, "Pausable: paused"); require(arg0 > 0x0, "[Unstake] Invalid unstake amount"); require(!(arg0 > stor_expr_ad), "[Unstake] amount exceed the staked amount"); require((0xff & stor_expr_af && stor_expr_ag != 0x0), "[Unstake] There is no staked amount for this account"); require(!(stor_expr_ah), "[Unstake] You have already initiated unstaking"); require(!(stor_expr_ai), "[Unstake] You have already initiated unstaking"); stor_expr_ah = block.timestamp; stor_expr_aj = stor_103; stor_expr_ai = arg0; mapping_108[msg.sender] = block.timestamp; if (!(arg0 == stor_expr_al)) { if (!(stor_expr_ai > stor_expr_al)) { var_c = 0x40 + var_c; if (!(0x01 <= stor_expr_ao)) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } if ((stor_expr_ao - 0x01) < stakerAmounts.length) { stor_expr_ap = stor_expr_an - stor_expr_am; if (arg0 <= currentTotalStake) { currentTotalStake = currentTotalStake - arg0; if (unstakingPeriod == 0) { var_c = 0x40 + var_c; bool flag1 = !(0 == var_ag); if (0 == var_ag) { flag1 = !(!(var_ah)); } require(flag1, "[Withdraw] You must unstake first"); uint256 value1 = var_ai; if (var_ai != 0x0) { value1 = !(!(var_ah)); } require(value1 != 0x0, "[Withdraw] There is no staked amount for this account"); require(!(unstakingPeriod > (block.timestamp - var_ag)), "[Withdraw] The unstaking period did not pass"); } else { emit Unstaked(msg.sender, arg0, block.timestamp); stor_c9_0_0 = true; } } else { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } } } else { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } } else { var_c = 0x40 + var_c; if (0x01 > stakerAddresses.length) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } if ((stakerAddresses.length - 0x01) < stakerAddresses.length) { var_c = 0x40 + var_c; if (0x01 > stakerAmounts.length) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } if ((stakerAmounts.length - 0x01) < stakerAmounts.length) { mapping_107[address(stor_expr_ax)] = mapping_107[msg.sender]; var_c = 0x40 + var_c; if (0x01 > mapping_107[msg.sender]) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } if ((mapping_107[msg.sender] - 0x01) < stakerAddresses.length) { stor_expr_ba = (address(stor_expr_ax & (0xffffffffffffffffffffffffffffffffffffffff))) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & stor_expr_ba); var_c = 0x40 + var_c; if (0x01 > mapping_107[msg.sender]) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } if ((mapping_107[msg.sender] - 0x01) < stakerAmounts.length) { stor_expr_bb = stor_expr_bc; if (stakerAddresses.length != 0x0) { stor_expr_bd = (0xffffffffffffffffffffffff0000000000000000000000000000000000000000) & stor_expr_bd; stakerAddresses.length = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + stakerAddresses.length; if (stakerAmounts.length != 0x0) { stor_expr_be = 0; stakerAmounts.length = stakerAmounts.length - 0x01; if (!(arg0 > currentTotalStake)) { currentTotalStake = currentTotalStake - arg0; if (unstakingPeriod == 0) { var_c = 0xe0 + var_c; var_c = 0x40 + var_c; var_c = 0x40 + var_c; bool flag2 = !(0 == var_ag); if (0 == var_ag) { flag2 = !(!(var_ah)); } require(flag2, "[Withdraw] You must unstake first"); uint256 value2 = var_ai; if (var_ai != 0x0) { value2 = !(!(var_ah)); } require(value2 != 0x0, "[Withdraw] There is no staked amount for this account"); require(!(unstakingPeriod > (block.timestamp - var_ag)), "[Withdraw] The unstaking period did not pass"); } else { emit Unstaked(msg.sender, arg0, block.timestamp); stor_c9_0_0 = true; } } else { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value0 > var_c.length) { } } } } } } } } } } function grantRole(bytes32 role, address account) public payable { require(mapping_expr_k[msg.sender], "AccessControl: sender must be an admin to grant"); uint256 value0 = 0; if (!mapping_expr_bg[account]) { stor_expr_bh = 0x01 + stor_expr_bh; stor_expr_bi = account; mapping_expr_bj[account] = stor_expr_bh; flag0 = true; } if (flag0) { emit RoleGranted(role, account, msg.sender); } } function renounceRole(bytes32 role, address account) public payable { internal_ec0(account, role); } function info() public payable returns (bool) { require(stor_fd.code.length != 0x0); (bool success0, bytes memory returnData0) = stor_fd.symbol(); // staticcall require(success0); uint256 var_b; var_b = var_b + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f)); require(!(((var_b + returnData0.length) - var_b) < 0x20)); require(!(var_b.length > 0xffffffffffffffff)); require(((var_b + var_b.length) + 0x1f) < (var_b + returnData0.length)); require(!(var_c > 0xffffffffffffffff)); require(!(((0x20 + (var_b + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (var_d + 0x1f)))) < var_b) | ((0x20 + (var_b + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (var_d + 0x1f)))) > 0xffffffffffffffff))); var_b = 0x20 + (var_b + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (var_d + 0x1f))); require(!((var_b + returnData0.length) < (0x20 + (var_d + (var_b + var_b.length))))); uint256 value0 = 0; while (true) { if (value0 >= var_d) { break; } value0 = 0x20 + value0; require(stor_fd.code.length != 0x0); uint8 tokenDecimals = IDesolexERC20(stor_fd).decimals(); require(tokenDecimals == (bytes1(tokenDecimals))); uint256 value0 = 0; while (true) { if (!(value0 < var_b.length)) { break; } value0 = 0x20 + value0; return abi.encodePacked(stor_fd, 0x0120, bytes1(tokenDecimals), stakerAddresses.length, currentTotalStake, apy, unstakingPeriod, !(!(paused)), totalRewardsDistributed, var_b.length); } if (value0 > var_b.length) { } } if (value0 > var_d) { } } function withdraw() public payable { require(stor_c9_0_0, "ReentrancyGuard: reentrant call"); stor_c9_0_0 = false; require(!paused, "Pausable: paused"); uint256 var_a; var_a = 0xe0 + var_a; var_a = 0x40 + var_a; var_a = 0x40 + var_a; bool flag0 = !(0 == var_v); if (0 == var_v) { flag0 = !(!(var_w)); } require(flag0, "[Withdraw] You must unstake first"); uint256 value0 = var_x; if (var_x != 0x0) { value0 = !(!(var_w)); } require(value0 != 0x0, "[Withdraw] There is no staked amount for this account"); require(!(unstakingPeriod > (block.timestamp - var_v)), "[Withdraw] The unstaking period did not pass"); if (0 == var_y) { uint256 value1 = var_z - var_aa; if (var_ab != 0x0) { var_a = 0x40 + var_a; if (!(var_aa <= var_z)) { if (0x0 >= var_a.length) { if (0 > var_a.length) { } } else { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } else { var_a = 0x40 + var_a; if (!(var_aa <= stor_103)) { if (0x0 >= var_a.length) { if (0 > var_a.length) { } } else { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } value1 = stor_103 - var_aa; } uint256 value2 = value1 * var_ak; if (var_ak != 0x0) { require(value1 * var_ak / var_ak == value1, "SafeMath: multiplication overflow"); } else { value2 = 0; } var_a = 0x40 + var_a; require(!(var_aq < var_y), "[withdraw] Invalid withdraw amount specified"); uint256 value3 = bytes1(stor_expr_cc); if (bytes1(stor_expr_cc)) { value3 = (!(!(stor_expr_cd))) ? 1 : 0; } uint256 value4 = (value3) ? 1 : 0; if (value3 != 0x0) { value4 = (!(var_ar < stor_expr_ce)) ? 1 : 0; } uint256 value5 = 0; uint256 value6 = 0; uint256 value7 = 0; if (!(value4 == 0x0)) { var_a = 0x40 + var_a; if (!(stor_expr_cf <= var_ar)) { if (0x0 >= var_a.length) { if (0 > var_a.length) { } } else { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value43 = 0; uint256 value44 = 0; if (0 < feeDurations.length) { if (((var_ar - stor_expr_ce) < feeDurations[0]) && ((0 < feeBurnPcts.length) && (0 < feeRewardPcts.length))) { } value43 = feeRewardPcts[0]; value44 = feeBurnPcts[0]; } value5 = value43; value6 = value44; value7 = var_ar - stor_expr_cj; } uint256 value8 = value6 * var_y; if (var_y != 0x0) { require(value6 * var_y / var_y == value6, "SafeMath: multiplication overflow"); } else { value8 = 0; } uint256 value9 = value5 * var_y; if (var_y != 0x0) { require(value5 * var_y / var_y == value5, "SafeMath: multiplication overflow"); } else { value9 = 0; } if (!(var_y < var_aq)) { mapping_107[msg.sender] = 0; stor_expr_al = 0; stor_expr_at = 0; stor_expr_ah = 0; stor_expr_au = 0; stor_expr_aj = 0; stor_expr_av = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) & stor_expr_av; } else { var_a = 0x40 + var_a; if (!(var_y <= stor_expr_ck)) { if (0x0 >= var_a.length) { if (0 > var_a.length) { } } else { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } stor_expr_ad = stor_expr_ad - var_y; stor_expr_cl = 0; stor_expr_cm = stor_103; } if (value8 / 0x2710 != 0x0) { require(stor_fd.code.length != 0x0); (bool success0, bytes memory returnData0) = stor_fd.burn(value8 / 0x2710); // call require(success0); } if ((value9 / 0x2710 > 0x0) && ((0xffffffffffffffffffffffffffffffffffffffff & feeRewardAddress) != 0x0)) { require(stor_fd.code.length != 0x0); (bool success1, bytes memory returnData1) = stor_fd.call(abi.encodeWithSelector(bytes4(0xa9059cbb), address(feeRewardAddress), (value9 / 0x2710))); // call transfer require(success1); var_a = var_a + ((returnData1.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); require((var_a + returnData1.length) - var_a >= 0x20); require(var_bg == var_bg); require(var_a.length, "[Withdraw] Something went wrong transferring to rewards address"); } var_a = 0x40 + var_a; if (!((value8 / 0x2710) <= var_y)) { if (0x0 >= var_a.length) { if (0 > var_a.length) { } } else { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } var_a = 0x40 + var_a; if (!((value9 / 0x2710) <= (var_y - (value8 / 0x2710)))) { if (0x0 >= var_a.length) { if (0 > var_a.length) { } } else { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } require(stor_fd.code.length != 0x0); bool transferSucceeded = IDesolexERC20(stor_fd).transfer(msg.sender, ((var_y - (value8 / 0x2710)) - (value9 / 0x2710))); require(transferSucceeded, "[Withdraw] Something went wrong while transferring your stake"); if (value2 / 0xde0b6b3a7640000 != 0x0) { require((value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn >= rewardsWithdrawn, "SafeMath: addition overflow"); rewardsWithdrawn = (value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded1 = IDesolexERC20(stor_fd).transferFrom(address(rewardsAddress), msg.sender, (value2 / 0x0de0b6b3a7640000)); require(transferSucceeded1, "[Withdraw] Something went wrong while transferring your reward"); } stor_expr_cr = 0; mapping_108[msg.sender] = 0; emit Withdrawn(msg.sender, var_y, (value2 / 0x0de0b6b3a7640000)); stor_c9_0_0 = true; } uint256 value12 = var_z - var_aa; if (var_ab != 0x0) { var_a = 0x40 + var_a; if (!(var_aa <= var_z)) { uint256 value10 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value10 = 0x20; } if (!(value10 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } else { var_a = 0x40 + var_a; if (!(var_aa <= stor_103)) { uint256 value11 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value11 = 0x20; } if (!(value11 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } value12 = stor_103 - var_aa; } uint256 value13 = value12 * var_ak; if (var_ak != 0x0) { require(value12 * var_ak / var_ak == value12, "SafeMath: multiplication overflow"); } else { value13 = 0; } var_a = 0x40 + var_a; require(!(var_y < var_y), "[withdraw] Invalid withdraw amount specified"); uint256 value15 = bytes1(stor_expr_cc); if (bytes1(stor_expr_cc)) { value15 = (!(!(stor_expr_cd))) ? 1 : 0; } uint256 value16 = value15; if (value15 != 0x0) { value16 = (!(var_v < stor_expr_ce)) ? 1 : 0; } uint256 value27 = 0; uint256 value28 = 0; uint256 value29 = 0; if (!(value16 == 0x0)) { var_a = 0x40 + var_a; if (!(stor_expr_cf <= var_ar)) { uint256 value17 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value17 = 0x20; } if (!(value17 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value34 = 0; uint256 value35 = 0; if (0 < feeDurations.length) { if (!((var_ar - stor_expr_ce) < feeDurations[0])) { uint256 value18 = 0; uint256 value19 = 0; if (0x01 < feeDurations.length) { if (((var_ar - stor_expr_cf) < feeDurations[0x01]) && (((0x01 + 0x01) < feeBurnPcts.length) && ((0x01 + 0x01) < feeRewardPcts.length))) { } value18 = feeRewardPcts[0x01]; value19 = feeBurnPcts[0x01]; } uint256 value20 = value19 * var_y; if (var_y != 0x0) { require(value19 * var_y / var_y == value19, "SafeMath: multiplication overflow"); } else { value20 = 0; } uint256 value21 = value18 * var_y; if (var_y != 0x0) { require(value18 * var_y / var_y == value18, "SafeMath: multiplication overflow"); } else { value21 = 0; } if (!(var_y < var_y)) { mapping_107[msg.sender] = 0; stor_expr_al = 0; stor_expr_at = 0; stor_expr_ah = 0; stor_expr_au = 0; stor_expr_aj = 0; stor_expr_av = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) & stor_expr_av; } else { var_a = 0x40 + var_a; if (!(var_y <= stor_expr_ck)) { uint256 value22 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value22 = 0x20; } if (!(value22 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } stor_expr_ad = stor_expr_ad - var_y; stor_expr_cl = 0; stor_expr_cm = stor_103; } if (value20 / 0x2710 != 0x0) { require(stor_fd.code.length != 0x0); (bool success4, bytes memory returnData4) = stor_fd.burn(value8 / 0x2710); // call require(success4); } if ((value21 / 0x2710 > 0x0) && ((0xffffffffffffffffffffffffffffffffffffffff & feeRewardAddress) != 0x0)) { require(stor_fd.code.length != 0x0); (bool success5, bytes memory returnData5) = stor_fd.call(abi.encodeWithSelector(bytes4(0xa9059cbb), address(feeRewardAddress), (value9 / 0x2710))); // call transfer require(success5); var_a = var_a + ((returnData5.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); require((var_a + returnData5.length) - var_a >= 0x20); require(var_bg == var_bg); require(var_a.length, "[Withdraw] Something went wrong transferring to rewards address"); } var_a = 0x40 + var_a; if (!((value20 / 0x2710) <= var_y)) { uint256 value23 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value23 = 0x20; } if (!(value23 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } var_a = 0x40 + var_a; if (!((value21 / 0x2710) <= (var_y - (value20 / 0x2710)))) { uint256 value24 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value24 = 0x20; } if (!(value24 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } require(stor_fd.code.length != 0x0); bool transferSucceeded2 = IDesolexERC20(stor_fd).transfer(msg.sender, ((var_y - (value8 / 0x2710)) - (value9 / 0x2710))); require(transferSucceeded2, "[Withdraw] Something went wrong while transferring your stake"); if ((value13 / 0x0de0b6b3a7640000) != 0x0) { require((value13 / 0x0de0b6b3a7640000) + rewardsWithdrawn >= rewardsWithdrawn, "SafeMath: addition overflow"); rewardsWithdrawn = (value13 / 0x0de0b6b3a7640000) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded3 = IDesolexERC20(stor_fd).transferFrom(address(rewardsAddress), msg.sender, (value2 / 0x0de0b6b3a7640000)); require(transferSucceeded3, "[Withdraw] Something went wrong while transferring your reward"); } stor_expr_cr = 0; mapping_108[msg.sender] = 0; emit Withdrawn(msg.sender, var_y, (value2 / 0x0de0b6b3a7640000)); stor_c9_0_0 = true; } else { if ((0 < feeBurnPcts.length) && (0 < feeRewardPcts.length)) { } } value34 = feeRewardPcts[0]; value35 = feeBurnPcts[0]; } value27 = value34; value28 = value35; value29 = var_v - stor_expr_cx; } uint256 value30 = value28 * var_y; if (var_y != 0x0) { require(value28 * var_y / var_y == value28, "SafeMath: multiplication overflow"); } else { value30 = 0; } uint256 value31 = value27 * var_y; if (var_y != 0x0) { require(value27 * var_y / var_y == value27, "SafeMath: multiplication overflow"); } else { value31 = 0; } if (!(var_y < var_y)) { mapping_107[address(msg.sender)] = 0; stor_expr_bu = 0; stor_expr_bv = 0; stor_expr_bw = 0; stor_expr_bx = 0; stor_expr_by = 0; stor_expr_bz = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) & stor_expr_bz; } else { var_a = 0x40 + var_a; if (!(var_y <= stor_expr_cy)) { uint256 value32 = 0; if (0 < var_a.length) { if (0x20 < var_a.length) { } value32 = 0x20; } if (!(value32 <= var_a.length)) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } stor_expr_cy = stor_expr_cy - var_y; stor_expr_cz = 0; stor_expr_da = stor_103; } if (value30 / 0x2710 != 0) { require(stor_fd.code.length != 0x0); (bool success8, bytes memory returnData8) = stor_fd.burn(value8 / 0x2710); // call require(success8); } } function unpause() public payable { require(mapping_expr_k[msg.sender], "SwapStakingContract: must have pauser role to unpause"); require(paused, "Pausable: not paused"); paused = false; emit Unpaused(msg.sender); } function getStakers() public view returns (bytes memory) { uint256 var_a; var_a = var_a + (0x20 + (0x20 * stakerAddresses.length)); uint256 value2 = stakerAddresses.length; uint256 value3 = 0xfb; uint256 value4 = 0x20 + var_a; if (stakerAddresses.length != 0x0) { uint256 value0 = 0x20 + (0x20 + var_a); uint256 value1 = keccak256(abi.encode(0xfb)) + 0x01; while (true) { if ((0x20 + var_a) + (0x20 * stakerAddresses.length) <= value0) { break; } value0 = 0x20 + value0; value1 = value1 + 0x01; } value2 = (value0) ? 1 : 0; value3 = (value1) ? 1 : 0; value4 = (0x20 + var_a) + (0x20 * stakerAddresses.length); } var_a = var_a + (0x20 + (0x20 * stakerAmounts.length)); uint256 value7 = stakerAmounts.length; uint256 value8 = 0xfc; uint256 value9 = 0x20 + var_a; if (stakerAmounts.length != 0x0) { uint256 value5 = 0x20 + (0x20 + var_a); uint256 value6 = 0x01 + keccak256(abi.encode(0xfc)); while (true) { if ((0x20 + var_a) + (0x20 * stakerAmounts.length) <= value5) { break; } value5 = 0x20 + value5; value6 = 0x01 + value6; } value7 = (value5) ? 1 : 0; value8 = value6; value9 = (0x20 + var_a) + (0x20 * stakerAmounts.length); } uint256 value10 = 0; uint256 value11 = var_a + 0x20; uint256 value12 = (var_a + 0x40) + 0x20; while (true) { if (!(value10 < var_a.length)) { break; } value10 = 0x01 + value10; value11 = 0x20 + value11; value12 = 0x20 + value12; } uint256 value13 = 0; uint256 value14 = var_a + 0x20; uint256 value15 = ((var_a + 0x40) + 0x20) + 0x20; while (true) { if (!(value13 < var_a.length)) { break; } value13 = 0x01 + value13; value14 = 0x20 + value14; value15 = 0x20 + value15; return abi.encodePacked(0x40, value12 - var_a, var_a.length, var_a.length); } } function setUnstakingPeriod(uint256 newUnstakingPeriod) public payable { var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role to set unstaking period"); unstakingPeriod = newUnstakingPeriod; } function distributeRewards(uint256 arg0) public payable { require(stor_c9_0_0, "ReentrancyGuard: reentrant call"); stor_c9_0_0 = false; require(!paused, "Pausable: paused"); require(mapping_expr_k[msg.sender], "[Validation] The caller must have rewards distributor role"); apy = arg0; require(!paused, "Pausable: paused"); require(mapping_expr_k[msg.sender], "[Validation] The caller must have rewards distributor role"); require(currentTotalStake > 0, "[Validation] not enough total stake accumulated"); require(stor_fd.code.length != 0x0); (bool success0, bytes memory returnData0) = stor_fd.staticcall(abi.encodeWithSelector(bytes4(0x70a08231), address(__desolex_internal_3da8_2f0c_arg1))); // staticcall balanceOf require(success0); require(__desolex_internal_3cce_2f5c_arg1 - __desolex_internal_3cce_2f5c_arg0 >= 0x20); uint256 value0 = abi.decode(returnData0, (uint256)); require(value0 > 0, "[Validation] not enough rewards accumulated"); require(__desolex_internal_2558_2f9d_arg0 + __desolex_internal_2558_2f9d_arg1 >= __desolex_internal_2558_2f9d_arg1, "SafeMath: addition overflow"); if (__desolex_internal_2ae0_363_arg1 <= __desolex_internal_2ae0_363_arg0) { if (__desolex_internal_3387_2fc3_arg1 != 0x0) { require(__desolex_internal_3387_2fc3_arg0 * __desolex_internal_3387_2fc3_arg1 / __desolex_internal_3387_2fc3_arg1 == __desolex_internal_3387_2fc3_arg0, "SafeMath: multiplication overflow"); } var_e = 0x40 + var_e; if (__desolex_internal_265f_363_arg1 != 0x0) { require(!(((__desolex_internal_265f_363_arg0 / __desolex_internal_265f_363_arg1) + stor_103) < stor_103), "SafeMath: addition overflow"); stor_103 = (__desolex_internal_265f_363_arg0 / __desolex_internal_265f_363_arg1) + stor_103; rewardsDistributed = __desolex_internal_265f_363_arg5; rewardsWithdrawn = 0; require(!((__desolex_internal_265f_363_arg4 + totalRewardsDistributed) < totalRewardsDistributed), "SafeMath: addition overflow"); totalRewardsDistributed = __desolex_internal_265f_363_arg4 + totalRewardsDistributed; rewardsDistributedLastDate2 = block.timestamp; emit RewardsDistributed(__desolex_internal_265f_363_arg4); stor_c9_0_0 = true; } else { uint256 value1 = 0; while (true) { if (!(value1 < var_e.length)) { break; } value1 = 0x20 + value1; } if (value1 > var_e.length) { } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } else { uint256 value1 = 0; while (true) { if (!(value1 < var_e.length)) { break; } value1 = 0x20 + value1; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value1 > __desolex_internal_513c_3d91_arg2) { } } } function setRewardAddress(address newAddress) public payable { require(paused, "Pausable: not paused"); var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role to set rewards address"); require(newAddress != address(0), "[Validation] _rewardsAddress is the zero address"); require(!(rewardsAddress == newAddress), "[Validation] _rewardsAddress is already set to given address"); rewardsAddress = newAddress; } function rewardsDistributedLastDate() public view returns (uint256) { return rewardsDistributedLastDate2; } function calculateFees(address arg0, uint256 arg1) public view returns (bytes memory) { uint256 value0 = bytes1(stor_expr_a); if (bytes1(stor_expr_a)) { value0 = (!(!(stor_expr_b))) ? 1 : 0; } uint256 value1 = (value0) ? 1 : 0; if (value0 != 0x0) { value1 = (!(arg1 < stor_expr_c)) ? 1 : 0; } if (value1 == 0x0) { return abi.encodePacked(0, 0, 0); } else { uint256 var_f; var_f = 0x40 + var_f; if (stor_expr_c > arg1) { uint256 value2 = 0; while (true) { if (value2 >= var_f.length) { break; } value2 = 0x20 + value2; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } if (value2 > var_f.length) { } } uint256 value3 = 0; while (true) { if (value3 >= feeDurations.length) { break; } if (value3 >= feeDurations.length) { break; } if ((arg1 - stor_expr_c) < feeDurations[value3]) { if ((value3 < feeBurnPcts.length) && (value3 < feeRewardPcts.length)) { return abi.encodePacked(arg1 - stor_expr_c, feeBurnPcts[value3], feeRewardPcts[value3]); } break; } value3 = 0x01 + value3; } return abi.encodePacked(arg1 - stor_expr_c, 0, 0); } } function pause() public payable { require(mapping_expr_k[msg.sender], "SwapStakingContract: must have pauser role to pause"); require(!paused, "Pausable: paused"); paused = true; emit Paused(msg.sender); } function getStakersRange(uint256 arg0, uint256 arg1) public view returns (bytes memory) { if (!(stakerAddresses.length > 0x0 && arg0 < stakerAddresses.length)) { uint256 value0 = 0; uint256 value1 = 0x80; uint256 value2 = (var_a + 0x40) + 0x20; while (true) { if (!(value0 < var_d)) { break; } value0 = 0x01 + value0; value1 = 0x20 + value1; value2 = 0x20 + value2; } uint256 value3 = 0; uint256 value4 = 0x80; uint256 value5 = ((var_a + 0x40) + 0x20) + 0x20; while (true) { if (!(value3 < var_d)) { break; } value3 = 0x01 + value3; value4 = 0x20 + value4; value5 = 0x20 + value5; return abi.encodePacked(0x40, value2 - var_a, var_d, var_d); } } else { if (!(arg0 > stakerAddresses.length)) { uint256 value7 = arg1; if ((stakerAddresses.length - arg0) < arg1) { var_a = 0x40 + var_a; if (arg0 > stakerAddresses.length) { uint256 value6 = 0; while (true) { if (!(value6 < var_a.length)) { break; } value6 = 0x20 + value6; } if (0x20 > var_a.length) { } revert("SafeMath: subtraction overflow"); } value7 = stakerAddresses.length - arg0; } require(value7 <= 0xffffffffffffffff); var_a = var_a + (0x20 + (0x20 * value7)); uint256 value8 = value7; if (value7 != 0x0) { value8 = (value7 * 0x20) + (0x20 + var_a); } require(value7 <= 0xffffffffffffffff); var_a = var_a + (0x20 + (0x20 * value7)); uint256 value9 = value7; if (value7 != 0x0) { value9 = (value7 * 0x20) + (0x20 + var_a); } uint256 value10 = 0; while (true) { if (value10 >= value7) { break; } if ((value10 + arg0) < arg0) { revert("SafeMath: addition overflow"); break; } if ((value10 + arg0) >= stakerAddresses.length) { break; } if (value10 >= var_a.length) { break; } if ((value10 + arg0) >= stakerAmounts.length) { break; } if (value10 >= var_a.length) { break; } value10 = 0x01 + value10; } uint256 value0 = 0; uint256 value1 = 0x80; uint256 value2 = (var_a + 0x40) + 0x20; while (true) { if (!(value0 < var_d)) { break; } value0 = 0x01 + value0; value1 = 0x20 + value1; value2 = 0x20 + value2; } uint256 value3 = 0; uint256 value4 = 0x80; uint256 value5 = ((var_a + 0x40) + 0x20) + 0x20; while (true) { if (!(value3 < var_d)) { break; } value3 = 0x01 + value3; value4 = 0x20 + value4; value5 = 0x20 + value5; return abi.encodePacked(0x40, value2 - var_a, var_a.length, var_a.length); } } else { uint256 value6 = 0; while (true) { if (!(value6 < var_a.length)) { break; } value6 = 0x20 + value6; } if (0x20 > var_a.length) { } revert("SafeMath: subtraction overflow"); } } } function Unknown_9010d07c(uint256 arg0, uint256 arg1) public view returns (address) { require(arg1 < getRoleMemberCount[arg0], "EnumerableSet: index out of bounds"); if (arg1 < stor_expr_dp) { } return stor_expr_dq; } function hasRole(bytes32 role, address account) public view returns (bool) { return !(!(mapping_expr_dr[account])); } function stake(uint256 amount) public payable { internal_1740(amount); } function infoWallet(address arg0) public view returns (bytes memory) { internal_1b58(arg0); return abi.encodePacked(value12, value11, value10, value9, value8, value7); } function transfer(uint256 arg0, address arg1) public payable { var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role"); require(!(address(this).balance < arg0), "[Validation] Insufficent native token balance to transfer amount."); require(!(address(this).balance < arg0), "Address: insufficient balance"); (bool success0, bytes memory returnData0) = arg1.call{ value: arg0 }(""); // call uint256 value0 = 0x60; if (returnData0.length != 0) { uint256 var_c; var_c = var_c + ((returnData0.length + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); value0 = var_c; } require(success0, "Address: unable to send value, recipient may have reverted"); } function withdrawRewards() public payable { internal_1d1f(); } function stakeRewards() public payable { internal_1fad(); } function initialize(address arg0, address arg1, uint256 arg2, uint256 arg3, uint256 arg4) public payable { require((0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 != arg0.codehash && arg0.codehash), "[Validation] The address does not contain a contract"); bool value0 = bytes1(stor_0 / 0x0100); if (!(bytes1(stor_0 / 0x0100))) { value0 = !address(this).code.length; } require((value0 != 0x0 || (0xff & stor_0) == 0x0), "Contract instance has already been initialized"); if (!(bytes1(stor_0 / 0x0100))) { stor_0 = 0x01 | ((0x0100 | (stor_0 & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff))) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)); } require(arg0 != address(0), "[Validation] Invalid swap token address"); require(arg2 > 0x0, "[Validation] _maxStakingAmount has to be larger than 0"); bool value1 = bytes1(stor_0 / 0x0100); if (!(bytes1(stor_0 / 0x0100))) { value1 = (address(this).code.length == 0x0) ? 1 : 0; } require((value1 != 0x0 || (0xff & stor_0) == 0x0), "Contract instance has already been initialized"); if (!(bytes1(stor_0 / 0x0100))) { stor_0 = 0x01 | ((0x0100 | (stor_0 & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff))) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)); } if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } bool value2 = bytes1(stor_0 / 0x0100); if (!(bytes1(stor_0 / 0x0100))) { value2 = (address(this).code.length == 0x0) ? 1 : 0; } require((value2 != 0x0 || (0xff & stor_0) == 0x0), "Contract instance has already been initialized"); if (!(bytes1(stor_0 / 0x0100))) { stor_0 = 0x01 | ((0x0100 | (stor_0 & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff))) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)); } if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } bool value3 = bytes1(stor_0 / 0x0100); if (!(bytes1(stor_0 / 0x0100))) { value3 = (address(this).code.length == 0x0) ? 1 : 0; } require((value3 != 0x0 || (0xff & stor_0) == 0x0), "Contract instance has already been initialized"); if (!(bytes1(stor_0 / 0x0100))) { stor_0 = 0x01 | ((0x0100 | (stor_0 & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff))) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)); } paused = false; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } bool value4 = bytes1(stor_0 / 0x0100); if (!(bytes1(stor_0 / 0x0100))) { value4 = (address(this).code.length == 0x0) ? 1 : 0; } require((value4 != 0x0 || (0xff & stor_0) == 0x0), "Contract instance has already been initialized"); if (!(bytes1(stor_0 / 0x0100))) { stor_0 = 0x01 | ((0x0100 | (stor_0 & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff))) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)); } stor_c9_0_0 = true; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } bool value5 = bytes1(stor_0 / 0x0100); if (!(bytes1(stor_0 / 0x0100))) { value5 = (address(this).code.length == 0x0) ? 1 : 0; } require((value5 != 0x0 || (0xff & stor_0) == 0x0), "Contract instance has already been initialized"); if (!(bytes1(stor_0 / 0x0100))) { stor_0 = 0x01 | ((0x0100 | (stor_0 & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff))) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)); } uint256 value6 = 0; if (!mapping_expr_bg[msg.sender]) { stor_expr_bh = 0x01 + stor_expr_bh; stor_expr_bi = msg.sender; mapping_expr_bj[msg.sender] = stor_expr_bh; flag7 = true; } if (flag7) { emit RoleGranted(0, msg.sender, msg.sender); } uint256 value7 = 0; if (!mapping_expr_bg[msg.sender]) { stor_expr_bh = 0x01 + stor_expr_bh; stor_expr_bi = msg.sender; mapping_expr_bj[msg.sender] = stor_expr_bh; flag8 = true; } if (flag8) { emit RoleGranted(0, msg.sender, msg.sender); } var_a = var_a; uint256 value8 = 0; if (!mapping_expr_bg[msg.sender]) { stor_expr_bh = 0x01 + stor_expr_bh; stor_expr_bi = msg.sender; mapping_expr_bj[msg.sender] = stor_expr_bh; flag9 = true; } if (flag9) { emit RoleGranted(0, msg.sender, msg.sender); } uint256 value9 = 0; if (!mapping_expr_bg[msg.sender]) { stor_expr_bh = 0x01 + stor_expr_bh; stor_expr_bi = msg.sender; mapping_expr_bj[msg.sender] = stor_expr_bh; flag10 = true; } if (flag10) { emit RoleGranted(0, msg.sender, msg.sender); } if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } require(mapping_expr_es[msg.sender], "SwapStakingContract: must have pauser role to pause"); require(!paused, "Pausable: paused"); paused = true; emit Paused(msg.sender); require(paused, "Pausable: not paused"); var_a = var_a; require(mapping_expr_eu[msg.sender], "[Validation] The caller must have owner role to set rewards address"); require(arg1 != address(0), "[Validation] _rewardsAddress is the zero address"); require(!(rewardsAddress == arg1), "[Validation] _rewardsAddress is already set to given address"); rewardsAddress = arg1; stor_fd = arg0; maxStakingAmount = arg2; apy = arg3; unstakingPeriod = arg4; uint256 var_c; var_c = var_c + 0x80; stor_expr_ev = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ey = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } } } else { stor_expr_fb = uint16(var_p); if (var_c + 0x20 * 0x04 > 0x20 + var_c) { stor_expr_fe = uint16(var_s); } else if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } else { stor_expr_fd = bytes1(var_r); } } } else { stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fd = bytes1(var_r); } } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } } } else { stor_expr_ff = uint24(var_t); if (var_c + 0x20 * 0x04 > 0x20 + var_c) { stor_expr_fg = uint24(var_u); } else if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > (0x01 + keccak256(abi.encode(0x0109)))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ey = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fd = bytes1(var_r); } } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } else { stor_expr_fd = bytes1(var_r); } } } } else { stor_expr_fb = uint16(var_p); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fd = bytes1(var_r); } } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { stor_expr_ew = 0; if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) <= 0x1 + keccak256(abi.encode(0x0109))) { feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } else { array_1[keccak256(abi.encode(0x0109))] = 0; } } } else { stor_expr_fd = bytes1(var_r); } } } } else { stor_expr_fe = uint16(var_s); } } } else { var_c = var_c + 0x80; stor_expr_ey = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if (!((keccak256(abi.encode(0x010a)) + stor_expr_ey) <= keccak256(abi.encode(0x010a)))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fd = bytes1(var_r); } } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fb = uint16(var_p); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if (!((keccak256(abi.encode(0x010a)) + stor_expr_ey) <= (0x01 + keccak256(abi.encode(0x010a))))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if ((keccak256(abi.encode(0x0109)) + stor_expr_ev) > keccak256(abi.encode(0x0109))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fd = bytes1(var_r); } } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fe = uint16(var_s); } } var_c = var_c + 0x80; stor_expr_ez = 0x04; if (var_c + 0x20 * 0x04 <= var_c) { if (!((keccak256(abi.encode(0x010b)) + stor_expr_ez) <= keccak256(abi.encode(0x010b)))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fc = bytes1(var_q); if (var_c + 0x20 * 0x04 <= 0x20 + var_c) { if (!((keccak256(abi.encode(0x010b)) + stor_expr_ez) <= (0x01 + keccak256(abi.encode(0x010b))))) { stor_expr_ew = 0; if (__desolex_internal_39d3_38b2_arg1 > __desolex_internal_39d3_38b2_arg0) { stor_expr_ex = 0; } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } else { stor_expr_fd = bytes1(var_r); } } feeRewardAddress = arg1; rewardsDistributedLastDate2 = block.timestamp; if (!(bytes1(stor_0 / 0x0100))) { stor_0 = (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff) & stor_0; } } } } function revokeRole(bytes32 role, address account) public payable { require(mapping_expr_k[msg.sender], "AccessControl: sender must be an admin to revoke"); uint256 value0 = 0; if (mapping_expr_bk[account] != 0) { if (((stor_expr_bl + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_bl) && ((mapping_expr_bk[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_bm)) { stor_expr_bn = stor_expr_bo; mapping_expr_bp[stor_expr_bo] = (mapping_expr_bk[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) + 0x01; if (stor_expr_bl != 0x0) { stor_expr_bq = 0; stor_expr_bl = stor_expr_bl - 0x01; mapping_expr_bp[account] = 0; } } flag0 = true; } if (flag0) { emit RoleRevoked(role, account, msg.sender); } } function setRewardsDistributedLastDate(uint256 newRewardsDistributedLastDate2) public payable { var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role to set rewards distributed last date"); rewardsDistributedLastDate2 = newRewardsDistributedLastDate2; } function setFees(uint256[] memory arg0, uint256[] memory arg1, uint256[] memory arg2, address arg3) public payable { require(!(((0x04 + arg0) + (arg0.length * 0x20) + 0x20) > msg.data.length)); require(!(((0x04 + arg1) + (arg1.length * 0x20) + 0x20) > msg.data.length)); require(!(((0x04 + arg2) + (arg2.length * 0x20) + 0x20) > msg.data.length)); var_a = var_a; var_a = msg.sender; require(mapping_expr_eu[msg.sender], "[Validation] The caller must have owner role to set fees"); feeDurations.length = arg0; uint256 value2 = (0x04 + arg0) + 0x20; uint256 value3 = keccak256(abi.encode(0x0109)); uint256 value4 = arg0; if (arg0 != 0x0) { uint256 value1 = keccak256(abi.encode(0x0109)); uint256 value0 = (0x04 + arg0) + 0x20; while (true) { if (((0x04 + arg0) + 0x20) + 0x20 * arg0.length <= value0) { break; } stor_expr_fk = msg.data[value0]; value1 = 0x01 + value1; value0 = 0x20 + value0; } value2 = ((0x04 + arg0) + 0x20) + (0x20 * arg0.length); value3 = (value1) ? 1 : 0; value4 = (value0) ? 1 : 0; } uint256 value6 = (value3) ? 1 : 0; uint256 value5 = keccak256(abi.encode(0x0109)) + feeDurations.length; while (true) { if (value5 <= value6) { break; } stor_expr_fl = 0; if (value5 <= (0x01 + value6)) { break; } stor_expr_ex = 0; value6 = 0x01 + (0x01 + value6); value5 = (value5) ? 1 : 0; } stor_expr_fm = arg1; uint256 value13 = (0x04 + arg1) + 0x20; uint256 value14 = keccak256(abi.encode(0x010a)); uint256 value15 = arg1; if (arg1 != 0x0) { uint256 value1 = keccak256(abi.encode(0x010a)); uint256 value0 = (0x04 + arg1) + 0x20; uint256 value20; uint256 value19; while (true) { value19 = (value1) ? 1 : 0; value20 = (value0) ? 1 : 0; if (((0x04 + arg1) + 0x20) + 0x20 * arg1.length <= value0) { break; } stor_expr_fk = msg.data[value0]; if (((0x04 + arg1) + 0x20) + 0x20 * arg1.length <= 0x20 + value0) { break; } array_1[value1] = msg.data[0x20 + value0]; value1 = 0x01 + (0x01 + value1); value0 = 0x20 + (0x20 + value0); value19 = 0x01 + value1; value20 = 0x20 + value0; } value13 = ((0x04 + arg1) + 0x20) + (0x20 * arg1.length); value14 = value19; value15 = value20; } value6 = (value3) ? 1 : 0; value5 = keccak256(abi.encode(0x0109)) + feeDurations.length; while (true) { if (value5 <= value6) { break; } stor_expr_fl = 0; if (value5 <= (0x01 + value6)) { break; } stor_expr_ex = 0; value6 = 0x01 + value6; value5 = (value5) ? 1 : 0; } stor_expr_fo = __desolex_internal_386b_23a2_arg0; uint256 value16 = __desolex_internal_386b_23a2_arg1; uint256 value17 = keccak256(abi.encode(__desolex_internal_386b_23a2_arg2)); uint256 value18 = __desolex_internal_386b_23a2_arg0; if (__desolex_internal_386b_23a2_arg0 != 0x0) { uint256 value1 = keccak256(abi.encode(__desolex_internal_386b_23a2_arg2)); uint256 value0 = __desolex_internal_386b_23a2_arg1; uint256 value22; uint256 value21; while (true) { value21 = (value1) ? 1 : 0; value22 = (value0) ? 1 : 0; if (__desolex_internal_386b_23a2_arg1 + 0x20 * __desolex_internal_386b_23a2_arg0 <= value0) { break; } stor_expr_fk = msg.data[value0]; if (__desolex_internal_386b_23a2_arg1 + 0x20 * __desolex_internal_386b_23a2_arg0 <= 0x20 + value0) { break; } array_1[value1] = msg.data[0x20 + value0]; value1 = 0x01 + (0x01 + value1); value0 = 0x20 + (0x20 + value0); value21 = 0x01 + value1; value22 = 0x20 + value0; } value16 = __desolex_internal_386b_23a2_arg1 + (0x20 * __desolex_internal_386b_23a2_arg0); value17 = value21; value18 = value22; } value6 = (value3) ? 1 : 0; value5 = keccak256(abi.encode(0x0109)) + feeDurations.length; while (true) { if (value5 <= value6) { break; } stor_expr_fl = 0; if (value5 <= 0x1 + value6) { feeRewardAddress = __desolex_internal_23a2_363_arg1 | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & feeRewardAddress); break; } array_1[value6] = 0; value6 = 0x01 + (0x01 + value6); value5 = (value5) ? 1 : 0; } feeRewardAddress = __desolex_internal_2394_363_arg1 | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & feeRewardAddress); } function transferToken(address arg0, uint256 arg1, address arg2) public payable { var_a = var_a; require(mapping_expr_k[msg.sender], "[Validation] The caller must have owner role"); require(arg0.code.length != 0x0); uint256 value0 = IDesolexERC20(arg0).balanceOf(address(this)); require(!(value0 < arg1), "[Validation] Insufficent token balance to transfer amount."); require(arg0.code.length != 0x0); IDesolexERC20(arg0).transfer(arg2, arg1); } function getRewardsDistributedLastDate() public view returns (uint256) { return rewardsDistributedLastDate2; } function token() public view returns (address) { return stor_fd; } function internal_694(address arg0) private { // Decompilation incomplete: helper effect provenance is conservative. uint256 value14 = 0; uint256 value15 = 0; if ((bytes1(stor_expr_a) && !(!(stor_expr_b)))) { uint256 value0 = bytes1(stor_expr_a); if (bytes1(stor_expr_a)) { value0 = (!(!(stor_expr_b))) ? 1 : 0; } uint256 value1 = (value0) ? 1 : 0; if (value0 != 0x0) { value1 = (!(block.timestamp < stor_expr_c)) ? 1 : 0; } uint256 value11 = 0; uint256 value12 = 0; uint256 value13 = 0; if (!(value1 == 0x0)) { uint256 var_c; var_c = 0x40 + var_c; if (!(stor_expr_d <= block.timestamp)) { uint256 value2 = 0; while (true) { uint256 value3 = (value2) ? 1 : 0; if (value2 >= var_c.length) { break; } if (0x20 + value2 >= var_c.length) { break; } value2 = 0x20 + (0x20 + value2); value3 = 0x20 + value2; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value4 = 0; uint256 value5 = (block.timestamp - stor_expr_c); uint256 value6 = 0; uint256 value7 = 0; uint256 value8 = 0; uint256 value9 = block.timestamp; uint256 value10 = arg0; uint256 value17; uint256 value16; while (true) { value16 = 0; value17 = 0; if (value4 >= feeDurations.length) { break; } if (value4 >= feeDurations.length) { break; } if (value5 < feeDurations[value4]) { break; } value4 = (0x01 + value4); value5 = (value5) ? 1 : 0; value6 = value6; value7 = value7; value8 = value8; value9 = value9; value10 = value10; value16 = feeRewardPcts[value4]; value17 = feeBurnPcts[value4]; } value11 = value16; value12 = value17; value13 = (value5) ? 1 : 0; } require(value11 + value12 >= value12, "SafeMath: addition overflow"); value14 = value11 + value12; value15 = value13; } } function internal_ec0(address account, bytes32 role) private { // Decompilation incomplete: helper effect provenance is conservative. require(account == msg.sender, "AccessControl: can only renounce roles for self"); uint256 value0 = 0; if (mapping_expr_bk[account] != 0) { if (((stor_expr_bl + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_bl) && ((mapping_expr_bk[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_bm)) { stor_expr_bn = stor_expr_bo; mapping_expr_bp[stor_expr_bo] = (mapping_expr_bk[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) + 0x01; if (stor_expr_bl != 0x0) { stor_expr_bq = 0; stor_expr_bl = stor_expr_bl - 0x01; mapping_expr_bp[account] = 0; } } value0 = 0x01; } if (!(value0 == 0x0)) { emit RoleRevoked(role, account, address(msg.sender)); } } function internal_1740(uint256 amount) private { // Decompilation incomplete: helper effect provenance is conservative. require(stor_c9_0_0, "ReentrancyGuard: reentrant call"); stor_c9_0_0 = false; require(!paused, "Pausable: paused"); require(0 == stor_expr_cl, "[Stake] You have already initiated the unstake process"); uint256 var_c; var_c = var_c + 0xe0; if (!(var_k)) { var_c = 0x40 + var_c; if (!(var_l <= stor_103)) { uint256 value0 = 0; while (true) { uint256 value1 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value1 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value2 = ((stor_103 - var_l)) * var_w; if (var_w != 0x0) { require(((stor_103 - var_l)) * var_w / var_w == ((stor_103 - var_l)), "SafeMath: multiplication overflow"); } else { value2 = 0; } var_c = 0x40 + var_c; require(amount + stor_expr_an >= stor_expr_an, "SafeMath: addition overflow"); require((value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an) >= (amount + stor_expr_an), "SafeMath: addition overflow"); require(value2 / 0xde0b6b3a7640000 + (amount + stor_expr_an) > stor_expr_an, "[Stake] Amount has to be larger than 0"); var_c = 0x40 + var_c; if (!(stor_expr_an <= ((value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an)))) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } require(((value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an) - stor_expr_an) + currentTotalStake >= currentTotalStake, "SafeMath: addition overflow"); require(!((((value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an) - stor_expr_an) + currentTotalStake) > maxStakingAmount), "[Stake] Your stake deposit would exceed the current staking limit"); array_1[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = (value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an); array_2[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = block.timestamp; array_6[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = 0x01 | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & array_6[(keccak256(abi.encode(address(msg.sender), 0x0107)))]); array_4[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = stor_103; if (stor_expr_dw != 0x0) { var_c = 0x40 + var_c; if (!(0x01 <= stor_expr_dw)) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } if ((stor_expr_dw - 0x01) < stakerAmounts.length) { stor_expr_dx = (value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an); } } else { stakerAddresses.length = stakerAddresses.length + 0x01; stakerAddresses[stakerAddresses.length] = (msg.sender) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & stakerAddresses[stakerAddresses.length]); stakerAmounts.length = stakerAmounts.length + 0x01; stakerAmounts[stakerAmounts.length] = (value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an); stor_expr_dw = stakerAddresses.length; } currentTotalStake = ((value2 / 0x0de0b6b3a7640000) + (amount + stor_expr_an) - stor_expr_an) + currentTotalStake; require(stor_fd.code.length != 0x0); (bool success0, bytes memory returnData0) = stor_fd.call(abi.encodeWithSelector(bytes4(0x23b872dd), msg.sender, address(this), amount)); // call transferFrom require(success0); var_c = var_c + ((returnData0.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); require((var_c + returnData0.length) - var_c >= 0x20); require(var_al == var_al); require(var_c.length, "[Stake] Something went wrong during the token transfer"); if (value2 / 0xde0b6b3a7640000 != 0x0) { require((value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn >= rewardsWithdrawn, "SafeMath: addition overflow"); rewardsWithdrawn = (value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded = IDesolexERC20(stor_fd).transferFrom(address(rewardsAddress), address(this), (value2 / 0x0de0b6b3a7640000)); require(transferSucceeded, "[Stake] Something went wrong while transferring rewards"); } require((value2 / 0x0de0b6b3a7640000) + amount >= amount, "SafeMath: addition overflow"); emit Staked(msg.sender, ((value2 / 0x0de0b6b3a7640000) + amount)); stor_c9_0_0 = true; } var_c = 0x40 + var_c; if (!(var_l <= var_ao)) { uint256 value0 = 0; while (true) { uint256 value3 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value3 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value4 = ((var_ao - var_l) * var_ap); if (var_ap != 0x0) { require(((var_ao - var_l)) * var_ap / var_ap == ((var_ao - var_l)), "SafeMath: multiplication overflow"); } else { value4 = 0; } var_c = 0x40 + var_c; require(!((amount + stor_expr_al) < stor_expr_al), "SafeMath: addition overflow"); require(!((value4 / 0x0de0b6b3a7640000) + (amount + stor_expr_al) < (amount + stor_expr_al)), "SafeMath: addition overflow"); require((value4 / 0x0de0b6b3a7640000) + (amount + stor_expr_al) > stor_expr_al, "[Stake] Amount has to be larger than 0"); var_c = 0x40 + var_c; if (stor_expr_al > ((value4 / 0x0de0b6b3a7640000) + (amount + stor_expr_al))) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } require(!(((value4 / 0x0de0b6b3a7640000) + (amount + stor_expr_al) - stor_expr_al + currentTotalStake) < currentTotalStake), "SafeMath: addition overflow"); require(!(((value4 / 0x0de0b6b3a7640000) + (amount + stor_expr_al) - stor_expr_al + currentTotalStake) > maxStakingAmount), "[Stake] Your stake deposit would exceed the current staking limit"); stor_expr_al = ((value4 / 0x0de0b6b3a7640000)) + (amount + stor_expr_al); stor_expr_at = block.timestamp; stor_expr_ae = 0x01 | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & stor_expr_ae); stor_expr_au = stor_103; if (mapping_107[msg.sender] != 0x0) { var_c = 0x40 + var_c; if (0x01 > mapping_107[msg.sender]) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } if ((mapping_107[msg.sender] - 0x01) < stakerAmounts.length) { stor_expr_bb = ((value4 / 0x0de0b6b3a7640000)) + (amount + stor_expr_al); } } else { stakerAddresses.length = stakerAddresses.length + 0x01; stakerAddresses[stakerAddresses.length] = (msg.sender) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & stakerAddresses[stakerAddresses.length]); stakerAmounts.length = stakerAmounts.length + 0x01; stakerAmounts[stakerAmounts.length] = ((value4 / 0x0de0b6b3a7640000)) + (amount + stor_expr_al); mapping_107[msg.sender] = stakerAddresses.length; } currentTotalStake = ((value4 / 0x0de0b6b3a7640000) + (amount + stor_expr_al) - stor_expr_al) + currentTotalStake; require(stor_fd.code.length != 0x0); (bool success2, bytes memory returnData2) = stor_fd.call(abi.encodeWithSelector(bytes4(0x23b872dd), msg.sender, address(this), amount)); // call transferFrom require(success2); var_c = var_c + ((returnData2.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); require(!(((var_c + returnData2.length) - var_c) < 0x20)); require(var_c.length, "[Stake] Something went wrong during the token transfer"); if ((value4 / 0x0de0b6b3a7640000) != 0x0) { require(!(((value4 / 0x0de0b6b3a7640000) + rewardsWithdrawn) < rewardsWithdrawn), "SafeMath: addition overflow"); rewardsWithdrawn = ((value4 / 0x0de0b6b3a7640000)) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded1 = IDesolexERC20(stor_fd).transferFrom(rewardsAddress, address(this), (value4 / 0x0de0b6b3a7640000)); require(transferSucceeded1, "[Stake] Something went wrong while transferring rewards"); } require(!(((value4 / 0x0de0b6b3a7640000) + amount) < amount), "SafeMath: addition overflow"); emit Staked(msg.sender, ((value4 / 0x0de0b6b3a7640000)) + amount); stor_c9_0_0 = true; } function internal_1b58(address arg0) private { uint256 value7 = 0; uint256 value8 = 0; uint256 value9 = 0; uint256 value10 = 0; uint256 value11 = 0; uint256 value12 = 0; if ((bytes1(stor_expr_a) && !(!(stor_expr_b)))) { uint256 var_c; var_c = 0x40 + var_c; if (stor_expr_ec > stor_expr_ed) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } uint256 value1 = 0; if (stor_expr_ee != 0) { require(!((unstakingPeriod + stor_expr_ee) < stor_expr_ee), "SafeMath: addition overflow"); value1 = unstakingPeriod + stor_expr_ee; } var_c = var_c + 0xe0; uint256 value4 = (var_s - var_r); if (var_t != 0x0) { var_c = 0x40 + var_c; if (!(var_r <= var_s)) { uint256 value0 = 0; while (true) { uint256 value2 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value2 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } else { var_c = 0x40 + var_c; if (!(var_r <= stor_103)) { uint256 value0 = 0; while (true) { uint256 value3 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value3 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } value4 = (stor_103 - var_r); } uint256 value5 = (value4 * var_ad); if (var_ad != 0x0) { require(value4 * var_ad / var_ad == value4, "SafeMath: multiplication overflow"); } else { value5 = 0; } var_c = 0x40 + var_c; value7 = (value5 / 0x0de0b6b3a7640000); value8 = (value1) ? 1 : 0; value9 = stor_expr_ee; value10 = stor_expr_eh; value11 = stor_expr_ec; value12 = stor_expr_ed - stor_expr_ec; } } function internal_1d1f() private { // Decompilation incomplete: helper effect provenance is conservative. require(stor_c9_0_0, "ReentrancyGuard: reentrant call"); stor_c9_0_0 = false; require(!paused, "Pausable: paused"); require((0xff & stor_expr_af && stor_expr_ag != 0x0), "[Withdraw Rewards] There is no stake deposit for this account"); require(!(stor_expr_ah), "[Withdraw Rewards] You already initiated the full withdrawal"); uint256 var_c; var_c = var_c + 0xe0; if (!(var_k)) { var_c = 0x40 + var_c; if (!(var_l <= stor_103)) { uint256 value0 = 0; while (true) { uint256 value1 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value1 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value2 = ((stor_103 - var_l)) * var_w; if (var_w != 0x0) { require(((stor_103 - var_l)) * var_w / var_w == ((stor_103 - var_l)), "SafeMath: multiplication overflow"); } else { value2 = 0; } var_c = 0x40 + var_c; require(value2 / 0xde0b6b3a7640000 > 0x0, "[Withdraw Rewards] The reward amount has to be larger than 0"); array_4[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = stor_103; require((value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn >= rewardsWithdrawn, "SafeMath: addition overflow"); rewardsWithdrawn = (value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded = IDesolexERC20(stor_fd).transferFrom(address(rewardsAddress), msg.sender, (value2 / 0x0de0b6b3a7640000)); require(transferSucceeded, "[Withdraw Rewards] Something went wrong while transferring your reward"); emit RewardsWithdrawn(msg.sender, (value2 / 0x0de0b6b3a7640000)); stor_c9_0_0 = true; } var_c = 0x40 + var_c; if (!(var_l <= var_ac)) { uint256 value0 = 0; while (true) { uint256 value3 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value3 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value4 = ((var_ac - var_l) * var_ad); if (var_ad != 0x0) { require(((var_ac - var_l)) * var_ad / var_ad == ((var_ac - var_l)), "SafeMath: multiplication overflow"); } else { value4 = 0; } var_c = 0x40 + var_c; require((value4 / 0x0de0b6b3a7640000) > 0, "[Withdraw Rewards] The reward amount has to be larger than 0"); stor_expr_au = stor_103; require(!(((value4 / 0x0de0b6b3a7640000) + rewardsWithdrawn) < rewardsWithdrawn), "SafeMath: addition overflow"); rewardsWithdrawn = ((value4 / 0x0de0b6b3a7640000)) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded1 = IDesolexERC20(stor_fd).transferFrom(rewardsAddress, msg.sender, (value4 / 0x0de0b6b3a7640000)); require(transferSucceeded1, "[Withdraw Rewards] Something went wrong while transferring your reward"); emit RewardsWithdrawn(msg.sender, (value4 / 0x0de0b6b3a7640000)); stor_c9_0_0 = true; } function internal_1fad() private { // Decompilation incomplete: helper effect provenance is conservative. require(stor_c9_0_0, "ReentrancyGuard: reentrant call"); stor_c9_0_0 = false; require(!paused, "Pausable: paused"); require(stor_expr_ad > 0, "[Stake Rewards] You have must have a staked amount"); require(!(stor_expr_ah), "[Stake Rewards] You have already initiated unstaking"); uint256 var_c; var_c = var_c + 0xe0; if (!(var_k)) { var_c = 0x40 + var_c; if (!(var_l <= stor_103)) { uint256 value0 = 0; while (true) { uint256 value1 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value1 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value2 = ((stor_103 - var_l)) * var_w; if (var_w != 0x0) { require(((stor_103 - var_l)) * var_w / var_w == ((stor_103 - var_l)), "SafeMath: multiplication overflow"); } else { value2 = 0; } var_c = 0x40 + var_c; require(value2 / 0xde0b6b3a7640000 > 0x0, "[Stake Rewards] Rewards to be staked has to be larger than 0"); require((value2 / 0x0de0b6b3a7640000) + currentTotalStake >= currentTotalStake, "SafeMath: addition overflow"); require(!(((value2 / 0x0de0b6b3a7640000) + currentTotalStake) > maxStakingAmount), "[Stake Rewards] Your staked rewards would exceed the current staking limit"); require((value2 / 0x0de0b6b3a7640000) + array_1[(keccak256(abi.encode(address(msg.sender), 0x0107)))] >= array_1[(keccak256(abi.encode(address(msg.sender), 0x0107)))], "SafeMath: addition overflow"); array_1[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = (value2 / 0x0de0b6b3a7640000) + array_1[(keccak256(abi.encode(address(msg.sender), 0x0107)))]; var_c = 0x40 + var_c; if (!(0x01 <= stor_expr_en)) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } if ((stor_expr_en - 0x01) < stakerAmounts.length) { stor_expr_eo = (value2 / 0x0de0b6b3a7640000) + array_1[(keccak256(abi.encode(address(msg.sender), 0x0107)))]; currentTotalStake = (value2 / 0x0de0b6b3a7640000) + currentTotalStake; require((value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn >= rewardsWithdrawn, "SafeMath: addition overflow"); rewardsWithdrawn = (value2 / 0x0de0b6b3a7640000) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded = IDesolexERC20(stor_fd).transferFrom(address(rewardsAddress), address(this), (value2 / 0x0de0b6b3a7640000)); require(transferSucceeded, "[Stake Rewards] Something went wrong while transferring reward"); array_4[(keccak256(abi.encode(address(msg.sender), 0x0107)))] = stor_103; emit RewardsStaked(msg.sender, (value2 / 0x0de0b6b3a7640000)); stor_c9_0_0 = true; } } var_c = 0x40 + var_c; if (!(var_l <= var_ah)) { uint256 value0 = 0; while (true) { uint256 value3 = (value0) ? 1 : 0; if (value0 >= var_c.length) { break; } if (0x20 + value0 >= var_c.length) { break; } value0 = 0x20 + (0x20 + value0); value3 = 0x20 + value0; } revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } uint256 value4 = ((var_ah - var_l) * var_ai); if (var_ai != 0x0) { require(((var_ah - var_l)) * var_ai / var_ai == ((var_ah - var_l)), "SafeMath: multiplication overflow"); } else { value4 = 0; } var_c = 0x40 + var_c; require((value4 / 0x0de0b6b3a7640000) > 0, "[Stake Rewards] Rewards to be staked has to be larger than 0"); require(!(((value4 / 0x0de0b6b3a7640000) + currentTotalStake) < currentTotalStake), "SafeMath: addition overflow"); require(!(((value4 / 0x0de0b6b3a7640000) + currentTotalStake) > maxStakingAmount), "[Stake Rewards] Your staked rewards would exceed the current staking limit"); require(!((value4 / 0x0de0b6b3a7640000) + stor_expr_al < stor_expr_al), "SafeMath: addition overflow"); stor_expr_al = ((value4 / 0x0de0b6b3a7640000)) + stor_expr_al; var_c = 0x40 + var_c; if (0x01 > mapping_107[msg.sender]) { uint256 value0 = 0; while (true) { if (value0 >= var_c.length) { break; } value0 = 0x20 + value0; revert("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); } } if ((mapping_107[msg.sender] - 0x01) < stakerAmounts.length) { stor_expr_bb = ((value4 / 0x0de0b6b3a7640000)) + stor_expr_al; currentTotalStake = ((value4 / 0x0de0b6b3a7640000)) + currentTotalStake; require(!(((value4 / 0x0de0b6b3a7640000) + rewardsWithdrawn) < rewardsWithdrawn), "SafeMath: addition overflow"); rewardsWithdrawn = ((value4 / 0x0de0b6b3a7640000)) + rewardsWithdrawn; require(stor_fd.code.length != 0x0); bool transferSucceeded1 = IDesolexERC20(stor_fd).transferFrom(rewardsAddress, address(this), (value4 / 0x0de0b6b3a7640000)); require(transferSucceeded1, "[Stake Rewards] Something went wrong while transferring reward"); stor_expr_au = stor_103; emit RewardsStaked(msg.sender, (value4 / 0x0de0b6b3a7640000)); stor_c9_0_0 = true; } } function __desolexSelectorShim(uint32 rewrittenSelector) private { assembly { let input := mload(0x40) calldatacopy(input, 0, calldatasize()) mstore(input, or(and(mload(input), 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff), shl(224, and(rewrittenSelector, 0xffffffff)))) let success := delegatecall(gas(), address(), input, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(input, 0, size) switch success case 0 { revert(input, size) } default { return(input, size) } } } // 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. // 0x098d3228 => MAX_INT() // 0x225801a1 => infoWalletFees(address) // 0x22b10554 => setMaxStakingAmount(uint256) // 0x248a9ca3 => getRoleAdmin(bytes32) // 0x24f45e67 => setAPY(uint256) // 0x26a4e8d2 => setTokenAddress(address) // 0x2d3d8bc2 => getStakersRewards(uint256,uint256) // 0x2e17de78 => unstake(uint256) // 0x2f2ff15d => grantRole(bytes32,address) // 0x36568abe => renounceRole(bytes32,address) // 0x370158ea => info() // 0x3bcfc4b8 => apy() // 0x3ccfd60b => withdraw() // 0x3f4ba83a => unpause() // 0x43352d61 => getStakers() // 0x43a333bb => setUnstakingPeriod(uint256) // 0x459598a2 => stakerAddresses(uint256) // 0x4d5d0806 => maxStakingAmount() // 0x59974e38 => distributeRewards(uint256) // 0x5c975abb => paused() // 0x5e00e679 => setRewardAddress(address) // 0x6772fc25 => rewardsDistributedLastDate() // 0x6ad339f1 => feeRewardPcts(uint256) // 0x71df4ebb => stakerAmounts(uint256) // 0x72fe4a61 => feeBurnPcts(uint256) // 0x79350a8f => calculateFees(address,uint256) // 0x8456cb59 => pause() // 0x8610d094 => getStakersRange(uint256,uint256) // 0x9010d07c => Unknown_9010d07c(uint256,uint256) // 0x91d14854 => hasRole(bytes32,address) // 0x9c1454d4 => rewardsDistributed() // 0xa217fddf => DEFAULT_ADMIN_ROLE() // 0xa694fc3a => stake(uint256) // 0xa939e300 => infoWallet(address) // 0xb7760c8f => transfer(uint256,address) // 0xc0973eed => rewardsAddress() // 0xc413d100 => rewardsWithdrawn() // 0xc7b8981c => withdrawRewards() // 0xca15c873 => getRoleMemberCount(bytes32) // 0xce4843e9 => currentTotalStake() // 0xcf9d0b5f => stakeRewards() // 0xd13f90b4 => initialize(address,address,uint256,uint256,uint256) // 0xd3606a4b => feeDurations(uint256) // 0xd547741f => revokeRole(bytes32,address) // 0xe7ffc683 => setRewardsDistributedLastDate(uint256) // 0xe9f69f24 => setFees(uint256[],uint256[],uint256[],address) // 0xee172546 => totalRewardsDistributed() // 0xf172117c => feeRewardAddress() // 0xf21c783b => unstakingPeriod() // 0xf640d508 => transferToken(address,uint256,address) // 0xf97a3357 => getRewardsDistributedLastDate() // 0xfc0c546a => token()}