0x4f6a43ad7cba042606decaca730d4ce0a57ac62e

deployer: unknown relevance score: 0 status: partially_identified bytecode: 10790 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 getAllowlist = 1403406132107869357523925544260723293428205225305;
    
    bytes public swapStorage;
    bytes32 store_p;
    bytes32 store_k;
    mapping(bytes32 => bytes32) storage_map_q;
    bool public isGuarded;
    bytes32 store_j;
    bytes32 store_a;
    bool public paused;
    mapping(bytes32 => bytes32) storage_map_b;
    bytes32 store_e;
    bytes32 store_f;
    bytes32 store_g;
    bytes32 store_h;
    bytes32 store_l;
    bytes32 store_i;
    mapping(bytes32 => bytes32) storage_map_n;
    mapping(bytes32 => bytes32) storage_map_o;
    
    event Paused(address);
    event Unpaused(address);
    event OwnershipTransferred(address, address);
    
    /// @custom:selector    0x82b86600
    /// @custom:signature   getToken(uint8 arg0) public view returns (address)
    /// @param              arg0 ["bool", "uint8", "bytes1", "int8"]
    function getToken(uint8 arg0) public view returns (address) {
        require(bytes1(arg0) < store_a, "Out of range");
        require(bytes1(arg0) < store_a, "Out of range");
        var_a = 0x0a;
        return address(storage_map_b[var_a]);
    }
    
    /// @custom:selector    0xef0a712f
    /// @custom:signature   getAdminBalance(uint256 arg0) public payable returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function getAdminBalance(uint256 arg0) public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_7d048160(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_d.length;
    }
    
    /// @custom:selector    0xc4db7fa0
    /// @custom:signature   stopRampA() public payable
    function stopRampA() public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_f14e211e(var_b); // delegatecall
    }
    
    /// @custom:selector    0x3f4ba83a
    /// @custom:signature   unpause() public payable
    function unpause() public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        require(bytes1(paused / 0x010000000000000000000000000000000000000000), "Pausable: not paused");
        paused = uint248(paused);
        emit Unpaused(address(msg.sender));
    }
    
    /// @custom:selector    0x0ba81959
    /// @custom:signature   getAPrecise() public payable returns (uint256)
    function getAPrecise() public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_c9b64dcb(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_c.length;
    }
    
    /// @custom:selector    0x3e3a1560
    /// @custom:signature   removeLiquidityOneToken(uint256 arg0, uint8 arg1, uint256 arg2, uint256 arg3) public payable returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    function removeLiquidityOneToken(uint256 arg0, uint8 arg1, uint256 arg2, uint256 arg3) public payable returns (uint256) {
        require(!(store_l == 0x02), "ReentrancyGuard: reentrant call");
        store_l = 0x02;
        require(!(bytes1(paused / 0x010000000000000000000000000000000000000000)), "Pausable: paused");
        require(!block.timestamp > arg3);
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_e7a4db81(var_b); // delegatecall
        require(!ret0.length < 0x20);
        store_l = 0x01;
        return var_f.length;
    }
    
    /// @custom:selector    0x24b84573
    /// @custom:signature   disableGuard() public payable
    function disableGuard() public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        isGuarded = uint248(isGuarded);
    }
    
    /// @custom:selector    0xac5bf263
    /// @custom:signature   setDefaultWithdrawFee(uint256 arg0) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function setDefaultWithdrawFee(uint256 arg0) public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_8ab7697e(var_b); // delegatecall
    }
    
    /// @custom:selector    0x98899f40
    /// @custom:signature   calculateRemoveLiquidityOneToken(address arg0, uint256 arg1, uint8 arg2) public payable returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["bool", "uint8", "bytes1", "int8"]
    function calculateRemoveLiquidityOneToken(address arg0, uint256 arg1, uint8 arg2) public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_e4a9a0da(var_b); // delegatecall
        require(!ret0.length < 0x40);
        return var_f.length;
    }
    
    /// @custom:selector    0xd46300fd
    /// @custom:signature   getA() public payable returns (uint256)
    function getA() public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_b0a14cfc(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_c.length;
    }
    
    /// @custom:selector    0x8beb60b6
    /// @custom:signature   setAdminFee(uint256 arg0) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function setAdminFee(uint256 arg0) public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_70467276(var_b); // delegatecall
    }
    
    /// @custom:selector    0xda7a77be
    /// @custom:signature   getDepositTimestamp(address arg0) public payable returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getDepositTimestamp(address arg0) public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_e8c47a54(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_d.length;
    }
    
    /// @custom:selector    0x31cd52b0
    /// @custom:signature   removeLiquidity(uint256 arg0, uint256[] arg1, uint256 arg2) public payable returns (bytes memory)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function removeLiquidity(uint256 arg0, uint256[] arg1, uint256 arg2) public payable returns (bytes memory) {
        require(!arg1 > 0x0100000000);
        require(!(store_l == 0x02), "ReentrancyGuard: reentrant call");
        store_l = 0x02;
        require(!arg2 < block.timestamp);
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_73fd6b3e(var_b); // delegatecall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!ret0.length < 0x20);
        require(!var_e.length > 0x0100000000);
        require(!((var_e + var_e.length) + 0x20) > (var_e + ret0.length));
        require(!(var_i > 0x0100000000) | (((var_e + var_e.length) + 0x20) + (var_i * 0x20) > (var_e + ret0.length)));
        require(!0 < (0x20 * (var_i)));
        var_e = (0x20 * (var_k)) + (0x20 + var_e);
        store_l = 0x01;
        require(!0 < (var_e.length * 0x20));
        return abi.encodePacked(0x20, var_e.length);
    }
    
    /// @custom:selector    0xa95b089f
    /// @custom:signature   calculateSwap(uint8 arg0, uint8 arg1, uint256 arg2) public payable returns (uint256)
    /// @param              arg0 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg1 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function calculateSwap(uint8 arg0, uint8 arg1, uint256 arg2) public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_4b23603c(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_f.length;
    }
    
    /// @custom:selector    0x0419b45a
    /// @custom:signature   withdrawAdminFees() public payable
    function withdrawAdminFees() public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_24c5c751(var_b); // delegatecall
    }
    
    /// @custom:selector    0xc00c125c
    /// @custom:signature   updateUserWithdrawFee(address arg0, uint256 arg1) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function updateUserWithdrawFee(address arg0, uint256 arg1) public payable {
        require(msg.sender == (address(store_k)), "Only callable by pool token");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_e9252d46(var_b); // delegatecall
    }
    
    /// @custom:selector    0xf2fde38b
    /// @custom:signature   transferOwnership(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function transferOwnership(address arg0) public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        require(address(arg0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(address(paused), address(arg0));
        paused = (address(arg0)) | (uint96(paused));
    }
    
    /// @custom:selector    0x66c0bd24
    /// @custom:signature   getTokenIndex(address arg0) public view returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getTokenIndex(address arg0) public view returns (bool) {
        address var_a = address(arg0);
        require(bytes1(storage_map_n[var_a]) < store_a, "Token does not exist");
        require(bytes1(storage_map_n[var_a]) < store_a, "Token does not exist");
        var_a = 0x0a;
        require(address(storage_map_o[var_a]) == (address(arg0)), "Token does not exist");
        return bytes1(storage_map_n[var_a]);
    }
    
    /// @custom:selector    0x7c61e561
    /// @custom:signature   calculateRemoveLiquidity(address arg0, uint256 arg1) public payable returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function calculateRemoveLiquidity(address arg0, uint256 arg1) public payable returns (bytes memory) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_f967a81f(var_b); // delegatecall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!ret0.length < 0x20);
        require(!var_e.length > 0x0100000000);
        require(!((var_e + var_e.length) + 0x20) > (var_e + ret0.length));
        require(!(var_f > 0x0100000000) | (((var_e + var_e.length) + 0x20) + (var_f * 0x20) > (var_e + ret0.length)));
        require(!0 < (0x20 * (var_f)));
        var_e = (0x20 * (var_h)) + (0x20 + var_e);
        require(!0 < (var_e.length * 0x20));
        return abi.encodePacked(0x20, var_e.length);
    }
    
    /// @custom:selector    0x4a1b0d57
    /// @custom:signature   calculateCurrentWithdrawFee(address arg0) public payable returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function calculateCurrentWithdrawFee(address arg0) public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_968e5594(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_d.length;
    }
    
    /// @custom:selector    0xe25aa5fa
    /// @custom:signature   getVirtualPrice() public payable returns (uint256)
    function getVirtualPrice() public payable returns (uint256) {
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_71906c2c(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_c.length;
    }
    
    /// @custom:selector    0x84cdd9bc
    /// @custom:signature   removeLiquidityImbalance(uint256[] arg0, uint256 arg1, uint256 arg2) public payable returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function removeLiquidityImbalance(uint256[] arg0, uint256 arg1, uint256 arg2) public payable returns (uint256) {
        require(!arg0 > 0x0100000000);
        require(!(store_l == 0x02), "ReentrancyGuard: reentrant call");
        store_l = 0x02;
        require(!(bytes1(paused / 0x010000000000000000000000000000000000000000)), "Pausable: paused");
        require(!block.timestamp > arg2);
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_41b91c26(var_b); // delegatecall
        require(!ret0.length < 0x20);
        store_l = 0x01;
        return var_e.length;
    }
    
    /// @custom:selector    0x34e19907
    /// @custom:signature   setSwapFee(uint256 arg0) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function setSwapFee(uint256 arg0) public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_467e186c(var_b); // delegatecall
    }
    
    /// @custom:selector    0x593d132c
    /// @custom:signature   rampA(uint256 arg0, uint256 arg1) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function rampA(uint256 arg0, uint256 arg1) public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_58fdd79b(var_b); // delegatecall
    }
    
    /// @custom:selector    0xf9273ffb
    /// @custom:signature   Unresolved_f9273ffb(address arg0, uint256 arg1, uint256 arg2) public payable returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function Unresolved_f9273ffb(address arg0, uint256 arg1, uint256 arg2) public payable returns (uint256) {
        require(!arg1 > 0x0100000000);
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_5e58579c(var_b); // delegatecall
        require(!ret0.length < 0x20);
        return var_f.length;
    }
    
    /// @custom:selector    0x91ceb3eb
    /// @custom:signature   getTokenBalance(uint8 arg0) public view returns (bool)
    /// @param              arg0 ["bool", "uint8", "bytes1", "int8"]
    function getTokenBalance(uint8 arg0) public view returns (bool) {
        require(bytes1(arg0) < store_a, "Index out of range");
        require(bytes1(arg0) < store_p, "Index out of range");
        var_a = 0x0c;
        return storage_map_q[var_a];
    }
    
    /// @custom:selector    0xe22517f4
    /// @custom:signature   addLiquidity(uint256[] arg0, uint256 arg1, uint256 arg2, bytes32[] arg3) public payable returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    function addLiquidity(uint256[] arg0, uint256 arg1, uint256 arg2, bytes32[] arg3) public payable returns (uint256) {
        require(!arg0 > 0x0100000000);
        require(!arg3 > 0x0100000000);
        require(!(store_l == 0x02), "ReentrancyGuard: reentrant call");
        store_l = 0x02;
        require(!(bytes1(paused / 0x010000000000000000000000000000000000000000)), "Pausable: paused");
        require(!block.timestamp > arg2);
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_1f4e95a7(var_b); // delegatecall
        require(!ret0.length < 0x20);
        store_l = 0x01;
        return var_e.length;
    }
    
    /// @custom:selector    0x91695586
    /// @custom:signature   swap(uint8 arg0, uint8 arg1, uint256 arg2, uint256 arg3, uint256 arg4) public payable returns (uint256)
    /// @param              arg0 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg1 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["uint256", "bytes32", "int256"]
    function swap(uint8 arg0, uint8 arg1, uint256 arg2, uint256 arg3, uint256 arg4) public payable returns (uint256) {
        require(!(store_l == 0x02), "ReentrancyGuard: reentrant call");
        store_l = 0x02;
        require(!(bytes1(paused / 0x010000000000000000000000000000000000000000)), "Pausable: paused");
        require(!block.timestamp > arg4);
        var_b = 0x02;
        require(address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).code.length);
        (bool success, bytes memory ret0) = address(0x2b7a5a5923eca5c00c6572cf3e8e08384f563f93).Unresolved_a5397b22(var_b); // delegatecall
        require(!ret0.length < 0x20);
        store_l = 0x01;
        return var_g.length;
    }
    
    /// @custom:selector    0x8456cb59
    /// @custom:signature   pause() public payable
    function pause() public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        require(!(bytes1(paused / 0x010000000000000000000000000000000000000000)), "Pausable: paused");
        paused = 0x010000000000000000000000000000000000000000 | (uint248(paused));
        emit Paused(address(msg.sender));
    }
    
    /// @custom:selector    0x715018a6
    /// @custom:signature   renounceOwnership() public payable
    function renounceOwnership() public payable {
        require(address(msg.sender) == (address(paused)), "Ownable: caller is not the owner");
        emit OwnershipTransferred(address(paused), 0);
        paused = uint96(paused);
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_f9273ffb",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "addLiquidity",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256[]"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "bytes32[]"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "calculateCurrentWithdrawFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "calculateRemoveLiquidity",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "calculateRemoveLiquidityOneToken",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint8"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "calculateSwap",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint8"
      },
      {
        "name": "arg1",
        "type": "uint8"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "disableGuard",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getA",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getAPrecise",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getAdminBalance",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getAllowlist",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "getDepositTimestamp",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getToken",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint8"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getTokenBalance",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint8"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getTokenIndex",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getVirtualPrice",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "isGuarded",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pause",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "paused",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rampA",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "removeLiquidity",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256[]"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "removeLiquidityImbalance",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256[]"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "removeLiquidityOneToken",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint8"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "renounceOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setAdminFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setDefaultWithdrawFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setSwapFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "stopRampA",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "swap",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint8"
      },
      {
        "name": "arg1",
        "type": "uint8"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "swapStorage",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "unpause",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "updateUserWithdrawFee",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "withdrawAdminFees",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "event",
    "name": "OwnershipTransferred",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Paused",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Unpaused",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  }
]

UNKNOWN SELECTORS (23)

0xa5397b22unknown
0xe9252d46unknown
0xb0a14cfcunknown
0x58fdd79bunknown
0x4b23603cunknown
0xf14e211eunknown
0x7d048160unknown
0xe4a9a0daunknown
0x41b91c26unknown
0xf967a81funknown
0x8ab7697eunknown
0xe22517f4unknown
0x71906c2cunknown
0xe7a4db81unknown
0x1f4e95a7unknown
0xe8c47a54unknown
0x24c5c751unknown
0x5e58579cunknown
0x73fd6b3eunknown
0x467e186cunknown
0xc9b64dcbunknown
0x70467276unknown
0x968e5594unknown
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)