{ { mstore(0x40, memoryguard(128)) sstore(23, f()) } function f() -> v{ let a1 := calldataload(mul(1,4)) let a2 := calldataload(mul(2,4)) let a3 := calldataload(mul(3,4)) let a4 := calldataload(g()) let a5 := calldataload(mul(5,4)) let a6 := calldataload(mul(6,4)) let a7 := calldataload(mul(7,4)) let a8 := calldataload(mul(8,4)) let a9 := calldataload(mul(9,4)) a1 := calldataload(mul(0,4)) let a10 := calldataload(mul(10,4)) let a11 := calldataload(mul(11,4)) let a12 := calldataload(mul(12,4)) let a13 := calldataload(mul(13,4)) let a14 := calldataload(mul(14,4)) let a15 := calldataload(mul(15,4)) let a16 := calldataload(mul(16,4)) let a17 := calldataload(mul(17,4)) sstore(0, a1) sstore(mul(17,4), a17) sstore(mul(16,4), a16) sstore(mul(15,4), a15) sstore(mul(14,4), a14) sstore(mul(13,4), a13) sstore(mul(12,4), a12) sstore(mul(11,4), a11) sstore(mul(10,4), a10) sstore(mul(9,4), a9) sstore(mul(8,h()), a8) sstore(mul(7,4), a7) sstore(mul(6,4), a6) sstore(mul(5,4), a5) sstore(mul(4,4), a4) sstore(mul(3,4), a3) sstore(mul(2,4), a2) sstore(mul(1,4), a1) } function g() -> v { let a1 := calldataload(mul(1,4)) let a2 := calldataload(mul(2,4)) let a3 := calldataload(mul(3,4)) let a4 := calldataload(mul(4,4)) let a5 := calldataload(mul(5,4)) let a6 := calldataload(mul(6,4)) let a7 := calldataload(mul(7,4)) let a8 := calldataload(mul(8,4)) let a9 := calldataload(mul(9,4)) a1 := calldataload(mul(0,4)) let a10 := calldataload(mul(10,4)) let a11 := calldataload(mul(11,4)) let a12 := calldataload(mul(12,4)) let a13 := calldataload(mul(13,4)) let a14 := calldataload(mul(14,4)) let a15 := calldataload(mul(15,4)) let a16 := calldataload(mul(16,4)) let a17 := calldataload(mul(17,4)) sstore(0, a1) sstore(mul(17,4), a17) sstore(mul(16,4), a16) sstore(mul(15,4), a15) sstore(mul(14,4), a14) sstore(mul(13,4), a13) sstore(mul(12,4), a12) sstore(mul(11,4), a11) sstore(mul(10,4), a10) sstore(mul(9,4), a9) sstore(mul(8,4), a8) sstore(mul(7,4), a7) sstore(mul(6,4), a6) sstore(mul(5,4), a5) sstore(mul(4,4), a4) sstore(mul(3,4), a3) sstore(mul(2,4), a2) sstore(mul(1,4), a1) v := i() } function h() -> v { let a1 := calldataload(mul(1,4)) let a2 := calldataload(mul(2,4)) let a3 := calldataload(mul(3,4)) let a4 := calldataload(mul(4,4)) let a5 := calldataload(mul(5,4)) let a6 := calldataload(mul(6,4)) let a7 := calldataload(mul(7,4)) let a8 := calldataload(mul(8,4)) let a9 := calldataload(mul(9,4)) let a10 := calldataload(mul(10,4)) let a11 := calldataload(mul(10,4)) a1 := calldataload(mul(0,4)) a2 := calldataload(mul(1,4)) let a12 := calldataload(mul(12,4)) let a13 := calldataload(mul(13,4)) let a14 := calldataload(mul(14,4)) let a15 := calldataload(mul(15,4)) let a16 := calldataload(mul(16,4)) let a17 := calldataload(mul(17,4)) let a18 := calldataload(mul(18,4)) let a19 := calldataload(mul(19,4)) sstore(0, add(a1, a2)) sstore(mul(17,4), a19) sstore(mul(17,4), a18) sstore(mul(17,4), a17) sstore(mul(16,4), a16) sstore(mul(15,4), a15) sstore(mul(14,4), a14) sstore(mul(13,4), a13) sstore(mul(12,4), a12) sstore(mul(11,4), a11) sstore(mul(10,4), a10) sstore(mul(9,4), a9) sstore(mul(8,4), a8) sstore(mul(7,4), a7) sstore(mul(6,4), a6) sstore(mul(5,4), a5) sstore(mul(4,4), a4) sstore(mul(3,4), a3) sstore(mul(2,4), a2) sstore(mul(1,4), a1) v := i() } function i() -> v { let a1 := calldataload(mul(1,4)) let a2 := calldataload(mul(2,4)) let a3 := calldataload(mul(3,4)) let a4 := calldataload(mul(4,4)) let a5 := calldataload(mul(5,4)) let a6 := calldataload(mul(6,4)) let a7 := calldataload(mul(7,4)) let a8 := calldataload(mul(8,4)) let a9 := calldataload(mul(9,4)) a1 := calldataload(mul(0,4)) let a10 := calldataload(mul(10,4)) let a11 := calldataload(mul(11,4)) let a12 := calldataload(mul(12,4)) let a13 := calldataload(mul(13,4)) let a14 := calldataload(mul(14,4)) let a15 := calldataload(mul(15,4)) let a16 := calldataload(mul(16,4)) let a17 := calldataload(mul(17,4)) sstore(0, a1) sstore(mul(17,4), a17) sstore(mul(16,4), a16) sstore(mul(15,4), a15) sstore(mul(14,4), a14) sstore(mul(13,4), a13) sstore(mul(12,4), a12) sstore(mul(11,4), a11) sstore(mul(10,4), a10) sstore(mul(9,4), a9) sstore(mul(8,4), a8) sstore(mul(7,4), a7) sstore(mul(6,4), a6) sstore(mul(5,4), a5) sstore(mul(4,4), a4) sstore(mul(3,4), a3) sstore(mul(2,4), a2) sstore(mul(1,4), a1) v := sload(mul(42,8)) } } // ---- // step: stackLimitEvader // // { // { // mstore(0x40, memoryguard(0x0100)) // sstore(23, f()) // } // function f() -> v // { // mstore(0x80, calldataload(mul(1, 4))) // let a2 := calldataload(mul(2, 4)) // let a3 := calldataload(mul(3, 4)) // let a4 := calldataload(g()) // let a5 := calldataload(mul(5, 4)) // let a6 := calldataload(mul(6, 4)) // let a7 := calldataload(mul(7, 4)) // let a8 := calldataload(mul(8, 4)) // let a9 := calldataload(mul(9, 4)) // mstore(0x80, calldataload(mul(0, 4))) // let a10 := calldataload(mul(10, 4)) // let a11 := calldataload(mul(11, 4)) // let a12 := calldataload(mul(12, 4)) // let a13 := calldataload(mul(13, 4)) // let a14 := calldataload(mul(14, 4)) // let a15 := calldataload(mul(15, 4)) // let a16 := calldataload(mul(16, 4)) // let a17 := calldataload(mul(17, 4)) // sstore(0, mload(0x80)) // sstore(mul(17, 4), a17) // sstore(mul(16, 4), a16) // sstore(mul(15, 4), a15) // sstore(mul(14, 4), a14) // sstore(mul(13, 4), a13) // sstore(mul(12, 4), a12) // sstore(mul(11, 4), a11) // sstore(mul(10, 4), a10) // sstore(mul(9, 4), a9) // sstore(mul(8, h()), a8) // sstore(mul(7, 4), a7) // sstore(mul(6, 4), a6) // sstore(mul(5, 4), a5) // sstore(mul(4, 4), a4) // sstore(mul(3, 4), a3) // sstore(mul(2, 4), a2) // sstore(mul(1, 4), mload(0x80)) // } // function g() -> v_1 // { // mstore(0xc0, calldataload(mul(1, 4))) // let a2_3 := calldataload(mul(2, 4)) // let a3_4 := calldataload(mul(3, 4)) // let a4_5 := calldataload(mul(4, 4)) // let a5_6 := calldataload(mul(5, 4)) // let a6_7 := calldataload(mul(6, 4)) // let a7_8 := calldataload(mul(7, 4)) // let a8_9 := calldataload(mul(8, 4)) // let a9_10 := calldataload(mul(9, 4)) // mstore(0xc0, calldataload(mul(0, 4))) // let a10_11 := calldataload(mul(10, 4)) // let a11_12 := calldataload(mul(11, 4)) // let a12_13 := calldataload(mul(12, 4)) // let a13_14 := calldataload(mul(13, 4)) // let a14_15 := calldataload(mul(14, 4)) // let a15_16 := calldataload(mul(15, 4)) // let a16_17 := calldataload(mul(16, 4)) // let a17_18 := calldataload(mul(17, 4)) // sstore(0, mload(0xc0)) // sstore(mul(17, 4), a17_18) // sstore(mul(16, 4), a16_17) // sstore(mul(15, 4), a15_16) // sstore(mul(14, 4), a14_15) // sstore(mul(13, 4), a13_14) // sstore(mul(12, 4), a12_13) // sstore(mul(11, 4), a11_12) // sstore(mul(10, 4), a10_11) // sstore(mul(9, 4), a9_10) // sstore(mul(8, 4), a8_9) // sstore(mul(7, 4), a7_8) // sstore(mul(6, 4), a6_7) // sstore(mul(5, 4), a5_6) // sstore(mul(4, 4), a4_5) // sstore(mul(3, 4), a3_4) // sstore(mul(2, 4), a2_3) // sstore(mul(1, 4), mload(0xc0)) // v_1 := i() // } // function h() -> v_19 // { // mstore(0xa0, calldataload(mul(1, 4))) // mstore(0xc0, calldataload(mul(2, 4))) // let a3_22 := calldataload(mul(3, 4)) // let a4_23 := calldataload(mul(4, 4)) // let a5_24 := calldataload(mul(5, 4)) // let a6_25 := calldataload(mul(6, 4)) // let a7_26 := calldataload(mul(7, 4)) // let a8_27 := calldataload(mul(8, 4)) // let a9_28 := calldataload(mul(9, 4)) // let a10_29 := calldataload(mul(10, 4)) // let a11_30 := calldataload(mul(10, 4)) // mstore(0xa0, calldataload(mul(0, 4))) // mstore(0xc0, calldataload(mul(1, 4))) // let a12_31 := calldataload(mul(12, 4)) // let a13_32 := calldataload(mul(13, 4)) // let a14_33 := calldataload(mul(14, 4)) // let a15_34 := calldataload(mul(15, 4)) // let a16_35 := calldataload(mul(16, 4)) // let a17_36 := calldataload(mul(17, 4)) // let a18 := calldataload(mul(18, 4)) // let a19 := calldataload(mul(19, 4)) // sstore(0, add(mload(0xa0), mload(0xc0))) // sstore(mul(17, 4), a19) // sstore(mul(17, 4), a18) // sstore(mul(17, 4), a17_36) // sstore(mul(16, 4), a16_35) // sstore(mul(15, 4), a15_34) // sstore(mul(14, 4), a14_33) // sstore(mul(13, 4), a13_32) // sstore(mul(12, 4), a12_31) // sstore(mul(11, 4), a11_30) // sstore(mul(10, 4), a10_29) // sstore(mul(9, 4), a9_28) // sstore(mul(8, 4), a8_27) // sstore(mul(7, 4), a7_26) // sstore(mul(6, 4), a6_25) // sstore(mul(5, 4), a5_24) // sstore(mul(4, 4), a4_23) // sstore(mul(3, 4), a3_22) // sstore(mul(2, 4), mload(0xc0)) // sstore(mul(1, 4), mload(0xa0)) // v_19 := i() // } // function i() -> v_37 // { // mstore(0xe0, calldataload(mul(1, 4))) // let a2_39 := calldataload(mul(2, 4)) // let a3_40 := calldataload(mul(3, 4)) // let a4_41 := calldataload(mul(4, 4)) // let a5_42 := calldataload(mul(5, 4)) // let a6_43 := calldataload(mul(6, 4)) // let a7_44 := calldataload(mul(7, 4)) // let a8_45 := calldataload(mul(8, 4)) // let a9_46 := calldataload(mul(9, 4)) // mstore(0xe0, calldataload(mul(0, 4))) // let a10_47 := calldataload(mul(10, 4)) // let a11_48 := calldataload(mul(11, 4)) // let a12_49 := calldataload(mul(12, 4)) // let a13_50 := calldataload(mul(13, 4)) // let a14_51 := calldataload(mul(14, 4)) // let a15_52 := calldataload(mul(15, 4)) // let a16_53 := calldataload(mul(16, 4)) // let a17_54 := calldataload(mul(17, 4)) // sstore(0, mload(0xe0)) // sstore(mul(17, 4), a17_54) // sstore(mul(16, 4), a16_53) // sstore(mul(15, 4), a15_52) // sstore(mul(14, 4), a14_51) // sstore(mul(13, 4), a13_50) // sstore(mul(12, 4), a12_49) // sstore(mul(11, 4), a11_48) // sstore(mul(10, 4), a10_47) // sstore(mul(9, 4), a9_46) // sstore(mul(8, 4), a8_45) // sstore(mul(7, 4), a7_44) // sstore(mul(6, 4), a6_43) // sstore(mul(5, 4), a5_42) // sstore(mul(4, 4), a4_41) // sstore(mul(3, 4), a3_40) // sstore(mul(2, 4), a2_39) // sstore(mul(1, 4), mload(0xe0)) // v_37 := sload(mul(42, 8)) // } // }