Ethereum
0x8c0d729d03cb8ecbc79a62a68cdd67ccfa6a7b92
Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.
Decompilation outputEthereum · 0x8c0d729d…fa6a7b928.2 KB52.5 s
This result is permanently available athttps://decompiler.exvul.com/ethereum/0x8c0d729d03cb8ecbc79a62a68cdd67ccfa6a7b92
628 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; { ( ) ( );} { = (0xdac17f958d2ee523a2206206994597c13d831ec7); = (0x7c78a049fff71609990017b58a959e926e6ec4c6); = ; = 2; = (0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb); = 2; = 29970000000000000000000000; = 40500000000000000000000000; = ; = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3); = 1; = 1000000000000; ; // STORAGE[0x0] ( ) { ("memory-safe") { (0x00, (224, 0x4e487b71)) (0x04, ) (0x00, 0x24) } } () { } ( , ) { (!(((0x04 + ) + + 0x20) > ..)); ; = + 0x64; (!(0 < )) { } { } ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } = ; () { = !; ( != 0x0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ); = ; } = ; } ( != 0x0, "approve failed"); ((0x2 == 0x0) || (0x2 == 0x2)) { = + 0x64; (!(0 < )) { } { } ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } = ; () { = !; ( != 0x0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ); = ; } = ; } ( != 0x0, "approve failed"); } = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((0x21803566376b97f8800000 / 0x014e) > )) { = 0x21803566376b97f8800000 / 0x014e; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((((0x21803566376b97f8800000 - ) * 0x0c) / 0x03e8) > )) { = ((0x21803566376b97f8800000 - ) * 0x0c) / 0x03e8; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((((0x21803566376b97f8800000 - ) - * 0x2d) / 0x03e8) > )) { = ((0x21803566376b97f8800000 - ) - * 0x2d) / 0x03e8; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((( * 0x13) / 0x64) > )) { = ( * 0x13) / 0x64; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = * 0x13; = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = ; = * 0x13; = ; = - ; = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!( > )) { = ; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(0, 0); // call (); ( - >= 0x20); ( == ); ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).((0x18ca64f499a6a8c7400000 / 0x14), 0); // call (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); ( == ); } ( , ) { (!(((0x04 + ) + + 0x20) > ..)); ; = + 0x64; (!(0 < )) { } { } ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } = ; () { = !; ( != 0x0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ); = ; } = ; } ( != 0x0, "approve failed"); ((0x2 == 0x0) || (0x2 == 0x2)) { = + 0x64; (!(0 < )) { } { } ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } = ; () { = !; ( != 0x0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ); = ; } = ; } ( != 0x0, "approve failed"); } = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((0x21803566376b97f8800000 / 0x014e) > )) { = 0x21803566376b97f8800000 / 0x014e; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((((0x21803566376b97f8800000 - ) * 0x0c) / 0x03e8) > )) { = ((0x21803566376b97f8800000 - ) * 0x0c) / 0x03e8; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((((0x21803566376b97f8800000 - ) - * 0x2d) / 0x03e8) > )) { = ((0x21803566376b97f8800000 - ) - * 0x2d) / 0x03e8; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!((( * 0x13) / 0x64) > )) { = ( * 0x13) / 0x64; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = * 0x13; = ; = 0x21803566376b97f8800000 - ; = ; = ; = ; = (0x21803566376b97f8800000 - ) - ; = ; = ; = ; = ((0x21803566376b97f8800000 - ) - ) - ; = ; = * 0x13; = ; = - ; = ().; ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); = 0xe8d4a51000 * .; = ; (!( > )) { = ; } ( != 0x0) { = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(, 0); // call (); ( - >= 0x20); ( == ); } = ; = + .; ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).(0, 0); // call (); ( - >= 0x20); ( == ); ( , ) = (0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3).((0x18ca64f499a6a8c7400000 / 0x14), 0); // call (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (( + .) - >= 0x20); ( == ); } ( , ) () { (, ); . - ; } ( ) { (); } ( , , ) { (!(((0x04 + ) + + 0x20) > ..)); } ([] , [] , [] , ) { (. > 0xffffffffffffffff) (65); ; ((( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f))) < ) | (( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f))) > 0xffffffffffffffff)) (65); = + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f)); [] = ; (!((0x20 + ((0x04 + ) + (. << 0x05))) > ..)); = + 0x20; = 0x20 + (0x04 + ); () { (!( < (0x20 + ((0x04 + ) + (. << 0x05))))) { ; } (.[] == ((.[]))); = 0x20 + ; = 0x20 + ; } (!( <= 0xffffffffffffffff)) (65); ((( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f))) < ) | (( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f))) > 0xffffffffffffffff)) (65); = + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f)); (!(((0x04 + ) + (. << 0x05) + 0x20) > ..)); = (0x04 + ) + 0x20; = ; = + 0x20; = 0x20; = ((0x04 + ) + (. << 0x05)) + 0x20; = 0; = 0x04 + ; = ..; () { ( >= ) { ; } = + ; = ; = + ; = ; = ; = ; = ; = ; (!( <= 0xffffffffffffffff)) (65); ((( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f))) < ) | (( + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f))) > 0xffffffffffffffff)) (65); = + (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 & ((0x20 + (. << 0x05)) + 0x1f)); (!(((0x04 + ) + (. << 0x05) + 0x20) > ..)); = (0x04 + ) + 0x20; = ; = + 0x20; = 0x20; = ((0x04 + ) + (. << 0x05)) + 0x20; = 0; = 0x04 + ; = ..; () { ( >= ) { ; } = + ; = ; = + ; = ; = ; = ; = ; = ; (!(((0x04 + ) + + 0x20) > ..)); } } } ( , ) { // Decompilation incomplete: helper effect provenance is conservative. ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(0x7c78a049fff71609990017b58a959e926e6ec4c6); // staticcall (); = .(, ()); ((0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb).. != 0x0); ( , ) = (0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb).(0xdac17f958d2ee523a2206206994597c13d831ec7, , 0x60); // call (); ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(()); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); (. != 0x0) { = + 0x64; = 0; () { = ; (!( < )) { ; } (!((0x20 + ) < )) { ; } = 0x20 + (0x20 + ); = 0x20 + ; } ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } = ; () { = !; ( != 0x0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ); = ; } = ; } ( != 0x0, "transfer failed"); } ( , ) = (0xdac17f958d2ee523a2206206994597c13d831ec7).(0x7c78a049fff71609990017b58a959e926e6ec4c6); // staticcall (); = + ((. + 0x1f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); (!((( + .) - ) < 0x20)); (!((. - ) < ), "GAIN_LT_MIN"); } ( ) { // Decompilation incomplete: helper effect provenance is conservative. ((0x7c78a049fff71609990017b58a959e926e6ec4c6) == ., "NOT_OWNER"); ( != (0)) { ().(()); ; = + 0x64; = 0; () { = ; (!( < )) { ; } (!((0x20 + ) < )) { ; } = 0x20 + (0x20 + ); = 0x20 + ; } ( , ) = .(); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } = ; () { = !; ( != 0x0) { (((0x20 + ) + ) - (0x20 + ) >= 0x20); ( == ); = ; } = ; } ( != 0x0, "transfer failed"); } { ( , ) = (0x7c78a049fff71609990017b58a959e926e6ec4c6).{ : (). }(""); // call = 0x60; (. != 0) { = + ((. + 0x3f) & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)); = ; } (, "NATIVE_SEND_FAIL"); } } // 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. // 0x13a1a562 => onMoolahFlashLoan(uint256,bytes) // 0x31f57072 => onMorphoFlashLoan(uint256,bytes) // 0x38d52e0f => asset() // 0x5601eaea => execute(uint256,uint256) // 0x839006f2 => rescue(address) // 0x8da5cb5b => owner() // 0x93290d4a => nativePool() // 0x938b9ceb => loops() // 0xa1d48336 => pancakeV3FlashCallback(uint256,uint256,bytes) // 0xae07e5da => unresolved_ae07e5da() // 0xb00e0539 => flashKind() // 0xb4150c6c => unresolved_b4150c6c() // 0xbba81b1c => dMax() // 0xc79dfb68 => unresolved_c79dfb68() // 0xd4b83992 => target() // 0xd944e6a3 => geo() // 0xf04f2707 => receiveFlashLoan(address[],uint256[],uint256[],bytes) // 0xf51e181a => scale()}