0xfccc27aabd0ab7a0b2ad2b7760037b1eab61616b

deployer: unknown relevance score: 0 status: partially_identified bytecode: 21568 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 siloRepository = 1242257728561242138016514714011449050564198871197;
    uint256 public constant VERSION = 1;
    uint256 public constant siloAsset = 917551056842671309452305380979543736893630245704;
    
    mapping(bytes32 => bytes32) storage_map_f;
    mapping(bytes32 => bytes32) storage_map_w;
    mapping(bytes32 => bytes32) storage_map_q;
    mapping(bytes32 => bytes32) storage_map_al;
    mapping(bytes32 => bytes32) storage_map_s;
    mapping(bytes32 => bytes32) storage_map_ak;
    mapping(bytes32 => bytes32) storage_map_af;
    mapping(bytes32 => bytes32) storage_map_am;
    mapping(bytes32 => bytes32) storage_map_ac;
    mapping(bytes32 => bytes32) storage_map_j;
    bytes32 store_a;
    mapping(bytes32 => bytes32) storage_map_k;
    mapping(bytes32 => bytes32) storage_map_i;
    mapping(bytes32 => bytes32) storage_map_b;
    bytes32 store_ae;
    bytes32 store_g;
    mapping(bytes32 => bytes32) storage_map_x;
    mapping(bytes32 => bytes32) storage_map_e;
    mapping(bytes32 => bytes32) storage_map_n;
    mapping(bytes32 => bytes32) storage_map_o;
    mapping(bytes32 => bytes32) storage_map_z;
    mapping(bytes32 => bytes32) storage_map_v;
    mapping(bytes32 => bytes32) storage_map_d;
    mapping(bytes32 => bytes32) storage_map_ah;
    mapping(bytes32 => bytes32) storage_map_ab;
    mapping(bytes32 => bytes32) storage_map_h;
    mapping(bytes32 => bytes32) storage_map_ad;
    mapping(bytes32 => bytes32) storage_map_t;
    mapping(bytes32 => bytes32) storage_map_r;
    mapping(bytes32 => bytes32) storage_map_aa;
    mapping(bytes32 => bytes32) storage_map_ai;
    mapping(bytes32 => bytes32) storage_map_y;
    mapping(bytes32 => bytes32) storage_map_p;
    mapping(bytes32 => bytes32) storage_map_m;
    mapping(bytes32 => bytes32) storage_map_ag;
    mapping(bytes32 => bytes32) storage_map_u;
    mapping(bytes32 => bytes32) storage_map_l;
    mapping(bytes32 => bytes32) storage_map_aj;
    mapping(bytes32 => bytes32) storage_map_c;
    
    event Withdraw(address, address, address, uint256, bool);
    error DepositNotPossible();
    event Repay(address, address, uint256);
    event AssetStatusUpdate(address, uint8);
    
    /// @custom:selector    0xead5d359
    /// @custom:signature   Unresolved_ead5d359(address arg0, uint256 arg1, uint256 arg2) public payable returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function Unresolved_ead5d359(address arg0, uint256 arg1, uint256 arg2) public payable returns (bytes memory) {
        require(arg0 == (address(arg0)));
        require(arg2 == arg2);
        require(store_a - 0x02, "ReentrancyGuard: reentrant call");
        var_d = 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00;
        store_a = 0x02;
        address var_e = address(arg0);
        require(!(bytes1(storage_map_b[var_e] / 0x010000000000000000)) > 0x02);
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(bytes1(storage_map_b[var_e] / 0x010000000000000000) - 0);
        var_a = 0x44cf3e9300000000000000000000000000000000000000000000000000000000;
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_44cf3e93(var_b); // staticcall
        uint256 var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        require(var_h.length == var_h.length);
        require(!var_h.length);
        var_e = address(arg0);
        require(0 - (uint64(storage_map_c[var_e])));
        require(uint64(storage_map_c[var_e]) - block.timestamp);
        var_e = address(arg0);
        require(!arg2);
        require(arg1 - 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        var_c = address(msg.sender);
        (bool success, bytes memory ret0) = address(storage_map_d[var_e]).Unresolved_70a08231(var_c); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        (bool success, bytes memory ret0) = address(storage_map_d[var_e]).Unresolved_18160ddd(var_d); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!(((var_h + ret0.length) - var_h) < 0x20), CustomError_b2454c78());
        require(!var_h.length, CustomError_b2454c78());
        require(var_h.length, CustomError_b2454c78());
        require(0, CustomError_b2454c78());
        require(!(storage_map_e[var_e] < 0), CustomError_b2454c78());
        require(0);
        var_e = address(arg0);
        require(!(storage_map_f[var_e]) > 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        var_e = address(arg0);
        storage_map_f[var_e] = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
        require(!(storage_map_e[var_e]) < (0 - (~(storage_map_f[var_e]))));
        var_e = address(arg0);
        require(!arg2);
        storage_map_e[var_e] = (storage_map_e[var_e]) - 0;
        address var_l = address(msg.sender);
        require(address(storage_map_d[var_e]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_d[var_e]).{ value: 0 ether }Unresolved_9dc29fac(var_l); // call
        var_h = 0x40 + var_h;
        require(!(address(this).balance < 0), "Address: insufficient balance for call");
        require(address(arg0).code.length, "Address: call to non-contract");
        var_t = 0x20;
        require(!0 > var_h.length);
        uint256 var_v = 0;
        (bool success, bytes memory ret0) = address(arg0).{ value: var_v ether }Unresolved_08c379a0(var_t); // call
        require(ret0.length == 0);
        require(!var_x);
        require(!(0 > var_h.length), "");
        require(!var_x, "SafeERC20: ERC20 operation did not succeed");
        require(!(((0x80 + var_x) - 0x80) < 0x20), "SafeERC20: ERC20 operation did not succeed");
        require(var_a == var_a, "SafeERC20: ERC20 operation did not succeed");
        require(var_a, "SafeERC20: ERC20 operation did not succeed");
        require(0, CustomError_dba17af5());
        require(address(msg.sender), CustomError_dba17af5());
        var_h = var_h + (0x20 + (0x20 * store_g));
        require(!store_g, CustomError_dba17af5());
        var_e = 0x02;
        require((0x20 + var_h) + (0x20 * store_g) > (0x20 + (0x20 + var_h)), CustomError_dba17af5());
        require(!(var_h.length > 0xffffffffffffffff), CustomError_dba17af5());
        var_h = var_h + (0x20 + (0x20 * var_h.length));
        require(!var_h.length, CustomError_dba17af5());
        var_h = 0xc0 + var_h;
        require(var_h.length - 0x01, CustomError_dba17af5());
        var_e = address(var_ag);
        var_h = var_h + 0xc0;
        require(0x01, CustomError_dba17af5());
        var_h = 0xa0 + var_h;
        require(var_an == (var_ao), CustomError_dba17af5());
        require(!(var_an) > 0xffffffffffffffff);
        require(!var_an);
        var_aq = msg.data[4:4];
        require(!0 < (var_an));
        require(0 < (var_an));
        address var_as = address(var_aq);
        (bool success, bytes memory ret0) = address(var_av).Unresolved_48b3eabc(var_as); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        require(var_h.length == (address(var_h.length)));
        var_at = address(var_aq);
        (bool success, bytes memory ret0) = address(var_h.length).Unresolved_b1e01765(var_at); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        require(0 < (var_ao));
        var_ax = address(var_ba);
        (bool success, bytes memory ret0) = address(var_bb).Unresolved_70a08231(var_ax); // staticcall
        require(!0 > (~(var_aq)));
        require(0x01);
        require(0);
        (bool success, bytes memory ret0) = address(var_av).priceProvidersRepository(); // staticcall
        require(!(0 < 0), CustomError_e081c8f3());
        emit Withdraw(address(arg0), address(msg.sender), address(msg.sender), 0, arg2);
        store_a = 0x01;
        var_ar = 0;
        return abi.encodePacked(0, var_h.length);
        var_h = var_h + (uint248(ret0.length + 0x3f));
        require(!var_h.length);
        if (!var_h.length) {
        }
        var_e = address(arg0);
        storage_map_f[var_e] = var_ar + (storage_map_f[var_e]);
        require(!(storage_map_e[var_e] < 0), CustomError_4323a555());
        var_e = address(arg0);
        if (!arg2) {
        }
        require(!(var_h.length & (storage_map_e[var_e] > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / var_h.length))), CustomError_32d971dc());
        require(var_h.length, CustomError_32d971dc());
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(!(var_h.length * (storage_map_e[var_e])) / var_h.length), CustomError_32d971dc());
        require(!(!(var_h.length * (storage_map_e[var_e])) / var_h.length), CustomError_32d971dc());
        if (storage_map_e[var_e]) {
        }
        (bool success, bytes memory ret0) = address(storage_map_d[var_e]).Unresolved_18160ddd(var_c); // staticcall
        var_c = address(this);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c, var_d); // staticcall
        var_c = address(this);
        address var_d = address(arg0);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).getInterestRateModel(var_c, var_d); // staticcall
    }
    
    /// @custom:selector    0x9198e515
    /// @custom:signature   accrueInterest(address arg0) public payable returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function accrueInterest(address arg0) public payable returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_44cf3e93(var_b); // staticcall
        uint256 var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length == var_d.length);
        require(!var_d.length);
        address var_e = address(arg0);
        require(0 - (uint64(storage_map_c[var_e])));
        require(uint64(storage_map_c[var_e]) - block.timestamp);
        return 0;
        var_c = address(this);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_48b3eabc(var_c); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length == (address(var_d.length)));
        var_h = address(arg0);
        (bool success, bytes memory ret0) = address(var_d.length).{ value: 0 ether }Unresolved_03dc12fc(var_h); // call
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).protocolShareFee(); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(!(storage_map_j[var_e]) & (var_d.length > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / (storage_map_j[var_e]))));
        require(0x0de0b6b3a7640000);
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(storage_map_d[var_e] + ((((storage_map_j[var_e] * var_d.length) / 0x0de0b6b3a7640000) * var_d.length) / 0x0de0b6b3a7640000)) < (storage_map_d[var_e]));
        require(!(storage_map_j[var_e]) > (~((storage_map_j[var_e] * var_d.length) / 0x0de0b6b3a7640000)));
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_b[var_e] = (uint64(block.timestamp)) | (uint192(storage_map_b[var_e]));
        return 0;
    }
    
    /// @custom:selector    0x22867d78
    /// @custom:signature   repay(address arg0, uint256 arg1) public payable returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function repay(address arg0, uint256 arg1) public payable returns (bytes memory) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        require(!(bytes1(storage_map_k[var_a] / 0x010000000000000000) > 0x02), "ReentrancyGuard: reentrant call");
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(bytes1(storage_map_k[var_a] / 0x010000000000000000) - 0, "ReentrancyGuard: reentrant call");
        require(store_a - 0x02, "ReentrancyGuard: reentrant call");
        var_g = 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00;
        store_a = 0x02;
        var_d = 0x44cf3e9300000000000000000000000000000000000000000000000000000000;
        address var_e = address(this);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_44cf3e93(var_e); // staticcall
        uint256 var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        require(var_h.length == var_h.length);
        require(!var_h.length);
        var_a = address(arg0);
        require(0 - (uint64(storage_map_l[var_a])));
        require(uint64(storage_map_l[var_a]) - block.timestamp);
        var_a = address(arg0);
        var_f = address(msg.sender);
        (bool success, bytes memory ret0) = address(storage_map_l[var_a]).Unresolved_70a08231(var_f); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        (bool success, bytes memory ret0) = address(storage_map_k[var_a] / 0x01).Unresolved_18160ddd(var_g); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!(((var_h + ret0.length) - var_h) < 0x20), "Address: insufficient balance for call");
        require(!var_h.length, "Address: insufficient balance for call");
        require(var_h.length, "Address: insufficient balance for call");
        require(arg1 < 0, "Address: insufficient balance for call");
        require(!var_h.length, "Address: insufficient balance for call");
        require(var_h.length, "Address: insufficient balance for call");
        require(0 - arg1, "Address: insufficient balance for call");
        emit Repay(address(arg0), address(msg.sender), arg1);
        var_h = 0x40 + var_h;
        require(!(address(this).balance < 0), "Address: insufficient balance for call");
        require(address(arg0).code.length, "Address: call to non-contract");
        var_t = 0x20;
        require(!0 > var_h.length);
        uint256 var_w = 0;
        (bool success, bytes memory ret0) = address(arg0).{ value: var_w ether }Unresolved_08c379a0(var_t); // call
        require(ret0.length == 0);
        require(!var_x);
        require(!(0 > var_h.length), "");
        require(!var_x, "SafeERC20: ERC20 operation did not succeed");
        require(!(((0x80 + var_x) - 0x80) < 0x20), "SafeERC20: ERC20 operation did not succeed");
        require(var_d == var_d, "SafeERC20: ERC20 operation did not succeed");
        require(var_d, "SafeERC20: ERC20 operation did not succeed");
        require(!(storage_map_m[var_a]) < arg1);
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_m[var_a] = (storage_map_m[var_a]) - arg1;
        address var_t = address(msg.sender);
        require(address(storage_map_l[var_a]).code.length);
        (bool success, bytes memory ret0) = address(storage_map_l[var_a]).{ value: 0 ether }Unresolved_9dc29fac(var_t); // call
        store_a = 0x01;
        return abi.encodePacked(arg1, arg1);
        var_h = var_h + (uint248(ret0.length + 0x3f));
        require(!var_h.length);
        if (!var_h.length) {
        }
        require(!(arg1 & (var_h.length > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / arg1))), CustomError_9811e0c7());
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(storage_map_n[var_a], CustomError_9811e0c7());
        require(!(!(arg1 * var_h.length) / (storage_map_n[var_a])), CustomError_9811e0c7());
        require(!(!(arg1 * var_h.length) / (storage_map_n[var_a])), CustomError_9811e0c7());
        require(!arg1, CustomError_9811e0c7());
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        if (storage_map_n[var_a]) {
        }
        require(0 - var_h.length, CustomError_faf4da91());
        if (storage_map_n[var_a]) {
        }
        var_f = address(this);
        address var_g = address(arg0);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).getInterestRateModel(var_f, var_g); // staticcall
        var_h = var_h + (uint248(ret0.length + 0x1f));
        require(!((var_h + ret0.length) - var_h) < 0x20);
        require(var_h.length == (address(var_h.length)));
        var_g = address(arg0);
        uint256 var_aa = block.timestamp;
        (bool success, bytes memory ret0) = address(var_h.length).{ value: 0 ether }getCompoundInterestRateAndUpdate(var_g, var_aa); // call
    }
    
    /// @custom:selector    0x151541f0
    /// @custom:signature   harvestProtocolFees() public payable returns (bytes memory)
    function harvestProtocolFees() public payable returns (bytes memory) {
        uint256 var_a = var_a + (0x20 + (0x20 * store_g));
        var_b = store_g;
        require(!store_g);
        var_c = 0x02;
        require((0x20 + var_a) + (0x20 * store_g) > (0x20 + (0x20 + var_a)));
        require(!var_a.length > 0xffffffffffffffff);
        var_a = var_a + (0x20 + (0x20 * var_a.length));
        require(!var_a.length);
        var_f = msg.data[4:4];
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).owner(); // staticcall
        var_a = var_a + (uint248(ret0.length + 0x1f));
        require(!((var_a + ret0.length) - var_a) < 0x20);
        require(var_a.length == (address(var_a.length)));
        require(store_a - 0x02);
        store_a = 0x02;
        address var_c = address(var_f);
        require(!(storage_map_p[var_c]) < storage_map_o[var_c]);
        var_c = address(var_f);
        address var_j = address(this);
        (bool success, bytes memory ret0) = address(var_f).Unresolved_70a08231(var_j); // staticcall
        var_a = var_a + (uint248(ret0.length + 0x1f));
        require(!(((var_a + ret0.length) - var_a) < 0x20), "Address: insufficient balance for call");
        require(!(var_a.length < (storage_map_q[var_c])), "Address: insufficient balance for call");
        var_c = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(storage_map_p[var_c] - storage_map_o[var_c] > (var_a.length - (storage_map_q[var_c]))), "Address: insufficient balance for call");
        require(0 - (var_a.length - (storage_map_q[var_c])), "Address: insufficient balance for call");
        store_a = 0x01;
        var_c = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        storage_map_o[var_c] = (var_a.length - (storage_map_q[var_c])) + storage_map_o[var_c];
        var_a = 0x40 + var_a;
        require(!(address(this).balance < 0), "Address: insufficient balance for call");
        require(address(var_f).code.length, "Address: call to non-contract");
        var_s = 0x20;
        require(!0 > var_a.length);
        uint256 var_u = 0;
        (bool success, bytes memory ret0) = address(var_f).{ value: var_u ether }Unresolved_08c379a0(var_s); // call
        require(ret0.length == 0);
        require(!var_w);
        require(!(0 > var_a.length), "");
        require(!var_w);
        require(!((0x80 + var_w) - 0x80) < 0x20);
        require(var_b == var_b);
        require(var_b, "SafeERC20: ERC20 operation did not succeed");
        var_a = var_a + (uint248(ret0.length + 0x3f));
        require(!var_a.length);
        if (!var_a.length) {
        }
        require(0 - (storage_map_p[var_c] - storage_map_o[var_c]), "Address: insufficient balance for call");
        storage_map_o[var_c] = (storage_map_p[var_c] - storage_map_o[var_c]) + storage_map_o[var_c];
        var_a = 0x40 + var_a;
        require(!(address(this).balance < 0), "Address: insufficient balance for call");
        require(address(var_f).code.length, "Address: call to non-contract");
        return abi.encodePacked(0x20, var_a.length);
    }
    
    /// @custom:selector    0xa388991b
    /// @custom:signature   syncBridgeAssets() public payable
    function syncBridgeAssets() public payable {
        require(store_a - 0x02, "ReentrancyGuard: reentrant call");
        store_a = 0x02;
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).getRemovedBridgeAssets(); // staticcall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        require(!var_e.length > 0xffffffffffffffff);
        require((var_e + ret0.length) > ((var_e + var_e.length) + 0x1f));
        require(!(var_f) > 0xffffffffffffffff);
        require(!((var_e + (uint248((0x20 + (var_i << 0x05)) + 0x1f))) < var_e) | ((var_e + (uint248((0x20 + (var_i << 0x05)) + 0x1f))) > 0xffffffffffffffff));
        var_e = var_e + (uint248((0x20 + (var_i << 0x05)) + 0x1f));
        require(!(0x20 + ((var_e + var_e.length) + (var_i << 0x05))) > (var_e + ret0.length));
        require(!(0x20 + (var_e + var_e.length)) < (0x20 + ((var_e + var_e.length) + (var_i << 0x05))));
        require(var_k == (address(var_k)));
        require(address(var_l) == 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48);
        require(0x01);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).tokensFactory(); // staticcall
        var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
    }
    
    /// @custom:selector    0xf87c3aa8
    /// @custom:signature   utilizationData(address arg0) public view returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function utilizationData(address arg0) public view returns (bytes memory) {
        require(arg0 == (address(arg0)));
        address var_e = address(arg0);
        var_a = var_a + 0x60;
        var_e = address(arg0);
        return abi.encodePacked(var_a.length, var_o, uint64(var_p));
    }
    
    /// @custom:selector    0xa6e08aa1
    /// @custom:signature   Unresolved_a6e08aa1(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_a6e08aa1(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0xf3d470c2
    /// @custom:signature   Unresolved_f3d470c2(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_f3d470c2(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0x3edd1128
    /// @custom:signature   Unresolved_3edd1128(address arg0, uint256 arg1, uint256 arg2) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function Unresolved_3edd1128(address arg0, uint256 arg1, uint256 arg2) public payable {
        require(arg0 == (address(arg0)));
        require(arg2 == arg2);
        require(store_a - 0x02);
        store_a = 0x02;
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_44cf3e93(var_b); // staticcall
        uint256 var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length == var_d.length);
        require(!var_d.length);
        address var_e = address(arg0);
        require(0 - (uint64(storage_map_c[var_e])));
        require(uint64(storage_map_c[var_e]) - block.timestamp);
        var_e = address(arg0);
        var_c = address(msg.sender);
        (bool success, bytes memory ret0) = address(storage_map_b[var_e]).Unresolved_70a08231(var_c); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length);
        var_e = address(arg0);
        require(!(bytes1(storage_map_b[var_e] / 0x010000000000000000)) > 0x02);
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(bytes1(storage_map_b[var_e] / 0x010000000000000000) == 0x01);
        var_e = address(arg0);
        require(arg2);
        require(!arg2);
        (bool success, bytes memory ret0) = address(storage_map_f[var_e] / 0x01).Unresolved_18160ddd(var_j); // staticcall
        (bool success, bytes memory ret0) = address(storage_map_s[var_e] / 0x01).Unresolved_18160ddd(var_j); // staticcall
        require(!arg2);
        (bool success, bytes memory ret0) = address(storage_map_f[var_e] / 0x01).Unresolved_18160ddd(var_j); // staticcall
        (bool success, bytes memory ret0) = address(storage_map_s[var_e] / 0x01).Unresolved_18160ddd(var_j); // staticcall
        var_c = address(this);
        address var_j = address(arg0);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_48b3eabc(var_c, var_j); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length == (address(var_d.length)));
        var_j = address(arg0);
        (bool success, bytes memory ret0) = address(var_d.length).{ value: 0 ether }Unresolved_03dc12fc(var_j); // call
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).protocolShareFee(); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(!(storage_map_j[var_e]) & (var_d.length > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / (storage_map_j[var_e]))));
        require(0x0de0b6b3a7640000);
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(storage_map_d[var_e] + ((((storage_map_j[var_e] * var_d.length) / 0x0de0b6b3a7640000) * var_d.length) / 0x0de0b6b3a7640000)) < (storage_map_d[var_e]));
        require(!(storage_map_j[var_e]) > (~((storage_map_j[var_e] * var_d.length) / 0x0de0b6b3a7640000)));
    }
    
    /// @custom:selector    0x4b8a3529
    /// @custom:signature   borrow(address arg0, uint256 arg1) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function borrow(address arg0, uint256 arg1) public payable {
        require(arg0 == (address(arg0)));
        require(store_a - 0x02);
        store_a = 0x02;
        address var_b = address(this);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_44cf3e93(var_b); // staticcall
        uint256 var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length == var_d.length);
        require(!var_d.length);
        address var_e = address(arg0);
        require(0 - (uint64(storage_map_c[var_e])));
        require(uint64(storage_map_c[var_e]) - block.timestamp);
        var_e = address(arg0);
        var_c = address(msg.sender);
        (bool success, bytes memory ret0) = address(storage_map_h[var_e]).Unresolved_70a08231(var_c); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length);
        address var_i = address(msg.sender);
        (bool success, bytes memory ret0) = address(storage_map_d[var_e]).Unresolved_70a08231(var_i); // staticcall
        require(var_d.length);
        var_e = address(arg0);
        require(!(bytes1(storage_map_b[var_e] / 0x010000000000000000)) > 0x02);
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(bytes1(storage_map_b[var_e] / 0x010000000000000000) == 0x01);
        var_e = address(arg0);
        var_i = address(this);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_i); // staticcall
        var_c = address(this);
        var_i = address(arg0);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_48b3eabc(var_c, var_i); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(var_d.length == (address(var_d.length)));
        var_i = address(arg0);
        (bool success, bytes memory ret0) = address(var_d.length).{ value: 0 ether }Unresolved_03dc12fc(var_i); // call
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).protocolShareFee(); // staticcall
        var_d = var_d + (uint248(ret0.length + 0x1f));
        require(!((var_d + ret0.length) - var_d) < 0x20);
        require(!(storage_map_j[var_e]) & (var_d.length > (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / (storage_map_j[var_e]))));
        require(0x0de0b6b3a7640000);
        var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(storage_map_d[var_e] + ((((storage_map_j[var_e] * var_d.length) / 0x0de0b6b3a7640000) * var_d.length) / 0x0de0b6b3a7640000)) < (storage_map_d[var_e]));
        require(!(storage_map_j[var_e]) > (~((storage_map_j[var_e] * var_d.length) / 0x0de0b6b3a7640000)));
    }
    
    /// @custom:selector    0xf364181c
    /// @custom:signature   Unresolved_f364181c(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_f364181c(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0xbf273041
    /// @custom:signature   assetStorage(address arg0) public view returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function assetStorage(address arg0) public view returns (bytes memory) {
        require(arg0 == (address(arg0)));
        address var_h = address(arg0);
        var_a = var_a + 0xc0;
        return abi.encodePacked(address(var_a.length), address(var_aa), address(var_ab), var_ac, var_ad, var_ae);
    }
    
    /// @custom:selector    0xdbc5b481
    /// @custom:signature   Unresolved_dbc5b481(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_dbc5b481(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0x64654cf5
    /// @custom:signature   getAssetsWithState() public view returns (bytes memory)
    function getAssetsWithState() public view returns (bytes memory) {
        uint256 var_a = var_a + (0x20 + (0x20 * store_g));
        if (!store_g) {
            var_c = 0x02;
            if ((0x20 + var_a) + (0x20 * store_g) > (0x20 + (0x20 + var_a))) {
                if (!var_a.length > 0xffffffffffffffff) {
                    var_a = var_a + (0x20 + (0x20 * var_a.length));
                    if (!var_a.length) {
                        var_a = 0xc0 + var_a;
                        if (var_a.length - 0x01) {
                            address var_c = address(var_l);
                            var_a = var_a + 0xc0;
                            if (0x01) {
                                return abi.encodePacked(0x40, ((var_a + 0x40) + 0x20) - var_a, var_a.length, var_a.length);
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x93a94ca3
    /// @custom:signature   Unresolved_93a94ca3(uint256 arg0, address arg1) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_93a94ca3(uint256 arg0, address arg1) public payable {
        require(!arg0 > 0xffffffffffffffff);
        require(!(arg0) > 0xffffffffffffffff);
        require(!((var_c + (uint248((0x20 + (arg0 << 0x05)) + 0x1f))) < var_c) | ((var_c + (uint248((0x20 + (arg0 << 0x05)) + 0x1f))) > 0xffffffffffffffff));
        uint256 var_c = var_c + (uint248((0x20 + (arg0 << 0x05)) + 0x1f));
        require(!(0x20 + (0x04 + arg0)) < (0x20 + ((0x04 + arg0) + (arg0 << 0x05))));
        require((0x20 + (arg0)) == (address(0x20 + (arg0))));
        require(!arg1 > 0xffffffffffffffff);
        require(!(arg1 > 0xffffffffffffffff), CustomError_4fe29f17());
        require(!(((var_c + (uint248((0x20 + (0x1f + (arg1))) + 0x1f))) < var_c) | ((var_c + (uint248((0x20 + (0x1f + (arg1))) + 0x1f))) > 0xffffffffffffffff)), CustomError_4fe29f17());
        var_c = var_c + (0x20 + (0x20 * store_g));
        require(!store_g, CustomError_4fe29f17());
        var_a = 0x02;
        require((0x20 + var_c) + (0x20 * store_g) > (0x20 + (0x20 + var_c)), CustomError_4fe29f17());
        require(!(var_c.length > 0xffffffffffffffff), CustomError_4fe29f17());
        var_c = var_c + (0x20 + (0x20 * var_c.length));
        require(!var_c.length, CustomError_4fe29f17());
        require(var_c.length - 0x01, CustomError_4fe29f17());
        require(!(var_c.length > 0xffffffffffffffff), CustomError_4fe29f17());
        var_c = var_c + (0x20 + (0x20 * var_c.length));
        require(!var_c.length, CustomError_4fe29f17());
        require(var_c.length - 0x01, CustomError_4fe29f17());
        require(store_ae - 0x02, CustomError_4fe29f17());
        store_ae = 0x02;
        require(address(var_k), CustomError_dba17af5());
        var_c = var_c + (0x20 + (0x20 * store_g));
        require(!store_g, CustomError_dba17af5());
        var_a = 0x02;
        require((0x20 + var_c) + (0x20 * store_g) > (0x20 + (0x20 + var_c)), CustomError_dba17af5());
        require(!(var_c.length > 0xffffffffffffffff), CustomError_dba17af5());
        var_c = var_c + (0x20 + (0x20 * var_c.length));
        require(!var_c.length, CustomError_dba17af5());
        var_c = 0xc0 + var_c;
        require(var_c.length - 0x01, CustomError_dba17af5());
        address var_a = address(var_s);
        var_c = var_c + 0xc0;
        require(0x01, CustomError_dba17af5());
        var_c = 0xa0 + var_c;
        require(var_aa == (var_ab), CustomError_dba17af5());
        require(!(var_aa) > 0xffffffffffffffff);
        require(!var_aa);
        var_k = msg.data[4:4];
        require(!0 < (var_aa));
        require(0 < (var_aa));
        address var_ae = address(var_k);
        (bool success, bytes memory ret0) = address(var_ah).Unresolved_48b3eabc(var_ae); // staticcall
        var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        require(var_c.length == (address(var_c.length)));
        var_af = address(var_k);
        (bool success, bytes memory ret0) = address(var_c.length).Unresolved_b1e01765(var_af); // staticcall
        var_c = var_c + (uint248(ret0.length + 0x1f));
        require(!((var_c + ret0.length) - var_c) < 0x20);
        require(0 < (var_ab));
        var_aj = address(var_am);
        (bool success, bytes memory ret0) = address(var_an).Unresolved_70a08231(var_aj); // staticcall
        require(!0 > (~(var_k)));
        require(0x01);
        require(0);
        (bool success, bytes memory ret0) = address(var_ah).priceProvidersRepository(); // staticcall
        require(0 < 0);
        require(!var_c.length > 0xffffffffffffffff);
        var_c = var_c + (0x20 + (0x20 * var_c.length));
        require(!var_c.length);
        require(!var_c.length > 0xffffffffffffffff);
        var_c = var_c + (0x20 + (0x20 * var_c.length));
        require(!var_c.length);
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).protocolLiquidationFee(); // staticcall
        require(!(var_c.length > 0xffffffffffffffff), CustomError_599456c8());
        var_c = var_c + (0x20 + (0x20 * var_c.length));
        require(!var_c.length, CustomError_599456c8());
        store_ae = 0x01;
        if (!0 < (var_ao)) {
        }
    }
    
    /// @custom:selector    0x976ce495
    /// @custom:signature   Unresolved_976ce495(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_976ce495(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
    
    /// @custom:selector    0xfb255703
    /// @custom:signature   interestData(address arg0) public view returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function interestData(address arg0) public view returns (bytes memory) {
        require(arg0 == (address(arg0)));
        address var_f = address(arg0);
        var_a = var_a + 0x80;
        require(!(bytes1(storage_map_ak[var_f] / 0x010000000000000000)) > 0x02);
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(!(bytes1(storage_map_ak[var_f] / 0x010000000000000000)) > 0x02);
        var_f = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        require(var_r < 0x03);
        return abi.encodePacked(var_a.length, var_t, uint64(var_u), var_v);
    }
    
    /// @custom:selector    0xa1dfa423
    /// @custom:signature   initAssetsTokens() public payable
    function initAssetsTokens() public payable {
        require(store_a - 0x02);
        store_a = 0x02;
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).tokensFactory(); // staticcall
        uint256 var_b = var_b + (uint248(ret0.length + 0x1f));
        require(!((var_b + ret0.length) - var_b) < 0x20);
        require(var_b.length == (address(var_b.length)));
        var_c = 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48;
        require(address(storage_map_o[var_c]));
        (bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).getBridgeAssets(); // staticcall
        var_b = var_b + (uint248(ret0.length + 0x1f));
        require(!((var_b + ret0.length) - var_b) < 0x20);
        require(!var_b.length > 0xffffffffffffffff);
        require((var_b + ret0.length) > ((var_b + var_b.length) + 0x1f));
        require(!(var_f) > 0xffffffffffffffff);
        require(!((var_b + (uint248((0x20 + (var_h << 0x05)) + 0x1f))) < var_b) | ((var_b + (uint248((0x20 + (var_h << 0x05)) + 0x1f))) > 0xffffffffffffffff));
        var_b = var_b + (uint248((0x20 + (var_h << 0x05)) + 0x1f));
        require(!(0x20 + ((var_b + var_b.length) + (var_h << 0x05))) > (var_b + ret0.length));
        require(!(0x20 + (var_b + var_b.length)) < (0x20 + ((var_b + var_b.length) + (var_h << 0x05))));
        require(var_j == (address(var_j)));
        address var_c = address(var_k);
        require(address(storage_map_o[var_c]), CustomError_73d39f9d());
        var_c = address(var_k);
        storage_map_al[var_c] = 0x010000000000000000 | (uint248(storage_map_al[var_c]));
        emit AssetStatusUpdate(address(var_k), 0x01);
        require(0x01, CustomError_73d39f9d());
        var_b = var_b + 0x24;
        require(address(var_k).code.length, CustomError_73d39f9d());
        require(!0 > var_b.length);
        (bool success, bytes memory ret0) = address(var_k).TokenIsNotAContract(); // staticcall
        require(ret0.length == 0);
        var_b = 0x20 + var_b;
        require(!0);
        require(var_b.length);
        require(var_b.length - 0x20);
        require(!bytes1(var_k));
        require(!(((0x20 + var_b) + var_b.length) - (0x20 + var_b)) < 0x20);
        require(!(var_w) > 0xffffffffffffffff);
        require(((0x20 + var_b) + var_b.length) > ((0x20 + var_b) + (var_x) + 0x1f));
        require(!(var_y) > 0xffffffffffffffff);
        require(!((var_b + (uint248((0x20 + (0x1f + (var_z))) + 0x1f))) < var_b) | ((var_b + (uint248((0x20 + (0x1f + (var_z))) + 0x1f))) > 0xffffffffffffffff));
        var_b = var_b + (uint248((0x20 + (0x1f + (var_z))) + 0x1f));
        require(!((0x20 + var_b) + (var_x) + (var_ab) + 0x20) > ((0x20 + var_b) + var_b.length));
        if (!0x01) {
            if (0x01) {
            }
            if (!0) {
            }
            if (!0x01) {
                require(!0x01);
            }
            require(!0x01);
        }
        store_a = 0x01;
    }
    
    /// @custom:selector    0x67e4ac2c
    /// @custom:signature   getAssets() public view returns (bytes memory)
    function getAssets() public view returns (bytes memory) {
        uint256 var_a = var_a + (0x20 + (0x20 * store_g));
        if (!store_g) {
            var_c = 0x02;
            if ((0x20 + var_a) + (0x20 * store_g) > (0x20 + (0x20 + var_a))) {
                return abi.encodePacked(0x20, var_a.length);
            }
        }
    }
    
    /// @custom:selector    0x38b51ce1
    /// @custom:signature   isSolvent(address arg0) public payable returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function isSolvent(address arg0) public payable returns (bool) {
        require(arg0 == (address(arg0)));
        require(address(arg0), CustomError_dba17af5());
        uint256 var_a = var_a + (0x20 + (0x20 * store_g));
        require(!store_g, CustomError_dba17af5());
        var_c = 0x02;
        require((0x20 + var_a) + (0x20 * store_g) > (0x20 + (0x20 + var_a)), CustomError_dba17af5());
        require(!(var_a.length > 0xffffffffffffffff), CustomError_dba17af5());
        var_a = var_a + (0x20 + (0x20 * var_a.length));
        require(!var_a.length, CustomError_dba17af5());
        var_a = 0xc0 + var_a;
        require(var_a.length - 0x01, CustomError_dba17af5());
        address var_c = address(var_l);
        var_a = var_a + 0xc0;
        require(0x01, CustomError_dba17af5());
        var_a = 0xa0 + var_a;
        require(var_t == (var_u), CustomError_dba17af5());
        require(!(var_t) > 0xffffffffffffffff);
        require(!var_t);
        var_w = msg.data[4:4];
        require(!0 < (var_t));
        require(0 < (var_t));
        address var_y = address(var_w);
        (bool success, bytes memory ret0) = address(var_ab).Unresolved_48b3eabc(var_y); // staticcall
        var_a = var_a + (uint248(ret0.length + 0x1f));
        require(!((var_a + ret0.length) - var_a) < 0x20);
        require(var_a.length == (address(var_a.length)));
        var_z = address(var_w);
        (bool success, bytes memory ret0) = address(var_a.length).Unresolved_b1e01765(var_z); // staticcall
        var_a = var_a + (uint248(ret0.length + 0x1f));
        require(!((var_a + ret0.length) - var_a) < 0x20);
        require(0 < (var_u));
        var_ad = address(var_ag);
        (bool success, bytes memory ret0) = address(var_ah).Unresolved_70a08231(var_ad); // staticcall
        require(!0 > (~(var_w)));
        require(0x01);
        require(0);
        (bool success, bytes memory ret0) = address(var_ab).priceProvidersRepository(); // staticcall
        return !(0 < 0);
    }
    
    /// @custom:selector    0xb8c876b1
    /// @custom:signature   liquidity(address arg0) public payable returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function liquidity(address arg0) public payable returns (uint256) {
        require(arg0 == (address(arg0)));
        address var_a = address(arg0);
        address var_d = address(this);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_d); // staticcall
        uint256 var_e = var_e + (uint248(ret0.length + 0x1f));
        require(!((var_e + ret0.length) - var_e) < 0x20);
        require(!var_e.length < (storage_map_am[var_a]));
        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
        return var_e.length - (storage_map_am[var_a]);
    }
    
    /// @custom:selector    0xfbf178db
    /// @custom:signature   Unresolved_fbf178db(address arg0) public pure
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_fbf178db(address arg0) public pure {
        require(arg0 == (address(arg0)));
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_3edd1128",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_93a94ca3",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_976ce495",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_a6e08aa1",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_dbc5b481",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_ead5d359",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "Unresolved_f364181c",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_f3d470c2",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "Unresolved_fbf178db",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "VERSION",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "accrueInterest",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "assetStorage",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "borrow",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "getAssets",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getAssetsWithState",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "harvestProtocolFees",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "initAssetsTokens",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "interestData",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isSolvent",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "liquidity",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "repay",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "siloAsset",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "siloRepository",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "syncBridgeAssets",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "utilizationData",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "AssetStatusUpdate",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint8",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Repay",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Withdraw",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg3",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg4",
        "type": "bool",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "AssetDoesNotExist",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BorrowNotPossible",
    "inputs": []
  },
  {
    "type": "error",
    "name": "DepositNotPossible",
    "inputs": []
  },
  {
    "type": "error",
    "name": "DifferentArrayLength",
    "inputs": []
  },
  {
    "type": "error",
    "name": "LiquidationReentrancyCall",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotEnoughDeposits",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotEnoughLiquidity",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotSolvent",
    "inputs": []
  },
  {
    "type": "error",
    "name": "Paused",
    "inputs": []
  },
  {
    "type": "error",
    "name": "TokenIsNotAContract",
    "inputs": []
  },
  {
    "type": "error",
    "name": "UnexpectedEmptyReturn",
    "inputs": []
  },
  {
    "type": "error",
    "name": "UserIsZero",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ZeroAssets",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ZeroShares",
    "inputs": []
  }
]

UNKNOWN SELECTORS (19)

0x44cf3e93unknown
0x0ca4db11unknown
0x1648a98funknown
0x206e46bdunknown
0x13d0ff59unknown
0x01c08c79unknown
0x122cfaafunknown
0x01034b71unknown
0x12d04a42unknown
0x0655b2ebunknown
0x0b328ad9unknown
0x09682521unknown
0x30be9d25unknown
0x2770a7ebunknown
0x221e43cfunknown
0x0cb65c77unknown
0xe7b43da5unknown
0x9198e515unknown
0x3b0eb45dunknown
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)