BNB Chain

0x0bc0877e631f7104077f9fc21a23be1924d24293

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

Decompilation outputBNB Chain · 0x0bc0877e…24d242934.1 KB3.2 s
Share
366 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;  {    ( => )  ; // STORAGE[0x0]    ( => ( => ))  ; // STORAGE[0x1]      ; // STORAGE[0x2]     ; // STORAGE[0x3]     ; // STORAGE[0x4]      ; // STORAGE[0x5] bytes 0 to 0      ; // STORAGE[0x6]      ; // STORAGE[0x7]     ; // STORAGE[0xd]    ( => ) ; // STORAGE[0xe]    ( => ) ; // STORAGE[0xf]      ; // STORAGE[0x12]      ; // STORAGE[0x14]     ; // STORAGE[0x15]      ; // STORAGE[0x1d]         ( ,  , );     ( ,  , );     ( ,  );         () {        (. == , "Ownable: caller is not the owner");        ;    }    ()   {        // Synthetic compatibility routes preserve original selectors for unresolved names.         ((.. >= 4) && (. == 0x6ceeb0bf)) {            // Route to Unknown_6ceeb0bf(address) after replacing only msg.sig.            ((0x1e7e789b));            ;        }         ((.. >= 4) && (. == 0x7f8d4443)) {            // Route to Unknown_7f8d4443(address,bool) after replacing only msg.sig.            ((0x308d341f));            ;        }         ((.. >= 4) && (. == 0x83786d8e)) {            // Route to Unknown_83786d8e(uint256) after replacing only msg.sig.            ((0x2136145f));            ;        }        ();    }             ()    ( ) {         ;    }         ( ,  )    () {        (. != (0), "ERC20: approve from the zero address");        ( != (0), "ERC20: approve to the zero address");        [.][] = ;         (., , [.][]);         ;    }         ( ,  ,  )    () {        ( != (0), "ERC20: transfer from the zero address");        ( != (0), "ERC20: transfer to the zero address");        ( > 0x0, "Transfer amount must be greater than zero");         (!(([]) || ([]))) {            (![]);             ( == ) {                ( ,   ) = .(); // staticcall                ();                ( ,   ) = .(); // staticcall                ();                ( ,   ) = .(.((0x0902f1ac))); // staticcall getReserves                ();                ( ,   ) = (.).(); // staticcall                ();                ( ,   ) = (.).(); // staticcall                ();                  = 0;                  = 0;                  = 0;                 (. == ) {                      = 0;                      = 0;                     (. > .) {                         = . - .;                         = ((. - .) > ) ? 1 : 0;                    }                      = 0;                     (. == .) {                         = 0x01;                    }                     = ;                     = ;                     = ;                }                  = ;                  = ;                  = ;                 (. == ) {                      = ;                      = ;                     ( > .) {                         =  - .;                         = (( - .) > ) ? 1 : 0;                    }                      = ;                     ( == .) {                         = 0x01;                    }                     = ;                     = ;                     = ;                }                (( | ) == 0x0);            }            (, , );        }  {            (, , );        }         = 0x60 + ;         ( <= [][.]) {            ( != (0), "ERC20: approve from the zero address");            (. != (0), "ERC20: approve to the zero address");            [][.] = [][.] - ;             (, ., [][.]);             ;        }  {              = 0;             () {                 (!( < )) {                    ;                }                 = 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");        }    }         ( ,  )    () {        (!(([.][] + ) < [.][]), "SafeMath: addition overflow");        (. != (0), "ERC20: approve from the zero address");        ( != (0), "ERC20: approve to the zero address");        [.][] = [.][] + ;         (., , [.][]);         ;    }         ( )   {        ();         = ;    }         ()    {         (, (0));         = (0);    }         ( ,  )   {        ();        [] = ;    }         ( )   {        ();    }         ()    ( ) {         ;    }         ( ,  )    () {         ;         = 0x60 + ;         (!( > [.][])) {            (. != (0), "ERC20: approve from the zero address");            ( != (0), "ERC20: approve to the zero address");            [.][] = [.][] - ;             (., , [.][]);        }  {              = 0;             () {                 (!( < .)) {                    ;                }                 = 0x20 + ;            }             (0x40 > .) {            }            ("ERC20: decreased allowance below zero");        }         ;    }         ( ,  )    () {        (, , .);         ;    }         ( )    {        ( != (0), "Ownable: new owner is the zero address");         (, );         = ;    }         ( ,  ,  )  {        // Decompilation incomplete: helper effect provenance is conservative.        ( != (0), "ERC20: transfer from the zero address");        ( != (0), "ERC20: transfer to the zero address");        (!( > []), "ERC20: transfer amount exceeds balance");         = 0x40 + ;         (!( <= [])) {              = 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");        }        [] = ([] - );        ([] +  >= [], "SafeMath: addition overflow");        [] = ([] + );         (, , );    }         ( )  {        // Decompilation incomplete: helper effect provenance is conservative.        ();        ( != 0x0, "ERC20: transfer from the zero address");        ( != 0x0, "ERC20: transfer to the zero address");        (!( > []), "ERC20: transfer amount exceeds balance");         = 0x40 + ;         (!( <= [])) {              = 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");        }        [] = ([] - );        ([] +  >= [], "SafeMath: addition overflow");        [] = ([] + );         (, , );    }         ( ,  ,  )  {        // Decompilation incomplete: helper effect provenance is conservative.        ( != (0), "ERC20: transfer from the zero address");        ( != (0), "ERC20: transfer to the zero address");        ( > 0x0, "Transfer amount must be greater than zero");         (!(([]) || ([]))) {            (![]);             ( == ) {                ( ,   ) = .(); // staticcall                ();                ( ,   ) = .(); // staticcall                ();                ( ,   ) = .(.((0x0902f1ac))); // staticcall getReserves                ();                ( ,   ) = (.).(); // staticcall                ();                ( ,   ) = (.).(); // staticcall                ();                  = 0;                  = 0;                  = 0;                 (. == ) {                      = 0;                      = 0;                     (. > .) {                         = . - .;                         = ((. - .) > ) ? 1 : 0;                    }                      = 0;                     (. == .) {                         = 0x01;                    }                     = ;                     = ;                     = ;                }                  = ;                  = ;                  = ;                 (. == ) {                      = ;                      = ;                     ( > .) {                         =  - .;                         = (( - .) > ) ? 1 : 0;                    }                      = ;                     ( == .) {                         = 0x01;                    }                     = ;                     = ;                     = ;                }                (( | ) == 0x0);            }            (, , );            ;        }  {            (, , );            ;        }    }         ( )  {         {              := (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.        // 0x06fdde03 => name()    // 0x095ea7b3 => approve(address,uint256)    // 0x18160ddd => totalSupply()    // 0x23b872dd => transferFrom(address,address,uint256)    // 0x313ce567 => decimals()    // 0x39509351 => increaseAllowance(address,uint256)    // 0x49bd5a5e => uniswapV2Pair()    // 0x6ceeb0bf => Unknown_6ceeb0bf(address)    // 0x70a08231 => balanceOf(address)    // 0x715018a6 => renounceOwnership()    // 0x7f8d4443 => Unknown_7f8d4443(address,bool)    // 0x83786d8e => Unknown_83786d8e(uint256)    // 0x8da5cb5b => owner()    // 0x927f3d41 => _defaultAddress()    // 0x95d89b41 => symbol()    // 0xa457c2d7 => decreaseAllowance(address,uint256)    // 0xa9059cbb => transfer(address,uint256)    // 0xc45a0155 => factory()    // 0xdd62ed3e => allowance(address,address)    // 0xf2fde38b => transferOwnership(address)    // 0xfbd5155e => unresolved_fbd5155e()}