Rematerialize zero literals

This commit is contained in:
Nikola Matic
2023-08-07 17:33:16 +02:00
parent 511712570b
commit 96e7b4f46b
195 changed files with 665 additions and 744 deletions
@@ -189,12 +189,11 @@ object "C_6" {
/// @src 0:60:101 "contract C {..."
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -188,12 +188,11 @@ object "C_6" {
/// @src 0:60:101
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -177,12 +177,11 @@ object "C_6" {
{
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -434,65 +434,64 @@ object "D_27" {
mstore(_2, _1)
if iszero(lt(calldatasize(), 4))
{
let _3 := 0
if eq(0x26121ff0, shr(224, calldataload(_3)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..."
let _4 := datasize("C_2")
let _5 := add(_1, _4)
let _6 := 0xffffffffffffffff
if or(gt(_5, _6), lt(_5, _1))
let _3 := datasize("C_2")
let _4 := add(_1, _3)
let _5 := 0xffffffffffffffff
if or(gt(_4, _5), lt(_4, _1))
{
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_3, 0x24)
revert(0, 0x24)
}
/// @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..."
datacopy(_1, dataoffset("C_2"), _4)
if iszero(create(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ _3, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _1, sub(_5, _1)))
datacopy(_1, dataoffset("C_2"), _3)
if iszero(create(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ 0, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _1, sub(_4, _1)))
{
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
let pos := mload(_2)
returndatacopy(pos, _3, returndatasize())
returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize())
}
let memPtr := mload(_2)
let newFreePtr := add(memPtr, _2)
if or(gt(newFreePtr, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _6), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr, memPtr))
if or(gt(newFreePtr, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _5), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr, memPtr))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_3, 0x24)
revert(0, 0x24)
}
mstore(_2, newFreePtr)
mstore(memPtr, 2)
let _7 := 32
mstore(add(memPtr, _7), "/*")
let _6 := 32
mstore(add(memPtr, _6), "/*")
let memPtr_1 := mload(_2)
let newFreePtr_1 := add(memPtr_1, 96)
if or(gt(newFreePtr_1, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _6), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr_1, memPtr_1))
if or(gt(newFreePtr_1, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _5), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr_1, memPtr_1))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_3, 0x24)
revert(0, 0x24)
}
mstore(_2, newFreePtr_1)
mstore(memPtr_1, 39)
mstore(add(memPtr_1, _7), 0x2f2a2a204073726320303a39363a313635202022636f6e74726163742044207b)
mstore(add(memPtr_1, _6), 0x2f2a2a204073726320303a39363a313635202022636f6e74726163742044207b)
mstore(add(memPtr_1, _2), shl(200, 0x2e2e2e22202a2f))
let memPos := mload(_2)
mstore(memPos, _7)
mstore(memPos, _6)
let length := mload(memPtr_1)
mstore(add(memPos, _7), length)
let i := _3
for { } lt(i, length) { i := add(i, _7) }
mstore(add(memPos, _6), length)
let i := 0
for { } lt(i, length) { i := add(i, _6) }
{
mstore(add(add(memPos, i), _2), mload(add(add(memPtr_1, i), _7)))
mstore(add(add(memPos, i), _2), mload(add(add(memPtr_1, i), _6)))
}
mstore(add(add(memPos, length), _2), _3)
mstore(add(add(memPos, length), _2), 0)
return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), _2))
}
}
+12 -13
View File
@@ -47,31 +47,30 @@ object "D_16" {
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:149:156 "new C()"
let _3 := datasize("C_3")
let _4 := add(_1, _3)
if or(gt(_4, 0xffffffffffffffff), lt(_4, _1))
let _2 := datasize("C_3")
let _3 := add(_1, _2)
if or(gt(_3, 0xffffffffffffffff), lt(_3, _1))
{
/// @src 0:96:165 "contract D {..."
mstore(_2, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_2, 0x24)
revert(0, 0x24)
}
/// @src 0:149:156 "new C()"
datacopy(_1, dataoffset("C_3"), _3)
if iszero(create(/** @src 0:96:165 "contract D {..." */ _2, /** @src 0:149:156 "new C()" */ _1, sub(_4, _1)))
datacopy(_1, dataoffset("C_3"), _2)
if iszero(create(/** @src 0:96:165 "contract D {..." */ 0, /** @src 0:149:156 "new C()" */ _1, sub(_3, _1)))
{
/// @src 0:96:165 "contract D {..."
let pos := mload(64)
returndatacopy(pos, _2, returndatasize())
returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize())
}
return(_2, _2)
return(0, 0)
}
}
revert(0, 0)
@@ -17,12 +17,11 @@ object "D_12" {
/// @src 0:82:175 "contract D {..."
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -19,12 +19,11 @@ object "D_8" {
/// @src 0:82:166 "contract D {..."
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
+59 -60
View File
@@ -21,101 +21,100 @@ object "C_59" {
let _2 := 4
if iszero(lt(calldatasize(), _2))
{
let _3 := 0
if eq(0xf8eddcc6, shr(224, calldataload(_3)))
if eq(0xf8eddcc6, shr(224, calldataload(0)))
{
if callvalue() { revert(_3, _3) }
let _4 := 32
if slt(add(calldatasize(), not(3)), _4) { revert(_3, _3) }
if callvalue() { revert(0, 0) }
let _3 := 32
if slt(add(calldatasize(), not(3)), _3) { revert(0, 0) }
let offset := calldataload(_2)
let _5 := 0xffffffffffffffff
if gt(offset, _5) { revert(_3, _3) }
if iszero(slt(add(offset, 35), calldatasize())) { revert(_3, _3) }
let _6 := calldataload(add(_2, offset))
let _7 := 36
if gt(_6, _5)
let _4 := 0xffffffffffffffff
if gt(offset, _4) { revert(0, 0) }
if iszero(slt(add(offset, 35), calldatasize())) { revert(0, 0) }
let _5 := calldataload(add(_2, offset))
let _6 := 36
if gt(_5, _4)
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_2, 0x41)
revert(_3, _7)
revert(0, _6)
}
let _8 := shl(5, _6)
let _9 := not(31)
let newFreePtr := add(_1, and(add(_8, 63), _9))
if or(gt(newFreePtr, _5), lt(newFreePtr, _1))
let _7 := shl(5, _5)
let _8 := not(31)
let newFreePtr := add(_1, and(add(_7, 63), _8))
if or(gt(newFreePtr, _4), lt(newFreePtr, _1))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_2, 0x41)
revert(_3, _7)
revert(0, _6)
}
let _10 := 64
mstore(_10, newFreePtr)
let _9 := 64
mstore(_9, newFreePtr)
let dst := _1
mstore(_1, _6)
dst := add(_1, _4)
mstore(_1, _5)
dst := add(_1, _3)
let dst_1 := dst
let srcEnd := add(add(offset, _8), _7)
if gt(srcEnd, calldatasize()) { revert(_3, _3) }
let src := add(offset, _7)
for { } lt(src, srcEnd) { src := add(src, _4) }
let srcEnd := add(add(offset, _7), _6)
if gt(srcEnd, calldatasize()) { revert(0, 0) }
let src := add(offset, _6)
for { } lt(src, srcEnd) { src := add(src, _3) }
{
if slt(sub(calldatasize(), src), _4) { revert(_3, _3) }
let memPtr := mload(_10)
let newFreePtr_1 := add(memPtr, _4)
if or(gt(newFreePtr_1, _5), lt(newFreePtr_1, memPtr))
if slt(sub(calldatasize(), src), _3) { revert(0, 0) }
let memPtr := mload(_9)
let newFreePtr_1 := add(memPtr, _3)
if or(gt(newFreePtr_1, _4), lt(newFreePtr_1, memPtr))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_2, 0x41)
revert(_3, _7)
revert(0, _6)
}
mstore(_10, newFreePtr_1)
mstore(_9, newFreePtr_1)
mstore(memPtr, calldataload(src))
mstore(dst, memPtr)
dst := add(dst, _4)
dst := add(dst, _3)
}
if iszero(mload(_1))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_2, 0x32)
revert(_3, _7)
revert(0, _6)
}
sstore(_3, mload(/** @src 0:469:474 "_s[0]" */ mload(dst_1)))
sstore(0, mload(/** @src 0:469:474 "_s[0]" */ mload(dst_1)))
/// @src 0:346:625 "contract C {..."
if iszero(lt(/** @src 0:492:493 "1" */ 0x01, /** @src 0:346:625 "contract C {..." */ mload(_1)))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_2, 0x32)
revert(_3, _7)
revert(0, _6)
}
let _11 := mload(/** @src 0:489:494 "_s[1]" */ mload(/** @src 0:346:625 "contract C {..." */ add(_1, _10)))
sstore(0x02, _11)
let memPtr_1 := mload(_10)
let _10 := mload(/** @src 0:489:494 "_s[1]" */ mload(/** @src 0:346:625 "contract C {..." */ add(_1, _9)))
sstore(0x02, _10)
let memPtr_1 := mload(_9)
let newFreePtr_2 := add(memPtr_1, 160)
if or(gt(newFreePtr_2, _5), lt(newFreePtr_2, memPtr_1))
if or(gt(newFreePtr_2, _4), lt(newFreePtr_2, memPtr_1))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_2, 0x41)
revert(_3, _7)
revert(0, _6)
}
mstore(_10, newFreePtr_2)
mstore(_9, newFreePtr_2)
mstore(memPtr_1, 100)
mstore(add(memPtr_1, _4), "longstringlongstringlongstringlo")
mstore(add(memPtr_1, _10), "ngstringlongstringlongstringlong")
let _12 := 96
mstore(add(memPtr_1, _12), "stringlongstringlongstringlongst")
mstore(add(memPtr_1, _3), "longstringlongstringlongstringlo")
mstore(add(memPtr_1, _9), "ngstringlongstringlongstringlong")
let _11 := 96
mstore(add(memPtr_1, _11), "stringlongstringlongstringlongst")
mstore(add(memPtr_1, 128), "ring")
let memPos := mload(_10)
mstore(memPos, _11)
mstore(add(memPos, _4), _10)
let memPos := mload(_9)
mstore(memPos, _10)
mstore(add(memPos, _3), _9)
let length := mload(memPtr_1)
mstore(add(memPos, _10), length)
let i := _3
for { } lt(i, length) { i := add(i, _4) }
mstore(add(memPos, _9), length)
let i := 0
for { } lt(i, length) { i := add(i, _3) }
{
mstore(add(add(memPos, i), _12), mload(add(add(memPtr_1, i), _4)))
mstore(add(add(memPos, i), _11), mload(add(add(memPtr_1, i), _3)))
}
mstore(add(add(memPos, length), _12), _3)
return(memPos, add(sub(add(memPos, and(add(length, 31), _9)), memPos), _12))
mstore(add(add(memPos, length), _11), 0)
return(memPos, add(sub(add(memPos, and(add(length, 31), _8)), memPos), _11))
}
}
revert(0, 0)
+12 -13
View File
@@ -21,26 +21,25 @@ object "Arraysum_34" {
let _1 := 4
if iszero(lt(calldatasize(), _1))
{
let _2 := 0
if eq(0x81d73423, shr(224, calldataload(_2)))
if eq(0x81d73423, shr(224, calldataload(0)))
{
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
let var_sum := _2
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let var_sum := 0
/// @src 0:368:378 "uint i = 0"
let var_i := /** @src 0:80:429 "contract Arraysum {..." */ _2
let _3 := sload(_2)
let var_i := /** @src 0:80:429 "contract Arraysum {..." */ var_sum
let _2 := sload(var_sum)
/// @src 0:364:423 "for(uint i = 0; i < values.length; i++)..."
for { }
/** @src 0:380:397 "i < values.length" */ lt(var_i, _3)
/** @src 0:380:397 "i < values.length" */ lt(var_i, _2)
/// @src 0:368:378 "uint i = 0"
{
/// @src 0:80:429 "contract Arraysum {..."
if eq(var_i, not(0))
{
mstore(_2, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_1, 0x11)
revert(_2, 0x24)
revert(0, 0x24)
}
/// @src 0:399:402 "i++"
var_i := /** @src 0:80:429 "contract Arraysum {..." */ add(var_i, 1)
@@ -48,13 +47,13 @@ object "Arraysum_34" {
/// @src 0:399:402 "i++"
{
/// @src 0:80:429 "contract Arraysum {..."
mstore(_2, _2)
mstore(0, 0)
let sum := add(var_sum, sload(add(18569430475105882587588266137607568536673111973893317399460219858819262702947, var_i)))
if gt(var_sum, sum)
{
mstore(_2, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(_1, 0x11)
revert(_2, 0x24)
revert(0, 0x24)
}
/// @src 0:407:423 "sum += values[i]"
var_sum := sum
@@ -82,20 +82,16 @@ sub_0: assembly {
/* \"C\":79:428 contract C... */
0x80
0x40
dup2
dup2
swap1
dup1
dup3
mstore
jumpi(tag_2, iszero(lt(calldatasize, 0x04)))
0x00
dup1
revert
tag_2:
0x00
swap2
dup3
calldataload
0xe0
shr
shr(0xe0, calldataload(0x00))
swap1
dup2
0x26121ff0
@@ -117,13 +113,8 @@ sub_0: assembly {
revert
tag_8:
jumpi(tag_12, callvalue)
dup2
add(calldatasize, not(0x03))
slt
tag_12
jumpi
dup2
sload
jumpi(tag_12, slt(add(not(0x03), calldatasize), 0x00))
sload(0x00)
sub(shl(0xff, 0x01), 0x01)
dup2
eq
@@ -131,11 +122,11 @@ sub_0: assembly {
jumpi
0x01
add
swap2
dup3
swap1
dup2
0x00
sstore
dup2
dup1
mload
shl(0xe4, 0x026121ff)
/* \"C\":403:411 this.f() */
@@ -152,37 +143,40 @@ sub_0: assembly {
/* \"C\":403:411 this.f() */
gas
staticcall
swap2
dup3
swap1
dup2
iszero
tag_16
jumpi
dup1
swap3
/* \"C\":79:428 contract C... */
0x00
/* \"C\":403:411 this.f() */
swap2
tag_18
jumpi
/* \"C\":79:428 contract C... */
tag_19:
/* \"C\":392:411 stateVar + this.f() */
pop
tag_20
/* \"C\":392:422 stateVar + this.f() + immutVar */
tag_21
/* \"C\":392:411 stateVar + this.f() */
swap2
/* \"C\":403:411 this.f() */
0x20
/* \"C\":392:411 stateVar + this.f() */
dup5
/* \"C\":392:422 stateVar + this.f() + immutVar */
tag_20
/* \"C\":392:411 stateVar + this.f() */
tag_21
dup7
dup10
swap5
tag_1
jump\t// in
tag_21:
tag_20:
/* \"C\":414:422 immutVar */
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
/* \"C\":392:422 stateVar + this.f() + immutVar */
swap1
tag_1
jump\t// in
tag_20:
tag_21:
/* \"C\":79:428 contract C... */
swap1
mload
@@ -193,8 +187,6 @@ sub_0: assembly {
/* \"C\":403:411 this.f() */
tag_18:
swap1
swap2
pop
0x20
returndatasize
dup2
@@ -238,9 +230,8 @@ sub_0: assembly {
pop
mload
/* \"C\":392:411 stateVar + this.f() */
tag_21
tag_20
/* \"C\":403:411 this.f() */
0x20
jump(tag_19)
/* \"C\":79:428 contract C... */
tag_26:
@@ -263,20 +254,21 @@ sub_0: assembly {
jump(tag_23)
tag_16:
/* \"C\":79:428 contract C... */
dup4
dup3
mload
swap1
returndatasize
swap1
0x00
dup3
returndatacopy
returndatasize
swap1
revert
tag_14:
shl(0xe0, 0x4e487b71)
/* \"C\":117:119 41 */
dup4
shl(0xe0, 0x4e487b71)
/* \"C\":79:428 contract C... */
0x00
/* \"C\":117:119 41 */
mstore
0x11
/* \"C\":79:428 contract C... */
@@ -284,24 +276,22 @@ sub_0: assembly {
/* \"C\":117:119 41 */
mstore
0x24
dup4
/* \"C\":79:428 contract C... */
0x00
/* \"C\":117:119 41 */
revert
/* \"C\":79:428 contract C... */
tag_12:
pop
0x00
dup1
revert
tag_6:
pop
jumpi(tag_12, callvalue)
dup2
add(calldatasize, not(0x03))
slt
tag_12
jumpi
jumpi(tag_12, slt(add(not(0x03), calldatasize), 0x00))
0x20
swap2
sload
swap1
sload(0x00)
swap1
mload
swap1
@@ -309,22 +299,17 @@ sub_0: assembly {
mstore
return
tag_4:
dup4
swap1
jumpi(tag_12, callvalue)
dup2
add(calldatasize, not(0x03))
slt
tag_12
jumpi
jumpi(tag_12, slt(add(not(0x03), calldatasize), 0x00))
/* \"C\":290:298 immutVar */
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
/* \"C\":117:119 41 */
dup1
0x29
add
swap1
dup2
0x29
add
swap2
dup3
slt
0x01
and
@@ -332,8 +317,7 @@ sub_0: assembly {
jumpi
/* \"C\":79:428 contract C... */
0x20
swap3
pop
swap2
dup2
mstore
return
@@ -360,13 +344,9 @@ sub_0: assembly {
iszero
and
or
tag_38
tag_14
jumpi
jump\t// out
tag_38:
mstore(0x00, shl(0xe0, 0x4e487b71))
mstore(0x04, 0x11)
revert(0x00, 0x24)
auxdata: <AUXDATA REMOVED>
}
@@ -471,20 +451,16 @@ sub_0: assembly {
/* \"D\":91:166 contract D is C(3)... */
0x80
0x40
dup2
dup2
swap1
dup1
dup3
mstore
jumpi(tag_2, iszero(lt(calldatasize, 0x04)))
0x00
dup1
revert
tag_2:
0x00
swap2
dup3
calldataload
0xe0
shr
shr(0xe0, calldataload(0x00))
swap1
dup2
0x26121ff0
@@ -506,13 +482,8 @@ sub_0: assembly {
revert
tag_8:
jumpi(tag_12, callvalue)
dup2
add(calldatasize, not(0x03))
slt
tag_12
jumpi
dup2
sload
jumpi(tag_12, slt(add(not(0x03), calldatasize), 0x00))
sload(0x00)
sub(shl(0xff, 0x01), 0x01)
dup2
eq
@@ -520,11 +491,11 @@ sub_0: assembly {
jumpi
0x01
add
swap2
dup3
swap1
dup2
0x00
sstore
dup2
dup1
mload
shl(0xe4, 0x026121ff)
/* \"C\":403:411 this.f() */
@@ -541,37 +512,40 @@ sub_0: assembly {
/* \"C\":403:411 this.f() */
gas
staticcall
swap2
dup3
swap1
dup2
iszero
tag_16
jumpi
dup1
swap3
/* \"D\":91:166 contract D is C(3)... */
0x00
/* \"C\":403:411 this.f() */
swap2
tag_18
jumpi
/* \"D\":91:166 contract D is C(3)... */
tag_19:
/* \"C\":392:411 stateVar + this.f() */
pop
tag_20
/* \"C\":392:422 stateVar + this.f() + immutVar */
tag_21
/* \"C\":392:411 stateVar + this.f() */
swap2
/* \"C\":403:411 this.f() */
0x20
/* \"C\":392:411 stateVar + this.f() */
dup5
/* \"C\":392:422 stateVar + this.f() + immutVar */
tag_20
/* \"C\":392:411 stateVar + this.f() */
tag_21
dup7
dup10
swap5
tag_1
jump\t// in
tag_21:
tag_20:
/* \"C\":414:422 immutVar */
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
/* \"C\":392:422 stateVar + this.f() + immutVar */
swap1
tag_1
jump\t// in
tag_20:
tag_21:
/* \"D\":91:166 contract D is C(3)... */
swap1
mload
@@ -582,8 +556,6 @@ sub_0: assembly {
/* \"C\":403:411 this.f() */
tag_18:
swap1
swap2
pop
0x20
returndatasize
dup2
@@ -627,9 +599,8 @@ sub_0: assembly {
pop
mload
/* \"C\":392:411 stateVar + this.f() */
tag_21
tag_20
/* \"C\":403:411 this.f() */
0x20
jump(tag_19)
/* \"D\":91:166 contract D is C(3)... */
tag_26:
@@ -652,20 +623,21 @@ sub_0: assembly {
jump(tag_23)
tag_16:
/* \"D\":91:166 contract D is C(3)... */
dup4
dup3
mload
swap1
returndatasize
swap1
0x00
dup3
returndatacopy
returndatasize
swap1
revert
tag_14:
shl(0xe0, 0x4e487b71)
/* \"C\":117:119 41 */
dup4
shl(0xe0, 0x4e487b71)
/* \"D\":91:166 contract D is C(3)... */
0x00
/* \"C\":117:119 41 */
mstore
0x11
/* \"D\":91:166 contract D is C(3)... */
@@ -673,24 +645,22 @@ sub_0: assembly {
/* \"C\":117:119 41 */
mstore
0x24
dup4
/* \"D\":91:166 contract D is C(3)... */
0x00
/* \"C\":117:119 41 */
revert
/* \"D\":91:166 contract D is C(3)... */
tag_12:
pop
0x00
dup1
revert
tag_6:
pop
jumpi(tag_12, callvalue)
dup2
add(calldatasize, not(0x03))
slt
tag_12
jumpi
jumpi(tag_12, slt(add(not(0x03), calldatasize), 0x00))
0x20
swap2
sload
swap1
sload(0x00)
swap1
mload
swap1
@@ -698,22 +668,17 @@ sub_0: assembly {
mstore
return
tag_4:
dup4
swap1
jumpi(tag_12, callvalue)
dup2
add(calldatasize, not(0x03))
slt
tag_12
jumpi
jumpi(tag_12, slt(add(not(0x03), calldatasize), 0x00))
/* \"C\":290:298 immutVar */
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
/* \"C\":117:119 41 */
dup1
0x29
add
swap1
dup2
0x29
add
swap2
dup3
slt
0x01
and
@@ -721,8 +686,7 @@ sub_0: assembly {
jumpi
/* \"D\":91:166 contract D is C(3)... */
0x20
swap3
pop
swap2
dup2
mstore
return
@@ -749,13 +713,9 @@ sub_0: assembly {
iszero
and
or
tag_38
tag_14
jumpi
jump\t// out
tag_38:
mstore(0x00, shl(0xe0, 0x4e487b71))
mstore(0x04, 0x11)
revert(0x00, 0x24)
auxdata: <AUXDATA REMOVED>
}
@@ -194,12 +194,11 @@ object \"C_6\" {
/// @src 0:60:101 \"contract C {...\"
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -193,12 +193,11 @@ object \"C_6\" {
/// @src 0:60:101
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -182,12 +182,11 @@ object \"C_6\" {
{
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(_1, _1)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
return(0, 0)
}
}
revert(0, 0)
@@ -658,78 +658,77 @@ object \"C_54\" {
mstore(_2, _1)
if iszero(lt(calldatasize(), 4))
{
let _3 := 0
switch shr(224, calldataload(_3))
switch shr(224, calldataload(0))
case 0x26121ff0 {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:297:305 \"immutVar\"
let _4 := loadimmutable(\"8\")
let _3 := loadimmutable(\"8\")
/// @src 0:79:435 \"contract C...\"
let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ _4)
if and(1, slt(sum, _4))
let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ _3)
if and(1, slt(sum, _3))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11)
revert(_3, 0x24)
revert(0, 0x24)
}
mstore(_1, sum)
return(_1, 32)
}
case 0x793816ec {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
let _5 := sload(_3)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _4 := sload(0)
let memPos := mload(_2)
mstore(memPos, _5)
mstore(memPos, _4)
return(memPos, 32)
}
case 0x9942ec6f {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
let _6 := sload(_3)
if eq(_6, sub(shl(255, 1), 1))
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _5 := sload(0)
if eq(_5, sub(shl(255, 1), 1))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11)
revert(_3, 0x24)
revert(0, 0x24)
}
let ret := add(_6, 1)
sstore(_3, ret)
let ret := add(_5, 1)
sstore(0, ret)
/// @src 0:410:418 \"this.f()\"
let _7 := /** @src 0:79:435 \"contract C...\" */ mload(_2)
let _6 := /** @src 0:79:435 \"contract C...\" */ mload(_2)
/// @src 0:410:418 \"this.f()\"
mstore(_7, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff))
mstore(_6, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff))
/// @src 0:410:418 \"this.f()\"
let _8 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _7, /** @src 0:79:435 \"contract C...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _7, 32)
if iszero(_8)
let _7 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _6, /** @src 0:79:435 \"contract C...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _6, 32)
if iszero(_7)
{
/// @src 0:79:435 \"contract C...\"
let pos := mload(_2)
returndatacopy(pos, _3, returndatasize())
returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize())
}
/// @src 0:410:418 \"this.f()\"
let expr := /** @src 0:79:435 \"contract C...\" */ _3
let expr := /** @src 0:79:435 \"contract C...\" */ 0
/// @src 0:410:418 \"this.f()\"
if _8
if _7
{
let _9 := 32
if gt(_9, returndatasize()) { _9 := returndatasize() }
let _8 := 32
if gt(_8, returndatasize()) { _8 := returndatasize() }
/// @src 0:79:435 \"contract C...\"
let newFreePtr := add(_7, and(add(_9, 31), not(31)))
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _7))
let newFreePtr := add(_6, and(add(_8, 31), not(31)))
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _6))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(expr, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_3, 0x24)
revert(expr, 0x24)
}
mstore(_2, newFreePtr)
if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_7, _9), /** @src 0:79:435 \"contract C...\" */ _7), /** @src 0:410:418 \"this.f()\" */ 32)
if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_6, _8), /** @src 0:79:435 \"contract C...\" */ _6), /** @src 0:410:418 \"this.f()\" */ 32)
/// @src 0:79:435 \"contract C...\"
{ revert(_3, _3) }
{ revert(expr, expr) }
/// @src 0:410:418 \"this.f()\"
expr := /** @src 0:79:435 \"contract C...\" */ mload(_7)
expr := /** @src 0:79:435 \"contract C...\" */ mload(_6)
}
/// @src 0:399:418 \"stateVar + this.f()\"
let expr_1 := checked_add_int256(ret, expr)
@@ -741,8 +740,8 @@ object \"C_54\" {
return(memPos_1, /** @src 0:410:418 \"this.f()\" */ 32)
}
case /** @src 0:79:435 \"contract C...\" */ 0xa00b982b {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let memPos_2 := mload(_2)
mstore(memPos_2, /** @src 0:124:126 \"41\" */ 0x29)
/// @src 0:79:435 \"contract C...\"
@@ -1504,78 +1503,77 @@ object \"D_72\" {
mstore(_2, _1)
if iszero(lt(calldatasize(), 4))
{
let _3 := 0
switch shr(224, calldataload(_3))
switch shr(224, calldataload(0))
case 0x26121ff0 {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:297:305 \"immutVar\"
let _4 := loadimmutable(\"8\")
let _3 := loadimmutable(\"8\")
/// @src 1:91:166 \"contract D is C(3)...\"
let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 1:91:166 \"contract D is C(3)...\" */ _4)
if and(1, slt(sum, _4))
let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 1:91:166 \"contract D is C(3)...\" */ _3)
if and(1, slt(sum, _3))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11)
revert(_3, 0x24)
revert(0, 0x24)
}
mstore(_1, sum)
return(_1, 32)
}
case 0x793816ec {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
let _5 := sload(_3)
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _4 := sload(0)
let memPos := mload(_2)
mstore(memPos, _5)
mstore(memPos, _4)
return(memPos, 32)
}
case 0x9942ec6f {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
let _6 := sload(_3)
if eq(_6, sub(shl(255, 1), 1))
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _5 := sload(0)
if eq(_5, sub(shl(255, 1), 1))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11)
revert(_3, 0x24)
revert(0, 0x24)
}
let ret := add(_6, 1)
sstore(_3, ret)
let ret := add(_5, 1)
sstore(0, ret)
/// @src 0:410:418 \"this.f()\"
let _7 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_2)
let _6 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_2)
/// @src 0:410:418 \"this.f()\"
mstore(_7, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff))
mstore(_6, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff))
/// @src 0:410:418 \"this.f()\"
let _8 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _7, /** @src 1:91:166 \"contract D is C(3)...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _7, 32)
if iszero(_8)
let _7 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _6, /** @src 1:91:166 \"contract D is C(3)...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _6, 32)
if iszero(_7)
{
/// @src 1:91:166 \"contract D is C(3)...\"
let pos := mload(_2)
returndatacopy(pos, _3, returndatasize())
returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize())
}
/// @src 0:410:418 \"this.f()\"
let expr := /** @src 1:91:166 \"contract D is C(3)...\" */ _3
let expr := /** @src 1:91:166 \"contract D is C(3)...\" */ 0
/// @src 0:410:418 \"this.f()\"
if _8
if _7
{
let _9 := 32
if gt(_9, returndatasize()) { _9 := returndatasize() }
let _8 := 32
if gt(_8, returndatasize()) { _8 := returndatasize() }
/// @src 1:91:166 \"contract D is C(3)...\"
let newFreePtr := add(_7, and(add(_9, 31), not(31)))
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _7))
let newFreePtr := add(_6, and(add(_8, 31), not(31)))
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _6))
{
mstore(_3, shl(224, 0x4e487b71))
mstore(expr, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_3, 0x24)
revert(expr, 0x24)
}
mstore(_2, newFreePtr)
if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_7, _9), /** @src 1:91:166 \"contract D is C(3)...\" */ _7), /** @src 0:410:418 \"this.f()\" */ 32)
if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_6, _8), /** @src 1:91:166 \"contract D is C(3)...\" */ _6), /** @src 0:410:418 \"this.f()\" */ 32)
/// @src 1:91:166 \"contract D is C(3)...\"
{ revert(_3, _3) }
{ revert(expr, expr) }
/// @src 0:410:418 \"this.f()\"
expr := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_7)
expr := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_6)
}
/// @src 0:399:418 \"stateVar + this.f()\"
let expr_1 := checked_add_int256(ret, expr)
@@ -1587,8 +1585,8 @@ object \"D_72\" {
return(memPos_1, /** @src 0:410:418 \"this.f()\" */ 32)
}
case /** @src 1:91:166 \"contract D is C(3)...\" */ 0xa00b982b {
if callvalue() { revert(_3, _3) }
if slt(add(calldatasize(), not(3)), _3) { revert(_3, _3) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let memPos_2 := mload(_2)
mstore(memPos_2, /** @src 0:124:126 \"41\" */ 0x29)
/// @src 1:91:166 \"contract D is C(3)...\"
@@ -110,103 +110,87 @@ sub_0: assembly {
dup1
revert
tag_1:
0x00
dup1
calldataload
0xe0
shr
0x26121ff0
eq
tag_3
jumpi
jumpi(tag_3, eq(0x26121ff0, shr(0xe0, calldataload(0x00))))
0x00
dup1
revert
tag_3:
jumpi(tag_7, callvalue)
dup1
add(calldatasize, not(0x03))
slt
tag_7
jumpi
jumpi(tag_7, slt(add(not(0x03), calldatasize), 0x00))
/* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */
dataSize(sub_0)
/* "viair_subobject_optimization/input.sol":669:772 contract D {... */
swap2
not(0x1f)
swap1
dup2
not(0x1f)
dup1
0x3f
dup6
dup5
add
and
dup2
dup3
add
swap3
dup2
dup5
swap2
dup1
dup4
lt
0xffffffffffffffff
dup6
dup5
gt
or
tag_9
jumpi
swap3
swap1
swap2
0x40
swap4
dup5
mstore
/* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */
dup5
swap3
dup4
mstore
/* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */
dup2
dup5
mstore
0x20
swap5
swap2
dataOffset(sub_0)
dup4
dup7
dup6
add
codecopy
/* "viair_subobject_optimization/input.sol":669:772 contract D {... */
dup4
dup3
mload
swap5
swap4
dup3
dup6
swap3
dup2
swap4
dup5
mstore
dup5
dup2
mload
swap2
dup3
dup2
dup3
dup7
add
mstore
dup2
swap6
0x00
tag_11:
dup4
dup8
dup2
lt
tag_12
jumpi
pop
pop
0x00
dup5
dup4
swap5
pop
dup6
dup3
0x1f
swap5
swap6
add
dup7
add
mstore
pop
0x1f
add
and
dup2
@@ -216,35 +200,30 @@ sub_0: assembly {
swap1
return
tag_12:
dup7
dup2
dup2
add
dup3
dup4
add
mload
dup10
dup9
dup3
add
dup10
dup9
add
mstore
swap6
dup2
add
swap6
dup9
dup8
swap6
pop
dup3
add
jump(tag_11)
tag_9:
shl(0xe0, 0x4e487b71)
dup2
mstore
mstore(0x00, shl(0xe0, 0x4e487b71))
mstore(0x04, 0x41)
0x24
swap1
revert
revert(0x00, 0x24)
tag_7:
0x00
dup1
revert
stop
+12 -13
View File
@@ -59,31 +59,30 @@ object "D_16" {
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
if eq(0x26121ff0, shr(224, calldataload(0)))
{
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:149:156 "new C()"
let _3 := datasize("C_3")
let _4 := add(_1, _3)
if or(gt(_4, 0xffffffffffffffff), lt(_4, _1))
let _2 := datasize("C_3")
let _3 := add(_1, _2)
if or(gt(_3, 0xffffffffffffffff), lt(_3, _1))
{
/// @src 0:96:165 "contract D {..."
mstore(_2, shl(224, 0x4e487b71))
mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_2, 0x24)
revert(0, 0x24)
}
/// @src 0:149:156 "new C()"
datacopy(_1, dataoffset("C_3"), _3)
if iszero(create(/** @src 0:96:165 "contract D {..." */ _2, /** @src 0:149:156 "new C()" */ _1, sub(_4, _1)))
datacopy(_1, dataoffset("C_3"), _2)
if iszero(create(/** @src 0:96:165 "contract D {..." */ 0, /** @src 0:149:156 "new C()" */ _1, sub(_3, _1)))
{
/// @src 0:96:165 "contract D {..."
let pos := mload(64)
returndatacopy(pos, _2, returndatasize())
returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize())
}
return(_2, _2)
return(0, 0)
}
}
revert(0, 0)