0x5d3a536e4d6dbd6114cc1ead35777bab948e3643

deployer: unknown relevance score: 0 status: partially_identified bytecode: 7608 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 {
    bool public constant isCToken = 0xBool(true);
    
    address public admin;
    address public underlying;
    mapping(bytes32 => bytes32) storage_map_h;
    uint256 public accrualBlockNumber;
    address public interestRateModel;
    uint256 public borrowIndex;
    address public implementation;
    uint256 public unresolved_18160ddd;
    uint256 public reserveFactorMantissa;
    uint256 public totalBorrows;
    address public comptroller;
    bytes32 store_g;
    address public pendingAdmin;
    string public unresolved_06fdde03;
    uint256 public totalReserves;
    
    event NewImplementation(address, address);
    
    /// @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) {
        uint256 var_c = 0x44 + (var_d - var_d);
        uint256 var_d = var_d + 0x64;
        require(var_d.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_i < 0x20);
        return var_c;
        require(!success == 0);
    }
    
    /// @custom:selector    0xe9c714f2
    /// @custom:signature   _acceptAdmin() public returns (uint256)
    function _acceptAdmin() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(var_b.length < 0x20);
        require((var_b.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20);
        (bool success, bytes memory ret0) = address(implementation)._acceptAdmin(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_a;
        require(!success == 0);
    }
    
    /// @custom:selector    0x3b1d21a2
    /// @custom:signature   getCash() public returns (uint256)
    function getCash() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(!bytes1(var_b.length));
        var_b = var_b.length + (0x20 + (0x20 + (0x24 + var_b)));
        require(var_b.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        require(!var_a > 0x0100000000);
        require(!((0x80 + var_a) + 0x20) > (0x80 + var_j));
        require(!((0x80 + var_j) < (var_k + ((0x80 + var_a) + 0x20))) | (var_k > 0x0100000000));
        require(!0 < (var_k));
        require(!bytes1(var_k));
        var_b = (var_k) + (0x20 + var_b);
        require(!var_b.length < 0x20);
        return ;
        require(!success == 0);
    }
    
    /// @custom:selector    0x3e941010
    /// @custom:signature   _addReserves(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function _addReserves(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @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) {
        uint256 var_c = 0x44 + (var_d - var_d);
        uint256 var_d = var_d + 0x64;
        require(var_d.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_i < 0x20);
        return var_c;
        require(!success == 0);
    }
    
    /// @custom:selector    0x601a0bf1
    /// @custom:signature   _reduceReserves(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function _reduceReserves(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x17bfdfbc
    /// @custom:signature   borrowBalanceCurrent(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function borrowBalanceCurrent(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x3af9e669
    /// @custom:signature   balanceOfUnderlying(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function balanceOfUnderlying(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x2608f818
    /// @custom:signature   repayBorrowBehalf(address arg0, uint256 arg1) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    function repayBorrowBehalf(address arg0, uint256 arg1) public returns (uint256) {
        uint256 var_c = 0x44 + (var_d - var_d);
        uint256 var_d = var_d + 0x64;
        require(var_d.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_i < 0x20);
        return var_c;
        require(!success == 0);
    }
    
    /// @custom:selector    0xdb006a75
    /// @custom:signature   redeem(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function redeem(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x0933c1ed
    /// @custom:signature   Unresolved_0933c1ed(uint256 arg0) public returns (bytes memory)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function Unresolved_0933c1ed(uint256 arg0) public returns (bytes memory) {
        require(!arg0 > 0x0100000000);
        uint256 var_a = var_a + (0x20 + (((0x1f + (arg0)) / 0x20) * 0x20));
        var_c = msg.data[36:36];
        require(var_a.length < 0x20);
        require((var_a.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20);
        (bool success, bytes memory ret0) = address(implementation).Unresolved_(var_h); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!0 < var_i);
        require(!bytes1(var_i));
        return abi.encodePacked(0x20, var_i, (~((0x0100 ** (0x20 - (bytes1(var_i)))) - 0x01)) & (var_k));
        return abi.encodePacked(0x20, var_i);
        var_a = var_a + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        require(!bytes1(var_a.length));
        return abi.encodePacked(0x20, var_a.length);
        return abi.encodePacked(0x20, var_a.length, (~((0x0100 ** (0x20 - (bytes1(var_a.length)))) - 0x01)) & (var_n));
    }
    
    /// @custom:selector    0xae9d70b0
    /// @custom:signature   supplyRatePerBlock() public returns (uint256)
    function supplyRatePerBlock() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(!bytes1(var_b.length));
        var_b = var_b.length + (0x20 + (0x20 + (0x24 + var_b)));
        require(var_b.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        require(!var_a > 0x0100000000);
        require(!((0x80 + var_a) + 0x20) > (0x80 + var_j));
        require(!((0x80 + var_j) < (var_k + ((0x80 + var_a) + 0x20))) | (var_k > 0x0100000000));
        require(!0 < (var_k));
        require(!bytes1(var_k));
        var_b = (var_k) + (0x20 + var_b);
        require(!var_b.length < 0x20);
        return ;
        require(!success == 0);
    }
    
    /// @custom:selector    0xdd62ed3e
    /// @custom:signature   Unresolved_dd62ed3e(address arg0, address arg1) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_dd62ed3e(address arg0, address arg1) public returns (uint256) {
        uint256 var_c = 0x44 + (var_d - var_d);
        uint256 var_d = var_d + 0x64;
        require(!bytes1(var_d.length));
        var_d = var_d.length + (0x20 + (0x20 + (0x24 + var_d)));
        require(var_d.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_l < 0x20);
        require(!var_c > 0x0100000000);
        require(!((0x80 + var_c) + 0x20) > (0x80 + var_l));
        require(!((0x80 + var_l) < (var_m + ((0x80 + var_c) + 0x20))) | (var_m > 0x0100000000));
        require(!0 < (var_m));
        require(!bytes1(var_m));
        var_d = 0x20 + (var_m + (0x20 + var_d) - (bytes1(var_m)));
        require(!var_d.length < 0x20);
        return var_q;
        require(!success == 0);
    }
    
    /// @custom:selector    0xf8f9da28
    /// @custom:signature   borrowRatePerBlock() public returns (uint256)
    function borrowRatePerBlock() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(!bytes1(var_b.length));
        var_b = var_b.length + (0x20 + (0x20 + (0x24 + var_b)));
        require(var_b.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        require(!var_a > 0x0100000000);
        require(!((0x80 + var_a) + 0x20) > (0x80 + var_j));
        require(!((0x80 + var_j) < (var_k + ((0x80 + var_a) + 0x20))) | (var_k > 0x0100000000));
        require(!0 < (var_k));
        require(!bytes1(var_k));
        var_b = (var_k) + (0x20 + var_b);
        require(!var_b.length < 0x20);
        return ;
        require(!success == 0);
    }
    
    /// @custom:selector    0x4487152f
    /// @custom:signature   Unresolved_4487152f(uint256 arg0) public returns (bytes memory)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function Unresolved_4487152f(uint256 arg0) public returns (bytes memory) {
        require(!arg0 > 0x0100000000);
        uint256 var_a = var_a + (0x20 + (((0x1f + (arg0)) / 0x20) * 0x20));
        uint256 var_b = (arg0);
        require(!bytes1(var_a.length));
        var_a = 0x20 + ((var_a.length + (0x20 + (0x20 + (0x24 + var_a)))) - (bytes1(var_a.length)));
        require(var_a.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_l < 0x20);
        require(!var_b > 0x0100000000);
        require(!((0x80 + var_b) + 0x20) > (0x80 + var_l));
        require(!((0x80 + var_l) < (var_m + ((0x80 + var_b) + 0x20))) | (var_m > 0x0100000000));
        require(!0 < (var_m));
        require(!bytes1(var_m));
        var_a = 0x20 + (var_m + (0x20 + var_a) - (bytes1(var_m)));
        require(!bytes1(var_a.length));
        return abi.encodePacked(0x20, var_a.length, (~((0x0100 ** (0x20 - (bytes1(var_a.length)))) - 0x01)) & (var_s));
        return abi.encodePacked(0x20, var_a.length);
        require(!success == 0);
    }
    
    /// @custom:selector    0xa0712d68
    /// @custom:signature   mint(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function mint(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0xf5e3c462
    /// @custom:signature   liquidateBorrow(address arg0, uint256 arg1, address arg2) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["address", "uint160", "bytes20", "int160"]
    function liquidateBorrow(address arg0, uint256 arg1, address arg2) public returns (uint256) {
        uint256 var_d = 0x64 + (var_e - var_e);
        uint256 var_e = var_e + 0x84;
        require(var_e.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_d;
        require(!success == 0);
    }
    
    /// @custom:selector    0xbd6d894d
    /// @custom:signature   exchangeRateCurrent() public returns (uint256)
    function exchangeRateCurrent() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(var_b.length < 0x20);
        require((var_b.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20);
        (bool success, bytes memory ret0) = address(implementation).exchangeRateCurrent(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_a;
        require(!success == 0);
    }
    
    /// @custom:selector    0xc37f68e2
    /// @custom:signature   getAccountSnapshot(address arg0) public returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getAccountSnapshot(address arg0) public returns (bytes memory) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(!bytes1(var_c.length));
        var_c = var_c.length + (0x20 + (0x20 + (0x24 + var_c)));
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_k < 0x20);
        require(!var_b > 0x0100000000);
        require(!((0x80 + var_b) + 0x20) > (0x80 + var_k));
        require(!((0x80 + var_k) < (var_l + ((0x80 + var_b) + 0x20))) | (var_l > 0x0100000000));
        require(!0 < (var_l));
        require(!bytes1(var_l));
        var_c = 0x20 + (var_l + (0x20 + var_c) - (bytes1(var_l)));
        require(!var_c.length < 0x80);
        return abi.encodePacked(var_p, var_r, var_t, var_v);
        require(!success == 0);
    }
    
    /// @custom:selector    0xb2a02ff1
    /// @custom:signature   seize(address arg0, address arg1, uint256 arg2) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function seize(address arg0, address arg1, uint256 arg2) public returns (uint256) {
        uint256 var_d = 0x64 + (var_e - var_e);
        uint256 var_e = var_e + 0x84;
        require(var_e.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_d;
        require(!success == 0);
    }
    
    /// @custom:selector    0x95d89b41
    /// @custom:signature   Unresolved_95d89b41() public view returns (string memory)
    function Unresolved_95d89b41() public view returns (string memory) {
        bytes1 var_a = 0x20 + (var_a + (0x20 * (((store_g & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!bytes1(store_g)))) / 0x02) + 0x1f) / 0x20)));
        if (!(store_g & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!store_g)))) / 0x02) {
            if (0x1f < (store_g & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!store_g))) / 0x02)) {
                var_c = 0x02;
                if ((var_a + 0x20) + (store_g & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!store_g))) / 0x02) > (0x20 + (var_a + 0x20))) {
                    if (!var_a.length) {
                        return abi.encodePacked(0x20, var_a.length, (~((0x0100 ** (0x20 - (bytes1(var_a.length)))) - 0x01)) & (var_g));
                        return abi.encodePacked(0x20, var_a.length);
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0xc5ebeaec
    /// @custom:signature   borrow(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function borrow(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x0e752702
    /// @custom:signature   repayBorrow(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function repayBorrow(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0xf2b3abbd
    /// @custom:signature   _setInterestRateModel(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function _setInterestRateModel(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0xa6afed95
    /// @custom:signature   accrueInterest() public returns (uint256)
    function accrueInterest() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(var_b.length < 0x20);
        require((var_b.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20);
        (bool success, bytes memory ret0) = address(implementation).accrueInterest(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_a;
        require(!success == 0);
    }
    
    /// @custom:selector    0x70a08231
    /// @custom:signature   Unresolved_70a08231(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_70a08231(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(!bytes1(var_c.length));
        var_c = var_c.length + (0x20 + (0x20 + (0x24 + var_c)));
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_k < 0x20);
        require(!var_b > 0x0100000000);
        require(!((0x80 + var_b) + 0x20) > (0x80 + var_k));
        require(!((0x80 + var_k) < (var_l + ((0x80 + var_b) + 0x20))) | (var_l > 0x0100000000));
        require(!0 < (var_l));
        require(!bytes1(var_l));
        var_c = 0x20 + (var_l + (0x20 + var_c) - (bytes1(var_l)));
        require(!var_c.length < 0x20);
        return var_p;
        require(!success == 0);
    }
    
    /// @custom:selector    0x555bcc40
    /// @custom:signature   Unresolved_555bcc40(address arg0, uint256 arg1, uint256 arg2) public
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function Unresolved_555bcc40(address arg0, uint256 arg1, uint256 arg2) public {
        require(!arg2 > 0x0100000000);
        uint256 var_a = var_a + (0x20 + (((0x1f + (arg2)) / 0x20) * 0x20));
        var_c = msg.data[36:36];
        require(msg.sender == (address(admin / 0x0100)), "CErc20Delegator::_setImplementation: Caller must be admin");
        require(!arg1);
        var_a = var_a + 0x24;
        require(var_a.length < 0x20);
        require((var_a.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20);
        (bool success, bytes memory ret0) = address(implementation)._resignImplementation(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        implementation = (uint96(implementation)) | (address(arg0));
        var_m = 0x20;
        require(!bytes1(var_a.length));
        var_a = var_m + ((var_a.length + (var_a + 0x64)) - (bytes1(var_a.length)));
        require(var_a.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        emit NewImplementation(address(implementation), address(implementation));
        require(!success == 0);
        emit NewImplementation(address(implementation), address(implementation));
    }
    
    /// @custom:selector    0x4576b5db
    /// @custom:signature   _setComptroller(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function _setComptroller(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x23b872dd
    /// @custom:signature   Unresolved_23b872dd(address arg0, address arg1, uint256 arg2) public returns (bool)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg2 ["uint256", "bytes32", "int256"]
    function Unresolved_23b872dd(address arg0, address arg1, uint256 arg2) public returns (bool) {
        uint256 var_d = 0x64 + (var_e - var_e);
        uint256 var_e = var_e + 0x84;
        require(var_e.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_d;
        require(!success == 0);
    }
    
    /// @custom:selector    0x73acee98
    /// @custom:signature   totalBorrowsCurrent() public returns (uint256)
    function totalBorrowsCurrent() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(var_b.length < 0x20);
        require((var_b.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20);
        (bool success, bytes memory ret0) = address(implementation).totalBorrowsCurrent(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        return var_a;
        require(!success == 0);
    }
    
    /// @custom:selector    0xb71d1a0c
    /// @custom:signature   _setPendingAdmin(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function _setPendingAdmin(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x182df0f5
    /// @custom:signature   exchangeRateStored() public returns (uint256)
    function exchangeRateStored() public returns (uint256) {
        var_a = 0x04;
        uint256 var_b = var_b + 0x24;
        require(!bytes1(var_b.length));
        var_b = var_b.length + (0x20 + (0x20 + (0x24 + var_b)));
        require(var_b.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_j < 0x20);
        require(!var_a > 0x0100000000);
        require(!((0x80 + var_a) + 0x20) > (0x80 + var_j));
        require(!((0x80 + var_j) < (var_k + ((0x80 + var_a) + 0x20))) | (var_k > 0x0100000000));
        require(!0 < (var_k));
        require(!bytes1(var_k));
        var_b = (var_k) + (0x20 + var_b);
        require(!var_b.length < 0x20);
        return ;
        require(!success == 0);
    }
    
    /// @custom:selector    0x852a12e3
    /// @custom:signature   redeemUnderlying(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function redeemUnderlying(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
    
    /// @custom:selector    0x95dd9193
    /// @custom:signature   borrowBalanceStored(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function borrowBalanceStored(address arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(!bytes1(var_c.length));
        var_c = var_c.length + (0x20 + (0x20 + (0x24 + var_c)));
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(this).adfepixw(); // staticcall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_k < 0x20);
        require(!var_b > 0x0100000000);
        require(!((0x80 + var_b) + 0x20) > (0x80 + var_k));
        require(!((0x80 + var_k) < (var_l + ((0x80 + var_b) + 0x20))) | (var_l > 0x0100000000));
        require(!0 < (var_l));
        require(!bytes1(var_l));
        var_c = 0x20 + (var_l + (0x20 + var_c) - (bytes1(var_l)));
        require(!var_c.length < 0x20);
        return var_p;
        require(!success == 0);
    }
    
    /// @custom:selector    0xfca7820b
    /// @custom:signature   _setReserveFactor(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function _setReserveFactor(uint256 arg0) public returns (uint256) {
        uint256 var_b = 0x24 + (var_c - var_c);
        uint256 var_c = var_c + 0x44;
        require(var_c.length < 0x20);
        (bool success, bytes memory ret0) = address(implementation).adfepixw(); // delegatecall
        require(ret0.length == 0);
        require(!success == 0);
        require(!var_h < 0x20);
        return var_b;
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(!success == 0);
        if ((var_c.length + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < 0x20) {
        }
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_06fdde03",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_0933c1ed",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_095ea7b3",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_18160ddd",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_23b872dd",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_4487152f",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_555bcc40",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_70a08231",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_95d89b41",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_dd62ed3e",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_acceptAdmin",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_addReserves",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_reduceReserves",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_setComptroller",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_setInterestRateModel",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_setPendingAdmin",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "_setReserveFactor",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "accrualBlockNumber",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "accrueInterest",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "admin",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "balanceOfUnderlying",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "borrow",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "borrowBalanceCurrent",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "borrowBalanceStored",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "borrowIndex",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "borrowRatePerBlock",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "comptroller",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "decimals",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "exchangeRateCurrent",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "exchangeRateStored",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getAccountSnapshot",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getCash",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "implementation",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "interestRateModel",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isCToken",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "liquidateBorrow",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "mint",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "pendingAdmin",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "redeem",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "redeemUnderlying",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "repayBorrow",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "repayBorrowBehalf",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "reserveFactorMantissa",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "seize",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "supplyRatePerBlock",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "totalBorrows",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalBorrowsCurrent",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "totalReserves",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "underlying",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "NewImplementation",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  }
]

UNKNOWN SELECTORS (17)

0x317afabbunknown
0x05eff7efunknown
0x0ae9d70bunknown
0x073a9381unknown
0x61bfb471unknown
0x04c11f03unknown
0x1d8e90d1unknown
0x74e38a79unknown
0x7af1e231unknown
0x140e25adunknown
0x6eb1769funknown
0x6b3a2063unknown
0x03e94101unknown
0x1f1f3b45unknown
0x0e759dd3unknown
0x2dc74683unknown
0x0adccee5unknown
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)