diff --git a/crates/codegen/tests/fixtures/sonatina_ir/by_ref_trait_provider_storage_bug.snap b/crates/codegen/tests/fixtures/sonatina_ir/by_ref_trait_provider_storage_bug.snap index 1aced5306f..b3d55ab003 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/by_ref_trait_provider_storage_bug.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/by_ref_trait_provider_storage_bug.snap @@ -1,31 +1,30 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/by_ref_trait_provider_storage_bug.fe --- target = "evm-ethereum-osaka" -type @layout_0 = {i256, i256}; -type @layout_1 = {i256}; +type @layout_0 = {i256}; +type @layout_1 = {@layout_0, i256}; type @layout_2 = {@layout_1, i256}; -type @layout_3 = {@layout_2, i256}; -type @layout_4 = {}; -type @layout_5 = {@layout_4}; -type @layout_6 = {i256, i256}; -type @layout_7 = {i256, i256}; +type @layout_3 = {}; +type @layout_4 = {@layout_3}; +type @layout_5 = {i256, i256}; -global private const @layout_7 $const_region_0 = {40, 2}; -global private const @layout_1 $const_region_1 = {0}; +global private const @layout_5 $const_region_0 = {40, 2}; +global private const @layout_0 $const_region_1 = {0}; func private %__ByRefTraitProviderStorageBug_init(v0.i256) { block0: jump block1; block1: - v3.constref<@layout_7> = const.ref $const_region_0; - v4.objref<@layout_7> = obj.alloc @layout_7; + v3.constref<@layout_5> = const.ref $const_region_0; + v4.objref<@layout_5> = obj.alloc @layout_5; obj.init.const v4 v3; - v5.@layout_7 = obj.load v4; + v5.@layout_5 = obj.load v4; v8.i256 = extract_value v5 0.i256; evm_sstore v0 v8; v10.i256 = extract_value v5 1.i256; @@ -43,58 +42,6 @@ func private %__ByRefTraitProviderStorageBug_recv_0_0(v0.i256) -> i256 { return v2; } -func private %abi_field_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_83d5_0 v2; - br 0.i1 block2 block3; - - block2: - (v7.i256, v8.i1) = uaddo 32.i256 v3; - br v8 block5 block6; - - block3: - jump block4; - - block4: - return v3; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - return v7; -} - -func private %abi_single_root_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %abi_field_size v2; - return v3; -} - -func private %base(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 0.i256; - v4.i256 = obj.load v3; - return v4; -} - func private %contract_init_abi_ByRefTraitProviderStorageBug() { block0: jump block1; @@ -139,13 +86,11 @@ func private %contract_recv_abi_ByRefTraitProviderStorageBug_1() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_5> = obj.alloc @layout_5; + v5.objref<@layout_4> = obj.alloc @layout_4; call %decode_runtime_args v5; v7.i256 = call %__ByRefTraitProviderStorageBug_recv_0_0 0.i256; - v8.@layout_6 = call %encode_single_root_alloc v7; - v9.i256 = extract_value v8 0.i256; - v11.i256 = extract_value v8 1.i256; - evm_return v9 v11; + mstore 0.i256 v7 i256; + evm_return 0.i256 32.i256; } func private %contract_runtime_root_ByRefTraitProviderStorageBug() { @@ -171,7 +116,7 @@ func private %contract_runtime_root_ByRefTraitProviderStorageBug() { unreachable; } -func inline(always) private %decode_payload(v0.objref<@layout_3>) { +func inline(always) private %decode_payload(v0.objref<@layout_2>) { block0: jump block1; @@ -179,17 +124,17 @@ func inline(always) private %decode_payload(v0.objref<@layout_3>) { return; } -func inline(always) private %decode_runtime_args(v0.objref<@layout_5>) { +func inline(always) private %decode_runtime_args(v0.objref<@layout_4>) { block0: jump block1; block1: - v2.@layout_3 = call %runtime_decoder v0; - v3.objref<@layout_3> = obj.alloc @layout_3; - v5.objref<@layout_2> = obj.proj v3 0.i256; - v6.@layout_2 = extract_value v2 0.i256; - v7.objref<@layout_1> = obj.proj v5 0.i256; - v8.@layout_1 = extract_value v6 0.i256; + v2.@layout_2 = call %runtime_decoder v0; + v3.objref<@layout_2> = obj.alloc @layout_2; + v5.objref<@layout_1> = obj.proj v3 0.i256; + v6.@layout_1 = extract_value v2 0.i256; + v7.objref<@layout_0> = obj.proj v5 0.i256; + v8.@layout_0 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -203,7 +148,7 @@ func inline(always) private %decode_runtime_args(v0.objref<@layout_5>) { return; } -func private %decoder_with_base(v0.@layout_1, v1.i256) -> @layout_3 { +func private %decoder_with_base(v0.@layout_0, v1.i256) -> @layout_2 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -211,298 +156,77 @@ func private %decoder_with_base(v0.@layout_1, v1.i256) -> @layout_3 { block1: v3.i256 = mload v2 i256; - v5.@layout_3 = call %with_base v0 v3; + v5.@layout_2 = call %with_base v0 v3; return v5; } -func private %encode(v0.i256, v1.objref<@layout_0>) { - block0: - jump block1; - - block1: - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_e918 v1 v0; - return; -} - -func private %encode_field(v0.i256, v1.objref<@layout_0>, v2.i256) { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v5.i256 = call %base v1; - v8.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_83d5 v0; - v9.i256 = mload v2 i256; - v10.i256 = sub v9 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_7682 v1 v10; - v12.i256 = call %pos v1; - v13.i256 = mload v2 i256; - call %set_base v1 v13; - v15.i256 = mload v2 i256; - call %set_pos v1 v15; - call %encode v0 v1; - call %set_base v1 v5; - call %set_pos v1 v12; - v20.i256 = mload v2 i256; - v21.i256 = add v20 v8; - mstore v2 v21 i256; - return; - - block3: - jump block4; - - block4: - br 1.i1 block5 block6; - - block5: - v24.i256 = call %pos v1; - call %encode_to_ptr v0 v24; - v28.i256 = add v24 32.i256; - call %set_pos v1 v28; - return; - - block6: - jump block7; - - block7: - call %encode v0 v1; - return; -} - -func private %encode_single_root(v0.i256, v1.objref<@layout_0>) { - block0: - v2.*i256 = alloca i256; - jump block1; - - block1: - v4.i256 = call %base v1; - v6.i256 = add v4 32.i256; - mstore v2 v6 i256; - v7.i256 = ptr_to_int v2 i256; - call %encode_field v0 v1 v7; - return; -} - -func private %encode_single_root_alloc(v0.i256) -> @layout_6 { - block0: - jump block1; - - block1: - v2.i256 = call %abi_single_root_size v0; - v3.@layout_0 = call %encoder_new v2; - v4.objref<@layout_0> = obj.alloc @layout_0; - v6.objref = obj.proj v4 0.i256; - v7.i256 = extract_value v3 0.i256; - obj.store v6 v7; - v9.objref = obj.proj v4 1.i256; - v10.i256 = extract_value v3 1.i256; - obj.store v9 v10; - v11.i256 = call %base v4; - call %encode_single_root v0 v4; - v13.objref<@layout_6> = obj.alloc @layout_6; - v14.objref = obj.proj v13 0.i256; - obj.store v14 v11; - v15.objref = obj.proj v13 1.i256; - obj.store v15 v2; - v16.@layout_6 = obj.load v13; - return v16; -} - -func private %encode_to_ptr(v0.i256, v1.i256) { +func inline(always) private %fork(v0.@layout_1, v1.i256) -> @layout_1 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v3.i256 = mload v2 i256; - call %store_word v3 v0; - return; -} - -func private %encoder_new(v0.i256) -> @layout_0 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.@layout_0 = call %impl_SolEncoder__new v2; - return v3; -} - -func inline(always) private %fork(v0.@layout_2, v1.i256) -> @layout_2 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_1 = extract_value v0 0.i256; + v5.@layout_0 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_2> = obj.alloc @layout_2; - v8.objref<@layout_1> = obj.proj v7 0.i256; + v7.objref<@layout_1> = obj.alloc @layout_1; + v8.objref<@layout_0> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_2 = obj.load v7; + v13.@layout_1 = obj.load v7; return v13; } -func private %input() -> @layout_1 { +func private %input() -> @layout_0 { block0: jump block1; block1: - v0.@layout_1 = call %impl_CallData__new; + v0.@layout_0 = call %impl_CallData__new; return v0; } -func inline(always) private %impl_CallData__new() -> @layout_1 { +func inline(always) private %impl_CallData__new() -> @layout_0 { block0: jump block1; block1: - v1.constref<@layout_1> = const.ref $const_region_1; - v2.objref<@layout_1> = obj.alloc @layout_1; + v1.constref<@layout_0> = const.ref $const_region_1; + v2.objref<@layout_0> = obj.alloc @layout_0; obj.init.const v2 v1; - v3.@layout_1 = obj.load v2; + v3.@layout_0 = obj.load v2; return v3; } -func inline(always) private %new__gd20d(v0.@layout_1) -> @layout_2 { +func inline(always) private %new__gd20d(v0.@layout_0) -> @layout_1 { block0: jump block1; block1: - v2.objref<@layout_2> = obj.alloc @layout_2; - v4.objref<@layout_1> = obj.proj v2 0.i256; + v2.objref<@layout_1> = obj.alloc @layout_1; + v4.objref<@layout_0> = obj.proj v2 0.i256; v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; v8.objref = obj.proj v2 1.i256; obj.store v8 0.i256; - v9.@layout_2 = obj.load v2; + v9.@layout_1 = obj.load v2; return v9; } -func private %impl_SolEncoder__new(v0.i256) -> @layout_0 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_0> = obj.alloc @layout_0; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_0 = obj.load v9; - return v13; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_83d5(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_83d5_0(v0.i256) -> i256 { +func inline(always) private %runtime_decoder(v0.objref<@layout_4>) -> @layout_2 { block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; jump block1; block1: - return 32.i256; -} - -func private %pos(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func inline(always) private %runtime_decoder(v0.objref<@layout_5>) -> @layout_3 { - block0: - jump block1; - - block1: - v1.@layout_1 = call %input; - v3.@layout_3 = call %decoder_with_base v1 4.i256; + v1.@layout_0 = call %input; + v3.@layout_2 = call %decoder_with_base v1 4.i256; return v3; } -func private %set_base(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; - obj.store v6 v3; - return; -} - -func private %set_pos(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %store_word(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - v3.*i256 = alloca i256; - mstore v2 v0 i256; - mstore v3 v1 i256; - jump block1; - - block1: - v4.i256 = mload v2 i256; - v5.i256 = mload v3 i256; - mstore v4 v5 i256; - return; -} - func private %sum(v0.i256) -> i256 { block0: jump block1; @@ -532,21 +256,21 @@ func private %use_ctx(v0.i256) -> i256 { return v2; } -func inline(always) private %with_base(v0.@layout_1, v1.i256) -> @layout_3 { +func inline(always) private %with_base(v0.@layout_0, v1.i256) -> @layout_2 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_2 = call %new__gd20d v0; + v4.@layout_1 = call %new__gd20d v0; v5.i256 = mload v2 i256; - v6.@layout_2 = call %fork v4 v5; + v6.@layout_1 = call %fork v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_3> = obj.alloc @layout_3; - v10.objref<@layout_2> = obj.proj v8 0.i256; - v11.objref<@layout_1> = obj.proj v10 0.i256; - v12.@layout_1 = extract_value v6 0.i256; + v8.objref<@layout_2> = obj.alloc @layout_2; + v10.objref<@layout_1> = obj.proj v8 0.i256; + v11.objref<@layout_0> = obj.proj v10 0.i256; + v12.@layout_0 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -555,44 +279,10 @@ func inline(always) private %with_base(v0.@layout_1, v1.i256) -> @layout_3 { obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_3 = obj.load v8; + v19.@layout_2 = obj.load v8; return v19; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_7682(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_e918(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - object @ByRefTraitProviderStorageBug { section init { diff --git a/crates/codegen/tests/fixtures/sonatina_ir/create_contract.snap b/crates/codegen/tests/fixtures/sonatina_ir/create_contract.snap index 375ea859c1..6486ea18d4 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/create_contract.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/create_contract.snap @@ -1,5 +1,6 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/create_contract.fe --- @@ -10,16 +11,9 @@ type @layout_1 = {@layout_0}; type @layout_2 = {i256}; type @layout_3 = {i256, i256}; type @layout_4 = {i256, i256}; -type @layout_5 = {i256}; +type @layout_5 = {i256, i256}; type @layout_6 = {@layout_5, i256}; type @layout_7 = {@layout_6, i256}; -type @layout_8 = {i256, i256}; -type @layout_9 = {@layout_8, i256}; -type @layout_10 = {@layout_9, i256}; -type @layout_11 = {i256, i256, i256}; -type @layout_12 = {i256, i256}; - -global private const @layout_5 $const_region_0 = {0}; func private %__Child_init(v0.i256, v1.i256, v2.i256) { block0: @@ -153,27 +147,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_5cdf(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6749(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_b6d6(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %base__g463e(v0.objref<@layout_10>) -> i256 { +func private %base__g463e(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -185,8 +159,8 @@ func private %base__g463e(v0.objref<@layout_10>) -> i256 { func private %contract_init_abi_Child() { block0: - v0.objref<@layout_8> = obj.alloc @layout_8; - v1.objref<@layout_10> = obj.alloc @layout_10; + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: @@ -224,12 +198,12 @@ func private %contract_init_abi_Child() { obj.store v23 v20; v25.objref = obj.proj v0 1.i256; obj.store v25 v13; - v26.@layout_8 = obj.load v0; - v27.@layout_10 = call %decoder_new v26; - v28.objref<@layout_9> = obj.proj v1 0.i256; - v29.@layout_9 = extract_value v27 0.i256; - v30.objref<@layout_8> = obj.proj v28 0.i256; - v31.@layout_8 = extract_value v29 0.i256; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; v32.objref = obj.proj v30 0.i256; v33.i256 = extract_value v31 0.i256; obj.store v32 v33; @@ -304,16 +278,22 @@ func private %contract_recv_abi_Factory_1() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_1> = obj.alloc @layout_1; - v6.@layout_12 = call %decode_runtime_args__gbdfb v5; - v7.i256 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_1> = obj.alloc @layout_1; - v11.@layout_2 = call %__Factory_recv_0_0 v7 v9 v10; - v12.@layout_3 = call %encode_single_root_alloc v11; - v13.i256 = extract_value v12 0.i256; - v14.i256 = extract_value v12 1.i256; - evm_return v13 v14; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 68.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v12.i256 = evm_calldata_load 36.i256; + v13.objref<@layout_1> = obj.alloc @layout_1; + v14.@layout_2 = call %__Factory_recv_0_0 v10 v12 v13; + v15.@layout_3 = call %encode_single_root_alloc v14; + v16.i256 = extract_value v15 0.i256; + v18.i256 = extract_value v15 1.i256; + evm_return v16 v18; } func private %contract_recv_abi_Factory_2() { @@ -330,17 +310,23 @@ func private %contract_recv_abi_Factory_2() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_1> = obj.alloc @layout_1; - v6.@layout_11 = call %decode_runtime_args__gadcc v5; - v7.i256 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v11.i256 = extract_value v6 2.i256; - v12.objref<@layout_1> = obj.alloc @layout_1; - v13.@layout_2 = call %__Factory_recv_0_1 v7 v9 v11 v12; - v14.@layout_3 = call %encode_single_root_alloc v13; - v15.i256 = extract_value v14 0.i256; - v16.i256 = extract_value v14 1.i256; - evm_return v15 v16; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 100.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_load 68.i256; + v15.objref<@layout_1> = obj.alloc @layout_1; + v16.@layout_2 = call %__Factory_recv_0_1 v10 v12 v14 v15; + v17.@layout_3 = call %encode_single_root_alloc v16; + v18.i256 = extract_value v17 0.i256; + v20.i256 = extract_value v17 1.i256; + evm_return v18 v20; } func private %contract_runtime_root_Child() { @@ -702,79 +688,7 @@ func private %create_raw(v0.objref<@layout_1>, v1.i256, v2.i256, v3.i256) -> @la return v14; } -func inline(always) private %core__lib__abi__decode_field__g7400_017a(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d553 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6749 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c492 v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_a410 v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_7c4b v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6749 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a1ae v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_a410 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_7c4b v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a1ae v0 v5; - return v17; -} - -func inline(always) private %core__lib__abi__decode_field__g7400_c049(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_eb70 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_b6d6 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_9b4c v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_2100 v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_f205 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_b6d6 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0b40 v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_2100 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_f205 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0b40 v0 v5; - return v17; -} - -func inline(always) private %decode_field__g3854(v0.objref<@layout_10>) -> i256 { +func inline(always) private %decode_field(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -810,66 +724,13 @@ func inline(always) private %decode_field__g3854(v0.objref<@layout_10>) -> i256 return v17; } -func inline(always) private %impl_trait_Deploy2__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_11 { - block0: - jump block1; - - block1: - v2.i256 = call %core__lib__abi__decode_field__g7400_017a v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_017a v0; - v4.i256 = call %core__lib__abi__decode_field__g7400_017a v0; - v5.objref<@layout_11> = obj.alloc @layout_11; - v7.objref = obj.proj v5 0.i256; - obj.store v7 v2; - v9.objref = obj.proj v5 1.i256; - obj.store v9 v3; - v11.objref = obj.proj v5 2.i256; - obj.store v11 v4; - v12.@layout_11 = obj.load v5; - return v12; -} - -func inline(always) private %impl_trait_Deploy__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_12 { - block0: - jump block1; - - block1: - v2.i256 = call %core__lib__abi__decode_field__g7400_c049 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_c049 v0; - v4.objref<@layout_12> = obj.alloc @layout_12; - v6.objref = obj.proj v4 0.i256; - obj.store v6 v2; - v8.objref = obj.proj v4 1.i256; - obj.store v8 v3; - v9.@layout_12 = obj.load v4; - return v9; -} - -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_2100(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3732 v0; - return v2; -} - -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_a410(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_e23c v0; - return v2; -} - -func private %decode_payload__g4770(v0.objref<@layout_10>) -> @layout_3 { +func private %decode_payload__g4770(v0.objref<@layout_7>) -> @layout_3 { block0: jump block1; block1: - v2.i256 = call %decode_field__g3854 v0; - v3.i256 = call %decode_field__g3854 v0; + v2.i256 = call %decode_field v0; + v3.i256 = call %decode_field v0; v4.objref<@layout_3> = obj.alloc @layout_3; v6.objref = obj.proj v4 0.i256; obj.store v6 v2; @@ -879,7 +740,7 @@ func private %decode_payload__g4770(v0.objref<@layout_10>) -> @layout_3 { return v9; } -func inline(always) private %decode_payload__g407e(v0.objref<@layout_10>) -> i256 { +func inline(always) private %decode_payload__g407e(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -888,87 +749,15 @@ func inline(always) private %decode_payload__g407e(v0.objref<@layout_10>) -> i25 return v2; } -func inline(always) private %decode_runtime_args__gadcc(v0.objref<@layout_1>) -> @layout_11 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_01fe v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_11 = call %impl_trait_Deploy2__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__gbdfb(v0.objref<@layout_1>) -> @layout_12 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_12be v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_12 = call %impl_trait_Deploy__decode_payload__g3a69 v3; - return v16; -} - -func private %decoder_new(v0.@layout_8) -> @layout_10 { +func private %decoder_new(v0.@layout_5) -> @layout_7 { block0: jump block1; block1: - v2.@layout_10 = call %impl_SolDecoder__new__g463e v0; + v2.@layout_7 = call %impl_SolDecoder__new__g463e v0; return v2; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_b1d3(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_1dc8 v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_b4ac(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_8ee4 v0 v3; - return v5; -} - func private %dynamic_payload_size(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; @@ -1270,407 +1059,133 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__encoder_new_c533(v0.i256) return v3; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_2f47(v0.@layout_6, v1.i256) -> @layout_6 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d139(v0.@layout_6, v1.i256) -> @layout_6 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_8584(v0.objref<@layout_5>) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_46c6() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_bf50(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_9839; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_b116() -> @layout_5 { +func inline(always) private %impl_Cursor__new__g463e(v0.@layout_5) -> @layout_6 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_f68d; - return v0; + v2.objref<@layout_6> = obj.alloc @layout_6; + v4.objref<@layout_5> = obj.proj v2 0.i256; + v5.objref = obj.proj v4 0.i256; + v6.i256 = extract_value v0 0.i256; + obj.store v5 v6; + v8.objref = obj.proj v4 1.i256; + v9.i256 = extract_value v0 1.i256; + obj.store v8 v9; + v10.objref = obj.proj v2 1.i256; + obj.store v10 0.i256; + v11.@layout_6 = obj.load v2; + return v11; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_0b55(v0.objref<@layout_5>) -> i256 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_61f8(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; - v2.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; + v2.i256 = mload v1 i256; + v4.i1 = eq v2 0.i256; + br v4 block2 block3; block2: jump block4; block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; + v5.i256 = mload v1 i256; + v6.*i8 = evm_malloc v5; + v7.i256 = ptr_to_int v6 i256; + jump block4; block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; + v8.i256 = phi (0.i256 block2) (v7 block3); + v9.objref<@layout_4> = obj.alloc @layout_4; + v10.objref = obj.proj v9 0.i256; + obj.store v10 v8; + v12.objref = obj.proj v9 1.i256; + obj.store v12 v8; + v13.@layout_4 = obj.load v9; + return v13; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_20b8(v0.objref<@layout_5>) -> i256 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_aa27(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; - v2.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; + v2.i256 = mload v1 i256; + v4.i1 = eq v2 0.i256; + br v4 block2 block3; block2: jump block4; block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; + v5.i256 = mload v1 i256; + v6.*i8 = evm_malloc v5; + v7.i256 = ptr_to_int v6 i256; + jump block4; block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; + v8.i256 = phi (0.i256 block2) (v7 block3); + v9.objref<@layout_4> = obj.alloc @layout_4; + v10.objref = obj.proj v9 0.i256; + obj.store v10 v8; + v12.objref = obj.proj v9 1.i256; + obj.store v12 v8; + v13.@layout_4 = obj.load v9; + return v13; +} - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func inline(always) private %impl_SolDecoder__new__g463e(v0.@layout_5) -> @layout_7 { + block0: + jump block1; - block6: - jump block4; + block1: + v2.@layout_6 = call %impl_Cursor__new__g463e v0; + v4.objref<@layout_7> = obj.alloc @layout_7; + v5.objref<@layout_6> = obj.proj v4 0.i256; + v6.objref<@layout_5> = obj.proj v5 0.i256; + v7.@layout_5 = extract_value v2 0.i256; + v8.objref = obj.proj v6 0.i256; + v9.i256 = extract_value v7 0.i256; + obj.store v8 v9; + v11.objref = obj.proj v6 1.i256; + v12.i256 = extract_value v7 1.i256; + obj.store v11 v12; + v13.objref = obj.proj v5 1.i256; + v14.i256 = extract_value v2 1.i256; + obj.store v13 v14; + v15.objref = obj.proj v4 1.i256; + obj.store v15 0.i256; + v16.@layout_7 = obj.load v4; + return v16; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_35e0(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_8584(v0.objref<@layout_8>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_bf50(v0.objref<@layout_8>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_d349(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %impl_Cursor__new__g463e(v0.@layout_8) -> @layout_9 { - block0: - jump block1; - - block1: - v2.objref<@layout_9> = obj.alloc @layout_9; - v4.objref<@layout_8> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v4 1.i256; - v9.i256 = extract_value v0 1.i256; - obj.store v8 v9; - v10.objref = obj.proj v2 1.i256; - obj.store v10 0.i256; - v11.@layout_9 = obj.load v2; - return v11; -} - -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_61f8(v0.i256) -> @layout_4 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_4> = obj.alloc @layout_4; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_4 = obj.load v9; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_74da(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_9839() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_aa27(v0.i256) -> @layout_4 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_4> = obj.alloc @layout_4; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_4 = obj.load v9; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_ed1c(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_f68d() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %impl_SolDecoder__new__g463e(v0.@layout_8) -> @layout_10 { - block0: - jump block1; - - block1: - v2.@layout_9 = call %impl_Cursor__new__g463e v0; - v4.objref<@layout_10> = obj.alloc @layout_10; - v5.objref<@layout_9> = obj.proj v4 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = extract_value v2 0.i256; - v8.objref = obj.proj v6 0.i256; - v9.i256 = extract_value v7 0.i256; - obj.store v8 v9; - v11.objref = obj.proj v6 1.i256; - v12.i256 = extract_value v7 1.i256; - obj.store v11 v12; - v13.objref = obj.proj v5 1.i256; - v14.i256 = extract_value v2 1.i256; - obj.store v13 v14; - v15.objref = obj.proj v4 1.i256; - obj.store v15 0.i256; - v16.@layout_10 = obj.load v4; - return v16; -} - -func private %payload_size__gbd8e(v0.@layout_3) -> i256 { +func private %payload_size__gbd8e(v0.@layout_3) -> i256 { block0: jump block1; @@ -1708,327 +1223,61 @@ func private %core__lib__abi__trait_AbiSize__payload_size__g67a8_7f10_0(v0.@layo jump block1; block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_a376(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_ccad(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_65f2(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %pos__g463e(v0.objref<@layout_10>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_9> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_9b4c(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c492(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_de88(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_0984(v0.objref<@layout_10>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_9> = obj.proj v0 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = obj.load v6; - v8.objref<@layout_9> = obj.proj v0 0.i256; - v9.objref<@layout_8> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_bf50 v9; - mstore v1 v10 i256; - v11.objref<@layout_9> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_9> = obj.proj v0 0.i256; - v29.objref<@layout_8> = obj.proj v28 0.i256; - v30.@layout_8 = obj.load v29; - v31.objref<@layout_9> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_9> = obj.proj v0 0.i256; - v35.objref<@layout_8> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_14ee v35 v33; - v38.objref<@layout_9> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_9> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3732(v0.objref<@layout_7>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_6> = obj.proj v0 0.i256; - v6.objref<@layout_5> = obj.proj v5 0.i256; - v7.@layout_5 = obj.load v6; - v8.objref<@layout_6> = obj.proj v0 0.i256; - v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_20b8 v9; - mstore v1 v10 i256; - v11.objref<@layout_6> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_6> = obj.proj v0 0.i256; - v29.objref<@layout_5> = obj.proj v28 0.i256; - v30.@layout_5 = obj.load v29; - v31.objref<@layout_6> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_6> = obj.proj v0 0.i256; - v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_749b v35 v33; - v38.objref<@layout_6> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_6> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; + return 32.i256; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8dbd(v0.objref<@layout_10>) -> i256 { +func private %core__lib__abi__trait_AbiSize__payload_size__ge513_a376(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; - v2.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.objref<@layout_9> = obj.proj v0 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = obj.load v6; - v8.objref<@layout_9> = obj.proj v0 0.i256; - v9.objref<@layout_8> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_8584 v9; - mstore v1 v10 i256; - v11.objref<@layout_9> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_9> = obj.proj v0 0.i256; - v29.objref<@layout_8> = obj.proj v28 0.i256; - v30.@layout_8 = obj.load v29; - v31.objref<@layout_9> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_9> = obj.proj v0 0.i256; - v35.objref<@layout_8> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_231d v35 v33; - v38.objref<@layout_9> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_9> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; + return 32.i256; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d553(v0.objref<@layout_7>) -> i256 { +func private %core__lib__abi__trait_AbiSize__payload_size__ge513_ccad(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; - v2.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.objref<@layout_6> = obj.proj v0 0.i256; - v6.objref<@layout_5> = obj.proj v5 0.i256; - v7.@layout_5 = obj.load v6; - v8.objref<@layout_6> = obj.proj v0 0.i256; - v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_35e0 v9; - mstore v1 v10 i256; - v11.objref<@layout_6> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; + return 32.i256; +} - block2: - evm_revert 0.i256 0.i256; +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_65f2(v0.objref<@layout_4>) -> i256 { + block0: + jump block1; - block3: - jump block4; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block4: - v28.objref<@layout_6> = obj.proj v0 0.i256; - v29.objref<@layout_5> = obj.proj v28 0.i256; - v30.@layout_5 = obj.load v29; - v31.objref<@layout_6> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_6> = obj.proj v0 0.i256; - v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_8f1b v35 v33; - v38.objref<@layout_6> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; +func private %pos__g463e(v0.objref<@layout_7>) -> i256 { + block0: + jump block1; - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; + block1: + v3.objref<@layout_6> = obj.proj v0 0.i256; + v5.objref = obj.proj v3 1.i256; + v6.i256 = obj.load v5; + return v6; +} - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_de88(v0.objref<@layout_4>) -> i256 { + block0: + jump block1; - block7: - v23.objref<@layout_6> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_e23c(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_0984(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -2040,7 +1289,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_d349 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_bf50 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -2063,7 +1312,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_dd03 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_14ee v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -2089,7 +1338,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_eb70(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8dbd(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -2101,7 +1350,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_0b55 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_8584 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -2124,7 +1373,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_2a2a v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_231d v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -2150,26 +1399,6 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_01fe(v0.objref<@layout_1>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_b116; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_b4ac v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_12be(v0.objref<@layout_1>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_46c6; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_b1d3 v1 4.i256; - return v3; -} - func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_3f4d(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; @@ -2183,20 +1412,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_3f4d(v0.o return; } -func private %set_base__g463e(v0.objref<@layout_10>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_7c4b(v0.objref<@layout_7>, v1.i256) { +func private %set_base__g463e(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -2222,20 +1438,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_b006(v0.o return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_f205(v0.objref<@layout_7>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0b40(v0.objref<@layout_7>, v1.i256) { +func private %set_pos__g463e(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -2249,20 +1452,6 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0b4 return; } -func private %set_pos__g463e(v0.objref<@layout_10>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_9> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_863e(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; @@ -2276,20 +1465,6 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_863e(v0.ob return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a1ae(v0.objref<@layout_7>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_d061(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; @@ -2333,61 +1508,7 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__store_word_d9ea(v0.i256, return; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_1dc8(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_ed1c v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_2f47 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_8ee4(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_74da v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d139 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_14ee(v0.objref<@layout_8>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_14ee(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -2402,7 +1523,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_231d(v0.objref<@layout_8>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_231d(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -2417,66 +1538,6 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_2a2a(v0.objref<@layout_5>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_749b(v0.objref<@layout_5>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_8f1b(v0.objref<@layout_5>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_dd03(v0.objref<@layout_5>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_1f5e(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; @@ -2563,7 +1624,6 @@ object @Factory { } section runtime { entry %contract_runtime_root_Factory; - data $const_region_0; embed @Child.init as &Child_init; } } diff --git a/crates/codegen/tests/fixtures/sonatina_ir/effect_handle_field_deref.snap b/crates/codegen/tests/fixtures/sonatina_ir/effect_handle_field_deref.snap index 0b8bbf17cf..c3b494c20e 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/effect_handle_field_deref.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/effect_handle_field_deref.snap @@ -1,5 +1,6 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/effect_handle_field_deref.fe --- @@ -8,17 +9,7 @@ target = "evm-ethereum-osaka" type @layout_0 = {}; type @layout_1 = {@layout_0}; type @layout_2 = {i256}; -type @layout_3 = {@layout_2, i256}; -type @layout_4 = {@layout_3, i256}; -type @layout_5 = {i256, i256}; -type @layout_6 = {i256}; -type @layout_7 = {i256}; -type @layout_8 = {i256}; -type @layout_9 = {i256, i256}; -type @layout_10 = {i256, i256}; -type @layout_11 = {i256, i256}; - -global private const @layout_2 $const_region_0 = {0}; +type @layout_3 = {i256, i256}; func private %__EffectHandleFieldDeref_init(v0.i256) { block0: @@ -45,12 +36,12 @@ func private %__EffectHandleFieldDeref_recv_0_1(v0.i256, v1.objref<@layout_1>) - block1: v3.i256 = call %stor_ptr v0; - v5.objref<@layout_11> = obj.alloc @layout_11; + v5.objref<@layout_3> = obj.alloc @layout_3; v7.objref = obj.proj v5 0.i256; obj.store v7 v3; v8.objref = obj.proj v5 1.i256; obj.store v8 1.i256; - v9.@layout_11 = obj.load v5; + v9.@layout_3 = obj.load v5; v10.i256 = call %extract_ptr v9; v11.i256 = call %read_cell v10; return v11; @@ -61,11 +52,11 @@ func private %__EffectHandleFieldDeref_recv_0_2(v0.i256, v1.i256) -> i256 { jump block1; block1: - v3.objref<@layout_6> = obj.alloc @layout_6; + v3.objref<@layout_2> = obj.alloc @layout_2; v5.objref = obj.proj v3 0.i256; obj.store v5 v1; - v6.@layout_6 = obj.load v3; - v7.objref<@layout_6> = obj.alloc @layout_6; + v6.@layout_2 = obj.load v3; + v7.objref<@layout_2> = obj.alloc @layout_2; v8.objref = obj.proj v7 0.i256; v9.i256 = extract_value v6 0.i256; obj.store v8 v9; @@ -73,89 +64,7 @@ func private %__EffectHandleFieldDeref_recv_0_2(v0.i256, v1.i256) -> i256 { return v11; } -func private %abi_field_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_a8bc_0 v2; - br 0.i1 block2 block3; - - block2: - (v7.i256, v8.i1) = uaddo 32.i256 v3; - br v8 block5 block6; - - block3: - jump block4; - - block4: - return v3; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - return v7; -} - -func private %abi_single_root_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %abi_field_size v2; - return v3; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_159d(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_31e5(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7113(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %impl_trait_SolEncoder__base(v0.objref<@layout_5>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 0.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %bump(v0.objref<@layout_6>, v1.i256) -> i256 { +func private %bump(v0.objref<@layout_2>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -226,16 +135,20 @@ func private %contract_recv_abi_EffectHandleFieldDeref_1() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_1> = obj.alloc @layout_1; - v6.@layout_9 = call %decode_runtime_args__g5aad v5; - v7.i256 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_1> = obj.alloc @layout_1; - v11.i256 = call %__EffectHandleFieldDeref_recv_0_0 v7 v9 v10; - v12.@layout_10 = call %encode_single_root_alloc v11; - v13.i256 = extract_value v12 0.i256; - v14.i256 = extract_value v12 1.i256; - evm_return v13 v14; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 68.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v12.i256 = evm_calldata_load 36.i256; + v13.objref<@layout_1> = obj.alloc @layout_1; + v14.i256 = call %__EffectHandleFieldDeref_recv_0_0 v10 v12 v13; + mstore 0.i256 v14 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_EffectHandleFieldDeref_2() { @@ -252,15 +165,19 @@ func private %contract_recv_abi_EffectHandleFieldDeref_2() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_1> = obj.alloc @layout_1; - v6.@layout_8 = call %decode_runtime_args__g01e9 v5; - v7.i256 = extract_value v6 0.i256; - v8.objref<@layout_1> = obj.alloc @layout_1; - v9.i256 = call %__EffectHandleFieldDeref_recv_0_1 v7 v8; - v10.@layout_10 = call %encode_single_root_alloc v9; - v11.i256 = extract_value v10 0.i256; - v13.i256 = extract_value v10 1.i256; - evm_return v11 v13; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 36.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v11.objref<@layout_1> = obj.alloc @layout_1; + v12.i256 = call %__EffectHandleFieldDeref_recv_0_1 v10 v11; + mstore 0.i256 v12 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_EffectHandleFieldDeref_3() { @@ -277,14 +194,18 @@ func private %contract_recv_abi_EffectHandleFieldDeref_3() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_1> = obj.alloc @layout_1; - v6.@layout_7 = call %decode_runtime_args__g0392 v5; - v7.i256 = extract_value v6 0.i256; - v8.i256 = call %__EffectHandleFieldDeref_recv_0_2 v7 0.i256; - v9.@layout_10 = call %encode_single_root_alloc v8; - v10.i256 = extract_value v9 0.i256; - v12.i256 = extract_value v9 1.i256; - evm_return v10 v12; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 36.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v11.i256 = call %__EffectHandleFieldDeref_recv_0_2 v10 0.i256; + mstore 0.i256 v11 i256; + evm_return 0.i256 32.i256; } func private %contract_runtime_root_EffectHandleFieldDeref() { @@ -318,1700 +239,68 @@ func private %contract_runtime_root_EffectHandleFieldDeref() { unreachable; } -func inline(always) private %core__lib__abi__decode_field__g7400_6974(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3710 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_31e5 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_868e v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_4028 v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5248 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_31e5 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_07fb v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_4028 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5248 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_07fb v0 v5; - return v17; -} - -func inline(always) private %core__lib__abi__decode_field__g7400_709e(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b395 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_159d v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_0d04 v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_324c v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_75a5 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_159d v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_495b v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_324c v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_75a5 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_495b v0 v5; - return v17; -} - -func inline(always) private %core__lib__abi__decode_field__g7400_78ea(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9a89 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7113 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_b231 v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_a00c v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_ac6c v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7113 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c4d0 v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_a00c v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_ac6c v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c4d0 v0 v5; - return v17; -} - -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_324c(v0.objref<@layout_4>) -> i256 { +func private %extract_ptr(v0.@layout_3) -> i256 { block0: + v1.objref<@layout_3> = obj.alloc @layout_3; + v3.objref = obj.proj v1 0.i256; + v4.i256 = extract_value v0 0.i256; + obj.store v3 v4; + v6.objref = obj.proj v1 1.i256; + v7.i256 = extract_value v0 1.i256; + obj.store v6 v7; jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_5f60 v0; - return v2; + v8.objref = obj.proj v1 0.i256; + v9.i256 = obj.load v8; + return v9; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_4028(v0.objref<@layout_4>) -> i256 { +func private %from_raw(v0.i256) -> i256 { block0: + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_a802 v0; + v2.i256 = mload v1 i256; return v2; } -func inline(always) private %impl_trait_BumpMover__decode_payload__g3a69(v0.objref<@layout_4>) -> @layout_7 { - block0: - jump block1; - - block1: - v2.i256 = call %core__lib__abi__decode_field__g7400_709e v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref = obj.proj v3 0.i256; - obj.store v5 v2; - v6.@layout_7 = obj.load v3; - return v6; -} - -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_a00c(v0.objref<@layout_4>) -> i256 { +func private %read_cell(v0.i256) -> i256 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_7344 v0; + v2.i256 = evm_sload v0; return v2; } -func inline(always) private %impl_trait_ReadViaHolder__decode_payload__g3a69(v0.objref<@layout_4>) -> @layout_8 { - block0: - jump block1; - - block1: - v2.i256 = call %core__lib__abi__decode_field__g7400_78ea v0; - v3.objref<@layout_8> = obj.alloc @layout_8; - v5.objref = obj.proj v3 0.i256; - obj.store v5 v2; - v6.@layout_8 = obj.load v3; - return v6; -} - -func inline(always) private %impl_trait_SeedSlot__decode_payload__g3a69(v0.objref<@layout_4>) -> @layout_9 { - block0: - jump block1; - - block1: - v2.i256 = call %core__lib__abi__decode_field__g7400_6974 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_6974 v0; - v4.objref<@layout_9> = obj.alloc @layout_9; - v6.objref = obj.proj v4 0.i256; - obj.store v6 v2; - v8.objref = obj.proj v4 1.i256; - obj.store v8 v3; - v9.@layout_9 = obj.load v4; - return v9; -} - -func inline(always) private %decode_runtime_args__g5aad(v0.objref<@layout_1>) -> @layout_9 { - block0: - jump block1; - - block1: - v2.@layout_4 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_73b0 v0; - v3.objref<@layout_4> = obj.alloc @layout_4; - v5.objref<@layout_3> = obj.proj v3 0.i256; - v6.@layout_3 = extract_value v2 0.i256; - v7.objref<@layout_2> = obj.proj v5 0.i256; - v8.@layout_2 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_9 = call %impl_trait_SeedSlot__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g01e9(v0.objref<@layout_1>) -> @layout_8 { - block0: - jump block1; - - block1: - v2.@layout_4 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_7607 v0; - v3.objref<@layout_4> = obj.alloc @layout_4; - v5.objref<@layout_3> = obj.proj v3 0.i256; - v6.@layout_3 = extract_value v2 0.i256; - v7.objref<@layout_2> = obj.proj v5 0.i256; - v8.@layout_2 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_8 = call %impl_trait_ReadViaHolder__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g0392(v0.objref<@layout_1>) -> @layout_7 { - block0: - jump block1; - - block1: - v2.@layout_4 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_8836 v0; - v3.objref<@layout_4> = obj.alloc @layout_4; - v5.objref<@layout_3> = obj.proj v3 0.i256; - v6.@layout_3 = extract_value v2 0.i256; - v7.objref<@layout_2> = obj.proj v5 0.i256; - v8.@layout_2 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_7 = call %impl_trait_BumpMover__decode_payload__g3a69 v3; - return v16; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_2ee7(v0.@layout_2, v1.i256) -> @layout_4 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_4 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_19fc v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_5160(v0.@layout_2, v1.i256) -> @layout_4 { +func private %stor_ptr(v0.i256) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v3.i256 = mload v2 i256; - v5.@layout_4 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_8747 v0 v3; - return v5; + v2.i256 = mload v1 i256; + v3.i256 = call %from_raw v2; + return v3; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_88be(v0.@layout_2, v1.i256) -> @layout_4 { +func private %write_cell(v0.i256, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; - mstore v2 v1 i256; + mstore v2 v0 i256; jump block1; block1: v3.i256 = mload v2 i256; - v5.@layout_4 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_9476 v0 v3; + evm_sstore v1 v3; + v5.i256 = evm_sload v1; return v5; } -func private %encode(v0.i256, v1.objref<@layout_5>) { - block0: - jump block1; - - block1: - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_2aa5 v1 v0; - return; -} - -func private %encode_field(v0.i256, v1.objref<@layout_5>, v2.i256) { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v5.i256 = call %impl_trait_SolEncoder__base v1; - v8.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_a8bc v0; - v9.i256 = mload v2 i256; - v10.i256 = sub v9 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8a50 v1 v10; - v12.i256 = call %impl_trait_SolEncoder__pos v1; - v13.i256 = mload v2 i256; - call %impl_trait_SolEncoder__set_base v1 v13; - v15.i256 = mload v2 i256; - call %impl_trait_SolEncoder__set_pos v1 v15; - call %encode v0 v1; - call %impl_trait_SolEncoder__set_base v1 v5; - call %impl_trait_SolEncoder__set_pos v1 v12; - v20.i256 = mload v2 i256; - v21.i256 = add v20 v8; - mstore v2 v21 i256; - return; - - block3: - jump block4; - - block4: - br 1.i1 block5 block6; - - block5: - v24.i256 = call %impl_trait_SolEncoder__pos v1; - call %encode_to_ptr v0 v24; - v28.i256 = add v24 32.i256; - call %impl_trait_SolEncoder__set_pos v1 v28; - return; - - block6: - jump block7; - - block7: - call %encode v0 v1; - return; -} - -func private %encode_single_root(v0.i256, v1.objref<@layout_5>) { - block0: - v2.*i256 = alloca i256; - jump block1; - - block1: - v4.i256 = call %impl_trait_SolEncoder__base v1; - v6.i256 = add v4 32.i256; - mstore v2 v6 i256; - v7.i256 = ptr_to_int v2 i256; - call %encode_field v0 v1 v7; - return; -} - -func private %encode_single_root_alloc(v0.i256) -> @layout_10 { - block0: - jump block1; - - block1: - v2.i256 = call %abi_single_root_size v0; - v3.@layout_5 = call %encoder_new v2; - v4.objref<@layout_5> = obj.alloc @layout_5; - v6.objref = obj.proj v4 0.i256; - v7.i256 = extract_value v3 0.i256; - obj.store v6 v7; - v9.objref = obj.proj v4 1.i256; - v10.i256 = extract_value v3 1.i256; - obj.store v9 v10; - v11.i256 = call %impl_trait_SolEncoder__base v4; - call %encode_single_root v0 v4; - v13.objref<@layout_10> = obj.alloc @layout_10; - v14.objref = obj.proj v13 0.i256; - obj.store v14 v11; - v15.objref = obj.proj v13 1.i256; - obj.store v15 v2; - v16.@layout_10 = obj.load v13; - return v16; -} - -func private %encode_to_ptr(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - call %store_word v3 v0; - return; -} - -func private %encoder_new(v0.i256) -> @layout_5 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.@layout_5 = call %impl_SolEncoder__new v2; - return v3; -} - -func private %extract_ptr(v0.@layout_11) -> i256 { - block0: - v1.objref<@layout_11> = obj.alloc @layout_11; - v3.objref = obj.proj v1 0.i256; - v4.i256 = extract_value v0 0.i256; - obj.store v3 v4; - v6.objref = obj.proj v1 1.i256; - v7.i256 = extract_value v0 1.i256; - obj.store v6 v7; - jump block1; - - block1: - v8.objref = obj.proj v1 0.i256; - v9.i256 = obj.load v8; - return v9; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_04a5(v0.@layout_3, v1.i256) -> @layout_3 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_2 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_3> = obj.alloc @layout_3; - v8.objref<@layout_2> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_3 = obj.load v7; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_3c6b(v0.@layout_3, v1.i256) -> @layout_3 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_2 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_3> = obj.alloc @layout_3; - v8.objref<@layout_2> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_3 = obj.load v7; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_e634(v0.@layout_3, v1.i256) -> @layout_3 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_2 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_3> = obj.alloc @layout_3; - v8.objref<@layout_2> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_3 = obj.load v7; - return v13; -} - -func private %from_raw(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - return v2; -} - -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_47a6() -> @layout_2 { - block0: - jump block1; - - block1: - v0.@layout_2 = call %std__lib__evm__calldata__impl_CallData_8f43__new_39f2; - return v0; -} - -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_c8ef() -> @layout_2 { - block0: - jump block1; - - block1: - v0.@layout_2 = call %std__lib__evm__calldata__impl_CallData_8f43__new_4b95; - return v0; -} - -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_ca13() -> @layout_2 { - block0: - jump block1; - - block1: - v0.@layout_2 = call %std__lib__evm__calldata__impl_CallData_8f43__new_2037; - return v0; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_130b(v0.objref<@layout_2>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_5a16(v0.objref<@layout_2>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_657a(v0.objref<@layout_2>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_7768(v0.objref<@layout_2>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_a028(v0.objref<@layout_2>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_d49e(v0.objref<@layout_2>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_2037() -> @layout_2 { - block0: - jump block1; - - block1: - v1.constref<@layout_2> = const.ref $const_region_0; - v2.objref<@layout_2> = obj.alloc @layout_2; - obj.init.const v2 v1; - v3.@layout_2 = obj.load v2; - return v3; -} - -func private %impl_SolEncoder__new(v0.i256) -> @layout_5 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_5> = obj.alloc @layout_5; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_5 = obj.load v9; - return v13; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_39f2() -> @layout_2 { - block0: - jump block1; - - block1: - v1.constref<@layout_2> = const.ref $const_region_0; - v2.objref<@layout_2> = obj.alloc @layout_2; - obj.init.const v2 v1; - v3.@layout_2 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_4886(v0.@layout_2) -> @layout_3 { - block0: - jump block1; - - block1: - v2.objref<@layout_3> = obj.alloc @layout_3; - v4.objref<@layout_2> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_3 = obj.load v2; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_4b95() -> @layout_2 { - block0: - jump block1; - - block1: - v1.constref<@layout_2> = const.ref $const_region_0; - v2.objref<@layout_2> = obj.alloc @layout_2; - obj.init.const v2 v1; - v3.@layout_2 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_70f0(v0.@layout_2) -> @layout_3 { - block0: - jump block1; - - block1: - v2.objref<@layout_3> = obj.alloc @layout_3; - v4.objref<@layout_2> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_3 = obj.load v2; - return v9; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_d24a(v0.@layout_2) -> @layout_3 { - block0: - jump block1; - - block1: - v2.objref<@layout_3> = obj.alloc @layout_3; - v4.objref<@layout_2> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_3 = obj.load v2; - return v9; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_a8bc(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_a8bc_0(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_0d04(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_3> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %impl_trait_SolEncoder__pos(v0.objref<@layout_5>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_868e(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_3> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_b231(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_3> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %read_cell(v0.i256) -> i256 { - block0: - jump block1; - - block1: - v2.i256 = evm_sload v0; - return v2; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3710(v0.objref<@layout_4>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_3> = obj.proj v0 0.i256; - v6.objref<@layout_2> = obj.proj v5 0.i256; - v7.@layout_2 = obj.load v6; - v8.objref<@layout_3> = obj.proj v0 0.i256; - v9.objref<@layout_2> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_5a16 v9; - mstore v1 v10 i256; - v11.objref<@layout_3> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_3> = obj.proj v0 0.i256; - v29.objref<@layout_2> = obj.proj v28 0.i256; - v30.@layout_2 = obj.load v29; - v31.objref<@layout_3> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_3> = obj.proj v0 0.i256; - v35.objref<@layout_2> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_da20 v35 v33; - v38.objref<@layout_3> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_3> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_5f60(v0.objref<@layout_4>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_3> = obj.proj v0 0.i256; - v6.objref<@layout_2> = obj.proj v5 0.i256; - v7.@layout_2 = obj.load v6; - v8.objref<@layout_3> = obj.proj v0 0.i256; - v9.objref<@layout_2> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_a028 v9; - mstore v1 v10 i256; - v11.objref<@layout_3> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_3> = obj.proj v0 0.i256; - v29.objref<@layout_2> = obj.proj v28 0.i256; - v30.@layout_2 = obj.load v29; - v31.objref<@layout_3> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_3> = obj.proj v0 0.i256; - v35.objref<@layout_2> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_b133 v35 v33; - v38.objref<@layout_3> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_3> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_7344(v0.objref<@layout_4>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_3> = obj.proj v0 0.i256; - v6.objref<@layout_2> = obj.proj v5 0.i256; - v7.@layout_2 = obj.load v6; - v8.objref<@layout_3> = obj.proj v0 0.i256; - v9.objref<@layout_2> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_657a v9; - mstore v1 v10 i256; - v11.objref<@layout_3> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_3> = obj.proj v0 0.i256; - v29.objref<@layout_2> = obj.proj v28 0.i256; - v30.@layout_2 = obj.load v29; - v31.objref<@layout_3> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_3> = obj.proj v0 0.i256; - v35.objref<@layout_2> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_2e7e v35 v33; - v38.objref<@layout_3> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_3> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9a89(v0.objref<@layout_4>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_3> = obj.proj v0 0.i256; - v6.objref<@layout_2> = obj.proj v5 0.i256; - v7.@layout_2 = obj.load v6; - v8.objref<@layout_3> = obj.proj v0 0.i256; - v9.objref<@layout_2> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_7768 v9; - mstore v1 v10 i256; - v11.objref<@layout_3> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_3> = obj.proj v0 0.i256; - v29.objref<@layout_2> = obj.proj v28 0.i256; - v30.@layout_2 = obj.load v29; - v31.objref<@layout_3> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_3> = obj.proj v0 0.i256; - v35.objref<@layout_2> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_d1f9 v35 v33; - v38.objref<@layout_3> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_3> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_a802(v0.objref<@layout_4>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_3> = obj.proj v0 0.i256; - v6.objref<@layout_2> = obj.proj v5 0.i256; - v7.@layout_2 = obj.load v6; - v8.objref<@layout_3> = obj.proj v0 0.i256; - v9.objref<@layout_2> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_d49e v9; - mstore v1 v10 i256; - v11.objref<@layout_3> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_3> = obj.proj v0 0.i256; - v29.objref<@layout_2> = obj.proj v28 0.i256; - v30.@layout_2 = obj.load v29; - v31.objref<@layout_3> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_3> = obj.proj v0 0.i256; - v35.objref<@layout_2> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_290f v35 v33; - v38.objref<@layout_3> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_3> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b395(v0.objref<@layout_4>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_3> = obj.proj v0 0.i256; - v6.objref<@layout_2> = obj.proj v5 0.i256; - v7.@layout_2 = obj.load v6; - v8.objref<@layout_3> = obj.proj v0 0.i256; - v9.objref<@layout_2> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_130b v9; - mstore v1 v10 i256; - v11.objref<@layout_3> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_3> = obj.proj v0 0.i256; - v29.objref<@layout_2> = obj.proj v28 0.i256; - v30.@layout_2 = obj.load v29; - v31.objref<@layout_3> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_3> = obj.proj v0 0.i256; - v35.objref<@layout_2> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_1aee v35 v33; - v38.objref<@layout_3> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_3> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_73b0(v0.objref<@layout_1>) -> @layout_4 { - block0: - jump block1; - - block1: - v1.@layout_2 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_47a6; - v3.@layout_4 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_5160 v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_7607(v0.objref<@layout_1>) -> @layout_4 { - block0: - jump block1; - - block1: - v1.@layout_2 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_c8ef; - v3.@layout_4 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_2ee7 v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_8836(v0.objref<@layout_1>) -> @layout_4 { - block0: - jump block1; - - block1: - v1.@layout_2 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_ca13; - v3.@layout_4 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_88be v1 4.i256; - return v3; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5248(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_75a5(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %impl_trait_SolEncoder__set_base(v0.objref<@layout_5>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_ac6c(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_07fb(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_3> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - -func private %impl_trait_SolEncoder__set_pos(v0.objref<@layout_5>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_495b(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_3> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c4d0(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_3> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - -func private %stor_ptr(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %from_raw v2; - return v3; -} - -func private %store_word(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - v3.*i256 = alloca i256; - mstore v2 v0 i256; - mstore v3 v1 i256; - jump block1; - - block1: - v4.i256 = mload v2 i256; - v5.i256 = mload v3 i256; - mstore v4 v5 i256; - return; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_19fc(v0.@layout_2, v1.i256) -> @layout_4 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_3 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_d24a v0; - v5.i256 = mload v2 i256; - v6.@layout_3 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_04a5 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_4> = obj.alloc @layout_4; - v10.objref<@layout_3> = obj.proj v8 0.i256; - v11.objref<@layout_2> = obj.proj v10 0.i256; - v12.@layout_2 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_4 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_8747(v0.@layout_2, v1.i256) -> @layout_4 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_3 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_4886 v0; - v5.i256 = mload v2 i256; - v6.@layout_3 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_3c6b v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_4> = obj.alloc @layout_4; - v10.objref<@layout_3> = obj.proj v8 0.i256; - v11.objref<@layout_2> = obj.proj v10 0.i256; - v12.@layout_2 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_4 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_9476(v0.@layout_2, v1.i256) -> @layout_4 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_3 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_70f0 v0; - v5.i256 = mload v2 i256; - v6.@layout_3 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_e634 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_4> = obj.alloc @layout_4; - v10.objref<@layout_3> = obj.proj v8 0.i256; - v11.objref<@layout_2> = obj.proj v10 0.i256; - v12.@layout_2 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_4 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_1aee(v0.objref<@layout_2>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_290f(v0.objref<@layout_2>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_2e7e(v0.objref<@layout_2>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_b133(v0.objref<@layout_2>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_d1f9(v0.objref<@layout_2>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_da20(v0.objref<@layout_2>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func private %write_cell(v0.i256, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v0 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - evm_sstore v1 v3; - v5.i256 = evm_sload v1; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_2aa5(v0.objref<@layout_5>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8a50(v0.objref<@layout_5>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - object @EffectHandleFieldDeref { section init { @@ -2020,6 +309,5 @@ object @EffectHandleFieldDeref { } section runtime { entry %contract_runtime_root_EffectHandleFieldDeref; - data $const_region_0; } } diff --git a/crates/codegen/tests/fixtures/sonatina_ir/erc20.snap b/crates/codegen/tests/fixtures/sonatina_ir/erc20.snap index b8f058e312..b61f476a0f 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/erc20.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/erc20.snap @@ -1,5 +1,6 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/erc20.fe --- @@ -10,33 +11,32 @@ type @layout_1 = {}; type @layout_2 = {@layout_1}; type @layout_3 = {i256}; type @layout_4 = {i256, i256}; -type @layout_5 = {i256}; +type @layout_5 = {i256, i256}; type @layout_6 = {@layout_5, i256}; type @layout_7 = {@layout_6, i256}; -type @layout_8 = {i256, i256}; +type @layout_8 = {i256}; type @layout_9 = {@layout_8, i256}; type @layout_10 = {@layout_9, i256}; -type @layout_11 = {@layout_0, i256}; -type @layout_12 = {@layout_0}; -type @layout_13 = {i256}; +type @layout_11 = {@layout_0}; +type @layout_12 = {@layout_0, @layout_0, i256}; +type @layout_13 = {@layout_0, i256}; type @layout_14 = {@layout_0, i256}; -type @layout_15 = {@layout_0, @layout_0, i256}; +type @layout_15 = {@layout_0, i256}; type @layout_16 = {@layout_0, i256}; -type @layout_17 = {@layout_0, i256}; -type @layout_18 = {i256, @layout_0}; -type @layout_19 = {@layout_0, i256}; -type @layout_20 = {@layout_0, @layout_0}; -type @layout_21 = {@layout_0, i256}; +type @layout_17 = {i256, @layout_0}; +type @layout_18 = {@layout_0, i256}; +type @layout_19 = {@layout_0, @layout_0}; +type @layout_20 = {@layout_0, i256}; +type @layout_21 = {@layout_0, @layout_0, i256}; type @layout_22 = {@layout_0, @layout_0, i256}; -type @layout_23 = {@layout_0, @layout_0, i256}; -type @layout_24 = {i256, i256}; -type @layout_25 = {@layout_0, @layout_0}; +type @layout_23 = {i256, i256}; +type @layout_24 = {@layout_0, @layout_0}; +type @layout_25 = {}; type @layout_26 = {}; type @layout_27 = {}; -type @layout_28 = {}; -type @layout_29 = {@layout_28}; +type @layout_28 = {@layout_27}; -global private const @layout_5 $const_region_0 = {0}; +global private const @layout_8 $const_region_0 = {0}; global private const @layout_3 $const_region_1 = {1}; global private const @layout_0 $const_region_2 = {0}; @@ -110,7 +110,7 @@ func private %__CoolCoin_recv_0_4(v0.@layout_0, v1.@layout_0, v2.i256) -> i256 { jump block1; block1: - v3.objref<@layout_25> = obj.alloc @layout_25; + v3.objref<@layout_24> = obj.alloc @layout_24; v6.objref<@layout_0> = obj.proj v3 0.i256; v7.objref = obj.proj v6 0.i256; v8.i256 = extract_value v0 0.i256; @@ -119,7 +119,7 @@ func private %__CoolCoin_recv_0_4(v0.@layout_0, v1.@layout_0, v2.i256) -> i256 { v12.objref = obj.proj v11 0.i256; v13.i256 = extract_value v1 0.i256; obj.store v12 v13; - v14.@layout_25 = obj.load v3; + v14.@layout_24 = obj.load v3; v15.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_cf04 v14; return v15; } @@ -196,7 +196,7 @@ func private %__CoolCoin_recv_1_3(v0.@layout_0, v1.i256, v2.objref<@layout_2>, v block1: v5.@layout_0 = call %caller; - v6.objref<@layout_25> = obj.alloc @layout_25; + v6.objref<@layout_24> = obj.alloc @layout_24; v8.objref<@layout_0> = obj.proj v6 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; @@ -205,7 +205,7 @@ func private %__CoolCoin_recv_1_3(v0.@layout_0, v1.i256, v2.objref<@layout_2>, v v14.objref = obj.proj v13 0.i256; v15.i256 = extract_value v0 0.i256; obj.store v14 v15; - v16.@layout_25 = obj.load v6; + v16.@layout_24 = obj.load v6; v17.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5_0 v16; (v19.i256, v20.i1) = uaddo v17 v1; br v20 block2 block3; @@ -229,7 +229,7 @@ func private %__CoolCoin_recv_1_4(v0.@layout_0, v1.i256, v2.objref<@layout_2>, v block1: v7.@layout_0 = call %caller; - v8.objref<@layout_25> = obj.alloc @layout_25; + v8.objref<@layout_24> = obj.alloc @layout_24; v10.objref<@layout_0> = obj.proj v8 0.i256; v11.objref = obj.proj v10 0.i256; v12.i256 = extract_value v7 0.i256; @@ -238,7 +238,7 @@ func private %__CoolCoin_recv_1_4(v0.@layout_0, v1.i256, v2.objref<@layout_2>, v v16.objref = obj.proj v15 0.i256; v17.i256 = extract_value v0 0.i256; obj.store v16 v17; - v18.@layout_25 = obj.load v8; + v18.@layout_24 = obj.load v8; v19.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5_0 v18; v20.i256 = mload v5 i256; mstore v6 v20 i256; @@ -380,36 +380,6 @@ func private %abi_field_size__g79ff(v0.i8) -> i256 { return v7; } -func private %abi_field_size__ge513(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_77e5_0 v2; - br 0.i1 block2 block3; - - block2: - (v7.i256, v8.i1) = uaddo 32.i256 v3; - br v8 block5 block6; - - block3: - jump block4; - - block4: - return v3; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - return v7; -} - func private %core__lib__abi__abi_payload_size__ge513_b9e3(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; @@ -509,18 +479,6 @@ func private %abi_single_root_size__g79ff(v0.i8) -> i256 { return v3; } -func private %abi_single_root_size__ge513(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %abi_field_size__ge513 v2; - return v3; -} - func private %standalone_erc20__erc20__approve__g5c3f_26fb(v0.@layout_0, v1.@layout_0, v2.i256, v3.i256, v4.objref<@layout_2>) { block0: v5.*i256 = alloca i256; @@ -544,7 +502,7 @@ func private %standalone_erc20__erc20__approve__g5c3f_26fb(v0.@layout_0, v1.@lay v20.@layout_0 = obj.load v7; v21.i1 = call %ne v1 v20; call %std__lib__evm__effects__assert_d98e_0 v21; - v23.objref<@layout_25> = obj.alloc @layout_25; + v23.objref<@layout_24> = obj.alloc @layout_24; v24.objref<@layout_0> = obj.proj v23 0.i256; v25.objref = obj.proj v24 0.i256; v26.i256 = extract_value v0 0.i256; @@ -553,11 +511,11 @@ func private %standalone_erc20__erc20__approve__g5c3f_26fb(v0.@layout_0, v1.@lay v29.objref = obj.proj v28 0.i256; v30.i256 = extract_value v1 0.i256; obj.store v29 v30; - v31.@layout_25 = obj.load v23; + v31.@layout_24 = obj.load v23; v32.i256 = mload v5 i256; call %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7_0 v31 v32; v35.i256 = mload v5 i256; - v36.objref<@layout_22> = obj.alloc @layout_22; + v36.objref<@layout_21> = obj.alloc @layout_21; v37.objref<@layout_0> = obj.proj v36 0.i256; v38.objref = obj.proj v37 0.i256; v39.i256 = extract_value v0 0.i256; @@ -568,7 +526,7 @@ func private %standalone_erc20__erc20__approve__g5c3f_26fb(v0.@layout_0, v1.@lay obj.store v41 v42; v44.objref = obj.proj v36 2.i256; obj.store v44 v35; - v45.@layout_22 = obj.load v36; + v45.@layout_21 = obj.load v36; call %emit__g9cd0 v4 v45; return; } @@ -596,7 +554,7 @@ func private %standalone_erc20__erc20__approve__g5c3f_6e4c(v0.@layout_0, v1.@lay v20.@layout_0 = obj.load v7; v21.i1 = call %ne v1 v20; call %std__lib__evm__effects__assert_d98e_0 v21; - v23.objref<@layout_25> = obj.alloc @layout_25; + v23.objref<@layout_24> = obj.alloc @layout_24; v24.objref<@layout_0> = obj.proj v23 0.i256; v25.objref = obj.proj v24 0.i256; v26.i256 = extract_value v0 0.i256; @@ -605,11 +563,11 @@ func private %standalone_erc20__erc20__approve__g5c3f_6e4c(v0.@layout_0, v1.@lay v29.objref = obj.proj v28 0.i256; v30.i256 = extract_value v1 0.i256; obj.store v29 v30; - v31.@layout_25 = obj.load v23; + v31.@layout_24 = obj.load v23; v32.i256 = mload v5 i256; call %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7_0 v31 v32; v35.i256 = mload v5 i256; - v36.objref<@layout_22> = obj.alloc @layout_22; + v36.objref<@layout_21> = obj.alloc @layout_21; v37.objref<@layout_0> = obj.proj v36 0.i256; v38.objref = obj.proj v37 0.i256; v39.i256 = extract_value v0 0.i256; @@ -620,7 +578,7 @@ func private %standalone_erc20__erc20__approve__g5c3f_6e4c(v0.@layout_0, v1.@lay obj.store v41 v42; v44.objref = obj.proj v36 2.i256; obj.store v44 v35; - v45.@layout_22 = obj.load v36; + v45.@layout_21 = obj.load v36; call %emit__g9cd0 v4 v45; return; } @@ -648,7 +606,7 @@ func private %standalone_erc20__erc20__approve__g5c3f_948a(v0.@layout_0, v1.@lay v20.@layout_0 = obj.load v7; v21.i1 = call %ne v1 v20; call %std__lib__evm__effects__assert_d98e_0 v21; - v23.objref<@layout_25> = obj.alloc @layout_25; + v23.objref<@layout_24> = obj.alloc @layout_24; v24.objref<@layout_0> = obj.proj v23 0.i256; v25.objref = obj.proj v24 0.i256; v26.i256 = extract_value v0 0.i256; @@ -657,11 +615,11 @@ func private %standalone_erc20__erc20__approve__g5c3f_948a(v0.@layout_0, v1.@lay v29.objref = obj.proj v28 0.i256; v30.i256 = extract_value v1 0.i256; obj.store v29 v30; - v31.@layout_25 = obj.load v23; + v31.@layout_24 = obj.load v23; v32.i256 = mload v5 i256; call %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7_0 v31 v32; v35.i256 = mload v5 i256; - v36.objref<@layout_22> = obj.alloc @layout_22; + v36.objref<@layout_21> = obj.alloc @layout_21; v37.objref<@layout_0> = obj.proj v36 0.i256; v38.objref = obj.proj v37 0.i256; v39.i256 = extract_value v0 0.i256; @@ -672,7 +630,7 @@ func private %standalone_erc20__erc20__approve__g5c3f_948a(v0.@layout_0, v1.@lay obj.store v41 v42; v44.objref = obj.proj v36 2.i256; obj.store v44 v35; - v45.@layout_22 = obj.load v36; + v45.@layout_21 = obj.load v36; call %emit__g9cd0 v4 v45; return; } @@ -776,17 +734,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_009f(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_1e5d(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_2366(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_112b(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -796,7 +744,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_2366(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_23b9(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_1fe3(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -816,7 +764,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_25d4(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b(v0.objref<@layout_10>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2a40(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -826,7 +774,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0(v0.objref<@layout_10>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -836,7 +784,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0 return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_39d6(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -846,27 +794,27 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_39d6(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_3735(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097_0(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_39d6(v0.objref<@layout_10>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097_1(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -876,7 +824,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097_1(v0.obj return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_6030(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097_0(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -886,27 +834,17 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_6030(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6a8f(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6b4a(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_4097_1(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 1.i256; + v3.objref = obj.proj v0 0.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6caa(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_452e(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -916,7 +854,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6caa(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7453(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_5982(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -926,7 +864,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7453(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_6030(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -936,37 +874,37 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef_0(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_61cd(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef_1(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_64fa(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_8751(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_655e(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_8d3e(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_6945(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -976,7 +914,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_8d3e(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9981(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_7666(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -986,17 +924,17 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9981(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9b2c(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 1.i256; + v3.objref = obj.proj v0 0.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_a9a0(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef_0(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -1006,7 +944,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_a9a0(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_bb09(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_7aef_1(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -1016,7 +954,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_bb09(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_c13e(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_8751(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -1026,7 +964,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_c13e(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_c2a7(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_8ac8(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -1036,17 +974,17 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_c2a7(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_d16a(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_a9a0(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 1.i256; + v3.objref = obj.proj v0 0.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_dd69(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_bb09(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -1056,17 +994,17 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_dd69(v0.objre return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_bcf7(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_0(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_c13e(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -1076,17 +1014,17 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_0(v0.obj return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_1(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_c2a7(v0.objref<@layout_10>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 0.i256; + v3.objref = obj.proj v0 1.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_efc3(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_d8a6(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -1096,37 +1034,37 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_efc3(v return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f01e(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_dd69(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 1.i256; + v3.objref = obj.proj v0 0.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f638(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 1.i256; + v3.objref = obj.proj v0 0.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f81d(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_0(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref = obj.proj v0 1.i256; + v3.objref = obj.proj v0 0.i256; v4.i256 = obj.load v3; return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_fd6f(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_1(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -1176,7 +1114,7 @@ func private %standalone_erc20__erc20__burn__g5c3f_533f(v0.@layout_0, v1.i256, v evm_sstore v2 v31; v36.@layout_0 = call %zero; v37.i256 = mload v4 i256; - v38.objref<@layout_23> = obj.alloc @layout_23; + v38.objref<@layout_22> = obj.alloc @layout_22; v39.objref<@layout_0> = obj.proj v38 0.i256; v40.objref = obj.proj v39 0.i256; v41.i256 = extract_value v0 0.i256; @@ -1187,7 +1125,7 @@ func private %standalone_erc20__erc20__burn__g5c3f_533f(v0.@layout_0, v1.i256, v obj.store v44 v45; v47.objref = obj.proj v38 2.i256; obj.store v47 v37; - v48.@layout_23 = obj.load v38; + v48.@layout_22 = obj.load v38; call %emit__g4c3d v3 v48; return; } @@ -1232,7 +1170,7 @@ func private %standalone_erc20__erc20__burn__g5c3f_6ec4(v0.@layout_0, v1.i256, v evm_sstore v2 v31; v36.@layout_0 = call %zero; v37.i256 = mload v4 i256; - v38.objref<@layout_23> = obj.alloc @layout_23; + v38.objref<@layout_22> = obj.alloc @layout_22; v39.objref<@layout_0> = obj.proj v38 0.i256; v40.objref = obj.proj v39 0.i256; v41.i256 = extract_value v0 0.i256; @@ -1243,7 +1181,7 @@ func private %standalone_erc20__erc20__burn__g5c3f_6ec4(v0.@layout_0, v1.i256, v obj.store v44 v45; v47.objref = obj.proj v38 2.i256; obj.store v47 v37; - v48.@layout_23 = obj.load v38; + v48.@layout_22 = obj.load v38; call %emit__g4c3d v3 v48; return; } @@ -1263,8 +1201,8 @@ func private %caller() -> @layout_0 { func private %contract_init_abi_CoolCoin() { block0: - v0.objref<@layout_8> = obj.alloc @layout_8; - v1.objref<@layout_10> = obj.alloc @layout_10; + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: @@ -1302,12 +1240,12 @@ func private %contract_init_abi_CoolCoin() { obj.store v23 v20; v25.objref = obj.proj v0 1.i256; obj.store v25 v13; - v26.@layout_8 = obj.load v0; - v27.@layout_10 = call %decoder_new v26; - v28.objref<@layout_9> = obj.proj v1 0.i256; - v29.@layout_9 = extract_value v27 0.i256; - v30.objref<@layout_8> = obj.proj v28 0.i256; - v31.@layout_8 = extract_value v29 0.i256; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; v32.objref = obj.proj v30 0.i256; v33.i256 = extract_value v31 0.i256; obj.store v32 v33; @@ -1320,7 +1258,7 @@ func private %contract_init_abi_CoolCoin() { v38.objref = obj.proj v1 1.i256; v39.i256 = extract_value v27 1.i256; obj.store v38 v39; - v40.@layout_18 = call %decode_payload__gf566 v1; + v40.@layout_17 = call %decode_payload__gf566 v1; v41.i256 = extract_value v40 0.i256; v42.@layout_0 = extract_value v40 1.i256; v44.objref<@layout_2> = obj.alloc @layout_2; @@ -1343,29 +1281,73 @@ func private %contract_init_root_CoolCoin() { func private %contract_recv_abi_CoolCoin_1086394137() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_21 = call %decode_runtime_args__g2273 v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_2> = obj.alloc @layout_2; - v11.objref<@layout_2> = obj.alloc @layout_2; - v13.i1 = call %__CoolCoin_recv_1_0 v7 v9 v10 0.i256 v11 3.i256; - v14.@layout_24 = call %encode_single_root_alloc__g09ca v13; - v15.i256 = extract_value v14 0.i256; - v16.i256 = extract_value v14 1.i256; - evm_return v15 v16; + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 68.i256; + br v9 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v19.*i8 = evm_malloc v15; + v20.i256 = ptr_to_int v19 i256; + evm_calldata_copy v20 4.i256 v15; + v23.objref = obj.proj v0 0.i256; + obj.store v23 v20; + v25.objref = obj.proj v0 1.i256; + obj.store v25 v15; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; + v32.objref = obj.proj v30 0.i256; + v33.i256 = extract_value v31 0.i256; + obj.store v32 v33; + v34.objref = obj.proj v30 1.i256; + v35.i256 = extract_value v31 1.i256; + obj.store v34 v35; + v36.objref = obj.proj v28 1.i256; + v37.i256 = extract_value v29 1.i256; + obj.store v36 v37; + v38.objref = obj.proj v1 1.i256; + v39.i256 = extract_value v27 1.i256; + obj.store v38 v39; + v40.@layout_16 = call %impl_trait_Mint__decode_payload__gf196 v1; + v41.@layout_0 = extract_value v40 0.i256; + v42.objref<@layout_2> = obj.alloc @layout_2; + v43.objref<@layout_2> = obj.alloc @layout_2; + v46.i1 = call %__CoolCoin_recv_1_0 v41 v12 v42 0.i256 v43 3.i256; + v47.@layout_23 = call %encode_single_root_alloc__g09ca v46; + v48.i256 = extract_value v47 0.i256; + v49.i256 = extract_value v47 1.i256; + evm_return v48 v49; } func private %contract_recv_abi_CoolCoin_1117154408() { @@ -1382,16 +1364,22 @@ func private %contract_recv_abi_CoolCoin_1117154408() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_13 = call %decode_runtime_args__gf629 v5; - v7.i256 = extract_value v6 0.i256; - v8.objref<@layout_2> = obj.alloc @layout_2; - v9.objref<@layout_2> = obj.alloc @layout_2; - v10.i1 = call %__CoolCoin_recv_1_1 v7 v8 0.i256 v9; - v11.@layout_24 = call %encode_single_root_alloc__g09ca v10; - v12.i256 = extract_value v11 0.i256; - v14.i256 = extract_value v11 1.i256; - evm_return v12 v14; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 36.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v11.objref<@layout_2> = obj.alloc @layout_2; + v12.objref<@layout_2> = obj.alloc @layout_2; + v13.i1 = call %__CoolCoin_recv_1_1 v10 v11 0.i256 v12; + v14.@layout_23 = call %encode_single_root_alloc__g09ca v13; + v15.i256 = extract_value v14 0.i256; + v17.i256 = extract_value v14 1.i256; + evm_return v15 v17; } func private %contract_recv_abi_CoolCoin_117300739() { @@ -1411,7 +1399,7 @@ func private %contract_recv_abi_CoolCoin_117300739() { v5.objref<@layout_2> = obj.alloc @layout_2; call %decode_runtime_args__gce2e v5; v7.i256 = call %__CoolCoin_recv_0_6; - v8.@layout_24 = call %encode_single_root_alloc__g472d v7; + v8.@layout_23 = call %encode_single_root_alloc__g472d v7; v9.i256 = extract_value v8 0.i256; v11.i256 = extract_value v8 1.i256; evm_return v9 v11; @@ -1419,29 +1407,73 @@ func private %contract_recv_abi_CoolCoin_117300739() { func private %contract_recv_abi_CoolCoin_157198259() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_14 = call %decode_runtime_args__g7a2c v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_2> = obj.alloc @layout_2; - v11.objref<@layout_2> = obj.alloc @layout_2; - v12.i1 = call %__CoolCoin_recv_0_1 v7 v9 v10 0.i256 v11; - v13.@layout_24 = call %encode_single_root_alloc__g09ca v12; - v14.i256 = extract_value v13 0.i256; - v15.i256 = extract_value v13 1.i256; - evm_return v14 v15; + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 68.i256; + br v9 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v19.*i8 = evm_malloc v15; + v20.i256 = ptr_to_int v19 i256; + evm_calldata_copy v20 4.i256 v15; + v23.objref = obj.proj v0 0.i256; + obj.store v23 v20; + v25.objref = obj.proj v0 1.i256; + obj.store v25 v15; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; + v32.objref = obj.proj v30 0.i256; + v33.i256 = extract_value v31 0.i256; + obj.store v32 v33; + v34.objref = obj.proj v30 1.i256; + v35.i256 = extract_value v31 1.i256; + obj.store v34 v35; + v36.objref = obj.proj v28 1.i256; + v37.i256 = extract_value v29 1.i256; + obj.store v36 v37; + v38.objref = obj.proj v1 1.i256; + v39.i256 = extract_value v27 1.i256; + obj.store v38 v39; + v40.@layout_20 = call %impl_trait_Approve__decode_payload__gf196 v1; + v41.@layout_0 = extract_value v40 0.i256; + v42.objref<@layout_2> = obj.alloc @layout_2; + v43.objref<@layout_2> = obj.alloc @layout_2; + v45.i1 = call %__CoolCoin_recv_0_1 v41 v12 v42 0.i256 v43; + v46.@layout_23 = call %encode_single_root_alloc__g09ca v45; + v47.i256 = extract_value v46 0.i256; + v48.i256 = extract_value v46 1.i256; + evm_return v47 v48; } func private %contract_recv_abi_CoolCoin_1889567281() { @@ -1459,40 +1491,82 @@ func private %contract_recv_abi_CoolCoin_1889567281() { block3: v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_12 = call %decode_runtime_args__g953d v5; + v6.@layout_11 = call %decode_runtime_args__g953d v5; v7.@layout_0 = extract_value v6 0.i256; v8.i256 = call %__CoolCoin_recv_0_3 v7 0.i256; - v9.@layout_24 = call %encode_single_root_alloc__gac80 v8; - v10.i256 = extract_value v9 0.i256; - v12.i256 = extract_value v9 1.i256; - evm_return v10 v12; + mstore 0.i256 v8 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_CoolCoin_2043438992() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_17 = call %decode_runtime_args__g216b v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_2> = obj.alloc @layout_2; - v11.objref<@layout_2> = obj.alloc @layout_2; - v12.i1 = call %__CoolCoin_recv_1_2 v7 v9 v10 0.i256 v11; - v13.@layout_24 = call %encode_single_root_alloc__g09ca v12; - v14.i256 = extract_value v13 0.i256; - v15.i256 = extract_value v13 1.i256; - evm_return v14 v15; + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 68.i256; + br v9 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v19.*i8 = evm_malloc v15; + v20.i256 = ptr_to_int v19 i256; + evm_calldata_copy v20 4.i256 v15; + v23.objref = obj.proj v0 0.i256; + obj.store v23 v20; + v25.objref = obj.proj v0 1.i256; + obj.store v25 v15; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; + v32.objref = obj.proj v30 0.i256; + v33.i256 = extract_value v31 0.i256; + obj.store v32 v33; + v34.objref = obj.proj v30 1.i256; + v35.i256 = extract_value v31 1.i256; + obj.store v34 v35; + v36.objref = obj.proj v28 1.i256; + v37.i256 = extract_value v29 1.i256; + obj.store v36 v37; + v38.objref = obj.proj v1 1.i256; + v39.i256 = extract_value v27 1.i256; + obj.store v38 v39; + v40.@layout_15 = call %impl_trait_BurnFrom__decode_payload__gf196 v1; + v41.@layout_0 = extract_value v40 0.i256; + v42.objref<@layout_2> = obj.alloc @layout_2; + v43.objref<@layout_2> = obj.alloc @layout_2; + v45.i1 = call %__CoolCoin_recv_1_2 v41 v12 v42 0.i256 v43; + v46.@layout_23 = call %encode_single_root_alloc__g09ca v45; + v47.i256 = extract_value v46 0.i256; + v48.i256 = extract_value v46 1.i256; + evm_return v47 v48; } func private %contract_recv_abi_CoolCoin_2514000705() { @@ -1512,7 +1586,7 @@ func private %contract_recv_abi_CoolCoin_2514000705() { v5.objref<@layout_2> = obj.alloc @layout_2; call %decode_runtime_args__g295c v5; v7.i256 = call %__CoolCoin_recv_0_7; - v8.@layout_24 = call %encode_single_root_alloc__g0c18 v7; + v8.@layout_23 = call %encode_single_root_alloc__g0c18 v7; v9.i256 = extract_value v8 0.i256; v11.i256 = extract_value v8 1.i256; evm_return v9 v11; @@ -1520,56 +1594,144 @@ func private %contract_recv_abi_CoolCoin_2514000705() { func private %contract_recv_abi_CoolCoin_2757214935() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_11 = call %decode_runtime_args__g6a7c v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_2> = obj.alloc @layout_2; - v11.objref<@layout_2> = obj.alloc @layout_2; - v12.i1 = call %__CoolCoin_recv_1_4 v7 v9 v10 0.i256 v11; - v13.@layout_24 = call %encode_single_root_alloc__g09ca v12; - v14.i256 = extract_value v13 0.i256; - v15.i256 = extract_value v13 1.i256; - evm_return v14 v15; -} + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 68.i256; + br v9 block4 block5; -func private %contract_recv_abi_CoolCoin_2835717307() { + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v19.*i8 = evm_malloc v15; + v20.i256 = ptr_to_int v19 i256; + evm_calldata_copy v20 4.i256 v15; + v23.objref = obj.proj v0 0.i256; + obj.store v23 v20; + v25.objref = obj.proj v0 1.i256; + obj.store v25 v15; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; + v32.objref = obj.proj v30 0.i256; + v33.i256 = extract_value v31 0.i256; + obj.store v32 v33; + v34.objref = obj.proj v30 1.i256; + v35.i256 = extract_value v31 1.i256; + obj.store v34 v35; + v36.objref = obj.proj v28 1.i256; + v37.i256 = extract_value v29 1.i256; + obj.store v36 v37; + v38.objref = obj.proj v1 1.i256; + v39.i256 = extract_value v27 1.i256; + obj.store v38 v39; + v40.@layout_13 = call %impl_trait_DecreaseAllowance__decode_payload__gf196 v1; + v41.@layout_0 = extract_value v40 0.i256; + v42.objref<@layout_2> = obj.alloc @layout_2; + v43.objref<@layout_2> = obj.alloc @layout_2; + v45.i1 = call %__CoolCoin_recv_1_4 v41 v12 v42 0.i256 v43; + v46.@layout_23 = call %encode_single_root_alloc__g09ca v45; + v47.i256 = extract_value v46 0.i256; + v48.i256 = extract_value v46 1.i256; + evm_return v47 v48; +} + +func private %contract_recv_abi_CoolCoin_2835717307() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_16 = call %decode_runtime_args__ge035 v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_2> = obj.alloc @layout_2; - v11.objref<@layout_2> = obj.alloc @layout_2; - v12.i1 = call %__CoolCoin_recv_0_0 v7 v9 v10 0.i256 v11; - v13.@layout_24 = call %encode_single_root_alloc__g09ca v12; - v14.i256 = extract_value v13 0.i256; - v15.i256 = extract_value v13 1.i256; - evm_return v14 v15; + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 68.i256; + br v9 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v19.*i8 = evm_malloc v15; + v20.i256 = ptr_to_int v19 i256; + evm_calldata_copy v20 4.i256 v15; + v23.objref = obj.proj v0 0.i256; + obj.store v23 v20; + v25.objref = obj.proj v0 1.i256; + obj.store v25 v15; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; + v32.objref = obj.proj v30 0.i256; + v33.i256 = extract_value v31 0.i256; + obj.store v32 v33; + v34.objref = obj.proj v30 1.i256; + v35.i256 = extract_value v31 1.i256; + obj.store v34 v35; + v36.objref = obj.proj v28 1.i256; + v37.i256 = extract_value v29 1.i256; + obj.store v36 v37; + v38.objref = obj.proj v1 1.i256; + v39.i256 = extract_value v27 1.i256; + obj.store v38 v39; + v40.@layout_14 = call %impl_trait_Transfer__decode_payload__gf196 v1; + v41.@layout_0 = extract_value v40 0.i256; + v42.objref<@layout_2> = obj.alloc @layout_2; + v43.objref<@layout_2> = obj.alloc @layout_2; + v45.i1 = call %__CoolCoin_recv_0_0 v41 v12 v42 0.i256 v43; + v46.@layout_23 = call %encode_single_root_alloc__g09ca v45; + v47.i256 = extract_value v46 0.i256; + v48.i256 = extract_value v46 1.i256; + evm_return v47 v48; } func private %contract_recv_abi_CoolCoin_3714247998() { @@ -1587,14 +1749,12 @@ func private %contract_recv_abi_CoolCoin_3714247998() { block3: v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_20 = call %decode_runtime_args__gc772 v5; + v6.@layout_19 = call %decode_runtime_args__gc772 v5; v7.@layout_0 = extract_value v6 0.i256; v9.@layout_0 = extract_value v6 1.i256; v10.i256 = call %__CoolCoin_recv_0_4 v7 v9 0.i256; - v11.@layout_24 = call %encode_single_root_alloc__gac80 v10; - v12.i256 = extract_value v11 0.i256; - v13.i256 = extract_value v11 1.i256; - evm_return v12 v13; + mstore 0.i256 v10 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_CoolCoin_404098525() { @@ -1614,38 +1774,80 @@ func private %contract_recv_abi_CoolCoin_404098525() { v5.objref<@layout_2> = obj.alloc @layout_2; call %decode_runtime_args__gce7d v5; v7.i256 = call %__CoolCoin_recv_0_5 0.i256; - v8.@layout_24 = call %encode_single_root_alloc__gac80 v7; - v9.i256 = extract_value v8 0.i256; - v11.i256 = extract_value v8 1.i256; - evm_return v9 v11; + mstore 0.i256 v7 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_CoolCoin_599290589() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_15 = call %decode_runtime_args__g4e54 v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.@layout_0 = extract_value v6 1.i256; - v11.i256 = extract_value v6 2.i256; - v12.objref<@layout_2> = obj.alloc @layout_2; - v13.objref<@layout_2> = obj.alloc @layout_2; - v14.i1 = call %__CoolCoin_recv_0_2 v7 v9 v11 v12 0.i256 v13; - v15.@layout_24 = call %encode_single_root_alloc__g09ca v14; - v16.i256 = extract_value v15 0.i256; - v17.i256 = extract_value v15 1.i256; - evm_return v16 v17; + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 100.i256; + br v9 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 68.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v20.*i8 = evm_malloc v15; + v21.i256 = ptr_to_int v20 i256; + evm_calldata_copy v21 4.i256 v15; + v24.objref = obj.proj v0 0.i256; + obj.store v24 v21; + v26.objref = obj.proj v0 1.i256; + obj.store v26 v15; + v27.@layout_5 = obj.load v0; + v28.@layout_7 = call %decoder_new v27; + v29.objref<@layout_6> = obj.proj v1 0.i256; + v30.@layout_6 = extract_value v28 0.i256; + v31.objref<@layout_5> = obj.proj v29 0.i256; + v32.@layout_5 = extract_value v30 0.i256; + v33.objref = obj.proj v31 0.i256; + v34.i256 = extract_value v32 0.i256; + obj.store v33 v34; + v35.objref = obj.proj v31 1.i256; + v36.i256 = extract_value v32 1.i256; + obj.store v35 v36; + v37.objref = obj.proj v29 1.i256; + v38.i256 = extract_value v30 1.i256; + obj.store v37 v38; + v39.objref = obj.proj v1 1.i256; + v40.i256 = extract_value v28 1.i256; + obj.store v39 v40; + v41.@layout_12 = call %impl_trait_TransferFrom__decode_payload__gf196 v1; + v42.@layout_0 = extract_value v41 0.i256; + v43.@layout_0 = extract_value v41 1.i256; + v44.objref<@layout_2> = obj.alloc @layout_2; + v45.objref<@layout_2> = obj.alloc @layout_2; + v47.i1 = call %__CoolCoin_recv_0_2 v42 v43 v12 v44 0.i256 v45; + v48.@layout_23 = call %encode_single_root_alloc__g09ca v47; + v49.i256 = extract_value v48 0.i256; + v50.i256 = extract_value v48 1.i256; + evm_return v49 v50; } func private %contract_recv_abi_CoolCoin_826074471() { @@ -1665,7 +1867,7 @@ func private %contract_recv_abi_CoolCoin_826074471() { v5.objref<@layout_2> = obj.alloc @layout_2; call %decode_runtime_args__g5a0b v5; v7.i8 = call %__CoolCoin_recv_0_8; - v8.@layout_24 = call %encode_single_root_alloc__gcb0a v7; + v8.@layout_23 = call %encode_single_root_alloc__gcb0a v7; v9.i256 = extract_value v8 0.i256; v11.i256 = extract_value v8 1.i256; evm_return v9 v11; @@ -1673,29 +1875,73 @@ func private %contract_recv_abi_CoolCoin_826074471() { func private %contract_recv_abi_CoolCoin_961581905() { block0: + v0.objref<@layout_5> = obj.alloc @layout_5; + v1.objref<@layout_7> = obj.alloc @layout_7; jump block1; block1: - v1.i256 = evm_call_value; - v2.i1 = eq v1 0.i256; - v3.i1 = is_zero v2; - br v3 block2 block3; + v3.i256 = evm_call_value; + v4.i1 = eq v3 0.i256; + v5.i1 = is_zero v4; + br v5 block2 block3; block2: evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_2> = obj.alloc @layout_2; - v6.@layout_19 = call %decode_runtime_args__g698d v5; - v7.@layout_0 = extract_value v6 0.i256; - v9.i256 = extract_value v6 1.i256; - v10.objref<@layout_2> = obj.alloc @layout_2; - v11.objref<@layout_2> = obj.alloc @layout_2; - v12.i1 = call %__CoolCoin_recv_1_3 v7 v9 v10 0.i256 v11; - v13.@layout_24 = call %encode_single_root_alloc__g09ca v12; - v14.i256 = extract_value v13 0.i256; - v15.i256 = extract_value v13 1.i256; - evm_return v14 v15; + v8.i256 = evm_calldata_size; + v9.i1 = lt v8 68.i256; + br v9 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v12.i256 = evm_calldata_load 36.i256; + v14.i256 = evm_calldata_size; + (v15.i256, v16.i1) = usubo v14 4.i256; + br v16 block6 block7; + + block6: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block7: + v19.*i8 = evm_malloc v15; + v20.i256 = ptr_to_int v19 i256; + evm_calldata_copy v20 4.i256 v15; + v23.objref = obj.proj v0 0.i256; + obj.store v23 v20; + v25.objref = obj.proj v0 1.i256; + obj.store v25 v15; + v26.@layout_5 = obj.load v0; + v27.@layout_7 = call %decoder_new v26; + v28.objref<@layout_6> = obj.proj v1 0.i256; + v29.@layout_6 = extract_value v27 0.i256; + v30.objref<@layout_5> = obj.proj v28 0.i256; + v31.@layout_5 = extract_value v29 0.i256; + v32.objref = obj.proj v30 0.i256; + v33.i256 = extract_value v31 0.i256; + obj.store v32 v33; + v34.objref = obj.proj v30 1.i256; + v35.i256 = extract_value v31 1.i256; + obj.store v34 v35; + v36.objref = obj.proj v28 1.i256; + v37.i256 = extract_value v29 1.i256; + obj.store v36 v37; + v38.objref = obj.proj v1 1.i256; + v39.i256 = extract_value v27 1.i256; + obj.store v38 v39; + v40.@layout_18 = call %impl_trait_IncreaseAllowance__decode_payload__gf196 v1; + v41.@layout_0 = extract_value v40 0.i256; + v42.objref<@layout_2> = obj.alloc @layout_2; + v43.objref<@layout_2> = obj.alloc @layout_2; + v45.i1 = call %__CoolCoin_recv_1_3 v41 v12 v42 0.i256 v43; + v46.@layout_23 = call %encode_single_root_alloc__g09ca v45; + v47.i256 = extract_value v46 0.i256; + v48.i256 = extract_value v46 1.i256; + evm_return v47 v48; } func private %contract_runtime_root_CoolCoin() { @@ -1935,7 +2181,7 @@ func private %std__lib__evm__effects__copy_words_c4e2_1(v0.i256, v1.i256, v2.i25 jump block2; } -func inline(always) private %core__lib__abi__decode_field__gaa38_0306(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__gaa38_0306(v0.objref<@layout_10>) -> @layout_0 { block0: jump block1; @@ -1971,43 +2217,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_0306(v0.objref< return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_0bfd(v0.objref<@layout_7>) -> @layout_0 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_90ee v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6caa v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_732d v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_1ff5 v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_cbf7 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6caa v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_499d v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_1ff5 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_cbf7 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_499d v0 v5; - return v17; -} - -func inline(always) private %core__lib__abi__decode_field__g7400_11ec(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g3854_0595(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2015,9 +2225,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_11ec(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_68c5 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_d16a v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_03cc v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_9246 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_d8a6 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_99ae v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2025,7 +2235,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_11ec(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_423a v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_8ca5 v0; return v23; block5: @@ -2034,16 +2244,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_11ec(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2047 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_d16a v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3c9e v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_423a v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2047 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3c9e v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_f8ba v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_d8a6 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_aee2 v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_8ca5 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_f8ba v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_aee2 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_13f3(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g3854_0795(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2051,9 +2261,9 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_13f3(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3e00 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_2366 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_e9e7 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_2418 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_5982 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_6cfa v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2061,7 +2271,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_13f3(v0.objref< jump block4; block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_fe07 v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_5c7d v0; return v23; block5: @@ -2070,16 +2280,16 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_13f3(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2c03 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_2366 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3496 v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_fe07 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2c03 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3496 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_c671 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_5982 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_5ecf v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_5c7d v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_c671 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_5ecf v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_1a99(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g8463_22ae(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2087,9 +2297,9 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_1a99(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_0aaa v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9981 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_2469 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_d64a v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_1fe3 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_c459 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2097,7 +2307,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_1a99(v0.objref< jump block4; block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_0684 v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_1e55 v0; return v23; block5: @@ -2106,16 +2316,16 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_1a99(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_6069 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9981 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a284 v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_0684 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_6069 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a284 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_eef1 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_1fe3 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_5ddd v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_1e55 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_eef1 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_5ddd v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_2931(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g8463_240b(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2123,9 +2333,9 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_2931(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2f5f v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9b2c v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_2476 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_bc48 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2a40 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_eba7 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2133,7 +2343,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_2931(v0.objref< jump block4; block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_66a8 v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_e71d v0; return v23; block5: @@ -2142,16 +2352,16 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_2931(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_37ba v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_9b2c v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_ec24 v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_66a8 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_37ba v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_ec24 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_b40e v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2a40 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_662e v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_e71d v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_b40e v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_662e v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_3063(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g8463_357c(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2159,9 +2369,9 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_3063(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_648f v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f81d v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_1f03 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_2ec5 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_64fa v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_6c2f v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2169,7 +2379,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_3063(v0.objref< jump block4; block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_69f0 v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_5c45 v0; return v23; block5: @@ -2178,16 +2388,16 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_3063(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8f23 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f81d v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0f8a v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_69f0 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8f23 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0f8a v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_58b5 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_64fa v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_4f21 v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_5c45 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_58b5 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_4f21 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_4cf3(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g8463_3756(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2195,9 +2405,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_4cf3(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_daa6 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f638 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_7902 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_fd97 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_655e v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_49de v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2205,7 +2415,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_4cf3(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_89fa v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_1f10 v0; return v23; block5: @@ -2214,16 +2424,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_4cf3(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_71fe v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f638 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_1627 v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_89fa v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_71fe v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_1627 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_48f6 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_655e v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_8814 v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_1f10 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_48f6 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_8814 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_59b3(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g3854_5787(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2231,9 +2441,9 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_59b3(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_99b4 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_23b9 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_f79e v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_51c6 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_8ac8 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_7119 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2241,7 +2451,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_59b3(v0.objref< jump block4; block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_15e7 v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_8eef v0; return v23; block5: @@ -2250,16 +2460,16 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_59b3(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_88e6 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_23b9 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3709 v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_15e7 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_88e6 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3709 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_2563 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_8ac8 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_27c4 v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_8eef v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_2563 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_27c4 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_67a5(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g8463_77f0(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2267,9 +2477,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_67a5(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_0c51 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f01e v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_359e v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_2677 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_61cd v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_7b2b v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2277,7 +2487,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_67a5(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_d74a v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_040a v0; return v23; block5: @@ -2286,16 +2496,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_67a5(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_08ad v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_f01e v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c11e v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_d74a v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_08ad v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c11e v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_bb8a v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_61cd v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_888f v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_040a v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_bb8a v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_888f v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_6a67(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g8463_7a80(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2303,9 +2513,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_6a67(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_e181 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_8d3e v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_d52d v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_a99d v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_6945 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_8aa3 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2313,7 +2523,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_6a67(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_8b49 v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_3454 v0; return v23; block5: @@ -2322,16 +2532,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_6a67(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_3353 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_8d3e v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_cfe1 v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_8b49 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_3353 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_cfe1 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d709 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_6945 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_ea2a v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_3454 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d709 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_ea2a v0 v5; return v17; } -func inline(always) private %decode_field__g8463(v0.objref<@layout_10>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g8463_7b8f(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2349,7 +2559,7 @@ func inline(always) private %decode_field__g8463(v0.objref<@layout_10>) -> @layo jump block4; block4: - v23.@layout_0 = call %impl_trait_Address__decode_payload__g407e v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_7f13 v0; return v23; block5: @@ -2361,13 +2571,13 @@ func inline(always) private %decode_field__g8463(v0.objref<@layout_10>) -> @layo call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b v0 v6; v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b v0; call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790 v0 v15; - v17.@layout_0 = call %impl_trait_Address__decode_payload__g407e v0; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_7f13 v0; call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b v0 v4; call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_8cdf(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g3854_87d1(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2375,9 +2585,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_8cdf(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9abb v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_efc3 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_389a v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_09f7 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_bcf7 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_e333 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2385,7 +2595,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_8cdf(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_e794 v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_78b8 v0; return v23; block5: @@ -2394,16 +2604,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_8cdf(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_abec v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_efc3 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_79da v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_e794 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_abec v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_79da v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_c7f2 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_bcf7 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_c04d v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_78b8 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_c7f2 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_c04d v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_98d1(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__g3854_88df(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2411,9 +2621,9 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_98d1(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_7998 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6b4a v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c0cb v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_1898 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_452e v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_f998 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2421,7 +2631,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_98d1(v0.objref< jump block4; block4: - v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_e2c8 v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_630b v0; return v23; block5: @@ -2430,16 +2640,16 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_98d1(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8271 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6b4a v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_04a3 v0 v15; - v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_e2c8 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8271 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_04a3 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_9157 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_452e v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_a128 v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_630b v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_9157 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_a128 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_ac4e(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g8463_9f0b(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; @@ -2447,9 +2657,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_ac4e(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_ec92 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_1e5d v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_5f56 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_e05e v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_112b v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_f05c v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2457,7 +2667,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_ac4e(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_8546 v0; + v23.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_49f4 v0; return v23; block5: @@ -2466,16 +2676,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_ac4e(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_625a v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_1e5d v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_763e v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_8546 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_625a v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_763e v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_4c89 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_112b v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_1acb v0 v15; + v17.@layout_0 = call %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_49f4 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_4c89 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_1acb v0 v5; return v17; } -func inline(always) private %decode_field__g3854(v0.objref<@layout_10>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g3854_a698(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2483,9 +2693,9 @@ func inline(always) private %decode_field__g3854(v0.objref<@layout_10>) -> i256 br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8be4_0 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c_0 v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_75ad v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_7666 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_a50d v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2493,7 +2703,7 @@ func inline(always) private %decode_field__g3854(v0.objref<@layout_10>) -> i256 jump block4; block4: - v23.i256 = call %impl_trait_u256__decode_payload__g407e v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_e2bf v0; return v23; block5: @@ -2502,16 +2712,16 @@ func inline(always) private %decode_field__g3854(v0.objref<@layout_10>) -> i256 evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b_0 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790_0 v0 v15; - v17.i256 = call %impl_trait_u256__decode_payload__g407e v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b_0 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790_0 v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_6e32 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_7666 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_aced v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_e2bf v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_6e32 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_aced v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_be39(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g3854_b587(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2519,9 +2729,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_be39(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_8f7a v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6a8f v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_79bd v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8be4_0 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c_0 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2529,7 +2739,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_be39(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_c028 v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_ada4 v0; return v23; block5: @@ -2538,16 +2748,16 @@ func inline(always) private %core__lib__abi__decode_field__g7400_be39(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b0be v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_6a8f v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_34da v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_c028 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b0be v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_34da v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b_0 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_2c1b_0 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790_0 v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_ada4 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b_0 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790_0 v0 v5; return v17; } -func inline(always) private %core__lib__abi__decode_field__gaa38_e11f(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %core__lib__abi__decode_field__gaa38_e11f(v0.objref<@layout_10>) -> @layout_0 { block0: jump block1; @@ -2583,7 +2793,7 @@ func inline(always) private %core__lib__abi__decode_field__gaa38_e11f(v0.objref< return v17; } -func inline(always) private %core__lib__abi__decode_field__g7400_eed2(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__decode_field__g3854_ee70(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -2591,9 +2801,9 @@ func inline(always) private %core__lib__abi__decode_field__g7400_eed2(v0.objref< br 0.i1 block2 block3; block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d406 v0; - v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7453 v0; - v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c11d v0; + v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_9743 v0; + v4.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_3735 v0; + v5.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_c508 v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -2601,7 +2811,7 @@ func inline(always) private %core__lib__abi__decode_field__g7400_eed2(v0.objref< jump block4; block4: - v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_646d v0; + v23.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_0fba v0; return v23; block5: @@ -2610,39 +2820,21 @@ func inline(always) private %core__lib__abi__decode_field__g7400_eed2(v0.objref< evm_revert 0.i256 36.i256; block6: - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5e07 v0 v6; - v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g8f43_7453 v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_592f v0 v15; - v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_646d v0; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5e07 v0 v4; - call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_592f v0 v5; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_5ab6 v0 v6; + v15.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__base__g463e_3735 v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_8a2d v0 v15; + v17.i256 = call %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_0fba v0; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_5ab6 v0 v4; + call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_8a2d v0 v5; return v17; } -func inline(always) private %impl_trait_DecreaseAllowance__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_11 { - block0: - jump block1; - - block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_59b3 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_67a5 v0; - v4.objref<@layout_11> = obj.alloc @layout_11; - v6.objref<@layout_0> = obj.proj v4 0.i256; - v7.objref = obj.proj v6 0.i256; - v8.i256 = extract_value v2 0.i256; - obj.store v7 v8; - v10.objref = obj.proj v4 1.i256; - obj.store v10 v3; - v11.@layout_11 = obj.load v4; - return v11; -} - -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_0684(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_040a(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_df17 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_697f v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -2662,40 +2854,44 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %impl_trait_BalanceOf__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_12 { +func inline(always) private %impl_trait_BalanceOf__decode_payload__g3a69(v0.objref<@layout_10>) -> @layout_11 { block0: jump block1; block1: v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_e11f v0; - v3.objref<@layout_12> = obj.alloc @layout_12; + v3.objref<@layout_11> = obj.alloc @layout_11; v5.objref<@layout_0> = obj.proj v3 0.i256; v6.objref = obj.proj v5 0.i256; v7.i256 = extract_value v2 0.i256; obj.store v6 v7; - v8.@layout_12 = obj.load v3; + v8.@layout_11 = obj.load v3; return v8; } -func inline(always) private %impl_trait_Burn__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_13 { +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_0fba(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v2.i256 = call %core__lib__abi__decode_field__g7400_8cdf v0; - v3.objref<@layout_13> = obj.alloc @layout_13; - v5.objref = obj.proj v3 0.i256; - obj.store v5 v2; - v6.@layout_13 = obj.load v3; - return v6; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8cb0 v0; + return v2; +} + +func inline(always) private %impl_trait_Name__decode_payload__g3a69(v0.objref<@layout_10>) { + block0: + jump block1; + + block1: + return; } -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_15e7(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_1e55(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9505 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_3bfe v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -2715,38 +2911,12 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %impl_trait_Approve__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_14 { - block0: - jump block1; - - block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_2931 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_11ec v0; - v4.objref<@layout_14> = obj.alloc @layout_14; - v6.objref<@layout_0> = obj.proj v4 0.i256; - v7.objref = obj.proj v6 0.i256; - v8.i256 = extract_value v2 0.i256; - obj.store v7 v8; - v10.objref = obj.proj v4 1.i256; - obj.store v10 v3; - v11.@layout_14 = obj.load v4; - return v11; -} - -func inline(always) private %impl_trait_Name__decode_payload__g3a69(v0.objref<@layout_7>) { - block0: - jump block1; - - block1: - return; -} - -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_1ff5(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_1f10(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_e5a8 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_87d4 v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -2766,31 +2936,15 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %impl_trait_Decimals__decode_payload__g3a69(v0.objref<@layout_7>) { - block0: - jump block1; - - block1: - return; -} - -func inline(always) private %impl_trait_TotalSupply__decode_payload__g3a69(v0.objref<@layout_7>) { - block0: - jump block1; - - block1: - return; -} - -func inline(always) private %impl_trait_TransferFrom__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_15 { +func inline(always) private %impl_trait_TransferFrom__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_12 { block0: jump block1; block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_3063 v0; - v3.@layout_0 = call %core__lib__abi__decode_field__gaa38_3063 v0; - v4.i256 = call %core__lib__abi__decode_field__g7400_6a67 v0; - v5.objref<@layout_15> = obj.alloc @layout_15; + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_77f0 v0; + v3.@layout_0 = call %core__lib__abi__decode_field__g8463_77f0 v0; + v4.i256 = call %core__lib__abi__decode_field__g3854_ee70 v0; + v5.objref<@layout_12> = obj.alloc @layout_12; v7.objref<@layout_0> = obj.proj v5 0.i256; v8.objref = obj.proj v7 0.i256; v9.i256 = extract_value v2 0.i256; @@ -2801,52 +2955,50 @@ func inline(always) private %impl_trait_TransferFrom__decode_payload__g3a69(v0.o obj.store v12 v13; v15.objref = obj.proj v5 2.i256; obj.store v15 v4; - v16.@layout_15 = obj.load v5; + v16.@layout_12 = obj.load v5; return v16; } -func inline(always) private %impl_trait_Transfer__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_16 { +func inline(always) private %impl_trait_DecreaseAllowance__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_13 { block0: jump block1; block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_98d1 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_be39 v0; - v4.objref<@layout_16> = obj.alloc @layout_16; + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_240b v0; + v3.i256 = call %core__lib__abi__decode_field__g3854_87d1 v0; + v4.objref<@layout_13> = obj.alloc @layout_13; v6.objref<@layout_0> = obj.proj v4 0.i256; v7.objref = obj.proj v6 0.i256; v8.i256 = extract_value v2 0.i256; obj.store v7 v8; v10.objref = obj.proj v4 1.i256; obj.store v10 v3; - v11.@layout_16 = obj.load v4; + v11.@layout_13 = obj.load v4; return v11; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_423a(v0.objref<@layout_7>) -> i256 { +func inline(always) private %impl_trait_Decimals__decode_payload__g3a69(v0.objref<@layout_10>) { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_5416 v0; - return v2; + return; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_646d(v0.objref<@layout_7>) -> i256 { +func inline(always) private %impl_trait_TotalSupply__decode_payload__g3a69(v0.objref<@layout_10>) { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d285 v0; - return v2; + return; } -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_66a8(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_3454(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3b91 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_b3f4 v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -2866,12 +3018,12 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_69f0(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_49f4(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_01ce v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_0d5e v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -2891,20 +3043,48 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %impl_trait_Symbol__decode_payload__g3a69(v0.objref<@layout_7>) { +func inline(always) private %impl_trait_Transfer__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_14 { block0: jump block1; block1: - return; + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_357c v0; + v3.i256 = call %core__lib__abi__decode_field__g3854_88df v0; + v4.objref<@layout_14> = obj.alloc @layout_14; + v6.objref<@layout_0> = obj.proj v4 0.i256; + v7.objref = obj.proj v6 0.i256; + v8.i256 = extract_value v2 0.i256; + obj.store v7 v8; + v10.objref = obj.proj v4 1.i256; + obj.store v10 v3; + v11.@layout_14 = obj.load v4; + return v11; } -func inline(always) private %impl_trait_Address__decode_payload__g407e(v0.objref<@layout_10>) -> @layout_0 { +func inline(always) private %impl_trait_BurnFrom__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_15 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_83b2 v0; + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_3756 v0; + v3.i256 = call %core__lib__abi__decode_field__g3854_0795 v0; + v4.objref<@layout_15> = obj.alloc @layout_15; + v6.objref<@layout_0> = obj.proj v4 0.i256; + v7.objref = obj.proj v6 0.i256; + v8.i256 = extract_value v2 0.i256; + obj.store v7 v8; + v10.objref = obj.proj v4 1.i256; + obj.store v10 v3; + v11.@layout_15 = obj.load v4; + return v11; +} + +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_5c45(v0.objref<@layout_7>) -> @layout_0 { + block0: + jump block1; + + block1: + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_6776 v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -2924,88 +3104,139 @@ func inline(always) private %impl_trait_Address__decode_payload__g407e(v0.objref return v11; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_8546(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_5c7d(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9776 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_50b8 v0; return v2; } -func inline(always) private %impl_trait_BurnFrom__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_17 { +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_630b(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_0bfd v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_ac4e v0; - v4.objref<@layout_17> = obj.alloc @layout_17; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_a048 v0; + return v2; +} + +func inline(always) private %impl_trait_Mint__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_16 { + block0: + jump block1; + + block1: + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_7a80 v0; + v3.i256 = call %core__lib__abi__decode_field__g3854_0595 v0; + v4.objref<@layout_16> = obj.alloc @layout_16; v6.objref<@layout_0> = obj.proj v4 0.i256; v7.objref = obj.proj v6 0.i256; v8.i256 = extract_value v2 0.i256; obj.store v7 v8; v10.objref = obj.proj v4 1.i256; obj.store v10 v3; - v11.@layout_17 = obj.load v4; + v11.@layout_16 = obj.load v4; return v11; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_89fa(v0.objref<@layout_7>) -> i256 { +func inline(always) private %impl_trait_Symbol__decode_payload__g3a69(v0.objref<@layout_10>) { + block0: + jump block1; + + block1: + return; +} + +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_78b8(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b0d4 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_7676 v0; return v2; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_8b49(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_7f13(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_0022 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_83b2 v0; + v4.i256 = shr 160.i256 v2; + v6.i1 = eq v4 0.i256; + v7.i1 = is_zero v6; + br v7 block2 block3; + + block2: + evm_revert 0.i256 0.i256; + + block3: + jump block4; + + block4: + v8.objref<@layout_0> = obj.alloc @layout_0; + v10.objref = obj.proj v8 0.i256; + obj.store v10 v2; + v11.@layout_0 = obj.load v8; + return v11; +} + +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_8ca5(v0.objref<@layout_7>) -> i256 { + block0: + jump block1; + + block1: + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_9212 v0; return v2; } -func private %decode_payload__gf566(v0.objref<@layout_10>) -> @layout_18 { +func private %decode_payload__gf566(v0.objref<@layout_7>) -> @layout_17 { block0: jump block1; block1: - v2.i256 = call %decode_field__g3854 v0; - v3.@layout_0 = call %decode_field__g8463 v0; - v4.objref<@layout_18> = obj.alloc @layout_18; + v2.i256 = call %core__lib__abi__decode_field__g3854_b587 v0; + v3.@layout_0 = call %core__lib__abi__decode_field__g8463_7b8f v0; + v4.objref<@layout_17> = obj.alloc @layout_17; v6.objref = obj.proj v4 0.i256; obj.store v6 v2; v8.objref<@layout_0> = obj.proj v4 1.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v3 0.i256; obj.store v9 v10; - v11.@layout_18 = obj.load v4; + v11.@layout_17 = obj.load v4; return v11; } -func inline(always) private %impl_trait_IncreaseAllowance__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_19 { +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_8eef(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_1a99 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_4cf3 v0; - v4.objref<@layout_19> = obj.alloc @layout_19; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_c0d0 v0; + return v2; +} + +func inline(always) private %impl_trait_IncreaseAllowance__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_18 { + block0: + jump block1; + + block1: + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_9f0b v0; + v3.i256 = call %core__lib__abi__decode_field__g3854_5787 v0; + v4.objref<@layout_18> = obj.alloc @layout_18; v6.objref<@layout_0> = obj.proj v4 0.i256; v7.objref = obj.proj v6 0.i256; v8.i256 = extract_value v2 0.i256; obj.store v7 v8; v10.objref = obj.proj v4 1.i256; obj.store v10 v3; - v11.@layout_19 = obj.load v4; + v11.@layout_18 = obj.load v4; return v11; } -func inline(always) private %impl_trait_u256__decode_payload__g407e(v0.objref<@layout_10>) -> i256 { +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_ada4(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -3014,14 +3245,14 @@ func inline(always) private %impl_trait_u256__decode_payload__g407e(v0.objref<@l return v2; } -func inline(always) private %impl_trait_Allowance__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_20 { +func inline(always) private %impl_trait_Allowance__decode_payload__g3a69(v0.objref<@layout_10>) -> @layout_19 { block0: jump block1; block1: v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_0306 v0; v3.@layout_0 = call %core__lib__abi__decode_field__gaa38_0306 v0; - v4.objref<@layout_20> = obj.alloc @layout_20; + v4.objref<@layout_19> = obj.alloc @layout_19; v6.objref<@layout_0> = obj.proj v4 0.i256; v7.objref = obj.proj v6 0.i256; v8.i256 = extract_value v2 0.i256; @@ -3030,54 +3261,38 @@ func inline(always) private %impl_trait_Allowance__decode_payload__g3a69(v0.objr v11.objref = obj.proj v10 0.i256; v12.i256 = extract_value v3 0.i256; obj.store v11 v12; - v13.@layout_20 = obj.load v4; + v13.@layout_19 = obj.load v4; return v13; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_c028(v0.objref<@layout_7>) -> i256 { +func inline(always) private %impl_trait_Approve__decode_payload__gf196(v0.objref<@layout_7>) -> @layout_20 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_80b7 v0; - return v2; + v2.@layout_0 = call %core__lib__abi__decode_field__g8463_22ae v0; + v3.i256 = call %core__lib__abi__decode_field__g3854_a698 v0; + v4.objref<@layout_20> = obj.alloc @layout_20; + v6.objref<@layout_0> = obj.proj v4 0.i256; + v7.objref = obj.proj v6 0.i256; + v8.i256 = extract_value v2 0.i256; + obj.store v7 v8; + v10.objref = obj.proj v4 1.i256; + obj.store v10 v3; + v11.@layout_20 = obj.load v4; + return v11; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_d74a(v0.objref<@layout_7>) -> i256 { +func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g407e_e2bf(v0.objref<@layout_7>) -> i256 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b3be v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_e61f v0; return v2; } -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_e2c8(v0.objref<@layout_7>) -> @layout_0 { - block0: - jump block1; - - block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_6bd8 v0; - v4.i256 = shr 160.i256 v2; - v6.i1 = eq v4 0.i256; - v7.i1 = is_zero v6; - br v7 block2 block3; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v8.objref<@layout_0> = obj.alloc @layout_0; - v10.objref = obj.proj v8 0.i256; - obj.store v10 v2; - v11.@layout_0 = obj.load v8; - return v11; -} - -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_e3de(v0.objref<@layout_7>) -> @layout_0 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_e3de(v0.objref<@layout_10>) -> @layout_0 { block0: jump block1; @@ -3102,21 +3317,12 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %core__lib__abi__impl_trait_u256_85b6__decode_payload__g574e_e794(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g407e_e71d(v0.objref<@layout_7>) -> @layout_0 { block0: jump block1; block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_a7b0 v0; - return v2; -} - -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_f87e(v0.objref<@layout_7>) -> @layout_0 { - block0: - jump block1; - - block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2ad2 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_7304 v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -3136,30 +3342,12 @@ func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__de return v11; } -func inline(always) private %impl_trait_Mint__decode_payload__g3a69(v0.objref<@layout_7>) -> @layout_21 { +func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_f87e(v0.objref<@layout_10>) -> @layout_0 { block0: jump block1; block1: - v2.@layout_0 = call %core__lib__abi__decode_field__gaa38_13f3 v0; - v3.i256 = call %core__lib__abi__decode_field__g7400_eed2 v0; - v4.objref<@layout_21> = obj.alloc @layout_21; - v6.objref<@layout_0> = obj.proj v4 0.i256; - v7.objref = obj.proj v6 0.i256; - v8.i256 = extract_value v2 0.i256; - obj.store v7 v8; - v10.objref = obj.proj v4 1.i256; - obj.store v10 v3; - v11.@layout_21 = obj.load v4; - return v11; -} - -func inline(always) private %std__lib__evm__effects__impl_trait_Address_9c1b__decode_payload__g574e_fe07(v0.objref<@layout_7>) -> @layout_0 { - block0: - jump block1; - - block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d635 v0; + v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2ad2 v0; v4.i256 = shr 160.i256 v2; v6.i1 = eq v4 0.i256; v7.i1 = is_zero v6; @@ -3184,12 +3372,12 @@ func inline(always) private %decode_runtime_args__g5a0b(v0.objref<@layout_2>) { jump block1; block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_26e1 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; + v2.@layout_10 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_26e1 v0; + v3.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_9> = obj.proj v3 0.i256; + v6.@layout_9 = extract_value v2 0.i256; + v7.objref<@layout_8> = obj.proj v5 0.i256; + v8.@layout_8 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -3203,65 +3391,17 @@ func inline(always) private %decode_runtime_args__g5a0b(v0.objref<@layout_2>) { return; } -func inline(always) private %decode_runtime_args__g6a7c(v0.objref<@layout_2>) -> @layout_11 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_d341 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_11 = call %impl_trait_DecreaseAllowance__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g7a2c(v0.objref<@layout_2>) -> @layout_14 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_60d6 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_14 = call %impl_trait_Approve__decode_payload__g3a69 v3; - return v16; -} - func inline(always) private %decode_runtime_args__g295c(v0.objref<@layout_2>) { block0: jump block1; block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_8b0a v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; + v2.@layout_10 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_8b0a v0; + v3.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_9> = obj.proj v3 0.i256; + v6.@layout_9 = extract_value v2 0.i256; + v7.objref<@layout_8> = obj.proj v5 0.i256; + v8.@layout_8 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -3280,12 +3420,12 @@ func inline(always) private %decode_runtime_args__gce7d(v0.objref<@layout_2>) { jump block1; block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_80a3 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; + v2.@layout_10 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_80a3 v0; + v3.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_9> = obj.proj v3 0.i256; + v6.@layout_9 = extract_value v2 0.i256; + v7.objref<@layout_8> = obj.proj v5 0.i256; + v8.@layout_8 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -3299,137 +3439,17 @@ func inline(always) private %decode_runtime_args__gce7d(v0.objref<@layout_2>) { return; } -func inline(always) private %decode_runtime_args__g2273(v0.objref<@layout_2>) -> @layout_21 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_55ea v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_21 = call %impl_trait_Mint__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g4e54(v0.objref<@layout_2>) -> @layout_15 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_1f3b v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_15 = call %impl_trait_TransferFrom__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g698d(v0.objref<@layout_2>) -> @layout_19 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_2913 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_19 = call %impl_trait_IncreaseAllowance__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__gc772(v0.objref<@layout_2>) -> @layout_20 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_a69d v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_20 = call %impl_trait_Allowance__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g953d(v0.objref<@layout_2>) -> @layout_12 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_ebfa v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_12 = call %impl_trait_BalanceOf__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__g216b(v0.objref<@layout_2>) -> @layout_17 { +func inline(always) private %decode_runtime_args__gc772(v0.objref<@layout_2>) -> @layout_19 { block0: jump block1; block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_5b45 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; + v2.@layout_10 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_a69d v0; + v3.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_9> = obj.proj v3 0.i256; + v6.@layout_9 = extract_value v2 0.i256; + v7.objref<@layout_8> = obj.proj v5 0.i256; + v8.@layout_8 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -3439,21 +3459,21 @@ func inline(always) private %decode_runtime_args__g216b(v0.objref<@layout_2>) -> v14.objref = obj.proj v3 1.i256; v15.i256 = extract_value v2 1.i256; obj.store v14 v15; - v16.@layout_17 = call %impl_trait_BurnFrom__decode_payload__g3a69 v3; + v16.@layout_19 = call %impl_trait_Allowance__decode_payload__g3a69 v3; return v16; } -func inline(always) private %decode_runtime_args__gf629(v0.objref<@layout_2>) -> @layout_13 { +func inline(always) private %decode_runtime_args__g953d(v0.objref<@layout_2>) -> @layout_11 { block0: jump block1; block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_4d61 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; + v2.@layout_10 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_ebfa v0; + v3.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_9> = obj.proj v3 0.i256; + v6.@layout_9 = extract_value v2 0.i256; + v7.objref<@layout_8> = obj.proj v5 0.i256; + v8.@layout_8 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -3463,7 +3483,7 @@ func inline(always) private %decode_runtime_args__gf629(v0.objref<@layout_2>) -> v14.objref = obj.proj v3 1.i256; v15.i256 = extract_value v2 1.i256; obj.store v14 v15; - v16.@layout_13 = call %impl_trait_Burn__decode_payload__g3a69 v3; + v16.@layout_11 = call %impl_trait_BalanceOf__decode_payload__g3a69 v3; return v16; } @@ -3472,12 +3492,12 @@ func inline(always) private %decode_runtime_args__gce2e(v0.objref<@layout_2>) { jump block1; block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_e0eb v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; + v2.@layout_10 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_e0eb v0; + v3.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_9> = obj.proj v3 0.i256; + v6.@layout_9 = extract_value v2 0.i256; + v7.objref<@layout_8> = obj.proj v5 0.i256; + v8.@layout_8 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -3491,40 +3511,16 @@ func inline(always) private %decode_runtime_args__gce2e(v0.objref<@layout_2>) { return; } -func inline(always) private %decode_runtime_args__ge035(v0.objref<@layout_2>) -> @layout_16 { - block0: - jump block1; - - block1: - v2.@layout_7 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_3b4f v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref<@layout_6> = obj.proj v3 0.i256; - v6.@layout_6 = extract_value v2 0.i256; - v7.objref<@layout_5> = obj.proj v5 0.i256; - v8.@layout_5 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_16 = call %impl_trait_Transfer__decode_payload__g3a69 v3; - return v16; -} - -func private %decoder_new(v0.@layout_8) -> @layout_10 { +func private %decoder_new(v0.@layout_5) -> @layout_7 { block0: jump block1; block1: - v2.@layout_10 = call %impl_SolDecoder__new__g463e v0; + v2.@layout_7 = call %impl_SolDecoder__new__g463e v0; return v2; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_1790(v0.@layout_5, v1.i256) -> @layout_7 { +func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_1790(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -3532,11 +3528,11 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ block1: v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dd64 v0 v3; + v5.@layout_10 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dd64 v0 v3; return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_2089(v0.@layout_5, v1.i256) -> @layout_7 { +func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_2089(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -3544,11 +3540,11 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ block1: v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_57e7 v0 v3; + v5.@layout_10 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_57e7 v0 v3; return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_372b(v0.@layout_5, v1.i256) -> @layout_7 { +func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_372b(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -3556,11 +3552,11 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ block1: v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_56ca v0 v3; + v5.@layout_10 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_56ca v0 v3; return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_41f6(v0.@layout_5, v1.i256) -> @layout_7 { +func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_41f6(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -3568,11 +3564,11 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ block1: v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_f665 v0 v3; + v5.@layout_10 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_f665 v0 v3; return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_46bc(v0.@layout_5, v1.i256) -> @layout_7 { +func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_691a(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -3580,11 +3576,11 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ block1: v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_a45d v0 v3; + v5.@layout_10 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dba1 v0 v3; return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_691a(v0.@layout_5, v1.i256) -> @layout_7 { +func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_9b9c(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -3592,107 +3588,11 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ block1: v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dba1 v0 v3; + v5.@layout_10 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_7c6f v0 v3; return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_7ee4(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_4009 v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_911d(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_6cde v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_9aa7(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_1583 v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_9b9c(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_7c6f v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_b2fb(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_df78 v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_c673(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_3cb6 v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_db7f(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_43fc v0 v3; - return v5; -} - -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_dc77(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_7 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_b4c9 v0 v3; - return v5; -} - -func private %core__lib__abi__dynamic_payload_size__ge513_7ef0(v0.i256) -> i256 { +func private %core__lib__abi__dynamic_payload_size__ge513_7ef0(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -3755,9 +3655,9 @@ func private %core__lib__abi__dynamic_payload_size__ge513_7ef0_1(v0.i256) -> i25 return 0.i256; } -func private %impl_trait_ApprovalEvent__emit__gcd5c(v0.@layout_22, v1.objref<@layout_2>) { +func private %impl_trait_ApprovalEvent__emit__gcd5c(v0.@layout_21, v1.objref<@layout_2>) { block0: - v2.objref<@layout_22> = obj.alloc @layout_22; + v2.objref<@layout_21> = obj.alloc @layout_21; v4.objref<@layout_0> = obj.proj v2 0.i256; v5.@layout_0 = extract_value v0 0.i256; v6.objref = obj.proj v4 0.i256; @@ -3776,8 +3676,8 @@ func private %impl_trait_ApprovalEvent__emit__gcd5c(v0.@layout_22, v1.objref<@la block1: v16.objref = obj.proj v2 2.i256; v17.i256 = obj.load v16; - v18.@layout_24 = call %std__lib__evm__effects__encode_abi_payload__ge513_bb73 v17; - v19.objref<@layout_24> = obj.alloc @layout_24; + v18.@layout_23 = call %std__lib__evm__effects__encode_abi_payload__ge513_bb73 v17; + v19.objref<@layout_23> = obj.alloc @layout_23; v20.objref = obj.proj v19 0.i256; v21.i256 = extract_value v18 0.i256; obj.store v20 v21; @@ -3800,9 +3700,9 @@ func private %impl_trait_ApprovalEvent__emit__gcd5c(v0.@layout_22, v1.objref<@la return; } -func private %impl_trait_TransferEvent__emit__gcd5c(v0.@layout_23, v1.objref<@layout_2>) { +func private %impl_trait_TransferEvent__emit__gcd5c(v0.@layout_22, v1.objref<@layout_2>) { block0: - v2.objref<@layout_23> = obj.alloc @layout_23; + v2.objref<@layout_22> = obj.alloc @layout_22; v4.objref<@layout_0> = obj.proj v2 0.i256; v5.@layout_0 = extract_value v0 0.i256; v6.objref = obj.proj v4 0.i256; @@ -3821,8 +3721,8 @@ func private %impl_trait_TransferEvent__emit__gcd5c(v0.@layout_23, v1.objref<@la block1: v16.objref = obj.proj v2 2.i256; v17.i256 = obj.load v16; - v18.@layout_24 = call %std__lib__evm__effects__encode_abi_payload__ge513_5dc2 v17; - v19.objref<@layout_24> = obj.alloc @layout_24; + v18.@layout_23 = call %std__lib__evm__effects__encode_abi_payload__ge513_5dc2 v17; + v19.objref<@layout_23> = obj.alloc @layout_23; v20.objref = obj.proj v19 0.i256; v21.i256 = extract_value v18 0.i256; obj.store v20 v21; @@ -3845,7 +3745,7 @@ func private %impl_trait_TransferEvent__emit__gcd5c(v0.@layout_23, v1.objref<@la return; } -func private %emit__g9cd0(v0.objref<@layout_2>, v1.@layout_22) { +func private %emit__g9cd0(v0.objref<@layout_2>, v1.@layout_21) { block0: jump block1; @@ -3854,7 +3754,7 @@ func private %emit__g9cd0(v0.objref<@layout_2>, v1.@layout_22) { return; } -func private %emit__g4c3d(v0.objref<@layout_2>, v1.@layout_23) { +func private %emit__g4c3d(v0.objref<@layout_2>, v1.@layout_22) { block0: jump block1; @@ -3956,15 +3856,6 @@ func private %core__lib__abi__impl_trait_u256_d99e__encode__g426c_2015(v0.i256, return; } -func private %core__lib__abi__impl_trait_u256_d99e__encode__g426c_2910(v0.i256, v1.objref<@layout_4>) { - block0: - jump block1; - - block1: - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8eda v1 v0; - return; -} - func private %encode__g3cd9(v0.i256, v1.objref<@layout_4>) { block0: jump block1; @@ -4021,48 +3912,48 @@ func private %encode__gbe21(v0.i256, v1.objref<@layout_4>) { return; } -func private %std__lib__evm__effects__encode_abi_payload__geb2e_59d4(v0.@layout_3) -> @layout_24 { +func private %std__lib__evm__effects__encode_abi_payload__geb2e_59d4(v0.@layout_3) -> @layout_23 { block0: jump block1; block1: - v2.@layout_24 = call %core__lib__abi__encode_alloc__g994a_d25b v0; + v2.@layout_23 = call %core__lib__abi__encode_alloc__g994a_d25b v0; return v2; } -func private %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_0(v0.@layout_3) -> @layout_24 { +func private %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_0(v0.@layout_3) -> @layout_23 { block0: jump block1; block1: - v2.@layout_24 = call %core__lib__abi__encode_alloc__g994a_d25b_0 v0; + v2.@layout_23 = call %core__lib__abi__encode_alloc__g994a_d25b_0 v0; return v2; } -func private %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_1(v0.@layout_3) -> @layout_24 { +func private %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_1(v0.@layout_3) -> @layout_23 { block0: jump block1; block1: - v2.@layout_24 = call %core__lib__abi__encode_alloc__g994a_d25b_1 v0; + v2.@layout_23 = call %core__lib__abi__encode_alloc__g994a_d25b_1 v0; return v2; } -func private %std__lib__evm__effects__encode_abi_payload__ge513_5dc2(v0.i256) -> @layout_24 { +func private %std__lib__evm__effects__encode_abi_payload__ge513_5dc2(v0.i256) -> @layout_23 { block0: jump block1; block1: - v2.@layout_24 = call %core__lib__abi__encode_alloc__gac80_c438 v0; + v2.@layout_23 = call %core__lib__abi__encode_alloc__gac80_c438 v0; return v2; } -func private %std__lib__evm__effects__encode_abi_payload__ge513_bb73(v0.i256) -> @layout_24 { +func private %std__lib__evm__effects__encode_abi_payload__ge513_bb73(v0.i256) -> @layout_23 { block0: jump block1; block1: - v2.@layout_24 = call %core__lib__abi__encode_alloc__gac80_492c v0; + v2.@layout_23 = call %core__lib__abi__encode_alloc__gac80_492c v0; return v2; } @@ -4076,7 +3967,7 @@ func private %impl_trait_u8__encode__g426c(v0.i8, v1.objref<@layout_4>) { return; } -func private %core__lib__abi__encode_alloc__gac80_492c(v0.i256) -> @layout_24 { +func private %core__lib__abi__encode_alloc__gac80_492c(v0.i256) -> @layout_23 { block0: jump block1; @@ -4092,16 +3983,16 @@ func private %core__lib__abi__encode_alloc__gac80_492c(v0.i256) -> @layout_24 { obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_dd69 v4; call %core__lib__abi__impl_trait_u256_d99e__encode__g426c_2015 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %core__lib__abi__encode_alloc__gac80_c438(v0.i256) -> @layout_24 { +func private %core__lib__abi__encode_alloc__gac80_c438(v0.i256) -> @layout_23 { block0: jump block1; @@ -4117,16 +4008,16 @@ func private %core__lib__abi__encode_alloc__gac80_c438(v0.i256) -> @layout_24 { obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_009f v4; call %core__lib__abi__impl_trait_u256_d99e__encode__g426c_c169 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %core__lib__abi__encode_alloc__g994a_d25b(v0.@layout_3) -> @layout_24 { +func private %core__lib__abi__encode_alloc__g994a_d25b(v0.@layout_3) -> @layout_23 { block0: jump block1; @@ -4142,16 +4033,16 @@ func private %core__lib__abi__encode_alloc__g994a_d25b(v0.@layout_3) -> @layout_ obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4 v4; call %std__lib__evm__panic__impl_trait_Panic_2bdd__encode__g9c6f_02eb v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %core__lib__abi__encode_alloc__g994a_d25b_0(v0.@layout_3) -> @layout_24 { +func private %core__lib__abi__encode_alloc__g994a_d25b_0(v0.@layout_3) -> @layout_23 { block0: jump block1; @@ -4167,16 +4058,16 @@ func private %core__lib__abi__encode_alloc__g994a_d25b_0(v0.@layout_3) -> @layou obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_0 v4; call %std__lib__evm__panic__impl_trait_Panic_2bdd__encode__g9c6f_02eb_0 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %core__lib__abi__encode_alloc__g994a_d25b_1(v0.@layout_3) -> @layout_24 { +func private %core__lib__abi__encode_alloc__g994a_d25b_1(v0.@layout_3) -> @layout_23 { block0: jump block1; @@ -4192,12 +4083,12 @@ func private %core__lib__abi__encode_alloc__g994a_d25b_1(v0.@layout_3) -> @layou obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_deb4_1 v4; call %std__lib__evm__panic__impl_trait_Panic_2bdd__encode__g9c6f_02eb_1 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } @@ -4229,7 +4120,7 @@ func private %core__lib__abi__impl_trait_u256_d99e__encode__g426c_c169(v0.i256, return; } -func private %std__lib__evm__effects__encode_calldata__geb2e_13c2(v0.i32, v1.@layout_3) -> @layout_24 { +func private %std__lib__evm__effects__encode_calldata__geb2e_13c2(v0.i32, v1.@layout_3) -> @layout_23 { block0: v2.*i32 = alloca i32; mstore v2 v0 i32; @@ -4239,8 +4130,8 @@ func private %std__lib__evm__effects__encode_calldata__geb2e_13c2(v0.i32, v1.@la v4.i32 = mload v2 i32; v5.i256 = zext v4 i256; v7.i256 = shl 224.i256 v5; - v9.@layout_24 = call %std__lib__evm__effects__encode_abi_payload__geb2e_59d4 v1; - v10.objref<@layout_24> = obj.alloc @layout_24; + v9.@layout_23 = call %std__lib__evm__effects__encode_abi_payload__geb2e_59d4 v1; + v10.objref<@layout_23> = obj.alloc @layout_23; v12.objref = obj.proj v10 0.i256; v13.i256 = extract_value v9 0.i256; obj.store v12 v13; @@ -4276,16 +4167,16 @@ func private %std__lib__evm__effects__encode_calldata__geb2e_13c2(v0.i32, v1.@la br v41 block2 block5; block5: - v42.objref<@layout_24> = obj.alloc @layout_24; + v42.objref<@layout_23> = obj.alloc @layout_23; v44.objref = obj.proj v42 0.i256; obj.store v44 v25; v45.objref = obj.proj v42 1.i256; obj.store v45 v40; - v46.@layout_24 = obj.load v42; + v46.@layout_23 = obj.load v42; return v46; } -func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_0(v0.i32, v1.@layout_3) -> @layout_24 { +func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_0(v0.i32, v1.@layout_3) -> @layout_23 { block0: v2.*i32 = alloca i32; mstore v2 v0 i32; @@ -4295,8 +4186,8 @@ func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_0(v0.i32, v1.@ v4.i32 = mload v2 i32; v5.i256 = zext v4 i256; v7.i256 = shl 224.i256 v5; - v9.@layout_24 = call %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_0 v1; - v10.objref<@layout_24> = obj.alloc @layout_24; + v9.@layout_23 = call %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_0 v1; + v10.objref<@layout_23> = obj.alloc @layout_23; v12.objref = obj.proj v10 0.i256; v13.i256 = extract_value v9 0.i256; obj.store v12 v13; @@ -4332,16 +4223,16 @@ func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_0(v0.i32, v1.@ br v41 block2 block5; block5: - v42.objref<@layout_24> = obj.alloc @layout_24; + v42.objref<@layout_23> = obj.alloc @layout_23; v44.objref = obj.proj v42 0.i256; obj.store v44 v25; v45.objref = obj.proj v42 1.i256; obj.store v45 v40; - v46.@layout_24 = obj.load v42; + v46.@layout_23 = obj.load v42; return v46; } -func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_1(v0.i32, v1.@layout_3) -> @layout_24 { +func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_1(v0.i32, v1.@layout_3) -> @layout_23 { block0: v2.*i32 = alloca i32; mstore v2 v0 i32; @@ -4351,8 +4242,8 @@ func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_1(v0.i32, v1.@ v4.i32 = mload v2 i32; v5.i256 = zext v4 i256; v7.i256 = shl 224.i256 v5; - v9.@layout_24 = call %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_1 v1; - v10.objref<@layout_24> = obj.alloc @layout_24; + v9.@layout_23 = call %std__lib__evm__effects__encode_abi_payload__geb2e_59d4_1 v1; + v10.objref<@layout_23> = obj.alloc @layout_23; v12.objref = obj.proj v10 0.i256; v13.i256 = extract_value v9 0.i256; obj.store v12 v13; @@ -4388,12 +4279,12 @@ func private %std__lib__evm__effects__encode_calldata__geb2e_13c2_1(v0.i32, v1.@ br v41 block2 block5; block5: - v42.objref<@layout_24> = obj.alloc @layout_24; + v42.objref<@layout_23> = obj.alloc @layout_23; v44.objref = obj.proj v42 0.i256; obj.store v44 v25; v45.objref = obj.proj v42 1.i256; obj.store v45 v40; - v46.@layout_24 = obj.load v42; + v46.@layout_23 = obj.load v42; return v46; } @@ -4704,53 +4595,6 @@ func private %encode_field__g859f(v0.i256, v1.objref<@layout_4>, v2.i256) { return; } -func private %core__lib__abi__encode_field__g2e64_555f(v0.i256, v1.objref<@layout_4>, v2.i256) { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v5.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_fd6f v1; - v8.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_77e5 v0; - v9.i256 = mload v2 i256; - v10.i256 = sub v9 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8f67 v1 v10; - v12.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_0de4 v1; - v13.i256 = mload v2 i256; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_fa20 v1 v13; - v15.i256 = mload v2 i256; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_3857 v1 v15; - call %core__lib__abi__impl_trait_u256_d99e__encode__g426c_2910 v0 v1; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_fa20 v1 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_3857 v1 v12; - v20.i256 = mload v2 i256; - v21.i256 = add v20 v8; - mstore v2 v21 i256; - return; - - block3: - jump block4; - - block4: - br 1.i1 block5 block6; - - block5: - v24.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_0de4 v1; - call %core__lib__abi__impl_trait_u256_d99e__encode_to_ptr__gf13e_1b98 v0 v24; - v28.i256 = add v24 32.i256; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_3857 v1 v28; - return; - - block6: - jump block7; - - block7: - call %core__lib__abi__impl_trait_u256_d99e__encode__g426c_2910 v0 v1; - return; -} - func private %encode_field__g6d7e(v0.i256, v1.objref<@layout_4>, v2.i256) { block0: jump block1; @@ -4838,20 +4682,6 @@ func private %encode_single_root__g859f(v0.i256, v1.objref<@layout_4>) { return; } -func private %encode_single_root__g2e64(v0.i256, v1.objref<@layout_4>) { - block0: - v2.*i256 = alloca i256; - jump block1; - - block1: - v4.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_fd6f v1; - v6.i256 = add v4 32.i256; - mstore v2 v6 i256; - v7.i256 = ptr_to_int v2 i256; - call %core__lib__abi__encode_field__g2e64_555f v0 v1 v7; - return; -} - func private %encode_single_root__g6d7e(v0.i256, v1.objref<@layout_4>) { block0: v2.*i256 = alloca i256; @@ -4866,7 +4696,7 @@ func private %encode_single_root__g6d7e(v0.i256, v1.objref<@layout_4>) { return; } -func private %encode_single_root_alloc__g472d(v0.i256) -> @layout_24 { +func private %encode_single_root_alloc__g472d(v0.i256) -> @layout_23 { block0: jump block1; @@ -4882,16 +4712,16 @@ func private %encode_single_root_alloc__g472d(v0.i256) -> @layout_24 { obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_25d4 v4; call %encode_single_root__g859f v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %encode_single_root_alloc__g0c18(v0.i256) -> @layout_24 { +func private %encode_single_root_alloc__g0c18(v0.i256) -> @layout_23 { block0: jump block1; @@ -4907,16 +4737,16 @@ func private %encode_single_root_alloc__g0c18(v0.i256) -> @layout_24 { obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_6030 v4; call %encode_single_root__g6d7e v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %encode_single_root_alloc__gcb0a(v0.i8) -> @layout_24 { +func private %encode_single_root_alloc__gcb0a(v0.i8) -> @layout_23 { block0: jump block1; @@ -4932,41 +4762,16 @@ func private %encode_single_root_alloc__gcb0a(v0.i8) -> @layout_24 { obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_a9a0 v4; call %encode_single_root__g0a88 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; - v14.objref = obj.proj v13 0.i256; - obj.store v14 v11; - v15.objref = obj.proj v13 1.i256; - obj.store v15 v2; - v16.@layout_24 = obj.load v13; - return v16; -} - -func private %encode_single_root_alloc__gac80(v0.i256) -> @layout_24 { - block0: - jump block1; - - block1: - v2.i256 = call %abi_single_root_size__ge513 v0; - v3.@layout_4 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__encoder_new_94e9 v2; - v4.objref<@layout_4> = obj.alloc @layout_4; - v6.objref = obj.proj v4 0.i256; - v7.i256 = extract_value v3 0.i256; - obj.store v6 v7; - v9.objref = obj.proj v4 1.i256; - v10.i256 = extract_value v3 1.i256; - obj.store v9 v10; - v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_fd6f v4; - call %encode_single_root__g2e64 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %encode_single_root_alloc__g09ca(v0.i1) -> @layout_24 { +func private %encode_single_root_alloc__g09ca(v0.i1) -> @layout_23 { block0: jump block1; @@ -4982,27 +4787,15 @@ func private %encode_single_root_alloc__g09ca(v0.i1) -> @layout_24 { obj.store v9 v10; v11.i256 = call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__base_c13e v4; call %encode_single_root__ge927 v0 v4; - v13.objref<@layout_24> = obj.alloc @layout_24; + v13.objref<@layout_23> = obj.alloc @layout_23; v14.objref = obj.proj v13 0.i256; obj.store v14 v11; v15.objref = obj.proj v13 1.i256; obj.store v15 v2; - v16.@layout_24 = obj.load v13; + v16.@layout_23 = obj.load v13; return v16; } -func private %core__lib__abi__impl_trait_u256_d99e__encode_to_ptr__gf13e_1b98(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - call %std__lib__abi__sol__impl_trait_Sol_1f5f__store_word_2361 v3 v0; - return; -} - func private %impl_trait_bool__encode_to_ptr__gf13e(v0.i1, v1.i256) { block0: v2.*i256 = alloca i256; @@ -5167,18 +4960,6 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__encoder_new_8043_1(v0.i25 return v3; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__encoder_new_94e9(v0.i256) -> @layout_4 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.@layout_4 = call %std__lib__abi__sol__impl_SolEncoder_ce34__new_c2ff v2; - return v3; -} - func private %std__lib__abi__sol__impl_trait_Sol_1f5f__encoder_new_9a7a(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; @@ -5226,347 +5007,187 @@ func private %eq(v0.@layout_0, v1.@layout_0) -> i1 { return v7; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_08b4(v0.@layout_6, v1.i256) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_320d(v0.@layout_9, v1.i256) -> @layout_9 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; + v5.@layout_8 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; + v7.objref<@layout_9> = obj.alloc @layout_9; + v8.objref<@layout_8> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_6 = obj.load v7; + v13.@layout_9 = obj.load v7; return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_320d(v0.@layout_6, v1.i256) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_7e69(v0.@layout_9, v1.i256) -> @layout_9 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; + v5.@layout_8 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; + v7.objref<@layout_9> = obj.alloc @layout_9; + v8.objref<@layout_8> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_6 = obj.load v7; + v13.@layout_9 = obj.load v7; return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_3257(v0.@layout_6, v1.i256) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_84e3(v0.@layout_9, v1.i256) -> @layout_9 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; + v5.@layout_8 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; + v7.objref<@layout_9> = obj.alloc @layout_9; + v8.objref<@layout_8> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_6 = obj.load v7; + v13.@layout_9 = obj.load v7; return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_542f(v0.@layout_6, v1.i256) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_baad(v0.@layout_9, v1.i256) -> @layout_9 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; + v5.@layout_8 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; + v7.objref<@layout_9> = obj.alloc @layout_9; + v8.objref<@layout_8> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_6 = obj.load v7; + v13.@layout_9 = obj.load v7; return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_5db0(v0.@layout_6, v1.i256) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_cd99(v0.@layout_9, v1.i256) -> @layout_9 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; + v5.@layout_8 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; + v7.objref<@layout_9> = obj.alloc @layout_9; + v8.objref<@layout_8> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_6 = obj.load v7; + v13.@layout_9 = obj.load v7; return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_64b6(v0.@layout_6, v1.i256) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d620(v0.@layout_9, v1.i256) -> @layout_9 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; + v5.@layout_8 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; + v7.objref<@layout_9> = obj.alloc @layout_9; + v8.objref<@layout_8> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_6 = obj.load v7; + v13.@layout_9 = obj.load v7; return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_7e69(v0.@layout_6, v1.i256) -> @layout_6 { +func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_2f17(v0.i256) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; + v2.i256 = mload v1 i256; + return v2; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_84e3(v0.@layout_6, v1.i256) -> @layout_6 { +func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_4030(v0.i256) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; + v2.i256 = mload v1 i256; + return v2; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_ace8(v0.@layout_6, v1.i256) -> @layout_6 { +func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_4030_0(v0.i256) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; + v2.i256 = mload v1 i256; + return v2; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_baad(v0.@layout_6, v1.i256) -> @layout_6 { +func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_83e7(v0.i256) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; + v2.i256 = mload v1 i256; + return v2; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_cd99(v0.@layout_6, v1.i256) -> @layout_6 { +func private %impl_trait_bool__from_word(v0.i256) -> i1 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; + v2.i256 = mload v1 i256; + v4.i1 = eq v2 0.i256; + v5.i1 = is_zero v4; + return v5; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d4d6(v0.@layout_6, v1.i256) -> @layout_6 { +func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_c764(v0.i256) -> i256 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d620(v0.@layout_6, v1.i256) -> @layout_6 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_f9b8(v0.@layout_6, v1.i256) -> @layout_6 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_5 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_6> = obj.alloc @layout_6; - v8.objref<@layout_5> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_6 = obj.load v7; - return v13; -} - -func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_2f17(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - return v2; -} - -func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_4030(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - return v2; -} - -func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_4030_0(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - return v2; -} - -func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_83e7(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - return v2; -} - -func private %impl_trait_bool__from_word(v0.i256) -> i1 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - v5.i1 = is_zero v4; - return v5; -} - -func private %std__lib__evm__word__impl_trait_u256_1f9e__from_word_c764(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: @@ -5594,7 +5215,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__g return v4; } -func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5(v0.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5(v0.@layout_24) -> i256 { block0: jump block1; @@ -5604,7 +5225,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__g return v4; } -func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5_0(v0.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5_0(v0.@layout_24) -> i256 { block0: jump block1; @@ -5614,7 +5235,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__g return v4; } -func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_cf04(v0.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_cf04(v0.@layout_24) -> i256 { block0: jump block1; @@ -5624,7 +5245,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__g return v4; } -func inline(always) private %get__gc9ba(v0.@layout_18) -> i1 { +func inline(always) private %get__gc9ba(v0.@layout_17) -> i1 { block0: jump block1; @@ -5642,145 +5263,253 @@ func private %grant(v0.i256, v1.i256, v2.@layout_0) { block1: v4.i256 = mload v3 i256; - v6.objref<@layout_18> = obj.alloc @layout_18; + v6.objref<@layout_17> = obj.alloc @layout_17; v8.objref = obj.proj v6 0.i256; obj.store v8 v4; v10.objref<@layout_0> = obj.proj v6 1.i256; v11.objref = obj.proj v10 0.i256; v12.i256 = extract_value v2 0.i256; obj.store v11 v12; - v13.@layout_18 = obj.load v6; + v13.@layout_17 = obj.load v6; call %set__gc9ba v13 1.i1; return; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_015b() -> @layout_5 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_1aa7() -> @layout_8 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_e8bc; + v0.@layout_8 = call %std__lib__evm__calldata__impl_CallData_8f43__new_87cb; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_0e0b() -> @layout_5 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_3f88() -> @layout_8 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_03f9; + v0.@layout_8 = call %std__lib__evm__calldata__impl_CallData_8f43__new_b58c; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_1aa7() -> @layout_5 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_938b() -> @layout_8 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_87cb; + v0.@layout_8 = call %std__lib__evm__calldata__impl_CallData_8f43__new_5ebc; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_1ba1() -> @layout_5 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_b348() -> @layout_8 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_4f1d; + v0.@layout_8 = call %std__lib__evm__calldata__impl_CallData_8f43__new_5a69; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_2d6f() -> @layout_5 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_bf4c() -> @layout_8 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_a382; + v0.@layout_8 = call %std__lib__evm__calldata__impl_CallData_8f43__new_9e29; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_3f88() -> @layout_5 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_fd52() -> @layout_8 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_b58c; + v0.@layout_8 = call %std__lib__evm__calldata__impl_CallData_8f43__new_42ba; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_5a78() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_01a6(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_6b3a; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_7b84() -> @layout_5 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_0a1b(v0.objref<@layout_8>) -> i256 { block0: + v1.*i256 = alloca i256; + v2.*i256 = alloca i256; jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_92f9; - return v0; + v3.i256 = evm_calldata_size; + mstore v1 v3 i256; + v6.objref = obj.proj v0 0.i256; + v7.i256 = obj.load v6; + v8.i256 = mload v1 i256; + mstore v2 v8 i256; + v9.i256 = mload v2 i256; + v10.i1 = gt v7 v9; + br v10 block2 block3; + + block2: + jump block4; + + block3: + v12.objref = obj.proj v0 0.i256; + v13.i256 = obj.load v12; + v14.i256 = mload v1 i256; + (v15.i256, v16.i1) = usubo v14 v13; + br v16 block5 block6; + + block4: + v21.i256 = phi (0.i256 block2) (v15 block6); + return v21; + + block5: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block6: + jump block4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_938b() -> @layout_5 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_16d7(v0.objref<@layout_8>) -> i256 { block0: + v1.*i256 = alloca i256; + v2.*i256 = alloca i256; jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_5ebc; - return v0; + v3.i256 = evm_calldata_size; + mstore v1 v3 i256; + v6.objref = obj.proj v0 0.i256; + v7.i256 = obj.load v6; + v8.i256 = mload v1 i256; + mstore v2 v8 i256; + v9.i256 = mload v2 i256; + v10.i1 = gt v7 v9; + br v10 block2 block3; + + block2: + jump block4; + + block3: + v12.objref = obj.proj v0 0.i256; + v13.i256 = obj.load v12; + v14.i256 = mload v1 i256; + (v15.i256, v16.i1) = usubo v14 v13; + br v16 block5 block6; + + block4: + v21.i256 = phi (0.i256 block2) (v15 block6); + return v21; + + block5: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block6: + jump block4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_b348() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_1c68(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_5a69; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_b9f8() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_2cf4(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_7fee; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_bf4c() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_339b(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_9e29; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_d0c9() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_3448(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_fce4; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_fd52() -> @layout_5 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_39f7(v0.objref<@layout_5>) -> i256 { block0: jump block1; block1: - v0.@layout_5 = call %std__lib__evm__calldata__impl_CallData_8f43__new_42ba; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} + +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_4c6c(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; + + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} + +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5408(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; + + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} + +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5b20(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; + + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} + +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5bc1(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; + + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_01a6(v0.objref<@layout_8>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5c74(v0.objref<@layout_5>) -> i256 { block0: jump block1; @@ -5790,7 +5519,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_01a6 return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_02a3(v0.objref<@layout_5>) -> i256 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_60f7(v0.objref<@layout_8>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -5830,7 +5559,27 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ jump block4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_0859(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_618f(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; + + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} + +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_64c7(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; + + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} + +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_670f(v0.objref<@layout_8>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -5870,887 +5619,17 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ jump block4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_0a1b(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_7290(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_0e32(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_0e90(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_16d7(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_1f84(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_26f0(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_3f86(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_4f08(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_5904(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_60f7(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_66d5(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_66ec(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_670f(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_6b68(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_6d9d(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_75fd(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_874b(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_8a80(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_9245(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_94a3(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_9ee6(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_a887(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96(v0.objref<@layout_8>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_74da(v0.objref<@layout_5>) -> i256 { block0: jump block1; @@ -6760,7 +5639,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96 return v4; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96_0(v0.objref<@layout_8>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_757d(v0.objref<@layout_5>) -> i256 { block0: jump block1; @@ -6770,367 +5649,127 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96 return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c0ed(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c1ca(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c1cd(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c364(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_7c27(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c44b(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_8f09(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c624(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_90ae(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_c8b6(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_ac2f(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_ae76(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block6: - jump block4; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_d849(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96_0(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_c3b4(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e00f(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block6: - jump block4; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_dd5c(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e6eb(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e9de(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f465(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block6: - jump block4; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e00f(v0.objref<@layout_8>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f58f(v0.objref<@layout_5>) -> i256 { block0: jump block1; @@ -7140,44 +5779,34 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e00f return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_e8a2(v0.objref<@layout_5>) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f69d(v0.objref<@layout_5>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f9ea(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; +} - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_fe32(v0.objref<@layout_5>) -> i256 { + block0: + jump block1; - block6: - jump block4; + block1: + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } func private %std__lib__evm__effects__impl_trait_Evm_476c__log3_6dec(v0.objref<@layout_2>, v1.i256, v2.i256, v3.i256, v4.i256, v5.i256) { @@ -7264,7 +5893,7 @@ func private %standalone_erc20__erc20__mint__g5c3f_3fb6(v0.@layout_0, v1.i256, v call %set__g2163 v0 v27; v32.@layout_0 = call %zero; v34.i256 = mload v4 i256; - v35.objref<@layout_23> = obj.alloc @layout_23; + v35.objref<@layout_22> = obj.alloc @layout_22; v36.objref<@layout_0> = obj.proj v35 0.i256; v37.objref = obj.proj v36 0.i256; v38.i256 = extract_value v32 0.i256; @@ -7275,7 +5904,7 @@ func private %standalone_erc20__erc20__mint__g5c3f_3fb6(v0.@layout_0, v1.i256, v obj.store v41 v42; v44.objref = obj.proj v35 2.i256; obj.store v44 v34; - v45.@layout_23 = obj.load v35; + v45.@layout_22 = obj.load v35; call %emit__g4c3d v3 v45; return; } @@ -7303,168 +5932,62 @@ func private %standalone_erc20__erc20__mint__g5c3f_7deb(v0.@layout_0, v1.i256, v block2: mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block3: - evm_sstore v2 v17; - v25.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v0; - v26.i256 = mload v4 i256; - (v27.i256, v28.i1) = uaddo v25 v26; - br v28 block2 block4; - - block4: - call %set__g2163 v0 v27; - v32.@layout_0 = call %zero; - v34.i256 = mload v4 i256; - v35.objref<@layout_23> = obj.alloc @layout_23; - v36.objref<@layout_0> = obj.proj v35 0.i256; - v37.objref = obj.proj v36 0.i256; - v38.i256 = extract_value v32 0.i256; - obj.store v37 v38; - v40.objref<@layout_0> = obj.proj v35 1.i256; - v41.objref = obj.proj v40 0.i256; - v42.i256 = extract_value v0 0.i256; - obj.store v41 v42; - v44.objref = obj.proj v35 2.i256; - obj.store v44 v34; - v45.@layout_23 = obj.load v35; - call %emit__g4c3d v3 v45; - return; -} - -func private %ne(v0.@layout_0, v1.@layout_0) -> i1 { - block0: - jump block1; - - block1: - v4.i1 = call %eq v0 v1; - v5.i1 = is_zero v4; - return v5; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_03f9() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_0a92(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_1301(v0.i256) -> @layout_4 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; + evm_revert 0.i256 36.i256; block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; + evm_sstore v2 v17; + v25.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v0; + v26.i256 = mload v4 i256; + (v27.i256, v28.i1) = uaddo v25 v26; + br v28 block2 block4; block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_4> = obj.alloc @layout_4; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_4 = obj.load v9; - return v13; + call %set__g2163 v0 v27; + v32.@layout_0 = call %zero; + v34.i256 = mload v4 i256; + v35.objref<@layout_22> = obj.alloc @layout_22; + v36.objref<@layout_0> = obj.proj v35 0.i256; + v37.objref = obj.proj v36 0.i256; + v38.i256 = extract_value v32 0.i256; + obj.store v37 v38; + v40.objref<@layout_0> = obj.proj v35 1.i256; + v41.objref = obj.proj v40 0.i256; + v42.i256 = extract_value v0 0.i256; + obj.store v41 v42; + v44.objref = obj.proj v35 2.i256; + obj.store v44 v34; + v45.@layout_22 = obj.load v35; + call %emit__g4c3d v3 v45; + return; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_200e(v0.@layout_5) -> @layout_6 { +func private %ne(v0.@layout_0, v1.@layout_0) -> i1 { block0: jump block1; block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; + v4.i1 = call %eq v0 v1; + v5.i1 = is_zero v4; + return v5; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_232c(v0.@layout_5) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_0a92(v0.@layout_8) -> @layout_9 { block0: jump block1; block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; + v2.objref<@layout_9> = obj.alloc @layout_9; + v4.objref<@layout_8> = obj.proj v2 0.i256; v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; v8.objref = obj.proj v2 1.i256; obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; + v9.@layout_9 = obj.load v2; return v9; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462(v0.i256) -> @layout_4 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_4> = obj.alloc @layout_4; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_4 = obj.load v9; - return v13; -} - -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462_0(v0.i256) -> @layout_4 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_1301(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -7495,38 +6018,23 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462_0(v0.i256) -> @ return v13; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462_1(v0.i256) -> @layout_4 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_232c(v0.@layout_8) -> @layout_9 { block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; jump block1; block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_4> = obj.alloc @layout_4; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_4 = obj.load v9; - return v13; + v2.objref<@layout_9> = obj.alloc @layout_9; + v4.objref<@layout_8> = obj.proj v2 0.i256; + v5.objref = obj.proj v4 0.i256; + v6.i256 = extract_value v0 0.i256; + obj.store v5 v6; + v8.objref = obj.proj v2 1.i256; + obj.store v8 0.i256; + v9.@layout_9 = obj.load v2; + return v9; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_24a6(v0.i256) -> @layout_4 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -7553,188 +6061,11 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_24a6(v0.i256) -> @la obj.store v10 v8; v12.objref = obj.proj v9 1.i256; obj.store v12 v8; - v13.@layout_4 = obj.load v9; - return v13; -} - -func inline(always) private %impl_SolDecoder__new__g463e(v0.@layout_8) -> @layout_10 { - block0: - jump block1; - - block1: - v2.@layout_9 = call %impl_Cursor__new__g463e v0; - v4.objref<@layout_10> = obj.alloc @layout_10; - v5.objref<@layout_9> = obj.proj v4 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = extract_value v2 0.i256; - v8.objref = obj.proj v6 0.i256; - v9.i256 = extract_value v7 0.i256; - obj.store v8 v9; - v11.objref = obj.proj v6 1.i256; - v12.i256 = extract_value v7 1.i256; - obj.store v11 v12; - v13.objref = obj.proj v5 1.i256; - v14.i256 = extract_value v2 1.i256; - obj.store v13 v14; - v15.objref = obj.proj v4 1.i256; - obj.store v15 0.i256; - v16.@layout_10 = obj.load v4; - return v16; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_2e66(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_3ec1(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_4240(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_42ba() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_4eb9(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_4f1d() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_5a69() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_5ebc() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_6b3a() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_6e18(v0.@layout_5) -> @layout_6 { - block0: - jump block1; - - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_7fee() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; + v13.@layout_4 = obj.load v9; + return v13; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_8670(v0.i256) -> @layout_4 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462_0(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -7765,47 +6096,38 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_8670(v0.i256) -> @la return v13; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_87cb() -> @layout_5 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_2462_1(v0.i256) -> @layout_4 { block0: + v1.*i256 = alloca i256; + mstore v1 v0 i256; jump block1; block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_8b54(v0.@layout_5) -> @layout_6 { - block0: - jump block1; + v2.i256 = mload v1 i256; + v4.i1 = eq v2 0.i256; + br v4 block2 block3; - block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; -} + block2: + jump block4; -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_92f9() -> @layout_5 { - block0: - jump block1; + block3: + v5.i256 = mload v1 i256; + v6.*i8 = evm_malloc v5; + v7.i256 = ptr_to_int v6 i256; + jump block4; - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; + block4: + v8.i256 = phi (0.i256 block2) (v7 block3); + v9.objref<@layout_4> = obj.alloc @layout_4; + v10.objref = obj.proj v9 0.i256; + obj.store v10 v8; + v12.objref = obj.proj v9 1.i256; + obj.store v12 v8; + v13.@layout_4 = obj.load v9; + return v13; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_978f(v0.i256) -> @layout_4 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_24a6(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -7836,31 +6158,44 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_978f(v0.i256) -> @la return v13; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_9e29() -> @layout_5 { +func inline(always) private %impl_SolDecoder__new__g463e(v0.@layout_5) -> @layout_7 { block0: jump block1; block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; + v2.@layout_6 = call %impl_Cursor__new__g463e v0; + v4.objref<@layout_7> = obj.alloc @layout_7; + v5.objref<@layout_6> = obj.proj v4 0.i256; + v6.objref<@layout_5> = obj.proj v5 0.i256; + v7.@layout_5 = extract_value v2 0.i256; + v8.objref = obj.proj v6 0.i256; + v9.i256 = extract_value v7 0.i256; + obj.store v8 v9; + v11.objref = obj.proj v6 1.i256; + v12.i256 = extract_value v7 1.i256; + obj.store v11 v12; + v13.objref = obj.proj v5 1.i256; + v14.i256 = extract_value v2 1.i256; + obj.store v13 v14; + v15.objref = obj.proj v4 1.i256; + obj.store v15 0.i256; + v16.@layout_7 = obj.load v4; + return v16; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_a382() -> @layout_5 { +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_42ba() -> @layout_8 { block0: jump block1; block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; + v1.constref<@layout_8> = const.ref $const_region_0; + v2.objref<@layout_8> = obj.alloc @layout_8; obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; + v3.@layout_8 = obj.load v2; return v3; } -func inline(always) private %impl_Cursor__new__g463e(v0.@layout_8) -> @layout_9 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_4eb9(v0.@layout_8) -> @layout_9 { block0: jump block1; @@ -7870,28 +6205,37 @@ func inline(always) private %impl_Cursor__new__g463e(v0.@layout_8) -> @layout_9 v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; - v8.objref = obj.proj v4 1.i256; - v9.i256 = extract_value v0 1.i256; - obj.store v8 v9; - v10.objref = obj.proj v2 1.i256; - obj.store v10 0.i256; - v11.@layout_9 = obj.load v2; - return v11; + v8.objref = obj.proj v2 1.i256; + obj.store v8 0.i256; + v9.@layout_9 = obj.load v2; + return v9; +} + +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_5a69() -> @layout_8 { + block0: + jump block1; + + block1: + v1.constref<@layout_8> = const.ref $const_region_0; + v2.objref<@layout_8> = obj.alloc @layout_8; + obj.init.const v2 v1; + v3.@layout_8 = obj.load v2; + return v3; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_b58c() -> @layout_5 { +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_5ebc() -> @layout_8 { block0: jump block1; block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; + v1.constref<@layout_8> = const.ref $const_region_0; + v2.objref<@layout_8> = obj.alloc @layout_8; obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; + v3.@layout_8 = obj.load v2; return v3; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_c2ff(v0.i256) -> @layout_4 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_8670(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -7922,23 +6266,19 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_c2ff(v0.i256) -> @la return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_c3a0(v0.@layout_5) -> @layout_6 { +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_87cb() -> @layout_8 { block0: jump block1; block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; + v1.constref<@layout_8> = const.ref $const_region_0; + v2.objref<@layout_8> = obj.alloc @layout_8; + obj.init.const v2 v1; + v3.@layout_8 = obj.load v2; + return v3; } -func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_c575(v0.i256) -> @layout_4 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_978f(v0.i256) -> @layout_4 { block0: v1.*i256 = alloca i256; mstore v1 v0 i256; @@ -7969,23 +6309,19 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_c575(v0.i256) -> @la return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_cb66(v0.@layout_5) -> @layout_6 { +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_9e29() -> @layout_8 { block0: jump block1; block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; + v1.constref<@layout_8> = const.ref $const_region_0; + v2.objref<@layout_8> = obj.alloc @layout_8; + obj.init.const v2 v1; + v3.@layout_8 = obj.load v2; + return v3; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_cc0f(v0.@layout_5) -> @layout_6 { +func inline(always) private %impl_Cursor__new__g463e(v0.@layout_5) -> @layout_6 { block0: jump block1; @@ -7995,53 +6331,103 @@ func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_cc0f(v v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; - return v9; + v8.objref = obj.proj v4 1.i256; + v9.i256 = extract_value v0 1.i256; + obj.store v8 v9; + v10.objref = obj.proj v2 1.i256; + obj.store v10 0.i256; + v11.@layout_6 = obj.load v2; + return v11; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_d550(v0.@layout_5) -> @layout_6 { +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_b58c() -> @layout_8 { block0: jump block1; block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; + v1.constref<@layout_8> = const.ref $const_region_0; + v2.objref<@layout_8> = obj.alloc @layout_8; + obj.init.const v2 v1; + v3.@layout_8 = obj.load v2; + return v3; +} + +func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_c3a0(v0.@layout_8) -> @layout_9 { + block0: + jump block1; + + block1: + v2.objref<@layout_9> = obj.alloc @layout_9; + v4.objref<@layout_8> = obj.proj v2 0.i256; v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; v8.objref = obj.proj v2 1.i256; obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; + v9.@layout_9 = obj.load v2; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_e8bc() -> @layout_5 { +func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_c575(v0.i256) -> @layout_4 { + block0: + v1.*i256 = alloca i256; + mstore v1 v0 i256; + jump block1; + + block1: + v2.i256 = mload v1 i256; + v4.i1 = eq v2 0.i256; + br v4 block2 block3; + + block2: + jump block4; + + block3: + v5.i256 = mload v1 i256; + v6.*i8 = evm_malloc v5; + v7.i256 = ptr_to_int v6 i256; + jump block4; + + block4: + v8.i256 = phi (0.i256 block2) (v7 block3); + v9.objref<@layout_4> = obj.alloc @layout_4; + v10.objref = obj.proj v9 0.i256; + obj.store v10 v8; + v12.objref = obj.proj v9 1.i256; + obj.store v12 v8; + v13.@layout_4 = obj.load v9; + return v13; +} + +func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_d550(v0.@layout_8) -> @layout_9 { block0: jump block1; block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; + v2.objref<@layout_9> = obj.alloc @layout_9; + v4.objref<@layout_8> = obj.proj v2 0.i256; + v5.objref = obj.proj v4 0.i256; + v6.i256 = extract_value v0 0.i256; + obj.store v5 v6; + v8.objref = obj.proj v2 1.i256; + obj.store v8 0.i256; + v9.@layout_9 = obj.load v2; + return v9; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_edc0(v0.@layout_5) -> @layout_6 { +func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_edc0(v0.@layout_8) -> @layout_9 { block0: jump block1; block1: - v2.objref<@layout_6> = obj.alloc @layout_6; - v4.objref<@layout_5> = obj.proj v2 0.i256; + v2.objref<@layout_9> = obj.alloc @layout_9; + v4.objref<@layout_8> = obj.proj v2 0.i256; v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; v8.objref = obj.proj v2 1.i256; obj.store v8 0.i256; - v9.@layout_6 = obj.load v2; + v9.@layout_9 = obj.load v2; return v9; } @@ -8076,18 +6462,6 @@ func private %std__lib__abi__sol__impl_SolEncoder_ce34__new_f042(v0.i256) -> @la return v13; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_fce4() -> @layout_5 { - block0: - jump block1; - - block1: - v1.constref<@layout_5> = const.ref $const_region_0; - v2.objref<@layout_5> = obj.alloc @layout_5; - obj.init.const v2 v1; - v3.@layout_5 = obj.load v2; - return v3; -} - func private %core__lib__abi__packed_string_len_225d(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; @@ -8380,26 +6754,6 @@ func private %core__lib__abi__trait_AbiSize__payload_size__ge513_3812_1(v0.i256) return 32.i256; } -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_77e5(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_77e5_0(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - func private %core__lib__abi__impl_trait_String_c06e__payload_size__gc7cf_9b7d(v0.i256) -> i256 { block0: v1.*i256 = alloca i256; @@ -8629,61 +6983,7 @@ func private %core__lib__abi__trait_AbiSize__payload_size__g79ff_f3e8_0(v0.i8) - return 32.i256; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_03cc(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_0de4(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_1b8b(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_1f03(v0.objref<@layout_7>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c(v0.objref<@layout_10>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_9> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c_0(v0.objref<@layout_10>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_1b8b(v0.objref<@layout_10>) -> i256 { block0: jump block1; @@ -8694,7 +6994,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c_0( return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_2469(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8705,7 +7005,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_2469(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_2476(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_1f4c_0(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8736,17 +7036,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_2f14_0(v0.objr return v4; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_2f14_1(v0.objref<@layout_4>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_324d(v0.objref<@layout_4>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_2f14_1(v0.objref<@layout_4>) -> i256 { block0: jump block1; @@ -8756,18 +7046,17 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_324d(v0.objref return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_359e(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_324d(v0.objref<@layout_4>) -> i256 { block0: jump block1; block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_389a(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_49de(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8778,7 +7067,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_389a(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_5f56(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_6c2f(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8799,7 +7088,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_6cac(v0.objref return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_732d(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_6cfa(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8810,7 +7099,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_732d(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_7902(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_7119(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8821,7 +7110,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_7902(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_79bd(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_7b2b(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8842,7 +7131,29 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_7b90(v0.objref return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c0cb(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_8aa3(v0.objref<@layout_7>) -> i256 { + block0: + jump block1; + + block1: + v3.objref<@layout_6> = obj.proj v0 0.i256; + v5.objref = obj.proj v3 1.i256; + v6.i256 = obj.load v5; + return v6; +} + +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_99ae(v0.objref<@layout_7>) -> i256 { + block0: + jump block1; + + block1: + v3.objref<@layout_6> = obj.proj v0 0.i256; + v5.objref = obj.proj v3 1.i256; + v6.i256 = obj.load v5; + return v6; +} + +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_a50d(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8853,7 +7164,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c0cb(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c11d(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_c459(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8864,7 +7175,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_c11d(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_d52d(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_c508(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8885,18 +7196,18 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__pos_d8ed(v0.objref return v4; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_e2e4(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_e2e4(v0.objref<@layout_10>) -> i256 { block0: jump block1; block1: - v3.objref<@layout_6> = obj.proj v0 0.i256; + v3.objref<@layout_9> = obj.proj v0 0.i256; v5.objref = obj.proj v3 1.i256; v6.i256 = obj.load v5; return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_e9e7(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_e333(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8907,7 +7218,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_e9e7(v0 return v6; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_f79e(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_eba7(v0.objref<@layout_7>) -> i256 { block0: jump block1; @@ -8918,68 +7229,29 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g8f43_f79e(v0 return v6; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_0022(v0.objref<@layout_7>) -> i256 { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_f05c(v0.objref<@layout_7>) -> i256 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v5.objref<@layout_6> = obj.proj v0 0.i256; - v6.objref<@layout_5> = obj.proj v5 0.i256; - v7.@layout_5 = obj.load v6; - v8.objref<@layout_6> = obj.proj v0 0.i256; - v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_dd5c v9; - mstore v1 v10 i256; - v11.objref<@layout_6> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_6> = obj.proj v0 0.i256; - v29.objref<@layout_5> = obj.proj v28 0.i256; - v30.@layout_5 = obj.load v29; - v31.objref<@layout_6> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_6> = obj.proj v0 0.i256; - v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_59f2 v35 v33; - v38.objref<@layout_6> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; + v3.objref<@layout_6> = obj.proj v0 0.i256; + v5.objref = obj.proj v3 1.i256; + v6.i256 = obj.load v5; + return v6; +} - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__pos__g463e_f998(v0.objref<@layout_7>) -> i256 { + block0: + jump block1; - block7: - v23.objref<@layout_6> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; + block1: + v3.objref<@layout_6> = obj.proj v0 0.i256; + v5.objref = obj.proj v3 1.i256; + v6.i256 = obj.load v5; + return v6; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_01ce(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_09f7(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -8991,7 +7263,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_5904 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f69d v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9014,7 +7286,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_3f26 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_1ad0 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9040,7 +7312,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_0aaa(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_0d5e(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9052,7 +7324,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_0859 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_8f09 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9075,7 +7347,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_dbd0 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_eac5 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9101,7 +7373,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_0c51(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_1898(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9113,7 +7385,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_6b68 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_7c27 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9136,7 +7408,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7244 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_940b v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9162,7 +7434,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2ad2(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_2418(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9174,7 +7446,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_16d7 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_618f v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9197,7 +7469,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7f0e v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ded1 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9223,7 +7495,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2f5f(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_2677(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9235,7 +7507,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_9245 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_2cf4 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9258,7 +7530,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_0de0 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_dec0 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9284,21 +7556,21 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3b91(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2ad2(v0.objref<@layout_10>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; jump block1; block1: - v5.objref<@layout_6> = obj.proj v0 0.i256; - v6.objref<@layout_5> = obj.proj v5 0.i256; - v7.@layout_5 = obj.load v6; - v8.objref<@layout_6> = obj.proj v0 0.i256; - v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_0e90 v9; + v5.objref<@layout_9> = obj.proj v0 0.i256; + v6.objref<@layout_8> = obj.proj v5 0.i256; + v7.@layout_8 = obj.load v6; + v8.objref<@layout_9> = obj.proj v0 0.i256; + v9.objref<@layout_8> = obj.proj v8 0.i256; + v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_16d7 v9; mstore v1 v10 i256; - v11.objref<@layout_6> = obj.proj v0 0.i256; + v11.objref<@layout_9> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; v14.i256 = obj.load v13; (v16.i256, v17.i1) = uaddo v14 32.i256; @@ -9311,16 +7583,16 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea jump block4; block4: - v28.objref<@layout_6> = obj.proj v0 0.i256; - v29.objref<@layout_5> = obj.proj v28 0.i256; - v30.@layout_5 = obj.load v29; - v31.objref<@layout_6> = obj.proj v0 0.i256; + v28.objref<@layout_9> = obj.proj v0 0.i256; + v29.objref<@layout_8> = obj.proj v28 0.i256; + v30.@layout_8 = obj.load v29; + v31.objref<@layout_9> = obj.proj v0 0.i256; v32.objref = obj.proj v31 1.i256; v33.i256 = obj.load v32; - v34.objref<@layout_6> = obj.proj v0 0.i256; - v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_d5b3 v35 v33; - v38.objref<@layout_6> = obj.proj v0 0.i256; + v34.objref<@layout_9> = obj.proj v0 0.i256; + v35.objref<@layout_8> = obj.proj v34 0.i256; + v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7f0e v35 v33; + v38.objref<@layout_9> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; return v36; @@ -9338,14 +7610,14 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea evm_revert 0.i256 36.i256; block7: - v23.objref<@layout_6> = obj.proj v0 0.i256; + v23.objref<@layout_9> = obj.proj v0 0.i256; v24.objref = obj.proj v23 1.i256; v25.i256 = obj.load v24; v26.i1 = lt v16 v25; br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3df5(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_2ec5(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9357,7 +7629,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_0a1b v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_fe32 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9380,7 +7652,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_e224 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_caf9 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9406,7 +7678,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3e00(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_3bfe(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9418,7 +7690,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_a887 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_90ae v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9441,7 +7713,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_60f2 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_90f6 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9467,7 +7739,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_44f9(v0.objref<@layout_10>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_3df5(v0.objref<@layout_10>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9479,7 +7751,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_8 = obj.load v6; v8.objref<@layout_9> = obj.proj v0 0.i256; v9.objref<@layout_8> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e00f v9; + v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_0a1b v9; mstore v1 v10 i256; v11.objref<@layout_9> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9502,7 +7774,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_9> = obj.proj v0 0.i256; v35.objref<@layout_8> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c66d v35 v33; + v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_e224 v35 v33; v38.objref<@layout_9> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9528,7 +7800,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_5416(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_44f9(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9540,7 +7812,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_3f86 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e00f v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9563,7 +7835,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_dc0f v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c66d v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9589,7 +7861,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_648f(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_50b8(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9601,7 +7873,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_02a3 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f465 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9624,7 +7896,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7f8f v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_b213 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9650,7 +7922,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_68c5(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_51c6(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9662,7 +7934,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_d849 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_339b v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9685,7 +7957,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_c2fe v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_f6b3 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9711,7 +7983,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_6bd8(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_6776(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9723,7 +7995,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c1ca v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f9ea v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9746,7 +8018,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_013b v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_b7c5 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9772,7 +8044,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_7998(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_697f(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9784,7 +8056,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_94a3 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5b20 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9807,7 +8079,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_4e61 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_a4e4 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9833,7 +8105,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_80b7(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_7304(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9845,7 +8117,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_8a80 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_ac2f v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9868,7 +8140,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_0fd5 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_94b4 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -9894,68 +8166,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_83b2(v0.objref<@layout_10>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_9> = obj.proj v0 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = obj.load v6; - v8.objref<@layout_9> = obj.proj v0 0.i256; - v9.objref<@layout_8> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_01a6 v9; - mstore v1 v10 i256; - v11.objref<@layout_9> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_9> = obj.proj v0 0.i256; - v29.objref<@layout_8> = obj.proj v28 0.i256; - v30.@layout_8 = obj.load v29; - v31.objref<@layout_9> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_9> = obj.proj v0 0.i256; - v35.objref<@layout_8> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_3a7f v35 v33; - v38.objref<@layout_9> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_9> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_8451(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_75ad(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -9967,7 +8178,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_670f v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_74da v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -9990,7 +8201,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_9376 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_05ff v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10016,21 +8227,21 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8be4(v0.objref<@layout_10>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_7676(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; jump block1; block1: - v5.objref<@layout_9> = obj.proj v0 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = obj.load v6; - v8.objref<@layout_9> = obj.proj v0 0.i256; - v9.objref<@layout_8> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96 v9; + v5.objref<@layout_6> = obj.proj v0 0.i256; + v6.objref<@layout_5> = obj.proj v5 0.i256; + v7.@layout_5 = obj.load v6; + v8.objref<@layout_6> = obj.proj v0 0.i256; + v9.objref<@layout_5> = obj.proj v8 0.i256; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_f58f v9; mstore v1 v10 i256; - v11.objref<@layout_9> = obj.proj v0 0.i256; + v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; v14.i256 = obj.load v13; (v16.i256, v17.i1) = uaddo v14 32.i256; @@ -10043,16 +8254,16 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea jump block4; block4: - v28.objref<@layout_9> = obj.proj v0 0.i256; - v29.objref<@layout_8> = obj.proj v28 0.i256; - v30.@layout_8 = obj.load v29; - v31.objref<@layout_9> = obj.proj v0 0.i256; + v28.objref<@layout_6> = obj.proj v0 0.i256; + v29.objref<@layout_5> = obj.proj v28 0.i256; + v30.@layout_5 = obj.load v29; + v31.objref<@layout_6> = obj.proj v0 0.i256; v32.objref = obj.proj v31 1.i256; v33.i256 = obj.load v32; - v34.objref<@layout_9> = obj.proj v0 0.i256; - v35.objref<@layout_8> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1 v35 v33; - v38.objref<@layout_9> = obj.proj v0 0.i256; + v34.objref<@layout_6> = obj.proj v0 0.i256; + v35.objref<@layout_5> = obj.proj v34 0.i256; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c28b v35 v33; + v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; return v36; @@ -10070,28 +8281,28 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea evm_revert 0.i256 36.i256; block7: - v23.objref<@layout_9> = obj.proj v0 0.i256; + v23.objref<@layout_6> = obj.proj v0 0.i256; v24.objref = obj.proj v23 1.i256; v25.i256 = obj.load v24; v26.i1 = lt v16 v25; br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8be4_0(v0.objref<@layout_10>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_83b2(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; jump block1; block1: - v5.objref<@layout_9> = obj.proj v0 0.i256; - v6.objref<@layout_8> = obj.proj v5 0.i256; - v7.@layout_8 = obj.load v6; - v8.objref<@layout_9> = obj.proj v0 0.i256; - v9.objref<@layout_8> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96_0 v9; + v5.objref<@layout_6> = obj.proj v0 0.i256; + v6.objref<@layout_5> = obj.proj v5 0.i256; + v7.@layout_5 = obj.load v6; + v8.objref<@layout_6> = obj.proj v0 0.i256; + v9.objref<@layout_5> = obj.proj v8 0.i256; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_01a6 v9; mstore v1 v10 i256; - v11.objref<@layout_9> = obj.proj v0 0.i256; + v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; v14.i256 = obj.load v13; (v16.i256, v17.i1) = uaddo v14 32.i256; @@ -10104,16 +8315,16 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea jump block4; block4: - v28.objref<@layout_9> = obj.proj v0 0.i256; - v29.objref<@layout_8> = obj.proj v28 0.i256; - v30.@layout_8 = obj.load v29; - v31.objref<@layout_9> = obj.proj v0 0.i256; + v28.objref<@layout_6> = obj.proj v0 0.i256; + v29.objref<@layout_5> = obj.proj v28 0.i256; + v30.@layout_5 = obj.load v29; + v31.objref<@layout_6> = obj.proj v0 0.i256; v32.objref = obj.proj v31 1.i256; v33.i256 = obj.load v32; - v34.objref<@layout_9> = obj.proj v0 0.i256; - v35.objref<@layout_8> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1_0 v35 v33; - v38.objref<@layout_9> = obj.proj v0 0.i256; + v34.objref<@layout_6> = obj.proj v0 0.i256; + v35.objref<@layout_5> = obj.proj v34 0.i256; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_3a7f v35 v33; + v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; return v36; @@ -10131,28 +8342,28 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea evm_revert 0.i256 36.i256; block7: - v23.objref<@layout_9> = obj.proj v0 0.i256; + v23.objref<@layout_6> = obj.proj v0 0.i256; v24.objref = obj.proj v23 1.i256; v25.i256 = obj.load v24; v26.i1 = lt v16 v25; br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_8f7a(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_8451(v0.objref<@layout_10>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; jump block1; block1: - v5.objref<@layout_6> = obj.proj v0 0.i256; - v6.objref<@layout_5> = obj.proj v5 0.i256; - v7.@layout_5 = obj.load v6; - v8.objref<@layout_6> = obj.proj v0 0.i256; - v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c364 v9; + v5.objref<@layout_9> = obj.proj v0 0.i256; + v6.objref<@layout_8> = obj.proj v5 0.i256; + v7.@layout_8 = obj.load v6; + v8.objref<@layout_9> = obj.proj v0 0.i256; + v9.objref<@layout_8> = obj.proj v8 0.i256; + v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_670f v9; mstore v1 v10 i256; - v11.objref<@layout_6> = obj.proj v0 0.i256; + v11.objref<@layout_9> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; v14.i256 = obj.load v13; (v16.i256, v17.i1) = uaddo v14 32.i256; @@ -10165,16 +8376,16 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea jump block4; block4: - v28.objref<@layout_6> = obj.proj v0 0.i256; - v29.objref<@layout_5> = obj.proj v28 0.i256; - v30.@layout_5 = obj.load v29; - v31.objref<@layout_6> = obj.proj v0 0.i256; + v28.objref<@layout_9> = obj.proj v0 0.i256; + v29.objref<@layout_8> = obj.proj v28 0.i256; + v30.@layout_8 = obj.load v29; + v31.objref<@layout_9> = obj.proj v0 0.i256; v32.objref = obj.proj v31 1.i256; v33.i256 = obj.load v32; - v34.objref<@layout_6> = obj.proj v0 0.i256; - v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_321e v35 v33; - v38.objref<@layout_6> = obj.proj v0 0.i256; + v34.objref<@layout_9> = obj.proj v0 0.i256; + v35.objref<@layout_8> = obj.proj v34 0.i256; + v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_9376 v35 v33; + v38.objref<@layout_9> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; return v36; @@ -10192,14 +8403,14 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea evm_revert 0.i256 36.i256; block7: - v23.objref<@layout_6> = obj.proj v0 0.i256; + v23.objref<@layout_9> = obj.proj v0 0.i256; v24.objref = obj.proj v23 1.i256; v25.i256 = obj.load v24; v26.i1 = lt v16 v25; br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_90ee(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_87d4(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10211,7 +8422,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c8b6 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_757d v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10234,7 +8445,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_509a v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_3ad2 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10260,7 +8471,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9505(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8be4(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10272,7 +8483,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_6d9d v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10295,7 +8506,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_b2c9 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10321,7 +8532,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9776(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8be4_0(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10333,7 +8544,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_1f84 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_be96_0 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10356,7 +8567,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_712d v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1_0 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10382,7 +8593,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_99b4(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_8cb0(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10394,7 +8605,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_874b v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5bc1 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10417,7 +8628,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_aed6 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_130b v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10443,7 +8654,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_9abb(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_9212(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10455,7 +8666,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c624 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_1c68 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10478,7 +8689,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_c912 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c140 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10504,7 +8715,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_a7b0(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_9246(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10516,7 +8727,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_75fd v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_ae76 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10539,7 +8750,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_0b94 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_d002 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10565,7 +8776,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b0d4(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_9743(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10577,7 +8788,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_66ec v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5c74 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10600,7 +8811,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_b9f2 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_f498 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10626,7 +8837,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b3be(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_a048(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10638,7 +8849,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_0e32 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e6eb v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10661,7 +8872,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_d42e v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c2df v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10687,7 +8898,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d285(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_a99d(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10699,7 +8910,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_e8a2 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_4c6c v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10722,7 +8933,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_2cde v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_8707 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10748,7 +8959,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d406(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_b3f4(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10760,7 +8971,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_9ee6 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_5408 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10783,7 +8994,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_81ff v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_098d v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10809,7 +9020,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_d635(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_bc48(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10821,7 +9032,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_66d5 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_7290 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10844,7 +9055,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_4724 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_79f4 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10870,7 +9081,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_daa6(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_c0d0(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10882,7 +9093,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_4f08 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_39f7 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10905,7 +9116,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_e6fd v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_0ae9 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10931,7 +9142,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_df17(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_d64a(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -10943,7 +9154,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c44b v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_e9de v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -10966,7 +9177,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_698d v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_14df v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -10992,7 +9203,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_e181(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_e05e(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -11004,7 +9215,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c0ed v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_c3b4 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -11027,7 +9238,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_ee40 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_688e v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -11053,7 +9264,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_e5a8(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_e61f(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -11065,7 +9276,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_26f0 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_3448 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -11088,7 +9299,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_add5 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_79e0 v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -11114,21 +9325,21 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_ec92(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_fd2f(v0.objref<@layout_10>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; jump block1; block1: - v5.objref<@layout_6> = obj.proj v0 0.i256; - v6.objref<@layout_5> = obj.proj v5 0.i256; - v7.@layout_5 = obj.load v6; - v8.objref<@layout_6> = obj.proj v0 0.i256; - v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_c1cd v9; + v5.objref<@layout_9> = obj.proj v0 0.i256; + v6.objref<@layout_8> = obj.proj v5 0.i256; + v7.@layout_8 = obj.load v6; + v8.objref<@layout_9> = obj.proj v0 0.i256; + v9.objref<@layout_8> = obj.proj v8 0.i256; + v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_60f7 v9; mstore v1 v10 i256; - v11.objref<@layout_6> = obj.proj v0 0.i256; + v11.objref<@layout_9> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; v14.i256 = obj.load v13; (v16.i256, v17.i1) = uaddo v14 32.i256; @@ -11141,16 +9352,16 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea jump block4; block4: - v28.objref<@layout_6> = obj.proj v0 0.i256; - v29.objref<@layout_5> = obj.proj v28 0.i256; - v30.@layout_5 = obj.load v29; - v31.objref<@layout_6> = obj.proj v0 0.i256; + v28.objref<@layout_9> = obj.proj v0 0.i256; + v29.objref<@layout_8> = obj.proj v28 0.i256; + v30.@layout_8 = obj.load v29; + v31.objref<@layout_9> = obj.proj v0 0.i256; v32.objref = obj.proj v31 1.i256; v33.i256 = obj.load v32; - v34.objref<@layout_6> = obj.proj v0 0.i256; - v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_553d v35 v33; - v38.objref<@layout_6> = obj.proj v0 0.i256; + v34.objref<@layout_9> = obj.proj v0 0.i256; + v35.objref<@layout_8> = obj.proj v34 0.i256; + v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_3a89 v35 v33; + v38.objref<@layout_9> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; return v36; @@ -11168,14 +9379,14 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea evm_revert 0.i256 36.i256; block7: - v23.objref<@layout_6> = obj.proj v0 0.i256; + v23.objref<@layout_9> = obj.proj v0 0.i256; v24.objref = obj.proj v23 1.i256; v25.i256 = obj.load v24; v26.i1 = lt v16 v25; br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_fd2f(v0.objref<@layout_7>) -> i256 { +func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_fd97(v0.objref<@layout_7>) -> i256 { block0: v1.*i256 = alloca i256; v2.*i256 = alloca i256; @@ -11187,7 +9398,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v7.@layout_5 = obj.load v6; v8.objref<@layout_6> = obj.proj v0 0.i256; v9.objref<@layout_5> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_60f7 v9; + v10.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_64c7 v9; mstore v1 v10 i256; v11.objref<@layout_6> = obj.proj v0 0.i256; v13.objref = obj.proj v11 1.i256; @@ -11210,7 +9421,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea v33.i256 = obj.load v32; v34.objref<@layout_6> = obj.proj v0 0.i256; v35.objref<@layout_5> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_3a89 v35 v33; + v36.i256 = call %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_089d v35 v33; v38.objref<@layout_6> = obj.proj v0 0.i256; v39.objref = obj.proj v38 1.i256; obj.store v39 v16; @@ -11245,14 +9456,14 @@ func private %require(v0.i256, v1.objref<@layout_2>) { block1: v3.i256 = mload v2 i256; v4.@layout_0 = call %caller; - v5.objref<@layout_18> = obj.alloc @layout_18; + v5.objref<@layout_17> = obj.alloc @layout_17; v7.objref = obj.proj v5 0.i256; obj.store v7 v3; v9.objref<@layout_0> = obj.proj v5 1.i256; v10.objref = obj.proj v9 0.i256; v11.i256 = extract_value v4 0.i256; obj.store v10 v11; - v12.@layout_18 = obj.load v5; + v12.@layout_17 = obj.load v5; v13.i1 = call %get__gc9ba v12; v15.i1 = eq v13 1.i1; call %std__lib__evm__effects__assert_d98e_1 v15; @@ -11264,8 +9475,8 @@ func private %std__lib__evm__effects__revert_error__geb2e_c430(v0.@layout_3) { jump block1; block1: - v3.@layout_24 = call %std__lib__evm__effects__encode_calldata__geb2e_13c2 1313373041.i32 v0; - v4.objref<@layout_24> = obj.alloc @layout_24; + v3.@layout_23 = call %std__lib__evm__effects__encode_calldata__geb2e_13c2 1313373041.i32 v0; + v4.objref<@layout_23> = obj.alloc @layout_23; v6.objref = obj.proj v4 0.i256; v7.i256 = extract_value v3 0.i256; obj.store v6 v7; @@ -11284,8 +9495,8 @@ func private %std__lib__evm__effects__revert_error__geb2e_c430_0(v0.@layout_3) { jump block1; block1: - v3.@layout_24 = call %std__lib__evm__effects__encode_calldata__geb2e_13c2_0 1313373041.i32 v0; - v4.objref<@layout_24> = obj.alloc @layout_24; + v3.@layout_23 = call %std__lib__evm__effects__encode_calldata__geb2e_13c2_0 1313373041.i32 v0; + v4.objref<@layout_23> = obj.alloc @layout_23; v6.objref = obj.proj v4 0.i256; v7.i256 = extract_value v3 0.i256; obj.store v6 v7; @@ -11304,8 +9515,8 @@ func private %std__lib__evm__effects__revert_error__geb2e_c430_1(v0.@layout_3) { jump block1; block1: - v3.@layout_24 = call %std__lib__evm__effects__encode_calldata__geb2e_13c2_1 1313373041.i32 v0; - v4.objref<@layout_24> = obj.alloc @layout_24; + v3.@layout_23 = call %std__lib__evm__effects__encode_calldata__geb2e_13c2_1 1313373041.i32 v0; + v4.objref<@layout_23> = obj.alloc @layout_23; v6.objref = obj.proj v4 0.i256; v7.i256 = extract_value v3 0.i256; obj.store v6 v7; @@ -11527,143 +9738,63 @@ func private %core__lib__abi__round_up_words_b13c_0(v0.i256) -> i256 { return v20; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_1f3b(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_1ba1; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_9aa7 v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_26e1(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_1aa7; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_1790 v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_2913(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_d0c9; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_c673 v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_3b4f(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_b9f8; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_46bc v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_4d61(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_7b84; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_dc77 v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_55ea(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_0e0b; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_b2fb v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_5b45(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_2d6f; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_911d v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_60d6(v0.objref<@layout_2>) -> @layout_7 { - block0: - jump block1; - - block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_5a78; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_db7f v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_80a3(v0.objref<@layout_2>) -> @layout_7 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_26e1(v0.objref<@layout_2>) -> @layout_10 { block0: jump block1; block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_bf4c; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_9b9c v1 4.i256; + v1.@layout_8 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_1aa7; + v3.@layout_10 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_1790 v1 4.i256; return v3; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_8b0a(v0.objref<@layout_2>) -> @layout_7 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_80a3(v0.objref<@layout_2>) -> @layout_10 { block0: jump block1; block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_938b; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_2089 v1 4.i256; + v1.@layout_8 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_bf4c; + v3.@layout_10 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_9b9c v1 4.i256; return v3; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_a69d(v0.objref<@layout_2>) -> @layout_7 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_8b0a(v0.objref<@layout_2>) -> @layout_10 { block0: jump block1; block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_3f88; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_691a v1 4.i256; + v1.@layout_8 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_938b; + v3.@layout_10 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_2089 v1 4.i256; return v3; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_d341(v0.objref<@layout_2>) -> @layout_7 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_a69d(v0.objref<@layout_2>) -> @layout_10 { block0: jump block1; block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_015b; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_7ee4 v1 4.i256; + v1.@layout_8 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_3f88; + v3.@layout_10 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_691a v1 4.i256; return v3; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_e0eb(v0.objref<@layout_2>) -> @layout_7 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_e0eb(v0.objref<@layout_2>) -> @layout_10 { block0: jump block1; block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_b348; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_41f6 v1 4.i256; + v1.@layout_8 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_b348; + v3.@layout_10 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_41f6 v1 4.i256; return v3; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_ebfa(v0.objref<@layout_2>) -> @layout_7 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_ebfa(v0.objref<@layout_2>) -> @layout_10 { block0: jump block1; block1: - v1.@layout_5 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_fd52; - v3.@layout_7 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_372b v1 4.i256; + v1.@layout_8 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_fd52; + v3.@layout_10 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_372b v1 4.i256; return v3; } @@ -11677,33 +9808,7 @@ func inline(always) private %set__g2163(v0.@layout_0, v1.i256) { return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_08ad(v0.objref<@layout_7>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2047(v0.objref<@layout_7>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2c03(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_2563(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11716,7 +9821,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_2c return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_3353(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_48f6(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11729,7 +9834,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_33 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_37ba(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_4c89(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11742,7 +9847,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_37 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5e07(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_58b5(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11755,7 +9860,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_5e return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_6069(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_5ab6(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11768,7 +9873,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_60 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_625a(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_6e32(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11781,7 +9886,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_62 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_71fe(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_750c(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11789,12 +9894,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_71 block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; + v6.objref = obj.proj v0 0.i256; obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_750c(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_844b(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11807,7 +9912,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_750c(v0.o return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8271(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_9157(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11820,7 +9925,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_82 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_844b(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_b40e(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11828,12 +9933,12 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_844b(v0.o block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; + v6.objref = obj.proj v0 1.i256; obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_88e6(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b760(v0.objref<@layout_10>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11846,7 +9951,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_88 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8f23(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_bb8a(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11859,7 +9964,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_8f return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_abec(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_c5ff(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11867,12 +9972,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_ab block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; + v6.objref = obj.proj v0 0.i256; obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b0be(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_c671(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11885,7 +9990,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b0 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b760(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_c7f2(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11898,7 +10003,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_b7 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_c5ff(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_cc2c(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11911,7 +10016,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_c5ff(v0.o return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_cbf7(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11924,7 +10029,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_cb return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_cc2c(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b_0(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11932,12 +10037,12 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_cc2c(v0.o block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; + v6.objref = obj.proj v0 1.i256; obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b(v0.objref<@layout_10>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d709(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11950,7 +10055,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d4 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d49b_0(v0.objref<@layout_10>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11958,12 +10063,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_d4 block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; + v6.objref = obj.proj v0 0.i256; obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a_0(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11976,7 +10081,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a(v0.o return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a_0(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a_1(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11989,7 +10094,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a_0(v0 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a_1(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_eef1(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -11997,12 +10102,12 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_e03a_1(v0 block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; + v6.objref = obj.proj v0 1.i256; obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_f70c(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_f70c(v0.objref<@layout_10>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12015,7 +10120,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g8f43_f7 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_fa20(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_base__g463e_f8ba(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12023,12 +10128,12 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_base_fa20(v0.o block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; + v6.objref = obj.proj v0 1.i256; obj.store v6 v3; return; } -func inline(always) private %set__gc9ba(v0.@layout_18, v1.i1) { +func inline(always) private %set__gc9ba(v0.@layout_17, v1.i1) { block0: jump block1; @@ -12038,7 +10143,7 @@ func inline(always) private %set__gc9ba(v0.@layout_18, v1.i1) { return; } -func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7(v0.@layout_25, v1.i256) { +func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7(v0.@layout_24, v1.i256) { block0: jump block1; @@ -12048,7 +10153,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__s return; } -func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7_0(v0.@layout_25, v1.i256) { +func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__set__ga15b_f7f7_0(v0.@layout_24, v1.i256) { block0: jump block1; @@ -12058,7 +10163,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_StorageMap_9f54__s return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_04a3(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_0f4a(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12066,13 +10171,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_04a block1: v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; + v6.objref = obj.proj v0 1.i256; + obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_0f4a(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_1acb(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12080,12 +10184,13 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_0f4a(v0.ob block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; + v6.objref<@layout_6> = obj.proj v0 0.i256; + v8.objref = obj.proj v6 1.i256; + obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0f8a(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_27c4(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12099,7 +10204,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_0f8 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_1627(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12107,13 +10212,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_162 block1: v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; + v6.objref = obj.proj v0 1.i256; + obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3496(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67_0(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12121,13 +10225,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_349 block1: v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; + v6.objref = obj.proj v0 1.i256; + obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_34da(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67_1(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12135,13 +10238,12 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_34d block1: v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; + v6.objref = obj.proj v0 1.i256; + obj.store v6 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3709(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_4f21(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12155,7 +10257,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_370 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_3857(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_597d(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12168,7 +10270,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_3857(v0.ob return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3c9e(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_5ddd(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12182,7 +10284,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_3c9 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_499d(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_5ecf(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12196,20 +10298,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_499 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67_0(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_662e(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12217,12 +10306,13 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67_0(v0. block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; + v6.objref<@layout_6> = obj.proj v0 0.i256; + v8.objref = obj.proj v6 1.i256; + obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67_1(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_7410(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12235,7 +10325,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_4e67_1(v0. return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_592f(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_8814(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12249,7 +10339,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_592 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_597d(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_888f(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12257,12 +10347,13 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_597d(v0.ob block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; + v6.objref<@layout_6> = obj.proj v0 0.i256; + v8.objref = obj.proj v6 1.i256; + obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_7410(v0.objref<@layout_4>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_8a2d(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12270,12 +10361,13 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_7410(v0.ob block1: v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; + v6.objref<@layout_6> = obj.proj v0 0.i256; + v8.objref = obj.proj v6 1.i256; + obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_763e(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_a128(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12289,7 +10381,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_763 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_79da(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a5d2(v0.objref<@layout_10>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12297,13 +10389,13 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_79d block1: v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; + v6.objref<@layout_9> = obj.proj v0 0.i256; v8.objref = obj.proj v6 1.i256; obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a284(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_aced(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12317,7 +10409,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a28 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_a5d2(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_aee2(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12344,7 +10436,7 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__set_pos_b6ef(v0.ob return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c11e(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_c04d(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12358,7 +10450,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_c11 return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_cfe1(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12372,21 +10464,7 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_cfe return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790(v0.objref<@layout_10>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_9> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790_0(v0.objref<@layout_10>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d790_0(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12394,13 +10472,13 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_d79 block1: v3.i256 = mload v2 i256; - v6.objref<@layout_9> = obj.proj v0 0.i256; + v6.objref<@layout_6> = obj.proj v0 0.i256; v8.objref = obj.proj v6 1.i256; obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_de99(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_de99(v0.objref<@layout_10>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12408,13 +10486,13 @@ func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_de9 block1: v3.i256 = mload v2 i256; - v6.objref<@layout_6> = obj.proj v0 0.i256; + v6.objref<@layout_9> = obj.proj v0 0.i256; v8.objref = obj.proj v6 1.i256; obj.store v8 v3; return; } -func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g8f43_ec24(v0.objref<@layout_7>, v1.i256) { +func private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__set_pos__g463e_ea2a(v0.objref<@layout_7>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12435,7 +10513,7 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943(v0.@layout_0, jump block1; block1: - v7.objref<@layout_25> = obj.alloc @layout_25; + v7.objref<@layout_24> = obj.alloc @layout_24; v9.objref<@layout_0> = obj.proj v7 0.i256; v10.objref = obj.proj v9 0.i256; v11.i256 = extract_value v0 0.i256; @@ -12444,13 +10522,13 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943(v0.@layout_0, v14.objref = obj.proj v13 0.i256; v15.i256 = extract_value v1 0.i256; obj.store v14 v15; - v16.@layout_25 = obj.load v7; + v16.@layout_24 = obj.load v7; v17.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5 v16; v18.i256 = mload v4 i256; v19.i1 = lt v17 v18; v20.i1 = is_zero v19; call %std__lib__evm__effects__assert_d98e v20; - v22.objref<@layout_25> = obj.alloc @layout_25; + v22.objref<@layout_24> = obj.alloc @layout_24; v23.objref<@layout_0> = obj.proj v22 0.i256; v24.objref = obj.proj v23 0.i256; v25.i256 = extract_value v0 0.i256; @@ -12459,7 +10537,7 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943(v0.@layout_0, v27.objref = obj.proj v26 0.i256; v28.i256 = extract_value v1 0.i256; obj.store v27 v28; - v29.@layout_25 = obj.load v22; + v29.@layout_24 = obj.load v22; v30.i256 = mload v4 i256; (v31.i256, v32.i1) = usubo v17 v30; br v32 block2 block3; @@ -12481,7 +10559,7 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943_0(v0.@layout_ jump block1; block1: - v7.objref<@layout_25> = obj.alloc @layout_25; + v7.objref<@layout_24> = obj.alloc @layout_24; v9.objref<@layout_0> = obj.proj v7 0.i256; v10.objref = obj.proj v9 0.i256; v11.i256 = extract_value v0 0.i256; @@ -12490,13 +10568,13 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943_0(v0.@layout_ v14.objref = obj.proj v13 0.i256; v15.i256 = extract_value v1 0.i256; obj.store v14 v15; - v16.@layout_25 = obj.load v7; + v16.@layout_24 = obj.load v7; v17.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__ga15b_b5d5 v16; v18.i256 = mload v4 i256; v19.i1 = lt v17 v18; v20.i1 = is_zero v19; call %std__lib__evm__effects__assert_d98e v20; - v22.objref<@layout_25> = obj.alloc @layout_25; + v22.objref<@layout_24> = obj.alloc @layout_24; v23.objref<@layout_0> = obj.proj v22 0.i256; v24.objref = obj.proj v23 0.i256; v25.i256 = extract_value v0 0.i256; @@ -12505,7 +10583,7 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943_0(v0.@layout_ v27.objref = obj.proj v26 0.i256; v28.i256 = extract_value v1 0.i256; obj.store v27 v28; - v29.@layout_25 = obj.load v22; + v29.@layout_24 = obj.load v22; v30.i256 = mload v4 i256; (v31.i256, v32.i1) = usubo v17 v30; br v32 block2 block3; @@ -12520,7 +10598,7 @@ func private %standalone_erc20__erc20__spend_allowance__ga033_1943_0(v0.@layout_ return; } -func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_with_salt__g7bf4_09af(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_with_salt__g7bf4_09af(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12533,7 +10611,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_wit return v6; } -func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_with_salt__g7bf4_09af_0(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_with_salt__g7bf4_09af_0(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12559,7 +10637,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_wit return v6; } -func inline(always) private %storagemap_get_word_with_salt__g9379(v0.@layout_18, v1.i256) -> i256 { +func inline(always) private %storagemap_get_word_with_salt__g9379(v0.@layout_17, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12585,7 +10663,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_wit return v6; } -func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_with_salt__g7bf4_af75(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_get_word_with_salt__g7bf4_af75(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12614,7 +10692,7 @@ func inline(always) private %storagemap_set_word_with_salt__g67a8(v0.@layout_0, return; } -func inline(always) private %std__lib__evm__storage_map__storagemap_set_word_with_salt__g7bf4_7aa4(v0.@layout_25, v1.i256, v2.i256) { +func inline(always) private %std__lib__evm__storage_map__storagemap_set_word_with_salt__g7bf4_7aa4(v0.@layout_24, v1.i256, v2.i256) { block0: v3.*i256 = alloca i256; v4.*i256 = alloca i256; @@ -12630,7 +10708,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_set_word_wit return; } -func inline(always) private %std__lib__evm__storage_map__storagemap_set_word_with_salt__g7bf4_7aa4_0(v0.@layout_25, v1.i256, v2.i256) { +func inline(always) private %std__lib__evm__storage_map__storagemap_set_word_with_salt__g7bf4_7aa4_0(v0.@layout_24, v1.i256, v2.i256) { block0: v3.*i256 = alloca i256; v4.*i256 = alloca i256; @@ -12646,7 +10724,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_set_word_wit return; } -func inline(always) private %storagemap_set_word_with_salt__g9379(v0.@layout_18, v1.i256, v2.i256) { +func inline(always) private %storagemap_set_word_with_salt__g9379(v0.@layout_17, v1.i256, v2.i256) { block0: v3.*i256 = alloca i256; v4.*i256 = alloca i256; @@ -12662,7 +10740,7 @@ func inline(always) private %storagemap_set_word_with_salt__g9379(v0.@layout_18, return; } -func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_2a19(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_2a19(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12749,7 +10827,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot return v21; } -func inline(always) private %storagemap_storage_slot_with_salt__g9379(v0.@layout_18, v1.i256) -> i256 { +func inline(always) private %storagemap_storage_slot_with_salt__g9379(v0.@layout_17, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12778,7 +10856,7 @@ func inline(always) private %storagemap_storage_slot_with_salt__g9379(v0.@layout return v21; } -func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_e3d6(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_e3d6(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12807,7 +10885,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot return v21; } -func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_e3d6_0(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_e3d6_0(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12836,7 +10914,7 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot return v21; } -func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_e3d6_1(v0.@layout_25, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot_with_salt__g7bf4_e3d6_1(v0.@layout_24, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -12865,21 +10943,6 @@ func inline(always) private %std__lib__evm__storage_map__storagemap_storage_slot return v21; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__store_word_2361(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - v3.*i256 = alloca i256; - mstore v2 v0 i256; - mstore v3 v1 i256; - jump block1; - - block1: - v4.i256 = mload v2 i256; - v5.i256 = mload v3 i256; - mstore v4 v5 i256; - return; -} - func private %std__lib__abi__sol__impl_trait_Sol_1f5f__store_word_2c7e(v0.i256, v1.i256) { block0: v2.*i256 = alloca i256; @@ -13057,369 +11120,153 @@ func private %impl_trait_bool__to_word(v0.i1) -> i256 { block3: jump block4; - - block4: - v4.i256 = phi (1.i256 block2) (0.i256 block3); - return v4; -} - -func private %standalone_erc20__erc20__transfer__g5c3f_6cc9(v0.@layout_0, v1.@layout_0, v2.i256, v3.i256, v4.objref<@layout_2>) { - block0: - v5.*i256 = alloca i256; - v6.objref<@layout_0> = obj.alloc @layout_0; - v7.objref<@layout_0> = obj.alloc @layout_0; - mstore v5 v2 i256; - jump block1; - - block1: - v9.@layout_0 = call %zero; - v11.objref = obj.proj v6 0.i256; - v12.i256 = extract_value v9 0.i256; - obj.store v11 v12; - v13.@layout_0 = obj.load v6; - v14.i1 = call %ne v0 v13; - call %std__lib__evm__effects__assert_d98e_0 v14; - v17.@layout_0 = call %zero; - v18.objref = obj.proj v7 0.i256; - v19.i256 = extract_value v17 0.i256; - obj.store v18 v19; - v20.@layout_0 = obj.load v7; - v21.i1 = call %ne v1 v20; - call %std__lib__evm__effects__assert_d98e_0 v21; - v23.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v0; - v24.i256 = mload v5 i256; - v25.i1 = lt v23 v24; - v26.i1 = is_zero v25; - call %std__lib__evm__effects__assert_d98e_0 v26; - v28.i256 = mload v5 i256; - (v29.i256, v30.i1) = usubo v23 v28; - br v30 block2 block3; - - block2: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block3: - call %set__g2163 v0 v29; - v38.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v1; - v39.i256 = mload v5 i256; - (v40.i256, v41.i1) = uaddo v38 v39; - br v41 block2 block4; - - block4: - call %set__g2163 v1 v40; - v47.i256 = mload v5 i256; - v48.objref<@layout_23> = obj.alloc @layout_23; - v49.objref<@layout_0> = obj.proj v48 0.i256; - v50.objref = obj.proj v49 0.i256; - v51.i256 = extract_value v0 0.i256; - obj.store v50 v51; - v53.objref<@layout_0> = obj.proj v48 1.i256; - v54.objref = obj.proj v53 0.i256; - v55.i256 = extract_value v1 0.i256; - obj.store v54 v55; - v57.objref = obj.proj v48 2.i256; - obj.store v57 v47; - v58.@layout_23 = obj.load v48; - call %emit__g4c3d v4 v58; - return; -} - -func private %standalone_erc20__erc20__transfer__g5c3f_c11b(v0.@layout_0, v1.@layout_0, v2.i256, v3.i256, v4.objref<@layout_2>) { - block0: - v5.*i256 = alloca i256; - v6.objref<@layout_0> = obj.alloc @layout_0; - v7.objref<@layout_0> = obj.alloc @layout_0; - mstore v5 v2 i256; - jump block1; - - block1: - v9.@layout_0 = call %zero; - v11.objref = obj.proj v6 0.i256; - v12.i256 = extract_value v9 0.i256; - obj.store v11 v12; - v13.@layout_0 = obj.load v6; - v14.i1 = call %ne v0 v13; - call %std__lib__evm__effects__assert_d98e_0 v14; - v17.@layout_0 = call %zero; - v18.objref = obj.proj v7 0.i256; - v19.i256 = extract_value v17 0.i256; - obj.store v18 v19; - v20.@layout_0 = obj.load v7; - v21.i1 = call %ne v1 v20; - call %std__lib__evm__effects__assert_d98e_0 v21; - v23.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v0; - v24.i256 = mload v5 i256; - v25.i1 = lt v23 v24; - v26.i1 = is_zero v25; - call %std__lib__evm__effects__assert_d98e_0 v26; - v28.i256 = mload v5 i256; - (v29.i256, v30.i1) = usubo v23 v28; - br v30 block2 block3; - - block2: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block3: - call %set__g2163 v0 v29; - v38.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v1; - v39.i256 = mload v5 i256; - (v40.i256, v41.i1) = uaddo v38 v39; - br v41 block2 block4; - - block4: - call %set__g2163 v1 v40; - v47.i256 = mload v5 i256; - v48.objref<@layout_23> = obj.alloc @layout_23; - v49.objref<@layout_0> = obj.proj v48 0.i256; - v50.objref = obj.proj v49 0.i256; - v51.i256 = extract_value v0 0.i256; - obj.store v50 v51; - v53.objref<@layout_0> = obj.proj v48 1.i256; - v54.objref = obj.proj v53 0.i256; - v55.i256 = extract_value v1 0.i256; - obj.store v54 v55; - v57.objref = obj.proj v48 2.i256; - obj.store v57 v47; - v58.@layout_23 = obj.load v48; - call %emit__g4c3d v4 v58; - return; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_1583(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_4240 v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_ace8 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_3cb6(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_2e66 v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d4d6 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_4009(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_200e v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_542f v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_43fc(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_3ec1 v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_f9b8 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_56ca(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_232c v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_cd99 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_57e7(v0.@layout_5, v1.i256) -> @layout_7 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_edc0 v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_320d v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; + + block4: + v4.i256 = phi (1.i256 block2) (0.i256 block3); + return v4; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_6cde(v0.@layout_5, v1.i256) -> @layout_7 { +func private %standalone_erc20__erc20__transfer__g5c3f_6cc9(v0.@layout_0, v1.@layout_0, v2.i256, v3.i256, v4.objref<@layout_2>) { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v5.*i256 = alloca i256; + v6.objref<@layout_0> = obj.alloc @layout_0; + v7.objref<@layout_0> = obj.alloc @layout_0; + mstore v5 v2 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_8b54 v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_64b6 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; + v9.@layout_0 = call %zero; + v11.objref = obj.proj v6 0.i256; + v12.i256 = extract_value v9 0.i256; + obj.store v11 v12; + v13.@layout_0 = obj.load v6; + v14.i1 = call %ne v0 v13; + call %std__lib__evm__effects__assert_d98e_0 v14; + v17.@layout_0 = call %zero; + v18.objref = obj.proj v7 0.i256; + v19.i256 = extract_value v17 0.i256; + obj.store v18 v19; + v20.@layout_0 = obj.load v7; + v21.i1 = call %ne v1 v20; + call %std__lib__evm__effects__assert_d98e_0 v21; + v23.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v0; + v24.i256 = mload v5 i256; + v25.i1 = lt v23 v24; + v26.i1 = is_zero v25; + call %std__lib__evm__effects__assert_d98e_0 v26; + v28.i256 = mload v5 i256; + (v29.i256, v30.i1) = usubo v23 v28; + br v30 block2 block3; + + block2: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block3: + call %set__g2163 v0 v29; + v38.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v1; + v39.i256 = mload v5 i256; + (v40.i256, v41.i1) = uaddo v38 v39; + br v41 block2 block4; + + block4: + call %set__g2163 v1 v40; + v47.i256 = mload v5 i256; + v48.objref<@layout_22> = obj.alloc @layout_22; + v49.objref<@layout_0> = obj.proj v48 0.i256; + v50.objref = obj.proj v49 0.i256; + v51.i256 = extract_value v0 0.i256; + obj.store v50 v51; + v53.objref<@layout_0> = obj.proj v48 1.i256; + v54.objref = obj.proj v53 0.i256; + v55.i256 = extract_value v1 0.i256; + obj.store v54 v55; + v57.objref = obj.proj v48 2.i256; + obj.store v57 v47; + v58.@layout_22 = obj.load v48; + call %emit__g4c3d v4 v58; + return; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_7c6f(v0.@layout_5, v1.i256) -> @layout_7 { +func private %standalone_erc20__erc20__transfer__g5c3f_c11b(v0.@layout_0, v1.@layout_0, v2.i256, v3.i256, v4.objref<@layout_2>) { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; + v5.*i256 = alloca i256; + v6.objref<@layout_0> = obj.alloc @layout_0; + v7.objref<@layout_0> = obj.alloc @layout_0; + mstore v5 v2 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_4eb9 v0; - v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_84e3 v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_7 = obj.load v8; - return v19; + v9.@layout_0 = call %zero; + v11.objref = obj.proj v6 0.i256; + v12.i256 = extract_value v9 0.i256; + obj.store v11 v12; + v13.@layout_0 = obj.load v6; + v14.i1 = call %ne v0 v13; + call %std__lib__evm__effects__assert_d98e_0 v14; + v17.@layout_0 = call %zero; + v18.objref = obj.proj v7 0.i256; + v19.i256 = extract_value v17 0.i256; + obj.store v18 v19; + v20.@layout_0 = obj.load v7; + v21.i1 = call %ne v1 v20; + call %std__lib__evm__effects__assert_d98e_0 v21; + v23.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v0; + v24.i256 = mload v5 i256; + v25.i1 = lt v23 v24; + v26.i1 = is_zero v25; + call %std__lib__evm__effects__assert_d98e_0 v26; + v28.i256 = mload v5 i256; + (v29.i256, v30.i1) = usubo v23 v28; + br v30 block2 block3; + + block2: + mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; + mstore 4.i256 17.i256 i256; + evm_revert 0.i256 36.i256; + + block3: + call %set__g2163 v0 v29; + v38.i256 = call %std__lib__evm__storage_map__impl_StorageMap_9f54__get__g2163_8a15 v1; + v39.i256 = mload v5 i256; + (v40.i256, v41.i1) = uaddo v38 v39; + br v41 block2 block4; + + block4: + call %set__g2163 v1 v40; + v47.i256 = mload v5 i256; + v48.objref<@layout_22> = obj.alloc @layout_22; + v49.objref<@layout_0> = obj.proj v48 0.i256; + v50.objref = obj.proj v49 0.i256; + v51.i256 = extract_value v0 0.i256; + obj.store v50 v51; + v53.objref<@layout_0> = obj.proj v48 1.i256; + v54.objref = obj.proj v53 0.i256; + v55.i256 = extract_value v1 0.i256; + obj.store v54 v55; + v57.objref = obj.proj v48 2.i256; + obj.store v57 v47; + v58.@layout_22 = obj.load v48; + call %emit__g4c3d v4 v58; + return; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_a45d(v0.@layout_5, v1.i256) -> @layout_7 { +func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_56ca(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_cb66 v0; + v4.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_232c v0; v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_3257 v4 v5; + v6.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_cd99 v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; + v8.objref<@layout_10> = obj.alloc @layout_10; + v10.objref<@layout_9> = obj.proj v8 0.i256; + v11.objref<@layout_8> = obj.proj v10 0.i256; + v12.@layout_8 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -13428,25 +11275,25 @@ func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_7 = obj.load v8; + v19.@layout_10 = obj.load v8; return v19; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_b4c9(v0.@layout_5, v1.i256) -> @layout_7 { +func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_57e7(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_6e18 v0; + v4.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_edc0 v0; v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_08b4 v4 v5; + v6.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_320d v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; + v8.objref<@layout_10> = obj.alloc @layout_10; + v10.objref<@layout_9> = obj.proj v8 0.i256; + v11.objref<@layout_8> = obj.proj v10 0.i256; + v12.@layout_8 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -13455,25 +11302,25 @@ func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_7 = obj.load v8; + v19.@layout_10 = obj.load v8; return v19; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dba1(v0.@layout_5, v1.i256) -> @layout_7 { +func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_7c6f(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_c3a0 v0; + v4.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_4eb9 v0; v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d620 v4 v5; + v6.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_84e3 v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; + v8.objref<@layout_10> = obj.alloc @layout_10; + v10.objref<@layout_9> = obj.proj v8 0.i256; + v11.objref<@layout_8> = obj.proj v10 0.i256; + v12.@layout_8 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -13482,25 +11329,25 @@ func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_7 = obj.load v8; + v19.@layout_10 = obj.load v8; return v19; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dd64(v0.@layout_5, v1.i256) -> @layout_7 { +func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dba1(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_0a92 v0; + v4.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_c3a0 v0; v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_7e69 v4 v5; + v6.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_d620 v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; + v8.objref<@layout_10> = obj.alloc @layout_10; + v10.objref<@layout_9> = obj.proj v8 0.i256; + v11.objref<@layout_8> = obj.proj v10 0.i256; + v12.@layout_8 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -13509,25 +11356,25 @@ func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_7 = obj.load v8; + v19.@layout_10 = obj.load v8; return v19; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_df78(v0.@layout_5, v1.i256) -> @layout_7 { +func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_dd64(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_cc0f v0; + v4.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_0a92 v0; v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_5db0 v4 v5; + v6.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_7e69 v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; + v8.objref<@layout_10> = obj.alloc @layout_10; + v10.objref<@layout_9> = obj.proj v8 0.i256; + v11.objref<@layout_8> = obj.proj v10 0.i256; + v12.@layout_8 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -13536,25 +11383,25 @@ func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_7 = obj.load v8; + v19.@layout_10 = obj.load v8; return v19; } -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_f665(v0.@layout_5, v1.i256) -> @layout_7 { +func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_f665(v0.@layout_8, v1.i256) -> @layout_10 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_d550 v0; + v4.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_d550 v0; v5.i256 = mload v2 i256; - v6.@layout_6 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_baad v4 v5; + v6.@layout_9 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_baad v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_7> = obj.alloc @layout_7; - v10.objref<@layout_6> = obj.proj v8 0.i256; - v11.objref<@layout_5> = obj.proj v10 0.i256; - v12.@layout_5 = extract_value v6 0.i256; + v8.objref<@layout_10> = obj.alloc @layout_10; + v10.objref<@layout_9> = obj.proj v8 0.i256; + v11.objref<@layout_8> = obj.proj v10 0.i256; + v12.@layout_8 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -13563,41 +11410,11 @@ func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_7 = obj.load v8; + v19.@layout_10 = obj.load v8; return v19; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_013b(v0.objref<@layout_5>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_0b94(v0.objref<@layout_5>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_0de0(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_05ff(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13608,11 +11425,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_0fd5(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_089d(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13623,11 +11440,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1(v0.objref<@layout_8>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_098d(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13642,7 +11459,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1_0(v0.objref<@layout_8>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_0ae9(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13657,7 +11474,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_2cde(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_130b(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13668,11 +11485,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_321e(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_14df(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13683,11 +11500,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_3a7f(v0.objref<@layout_8>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_1ad0(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13702,7 +11519,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_3a89(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13713,11 +11530,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_3f26(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_20e1_0(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13728,11 +11545,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_4724(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_3a7f(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13743,11 +11560,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_4e61(v0.objref<@layout_5>, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_3a89(v0.objref<@layout_8>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13762,7 +11579,7 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_509a(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_3ad2(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13773,11 +11590,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_553d(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_688e(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13788,11 +11605,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_59f2(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_79e0(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13803,11 +11620,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_60f2(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_79f4(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13818,11 +11635,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_698d(v0.objref<@layout_5>, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7f0e(v0.objref<@layout_8>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13837,7 +11654,7 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_712d(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_8707(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13848,11 +11665,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7244(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_90f6(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13863,11 +11680,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7f0e(v0.objref<@layout_5>, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_9376(v0.objref<@layout_8>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13882,7 +11699,7 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_7f8f(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_940b(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13893,11 +11710,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_81ff(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_94b4(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13908,11 +11725,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_9376(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_a4e4(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13923,11 +11740,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_add5(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_b213(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13938,11 +11755,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_aed6(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_b7c5(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13953,11 +11770,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_b2c9(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c140(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13968,11 +11785,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_b9f2(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c28b(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13983,11 +11800,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_c2fe(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c2df(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -13998,11 +11815,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c66d(v0.objref<@layout_8>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_c66d(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14017,7 +11834,7 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_c912(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_caf9(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14028,11 +11845,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_d42e(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_d002(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14043,11 +11860,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_d5b3(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_dec0(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14058,11 +11875,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_dbd0(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ded1(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14073,11 +11890,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_dc0f(v0.objref<@layout_5>, v1.i256) -> i256 { +func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_e224(v0.objref<@layout_8>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14092,7 +11909,7 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_e224(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_eac5(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14103,11 +11920,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_e6fd(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_f498(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14118,11 +11935,11 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_ee40(v0.objref<@layout_5>, v1.i256) -> i256 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_f6b3(v0.objref<@layout_5>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -14133,7 +11950,7 @@ func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__ v6.i256 = obj.load v5; v7.i256 = mload v2 i256; v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; + v9.i256 = mload v8 i256; return v9; } @@ -14150,7 +11967,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_trait_Address_4d4e return v7; } -func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_2c8a(v0.i256, v1.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_2c8a(v0.i256, v1.@layout_24) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v0 i256; @@ -14293,7 +12110,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_trait_u256_0dfe__w return 32.i256; } -func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_ba59(v0.i256, v1.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_ba59(v0.i256, v1.@layout_24) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v0 i256; @@ -14322,7 +12139,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__wri return v20; } -func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_ba59_0(v0.i256, v1.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_ba59_0(v0.i256, v1.@layout_24) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v0 i256; @@ -14351,7 +12168,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__wri return v20; } -func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_ba59_1(v0.i256, v1.@layout_25) -> i256 { +func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__write_key__g7528_ba59_1(v0.i256, v1.@layout_24) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v0 i256; @@ -14380,7 +12197,7 @@ func inline(always) private %std__lib__evm__storage_map__impl_trait____9761__wri return v20; } -func inline(always) private %write_key__g6d15(v0.i256, v1.@layout_18) -> i256 { +func inline(always) private %write_key__g6d15(v0.i256, v1.@layout_17) -> i256 { block0: v2.*i256 = alloca i256; mstore v2 v0 i256; @@ -14714,40 +12531,6 @@ func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8727(v0 return; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8eda(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8f67(v0.objref<@layout_4>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_aa60(v0.objref<@layout_4>, v1.i256) { block0: v2.*i256 = alloca i256; diff --git a/crates/codegen/tests/fixtures/sonatina_ir/high_level_contract.snap b/crates/codegen/tests/fixtures/sonatina_ir/high_level_contract.snap index 24035b44c9..5b2a3a0201 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/high_level_contract.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/high_level_contract.snap @@ -1,5 +1,6 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/high_level_contract.fe --- @@ -12,10 +13,8 @@ type @layout_3 = {i256}; type @layout_4 = {@layout_3, i256}; type @layout_5 = {@layout_4, i256}; type @layout_6 = {i256, i256}; -type @layout_7 = {i256}; -type @layout_8 = {i256, i256}; -type @layout_9 = {}; -type @layout_10 = {@layout_9}; +type @layout_7 = {}; +type @layout_8 = {@layout_7}; global private const @layout_3 $const_region_0 = {0}; @@ -61,59 +60,7 @@ func private %__EchoContract_recv_0_2(v0.i256) -> i256 { return v2; } -func private %abi_field_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_9950_0 v2; - br 0.i1 block2 block3; - - block2: - (v7.i256, v8.i1) = uaddo 32.i256 v3; - br v8 block5 block6; - - block3: - jump block4; - - block4: - return v3; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - return v7; -} - -func private %abi_single_root_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %abi_field_size v2; - return v3; -} - -func private %base__g463e(v0.objref<@layout_2>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %base__g8f43(v0.objref<@layout_5>) -> i256 { +func private %base(v0.objref<@layout_2>) -> i256 { block0: jump block1; @@ -123,16 +70,6 @@ func private %base__g8f43(v0.objref<@layout_5>) -> i256 { return v4; } -func private %impl_trait_SolEncoder__base(v0.objref<@layout_6>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 0.i256; - v4.i256 = obj.load v3; - return v4; -} - func private %contract_init_abi_EchoContract() { block0: v0.objref<@layout_0> = obj.alloc @layout_0; @@ -192,7 +129,7 @@ func private %contract_init_abi_EchoContract() { v38.objref = obj.proj v1 1.i256; v39.i256 = extract_value v27 1.i256; obj.store v38 v39; - v40.@layout_8 = call %decode_payload__g4770 v1; + v40.@layout_6 = call %decode_payload__g4770 v1; v41.i256 = extract_value v40 0.i256; v42.i256 = extract_value v40 1.i256; call %__EchoContract_init v41 v42 0.i256; @@ -225,13 +162,11 @@ func private %contract_recv_abi_EchoContract_1() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_8> = obj.alloc @layout_8; call %decode_runtime_args__g235a v5; v7.i256 = call %__EchoContract_recv_0_0; - v8.@layout_8 = call %encode_single_root_alloc v7; - v9.i256 = extract_value v8 0.i256; - v11.i256 = extract_value v8 1.i256; - evm_return v9 v11; + mstore 0.i256 v7 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_EchoContract_2() { @@ -248,14 +183,18 @@ func private %contract_recv_abi_EchoContract_2() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_10> = obj.alloc @layout_10; - v6.@layout_7 = call %decode_runtime_args__g9e33 v5; - v7.i256 = extract_value v6 0.i256; - v8.i256 = call %__EchoContract_recv_0_1 v7; - v9.@layout_8 = call %encode_single_root_alloc v8; - v10.i256 = extract_value v9 0.i256; - v12.i256 = extract_value v9 1.i256; - evm_return v10 v12; + v6.i256 = evm_calldata_size; + v7.i1 = lt v6 36.i256; + br v7 block4 block5; + + block4: + evm_revert 0.i256 0.i256; + + block5: + v10.i256 = evm_calldata_load 4.i256; + v11.i256 = call %__EchoContract_recv_0_1 v10; + mstore 0.i256 v11 i256; + evm_return 0.i256 32.i256; } func private %contract_recv_abi_EchoContract_3() { @@ -272,13 +211,11 @@ func private %contract_recv_abi_EchoContract_3() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_10> = obj.alloc @layout_10; + v5.objref<@layout_8> = obj.alloc @layout_8; call %decode_runtime_args__gf173 v5; v7.i256 = call %__EchoContract_recv_0_2 0.i256; - v8.@layout_8 = call %encode_single_root_alloc v7; - v9.i256 = extract_value v8 0.i256; - v11.i256 = extract_value v8 1.i256; - evm_return v9 v11; + mstore 0.i256 v7 i256; + evm_return 0.i256 32.i256; } func private %contract_runtime_root_EchoContract() { @@ -312,43 +249,7 @@ func private %contract_runtime_root_EchoContract() { unreachable; } -func inline(always) private %decode_field__g7400(v0.objref<@layout_5>) -> i256 { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b0fa v0; - v4.i256 = call %base__g8f43 v0; - v5.i256 = call %pos__g8f43 v0; - (v6.i256, v7.i1) = uaddo v4 v3; - br v7 block5 block6; - - block3: - jump block4; - - block4: - v23.i256 = call %decode_payload__g574e v0; - return v23; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - call %set_base__g8f43 v0 v6; - v15.i256 = call %base__g8f43 v0; - call %set_pos__g8f43 v0 v15; - v17.i256 = call %decode_payload__g574e v0; - call %set_base__g8f43 v0 v4; - call %set_pos__g8f43 v0 v5; - return v17; -} - -func inline(always) private %decode_field__g3854(v0.objref<@layout_2>) -> i256 { +func inline(always) private %decode_field(v0.objref<@layout_2>) -> i256 { block0: jump block1; @@ -357,8 +258,8 @@ func inline(always) private %decode_field__g3854(v0.objref<@layout_2>) -> i256 { block2: v3.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g463e_1759 v0; - v4.i256 = call %base__g463e v0; - v5.i256 = call %pos__g463e v0; + v4.i256 = call %base v0; + v5.i256 = call %pos v0; (v6.i256, v7.i1) = uaddo v4 v3; br v7 block5 block6; @@ -375,12 +276,12 @@ func inline(always) private %decode_field__g3854(v0.objref<@layout_2>) -> i256 { evm_revert 0.i256 36.i256; block6: - call %set_base__g463e v0 v6; - v15.i256 = call %base__g463e v0; - call %set_pos__g463e v0 v15; + call %set_base v0 v6; + v15.i256 = call %base v0; + call %set_pos v0 v15; v17.i256 = call %decode_payload__g407e v0; - call %set_base__g463e v0 v4; - call %set_pos__g463e v0 v5; + call %set_base v0 v4; + call %set_pos v0 v5; return v17; } @@ -392,44 +293,22 @@ func inline(always) private %impl_trait_Answer__decode_payload__g3a69(v0.objref< return; } -func inline(always) private %impl_trait_Echo__decode_payload__g3a69(v0.objref<@layout_5>) -> @layout_7 { - block0: - jump block1; - - block1: - v2.i256 = call %decode_field__g7400 v0; - v3.objref<@layout_7> = obj.alloc @layout_7; - v5.objref = obj.proj v3 0.i256; - obj.store v5 v2; - v6.@layout_7 = obj.load v3; - return v6; -} - -func private %decode_payload__g4770(v0.objref<@layout_2>) -> @layout_8 { +func private %decode_payload__g4770(v0.objref<@layout_2>) -> @layout_6 { block0: jump block1; block1: - v2.i256 = call %decode_field__g3854 v0; - v3.i256 = call %decode_field__g3854 v0; - v4.objref<@layout_8> = obj.alloc @layout_8; + v2.i256 = call %decode_field v0; + v3.i256 = call %decode_field v0; + v4.objref<@layout_6> = obj.alloc @layout_6; v6.objref = obj.proj v4 0.i256; obj.store v6 v2; v8.objref = obj.proj v4 1.i256; obj.store v8 v3; - v9.@layout_8 = obj.load v4; + v9.@layout_6 = obj.load v4; return v9; } -func inline(always) private %decode_payload__g574e(v0.objref<@layout_5>) -> i256 { - block0: - jump block1; - - block1: - v2.i256 = call %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2f0d v0; - return v2; -} - func inline(always) private %decode_payload__g407e(v0.objref<@layout_2>) -> i256 { block0: jump block1; @@ -447,31 +326,7 @@ func inline(always) private %impl_trait_GetX__decode_payload__g3a69(v0.objref<@l return; } -func inline(always) private %decode_runtime_args__g9e33(v0.objref<@layout_10>) -> @layout_7 { - block0: - jump block1; - - block1: - v2.@layout_5 = call %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_3772 v0; - v3.objref<@layout_5> = obj.alloc @layout_5; - v5.objref<@layout_4> = obj.proj v3 0.i256; - v6.@layout_4 = extract_value v2 0.i256; - v7.objref<@layout_3> = obj.proj v5 0.i256; - v8.@layout_3 = extract_value v6 0.i256; - v9.objref = obj.proj v7 0.i256; - v10.i256 = extract_value v8 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v5 1.i256; - v13.i256 = extract_value v6 1.i256; - obj.store v12 v13; - v14.objref = obj.proj v3 1.i256; - v15.i256 = extract_value v2 1.i256; - obj.store v14 v15; - v16.@layout_7 = call %impl_trait_Echo__decode_payload__g3a69 v3; - return v16; -} - -func inline(always) private %decode_runtime_args__gf173(v0.objref<@layout_10>) { +func inline(always) private %decode_runtime_args__gf173(v0.objref<@layout_8>) { block0: jump block1; @@ -495,7 +350,7 @@ func inline(always) private %decode_runtime_args__gf173(v0.objref<@layout_10>) { return; } -func inline(always) private %decode_runtime_args__g235a(v0.objref<@layout_10>) { +func inline(always) private %decode_runtime_args__g235a(v0.objref<@layout_8>) { block0: jump block1; @@ -552,137 +407,6 @@ func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_ return v5; } -func private %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_f86d(v0.@layout_3, v1.i256) -> @layout_5 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v5.@layout_5 = call %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_15d8 v0 v3; - return v5; -} - -func private %encode(v0.i256, v1.objref<@layout_6>) { - block0: - jump block1; - - block1: - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_d116 v1 v0; - return; -} - -func private %encode_field(v0.i256, v1.objref<@layout_6>, v2.i256) { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v5.i256 = call %impl_trait_SolEncoder__base v1; - v8.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_9950 v0; - v9.i256 = mload v2 i256; - v10.i256 = sub v9 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_6213 v1 v10; - v12.i256 = call %impl_trait_SolEncoder__pos v1; - v13.i256 = mload v2 i256; - call %impl_trait_SolEncoder__set_base v1 v13; - v15.i256 = mload v2 i256; - call %impl_trait_SolEncoder__set_pos v1 v15; - call %encode v0 v1; - call %impl_trait_SolEncoder__set_base v1 v5; - call %impl_trait_SolEncoder__set_pos v1 v12; - v20.i256 = mload v2 i256; - v21.i256 = add v20 v8; - mstore v2 v21 i256; - return; - - block3: - jump block4; - - block4: - br 1.i1 block5 block6; - - block5: - v24.i256 = call %impl_trait_SolEncoder__pos v1; - call %encode_to_ptr v0 v24; - v28.i256 = add v24 32.i256; - call %impl_trait_SolEncoder__set_pos v1 v28; - return; - - block6: - jump block7; - - block7: - call %encode v0 v1; - return; -} - -func private %encode_single_root(v0.i256, v1.objref<@layout_6>) { - block0: - v2.*i256 = alloca i256; - jump block1; - - block1: - v4.i256 = call %impl_trait_SolEncoder__base v1; - v6.i256 = add v4 32.i256; - mstore v2 v6 i256; - v7.i256 = ptr_to_int v2 i256; - call %encode_field v0 v1 v7; - return; -} - -func private %encode_single_root_alloc(v0.i256) -> @layout_8 { - block0: - jump block1; - - block1: - v2.i256 = call %abi_single_root_size v0; - v3.@layout_6 = call %encoder_new v2; - v4.objref<@layout_6> = obj.alloc @layout_6; - v6.objref = obj.proj v4 0.i256; - v7.i256 = extract_value v3 0.i256; - obj.store v6 v7; - v9.objref = obj.proj v4 1.i256; - v10.i256 = extract_value v3 1.i256; - obj.store v9 v10; - v11.i256 = call %impl_trait_SolEncoder__base v4; - call %encode_single_root v0 v4; - v13.objref<@layout_8> = obj.alloc @layout_8; - v14.objref = obj.proj v13 0.i256; - obj.store v14 v11; - v15.objref = obj.proj v13 1.i256; - obj.store v15 v2; - v16.@layout_8 = obj.load v13; - return v16; -} - -func private %encode_to_ptr(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - call %store_word v3 v0; - return; -} - -func private %encoder_new(v0.i256) -> @layout_6 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.@layout_6 = call %impl_SolEncoder__new v2; - return v3; -} - func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_12dd(v0.@layout_4, v1.i256) -> @layout_4 { block0: v2.*i256 = alloca i256; @@ -723,197 +447,57 @@ func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_9251( return v13; } -func inline(always) private %core__lib__abi__impl_Cursor_1a04__fork__gd20d_ce1d(v0.@layout_4, v1.i256) -> @layout_4 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_04c6() -> @layout_3 { block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; jump block1; block1: - v5.@layout_3 = extract_value v0 0.i256; - v6.i256 = mload v2 i256; - v7.objref<@layout_4> = obj.alloc @layout_4; - v8.objref<@layout_3> = obj.proj v7 0.i256; - v9.objref = obj.proj v8 0.i256; - v10.i256 = extract_value v5 0.i256; - obj.store v9 v10; - v12.objref = obj.proj v7 1.i256; - obj.store v12 v6; - v13.@layout_4 = obj.load v7; - return v13; + v0.@layout_3 = call %std__lib__evm__calldata__impl_CallData_8f43__new_5a55; + return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_04c6() -> @layout_3 { +func private %std__lib__evm__effects__impl_trait_Evm_c913__input_cf60() -> @layout_3 { block0: jump block1; block1: - v0.@layout_3 = call %std__lib__evm__calldata__impl_CallData_8f43__new_5a55; + v0.@layout_3 = call %std__lib__evm__calldata__impl_CallData_8f43__new_a74d; return v0; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_1b01() -> @layout_3 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_56e9(v0.objref<@layout_0>) -> i256 { block0: jump block1; block1: - v0.@layout_3 = call %std__lib__evm__calldata__impl_CallData_8f43__new_ad08; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func private %std__lib__evm__effects__impl_trait_Evm_c913__input_cf60() -> @layout_3 { +func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_9d6b(v0.objref<@layout_0>) -> i256 { block0: jump block1; block1: - v0.@layout_3 = call %std__lib__evm__calldata__impl_CallData_8f43__new_a74d; - return v0; + v3.objref = obj.proj v0 1.i256; + v4.i256 = obj.load v3; + return v4; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_19cc(v0.objref<@layout_3>) -> i256 { +func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_5a55() -> @layout_3 { block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; jump block1; block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; + v1.constref<@layout_3> = const.ref $const_region_0; + v2.objref<@layout_3> = obj.alloc @layout_3; + obj.init.const v2 v1; + v3.@layout_3 = obj.load v2; + return v3; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__len_30aa(v0.objref<@layout_3>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v3.i256 = evm_calldata_size; - mstore v1 v3 i256; - v6.objref = obj.proj v0 0.i256; - v7.i256 = obj.load v6; - v8.i256 = mload v1 i256; - mstore v2 v8 i256; - v9.i256 = mload v2 i256; - v10.i1 = gt v7 v9; - br v10 block2 block3; - - block2: - jump block4; - - block3: - v12.objref = obj.proj v0 0.i256; - v13.i256 = obj.load v12; - v14.i256 = mload v1 i256; - (v15.i256, v16.i1) = usubo v14 v13; - br v16 block5 block6; - - block4: - v21.i256 = phi (0.i256 block2) (v15 block6); - return v21; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - jump block4; -} - -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_56e9(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__len_9d6b(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %impl_SolEncoder__new(v0.i256) -> @layout_6 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_6> = obj.alloc @layout_6; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_6 = obj.load v9; - return v13; -} - -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_5a55() -> @layout_3 { - block0: - jump block1; - - block1: - v1.constref<@layout_3> = const.ref $const_region_0; - v2.objref<@layout_3> = obj.alloc @layout_3; - obj.init.const v2 v1; - v3.@layout_3 = obj.load v2; - return v3; -} - -func inline(always) private %impl_Cursor__new__g463e(v0.@layout_0) -> @layout_1 { +func inline(always) private %impl_Cursor__new__g463e(v0.@layout_0) -> @layout_1 { block0: jump block1; @@ -944,34 +528,6 @@ func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_a7 return v3; } -func inline(always) private %std__lib__evm__calldata__impl_CallData_8f43__new_ad08() -> @layout_3 { - block0: - jump block1; - - block1: - v1.constref<@layout_3> = const.ref $const_region_0; - v2.objref<@layout_3> = obj.alloc @layout_3; - obj.init.const v2 v1; - v3.@layout_3 = obj.load v2; - return v3; -} - -func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_d058(v0.@layout_3) -> @layout_4 { - block0: - jump block1; - - block1: - v2.objref<@layout_4> = obj.alloc @layout_4; - v4.objref<@layout_3> = obj.proj v2 0.i256; - v5.objref = obj.proj v4 0.i256; - v6.i256 = extract_value v0 0.i256; - obj.store v5 v6; - v8.objref = obj.proj v2 1.i256; - obj.store v8 0.i256; - v9.@layout_4 = obj.load v2; - return v9; -} - func inline(always) private %impl_SolDecoder__new__g463e(v0.@layout_0) -> @layout_2 { block0: jump block1; @@ -1029,48 +585,7 @@ func inline(always) private %core__lib__abi__impl_Cursor_1a04__new__gd20d_f33a(v return v9; } -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_9950(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_9950_0(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %impl_trait_SolEncoder__pos(v0.objref<@layout_6>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func private %pos__g8f43(v0.objref<@layout_5>) -> i256 { - block0: - jump block1; - - block1: - v3.objref<@layout_4> = obj.proj v0 0.i256; - v5.objref = obj.proj v3 1.i256; - v6.i256 = obj.load v5; - return v6; -} - -func private %pos__g463e(v0.objref<@layout_2>) -> i256 { +func private %pos(v0.objref<@layout_2>) -> i256 { block0: jump block1; @@ -1203,139 +718,7 @@ func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__rea br v26 block2 block5; } -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_2f0d(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_4> = obj.proj v0 0.i256; - v6.objref<@layout_3> = obj.proj v5 0.i256; - v7.@layout_3 = obj.load v6; - v8.objref<@layout_4> = obj.proj v0 0.i256; - v9.objref<@layout_3> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_30aa v9; - mstore v1 v10 i256; - v11.objref<@layout_4> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_4> = obj.proj v0 0.i256; - v29.objref<@layout_3> = obj.proj v28 0.i256; - v30.@layout_3 = obj.load v29; - v31.objref<@layout_4> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_4> = obj.proj v0 0.i256; - v35.objref<@layout_3> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_61b2 v35 v33; - v38.objref<@layout_4> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_4> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %std__lib__abi__sol__impl_trait_SolDecoder_68ab__read_word__g8f43_b0fa(v0.objref<@layout_5>) -> i256 { - block0: - v1.*i256 = alloca i256; - v2.*i256 = alloca i256; - jump block1; - - block1: - v5.objref<@layout_4> = obj.proj v0 0.i256; - v6.objref<@layout_3> = obj.proj v5 0.i256; - v7.@layout_3 = obj.load v6; - v8.objref<@layout_4> = obj.proj v0 0.i256; - v9.objref<@layout_3> = obj.proj v8 0.i256; - v10.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__len_19cc v9; - mstore v1 v10 i256; - v11.objref<@layout_4> = obj.proj v0 0.i256; - v13.objref = obj.proj v11 1.i256; - v14.i256 = obj.load v13; - (v16.i256, v17.i1) = uaddo v14 32.i256; - br v17 block6 block7; - - block2: - evm_revert 0.i256 0.i256; - - block3: - jump block4; - - block4: - v28.objref<@layout_4> = obj.proj v0 0.i256; - v29.objref<@layout_3> = obj.proj v28 0.i256; - v30.@layout_3 = obj.load v29; - v31.objref<@layout_4> = obj.proj v0 0.i256; - v32.objref = obj.proj v31 1.i256; - v33.i256 = obj.load v32; - v34.objref<@layout_4> = obj.proj v0 0.i256; - v35.objref<@layout_3> = obj.proj v34 0.i256; - v36.i256 = call %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_39d8 v35 v33; - v38.objref<@layout_4> = obj.proj v0 0.i256; - v39.objref = obj.proj v38 1.i256; - obj.store v39 v16; - return v36; - - block5: - v40.i256 = mload v1 i256; - mstore v2 v40 i256; - v42.i256 = mload v2 i256; - v43.i1 = gt v16 v42; - br v43 block2 block3; - - block6: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block7: - v23.objref<@layout_4> = obj.proj v0 0.i256; - v24.objref = obj.proj v23 1.i256; - v25.i256 = obj.load v24; - v26.i1 = lt v16 v25; - br v26 block2 block5; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_3772(v0.objref<@layout_10>) -> @layout_5 { - block0: - jump block1; - - block1: - v1.@layout_3 = call %std__lib__evm__effects__impl_trait_Evm_c913__input_1b01; - v3.@layout_5 = call %std__lib__abi__sol__impl_trait_Sol_1f5f__decoder_with_base__gd20d_f86d v1 4.i256; - return v3; -} - -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_bb28(v0.objref<@layout_10>) -> @layout_5 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_bb28(v0.objref<@layout_8>) -> @layout_5 { block0: jump block1; @@ -1345,7 +728,7 @@ func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_d return v3; } -func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_fe8d(v0.objref<@layout_10>) -> @layout_5 { +func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_decoder__g736d_fe8d(v0.objref<@layout_8>) -> @layout_5 { block0: jump block1; @@ -1355,7 +738,7 @@ func inline(always) private %core__lib__contracts__trait_ContractHost__runtime_d return v3; } -func private %set_base__g463e(v0.objref<@layout_2>, v1.i256) { +func private %set_base(v0.objref<@layout_2>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -1368,47 +751,7 @@ func private %set_base__g463e(v0.objref<@layout_2>, v1.i256) { return; } -func private %set_base__g8f43(v0.objref<@layout_5>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %impl_trait_SolEncoder__set_base(v0.objref<@layout_6>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; - obj.store v6 v3; - return; -} - -func private %set_pos__g8f43(v0.objref<@layout_5>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref<@layout_4> = obj.proj v0 0.i256; - v8.objref = obj.proj v6 1.i256; - obj.store v8 v3; - return; -} - -func private %set_pos__g463e(v0.objref<@layout_2>, v1.i256) { +func private %set_pos(v0.objref<@layout_2>, v1.i256) { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -1422,61 +765,6 @@ func private %set_pos__g463e(v0.objref<@layout_2>, v1.i256) { return; } -func private %impl_trait_SolEncoder__set_pos(v0.objref<@layout_6>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %store_word(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - v3.*i256 = alloca i256; - mstore v2 v0 i256; - mstore v3 v1 i256; - jump block1; - - block1: - v4.i256 = mload v2 i256; - v5.i256 = mload v3 i256; - mstore v4 v5 i256; - return; -} - -func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_15d8(v0.@layout_3, v1.i256) -> @layout_5 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_4 = call %core__lib__abi__impl_Cursor_1a04__new__gd20d_d058 v0; - v5.i256 = mload v2 i256; - v6.@layout_4 = call %core__lib__abi__impl_Cursor_1a04__fork__gd20d_ce1d v4 v5; - v7.i256 = mload v2 i256; - v8.objref<@layout_5> = obj.alloc @layout_5; - v10.objref<@layout_4> = obj.proj v8 0.i256; - v11.objref<@layout_3> = obj.proj v10 0.i256; - v12.@layout_3 = extract_value v6 0.i256; - v13.objref = obj.proj v11 0.i256; - v14.i256 = extract_value v12 0.i256; - obj.store v13 v14; - v16.objref = obj.proj v10 1.i256; - v17.i256 = extract_value v6 1.i256; - obj.store v16 v17; - v18.objref = obj.proj v8 1.i256; - obj.store v18 v7; - v19.@layout_5 = obj.load v8; - return v19; -} - func inline(always) private %std__lib__abi__sol__impl_SolDecoder_113c__with_base__gd20d_a4b0(v0.@layout_3, v1.i256) -> @layout_5 { block0: v2.*i256 = alloca i256; @@ -1546,21 +834,6 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_39d8(v0.objref<@layout_3>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_52f5(v0.objref<@layout_0>, v1.i256) -> i256 { block0: v2.*i256 = alloca i256; @@ -1576,55 +849,6 @@ func private %std__lib__evm__memory_input__impl_trait_MemoryBytes_c1cd__word_at_ return v9; } -func inline(always) private %std__lib__evm__calldata__impl_trait_CallData_087c__word_at_61b2(v0.objref<@layout_3>, v1.i256) -> i256 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 0.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - v8.i256 = add v6 v7; - v9.i256 = evm_calldata_load v8; - return v9; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_6213(v0.objref<@layout_6>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_d116(v0.objref<@layout_6>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - object @EchoContract { section init { diff --git a/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_byplace_effect_arg.snap b/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_byplace_effect_arg.snap index 401973a0ab..7033be68f1 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_byplace_effect_arg.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_byplace_effect_arg.snap @@ -1,19 +1,18 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/newtype_storage_byplace_effect_arg.fe --- target = "evm-ethereum-osaka" -type @layout_0 = {i256, i256}; -type @layout_1 = {i256}; +type @layout_0 = {i256}; +type @layout_1 = {@layout_0, i256}; type @layout_2 = {@layout_1, i256}; -type @layout_3 = {@layout_2, i256}; -type @layout_4 = {}; -type @layout_5 = {@layout_4}; -type @layout_6 = {i256, i256}; +type @layout_3 = {}; +type @layout_4 = {@layout_3}; -global private const @layout_1 $const_region_0 = {0}; +global private const @layout_0 $const_region_0 = {0}; func private %__NewtypeByPlaceEffectArg_init() { block0: @@ -44,58 +43,6 @@ func private %__NewtypeByPlaceEffectArg_recv_0_0(v0.i256, v1.i256) -> i256 { return v16; } -func private %abi_field_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_a5ce_0 v2; - br 0.i1 block2 block3; - - block2: - (v7.i256, v8.i1) = uaddo 32.i256 v3; - br v8 block5 block6; - - block3: - jump block4; - - block4: - return v3; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - return v7; -} - -func private %abi_single_root_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %abi_field_size v2; - return v3; -} - -func private %base(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 0.i256; - v4.i256 = obj.load v3; - return v4; -} - func private %bump(v0.i256) { block0: jump block1; @@ -159,13 +106,11 @@ func private %contract_recv_abi_NewtypeByPlaceEffectArg_1() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_5> = obj.alloc @layout_5; + v5.objref<@layout_4> = obj.alloc @layout_4; call %decode_runtime_args v5; v8.i256 = call %__NewtypeByPlaceEffectArg_recv_0_0 1.i256 0.i256; - v9.@layout_6 = call %encode_single_root_alloc v8; - v10.i256 = extract_value v9 0.i256; - v11.i256 = extract_value v9 1.i256; - evm_return v10 v11; + mstore 0.i256 v8 i256; + evm_return 0.i256 32.i256; } func private %contract_runtime_root_NewtypeByPlaceEffectArg() { @@ -191,7 +136,7 @@ func private %contract_runtime_root_NewtypeByPlaceEffectArg() { unreachable; } -func inline(always) private %decode_payload(v0.objref<@layout_3>) { +func inline(always) private %decode_payload(v0.objref<@layout_2>) { block0: jump block1; @@ -199,17 +144,17 @@ func inline(always) private %decode_payload(v0.objref<@layout_3>) { return; } -func inline(always) private %decode_runtime_args(v0.objref<@layout_5>) { +func inline(always) private %decode_runtime_args(v0.objref<@layout_4>) { block0: jump block1; block1: - v2.@layout_3 = call %runtime_decoder v0; - v3.objref<@layout_3> = obj.alloc @layout_3; - v5.objref<@layout_2> = obj.proj v3 0.i256; - v6.@layout_2 = extract_value v2 0.i256; - v7.objref<@layout_1> = obj.proj v5 0.i256; - v8.@layout_1 = extract_value v6 0.i256; + v2.@layout_2 = call %runtime_decoder v0; + v3.objref<@layout_2> = obj.alloc @layout_2; + v5.objref<@layout_1> = obj.proj v3 0.i256; + v6.@layout_1 = extract_value v2 0.i256; + v7.objref<@layout_0> = obj.proj v5 0.i256; + v8.@layout_0 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -223,7 +168,7 @@ func inline(always) private %decode_runtime_args(v0.objref<@layout_5>) { return; } -func private %decoder_with_base(v0.@layout_1, v1.i256) -> @layout_3 { +func private %decoder_with_base(v0.@layout_0, v1.i256) -> @layout_2 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -231,313 +176,92 @@ func private %decoder_with_base(v0.@layout_1, v1.i256) -> @layout_3 { block1: v3.i256 = mload v2 i256; - v5.@layout_3 = call %with_base v0 v3; + v5.@layout_2 = call %with_base v0 v3; return v5; } -func private %encode(v0.i256, v1.objref<@layout_0>) { - block0: - jump block1; - - block1: - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8b2d v1 v0; - return; -} - -func private %encode_field(v0.i256, v1.objref<@layout_0>, v2.i256) { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v5.i256 = call %base v1; - v8.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_a5ce v0; - v9.i256 = mload v2 i256; - v10.i256 = sub v9 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_a98a v1 v10; - v12.i256 = call %pos v1; - v13.i256 = mload v2 i256; - call %set_base v1 v13; - v15.i256 = mload v2 i256; - call %set_pos v1 v15; - call %encode v0 v1; - call %set_base v1 v5; - call %set_pos v1 v12; - v20.i256 = mload v2 i256; - v21.i256 = add v20 v8; - mstore v2 v21 i256; - return; - - block3: - jump block4; - - block4: - br 1.i1 block5 block6; - - block5: - v24.i256 = call %pos v1; - call %encode_to_ptr v0 v24; - v28.i256 = add v24 32.i256; - call %set_pos v1 v28; - return; - - block6: - jump block7; - - block7: - call %encode v0 v1; - return; -} - -func private %encode_single_root(v0.i256, v1.objref<@layout_0>) { - block0: - v2.*i256 = alloca i256; - jump block1; - - block1: - v4.i256 = call %base v1; - v6.i256 = add v4 32.i256; - mstore v2 v6 i256; - v7.i256 = ptr_to_int v2 i256; - call %encode_field v0 v1 v7; - return; -} - -func private %encode_single_root_alloc(v0.i256) -> @layout_6 { - block0: - jump block1; - - block1: - v2.i256 = call %abi_single_root_size v0; - v3.@layout_0 = call %encoder_new v2; - v4.objref<@layout_0> = obj.alloc @layout_0; - v6.objref = obj.proj v4 0.i256; - v7.i256 = extract_value v3 0.i256; - obj.store v6 v7; - v9.objref = obj.proj v4 1.i256; - v10.i256 = extract_value v3 1.i256; - obj.store v9 v10; - v11.i256 = call %base v4; - call %encode_single_root v0 v4; - v13.objref<@layout_6> = obj.alloc @layout_6; - v14.objref = obj.proj v13 0.i256; - obj.store v14 v11; - v15.objref = obj.proj v13 1.i256; - obj.store v15 v2; - v16.@layout_6 = obj.load v13; - return v16; -} - -func private %encode_to_ptr(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - call %store_word v3 v0; - return; -} - -func private %encoder_new(v0.i256) -> @layout_0 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.@layout_0 = call %impl_SolEncoder__new v2; - return v3; -} - -func inline(always) private %fork(v0.@layout_2, v1.i256) -> @layout_2 { +func inline(always) private %fork(v0.@layout_1, v1.i256) -> @layout_1 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v5.@layout_1 = extract_value v0 0.i256; + v5.@layout_0 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_2> = obj.alloc @layout_2; - v8.objref<@layout_1> = obj.proj v7 0.i256; + v7.objref<@layout_1> = obj.alloc @layout_1; + v8.objref<@layout_0> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_2 = obj.load v7; + v13.@layout_1 = obj.load v7; return v13; } -func private %input() -> @layout_1 { +func private %input() -> @layout_0 { block0: jump block1; block1: - v0.@layout_1 = call %impl_CallData__new; + v0.@layout_0 = call %impl_CallData__new; return v0; } -func inline(always) private %impl_CallData__new() -> @layout_1 { +func inline(always) private %impl_CallData__new() -> @layout_0 { block0: jump block1; block1: - v1.constref<@layout_1> = const.ref $const_region_0; - v2.objref<@layout_1> = obj.alloc @layout_1; + v1.constref<@layout_0> = const.ref $const_region_0; + v2.objref<@layout_0> = obj.alloc @layout_0; obj.init.const v2 v1; - v3.@layout_1 = obj.load v2; + v3.@layout_0 = obj.load v2; return v3; } -func inline(always) private %new__gd20d(v0.@layout_1) -> @layout_2 { +func inline(always) private %new__gd20d(v0.@layout_0) -> @layout_1 { block0: jump block1; block1: - v2.objref<@layout_2> = obj.alloc @layout_2; - v4.objref<@layout_1> = obj.proj v2 0.i256; + v2.objref<@layout_1> = obj.alloc @layout_1; + v4.objref<@layout_0> = obj.proj v2 0.i256; v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; v8.objref = obj.proj v2 1.i256; obj.store v8 0.i256; - v9.@layout_2 = obj.load v2; + v9.@layout_1 = obj.load v2; return v9; } -func private %impl_SolEncoder__new(v0.i256) -> @layout_0 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_0> = obj.alloc @layout_0; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_0 = obj.load v9; - return v13; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_a5ce(v0.i256) -> i256 { +func inline(always) private %runtime_decoder(v0.objref<@layout_4>) -> @layout_2 { block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; jump block1; block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_a5ce_0(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %pos(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func inline(always) private %runtime_decoder(v0.objref<@layout_5>) -> @layout_3 { - block0: - jump block1; - - block1: - v1.@layout_1 = call %input; - v3.@layout_3 = call %decoder_with_base v1 4.i256; + v1.@layout_0 = call %input; + v3.@layout_2 = call %decoder_with_base v1 4.i256; return v3; } -func private %set_base(v0.objref<@layout_0>, v1.i256) { +func inline(always) private %with_base(v0.@layout_0, v1.i256) -> @layout_2 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; - obj.store v6 v3; - return; -} - -func private %set_pos(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %store_word(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - v3.*i256 = alloca i256; - mstore v2 v0 i256; - mstore v3 v1 i256; - jump block1; - - block1: - v4.i256 = mload v2 i256; - v5.i256 = mload v3 i256; - mstore v4 v5 i256; - return; -} - -func inline(always) private %with_base(v0.@layout_1, v1.i256) -> @layout_3 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v4.@layout_2 = call %new__gd20d v0; + v4.@layout_1 = call %new__gd20d v0; v5.i256 = mload v2 i256; - v6.@layout_2 = call %fork v4 v5; + v6.@layout_1 = call %fork v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_3> = obj.alloc @layout_3; - v10.objref<@layout_2> = obj.proj v8 0.i256; - v11.objref<@layout_1> = obj.proj v10 0.i256; - v12.@layout_1 = extract_value v6 0.i256; + v8.objref<@layout_2> = obj.alloc @layout_2; + v10.objref<@layout_1> = obj.proj v8 0.i256; + v11.objref<@layout_0> = obj.proj v10 0.i256; + v12.@layout_0 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -546,44 +270,10 @@ func inline(always) private %with_base(v0.@layout_1, v1.i256) -> @layout_3 { obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_3 = obj.load v8; + v19.@layout_2 = obj.load v8; return v19; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_8b2d(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_a98a(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - object @NewtypeByPlaceEffectArg { section init { diff --git a/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_field_mut_method_call.snap b/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_field_mut_method_call.snap index acef130363..e79944ac1b 100644 --- a/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_field_mut_method_call.snap +++ b/crates/codegen/tests/fixtures/sonatina_ir/newtype_storage_field_mut_method_call.snap @@ -1,19 +1,18 @@ --- source: crates/codegen/tests/sonatina_ir.rs +assertion_line: 431 expression: output input_file: crates/codegen/tests/fixtures/newtype_storage_field_mut_method_call.fe --- target = "evm-ethereum-osaka" -type @layout_0 = {i256, i256}; -type @layout_1 = {i256}; +type @layout_0 = {i256}; +type @layout_1 = {@layout_0, i256}; type @layout_2 = {@layout_1, i256}; -type @layout_3 = {@layout_2, i256}; -type @layout_4 = {}; -type @layout_5 = {@layout_4}; -type @layout_6 = {i256, i256}; +type @layout_3 = {}; +type @layout_4 = {@layout_3}; -global private const @layout_1 $const_region_0 = {0}; +global private const @layout_0 $const_region_0 = {0}; func private %__NewtypeStorageFieldMutMethodCall_init() { block0: @@ -33,58 +32,6 @@ func private %__NewtypeStorageFieldMutMethodCall_recv_0_0(v0.i256) -> i256 { return v3; } -func private %abi_field_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_4e75_0 v2; - br 0.i1 block2 block3; - - block2: - (v7.i256, v8.i1) = uaddo 32.i256 v3; - br v8 block5 block6; - - block3: - jump block4; - - block4: - return v3; - - block5: - mstore 0.i256 35408467139433450592217433187231851964531694900788300625387963629091585785856.i256 i256; - mstore 4.i256 17.i256 i256; - evm_revert 0.i256 36.i256; - - block6: - return v7; -} - -func private %abi_single_root_size(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.i256 = call %abi_field_size v2; - return v3; -} - -func private %base(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 0.i256; - v4.i256 = obj.load v3; - return v4; -} - func private %bump(v0.i256) { block0: jump block1; @@ -148,13 +95,11 @@ func private %contract_recv_abi_NewtypeStorageFieldMutMethodCall_1() { evm_revert 0.i256 0.i256; block3: - v5.objref<@layout_5> = obj.alloc @layout_5; + v5.objref<@layout_4> = obj.alloc @layout_4; call %decode_runtime_args v5; v8.i256 = call %__NewtypeStorageFieldMutMethodCall_recv_0_0 1.i256; - v9.@layout_6 = call %encode_single_root_alloc v8; - v10.i256 = extract_value v9 0.i256; - v11.i256 = extract_value v9 1.i256; - evm_return v10 v11; + mstore 0.i256 v8 i256; + evm_return 0.i256 32.i256; } func private %contract_runtime_root_NewtypeStorageFieldMutMethodCall() { @@ -180,7 +125,7 @@ func private %contract_runtime_root_NewtypeStorageFieldMutMethodCall() { unreachable; } -func inline(always) private %decode_payload(v0.objref<@layout_3>) { +func inline(always) private %decode_payload(v0.objref<@layout_2>) { block0: jump block1; @@ -188,17 +133,17 @@ func inline(always) private %decode_payload(v0.objref<@layout_3>) { return; } -func inline(always) private %decode_runtime_args(v0.objref<@layout_5>) { +func inline(always) private %decode_runtime_args(v0.objref<@layout_4>) { block0: jump block1; block1: - v2.@layout_3 = call %runtime_decoder v0; - v3.objref<@layout_3> = obj.alloc @layout_3; - v5.objref<@layout_2> = obj.proj v3 0.i256; - v6.@layout_2 = extract_value v2 0.i256; - v7.objref<@layout_1> = obj.proj v5 0.i256; - v8.@layout_1 = extract_value v6 0.i256; + v2.@layout_2 = call %runtime_decoder v0; + v3.objref<@layout_2> = obj.alloc @layout_2; + v5.objref<@layout_1> = obj.proj v3 0.i256; + v6.@layout_1 = extract_value v2 0.i256; + v7.objref<@layout_0> = obj.proj v5 0.i256; + v8.@layout_0 = extract_value v6 0.i256; v9.objref = obj.proj v7 0.i256; v10.i256 = extract_value v8 0.i256; obj.store v9 v10; @@ -212,7 +157,7 @@ func inline(always) private %decode_runtime_args(v0.objref<@layout_5>) { return; } -func private %decoder_with_base(v0.@layout_1, v1.i256) -> @layout_3 { +func private %decoder_with_base(v0.@layout_0, v1.i256) -> @layout_2 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; @@ -220,313 +165,92 @@ func private %decoder_with_base(v0.@layout_1, v1.i256) -> @layout_3 { block1: v3.i256 = mload v2 i256; - v5.@layout_3 = call %with_base v0 v3; + v5.@layout_2 = call %with_base v0 v3; return v5; } -func private %encode(v0.i256, v1.objref<@layout_0>) { - block0: - jump block1; - - block1: - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_90ae v1 v0; - return; -} - -func private %encode_field(v0.i256, v1.objref<@layout_0>, v2.i256) { - block0: - jump block1; - - block1: - br 0.i1 block2 block3; - - block2: - v5.i256 = call %base v1; - v8.i256 = call %core__lib__abi__trait_AbiSize__payload_size__ge513_4e75 v0; - v9.i256 = mload v2 i256; - v10.i256 = sub v9 v5; - call %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_9251 v1 v10; - v12.i256 = call %pos v1; - v13.i256 = mload v2 i256; - call %set_base v1 v13; - v15.i256 = mload v2 i256; - call %set_pos v1 v15; - call %encode v0 v1; - call %set_base v1 v5; - call %set_pos v1 v12; - v20.i256 = mload v2 i256; - v21.i256 = add v20 v8; - mstore v2 v21 i256; - return; - - block3: - jump block4; - - block4: - br 1.i1 block5 block6; - - block5: - v24.i256 = call %pos v1; - call %encode_to_ptr v0 v24; - v28.i256 = add v24 32.i256; - call %set_pos v1 v28; - return; - - block6: - jump block7; - - block7: - call %encode v0 v1; - return; -} - -func private %encode_single_root(v0.i256, v1.objref<@layout_0>) { - block0: - v2.*i256 = alloca i256; - jump block1; - - block1: - v4.i256 = call %base v1; - v6.i256 = add v4 32.i256; - mstore v2 v6 i256; - v7.i256 = ptr_to_int v2 i256; - call %encode_field v0 v1 v7; - return; -} - -func private %encode_single_root_alloc(v0.i256) -> @layout_6 { - block0: - jump block1; - - block1: - v2.i256 = call %abi_single_root_size v0; - v3.@layout_0 = call %encoder_new v2; - v4.objref<@layout_0> = obj.alloc @layout_0; - v6.objref = obj.proj v4 0.i256; - v7.i256 = extract_value v3 0.i256; - obj.store v6 v7; - v9.objref = obj.proj v4 1.i256; - v10.i256 = extract_value v3 1.i256; - obj.store v9 v10; - v11.i256 = call %base v4; - call %encode_single_root v0 v4; - v13.objref<@layout_6> = obj.alloc @layout_6; - v14.objref = obj.proj v13 0.i256; - obj.store v14 v11; - v15.objref = obj.proj v13 1.i256; - obj.store v15 v2; - v16.@layout_6 = obj.load v13; - return v16; -} - -func private %encode_to_ptr(v0.i256, v1.i256) { +func inline(always) private %fork(v0.@layout_1, v1.i256) -> @layout_1 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v3.i256 = mload v2 i256; - call %store_word v3 v0; - return; -} - -func private %encoder_new(v0.i256) -> @layout_0 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - v2.i256 = mload v1 i256; - v3.@layout_0 = call %impl_SolEncoder__new v2; - return v3; -} - -func inline(always) private %fork(v0.@layout_2, v1.i256) -> @layout_2 { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.@layout_1 = extract_value v0 0.i256; + v5.@layout_0 = extract_value v0 0.i256; v6.i256 = mload v2 i256; - v7.objref<@layout_2> = obj.alloc @layout_2; - v8.objref<@layout_1> = obj.proj v7 0.i256; + v7.objref<@layout_1> = obj.alloc @layout_1; + v8.objref<@layout_0> = obj.proj v7 0.i256; v9.objref = obj.proj v8 0.i256; v10.i256 = extract_value v5 0.i256; obj.store v9 v10; v12.objref = obj.proj v7 1.i256; obj.store v12 v6; - v13.@layout_2 = obj.load v7; + v13.@layout_1 = obj.load v7; return v13; } -func private %input() -> @layout_1 { +func private %input() -> @layout_0 { block0: jump block1; block1: - v0.@layout_1 = call %impl_CallData__new; + v0.@layout_0 = call %impl_CallData__new; return v0; } -func inline(always) private %impl_CallData__new() -> @layout_1 { +func inline(always) private %impl_CallData__new() -> @layout_0 { block0: jump block1; block1: - v1.constref<@layout_1> = const.ref $const_region_0; - v2.objref<@layout_1> = obj.alloc @layout_1; + v1.constref<@layout_0> = const.ref $const_region_0; + v2.objref<@layout_0> = obj.alloc @layout_0; obj.init.const v2 v1; - v3.@layout_1 = obj.load v2; + v3.@layout_0 = obj.load v2; return v3; } -func private %impl_SolEncoder__new(v0.i256) -> @layout_0 { +func inline(always) private %new__gd20d(v0.@layout_0) -> @layout_1 { block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; jump block1; block1: - v2.i256 = mload v1 i256; - v4.i1 = eq v2 0.i256; - br v4 block2 block3; - - block2: - jump block4; - - block3: - v5.i256 = mload v1 i256; - v6.*i8 = evm_malloc v5; - v7.i256 = ptr_to_int v6 i256; - jump block4; - - block4: - v8.i256 = phi (0.i256 block2) (v7 block3); - v9.objref<@layout_0> = obj.alloc @layout_0; - v10.objref = obj.proj v9 0.i256; - obj.store v10 v8; - v12.objref = obj.proj v9 1.i256; - obj.store v12 v8; - v13.@layout_0 = obj.load v9; - return v13; -} - -func inline(always) private %new__gd20d(v0.@layout_1) -> @layout_2 { - block0: - jump block1; - - block1: - v2.objref<@layout_2> = obj.alloc @layout_2; - v4.objref<@layout_1> = obj.proj v2 0.i256; + v2.objref<@layout_1> = obj.alloc @layout_1; + v4.objref<@layout_0> = obj.proj v2 0.i256; v5.objref = obj.proj v4 0.i256; v6.i256 = extract_value v0 0.i256; obj.store v5 v6; v8.objref = obj.proj v2 1.i256; obj.store v8 0.i256; - v9.@layout_2 = obj.load v2; + v9.@layout_1 = obj.load v2; return v9; } -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_4e75(v0.i256) -> i256 { - block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; - jump block1; - - block1: - return 32.i256; -} - -func private %core__lib__abi__trait_AbiSize__payload_size__ge513_4e75_0(v0.i256) -> i256 { +func inline(always) private %runtime_decoder(v0.objref<@layout_4>) -> @layout_2 { block0: - v1.*i256 = alloca i256; - mstore v1 v0 i256; jump block1; block1: - return 32.i256; -} - -func private %pos(v0.objref<@layout_0>) -> i256 { - block0: - jump block1; - - block1: - v3.objref = obj.proj v0 1.i256; - v4.i256 = obj.load v3; - return v4; -} - -func inline(always) private %runtime_decoder(v0.objref<@layout_5>) -> @layout_3 { - block0: - jump block1; - - block1: - v1.@layout_1 = call %input; - v3.@layout_3 = call %decoder_with_base v1 4.i256; + v1.@layout_0 = call %input; + v3.@layout_2 = call %decoder_with_base v1 4.i256; return v3; } -func private %set_base(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 0.i256; - obj.store v6 v3; - return; -} - -func private %set_pos(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v3.i256 = mload v2 i256; - v6.objref = obj.proj v0 1.i256; - obj.store v6 v3; - return; -} - -func private %store_word(v0.i256, v1.i256) { - block0: - v2.*i256 = alloca i256; - v3.*i256 = alloca i256; - mstore v2 v0 i256; - mstore v3 v1 i256; - jump block1; - - block1: - v4.i256 = mload v2 i256; - v5.i256 = mload v3 i256; - mstore v4 v5 i256; - return; -} - -func inline(always) private %with_base(v0.@layout_1, v1.i256) -> @layout_3 { +func inline(always) private %with_base(v0.@layout_0, v1.i256) -> @layout_2 { block0: v2.*i256 = alloca i256; mstore v2 v1 i256; jump block1; block1: - v4.@layout_2 = call %new__gd20d v0; + v4.@layout_1 = call %new__gd20d v0; v5.i256 = mload v2 i256; - v6.@layout_2 = call %fork v4 v5; + v6.@layout_1 = call %fork v4 v5; v7.i256 = mload v2 i256; - v8.objref<@layout_3> = obj.alloc @layout_3; - v10.objref<@layout_2> = obj.proj v8 0.i256; - v11.objref<@layout_1> = obj.proj v10 0.i256; - v12.@layout_1 = extract_value v6 0.i256; + v8.objref<@layout_2> = obj.alloc @layout_2; + v10.objref<@layout_1> = obj.proj v8 0.i256; + v11.objref<@layout_0> = obj.proj v10 0.i256; + v12.@layout_0 = extract_value v6 0.i256; v13.objref = obj.proj v11 0.i256; v14.i256 = extract_value v12 0.i256; obj.store v13 v14; @@ -535,44 +259,10 @@ func inline(always) private %with_base(v0.@layout_1, v1.i256) -> @layout_3 { obj.store v16 v17; v18.objref = obj.proj v8 1.i256; obj.store v18 v7; - v19.@layout_3 = obj.load v8; + v19.@layout_2 = obj.load v8; return v19; } -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_90ae(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - -func private %std__lib__abi__sol__impl_trait_SolEncoder_19ce__write_word_9251(v0.objref<@layout_0>, v1.i256) { - block0: - v2.*i256 = alloca i256; - mstore v2 v1 i256; - jump block1; - - block1: - v5.objref = obj.proj v0 1.i256; - v6.i256 = obj.load v5; - v7.i256 = mload v2 i256; - mstore v6 v7 i256; - v10.i256 = add v6 32.i256; - v11.objref = obj.proj v0 1.i256; - obj.store v11 v10; - return; -} - object @NewtypeStorageFieldMutMethodCall { section init { diff --git a/crates/mir/src/runtime/ir.rs b/crates/mir/src/runtime/ir.rs index ce65ea20ff..be7869f488 100644 --- a/crates/mir/src/runtime/ir.rs +++ b/crates/mir/src/runtime/ir.rs @@ -930,12 +930,63 @@ pub enum RuntimeInputPlan<'db> { decode_args_fn: RuntimeInstance<'db>, projected_fields: Box<[u32]>, }, + /// Optimized path for non-dynamic types whose fields each fit in a single + /// ABI head slot. Each field is loaded directly via `calldataload` at a + /// known offset, skipping malloc / calldatacopy / MemoryBytes / SolDecoder + /// entirely. + DirectCalldataLoad { + msg_ty: TyId<'db>, + /// Per-field ABI head sizes (in bytes). The calldata offset of + /// field `i` is `4 + sum(field_head_sizes[..i])`. + field_head_sizes: Box<[u32]>, + projected_fields: Box<[u32]>, + }, + /// Hybrid path for message types where some fields are non-mut scalars at + /// known ABI offsets and others require the full decode pipeline. + LazyCalldataLoad { + msg_ty: TyId<'db>, + /// The decode function for the full message type. `None` when every + /// field uses a non-Decode strategy. + decode_fn: Option>, + /// Per-field load strategy, indexed by the message struct's field order. + field_strategies: Box<[FieldLoadStrategy]>, + projected_fields: Box<[u32]>, + }, +} + +/// Describes how a single field of a message struct should be loaded from +/// calldata in a `LazyCalldataLoad` plan. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Update)] +pub enum FieldLoadStrategy { + /// Load directly via `calldataload` at a known offset. + Direct, + /// Load through the standard SolDecoder pipeline. + Decode, + /// Skip this field and pass the absolute calldata byte offset. + SkipWithOffset { + /// The ABI head-size of this field in bytes. + head_size: u32, + }, + /// Decode a dynamic-typed view (BytesView or StringView) directly from + /// calldata without copying the payload into memory. + LazyDynamicView { + /// `true` for StringView fields, `false` for BytesView fields. + is_string_view: bool, + }, } #[derive(Clone, Debug, PartialEq, Eq, Hash, Update)] pub enum RuntimeReturnPlan<'db> { Unit, - Value { ty: TyId<'db> }, + Value { + ty: TyId<'db>, + }, + /// Optimized path for a single word-scalar return value: emit a direct + /// `mstore` at offset 0 and `return(0, 32)` instead of calling + /// `encode_single_root_alloc`. + DirectScalarReturn { + ty: TyId<'db>, + }, } #[derive(Clone, Debug, PartialEq, Eq, Hash, Update)] diff --git a/crates/mir/src/runtime/package.rs b/crates/mir/src/runtime/package.rs index bbda50e785..40ba781f86 100644 --- a/crates/mir/src/runtime/package.rs +++ b/crates/mir/src/runtime/package.rs @@ -3,20 +3,25 @@ use hir::semantic::{RecvArmAbiInfo, RecvArmView}; use hir::{ analysis::{ semantic::{ - GenericSubst, ImplEnv, ManualContractSection, RootSemanticInstanceError, - SemanticInstance, SemanticInstanceKey, get_or_build_semantic_instance, + EffectProviderSubst, GenericSubst, ImplEnv, ManualContractSection, + RootSemanticInstanceError, SemConstScalar, SemConstValue, SemanticInstance, + SemanticInstanceKey, eval_const_instance, get_or_build_semantic_instance, owner_effect_bindings, root_semantic_instance_key, }, ty::{ const_ty::ConstTyData, corelib::{resolve_core_trait, resolve_lib_func_path, resolve_lib_type_path}, - trait_def::{TraitInstId, resolve_trait_method_instance}, - trait_resolution::TraitSolveCx, + trait_def::{ + TraitInstId, assoc_const_body_and_impl_args_for_trait_inst, + resolve_trait_method_instance, + }, + trait_resolution::{PredicateListId, TraitSolveCx}, ty_check::{BodyOwner, EffectParamSite, LocalBinding}, - ty_def::{TyData, TyId}, + ty_def::{PrimTy, TyBase, TyData, TyId}, }, }, hir_def::{Contract, Func, IdentId, InlineHint, ItemKind, ManualContractRootAttr, TopLevelMod}, + span::{DesugaredOrigin, HirOrigin}, }; use rustc_hash::{FxHashMap, FxHashSet}; @@ -44,12 +49,13 @@ use crate::{ }, runtime::{ AddressSpaceKind, ConstRegionId, ContractInitAbiPlan, ContractRecvAbiPlan, DispatchArm, - DispatchDefault, EntryEffectArgPlan, InitArgsPlan, LayoutId, LayoutKey, RefKind, RefView, - ResolvedCodeRegion, RuntimeClass, RuntimeCodeRegion, RuntimeCodeRegionKey, RuntimeFunction, - RuntimeFunctionOwner, RuntimeInlineHint, RuntimeInputPlan, RuntimeLinkage, RuntimeObject, - RuntimePackage, RuntimePackagePlan, RuntimeReturnPlan, RuntimeSection, RuntimeSectionName, - RuntimeSectionRef, RuntimeSyntheticSpec, ScalarClass, ScalarRepr, ScalarRole, - TargetRootProviderBinding, TargetRootProviderMaterialization, + DispatchDefault, EntryEffectArgPlan, FieldLoadStrategy, InitArgsPlan, LayoutId, LayoutKey, + RefKind, RefView, ResolvedCodeRegion, RuntimeClass, RuntimeCodeRegion, + RuntimeCodeRegionKey, RuntimeFunction, RuntimeFunctionOwner, RuntimeInlineHint, + RuntimeInputPlan, RuntimeLinkage, RuntimeObject, RuntimePackage, RuntimePackagePlan, + RuntimeReturnPlan, RuntimeSection, RuntimeSectionName, RuntimeSectionRef, + RuntimeSyntheticSpec, ScalarClass, ScalarRepr, ScalarRole, TargetRootProviderBinding, + TargetRootProviderMaterialization, }, verify::verify_runtime_package, }; @@ -775,7 +781,34 @@ fn contract_recv_wrapper<'db>( let projected_fields = visible_recv_arg_fields(db, semantic, arm); let input = if abi_info.args_ty == TyId::unit(db) { RuntimeInputPlan::None + } else if let Some(field_head_sizes) = + direct_calldata_load_info(db, contract.scope(), abi_info.args_ty) + { + RuntimeInputPlan::DirectCalldataLoad { + msg_ty: abi_info.args_ty, + field_head_sizes, + projected_fields, + } + } else if let Some(strategies) = lazy_field_strategies(db, abi_info.args_ty, semantic, arm) { + let needs_decode = strategies.contains(&FieldLoadStrategy::Decode); + let decode_fn = if needs_decode { + Some(resolve_decode_instance( + db, + contract.scope(), + abi_info.args_ty, + memory_bytes_ty(db, contract.scope())?, + )?) + } else { + None + }; + RuntimeInputPlan::LazyCalldataLoad { + msg_ty: abi_info.args_ty, + decode_fn, + field_strategies: strategies, + projected_fields, + } } else { + // Fallback: existing host-binding decode path let host = contract_recv_host_binding(db, contract, recv.recv_idx(db), arm.arm_idx(db))?; RuntimeInputPlan::DecodeHostPayload { msg_ty: abi_info.args_ty, @@ -791,7 +824,11 @@ fn contract_recv_wrapper<'db>( } }; let ret = if let Some(ret_ty) = abi_info.ret_ty { - RuntimeReturnPlan::Value { ty: ret_ty } + if is_direct_return_eligible(db, contract.scope(), ret_ty) { + RuntimeReturnPlan::DirectScalarReturn { ty: ret_ty } + } else { + RuntimeReturnPlan::Value { ty: ret_ty } + } } else { RuntimeReturnPlan::Unit }; @@ -2157,6 +2194,29 @@ fn runtime_input_plan_symbol_key<'db>(db: &'db dyn MirDb, plan: &RuntimeInputPla target_root_provider_binding_sort_key(db, host), runtime_instance_symbol_key(db, *decode_args_fn) ), + RuntimeInputPlan::DirectCalldataLoad { + msg_ty, + field_head_sizes, + projected_fields, + } => format!( + "direct_load:{}:{field_head_sizes:?}:{projected_fields:?}", + type_identity(db, *msg_ty), + ), + RuntimeInputPlan::LazyCalldataLoad { + msg_ty, + decode_fn, + field_strategies, + projected_fields, + } => { + let decode_key = decode_fn + .map(|f| runtime_instance_symbol_key(db, f)) + .unwrap_or_else(|| "none".to_string()); + format!( + "lazy:{}:{}:{field_strategies:?}:{projected_fields:?}", + type_identity(db, *msg_ty), + decode_key + ) + } } } @@ -2174,6 +2234,29 @@ fn runtime_input_plan_sort_key<'db>(db: &'db dyn MirDb, plan: &RuntimeInputPlan< target_root_provider_binding_sort_key(db, host), runtime_instance_sort_key(db, *decode_args_fn) ), + RuntimeInputPlan::DirectCalldataLoad { + msg_ty, + field_head_sizes, + projected_fields, + } => format!( + "direct_load:{}:{field_head_sizes:?}:{projected_fields:?}", + type_identity(db, *msg_ty), + ), + RuntimeInputPlan::LazyCalldataLoad { + msg_ty, + decode_fn, + field_strategies, + projected_fields, + } => { + let decode_key = decode_fn + .map(|f| runtime_instance_sort_key(db, f)) + .unwrap_or_else(|| "none".to_string()); + format!( + "lazy:{}:{}:{field_strategies:?}:{projected_fields:?}", + type_identity(db, *msg_ty), + decode_key + ) + } } } @@ -2574,6 +2657,376 @@ fn sanitize_object_name(value: &str) -> String { } } +fn eval_trait_assoc_const<'db>( + db: &'db dyn MirDb, + scope: hir::hir_def::scope_graph::ScopeId<'db>, + trait_path: &[&str], + trait_args: Vec>, + const_name: &str, +) -> Option> { + let trait_def = resolve_core_trait(db, scope, trait_path)?; + let inst = TraitInstId::new_simple(db, trait_def, trait_args); + let assumptions = PredicateListId::empty_list(db); + let solve_cx = TraitSolveCx::new(db, scope).with_assumptions(assumptions); + let name = IdentId::new(db, const_name.to_string()); + let (body, impl_args) = + assoc_const_body_and_impl_args_for_trait_inst(db, solve_cx, inst, name)?; + let key = SemanticInstanceKey::new( + db, + BodyOwner::AnonConstBody { + body, + expected: TyId::invalid(db, hir::analysis::ty::ty_def::InvalidCause::Other), + }, + GenericSubst::new(db, impl_args), + EffectProviderSubst::empty(db), + ImplEnv::new(db, scope, assumptions, vec![inst]), + ); + let instance = get_or_build_semantic_instance(db, key); + eval_const_instance(db, instance).ok() +} + +/// Query `AbiSize::HEAD_SIZE` for `ty`, returning the value as a `u32`. +fn query_head_size<'db>( + db: &'db dyn MirDb, + scope: hir::hir_def::scope_graph::ScopeId<'db>, + ty: TyId<'db>, +) -> Option { + let const_id = eval_trait_assoc_const(db, scope, &["abi", "AbiSize"], vec![ty], "HEAD_SIZE")?; + match const_id.value(db) { + SemConstValue::Scalar { + value: SemConstScalar::Int { value }, + .. + } => { + let v: u64 = value.try_into().ok()?; + u32::try_from(v).ok() + } + _ => None, + } +} + +/// Query `AbiSize::IS_DYNAMIC` for `ty`. +fn query_is_dynamic<'db>( + db: &'db dyn MirDb, + scope: hir::hir_def::scope_graph::ScopeId<'db>, + ty: TyId<'db>, +) -> Option { + let const_id = eval_trait_assoc_const(db, scope, &["abi", "AbiSize"], vec![ty], "IS_DYNAMIC")?; + match const_id.value(db) { + SemConstValue::Scalar { + value: SemConstScalar::Bool(v), + .. + } => Some(v), + _ => None, + } +} + +/// Query `Encode::DIRECT_ENCODE` for `ty`. +fn query_direct_encode<'db>( + db: &'db dyn MirDb, + scope: hir::hir_def::scope_graph::ScopeId<'db>, + ty: TyId<'db>, +) -> Option { + let abi_ty = resolve_lib_type_path(db, scope, "std::abi::Sol")?; + let const_id = eval_trait_assoc_const( + db, + scope, + &["abi", "Encode"], + vec![ty, abi_ty], + "DIRECT_ENCODE", + )?; + match const_id.value(db) { + SemConstValue::Scalar { + value: SemConstScalar::Bool(v), + .. + } => Some(v), + _ => None, + } +} + +/// Returns `true` if `ty` supports `DirectScalarReturn`. +fn is_direct_return_eligible<'db>( + db: &'db dyn MirDb, + scope: hir::hir_def::scope_graph::ScopeId<'db>, + ty: TyId<'db>, +) -> bool { + let base = ty.base_ty(db); + let is_word_scalar = matches!( + base.data(db), + TyData::TyBase(TyBase::Prim(PrimTy::U256 | PrimTy::Usize)) + ); + if !is_word_scalar { + return false; + } + query_direct_encode(db, scope, ty).unwrap_or(false) +} + +/// Returns `true` if `msg_ty` is a compiler-generated message struct. +fn is_compiler_generated_msg<'db>(db: &'db dyn MirDb, msg_ty: TyId<'db>) -> bool { + let Some(adt_ref) = msg_ty.adt_ref(db) else { + return false; + }; + match adt_ref { + hir::analysis::ty::adt_def::AdtRef::Struct(struct_) => { + matches!( + hir::span::struct_ast(db, struct_), + HirOrigin::Desugared(DesugaredOrigin::Msg(_)) + ) + } + _ => false, + } +} + +/// Check if `msg_ty` is eligible for `DirectCalldataLoad`. +fn direct_calldata_load_info<'db>( + db: &'db dyn MirDb, + scope: hir::hir_def::scope_graph::ScopeId<'db>, + msg_ty: TyId<'db>, +) -> Option> { + if !is_compiler_generated_msg(db, msg_ty) { + return None; + } + let fields = msg_ty.field_types(db); + if fields.is_empty() { + return None; + } + if query_is_dynamic(db, scope, msg_ty).unwrap_or(true) { + return None; + } + let mut head_sizes = Vec::with_capacity(fields.len()); + for &field_ty in fields.iter() { + let head_size = query_head_size(db, scope, field_ty)?; + if head_size != 32 { + return None; + } + if !is_primitive_word_scalar(db, field_ty) { + return None; + } + head_sizes.push(head_size); + } + Some(head_sizes.into_boxed_slice()) +} + +fn is_primitive_word_scalar(db: &dyn MirDb, ty: TyId<'_>) -> bool { + let base = ty.base_ty(db); + match base.data(db) { + // Only full-word types are safe for raw calldataload without ABI + // canonicality validation. Narrow types (bool, u8, i8, etc.) require + // the decoder to check that high bits are zero (unsigned) or properly + // sign-extended (signed), so they must go through the decode path. + TyData::TyBase(TyBase::Prim(prim)) => { + matches!(prim, PrimTy::U256 | PrimTy::I256 | PrimTy::Usize) + } + _ => false, + } +} + +fn array_view_head_size(db: &dyn MirDb, ty: TyId<'_>) -> Option { + use common::ingot::IngotKind; + use hir::analysis::ty::const_ty::EvaluatedConstTy; + + let base = ty.base_ty(db); + let TyData::TyBase(TyBase::Adt(adt)) = base.data(db) else { + return None; + }; + let adt_ref = adt.adt_ref(db); + let name = adt_ref.name(db)?; + if name.data(db) != "ArrayView" { + return None; + } + if !base + .ingot(db) + .is_some_and(|ingot| ingot.kind(db) == IngotKind::Core) + { + return None; + } + + let (_, args) = ty.decompose_ty_app(db); + if args.len() < 2 { + return None; + } + let elem_ty = args[0]; + let len_ty = args[1]; + + let TyData::ConstTy(const_ty) = len_ty.data(db) else { + return None; + }; + let n: u32 = match const_ty.data(db) { + ConstTyData::Evaluated(EvaluatedConstTy::LitInt(int_id), _) => { + let digits = int_id.data(db).to_u32_digits(); + if digits.len() > 1 { + return None; + } + digits.first().copied().unwrap_or(0) + } + _ => return None, + }; + + let elem_head_size = static_abi_head_size(db, elem_ty)?; + n.checked_mul(elem_head_size) +} + +fn is_bytes_view_ty(db: &dyn MirDb, ty: TyId<'_>) -> bool { + use common::ingot::IngotKind; + + let base = ty.base_ty(db); + let TyData::TyBase(TyBase::Adt(adt)) = base.data(db) else { + return false; + }; + let adt_ref = adt.adt_ref(db); + let Some(name) = adt_ref.name(db) else { + return false; + }; + if name.data(db) != "BytesView" { + return false; + } + base.ingot(db) + .is_some_and(|ingot| ingot.kind(db) == IngotKind::Core) +} + +fn is_string_view_ty(db: &dyn MirDb, ty: TyId<'_>) -> bool { + use common::ingot::IngotKind; + + let base = ty.base_ty(db); + let TyData::TyBase(TyBase::Adt(adt)) = base.data(db) else { + return false; + }; + let adt_ref = adt.adt_ref(db); + let Some(name) = adt_ref.name(db) else { + return false; + }; + if name.data(db) != "StringView" { + return false; + } + base.ingot(db) + .is_some_and(|ingot| ingot.kind(db) == IngotKind::Core) +} + +pub(crate) fn static_abi_head_size(db: &dyn MirDb, ty: TyId<'_>) -> Option { + static_abi_head_size_inner(db, ty, 0) +} + +/// Max recursion depth for `static_abi_head_size` to prevent stack overflow +/// on pathological recursive types. +const STATIC_ABI_HEAD_SIZE_MAX_DEPTH: u32 = 10; + +fn static_abi_head_size_inner(db: &dyn MirDb, ty: TyId<'_>, depth: u32) -> Option { + if depth > STATIC_ABI_HEAD_SIZE_MAX_DEPTH { + return None; + } + if is_primitive_word_scalar(db, ty) { + return Some(32); + } + let fields = ty.field_types(db); + if fields.len() == 1 { + return static_abi_head_size_inner(db, fields[0], depth + 1); + } + if ty.is_array(db) { + let n = ty.array_len(db)? as u32; + let (_, args) = ty.decompose_ty_app(db); + let elem_ty = *args.first()?; + let elem_size = static_abi_head_size_inner(db, elem_ty, depth + 1)?; + return n.checked_mul(elem_size); + } + if let Some(size) = array_view_head_size(db, ty) { + return Some(size); + } + if is_bytes_view_ty(db, ty) || is_string_view_ty(db, ty) { + return Some(32); + } + None +} + +/// Determine the per-field load strategies for a lazy calldata load plan. +fn lazy_field_strategies<'db>( + db: &'db dyn MirDb, + msg_ty: TyId<'db>, + semantic: SemanticInstance<'db>, + arm: RecvArmView<'db>, +) -> Option> { + if !is_compiler_generated_msg(db, msg_ty) { + return None; + } + let field_types = msg_ty.field_types(db); + if field_types.is_empty() { + return None; + } + + let binding_plans = runtime_visible_binding_plans(db, semantic); + let arg_bindings = arm.arg_bindings(db); + let tuple_index_by_pat: FxHashMap<_, _> = arg_bindings + .iter() + .map(|b| (b.pat, b.tuple_index)) + .collect(); + + let mut field_is_mut = vec![false; field_types.len()]; + for entry in binding_plans.iter() { + if let LocalBinding::Local { pat, is_mut: true } = entry.binding + && let Some(&tuple_idx) = tuple_index_by_pat.get(&pat) + { + field_is_mut[tuple_idx as usize] = true; + } + } + + let mut strategies: Vec = field_types + .iter() + .enumerate() + .map(|(i, &field_ty)| { + if !field_is_mut[i] && is_primitive_word_scalar(db, field_ty) { + FieldLoadStrategy::Direct + } else if !field_is_mut[i] { + if let Some(head_size) = array_view_head_size(db, field_ty) { + FieldLoadStrategy::SkipWithOffset { head_size } + } else if is_bytes_view_ty(db, field_ty) { + FieldLoadStrategy::LazyDynamicView { + is_string_view: false, + } + } else if is_string_view_ty(db, field_ty) { + FieldLoadStrategy::LazyDynamicView { + is_string_view: true, + } + } else { + FieldLoadStrategy::Decode + } + } else { + FieldLoadStrategy::Decode + } + }) + .collect(); + + let mut all_preceding_static = true; + for (i, &field_ty) in field_types.iter().enumerate() { + if static_abi_head_size(db, field_ty).is_none() { + all_preceding_static = false; + } + match strategies[i] { + FieldLoadStrategy::Direct + | FieldLoadStrategy::SkipWithOffset { .. } + | FieldLoadStrategy::LazyDynamicView { .. } => { + if !all_preceding_static { + strategies[i] = FieldLoadStrategy::Decode; + } + } + FieldLoadStrategy::Decode => {} + } + } + + let has_direct = strategies.contains(&FieldLoadStrategy::Direct); + let has_skip = strategies + .iter() + .any(|s| matches!(s, FieldLoadStrategy::SkipWithOffset { .. })); + let has_lazy_view = strategies + .iter() + .any(|s| matches!(s, FieldLoadStrategy::LazyDynamicView { .. })); + let has_decode = strategies.contains(&FieldLoadStrategy::Decode); + + let distinct_count = has_direct as u8 + has_skip as u8 + has_lazy_view as u8 + has_decode as u8; + if has_skip || has_lazy_view || distinct_count >= 2 { + Some(strategies.into_boxed_slice()) + } else { + None + } +} + #[cfg(test)] mod tests { use common::InputDb; @@ -2774,11 +3227,13 @@ pub contract DecodeHarness { let top_mod = db.top_mod(file); let raw_plan = recv_wrapper_plan(&db, top_mod, "raw(uint256)"); - let RuntimeInputPlan::DecodeHostPayload { - projected_fields, .. - } = raw_plan.input - else { - panic!("raw(uint256) should decode host payload"); + let projected_fields = match raw_plan.input { + RuntimeInputPlan::DirectCalldataLoad { + projected_fields, .. + } => projected_fields, + other => panic!( + "raw(uint256) with a single u256 field should select DirectCalldataLoad, got {other:?}" + ), }; assert!( projected_fields.is_empty(), @@ -2786,11 +3241,13 @@ pub contract DecodeHarness { ); let swap_plan = recv_wrapper_plan(&db, top_mod, "swap(uint64,uint64)"); - let RuntimeInputPlan::DecodeHostPayload { - projected_fields, .. - } = swap_plan.input - else { - panic!("swap(uint64,uint64) should decode host payload"); + let projected_fields = match swap_plan.input { + RuntimeInputPlan::DecodeHostPayload { + projected_fields, .. + } => projected_fields, + other => panic!( + "swap(uint64,uint64) with narrow u64 fields should fall back to DecodeHostPayload, got {other:?}" + ), }; assert_eq!( projected_fields.as_ref(), diff --git a/crates/mir/src/runtime/synthetic.rs b/crates/mir/src/runtime/synthetic.rs index 4d3801679a..435cdc8610 100644 --- a/crates/mir/src/runtime/synthetic.rs +++ b/crates/mir/src/runtime/synthetic.rs @@ -25,12 +25,12 @@ use crate::{ layout_size_bytes, runtime::{ AddressSpaceKind, BorrowAccess, ConstScalar, ContractInitAbiPlan, ContractRecvAbiPlan, - DispatchDefault, EntryEffectArgPlan, InitArgsPlan, PlaceElem, PlaceRoot, RBlock, RBlockId, - RExpr, RLocal, RLocalId, RStmt, RTerminator, RefKind, RefView, RuntimeBody, - RuntimeBoundarySpec, RuntimeBuiltin, RuntimeCarrier, RuntimeClass, RuntimeExitBehavior, - RuntimeInputPlan, RuntimeInterfaceSignature, RuntimeLocalRoot, RuntimeParamPlan, - RuntimePlace, RuntimeReturnPlan, RuntimeSyntheticSpec, ScalarClass, ScalarRepr, ScalarRole, - TargetRootProviderBinding, TargetRootProviderMaterialization, + DispatchDefault, EntryEffectArgPlan, FieldLoadStrategy, InitArgsPlan, PlaceElem, PlaceRoot, + RBlock, RBlockId, RExpr, RLocal, RLocalId, RStmt, RTerminator, RefKind, RefView, + RuntimeBody, RuntimeBoundarySpec, RuntimeBuiltin, RuntimeCarrier, RuntimeClass, + RuntimeExitBehavior, RuntimeInputPlan, RuntimeInterfaceSignature, RuntimeLocalRoot, + RuntimeParamPlan, RuntimePlace, RuntimeReturnPlan, RuntimeSyntheticSpec, ScalarClass, + ScalarRepr, ScalarRole, TargetRootProviderBinding, TargetRootProviderMaterialization, lower::{ boundary::{RuntimeValueAddress, RuntimeValueSource}, classify::{ref_class_for_place_result, semantic_return_ty}, @@ -470,31 +470,303 @@ impl<'db> SyntheticBodyBuilder<'db> { fn build_contract_recv_abi(&mut self, plan: ContractRecvAbiPlan<'db>) { let zero = self.push_const_word(RBlockId::from_u32(0), 0); - let cont_bb = if plan.payable { + let mut cont_bb = if plan.payable { RBlockId::from_u32(0) } else { self.emit_nonpayable_guard(zero) }; let mut call_args = Vec::new(); - if let RuntimeInputPlan::DecodeHostPayload { - msg_ty, - host, - decode_args_fn, - projected_fields, - } = plan.input - { - let host = self.emit_target_root_provider(cont_bb, &host); - if let Some(decoded) = self.push_call(cont_bb, decode_args_fn, vec![host]) { - call_args.extend(self.extract_selected_tuple_fields( - cont_bb, - decoded, - msg_ty, - plan.contract.scope(), - &projected_fields, - )); + match plan.input { + RuntimeInputPlan::None => {} + + RuntimeInputPlan::DirectCalldataLoad { + msg_ty, + field_head_sizes, + projected_fields, + } => { + let total_head: u32 = field_head_sizes.iter().sum(); + let min_calldata = 4 + total_head; + cont_bb = self.emit_calldata_length_guard(cont_bb, zero, min_calldata); + + let field_types = msg_ty.field_types(self.db); + let env = self.runtime_type_env(plan.contract.scope()); + let mut loaded_fields = Vec::with_capacity(field_head_sizes.len()); + let mut calldata_offset: u32 = 4; + for (i, &head_size) in field_head_sizes.iter().enumerate() { + let offset = self.push_const_word(cont_bb, calldata_offset); + let raw = self.push_builtin_value( + cont_bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataLoad { offset }, + ); + let field_ty = field_types[i]; + let field_scalar = match top_level_class_for_ty_in_env( + self.db, + env, + field_ty, + AddressSpaceKind::Memory, + ) { + Some(RuntimeClass::Scalar(sc)) => sc, + _ => word_scalar_class(), + }; + let value = if field_scalar == word_scalar_class() { + raw + } else { + let casted = self.push_local( + field_ty, + RuntimeCarrier::Value(RuntimeClass::Scalar(field_scalar.clone())), + RuntimeLocalRoot::None, + ); + self.push_stmt( + cont_bb, + RStmt::Assign { + dst: casted, + expr: RExpr::Cast { + value: raw, + to: field_scalar, + }, + }, + ); + casted + }; + loaded_fields.push(value); + calldata_offset += head_size; + } + for &field_idx in projected_fields.iter() { + call_args.push(loaded_fields[field_idx as usize]); + } + } + + RuntimeInputPlan::DecodeHostPayload { + msg_ty, + host, + decode_args_fn, + projected_fields, + } => { + let host = self.emit_target_root_provider(cont_bb, &host); + if let Some(decoded) = self.push_call(cont_bb, decode_args_fn, vec![host]) { + call_args.extend(self.extract_selected_tuple_fields( + cont_bb, + decoded, + msg_ty, + plan.contract.scope(), + &projected_fields, + )); + } + } + + RuntimeInputPlan::LazyCalldataLoad { + msg_ty, + decode_fn, + field_strategies, + projected_fields, + } => { + let field_types = msg_ty.field_types(self.db); + let env = self.runtime_type_env(plan.contract.scope()); + + let total_static_head: u32 = field_types + .iter() + .filter_map(|ty| crate::runtime::package::static_abi_head_size(self.db, *ty)) + .sum(); + let min_calldata = 4 + total_static_head; + cont_bb = self.emit_calldata_length_guard(cont_bb, zero, min_calldata); + + let mut loaded_fields: Vec> = vec![None; field_strategies.len()]; + let mut accumulated_offset: u32 = 4; + for (i, strategy) in field_strategies.iter().enumerate() { + match *strategy { + FieldLoadStrategy::Direct => { + let offset = self.push_const_word(cont_bb, accumulated_offset); + let raw = self.push_builtin_value( + cont_bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataLoad { offset }, + ); + let field_ty = field_types[i]; + let field_scalar = match top_level_class_for_ty_in_env( + self.db, + env, + field_ty, + AddressSpaceKind::Memory, + ) { + Some(RuntimeClass::Scalar(sc)) => sc, + _ => word_scalar_class(), + }; + let value = if field_scalar == word_scalar_class() { + raw + } else { + let casted = self.push_local( + field_ty, + RuntimeCarrier::Value(RuntimeClass::Scalar( + field_scalar.clone(), + )), + RuntimeLocalRoot::None, + ); + self.push_stmt( + cont_bb, + RStmt::Assign { + dst: casted, + expr: RExpr::Cast { + value: raw, + to: field_scalar, + }, + }, + ); + casted + }; + loaded_fields[i] = Some(value); + accumulated_offset += 32; + } + FieldLoadStrategy::SkipWithOffset { head_size } => { + let field_ty = field_types[i]; + let field_class = top_level_class_for_ty_in_env( + self.db, + env, + field_ty, + AddressSpaceKind::Memory, + ) + .expect("SkipWithOffset field should have a runtime class"); + + let offset_val = self.push_const_word(cont_bb, accumulated_offset); + let value = self.push_array_view_value( + cont_bb, + field_ty, + &field_class, + offset_val, + ); + loaded_fields[i] = Some(value); + accumulated_offset += head_size; + } + FieldLoadStrategy::LazyDynamicView { is_string_view } => { + let field_ty = field_types[i]; + let field_class = top_level_class_for_ty_in_env( + self.db, + env, + field_ty, + AddressSpaceKind::Memory, + ) + .expect("LazyDynamicView field should have a runtime class"); + + let value = self.push_dynamic_view_from_calldata( + cont_bb, + accumulated_offset, + field_ty, + &field_class, + is_string_view, + ); + loaded_fields[i] = Some(value); + accumulated_offset += 32; + } + FieldLoadStrategy::Decode => { + if let Some(size) = crate::runtime::package::static_abi_head_size( + self.db, + field_types[i], + ) { + accumulated_offset += size; + } + // When static_abi_head_size returns None we stop advancing + // accumulated_offset. All subsequent strategies must also + // be Decode because Direct/SkipWithOffset/LazyDynamicView + // require a known preceding offset. + } + } + } + + // Invariant: once accumulated_offset becomes stale (a Decode field + // had unknown static size), no later field may use a strategy that + // depends on a known calldata offset. + assert!( + { + let mut offset_known = true; + let mut ok = true; + for (i, strategy) in field_strategies.iter().enumerate() { + if *strategy == FieldLoadStrategy::Decode + && crate::runtime::package::static_abi_head_size( + self.db, + field_types[i], + ) + .is_none() + { + offset_known = false; + } + if !offset_known && *strategy != FieldLoadStrategy::Decode { + ok = false; + break; + } + } + ok + }, + "Direct/SkipWithOffset/LazyDynamicView strategy appears after a field with unknown static head size" + ); + + if let Some(decode_fn) = decode_fn { + let four = self.push_const_word(cont_bb, 4); + let size = self.push_builtin_value( + cont_bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataSize, + ); + let payload_len = self.push_binary_word(cont_bb, ArithBinOp::Sub, size, four); + let payload_ptr = self.push_builtin_value( + cont_bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::Malloc { size: payload_len }, + ); + self.push_side_effect_builtin( + cont_bb, + RuntimeBuiltin::CallDataCopy { + dst: payload_ptr, + offset: four, + len: payload_len, + }, + ); + let input = self.push_memory_bytes_value( + cont_bb, + plan.contract.scope(), + payload_ptr, + payload_len, + ); + let input_ty = self.locals[input.index()].semantic_ty; + let decoder_new = + resolve_sol_decoder_new(self.db, plan.contract.scope(), input_ty) + .expect("decoder_new"); + let decoder = self.push_call_result(cont_bb, decoder_new, vec![input]); + if let Some(decoded) = self.push_call(cont_bb, decode_fn, vec![decoder]) { + let decode_field_indices: Vec = field_strategies + .iter() + .enumerate() + .filter(|(_, s)| **s == FieldLoadStrategy::Decode) + .map(|(i, _)| i as u32) + .collect(); + let decoded_values = self.extract_selected_tuple_fields( + cont_bb, + decoded, + msg_ty, + plan.contract.scope(), + &decode_field_indices, + ); + let mut decode_iter = decoded_values.into_iter(); + for (i, strategy) in field_strategies.iter().enumerate() { + if *strategy == FieldLoadStrategy::Decode { + loaded_fields[i] = decode_iter.next(); + } + } + } + } + + for &field_idx in projected_fields.iter() { + let value = + loaded_fields[field_idx as usize].expect("projected field must be loaded"); + call_args.push(value); + } } } + call_args.extend(self.owner_effect_call_args( cont_bb, plan.user_recv, @@ -510,6 +782,23 @@ impl<'db> SyntheticBodyBuilder<'db> { len: zero, }; } + + RuntimeReturnPlan::DirectScalarReturn { .. } => { + let ret_value = ret.expect("value-returning recv wrapper should produce a value"); + self.push_side_effect_builtin( + cont_bb, + RuntimeBuiltin::Mstore { + addr: zero, + value: ret_value, + }, + ); + let thirty_two = self.push_const_word(cont_bb, 32); + self.blocks[cont_bb.index()].terminator = RTerminator::ReturnData { + offset: zero, + len: thirty_two, + }; + } + RuntimeReturnPlan::Value { .. } => { let ret_value = ret.expect("value-returning recv wrapper should produce a value"); let scope = plan.contract.scope(); @@ -648,6 +937,34 @@ impl<'db> SyntheticBodyBuilder<'db> { cont_bb } + fn emit_calldata_length_guard( + &mut self, + bb: RBlockId, + zero: RLocalId, + min_bytes: u32, + ) -> RBlockId { + let min_size = self.push_const_word(bb, min_bytes); + let calldata_size = self.push_builtin_value( + bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataSize, + ); + let too_short = self.push_bool_binary(bb, CompBinOp::Lt, calldata_size, min_size); + let revert_bb = self.new_block(); + let ok_bb = self.new_block(); + self.blocks[bb.index()].terminator = RTerminator::Branch { + cond: too_short, + then_bb: revert_bb, + else_bb: ok_bb, + }; + self.blocks[revert_bb.index()].terminator = RTerminator::Revert { + offset: zero, + len: zero, + }; + ok_bb + } + fn emit_entry_effect_args( &mut self, bb: RBlockId, @@ -1226,6 +1543,182 @@ impl<'db> SyntheticBodyBuilder<'db> { local } + /// Construct an unbound `ArrayView` aggregate value with `start` set to + /// `offset_value`. + fn push_array_view_value( + &mut self, + bb: RBlockId, + semantic_ty: TyId<'db>, + class: &RuntimeClass<'db>, + offset_value: RLocalId, + ) -> RLocalId { + let local = self.push_local( + semantic_ty, + RuntimeCarrier::Value(class.clone()), + RuntimeLocalRoot::Slot(class.clone()), + ); + let root = PlaceRoot::Slot(local); + self.push_stmt( + bb, + RStmt::Store { + dst: RuntimePlace { + root, + path: vec![PlaceElem::Field(hir::analysis::semantic::FieldIndex(1))] + .into_boxed_slice(), + }, + src: offset_value, + }, + ); + local + } + + /// Construct an unbound `BytesView` or `StringView` value by reading the + /// dynamic offset pointer and length directly from calldata. + fn push_dynamic_view_from_calldata( + &mut self, + bb: RBlockId, + head_offset: u32, + semantic_ty: TyId<'db>, + class: &RuntimeClass<'db>, + is_string_view: bool, + ) -> RLocalId { + let head_pos = self.push_const_word(bb, head_offset); + let rel_offset = self.push_builtin_value( + bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataLoad { offset: head_pos }, + ); + + let selector_size = self.push_const_word(bb, 4); + let tail_abs = self.push_binary_word(bb, ArithBinOp::Add, rel_offset, selector_size); + + let revert_bb = self.new_block(); + let zero_lit = self.push_const_word(bb, 0); + self.blocks[revert_bb.index()].terminator = RTerminator::Revert { + offset: zero_lit, + len: zero_lit, + }; + + // Check 1: overflow in rel_offset + 4 + let tail_overflow = self.push_bool_binary(bb, CompBinOp::Lt, tail_abs, rel_offset); + let check2_bb = self.new_block(); + self.blocks[bb.index()].terminator = RTerminator::Branch { + cond: tail_overflow, + then_bb: revert_bb, + else_bb: check2_bb, + }; + + let data_len = self.push_builtin_value( + check2_bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataLoad { offset: tail_abs }, + ); + + let thirty_two = self.push_const_word(check2_bb, 32); + let data_start = self.push_binary_word(check2_bb, ArithBinOp::Add, tail_abs, thirty_two); + + // Check 2: overflow in tail_abs + 32 + let start_overflow = self.push_bool_binary(check2_bb, CompBinOp::Lt, data_start, tail_abs); + let check3_bb = self.new_block(); + self.blocks[check2_bb.index()].terminator = RTerminator::Branch { + cond: start_overflow, + then_bb: revert_bb, + else_bb: check3_bb, + }; + + let data_end = self.push_binary_word(check3_bb, ArithBinOp::Add, data_start, data_len); + + // Check 3: overflow in data_start + data_len + let end_overflow = self.push_bool_binary(check3_bb, CompBinOp::Lt, data_end, data_start); + let check4_bb = self.new_block(); + self.blocks[check3_bb.index()].terminator = RTerminator::Branch { + cond: end_overflow, + then_bb: revert_bb, + else_bb: check4_bb, + }; + + // Check 4: data_end > calldatasize + let calldata_size = self.push_builtin_value( + check4_bb, + TyId::u256(self.db), + RuntimeClass::Scalar(word_scalar_class()), + RuntimeBuiltin::CallDataSize, + ); + let oob = self.push_bool_binary(check4_bb, CompBinOp::Gt, data_end, calldata_size); + let ok_bb = self.new_block(); + self.blocks[check4_bb.index()].terminator = RTerminator::Branch { + cond: oob, + then_bb: revert_bb, + else_bb: ok_bb, + }; + let bb = ok_bb; + + let local = self.push_local( + semantic_ty, + RuntimeCarrier::Value(class.clone()), + RuntimeLocalRoot::Slot(class.clone()), + ); + let root = PlaceRoot::Slot(local); + + if is_string_view { + self.push_stmt( + bb, + RStmt::Store { + dst: RuntimePlace { + root: root.clone(), + path: vec![ + PlaceElem::Field(hir::analysis::semantic::FieldIndex(0)), + PlaceElem::Field(hir::analysis::semantic::FieldIndex(1)), + ] + .into_boxed_slice(), + }, + src: data_start, + }, + ); + self.push_stmt( + bb, + RStmt::Store { + dst: RuntimePlace { + root: root.clone(), + path: vec![ + PlaceElem::Field(hir::analysis::semantic::FieldIndex(0)), + PlaceElem::Field(hir::analysis::semantic::FieldIndex(2)), + ] + .into_boxed_slice(), + }, + src: data_len, + }, + ); + } else { + self.push_stmt( + bb, + RStmt::Store { + dst: RuntimePlace { + root: root.clone(), + path: vec![PlaceElem::Field(hir::analysis::semantic::FieldIndex(1))] + .into_boxed_slice(), + }, + src: data_start, + }, + ); + self.push_stmt( + bb, + RStmt::Store { + dst: RuntimePlace { + root: root.clone(), + path: vec![PlaceElem::Field(hir::analysis::semantic::FieldIndex(2))] + .into_boxed_slice(), + }, + src: data_len, + }, + ); + } + + local + } + fn push_synthetic_default_value( &mut self, bb: RBlockId, diff --git a/crates/mir/src/verify/package.rs b/crates/mir/src/verify/package.rs index ef34fe0fe9..d3d295e97a 100644 --- a/crates/mir/src/verify/package.rs +++ b/crates/mir/src/verify/package.rs @@ -3,9 +3,9 @@ use rustc_hash::FxHashSet; use crate::{ db::MirDb, runtime::{ - DispatchDefault, RExpr, RStmt, RTerminator, ResolvedCodeRegion, RuntimeCodeRegion, - RuntimeFunctionOwner, RuntimeObject, RuntimePackage, RuntimeProgramView, - RuntimeSyntheticSpec, + DispatchArm, DispatchDefault, RBlockId, RExpr, RStmt, RTerminator, ResolvedCodeRegion, + RuntimeBody, RuntimeCodeRegion, RuntimeFunctionOwner, RuntimeObject, RuntimePackage, + RuntimeProgramView, RuntimeSyntheticSpec, code_region::{code_region_runtime_entry, code_region_section_name, code_region_symbol}, }, verify::{VerifyError, verify_runtime_body}, @@ -137,61 +137,7 @@ fn verify_synthetic_function<'db>( RuntimeFunctionOwner::Synthetic(spec) => match spec { RuntimeSyntheticSpec::ContractRuntimeRoot { dispatch, default, .. - } => { - let Some(entry) = body.blocks.first() else { - return Err(VerifyError::InvalidReturnClass); - }; - let (cases, default_bb) = match &entry.terminator { - RTerminator::SwitchScalar { cases, default, .. } => (cases, default), - RTerminator::Branch { - then_bb, else_bb, .. - } => { - let Some(selector_block) = body.block(*else_bb) else { - return Err(VerifyError::MissingRuntimeBlock(*else_bb)); - }; - let RTerminator::SwitchScalar { - cases, - default: default_bb, - .. - } = &selector_block.terminator - else { - return Err(VerifyError::InvalidReturnClass); - }; - if then_bb != default_bb { - return Err(VerifyError::InvalidReturnClass); - } - (cases, default_bb) - } - _ => return Err(VerifyError::InvalidReturnClass), - }; - if cases.len() != dispatch.len() { - return Err(VerifyError::InvalidReturnClass); - } - for ((_, block), arm) in cases.iter().zip(dispatch.iter()) { - let Some(target) = body.block(*block) else { - return Err(VerifyError::MissingRuntimeBlock(*block)); - }; - let RTerminator::TerminalCall { callee, args } = &target.terminator else { - return Err(VerifyError::InvalidReturnClass); - }; - if *callee != arm.wrapper || !args.is_empty() { - return Err(VerifyError::InvalidReturnClass); - } - } - - let Some(default_target) = body.block(*default_bb) else { - return Err(VerifyError::MissingRuntimeBlock(*default_bb)); - }; - match (default, &default_target.terminator) { - (DispatchDefault::RevertEmpty, RTerminator::Revert { .. }) => {} - ( - DispatchDefault::Call { wrapper }, - RTerminator::TerminalCall { callee, args }, - ) if *callee == wrapper && args.is_empty() => {} - _ => return Err(VerifyError::InvalidReturnClass), - } - Ok(()) - } + } => verify_contract_runtime_dispatch(body, &dispatch, default), RuntimeSyntheticSpec::ContractInitRoot { .. } => { verify_has_terminator(body, |term| matches!(term, RTerminator::ReturnData { .. })) } @@ -210,6 +156,198 @@ fn verify_synthetic_function<'db>( } } +fn verify_contract_runtime_dispatch<'db>( + body: &RuntimeBody<'db>, + dispatch: &[DispatchArm<'db>], + default: DispatchDefault<'db>, +) -> Result<(), VerifyError<'db>> { + let Some(entry) = body.blocks.first() else { + return Err(VerifyError::InvalidReturnClass); + }; + + // Direct SwitchScalar at entry (no short-calldata guard) + if let RTerminator::SwitchScalar { + cases, + default: default_bb, + .. + } = &entry.terminator + { + return verify_contract_runtime_switch(body, dispatch, default, cases, *default_bb); + } + + // Walk the dispatch tree (handles Branch-based short-calldata guard + // and binary search trees) + let mut seen_blocks = FxHashSet::default(); + let mut seen_arms = vec![false; dispatch.len()]; + let mut saw_default = false; + verify_contract_runtime_dispatch_block( + body, + RBlockId::from_u32(0), + dispatch, + default, + &mut seen_arms, + &mut saw_default, + &mut seen_blocks, + )?; + + if saw_default && seen_arms.into_iter().all(|seen| seen) { + Ok(()) + } else { + Err(VerifyError::InvalidReturnClass) + } +} + +fn verify_contract_runtime_switch<'db>( + body: &RuntimeBody<'db>, + dispatch: &[DispatchArm<'db>], + default: DispatchDefault<'db>, + cases: &[(crate::runtime::ConstScalar, RBlockId)], + default_bb: RBlockId, +) -> Result<(), VerifyError<'db>> { + if cases.len() != dispatch.len() { + return Err(VerifyError::InvalidReturnClass); + } + for ((_, block), arm) in cases.iter().zip(dispatch.iter()) { + verify_contract_runtime_arm_target(body, *block, arm)?; + } + + verify_contract_runtime_default_target(body, default_bb, default) +} + +/// Walk a dispatch tree rooted at `block`, verifying that every reachable leaf +/// is either a known dispatch arm or the default action. +/// +/// Handles Branch, Goto, and SwitchScalar nodes so that future dispatch +/// patterns (e.g. binary search trees, nested guards) are verified correctly. +fn verify_contract_runtime_dispatch_block<'db>( + body: &RuntimeBody<'db>, + block: RBlockId, + dispatch: &[DispatchArm<'db>], + default: DispatchDefault<'db>, + seen_arms: &mut [bool], + saw_default: &mut bool, + seen_blocks: &mut FxHashSet, +) -> Result<(), VerifyError<'db>> { + if !seen_blocks.insert(block) { + return Ok(()); + } + + let Some(target) = body.block(block) else { + return Err(VerifyError::MissingRuntimeBlock(block)); + }; + match &target.terminator { + RTerminator::Goto(target) => verify_contract_runtime_dispatch_block( + body, + *target, + dispatch, + default, + seen_arms, + saw_default, + seen_blocks, + ), + RTerminator::Branch { + then_bb, else_bb, .. + } => { + verify_contract_runtime_dispatch_block( + body, + *then_bb, + dispatch, + default, + seen_arms, + saw_default, + seen_blocks, + )?; + verify_contract_runtime_dispatch_block( + body, + *else_bb, + dispatch, + default, + seen_arms, + saw_default, + seen_blocks, + ) + } + RTerminator::SwitchScalar { + cases, + default: switch_default, + .. + } => { + for (_, case_block) in cases.iter() { + verify_contract_runtime_dispatch_block( + body, + *case_block, + dispatch, + default, + seen_arms, + saw_default, + seen_blocks, + )?; + } + verify_contract_runtime_dispatch_block( + body, + *switch_default, + dispatch, + default, + seen_arms, + saw_default, + seen_blocks, + ) + } + RTerminator::TerminalCall { callee, args } if args.is_empty() => { + if let Some(idx) = dispatch.iter().position(|arm| arm.wrapper == *callee) { + seen_arms[idx] = true; + Ok(()) + } else if matches!(default, DispatchDefault::Call { wrapper } if wrapper == *callee) { + *saw_default = true; + Ok(()) + } else { + Err(VerifyError::InvalidReturnClass) + } + } + RTerminator::Revert { .. } if matches!(default, DispatchDefault::RevertEmpty) => { + *saw_default = true; + Ok(()) + } + _ => Err(VerifyError::InvalidReturnClass), + } +} + +fn verify_contract_runtime_arm_target<'db>( + body: &RuntimeBody<'db>, + block: RBlockId, + arm: &DispatchArm<'db>, +) -> Result<(), VerifyError<'db>> { + let Some(target) = body.block(block) else { + return Err(VerifyError::MissingRuntimeBlock(block)); + }; + let RTerminator::TerminalCall { callee, args } = &target.terminator else { + return Err(VerifyError::InvalidReturnClass); + }; + if *callee != arm.wrapper || !args.is_empty() { + return Err(VerifyError::InvalidReturnClass); + } + Ok(()) +} + +fn verify_contract_runtime_default_target<'db>( + body: &RuntimeBody<'db>, + block: RBlockId, + default: DispatchDefault<'db>, +) -> Result<(), VerifyError<'db>> { + let Some(target) = body.block(block) else { + return Err(VerifyError::MissingRuntimeBlock(block)); + }; + match (default, &target.terminator) { + (DispatchDefault::RevertEmpty, RTerminator::Revert { .. }) => Ok(()), + (DispatchDefault::Call { wrapper }, RTerminator::TerminalCall { callee, args }) + if *callee == wrapper && args.is_empty() => + { + Ok(()) + } + _ => Err(VerifyError::InvalidReturnClass), + } +} + fn verify_has_terminator<'db>( body: &crate::runtime::RuntimeBody<'db>, pred: impl Fn(&RTerminator<'db>) -> bool, diff --git a/crates/uitest/fixtures/ty_check/error_unsupported_field_type.snap b/crates/uitest/fixtures/ty_check/error_unsupported_field_type.snap index 4321cb1a6d..f14141f8da 100644 --- a/crates/uitest/fixtures/ty_check/error_unsupported_field_type.snap +++ b/crates/uitest/fixtures/ty_check/error_unsupported_field_type.snap @@ -1,5 +1,6 @@ --- source: crates/uitest/tests/ty_check.rs +assertion_line: 27 expression: diags input_file: fixtures/ty_check/error_unsupported_field_type.fe --- @@ -21,9 +22,9 @@ error[6-0003]: trait bound is not satisfied 6 │ │ } │ ╰─^ `StorageMap` doesn't implement `AbiSize` │ - ┌─ src/abi.fe:219:32 + ┌─ src/abi.fe:226:32 │ -219 │ pub fn dynamic_payload_size(_ value: T) -> u256 { +226 │ pub fn dynamic_payload_size(_ value: T) -> u256 { │ ------- required by this bound on `dynamic_payload_size` error[6-0003]: trait bound is not satisfied @@ -35,9 +36,9 @@ error[6-0003]: trait bound is not satisfied 6 │ │ } │ ╰─^ `StorageMap` doesn't implement `Encode` │ - ┌─ src/abi.fe:292:14 + ┌─ src/abi.fe:308:14 │ -292 │ where T: Encode + AbiSize, E: AbiEncoder +308 │ where T: Encode + AbiSize, E: AbiEncoder │ --------- required by this bound on `encode_field` error[6-0003]: trait bound is not satisfied @@ -49,7 +50,7 @@ error[6-0003]: trait bound is not satisfied 6 │ │ } │ ╰─^ `StorageMap` doesn't implement `AbiSize` │ - ┌─ src/abi.fe:292:26 + ┌─ src/abi.fe:308:26 │ -292 │ where T: Encode + AbiSize, E: AbiEncoder +308 │ where T: Encode + AbiSize, E: AbiEncoder │ ------- required by this bound on `encode_field` diff --git a/ingots/core/src/abi.fe b/ingots/core/src/abi.fe index 318816c3e9..5c6ad52519 100644 --- a/ingots/core/src/abi.fe +++ b/ingots/core/src/abi.fe @@ -140,6 +140,13 @@ pub trait AbiDecoder { fn peek_word(self, _ at: u256) -> u256 fn alloc(mut self, _ size: u256) -> u256 + + /// Advance the cursor by `bytes` without reading or validating. + /// Used to skip over unused fixed-size fields in ABI decoding. + #[arithmetic(unchecked)] + fn skip_bytes(mut self, _ bytes: u256) { + self.set_pos(self.pos() + bytes) + } } /// ABI encoder with cursor state over a fixed output buffer. @@ -265,6 +272,15 @@ fn decode_field_at(d: mut D, pos: u256) -> T decode_field(mut d) } +/// Skip past a fixed-size field without decoding it. +/// Advances the decoder cursor by the field's head size. +pub fn skip_field(_ d: mut D) + where T: AbiSize, + D: AbiDecoder +{ + d.skip_bytes(abi_field_head_size()) +} + #[arithmetic(unchecked)] pub fn encode_root(_ value: own T, _ e: mut E) where T: Encode, E: AbiEncoder @@ -388,9 +404,12 @@ impl Copy for BytesView where I: Copy {} -impl BytesView - where I: ByteInput -{ +impl BytesView { + /// Construct a BytesView with the given input, start offset, and length. + fn from_parts(_ input: I, _ start: u256, _ len: u256) -> Self { + BytesView { input, start, len } + } + pub fn len(self) -> u256 { self.len } @@ -398,7 +417,11 @@ impl BytesView pub fn is_empty(self) -> bool { self.len == 0 } +} +impl BytesView + where I: ByteInput +{ #[arithmetic(unchecked)] pub fn byte_at(self, _ offset: u256) -> u8 { self.input.byte_at(self.start + offset) @@ -410,6 +433,13 @@ impl BytesView } } +impl BytesView<()> { + /// Bind a byte source to produce a bound `BytesView` with byte access. + pub fn over(self, _ input: I) -> BytesView { + BytesView::from_parts(input, self.start, self.len) + } +} + pub struct StringView { pub bytes: BytesView, } @@ -418,17 +448,24 @@ impl Copy for StringView where I: Copy {} -impl StringView - where I: ByteInput -{ +impl StringView { + /// Construct a StringView from a BytesView. + fn from_bytes(_ bytes: BytesView) -> Self { + StringView { bytes } + } + pub fn len(self) -> u256 { - self.bytes.len() + self.bytes.len } pub fn is_empty(self) -> bool { - self.bytes.is_empty() + self.bytes.len == 0 } +} +impl StringView + where I: ByteInput +{ pub fn byte_at(self, _ offset: u256) -> u8 { self.bytes.byte_at(offset) } @@ -438,6 +475,91 @@ impl StringView } } +impl StringView<()> { + /// Bind a byte source to produce a bound `StringView` with character access. + pub fn over(self, _ input: J) -> StringView { + let bound_bytes = BytesView::from_parts(input, self.bytes.start, self.bytes.len) + StringView::from_bytes(bound_bytes) + } +} + +/// A zero-copy view over a fixed-size array in ABI-encoded data. +/// +/// Instead of decoding all N elements into memory, `ArrayView` stores +/// the byte input source and the offset where the array starts. Elements +/// are read on demand via `get(index)`, paying only for what you use. +/// +/// When `I` defaults to `()`, the view is *unbound* -- it records only the +/// byte offset where the array lives. Call `.over(input)` to bind a byte +/// source and get an `ArrayView` with element access. +pub struct ArrayView { + pub input: I, + pub start: u256, +} + +impl Copy for ArrayView + where I: Copy +{} + +impl ArrayView { + /// Construct an ArrayView with the given input and start offset. + fn from_parts(_ input: I, _ start: u256) -> Self { + ArrayView { input, start } + } +} + +impl ArrayView + where T: AbiSize, I: ByteInput +{ + pub fn len(self) -> usize { + N + } + + /// Read the raw 32-byte ABI word at `index` from the underlying input source. + /// + /// Returns the uninterpreted `u256` word; the caller must cast or + /// reinterpret the result as the element type `T`. + #[arithmetic(unchecked)] + pub fn get(self, _ index: usize) -> u256 { + let byte_offset = self.start + (index as u256) * abi_field_head_size() + self.input.word_at(byte_offset) + } +} + +impl ArrayView + where T: AbiSize +{ + /// Bind a byte source to produce a bound `ArrayView` with element access. + pub fn over(self, _ input: I) -> ArrayView { + ArrayView::from_parts(input, self.start) + } +} + +impl AbiSize for ArrayView + where T: AbiSize +{ + const HEAD_SIZE: u256 = (N as u256) * abi_field_head_size() + const IS_DYNAMIC: bool = T::IS_DYNAMIC +} + +impl AbiSize for BytesView<()> { + const HEAD_SIZE: u256 = 32 + const IS_DYNAMIC: bool = true + + fn payload_size(self) -> u256 { + 32 + round_up_words(self.len) + } +} + +impl AbiSize for StringView<()> { + const HEAD_SIZE: u256 = 32 + const IS_DYNAMIC: bool = true + + fn payload_size(self) -> u256 { + self.bytes.payload_size() + } +} + /// Owned handle to a Solidity ABI `string` payload stored in linear memory. /// /// `data` points at the ABI tail payload: the length word followed by packed @@ -474,9 +596,7 @@ impl DynString { } pub fn view(self) -> StringView { - StringView { - bytes: self.as_bytes().view(), - } + StringView::from_bytes(self.as_bytes().view()) } pub fn byte_at(self, _ index: u256) -> u8 { @@ -524,11 +644,7 @@ impl Bytes { base: self.data + 32, len: self.len, } - BytesView { - input, - start: 0, - len: self.len, - } + BytesView::from_parts(input, 0, self.len) } pub fn byte_at(self, _ index: u256) -> u8 {