0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5

deployer: unknown relevance score: 0 status: partially_identified bytecode: 19629 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);
    
    mapping(bytes32 => bytes32) storage_map_w;
    uint256 public reserveFactorMantissa;
    mapping(bytes32 => bytes32) storage_map_q;
    mapping(bytes32 => bytes32) storage_map_s;
    uint256 public borrowIndex;
    mapping(bytes32 => bytes32) storage_map_af;
    mapping(bytes32 => bytes32) storage_map_ac;
    uint256 public unresolved_18160ddd;
    address public pendingAdmin;
    mapping(bytes32 => bytes32) storage_map_b;
    bytes32 store_e;
    address public comptroller;
    uint256 public decimals;
    uint256 public totalBorrows;
    mapping(bytes32 => bytes32) storage_map_x;
    uint256 public totalReserves;
    uint256 public exchangeRateCurrent;
    address public admin;
    mapping(bytes32 => bytes32) storage_map_o;
    mapping(bytes32 => bytes32) storage_map_v;
    mapping(bytes32 => bytes32) storage_map_ah;
    uint256 public accrualBlockNumber;
    bytes32 store_z;
    mapping(bytes32 => bytes32) storage_map_ab;
    mapping(bytes32 => bytes32) storage_map_g;
    mapping(bytes32 => bytes32) storage_map_ad;
    mapping(bytes32 => bytes32) storage_map_t;
    address public interestRateModel;
    mapping(bytes32 => bytes32) storage_map_aa;
    string public unresolved_06fdde03;
    mapping(bytes32 => bytes32) storage_map_m;
    mapping(bytes32 => bytes32) storage_map_ag;
    mapping(bytes32 => bytes32) storage_map_u;
    mapping(bytes32 => bytes32) storage_map_l;
    
    event NewPendingAdmin(address, address);
    event Transfer(address, address, uint256);
    event NewAdmin(address, address);
    event NewMarketInterestRateModel(address, address);
    event Event_8c5be1e5();
    event LiquidateBorrow(address, address, uint256, address, uint256);
    event Failure(uint256, uint256, uint256);
    event NewComptroller(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) {
        var_a = address(arg0);
        storage_map_b[var_a] = arg1;
        emit Event_8c5be1e5(msg.sender, address(arg0), arg1);
        return 0x01;
    }
    
    /// @custom:selector    0xe9c714f2
    /// @custom:signature   _acceptAdmin() public returns (uint256)
    function _acceptAdmin() public returns (uint256) {
        if (!msg.sender == (address(pendingAdmin))) {
            if (msg.sender == (address(pendingAdmin))) {
                if (!0x01 > 0x10) {
                    if (!0 > 0x4d) {
                        emit Failure(0x01, 0, 0);
                        if (!0x01 > 0x10) {
                            return 0x01;
                            admin = (address(pendingAdmin)) | (uint96(admin));
                            pendingAdmin = uint96(pendingAdmin);
                            emit NewAdmin(address(admin), address(pendingAdmin | (uint96(admin))));
                            emit NewPendingAdmin(address(pendingAdmin), address(pendingAdmin));
                            return 0;
                            if (msg.sender) {
                                admin = (address(pendingAdmin)) | (uint96(admin));
                                pendingAdmin = uint96(pendingAdmin);
                                emit NewAdmin(address(admin), address(pendingAdmin | (uint96(admin))));
                                emit NewPendingAdmin(address(pendingAdmin), address(pendingAdmin));
                                return 0;
                            }
                        }
                    }
                }
            }
        }
    }
    
    /// @custom:selector    0x3b1d21a2
    /// @custom:signature   getCash() public view returns (uint256)
    function getCash() public view returns (uint256) {
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        return 0;
    }
    
    /// @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) {
        store_e = 0x01 + store_e;
        address var_b = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: 0 ether }Unresolved_bdcdc258(var_b); // call
        require(!ret0.length < 0x20);
        require(!var_f.length);
        require(!(address(msg.sender)) == (address(arg0)));
        require(!(address(msg.sender)) == (address(msg.sender)));
        var_g = address(msg.sender);
        require(arg1 > storage_map_g[var_g]);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        var_g = address(msg.sender);
        require(arg1 > storage_map_g[var_g]);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        var_g = address(arg0);
        require((arg1 + storage_map_g[var_g]) < storage_map_g[var_g]);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        var_g = address(msg.sender);
        storage_map_g[var_g] = 0;
        var_g = address(arg0);
        storage_map_g[var_g] = 0;
        require(storage_map_g[var_g] == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        var_g = var_g;
        emit Transfer(address(msg.sender), address(arg0), arg1);
        var_b = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: storage_map_g[var_g] ether }Unresolved_6a56947e(var_b); // call
        require((0x01 + store_e) == store_e, "re-entered");
        return !(!0 == 0);
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x4d > 0x4d), "re-entered");
        emit Failure(0x09, 0x4d, 0);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return !(!0x09 == 0);
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x03 > 0x10), "re-entered");
        require(!(0x4a > 0x4d), "re-entered");
        emit Failure(0x03, 0x4a, var_f.length);
        require(!(0x03 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return !(!0x03 == 0);
    }
    
    /// @custom:selector    0x601a0bf1
    /// @custom:signature   _reduceReserves(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function _reduceReserves(uint256 arg0) public returns (uint256) {
        store_e = 0x01 + store_e;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!(var_r), "re-entered");
        require(!(0x05 > 0x10), "re-entered");
        require(!(0x02 > 0x4d), "re-entered");
        emit Failure(0x05, 0x02, var_q);
        require(!(0x05 > 0x10), "re-entered");
        require(!0x05, "re-entered");
        require(msg.sender == (address(admin)), "re-entered");
        require(!(0x01 > 0x10), "re-entered");
        require(!(0x31 > 0x4d), "re-entered");
        emit Failure(0x01, 0x31, 0);
        require(!(0x01 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x01;
        require(accrualBlockNumber == block.number, "reduce reserves unexpected underflow");
        require(msg.value > address(this).balance, "reduce reserves unexpected underflow");
        require(!(0x03 > 0x03), "reduce reserves unexpected underflow");
        require(0x03 == 0, "reduce reserves unexpected underflow");
        require(!(0 < arg0), "reduce reserves unexpected underflow");
        require(!(arg0 > totalReserves), "reduce reserves unexpected underflow");
        require(!((totalReserves - arg0) > totalReserves), "reduce reserves unexpected underflow");
        totalReserves = totalReserves - arg0;
        (bool success, bytes memory ret0) = address(admin).transfer(arg0);
        require(!(0 > 0x10), "reduce reserves transfer out failed");
        require(0 == 0, "reduce reserves transfer out failed");
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0x17bfdfbc
    /// @custom:signature   borrowBalanceCurrent(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function borrowBalanceCurrent(address arg0) public returns (uint256) {
        store_e = 0x01 + store_e;
        uint256 var_f = 0;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!(var_r), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0x05 > 0x10), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0x02 > 0x4d), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        emit Failure(0x05, 0x02, var_q);
        require(!(0x05 > 0x10), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0x05 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        address var_u = address(arg0);
        require(storage_map_l[var_u], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_m[var_u], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_m[var_u], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require((borrowIndex * (storage_map_m[var_u])) / (storage_map_m[var_u]) == borrowIndex, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0x02 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0x02 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_o[var_u], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_o[var_u], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0;
        require(!(0 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require((0x01 + store_e) == store_e, "re-entered");
        return var_f / (storage_map_o[var_u]);
    }
    
    /// @custom:selector    0x3af9e669
    /// @custom:signature   balanceOfUnderlying(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function balanceOfUnderlying(address arg0) public returns (uint256) {
        store_e = 0x01 + store_e;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_o = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_o); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_r)), "borrow rate is absurdly high");
        require(!var_s);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_r);
        require(!0x05 > 0x10);
        require(0x05 == 0);
        require(!0 == unresolved_18160ddd);
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        require(!(0 > 0x03), "exchangeRateStored: exchangeRateStoredInternal failed");
        require(0 == 0, "exchangeRateStored: exchangeRateStoredInternal failed");
        require((0x01 + store_e) == store_e, "re-entered");
        var_o = 0x20;
        address var_x = address(arg0);
        require(var_z);
        require(var_z);
        require(storage_map_q[var_x] * (var_z) / (var_z) == storage_map_q[var_x]);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        var_a = var_a + 0x20;
        require(!0 > 0x03);
        require(0 == 0);
        require(!0 > 0x03);
        require(0 == 0);
        return 0;
        require(!0 > 0x03);
        require(0 == 0);
        return var_a.length / 0x0de0b6b3a7640000;
    }
    
    /// @custom:selector    0xdb006a75
    /// @custom:signature   redeem(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function redeem(uint256 arg0) public returns (uint256) {
        store_e = 0x01 + store_e;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!(var_r), "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!(0x05 > 0x10), "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!(0x02 > 0x4d), "one of redeemTokensIn or redeemAmountIn must be zero");
        emit Failure(0x05, 0x02, var_q);
        require(!(0x05 > 0x10), "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!0x05, "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!arg0, "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!0, "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!0 == unresolved_18160ddd);
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        require(!(0 > 0x03), "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(var_q == 0, "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x2b > 0x4d), "re-entered");
        emit Failure(0x09, 0x2b, var_q);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        uint256 var_ac = 0x20;
        return 0x09;
        require(!arg0);
        require(var_ag);
        require(var_ag);
        require((arg0 * (var_ag)) / (var_ag) == arg0);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        var_a = var_a + 0x20;
        require(!0 > 0x03);
        require(0 == 0);
        require(!0 > 0x03);
        require(!0 > 0x03);
        var_s = 0;
        require(!(var_q) > 0x03);
        require(var_q == 0);
        require(!(var_q) > 0x03);
        require(!0x09 > 0x10);
        uint256 var_aj = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_s ether }Unresolved_eabe7d91(var_aj); // call
        require(!(ret0.length < 0x20), "re-entered");
        require(!var_a.length, "re-entered");
        require(accrualBlockNumber == block.number, "re-entered");
        require(!(0x0a > 0x10), "re-entered");
        require(!(0x2c > 0x4d), "re-entered");
        emit Failure(0x0a, 0x2c, 0);
        require(!(0x0a > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x0a;
        require(!(0x03 > 0x10), "re-entered");
        require(!(0x28 > 0x4d), "re-entered");
        emit Failure(0x03, 0x28, var_a.length);
        require(!(0x03 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_aj = 0x20;
        return 0x03;
        if (!0 > 0x03) {
            require(!0 > 0x03);
            require(!0 > 0x03);
            require(0x0de0b6b3a7640000);
            require(!0 > 0x03);
        }
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0xae9d70b0
    /// @custom:signature   supplyRatePerBlock() public view
    function supplyRatePerBlock() public view {
        require(!0 == unresolved_18160ddd);
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        require(!(0 > 0x03), "exchangeRateStored: exchangeRateStoredInternal failed");
        require(0 == 0, "exchangeRateStored: exchangeRateStoredInternal failed");
    }
    
    /// @custom:selector    0xdd62ed3e
    /// @custom:signature   Unresolved_dd62ed3e(address arg0, address arg1) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_dd62ed3e(address arg0, address arg1) public view returns (uint256) {
        var_a = address(arg1);
        return storage_map_b[var_a];
    }
    
    /// @custom:selector    0xf8f9da28
    /// @custom:signature   borrowRatePerBlock() public returns (uint256)
    function borrowRatePerBlock() public returns (uint256) {
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_b = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_b); // staticcall
        require(!(ret0.length < 0x40), "borrowRatePerBlock: interestRateModel.borrowRate failed");
        require(!var_e.length, "borrowRatePerBlock: interestRateModel.borrowRate failed");
        return var_f;
    }
    
    /// @custom:selector    0xc37f68e2
    /// @custom:signature   getAccountSnapshot(address arg0) public view returns (bytes memory)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function getAccountSnapshot(address arg0) public view returns (bytes memory) {
        var_a = address(arg0);
        require(storage_map_b[var_a]);
        require(storage_map_s[var_a]);
        require(storage_map_s[var_a]);
        require((borrowIndex * (storage_map_s[var_a])) / (storage_map_s[var_a]) == borrowIndex);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        require(storage_map_t[var_a]);
        require(!0x01 > 0x03);
        require(0x01 == 0);
        require(!0 > 0x03);
        require(0 == 0);
        return abi.encodePacked(0x09, 0, 0, 0);
        require(!0 == unresolved_18160ddd);
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        require(!0 > 0x03);
        require(0 == 0);
        return abi.encodePacked(0x09, 0, 0, 0);
        return abi.encodePacked(0, storage_map_b[var_a], 0, exchangeRateCurrent);
    }
    
    /// @custom:selector    0xe5974619
    /// @custom:signature   repayBorrowBehalf(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function repayBorrowBehalf(address arg0) public payable {
        store_e = 0x01 + store_e;
        uint256 var_f = 0;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        require(!0x05);
        var_n = address(this);
        address var_o = address(msg.sender);
        address var_p = address(arg0);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_f ether }Unresolved_24008a62(var_n, var_o, var_p); // call
        require(!(ret0.length < 0x20), "re-entered");
        require(!var_a.length, "re-entered");
        require(accrualBlockNumber == block.number, "re-entered");
        address var_z = address(arg0);
        var_z = address(arg0);
        require(storage_map_v[var_z], "re-entered");
        require(storage_map_w[var_z], "re-entered");
        require(storage_map_w[var_z], "re-entered");
        require((borrowIndex * (storage_map_w[var_z])) / (storage_map_w[var_z]) == borrowIndex, "re-entered");
        require(!(0x02 > 0x03), "re-entered");
        require(0x02 == 0, "re-entered");
        require(storage_map_u[var_z], "re-entered");
        require(storage_map_u[var_z], "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(0 == 0, "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(0 > 0x03), "re-entered");
        var_s = 0;
        require(!(var_q > 0x03), "re-entered");
        require(var_q == 0, "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x37 > 0x4d), "re-entered");
        emit Failure(0x09, 0x37, var_q);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_a = 0x40 + var_a;
        require(0x09, "");
        var_a = var_a + (0x20 + (uint248(0x1f + (0x05 + var_a.length))));
        require(!(0x05 + var_a.length), "");
        require(0x02 < var_a.length, "");
        require(0x03 < var_a.length, "");
        require(0x04 < var_a.length, "");
        require(!0x09, "");
        require(!(bytes1(var_a.length)), "");
        require(!(msg.value == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff), "sender mismatch");
        require(address(msg.sender) == msg.sender, "sender mismatch");
        require(msg.value == (var_at), "value mismatch");
        require(!(0 > 0x10), "re-entered");
        require(!(0 > 0x10), "re-entered");
        require(!(var_a.length > 0x10), "re-entered");
        require(var_a.length == 0, "re-entered");
        require(!(var_a.length > 0x10), "re-entered");
        require(!(0x3c > 0x4d), "re-entered");
        emit Failure(var_a.length, 0x3c, 0);
        require(!(var_a.length > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_a = 0x40 + var_a;
        require(var_a.length);
        require(!0 > 0x03);
        require(!0 > 0x03);
        require(!0x05 > 0x10);
    }
    
    /// @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) {
        store_e = 0x01 + store_e;
        address var_b = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: 0 ether }Unresolved_d02f7351(var_b); // call
        require(!ret0.length < 0x20);
        require(!var_g.length);
        require(!(address(arg1)) == (address(arg0)));
        address var_h = address(arg1);
        require(arg2 > storage_map_x[var_h]);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        var_h = address(arg0);
        require((arg2 + storage_map_x[var_h]) < storage_map_x[var_h]);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        var_h = address(arg1);
        storage_map_x[var_h] = 0;
        var_h = address(arg0);
        storage_map_x[var_h] = 0;
        var_h = var_h;
        emit Transfer(address(arg1), address(arg0), arg2);
        var_b = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: storage_map_x[var_h] ether }Unresolved_6d35bf91(var_b); // call
        require((0x01 + store_e) == store_e, "re-entered");
        return 0;
        require(!(0x02 > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x19 > 0x4d), "re-entered");
        emit Failure(0x09, 0x19, 0x02);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x09;
        require(!(0x03 > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x06 > 0x10), "re-entered");
        require(!(0x1c > 0x4d), "re-entered");
        emit Failure(0x06, 0x1c, 0);
        require(!(0x06 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x06;
    }
    
    /// @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_z & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!bytes1(store_z)))) / 0x02) + 0x1f) / 0x20)));
        if (!(store_z & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!store_z)))) / 0x02) {
            if (0x1f < (store_z & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!store_z))) / 0x02)) {
                var_c = 0x02;
                if ((var_a + 0x20) + (store_z & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!store_z))) / 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) {
        store_e = 0x01 + store_e;
        uint256 var_f = 0;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        require(!0x05);
        var_n = address(this);
        address var_o = address(msg.sender);
        uint256 var_p = arg0;
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_f ether }Unresolved_da3d454c(var_n, var_o, var_p); // call
        require(!(ret0.length < 0x20), "re-entered");
        require(!var_a.length, "re-entered");
        require(accrualBlockNumber == block.number, "re-entered");
        require(msg.value > address(this).balance, "re-entered");
        require(!(0x03 > 0x03), "re-entered");
        require(0x03 == 0, "re-entered");
        require(!(0 < arg0), "re-entered");
        require(!(0x0e > 0x10), "re-entered");
        require(!(0x09 > 0x4d), "re-entered");
        emit Failure(0x0e, 0x09, 0);
        require(!(0x0e > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x0e;
        address var_w = address(msg.sender);
        require(storage_map_ab[var_w], "re-entered");
        require(storage_map_ac[var_w], "re-entered");
        require(storage_map_ac[var_w], "re-entered");
        require((borrowIndex * (storage_map_ac[var_w])) / (storage_map_ac[var_w]) == borrowIndex, "re-entered");
        require(!(0x02 > 0x03), "re-entered");
        require(0x02 == 0, "re-entered");
        require(storage_map_ad[var_w], "re-entered");
        require(storage_map_ad[var_w], "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(0 == 0, "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(var_q == 0, "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x07 > 0x4d), "re-entered");
        emit Failure(0x09, 0x07, var_q);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x09;
        require((arg0 + (var_ae)) < (var_ae));
        var_u = 0;
        require(!0x02 > 0x03);
        require(!0x02 > 0x03);
        require(!(var_q) > 0x03);
        require(var_q == 0);
        require(!(var_q) > 0x03);
        require(!0x09 > 0x10);
        require(!0 > 0x03);
        require(!0 > 0x03);
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0xf2b3abbd
    /// @custom:signature   _setInterestRateModel(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function _setInterestRateModel(address arg0) public returns (uint256) {
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        require(!0x05);
        require(msg.sender == (address(admin)));
        require(!0x01 > 0x10);
        require(!0x42 > 0x4d);
        emit Failure(0x01, 0x42, 0);
        require(!0x01 > 0x10);
        return 0x01;
        require(accrualBlockNumber == block.number);
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).isInterestRateModel(); // staticcall
        require(!(ret0.length < 0x20), "marker method returned false");
        require(var_a.length, "marker method returned false");
        interestRateModel = (address(arg0)) | (uint96(interestRateModel));
        emit NewMarketInterestRateModel(address(interestRateModel / 0x01), address(arg0));
        return 0;
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0x70a08231
    /// @custom:signature   Unresolved_70a08231(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function Unresolved_70a08231(address arg0) public view returns (uint256) {
        address var_a = address(arg0);
        return storage_map_b[var_a];
    }
    
    /// @custom:selector    0xa6afed95
    /// @custom:signature   accrueInterest() public returns (uint256)
    function accrueInterest() public returns (uint256) {
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        return 0x05;
    }
    
    /// @custom:selector    0x4e4d9fea
    /// @custom:signature   repayBorrow() public payable
    function repayBorrow() public payable {
        store_e = 0x01 + store_e;
        uint256 var_f = 0;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        require(!0x05);
        var_n = address(this);
        address var_o = address(msg.sender);
        address var_p = address(msg.sender);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_f ether }Unresolved_24008a62(var_n, var_o, var_p); // call
        require(!(ret0.length < 0x20), "re-entered");
        require(!var_a.length, "re-entered");
        require(accrualBlockNumber == block.number, "re-entered");
        address var_z = address(msg.sender);
        var_z = address(msg.sender);
        require(storage_map_v[var_z], "re-entered");
        require(storage_map_w[var_z], "re-entered");
        require(storage_map_w[var_z], "re-entered");
        require((borrowIndex * (storage_map_w[var_z])) / (storage_map_w[var_z]) == borrowIndex, "re-entered");
        require(!(0x02 > 0x03), "re-entered");
        require(0x02 == 0, "re-entered");
        require(storage_map_u[var_z], "re-entered");
        require(storage_map_u[var_z], "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(0 == 0, "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(0 > 0x03), "re-entered");
        var_s = 0;
        require(!(var_q > 0x03), "re-entered");
        require(var_q == 0, "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x37 > 0x4d), "re-entered");
        emit Failure(0x09, 0x37, var_q);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_a = 0x40 + var_a;
        require(0x09, "");
        var_a = var_a + (0x20 + (uint248(0x1f + (0x05 + var_a.length))));
        require(!(0x05 + var_a.length), "");
        require(0x02 < var_a.length, "");
        require(0x03 < var_a.length, "");
        require(0x04 < var_a.length, "");
        require(!0x09, "");
        require(!(bytes1(var_a.length)), "");
        require(!(msg.value == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff), "sender mismatch");
        require(address(msg.sender) == msg.sender, "sender mismatch");
        require(msg.value == (var_at), "value mismatch");
        require(!(0 > 0x10), "re-entered");
        require(!(0 > 0x10), "re-entered");
        require(!(var_a.length > 0x10), "re-entered");
        require(var_a.length == 0, "re-entered");
        require(!(var_a.length > 0x10), "re-entered");
        require(!(0x3c > 0x4d), "re-entered");
        emit Failure(var_a.length, 0x3c, 0);
        require(!(var_a.length > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_a = 0x40 + var_a;
        require(var_a.length);
        require(!0 > 0x03);
        require(!0 > 0x03);
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0x4576b5db
    /// @custom:signature   _setComptroller(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function _setComptroller(address arg0) public returns (uint256) {
        require(msg.sender == (address(admin)));
        require(!0x01 > 0x10);
        require(!0x3f > 0x4d);
        emit Failure(0x01, 0x3f, 0);
        require(!0x01 > 0x10);
        return 0x01;
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).isComptroller(); // staticcall
        require(!(ret0.length < 0x20), "marker method returned false");
        require(var_d.length, "marker method returned false");
        comptroller = (address(arg0)) | (uint96(comptroller));
        emit NewComptroller(address(comptroller), address(arg0));
        return 0;
    }
    
    /// @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) {
        store_e = 0x01 + store_e;
        address var_b = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: 0 ether }Unresolved_bdcdc258(var_b); // call
        require(!ret0.length < 0x20);
        require(!var_f.length);
        require(!(address(arg0)) == (address(arg1)));
        require(!(address(arg0)) == (address(msg.sender)));
        var_g = address(msg.sender);
        require(arg2 > storage_map_g[var_g]);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        var_g = address(arg0);
        require(arg2 > storage_map_g[var_g]);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        var_g = address(arg1);
        require((arg2 + storage_map_g[var_g]) < storage_map_g[var_g]);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        var_g = address(arg0);
        storage_map_g[var_g] = 0;
        var_g = address(arg1);
        storage_map_g[var_g] = 0;
        require(storage_map_g[var_g] == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        var_g = var_g;
        emit Transfer(address(arg0), address(arg1), arg2);
        var_b = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: storage_map_g[var_g] ether }Unresolved_6a56947e(var_b); // call
        require((0x01 + store_e) == store_e, "re-entered");
        return !(!0 == 0);
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x4d > 0x4d), "re-entered");
        emit Failure(0x09, 0x4d, 0);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return !(!0x09 == 0);
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x03 > 0x10), "re-entered");
        require(!(0x4a > 0x4d), "re-entered");
        emit Failure(0x03, 0x4a, var_f.length);
        require(!(0x03 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return !(!0x03 == 0);
    }
    
    /// @custom:selector    0x1249c58b
    /// @custom:signature   mint() public payable
    function mint() public payable {
        store_e = 0x01 + store_e;
        uint256 var_f = 0;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        require(!0x05);
        var_n = address(this);
        address var_o = address(msg.sender);
        uint256 var_p = msg.value;
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_f ether }Unresolved_4ef4c3e1(var_n, var_o, var_p); // call
        require(!(ret0.length < 0x20), "sender mismatch");
        require(!var_a.length, "sender mismatch");
        require(accrualBlockNumber == block.number, "sender mismatch");
        var_a = var_a + 0xc0;
        require(address(msg.sender) == msg.sender, "sender mismatch");
        require(msg.value == msg.value, "value mismatch");
        require(!(0 > 0x10), "re-entered");
        require(!(0 > 0x10), "re-entered");
        require(!(var_a.length > 0x10), "re-entered");
        require(var_a.length == 0, "re-entered");
        require(!(var_a.length > 0x10), "re-entered");
        require(!(0x26 > 0x4d), "re-entered");
        emit Failure(var_a.length, 0x26, 0);
        require(!(var_a.length > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_y = 0x20;
        var_a = 0x40 + var_a;
        require(var_a.length, "");
        var_a = var_a + (0x20 + (uint248(0x1f + (0x05 + var_a.length))));
        require(!(0x05 + var_a.length), "");
        require(0x02 < var_a.length, "");
        require(0x03 < var_a.length, "");
        require(0x04 < var_a.length, "");
        require(!var_a.length, "");
        require(!(bytes1(var_a.length)), "");
        require(!(0 == unresolved_18160ddd), "re-entered");
        require(msg.value > address(this).balance, "re-entered");
        require(!(0x03 > 0x03), "re-entered");
        require(0x03 == 0, "re-entered");
        require((totalBorrows + 0) < 0, "re-entered");
        require(!(0x02 > 0x03), "re-entered");
        require(0x02 == 0, "re-entered");
        require(totalReserves > 0, "re-entered");
        require(!(0x03 > 0x03), "re-entered");
        require(0x03 == 0, "re-entered");
        require(0, "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(0 == 0, "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(0 == 0, "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(var_q == 0, "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x21 > 0x4d), "re-entered");
        emit Failure(0x09, 0x21, var_q);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_ah = 0x20;
        if (0x09) {
            if (0x0de0b6b3a7640000) {
                if (!0 > 0x03) {
                    if (0 == 0) {
                        var_a = var_a + 0x20;
                        if (!0 > 0x03) {
                            if (0 == 0) {
                                require(0x09);
                                require(0x0de0b6b3a7640000);
                                require(!0 > 0x03);
                                require(!0 > 0x03);
                                require(!0 > 0x03);
                                require(!0 > 0x03);
                                require(!(var_q) > 0x03);
                                require(var_q == 0);
                                require(!(var_q) > 0x03);
                                require(!0x09 > 0x10);
                                require(!0 > 0x03);
                                var_a = var_a + 0x20;
                                require(!0 > 0x03);
                                require(0);
                            }
                        }
                    }
                }
                require(!0 > 0x03);
                require(!0 > 0x03);
            }
            require(0x0de0b6b3a7640000);
            require(!0 > 0x03);
            require(!0 > 0x03);
            require(unresolved_18160ddd);
            require(!0x01 > 0x03);
        }
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0xb71d1a0c
    /// @custom:signature   _setPendingAdmin(address arg0) public returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function _setPendingAdmin(address arg0) public returns (uint256) {
        require(msg.sender == (address(admin)));
        require(!0x01 > 0x10);
        require(!0x45 > 0x4d);
        emit Failure(0x01, 0x45, 0);
        require(!0x01 > 0x10);
        return 0x01;
        pendingAdmin = (address(arg0)) | (uint96(pendingAdmin));
        emit NewPendingAdmin(address(pendingAdmin), address(arg0));
        return 0;
    }
    
    /// @custom:selector    0x852a12e3
    /// @custom:signature   redeemUnderlying(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function redeemUnderlying(uint256 arg0) public returns (uint256) {
        store_e = 0x01 + store_e;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!(var_r), "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!(0x05 > 0x10), "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!(0x02 > 0x4d), "one of redeemTokensIn or redeemAmountIn must be zero");
        emit Failure(0x05, 0x02, var_q);
        require(!(0x05 > 0x10), "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!0x05, "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!0, "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!arg0, "one of redeemTokensIn or redeemAmountIn must be zero");
        require(!0 == unresolved_18160ddd);
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        require(!(0 > 0x03), "re-entered");
        require(!(0 > 0x03), "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(var_q == 0, "re-entered");
        require(!(var_q > 0x03), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x2b > 0x4d), "re-entered");
        emit Failure(0x09, 0x2b, var_q);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        uint256 var_ac = 0x20;
        return 0x09;
        require(!0);
        require(var_ag);
        require(!0 > 0x03);
        require(0 == 0);
        var_a = var_a + 0x20;
        require(!0 > 0x03);
        require(0 == 0);
        require(!0 > 0x03);
        require(!0 > 0x03);
        var_s = 0;
        require(!(var_q) > 0x03);
        require(var_q == 0);
        require(!(var_q) > 0x03);
        require(!0x09 > 0x10);
        uint256 var_aj = address(this);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_s ether }Unresolved_eabe7d91(var_aj); // call
        require(!(ret0.length < 0x20), "re-entered");
        require(!var_a.length, "re-entered");
        require(accrualBlockNumber == block.number, "re-entered");
        require(!(0x0a > 0x10), "re-entered");
        require(!(0x2c > 0x4d), "re-entered");
        emit Failure(0x0a, 0x2c, 0);
        require(!(0x0a > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x0a;
        require(!(0x03 > 0x10), "re-entered");
        require(!(0x28 > 0x4d), "re-entered");
        emit Failure(0x03, 0x28, var_a.length);
        require(!(0x03 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_aj = 0x20;
        return 0x03;
        if (!0 > 0x03) {
            require(!0 > 0x03);
            require(!0 > 0x03);
            require(0x0de0b6b3a7640000);
            require(!0 > 0x03);
            var_a = var_a + 0x20;
            require(0 == 0);
            require(!0 > 0x03);
            require(0 == 0);
            require(!0 > 0x03);
            require(!0 > 0x03);
            require(!(var_q) > 0x03);
            require(var_q == 0);
            require(!(var_q) > 0x03);
            require(!0 > 0x03);
            require(!0 > 0x03);
            require(0x0de0b6b3a7640000);
        }
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0x95dd9193
    /// @custom:signature   borrowBalanceStored(address arg0) public view returns (uint256)
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function borrowBalanceStored(address arg0) public view returns (uint256) {
        address var_a = address(arg0);
        require(storage_map_b[var_a], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_s[var_a], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_s[var_a], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require((borrowIndex * (storage_map_s[var_a])) / (storage_map_s[var_a]) == borrowIndex, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0x02 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0x02 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_t[var_a], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(storage_map_t[var_a], "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(!(0 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        return 0;
        require(!(0 > 0x03), "borrowBalanceStored: borrowBalanceStoredInternal failed");
        require(0 == 0, "borrowBalanceStored: borrowBalanceStoredInternal failed");
        return 0 / (storage_map_t[var_a]);
    }
    
    /// @custom:selector    0xfca7820b
    /// @custom:signature   _setReserveFactor(uint256 arg0) public returns (uint256)
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    function _setReserveFactor(uint256 arg0) public returns (uint256) {
        store_e = 0x01 + store_e;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!(var_r), "re-entered");
        require(!(0x05 > 0x10), "re-entered");
        require(!(0x02 > 0x4d), "re-entered");
        emit Failure(0x05, 0x02, var_q);
        require(!(0x05 > 0x10), "re-entered");
        require(!0x05, "re-entered");
        require(msg.sender == (address(admin)), "re-entered");
        require(!(0x01 > 0x10), "re-entered");
        require(!(0x47 > 0x4d), "re-entered");
        emit Failure(0x01, 0x47, 0);
        require(!(0x01 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        return 0x01;
        if (accrualBlockNumber == block.number) {
            require(accrualBlockNumber == block.number);
        }
        require(!0x05 > 0x10);
    }
    
    /// @custom:selector    0xaae40a2a
    /// @custom:signature   liquidateBorrow(address arg0, address arg1) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    function liquidateBorrow(address arg0, address arg1) public payable {
        store_e = 0x01 + store_e;
        uint256 var_f = 0;
        var_a = 0x20 + var_a;
        require(msg.value > address(this).balance);
        require(!0x03 > 0x03);
        require(0x03 == 0);
        uint256 var_n = 0;
        require(address(interestRateModel).code.length);
        (bool success, bytes memory ret0) = address(interestRateModel).Unresolved_15f24053(var_n); // staticcall
        require(!(ret0.length < 0x40), "borrow rate is absurdly high");
        require(!(0x01c6bf52634000 < (var_q)), "borrow rate is absurdly high");
        require(!var_r);
        require(!0x05 > 0x10);
        require(!0x02 > 0x4d);
        emit Failure(0x05, 0x02, var_q);
        require(!0x05 > 0x10);
        require(!0x05);
        require(address(arg1).code.length);
        (bool success, bytes memory ret0) = address(arg1).{ value: var_f ether }accrueInterest(); // call
        require(!ret0.length < 0x20);
        require(!var_a.length);
        var_n = address(this);
        address var_o = address(arg1);
        address var_p = address(msg.sender);
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_f ether }Unresolved_5fc7e71e(var_n, var_o, var_p); // call
        require(!ret0.length < 0x20);
        require(!var_a.length);
        require(accrualBlockNumber == block.number);
        require(address(arg1).code.length);
        (bool success, bytes memory ret0) = address(arg1).accrualBlockNumber(); // staticcall
        require(!(ret0.length < 0x20), "re-entered");
        require(var_a.length == block.number, "re-entered");
        require(!(address(arg0) == (address(msg.sender))), "re-entered");
        require(msg.value, "re-entered");
        require(!(msg.value == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff), "re-entered");
        require(!(0x07 > 0x10), "re-entered");
        require(!(0x14 > 0x4d), "re-entered");
        emit Failure(0x07, 0x14, 0);
        require(!(0x07 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_a = 0x40 + var_a;
        require(0x07, "");
        var_a = var_a + (0x20 + (uint248(0x1f + (0x05 + var_a.length))));
        require(!(0x05 + var_a.length), "");
        require(0x02 < var_a.length, "");
        require(0x03 < var_a.length, "");
        require(0x04 < var_a.length, "");
        require(!0x07, "");
        require(!(bytes1(var_a.length)), "");
        var_n = address(this);
        var_o = address(arg1);
        var_p = msg.value;
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).liquidateCalculateSeizeTokens(var_n, var_o, var_p); // staticcall
        require(!ret0.length < 0x40);
        require(!var_a.length);
        var_n = address(arg0);
        require(address(arg1).code.length);
        (bool success, bytes memory ret0) = address(arg1).Unresolved_70a08231(var_n, var_o); // staticcall
        require(!(ret0.length < 0x20), "re-entered");
        require(!(var_r > var_a.length), "re-entered");
        require(!(0x0d > 0x10), "re-entered");
        require(!(0x1d > 0x4d), "re-entered");
        var_t = 0;
        emit Failure(0x0d, 0x1d, 0);
        require(!(0x0d > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        var_n = address(this);
        var_o = address(msg.sender);
        var_p = address(arg0);
        var_u = msg.value;
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_t ether }repayBorrowAllowed(var_n, var_o, var_p, var_u); // call
        require(!ret0.length < 0x20);
        require(!var_a.length);
        require(accrualBlockNumber == block.number);
        var_a = var_a + 0xe0;
        uint256 var_ah = address(arg0);
        var_ah = address(arg0);
        require(storage_map_ag[var_ah]);
        require(storage_map_ah[var_ah]);
        require(storage_map_ah[var_ah]);
        require((borrowIndex * (storage_map_ah[var_ah])) / (storage_map_ah[var_ah]) == borrowIndex);
        require(!0x02 > 0x03);
        require(0x02 == 0);
        require(storage_map_af[var_ah]);
        require(storage_map_af[var_ah]);
        require(!0 > 0x03);
        require(0 == 0);
        require(!0 > 0x03);
        require(!0 > 0x03);
        var_s = 0;
        require(!(var_q) > 0x03);
        require(var_q == 0);
        require(!(var_q) > 0x03);
        require(!0x09 > 0x10);
        require(!0x37 > 0x4d);
        emit Failure(0x09, 0x37, var_q);
        require(!0x09 > 0x10);
        require(!0x09);
        uint256 var_am = address(msg.sender);
        uint256 var_an = address(arg0);
        uint256 var_ao = var_r;
        require(address(arg1).code.length);
        (bool success, bytes memory ret0) = address(arg1).{ value: var_s ether }Unresolved_b2a02ff1(var_am, var_an, var_ao); // call
        require(!ret0.length < 0x20);
        require(!var_a.length);
        emit LiquidateBorrow(address(msg.sender), address(arg0), msg.value, address(arg1), var_r);
        var_am = address(this);
        var_an = address(arg1);
        var_ao = address(msg.sender);
        uint256 var_ar = address(arg0);
        uint256 var_as = msg.value;
        require(address(comptroller).code.length);
        (bool success, bytes memory ret0) = address(comptroller).{ value: var_s ether }Unresolved_47ef3b3b(var_am, var_an, var_ao, var_ar, var_as); // call
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x09 > 0x10), "re-entered");
        require(!(0x18 > 0x4d), "re-entered");
        emit Failure(0x09, 0x18, 0);
        require(!(0x09 > 0x10), "re-entered");
        require((0x01 + store_e) == store_e, "re-entered");
        require(!(msg.value == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff), "sender mismatch");
        require(address(msg.sender) == msg.sender, "sender mismatch");
        require(msg.value == (var_av), "value mismatch");
        require(!0 > 0x10);
        require(!0 > 0x10);
        require(!var_a.length > 0x10);
        require(var_a.length == 0);
        require(!var_a.length > 0x10);
        require(!0x3c > 0x4d);
        var_al = 0;
        emit Failure(var_a.length, 0x3c, 0);
        require(!var_a.length > 0x10);
        require(!var_a.length);
        var_am = address(msg.sender);
        var_an = address(arg0);
        var_ao = var_r;
        require(address(arg1).code.length);
        (bool success, bytes memory ret0) = address(arg1).{ value: var_s ether }seize(var_am, var_an, var_ao); // call
        require(!ret0.length < 0x20);
        require(var_av > (var_aw));
        require(!0x03 > 0x03);
        require(!0x03 > 0x03);
        require(!(var_q) > 0x03);
        require(var_q == 0);
        require(!(var_q) > 0x03);
        require(!0x09 > 0x10);
        require(!0 > 0x03);
        require(!0 > 0x03);
        require(!var_a.length > 0x10);
        require(!0x05 > 0x10);
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_06fdde03",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_095ea7b3",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "Unresolved_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_70a08231",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_95d89b41",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "Unresolved_dd62ed3e",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "_acceptAdmin",
    "inputs": [],
    "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": "view"
  },
  {
    "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": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "exchangeRateCurrent",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "exchangeRateStored",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getAccountSnapshot",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getCash",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "initialExchangeRateMantissa",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "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": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "mint",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "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": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "repayBorrowBehalf",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "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": [],
    "stateMutability": "view"
  },
  {
    "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": "event",
    "name": "Event_8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Failure",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "LiquidateBorrow",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg3",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg4",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "NewAdmin",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "NewComptroller",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "NewMarketInterestRateModel",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "NewPendingAdmin",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Transfer",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg2",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  }
]

UNKNOWN SELECTORS (7)

0x17b9b84bunknown
0x352b4a3funknown
0x12004531unknown
0x2fe3f38funknown
0x368f5153unknown
0x616c6375unknown
0xc4a11628unknown
These selectors are not yet in the research database — they are being investigated and will be added as known functions once identified. They are also marked in red in the decompiled Solidity above.

KNOWN CLUSTER ADDRESSES IN THIS BYTECODE (0)

(none)