0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f

deployer: unknown relevance score: 10 status: identified bytecode: 11620 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 unresolved_30adf81f = 49955707469362902507454157297736832118868343942642399513960811609542965143241;
    
    uint256 public INDEX;
    bytes32 store_v;
    uint256 public unresolved_3644e515;
    mapping(bytes32 => bytes32) storage_map_h;
    mapping(bytes32 => bytes32) storage_map_a;
    mapping(bytes32 => bytes32) storage_map_q;
    bool public decimals;
    mapping(bytes32 => bytes32) storage_map_j;
    uint256 public unresolved_18160ddd;
    mapping(bytes32 => bytes32) storage_map_k;
    address public manager;
    bytes32 store_e;
    mapping(bytes32 => bytes32) storage_map_p;
    address public initializer;
    address public stakingContract;
    mapping(bytes32 => bytes32) storage_map_m;
    address store_s;
    mapping(bytes32 => bytes32) storage_map_l;
    bytes32 store_i;
    mapping(bytes32 => bytes32) storage_map_n;
    bytes32 store_t;
    mapping(bytes32 => bytes32) storage_map_u;
    mapping(bytes32 => bytes32) storage_map_o;
    
    event LogStakingContractUpdated(address);
    event Event_8c5be1e5();
    event Transfer(address, address, uint256);
    event LogRebase(uint256, uint256, uint256);
    event LogSupply(uint256, uint256, uint256);
    event OwnershipPulled(address, address);
    event OwnershipPushed(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) {
        var_a = address(arg0);
        storage_map_a[var_a] = arg1;
        emit Event_8c5be1e5(address(msg.sender), address(arg0), arg1);
        return 0x01;
    }
    
    /// @custom:selector    0x40a5737f
    /// @custom:signature   setIndex(uint256 arg0) public payable returns (bool)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function setIndex(uint256 arg0) public payable returns (bool) {
        require(address(manager / 0x01) == (address(msg.sender)), "Ownable: caller is not the owner");
        require(INDEX == 0);
        require(!(arg0 == 0), "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(((arg0 * store_e) / arg0) == store_e, "SafeMath: multiplication overflow");
        INDEX = arg0 * store_e;
        return 0x01;
        INDEX = 0;
        return 0x01;
    }
    
    /// @custom:selector    0xc4d66de8
    /// @custom:signature   initialize(address arg0) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function initialize(address arg0) public payable returns (bool) {
        require(address(msg.sender) == (address(initializer / 0x01)));
        require(!(address(arg0)) == 0);
        stakingContract = (address(arg0) * 0x01) | (uint96(stakingContract));
        require(0x11c37937e08000);
        address var_a = address(stakingContract / 0x01);
        storage_map_a[var_a] = 0xfffffffffffffffffffffffffffffffffffffffffffffffffff1c2d3019e0000;
        emit Transfer(0, address(stakingContract / 0x01), unresolved_18160ddd);
        emit LogStakingContractUpdated(address(arg0));
        initializer = 0 | (uint96(initializer));
        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(!(arg1 == 0), "SafeMath: multiplication overflow");
        require(arg1, "SafeMath: multiplication overflow");
        require(((arg1 * store_e) / arg1) == store_e, "SafeMath: multiplication overflow");
        address var_f = address(msg.sender);
        uint256 var_c = 0x40 + var_c;
        require(!((arg1 * store_e) > storage_map_h[var_f]), "");
        require(!(bytes1(var_c.length)), "");
        var_f = address(msg.sender);
        storage_map_h[var_f] = storage_map_h[var_f] - (arg1 * store_e);
        var_f = address(arg0);
        require(!(storage_map_h[var_f] + (arg1 * store_e) < storage_map_h[var_f]), "SafeMath: addition overflow");
        var_f = address(arg0);
        storage_map_h[var_f] = storage_map_h[var_f] + (arg1 * store_e);
        emit Transfer(address(msg.sender), address(arg0), arg1);
        return 0x01;
    }
    
    /// @custom:selector    0x73c69eb7
    /// @custom:signature   rebases(uint256 arg0) public view returns (bytes memory)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function rebases(uint256 arg0) public view returns (bytes memory) {
        require(arg0 < store_i);
        var_a = 0x0c;
        return abi.encodePacked(storage_map_j[(0x07 * arg0) + keccak256(var_a)], storage_map_k[(0x07 * arg0) + keccak256(var_a)], storage_map_l[(0x07 * arg0) + keccak256(var_a)], storage_map_m[(0x07 * arg0) + keccak256(var_a)], storage_map_n[(0x07 * arg0) + keccak256(var_a)], storage_map_o[(0x07 * arg0) + keccak256(var_a)], storage_map_p[(0x07 * arg0) + keccak256(var_a)]);
    }
    
    /// @custom:selector    0x7ecebe00
    /// @custom:signature   nonces(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function nonces(address arg0) public view returns (uint256) {
        address var_a = address(arg0);
        return storage_map_q[var_a];
    }
    
    /// @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) {
        var_a = address(arg0);
        require(arg1 < storage_map_a[var_a], "");
        uint256 var_c = 0x40 + var_c;
        require(!(arg1 > storage_map_a[var_a]), "");
        require(!(bytes1(var_c.length)), "");
        var_a = address(arg0);
        storage_map_a[var_a] = storage_map_a[var_a] - arg1;
        var_a = address(arg0);
        emit Event_8c5be1e5(address(msg.sender), address(arg0), storage_map_a[var_a]);
        return 0x01;
        var_a = address(arg0);
        storage_map_a[var_a] = 0;
        var_a = address(arg0);
        emit Event_8c5be1e5(address(msg.sender), address(arg0), storage_map_a[var_a]);
        return 0x01;
    }
    
    /// @custom:selector    0x7965d56d
    /// @custom:signature   balanceForGons(uint256 arg0) public view returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function balanceForGons(uint256 arg0) public view returns (uint256) {
        uint256 var_a = 0x40 + var_a;
        require(store_e > 0, "");
        require(store_e, "");
        return arg0 / store_e;
        require(!(bytes1(var_a.length)), "");
    }
    
    /// @custom:selector    0xd505accf
    /// @custom:signature   Unresolved_d505accf(address arg0, address arg1, uint256 arg2, uint256 arg3, bool arg4, uint256 arg5, uint256 arg6) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg5 ["uint256", "bytes32", "int256"]
    /// @param              arg6 ["uint256", "bytes32", "int256"]
    function Unresolved_d505accf(address arg0, address arg1, uint256 arg2, uint256 arg3, bool arg4, uint256 arg5, uint256 arg6) public payable {
        require(!block.timestamp > arg3);
        address var_a = address(arg0);
        var_b = 0x06;
        uint256 var_j = 0x20 + (0x20 + (0x20 + (0x20 + (0x20 + (0x20 + (0x20 + var_j))))));
        var_j = 0x20 + var_j;
        address var_u = ecrecover(keccak256(var_n), bytes1(arg4), arg5, arg6);
        require(var_b);
        require(!(!(address(var_u)) == 0), "ZeroSwapPermit: Invalid signature");
        require(address(var_u) == (address(arg0)), "ZeroSwapPermit: Invalid signature");
        var_a = address(arg0);
        storage_map_q[var_a] = (storage_map_q[var_a]) + 0x01;
        var_a = address(arg1);
        storage_map_a[var_a] = arg2;
        emit Event_8c5be1e5(address(arg0), address(arg1), arg2);
        require(!(address(var_u) == 0), "ZeroSwapPermit: Invalid signature");
        var_a = address(arg0);
        storage_map_q[var_a] = (storage_map_q[var_a]) + 0x01;
        var_a = address(arg1);
        storage_map_a[var_a] = arg2;
        emit Event_8c5be1e5(address(arg0), address(arg1), arg2);
    }
    
    /// @custom:selector    0xdd62ed3e
    /// @custom:signature   Unresolved_dd62ed3e(address arg0, address arg1) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_dd62ed3e(address arg0, address arg1) public view returns (uint256) {
        var_a = address(arg1);
        return storage_map_a[var_a];
    }
    
    /// @custom:selector    0x46f68ee9
    /// @custom:signature   pushManagement(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function pushManagement(address arg0) public payable {
        require(address(manager / 0x01) == (address(msg.sender)), "Ownable: caller is not the owner");
        require(!(address(arg0) == 0), "Ownable: new owner is the zero address");
        emit OwnershipPushed(address(manager / 0x01), address(arg0));
        store_s = (address(arg0) * 0x01) | (uint96(store_s));
    }
    
    /// @custom:selector    0x5a96ac0a
    /// @custom:signature   pullManagement() public payable
    function pullManagement() public payable {
        require(address(msg.sender) == (address(store_s / 0x01)), "Ownable: must be new owner to pull");
        emit OwnershipPulled(address(manager / 0x01), address(store_s / 0x01));
        manager = (address(store_s / 0x01) * 0x01) | (uint96(manager));
    }
    
    /// @custom:selector    0x06fdde03
    /// @custom:signature   Unresolved_06fdde03() public view returns (string memory)
    function Unresolved_06fdde03() public view returns (string memory) {
        bytes1 var_a = var_a + (0x20 + (((0x1f + (((0x0100 * (!bytes1(store_t))) - 0x01) & (store_t) / 0x02)) / 0x20) * 0x20));
        if (!(((0x0100 * (!store_t)) - 0x01) & (store_t)) / 0x02) {
            if (0x1f < (((0x0100 * (!store_t)) - 0x01) & (store_t) / 0x02)) {
                var_c = 0x03;
                if ((0x20 + var_a) + (((0x0100 * (!store_t)) - 0x01) & (store_t) / 0x02) > (0x20 + (0x20 + var_a))) {
                    if (!var_a.length) {
                        return abi.encodePacked((0x20 + var_a) - var_a, var_a.length, (~((0x0100 ** (0x20 - (bytes1(var_a.length)))) - 0x01)) & (var_g));
                        return abi.encodePacked((0x20 + var_a) - var_a, var_a.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) {
        var_a = address(arg0);
        require(!((storage_map_a[var_a] + arg1) < storage_map_a[var_a]), "SafeMath: addition overflow");
        var_a = address(arg0);
        storage_map_a[var_a] = storage_map_a[var_a] + arg1;
        var_a = address(arg0);
        emit Event_8c5be1e5(address(msg.sender), address(arg0), storage_map_a[var_a]);
        return 0x01;
    }
    
    /// @custom:selector    0x95d89b41
    /// @custom:signature   Unresolved_95d89b41() public view returns (string memory)
    function Unresolved_95d89b41() public view returns (string memory) {
        bytes1 var_a = var_a + (0x20 + (((0x1f + (((0x0100 * (!bytes1(store_v))) - 0x01) & (store_v) / 0x02)) / 0x20) * 0x20));
        if (!(((0x0100 * (!store_v)) - 0x01) & (store_v)) / 0x02) {
            if (0x1f < (((0x0100 * (!store_v)) - 0x01) & (store_v) / 0x02)) {
                var_c = 0x04;
                if ((0x20 + var_a) + (((0x0100 * (!store_v)) - 0x01) & (store_v) / 0x02) > (0x20 + (0x20 + var_a))) {
                    if (!var_a.length) {
                        return abi.encodePacked((0x20 + var_a) - var_a, var_a.length, (~((0x0100 ** (0x20 - (bytes1(var_a.length)))) - 0x01)) & (var_g));
                        return abi.encodePacked((0x20 + var_a) - var_a, var_a.length);
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x23b872dd
    /// @custom:signature   Unresolved_23b872dd(address arg0, address arg1, uint256 arg2) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function Unresolved_23b872dd(address arg0, address arg1, uint256 arg2) public payable returns (bool) {
        var_a = address(msg.sender);
        uint256 var_c = 0x40 + var_c;
        require(!(arg2 > storage_map_a[var_a]), "");
        require(!(bytes1(var_c.length)), "");
        var_a = address(msg.sender);
        storage_map_a[var_a] = storage_map_a[var_a] - arg2;
        var_a = address(msg.sender);
        emit Event_8c5be1e5(address(arg0), address(msg.sender), storage_map_a[var_a]);
        require(!(arg2 == 0), "SafeMath: multiplication overflow");
        require(arg2, "SafeMath: multiplication overflow");
        require(((arg2 * store_e) / arg2) == store_e, "SafeMath: multiplication overflow");
        var_a = address(arg0);
        var_c = 0x40 + var_c;
        require(!((arg2 * store_e) > storage_map_a[var_a]), "");
        require(!(bytes1(var_c.length)), "");
        var_a = address(arg0);
        storage_map_a[var_a] = storage_map_a[var_a] - (arg2 * store_e);
        var_a = address(arg1);
        require(!(storage_map_a[var_a] + (arg2 * store_e) < storage_map_a[var_a]), "SafeMath: addition overflow");
        var_a = address(arg1);
        storage_map_a[var_a] = storage_map_a[var_a] + (arg2 * store_e);
        emit Transfer(address(arg0), address(arg1), arg2);
        return 0x01;
    }
    
    /// @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) {
        address var_a = address(arg0);
        uint256 var_c = 0x40 + var_c;
        require(store_e > 0, "");
        require(store_e, "");
        return storage_map_a[var_a] / store_e;
        require(!(bytes1(var_c.length)), "");
    }
    
    /// @custom:selector    0x058ecdb4
    /// @custom:signature   rebase(uint256 arg0, uint256 arg1) public payable returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function rebase(uint256 arg0, uint256 arg1) public payable returns (uint256) {
        require(address(msg.sender) == (address(stakingContract / 0x01)));
        address var_a = address(stakingContract / 0x01);
        require(store_e > 0, "");
        require(store_e, "");
        var_c = 0x40 + var_c;
        require(!((storage_map_a[var_a] / store_e) > unresolved_18160ddd), "");
        require(!(bytes1(var_c.length)), "");
        require(!(arg0 == 0), "SafeMath: multiplication overflow");
        require(!((unresolved_18160ddd - (storage_map_a[var_a] / store_e)) > 0), "SafeMath: multiplication overflow");
        require(!(arg0 == 0), "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(((arg0 * unresolved_18160ddd) / arg0) == unresolved_18160ddd, "SafeMath: multiplication overflow");
        require(!((unresolved_18160ddd + arg0) < unresolved_18160ddd), "SafeMath: addition overflow");
        unresolved_18160ddd = unresolved_18160ddd + arg0;
        require(!(unresolved_18160ddd > 0xffffffffffffffffffffffffffffffff), "");
        unresolved_18160ddd = 0xffffffffffffffffffffffffffffffff;
        require(0x11c37937e08000, "");
        require(0x11c37937e08000, "");
        emit LogSupply(arg1, block.timestamp, unresolved_18160ddd);
        var_c = 0x40 + var_c;
        require(store_e > 0, "");
        require(store_e, "");
        emit LogRebase(arg1, 0, INDEX / store_e);
        return unresolved_18160ddd;
        require(!(bytes1(var_c.length)), "");
    }
    
    /// @custom:selector    0x089208d8
    /// @custom:signature   renounceManagement() public payable
    function renounceManagement() public payable {
        require(address(manager / 0x01) == (address(msg.sender)), "Ownable: caller is not the owner");
        emit OwnershipPushed(address(manager / 0x01), 0);
        manager = 0 | (uint96(manager));
    }
    
    /// @custom:selector    0x1bd39674
    /// @custom:signature   gonsForBalance(uint256 arg0) public view returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function gonsForBalance(uint256 arg0) public view returns (uint256) {
        require(!(arg0 == 0), "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(((arg0 * store_e) / arg0) == store_e, "SafeMath: multiplication overflow");
        return arg0 * store_e;
        return 0;
    }
}

ABI

[
  {
    "type": "function",
    "name": "INDEX",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "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"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_30adf81f",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_3644e515",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_70a08231",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_95d89b41",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_d505accf",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "bool"
      },
      {
        "name": "arg5",
        "type": "uint256"
      },
      {
        "name": "arg6",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_dd62ed3e",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "balanceForGons",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "circulatingSupply",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "decimals",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "decreaseAllowance",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "gonsForBalance",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "increaseAllowance",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "index",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "initialize",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "initializer",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "manager",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "nonces",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pullManagement",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "pushManagement",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "rebase",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "rebases",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "renounceManagement",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setIndex",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "stakingContract",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "event",
    "name": "Event_8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "LogRebase",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "LogStakingContractUpdated",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "LogSupply",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipPulled",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipPushed",
    "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
  }
]

UNKNOWN SELECTORS (0)

(none -- all recognized)
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)