Skip to content

Instantly share code, notes, and snippets.

@tpmccallum
Created October 20, 2019 00:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tpmccallum/2dc42315971c04e4ba42d1ca3475a666 to your computer and use it in GitHub Desktop.
Save tpmccallum/2dc42315971c04e4ba42d1ca3475a666 to your computer and use it in GitHub Desktop.

Pretty printed source

object "SimpleStorage_22" {
    code {
        {
            mstore(64, 128)
            let _1 := datasize("SimpleStorage_22_deployed")
            codecopy(0, dataoffset("SimpleStorage_22_deployed"), _1)
            return(0, _1)
        }
    }
    object "SimpleStorage_22_deployed" {
        code {
            {
                mstore(64, 128)
                if iszero(lt(calldatasize(), 4))
                {
                    let _1 := 0
                    switch shr(224, calldataload(_1))
                    case 0x60fe47b1 {
                        if callvalue() { revert(_1, _1) }
                        if slt(add(calldatasize(), not(3)), 32) { revert(_1, _1) }
                        sstore(_1, calldataload(4))
                        return(allocateMemory(_1), _1)
                    }
                    case 0x6d4ce63c {
                        if callvalue() { revert(_1, _1) }
                        if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
                        let vloc := sload(_1)
                        let memPos := allocateMemory(_1)
                        return(memPos, sub(abi_encode_tuple_t_uint256__to_t_uint256__fromStack(memPos, vloc), memPos))
                    }
                }
                revert(0, 0)
            }
            function abi_encode_tuple_t_uint256__to_t_uint256__fromStack(headStart, value0) -> tail
            {
                tail := add(headStart, 32)
                mstore(headStart, value0)
            }
            function allocateMemory(size) -> memPtr
            {
                memPtr := mload(64)
                let newFreePtr := add(memPtr, size)
                if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { revert(0, 0) }
                mstore(64, newFreePtr)
            }
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment