Use the block flattener.

This commit is contained in:
chriseth 2019-01-08 15:19:35 +01:00
parent 884d51c1f2
commit 5b8b016fae
5 changed files with 220 additions and 246 deletions

View File

@ -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);

View File

@ -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))

View File

@ -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
// {

View File

@ -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)

View File

@ -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)
// }