mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use the block flattener.
This commit is contained in:
parent
884d51c1f2
commit
5b8b016fae
@ -22,6 +22,7 @@
|
||||
|
||||
#include <libyul/optimiser/Disambiguator.h>
|
||||
#include <libyul/optimiser/VarDeclInitializer.h>
|
||||
#include <libyul/optimiser/BlockFlattener.h>
|
||||
#include <libyul/optimiser/FunctionGrouper.h>
|
||||
#include <libyul/optimiser/FunctionHoister.h>
|
||||
#include <libyul/optimiser/ExpressionSplitter.h>
|
||||
@ -59,8 +60,10 @@ void OptimiserSuite::run(
|
||||
|
||||
(VarDeclInitializer{})(ast);
|
||||
(FunctionHoister{})(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
(FunctionGrouper{})(ast);
|
||||
(ForLoopInitRewriter{})(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
StructuralSimplifier{_dialect}(ast);
|
||||
|
||||
NameDispenser dispenser{_dialect, ast};
|
||||
@ -75,6 +78,7 @@ void OptimiserSuite::run(
|
||||
CommonSubexpressionEliminator{_dialect}(ast);
|
||||
ExpressionSimplifier::run(_dialect, ast);
|
||||
StructuralSimplifier{_dialect}(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
SSATransform::run(ast, dispenser);
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
@ -95,12 +99,16 @@ void OptimiserSuite::run(
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
CommonSubexpressionEliminator{_dialect}(ast);
|
||||
|
||||
(FunctionGrouper{})(ast);
|
||||
FullInliner{ast, dispenser}.run();
|
||||
|
||||
SSATransform::run(ast, dispenser);
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
ExpressionSimplifier::run(_dialect, ast);
|
||||
StructuralSimplifier{_dialect}(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
CommonSubexpressionEliminator{_dialect}(ast);
|
||||
SSATransform::run(ast, dispenser);
|
||||
RedundantAssignEliminator::run(_dialect, ast);
|
||||
|
@ -1059,54 +1059,36 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// let _1 := 1
|
||||
// let _2 := mload(_1)
|
||||
// let _3 := 0
|
||||
// let _1017 := mload(_3)
|
||||
// if slt(sub(_2, _1017), 64)
|
||||
// {
|
||||
// let _1 := 1
|
||||
// let _2 := mload(_1)
|
||||
// let _3 := 0
|
||||
// let _1017 := mload(_3)
|
||||
// let abi_decode_value0_156 := _3
|
||||
// if slt(sub(_2, _1017), 64)
|
||||
// {
|
||||
// revert(_3, _3)
|
||||
// }
|
||||
// {
|
||||
// abi_decode_value0_156 := and(calldataload(_1017), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
|
||||
// }
|
||||
// sstore(_3, abi_decode_value0_156)
|
||||
// let _1019 := mload(8)
|
||||
// let _1021 := mload(7)
|
||||
// let abi_decode_value0_57 := _3
|
||||
// let abi_decode_value1_58 := _3
|
||||
// let abi_decode_value2_59 := _3
|
||||
// let abi_decode_value3 := _3
|
||||
// let abi_decode_value4 := _3
|
||||
// if slt(sub(_1019, _1021), 128)
|
||||
// {
|
||||
// revert(_3, _3)
|
||||
// }
|
||||
// {
|
||||
// abi_decode_value0_57 := and(calldataload(_1021), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
|
||||
// }
|
||||
// {
|
||||
// abi_decode_value1_58 := calldataload(add(_1021, 32))
|
||||
// }
|
||||
// {
|
||||
// let abi_decode_offset_62 := calldataload(add(_1021, 64))
|
||||
// if gt(abi_decode_offset_62, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(_3, _3)
|
||||
// }
|
||||
// abi_decode_value2_59, abi_decode_value3 := abi_decode_t_bytes_calldata_ptr(add(_1021, abi_decode_offset_62), _1019)
|
||||
// }
|
||||
// {
|
||||
// abi_decode_value4 := cleanup_revert_t_enum$_Operation_$1949(calldataload(add(_1021, 96)))
|
||||
// }
|
||||
// sstore(_1, abi_decode_value0_57)
|
||||
// sstore(_1, abi_decode_value1_58)
|
||||
// sstore(_1, _3)
|
||||
// sstore(_1, _3)
|
||||
// sstore(_1, abi_decode_value4)
|
||||
// revert(_3, _3)
|
||||
// }
|
||||
// let _1145 := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
// sstore(_3, and(calldataload(_1017), _1145))
|
||||
// let _1019 := mload(8)
|
||||
// let _1021 := mload(7)
|
||||
// let abi_decode_value2_59 := _3
|
||||
// let abi_decode_value3 := _3
|
||||
// if slt(sub(_1019, _1021), 128)
|
||||
// {
|
||||
// revert(_3, _3)
|
||||
// }
|
||||
// let abi_decode_offset_62 := calldataload(add(_1021, 64))
|
||||
// if gt(abi_decode_offset_62, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(_3, _3)
|
||||
// }
|
||||
// abi_decode_value2_59, abi_decode_value3 := abi_decode_t_bytes_calldata_ptr(add(_1021, abi_decode_offset_62), _1019)
|
||||
// let abi_decode_value4_1063 := cleanup_revert_t_enum$_Operation_$1949(calldataload(add(_1021, 96)))
|
||||
// sstore(_1, and(calldataload(_1021), _1145))
|
||||
// sstore(_1, calldataload(add(_1021, 32)))
|
||||
// sstore(_1, _3)
|
||||
// sstore(_1, _3)
|
||||
// sstore(_1, abi_decode_value4_1063)
|
||||
// function abi_decode_t_bytes_calldata_ptr(offset_12, end_13) -> arrayPos_14, length_15
|
||||
// {
|
||||
// if iszero(slt(add(offset_12, 0x1f), end_13))
|
||||
|
@ -458,45 +458,43 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// let _1 := 0x20
|
||||
// let _485 := mload(0)
|
||||
// let abi_encode_pos := _1
|
||||
// let abi_encode_length_68 := mload(_485)
|
||||
// mstore(_1, abi_encode_length_68)
|
||||
// abi_encode_pos := 64
|
||||
// let abi_encode_srcPtr := add(_485, _1)
|
||||
// let abi_encode_i_69 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i_69, abi_encode_length_68)
|
||||
// {
|
||||
// let _1 := 0x20
|
||||
// let _485 := mload(0)
|
||||
// let abi_encode_pos := _1
|
||||
// let abi_encode_length_68 := mload(_485)
|
||||
// mstore(_1, abi_encode_length_68)
|
||||
// abi_encode_pos := 64
|
||||
// let abi_encode_srcPtr := add(_485, _1)
|
||||
// let abi_encode_i_69 := 0
|
||||
// abi_encode_i_69 := add(abi_encode_i_69, 1)
|
||||
// }
|
||||
// {
|
||||
// let _874 := mload(abi_encode_srcPtr)
|
||||
// let abi_encode_pos_71_978 := abi_encode_pos
|
||||
// let abi_encode_srcPtr_73_980 := _874
|
||||
// let abi_encode_i_74_981 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i_69, abi_encode_length_68)
|
||||
// lt(abi_encode_i_74_981, 0x3)
|
||||
// {
|
||||
// abi_encode_i_69 := add(abi_encode_i_69, 1)
|
||||
// abi_encode_i_74_981 := add(abi_encode_i_74_981, 1)
|
||||
// }
|
||||
// {
|
||||
// let _863 := mload(abi_encode_srcPtr)
|
||||
// let abi_encode_pos_71_971 := abi_encode_pos
|
||||
// let abi_encode_srcPtr_73_973 := _863
|
||||
// let abi_encode_i_74_974 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i_74_974, 0x3)
|
||||
// {
|
||||
// abi_encode_i_74_974 := add(abi_encode_i_74_974, 1)
|
||||
// }
|
||||
// {
|
||||
// mstore(abi_encode_pos_71_971, and(mload(abi_encode_srcPtr_73_973), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// abi_encode_srcPtr_73_973 := add(abi_encode_srcPtr_73_973, _1)
|
||||
// abi_encode_pos_71_971 := add(abi_encode_pos_71_971, _1)
|
||||
// }
|
||||
// abi_encode_srcPtr := add(abi_encode_srcPtr, _1)
|
||||
// abi_encode_pos := add(abi_encode_pos, 0x60)
|
||||
// mstore(abi_encode_pos_71_978, and(mload(abi_encode_srcPtr_73_980), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// abi_encode_srcPtr_73_980 := add(abi_encode_srcPtr_73_980, _1)
|
||||
// abi_encode_pos_71_978 := add(abi_encode_pos_71_978, _1)
|
||||
// }
|
||||
// let a, b, c, d := abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(mload(_1), mload(0x40))
|
||||
// sstore(a, b)
|
||||
// sstore(c, d)
|
||||
// sstore(0, abi_encode_pos)
|
||||
// abi_encode_srcPtr := add(abi_encode_srcPtr, _1)
|
||||
// abi_encode_pos := add(abi_encode_pos, 0x60)
|
||||
// }
|
||||
// let a, b, c, d := abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(mload(_1), mload(0x40))
|
||||
// sstore(a, b)
|
||||
// sstore(c, d)
|
||||
// sstore(0, abi_encode_pos)
|
||||
// function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset_3, end_4) -> array_5
|
||||
// {
|
||||
// if iszero(slt(add(offset_3, 0x1f), end_4))
|
||||
@ -554,65 +552,55 @@
|
||||
// src_16 := add(src_16, 0x20)
|
||||
// }
|
||||
// }
|
||||
// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset_27, end_28) -> array_29
|
||||
// {
|
||||
// if iszero(slt(add(offset_27, 0x1f), end_28))
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// let length_30 := calldataload(offset_27)
|
||||
// let array_29_279 := allocateMemory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length_30))
|
||||
// array_29 := array_29_279
|
||||
// let dst_31 := array_29_279
|
||||
// mstore(array_29_279, length_30)
|
||||
// let _91 := 0x20
|
||||
// dst_31 := add(array_29_279, _91)
|
||||
// let src_32 := add(offset_27, _91)
|
||||
// if gt(add(add(offset_27, mul(length_30, _91)), _91), end_28)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// let i_33 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i_33, length_30)
|
||||
// {
|
||||
// i_33 := add(i_33, 1)
|
||||
// }
|
||||
// {
|
||||
// mstore(dst_31, calldataload(src_32))
|
||||
// dst_31 := add(dst_31, _91)
|
||||
// src_32 := add(src_32, _91)
|
||||
// }
|
||||
// }
|
||||
// function abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(headStart_58, dataEnd_59) -> value0_60, value1_61, value2, value3
|
||||
// {
|
||||
// if slt(sub(dataEnd_59, headStart_58), 128)
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// value0_60 := calldataload(add(headStart_58, value2))
|
||||
// value1_61 := calldataload(add(headStart_58, 32))
|
||||
// let offset_64 := calldataload(add(headStart_58, 64))
|
||||
// let _165 := 0xffffffffffffffff
|
||||
// if gt(offset_64, _165)
|
||||
// {
|
||||
// value0_60 := calldataload(add(headStart_58, value2))
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// let _532 := add(headStart_58, offset_64)
|
||||
// if iszero(slt(add(_532, 0x1f), dataEnd_59))
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// let abi_decode_length_30 := calldataload(_532)
|
||||
// let abi_decode_array_29_279 := allocateMemory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(abi_decode_length_30))
|
||||
// let abi_decode_dst_31 := abi_decode_array_29_279
|
||||
// mstore(abi_decode_array_29_279, abi_decode_length_30)
|
||||
// let abi_decode__91 := 0x20
|
||||
// abi_decode_dst_31 := add(abi_decode_array_29_279, abi_decode__91)
|
||||
// let abi_decode_src_32 := add(_532, abi_decode__91)
|
||||
// if gt(add(add(_532, mul(abi_decode_length_30, abi_decode__91)), abi_decode__91), dataEnd_59)
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// let abi_decode_i_33 := value2
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_decode_i_33, abi_decode_length_30)
|
||||
// {
|
||||
// abi_decode_i_33 := add(abi_decode_i_33, 1)
|
||||
// }
|
||||
// {
|
||||
// value1_61 := calldataload(add(headStart_58, 32))
|
||||
// mstore(abi_decode_dst_31, calldataload(abi_decode_src_32))
|
||||
// abi_decode_dst_31 := add(abi_decode_dst_31, abi_decode__91)
|
||||
// abi_decode_src_32 := add(abi_decode_src_32, abi_decode__91)
|
||||
// }
|
||||
// value2 := abi_decode_array_29_279
|
||||
// let offset_65 := calldataload(add(headStart_58, 96))
|
||||
// if gt(offset_65, _165)
|
||||
// {
|
||||
// let offset_64 := calldataload(add(headStart_58, 64))
|
||||
// if gt(offset_64, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart_58, offset_64), dataEnd_59)
|
||||
// }
|
||||
// {
|
||||
// let offset_65 := calldataload(add(headStart_58, 96))
|
||||
// if gt(offset_65, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(headStart_58, offset_65), dataEnd_59)
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(headStart_58, offset_65), dataEnd_59)
|
||||
// }
|
||||
// function allocateMemory(size) -> memPtr
|
||||
// {
|
||||
|
@ -231,124 +231,122 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// let validateJo__6 := 0x80
|
||||
// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
|
||||
// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375)
|
||||
// let validateJo__10 := calldataload(0x04)
|
||||
// let validateJo_notes := add(0x04, validateJo__10)
|
||||
// let validateJo_m := calldataload(0x24)
|
||||
// let validateJo_n := calldataload(validateJo_notes)
|
||||
// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
|
||||
// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order)
|
||||
// if gt(validateJo_m, validateJo_n)
|
||||
// {
|
||||
// let validateJo__6 := 0x80
|
||||
// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
|
||||
// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375)
|
||||
// let validateJo__10 := calldataload(0x04)
|
||||
// let validateJo_notes := add(0x04, validateJo__10)
|
||||
// let validateJo_m := calldataload(0x24)
|
||||
// let validateJo_n := calldataload(validateJo_notes)
|
||||
// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
|
||||
// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order)
|
||||
// if gt(validateJo_m, validateJo_n)
|
||||
// {
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// }
|
||||
// let validateJo_kn_287 := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))
|
||||
// let validateJo_kn := validateJo_kn_287
|
||||
// let validateJo__24 := 0x2a0
|
||||
// mstore(validateJo__24, caller())
|
||||
// mstore(0x2c0, validateJo_kn_287)
|
||||
// mstore(0x2e0, validateJo_m)
|
||||
// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn_287), validateJo_challenge, validateJo_gen_order)
|
||||
// hashCommitments(validateJo_notes, validateJo_n)
|
||||
// let validateJo_b := add(0x300, mul(validateJo_n, validateJo__6))
|
||||
// let validateJo_i_290 := 0
|
||||
// let validateJo_i := validateJo_i_290
|
||||
// for {
|
||||
// }
|
||||
// lt(validateJo_i, validateJo_n)
|
||||
// {
|
||||
// validateJo_i := add(validateJo_i, 0x01)
|
||||
// }
|
||||
// {
|
||||
// let validateJo__34 := 0x20
|
||||
// let validateJo__376 := add(validateJo__10, mul(validateJo_i, 0xc0))
|
||||
// let validateJo_noteIndex := add(validateJo__376, 36)
|
||||
// let validateJo_k := validateJo_i_290
|
||||
// let validateJo_a_292 := calldataload(add(validateJo__376, 68))
|
||||
// let validateJo_a := validateJo_a_292
|
||||
// let validateJo_c := validateJo_challenge
|
||||
// let validateJo__39 := add(validateJo_i, 0x01)
|
||||
// switch eq(validateJo__39, validateJo_n)
|
||||
// case 1 {
|
||||
// validateJo_k := validateJo_kn
|
||||
// if eq(validateJo_m, validateJo_n)
|
||||
// {
|
||||
// validateJo_k := sub(validateJo_gen_order, validateJo_kn)
|
||||
// }
|
||||
// }
|
||||
// case 0 {
|
||||
// validateJo_k := calldataload(validateJo_noteIndex)
|
||||
// }
|
||||
// validateCommitment(validateJo_noteIndex, validateJo_k, validateJo_a_292)
|
||||
// switch gt(validateJo__39, validateJo_m)
|
||||
// case 1 {
|
||||
// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order)
|
||||
// let validateJo_x := mod(mload(0x00), validateJo_gen_order)
|
||||
// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order)
|
||||
// validateJo_a := mulmod(validateJo_a_292, validateJo_x, validateJo_gen_order)
|
||||
// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order)
|
||||
// mstore(0x00, keccak256(0x00, validateJo__34))
|
||||
// }
|
||||
// case 0 {
|
||||
// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order)
|
||||
// }
|
||||
// let validateJo__52 := 0x40
|
||||
// calldatacopy(0xe0, add(validateJo__376, 164), validateJo__52)
|
||||
// calldatacopy(validateJo__34, add(validateJo__376, 100), validateJo__52)
|
||||
// let validateJo__61 := 0x120
|
||||
// mstore(validateJo__61, sub(validateJo_gen_order, validateJo_c))
|
||||
// let validateJo__62 := 0x60
|
||||
// mstore(validateJo__62, validateJo_k)
|
||||
// mstore(0xc0, validateJo_a)
|
||||
// let validateJo__65 := 0x1a0
|
||||
// let validateJo_result_302 := call(gas(), 7, validateJo_i_290, 0xe0, validateJo__62, validateJo__65, validateJo__52)
|
||||
// let validateJo_result := validateJo_result_302
|
||||
// let validateJo_result_303 := and(validateJo_result_302, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__61, validateJo__52))
|
||||
// let validateJo__80 := 0x160
|
||||
// let validateJo_result_304 := and(validateJo_result_303, call(gas(), 7, validateJo_i_290, validateJo__6, validateJo__62, validateJo__80, validateJo__52))
|
||||
// let validateJo_result_305 := and(validateJo_result_304, call(gas(), 6, validateJo_i_290, validateJo__61, validateJo__6, validateJo__80, validateJo__52))
|
||||
// let validateJo_result_306 := and(validateJo_result_305, call(gas(), 6, validateJo_i_290, validateJo__80, validateJo__6, validateJo_b, validateJo__52))
|
||||
// validateJo_result := validateJo_result_306
|
||||
// if eq(validateJo_i, validateJo_m)
|
||||
// {
|
||||
// mstore(0x260, mload(validateJo__34))
|
||||
// mstore(0x280, mload(validateJo__52))
|
||||
// mstore(0x1e0, mload(0xe0))
|
||||
// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100)))
|
||||
// }
|
||||
// if gt(validateJo_i, validateJo_m)
|
||||
// {
|
||||
// mstore(validateJo__62, validateJo_c)
|
||||
// let validateJo__120 := 0x220
|
||||
// let validateJo_result_307 := and(validateJo_result_306, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__120, validateJo__52))
|
||||
// let validateJo_result_308 := and(validateJo_result_307, call(gas(), 6, validateJo_i_290, validateJo__120, validateJo__6, 0x260, validateJo__52))
|
||||
// validateJo_result := and(validateJo_result_308, call(gas(), 6, validateJo_i_290, validateJo__65, validateJo__6, 0x1e0, validateJo__52))
|
||||
// }
|
||||
// if iszero(validateJo_result)
|
||||
// {
|
||||
// mstore(0x00, 400)
|
||||
// revert(0x00, validateJo__34)
|
||||
// }
|
||||
// validateJo_b := add(validateJo_b, validateJo__52)
|
||||
// }
|
||||
// if lt(validateJo_m, validateJo_n)
|
||||
// {
|
||||
// validatePairing(0x64)
|
||||
// }
|
||||
// if iszero(eq(mod(keccak256(validateJo__24, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge))
|
||||
// {
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// }
|
||||
// mstore(0x00, 0x01)
|
||||
// return(0x00, 0x20)
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// }
|
||||
// let validateJo_kn_287 := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))
|
||||
// let validateJo_kn := validateJo_kn_287
|
||||
// let validateJo__24 := 0x2a0
|
||||
// mstore(validateJo__24, caller())
|
||||
// mstore(0x2c0, validateJo_kn_287)
|
||||
// mstore(0x2e0, validateJo_m)
|
||||
// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn_287), validateJo_challenge, validateJo_gen_order)
|
||||
// hashCommitments(validateJo_notes, validateJo_n)
|
||||
// let validateJo_b := add(0x300, mul(validateJo_n, validateJo__6))
|
||||
// let validateJo_i_290 := 0
|
||||
// let validateJo_i := validateJo_i_290
|
||||
// for {
|
||||
// }
|
||||
// lt(validateJo_i, validateJo_n)
|
||||
// {
|
||||
// validateJo_i := add(validateJo_i, 0x01)
|
||||
// }
|
||||
// {
|
||||
// let validateJo__34 := 0x20
|
||||
// let validateJo__376 := add(validateJo__10, mul(validateJo_i, 0xc0))
|
||||
// let validateJo_noteIndex := add(validateJo__376, 36)
|
||||
// let validateJo_k := validateJo_i_290
|
||||
// let validateJo_a_292 := calldataload(add(validateJo__376, 68))
|
||||
// let validateJo_a := validateJo_a_292
|
||||
// let validateJo_c := validateJo_challenge
|
||||
// let validateJo__39 := add(validateJo_i, 0x01)
|
||||
// switch eq(validateJo__39, validateJo_n)
|
||||
// case 1 {
|
||||
// validateJo_k := validateJo_kn
|
||||
// if eq(validateJo_m, validateJo_n)
|
||||
// {
|
||||
// validateJo_k := sub(validateJo_gen_order, validateJo_kn)
|
||||
// }
|
||||
// }
|
||||
// case 0 {
|
||||
// validateJo_k := calldataload(validateJo_noteIndex)
|
||||
// }
|
||||
// validateCommitment(validateJo_noteIndex, validateJo_k, validateJo_a_292)
|
||||
// switch gt(validateJo__39, validateJo_m)
|
||||
// case 1 {
|
||||
// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order)
|
||||
// let validateJo_x := mod(mload(0x00), validateJo_gen_order)
|
||||
// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order)
|
||||
// validateJo_a := mulmod(validateJo_a_292, validateJo_x, validateJo_gen_order)
|
||||
// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order)
|
||||
// mstore(0x00, keccak256(0x00, validateJo__34))
|
||||
// }
|
||||
// case 0 {
|
||||
// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order)
|
||||
// }
|
||||
// let validateJo__52 := 0x40
|
||||
// calldatacopy(0xe0, add(validateJo__376, 164), validateJo__52)
|
||||
// calldatacopy(validateJo__34, add(validateJo__376, 100), validateJo__52)
|
||||
// let validateJo__61 := 0x120
|
||||
// mstore(validateJo__61, sub(validateJo_gen_order, validateJo_c))
|
||||
// let validateJo__62 := 0x60
|
||||
// mstore(validateJo__62, validateJo_k)
|
||||
// mstore(0xc0, validateJo_a)
|
||||
// let validateJo__65 := 0x1a0
|
||||
// let validateJo_result_302 := call(gas(), 7, validateJo_i_290, 0xe0, validateJo__62, validateJo__65, validateJo__52)
|
||||
// let validateJo_result := validateJo_result_302
|
||||
// let validateJo_result_303 := and(validateJo_result_302, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__61, validateJo__52))
|
||||
// let validateJo__80 := 0x160
|
||||
// let validateJo_result_304 := and(validateJo_result_303, call(gas(), 7, validateJo_i_290, validateJo__6, validateJo__62, validateJo__80, validateJo__52))
|
||||
// let validateJo_result_305 := and(validateJo_result_304, call(gas(), 6, validateJo_i_290, validateJo__61, validateJo__6, validateJo__80, validateJo__52))
|
||||
// let validateJo_result_306 := and(validateJo_result_305, call(gas(), 6, validateJo_i_290, validateJo__80, validateJo__6, validateJo_b, validateJo__52))
|
||||
// validateJo_result := validateJo_result_306
|
||||
// if eq(validateJo_i, validateJo_m)
|
||||
// {
|
||||
// mstore(0x260, mload(validateJo__34))
|
||||
// mstore(0x280, mload(validateJo__52))
|
||||
// mstore(0x1e0, mload(0xe0))
|
||||
// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100)))
|
||||
// }
|
||||
// if gt(validateJo_i, validateJo_m)
|
||||
// {
|
||||
// mstore(validateJo__62, validateJo_c)
|
||||
// let validateJo__120 := 0x220
|
||||
// let validateJo_result_307 := and(validateJo_result_306, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__120, validateJo__52))
|
||||
// let validateJo_result_308 := and(validateJo_result_307, call(gas(), 6, validateJo_i_290, validateJo__120, validateJo__6, 0x260, validateJo__52))
|
||||
// validateJo_result := and(validateJo_result_308, call(gas(), 6, validateJo_i_290, validateJo__65, validateJo__6, 0x1e0, validateJo__52))
|
||||
// }
|
||||
// if iszero(validateJo_result)
|
||||
// {
|
||||
// mstore(0x00, 400)
|
||||
// revert(0x00, validateJo__34)
|
||||
// }
|
||||
// validateJo_b := add(validateJo_b, validateJo__52)
|
||||
// }
|
||||
// if lt(validateJo_m, validateJo_n)
|
||||
// {
|
||||
// validatePairing(0x64)
|
||||
// }
|
||||
// if iszero(eq(mod(keccak256(validateJo__24, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge))
|
||||
// {
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// }
|
||||
// mstore(0x00, 0x01)
|
||||
// return(0x00, 0x20)
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// function validatePairing(t2)
|
||||
// {
|
||||
// let t2_x_1 := calldataload(t2)
|
||||
|
@ -19,12 +19,10 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// {
|
||||
// let allocate__19 := 0x40
|
||||
// mstore(allocate__19, add(mload(allocate__19), 0x20))
|
||||
// let allocate_p_24_41 := mload(allocate__19)
|
||||
// mstore(allocate__19, add(allocate_p_24_41, allocate__19))
|
||||
// mstore(add(allocate_p_24_41, 96), 2)
|
||||
// mstore(allocate__19, 0x20)
|
||||
// }
|
||||
// let allocate__19 := 0x40
|
||||
// mstore(allocate__19, add(mload(allocate__19), 0x20))
|
||||
// let allocate_p_24_41 := mload(allocate__19)
|
||||
// mstore(allocate__19, add(allocate_p_24_41, allocate__19))
|
||||
// mstore(add(allocate_p_24_41, 96), 2)
|
||||
// mstore(allocate__19, 0x20)
|
||||
// }
|
||||
|
Loading…
Reference in New Issue
Block a user