BNB Chain

0xda43dd736dd2a1183c36a1a56c5665a63c135568

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

Decompilation outputBNB Chain · 0xda43dd73…3c1355684.5 KB5.1 s
Share
418 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;  {     ( ,  )   ( );}  {        = 0;        ( => ( => ))  ; // STORAGE[0x0]    ( => )  ; // STORAGE[0x1]      ; // STORAGE[0x2]      ; // STORAGE[0x3]      ; // STORAGE[0x4]      ; // STORAGE[0x5]    ( => )  ; // STORAGE[0x6]      ; // STORAGE[0x7]    ( => ) ;    ( => ) ;    ( => ) ;    ( => ) ;    ( => ) ;     ;     ;     ;     ;     ;     ;     ;     ;     ;     ;     ;     ;     ;     ;         ( ,  ,  );     ( ,  ,  );     ( ,  ,  );     ( )   {         ("memory-safe") {            (0x00, (224, 0x4e487b71))            (0x04, )            (0x00, 0x24)        }    }    ()   {        // Synthetic compatibility routes preserve original selectors for unresolved names.         ((.. >= 4) && (. == 0x4a28d784)) {            // Route to Unknown_4a28d784(uint256,uint256,uint256,bool,uint256,uint256,bytes32,bool,uint256,uint256) after replacing only msg.sig.            ((0xe87d7864));            ;        }         ((.. >= 4) && (. == 0x9010d07c)) {            // Route to Unknown_9010d07c(uint256,uint256) after replacing only msg.sig.            ((0xb656a175));            ;        }        ();    }             ( )    () {        ( == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000));         (0x5a05180f00000000000000000000000000000000000000000000000000000000 == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000)) {             !(!(0x5a05180f00000000000000000000000000000000000000000000000000000000 == ( & (0xffffffff00000000000000000000000000000000000000000000000000000000))));        }  {             (0x7965db0b00000000000000000000000000000000000000000000000000000000 == ( & 0xffffffff00000000000000000000000000000000000000000000000000000000)) {                 !(!(0x7965db0b00000000000000000000000000000000000000000000000000000000 == ( & (0xffffffff00000000000000000000000000000000000000000000000000000000))));            }  {                 !(!( & (0xffffffff00000000000000000000000000000000000000000000000000000000) == 0x01ffc9a700000000000000000000000000000000000000000000000000000000));            }        }    }         ( ,  ,  ,  )   {        (([0][.]) != 0x0, "error");         = ;         = ;         = ;         = ;    }         ( )    () {         ;    }         ( ,  )   {        (, );    }         ( ,  ,  )   {        (([0][.]) != 0x0, "error");        ().(, );    }         ( ,  )   {        (. == , "AccessControl: can only renounce roles for self");         (([][])) {            [][] = ;             (, , .);        }         ([] != 0) {             (!(([] - 0x01) == ([] - 0x01))) {                 (!(([] - 0x01) < )) (50);                 (!(([] - 0x01) < )) (50);                 = ;                [] = [];            }             (!([] != 0x0)) (49);             = 0;            [] = [] - 0x01;            [] = 0;        }    }         ( ,  ,  ,  ,  ,  ,  ,  ,  ,  )   {        ( == ( & 0xff));        ( == ( & 0xff));        ( > 0x0, "id error");         = 0x06;        (!([]), " id withdraw error");         = (0xe0 + ) + 0x20;        ();        (() != 0x0, "invalid signature");        ( == (()), "unauthorized");        [] = (.) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []);        (.. != 0x0);        ( ,   ) = .(, , , (), , , ); // call        ();        ().(, );        ().(.,  - );         (., , );    }         ( ,  )    () {         (!( < )) (50);         ;    }         ( ,  )   {        (, );    }         ( ,  )  {        // 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");              = 0;             () {                  = ;                 ( >= ) {                    ;                }                 (0x20 +  >= ) {                    ;                }                 = 0x20 + (0x20 + );                 = 0x20 + ;            }             = 0;             () {                  = ;                 ( >= ) {                    ;                }                 (0x20 +  >= ) {                    ;                }                 = 0x20 + (0x20 + );                 = 0x20 + ;            }             = 0x28 + (. + ((0x20 + ) + .));             = 0;             () {                 ( >= .) {                    ;                }                 (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");            }        }         (!(([][]) != 0x0)) {            [][] = ;             (, , .);        }          = 0;         (!([] != 0x0)) {            [] = 0x01 + [];             = ;            [] = [];             = ;        }    }         ( ,  )  {        // 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");              = 0;             () {                  = ;                 ( >= ) {                    ;                }                 (0x20 +  >= ) {                    ;                }                 = 0x20 + (0x20 + );                 = 0x20 + ;            }             = 0;             () {                  = ;                 ( >= ) {                    ;                }                 (0x20 +  >= ) {                    ;                }                 = 0x20 + (0x20 + );                 = 0x20 + ;            }             = 0x28 + (. + ((0x20 + ) + .));             = 0;             () {                 ( >= .) {                    ;                }                 (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");            }        }         (([][])) {            [][] = ;             (, , .);        }          = 0;         ([] != 0) {             (!(([] - 0x01) == (([] - 0x01)))) {                 (!(([] - 0x01) < )) (50);                 (!(([] - 0x01) < )) (50);                 = ;                [] = [];            }             (!([] != 0x0)) (49);             = 0;            [] = [] - 0x01;            [] = 0;             = ;        }    }         ( )  {         {              := (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)    // 0x0682bdbc => signAddress()    // 0x087bc228 => setConfig(address,address,address,address)    // 0x1581b600 => withdrawAddress()    // 0x248a9ca3 => getRoleAdmin(bytes32)    // 0x2f2ff15d => grantRole(bytes32,address)    // 0x34a1bedb => admin(address,address,uint256)    // 0x3644e515 => DOMAIN_SEPARATOR()    // 0x36568abe => renounceRole(bytes32,address)    // 0x4a28d784 => Unknown_4a28d784(uint256,uint256,uint256,bool,uint256,uint256,bytes32,bool,uint256,uint256)    // 0x4de10d6f => BTCX()    // 0x8747bf9c => withdrawInfo(uint256)    // 0x9010d07c => Unknown_9010d07c(uint256,uint256)    // 0x91d14854 => hasRole(bytes32,address)    // 0xa217fddf => DEFAULT_ADMIN_ROLE()    // 0xca15c873 => getRoleMemberCount(bytes32)    // 0xd547741f => revokeRole(bytes32,address)    // 0xe82bef29 => fundAddress()}