0xe01698760ec750f5f1603ce84c148bab99cf1a74

deployer: unknown relevance score: 0 status: partially_identified bytecode: 8995 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 currencyKey;
    address public token;
    address public owner;
    address public nominatedOwner;
    mapping(bytes32 => bytes32) storage_map_i;
    uint256 public lastPauseTime;
    uint256 public synthContractName;
    uint256 public targetSynthIssued;
    address public resolver;
    mapping(bytes32 => bytes32) storage_map_e;
    mapping(bytes32 => bytes32) storage_map_l;
    mapping(bytes32 => bytes32) storage_map_j;
    
    event OwnerNominated(address);
    event OwnerChanged(address, address);
    event PauseChanged(bool);
    
    /// @custom:selector    0x79ba5097
    /// @custom:signature   acceptOwnership() public
    function acceptOwnership() public {
        require(msg.sender == (address(nominatedOwner)), "You must be nominated before you can accept ownership");
        emit OwnerChanged(address(owner), address(nominatedOwner));
        owner = (address(nominatedOwner)) | (uint96(owner));
        nominatedOwner = uint96(nominatedOwner);
    }
    
    /// @custom:selector    0x0902f1ac
    /// @custom:signature   getReserves() public returns (uint256)
    function getReserves() public returns (uint256) {
        address var_b = address(this);
        require(address(token).code.length);
        (bool success, bytes memory ret0) = address(token).Unresolved_70a08231(var_b); // staticcall
        require(!ret0.length < 0x20);
        return var_c.length;
    }
    
    /// @custom:selector    0x509bf42a
    /// @custom:signature   burnFeeRate() public returns (uint256)
    function burnFeeRate() public returns (uint256) {
        var_a = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        uint256 var_f = var_f + 0x51;
        require(address(storage_map_e[var_a]));
        var_f = 0x14 + (0x20 + (0x20 + var_f));
        var_k = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_e[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_e[var_a]).Unresolved_c4f610ed(var_k); // staticcall
        require(!ret0.length < 0x20);
        return var_f.length;
        require(!(bytes1(var_f.length)), "");
    }
    
    /// @custom:selector    0x8a926d0f
    /// @custom:signature   maxTokenAmount() public returns (uint256)
    function maxTokenAmount() public returns (uint256) {
        var_a = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        uint256 var_f = var_f + 0x51;
        require(address(storage_map_e[var_a]));
        var_f = 0x14 + (0x20 + (0x20 + var_f));
        var_k = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_e[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_e[var_a]).Unresolved_23257c2b(var_k); // staticcall
        require(!ret0.length < 0x20);
        return var_f.length;
        require(!(bytes1(var_f.length)), "");
    }
    
    /// @custom:selector    0x899ffef4
    /// @custom:signature   resolverAddressesRequired() public view returns (bytes memory)
    function resolverAddressesRequired() public view returns (bytes memory) {
        var_b = var_b + 0xe0;
        if (0x02 < var_b.length) {
            if (0x03 < var_b.length) {
                if (0x04 < var_b.length) {
                    if (0x05 < var_b.length) {
                        var_b = var_b + (0x20 + (0x20 * (var_b.length + var_b.length)));
                        if (!var_b.length + var_b.length) {
                            if (!0 < (var_b.length * 0x20)) {
                                return abi.encodePacked(0x20, var_b.length);
                                if ((var_b.length + 0) < var_b.length) {
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x6ad88269
    /// @custom:signature   calculateBurnFee(uint256 arg0) public returns (bool)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function calculateBurnFee(uint256 arg0) public returns (bool) {
        var_a = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        uint256 var_f = var_f + 0x51;
        require(address(storage_map_e[var_a]));
        var_f = 0x14 + (0x20 + (0x20 + var_f));
        var_k = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_e[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_e[var_a]).Unresolved_c4f610ed(var_k); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: multiplication overflow");
        require(!(var_f.length < 0), "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(((var_f.length * arg0) / arg0) == var_f.length, "SafeMath: multiplication overflow");
        require(0x016345785d8a0000, "SafeMath: multiplication overflow");
        require((((var_f.length * arg0) / 0x016345785d8a0000) % 0x0a) < 0x05, "SafeMath: multiplication overflow");
        return abi.encodePacked((0x0a + ((var_f.length * arg0) / 0x016345785d8a0000)) / 0x0a, 0);
        return abi.encodePacked(((var_f.length * arg0) / 0x016345785d8a0000) / 0x0a, 0);
        require(arg0);
        require(arg0);
        require(!(bytes1(var_f.length)), "");
    }
    
    /// @custom:selector    0x18819a31
    /// @custom:signature   mintFeeRate() public returns (uint256)
    function mintFeeRate() public returns (uint256) {
        var_a = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        uint256 var_f = var_f + 0x51;
        require(address(storage_map_e[var_a]));
        var_f = 0x14 + (0x20 + (0x20 + var_f));
        var_k = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_e[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_e[var_a]).Unresolved_c4f610ed(var_k); // staticcall
        require(!ret0.length < 0x20);
        return var_f.length;
        require(!(bytes1(var_f.length)), "");
    }
    
    /// @custom:selector    0xee5f3f5c
    /// @custom:signature   totalIssuedSynths() public returns (uint256)
    function totalIssuedSynths() public returns (uint256) {
        var_a = 0x45786368616e6765526174657300000000000000000000000000000000000000;
        uint256 var_f = var_f + 0x51;
        require(address(storage_map_e[var_a]));
        var_h = currencyKey;
        require(address(storage_map_e[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_e[var_a]).Unresolved_654a60ac(var_h); // staticcall
        require(!ret0.length < 0x20);
        return var_f.length;
        require(!(bytes1(var_f.length)), "");
    }
    
    /// @custom:selector    0x74185360
    /// @custom:signature   rebuildCache() public
    function rebuildCache() public {
        var_b = var_b + 0xe0;
        require(0x02 < var_b.length);
        require(0x03 < var_b.length);
        require(0x04 < var_b.length);
        require(0x05 < var_b.length);
        var_b = var_b + (0x20 + (0x20 * (var_b.length + var_b.length)));
        require(!var_b.length + var_b.length);
        var_b = 0x20 + (0x19 + (0x20 + var_b));
        var_r = var_o;
        require(!bytes1(var_b.length));
        require(address(resolver / 0x0100).code.length);
        (bool success, bytes memory ret0) = address(resolver / 0x0100).Unresolved_dacb2d01(var_r); // staticcall
        require(!ret0.length < 0x20);
        require(address(resolver / 0x0100).code.length);
        if ((var_b.length + 0) < var_b.length) {
        }
    }
    
    /// @custom:selector    0x2af64bd3
    /// @custom:signature   isResolverCached() public returns (bool)
    function isResolverCached() public returns (bool) {
        var_b = var_b + 0xe0;
        require(0x02 < var_b.length);
        require(0x03 < var_b.length);
        require(0x04 < var_b.length);
        require(0x05 < var_b.length);
        var_b = var_b + (0x20 + (0x20 * (var_b.length + var_b.length)));
        require(!var_b.length + var_b.length);
        return 0x01;
        var_n = var_o;
        var_q = var_o;
        require(address(resolver / 0x0100).code.length);
        (bool success, bytes memory ret0) = address(resolver / 0x0100).Unresolved_21f8a721(var_q); // staticcall
        require(!ret0.length < 0x20);
        require(!(address(var_b.length)) == (address(storage_map_i[var_n])));
        require(address(var_b.length) == (address(storage_map_i[var_n])));
        return 0;
        var_n = var_o;
        require(address(storage_map_i[var_n]));
        return 0;
        if ((var_b.length + 0) < var_b.length) {
        }
    }
    
    /// @custom:selector    0x42966c68
    /// @custom:signature   burn(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function burn(uint256 arg0) public {
        require(!(bytes1(resolver)), "This action cannot be performed while the contract is paused");
        var_f = 0x53797374656d5374617475730000000000000000000000000000000000000000;
        uint256 var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).requireIssuanceActive(); // staticcall
        var_f = synthContractName;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        address var_n = address(msg.sender);
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_70a08231(var_n); // staticcall
        require(!(ret0.length < 0x20), "Balance is too low");
        require(!(arg0 > var_c.length), "Balance is too low");
        var_f = 0x45786368616e6765526174657300000000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_t = currencyKey;
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_2528f0fe(var_t); // staticcall
        require(!ret0.length < 0x20);
        require(!var_c.length);
        var_f = 0x45786368616e6765526174657300000000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_x = currencyKey;
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_654a60ac(var_x); // staticcall
        require(!(ret0.length < 0x20), "Contract cannot burn for token, token balance is zero");
        require(var_c.length > 0, "Contract cannot burn for token, token balance is zero");
        var_f = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_c = 0x14 + (0x20 + (0x20 + var_c));
        uint256 var_ag = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_c4f610ed(var_ag); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: subtraction overflow");
        require(!(var_c.length < 0), "SafeMath: subtraction overflow");
        require(targetSynthIssued, "SafeMath: subtraction overflow");
        require(targetSynthIssued, "SafeMath: subtraction overflow");
        require(((var_c.length * targetSynthIssued) / targetSynthIssued) == var_c.length, "SafeMath: subtraction overflow");
        require(0x016345785d8a0000, "SafeMath: subtraction overflow");
        require((((var_c.length * targetSynthIssued) / 0x016345785d8a0000) % 0x0a) < 0x05, "SafeMath: subtraction overflow");
        require(!0, "SafeMath: subtraction overflow");
        require(targetSynthIssued < arg0, "SafeMath: subtraction overflow");
        require(!(((0x0a + ((var_c.length * targetSynthIssued) / 0x016345785d8a0000)) / 0x0a) > targetSynthIssued), "SafeMath: subtraction overflow");
        require(!((((0x0a + ((var_c.length * targetSynthIssued) / 0x016345785d8a0000)) / 0x0a) + targetSynthIssued) < targetSynthIssued), "SafeMath: addition overflow");
        if ((((0x0a + ((var_c.length * targetSynthIssued) / 0x016345785d8a0000)) / 0x0a) + targetSynthIssued) < arg0) {
        }
        if (!0) {
        }
        if (targetSynthIssued) {
        }
        require(!(bytes1(var_c.length)), "");
    }
    
    /// @custom:selector    0x1627540c
    /// @custom:signature   nominateNewOwner(address arg0) public
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function nominateNewOwner(address arg0) public {
        require(msg.sender == (address(owner)), "Only the contract owner may perform this action");
        nominatedOwner = (address(arg0)) | (uint96(nominatedOwner));
        emit OwnerNominated(address(arg0));
    }
    
    /// @custom:selector    0xa0712d68
    /// @custom:signature   mint(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function mint(uint256 arg0) public {
        require(!(bytes1(resolver)), "This action cannot be performed while the contract is paused");
        var_f = 0x53797374656d5374617475730000000000000000000000000000000000000000;
        uint256 var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).requireIssuanceActive(); // staticcall
        address var_k = msg.sender;
        require(address(token).code.length);
        (bool success, bytes memory ret0) = address(token).Unresolved_dd62ed3e(var_k); // staticcall
        require(!(ret0.length < 0x20), "Allowance not high enough");
        require(!(arg0 > var_c.length), "Allowance not high enough");
        var_k = msg.sender;
        require(address(token).code.length);
        (bool success, bytes memory ret0) = address(token).Unresolved_70a08231(var_k); // staticcall
        require(!(ret0.length < 0x20), "Balance is too low");
        require(!(arg0 > var_c.length), "Balance is too low");
        var_f = 0x45786368616e6765526174657300000000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_q = currencyKey;
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_2528f0fe(var_q); // staticcall
        require(!ret0.length < 0x20);
        require(!var_c.length);
        address var_q = address(this);
        require(address(token).code.length);
        (bool success, bytes memory ret0) = address(token).Unresolved_70a08231(var_q); // staticcall
        require(!ret0.length < 0x20);
        var_f = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_c = 0x14 + (0x20 + (0x20 + var_c));
        var_x = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_23257c2b(var_x); // staticcall
        require(!(ret0.length < 0x20), "Contract has no spare capacity to mint");
        require(var_c.length < var_c.length, "Contract has no spare capacity to mint");
        require(!(var_c.length > var_c.length), "Contract has no spare capacity to mint");
        require((var_c.length - var_c.length) > 0, "Contract has no spare capacity to mint");
        require((var_c.length - var_c.length) < arg0);
        var_f = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_c = 0x14 + (0x20 + (0x20 + var_c));
        uint256 var_ag = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_c4f610ed(var_ag); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: addition overflow");
        require(!(var_c.length < 0), "SafeMath: addition overflow");
        require(var_c.length - var_c.length, "SafeMath: addition overflow");
        require(0x016345785d8a0000, "SafeMath: addition overflow");
        require(0 < 0x05, "SafeMath: addition overflow");
        require(0, "SafeMath: addition overflow");
        require(!((0x01 + (var_c.length - var_c.length)) < (var_c.length - var_c.length)), "SafeMath: addition overflow");
        var_ah = address(msg.sender);
        var_c = var_c + 0x84;
        var_f = 0xff;
        (bool success, bytes memory ret0) = address(token).{ value: 0 ether }Unresolved_23b872dd(var_ah); // call
        require(var_f == 0xff, "Transfer did not succeed");
        require(var_f == 0x01, "Transfer did not succeed");
        require(0x01, "Transfer did not succeed");
        var_am = address(this);
        require(address(token).code.length);
        (bool success, bytes memory ret0) = address(token).Unresolved_70a08231(var_am); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: addition overflow");
        require(!(((0x01 + (var_c.length - var_c.length)) + targetSynthIssued) < targetSynthIssued), "SafeMath: addition overflow");
        require(var_c.length > ((0x01 + (var_c.length - var_c.length)) + targetSynthIssued), "SafeMath: addition overflow");
        require(!(((0x01 + (var_c.length - var_c.length)) + targetSynthIssued) < targetSynthIssued), "SafeMath: addition overflow");
        require(!(((0x01 + (var_c.length - var_c.length)) + targetSynthIssued) > var_c.length), "SafeMath: subtraction overflow");
        require(!var_f, "Transfer did not succeed");
        require(0, "Transfer did not succeed");
        if (var_c.length - var_c.length) {
            if ((var_c.length * (var_c.length - var_c.length)) / (var_c.length - var_c.length) == var_c.length) {
                require(var_c.length - var_c.length, "SafeMath: multiplication overflow");
                require((var_c.length * (var_c.length - var_c.length)) / (var_c.length - var_c.length) == var_c.length, "SafeMath: multiplication overflow");
                require(0x016345785d8a0000, "SafeMath: multiplication overflow");
            }
            require((((var_c.length * (var_c.length - var_c.length)) / 0x016345785d8a0000) % 0x0a) < 0x05, "SafeMath: multiplication overflow");
        }
        require(!(bytes1(var_c.length)), "");
        var_f = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        var_c = var_c + 0x51;
        require(address(storage_map_j[var_f]));
        var_c = 0x14 + (0x20 + (0x20 + var_c));
        var_ag = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        var_ah = keccak256(var_z);
        require(address(storage_map_j[var_f]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_j[var_f]).Unresolved_c4f610ed(var_ag, var_ah); // staticcall
        require(!ret0.length < 0x20);
        require(!var_c.length < 0);
        require(arg0);
        require(arg0);
        require(arg0);
        require(arg0);
        require(0 > 0, "Contract has no spare capacity to mint");
    }
    
    /// @custom:selector    0x5c095e54
    /// @custom:signature   calculateMintFee(uint256 arg0) public returns (bool)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function calculateMintFee(uint256 arg0) public returns (bool) {
        var_a = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        uint256 var_f = var_f + 0x51;
        require(address(storage_map_e[var_a]));
        var_f = 0x14 + (0x20 + (0x20 + var_f));
        var_k = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_e[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_e[var_a]).Unresolved_c4f610ed(var_k); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: multiplication overflow");
        require(!(var_f.length < 0), "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(arg0, "SafeMath: multiplication overflow");
        require(((var_f.length * arg0) / arg0) == var_f.length, "SafeMath: multiplication overflow");
        require(0x016345785d8a0000, "SafeMath: multiplication overflow");
        require((((var_f.length * arg0) / 0x016345785d8a0000) % 0x0a) < 0x05, "SafeMath: multiplication overflow");
        return abi.encodePacked((0x0a + ((var_f.length * arg0) / 0x016345785d8a0000)) / 0x0a, 0);
        return abi.encodePacked(((var_f.length * arg0) / 0x016345785d8a0000) / 0x0a, 0);
        require(arg0);
        require(arg0);
        require(!(bytes1(var_f.length)), "");
    }
    
    /// @custom:selector    0x16c38b3c
    /// @custom:signature   Unresolved_16c38b3c(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function Unresolved_16c38b3c(uint256 arg0) public {
        require(msg.sender == (address(owner)), "Only the contract owner may perform this action");
        require(!arg0 == (bytes1(resolver)));
        resolver = arg0 | (uint248(resolver));
        require(!bytes1(arg0 | (uint248(resolver))));
        lastPauseTime = block.timestamp;
        emit PauseChanged(bytes1(resolver));
        emit PauseChanged(bytes1(resolver));
    }
    
    /// @custom:selector    0x5cfc1a51
    /// @custom:signature   capacity() public returns (uint256)
    function capacity() public returns (uint256) {
        address var_b = address(this);
        require(address(token).code.length);
        (bool success, bytes memory ret0) = address(token).Unresolved_70a08231(var_b); // staticcall
        require(!ret0.length < 0x20);
        var_c = 0x466c657869626c6553746f726167650000000000000000000000000000000000;
        uint256 var_g = var_g + 0x51;
        require(address(storage_map_l[var_c]));
        var_g = 0x14 + (0x20 + (0x20 + var_g));
        var_l = 0x53797374656d53657474696e6773000000000000000000000000000000000000;
        require(address(storage_map_l[var_c]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_l[var_c]).Unresolved_23257c2b(var_l); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: subtraction overflow");
        require(var_g.length < var_g.length, "SafeMath: subtraction overflow");
        require(!(var_g.length > var_g.length), "SafeMath: subtraction overflow");
        return var_g.length - var_g.length;
        return 0;
        require(!(bytes1(var_g.length)), "");
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_16c38b3c",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "acceptOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "burn",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "burnFeeRate",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "calculateBurnFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "calculateMintFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "capacity",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "currencyKey",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getReserves",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "isResolverCached",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "lastPauseTime",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "maxTokenAmount",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "mint",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "mintFeeRate",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "nominateNewOwner",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "nominatedOwner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "paused",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rebuildCache",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "resolver",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "resolverAddressesRequired",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "synthContractName",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "targetSynthIssued",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "token",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalIssuedSynths",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "OwnerChanged",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnerNominated",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PauseChanged",
    "inputs": [
      {
        "name": "arg0",
        "type": "bool",
        "indexed": false
      }
    ],
    "anonymous": false
  }
]

UNKNOWN SELECTORS (3)

0x6eb1769funknown
0x1cd554d1unknown
0x616e6e6funknown
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)