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
This result is permanently available athttps://decompiler.exvul.com/bsc/0x27f8b36995602269d0e452b1acc63c97fff6abe8
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()}