BNB Chain

0x27f8b36995602269d0e452b1acc63c97fff6abe8

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

Decompilation outputBNB Chain · 0x27f8b369…fff6abe820.9 KB48.0 s
Share
574 lines · Click a variable or keyword to highlight its references · Click a line number to copy its link; Shift-click to copy a block link
//decompiled by exvvul decompiler tool contact@exvul.com https://x.com/exvulsec// SPDX-License-Identifier: MIT  >=0.8.0;  {        = 8534;        = 38565618417199902773051943526088628524471517387241857154768371431684916793409;        = 72579651441009407333943101911154516623030303948146585667981958319985908871313;        = 64624691009355361407247360265918275933336169636348308855649155591726815083253;        = 51542168180248082152030056451728049499749905167243835096059084772534901506895;        = 0;        = 823732757968423494232508997868029306736301263878;        = 10000000000000000;        = 12500;        = 114661979489761869402673463282528833466887108470131624800944901259873389970420;        = 250;        ( => ( => ))  ; // STORAGE[0x65]    ( => ) ; // STORAGE[0x98]    ( => ) ; // STORAGE[0xbb]     ;     ;     ;     ;         ();     ( ,  ,  );     ();     ();     ();     (, );     ( ,  ,  );     ();     ();     ();     ( )   {         ("memory-safe") {            (0x00, (224, 0x4e487b71))            (0x04, )            (0x00, 0x24)        }    }    ()   {        // Synthetic compatibility routes preserve original selectors for unresolved names.         ((.. >= 4) && (. == 0x229f5f86)) {            // Route to Unknown_229f5f86(address) after replacing only msg.sig.            ((0xb7d62baf));            ;        }        ();    }             ( )    () {        ( == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000));          = 0x7965db0b00000000000000000000000000000000000000000000000000000000 == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000);         (0x7965db0b00000000000000000000000000000000000000000000000000000000 != ( & 0xffffffff00000000000000000000000000000000000000000000000000000000)) {             = ( & 0xffffffff00000000000000000000000000000000000000000000000000000000) == 0x1ffc9a700000000000000000000000000000000000000000000000000000000;        }         ;    }         ( ,  ,  ,   )    () {         (. > 0xffffffffffffffff) (65);         ;         ((( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f))) < ) | (( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f))) > 0xffffffffffffffff)) (65);         =  + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f));        (!(((0x04 + ) +  + 0x20) > ..));         0x150b7a0200000000000000000000000000000000000000000000000000000000;    }         ( )   {         ;         =  + 0x0260;         (([]) == 0xff) {             (([] >> 0x08) > 0x05) (33);             (([] >> 0x10) > 0xa4) (33);             (([] >> 0x18) > 0x05) (33);             (([] >> 0x40) > 0x07) (33);             (([] >> 0x48) > 0x02) (33);             (([] >> 0x50) > 0x03) (33);             (([] >> 0x68) > 0x02) (33);             (([] >> 0x70) > 0x02) (33);             ( > 0x02) (33);             ( != 0) {            }             (()) {            }        }  {             (([]) > 0x05) (33);             (([] >> 0x08) > 0xa4) (33);             (([] >> 0x10) > 0x05) (33);             (([] >> 0xf8) > 0x07) (33);        }         ( > 0x05) (33);        ( == 0x01, ());          = 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c;         (()) {             = ;        }         =  + 0x0260;         (([]) == 0xff) {             (([] >> 0x08) > 0x05) (33);             (([] >> 0x10) > 0xa4) (33);             (([] >> 0x18) > 0x05) (33);             (([] >> 0x40) > 0x07) (33);             (([] >> 0x48) > 0x02) (33);             (([] >> 0x50) > 0x03) (33);             (([] >> 0x68) > 0x02) (33);             (([] >> 0x70) > 0x02) (33);             ( > 0x02) (33);             ( != 0) {            }             (()) {            }        }  {             (([]) > 0x05) (33);             (([] >> 0x08) > 0xa4) (33);             (([] >> 0x10) > 0x05) (33);             (([] >> 0xf8) > 0x07) (33);        }        ( ,   ) = (0x9818eb714a8c0955c5915c368b2766d950275d24).(()); // staticcall        ();         =  + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (. + 0x1f));        (( + .) -  >= 0x20);        (!( > 0xffffffffffffffff));        (!(( + .) - ( + ) < 0x0160));         ((( + 0x0160) < ) | (( + 0x0160) > 0xffffffffffffffff)) (65);         =  + 0x0160;        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        (!( > 0xffffffffffffffff));        ( + 0x1f < );         ( > 0xffffffffffffffff) (65);         ((( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ( + 0x1f))) < ) | (( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ( + 0x1f))) > 0xffffffffffffffff)) (65);         =  + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ( + 0x1f));        (!((0x20 + ( + ( << 0x05))) > ));         (( + 0x20) < (0x20 + ( + ( << 0x05)))) {            ( == (()));        }        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));        ( == ( & 0xffffffffffffffffffffffffffffffffffffffff));         ( > 0x02) (33);         (!( < )) (50);        ( ,   ) = ().(, (), ()); // staticcall        ();         =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (( + .) -  >= 0x20);          = ;          = .;         (!((.))) {            ( ,   ) = ().(, (), ()); // call            ();             =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));            (( + .) -  >= 0x20);        }  {             =  + 0x24;            ( ,   ) = (.).(); // staticcall              = 0x60;             (. != 0) {                 =  + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                 = ;            }            (, ());            (((0x20 + ) + ) - (0x20 + ) >= 0xe0);            ( == );             ;              = .;             (0x0 != ) {                 ( > 0x02) (33);                  = 0;                 ( == 0x0) {                     = 0x02;                }                 (!( <= 0x2)) (33);                 (!( < )) (50);                ( ,   ) = ().(, (), ()); // staticcall                ();                 =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                (( + .) -  >= 0x20);                 (!((.))) {                    ( ,   ) = ().(, (), ()); // call                    ();                     =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                    (( + .) -  >= 0x20);                }  {                     =  + 0x24;                    ( ,   ) = (.).(); // staticcall                      = 0x60;                     (. != 0) {                         =  + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                         = .;                         = ;                    }                }                 = ;            }  {                 = ;                 = .;            }             = ;             = ;        }         (( & 0xffffffffffffffffffffffffffffffffffffffff) == 0x0) {             = 0x44 + ;            ( ,   ) = (0xe6c0318f5e5b1043a6000fa3e7f73686dbd3ed3f).(); // delegatecall              = 0x60;             (. != 0) {                 =  + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                 = ;            }             (!()) {                (!);                 ();            }        }  {             =  + 0x0260;             (([]) == 0xff) {                 (([] >> 0x08) > 0x05) (33);                 (([] >> 0x10) > 0xa4) (33);                 (([] >> 0x18) > 0x05) (33);                 (([] >> 0x40) > 0x07) (33);                 (([] >> 0x48) > 0x02) (33);                 (([] >> 0x50) > 0x03) (33);                 (([] >> 0x68) > 0x02) (33);                 (([] >> 0x70) > 0x02) (33);                 ( > 0x02) (33);                 ( != 0) {                }                 (()) {                }            }  {                 (([]) > 0x05) (33);                 (([] >> 0x08) > 0xa4) (33);                 (([] >> 0x10) > 0x05) (33);                 (([] >> 0xf8) > 0x07) (33);            }             = 0x60 + ;              = ;             ([] < 0x0f4240) {                 (!( < 0xa5)) (33);                ( ,   ) = (0x81b65f92378faf476ff28a5cb6b82bc55aaef469).(); // staticcall                ();                 =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                (!((( + .) - ) < 0x60));                 ((( + 0x60) < ) | (( + 0x60) > 0xffffffffffffffff)) (65);                 =  + 0x60;            }  {                ( * (0xde0b6b3a7640000 * ( > 0x12725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f21) == 0x0) != 0x0, ());                ( * ( > 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff / ) == 0x0, ());                 =  + 0x60;                 = ;            }             ( > 0x05) (33);            ( == 0x01, ());             ( > 0x07) (33);              = ();             (!( == 0x0 ||  == 0x1)) {                 ( > 0x07) (33);                  =  == 0x02;                 ( != 0x02) {                     =  == 0x04;                }                  = ;                 (!()) {                     ( > 0x07) (33);                     =  == 0x05;                }                  = ;                 (!()) {                     ( > 0x07) (33);                     =  == 0x06;                }                 (!()) {                     ( > 0x07) (33);                }                (( ||  == 0x7), ());            }  {                ( ,   ) = .(.((0x18160ddd))); // staticcall totalSupply                ();                 =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                ( -  >= 0x20);                 = .;            }              = .;             ( != (0)) {                ( ,   ) = ().(); // staticcall                ();                 =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));                (!((( + .) - ) < 0x20));                (. == ((.)));            }  {                 = 0x12;            }             (!( <= 0x2)) (33);             ;             ( != 0x0) {                 ;                 ( != 0x1) {                      = 0;                     (!( != 0x2)) {                         = 0;                    }                     = ;                }  {                     = 0;                }                 = ;            }  {                 = 0;            }             ( != 0x0) {                 ( * (0x33b2e3c9fd0803ce8000000 - ) / 0x2710 != 0x0) {                     (([]) != 0xff) {                         (([]) > 0x05) (33);                         (([] >> 0x08) > 0xa4) (33);                         (([] >> 0x10) > 0x05) (33);                         (([] >> 0xf8) > 0x07) (33);                         ( > 0x07) (33);                         (!( == 0x0 ||  == 0x1)) {                             ( > 0x07) (33);                              =  == 0x02;                             ( != 0x02) {                                 =  == 0x04;                            }                              = ;                             (!()) {                                 ( > 0x07) (33);                                 =  == 0x05;                            }                              = ;                             (!()) {                                 ( > 0x07) (33);                                 =  == 0x06;                            }                              = ;                             (!()) {                                 ( > 0x07) (33);                                 =  == 0x07;                            }                            (, ());                              = ;                             = 0xa9059cbb000000000000000000000000;                            ( ,   ) = .(.((0xa9059cbb), , )); // call transfer                            ((( == 0x01) | !.) &  != 0x0, ());                        }  {                            (.. != 0x0);                            ( ,   ) = .((0x8a08d98cbb218fceb318ecf3abc1ba43d8a7ab0e), (( * (0x033b2e3c9fd0803ce8000000 - )) / 0x2710)); // call                            ();                            ( ,   ) = .(.((0x18160ddd))); // staticcall totalSupply                            ();                            ( -  >= 0x20);                              = .(, ());                        }                         (([]) == 0xff) {                             = (( << 0x80) & (0xffffffffffffffffffffffffffffffff00000000000000000000000000000000)) | ();                        }  {                            [] = (( << 0x98) & (0xffffffffffffffffffffffff00000000000000000000000000000000000000)) | (0xff000000000000000000000000ffffffffffffffffffffffffffffffffffffff & []);                        }                         (, ());                         (!( <= 0x2)) (33);                    }                }            }        }    }         ( )    () {         ;    }         ( ,  )  {        (, );    }         ( ,  )  {        (. == , "AccessControl: can only renounce roles for self");         (([][])) {            [][] = ;             (, , .);        }    }         ( ,  )  {        (, );    }         ( ,  )  {        // Decompilation incomplete: helper effect provenance is conservative.         (!(([][.]) != 0x0)) {             (!(0x14 * 0x2 + 0x2 <= 0xffffffffffffffff)) (65);             ;             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x14 * 0x02) + 0x02))));              = (0x14 * 0x02) + 0x02;             (0x14 * 0x2 + 0x2 != 0x0) {                 = ((0x14 * 0x02) + 0x02) + ( + 0x20);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);              = (0x14 * 0x02) + 0x01;              = .;             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!((0xf & ) < 0x10)) (50);                 (!( < .)) (50);                 (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +  <= 0x1) {                    ;                }                 (!(0x0f & ( >> 0x04) < 0x10)) (50);                 (!((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ) < .)) (50);                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + );                 = ( >> 0x04) >> 0x04;                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");             (!(0x20 * 0x2 + 0x2 <= 0xffffffffffffffff)) (65);             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x20 * 0x02) + 0x02))));              = (0x20 * 0x02) + 0x02;             ((0x20 * 0x02) + 0x02 != 0) {                 = ((0x20 * 0x02) + 0x02) + ( + 0x20);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);             = (0x20 * 0x02) + 0x01;             = ;             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!((0xf & ) < 0x10)) (50);                 (!( < .)) (50);                 (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +  <= 0x1) {                    ;                }                 (!(0x0f & ( >> 0x04) < 0x10)) (50);                 (!((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ) < .)) (50);                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + );                 = ( >> 0x04) >> 0x04;                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");             = ((((0x20 + ) + 0x17) + .) + 0x11) + .;            ("AccessControl: account 0x\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 is missing role 0x\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");        }         (!(([][]) != 0x0)) {            [][] = ;             (, , .);        }    }         ( ,  )  {        // Decompilation incomplete: helper effect provenance is conservative.         (!(([][.]) != 0x0)) {             (!(0x14 * 0x2 + 0x2 <= 0xffffffffffffffff)) (65);             ;             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x14 * 0x02) + 0x02))));              = (0x14 * 0x02) + 0x02;             (0x14 * 0x2 + 0x2 != 0x0) {                 = ((0x14 * 0x02) + 0x02) + ( + 0x20);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);              = (0x14 * 0x02) + 0x01;              = .;             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!((0xf & ) < 0x10)) (50);                 (!( < .)) (50);                 (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +  <= 0x1) {                    ;                }                 (!(0x0f & ( >> 0x04) < 0x10)) (50);                 (!((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ) < .)) (50);                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + );                 = ( >> 0x04) >> 0x04;                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");             (!(0x20 * 0x2 + 0x2 <= 0xffffffffffffffff)) (65);             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x20 * 0x02) + 0x02))));              = (0x20 * 0x02) + 0x02;             ((0x20 * 0x02) + 0x02 != 0) {                 = ((0x20 * 0x02) + 0x02) + ( + 0x20);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);             = (0x20 * 0x02) + 0x01;             = ;             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!((0xf & ) < 0x10)) (50);                 (!( < .)) (50);                 (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +  <= 0x1) {                    ;                }                 (!(0x0f & ( >> 0x04) < 0x10)) (50);                 (!((0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ) < .)) (50);                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + );                 = ( >> 0x04) >> 0x04;                 = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + ;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");             = ((((0x20 + ) + 0x17) + .) + 0x11) + .;            ("AccessControl: account 0x\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 is missing role 0x\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");        }         (([][])) {            [][] = ;             (, , .);        }    }         ( )  {         {              := (0x40)            (, 0, ())            (, (((), 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff), (224, (, 0xffffffff))))              := ((), (), , (), 0, 0)              := ()            (, 0, )                          0 { (, ) }             { (, ) }        }    }        // 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)    // 0x0fe3867c => DEFAULT_PCS_INFINITY_NORMAL_FEE_PIPS()    // 0x150b7a02 => onERC721Received(address,address,uint256,bytes)    // 0x229f5f86 => Unknown_229f5f86(address)    // 0x248a9ca3 => getRoleAdmin(bytes32)    // 0x24ea54f4 => GUARDIAN_ROLE()    // 0x2f2ff15d => grantRole(bytes32,address)    // 0x36568abe => renounceRole(bytes32,address)    // 0x60a4b76a => MANAGE_ROLE()    // 0x67d92f04 => CURVE_AUTH_SIGNER_ROLE()    // 0x797669c9 => MODERATOR_ROLE()    // 0x91d14854 => hasRole(bytes32,address)    // 0xa217fddf => DEFAULT_ADMIN_ROLE()    // 0xb22a3410 => VAULT_PORTAL()    // 0xbc778a25 => SALT_LOCK_FEE()    // 0xd547741f => revokeRole(bytes32,address)    // 0xe0893e0c => DEFAULT_V4_NORMAL_FEE_PIPS()    // 0xeae8a630 => TOKEN_FLAP_FEE_SETTER_ROLE()    // 0xfa4f8931 => DEFAULT_V4_TICK_SPACING()}