BNB Chain

0xfd89fb9faf9de258c2148b2d0ec14da16ee42593

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

Decompilation outputBNB Chain · 0xfd89fb9f6ee425939.2 KB37.3 s
Share
//decompiled by exvvul decompiler tool [email protected] https://x.com/exvulsec
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

contract DesolexContract {
    uint256 public constant GOVERNANCE_ROLE = 51344670724517732003549907689393193919197804398902247150944709319656146718385;
    uint256 public constant DEFAULT_ADMIN_ROLE = 0;
    uint256 public constant MINIMUM_GOVERNANCE_DELAY = 600;
    uint256 public constant SCHEMA_VERSION = 1;
    uint256 public constant unresolved_506b7d29 = 16;
    
    mapping(bytes32 => mapping(address => bool)) public hasRole; // STORAGE[0x0]
    mapping(bytes32 => uint256) public getRoleMemberCount; // STORAGE[0x1]
    uint64 public governanceDelay; // STORAGE[0x2]
    mapping(bytes32 => address) public activeAddress; // STORAGE[0x3]
    mapping(bytes32 => uint64) public activeVersion; // STORAGE[0x4]
    mapping(bytes32 => bytes) public pendingProposal; // STORAGE[0x5]
    mapping(uint256 => mapping(address => bool)) public unresolved_e1682f11; // STORAGE[0x6]
    mapping(bytes32 => uint256) public historyLength; // STORAGE[0x7]
    mapping(uint256 => uint256) public unresolved_6f7292e9; // STORAGE[0x8]
    mapping(uint256 => mapping(address => uint256)) mapping_9; // STORAGE[0x9]
    mapping(uint256 => mapping(address => bool)) mapping_a; // STORAGE[0xa]
    mapping(address => uint256) mapping_dc19aedbecc87684583f913a7cdd973b59879b34f362eaad70cb582f744658f; // STORAGE[0xdc19aedbecc87684583f913a7cdd973b59879b34f362eaad70cb582f744658f]
    mapping(address => uint256) mapping_17c8f720dea4136a24f56caa6b86efa86bb9713a597d5da2be9a69f89fa013a0; // STORAGE[0x17c8f720dea4136a24f56caa6b86efa86bb9713a597d5da2be9a69f89fa013a0]
    bool stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0; // STORAGE[0x2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0]
    mapping(address => bool) mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef; // STORAGE[0x316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef]
    mapping(address => uint256) mapping_6078bdf681fb8eff6a05a00c6943778187080cfae18c55c0b846fcf8ece2d802; // STORAGE[0x6078bdf681fb8eff6a05a00c6943778187080cfae18c55c0b846fcf8ece2d802]
    address stor_671ca1b96299e9518aae4fe31601680d7e9939f413e36040080eb5e982df72e8; // STORAGE[0x671ca1b96299e9518aae4fe31601680d7e9939f413e36040080eb5e982df72e8]
    address stor_7117ff4fa8cf6f8fd73cd81af8cfa5220c65a6a76cf5fb0e23813740ecc2ea3a; // STORAGE[0x7117ff4fa8cf6f8fd73cd81af8cfa5220c65a6a76cf5fb0e23813740ecc2ea3a]
    bool stor_c3546aafc2661e0e1551b967bc48605ceb507c40ffe3291d607231d9aa9b06c7; // STORAGE[0xc3546aafc2661e0e1551b967bc48605ceb507c40ffe3291d607231d9aa9b06c7]
    mapping(address => uint256) mapping_expr_bd;
    mapping(address => uint256) mapping_expr_bn;
    mapping(address => uint256) mapping_expr_g;
    bytes32 stor_expr_ab;
    bytes32 stor_expr_af;
    bytes32 stor_expr_ah;
    bytes32 stor_expr_ai;
    bytes32 stor_expr_av; // DESOLEX_RAW_STORAGE: whole slot: address [LegacyInference] vs uint256 [LegacyInference] (ambiguous)
    uint256 stor_expr_aw;
    bytes32 stor_expr_ax; // DESOLEX_RAW_STORAGE: whole slot: address [LegacyInference] vs uint256 [LegacyInference] (ambiguous)
    bytes32 stor_expr_b;
    bytes32 stor_expr_ba;
    bytes32 stor_expr_bb;
    bytes32 stor_expr_bg;
    uint256 stor_expr_bh;
    bytes32 stor_expr_bi;
    uint256 stor_expr_bk;
    uint256 stor_expr_bm;
    address stor_expr_bo;
    bytes32 stor_expr_d;
    uint256 stor_expr_h;
    uint256 stor_expr_i;
    uint256 stor_expr_j;
    bytes32 stor_expr_l;
    bytes32 stor_expr_m;
    bytes32 stor_expr_n;
    uint256 stor_expr_p;
    bytes32 stor_expr_q;
    bytes32 stor_expr_y;
    bytes32 stor_expr_z;
    
    event Event_a230cb13(uint256 indexed, uint256 indexed);
    event RoleRevoked(bytes32 indexed, address indexed, address indexed);
    error CustomError_50bf9df2();
    error CustomError_cc69cf99();
    error ProposalMissing();
    error CustomError_99305b7a();
    error CustomError_9efa8d12();
    error CustomError_df45d152();
    event RoleGranted(bytes32 indexed, address indexed, address indexed);
    error CustomError_d466baab();
    event Event_91a41771(uint256 indexed, uint256 indexed, uint256, uint256);
    error AccessControlBadConfirmation();
    error NotContract();
    error OpenPositionsRemain();
    error VersionNotIncreasing();
    event Event_6622b245(uint256, uint256, uint256);
    error OutstandingLiability();
    event Event_cf3af842(uint256 indexed, address indexed, address indexed, uint256);
    error AccessControlUnauthorizedAccount(address, bytes32);
    event Event_8d3f2604(uint256 indexed, uint256 indexed, uint256, uint256, uint256);
    error CustomError_0fa60cb4();
    error CustomError_bb8e3b1d();
    event Event_3623a483(uint256 indexed, address indexed, uint256);
    error ProposalAlreadyExists();
    event Event_33a4190f(uint256 indexed, uint256 indexed);
    error CustomError_ba299947();
    error ModuleAlreadyRegistered();
    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 == 0x0fa18730)) {
            // Route to Unknown_0fa18730(bytes32) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x6a72738e));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x10398b3c)) {
            // Route to Unknown_10398b3c(uint256,address,uint64,uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xec634913));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x2a99cde5)) {
            // Route to Unknown_2a99cde5(uint256,address) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x6f6ed680));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x3f4747a3)) {
            // Route to Unknown_3f4747a3(uint256,uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xd22d8f03));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x545aa9ce)) {
            // Route to Unknown_545aa9ce(uint64) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xe23ac8a3));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x641b82d7)) {
            // Route to Unknown_641b82d7(uint256,address,uint64,uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x884d1b7c));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x84f7a864)) {
            // Route to Unknown_84f7a864(uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xd29afcda));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0x9010d07c)) {
            // Route to Unknown_9010d07c(uint256,uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xb656a175));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0xa3246ad3)) {
            // Route to Unknown_a3246ad3(uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x1cf458ec));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0xbbd3eecd)) {
            // Route to Unknown_bbd3eecd(uint256,address) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0xc4ef0ee8));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0xca0f8f3b)) {
            // Route to Unknown_ca0f8f3b(uint256,address) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x3d122075));
            return;
        }
        if ((msg.data.length >= 4) && (msg.sig == 0xff78c9db)) {
            // Route to Unknown_ff78c9db(uint256,uint256) after replacing only msg.sig.
            __desolexSelectorShim(uint32(0x6d83aac6));
            return;
        }
        revert();
    }
    
    
    function Unknown_ff78c9db(uint256 arg0, uint256 arg1) public view returns (address) {
        if (!(arg1 < historyLength[arg0])) _desolexPanic(50);
        return address(stor_expr_b >> 0);
    }
    
    function revokeRole(bytes32 role, address account) public {
        require(bytes1(hasRole[stor_expr_d][msg.sender]), AccessControlUnauthorizedAccount());
        uint256 value0 = 0;
        if (bytes1(hasRole[role][account])) {
            hasRole[role][account] = false;
            emit RoleRevoked(role, account, msg.sender);
            value0 = 0x01;
        }
        if (value0 != 0x0) {
            uint256 value4 = 0;
            if (!(0 == (!(!(mapping_expr_g[account]))))) {
                uint256 value1 = 0;
                uint256 value2 = 0;
                uint256 value3 = 0;
                if ((mapping_expr_g[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) != (stor_expr_h + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) {
                    if (!(((stor_expr_h + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_i))) _desolexPanic(50);
                    if (!(((mapping_expr_g[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_j))) _desolexPanic(50);
                    stor_expr_m = (0 & stor_expr_n) | ((stor_expr_l >> 0) << 0);
                    mapping_expr_g[stor_expr_l >> 0] = mapping_expr_g[account];
                } else {
                    value1 = mapping_expr_g[account] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
                    value2 = stor_expr_h + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
                    value3 = mapping_expr_g[account];
                }
                if (!(stor_expr_h != 0x0)) _desolexPanic(49);
                if (!(((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + stor_expr_h) < stor_expr_p))) _desolexPanic(50);
                stor_expr_q = (0) & stor_expr_q;
                stor_expr_h = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + stor_expr_h;
                mapping_expr_g[account] = 0;
                value4 = 0x01;
            }
        }
    }
    
    function Unknown_ca0f8f3b(uint256 arg0, address arg1) public view returns (bool) {
        uint256 value0 = msg.data[0] >> 0xe0;
        bool flag0 = (bytes1(unresolved_e1682f11[arg0][arg1])) == 0x01;
        uint256 value1 = 0x20;
        if (activeAddress[arg0] == arg1) {
            if (!(bytes1(unresolved_e1682f11[arg0][arg1]) < 0x05)) _desolexPanic(33);
        } else {
            value0 = arg0;
            flag0 = activeAddress[arg0] == arg1;
            value1 = arg1;
        }
        return flag0;
    }
    
    function Unknown_bbd3eecd(uint256 arg0, address arg1) public {
        require(mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender], AccessControlUnauthorizedAccount());
        if (!(bytes1(unresolved_e1682f11[arg0][arg1]) < 0x05)) _desolexPanic(33);
        uint256 value0 = msg.data[0] >> 0xe0;
        if (bytes1(unresolved_e1682f11[arg0][arg1]) == 0x02) {
            value0 = bytes1(unresolved_e1682f11[arg0][arg1]);
        }
        require(!((unresolved_e1682f11[arg0][arg1] & 0xff) != 0x2 && (unresolved_e1682f11[arg0][arg1] & 0xff) != 0x3), CustomError_ba299947());
        (bool success0, bytes memory returnData0) = arg1.totalLiability(); // staticcall
        require(success0);
        uint256 value2 = msg.data[0] >> 0xe0;
        uint256 var_d;
        uint256 value3 = var_d.length;
        if (success0) {
            uint256 value1 = returnData0.length;
            if (0x20 <= returnData0.length) {
                value1 = 0x20;
            }
            if (((var_d + ((value1 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_d + ((value1 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_d)) _desolexPanic(65);
            var_d = var_d + ((value1 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_d + value1) - var_d) >= 0x20);
        } else {
            value2 = var_d;
            value3 = 0;
        }
        require(!(value3), OutstandingLiability());
        (bool success1, bytes memory returnData1) = arg1.hasOpenPositions(); // staticcall
        require(success1);
        uint256 value5 = msg.data[0] >> 0xe0;
        uint256 value6 = var_d.length;
        if (success1) {
            uint256 value4 = returnData1.length;
            if (0x20 <= returnData1.length) {
                value4 = 0x20;
            }
            if (((var_d + ((value4 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_d + ((value4 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_d)) _desolexPanic(65);
            var_d = var_d + ((value4 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            require(((var_d + value4) - var_d) >= 0x20);
            require(var_d.length == var_d.length);
        } else {
            value5 = var_d;
            value6 = 0;
        }
        require(!(value6), OpenPositionsRemain());
        unresolved_e1682f11[arg0][arg1] = (unresolved_e1682f11[arg0][arg1] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)) | 0x04;
        internal_1e57(arg0, arg1);
        emit Event_33a4190f(arg0, arg1);
    }
    
    function Unknown_a3246ad3(uint256 arg0) public view returns (bytes memory) {
        uint256 value0 = 0;
        uint256 value1 = keccak256(abi.encode(keccak256(abi.encode(arg0, 0x01))));
        uint256 var_a;
        uint256 value2 = var_a + 0x20;
        while (true) {
            if (value0 >= getRoleMemberCount[arg0]) {
                break;
            }
            value0 = 0x01 + value0;
            value1 = 0x01 + value1;
            value2 = value2 + 0x20;
        }
        if (((var_a + (((value2 - var_a) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_a + (((value2 - var_a) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_a)) _desolexPanic(65);
        uint256 value3 = 0;
        uint256 value4 = var_a + 0x20;
        uint256 value5 = var_a + 0x40;
        while (true) {
            var_a = var_a + (((value2 - var_a) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
            if (value3 >= var_a.length) {
                return abi.encodePacked(0x20, var_a.length);
            }
            value3 = 0x01 + value3;
            value4 = value4 + 0x20;
            value5 = 0x20 + value5;
        }
    }
    
    function Unknown_9010d07c(uint256 arg0, uint256 arg1) public view returns (address) {
        if (!(arg1 < getRoleMemberCount[arg0])) _desolexPanic(50);
        return address(stor_expr_af >> 0);
    }
    
    function Unknown_84f7a864(uint256 arg0) public payable {
        if (!(msg.value)) {
            if ((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) >= 0x20) {
                if (mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender]) {
                    uint256 var_c;
                    if (!(((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c))) {
                        var_c = var_c + 0x80;
                        require(address(pendingProposal[arg0]), ProposalMissing());
                        require(block.timestamp >= uint64(var_h), CustomError_d466baab());
                        uint256 value1 = 0;
                        uint256 value2 = 0;
                        if (!(address(var_c.length).code.length == 0x0)) {
                            if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                            var_c = var_c + 0x40;
                            (bool success0, bytes memory returnData0) = address(var_c.length).protocolRegistry(); // staticcall
                            uint256 value0 = 0x60;
                            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));
                                value0 = var_c;
                            }
                            bool flag0 = !(var_m == 0x20);
                            if (!success0) {
                                flag0 = !success0;
                            }
                            uint256 value63 = 0;
                            uint256 value64 = 0;
                            if (!(flag0)) {
                                value63 = 0x01;
                                value64 = var_n;
                            }
                            value1 = value63;
                            value2 = value64;
                        }
                        uint256 value3 = 0;
                        uint256 value4 = 0;
                        if (!(value1 != 0x0 && value2 > 0xffffffffffffffffffffffffffffffffffffffff || value1 == 0x0)) {
                            value3 = 0x01;
                            value4 = address(value2);
                        }
                        uint256 value6 = 0;
                        uint256 value7 = 0;
                        if (!(address(var_c.length).code.length == 0x0)) {
                            if (((var_c + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                            var_c = var_c + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                            (bool success1, bytes memory returnData1) = address(var_c.length).moduleKey(); // staticcall
                            uint256 value5 = 0x60;
                            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));
                                value5 = var_c;
                            }
                            bool flag2 = !(var_o == 0x20);
                            if (!success1) {
                                flag2 = !success1;
                            }
                            uint256 value65 = 0;
                            uint256 value66 = 0;
                            if (!(flag2)) {
                                value65 = 0x01;
                                value66 = var_p;
                            }
                            value6 = value65;
                            value7 = value66;
                        }
                        uint256 value9 = 0;
                        uint256 value10 = 0;
                        if (!(address(var_c.length).code.length == 0x0)) {
                            if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                            var_c = var_c + 0x40;
                            (bool success2, bytes memory returnData2) = address(var_c.length).interfaceVersion(); // staticcall
                            uint256 value8 = 0x60;
                            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));
                                value8 = var_c;
                            }
                            bool flag3 = !(var_q == 0x20);
                            if (!success2) {
                                flag3 = !success2;
                            }
                            uint256 value67 = 0;
                            uint256 value68 = 0;
                            if (!(flag3)) {
                                value67 = 0x01;
                                value68 = var_r;
                            }
                            value9 = value67;
                            value10 = value68;
                        }
                        uint256 value11 = 0;
                        uint256 value12 = 0;
                        if (!(value9 != 0x0 && value10 > 0xffffffffffffffff || value9 == 0x0)) {
                            value11 = 0x01;
                            value12 = uint64(value10);
                        }
                        uint256 value13 = 0;
                        bool flag5 = value6 == 0x0;
                        if (value3 == 0) {
                            value13 = value6;
                            flag5 = value3 == 0x0;
                        }
                        uint256 value14 = 0;
                        bool flag6 = value11 == 0x0;
                        if (flag5) {
                            value14 = value11;
                            flag6 = flag5;
                        }
                        uint256 value15 = 0;
                        bool flag7 = address(this) != (0xffffffffffffffffffffffffffffffffffffffff & value4);
                        if (flag6) {
                            value15 = value4;
                            flag7 = flag6;
                        }
                        uint256 value16 = 0;
                        bool flag8 = value7 != arg0;
                        if (flag7) {
                            value16 = value7;
                            flag8 = flag7;
                        }
                        uint256 value17 = 0;
                        uint256 value18 = 0;
                        if (flag8) {
                            value17 = uint64(var_i);
                            value18 = value12;
                        }
                        require(!(!flag8 && (value12 & 0xffffffffffffffff) != (0xffffffffffffffff & uint64(var_i)) || flag8), CustomError_df45d152());
                        bool flag10 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
                        if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
                            flag10 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
                        }
                        bool flag11 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
                        if (flag10) {
                            flag11 = flag10;
                        }
                        bool flag12 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
                        if (flag11) {
                            flag12 = flag11;
                        }
                        bool flag13 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
                        if (flag12) {
                            flag13 = flag12;
                        }
                        if (!(!flag13 && arg0 == 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b || flag13)) {
                            uint256 value20 = 0;
                            uint256 value21 = 0;
                            if (!(address(var_c.length).code.length == 0x0)) {
                                if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                var_c = var_c + 0x40;
                                (bool success3, bytes memory returnData3) = address(var_c.length).totalLiability(); // staticcall
                                uint256 value19 = 0x60;
                                if ((returnData3.length) != 0x0) {
                                    if (!(returnData3.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                    if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                    var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                    value19 = var_c;
                                }
                                bool flag15 = !(var_s == 0x20);
                                if (!success3) {
                                    flag15 = !success3;
                                }
                                uint256 value69 = 0;
                                uint256 value70 = 0;
                                if (!(flag15)) {
                                    value69 = 0x01;
                                    value70 = var_t;
                                }
                                value20 = value69;
                                value21 = value70;
                            }
                            uint256 value23 = 0;
                            uint256 value24 = 0;
                            if (!(address(var_c.length).code.length == 0x0)) {
                                if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                var_c = var_c + 0x40;
                                (bool success4, bytes memory returnData4) = address(var_c.length).hasOpenPositions(); // staticcall
                                uint256 value22 = 0x60;
                                if ((returnData4.length) != 0x0) {
                                    if (!(returnData4.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                    if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                    var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                    value22 = var_c;
                                }
                                bool flag16 = !(var_u == 0x20);
                                if (!success4) {
                                    flag16 = !success4;
                                }
                                uint256 value71 = 0;
                                uint256 value72 = 0;
                                if (!(flag16)) {
                                    value71 = 0x01;
                                    value72 = var_v;
                                }
                                value23 = value71;
                                value24 = value72;
                            }
                            uint256 value25 = 0;
                            bool flag18 = false;
                            if (!(value23 != 0x0 && value24 > 0x1 || value23 == 0x0)) {
                                value25 = 0x01;
                                flag18 = value24 != 0x0;
                            }
                            uint256 value26 = 0;
                            if (value20 == 0) {
                                value26 = value25;
                            }
                            require(!(value20 != 0x0 && value25 == 0x0 || value20 == 0x0), CustomError_df45d152());
                        }
                        if (arg0 == 0x6aa03964db1f7257357ef09714a5f0ca3633723df419e97015e0c7a3e83edb7) {
                            uint256 value28 = 0;
                            uint256 value29 = 0;
                            if (!(address(var_c.length).code.length == 0x0)) {
                                if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                var_c = var_c + 0x40;
                                (bool success5, bytes memory returnData5) = address(var_c.length).Unknown_03160fb4(); // staticcall
                                uint256 value27 = 0x60;
                                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));
                                    value27 = var_c;
                                }
                                bool flag20 = !(var_w == 0x20);
                                if (!success5) {
                                    flag20 = !success5;
                                }
                                uint256 value73 = 0;
                                uint256 value74 = 0;
                                if (!(flag20)) {
                                    value73 = 0x01;
                                    value74 = var_x;
                                }
                                value28 = value73;
                                value29 = value74;
                            }
                            uint256 value90 = 0;
                            bool flag23 = false;
                            if (!(value28 != 0x0 && value29 > 0x1 || value28 == 0x0)) {
                                flag22 = true;
                                flag23 = value29 != 0x0;
                            }
                            uint256 value31 = 0;
                            uint256 value76 = 0;
                            if (!(address(var_c.length).code.length == 0x0)) {
                                if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                var_c = var_c + 0x40;
                                (bool success6, bytes memory returnData6) = address(var_c.length).bootstrapOpen(); // staticcall
                                uint256 value30 = 0x60;
                                if ((returnData6.length) != 0x0) {
                                    if (!(returnData6.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                    if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                    var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                    value30 = var_c;
                                }
                                bool flag24 = !(var_y == 0x20);
                                if (!success6) {
                                    flag24 = !success6;
                                }
                                uint256 value75 = 0;
                                uint256 value77 = 0;
                                if (!(flag24)) {
                                    value75 = 0x01;
                                    value77 = var_z;
                                }
                                value31 = value75;
                                value76 = value77;
                            }
                        } else {
                            if (arg0 == 0x2f07be5c4f9af7c6230f784f19332431b638fed28e5100d31a51b4e3fe04c53e) {
                                uint256 value33 = 0;
                                uint256 value34 = 0;
                                if (!(address(var_c.length).code.length == 0x0)) {
                                    if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                    var_c = var_c + 0x40;
                                    (bool success7, bytes memory returnData7) = address(var_c.length).protocolReceiver(); // staticcall
                                    uint256 value32 = 0x60;
                                    if ((returnData7.length) != 0x0) {
                                        if (!(returnData7.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                        if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                        var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                        value32 = var_c;
                                    }
                                    bool flag25 = !(var_aa == 0x20);
                                    if (!success7) {
                                        flag25 = !success7;
                                    }
                                    uint256 value78 = 0;
                                    uint256 value79 = 0;
                                    if (!(flag25)) {
                                        value78 = 0x01;
                                        value79 = var_ab;
                                    }
                                    value33 = value78;
                                    value34 = value79;
                                }
                                uint256 value35 = 0;
                                uint256 value36 = 0;
                                if (!(value33 != 0x0 && value34 > 0xffffffffffffffffffffffffffffffffffffffff || value33 == 0x0)) {
                                    value35 = 0x01;
                                    value36 = address(value34);
                                }
                                uint256 value37 = 0;
                                bool flag27 = value35 == 0x0;
                                if (!(address(stor_c3546aafc2661e0e1551b967bc48605ceb507c40ffe3291d607231d9aa9b06c7))) {
                                    value37 = value35;
                                    flag27 = !(address(stor_c3546aafc2661e0e1551b967bc48605ceb507c40ffe3291d607231d9aa9b06c7));
                                }
                                if (!flag27) {
                                    require(address(value36) == (address(stor_c3546aafc2661e0e1551b967bc48605ceb507c40ffe3291d607231d9aa9b06c7)), CustomError_df45d152());
                                } else {
                                    require(!(flag27), CustomError_df45d152());
                                }
                            } else {
                                if (((arg0 != 0xca3d97006cf7d8eb1c25ea3619005d254dd30f30d857ea714bdd35c870ba2a22) && (arg0 == 0x28726adcc70d62d71a8a9aded75a5c405c5d4f4b431d2e7c15f9d7a6bdfc5f21)) || (arg0 == 0xca3d97006cf7d8eb1c25ea3619005d254dd30f30d857ea714bdd35c870ba2a22)) {
                                    uint256 value39 = 0;
                                    uint256 value40 = 0;
                                    if (!(address(var_c.length).code.length == 0x0)) {
                                        if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                        var_c = var_c + 0x40;
                                        (bool success8, bytes memory returnData8) = address(var_c.length).predecessor(); // staticcall
                                        uint256 value38 = 0x60;
                                        if ((returnData8.length) != 0x0) {
                                            if (!(returnData8.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                            if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                            var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                            value38 = var_c;
                                        }
                                        bool flag29 = !(var_ac == 0x20);
                                        if (!success8) {
                                            flag29 = !success8;
                                        }
                                        uint256 value80 = 0;
                                        uint256 value81 = 0;
                                        if (!(flag29)) {
                                            value80 = 0x01;
                                            value81 = var_ad;
                                        }
                                        value39 = value80;
                                        value40 = value81;
                                    }
                                    uint256 value91 = 0;
                                    uint256 value41 = 0;
                                    if (!(value39 != 0x0 && value40 > 0xffffffffffffffffffffffffffffffffffffffff || value39 == 0x0)) {
                                        flag31 = true;
                                        value41 = address(value40);
                                    }
                                    if (flag31) {
                                        require(activeAddress[arg0] == (address(value41)), CustomError_df45d152());
                                    } else {
                                        require(flag31, CustomError_df45d152());
                                    }
                                } else {
                                    if (arg0 == 0x39485061e9df9de2e52725d3f549782722891330cb556e7e1c6c81b75a5d6f34) {
                                        uint256 value43 = 0;
                                        uint256 value44 = 0;
                                        if (!(address(var_c.length).code.length == 0x0)) {
                                            if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                            var_c = var_c + 0x40;
                                            (bool success9, bytes memory returnData9) = address(var_c.length).stakingMain(); // staticcall
                                            uint256 value42 = 0x60;
                                            if ((returnData9.length) != 0x0) {
                                                if (!(returnData9.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                                if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                                var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                                value42 = var_c;
                                            }
                                            bool flag32 = !(var_ae == 0x20);
                                            if (!success9) {
                                                flag32 = !success9;
                                            }
                                            uint256 value82 = 0;
                                            uint256 value83 = 0;
                                            if (!(flag32)) {
                                                value82 = 0x01;
                                                value83 = var_af;
                                            }
                                            value43 = value82;
                                            value44 = value83;
                                        }
                                        uint256 value92 = 0;
                                        uint256 value45 = 0;
                                        if (!(value43 != 0x0 && value44 > 0xffffffffffffffffffffffffffffffffffffffff || value43 == 0x0)) {
                                            flag34 = true;
                                            value45 = address(value44);
                                        }
                                        if (flag34) {
                                            bool flag35 = (address(value45)) == (stor_671ca1b96299e9518aae4fe31601680d7e9939f413e36040080eb5e982df72e8);
                                            if ((0xffffffffffffffffffffffffffffffffffffffff & value45) != 0x0) {
                                            } else {
                                                flag35 = (0xffffffffffffffffffffffffffffffffffffffff & value45) != 0x0;
                                            }
                                            uint256 value46 = 0;
                                            bool flag36 = 0x01 == (bytes1(mapping_dc19aedbecc87684583f913a7cdd973b59879b34f362eaad70cb582f744658f[address(value45)]));
                                            if (flag35) {
                                                if (!(bytes1(mapping_dc19aedbecc87684583f913a7cdd973b59879b34f362eaad70cb582f744658f[address(value45)]) < 0x05)) _desolexPanic(33);
                                            } else {
                                                value46 = address(value45);
                                                flag36 = flag35;
                                            }
                                            require(flag36, CustomError_df45d152());
                                        } else {
                                            require(flag34, CustomError_df45d152());
                                        }
                                    } else {
                                        if (arg0 == 0xec3c2045da149c45c16ce5a6d86d63bb81d27c31c6383c580ec51f98d5c3ee4c) {
                                            uint256 value48 = 0;
                                            uint256 value49 = 0;
                                            if (!(address(var_c.length).code.length == 0x0)) {
                                                if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                                var_c = var_c + 0x40;
                                                (bool success10, bytes memory returnData10) = address(var_c.length).Unknown_1aa5bb66(); // staticcall
                                                uint256 value47 = 0x60;
                                                if ((returnData10.length) != 0x0) {
                                                    if (!(returnData10.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                                    if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData10.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData10.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                                    var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData10.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                                    value47 = var_c;
                                                }
                                                bool flag37 = !(var_ag == 0x20);
                                                if (!success10) {
                                                    flag37 = !success10;
                                                }
                                                uint256 value84 = 0;
                                                uint256 value85 = 0;
                                                if (!(flag37)) {
                                                    value84 = 0x01;
                                                    value85 = var_ah;
                                                }
                                                value48 = value84;
                                                value49 = value85;
                                            }
                                            uint256 value93 = 0;
                                            uint256 value50 = 0;
                                            if (!(value48 != 0x0 && value49 > 0xffffffffffffffffffffffffffffffffffffffff || value48 == 0x0)) {
                                                flag39 = true;
                                                value50 = address(value49);
                                            }
                                            if (flag39) {
                                                bool flag40 = (address(value50)) == (stor_7117ff4fa8cf6f8fd73cd81af8cfa5220c65a6a76cf5fb0e23813740ecc2ea3a);
                                                if ((0xffffffffffffffffffffffffffffffffffffffff & value50) != 0x0) {
                                                } else {
                                                    flag40 = (0xffffffffffffffffffffffffffffffffffffffff & value50) != 0x0;
                                                }
                                                bool flag41 = 0x01 == (bytes1(mapping_6078bdf681fb8eff6a05a00c6943778187080cfae18c55c0b846fcf8ece2d802[address(value50)]));
                                                if (flag40) {
                                                    if (!(bytes1(mapping_6078bdf681fb8eff6a05a00c6943778187080cfae18c55c0b846fcf8ece2d802[address(value50)]) < 0x05)) _desolexPanic(33);
                                                } else {
                                                    flag41 = flag40;
                                                }
                                                require(flag41, CustomError_df45d152());
                                            } else {
                                                require(flag39, CustomError_df45d152());
                                            }
                                        } else {
                                            bool flag42 = arg0 == 0x68de1c984c4eebc5de4b763a1ad06988c52ea9c0d76dfd49a8657b00be3dae24;
                                            if (arg0 == 0x3dce1dc86d1deb25701dba1ad261b444c7b5a7a6b9092d0a6d658ac794c13f00) {
                                                flag42 = arg0 == 0x3dce1dc86d1deb25701dba1ad261b444c7b5a7a6b9092d0a6d658ac794c13f00;
                                            }
                                            bool flag43 = arg0 == 0xbc927bfc5c186c97e68035e3b13e627bfcabf0c3e3c383eb0baaa821e9c0993;
                                            if (flag42) {
                                                flag43 = flag42;
                                            }
                                            bool flag44 = arg0 == 0x3b72d04cd592877045c3c489fde60236e534d59d13644602ca8793a8de465735;
                                            if (flag43) {
                                                flag44 = flag43;
                                            }
                                            bool flag45 = arg0 == 0x44d1897000e1820489c98f12d565e42cac755320f25261f7078ea1c4b54bf1e3;
                                            if (flag44) {
                                                flag45 = flag44;
                                            }
                                            bool flag46 = arg0 == 0x59b73660b44be2e41bfe589999d21f4dc6542904655f8d2668d67af9a866f6e8;
                                            if (flag45) {
                                                flag46 = flag45;
                                            }
                                            bool flag47 = arg0 == 0xd7d99e9ca15bc1ab44d3d7d29d8fe31071d7776deb01a8d9a728b73eed95f421;
                                            if (flag46) {
                                                flag47 = flag46;
                                            }
                                            bool flag48 = arg0 == 0x531aa12b76219651557faf31b798ad39530437acdc017b2a4cfa4e34d41b5e8f;
                                            if (flag47) {
                                                flag48 = flag47;
                                            }
                                            bool flag49 = arg0 == 0x394c2f20e3fe5e5a2d5d9824b1ccc14d91d17c934caaef23a00ca65ad7d6b244;
                                            if (flag48) {
                                                flag49 = flag48;
                                            }
                                            uint256 value51 = 0;
                                            if (flag49) {
                                                value51 = arg0;
                                            }
                                            if (((!flag49) && (arg0 == 0x689a43c59c00602c815d4b978a6b148a95d2f0b49de2a245129fb1f0a7359035)) || (flag49)) {
                                                uint256 value53 = 0;
                                                uint256 value54 = 0;
                                                if (!(address(var_c.length).code.length == 0x0)) {
                                                    if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                                    var_c = var_c + 0x40;
                                                    (bool success11, bytes memory returnData11) = address(var_c.length).Unknown_1aa5bb66(); // staticcall
                                                    uint256 value52 = 0x60;
                                                    if ((returnData11.length) != 0x0) {
                                                        if (!(returnData11.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                                        if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData11.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData11.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                                        var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData11.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                                        value52 = var_c;
                                                    }
                                                    bool flag51 = !(var_ai == 0x20);
                                                    if (!success11) {
                                                        flag51 = !success11;
                                                    }
                                                    uint256 value86 = 0;
                                                    uint256 value87 = 0;
                                                    if (!(flag51)) {
                                                        value86 = 0x01;
                                                        value87 = var_aj;
                                                    }
                                                    value53 = value86;
                                                    value54 = value87;
                                                }
                                                uint256 value55 = 0;
                                                uint256 value56 = 0;
                                                if (!(value53 != 0x0 && value54 > 0xffffffffffffffffffffffffffffffffffffffff || value53 == 0x0)) {
                                                    value55 = 0x01;
                                                    value56 = address(value54);
                                                }
                                                uint256 value58 = 0;
                                                uint256 value59 = 0;
                                                if (!(address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0).code.length == 0x0)) {
                                                    if (((var_c + 0x40) > 0xffffffffffffffff) | ((var_c + 0x40) < var_c)) _desolexPanic(65);
                                                    var_c = var_c + 0x40;
                                                    (bool success12, bytes memory returnData12) = address(var_c.length).Unknown_1aa5bb66(); // staticcall
                                                    uint256 value57 = 0x60;
                                                    if ((returnData12.length) != 0x0) {
                                                        if (!(returnData12.length <= 0xffffffffffffffff)) _desolexPanic(65);
                                                        if (((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData12.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData12.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_c)) _desolexPanic(65);
                                                        var_c = var_c + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData12.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                                                        value57 = var_c;
                                                    }
                                                    bool flag53 = !(var_ak == 0x20);
                                                    if (!success12) {
                                                        flag53 = !success12;
                                                    }
                                                    uint256 value88 = 0;
                                                    uint256 value89 = 0;
                                                    if (!(flag53)) {
                                                        value88 = 0x01;
                                                        value89 = var_al;
                                                    }
                                                    value58 = value88;
                                                    value59 = value89;
                                                }
                                                uint256 value60 = 0;
                                                uint256 value61 = 0;
                                                if (!(value58 != 0x0 && value59 > 0xffffffffffffffffffffffffffffffffffffffff || value58 == 0x0)) {
                                                    value60 = 0x01;
                                                    value61 = address(value59);
                                                }
                                                uint256 value62 = 0;
                                                bool flag55 = value60 == 0x0;
                                                if (value55 == 0) {
                                                    value62 = value60;
                                                    flag55 = value55 == 0x0;
                                                }
                                                bool flag58;
                                                if (!flag55) {
                                                    bool flag56 = (address(value56)) == (stor_7117ff4fa8cf6f8fd73cd81af8cfa5220c65a6a76cf5fb0e23813740ecc2ea3a);
                                                    if ((0xffffffffffffffffffffffffffffffffffffffff & value56) != 0x0) {
                                                    } else {
                                                        flag56 = (0xffffffffffffffffffffffffffffffffffffffff & value56) != 0x0;
                                                    }
                                                    bool flag57 = 0x01 == (bytes1(mapping_6078bdf681fb8eff6a05a00c6943778187080cfae18c55c0b846fcf8ece2d802[address(value56)]));
                                                    if (flag56) {
                                                        if (!(bytes1(mapping_6078bdf681fb8eff6a05a00c6943778187080cfae18c55c0b846fcf8ece2d802[address(value56)]) < 0x05)) _desolexPanic(33);
                                                    } else {
                                                        flag57 = flag56;
                                                    }
                                                    flag58 = !flag57;
                                                } else {
                                                    flag58 = flag55;
                                                }
                                                address account1 = address(0);
                                                bool flag61;
                                                if (!flag58) {
                                                    bool flag59 = (address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0)) == (address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0));
                                                    if (!(!(address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0)))) {
                                                    } else {
                                                        flag59 = !(!(address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0)));
                                                    }
                                                    address account0 = address(0);
                                                    bool flag60 = 0x01 == (bytes1(mapping_17c8f720dea4136a24f56caa6b86efa86bb9713a597d5da2be9a69f89fa013a0[address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0)]));
                                                    if (flag59) {
                                                        if (!(bytes1(mapping_17c8f720dea4136a24f56caa6b86efa86bb9713a597d5da2be9a69f89fa013a0[address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0)]) < 0x05)) _desolexPanic(33);
                                                    } else {
                                                        account0 = address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0);
                                                        flag60 = flag59;
                                                    }
                                                    flag61 = !flag60;
                                                } else {
                                                    account1 = address(stor_2f07fdb8e72d9526a11e209d367088689fc74d2103dea113ea5f345a35e203f0);
                                                    flag61 = flag58;
                                                }
                                                if (!flag61) {
                                                    require(address(value56) == (address(value61)), CustomError_df45d152());
                                                } else {
                                                    require(!(flag61), CustomError_df45d152());
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            require(unresolved_6f7292e9[arg0] < 0x10, CustomError_99305b7a());
                            if (activeAddress[arg0] != 0x0) {
                                unresolved_e1682f11[arg0][activeAddress[arg0] & (0xffffffffffffffffffffffffffffffffffffffff) & (0xffffffffffffffffffffffffffffffffffffffff)] = 0x02 | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & unresolved_e1682f11[arg0][activeAddress[arg0] & (0xffffffffffffffffffffffffffffffffffffffff) & (0xffffffffffffffffffffffffffffffffffffffff)]);
                            }
                            activeAddress[arg0] = (address(var_c.length)) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & activeAddress[arg0]);
                            activeVersion[arg0] = (uint64(var_am)) | (0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 & activeVersion[arg0]);
                            unresolved_e1682f11[arg0][address(var_c.length)] = true;
                            mapping_a[arg0][address(var_c.length)] = true;
                            if (!(historyLength[arg0] < 0x010000000000000000)) _desolexPanic(65);
                            historyLength[arg0] = historyLength[arg0] + 0x01;
                            if (!(historyLength[arg0] < historyLength[arg0])) _desolexPanic(50);
                            stor_expr_av = (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & stor_expr_av) | (0xffffffffffffffffffffffffffffffffffffffff & (0xffffffffffffffffffffffffffffffffffffffff & (var_c.length)) << 0);
                            require(unresolved_6f7292e9[arg0] < 0x10, CustomError_99305b7a());
                            if (!(unresolved_6f7292e9[arg0] < 0x010000000000000000)) _desolexPanic(65);
                            unresolved_6f7292e9[arg0] = unresolved_6f7292e9[arg0] + 0x01;
                            if (!((historyLength[arg0] < stor_expr_aw))) _desolexPanic(50);
                            stor_expr_ax = (~(0xffffffffffffffffffffffffffffffffffffffff << (0 << 0x03)) & stor_expr_ax) | (address(var_c.length) << (0 << 0x03));
                            mapping_9[arg0][address(var_c.length)] = unresolved_6f7292e9[arg0];
                            pendingProposal[arg0] = 0;
                            stor_expr_ah = 0;
                            stor_expr_ai = 0;
                            emit Event_cf3af842(arg0, activeAddress[arg0], address(var_c.length), uint64(var_i));
                        }
                    }
                }
            }
        }
    }
    
    function Unknown_641b82d7(uint256 arg0, address arg1, uint64 arg2, uint256 arg3) public {
        require(arg2 == (arg2 & 0xffffffffffffffff));
        require(mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender], AccessControlUnauthorizedAccount());
        require(arg0 != 0x0, CustomError_50bf9df2());
        bool flag0 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
        if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
            flag0 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
        }
        bool flag1 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
        if (flag0) {
            flag1 = flag0;
        }
        bool flag2 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
        if (flag1) {
            flag2 = flag1;
        }
        bool flag3 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
        if (flag2) {
            flag3 = flag2;
        }
        uint256 var_e;
        if (!flag3) {
            require(arg0 != 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b, CustomError_bb8e3b1d());
            require(arg1.code.length != 0x0, NotContract());
            require(!(address(pendingProposal[arg0])), ProposalAlreadyExists());
            require(!(bytes1(mapping_a[arg0][arg1])), ModuleAlreadyRegistered());
            bool flag4 = !(uint64(arg2) > (uint64(activeVersion[arg0])));
            if ((arg2 & 0xffffffffffffffff) != 0x0) {
            } else {
                flag4 = (arg2 & 0xffffffffffffffff) == 0x0;
            }
            require(!(flag4), VersionNotIncreasing());
            uint256 value1 = 0;
            uint256 value2 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success0, bytes memory returnData0) = arg1.protocolRegistry(); // staticcall
                uint256 value0 = 0x60;
                if ((returnData0.length) != 0x0) {
                    if (!(returnData0.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value0 = var_e;
                }
                bool flag5 = !(var_g == 0x20);
                if (!success0) {
                    flag5 = !success0;
                }
                uint256 value66 = 0;
                uint256 value67 = 0;
                if (!(flag5)) {
                    value66 = 0x01;
                    value67 = var_h;
                }
                value1 = value66;
                value2 = value67;
            }
            uint256 value3 = 0;
            uint256 value4 = 0;
            if (!(value1 != 0x0 && value2 > 0xffffffffffffffffffffffffffffffffffffffff || value1 == 0x0)) {
                value3 = 0x01;
                value4 = address(value2);
            }
            uint256 value6 = 0;
            uint256 value7 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                var_e = var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                (bool success1, bytes memory returnData1) = arg1.moduleKey(); // staticcall
                uint256 value5 = 0x60;
                if ((returnData1.length) != 0x0) {
                    if (!(returnData1.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value5 = var_e;
                }
                bool flag7 = !(var_i == 0x20);
                if (!success1) {
                    flag7 = !success1;
                }
                uint256 value68 = 0;
                uint256 value69 = 0;
                if (!(flag7)) {
                    value68 = 0x01;
                    value69 = var_j;
                }
                value6 = value68;
                value7 = value69;
            }
            uint256 value9 = 0;
            uint256 value10 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success2, bytes memory returnData2) = arg1.interfaceVersion(); // staticcall
                uint256 value8 = 0x60;
                if ((returnData2.length) != 0x0) {
                    if (!(returnData2.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value8 = var_e;
                }
                bool flag8 = !(var_k == 0x20);
                if (!success2) {
                    flag8 = !success2;
                }
                uint256 value70 = 0;
                uint256 value71 = 0;
                if (!(flag8)) {
                    value70 = 0x01;
                    value71 = var_l;
                }
                value9 = value70;
                value10 = value71;
            }
            uint256 value11 = 0;
            uint256 value12 = 0;
            if (!(value9 != 0x0 && value10 > 0xffffffffffffffff || value9 == 0x0)) {
                value11 = 0x01;
                value12 = uint64(value10);
            }
            uint256 value13 = 0;
            bool flag10 = value6 == 0x0;
            if (value3 == 0) {
                value13 = value6;
                flag10 = value3 == 0x0;
            }
            uint256 value14 = 0;
            bool flag11 = value11 == 0x0;
            if (flag10) {
                value14 = value11;
                flag11 = flag10;
            }
            uint256 value15 = 0;
            bool flag12 = address(this) != (0xffffffffffffffffffffffffffffffffffffffff & value4);
            if (flag11) {
                value15 = value4;
                flag12 = flag11;
            }
            uint256 value16 = 0;
            bool flag13 = value7 != arg0;
            if (flag12) {
                value16 = value7;
                flag13 = flag12;
            }
            uint256 value17 = 0;
            uint256 value18 = 0;
            if (flag13) {
                value17 = arg2;
                value18 = value12;
            }
            require(!(!flag13 && (value12 & 0xffffffffffffffff) != (0xffffffffffffffff & arg2) || flag13), CustomError_df45d152());
            bool flag15 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
            if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
                flag15 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
            }
            bool flag16 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
            if (flag15) {
                flag16 = flag15;
            }
            bool flag17 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
            if (flag16) {
                flag17 = flag16;
            }
            bool flag18 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
            if (flag17) {
                flag18 = flag17;
            }
            if (!(!flag18 && arg0 == 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b || flag18)) {
                uint256 value20 = 0;
                uint256 value21 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success3, bytes memory returnData3) = arg1.totalLiability(); // staticcall
                    uint256 value19 = 0x60;
                    if ((returnData3.length) != 0x0) {
                        if (!(returnData3.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value19 = var_e;
                    }
                    bool flag20 = !(var_m == 0x20);
                    if (!success3) {
                        flag20 = !success3;
                    }
                    uint256 value72 = 0;
                    uint256 value73 = 0;
                    if (!(flag20)) {
                        value72 = 0x01;
                        value73 = var_n;
                    }
                    value20 = value72;
                    value21 = value73;
                }
                uint256 value23 = 0;
                uint256 value24 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success4, bytes memory returnData4) = arg1.hasOpenPositions(); // staticcall
                    uint256 value22 = 0x60;
                    if ((returnData4.length) != 0x0) {
                        if (!(returnData4.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value22 = var_e;
                    }
                    bool flag21 = !(var_o == 0x20);
                    if (!success4) {
                        flag21 = !success4;
                    }
                    uint256 value74 = 0;
                    uint256 value75 = 0;
                    if (!(flag21)) {
                        value74 = 0x01;
                        value75 = var_p;
                    }
                    value23 = value74;
                    value24 = value75;
                }
                uint256 value25 = 0;
                bool flag23 = false;
                if (!(value23 != 0x0 && value24 > 0x1 || value23 == 0x0)) {
                    value25 = 0x01;
                    flag23 = value24 != 0x0;
                }
                uint256 value26 = 0;
                if (value20 == 0) {
                    value26 = value25;
                }
                require(!(value20 != 0x0 && value25 == 0x0 || value20 == 0x0), CustomError_df45d152());
            }
            if (!(0x2f07be5c4f9af7c6230f784f19332431b638fed28e5100d31a51b4e3fe04c53e != arg0)) {
                uint256 value28 = 0;
                uint256 value29 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success5, bytes memory returnData5) = arg1.protocolReceiver(); // staticcall
                    uint256 value27 = 0x60;
                    if ((returnData5.length) != 0x0) {
                        if (!(returnData5.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value27 = var_e;
                    }
                    bool flag25 = !(var_q == 0x20);
                    if (!success5) {
                        flag25 = !success5;
                    }
                    uint256 value76 = 0;
                    uint256 value77 = 0;
                    if (!(flag25)) {
                        value76 = 0x01;
                        value77 = var_r;
                    }
                    value28 = value76;
                    value29 = value77;
                }
                uint256 value30 = 0;
                uint256 value31 = 0;
                if (!(value28 != 0x0 && value29 > 0xffffffffffffffffffffffffffffffffffffffff || value28 == 0x0)) {
                    value30 = 0x01;
                    value31 = address(value29);
                }
                bool flag27 = value31.code.length == 0x0;
                if (value30 == 0) {
                    flag27 = value30 == 0x0;
                }
                address account0 = address(0);
                uint256 value32 = 0;
                if (flag27) {
                    account0 = arg1;
                    value32 = value31;
                }
                require(!(!flag27 && arg1 == (0xffffffffffffffffffffffffffffffffffffffff & value31) || flag27), CustomError_df45d152());
            }
        } else {
            require(!(flag3), CustomError_bb8e3b1d());
            require(arg1.code.length != 0x0, NotContract());
            require(!(address(pendingProposal[arg0])), ProposalAlreadyExists());
            require(!(bytes1(mapping_a[arg0][arg1])), ModuleAlreadyRegistered());
            bool flag29 = !(uint64(arg2) > (uint64(activeVersion[arg0])));
            if ((arg2 & 0xffffffffffffffff) != 0x0) {
            } else {
                flag29 = (arg2 & 0xffffffffffffffff) == 0x0;
            }
            require(!(flag29), VersionNotIncreasing());
            uint256 value34 = 0;
            uint256 value35 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success6, bytes memory returnData6) = arg1.protocolRegistry(); // staticcall
                uint256 value33 = 0x60;
                if ((returnData6.length) != 0x0) {
                    if (!(returnData6.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value33 = var_e;
                }
                bool flag30 = !(var_s == 0x20);
                if (!success6) {
                    flag30 = !success6;
                }
                uint256 value78 = 0;
                uint256 value79 = 0;
                if (!(flag30)) {
                    value78 = 0x01;
                    value79 = var_t;
                }
                value34 = value78;
                value35 = value79;
            }
            uint256 value36 = 0;
            uint256 value37 = 0;
            if (!(value34 != 0x0 && value35 > 0xffffffffffffffffffffffffffffffffffffffff || value34 == 0x0)) {
                value36 = 0x01;
                value37 = address(value35);
            }
            uint256 value39 = 0;
            uint256 value40 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                var_e = var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                (bool success7, bytes memory returnData7) = arg1.moduleKey(); // staticcall
                uint256 value38 = 0x60;
                if ((returnData7.length) != 0x0) {
                    if (!(returnData7.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value38 = var_e;
                }
                bool flag32 = !(var_u == 0x20);
                if (!success7) {
                    flag32 = !success7;
                }
                uint256 value80 = 0;
                uint256 value81 = 0;
                if (!(flag32)) {
                    value80 = 0x01;
                    value81 = var_v;
                }
                value39 = value80;
                value40 = value81;
            }
            uint256 value42 = 0;
            uint256 value43 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success8, bytes memory returnData8) = arg1.interfaceVersion(); // staticcall
                uint256 value41 = 0x60;
                if ((returnData8.length) != 0x0) {
                    if (!(returnData8.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value41 = var_e;
                }
                bool flag33 = !(var_w == 0x20);
                if (!success8) {
                    flag33 = !success8;
                }
                uint256 value82 = 0;
                uint256 value83 = 0;
                if (!(flag33)) {
                    value82 = 0x01;
                    value83 = var_x;
                }
                value42 = value82;
                value43 = value83;
            }
            uint256 value44 = 0;
            uint256 value45 = 0;
            if (!(value42 != 0x0 && value43 > 0xffffffffffffffff || value42 == 0x0)) {
                value44 = 0x01;
                value45 = uint64(value43);
            }
            uint256 value46 = 0;
            bool flag35 = value39 == 0x0;
            if (value36 == 0) {
                value46 = value39;
                flag35 = value36 == 0x0;
            }
            uint256 value47 = 0;
            bool flag36 = value44 == 0x0;
            if (flag35) {
                value47 = value44;
                flag36 = flag35;
            }
            uint256 value48 = 0;
            bool flag37 = address(this) != (0xffffffffffffffffffffffffffffffffffffffff & value37);
            if (flag36) {
                value48 = value37;
                flag37 = flag36;
            }
            uint256 value49 = 0;
            bool flag38 = value40 != arg0;
            if (flag37) {
                value49 = value40;
                flag38 = flag37;
            }
            uint256 value50 = 0;
            uint256 value51 = 0;
            if (flag38) {
                value50 = arg2;
                value51 = value45;
            }
            require(!(!flag38 && (value45 & 0xffffffffffffffff) != (0xffffffffffffffff & arg2) || flag38), CustomError_df45d152());
            bool flag40 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
            if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
                flag40 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
            }
            bool flag41 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
            if (flag40) {
                flag41 = flag40;
            }
            bool flag42 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
            if (flag41) {
                flag42 = flag41;
            }
            bool flag43 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
            if (flag42) {
                flag43 = flag42;
            }
            if (!(!flag43 && arg0 == 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b || flag43)) {
                uint256 value53 = 0;
                uint256 value54 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success9, bytes memory returnData9) = arg1.totalLiability(); // staticcall
                    uint256 value52 = 0x60;
                    if ((returnData9.length) != 0x0) {
                        if (!(returnData9.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value52 = var_e;
                    }
                    bool flag45 = !(var_y == 0x20);
                    if (!success9) {
                        flag45 = !success9;
                    }
                    uint256 value84 = 0;
                    uint256 value85 = 0;
                    if (!(flag45)) {
                        value84 = 0x01;
                        value85 = var_z;
                    }
                    value53 = value84;
                    value54 = value85;
                }
                uint256 value56 = 0;
                uint256 value57 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success10, bytes memory returnData10) = arg1.hasOpenPositions(); // staticcall
                    uint256 value55 = 0x60;
                    if ((returnData10.length) != 0x0) {
                        if (!(returnData10.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData10.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData10.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData10.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value55 = var_e;
                    }
                    bool flag46 = !(var_aa == 0x20);
                    if (!success10) {
                        flag46 = !success10;
                    }
                    uint256 value86 = 0;
                    uint256 value87 = 0;
                    if (!(flag46)) {
                        value86 = 0x01;
                        value87 = var_ab;
                    }
                    value56 = value86;
                    value57 = value87;
                }
                uint256 value58 = 0;
                uint256 value90 = 0;
                if (!(value56 != 0x0 && value57 > 0x1 || value56 == 0x0)) {
                    value58 = 0x01;
                    flag48 = value57 != 0x0;
                }
                uint256 value59 = 0;
                if (value53 == 0) {
                    value59 = value58;
                }
                require(!(value53 != 0x0 && value58 == 0x0 || value53 == 0x0), CustomError_df45d152());
            }
            if (!(0x2f07be5c4f9af7c6230f784f19332431b638fed28e5100d31a51b4e3fe04c53e != arg0)) {
                uint256 value61 = 0;
                uint256 value62 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success11, bytes memory returnData11) = arg1.protocolReceiver(); // staticcall
                    uint256 value60 = 0x60;
                    if ((returnData11.length) != 0x0) {
                        if (!(returnData11.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData11.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData11.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData11.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value60 = var_e;
                    }
                    bool flag50 = !(var_ac == 0x20);
                    if (!success11) {
                        flag50 = !success11;
                    }
                    uint256 value88 = 0;
                    uint256 value89 = 0;
                    if (!(flag50)) {
                        value88 = 0x01;
                        value89 = var_ad;
                    }
                    value61 = value88;
                    value62 = value89;
                }
                uint256 value63 = 0;
                uint256 value64 = 0;
                if (!(value61 != 0x0 && value62 > 0xffffffffffffffffffffffffffffffffffffffff || value61 == 0x0)) {
                    value63 = 0x01;
                    value64 = address(value62);
                }
                bool flag52 = value64.code.length == 0x0;
                if (value63 == 0) {
                    flag52 = value63 == 0x0;
                }
                address account1 = address(0);
                uint256 value65 = 0;
                if (flag52) {
                    account1 = arg1;
                    value65 = value64;
                }
                require(!(!flag52 && arg1 == (0xffffffffffffffffffffffffffffffffffffffff & value64) || flag52), CustomError_df45d152());
            }
        }
        if (((var_e + 0x80) > 0xffffffffffffffff) | ((var_e + 0x80) < var_e)) _desolexPanic(65);
        var_e = var_e + 0x80;
        pendingProposal[arg0] = (0xffffffffffffffff0000000000000000000000000000000000000000 & (var_af << 0xa0)) | (0xffffffffffffffffffffffffffffffffffffffff & (var_e.length) | (pendingProposal[arg0] & (0xffffffff00000000000000000000000000000000000000000000000000000000)));
        stor_expr_ah = (uint64(var_ag)) | (0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 & stor_expr_ah);
        stor_expr_ba = var_ah;
        emit Event_8d3f2604(arg0, arg1, uint64(arg2), arg3, uint64(block.timestamp + governanceDelay));
    }
    
    function Unknown_545aa9ce(uint64 arg0) public {
        require(arg0 == (arg0 & 0xffffffffffffffff));
        require(mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender], AccessControlUnauthorizedAccount());
        require(uint64(arg0) >= 0x0258, CustomError_0fa60cb4());
        governanceDelay = (governanceDelay & (0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000)) | (arg0 & (0xffffffffffffffff));
        emit Event_6622b245(uint64(governanceDelay), uint64(arg0), block.timestamp);
    }
    
    function Unknown_3f4747a3(uint256 arg0, uint256 arg1) public view returns (address) {
        if (!(arg1 < unresolved_6f7292e9[arg0])) _desolexPanic(50);
        return address(stor_expr_bb >> 0);
    }
    
    function renounceRole(bytes32 role, address account) public {
        require(account == msg.sender, AccessControlBadConfirmation());
        internal_14f6(role, account);
    }
    
    function grantRole(bytes32 role, address account) public {
        require(bytes1(hasRole[stor_expr_d][msg.sender]), AccessControlUnauthorizedAccount());
        if (!(bytes1(hasRole[role][account]) != 0x0)) {
            hasRole[role][account] = true;
            emit RoleGranted(role, account, msg.sender);
        }
        if (!(0 == (!(mapping_expr_bn[account])))) {
            if (!(stor_expr_bm < 0x010000000000000000)) _desolexPanic(65);
            stor_expr_bm = stor_expr_bm + 0x01;
            if (!(stor_expr_bm < stor_expr_bm)) _desolexPanic(50);
            stor_expr_bo = (0 & stor_expr_bo) | (account << 0);
            mapping_expr_bn[account] = stor_expr_bm;
        }
    }
    
    function Unknown_2a99cde5(uint256 arg0, address arg1) public {
        require(mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender], AccessControlUnauthorizedAccount());
        if (!(bytes1(unresolved_e1682f11[arg0][arg1]) < 0x05)) _desolexPanic(33);
        require(0x2 == (bytes1(unresolved_e1682f11[arg0][arg1])), CustomError_9efa8d12());
        unresolved_e1682f11[arg0][arg1] = 0x03 | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & unresolved_e1682f11[arg0][arg1]);
        emit Event_a230cb13(arg0, arg1);
    }
    
    function getRoleAdmin(bytes32 role) public view returns (uint256) {
        return stor_expr_d;
    }
    
    function Unknown_10398b3c(uint256 arg0, address arg1, uint64 arg2, uint256 arg3) public {
        require(arg2 == (arg2 & 0xffffffffffffffff));
        require(mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender], AccessControlUnauthorizedAccount());
        bool flag0 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
        if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
            flag0 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
        }
        bool flag1 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
        if (flag0) {
            flag1 = flag0;
        }
        bool flag2 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
        if (flag1) {
            flag2 = flag1;
        }
        bool flag3 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
        if (flag2) {
            flag3 = flag2;
        }
        if (!flag3) {
            require(arg0 == 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b, CustomError_cc69cf99());
            require(arg1.code.length != 0x0, NotContract());
            bool flag4 = bytes1(mapping_a[arg0][arg1]);
            if (!(activeAddress[arg0])) {
            } else {
                flag4 = !(!(activeAddress[arg0]));
            }
            require(!(flag4), ModuleAlreadyRegistered());
            require(uint64(arg2), VersionNotIncreasing());
            uint256 value1 = 0;
            uint256 value2 = 0;
            if (!(arg1.code.length == 0x0)) {
                uint256 var_e;
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success0, bytes memory returnData0) = arg1.protocolRegistry(); // staticcall
                uint256 value0 = 0x60;
                if ((returnData0.length) != 0x0) {
                    if (!(returnData0.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData0.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value0 = var_e;
                }
                bool flag5 = !(var_g == 0x20);
                if (!success0) {
                    flag5 = !success0;
                }
                uint256 value54 = 0;
                uint256 value55 = 0;
                if (!(flag5)) {
                    value54 = 0x01;
                    value55 = var_h;
                }
                value1 = value54;
                value2 = value55;
            }
            uint256 value3 = 0;
            uint256 value4 = 0;
            if (!(value1 != 0x0 && value2 > 0xffffffffffffffffffffffffffffffffffffffff || value1 == 0x0)) {
                value3 = 0x01;
                value4 = address(value2);
            }
            uint256 value6 = 0;
            uint256 value7 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                var_e = var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                (bool success1, bytes memory returnData1) = arg1.moduleKey(); // staticcall
                uint256 value5 = 0x60;
                if ((returnData1.length) != 0x0) {
                    if (!(returnData1.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData1.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value5 = var_e;
                }
                bool flag7 = !(var_i == 0x20);
                if (!success1) {
                    flag7 = !success1;
                }
                uint256 value56 = 0;
                uint256 value57 = 0;
                if (!(flag7)) {
                    value56 = 0x01;
                    value57 = var_j;
                }
                value6 = value56;
                value7 = value57;
            }
            uint256 value9 = 0;
            uint256 value10 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success2, bytes memory returnData2) = arg1.interfaceVersion(); // staticcall
                uint256 value8 = 0x60;
                if ((returnData2.length) != 0x0) {
                    if (!(returnData2.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData2.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value8 = var_e;
                }
                bool flag8 = !(var_k == 0x20);
                if (!success2) {
                    flag8 = !success2;
                }
                uint256 value58 = 0;
                uint256 value59 = 0;
                if (!(flag8)) {
                    value58 = 0x01;
                    value59 = var_l;
                }
                value9 = value58;
                value10 = value59;
            }
            uint256 value11 = 0;
            uint256 value12 = 0;
            if (!(value9 != 0x0 && value10 > 0xffffffffffffffff || value9 == 0x0)) {
                value11 = 0x01;
                value12 = uint64(value10);
            }
            uint256 value13 = 0;
            bool flag10 = value6 == 0x0;
            if (value3 == 0) {
                value13 = value6;
                flag10 = value3 == 0x0;
            }
            uint256 value14 = 0;
            bool flag11 = value11 == 0x0;
            if (flag10) {
                value14 = value11;
                flag11 = flag10;
            }
            uint256 value15 = 0;
            bool flag12 = address(this) != (0xffffffffffffffffffffffffffffffffffffffff & value4);
            if (flag11) {
                value15 = value4;
                flag12 = flag11;
            }
            uint256 value16 = 0;
            bool flag13 = value7 != arg0;
            if (flag12) {
                value16 = value7;
                flag13 = flag12;
            }
            uint256 value17 = 0;
            uint256 value18 = 0;
            if (flag13) {
                value17 = arg2;
                value18 = value12;
            }
            require(!(!flag13 && (value12 & 0xffffffffffffffff) != (0xffffffffffffffff & arg2) || flag13), CustomError_df45d152());
            bool flag15 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
            if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
                flag15 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
            }
            bool flag16 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
            if (flag15) {
                flag16 = flag15;
            }
            bool flag17 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
            if (flag16) {
                flag17 = flag16;
            }
            bool flag18 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
            if (flag17) {
                flag18 = flag17;
            }
            if (!(!flag18 && arg0 == 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b || flag18)) {
                uint256 value20 = 0;
                uint256 value21 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success3, bytes memory returnData3) = arg1.totalLiability(); // staticcall
                    uint256 value19 = 0x60;
                    if ((returnData3.length) != 0x0) {
                        if (!(returnData3.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData3.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value19 = var_e;
                    }
                    bool flag20 = !(var_m == 0x20);
                    if (!success3) {
                        flag20 = !success3;
                    }
                    uint256 value60 = 0;
                    uint256 value61 = 0;
                    if (!(flag20)) {
                        value60 = 0x01;
                        value61 = var_n;
                    }
                    value20 = value60;
                    value21 = value61;
                }
                uint256 value23 = 0;
                uint256 value24 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success4, bytes memory returnData4) = arg1.hasOpenPositions(); // staticcall
                    uint256 value22 = 0x60;
                    if ((returnData4.length) != 0x0) {
                        if (!(returnData4.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData4.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value22 = var_e;
                    }
                    bool flag21 = !(var_o == 0x20);
                    if (!success4) {
                        flag21 = !success4;
                    }
                    uint256 value62 = 0;
                    uint256 value63 = 0;
                    if (!(flag21)) {
                        value62 = 0x01;
                        value63 = var_p;
                    }
                    value23 = value62;
                    value24 = value63;
                }
                uint256 value25 = 0;
                bool flag23 = false;
                if (!(value23 != 0x0 && value24 > 0x1 || value23 == 0x0)) {
                    value25 = 0x01;
                    flag23 = value24 != 0x0;
                }
                uint256 value26 = 0;
                if (value20 == 0) {
                    value26 = value25;
                }
                require(!(value20 != 0x0 && value25 == 0x0 || value20 == 0x0), CustomError_df45d152());
            }
        } else {
            require(flag3, CustomError_cc69cf99());
            require(arg1.code.length != 0x0, NotContract());
            bool flag25 = bytes1(mapping_a[arg0][arg1]);
            if (!(activeAddress[arg0])) {
            } else {
                flag25 = !(!(activeAddress[arg0]));
            }
            require(!(flag25), ModuleAlreadyRegistered());
            require(uint64(arg2), VersionNotIncreasing());
            uint256 value28 = 0;
            uint256 value29 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success5, bytes memory returnData5) = arg1.protocolRegistry(); // staticcall
                uint256 value27 = 0x60;
                if ((returnData5.length) != 0x0) {
                    if (!(returnData5.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData5.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value27 = var_e;
                }
                bool flag26 = !(var_q == 0x20);
                if (!success5) {
                    flag26 = !success5;
                }
                uint256 value64 = 0;
                uint256 value65 = 0;
                if (!(flag26)) {
                    value64 = 0x01;
                    value65 = var_r;
                }
                value28 = value64;
                value29 = value65;
            }
            uint256 value30 = 0;
            uint256 value31 = 0;
            if (!(value28 != 0x0 && value29 > 0xffffffffffffffffffffffffffffffffffffffff || value28 == 0x0)) {
                value30 = 0x01;
                value31 = address(value29);
            }
            uint256 value33 = 0;
            uint256 value34 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                var_e = var_e + ((0x24 + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                (bool success6, bytes memory returnData6) = arg1.moduleKey(); // staticcall
                uint256 value32 = 0x60;
                if ((returnData6.length) != 0x0) {
                    if (!(returnData6.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData6.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value32 = var_e;
                }
                bool flag28 = !(var_s == 0x20);
                if (!success6) {
                    flag28 = !success6;
                }
                uint256 value66 = 0;
                uint256 value67 = 0;
                if (!(flag28)) {
                    value66 = 0x01;
                    value67 = var_t;
                }
                value33 = value66;
                value34 = value67;
            }
            uint256 value36 = 0;
            uint256 value37 = 0;
            if (!(arg1.code.length == 0x0)) {
                if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                var_e = var_e + 0x40;
                (bool success7, bytes memory returnData7) = arg1.interfaceVersion(); // staticcall
                uint256 value35 = 0x60;
                if ((returnData7.length) != 0x0) {
                    if (!(returnData7.length <= 0xffffffffffffffff)) _desolexPanic(65);
                    if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                    var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData7.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                    value35 = var_e;
                }
                bool flag29 = !(var_u == 0x20);
                if (!success7) {
                    flag29 = !success7;
                }
                uint256 value68 = 0;
                uint256 value69 = 0;
                if (!(flag29)) {
                    value68 = 0x01;
                    value69 = var_v;
                }
                value36 = value68;
                value37 = value69;
            }
            uint256 value38 = 0;
            uint256 value39 = 0;
            if (!(value36 != 0x0 && value37 > 0xffffffffffffffff || value36 == 0x0)) {
                value38 = 0x01;
                value39 = uint64(value37);
            }
            uint256 value40 = 0;
            bool flag31 = value33 == 0x0;
            if (value30 == 0) {
                value40 = value33;
                flag31 = value30 == 0x0;
            }
            uint256 value41 = 0;
            bool flag32 = value38 == 0x0;
            if (flag31) {
                value41 = value38;
                flag32 = flag31;
            }
            uint256 value42 = 0;
            bool flag33 = address(this) != (0xffffffffffffffffffffffffffffffffffffffff & value31);
            if (flag32) {
                value42 = value31;
                flag33 = flag32;
            }
            uint256 value43 = 0;
            bool flag34 = value34 != arg0;
            if (flag33) {
                value43 = value34;
                flag34 = flag33;
            }
            uint256 value44 = 0;
            uint256 value45 = 0;
            if (flag34) {
                value44 = arg2;
                value45 = value39;
            }
            require(!(!flag34 && (value39 & 0xffffffffffffffff) != (0xffffffffffffffff & arg2) || flag34), CustomError_df45d152());
            bool flag36 = arg0 == 0xe8d1d3be37123203a00831e4e7cddd9fc8ee58bd97cf5c07826fe61553798fe7;
            if (arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111) {
                flag36 = arg0 == 0xbd8de4166161f82d11cd3ddeb9252ebffceacbfddfb68bf162916d3e4e6e4111;
            }
            bool flag37 = arg0 == 0x960b275155f222cac626b2b4f3b2481eec93ea32eb68be7a59eb45618ce7f9cc;
            if (flag36) {
                flag37 = flag36;
            }
            bool flag38 = arg0 == 0x38e12954a0a1ec6f83b8c8397ad1c1a513319167b388bf690914bc618e816525;
            if (flag37) {
                flag38 = flag37;
            }
            bool flag39 = arg0 == 0x465332bcc850872a7077bd29d9c354678be3b12916a7f79faae70eb5d4f293e7;
            if (flag38) {
                flag39 = flag38;
            }
            if (!(!flag39 && arg0 == 0xd31d62023fdeafac4bf2c4703c52ccdf6bbbaba48929b17d60672d017ed1866b || flag39)) {
                uint256 value47 = 0;
                uint256 value48 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success8, bytes memory returnData8) = arg1.totalLiability(); // staticcall
                    uint256 value46 = 0x60;
                    if ((returnData8.length) != 0x0) {
                        if (!(returnData8.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData8.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value46 = var_e;
                    }
                    bool flag41 = !(var_w == 0x20);
                    if (!success8) {
                        flag41 = !success8;
                    }
                    uint256 value70 = 0;
                    uint256 value71 = 0;
                    if (!(flag41)) {
                        value70 = 0x01;
                        value71 = var_x;
                    }
                    value47 = value70;
                    value48 = value71;
                }
                uint256 value50 = 0;
                uint256 value51 = 0;
                if (!(arg1.code.length == 0x0)) {
                    if (((var_e + 0x40) > 0xffffffffffffffff) | ((var_e + 0x40) < var_e)) _desolexPanic(65);
                    var_e = var_e + 0x40;
                    (bool success9, bytes memory returnData9) = arg1.hasOpenPositions(); // staticcall
                    uint256 value49 = 0x60;
                    if ((returnData9.length) != 0x0) {
                        if (!(returnData9.length <= 0xffffffffffffffff)) _desolexPanic(65);
                        if (((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) > 0xffffffffffffffff) | ((var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))) < var_e)) _desolexPanic(65);
                        var_e = var_e + (((0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (returnData9.length + 0x1f))) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));
                        value49 = var_e;
                    }
                    bool flag42 = !(var_y == 0x20);
                    if (!success9) {
                        flag42 = !success9;
                    }
                    uint256 value72 = 0;
                    uint256 value73 = 0;
                    if (!(flag42)) {
                        value72 = 0x01;
                        value73 = var_z;
                    }
                    value50 = value72;
                    value51 = value73;
                }
                uint256 value52 = 0;
                bool flag44 = false;
                if (!(value50 != 0x0 && value51 > 0x1 || value50 == 0x0)) {
                    value52 = 0x01;
                    flag44 = value51 != 0x0;
                }
                uint256 value53 = 0;
                if (value47 == 0) {
                    value53 = value52;
                }
                require(!(value47 != 0x0 && value52 == 0x0 || value47 == 0x0), CustomError_df45d152());
            }
        }
        activeAddress[arg0] = arg1 | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & activeAddress[arg0]);
        activeVersion[arg0] = (arg2 & (0xffffffffffffffff)) | (0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 & activeVersion[arg0]);
        unresolved_e1682f11[arg0][arg1] = true;
        mapping_a[arg0][arg1] = true;
        if (!(historyLength[arg0] < 0x010000000000000000)) _desolexPanic(65);
        historyLength[arg0] = historyLength[arg0] + 0x01;
        if (!(historyLength[arg0] < historyLength[arg0])) _desolexPanic(50);
        stor_expr_av = (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & stor_expr_av) | (arg1 << 0);
        require(unresolved_6f7292e9[arg0] < 0x10, CustomError_99305b7a());
        if (!(unresolved_6f7292e9[arg0] < 0x010000000000000000)) _desolexPanic(65);
        unresolved_6f7292e9[arg0] = unresolved_6f7292e9[arg0] + 0x01;
        if (!((historyLength[arg0] < stor_expr_aw))) _desolexPanic(50);
        stor_expr_ax = (~(0xffffffffffffffffffffffffffffffffffffffff << (0 << 0x03)) & stor_expr_ax) | (arg1 << (0 << 0x03));
        mapping_9[arg0][arg1] = unresolved_6f7292e9[arg0];
        emit Event_91a41771(arg0, arg1, uint64(arg2), arg3);
    }
    
    function Unknown_0fa18730(bytes32 arg0) public {
        require(mapping_316a51056d8b2401ab04c48d9973add294eadde229c785c6d19cde93785467ef[msg.sender], AccessControlUnauthorizedAccount());
        uint256 var_c;
        if (((var_c + 0x80) > 0xffffffffffffffff) | ((var_c + 0x80) < var_c)) _desolexPanic(65);
        var_c = var_c + 0x80;
        require(address(pendingProposal[arg0]), ProposalMissing());
        pendingProposal[arg0] = 0;
        stor_expr_ah = 0;
        stor_expr_ai = 0;
        emit Event_3623a483(arg0, address(var_c.length), uint64(var_j));
    }
    
    function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
        require(interfaceId == (interfaceId & 0xffffffff00000000000000000000000000000000000000000000000000000000));
        uint256 value1 = msg.data[0] >> 0xe0;
        bool flag1;
        if ((interfaceId & 0xffffffff00000000000000000000000000000000000000000000000000000000) != 0x5a05180f00000000000000000000000000000000000000000000000000000000) {
            uint256 value0 = msg.data[0] >> 0xe0;
            bool flag0 = 0x1ffc9a700000000000000000000000000000000000000000000000000000000 == (interfaceId & 0xffffffff00000000000000000000000000000000000000000000000000000000);
            if (interfaceId & (0xffffffff00000000000000000000000000000000000000000000000000000000) == 0x7965db0b00000000000000000000000000000000000000000000000000000000) {
                value0 = interfaceId & (0xffffffff00000000000000000000000000000000000000000000000000000000);
                flag0 = (interfaceId & 0xffffffff00000000000000000000000000000000000000000000000000000000) == 0x7965db0b00000000000000000000000000000000000000000000000000000000;
            }
            flag1 = flag0;
        } else {
            value1 = interfaceId & (0xffffffff00000000000000000000000000000000000000000000000000000000);
            flag1 = (interfaceId & 0xffffffff00000000000000000000000000000000000000000000000000000000) == 0x5a05180f00000000000000000000000000000000000000000000000000000000;
        }
        return flag1;
    }
    
    function internal_1e57(uint256 arg0, address arg1) private {
        // Decompilation incomplete: helper effect provenance is conservative.
        if (mapping_9[arg0][arg1] != 0) {
            uint256 value7 = 0;
            uint256 value8 = 0;
            uint256 value9 = 0;
            if ((mapping_9[arg0][arg1] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) != (unresolved_6f7292e9[arg0] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) {
                if (!((unresolved_6f7292e9[arg0] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < unresolved_6f7292e9[arg0])) _desolexPanic(50);
                if (!((mapping_9[arg0][arg1] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < unresolved_6f7292e9[arg0])) _desolexPanic(50);
                stor_expr_z = (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & stor_expr_z) | (0xffffffffffffffffffffffffffffffffffffffff & (0xffffffffffffffffffffffffffffffffffffffff & (stor_expr_y >> 0)) << 0);
                mapping_9[arg0][address(stor_expr_y >> 0)] = mapping_9[arg0][arg1];
            } else {
                value7 = unresolved_6f7292e9[arg0] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
                value8 = mapping_9[arg0][arg1] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
                value9 = mapping_9[arg0][arg1];
            }
            if (!(unresolved_6f7292e9[arg0])) _desolexPanic(49);
            if (!((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + unresolved_6f7292e9[arg0]) < unresolved_6f7292e9[arg0])) _desolexPanic(50);
            stor_expr_ab = (0xffffffffffffffffffffffff0000000000000000000000000000000000000000) & stor_expr_ab;
            unresolved_6f7292e9[arg0] = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + unresolved_6f7292e9[arg0];
            mapping_9[arg0][arg1] = 0;
        }
    }
    
    function internal_14f6(bytes32 arg0, address arg1) private {
        // Decompilation incomplete: helper effect provenance is conservative.
        uint256 value0 = 0;
        if (bytes1(hasRole[arg0][arg1])) {
            hasRole[arg0][arg1] = false;
            emit RoleRevoked(arg0, arg1, msg.sender);
            value0 = 0x01;
        }
        if (value0 != 0x0) {
            uint256 value4 = 0;
            if (!(0 == (!(!(mapping_expr_bd[arg1]))))) {
                uint256 value1 = 0;
                uint256 value2 = 0;
                uint256 value3 = 0;
                if ((mapping_expr_bd[arg1] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) != (getRoleMemberCount[arg0] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) {
                    if (!(((getRoleMemberCount[arg0] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_i))) _desolexPanic(50);
                    if (!(((mapping_expr_bd[arg1] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) < stor_expr_j))) _desolexPanic(50);
                    stor_expr_bh = (0 & stor_expr_bi | (stor_expr_bg >> (0 << 0x03) << 0));
                    mapping_expr_bd[stor_expr_bg >> (0 << 0x03)] = mapping_expr_bd[arg1];
                } else {
                    value1 = mapping_expr_bd[arg1] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
                    value2 = getRoleMemberCount[arg0] + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
                    value3 = mapping_expr_bd[arg1];
                }
                if (!(getRoleMemberCount[arg0])) _desolexPanic(49);
                if (!(((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + getRoleMemberCount[arg0]) < stor_expr_p))) _desolexPanic(50);
                stor_expr_bk = (~(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff << (0 << 0x03))) & stor_expr_bk;
                getRoleMemberCount[arg0] = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + getRoleMemberCount[arg0];
                mapping_expr_bd[arg1] = 0;
                flag0 = true;
            }
        }
    }
    
    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.
    
    // 0x01ffc9a7 => supportsInterface(bytes4)
    // 0x0233e379 => activeAddress(bytes32)
    // 0x0fa18730 => Unknown_0fa18730(bytes32)
    // 0x10398b3c => Unknown_10398b3c(uint256,address,uint64,uint256)
    // 0x248a9ca3 => getRoleAdmin(bytes32)
    // 0x2a99cde5 => Unknown_2a99cde5(uint256,address)
    // 0x2f2ff15d => grantRole(bytes32,address)
    // 0x36568abe => renounceRole(bytes32,address)
    // 0x3b28ffc4 => activeVersion(bytes32)
    // 0x3f4747a3 => Unknown_3f4747a3(uint256,uint256)
    // 0x43905859 => historyLength(bytes32)
    // 0x506b7d29 => unresolved_506b7d29()
    // 0x545aa9ce => Unknown_545aa9ce(uint64)
    // 0x5505256f => pendingProposal(bytes32)
    // 0x6233b32a => SCHEMA_VERSION()
    // 0x641b82d7 => Unknown_641b82d7(uint256,address,uint64,uint256)
    // 0x6f7292e9 => unresolved_6f7292e9(bytes32)
    // 0x76cdcd75 => MINIMUM_GOVERNANCE_DELAY()
    // 0x84f7a864 => Unknown_84f7a864(uint256)
    // 0x9010d07c => Unknown_9010d07c(uint256,uint256)
    // 0x91d14854 => hasRole(bytes32,address)
    // 0xa217fddf => DEFAULT_ADMIN_ROLE()
    // 0xa3246ad3 => Unknown_a3246ad3(uint256)
    // 0xbba32939 => governanceDelay()
    // 0xbbd3eecd => Unknown_bbd3eecd(uint256,address)
    // 0xca0f8f3b => Unknown_ca0f8f3b(uint256,address)
    // 0xca15c873 => getRoleMemberCount(bytes32)
    // 0xd547741f => revokeRole(bytes32,address)
    // 0xe1682f11 => unresolved_e1682f11(uint256,address)
    // 0xf36c8f5c => GOVERNANCE_ROLE()
    // 0xff78c9db => Unknown_ff78c9db(uint256,uint256)
}
0xfd89fb…e42593 on BNB Chain — Decompiled Solidity