======= 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 }