0x4c0482f3e9a0b2f4130ed097a47b9e2650a518ba

deployer: unknown relevance score: 0 status: partially_identified bytecode: 13742 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 lpToken = 1065765129694417675126687456397381752237697404266;
    uint256 public constant caviar = 967068236052297514053404767936876602534242420800;
    uint256 public constant decimals = 18;
    uint256 public constant merkleRoot = 0;
    uint256 public constant baseToken = 0;
    uint256 public constant nft = 238103176447754383195426820386857645964768350500;
    uint256 public constant CLOSE_GRACE_PERIOD = 604800;
    
    uint256 public unresolved_18160ddd;
    mapping(bytes32 => bytes32) storage_map_d;
    uint256 public closeTimestamp;
    mapping(bytes32 => bytes32) storage_map_i;
    bytes32 store_f;
    bytes32 store_g;
    mapping(bytes32 => bytes32) storage_map_a;
    mapping(bytes32 => bytes32) storage_map_h;
    mapping(bytes32 => bytes32) storage_map_j;
    mapping(bytes32 => bytes32) storage_map_c;
    
    event Event_8c5be1e5();
    event Transfer(address, address, uint256);
    event Close(uint256);
    event Withdraw(uint256);
    event Unwrap(uint256[]);
    event Buy(uint256, uint256);
    event Add(uint256, uint256, uint256);
    
    /// @custom:selector    0x095ea7b3
    /// @custom:signature   Unresolved_095ea7b3(address arg0, uint256 arg1) public returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Unresolved_095ea7b3(address arg0, uint256 arg1) public returns (bool) {
        require(arg0 == (address(arg0)));
        var_a = address(arg0);
        storage_map_a[var_a] = arg1;
        emit Event_8c5be1e5(msg.sender, address(arg0), arg1);
        return 0x01;
    }
    
    /// @custom:selector    0x1d989f83
    /// @custom:signature   add(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, uint256 arg4, uint256 arg5) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["uint256", "bytes32", "int256"]
    /// @param              arg5 ["uint256", "bytes32", "int256"]
    function add(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, uint256 arg4, uint256 arg5) public returns (uint256) {
        require(!arg5, "Invalid ether input");
        require(!(arg5 < block.timestamp), "Invalid ether input");
        require(!(arg0 > 0), "Invalid ether input");
        require(arg1 > 0, "Invalid ether input");
        require(!0, "Invalid ether input");
        var_b = 0x20;
        (bool success, bytes memory ret0) = address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).Unresolved_18160ddd(var_b); // staticcall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!(((var_e + ret0.length) - var_e) < 0x20), "Slippage: lp token amount out");
        require(!var_e.length, "Slippage: lp token amount out");
        require(!var_e.length, "Slippage: lp token amount out");
        require((arg1 == ((arg1 * arg0) / arg0)) | !arg0, "Slippage: lp token amount out");
        require(0 - (arg1 * arg0), "Slippage: lp token amount out");
        require(!((arg1 * arg0) >> 0x80), "Slippage: lp token amount out");
        require(!(((arg1 * arg0) >> 0x80) >> 0x40), "Slippage: lp token amount out");
        require(!((((arg1 * arg0) >> 0x80) >> 0x40) >> 0x20), "Slippage: lp token amount out");
        require(!(((((arg1 * arg0) >> 0x80) >> 0x40) >> 0x20) >> 0x10), "Slippage: lp token amount out");
        require(!((((((arg1 * arg0) >> 0x80) >> 0x40) >> 0x20) >> 0x10) >> 0x08), "Slippage: lp token amount out");
        require(!(((((((arg1 * arg0) >> 0x80) >> 0x40) >> 0x20) >> 0x10) >> 0x08) >> 0x04), "Slippage: lp token amount out");
        require(!((((((((arg1 * arg0) >> 0x80) >> 0x40) >> 0x20) >> 0x10) >> 0x08) >> 0x04) >> 0x02), "Slippage: lp token amount out");
        require(!(((((((((arg1 * arg0) >> 0x80) >> 0x40) >> 0x20) >> 0x10) >> 0x08) >> 0x04) >> 0x02) >> 0x01), "Slippage: lp token amount out");
        require(0x80000000000000000000000000000000, "Slippage: lp token amount out");
        require((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01, "Slippage: lp token amount out");
        require(((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01, "Slippage: lp token amount out");
        require((((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01) + ((arg1 * arg0) / (((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01)) >> 0x01, "Slippage: lp token amount out");
        require(((((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01) + ((arg1 * arg0) / (((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01)) >> 0x01) + ((arg1 * arg0) / ((((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01) + ((arg1 * arg0) / (((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01) + ((arg1 * arg0) / ((0x80000000000000000000000000000000 + ((arg1 * arg0) / 0x80000000000000000000000000000000)) >> 0x01)) >> 0x01)) >> 0x01)) >> 0x01, "Slippage: lp token amount out");
        require(!(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7960 > 0), "Slippage: lp token amount out");
        require(!(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7960 < arg2), "Slippage: lp token amount out");
        address var_f = address(msg.sender);
        require(!(storage_map_c[var_f] - arg1) > storage_map_c[var_f]);
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_c[var_f] = storage_map_c[var_f] - arg1;
        var_f = address(this);
        storage_map_c[var_f] = arg1 + storage_map_c[var_f];
        var_f = var_f;
        emit Transfer(address(msg.sender), address(this), arg1);
        address var_c = address(msg.sender);
        require(address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).code.length);
        (bool success, bytes memory ret0) = address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).{ value: 0 ether }Unresolved_40c10f19(var_c); // call
        require(0 - var_e.length);
        (bool success, bytes memory ret0) = address(0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840).owner(); // staticcall
        var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        require(var_e.length == (address(var_e.length)));
        uint256 var_d = address(var_e.length);
        require(address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).code.length);
        (bool success, bytes memory ret0) = address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).{ value: 0 ether }Unresolved_40c10f19(var_d); // call
        require(!0, "TRANSFER_FROM_FAILED");
        var_d = msg.sender;
        (bool success, bytes memory ret0) = address(0).{ value: 0 ether }Unresolved_23b872dd(var_d); // call
        require(((var_f == 0x01) & (ret0.length > 0x1f) | !ret0.length) & (success), "TRANSFER_FROM_FAILED");
        emit Add(arg0, arg1, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7960);
        return 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7960;
        var_d = 0x20;
        emit Add(arg0, arg1, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7960);
        return 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7960;
        require(!0);
        var_c = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_c, var_d); // staticcall
        var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        require(!(address(this).balance - msg.value) > address(this).balance);
        require(!0);
        (bool success, bytes memory ret0) = address(0).decimals(); // staticcall
        var_e = var_e + (uint248(ret0.length + 0x1f));
        if (!((var_e + ret0.length) - var_e) < 0x20) {
            require(!((var_e + ret0.length) - var_e) < 0x20);
            require(var_e.length == (bytes1(var_e.length)));
            require(!(0x24 - (bytes1(var_e.length))) > 0xff);
            require(bytes1(0x24 - (var_e.length)));
            require(0x0a);
            require(0x0a == 0x01);
            require(0x0a == 0x02);
            require(!(bytes1(0x24 - (var_e.length))) > 0xff);
            require(!((0x0a < 0x0b) & (bytes1(0x24 - (var_e.length)) < 0x4e)) | ((0x0a < 0x0133) & (bytes1(0x24 - (var_e.length)) < 0x20)));
            require(!(bytes1(0x24 - (var_e.length))) > 0x01);
            require(!0x01 > 0x1999999999999999999999999999999999999999999999999999999999999999);
            require(!0x0a > 0x1999999999999999999999999999999999999999999999999999999999999999);
        }
        require(!arg5, "Expired");
    }
    
    /// @custom:selector    0xa9059cbb
    /// @custom:signature   transfer(address arg0, uint256 arg1) public returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function transfer(address arg0, uint256 arg1) public returns (bool) {
        require(arg0 == (address(arg0)));
        address var_a = msg.sender;
        require(!(storage_map_a[var_a] - arg1) > storage_map_a[var_a]);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_a[var_a] = storage_map_a[var_a] - arg1;
        var_a = address(arg0);
        storage_map_a[var_a] = arg1 + storage_map_a[var_a];
        emit Transfer(msg.sender, address(arg0), arg1);
        return 0x01;
    }
    
    /// @custom:selector    0x4cfb998a
    /// @custom:signature   Unresolved_4cfb998a(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, uint256 arg4, uint256 arg5, uint256 arg6) public pure
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["uint256", "bytes32", "int256"]
    /// @param              arg5 ["uint256", "bytes32", "int256"]
    /// @param              arg6 ["uint256", "bytes32", "int256"]
    function Unresolved_4cfb998a(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, uint256 arg4, uint256 arg5, uint256 arg6) public pure {
        require(!arg1 > 0xffffffffffffffff);
        require(!(arg1) > 0xffffffffffffffff);
        require(!0xffffffffffffffff < arg6);
    }
    
    /// @custom:selector    0x037d785b
    /// @custom:signature   removeQuote(uint256 arg0) public returns (bytes memory)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function removeQuote(uint256 arg0) public returns (bytes memory) {
        (bool success, bytes memory ret0) = address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).Unresolved_18160ddd(var_b); // staticcall
        uint256 var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        require(!0);
        address var_e = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_e); // staticcall
        var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        require((arg0 == ((arg0 * var_c.length) / var_c.length)) | !var_c.length);
        require(var_c.length);
        address var_f = address(this);
        require((arg0 == ((arg0 * storage_map_c[var_f]) / storage_map_c[var_f])) | !storage_map_c[var_f]);
        require(var_c.length);
        require(!0x01 > (arg0 + 0x01));
        var_f = address(this);
        require((arg0 + 0x01) == ((arg0 + 0x01) * storage_map_c[var_f] / storage_map_c[var_f]) | !storage_map_c[var_f]);
        require(var_c.length);
        require(0x0de0b6b3a7640000);
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!((arg0 * storage_map_c[var_f]) / var_c.length) % 0x0de0b6b3a7640000);
        require(!(((arg0 + 0x01) * storage_map_c[var_f] / var_c.length) - ((arg0 * storage_map_c[var_f]) / var_c.length)) > ((arg0 + 0x01) * storage_map_c[var_f] / var_c.length));
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(((arg0 + 0x01) * storage_map_c[var_f] / var_c.length) - ((arg0 * storage_map_c[var_f]) / var_c.length) > 0x03e8);
        require(((arg0 + 0x01) * storage_map_c[var_f] / var_c.length) - ((arg0 * storage_map_c[var_f]) / var_c.length) > 0x03e8);
        return abi.encodePacked((arg0 * var_c.length) / var_c.length, (arg0 * storage_map_c[var_f]) / var_c.length);
        return abi.encodePacked((arg0 * var_c.length) / var_c.length, ((arg0 + 0x01) * storage_map_c[var_f]) / var_c.length);
        require(!((arg0 * storage_map_c[var_f]) / var_c.length) % 0x0de0b6b3a7640000);
        require(!((arg0 * storage_map_c[var_f]) / var_c.length) % 0x0de0b6b3a7640000);
        return abi.encodePacked((arg0 * var_c.length) / var_c.length, ((arg0 + 0x01) * storage_map_c[var_f]) / var_c.length);
        return abi.encodePacked((arg0 * var_c.length) / var_c.length, (arg0 * storage_map_c[var_f]) / var_c.length);
        require(!(address(this).balance - msg.value) > address(this).balance);
    }
    
    /// @custom:selector    0x4cba3eca
    /// @custom:signature   Unresolved_4cba3eca(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, uint256 arg4) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["uint256", "bytes32", "int256"]
    function Unresolved_4cba3eca(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, uint256 arg4) public {
        require(!arg3 > 0xffffffffffffffff);
        require(!(arg3) > 0xffffffffffffffff);
        require(arg4 == arg4);
        require((0x0de0b6b3a7640000 == ((0x0de0b6b3a7640000 * (arg3)) / (arg3))) | !arg3);
        require(!arg2);
        require(!arg2 < block.timestamp);
        (bool success, bytes memory ret0) = address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).Unresolved_18160ddd(var_d); // staticcall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        require(!0);
        address var_g = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_g); // staticcall
        var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!(((var_e + ret0.length) - var_e) < 0x20), "Slippage: base token amount out");
        require((arg0 == ((arg0 * var_e.length) / var_e.length)) | !var_e.length, "Slippage: base token amount out");
        require(var_e.length, "Slippage: base token amount out");
        address var_a = address(this);
        require((arg0 == ((arg0 * storage_map_a[var_a]) / storage_map_a[var_a])) | !storage_map_a[var_a], "Slippage: base token amount out");
        require(var_e.length, "Slippage: base token amount out");
        require(!(0x01 > (arg0 + 0x01)), "Slippage: base token amount out");
        var_a = address(this);
        require((arg0 + 0x01) == ((arg0 + 0x01) * storage_map_a[var_a] / storage_map_a[var_a]) | !storage_map_a[var_a], "Slippage: base token amount out");
        require(var_e.length, "Slippage: base token amount out");
        require(0x0de0b6b3a7640000, "Slippage: base token amount out");
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(((arg0 * storage_map_a[var_a]) / var_e.length) % 0x0de0b6b3a7640000), "Slippage: base token amount out");
        require(!(((arg0 + 0x01) * storage_map_a[var_a] / var_e.length) - ((arg0 * storage_map_a[var_a]) / var_e.length) > ((arg0 + 0x01) * storage_map_a[var_a] / var_e.length)), "Slippage: base token amount out");
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(!(((arg0 + 0x01) * storage_map_a[var_a] / var_e.length) - ((arg0 * storage_map_a[var_a]) / var_e.length)) > 0x03e8), "Slippage: base token amount out");
        require(!(!(((arg0 + 0x01) * storage_map_a[var_a] / var_e.length) - ((arg0 * storage_map_a[var_a]) / var_e.length)) > 0x03e8), "Slippage: base token amount out");
        require(!(((arg0 * var_e.length) / var_e.length) < arg1), "Slippage: base token amount out");
        require(!(((arg0 * storage_map_a[var_a]) / var_e.length) < (0x0de0b6b3a7640000 * (arg3))), "Slippage: fractional token out");
        if (!((arg0 * storage_map_a[var_a]) / var_e.length) % 0x0de0b6b3a7640000) {
            if (!((arg0 * storage_map_a[var_a]) / var_e.length) % 0x0de0b6b3a7640000) {
            }
        }
        require(!(address(this).balance - msg.value) > address(this).balance);
        require(!arg2, "Expired");
    }
    
    /// @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) {
        require(arg0 == (address(arg0)));
        address var_b = arg0;
        return storage_map_d[var_b];
    }
    
    /// @custom:selector    0x203ae565
    /// @custom:signature   baseTokenReserves() public returns (uint256)
    function baseTokenReserves() public returns (uint256) {
        require(!0);
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_b); // staticcall
        uint256 var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        return var_c.length;
        if (!(address(this).balance - msg.value) > address(this).balance) {
            return address(this).balance - msg.value;
        }
    }
    
    /// @custom:selector    0xfceacc83
    /// @custom:signature   fractionalTokenReserves() public view returns (uint256)
    function fractionalTokenReserves() public view returns (uint256) {
        address var_a = address(this);
        return storage_map_a[var_a];
    }
    
    /// @custom:selector    0xd505accf
    /// @custom:signature   Unresolved_d505accf(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_d505accf(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0xdd62ed3e
    /// @custom:signature   Unresolved_dd62ed3e(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_dd62ed3e(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0x2a6f869d
    /// @custom:signature   nftBuy(uint256[] arg0, uint256 arg1, uint256 arg2) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function nftBuy(uint256[] arg0, uint256 arg1, uint256 arg2) public {
        require(!arg0 > 0xffffffffffffffff);
        require(!(arg0) > 0xffffffffffffffff);
        require((0x0de0b6b3a7640000 == ((0x0de0b6b3a7640000 * (arg0)) / (arg0))) | !(arg0), "Invalid ether input");
        require(!arg2, "Invalid ether input");
        require(!(arg2 < block.timestamp), "Invalid ether input");
        require(!0, "Invalid ether input");
        require((0x0de0b6b3a7640000 * (arg0)) == (((0x0de0b6b3a7640000 * (arg0)) * 0x03e8) / 0x03e8) | !0x03e8);
        require(!0);
        address var_d = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_d); // staticcall
        uint256 var_g = var_g + (uint248(ret0.length + 0x1f));
        require(!(((var_g + ret0.length) - var_g) < 0x20), "Slippage: amount in");
        address var_a = address(this);
        require(!(storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) > storage_map_a[var_a]), "Slippage: amount in");
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) == ((storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) * 0x03de) / 0x03de) | !0x03de, "Slippage: amount in");
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require((storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) * 0x03de) * (!var_g.length * (((0x0de0b6b3a7640000 * (arg0)) * 0x03e8) > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / var_g.length))), "Slippage: amount in");
        require(!((((0x0de0b6b3a7640000 * (arg0)) * 0x03e8) * var_g.length) / (storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) * 0x03de) + ((((0x0de0b6b3a7640000 * (arg0)) * 0x03e8) * var_g.length) % (storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) * 0x03de)) > arg1), "Slippage: amount in");
        var_a = address(this);
        require(!(storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0)) > storage_map_a[var_a]), "TRANSFER_FROM_FAILED");
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_a[var_a] = storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0));
        var_a = address(msg.sender);
        storage_map_a[var_a] = (0x0de0b6b3a7640000 * (arg0)) + storage_map_a[var_a];
        var_a = var_a;
        emit Transfer(address(this), address(msg.sender), 0x0de0b6b3a7640000 * (arg0));
        require(0, "TRANSFER_FROM_FAILED");
        address var_e = msg.sender;
        (bool success, bytes memory ret0) = address(0).{ value: 0 ether }Unresolved_23b872dd(var_e); // call
        require(((var_a == 0x01) & (ret0.length > 0x1f) | !ret0.length) & (success), "TRANSFER_FROM_FAILED");
        require(!((address(this).balance - msg.value) > address(this).balance), "Expired");
        require(!arg2, "Expired");
    }
    
    /// @custom:selector    0x168585e5
    /// @custom:signature   buyQuote(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function buyQuote(uint256 arg0) public returns (uint256) {
        require((arg0 == ((arg0 * 0x03e8) / 0x03e8)) | !0x03e8);
        require(!0);
        address var_d = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_d); // staticcall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        address var_a = address(this);
        require(!(storage_map_a[var_a] - arg0) > storage_map_a[var_a]);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require((storage_map_a[var_a] - arg0) == (((storage_map_a[var_a] - arg0) * 0x03de) / 0x03de) | !0x03de);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(((storage_map_a[var_a] - arg0) * 0x03de) * (!var_e.length * ((arg0 * 0x03e8) > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / var_e.length))));
        return (((arg0 * 0x03e8) * var_e.length) / ((storage_map_a[var_a] - arg0) * 0x03de)) + (((arg0 * 0x03e8) * var_e.length) % ((storage_map_a[var_a] - arg0) * 0x03de));
        require(!(address(this).balance - msg.value) > address(this).balance);
    }
    
    /// @custom:selector    0xd3c9727c
    /// @custom:signature   sell(uint256 arg0, uint256 arg1, uint256 arg2) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function sell(uint256 arg0, uint256 arg1, uint256 arg2) public {
        require(!arg2);
        require(!arg2 < block.timestamp);
        require((arg0 == ((arg0 * 0x03de) / 0x03de)) | !0x03de);
        address var_a = address(this);
        require(storage_map_a[var_a] == ((storage_map_a[var_a] * 0x03e8) / 0x03e8) | !0x03e8);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(storage_map_a[var_a] * 0x03e8) > ((arg0 * 0x03de) + (storage_map_a[var_a] * 0x03e8)));
        require(!0);
        address var_e = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_e); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!((var_f + ret0.length) - var_f) < 0x20);
        require(!((address(this).balance - msg.value) > address(this).balance), "Expired");
        require(!arg2, "Expired");
    }
    
    /// @custom:selector    0x2e1a7d4d
    /// @custom:signature   Unresolved_2e1a7d4d(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function Unresolved_2e1a7d4d(uint256 arg0) public {
        (bool success, bytes memory ret0) = address(0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840).owner(); // staticcall
        uint256 var_b = var_b + (uint248(ret0.length + 0x1f));
        require(!(((var_b + ret0.length) - var_b) < 0x20), "Withdraw: not owner");
        require(var_b.length == (address(var_b.length)), "Withdraw: not owner");
        require(address(var_b.length) == (address(msg.sender)), "Withdraw: not owner");
        require(0 - closeTimestamp, "Not withdrawable yet");
        require(!(block.timestamp < closeTimestamp), "Not withdrawable yet");
        address var_d = address(this);
        require(address(0x29b4ea6b1164c7cd8a3a0a1dc4ad88d1e0589124).code.length);
        (bool success, bytes memory ret0) = address(0x29b4ea6b1164c7cd8a3a0a1dc4ad88d1e0589124).{ value: 0 ether }Unresolved_42842e0e(var_d); // call
        emit Withdraw(arg0);
    }
    
    /// @custom:selector    0x06fdde03
    /// @custom:signature   Unresolved_06fdde03() public view returns (string memory)
    function Unresolved_06fdde03() public view returns (string memory) {
        if (store_f) {
            if (store_f - ((store_f >> 0x01) < 0x20)) {
                uint256 var_c = var_c + (0x20 + (((0x1f + (store_f >> 0x01)) / 0x20) * 0x20));
                if (store_f) {
                    if (store_f - ((store_f >> 0x01) < 0x20)) {
                        if (!store_f >> 0x01) {
                            if (0x1f < (store_f >> 0x01)) {
                                uint256 var_a = 0;
                                if ((0x20 + var_c) + (store_f >> 0x01) > (0x20 + (0x20 + var_c))) {
                                    return abi.encodePacked(0x20, var_c.length);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x35ec39d9
    /// @custom:signature   Unresolved_35ec39d9(uint256 arg0, uint256 arg1) public pure
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Unresolved_35ec39d9(uint256 arg0, uint256 arg1) public pure {
        require(!arg0 > 0xffffffffffffffff);
        require(!(arg0) > 0xffffffffffffffff);
        require(!arg1 > 0xffffffffffffffff);
    }
    
    /// @custom:selector    0x95d89b41
    /// @custom:signature   Unresolved_95d89b41() public view returns (string memory)
    function Unresolved_95d89b41() public view returns (string memory) {
        if (store_g) {
            if (store_g - ((store_g >> 0x01) < 0x20)) {
                uint256 var_c = var_c + (0x20 + (((0x1f + (store_g >> 0x01)) / 0x20) * 0x20));
                if (store_g) {
                    if (store_g - ((store_g >> 0x01) < 0x20)) {
                        if (!store_g >> 0x01) {
                            if (0x1f < (store_g >> 0x01)) {
                                var_a = 0x01;
                                if ((0x20 + var_c) + (store_g >> 0x01) > (0x20 + (0x20 + var_c))) {
                                    return abi.encodePacked(0x20, var_c.length);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x150b7a02
    /// @custom:signature   Unresolved_150b7a02(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_150b7a02(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0x5accf4a5
    /// @custom:signature   Unresolved_5accf4a5(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3) public pure
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    function Unresolved_5accf4a5(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3) public pure {
        require(!arg0 > 0xffffffffffffffff);
        require(!(arg0) > 0xffffffffffffffff);
        require(!arg3 > 0xffffffffffffffff);
    }
    
    /// @custom:selector    0x23b872dd
    /// @custom:signature   Unresolved_23b872dd(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_23b872dd(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0x3644e515
    /// @custom:signature   Unresolved_3644e515() public view returns (uint256)
    function Unresolved_3644e515() public view returns (uint256) {
        if (block.chainid == 0x01) {
            if (store_f) {
                if (store_f - ((store_f >> 0x01) < 0x20)) {
                    if (!store_f) {
                        if (store_f == 0x01) {
                            if (!0 < (store_f >> 0x01)) {
                                uint256 var_j = 0xc0 + var_j;
                                return keccak256(var_l);
                                var_j = 0xc0 + var_j;
                                return keccak256(var_l);
                                return keccak256(var_l);
                                return 0xbc170aef845f8127a4b1a875cf54dd734237bc2b82a4bea1fa1a45253146daa1;
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x70a08231
    /// @custom:signature   Unresolved_70a08231(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_70a08231(address arg0) public view returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_b = arg0;
        return storage_map_d[var_b];
    }
    
    /// @custom:selector    0x28660571
    /// @custom:signature   Unresolved_28660571(uint256 arg0, uint256 arg1) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function Unresolved_28660571(uint256 arg0, uint256 arg1) public returns (uint256) {
        require(!arg0 > 0xffffffffffffffff);
        require(!(arg0) > 0xffffffffffffffff);
        require(arg1 == arg1);
        require((0x0de0b6b3a7640000 == ((0x0de0b6b3a7640000 * (arg0)) / (arg0))) | !arg0);
        address var_a = address(msg.sender);
        require(!(storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0))) > storage_map_a[var_a]);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_a[var_a] = storage_map_a[var_a] - (0x0de0b6b3a7640000 * (arg0));
        unresolved_18160ddd = unresolved_18160ddd - (0x0de0b6b3a7640000 * (arg0));
        emit Transfer(address(msg.sender), 0, 0x0de0b6b3a7640000 * (arg0));
        require(!arg1);
        require((0x0de0b6b3a7640000 * (arg0)) == (((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03) | !0x03);
        require(0x03e8);
        var_a = address(msg.sender);
        require(!(storage_map_a[var_a] - (((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03e8)) > storage_map_a[var_a]);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_a[var_a] = storage_map_a[var_a] - (((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03e8);
        var_a = address(this);
        storage_map_a[var_a] = (((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03e8) + storage_map_a[var_a];
        emit Transfer(address(msg.sender), address(this), ((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03e8);
        require(!(0x0de0b6b3a7640000 * (arg0)) > ((((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03e8) + (0x0de0b6b3a7640000 * (arg0))));
        require(!0 < (arg0));
        require(0 < (arg0));
        address var_e = address(this);
        require(address(0x29b4ea6b1164c7cd8a3a0a1dc4ad88d1e0589124).code.length);
        (bool success, bytes memory ret0) = address(0x29b4ea6b1164c7cd8a3a0a1dc4ad88d1e0589124).{ value: 0 ether }Unresolved_42842e0e(var_e); // call
        require(!(arg0) > 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        var_h = msg.data[36:36];
        emit Unwrap(keccak256(var_h));
        return (((0x0de0b6b3a7640000 * (arg0)) * 0x03) / 0x03e8) + (0x0de0b6b3a7640000 * (arg0));
    }
    
    /// @custom:selector    0xa035b1fe
    /// @custom:signature   price() public returns (uint256)
    function price() public returns (uint256) {
        require(!0);
        (bool success, bytes memory ret0) = address(0).decimals(); // staticcall
        uint256 var_b = var_b + (uint248(ret0.length + 0x1f));
        require(!((var_b + ret0.length) - var_b) < 0x20);
        require(var_b.length == (bytes1(var_b.length)));
        require(!(0x24 - (bytes1(var_b.length))) > 0xff);
        require(bytes1(0x24 - (var_b.length)));
        require(!0);
        address var_g = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_g); // staticcall
        var_b = var_b + (uint248(ret0.length + 0x1f));
        require(!((var_b + ret0.length) - var_b) < 0x20);
        require((0x01 == ((0x01 * var_b.length) / var_b.length)) | !var_b.length);
        var_c = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(storage_map_h[var_c]);
        return (0x01 * var_b.length) / storage_map_h[var_c];
        require(!(address(this).balance - msg.value) > address(this).balance);
        require(0x0a);
        require(0x0a == 0x01);
        require(0x0a == 0x02);
        require(!(bytes1(0x24 - (var_b.length))) > 0xff);
        require(!0);
        var_g = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_g, var_i); // staticcall
        if (!(address(this).balance - msg.value) > address(this).balance) {
            require(!(address(this).balance - msg.value) > address(this).balance);
            require(!((0x0a < 0x0b) & (bytes1(0x24 - (var_b.length)) < 0x4e)) | ((0x0a < 0x0133) & (bytes1(0x24 - (var_b.length)) < 0x20)));
            require(!(bytes1(0x24 - (var_b.length))) > 0x01);
            require(!0x01 > 0x1999999999999999999999999999999999999999999999999999999999999999);
            require(!0x0a > 0x1999999999999999999999999999999999999999999999999999999999999999);
        }
    }
    
    /// @custom:selector    0x0a94914e
    /// @custom:signature   addQuote(uint256 arg0, uint256 arg1, uint256 arg2) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function addQuote(uint256 arg0, uint256 arg1, uint256 arg2) public returns (uint256) {
        require(!arg2);
        require(!0);
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_b); // staticcall
        uint256 var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        require((arg2 == ((arg2 * arg0) / arg0)) | !arg0);
        require(var_c.length);
        require((arg2 == ((arg2 * arg1) / arg1)) | !arg1);
        var_d = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(storage_map_i[var_d]);
        require(((arg2 * arg0) / var_c.length) < ((arg2 * arg1) / storage_map_i[var_d]));
        return (arg2 * arg0) / var_c.length;
        return (arg2 * arg1) / storage_map_i[var_d];
        require(!(address(this).balance - msg.value) > address(this).balance);
    }
    
    /// @custom:selector    0xd7a2e4c9
    /// @custom:signature   sellQuote(uint256 arg0) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function sellQuote(uint256 arg0) public {
        require((arg0 == ((arg0 * 0x03de) / 0x03de)) | !0x03de);
        address var_a = address(this);
        require(storage_map_a[var_a] == ((storage_map_a[var_a] * 0x03e8) / 0x03e8) | !0x03e8);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(storage_map_a[var_a] * 0x03e8) > ((arg0 * 0x03de) + (storage_map_a[var_a] * 0x03e8)));
        require(!0);
        address var_e = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_e); // staticcall
        uint256 var_f = var_f + (uint248(ret0.length + 0x1f));
        require(!((var_f + ret0.length) - var_f) < 0x20);
        require(!(address(this).balance - msg.value) > address(this).balance);
    }
    
    /// @custom:selector    0x40993b26
    /// @custom:signature   buy(uint256 arg0, uint256 arg1, uint256 arg2) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function buy(uint256 arg0, uint256 arg1, uint256 arg2) public returns (uint256) {
        require(!arg2, "Invalid ether input");
        require(!(arg2 < block.timestamp), "Invalid ether input");
        require(!0, "Invalid ether input");
        require((arg0 == ((arg0 * 0x03e8) / 0x03e8)) | !0x03e8);
        require(!0);
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_b); // staticcall
        uint256 var_g = var_g + (uint248(ret0.length + 0x1f));
        require(!(((var_g + ret0.length) - var_g) < 0x20), "Slippage: amount in");
        address var_e = address(this);
        require(!((storage_map_j[var_e] - arg0) > storage_map_j[var_e]), "Slippage: amount in");
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require((storage_map_j[var_e] - arg0) == (((storage_map_j[var_e] - arg0) * 0x03de) / 0x03de) | !0x03de, "Slippage: amount in");
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(((storage_map_j[var_e] - arg0) * 0x03de) * (!var_g.length * ((arg0 * 0x03e8) > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / var_g.length))), "Slippage: amount in");
        require(!(((arg0 * 0x03e8) * var_g.length) / ((storage_map_j[var_e] - arg0) * 0x03de) + (((arg0 * 0x03e8) * var_g.length) % ((storage_map_j[var_e] - arg0) * 0x03de)) > arg1), "Slippage: amount in");
        var_e = address(this);
        require(!((storage_map_j[var_e] - arg0) > storage_map_j[var_e]), "TRANSFER_FROM_FAILED");
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_j[var_e] = storage_map_j[var_e] - arg0;
        var_e = address(msg.sender);
        storage_map_j[var_e] = arg0 + storage_map_j[var_e];
        var_e = var_e;
        emit Transfer(address(this), address(msg.sender), arg0);
        require(0, "TRANSFER_FROM_FAILED");
        address var_c = msg.sender;
        (bool success, bytes memory ret0) = address(0).{ value: 0 ether }Unresolved_23b872dd(var_c); // call
        require(((var_e == 0x01) & (ret0.length > 0x1f) | !ret0.length) & (success), "TRANSFER_FROM_FAILED");
        emit Buy(((arg0 * 0x03e8) * var_g.length) / ((storage_map_j[var_e] - arg0) * 0x03de) + (((arg0 * 0x03e8) * var_g.length) % ((storage_map_j[var_e] - arg0) * 0x03de)), arg0);
        return (((arg0 * 0x03e8) * var_g.length) / ((storage_map_j[var_e] - arg0) * 0x03de)) + (((arg0 * 0x03e8) * var_g.length) % ((storage_map_j[var_e] - arg0) * 0x03de));
        require(!((address(this).balance - msg.value) > address(this).balance), "Expired");
        require(!arg2, "Expired");
    }
    
    /// @custom:selector    0x1ae74cdd
    /// @custom:signature   remove(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3) public
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    function remove(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3) public {
        require(!arg3);
        require(!arg3 < block.timestamp);
        (bool success, bytes memory ret0) = address(0xbaae8faf25de8101b687a4a1f21c8a305a3e0d6a).Unresolved_18160ddd(var_b); // staticcall
        uint256 var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        require(!0);
        address var_e = address(this);
        (bool success, bytes memory ret0) = address(0).Unresolved_70a08231(var_e); // staticcall
        var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!(((var_c + ret0.length) - var_c) < 0x20), "Slippage: base token amount out");
        require((arg0 == ((arg0 * var_c.length) / var_c.length)) | !var_c.length, "Slippage: base token amount out");
        require(var_c.length, "Slippage: base token amount out");
        address var_f = address(this);
        require((arg0 == ((arg0 * storage_map_c[var_f]) / storage_map_c[var_f])) | !storage_map_c[var_f], "Slippage: base token amount out");
        require(var_c.length, "Slippage: base token amount out");
        require(!(0x01 > (arg0 + 0x01)), "Slippage: base token amount out");
        var_f = address(this);
        require((arg0 + 0x01) == ((arg0 + 0x01) * storage_map_c[var_f] / storage_map_c[var_f]) | !storage_map_c[var_f], "Slippage: base token amount out");
        require(var_c.length, "Slippage: base token amount out");
        require(0x0de0b6b3a7640000, "Slippage: base token amount out");
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(((arg0 * storage_map_c[var_f]) / var_c.length) % 0x0de0b6b3a7640000), "Slippage: base token amount out");
        require(!(((arg0 + 0x01) * storage_map_c[var_f] / var_c.length) - ((arg0 * storage_map_c[var_f]) / var_c.length) > ((arg0 + 0x01) * storage_map_c[var_f] / var_c.length)), "Slippage: base token amount out");
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(!(((arg0 + 0x01) * storage_map_c[var_f] / var_c.length) - ((arg0 * storage_map_c[var_f]) / var_c.length)) > 0x03e8), "Slippage: base token amount out");
        require(!(!(((arg0 + 0x01) * storage_map_c[var_f] / var_c.length) - ((arg0 * storage_map_c[var_f]) / var_c.length)) > 0x03e8), "Slippage: base token amount out");
        require(!(((arg0 * var_c.length) / var_c.length) < arg1), "Slippage: base token amount out");
        require(!(((arg0 * storage_map_c[var_f]) / var_c.length) < arg2), "Slippage: fractional token out");
        if (!((arg0 * storage_map_c[var_f]) / var_c.length) % 0x0de0b6b3a7640000) {
            if (!((arg0 * storage_map_c[var_f]) / var_c.length) % 0x0de0b6b3a7640000) {
            }
        }
        require(!(address(this).balance - msg.value) > address(this).balance);
        require(!arg3, "Expired");
    }
    
    /// @custom:selector    0x43d726d6
    /// @custom:signature   close() public
    function close() public {
        (bool success, bytes memory ret0) = address(0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840).owner(); // staticcall
        uint256 var_b = var_b + (uint248(ret0.length + 0x1f));
        require(!(((var_b + ret0.length) - var_b) < 0x20), "Close: not owner");
        require(var_b.length == (address(var_b.length)), "Close: not owner");
        require(address(var_b.length) == (address(msg.sender)), "Close: not owner");
        require(!block.timestamp > (0x093a80 + block.timestamp));
        closeTimestamp = 0x093a80 + block.timestamp;
        var_d = 0x29b4ea6b1164c7cd8a3a0a1dc4ad88d1e0589124;
        uint256 var_f = 0;
        require(address(0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840).code.length);
        (bool success, bytes memory ret0) = address(0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840).{ value: var_f ether }Unresolved_505fe152(var_d); // call
        emit Close(closeTimestamp);
    }
}

ABI

[
  {
    "type": "function",
    "name": "CLOSE_GRACE_PERIOD",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "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": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_150b7a02",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_18160ddd",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_23b872dd",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_28660571",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_2e1a7d4d",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_35ec39d9",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_3644e515",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_4cba3eca",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_4cfb998a",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "uint256"
      },
      {
        "name": "arg5",
        "type": "uint256"
      },
      {
        "name": "arg6",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_5accf4a5",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "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"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_dd62ed3e",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "add",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "uint256"
      },
      {
        "name": "arg5",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "addQuote",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "baseToken",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "baseTokenReserves",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "buy",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "buyQuote",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "caviar",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "close",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "closeTimestamp",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "decimals",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "fractionalTokenReserves",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "lpToken",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "merkleRoot",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "nft",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "nftBuy",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256[]"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "nonces",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "price",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "remove",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      },
      {
        "name": "arg3",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "removeQuote",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "sell",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "sellQuote",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "Add",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Buy",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Close",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Event_8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Unwrap",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256[]",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Withdraw",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  }
]

UNKNOWN SELECTORS (5)

0x0a85bd01unknown
0x21421707unknown
0x282ff0a9unknown
0x2770a7ebunknown
0xc4a11628unknown
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)