IR: /*=====================================================* * WARNING * * Solidity to Yul compilation is still EXPERIMENTAL * * It can result in LOSS OF FUNDS or worse * * !USE AT YOUR OWN RISK! * *=====================================================*/ /// @use-src 0:"exp_base_literal/input.sol" object "C_81" { code { /// @src 0:82:370 "contract C {..." mstore(64, 128) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_81() let _1 := allocate_unbounded() codecopy(_1, dataoffset("C_81_deployed"), datasize("C_81_deployed")) return(_1, datasize("C_81_deployed")) function allocate_unbounded() -> memPtr { memPtr := mload(64) } function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() { revert(0, 0) } /// @src 0:82:370 "contract C {..." function constructor_C_81() { /// @src 0:82:370 "contract C {..." } /// @src 0:82:370 "contract C {..." } /// @use-src 0:"exp_base_literal/input.sol" object "C_81_deployed" { code { /// @src 0:82:370 "contract C {..." mstore(64, 128) if iszero(lt(calldatasize(), 4)) { let selector := shift_right_224_unsigned(calldataload(0)) switch selector case 0x70cb9605 { // f(uint256,uint256,uint256,uint256) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } let param_0, param_1, param_2, param_3 := abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256(4, calldatasize()) let ret_0, ret_1, ret_2, ret_3 := fun_f_80(param_0, param_1, param_2, param_3) let memPos := allocate_unbounded() let memEnd := abi_encode_tuple_t_uint256_t_int256_t_uint256_t_uint256__to_t_uint256_t_int256_t_uint256_t_uint256__fromStack(memPos , ret_0, ret_1, ret_2, ret_3) return(memPos, sub(memEnd, memPos)) } default {} } if iszero(calldatasize()) { } revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() function shift_right_224_unsigned(value) -> newValue { newValue := shr(224, value) } function allocate_unbounded() -> memPtr { memPtr := mload(64) } function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() { revert(0, 0) } function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() { revert(0, 0) } function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() { revert(0, 0) } function cleanup_t_uint256(value) -> cleaned { cleaned := value } function validator_revert_t_uint256(value) { if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) } } function abi_decode_t_uint256(offset, end) -> value { value := calldataload(offset) validator_revert_t_uint256(value) } function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3 { if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() } { let offset := 0 value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd) } { let offset := 32 value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd) } { let offset := 64 value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd) } { let offset := 96 value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd) } } function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) { mstore(pos, cleanup_t_uint256(value)) } function cleanup_t_int256(value) -> cleaned { cleaned := value } function abi_encode_t_int256_to_t_int256_fromStack(value, pos) { mstore(pos, cleanup_t_int256(value)) } function abi_encode_tuple_t_uint256_t_int256_t_uint256_t_uint256__to_t_uint256_t_int256_t_uint256_t_uint256__fromStack(headStart , value0, value1, value2, value3) -> tail { tail := add(headStart, 128) abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0)) abi_encode_t_int256_to_t_int256_fromStack(value1, add(headStart, 32)) abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64)) abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96)) } function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() { revert(0, 0) } function zero_value_for_split_t_uint256() -> ret { ret := 0 } function zero_value_for_split_t_int256() -> ret { ret := 0 } function cleanup_t_rational_2_by_1(value) -> cleaned { cleaned := value } function identity(value) -> ret { ret := value } function convert_t_rational_2_by_1_to_t_uint256(value) -> converted { converted := cleanup_t_uint256(identity(cleanup_t_rational_2_by_1(value))) } function panic_error_0x11() { mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) mstore(4, 0x11) revert(0, 0x24) } function checked_exp_t_rational_2_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) if gt(exponent, 255) { panic_error_0x11() } power := exp(2, exponent) } function cleanup_t_rational_minus_2_by_1(value) -> cleaned { cleaned := value } function convert_t_rational_minus_2_by_1_to_t_int256(value) -> converted { converted := cleanup_t_int256(identity(cleanup_t_rational_minus_2_by_1(value))) } function checked_exp_t_rational_minus_2_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) if gt(exponent, 255) { panic_error_0x11() } power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639934, exponent) } function cleanup_t_rational_10_by_1(value) -> cleaned { cleaned := value } function convert_t_rational_10_by_1_to_t_uint256(value) -> converted { converted := cleanup_t_uint256(identity(cleanup_t_rational_10_by_1(value))) } function checked_exp_t_rational_10_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) if gt(exponent, 77) { panic_error_0x11() } power := exp(10, exponent) } function cleanup_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1(value) -> cleaned { cleaned := value } function convert_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_to_t_uint256(value) -> converted { converted := cleanup_t_uint256(identity(cleanup_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1(value))) } function checked_exp_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) if gt(exponent, 1) { panic_error_0x11() } power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent) } function cleanup_t_rational_0_by_1(value) -> cleaned { cleaned := value } function convert_t_rational_0_by_1_to_t_uint256(value) -> converted { converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value))) } function checked_exp_t_rational_0_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) power := exp(0, exponent) } function cleanup_t_rational_minus_1_by_1(value) -> cleaned { cleaned := value } function convert_t_rational_minus_1_by_1_to_t_int256(value) -> converted { converted := cleanup_t_int256(identity(cleanup_t_rational_minus_1_by_1(value))) } function checked_exp_t_rational_minus_1_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent) } function cleanup_t_rational_1_by_1(value) -> cleaned { cleaned := value } function convert_t_rational_1_by_1_to_t_uint256(value) -> converted { converted := cleanup_t_uint256(identity(cleanup_t_rational_1_by_1(value))) } function checked_exp_t_rational_1_by_1_t_uint256(exponent) -> power { exponent := cleanup_t_uint256(exponent) power := exp(1, exponent) } /// @ast-id 80 /// @src 0:96:368 "function f(uint a, uint b, uint c, uint d) public pure returns (uint, int, uint, uint) {..." function fun_f_80(var_a_4, var_b_6, var_c_8, var_d_10) -> var__13, var__15, var__17, var__19 { /// @src 0:160:164 "uint" let zero_t_uint256_1 := zero_value_for_split_t_uint256() var__13 := zero_t_uint256_1 /// @src 0:166:169 "int" let zero_t_int256_2 := zero_value_for_split_t_int256() var__15 := zero_t_int256_2 /// @src 0:171:175 "uint" let zero_t_uint256_3 := zero_value_for_split_t_uint256() var__17 := zero_t_uint256_3 /// @src 0:177:181 "uint" let zero_t_uint256_4 := zero_value_for_split_t_uint256() var__19 := zero_t_uint256_4 /// @src 0:196:197 "2" let expr_23 := 0x02 /// @src 0:199:200 "a" let _5 := var_a_4 let expr_24 := _5 /// @src 0:196:200 "2**a" let _6 := convert_t_rational_2_by_1_to_t_uint256(expr_23) let expr_25 := checked_exp_t_rational_2_by_1_t_uint256(expr_24) /// @src 0:187:200 "uint w = 2**a" let var_w_22 := expr_25 /// @src 0:213:215 "-2" let expr_30 := 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe /// @src 0:212:216 "(-2)" let expr_31 := expr_30 /// @src 0:218:219 "b" let _7 := var_b_6 let expr_32 := _7 /// @src 0:212:219 "(-2)**b" let _8 := convert_t_rational_minus_2_by_1_to_t_int256(expr_31) let expr_33 := checked_exp_t_rational_minus_2_by_1_t_uint256(expr_32) /// @src 0:204:219 "int x = (-2)**b" let var_x_28 := expr_33 /// @src 0:232:234 "10" let expr_37 := 0x0a /// @src 0:236:237 "c" let _9 := var_c_8 let expr_38 := _9 /// @src 0:232:237 "10**c" let _10 := convert_t_rational_10_by_1_to_t_uint256(expr_37) let expr_39 := checked_exp_t_rational_10_by_1_t_uint256(expr_38) /// @src 0:223:237 "uint y = 10**c" let var_y_36 := expr_39 /// @src 0:251:260 "2**256 -1" let expr_47 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff /// @src 0:250:262 "(2**256 -1 )" let expr_48 := expr_47 /// @src 0:264:265 "d" let _11 := var_d_10 let expr_49 := _11 /// @src 0:250:265 "(2**256 -1 )**d" let _12 := convert_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_to_t_uint256(expr_48) let expr_50 := checked_exp_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_t_uint256(expr_49) /// @src 0:241:265 "uint z = (2**256 -1 )**d" let var_z_42 := expr_50 /// @src 0:308:309 "0" let expr_53 := 0x00 /// @src 0:307:310 "(0)" let expr_54 := expr_53 /// @src 0:312:313 "a" let _13 := var_a_4 let expr_55 := _13 /// @src 0:307:313 "(0)**a" let _14 := convert_t_rational_0_by_1_to_t_uint256(expr_54) let expr_56 := checked_exp_t_rational_0_by_1_t_uint256(expr_55) /// @src 0:303:313 "w = (0)**a" var_w_22 := expr_56 let expr_57 := expr_56 /// @src 0:322:324 "-1" let expr_61 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff /// @src 0:321:325 "(-1)" let expr_62 := expr_61 /// @src 0:327:328 "b" let _15 := var_b_6 let expr_63 := _15 /// @src 0:321:328 "(-1)**b" let _16 := convert_t_rational_minus_1_by_1_to_t_int256(expr_62) let expr_64 := checked_exp_t_rational_minus_1_by_1_t_uint256(expr_63) /// @src 0:317:328 "x = (-1)**b" var_x_28 := expr_64 let expr_65 := expr_64 /// @src 0:336:337 "1" let expr_68 := 0x01 /// @src 0:339:340 "c" let _17 := var_c_8 let expr_69 := _17 /// @src 0:336:340 "1**c" let _18 := convert_t_rational_1_by_1_to_t_uint256(expr_68) let expr_70 := checked_exp_t_rational_1_by_1_t_uint256(expr_69) /// @src 0:332:340 "y = 1**c" var_y_36 := expr_70 let expr_71 := expr_70 /// @src 0:353:354 "w" let _19 := var_w_22 let expr_73 := _19 /// @src 0:352:364 "(w, x, y, z)" let expr_77_component_1 := expr_73 /// @src 0:356:357 "x" let _20 := var_x_28 let expr_74 := _20 /// @src 0:352:364 "(w, x, y, z)" let expr_77_component_2 := expr_74 /// @src 0:359:360 "y" let _21 := var_y_36 let expr_75 := _21 /// @src 0:352:364 "(w, x, y, z)" let expr_77_component_3 := expr_75 /// @src 0:362:363 "z" let _22 := var_z_42 let expr_76 := _22 /// @src 0:352:364 "(w, x, y, z)" let expr_77_component_4 := expr_76 /// @src 0:345:364 "return (w, x, y, z)" var__13 := expr_77_component_1 var__15 := expr_77_component_2 var__17 := expr_77_component_3 var__19 := expr_77_component_4 leave } /// @src 0:82:370 "contract C {..." } data ".metadata" hex"" } }