0xbbea78397d4d4590882efcc4820f03074ab2ab29

deployer: unknown relevance score: 0 status: partially_identified bytecode: 15519 bytes

DECOMPILED SOLIDITY (Heimdall)

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

/// @title            Decompiled Contract
/// @author           Jonathan Becker <jonathan@jbecker.dev>
/// @custom:version   heimdall-rs v0.9.2
///
/// @notice           This contract was decompiled using the heimdall-rs decompiler.
///                     It was generated directly by tracing the EVM opcodes from this contract.
///                     As a result, it may not compile or even be valid solidity code.
///                     Despite this, it should be obvious what each function does. Overall
///                     logic should have been preserved throughout decompiling.
///
/// @custom:github    You can find the open-source decompiler here:
///                       https://heimdall.rs

contract DecompiledContract {
    uint256 public constant burnAddress = 873;
    uint256 public constant decimals = 18;
    
    address public registry;
    address store_p;
    bytes32 store_k;
    mapping(bytes32 => bytes32) storage_map_a;
    bytes32 store_m;
    mapping(bytes32 => bytes32) storage_map_j;
    uint256 public unresolved_18160ddd;
    bytes32 store_c;
    mapping(bytes32 => bytes32) storage_map_i;
    bytes32 store_f;
    uint256 public totalBurned;
    bytes32 store_h;
    bytes32 store_l;
    mapping(bytes32 => bytes32) storage_map_e;
    mapping(bytes32 => bytes32) storage_map_n;
    address public owner;
    
    event Event_8c5be1e5();
    error OwnableInvalidOwner(address);
    event Transfer(address, address, uint256);
    event OwnershipTransferred(address, address);
    
    /// @custom:selector    0x095ea7b3
    /// @custom:signature   Unresolved_095ea7b3(address arg0, uint256 arg1) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Unresolved_095ea7b3(address arg0, uint256 arg1) public payable returns (bool) {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        require(address(msg.sender) - 0, "Approve to zero address");
        require(address(arg0) - 0, "Approve to zero address");
        var_a = address(arg0);
        storage_map_a[var_a] = arg1;
        emit Event_8c5be1e5(address(msg.sender), address(arg0), arg1);
        return 0x01;
    }
    
    /// @custom:selector    0xa9059cbb
    /// @custom:signature   transfer(address arg0, uint256 arg1) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function transfer(address arg0, uint256 arg1) public payable returns (bool) {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        require(store_c == 0x01);
        store_c = 0x02;
        address var_b = address(arg0);
        (bool success, bytes memory ret0) = address(registry / 0x01).{ value: 0 ether }Unresolved_640562b1(var_b); // call
        uint256 var_g = var_g + (uint248(ret0.length + 0x1f));
        require(!((var_g + ret0.length) - var_g) < 0x40);
        require(var_h == (var_h));
        require(var_i == (var_i));
        require(!(var_h > 0), "Transfer amount exceeds balance");
        require(!(var_h > 0), "Transfer amount exceeds balance");
        require(!(var_h > 0), "Transfer amount exceeds balance");
        require(address(msg.sender) - 0, "Transfer amount exceeds balance");
        require(address(arg0) == 0, "Transfer amount exceeds balance");
        require(!(address(arg0) == 0x0369), "Transfer amount exceeds balance");
        require(!(address(msg.sender).code.length > 0), "Transfer amount exceeds balance");
        address var_j = address(tx.origin);
        require(!(storage_map_e[var_j] > (storage_map_e[var_j] + (var_i))), "Transfer amount exceeds balance");
        var_j = address(msg.sender);
        require(!(storage_map_e[var_j] < (var_i)), "Transfer amount exceeds balance");
        var_j = address(msg.sender);
        storage_map_e[var_j] = storage_map_e[var_j] - (var_i);
        var_j = address(arg0);
        storage_map_e[var_j] = storage_map_e[var_j] + (var_i);
        emit Transfer(address(msg.sender), address(arg0), var_i);
        store_c = 0x01;
        return 0x01;
        if (!(address(arg0)) == 0) {
        }
        require((!var_i) | (var_h == (var_i * (var_h) / (var_i))), "Transfer amount exceeds balance");
        require(0x2710, "Transfer amount exceeds balance");
        require(!((var_i * (var_h) / 0x2710) > 0), "Transfer amount exceeds balance");
        require((!(var_i * (var_h)) / 0x2710) | (store_f == (((var_i * (var_h) / 0x2710) * store_f) / (var_i * (var_h) / 0x2710))), "Transfer amount exceeds balance");
        require(0x2710, "Transfer amount exceeds balance");
        require(!((var_i * (var_h) / 0x2710) - (((var_i * (var_h) / 0x2710) * store_f) / 0x2710) > (var_i * (var_h) / 0x2710)), "Transfer amount exceeds balance");
        require(!((((var_i * (var_h) / 0x2710) * store_f) / 0x2710) > 0), "Transfer amount exceeds balance");
        require(address(msg.sender) - 0, "Transfer amount exceeds balance");
        require(0 == 0, "Transfer amount exceeds balance");
        require(!(0 == 0x0369), "Transfer amount exceeds balance");
        require(!(address(msg.sender).code.length > 0), "Transfer amount exceeds balance");
        var_j = address(tx.origin);
        require(!(storage_map_e[var_j] > (storage_map_e[var_j] + (((var_i * (var_h) / 0x2710) * store_f) / 0x2710))), "Transfer amount exceeds balance");
        var_j = address(msg.sender);
        require(!(storage_map_e[var_j] < (((var_i * (var_h) / 0x2710) * store_f) / 0x2710)), "Transfer amount exceeds balance");
        var_j = address(msg.sender);
        storage_map_e[var_j] = storage_map_e[var_j] - (((var_i * (var_h) / 0x2710) * store_f) / 0x2710);
        var_j = 0;
        storage_map_e[var_j] = storage_map_e[var_j] + (((var_i * (var_h) / 0x2710) * store_f) / 0x2710);
        emit Transfer(address(msg.sender), 0, ((var_i * (var_h) / 0x2710) * store_f) / 0x2710);
        require(!((var_i * (var_h) / 0x2710) - (((var_i * (var_h) / 0x2710) * store_f) / 0x2710) > 0), "Transfer from zero address");
        require(address(msg.sender) - 0, "Transfer from zero address");
        if (!0 == 0) {
        }
    }
    
    /// @custom:selector    0xa457c2d7
    /// @custom:signature   decreaseAllowance(address arg0, uint256 arg1) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function decreaseAllowance(address arg0, uint256 arg1) public payable returns (bool) {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        var_a = address(arg0);
        require(!(storage_map_a[var_a] < arg1), "Decreased allowance below zero");
        require(address(msg.sender) - 0, "Approve to zero address");
        require(address(arg0) - 0, "Approve to zero address");
        var_a = address(arg0);
        storage_map_a[var_a] = storage_map_a[var_a] - arg1;
        emit Event_8c5be1e5(address(msg.sender), address(arg0), storage_map_a[var_a] - arg1);
        return 0x01;
    }
    
    /// @custom:selector    0x9c53417b
    /// @custom:signature   getLatestBurnEOA(address arg0) public view returns (uint224)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getLatestBurnEOA(address arg0) public view returns (uint224) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        require(storage_map_i[var_a] == 0);
        require(!(storage_map_i[var_a] - 0x01) > (storage_map_i[var_a]));
        var_a = 0 + keccak256(var_a);
        return uint224(storage_map_j[keccak256(var_a) + (storage_map_i[var_a] - 0x01)] / 0x0100000000);
        return 0;
    }
    
    /// @custom:selector    0xdd62ed3e
    /// @custom:signature   Unresolved_dd62ed3e(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_dd62ed3e(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0x87562012
    /// @custom:signature   Unresolved_87562012(uint256 arg0) public pure
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function Unresolved_87562012(uint256 arg0) public pure {
        require(arg0 == arg0);
    }
    
    /// @custom:selector    0x06fdde03
    /// @custom:signature   Unresolved_06fdde03() public view returns (string memory)
    function Unresolved_06fdde03() public view returns (string memory) {
        if (store_k) {
            if (store_k - ((store_k / 0x02) < 0x20)) {
                uint256 var_c = var_c + (0x20 + (((0x1f + (store_k / 0x02)) / 0x20) * 0x20));
                if (store_k) {
                    if (store_k - ((store_k / 0x02) < 0x20)) {
                        if (!store_k / 0x02) {
                            if (0x1f < (store_k / 0x02)) {
                                var_a = 0x12;
                                if ((0x20 + var_c) + (store_k / 0x02) > (0x20 + (0x20 + var_c))) {
                                    return abi.encodePacked((var_c + 0x20) - var_c, var_c.length);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x39509351
    /// @custom:signature   increaseAllowance(address arg0, uint256 arg1) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function increaseAllowance(address arg0, uint256 arg1) public payable returns (bool) {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        var_a = address(arg0);
        require(!(storage_map_a[var_a] > (storage_map_a[var_a] + arg1)), "Approve to zero address");
        require(address(msg.sender) - 0, "Approve to zero address");
        require(address(arg0) - 0, "Approve to zero address");
        var_a = address(arg0);
        storage_map_a[var_a] = storage_map_a[var_a] + arg1;
        emit Event_8c5be1e5(address(msg.sender), address(arg0), storage_map_a[var_a] + arg1);
        return 0x01;
    }
    
    /// @custom:selector    0x95d89b41
    /// @custom:signature   Unresolved_95d89b41() public view returns (string memory)
    function Unresolved_95d89b41() public view returns (string memory) {
        if (store_l) {
            if (store_l - ((store_l / 0x02) < 0x20)) {
                uint256 var_c = var_c + (0x20 + (((0x1f + (store_l / 0x02)) / 0x20) * 0x20));
                if (store_l) {
                    if (store_l - ((store_l / 0x02) < 0x20)) {
                        if (!store_l / 0x02) {
                            if (0x1f < (store_l / 0x02)) {
                                var_a = 0x13;
                                if ((0x20 + var_c) + (store_l / 0x02) > (0x20 + (0x20 + var_c))) {
                                    return abi.encodePacked((var_c + 0x20) - var_c, var_c.length);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x3bf4c874
    /// @custom:signature   Rewardtransfer(address arg0, uint256 arg1) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Rewardtransfer(address arg0, uint256 arg1) public payable {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        address var_b = address(msg.sender);
        require(0x04 < 0x06);
        (bool success, bytes memory ret0) = address(store_m / 0x01).Unresolved_23a3ad72(var_b); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!(((var_f + ret0.length) - var_f) < 0x20), "Access Restricted");
        require(var_g == (var_g), "Access Restricted");
        require(var_g, "Access Restricted");
        require(store_c == 0x01, "Transfer amount exceeds balance");
        store_c = 0x02;
        require(address(msg.sender) - 0, "Transfer amount exceeds balance");
        require(address(arg0) == 0, "Transfer amount exceeds balance");
        require(!(address(arg0) == 0x0369), "Transfer amount exceeds balance");
        require(!(address(msg.sender).code.length > 0), "Transfer amount exceeds balance");
        address var_c = address(tx.origin);
        require(!(storage_map_n[var_c] > (storage_map_n[var_c] + arg1)), "Transfer amount exceeds balance");
        var_c = address(msg.sender);
        require(!(storage_map_n[var_c] < arg1), "Transfer amount exceeds balance");
        var_c = address(msg.sender);
        storage_map_n[var_c] = storage_map_n[var_c] - arg1;
        var_c = address(arg0);
        storage_map_n[var_c] = storage_map_n[var_c] + arg1;
        emit Transfer(address(msg.sender), address(arg0), arg1);
        store_c = 0x01;
        if (!(address(arg0)) == 0) {
        }
    }
    
    /// @custom:selector    0x4274e43d
    /// @custom:signature   burnBalanceEOA(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function burnBalanceEOA(address arg0) public view returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        return storage_map_a[var_a];
    }
    
    /// @custom:selector    0xe6993191
    /// @custom:signature   getLatestBurnContract(address arg0) public view returns (uint224)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getLatestBurnContract(address arg0) public view returns (uint224) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        require(storage_map_i[var_a] == 0);
        require(!(storage_map_i[var_a] - 0x01) > (storage_map_i[var_a]));
        var_a = 0 + keccak256(var_a);
        return uint224(storage_map_j[keccak256(var_a) + (storage_map_i[var_a] - 0x01)] / 0x0100000000);
        return 0;
    }
    
    /// @custom:selector    0x23b872dd
    /// @custom:signature   Unresolved_23b872dd(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_23b872dd(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0xf2fde38b
    /// @custom:signature   transferOwnership(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function transferOwnership(address arg0) public payable {
        require(arg0 == (address(arg0)));
        require(address(owner / 0x01) == (address(msg.sender)), CustomError_118cdaa7());
        require(address(arg0) - 0, CustomError_1e4fbdf7());
        owner = (address(arg0) * 0x01) | (uint96(owner));
        emit OwnershipTransferred(address(owner / 0x01), address(arg0));
    }
    
    /// @custom:selector    0x70a08231
    /// @custom:signature   Unresolved_70a08231(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_70a08231(address arg0) public view returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        return storage_map_a[var_a];
    }
    
    /// @custom:selector    0x493722e5
    /// @custom:signature   Unresolved_493722e5(address arg0, uint256 arg1) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Unresolved_493722e5(address arg0, uint256 arg1) public payable {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        address var_b = address(msg.sender);
        require(0x03 < 0x06);
        (bool success, bytes memory ret0) = address(store_m / 0x01).Unresolved_23a3ad72(var_b); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!(((var_f + ret0.length) - var_f) < 0x20), "Access Restricted");
        require(var_g == (var_g), "Access Restricted");
        require(var_g, "Access Restricted");
        address var_c = address(arg0);
        storage_map_n[var_c] = (arg1 * 0x01) | (uint248(storage_map_n[var_c]));
    }
    
    /// @custom:selector    0x40c10f19
    /// @custom:signature   mint(address arg0, uint256 arg1) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function mint(address arg0, uint256 arg1) public payable {
        require(arg0 == (address(arg0)));
        require(arg1 == arg1);
        address var_b = address(msg.sender);
        require(0x04 < 0x06);
        (bool success, bytes memory ret0) = address(store_m / 0x01).Unresolved_23a3ad72(var_b); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!(((var_f + ret0.length) - var_f) < 0x20), "Access Restricted");
        require(var_g == (var_g), "Access Restricted");
        require(var_g, "Access Restricted");
        require(address(arg0) - 0, "Mint to zero address");
        require(!(unresolved_18160ddd > (unresolved_18160ddd + arg1)), "Mint to zero address");
        unresolved_18160ddd = unresolved_18160ddd + arg1;
        address var_c = address(arg0);
        storage_map_n[var_c] = storage_map_n[var_c] + arg1;
        emit Transfer(0, address(arg0), arg1);
    }
    
    /// @custom:selector    0xf0f44260
    /// @custom:signature   setTreasury(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function setTreasury(address arg0) public payable {
        require(arg0 == (address(arg0)));
        address var_b = address(msg.sender);
        require(0x04 < 0x06);
        (bool success, bytes memory ret0) = address(store_m / 0x01).Unresolved_23a3ad72(var_b); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!(((var_f + ret0.length) - var_f) < 0x20), "Access Restricted");
        require(var_g == (var_g), "Access Restricted");
        require(var_g, "Access Restricted");
        store_p = (address(arg0) * 0x01) | (uint96(store_p));
    }
    
    /// @custom:selector    0x6fe34e89
    /// @custom:signature   burnBalanceContract(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function burnBalanceContract(address arg0) public view returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        return storage_map_a[var_a];
    }
    
    /// @custom:selector    0xa91ee0dc
    /// @custom:signature   setRegistry(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function setRegistry(address arg0) public payable {
        require(arg0 == (address(arg0)));
        address var_b = address(msg.sender);
        require(0x03 < 0x06);
        (bool success, bytes memory ret0) = address(store_m / 0x01).Unresolved_23a3ad72(var_b); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!(((var_f + ret0.length) - var_f) < 0x20), "Access Restricted");
        require(var_g == (var_g), "Access Restricted");
        require(var_g, "Access Restricted");
        require(address(arg0).code.length > 0, "Provided address is not a contract");
        registry = (address(arg0) * 0x01) | (uint96(registry));
    }
    
    /// @custom:selector    0xcb4ca631
    /// @custom:signature   isExcludedFromTax(address arg0) public view returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function isExcludedFromTax(address arg0) public view returns (bool) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        return !(!bytes1(storage_map_a[var_a] / 0x01));
    }
    
    /// @custom:selector    0xbe183492
    /// @custom:signature   getFullBurnHistoryContract(address arg0) public view returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getFullBurnHistoryContract(address arg0) public view returns (bytes memory) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        address var_c = var_c + (0x20 + (0x20 * storage_map_a[var_a]));
        if (!storage_map_a[var_a]) {
            var_a = keccak256(var_a);
            require(!storage_map_a[var_a]);
            require((0x20 + var_c) + (0x20 * storage_map_a[var_a]) > (0x20 + (0x20 + var_c)));
            var_c = var_c + (0x20 + (0x20 * var_c.length));
            require(!var_c.length > 0xffffffffffffffff);
            var_a = address(arg0);
            require(!var_c.length);
            require(!0 < (storage_map_i[var_a]));
            require(0x02);
            var_a = 0 + keccak256(var_a);
            require(!(0 & (storage_map_i[var_a])) > (0 & (storage_map_i[var_a]) + ((0 ^ (storage_map_i[var_a])) / 0x02)));
        }
        require(storage_map_i[var_a] == 0);
        require(!(storage_map_i[var_a] - 0x01) > (storage_map_i[var_a]));
        return abi.encodePacked((var_c + 0x40) - var_c, ((var_c + 0x40) + 0x20) - var_c, var_c.length, var_c.length);
    }
    
    /// @custom:selector    0xcae5cb50
    /// @custom:signature   getFullBurnHistoryEOA(address arg0) public view returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getFullBurnHistoryEOA(address arg0) public view returns (bytes memory) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        address var_c = var_c + (0x20 + (0x20 * storage_map_a[var_a]));
        if (!storage_map_a[var_a]) {
            var_a = keccak256(var_a);
            require(!storage_map_a[var_a]);
            require((0x20 + var_c) + (0x20 * storage_map_a[var_a]) > (0x20 + (0x20 + var_c)));
            var_c = var_c + (0x20 + (0x20 * var_c.length));
            require(!var_c.length > 0xffffffffffffffff);
            var_a = address(arg0);
            require(!var_c.length);
            require(!0 < (storage_map_i[var_a]));
            require(0x02);
            var_a = 0 + keccak256(var_a);
            require(!(0 & (storage_map_i[var_a])) > (0 & (storage_map_i[var_a]) + ((0 ^ (storage_map_i[var_a])) / 0x02)));
        }
        require(storage_map_i[var_a] == 0);
        require(!(storage_map_i[var_a] - 0x01) > (storage_map_i[var_a]));
        return abi.encodePacked((var_c + 0x40) - var_c, ((var_c + 0x40) + 0x20) - var_c, var_c.length, var_c.length);
    }
    
    /// @custom:selector    0x715018a6
    /// @custom:signature   renounceOwnership() public payable
    function renounceOwnership() public payable {
        require(address(owner / 0x01) == (address(msg.sender)), CustomError_118cdaa7());
        owner = 0 | (uint96(owner));
        emit OwnershipTransferred(address(owner / 0x01), 0);
    }
}

ABI

[
  {
    "type": "function",
    "name": "Rewardtransfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_06fdde03",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_095ea7b3",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_18160ddd",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_23b872dd",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_493722e5",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_70a08231",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_87562012",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_95d89b41",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_dd62ed3e",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "burnAddress",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "burnBalanceContract",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "burnBalanceEOA",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "decimals",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "decreaseAllowance",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getFullBurnHistoryContract",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getFullBurnHistoryEOA",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getLatestBurnContract",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint224"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getLatestBurnEOA",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint224"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "increaseAllowance",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "isExcludedFromTax",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "mint",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "registry",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "renounceOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setRegistry",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setTreasury",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "totalBurned",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "event",
    "name": "Event_8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferred",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "OwnableInvalidOwner",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ]
  },
  {
    "type": "error",
    "name": "OwnableUnauthorizedAccount",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ]
  }
]

UNKNOWN SELECTORS (10)

0x6fe34e89unknown
0xcae5cb50unknown
0xbe183492unknown
0x4274e43dunknown
0x3bf4c874unknown
0x9c53417bunknown
0xe6993191unknown
0x640562b1unknown
0x87562012unknown
0x493722e5unknown
These selectors are not yet in the research database — they are being investigated and will be added as known functions once identified. They are also marked in red in the decompiled Solidity above.

KNOWN CLUSTER ADDRESSES IN THIS BYTECODE (0)

(none)