BNB Chain

0x98ec01a6d26233d2c2b2c35bd86fa1af2177873c

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

Decompilation outputBNB Chain · 0x98ec01a62177873c2.5 KB5.7 s
Share
//decompiled by exvvul decompiler tool contact@exvul.com https://x.com/exvulsec
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

contract DesolexContract {
    address public constant token = address(0xf12d5048a6bed7ecc572fa7805d03af7b5fb9d2);
    uint256 public constant fee = 3000;
    uint256 public constant marginFee = 2500;
    uint256 public constant poolId = 90310526856941952249835635612342530199996101877573223301000285361169299700248;
    address public constant beneficiary = address(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e);
    
    function _desolexPanic(uint256 code) private pure {
        assembly ("memory-safe") {
            mstore(0x00, shl(224, 0x4e487b71))
            mstore(0x04, code)
            revert(0x00, 0x24)
        }
    }
    receive() external payable {
    }
    
    
    function walk() public payable {
        require(msg.sender == 0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e);
        require(msg.value != 0x0);
        uint256 var_a;
        if (((var_a + 0xc0) > 0xffffffffffffffff) | ((var_a + 0xc0) < var_a)) _desolexPanic(65);
        var_a = var_a + 0xc0;
        (bool success0, bytes memory returnData0) = address(0xb397fe16be79b082f17f1cd96e6489df19e07bcd).exactInput{ value: msg.value }(var_a.length); // call
        require(success0);
        if (0x60 <= returnData0.length) {
            if (((var_a + 0x60) > 0xffffffffffffffff) | ((var_a + 0x60) < var_a)) _desolexPanic(65);
            var_a = var_a + 0x60;
            require(!(((var_a + 0x60) - var_a) < 0x60));
            require(var_t == (uint24(var_t)));
        }
        if (((var_a + ((returnData0.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_a + ((returnData0.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_a)) _desolexPanic(65);
        require(!(((var_a + returnData0.length) - var_a) < 0x60));
        require(var_w == (uint24(var_w)));
    }
    
    function drain() public {
        require(msg.sender == 0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e);
        (bool success0, bytes memory returnData0) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).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;
        }
        require(value2 != 0x0);
        if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
        var_c = var_c + 0x80;
        uint256 value3 = msg.data[0] >> 0xe0;
        uint256 value4 = value2;
        if ((value2 >> 0x04) != 0x0) {
            value3 = value2;
            value4 = value2 >> 0x04;
        }
        uint256 value10 = value4;
        uint256 value5 = 0;
        while (true) {
            if (value5 >= 0x30) {
                uint256 value21 = 0;
                if (address(this).balance != 0x0) {
                    (bool success1, bytes memory returnData1) = address(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e).call{ value: address(this).balance }(""); // call
                    if (returnData1.length != 0x0) {
                        if (!(returnData1.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                        var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    }
                } else {
                    flag0 = SELFBALANCE() != 0x0;
                }
                (bool success2, bytes memory returnData2) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).balanceOf(address(this)); // staticcall
                require(success2);
                uint256 value7 = 0;
                uint256 value8 = var_c.length;
                if (success2) {
                    uint256 value6 = returnData2.length;
                    if (0x20 <= returnData2.length) {
                        value6 = 0x20;
                    }
                    if (((var_c + ((value6 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value6 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value6 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value6) - var_c) >= 0x20);
                } else {
                    value7 = var_c;
                    value8 = 0;
                }
                if (value8 != 0x0) {
                    (bool success3, bytes memory returnData3) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).transfer(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e, value8); // call
                    require(success3);
                    if (success3) {
                        uint256 value9 = returnData3.length;
                        if (0x20 <= returnData3.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);
                        require(var_c.length == var_c.length);
                    }
                }
            }
            (bool success4, bytes memory returnData4) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).balanceOf(address(this)); // staticcall
            if (!success4) {
                revert();
                break;
            }
            uint256 value12 = msg.data[0] >> 0xe0;
            uint256 value13 = var_c.length;
            if (success4) {
                uint256 value11 = returnData4.length;
                if (0x20 <= returnData4.length) {
                    value11 = 0x20;
                }
                if (((var_c + ((value11 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value11 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                var_c = var_c + ((value11 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                require(((var_c + value11) - var_c) >= 0x20);
            } else {
                value12 = var_c;
                value13 = 0;
            }
            if (value13 == 0x0) {
                uint256 value22 = 0;
                if (address(this).balance != 0x0) {
                    (bool success5, bytes memory returnData5) = address(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e).call{ value: address(this).balance }(""); // call
                    if (returnData5.length != 0x0) {
                        if (!(returnData5.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                        var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    }
                } else {
                    flag1 = SELFBALANCE() != 0x0;
                }
                (bool success6, bytes memory returnData6) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).balanceOf(address(this)); // staticcall
                require(success6);
                uint256 value15 = 0;
                uint256 value16 = var_c.length;
                if (success6) {
                    uint256 value14 = returnData6.length;
                    if (0x20 <= returnData6.length) {
                        value14 = 0x20;
                    }
                    if (((var_c + ((value14 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value14 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value14 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value14) - var_c) >= 0x20);
                } else {
                    value15 = var_c;
                    value16 = 0;
                }
                if (value16 != 0x0) {
                    (bool success7, bytes memory returnData7) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).transfer(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e, value16); // call
                    require(success7);
                    if (success7) {
                        uint256 value17 = returnData7.length;
                        if (0x20 <= returnData7.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);
                        require(var_c.length == var_c.length);
                    }
                }
                break;
            }
            uint256 value18 = value10;
            if (value13 < value10) {
                value18 = value13;
            }
            if (((var_c + 0xe0) > 0xffffffffffffffff) | ((var_c + 0xe0) < var_c)) {
                _desolexPanic(65);
                break;
            }
            var_c = var_c + 0xe0;
            (bool success8, bytes memory returnData8) = address(0x6bec0c1dc4898484b7f094566ddf8bc82ed7abe8).addMargin(address(var_c.length), address(var_an)); // call
            uint256 value20 = msg.data[0] >> 0xe0;
            if (success8) {
                uint256 value19 = returnData8.length;
                if (0x60 <= returnData8.length) {
                    value19 = 0x60;
                }
                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) >= 0x60);
            } else {
                value20 = var_c;
            }
            if (success8) {
                break;
            }
            uint256 value25 = value18;
            uint256 value26 = value5;
            if (value18 <= 0x1) {
                break;
            }
            if (!(value18 >> 0x01)) {
                break;
            }
            value10 = value18 >> 0x01;
            value5 = value5 + 0x01;
            value25 = value5;
            value26 = value18 >> 0x01;
            value10 = value10;
            value5 = value5 + 0x01;
        }
        internal_852();
    }
    
    function unwind() public {
        require(msg.sender == 0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e);
        (bool success0, bytes memory returnData0) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).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;
        }
        require(value2 != 0x0);
        if (((var_c + 0xc0) > 0xffffffffffffffff) | ((var_c + 0xc0) < var_c)) _desolexPanic(65);
        var_c = var_c + 0xc0;
        (bool success1, bytes memory returnData1) = address(0xb397fe16be79b082f17f1cd96e6489df19e07bcd).exactInput(var_c.length); // call
        require(success1);
        if (!(success1)) {
            uint256 value11 = 0;
            if (address(this).balance != 0x0) {
                (bool success2, bytes memory returnData2) = address(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e).call{ value: address(this).balance }(""); // call
                if (returnData2.length != 0x0) {
                    if (!(returnData2.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                }
            } else {
                flag0 = SELFBALANCE() != 0x0;
            }
            (bool success3, bytes memory returnData3) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).balanceOf(address(this)); // staticcall
            require(success3);
            uint256 value4 = 0;
            uint256 value5 = var_c.length;
            if (success3) {
                uint256 value3 = returnData3.length;
                if (0x20 <= returnData3.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;
                value5 = 0;
            }
            if (value5 != 0x0) {
                (bool success4, bytes memory returnData4) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).transfer(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e, value5); // call
                require(success4);
                if (success4) {
                    uint256 value6 = returnData4.length;
                    if (0x20 <= returnData4.length) {
                        value6 = 0x20;
                    }
                    if (((var_c + ((value6 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value6 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value6 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value6) - var_c) >= 0x20);
                    require(var_c.length == var_c.length);
                }
            }
        }
        if (0x60 > returnData1.length) {
            if (((var_c + ((returnData1.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((returnData1.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
            var_c = var_c + ((returnData1.length + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_c + returnData1.length) - var_c) >= 0x60);
            require(var_c.length == (uint24(var_c.length)));
            uint256 value12 = 0;
            if (address(this).balance != 0x0) {
                (bool success5, bytes memory returnData5) = address(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e).call{ value: address(this).balance }(""); // call
                if (returnData5.length != 0x0) {
                    if (!(returnData5.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                }
            } else {
                flag1 = SELFBALANCE() != 0x0;
            }
            (bool success6, bytes memory returnData6) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).balanceOf(address(this)); // staticcall
            require(success6);
            uint256 value8 = 0;
            uint256 value9 = var_c.length;
            if (success6) {
                uint256 value7 = returnData6.length;
                if (0x20 <= returnData6.length) {
                    value7 = 0x20;
                }
                if (((var_c + ((value7 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value7 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                var_c = var_c + ((value7 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                require(((var_c + value7) - var_c) >= 0x20);
            } else {
                value8 = var_c;
                value9 = 0;
            }
            if (value9 != 0x0) {
                (bool success7, bytes memory returnData7) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).transfer(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e, value9); // call
                require(success7);
                if (success7) {
                    uint256 value10 = returnData7.length;
                    if (0x20 <= returnData7.length) {
                        value10 = 0x20;
                    }
                    if (((var_c + ((value10 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value10 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                    var_c = var_c + ((value10 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    require(((var_c + value10) - var_c) >= 0x20);
                    require(var_c.length == var_c.length);
                }
            }
        } else {
            if (((var_c + 0x60) > 0xffffffffffffffff) | ((var_c + 0x60) < var_c)) _desolexPanic(65);
            var_c = var_c + 0x60;
            require(((var_c + 0x60) - var_c) >= 0x60);
            require(var_c.length == (uint24(var_c.length)));
            internal_852();
        }
    }
    
    function internal_852() private {
        // Decompilation incomplete: helper effect provenance is conservative.
        uint256 value0 = 0;
        if (address(this).balance != 0x0) {
            (bool success0, bytes memory returnData0) = address(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e).call{ value: address(this).balance }(""); // call
            if (returnData0.length != 0x0) {
                if (!(returnData0.length <= 0xffffffffffffffff)) _desolexPanic(65);
                if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            }
        } else {
            flag2 = SELFBALANCE() != 0x0;
        }
        (bool success1, bytes memory returnData1) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).balanceOf(address(this)); // staticcall
        require(success1);
        uint256 value22 = 0;
        uint256 value23 = var_c.length;
        if (success1) {
            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);
        } else {
            value22 = var_c;
            value23 = 0;
        }
        if (value23 != 0x0) {
            (bool success2, bytes memory returnData2) = address(0x0f12d5048a6bed7ecc572fa7805d03af7b5fb9d2).transfer(0x90bde1e0bb16b3deeb9d638acf8d01f19fd2f31e, value23); // call
            require(success2);
            if (success2) {
                uint256 value24 = returnData2.length;
                if (0x20 <= returnData2.length) {
                    value24 = 0x20;
                }
                if (((var_c + ((value24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((value24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                var_c = var_c + ((value24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                require(((var_c + value24) - var_c) >= 0x20);
                require(var_c.length == var_c.length);
            }
        }
    }
    
    // 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.
    
    // 0x38af3eed => beneficiary()
    // 0x3e0dc34e => poolId()
    // 0x807763ab => unwind()
    // 0x9890220b => drain()
    // 0xb67df1c3 => marginFee()
    // 0xddca3f43 => fee()
    // 0xfc0c546a => token()
    // 0xfc98512e => walk()
}
0x98ec01…77873c on BNB Chain — Decompiled Solidity