BNB Chain

0x06a24a4f4d803e8845db1f42ba9d542af21b92a5

Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.

Decompilation outputBNB Chain · 0x06a24a4ff21b92a510.9 KB66.8 s
Share
//decompiled by exvvul decompiler tool contact@exvul.com https://x.com/exvulsec
// Decompilation incomplete: symbolic execution reached a configured deadline for 1 of 14 entry points (170000 ms contract budget): 2238a2ae
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

contract DesolexContract {
    uint256 public constant MAX_DEADLINE_WINDOW = 1800;
    bool public constant unresolved_a4213afc = false;
    address public constant protocolRegistry = address(0xfd89fb9faf9de258c2148b2d0ec14da16ee42593);
    uint256 public constant unresolved_69da1c46 = 30000;
    address public constant lpToken = address(0xbc4df56bb74a06a5a19965adea7833d6b4d9070);
    uint256 public constant moduleKey = 21272385633371373653527431313729810203549031575206028310125400910954682959166;
    address public constant usdc = address(0x55d398326f99059ff775485246999027b3197955);
    uint256 public constant interfaceVersion = 1;
    address public constant protocolToken = address(0x61e91daf03a49ecec334bffbf5008860cfb33333);
    uint256 public constant totalLiability = 0;
    uint256 public constant protocolReceiver = 1029826448719675405611422076806224983999605739031;
    
    bytes32 stor_0; // STORAGE[0x0]
    
    error CustomError_4e645682();
    error SafeERC20FailedOperation(address);
    event Event_f5a60b1c(address indexed, uint256, uint256, uint256);
    error CustomError_b072117c();
    error ReentrancyGuardReentrantCall();
    function _desolexPanic(uint256 code) private pure {
        assembly ("memory-safe") {
            mstore(0x00, shl(224, 0x4e487b71))
            mstore(0x04, code)
            revert(0x00, 0x24)
        }
    }
    fallback() external payable {
        // Synthetic compatibility routes preserve original selectors for unresolved names.
        if ((msg.data.length >= 4) && (msg.sig == 0x2238a2ae)) {
            // Route to Unknown_2238a2ae(address) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xe77a1963));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x3e30ffe3)) {
            // Route to Unknown_3e30ffe3() after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x78196dac));
            return;
        }
        revert();
    }
    
    
    function hasOpenPositions() public returns (bool) {
        (bool success0, bytes memory returnData0) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).balanceOf(address(this)); // staticcall
        require(success0);
        uint256 value1 = msg.data[0] >> 0xe0;
        uint256 var_c;
        uint256 value2 = var_c.length;
        if (success0) {
            uint256 value0 = returnData0.length;
            if (0x20 <= returnData0.length) {
                value0 = 0x20;
            }
            if (((var_c + ((value0 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value0 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value0 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value0) - var_c) >= 0x20);
        } else {
            value1 = var_c;
            value2 = 0;
        }
        bool flag1 = var_c.length;
        if (value2 == 0x0) {
            (bool success1, bytes memory returnData1) = address(0x55d398326f99059ff775485246999027b3197955).balanceOf(address(this)); // staticcall
            require(success1);
            if (!(success1)) {
                bool flag0 = var_c.length;
                (bool success2, bytes memory returnData2) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
                require(success2);
                if (!(success2)) {
                    return false;
                }
                uint256 value3 = returnData2.length;
                if (0x20 <= returnData2.length) {
                    value3 = 0x20;
                }
                if (((var_c + ((value3 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value3 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                var_c = var_c + ((value3 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                require(((var_c + value3) - var_c) >= 0x20);
                return flag0;
            }
            uint256 value4 = returnData1.length;
            if (0x20 <= returnData1.length) {
                value4 = 0x20;
            }
            if (((var_c + ((value4 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value4 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value4 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value4) - var_c) >= 0x20);
        } else {
            flag1 = value2 != 0x0;
        }
        bool flag2 = var_c.length;
        if (!flag1) {
            (bool success3, bytes memory returnData3) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
            require(success3);
            if (!(success3)) {
                return false;
            }
            uint256 value5 = returnData3.length;
            if (0x20 <= returnData3.length) {
                value5 = 0x20;
            }
            if (((var_c + ((value5 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value5 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value5 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value5) - var_c) >= 0x20);
        } else {
            flag2 = flag1;
        }
        return flag2;
    }
    
    function Unknown_3e30ffe3() public {
        require(stor_0 != 0x02, ReentrancyGuardReentrantCall());
        stor_0 = 0x02;
        (bool success0, bytes memory returnData0) = address(0xfd89fb9faf9de258c2148b2d0ec14da16ee42593).activeAddress(0x06aa03964db1f7257357ef09714a5f0ca3633723df419e97015e0c7a3e83edb7); // staticcall
        require(success0);
        uint256 value1 = msg.data[0] >> 0xe0;
        uint256 var_c;
        uint256 value2 = var_c.length;
        if (success0) {
            uint256 value0 = returnData0.length;
            if (0x20 <= returnData0.length) {
                value0 = 0x20;
            }
            if (((var_c + ((value0 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value0 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value0 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value0) - var_c) >= 0x20);
            require(var_c.length == (address(var_c.length)));
        } else {
            value1 = var_c;
            value2 = 0;
        }
        uint256 value22 = msg.data[0] >> 0xe0;
        bool flag6 = !var_c.length;
        if (address(value2).code.length != 0x0) {
            (bool success1, bytes memory returnData1) = address(0xfd89fb9faf9de258c2148b2d0ec14da16ee42593).isActive(0x06aa03964db1f7257357ef09714a5f0ca3633723df419e97015e0c7a3e83edb7, address(value2)); // staticcall
            require(success1);
            if (!(success1)) {
                require(0, CustomError_4e645682());
                (bool success2, bytes memory returnData2) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).balanceOf(address(this)); // staticcall
                require(success2);
                uint256 value4 = msg.data[0] >> 0xe0;
                uint256 value6 = var_c.length;
                if (success2) {
                    uint256 value3 = returnData2.length;
                    if (0x20 <= returnData2.length) {
                        value3 = 0x20;
                    }
                    if (((var_c + ((value3 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value3 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value3 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value3) - var_c) >= 0x20);
                } else {
                    value4 = var_c;
                    value6 = 0;
                }
                (bool success3, bytes memory returnData3) = address(0x55d398326f99059ff775485246999027b3197955).balanceOf(address(this)); // staticcall
                require(success3);
                uint256 value7 = msg.data[0] >> 0xe0;
                uint256 value8 = var_c.length;
                if (success3) {
                    uint256 value5 = returnData3.length;
                    if (0x20 <= returnData3.length) {
                        value5 = 0x20;
                    }
                    if (((var_c + ((value5 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value5 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value5 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value5) - var_c) >= 0x20);
                } else {
                    value7 = var_c;
                    value8 = 0;
                }
                (bool success4, bytes memory returnData4) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
                require(success4);
                uint256 value10 = 0x20;
                uint256 value11 = var_c.length;
                if (success4) {
                    uint256 value9 = returnData4.length;
                    if (0x20 <= returnData4.length) {
                        value9 = 0x20;
                    }
                    if (((var_c + ((value9 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value9 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value9 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value9) - var_c) >= 0x20);
                } else {
                    value10 = var_c;
                    value11 = 0;
                }
                if (value6 != 0x0) {
                    if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
                    var_c = var_c + 0x80;
                    (bool success5, bytes memory returnData5) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).transfer(address(value2), value6); // call
                    require(success5);
                    bool flag0 = !(0x01 == var_n);
                    if (returnData5.length == 0) {
                        flag0 = !(address(0x61e91daf03a49ecec334bffbf5008860cfb33333).code.length);
                    }
                    require(!(flag0), SafeERC20FailedOperation());
                }
                if (value8 != 0x0) {
                    if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
                    var_c = var_c + 0x80;
                    (bool success6, bytes memory returnData6) = address(0x55d398326f99059ff775485246999027b3197955).transfer(address(value2), value8); // call
                    require(success6);
                    bool flag1 = !(0x01 == var_n);
                    if (returnData6.length == 0) {
                        flag1 = !(address(0x55d398326f99059ff775485246999027b3197955).code.length);
                    }
                    require(!(flag1), SafeERC20FailedOperation());
                }
                if (value11 != 0x0) {
                    if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
                    var_c = var_c + 0x80;
                    (bool success7, bytes memory returnData7) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).transfer(address(value2), value11); // call
                    require(success7);
                    bool flag2 = !(0x01 == var_n);
                    if (returnData7.length == 0) {
                        flag2 = !(address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).code.length);
                    }
                    require(!(flag2), SafeERC20FailedOperation());
                }
                (bool success8, bytes memory returnData8) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).balanceOf(address(this)); // staticcall
                require(success8);
                uint256 value13 = msg.data[0] >> 0xe0;
                uint256 value14 = var_c.length;
                if (success8) {
                    uint256 value12 = returnData8.length;
                    if (0x20 <= returnData8.length) {
                        value12 = 0x20;
                    }
                    if (((var_c + ((value12 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value12 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value12 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value12) - var_c) >= 0x20);
                } else {
                    value13 = var_c;
                    value14 = 0;
                }
                uint256 value18 = msg.data[0] >> 0xe0;
                bool flag4 = var_c.length;
                if (value14 == 0x0) {
                    (bool success9, bytes memory returnData9) = address(0x55d398326f99059ff775485246999027b3197955).balanceOf(address(this)); // staticcall
                    require(success9);
                    if (!(success9)) {
                        uint256 value16 = msg.data[0] >> 0xe0;
                        bool flag3 = var_c.length;
                        (bool success10, bytes memory returnData10) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
                        require(success10);
                        if (!(success10)) {
                            require(0x0 == 0x0, CustomError_b072117c());
                            emit Event_f5a60b1c(address(value2), value6, value8, value11);
                            stor_0 = 0x01;
                        }
                        uint256 value15 = returnData10.length;
                        if (0x20 <= returnData10.length) {
                            value15 = 0x20;
                        }
                        if (((var_c + ((value15 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value15 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                        var_c = var_c + ((value15 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        require(((var_c + value15) - var_c) >= 0x20);
                        require(!(flag3), CustomError_b072117c());
                        emit Event_f5a60b1c(address(value2), value6, value8, value11);
                        stor_0 = 0x01;
                    }
                    uint256 value17 = returnData9.length;
                    if (0x20 <= returnData9.length) {
                        value17 = 0x20;
                    }
                    if (((var_c + ((value17 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value17 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value17 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value17) - var_c) >= 0x20);
                } else {
                    value18 = 0x55d398326f99059ff775485246999027b3197955;
                    flag4 = value14 != 0x0;
                }
                uint256 value20 = msg.data[0] >> 0xe0;
                bool flag5 = var_c.length;
                if (!flag4) {
                    (bool success11, bytes memory returnData11) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
                    require(success11);
                    if (!(success11)) {
                        require(0x0 == 0x0, CustomError_b072117c());
                        emit Event_f5a60b1c(address(value2), value6, value8, value11);
                        stor_0 = 0x01;
                    }
                    uint256 value19 = returnData11.length;
                    if (0x20 <= returnData11.length) {
                        value19 = 0x20;
                    }
                    if (((var_c + ((value19 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value19 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value19 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value19) - var_c) >= 0x20);
                } else {
                    value20 = 0x0bc4df56bb74a06a5a19965adea7833d6b4d9070;
                    flag5 = flag4;
                }
                require(!(flag5), CustomError_b072117c());
                emit Event_f5a60b1c(address(value2), value6, value8, value11);
                stor_0 = 0x01;
            }
            uint256 value21 = returnData1.length;
            if (0x20 <= returnData1.length) {
                value21 = 0x20;
            }
            if (((var_c + ((value21 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value21 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value21 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value21) - var_c) >= 0x20);
            require(var_c.length == var_c.length);
        } else {
            value22 = 0xfd89fb9faf9de258c2148b2d0ec14da16ee42593;
            flag6 = value2.code.length == 0x0;
        }
        require(!(flag6), CustomError_4e645682());
        (bool success12, bytes memory returnData12) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).balanceOf(address(this)); // staticcall
        require(success12);
        uint256 value24 = msg.data[0] >> 0xe0;
        uint256 value26 = var_c.length;
        if (success12) {
            uint256 value23 = returnData12.length;
            if (0x20 <= returnData12.length) {
                value23 = 0x20;
            }
            if (((var_c + ((value23 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value23 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value23 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value23) - var_c) >= 0x20);
        } else {
            value24 = var_c;
            value26 = 0;
        }
        (bool success13, bytes memory returnData13) = address(0x55d398326f99059ff775485246999027b3197955).balanceOf(address(this)); // staticcall
        require(success13);
        uint256 value27 = msg.data[0] >> 0xe0;
        uint256 value28 = var_c.length;
        if (success13) {
            uint256 value25 = returnData13.length;
            if (0x20 <= returnData13.length) {
                value25 = 0x20;
            }
            if (((var_c + ((value25 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value25 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value25 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value25) - var_c) >= 0x20);
        } else {
            value27 = var_c;
            value28 = 0;
        }
        (bool success14, bytes memory returnData14) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
        require(success14);
        uint256 value30 = 0x20;
        uint256 value31 = var_c.length;
        if (success14) {
            uint256 value29 = returnData14.length;
            if (0x20 <= returnData14.length) {
                value29 = 0x20;
            }
            if (((var_c + ((value29 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value29 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value29 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value29) - var_c) >= 0x20);
        } else {
            value30 = var_c;
            value31 = 0;
        }
        if (value26 != 0x0) {
            if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
            var_c = var_c + 0x80;
            (bool success15, bytes memory returnData15) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).transfer(address(value2), value26); // call
            require(success15);
            bool flag7 = !(0x01 == var_n);
            if (returnData15.length == 0) {
                flag7 = !(address(0x61e91daf03a49ecec334bffbf5008860cfb33333).code.length);
            }
            require(!(flag7), SafeERC20FailedOperation());
        }
        if (value28 != 0x0) {
            if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
            var_c = var_c + 0x80;
            (bool success16, bytes memory returnData16) = address(0x55d398326f99059ff775485246999027b3197955).transfer(address(value2), value28); // call
            require(success16);
            bool flag8 = !(0x01 == var_n);
            if (returnData16.length == 0) {
                flag8 = !(address(0x55d398326f99059ff775485246999027b3197955).code.length);
            }
            require(!(flag8), SafeERC20FailedOperation());
        }
        if (value31 != 0x0) {
            if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
            var_c = var_c + 0x80;
            (bool success17, bytes memory returnData17) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).transfer(address(value2), value31); // call
            require(success17);
            bool flag9 = !(0x01 == var_n);
            if (returnData17.length == 0) {
                flag9 = !(address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).code.length);
            }
            require(!(flag9), SafeERC20FailedOperation());
        }
        (bool success18, bytes memory returnData18) = address(0x61e91daf03a49ecec334bffbf5008860cfb33333).balanceOf(address(this)); // staticcall
        require(success18);
        uint256 value33 = msg.data[0] >> 0xe0;
        uint256 value34 = var_c.length;
        if (success18) {
            uint256 value32 = returnData18.length;
            if (0x20 <= returnData18.length) {
                value32 = 0x20;
            }
            if (((var_c + ((value32 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value32 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value32 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value32) - var_c) >= 0x20);
        } else {
            value33 = var_c;
            value34 = 0;
        }
        uint256 value38 = msg.data[0] >> 0xe0;
        bool flag11 = var_c.length;
        if (value34 == 0x0) {
            (bool success19, bytes memory returnData19) = address(0x55d398326f99059ff775485246999027b3197955).balanceOf(address(this)); // staticcall
            require(success19);
            if (!(success19)) {
                uint256 value36 = msg.data[0] >> 0xe0;
                bool flag10 = var_c.length;
                (bool success20, bytes memory returnData20) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
                require(success20);
                if (!(success20)) {
                    require(0x0 == 0x0, CustomError_b072117c());
                    emit Event_f5a60b1c(address(value2), value26, value28, value31);
                    stor_0 = 0x01;
                }
                uint256 value35 = returnData20.length;
                if (0x20 <= returnData20.length) {
                    value35 = 0x20;
                }
                if (((var_c + ((value35 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value35 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                var_c = var_c + ((value35 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                require(((var_c + value35) - var_c) >= 0x20);
                require(!(flag10), CustomError_b072117c());
                emit Event_f5a60b1c(address(value2), value26, value28, value31);
                stor_0 = 0x01;
            }
            uint256 value37 = returnData19.length;
            if (0x20 <= returnData19.length) {
                value37 = 0x20;
            }
            if (((var_c + ((value37 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value37 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value37 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value37) - var_c) >= 0x20);
        } else {
            value38 = 0x55d398326f99059ff775485246999027b3197955;
            flag11 = value34 != 0x0;
        }
        uint256 value40 = msg.data[0] >> 0xe0;
        bool flag12 = var_c.length;
        if (!flag11) {
            (bool success21, bytes memory returnData21) = address(0x0bc4df56bb74a06a5a19965adea7833d6b4d9070).balanceOf(address(this)); // staticcall
            require(success21);
            if (!(success21)) {
                require(0x0 == 0x0, CustomError_b072117c());
                emit Event_f5a60b1c(address(value2), value26, value28, value31);
                stor_0 = 0x01;
            }
            uint256 value39 = returnData21.length;
            if (0x20 <= returnData21.length) {
                value39 = 0x20;
            }
            if (((var_c + ((value39 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value39 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((value39 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + value39) - var_c) >= 0x20);
        } else {
            value40 = 0x0bc4df56bb74a06a5a19965adea7833d6b4d9070;
            flag12 = flag11;
        }
        require(!(flag12), CustomError_b072117c());
        emit Event_f5a60b1c(address(value2), value26, value28, value31);
        stor_0 = 0x01;
    }
    
    function Unknown_2238a2ae(address arg0) public payable {
        if (!(msg.value) && !((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0xc0) && arg0 == arg0) {
            require((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc + msg.data.length) >= 0xa0);
            if (((var_a + 0x0140) > 0xffffffffffffffff) | ((var_a + 0x0140) < var_a)) _desolexPanic(65);
            if (stor_0 != 0x02) {
                stor_0 = 0x02;
                address(0xfd89fb9faf9de258c2148b2d0ec14da16ee42593).isActive(0x2f07be5c4f9af7c6230f784f19332431b638fed28e5100d31a51b4e3fe04c53e, address(this)); // staticcall
            }
        }
    }
    
    function __desolexSelectorShim(uint32 rewrittenSelector) private {
        assembly {
            let input := mload(0x40)
            calldatacopy(input, 0, calldatasize())
            mstore(input, or(and(mload(input), 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff), shl(224, and(rewrittenSelector, 0xffffffff))))
            let success := delegatecall(gas(), address(), input, calldatasize(), 0, 0)
            let size := returndatasize()
            returndatacopy(input, 0, size)
            switch success
            case 0 { revert(input, size) }
            default { return(input, size) }
        }
    }
    
    // Note: This selector table is synthetic and is not part of the original Solidity source.
    // It records the recovered selector-to-signature mapping without executable behavior.
    
    // 0x0f51728e => protocolReceiver()
    // 0x0fc29349 => totalLiability()
    // 0x1a465fe1 => protocolToken()
    // 0x1d8ffa4d => interfaceVersion()
    // 0x2238a2ae => Unknown_2238a2ae(address)
    // 0x3e30ffe3 => Unknown_3e30ffe3()
    // 0x3e413bee => usdc()
    // 0x55fd7fa0 => moduleKey()
    // 0x5fcbd285 => lpToken()
    // 0x69da1c46 => unresolved_69da1c46()
    // 0x7656419f => protocolRegistry()
    // 0x9ce6dd9f => hasOpenPositions()
    // 0xa4213afc => unresolved_a4213afc()
    // 0xc2b86d60 => MAX_DEADLINE_WINDOW()
}
0x06a24a…1b92a5 on BNB Chain — Decompiled Solidity