BNB Chain

0x3cb86f4cb59ccec045bacbde54341aae09e87bfb

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

Decompilation outputBNB Chain · 0x3cb86f4c…09e87bfb9.0 KB3.9 s
Share
412 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;  {        = 74447917106227587185069542233768419360415527974423666340979253117352358844277;        = 102547770735452218668329474129228402032596641604203437911260885007774093348292;        = 0;          ; // STORAGE[0x0] bytes 0 to 19      ; // STORAGE[0x0] bytes 20 to 20      ; // STORAGE[0x2] bytes 0 to 19    ( => ) ;    ( => ) ;    ( => ) ;    ( => )  ;    ( => ) ;    ( => ) ;     ;     ;     ;         ( ,  ,  );     ( ,  ,  );     (, , );     ( ,  );     ( )   {         ("memory-safe") {            (0x00, (224, 0x4e487b71))            (0x04, )            (0x00, 0x24)        }    }         () {        ( == (.), "Ownable: caller is not the owner");        ;    }         ( )    () {        ( == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000));          = (0xffffffff00000000000000000000000000000000000000000000000000000000 & ) == 0x7965db0b00000000000000000000000000000000000000000000000000000000;         (0xffffffff00000000000000000000000000000000000000000000000000000000 &  != 0x7965db0b00000000000000000000000000000000000000000000000000000000) {             = (0xffffffff00000000000000000000000000000000000000000000000000000000 & ) == 0x1ffc9a700000000000000000000000000000000000000000000000000000000;        }         ;    }         ( ,   )   {         (!(. <= 0xffffffffffffffff)) (65);         ;         ( + (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) > 0xffffffffffffffff ||  + (((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) < ) (65);         =  + ((((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0) + 0x20) + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (((0x04 + ) + 0x20) +  <= (0x04 + (.. - 0x04)));        (!, "Pausable: paused");        ( > 0x0, "Amount is zero");        (.. != 0x0);        ( ,   ) = .(.((0x70a08231), .)); // staticcall balanceOf        ();         =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (!((( + .) - ) < 0x20));          = .(, ());        ( == );        (!( < ), "Insufficient balance");        (.. != 0x0);        ( ,   ) = .(., ()); // staticcall        ();         =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (!((( + .) - ) < 0x20));          = .(, ());        ( == );        (!( < ), "Transfer amount exceeds allowance");        (.. != 0x0);        ( ,   ) = .(.((0x70a08231), .)); // staticcall balanceOf        ();         =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (!((( + .) - ) < 0x20));          = .(, ());        ( == );         = (0x24 + ) + 0x60;         = 0x40 + ;        (!((). < 0), "Address: insufficient balance for call");        (.. > 0x0, "Address: call to non-contract");          = 0;         ;         () {             = ;             ( >= ) {                ;            }             ( + 0x20 >= ) {                ;            }             = ( + 0x20) + 0x20;             =  + 0x20;        }         ( > ) {        }        ( ,   ) = ().{ : 0 }(, , ); // call          = 0x60;         (. != 0) {             =  + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));             = ;        }         (!) {            (!( > 0));              = 0;             ;             () {                 = ;                 ( >= ) {                    ;                }                 ( + 0x20 >= ) {                    ;                }                 = ( + 0x20) + 0x20;                 =  + 0x20;            }             ( > ) {            }            ("\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");        }         ( > 0) {            (((0x20 + ) + ) - (0x20 + ) >= 0x20);            ( == ( != 0x0));            ( != 0x0, "SafeERC20: ERC20 operation did not succeed");        }        (.. != 0x0);        ( ,   ) = .(.((0x70a08231), .)); // staticcall balanceOf        ();         =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (!((( + .) - ) < 0x20));        ( == );          = 0;         ;         () {             = ;             ( >= ) {                ;            }             ( + 0x20 >= ) {                ;            }             = ( + 0x20) + 0x20;             =  + 0x20;        }         ( > ) {        }         (., ( - ), ( + 0x60) - , );    }         ()    () {        (.. != 0x0);        ( ,   ) = .(.((0x70a08231), ())); // staticcall balanceOf        ();         ;         =  + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0));        (!((( + .) - ) < 0x20));          = .(, ());         ();    }         ( )    () {         ();    }         ( ,  )   {        (, );    }         ( ,  )   {        ( == ., "AccessControl: can only renounce roles for self");         (([] / 0x01)) {            [] = (0 * 0x01) | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []);             (, , (.));        }    }         ()    {         (, (0));         = (0);    }         ( ,  )   {        (, );    }         ( )    {        ( != (0), "Ownable: new owner is the zero address");         (, );         = ;    }         ( ,  )  {        // Decompilation incomplete: helper effect provenance is conservative.         (!((([(.)] / 0x01)))) {             (!(0x2 * 0x14 + 0x2 <= 0xffffffffffffffff)) (65);             ;             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x14) + 0x02))));              = (0x02 * 0x14) + 0x02;             ((0x02 * 0x14) + 0x02 != 0) {                 = (0x20 + ) + (((0x02 * 0x14) + 0x02) * 0x01);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);              = (0x02 * 0x14) + 0x01;              = (.);             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!(( & 0xf) < 0x10)) (50);                 (!( < .)) (50);                 ( - 0x1 <= 0x1) {                    ;                }                 (!(( >> 0x04) & (0x0f) < 0x10)) (50);                 (!(( - 0x01) < .)) (50);                 = ( - 0x01) - 0x01;                 = ( >> 0x04) >> 0x04;                 =  - 0x01;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");             (!(0x2 * 0x20 + 0x2 <= 0xffffffffffffffff)) (65);             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x20) + 0x02))));              = (0x02 * 0x20) + 0x02;             ((0x02 * 0x20) + 0x02 != 0) {                 = (0x20 + ) + (((0x02 * 0x20) + 0x02) * 0x01);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);             = (0x02 * 0x20) + 0x01;             = ( >> 0);             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!(( & 0xf) < 0x10)) (50);                 (!( < .)) (50);                 ( - 0x1 <= 0x1) {                    ;                }                 (!(( >> 0x04) & (0x0f) < 0x10)) (50);                 (!(( - 0x01) < .)) (50);                 = ( - 0x01) - 0x01;                 = ( >> 0x04) >> 0x04;                 =  - 0x01;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");              = 0;             () {                 ( >= ) {                    ;                }                 =  + 0x20;                  = 0;                 () {                     ( >= ) {                        ;                    }                     =  + 0x20;                     = ((((0x20 + ) + 0x17) +  + 0x11) + );                      = 0;                     () {                          = ;                         ( >= ) {                            ;                        }                         ( + 0x20 >= ) {                            ;                        }                         = ( + 0x20) + 0x20;                         =  + 0x20;                    }                    ("\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");                }            }        }         (!((([] / 0x01)))) {            [] = (0x01 * 0x01) | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []);             (, , (.));        }    }         ( ,  )  {        // Decompilation incomplete: helper effect provenance is conservative.         (!((([(.)] / 0x01)))) {             (!(0x2 * 0x14 + 0x2 <= 0xffffffffffffffff)) (65);             ;             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x14) + 0x02))));              = (0x02 * 0x14) + 0x02;             ((0x02 * 0x14) + 0x02 != 0) {                 = (0x20 + ) + (((0x02 * 0x14) + 0x02) * 0x01);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);              = (0x02 * 0x14) + 0x01;              = (.);             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!(( & 0xf) < 0x10)) (50);                 (!( < .)) (50);                 ( - 0x1 <= 0x1) {                    ;                }                 (!(( >> 0x04) & (0x0f) < 0x10)) (50);                 (!(( - 0x01) < .)) (50);                 = ( - 0x01) - 0x01;                 = ( >> 0x04) >> 0x04;                 =  - 0x01;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");             (!(0x2 * 0x20 + 0x2 <= 0xffffffffffffffff)) (65);             =  + (0x20 + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & (0x1f + ((0x02 * 0x20) + 0x02))));              = (0x02 * 0x20) + 0x02;             ((0x02 * 0x20) + 0x02 != 0) {                 = (0x20 + ) + (((0x02 * 0x20) + 0x02) * 0x01);            }             (!(0 < .)) (50);             (!(0x01 < .)) (50);             = (0x02 * 0x20) + 0x01;             = ( >> 0);             ;             () {                  = ;                 = ;                 ( <= 0x1) {                    ;                }                 (!(( & 0xf) < 0x10)) (50);                 (!( < .)) (50);                 ( - 0x1 <= 0x1) {                    ;                }                 (!(( >> 0x04) & (0x0f) < 0x10)) (50);                 (!(( - 0x01) < .)) (50);                 = ( - 0x01) - 0x01;                 = ( >> 0x04) >> 0x04;                 =  - 0x01;                 =  >> 0x04;            }            ( == 0x0, "Strings: hex length insufficient");              = 0;             () {                 ( >= ) {                    ;                }                 =  + 0x20;                  = 0;                 () {                     ( >= ) {                        ;                    }                     =  + 0x20;                     = ((((0x20 + ) + 0x17) +  + 0x11) + );                      = 0;                     () {                          = ;                         ( >= ) {                            ;                        }                         ( + 0x20 >= ) {                            ;                        }                         = ( + 0x20) + 0x20;                         =  + 0x20;                    }                    ("\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");                }            }        }         ((([] / 0x01))) {            [] = (0 * 0x01) | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []);             (, , (.));        }    }        // 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)    // 0x08134567 => lockTokens(uint256,string)    // 0x0eb34740 => lockedTokens()    // 0x248a9ca3 => getRoleAdmin(bytes32)    // 0x2f2ff15d => grantRole(bytes32,address)    // 0x36568abe => renounceRole(bytes32,address)    // 0x5c975abb => paused()    // 0x715018a6 => renounceOwnership()    // 0x75b238fc => ADMIN_ROLE()    // 0x8da5cb5b => owner()    // 0x91d14854 => unresolved_91d14854(uint256,address)    // 0x926d7d7f => RELAYER_ROLE()    // 0xa217fddf => DEFAULT_ADMIN_ROLE()    // 0xd547741f => revokeRole(bytes32,address)    // 0xf2fde38b => transferOwnership(address)    // 0xfc0c546a => token()}