2019-03-18 11:43:20 +00:00
|
|
|
{
|
|
|
|
let a
|
|
|
|
let b
|
|
|
|
let c
|
2019-04-05 18:38:23 +00:00
|
|
|
let i := 0
|
|
|
|
for { }
|
2019-03-18 11:43:20 +00:00
|
|
|
lt(i, 10)
|
|
|
|
{ i := add(add(a, b), c) } // `b` is always known to be caller() but `a` and `c` may be origin() or caller().
|
|
|
|
{
|
|
|
|
a := origin()
|
|
|
|
b := origin()
|
|
|
|
c := origin()
|
|
|
|
|
|
|
|
b := caller()
|
|
|
|
if callvalue() { continue }
|
|
|
|
a := caller()
|
|
|
|
|
|
|
|
if callvalue() { continue }
|
|
|
|
c := caller()
|
|
|
|
}
|
|
|
|
mstore(a, b)
|
|
|
|
}
|
|
|
|
// ----
|
2020-03-17 22:31:56 +00:00
|
|
|
// step: rematerialiser
|
|
|
|
//
|
2019-03-18 11:43:20 +00:00
|
|
|
// {
|
|
|
|
// let a
|
|
|
|
// let b
|
|
|
|
// let c
|
2019-04-05 18:38:23 +00:00
|
|
|
// let i := 0
|
2019-05-08 10:41:19 +00:00
|
|
|
// for { } lt(i, 10) { i := add(add(a, caller()), c) }
|
2019-03-18 11:43:20 +00:00
|
|
|
// {
|
|
|
|
// a := origin()
|
|
|
|
// b := origin()
|
|
|
|
// c := origin()
|
|
|
|
// b := caller()
|
2019-05-08 10:41:19 +00:00
|
|
|
// if callvalue() { continue }
|
2019-03-18 11:43:20 +00:00
|
|
|
// a := caller()
|
2019-05-08 10:41:19 +00:00
|
|
|
// if callvalue() { continue }
|
2019-03-18 11:43:20 +00:00
|
|
|
// c := caller()
|
|
|
|
// }
|
|
|
|
// mstore(a, b)
|
|
|
|
// }
|