Skip to content

Instantly share code, notes, and snippets.

@hayeah
Created October 17, 2017 09:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hayeah/a94aa4e87b7b42e9003adf64806c84e4 to your computer and use it in GitHub Desktop.
Save hayeah/a94aa4e87b7b42e9003adf64806c84e4 to your computer and use it in GitHub Desktop.
c-create-contract.sol.asm
======= c-create-contract.sol:FooFactory =======
EVM assembly:
/* "c-create-contract.sol":44:150 contract FooFactory {... */
mstore(0x40, 0x60)
jumpi(tag_1, iszero(callvalue))
0x0
dup1
revert
tag_1:
tag_2:
dataSize(sub_0)
dup1
dataOffset(sub_0)
0x0
codecopy
0x0
return
stop
sub_0: assembly {
/* "c-create-contract.sol":44:150 contract FooFactory {... */
mstore(0x40, 0x60)
and(div(calldataload(0x0), 0x100000000000000000000000000000000000000000000000000000000), 0xffffffff)
0x4e3991af
dup2
eq
tag_2
jumpi
tag_1:
0x0
dup1
revert
/* "c-create-contract.sol":92:148 function makeNewFoo() {... */
tag_2:
jumpi(tag_3, iszero(callvalue))
0x0
dup1
revert
tag_3:
tag_4
jump(tag_5)
tag_4:
stop
tag_5:
/* "c-create-contract.sol":134:143 new Foo() */
tag_7
jump // in(tag_8)
tag_7:
mload(0x40)
dup1
swap2
sub
swap1
0x0
create
dup1
iszero
iszero
tag_9
jumpi
0x0
dup1
revert
tag_9:
/* "c-create-contract.sol":120:131 fooInstance */
0x0
/* "c-create-contract.sol":120:143 fooInstance = new Foo() */
dup1
sload
not(0xffffffffffffffffffffffffffffffffffffffff)
and
0xffffffffffffffffffffffffffffffffffffffff
swap3
swap1
swap3
and
swap2
swap1
swap2
or
swap1
sstore
/* "c-create-contract.sol":92:148 function makeNewFoo() {... */
tag_6:
jump // out
/* "c-create-contract.sol":44:150 contract FooFactory {... */
tag_8:
mload(0x40)
dataSize(sub_0)
dup1
dataOffset(sub_0)
dup4
codecopy
add
swap1
jump // out
stop
sub_0: assembly {
/* "c-create-contract.sol":26:42 contract Foo {... */
mstore(0x40, 0x60)
jumpi(tag_1, iszero(callvalue))
0x0
dup1
revert
tag_1:
tag_2:
dataSize(sub_0)
dup1
dataOffset(sub_0)
0x0
codecopy
0x0
return
stop
sub_0: assembly {
/* "c-create-contract.sol":26:42 contract Foo {... */
mstore(0x40, 0x60)
tag_1:
0x0
dup1
revert
auxdata: 0xa165627a7a723058207d0f65db90c4cf5a060c6e57d8efde5aefa5e0e116cffb74cfb7c17ed50fb26a0029
}
}
auxdata: 0xa165627a7a72305820f9e9abc10b21034e4352c9435ae99cca929d9642c90cc0d68e7707e186873eb90029
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment