Candidate
Score: 32/100
Administrative, pausing, blacklist, issuance, redemption, and several forwarding branches are partially represented, but core ERC20 transfer logic is largely missing or incorrect, with significant storage, calldata, event, and arithmetic discrepancies.
- The non-deprecated transfer function only checks pause status, blacklist status, and payload length; it does not calculate fees, update sender or recipient balances, credit fees to the owner, or emit Transfer events.
- The non-deprecated transferFrom function omits allowance handling, allowance decrementing, balance updates, fee processing, and Transfer events.
- Deprecated transfer forwarding does not preserve the required calldata and arguments (msg.sender, recipient, and value); it appears to forward only msg.sender.
- Deprecated transferFrom forwarding does not pass the required legacy arguments (msg.sender, from, to, and value).
- Deprecated approve forwarding does not pass the spender and value arguments.
- The non-deprecated approve function writes to allowed[var_d][var_e] instead of clearly preserving the required allowed[msg.sender][arg0] storage update.
- Transfer events are absent from the decompiled event declarations and are not emitted by the transfer or transferFrom implementations.
- destroyBlackFunds sets the blacklisted user's balance to zero before subtracting it from total supply and emitting the event, causing the non-deprecated path to subtract and report zero instead of the original dirty balance.
- The original destroyBlackFunds behavior is not conditional on deprecation; it obtains the balance through balanceOf and then always clears the local balance and reduces total supply, whereas the decompiled code introduces divergent deprecated and non-deprecated behavior.
- setParams does not correctly preserve SafeMath overflow behavior for maximumFee multiplication: on overflow it can silently skip the assignment and event instead of reverting.
- The constructor and its initialization of owner, total supply, name, symbol, decimals, owner balance, and deprecated state are not represented.
- Several external forwarding calls use unresolved selectors and incomplete or unclear return-variable handling, so their target calldata and returned values are not faithfully represented.